From 9e7c05951481bead3643b7f27449bab5b03bec13 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Thu, 5 Nov 2020 07:45:35 +0000 Subject: [PATCH 001/293] -mno-target-align --- platformio.ini | 6 +- platformio_override_sample.ini | 13 ++-- platformio_tasmota32.ini | 24 +++---- platformio_tasmota_env.ini | 114 ++++++++++++++++----------------- platformio_tasmota_env32.ini | 66 +++++++++---------- 5 files changed, 113 insertions(+), 110 deletions(-) diff --git a/platformio.ini b/platformio.ini index 1d146e6a1..01640257e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -116,8 +116,8 @@ build_flags = -Wno-deprecated-declarations [esp82xx_defaults] build_flags = ${esp_defaults.build_flags} -Wl,-Map,firmware.map - -D CORE_DEBUG_LEVEL=0 - -D NDEBUG + -DCORE_DEBUG_LEVEL=0 + -DNDEBUG -mtarget-align -DFP_IN_IROM -DBEARSSL_SSL_BASIC @@ -140,7 +140,7 @@ build_flags = -DUSE_IR_REMOTE_FULL [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 platform = espressif8266@2.6.2 -platform_packages = framework-arduinoespressif8266@https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip +platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 9b2637244..e06d8f0cc 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -88,10 +88,12 @@ lib_extra_dirs = ${library.lib_extra_dirs} [tasmota_stage] ; *** Esp8266 core for Arduino version Tasmota stage (PR7231 and Backport PR7514) -platform_packages = framework-arduinoespressif8266@https://github.com/Jason2866/Arduino.git#2.7.4.4 +platform_packages = framework-arduinoespressif8266 @ https://github.com/Jason2866/Arduino/releases/download/2.7.4.7/esp8266-2.7.4.7.zip platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} + -mtarget-align build_flags = ${esp82xx_defaults.build_flags} + -mno-target-align ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 @@ -126,13 +128,14 @@ build_flags = ${esp82xx_defaults.build_flags} ; *** Esp8266 core for Arduino version stage platform_packages = framework-arduinoespressif8266@https://github.com/esp8266/Arduino.git ; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain - mcspr/toolchain-xtensa@5.100200.200918 + mcspr/toolchain-xtensa @ 5.100200.200918 platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable + -mtarget-align build_flags = ${esp82xx_defaults.build_flags} -Wno-switch-unreachable - + -mno-target-align ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK221 @@ -188,12 +191,12 @@ lib_extra_dirs = ${library.lib_extra_dirs} [core32_stage] -platform = espressif32@2.0.0 +platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} - -D ESP32_STAGE=true + -DESP32_STAGE=true [library] lib_ldf_mode = chain+ diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index ce963a8a1..46a698c52 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -71,21 +71,21 @@ lib_extra_dirs = build_unflags = ${esp_defaults.build_unflags} -Wpointer-arith build_flags = ${esp_defaults.build_flags} - -D CORE_DEBUG_LEVEL=0 - -D BUFFER_LENGTH=128 - -D MQTT_MAX_PACKET_SIZE=1200 - -D uint32=uint32_t - -D uint16=uint16_t - -D uint8=uint8_t - -D sint8_t=int8_t - -D sint32_t=int32_t - -D sint16_t=int16_t - -D memcpy_P=memcpy - -D memcmp_P=memcmp + -DCORE_DEBUG_LEVEL=0 + -DBUFFER_LENGTH=128 + -DMQTT_MAX_PACKET_SIZE=1200 + -Duint32=uint32_t + -Duint16=uint16_t + -Duint8=uint8_t + -Dsint8_t=int8_t + -Dsint32_t=int32_t + -Dsint16_t=int16_t + -Dmemcpy_P=memcpy + -Dmemcmp_P=memcmp [core32] -platform = espressif32@2.0.0 +platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 platformio/framework-arduinoespressif32 @ 3.10004.201016 build_unflags = ${esp32_defaults.build_unflags} diff --git a/platformio_tasmota_env.ini b/platformio_tasmota_env.ini index ed4d5ce65..428fac8ce 100644 --- a/platformio_tasmota_env.ini +++ b/platformio_tasmota_env.ini @@ -1,21 +1,21 @@ [env] -platform = ${common.platform} -platform_packages = ${common.platform_packages} -framework = ${common.framework} -board = ${common.board} -board_build.ldscript = ${common.board_build.ldscript} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_flash = ${common.board_build.f_flash} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_speed = ${common.monitor_speed} -upload_port = ${common.upload_port} -upload_resetmethod = ${common.upload_resetmethod} -upload_speed = ${common.upload_speed} -extra_scripts = ${common.extra_scripts} -lib_extra_dirs = ${common.lib_extra_dirs} -lib_ignore = +platform = ${common.platform} +platform_packages = ${common.platform_packages} +framework = ${common.framework} +board = ${common.board} +board_build.ldscript = ${common.board_build.ldscript} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_flash = ${common.board_build.f_flash} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_speed = ${common.monitor_speed} +upload_port = ${common.upload_port} +upload_resetmethod = ${common.upload_resetmethod} +upload_speed = ${common.upload_speed} +extra_scripts = ${common.extra_scripts} +lib_extra_dirs = ${common.lib_extra_dirs} +lib_ignore = Servo(esp8266) ESP8266AVRISP ESP8266LLMNR @@ -30,108 +30,108 @@ lib_ignore = EspSoftwareSerial SPISlave Hash -; Disable next if you want to use ArduinoOTA in Tasmota (default disabled) +; Disable next if you want to use ArduinoOTA in Tasmota (default disabled) ArduinoOTA [env:tasmota] [env:tasmota-minimal] -build_flags = ${common.build_flags} -DFIRMWARE_MINIMAL -lib_extra_dirs = +build_flags = ${common.build_flags} -DFIRMWARE_MINIMAL +lib_extra_dirs = [env:tasmota-lite] -build_flags = ${common.build_flags} -DFIRMWARE_LITE -lib_extra_dirs = +build_flags = ${common.build_flags} -DFIRMWARE_LITE +lib_extra_dirs = [env:tasmota-knx] -build_flags = ${common.build_flags} -DFIRMWARE_KNX_NO_EMULATION -lib_extra_dirs = lib/lib_basic, lib/lib_div +build_flags = ${common.build_flags} -DFIRMWARE_KNX_NO_EMULATION +lib_extra_dirs = lib/lib_basic, lib/lib_div [env:tasmota-sensors] -build_flags = ${common.build_flags} -DFIRMWARE_SENSORS -lib_extra_dirs = lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div +build_flags = ${common.build_flags} -DFIRMWARE_SENSORS +lib_extra_dirs = lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div [env:tasmota-display] -build_flags = ${common.build_flags} -DFIRMWARE_DISPLAYS -lib_extra_dirs = lib/lib_basic, lib/lib_display +build_flags = ${common.build_flags} -DFIRMWARE_DISPLAYS +lib_extra_dirs = lib/lib_basic, lib/lib_display [env:tasmota-ir] -build_flags = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR -lib_extra_dirs = lib/lib_basic +build_flags = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR +lib_extra_dirs = lib/lib_basic [env:tasmota-ircustom] -build_flags = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR_CUSTOM +build_flags = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR_CUSTOM [env:tasmota-zbbridge] -build_flags = ${common.build_flags} -DFIRMWARE_ZBBRIDGE -board_build.f_cpu = 160000000L -lib_extra_dirs = lib/lib_ssl +build_flags = ${common.build_flags} -DFIRMWARE_ZBBRIDGE +board_build.f_cpu = 160000000L +lib_extra_dirs = lib/lib_ssl [env:tasmota-BG] -build_flags = ${common.build_flags} -DMY_LANGUAGE=bg_BG +build_flags = ${common.build_flags} -DMY_LANGUAGE=bg_BG [env:tasmota-BR] -build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_BR +build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_BR [env:tasmota-CN] -build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_CN +build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_CN [env:tasmota-CZ] -build_flags = ${common.build_flags} -DMY_LANGUAGE=cs_CZ +build_flags = ${common.build_flags} -DMY_LANGUAGE=cs_CZ [env:tasmota-DE] -build_flags = ${common.build_flags} -DMY_LANGUAGE=de_DE +build_flags = ${common.build_flags} -DMY_LANGUAGE=de_DE [env:tasmota-ES] -build_flags = ${common.build_flags} -DMY_LANGUAGE=es_ES +build_flags = ${common.build_flags} -DMY_LANGUAGE=es_ES [env:tasmota-FR] -build_flags = ${common.build_flags} -DMY_LANGUAGE=fr_FR +build_flags = ${common.build_flags} -DMY_LANGUAGE=fr_FR [env:tasmota-GR] -build_flags = ${common.build_flags} -DMY_LANGUAGE=el_GR +build_flags = ${common.build_flags} -DMY_LANGUAGE=el_GR [env:tasmota-HE] -build_flags = ${common.build_flags} -DMY_LANGUAGE=he_HE +build_flags = ${common.build_flags} -DMY_LANGUAGE=he_HE [env:tasmota-HU] -build_flags = ${common.build_flags} -DMY_LANGUAGE=hu_HU +build_flags = ${common.build_flags} -DMY_LANGUAGE=hu_HU [env:tasmota-IT] -build_flags = ${common.build_flags} -DMY_LANGUAGE=it_IT +build_flags = ${common.build_flags} -DMY_LANGUAGE=it_IT [env:tasmota-KO] -build_flags = ${common.build_flags} -DMY_LANGUAGE=ko_KO +build_flags = ${common.build_flags} -DMY_LANGUAGE=ko_KO [env:tasmota-NL] -build_flags = ${common.build_flags} -DMY_LANGUAGE=nl_NL +build_flags = ${common.build_flags} -DMY_LANGUAGE=nl_NL [env:tasmota-PL] -build_flags = ${common.build_flags} -DMY_LANGUAGE=pl_PL +build_flags = ${common.build_flags} -DMY_LANGUAGE=pl_PL [env:tasmota-PT] -build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_PT +build_flags = ${common.build_flags} -DMY_LANGUAGE=pt_PT [env:tasmota-RO] -build_flags = ${common.build_flags} -DMY_LANGUAGE=ro_RO +build_flags = ${common.build_flags} -DMY_LANGUAGE=ro_RO [env:tasmota-RU] -build_flags = ${common.build_flags} -DMY_LANGUAGE=ru_RU +build_flags = ${common.build_flags} -DMY_LANGUAGE=ru_RU [env:tasmota-SE] -build_flags = ${common.build_flags} -DMY_LANGUAGE=sv_SE +build_flags = ${common.build_flags} -DMY_LANGUAGE=sv_SE [env:tasmota-SK] -build_flags = ${common.build_flags} -DMY_LANGUAGE=sk_SK +build_flags = ${common.build_flags} -DMY_LANGUAGE=sk_SK [env:tasmota-TR] -build_flags = ${common.build_flags} -DMY_LANGUAGE=tr_TR +build_flags = ${common.build_flags} -DMY_LANGUAGE=tr_TR [env:tasmota-TW] -build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_TW +build_flags = ${common.build_flags} -DMY_LANGUAGE=zh_TW [env:tasmota-UK] -build_flags = ${common.build_flags} -DMY_LANGUAGE=uk_UA +build_flags = ${common.build_flags} -DMY_LANGUAGE=uk_UA [env:tasmota-VN] -build_flags = ${common.build_flags} -DMY_LANGUAGE=vi_VN +build_flags = ${common.build_flags} -DMY_LANGUAGE=vi_VN diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 04b0fa2db..77eb654f6 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -26,138 +26,138 @@ lib_ignore = ESP32 Preferences BluetoothSerial -; Disable next if you want to use ArduinoOTA in Tasmota32 (default disabled) +; Disable next if you want to use ArduinoOTA in Tasmota32 (default disabled) ArduinoOTA - + [env:tasmota32-webcam] -extends = env:tasmota32 +extends = env:tasmota32 board = esp32cam board_build.f_cpu = 240000000L build_flags = ${common32.build_flags} -DFIRMWARE_WEBCAM lib_extra_dirs = lib/libesp32, lib/lib_basic [env:tasmota32-minimal] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_MINIMAL lib_extra_dirs = lib/libesp32 [env:tasmota32-lite] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_LITE lib_extra_dirs = lib/libesp32 [env:tasmota32-knx] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_KNX_NO_EMULATION lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_div [env:tasmota32-sensors] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_SENSORS lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div [env:tasmota32-display] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_DISPLAYS lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_display [env:tasmota32-ir] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR lib_extra_dirs = lib/libesp32, lib/lib_basic [env:tasmota32-ircustom] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR_CUSTOM [env:tasmota32-BG] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=bg_BG [env:tasmota32-BR] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt_BR [env:tasmota32-CN] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh_CN [env:tasmota32-CZ] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=cs_CZ [env:tasmota32-DE] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=de_DE [env:tasmota32-ES] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=es_ES [env:tasmota32-FR] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=fr_FR [env:tasmota32-GR] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=el_GR [env:tasmota32-HE] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=he_HE [env:tasmota32-HU] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=hu_HU [env:tasmota32-IT] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=it_IT [env:tasmota32-KO] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=ko_KO [env:tasmota32-NL] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=nl_NL [env:tasmota32-PL] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=pl_PL [env:tasmota32-PT] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=pt_PT [env:tasmota32-RO] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=ro_RO [env:tasmota32-RU] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=ru_RU [env:tasmota32-SE] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=sv_SE [env:tasmota32-SK] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=sk_SK [env:tasmota32-TR] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=tr_TR [env:tasmota32-TW] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=zh_TW [env:tasmota32-UK] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=uk_UA [env:tasmota32-VN] -extends = env:tasmota32 +extends = env:tasmota32 build_flags = ${common32.build_flags} -DMY_LANGUAGE=vi_VN From 2909a29dcfb5ced729840c7779870aa37d0c9ec2 Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Thu, 5 Nov 2020 08:06:48 +0000 Subject: [PATCH 002/293] target align for ESPxx and ESP32 --- platformio.ini | 4 ++-- platformio_override_sample.ini | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 01640257e..e2958caa2 100644 --- a/platformio.ini +++ b/platformio.ini @@ -103,6 +103,7 @@ extra_scripts = pio/strip-floats.py build_unflags = -Wall -Wdeprecated-declarations build_flags = -Wno-deprecated-declarations + -mtarget-align -D_IR_ENABLE_DEFAULT_=false -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true @@ -118,7 +119,6 @@ build_flags = ${esp_defaults.build_flags} -Wl,-Map,firmware.map -DCORE_DEBUG_LEVEL=0 -DNDEBUG - -mtarget-align -DFP_IN_IROM -DBEARSSL_SSL_BASIC ; NONOSDK22x_190703 = 2.2.2-dev(38a443e) @@ -139,7 +139,7 @@ build_flags = -DUSE_IR_REMOTE_FULL [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 -platform = espressif8266@2.6.2 +platform = espressif8266 @ 2.6.2 platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index e06d8f0cc..acf9708ff 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -126,7 +126,7 @@ build_flags = ${esp82xx_defaults.build_flags} [core_stage] ; *** Esp8266 core for Arduino version stage -platform_packages = framework-arduinoespressif8266@https://github.com/esp8266/Arduino.git +platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git ; *** Use Xtensa build chain 10.2. GNU13 from https://github.com/earlephilhower/esp-quick-toolchain mcspr/toolchain-xtensa @ 5.100200.200918 platformio/tool-esptool @ 1.413.0 @@ -192,10 +192,12 @@ lib_extra_dirs = ${library.lib_extra_dirs} [core32_stage] platform = espressif32 @ 2.0.0 -platform_packages = tool-esptoolpy@1.20800.0 +platform_packages = tool-esptoolpy @ 1.20800.0 framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 build_unflags = ${esp32_defaults.build_unflags} + -mtarget-align build_flags = ${esp32_defaults.build_flags} + -mno-target-align -DESP32_STAGE=true [library] From 00a2f9502cca4a2f4ad6990668ade13e3eeb200d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 5 Nov 2020 10:12:51 +0100 Subject: [PATCH 003/293] grrr --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 46a698c52..5401b8032 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -81,7 +81,7 @@ build_flags = ${esp_defaults.build_flags} -Dsint32_t=int32_t -Dsint16_t=int16_t -Dmemcpy_P=memcpy - -Dmemcmp_P=memcmp + -Dmemcmp_P=memcmp [core32] From cdf66b6eff2e9bbfa2546ea3c80f95be5cb95078 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 5 Nov 2020 13:33:17 +0100 Subject: [PATCH 004/293] Version bump --- CHANGELOG.md | 12 +++++- RELEASENOTES.md | 80 +-------------------------------------- tasmota/tasmota_version.h | 2 +- 3 files changed, 13 insertions(+), 81 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67ef0310c..6e73257f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development +## [9.1.0.0] + +- Version bump + +## [Released] + +### 9.1.0 20201105 + +- Release Imogen + ## [9.0.0.3] - 20201105 ### Added - TLS in binary tasmota-zbbridge (#9635) @@ -115,8 +125,6 @@ All notable changes to this project will be documented in this file. - Support for direct upgrade from Tasmota versions before v7.0 - Auto config update for all Friendlynames and Switchtopic from Tasmota versions before v8.0 -## [Released] - ## [8.5.1] - 20201002 - Release Hannah diff --git a/RELEASENOTES.md b/RELEASENOTES.md index bee5835e9..4f0df15be 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -57,81 +57,5 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.0.0.3 -### Added -- Command ``DimmerStep 1..50`` to change default dimmer up and down step of 10% by James Turton (#9733) -- Command ``Gpios 255`` to show all possible GPIO configurations -- Command ``NoDelay`` for immediate backlog command execution by Erik Montnemery (#9544) -- Command ``ShutterChange`` to increment change position (#9594) -- Command ``SwitchMode 15`` sending only MQTT message on switch change (#9593) -- Command ``SetOption113 1`` to set dimmer low on rotary dial after power off -- Command ``SetOption114 1`` to detach Switches from Relays and enable MQTT action state for all the SwitchModes -- Command ``SwitchText`` to change JSON switch names by barbudor (#9691) -- Zigbee command ``ZbData`` for better support of device specific data -- Zigbee command ``ZbOccupancy`` to configure the time-out for PIR -- Optional support for Mitsubishi Electric HVAC by David Gwynne (#9237) -- Optional support for Orno WE517-Modbus energy meter by Maxime Vincent (#9353) -- SDM630 three phase ImportActive Energy display when ``#define SDM630_IMPORT`` is enabled by Janusz Kostorz (#9124) -- Optional support for inverted NeoPixelBus data line by enabling ``#define USE_WS2812_INVERTED`` (#8988) -- Support for PWM dimmer color/trigger on tap, SO88 led, DGR WITH_LOCAL flag, multi-press and ledmask by Paul Diem (#9474, #9584) -- Support for stateful ACs using ``StateMode`` in tasmota-ir.bin by Arik Yavilevich (#9472) -- Support for analog buttons indexed within standard button range -- Support for Vietnamese language translations by Tâm.NT -- Support for timers in case of no-sunset permanent day by cybermaus (#9543) -- Support for EZO sensors by Christopher Tremblay -- Support for fixed output Hi or Lo GPIO selection -- Support for Hass discovery of TuyaMcu and Sonoff Ifan by Federico Leoni (#9727) -- TLS in binary tasmota-zbbridge (#9620) -- Zigbee reduce battery drain (#9642) -- ESP32 support for Wireless-Tag WT32-ETH01 (#9496) -- ESP32 MI32 Beacon support, RSSI at TELEPERIOD, refactoring by Christian Baars (#9609) -- HM10 Beacon support and refactoring by Christian Baars (#9702) -- Initial support for iBeacons (Sensor52) on ESP32 using internal BLE by rvbglas (#9732) - -### Breaking Changed -- Redesigned ESP8266 GPIO internal representation in line with ESP32 changing ``Template`` layout too -- TLS fingerprint ``#define MQTT_FINGERPRINT`` from string to hexnumbers (#9570) -- Command ``Status`` output for disabled status types now returns {"Command":"Error"} -- MAX31865 driver to support up to 6 thermocouples selected by ``MX31865 CS`` instead of ``SSPI CS`` (#9103) -- When ``SetOption73 1`` JSON result from `{"ACTION":"SINGLE"}` to `{"Button1":{"Action":"SINGLE"}}` - -### Changed -- Command ``Gpio17`` replaces command ``Adc`` -- Command ``Gpios`` replaces command ``Adcs`` -- New IR Raw compact format (#9444) -- A4988 optional microstep pin selection -- Pulsetime to allow use for all relays with 8 interleaved so ``Pulsetime1`` is valid for Relay1, Relay9, Relay17 etc. (#9279) -- Management of serial baudrate (#9554) -- Rotary driver adjusted accordingly if Mi Desk Lamp module is selected (#9399) -- Tasmota Arduino Core v2.7.4.5 allowing webpassword over 47 characters (#9687) -- Webserver code optimizations (#9580, #9590) -- PlatformIO library structure redesigned for compilation speed by Jason2866 -- Zigbee flash storage refactor adding commands ``ZbProbe``, ``ZbStatus2`` and ``ZbRestore`` (#9641) -- Default otaurl in my_user_config.h to http://ota.tasmota.com/tasmota/release/tasmota.bin.gz -- IRremoteESP8266 library from v2.7.10 to v2.7.11 -- NeoPixelBus library from v2.5.0.09 to v2.6.0 - -### Fixed -- Light wakeup Exception 0 (divide by zero) when ``WakeupDuration`` is not initialised (#9466) -- Exception 28 due to device group buffer overflow (#9459) -- Arilux RF remote detection regression from v8.3.0 -- Ledlink blink when no network connected regression from v8.3.1.4 (#9292) -- TuyaMcu energy display regression from v8.5.0.1 (#9547) -- Thermostat sensor status corruption regression from v8.5.0.1 (#9449) -- Telegram message decoding error regression from v8.5.0.1 -- Rule handling of Var or Mem using text regression from v8.5.0.1 (#9540) -- Rule handling of JSON ``null`` regression from v8.5.0.1 (#9685) -- Rule Break not working as expected when ONCE is enabled (#9245) -- Rule expressions using mems corrupts character pool (#9301) -- Shutter timing problem due to buffer overflow in calibration matrix (#9458) -- Correct Energy period display shortly after midnight by gominoa (#9536) -- Tuyamcu dimmers MQTT topic (#9606) -- Scripter memory alignment (#9608) -- Zigbee battery percentage (#9607) -- HassAnyKey anomaly (#9601) - -### Removed -- Support for direct upgrade from Tasmota versions before v7.0 -- Support for downgrade to versions before 9.0 keeping current GPIO configuration -- Auto config update for all Friendlynames and Switchtopic from Tasmota versions before v8.0 -- Auto output selection of decimal or hexadecimal data based on user input. Now only based on ``SetOption17`` +## Changelog v9.1.0.0 +- Version bump diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 846e5579f..1b16064bc 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,7 +20,7 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09000003; +const uint32_t VERSION = 0x09010000; // Lowest compatible version const uint32_t VERSION_COMPATIBLE = 0x07010006; From cc69244a8f38fdd9ebe46461b782051517a89fb3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 5 Nov 2020 13:55:17 +0100 Subject: [PATCH 005/293] Changed platformio compiler option Changed platformio compiler option `no target align` enabled for stage --- CHANGELOG.md | 6 +++--- RELEASENOTES.md | 4 ++-- tasmota/tasmota_version.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e73257f3..c1ddb638a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.1.0.0] - -- Version bump +## [9.1.0.1] +### Changed +- platformio compiler option `no target align` enabled for stage ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4f0df15be..ba7b22c3e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -57,5 +57,5 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.1.0.0 -- Version bump +## Changelog v9.1.0.1 +- platformio compiler option `no target align` enabled for stage diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 1b16064bc..37a103f23 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,7 +20,7 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09010000; +const uint32_t VERSION = 0x09010001; // Lowest compatible version const uint32_t VERSION_COMPATIBLE = 0x07010006; From 4dc937ee7d10c7897190ebc95ac4bbf1309be393 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Fri, 6 Nov 2020 00:05:22 +0900 Subject: [PATCH 006/293] Remove dead code in IR --- tasmota/xdrv_05_irremote_full.ino | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 73974feb6..400c794e7 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -719,36 +719,6 @@ uint32_t IrRemoteSendRawStandard(char ** pp, uint32_t count, uint32_t repeat) { free(arr); } return IE_NO_ERROR; - - - - count++; - if (count < 200) { - uint16_t raw_array[count]; // It's safe to use stack for up to 200 packets (limited by mqtt_data length) - for (uint32_t i = 0; i < count; i++) { - raw_array[i] = strtol(strtok_r(nullptr, ", ", pp), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input - } - - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, count, freq); - } - } else { - uint16_t *raw_array = reinterpret_cast(malloc(count * sizeof(uint16_t))); - if (raw_array == nullptr) { - return IE_INVALID_RAWDATA; - } - - for (uint32_t i = 0; i < count; i++) { - raw_array[i] = strtol(strtok_r(nullptr, ", ", pp), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input - } - - irsend_active = true; - for (uint32_t r = 0; r <= repeat; r++) { - irsend->sendRaw(raw_array, count, freq); - } - free(raw_array); - } } // parse the frequency value From b7f90a30802b1c5625ac7ae2549fcb338ce074ca Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Fri, 6 Nov 2020 00:07:39 +0900 Subject: [PATCH 007/293] Fix frequency parsing in raw IRsend --- tasmota/xdrv_05_irremote_full.ino | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 400c794e7..4a00e2204 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -688,8 +688,7 @@ uint32_t IrRemoteParseRawCompact(char * str, uint16_t * arr, size_t arr_len) { // count: number of commas in parameters, i.e. it contains count+1 values // repeat: number of repeats (0 means no repeat) // -uint32_t IrRemoteSendRawStandard(char ** pp, uint32_t count, uint32_t repeat) { - uint16_t freq = parsqeFreq(*pp); +uint32_t IrRemoteSendRawStandard(char ** pp, uint16_t freq, uint32_t count, uint32_t repeat) { // IRsend 0,896,876,900,888,894,876,1790,874,872,1810,1736,948,872,880,872,936,872,1792,900,888,1734 // IRsend 0,+8570-4240+550-1580C-510+565-1565F-505Fh+570gFhIdChIgFeFgFgIhFgIhF-525C-1560IhIkI-520ChFhFhFgFhIkIhIgIgIkIkI-25270A-4225IkIhIgIhIhIkFhIkFjCgIhIkIkI-500IkIhIhIkFhIgIl+545hIhIoIgIhIkFhFgIkIgFgI @@ -766,7 +765,7 @@ uint32_t IrRemoteCmndIrSendRaw(void) // standard raw // IRsend ,, ... // IRsend , - return IrRemoteSendRawStandard(&p, count, repeat); + return IrRemoteSendRawStandard(&p, parsqeFreq(str), count, repeat); } } From 1f7f5031ff6fc54925fb7cf9ba59f13b6ed44f65 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 6 Nov 2020 12:32:18 +0100 Subject: [PATCH 008/293] mno-target-align default --- platformio.ini | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index e2958caa2..4ad533b86 100644 --- a/platformio.ini +++ b/platformio.ini @@ -100,10 +100,11 @@ extra_scripts = pio/strip-floats.py [esp_defaults] ; *** remove undesired all warnings -build_unflags = -Wall +build_unflags = -mtarget-align + -Wall -Wdeprecated-declarations -build_flags = -Wno-deprecated-declarations - -mtarget-align +build_flags = -mno-target-align + -Wno-deprecated-declarations -D_IR_ENABLE_DEFAULT_=false -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true @@ -140,7 +141,7 @@ build_flags = -DUSE_IR_REMOTE_FULL [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 platform = espressif8266 @ 2.6.2 -platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip +platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.4.7/esp8266-2.7.4.7.zip platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} From aca6cac66085791c6880bf3912aba90650f0e7a2 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 6 Nov 2020 12:36:32 +0100 Subject: [PATCH 009/293] mno-target-align is default --- platformio_override_sample.ini | 6 ------ 1 file changed, 6 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index acf9708ff..2cbb6d864 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -91,9 +91,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} platform_packages = framework-arduinoespressif8266 @ https://github.com/Jason2866/Arduino/releases/download/2.7.4.7/esp8266-2.7.4.7.zip platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} - -mtarget-align build_flags = ${esp82xx_defaults.build_flags} - -mno-target-align ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 @@ -132,10 +130,8 @@ platform_packages = framework-arduinoespressif8266 @ https://github.co platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable - -mtarget-align build_flags = ${esp82xx_defaults.build_flags} -Wno-switch-unreachable - -mno-target-align ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 ; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK221 @@ -195,9 +191,7 @@ platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy @ 1.20800.0 framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 build_unflags = ${esp32_defaults.build_unflags} - -mtarget-align build_flags = ${esp32_defaults.build_flags} - -mno-target-align -DESP32_STAGE=true [library] From 4543dda54d498b14c3bcc5c5a1fd6a8449b11cc8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 6 Nov 2020 12:37:51 +0100 Subject: [PATCH 010/293] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6dc6e0d4e..7b8daf732 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,8 +6,8 @@ - [ ] The pull request is done against the latest dev branch - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR. - - [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.4.5 - - [ ] The code change is tested and works on core ESP32 V.1.12.2 + - [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.4.7 + - [ ] The code change is tested and works on core ESP32 V.1.12.4 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ From 488a360d5b58b79cd450a249e0c26d459817d5d1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 6 Nov 2020 15:22:03 +0100 Subject: [PATCH 011/293] Fixed NTP fallback server functionality Fixed NTP fallback server functionality (#9739) --- CHANGELOG.md | 6 +- RELEASENOTES.md | 11 +++- tasmota/support.ino | 4 ++ tasmota/support_esp32.ino | 23 ------- tasmota/support_rtc.ino | 75 +++++++-------------- tasmota/support_tasmota.ino | 2 + tasmota/support_wifi.ino | 128 ++++++++++++++++++++++++++++++++++++ 7 files changed, 172 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1ddb638a..2eae3b730 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,11 @@ All notable changes to this project will be documented in this file. ## [9.1.0.1] ### Changed -- platformio compiler option `no target align` enabled for stage +- Core library from v2.7.4.5 to v2.7.4.7 +- Platformio compiler option `no target align` enabled (#9749) + +### Fixed +- NTP fallback server functionality (#9739) ## [Released] diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ba7b22c3e..7f801dfa2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -25,7 +25,7 @@ While fallback or downgrading is common practice it was never supported due to S ## Supported Core versions -This release will be supported from ESP8266/Arduino library Core version **2.7.4.5** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. +This release will be supported from ESP8266/Arduino library Core version **2.7.4.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries. Support of Core versions before 2.7.1 has been removed. @@ -39,7 +39,7 @@ For initial configuration this release supports Webserver based **WifiManager** ## Provided Binary Downloads -The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.4.5**. +The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.4.7**. - **tasmota.bin** = The Tasmota version with most drivers. **RECOMMENDED RELEASE BINARY** - **tasmota-BG.bin** to **tasmota-TW.bin** = The Tasmota version in different languages. @@ -58,4 +58,9 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. ## Changelog v9.1.0.1 -- platformio compiler option `no target align` enabled for stage +### Changed +- Core library from v2.7.4.5 to v2.7.4.7 +- Platformio compiler option `no target align` enabled (#9749) + +### Fixed +- NTP fallback server functionality (#9739) diff --git a/tasmota/support.ino b/tasmota/support.ino index bcaac70c4..f9591af3d 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -2076,6 +2076,10 @@ void PrepLog_P2(uint32_t loglevel, PGM_P formatP, ...) void AddLog_P2(uint32_t loglevel, PGM_P formatP, ...) { + if (TasmotaGlobal.prepped_loglevel) { + AddLog(TasmotaGlobal.prepped_loglevel); + } + va_list arg; va_start(arg, formatP); vsnprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), formatP, arg); diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index c1cc3dd8e..8be9f3eff 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -157,29 +157,6 @@ void ZigbeeWrite(const void *pSettings, unsigned nSettingsLen) { NvmSave("zb", "zigbee", pSettings, nSettingsLen); } -// -// sntp emulation -// -static bool bNetIsTimeSync = false; -// -void SntpInit() { - bNetIsTimeSync = true; -} - -uint32_t SntpGetCurrentTimestamp(void) { - time_t now = 0; - if (bNetIsTimeSync || TasmotaGlobal.ntp_force_sync) - { - //Serial_DebugX(("timesync configTime %d\n", TasmotaGlobal.ntp_force_sync, bNetIsTimeSync)); - // init to UTC Time - configTime(0, 0, SettingsText(SET_NTPSERVER1), SettingsText(SET_NTPSERVER2), SettingsText(SET_NTPSERVER3)); - bNetIsTimeSync = false; - TasmotaGlobal.ntp_force_sync = false; - } - time(&now); - return now; -} - // // Crash stuff // diff --git a/tasmota/support_rtc.ino b/tasmota/support_rtc.ino index cb6539aeb..26a1a8f83 100644 --- a/tasmota/support_rtc.ino +++ b/tasmota/support_rtc.ino @@ -29,9 +29,6 @@ const uint32_t MINS_PER_HOUR = 60UL; #define LEAP_YEAR(Y) (((1970+Y)>0) && !((1970+Y)%4) && (((1970+Y)%100) || !((1970+Y)%400))) -extern "C" { -#include "sntp.h" -} #include Ticker TickerRtc; @@ -44,13 +41,12 @@ struct RTC { uint32_t local_time = 0; uint32_t daylight_saving_time = 0; uint32_t standard_time = 0; - uint32_t ntp_time = 0; uint32_t midnight = 0; uint32_t restart_time = 0; uint32_t millis = 0; - uint32_t last_sync = 0; +// uint32_t last_sync = 0; int32_t time_timezone = 0; - uint8_t ntp_sync_minute = 0; + bool time_synced = false; bool midnight_now = false; bool user_time_entry = false; // Override NTP by user setting } Rtc; @@ -374,52 +370,39 @@ uint32_t RuleToTime(TimeRule r, int yr) void RtcSecond(void) { - TIME_T tmpTime; + static uint32_t last_sync = 0; Rtc.millis = millis(); if (!Rtc.user_time_entry) { - if (!TasmotaGlobal.global_state.network_down) { - uint8_t uptime_minute = (TasmotaGlobal.uptime / 60) % 60; // 0 .. 59 - if ((Rtc.ntp_sync_minute > 59) && (uptime_minute > 2)) { - Rtc.ntp_sync_minute = 1; // If sync prepare for a new cycle + if (Rtc.time_synced) { + Rtc.time_synced = false; + last_sync = Rtc.utc_time; + + if (Rtc.restart_time == 0) { + Rtc.restart_time = Rtc.utc_time - TasmotaGlobal.uptime; // save first synced time as restart time } - uint8_t offset = (TasmotaGlobal.uptime < 30) ? RtcTime.second : (((ESP_getChipId() & 0xF) * 3) + 3) ; // First try ASAP to sync. If fails try once every 60 seconds based on chip id - if ( (((offset == RtcTime.second) && ( (RtcTime.year < 2016) || // Never synced - (Rtc.ntp_sync_minute == uptime_minute))) || // Re-sync every hour - TasmotaGlobal.ntp_force_sync ) ) { // Forced sync - Rtc.ntp_time = sntp_get_current_timestamp(); - if (Rtc.ntp_time > START_VALID_TIME) { // Fix NTP bug in core 2.4.1/SDK 2.2.1 (returns Thu Jan 01 08:00:10 1970 after power on) - TasmotaGlobal.ntp_force_sync = false; - Rtc.utc_time = Rtc.ntp_time; - Rtc.last_sync = Rtc.ntp_time; - Rtc.ntp_sync_minute = 60; // Sync so block further requests - if (Rtc.restart_time == 0) { - Rtc.restart_time = Rtc.utc_time - TasmotaGlobal.uptime; // save first ntp time as restart time - } - BreakTime(Rtc.utc_time, tmpTime); - RtcTime.year = tmpTime.year + 1970; - Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); - Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); - // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), - GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); + TIME_T tmpTime; + BreakTime(Rtc.utc_time, tmpTime); + RtcTime.year = tmpTime.year + 1970; + Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); + Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); - if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 - TasmotaGlobal.rules_flag.time_init = 1; - } else { - TasmotaGlobal.rules_flag.time_set = 1; - } - } else { - Rtc.ntp_sync_minute++; // Try again in next minute - } + // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("RTC: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), + GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); + + if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 + TasmotaGlobal.rules_flag.time_init = 1; + } else { + TasmotaGlobal.rules_flag.time_set = 1; } } - if ((Rtc.utc_time > (2 * 60 * 60)) && (Rtc.last_sync < Rtc.utc_time - (2 * 60 * 60))) { // Every two hours a warning + if ((Rtc.utc_time > (2 * 60 * 60)) && (last_sync < Rtc.utc_time - (2 * 60 * 60))) { // Every two hours a warning // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: Not synced")); - Rtc.last_sync = Rtc.utc_time; + PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("RTC: Not synced")); + last_sync = Rtc.utc_time; } } @@ -477,9 +460,7 @@ void RtcSetTime(uint32_t epoch) if (epoch < START_VALID_TIME) { // 2016-01-01 Rtc.user_time_entry = false; TasmotaGlobal.ntp_force_sync = true; - sntp_init(); } else { - sntp_stop(); Rtc.user_time_entry = true; Rtc.utc_time = epoch -1; // Will be corrected by RtcSecond } @@ -487,12 +468,6 @@ void RtcSetTime(uint32_t epoch) void RtcInit(void) { - sntp_setservername(0, SettingsText(SET_NTPSERVER1)); - sntp_setservername(1, SettingsText(SET_NTPSERVER2)); - sntp_setservername(2, SettingsText(SET_NTPSERVER3)); - sntp_stop(); - sntp_set_timezone(0); // UTC time - sntp_init(); Rtc.utc_time = 0; BreakTime(Rtc.utc_time, RtcTime); TickerRtc.attach(1, RtcSecond); diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index afe8d4126..a319927ff 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -876,6 +876,8 @@ void PerformEverySecond(void) // Wifi keep alive to send Gratuitous ARP wifiKeepAlive(); + WifiPollNtp(); + #ifdef ESP32 if (11 == TasmotaGlobal.uptime) { // Perform one-time ESP32 houskeeping ESP_getSketchSize(); // Init sketchsize as it can take up to 2 seconds diff --git a/tasmota/support_wifi.ino b/tasmota/support_wifi.ino index f25e710e7..181ba10ef 100644 --- a/tasmota/support_wifi.ino +++ b/tasmota/support_wifi.ino @@ -701,3 +701,131 @@ void wifiKeepAlive(void) { SetNextTimeInterval(wifi_timer, wifiTimerSec * 1000); } } + +void WifiPollNtp() { + static uint8_t ntp_sync_minute = 0; + + if (TasmotaGlobal.global_state.network_down) { return; } + + uint8_t uptime_minute = (TasmotaGlobal.uptime / 60) % 60; // 0 .. 59 + if ((ntp_sync_minute > 59) && (uptime_minute > 2)) { + ntp_sync_minute = 1; // If sync prepare for a new cycle + } + // First try ASAP to sync. If fails try once every 60 seconds based on chip id + uint8_t offset = (TasmotaGlobal.uptime < 30) ? RtcTime.second : (((ESP_getChipId() & 0xF) * 3) + 3) ; + if ( (((offset == RtcTime.second) && ( (RtcTime.year < 2016) || // Never synced + (ntp_sync_minute == uptime_minute))) || // Re-sync every hour + TasmotaGlobal.ntp_force_sync ) ) { // Forced sync + + TasmotaGlobal.ntp_force_sync = false; + uint32_t ntp_time = WifiGetNtp(); + if (ntp_time > START_VALID_TIME) { + Rtc.utc_time = ntp_time; + ntp_sync_minute = 60; // Sync so block further requests + Rtc.time_synced = true; + RtcSecond(); +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: Synced")); + } else { + ntp_sync_minute++; // Try again in next minute + } + } +} + +uint32_t WifiGetNtp(void) { + static uint8_t ntp_server_id = 0; + + IPAddress time_server_ip; + + char* ntp_server; + bool resolved_ip = false; + for (uint32_t i = 0; i < MAX_NTP_SERVERS; i++) { + ntp_server = SettingsText(SET_NTPSERVER1 + ntp_server_id); + if (strlen(ntp_server)) { + resolved_ip = (WiFi.hostByName(ntp_server, time_server_ip) == 1); + if (255 == time_server_ip[0]) { resolved_ip = false; } + yield(); + if (resolved_ip) { break; } + } + ntp_server_id++; + if (ntp_server_id > 2) { ntp_server_id = 0; } + } + if (!resolved_ip) { +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: No server found")); + return 0; + } + +// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: Name %s, IP %s"), ntp_server, time_server_ip.toString().c_str()); + + WiFiUDP udp; + + uint32_t attempts = 3; + while (attempts > 0) { + uint32_t port = random(1025, 65535); // Create a random port for the UDP connection. + if (udp.begin(port) != 0) { + break; + } + attempts--; + } + if (0 == attempts) { return 0; } + + while (udp.parsePacket() > 0) { // Discard any previously received packets + yield(); + } + + const uint32_t NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message + uint8_t packet_buffer[NTP_PACKET_SIZE]; // Buffer to hold incoming & outgoing packets + memset(packet_buffer, 0, NTP_PACKET_SIZE); + packet_buffer[0] = 0b11100011; // LI, Version, Mode + packet_buffer[1] = 0; // Stratum, or type of clock + packet_buffer[2] = 6; // Polling Interval + packet_buffer[3] = 0xEC; // Peer Clock Precision + packet_buffer[12] = 49; + packet_buffer[13] = 0x4E; + packet_buffer[14] = 49; + packet_buffer[15] = 52; + + if (udp.beginPacket(time_server_ip, 123) == 0) { // NTP requests are to port 123 + ntp_server_id++; + if (ntp_server_id > 2) { ntp_server_id = 0; } // Next server next time + udp.stop(); + return 0; + } + udp.write(packet_buffer, NTP_PACKET_SIZE); + udp.endPacket(); + + uint32_t begin_wait = millis(); + while (!TimeReached(begin_wait + 1000)) { // Wait up to one second + uint32_t size = udp.parsePacket(); + uint32_t remote_port = udp.remotePort(); + + if ((size >= NTP_PACKET_SIZE) && (remote_port == 123)) { + udp.read(packet_buffer, NTP_PACKET_SIZE); // Read packet into the buffer + udp.stop(); + + if ((packet_buffer[0] & 0b11000000) == 0b11000000) { + // Leap-Indicator: unknown (clock unsynchronized) + // See: https://github.com/letscontrolit/ESPEasy/issues/2886#issuecomment-586656384 + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: IP %s unsynched"), time_server_ip.toString().c_str()); + return 0; + } + + // convert four bytes starting at location 40 to a long integer + // TX time is used here. + uint32_t secs_since_1900 = (uint32_t)packet_buffer[40] << 24; + secs_since_1900 |= (uint32_t)packet_buffer[41] << 16; + secs_since_1900 |= (uint32_t)packet_buffer[42] << 8; + secs_since_1900 |= (uint32_t)packet_buffer[43]; + if (0 == secs_since_1900) { // No time stamp received + return 0; + } + return secs_since_1900 - 2208988800UL; + } + delay(10); + } + // Timeout. + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: No reply")); + udp.stop(); + return 0; +} + + From fa7fdbd51a6678c3623882a723f9d583e33fae0d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 6 Nov 2020 17:09:13 +0100 Subject: [PATCH 012/293] Consolidate `AddLog_P` Consolidate `AddLog_P` into `AddLog_P2` and rename to `AddLog_P` --- CHANGELOG.md | 1 + tasmota/i18n.h | 19 --- tasmota/sendemail.ino | 62 +++++----- tasmota/settings.ino | 28 ++--- tasmota/support.ino | 54 +++----- tasmota/support_button.ino | 14 +-- tasmota/support_command.ino | 4 +- tasmota/support_device_groups.ino | 28 ++--- tasmota/support_esp32.ino | 2 +- tasmota/support_float.ino | 2 +- tasmota/support_network.ino | 8 +- tasmota/support_rotary.ino | 2 +- tasmota/support_rtc.ino | 8 +- tasmota/support_tasmota.ino | 32 ++--- tasmota/support_udp.ino | 6 +- tasmota/support_wifi.ino | 44 +++---- tasmota/tasmota.ino | 6 +- tasmota/xdrv_01_webserver.ino | 86 ++++++------- tasmota/xdrv_02_mqtt.ino | 42 +++---- tasmota/xdrv_03_energy.ino | 8 +- tasmota/xdrv_04_light.ino | 66 +++++----- tasmota/xdrv_05_irremote.ino | 4 +- tasmota/xdrv_05_irremote_full.ino | 18 +-- tasmota/xdrv_07_domoticz.ino | 12 +- tasmota/xdrv_09_timers.ino | 6 +- tasmota/xdrv_10_rules.ino | 48 ++++---- tasmota/xdrv_10_scripter.ino | 66 +++++----- tasmota/xdrv_11_knx.ino | 44 ++++--- tasmota/xdrv_12_home_assistant.ino | 10 +- tasmota/xdrv_13_display.ino | 8 +- tasmota/xdrv_16_tuyamcu.ino | 34 +++--- tasmota/xdrv_17_rcswitch.ino | 2 +- tasmota/xdrv_18_armtronix_dimmers.ino | 8 +- tasmota/xdrv_19_ps16dz_dimmer.ino | 12 +- tasmota/xdrv_20_hue.ino | 26 ++-- tasmota/xdrv_21_wemo.ino | 8 +- tasmota/xdrv_23_zigbee_3_hue.ino | 8 +- tasmota/xdrv_23_zigbee_4_persistence.ino | 30 ++--- tasmota/xdrv_23_zigbee_5_converters.ino | 10 +- tasmota/xdrv_23_zigbee_6_commands.ino | 10 +- tasmota/xdrv_23_zigbee_7_statemachine.ino | 16 +-- tasmota/xdrv_23_zigbee_8_parsers.ino | 18 +-- tasmota/xdrv_23_zigbee_9_serial.ino | 82 ++++++------- tasmota/xdrv_23_zigbee_9a_upload.ino | 34 +++--- tasmota/xdrv_23_zigbee_A_impl.ino | 42 +++---- tasmota/xdrv_24_buzzer.ino | 2 +- tasmota/xdrv_26_ariluxrf.ino | 3 +- tasmota/xdrv_27_shutter.ino | 98 +++++++-------- tasmota/xdrv_28_pcf8574.ino | 16 +-- tasmota/xdrv_29_deepsleep.ino | 4 +- tasmota/xdrv_30_exs_dimmer.ino | 16 +-- tasmota/xdrv_31_tasmota_client.ino | 20 +-- tasmota/xdrv_33_nrf24l01.ino | 4 +- tasmota/xdrv_36_keeloq.ino | 8 +- tasmota/xdrv_37_sonoff_d1.ino | 8 +- tasmota/xdrv_39_thermostat.ino | 56 ++++----- tasmota/xdrv_40_telegram.ino | 28 ++--- tasmota/xdrv_41_tcp_bridge.ino | 10 +- tasmota/xdrv_42_i2s_audio.ino | 41 +++---- tasmota/xdrv_43_mlx90640.ino | 30 ++--- tasmota/xdrv_44_miel_hvac.ino | 22 ++-- tasmota/xdrv_81_webcam.ino | 68 +++++------ tasmota/xdrv_82_ethernet.ino | 14 +-- tasmota/xdrv_83_esp32watch.ino | 6 +- tasmota/xdrv_99_debug.ino | 20 +-- tasmota/xdsp_01_lcd.ino | 2 +- tasmota/xdsp_02_ssd1306.ino | 2 +- tasmota/xdsp_03_matrix.ino | 4 +- tasmota/xdsp_04_ili9341.ino | 4 +- tasmota/xdsp_05_epaper_29.ino | 6 +- tasmota/xdsp_07_sh1106.ino | 2 +- tasmota/xdsp_09_SSD1351.ino | 2 +- tasmota/xdsp_12_ST7789.ino | 2 +- tasmota/xlgt_02_my92x1.ino | 2 +- tasmota/xlgt_03_sm16716.ino | 4 +- tasmota/xlgt_04_sm2135.ino | 2 +- tasmota/xlgt_05_sonoff_l1.ino | 14 +-- tasmota/xlgt_06_electriq_moodl.ino | 2 +- tasmota/xnrg_01_hlw8012.ino | 2 +- tasmota/xnrg_02_cse7766.ino | 6 +- tasmota/xnrg_03_pzem004t.ino | 4 +- tasmota/xnrg_05_pzem_ac.ino | 2 +- tasmota/xnrg_06_pzem_dc.ino | 2 +- tasmota/xnrg_07_ade7953.ino | 4 +- tasmota/xnrg_08_sdm120.ino | 2 +- tasmota/xnrg_09_dds2382.ino | 2 +- tasmota/xnrg_10_sdm630.ino | 2 +- tasmota/xnrg_11_ddsu666.ino | 2 +- tasmota/xnrg_13_fif_le01mr.ino | 2 +- tasmota/xnrg_14_bl0940.ino | 10 +- tasmota/xnrg_15_teleinfo.ino | 50 ++++---- tasmota/xnrg_16_iem3000.ino | 2 +- tasmota/xnrg_17_ornowe517.ino | 4 +- tasmota/xsns_01_counter.ino | 2 +- tasmota/xsns_04_snfsc.ino | 4 +- tasmota/xsns_05_ds18x20.ino | 2 +- tasmota/xsns_05_ds18x20_esp32.ino | 2 +- tasmota/xsns_06_dht.ino | 6 +- tasmota/xsns_11_veml6070.ino | 8 +- tasmota/xsns_12_ads1115.ino | 8 +- tasmota/xsns_15_mhz19.ino | 2 +- tasmota/xsns_17_senseair.ino | 10 +- tasmota/xsns_20_novasds.ino | 2 +- tasmota/xsns_21_sgp30.ino | 4 +- tasmota/xsns_22_sr04.ino | 4 +- tasmota/xsns_27_apds9960.ino | 6 +- tasmota/xsns_29_mcp230xx.ino | 10 +- tasmota/xsns_30_mpr121.ino | 6 +- tasmota/xsns_33_ds3231.ino | 4 +- tasmota/xsns_34_hx711.ino | 8 +- tasmota/xsns_37_rfsensor.ino | 6 +- tasmota/xsns_40_pn532.ino | 4 +- tasmota/xsns_41_max44009.ino | 2 +- tasmota/xsns_42_scd30.ino | 26 ++-- tasmota/xsns_43_hre.ino | 4 +- tasmota/xsns_44_sps30.ino | 2 +- tasmota/xsns_48_chirp.ino | 10 +- tasmota/xsns_50_paj7620.ino | 2 +- tasmota/xsns_52_ibeacon.ino | 78 ++++++------ tasmota/xsns_53_sml.ino | 18 +-- tasmota/xsns_54_ina226.ino | 46 +++---- tasmota/xsns_59_ds1624.ino | 10 +- tasmota/xsns_61_MI_NRF24.ino | 106 ++++++++-------- tasmota/xsns_62_MI_ESP32.ino | 142 +++++++++++----------- tasmota/xsns_62_MI_HM10.ino | 100 +++++++-------- tasmota/xsns_65_hdc1080.ino | 10 +- tasmota/xsns_66_iAQ.ino | 4 +- tasmota/xsns_67_as3935.ino | 4 +- tasmota/xsns_68_windmeter.ino | 6 +- tasmota/xsns_69_opentherm.ino | 8 +- tasmota/xsns_69_opentherm_protocol.ino | 8 +- tasmota/xsns_75_prometheus.ino | 2 +- tasmota/xsns_interface.ino | 4 +- 133 files changed, 1169 insertions(+), 1217 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eae3b730..d15684b10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Changed - Core library from v2.7.4.5 to v2.7.4.7 - Platformio compiler option `no target align` enabled (#9749) +- Consolidate `AddLog_P` into `AddLog_P2` and rename to `AddLog_P` ### Fixed - NTP fallback server functionality (#9739) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 8bcd461ee..df4c28b8b 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -745,9 +745,6 @@ const char JSON_SNS_GNGPM[] PROGMEM = ",\"%s\":{\"" D_JSON_TOTAL_USAGE "\":%s,\" const char S_LOG_I2C_FOUND_AT[] PROGMEM = D_LOG_I2C "%s " D_FOUND_AT " 0x%x"; -const char S_LOG_HTTP[] PROGMEM = D_LOG_HTTP; -const char S_LOG_WIFI[] PROGMEM = D_LOG_WIFI; -const char S_LOG_MQTT[] PROGMEM = D_LOG_MQTT; const char S_RSLT_POWER[] PROGMEM = D_RSLT_POWER; const char S_RSLT_RESULT[] PROGMEM = D_RSLT_RESULT; const char S_RSLT_WARNING[] PROGMEM = D_RSLT_WARNING; @@ -797,22 +794,6 @@ const char HTTP_SNS_DO[] PROGMEM = "{s}%s " D_DO "{ const char HTTP_SNS_COLOR_RED[] PROGMEM = "{s}%s " D_COLOR_RED "{m}%u " "{e}"; const char HTTP_SNS_COLOR_GREEN[] PROGMEM = "{s}%s " D_COLOR_GREEN "{m}%u " "{e}"; const char HTTP_SNS_COLOR_BLUE[] PROGMEM = "{s}%s " D_COLOR_BLUE "{m}%u " "{e}"; - -const char S_MAIN_MENU[] PROGMEM = D_MAIN_MENU; -const char S_CONFIGURATION[] PROGMEM = D_CONFIGURATION; -const char S_CONFIGURE_TEMPLATE[] PROGMEM = D_CONFIGURE_TEMPLATE; -const char S_CONFIGURE_MODULE[] PROGMEM = D_CONFIGURE_MODULE; -const char S_CONFIGURE_WIFI[] PROGMEM = D_CONFIGURE_WIFI; -const char S_NO_NETWORKS_FOUND[] PROGMEM = D_NO_NETWORKS_FOUND; -const char S_CONFIGURE_LOGGING[] PROGMEM = D_CONFIGURE_LOGGING; -const char S_CONFIGURE_OTHER[] PROGMEM = D_CONFIGURE_OTHER; -const char S_SAVE_CONFIGURATION[] PROGMEM = D_SAVE_CONFIGURATION; -const char S_RESET_CONFIGURATION[] PROGMEM = D_RESET_CONFIGURATION; -const char S_RESTORE_CONFIGURATION[] PROGMEM = D_RESTORE_CONFIGURATION; -const char S_FIRMWARE_UPGRADE[] PROGMEM = D_FIRMWARE_UPGRADE; -const char S_CONSOLE[] PROGMEM = D_CONSOLE; -const char S_INFORMATION[] PROGMEM = D_INFORMATION; -const char S_RESTART[] PROGMEM = D_RESTART; #endif // USE_WEBSERVER const uint32_t MARKER_START = 0x5AA55AA5; diff --git a/tasmota/sendemail.ino b/tasmota/sendemail.ino index a02babb63..c43239a7e 100644 --- a/tasmota/sendemail.ino +++ b/tasmota/sendemail.ino @@ -80,7 +80,7 @@ uint16_t SendMail(char *buffer) { cmd=endcmd+1; #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("mailsize: %d"),blen); + AddLog_P(LOG_LEVEL_INFO, PSTR("mailsize: %d"),blen); #endif mserv=strtok(params,":"); @@ -148,7 +148,7 @@ uint16_t SendMail(char *buffer) { #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s - %d - %s - %s"),mserv,port,user,passwd); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s - %d - %s - %s"),mserv,port,user,passwd); #endif // 2 seconds timeout @@ -164,7 +164,7 @@ uint16_t SendMail(char *buffer) { #endif #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s - %s - %s - %s"),from,to,subject,cmd); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s - %s - %s - %s"),from,to,subject,cmd); #endif if (mail) { @@ -215,7 +215,7 @@ String buffer; client->setTimeout(timeout); // smtp connect #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("Connecting: %s on port %d"),host.c_str(),port); + AddLog_P(LOG_LEVEL_INFO, PSTR("Connecting: %s on port %d"),host.c_str(),port); #endif if (!client->connect(host.c_str(), port)) { @@ -227,7 +227,7 @@ String buffer; buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("220"))) { goto exit; @@ -238,11 +238,11 @@ String buffer; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("250"))) { goto exit; @@ -252,11 +252,11 @@ String buffer; buffer = F("AUTH LOGIN"); client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("334"))) { @@ -267,11 +267,11 @@ String buffer; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("334"))) { goto exit; @@ -279,11 +279,11 @@ String buffer; buffer = b.encode(passwd); client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("235"))) { goto exit; @@ -295,11 +295,11 @@ String buffer; buffer += from; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("250"))) { goto exit; @@ -308,11 +308,11 @@ String buffer; buffer += to; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("250"))) { goto exit; @@ -321,11 +321,11 @@ String buffer; buffer = F("DATA"); client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = readClient(); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif if (!buffer.startsWith(F("354"))) { goto exit; @@ -340,20 +340,20 @@ String buffer; buffer += from; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = F("To: "); buffer += to; client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = F("Subject: "); buffer += subject; buffer += F("\r\n"); client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif @@ -369,13 +369,13 @@ String buffer; #endif client->println('.'); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif buffer = F("QUIT"); client->println(buffer); #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),buffer.c_str()); #endif status=true; @@ -386,7 +386,7 @@ exit: void xsend_message_txt(char *msg) { #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),msg); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),msg); #endif #if defined(USE_SCRIPT_FATFS) && defined(USE_SCRIPT) if (*msg=='@') { @@ -457,7 +457,7 @@ void attach_Array(char *aname) { g_client->print(F("Content-Type: text/plain\r\n")); if (array && alen) { #ifdef DEBUG_EMAIL_PORT - AddLog_P2(LOG_LEVEL_INFO, PSTR("array found %d"),alen); + AddLog_P(LOG_LEVEL_INFO, PSTR("array found %d"),alen); #endif char buff[64]; sprintf_P(buff,PSTR("Content-Disposition: attachment; filename=\"%s.txt\"\r\n\r\n"), aname); @@ -544,7 +544,7 @@ uint16_t SendMail(char *buffer) { // return if not enough memory uint32_t mem=ESP.getFreeHeap(); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("heap: %d"),mem); + //AddLog_P(LOG_LEVEL_INFO, PSTR("heap: %d"),mem); if (mem 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_CONFIG "Text overflow by %d char(s)"), too_long); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_CONFIG "Text overflow by %d char(s)"), too_long); return false; // Replace text too long } @@ -474,9 +474,9 @@ bool SettingsUpdateText(uint32_t index, const char* replace_me) { } #ifdef DEBUG_FUNC_SETTINGSUPDATETEXT - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "CR %d/%d, Busy %d, Id %02d = \"%s\""), GetSettingsTextLen(), settings_text_size, settings_text_busy_count, index_save, replace); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "CR %d/%d, Busy %d, Id %02d = \"%s\""), GetSettingsTextLen(), settings_text_size, settings_text_busy_count, index_save, replace); #else - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "CR %d/%d, Busy %d"), GetSettingsTextLen(), settings_text_size, settings_text_busy_count); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "CR %d/%d, Busy %d"), GetSettingsTextLen(), settings_text_size, settings_text_busy_count); #endif return true; @@ -561,10 +561,10 @@ void SettingsSave(uint8_t rotate) delay(1); } } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG D_SAVED_TO_FLASH_AT " %X, " D_COUNT " %d, " D_BYTES " %d"), settings_location, Settings.save_flag, sizeof(Settings)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG D_SAVED_TO_FLASH_AT " %X, " D_COUNT " %d, " D_BYTES " %d"), settings_location, Settings.save_flag, sizeof(Settings)); #else // ESP32 SettingsWrite(&Settings, sizeof(Settings)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "Saved, " D_COUNT " %d, " D_BYTES " %d"), Settings.save_flag, sizeof(Settings)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_CONFIG "Saved, " D_COUNT " %d, " D_BYTES " %d"), Settings.save_flag, sizeof(Settings)); #endif // ESP8266 settings_crc32 = Settings.cfg_crc32; @@ -596,11 +596,11 @@ void SettingsLoad(void) { } if (settings_location > 0) { ESP.flashRead(settings_location * SPI_FLASH_SEC_SIZE, (uint32*)&Settings, sizeof(Settings)); - AddLog_P2(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG D_LOADED_FROM_FLASH_AT " %X, " D_COUNT " %lu"), settings_location, Settings.save_flag); + AddLog_P(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG D_LOADED_FROM_FLASH_AT " %X, " D_COUNT " %lu"), settings_location, Settings.save_flag); } #else // ESP32 SettingsRead(&Settings, sizeof(Settings)); - AddLog_P2(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded, " D_COUNT " %lu"), Settings.save_flag); + AddLog_P(LOG_LEVEL_NONE, PSTR(D_LOG_CONFIG "Loaded, " D_COUNT " %lu"), Settings.save_flag); #endif // ESP8266 - ESP32 #ifndef FIRMWARE_MINIMAL @@ -681,7 +681,7 @@ void SettingsErase(uint8_t type) return; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " from 0x%08X to 0x%08X"), _sectorStart * SPI_FLASH_SEC_SIZE, (_sectorEnd * SPI_FLASH_SEC_SIZE) -1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " from 0x%08X to 0x%08X"), _sectorStart * SPI_FLASH_SEC_SIZE, (_sectorEnd * SPI_FLASH_SEC_SIZE) -1); // EspErase(_sectorStart, _sectorEnd); // Arduino core and SDK - erases flash as seen by SDK EsptoolErase(_sectorStart, _sectorEnd); // Esptool - erases flash completely diff --git a/tasmota/support.ino b/tasmota/support.ino index f9591af3d..4538c7109 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -52,7 +52,7 @@ void OsWatchTicker(void) #ifdef DEBUG_THEO int32_t rssi = WiFi.RSSI(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d %% (%d dBm), last_run %d"), ESP_getFreeHeap(), WifiGetRssiAsQuality(rssi), rssi, last_run); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d %% (%d dBm), last_run %d"), ESP_getFreeHeap(), WifiGetRssiAsQuality(rssi), rssi, last_run); #endif // DEBUG_THEO if (last_run >= (OSWATCH_RESET_TIME * 1000)) { // AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_OSWATCH " " D_BLOCKED_LOOP ". " D_RESTARTING)); // Save iram space @@ -911,7 +911,7 @@ String GetSerialConfig(void) { void SetSerialBegin(void) { TasmotaGlobal.baudrate = Settings.baudrate * 300; - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_SERIAL "Set to %s %d bit/s"), GetSerialConfig().c_str(), TasmotaGlobal.baudrate); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_SERIAL "Set to %s %d bit/s"), GetSerialConfig().c_str(), TasmotaGlobal.baudrate); Serial.flush(); #ifdef ESP8266 Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + Settings.serial_config)); @@ -1000,7 +1000,7 @@ void ShowSource(uint32_t source) { if ((source > 0) && (source < SRC_MAX)) { char stemp1[20]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SRC: %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SRC: %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource)); } } @@ -1189,7 +1189,7 @@ void TemplateConvert(uint8_t template8[], uint16_t template16[]) { } template16[(sizeof(mytmplt) / 2) -2] = Adc0Convert(template8[sizeof(mytmplt8285) -1]); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: TemplateConvert")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("FNC: TemplateConvert")); // AddLogBuffer(LOG_LEVEL_DEBUG, template8, sizeof(mytmplt8285)); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)template16, sizeof(mytmplt) / 2, 2); } @@ -1205,7 +1205,7 @@ void ConvertGpios(void) { Settings.my_gp.io[(sizeof(myio) / 2) -1] = Adc0Convert(Settings.ex_my_adc0); Settings.gpio16_converted = 0xF5A0; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: ConvertGpios")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("FNC: ConvertGpios")); // AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.ex_my_gp8.io, sizeof(myio8)); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)&Settings.my_gp.io, sizeof(myio) / 2, 2); } @@ -1342,7 +1342,7 @@ String ModuleName(void) void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { uint8_t module_template = pgm_read_byte(kModuleTemplateList + module); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Template %d, Option %d"), module_template, option); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: Template %d, Option %d"), module_template, option); // template8 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; @@ -1374,7 +1374,7 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { } memcpy(ptr, &template16[index], size); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FNC: GetInternalTemplate option %d"), option); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("FNC: GetInternalTemplate option %d"), option); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size / 2, 2); } #endif // ESP8266 @@ -1542,7 +1542,7 @@ bool JsonTemplate(char* dataBuf) // Old: {"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18} // New: {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18} -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TPL: |%s|"), dataBuf); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TPL: |%s|"), dataBuf); if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1607,7 +1607,7 @@ bool JsonTemplate(char* dataBuf) Settings.user_template_base = base -1; // Default WEMOS } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TPL: Converted")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TPL: Converted")); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)&Settings.user_template, sizeof(Settings.user_template) / 2, 2); return true; @@ -1615,7 +1615,7 @@ bool JsonTemplate(char* dataBuf) void TemplateJson(void) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TPL: Show")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TPL: Show")); // AddLogBufferSize(LOG_LEVEL_DEBUG, (uint8_t*)&Settings.user_template, sizeof(Settings.user_template) / 2, 2); Response_P(PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), SettingsText(SET_TEMPLATE_NAME)); @@ -1888,7 +1888,7 @@ void I2cResetActive(uint32_t addr, uint32_t count = 1) i2c_active[addr / 32] &= ~(1 << (addr % 32)); addr++; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("I2C: Active %08X,%08X,%08X,%08X"), i2c_active[0], i2c_active[1], i2c_active[2], i2c_active[3]); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("I2C: Active %08X,%08X,%08X,%08X"), i2c_active[0], i2c_active[1], i2c_active[2], i2c_active[3]); } void I2cSetActive(uint32_t addr, uint32_t count = 1) @@ -1899,13 +1899,13 @@ void I2cSetActive(uint32_t addr, uint32_t count = 1) i2c_active[addr / 32] |= (1 << (addr % 32)); addr++; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("I2C: Active %08X,%08X,%08X,%08X"), i2c_active[0], i2c_active[1], i2c_active[2], i2c_active[3]); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("I2C: Active %08X,%08X,%08X,%08X"), i2c_active[0], i2c_active[1], i2c_active[2], i2c_active[3]); } void I2cSetActiveFound(uint32_t addr, const char *types) { I2cSetActive(addr); - AddLog_P2(LOG_LEVEL_INFO, S_LOG_I2C_FOUND_AT, types, addr); + AddLog_P(LOG_LEVEL_INFO, S_LOG_I2C_FOUND_AT, types, addr); } bool I2cActive(uint32_t addr) @@ -1932,7 +1932,7 @@ bool I2cSetDevice(uint32_t addr) * Syslog * * Example: - * AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_LOG "Any value %d"), value); + * AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_LOG "Any value %d"), value); * \*********************************************************************************************/ @@ -1997,7 +1997,7 @@ void Syslog(void) } else { TasmotaGlobal.syslog_level = 0; TasmotaGlobal.syslog_timer = SYSLOG_TIMER; - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_SYSLOG_HOST_NOT_FOUND ". " D_RETRY_IN " %d " D_UNIT_SECOND), SYSLOG_TIMER); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_SYSLOG_HOST_NOT_FOUND ". " D_RETRY_IN " %d " D_UNIT_SECOND), SYSLOG_TIMER); } } @@ -2048,23 +2048,7 @@ void AddLog(uint32_t loglevel) TasmotaGlobal.prepped_loglevel = 0; } -void AddLog_P(uint32_t loglevel, const char *formatP) -{ - snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), formatP); - AddLog(loglevel); -} - -void AddLog_P(uint32_t loglevel, const char *formatP, const char *formatP2) -{ - char message[sizeof(TasmotaGlobal.log_data)]; - - snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), formatP); - snprintf_P(message, sizeof(message), formatP2); - strncat(TasmotaGlobal.log_data, message, sizeof(TasmotaGlobal.log_data) - strlen(TasmotaGlobal.log_data) -1); - AddLog(loglevel); -} - -void PrepLog_P2(uint32_t loglevel, PGM_P formatP, ...) +void PrepLog_P(uint32_t loglevel, PGM_P formatP, ...) { va_list arg; va_start(arg, formatP); @@ -2074,7 +2058,7 @@ void PrepLog_P2(uint32_t loglevel, PGM_P formatP, ...) TasmotaGlobal.prepped_loglevel = loglevel; } -void AddLog_P2(uint32_t loglevel, PGM_P formatP, ...) +void AddLog_P(uint32_t loglevel, PGM_P formatP, ...) { if (TasmotaGlobal.prepped_loglevel) { AddLog(TasmotaGlobal.prepped_loglevel); @@ -2113,7 +2097,7 @@ void AddLogBuffer(uint32_t loglevel, uint8_t *buffer, uint32_t count) AddLog(loglevel); */ char hex_char[(count * 3) + 2]; - AddLog_P2(loglevel, PSTR("DMP: %s"), ToHex_P(buffer, count, hex_char, sizeof(hex_char), ' ')); + AddLog_P(loglevel, PSTR("DMP: %s"), ToHex_P(buffer, count, hex_char, sizeof(hex_char), ' ')); } void AddLogSerial(uint32_t loglevel) @@ -2123,7 +2107,7 @@ void AddLogSerial(uint32_t loglevel) void AddLogMissed(const char *sensor, uint32_t misses) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SNS: %s missed %d"), sensor, SENSOR_MAX_MISS - misses); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SNS: %s missed %d"), sensor, SENSOR_MAX_MISS - misses); } void AddLogBufferSize(uint32_t loglevel, uint8_t *buffer, uint32_t count, uint32_t size) { diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index 39fdc407c..ba9d0425a 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -145,7 +145,7 @@ void ButtonHandler(void) { if (!button_index && ((SONOFF_DUAL == TasmotaGlobal.module_type) || (CH4 == TasmotaGlobal.module_type))) { button_present = 1; if (Button.dual_code) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON " " D_CODE " %04X"), Button.dual_code); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON " " D_CODE " %04X"), Button.dual_code); button = PRESSED; if (0xF500 == Button.dual_code) { // Button hold Button.hold_timer[button_index] = (loops_per_second * Settings.param[P_HOLD_TIME] / 10) -1; // SetOption32 (40) @@ -175,7 +175,7 @@ void ButtonHandler(void) { Button.touch_hits[button_index] = 0; } if (bitRead(TOUCH_BUTTON.calibration, button_index+1)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("PLOT: %u, %u, %u,"), button_index+1, _value, Button.touch_hits[button_index]); // Button number (1..4), value, continuous hits under threshold + AddLog_P(LOG_LEVEL_INFO, PSTR("PLOT: %u, %u, %u,"), button_index+1, _value, Button.touch_hits[button_index]); // Button number (1..4), value, continuous hits under threshold } } else #endif // ESP32 @@ -205,12 +205,12 @@ void ButtonHandler(void) { bool button_pressed = false; if ((PRESSED == button) && (NOT_PRESSED == Button.last_state[button_index])) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_10), button_index +1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_10), button_index +1); Button.hold_timer[button_index] = loops_per_second; button_pressed = true; } if ((NOT_PRESSED == button) && (PRESSED == Button.last_state[button_index])) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_01), button_index +1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_LEVEL_01), button_index +1); if (!Button.hold_timer[button_index]) { button_pressed = true; } // Do not allow within 1 second } if (button_pressed) { @@ -229,7 +229,7 @@ void ButtonHandler(void) { if (Settings.flag.button_single) { // SetOption13 (0) - Allow only single button press for immediate action, if (!Settings.flag3.mqtt_buttons) { // SetOption73 (0) - Decouple button from relay and send just mqtt topic - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_IMMEDIATE), button_index +1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_IMMEDIATE), button_index +1); if (!SendKey(KEY_BUTTON, button_index +1, POWER_TOGGLE)) { // Execute Toggle command via MQTT if ButtonTopic is set ExecuteCommandPower(button_index +1, POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally } @@ -238,7 +238,7 @@ void ButtonHandler(void) { } } else { Button.press_counter[button_index] = (Button.window_timer[button_index]) ? Button.press_counter[button_index] +1 : 1; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_MULTI_PRESS " %d"), button_index +1, Button.press_counter[button_index]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_MULTI_PRESS " %d"), button_index +1, Button.press_counter[button_index]); Button.window_timer[button_index] = loops_per_second / 2; // 0.5 second multi press window } TasmotaGlobal.blinks = 201; @@ -319,7 +319,7 @@ void ButtonHandler(void) { #endif // ESP8266 if ((Button.press_counter[button_index] > 1) && valid_relay && (Button.press_counter[button_index] <= MAX_RELAY_BUTTON1)) { ExecuteCommandPower(button_index + Button.press_counter[button_index], POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Relay%d found on GPIO%d"), Button.press_counter[button_index], Pin(GPIO_REL1, Button.press_counter[button_index]-1)); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: Relay%d found on GPIO%d"), Button.press_counter[button_index], Pin(GPIO_REL1, Button.press_counter[button_index]-1)); } } } diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 79a3f1a10..3fc55e625 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -227,7 +227,7 @@ void CommandHandler(char* topicBuf, char* dataBuf, uint32_t data_len) type[i] = '\0'; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CMD: " D_GROUP " %d, " D_INDEX " %d, " D_COMMAND " \"%s\", " D_DATA " \"%s\""), grpflg, index, type, dataBuf); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CMD: " D_GROUP " %d, " D_INDEX " %d, " D_COMMAND " \"%s\", " D_DATA " \"%s\""), grpflg, index, type, dataBuf); if (type != nullptr) { Response_P(PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_ERROR "\"}")); @@ -2077,7 +2077,7 @@ void CmndTouchCal(void) } Response_P(PSTR("{\"" D_CMND_TOUCH_CAL "\": %u"), TOUCH_BUTTON.calibration); ResponseJsonEnd(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("Button Touchvalue Hits,")); + AddLog_P(LOG_LEVEL_INFO, PSTR("Button Touchvalue Hits,")); } void CmndTouchThres(void) diff --git a/tasmota/support_device_groups.ino b/tasmota/support_device_groups.ino index 52141aec2..6eae854df 100644 --- a/tasmota/support_device_groups.ino +++ b/tasmota/support_device_groups.ino @@ -136,7 +136,7 @@ void DeviceGroupsInit(void) // Initialize the device information for each device group. device_groups = (struct device_group *)calloc(device_group_count, sizeof(struct device_group)); if (!device_groups) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DGR: Error allocating %u-element array"), device_group_count); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DGR: Error allocating %u-element array"), device_group_count); return; } @@ -176,7 +176,7 @@ void DeviceGroupsStart() // Subscribe to device groups multicasts. if (!device_groups_udp.beginMulticast(WiFi.localIP(), IPAddress(DEVICE_GROUPS_ADDRESS), DEVICE_GROUPS_PORT)) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DGR: Error subscribing")); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DGR: Error subscribing")); return; } device_groups_up = true; @@ -192,7 +192,7 @@ void DeviceGroupsStart() device_group->initial_status_requests_remaining = 10; device_group->next_ack_check_time = next_check_time; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: (Re)discovering members")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: (Re)discovering members")); } } @@ -325,7 +325,7 @@ void SendReceiveDeviceGroupMessage(struct device_group * device_group, struct de case DGR_ITEM_LIGHT_CHANNELS: break; default: - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DGR: *** Invalid item=%u"), item); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DGR: *** Invalid item=%u"), item); } #endif // DEVICE_GROUPS_DEBUG @@ -446,7 +446,7 @@ write_log: } delay(10); } - if (attempt > 5) AddLog_P2(LOG_LEVEL_ERROR, PSTR("DGR: Error sending message")); + if (attempt > 5) AddLog_P(LOG_LEVEL_ERROR, PSTR("DGR: Error sending message")); } goto cleanup; @@ -483,7 +483,7 @@ bool _SendDeviceGroupMessage(uint8_t device_group_index, DevGroupMessageType mes // Load the message header, sequence and flags. #ifdef DEVICE_GROUPS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Building %s %spacket"), device_group->group_name, (message_type == DGR_MSGTYP_FULL_STATUS ? PSTR("full status ") : PSTR(""))); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Building %s %spacket"), device_group->group_name, (message_type == DGR_MSGTYP_FULL_STATUS ? PSTR("full status ") : PSTR(""))); #endif // DEVICE_GROUPS_DEBUG uint16_t original_sequence = device_group->outgoing_sequence; uint16_t flags = 0; @@ -654,7 +654,7 @@ bool _SendDeviceGroupMessage(uint8_t device_group_index, DevGroupMessageType mes previous_message_ptr += value; } #ifdef DEVICE_GROUPS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: %u items carried over"), kept_item_count); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: %u items carried over"), kept_item_count); #endif // DEVICE_GROUPS_DEBUG } @@ -772,12 +772,12 @@ void ProcessDeviceGroupMessage(uint8_t * message, int message_length) if (!device_group_member) { device_group_member = (struct device_group_member *)calloc(1, sizeof(struct device_group_member)); if (device_group_member == nullptr) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DGR: Error allocating member block")); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DGR: Error allocating member block")); return; } device_group_member->ip_address = remote_ip; *flink = device_group_member; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Member %s added"), IPAddressToString(remote_ip)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Member %s added"), IPAddressToString(remote_ip)); break; } else if (device_group_member->ip_address == remote_ip) { @@ -824,7 +824,7 @@ void DeviceGroupsLoop(void) // If it's time to check on things, iterate through the device groups. if ((long)(now - next_check_time) >= 0) { #ifdef DEVICE_GROUPS_DEBUG -AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), next_check_time, now); +AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), next_check_time, now); #endif // DEVICE_GROUPS_DEBUG next_check_time = now + DGR_ANNOUNCEMENT_INTERVAL * 2; @@ -841,7 +841,7 @@ AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), nex if (device_group->initial_status_requests_remaining) { if (--device_group->initial_status_requests_remaining) { #ifdef DEVICE_GROUPS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Sending initial status request for group %s"), device_group->group_name); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Sending initial status request for group %s"), device_group->group_name); #endif // DEVICE_GROUPS_DEBUG SendReceiveDeviceGroupMessage(device_group, nullptr, device_group->message, device_group->message_length, false); device_group->message[device_group->message_header_length + 2] = DGR_FLAG_STATUS_REQUEST; // The reset flag is on only for the first packet - turn it off now @@ -859,7 +859,7 @@ AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), nex // If we're done initializing, iterate through the group memebers, ... else { #ifdef DEVICE_GROUPS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking for ack's")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Checking for ack's")); #endif // DEVICE_GROUPS_DEBUG bool acked = true; struct device_group_member ** flink = &device_group->device_group_members; @@ -874,7 +874,7 @@ AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), nex if ((long)(now - device_group->member_timeout_time) >= 0) { *flink = device_group_member->flink; free(device_group_member); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Member %s removed"), IPAddressToString(device_group_member->ip_address)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: Member %s removed"), IPAddressToString(device_group_member->ip_address)); continue; } @@ -912,7 +912,7 @@ AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: Checking next_check_time=%u, now=%u"), nex // announcement interval plus a random number of milliseconds so that even if all the devices // booted at the same time, they don't all multicast their announcements at the same time. #ifdef DEVICE_GROUPS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DGR: next_announcement_time=%u, now=%u"), device_group->next_announcement_time, now); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DGR: next_announcement_time=%u, now=%u"), device_group->next_announcement_time, now); #endif // DEVICE_GROUPS_DEBUG if ((long)(now - device_group->next_announcement_time) >= 0) { SendReceiveDeviceGroupMessage(device_group, nullptr, device_group->message, BeginDeviceGroupMessage(device_group, DGR_FLAG_ANNOUNCEMENT, true) - device_group->message, false); diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index 8be9f3eff..0a804551c 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -126,7 +126,7 @@ void SettingsErase(uint8_t type) { NvmErase("main"); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " t=%d"), type); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " t=%d"), type); } void SettingsRead(void *data, size_t size) { diff --git a/tasmota/support_float.ino b/tasmota/support_float.ino index 697f673a3..e1b97ca89 100644 --- a/tasmota/support_float.ino +++ b/tasmota/support_float.ino @@ -136,7 +136,7 @@ double TaylorLog(double x) dtostrfd(log1, 8, log1s); char log2s[33]; dtostrfd(totalValue, 8, log2s); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("input %s, log %s, taylor %s"), logxs, log1s, log2s); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("input %s, log %s, taylor %s"), logxs, log1s, log2s); */ return totalValue; } diff --git a/tasmota/support_network.ino b/tasmota/support_network.ino index c67ffa82d..f50705272 100644 --- a/tasmota/support_network.ino +++ b/tasmota/support_network.ino @@ -37,7 +37,7 @@ void StartMdns(void) { // } else { // mdns_delayed_start = Settings.param[P_MDNS_DELAYED_START]; Mdns.begun = (uint8_t)MDNS.begin(TasmotaGlobal.hostname); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS "%s"), (Mdns.begun) ? D_INITIALIZED : D_FAILED); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS "%s"), (Mdns.begun) ? D_INITIALIZED : D_FAILED); // } } } @@ -50,7 +50,7 @@ void MqttDiscoverServer(void) int n = MDNS.queryService("mqtt", "tcp"); // Search for mqtt service - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS D_QUERY_DONE " %d"), n); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS D_QUERY_DONE " %d"), n); if (n > 0) { uint32_t i = 0; // If the hostname isn't set, use the first record found. @@ -64,7 +64,7 @@ void MqttDiscoverServer(void) SettingsUpdateText(SET_MQTT_HOST, MDNS.IP(i).toString().c_str()); Settings.mqtt_port = MDNS.port(i); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS D_MQTT_SERVICE_FOUND " %s, " D_IP_ADDRESS " %s, " D_PORT " %d"), MDNS.hostname(i).c_str(), SettingsText(SET_MQTT_HOST), Settings.mqtt_port); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MDNS D_MQTT_SERVICE_FOUND " %s, " D_IP_ADDRESS " %s, " D_PORT " %d"), MDNS.hostname(i).c_str(), SettingsText(SET_MQTT_HOST), Settings.mqtt_port); } } #endif // MQTT_HOST_DISCOVERY @@ -81,7 +81,7 @@ void MdnsAddServiceHttp(void) { void MdnsUpdate(void) { if (2 == Mdns.begun) { MDNS.update(); - AddLog_P(LOG_LEVEL_DEBUG_MORE, D_LOG_MDNS, "MDNS.update"); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MDNS "MDNS.update")); } } #endif // WEBSERVER_ADVERTISE diff --git a/tasmota/support_rotary.ino b/tasmota/support_rotary.ino index bb5520c15..f38d8fb9f 100644 --- a/tasmota/support_rotary.ino +++ b/tasmota/support_rotary.ino @@ -186,7 +186,7 @@ void RotaryHandler(void) { bool button_pressed = (Button.hold_timer[index]); // Button is pressed: set color temperature if (button_pressed) { Encoder[index].changed = true; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ROT: Button1 %d, Position %d"), button_pressed, rotary_position); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("ROT: Button1 %d, Position %d"), button_pressed, rotary_position); #ifdef USE_LIGHT if (!Settings.flag4.rotary_uses_rules) { // SetOption98 - Use rules instead of light control diff --git a/tasmota/support_rtc.ino b/tasmota/support_rtc.ino index 26a1a8f83..ffa350370 100644 --- a/tasmota/support_rtc.ino +++ b/tasmota/support_rtc.ino @@ -389,8 +389,8 @@ void RtcSecond(void) Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); - // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("RTC: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 @@ -400,8 +400,8 @@ void RtcSecond(void) } } if ((Rtc.utc_time > (2 * 60 * 60)) && (last_sync < Rtc.utc_time - (2 * 60 * 60))) { // Every two hours a warning - // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR("RTC: Not synced")); + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: Not synced")); last_sync = Rtc.utc_time; } } diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index a319927ff..e2604ba14 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -812,7 +812,7 @@ void PerformEverySecond(void) if (!(DeepSleepEnabled() && !Settings.flag3.bootcount_update)) { #endif Settings.bootcount++; // Moved to here to stop flash writes during start-up - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BOOT_COUNT " %d"), Settings.bootcount); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_BOOT_COUNT " %d"), Settings.bootcount); #ifdef USE_DEEPSLEEP } #endif @@ -1035,7 +1035,7 @@ void Every250mSeconds(void) char *ech = strchr(bch, '.'); // Find file type in filename (none, .ino.bin, .ino.bin.gz, .bin, .bin.gz or .gz) if (ech == nullptr) { ech = TasmotaGlobal.mqtt_data + strlen(TasmotaGlobal.mqtt_data); } // Point to '/0' at end of mqtt_data becoming an empty string -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("OTA: File type [%s]"), ech); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("OTA: File type [%s]"), ech); char ota_url_type[strlen(ech) +1]; strncpy(ota_url_type, ech, sizeof(ota_url_type)); // Either empty, .ino.bin, .ino.bin.gz, .bin, .bin.gz or .gz @@ -1046,7 +1046,7 @@ void Every250mSeconds(void) snprintf_P(TasmotaGlobal.mqtt_data, sizeof(TasmotaGlobal.mqtt_data), PSTR("%s-" D_JSON_MINIMAL "%s"), TasmotaGlobal.mqtt_data, ota_url_type); // Minimal filename must be filename-minimal } #endif // FIRMWARE_MINIMAL - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "%s"), TasmotaGlobal.mqtt_data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "%s"), TasmotaGlobal.mqtt_data); WiFiClient OTAclient; ota_result = (HTTP_UPDATE_FAILED != ESPhttpUpdate.update(OTAclient, TasmotaGlobal.mqtt_data)); if (!ota_result) { @@ -1169,7 +1169,7 @@ void Every250mSeconds(void) } TasmotaGlobal.restart_flag--; if (TasmotaGlobal.restart_flag <= 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION "%s"), (TasmotaGlobal.restart_halt) ? "Halted" : D_RESTARTING); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION "%s"), (TasmotaGlobal.restart_halt) ? "Halted" : D_RESTARTING); EspRestart(); } } @@ -1279,7 +1279,7 @@ void ArduinoOTAInit(void) if (Settings.flag.mqtt_enabled) { MqttDisconnect(); // SetOption3 - Enable MQTT } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_UPLOAD_STARTED)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_UPLOAD_STARTED)); arduino_ota_triggered = true; arduino_ota_progress_dot_count = 0; delay(100); // Allow time for message xfer @@ -1310,19 +1310,19 @@ void ArduinoOTAInit(void) default: snprintf_P(error_str, sizeof(error_str), PSTR(D_UPLOAD_ERROR_CODE " %d"), error); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA %s. " D_RESTARTING), error_str); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA %s. " D_RESTARTING), error_str); EspRestart(); }); ArduinoOTA.onEnd([]() { if ((LOG_LEVEL_DEBUG <= TasmotaGlobal.seriallog_level)) { Serial.println(); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_SUCCESSFUL ". " D_RESTARTING)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_SUCCESSFUL ". " D_RESTARTING)); EspRestart(); }); ArduinoOTA.begin(); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_ENABLED " " D_PORT " 8266")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD "Arduino OTA " D_ENABLED " " D_PORT " 8266")); } void ArduinoOtaLoop(void) @@ -1430,9 +1430,9 @@ void SerialInput(void) TasmotaGlobal.serial_in_buffer[TasmotaGlobal.serial_in_byte_counter] = 0; // Serial data completed TasmotaGlobal.seriallog_level = (Settings.seriallog_level < LOG_LEVEL_INFO) ? (uint8_t)LOG_LEVEL_INFO : Settings.seriallog_level; if (serial_buffer_overrun) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "Serial buffer overrun")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "Serial buffer overrun")); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), TasmotaGlobal.serial_in_buffer); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), TasmotaGlobal.serial_in_buffer); ExecuteCommand(TasmotaGlobal.serial_in_buffer, SRC_SERIAL); } TasmotaGlobal.serial_in_byte_counter = 0; @@ -1505,7 +1505,7 @@ void GpioInit(void) SetSerialBegin(); } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Used GPIOs %d"), GPIO_SENSOR_END); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: Used GPIOs %d"), GPIO_SENSOR_END); #ifdef ESP8266 ConvertGpios(); @@ -1606,7 +1606,7 @@ void GpioInit(void) SetPin(13, GPIO_SPI_MOSI); TasmotaGlobal.my_module.io[14] = GPIO_SPI_CLK; SetPin(14, GPIO_SPI_CLK); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK)")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO12(MISO), GPIO13(MOSI) and GPIO14(CLK)")); } #endif // USE_SPI #else // ESP32 @@ -1647,15 +1647,15 @@ void GpioInit(void) TasmotaGlobal.spi_enabled = (PinUsed(GPIO_SPI_CLK) && (PinUsed(GPIO_SPI_MOSI) || PinUsed(GPIO_SPI_MISO))); if (TasmotaGlobal.spi_enabled) { if (PinUsed(GPIO_SPI_MOSI) && PinUsed(GPIO_SPI_MISO)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO), GPIO%02d(MOSI) and GPIO%02d(CLK)"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO), GPIO%02d(MOSI) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK)); } else if (PinUsed(GPIO_SPI_MOSI)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MOSI) and GPIO%02d(CLK)"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MOSI) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MOSI), Pin(GPIO_SPI_CLK)); } else if (PinUsed(GPIO_SPI_MISO)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO) and GPIO%02d(CLK)"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SPI: Using GPIO%02d(MISO) and GPIO%02d(CLK)"), Pin(GPIO_SPI_MISO), Pin(GPIO_SPI_CLK)); } } @@ -1666,7 +1666,7 @@ void GpioInit(void) for (uint32_t i = 0; i < ARRAY_SIZE(TasmotaGlobal.my_module.io); i++) { uint32_t mpin = ValidPin(i, TasmotaGlobal.my_module.io[i]); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("INI: gpio pin %d, mpin %d"), i, mpin); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("INI: gpio pin %d, mpin %d"), i, mpin); if (AGPIO(GPIO_OUTPUT_HI) == mpin) { pinMode(i, OUTPUT); digitalWrite(i, 1); diff --git a/tasmota/support_udp.ino b/tasmota/support_udp.ino index 3520d4b76..6efec5896 100644 --- a/tasmota/support_udp.ino +++ b/tasmota/support_udp.ino @@ -125,8 +125,8 @@ void PollUdp(void) int32_t len = PortUdp.read(packet_buffer, UDP_BUFFER_SIZE -1); packet_buffer[len] = 0; #endif - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("UDP: Packet (%d)"), len); - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("\n%s"), packet_buffer); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("UDP: Packet (%d)"), len); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("\n%s"), packet_buffer); // Simple Service Discovery Protocol (SSDP) if (Settings.flag2.emulation) { @@ -145,7 +145,7 @@ void PollUdp(void) udp_remote_port = PortUdp.remotePort(); #endif - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("UDP: M-SEARCH Packet from %s:%d\n%s"), + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("UDP: M-SEARCH Packet from %s:%d\n%s"), // udp_remote_ip.toString().c_str(), udp_remote_port, packet_buffer); uint32_t response_delay = UDP_MSEARCH_SEND_DELAY + ((millis() &0x7) * 100); // 1500 - 2200 msec diff --git a/tasmota/support_wifi.ino b/tasmota/support_wifi.ino index 181ba10ef..1779666cf 100644 --- a/tasmota/support_wifi.ino +++ b/tasmota/support_wifi.ino @@ -102,11 +102,11 @@ void WifiConfig(uint8_t type) TasmotaGlobal.restart_flag = 2; } else if (WIFI_SERIAL == Wifi.config_type) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_WCFG_6_SERIAL " " D_ACTIVE_FOR_3_MINUTES)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_6_SERIAL " " D_ACTIVE_FOR_3_MINUTES)); } #ifdef USE_WEBSERVER else if (WIFI_MANAGER == Wifi.config_type || WIFI_MANAGER_RESET_ONLY == Wifi.config_type) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_WCFG_2_WIFIMANAGER " " D_ACTIVE_FOR_3_MINUTES)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER " " D_ACTIVE_FOR_3_MINUTES)); WifiManagerBegin(WIFI_MANAGER_RESET_ONLY == Wifi.config_type); } #endif // USE_WEBSERVER @@ -125,7 +125,7 @@ void WifiSetMode(WiFiMode_t wifi_mode) uint32_t retry = 2; while (!WiFi.mode(wifi_mode) && retry--) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR("Retry set Mode...")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI "Retry set Mode...")); delay(100); } @@ -204,7 +204,7 @@ void WifiBegin(uint8_t flag, uint8_t channel) } else { WiFi.begin(SettingsText(SET_STASSID1 + Settings.sta_active), SettingsText(SET_STAPWD1 + Settings.sta_active)); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP "%d %s%s " D_IN_MODE " 11%c " D_AS " %s..."), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTING_TO_AP "%d %s%s " D_IN_MODE " 11%c " D_AS " %s..."), Settings.sta_active +1, SettingsText(SET_STASSID1 + Settings.sta_active), stemp, kWifiPhyMode[WiFi.getPhyMode() & 0x3], TasmotaGlobal.hostname); #if LWIP_IPV6 @@ -212,7 +212,7 @@ void WifiBegin(uint8_t flag, uint8_t channel) uint16_t cfgcnt = 0; for (auto addr : addrList) { if ((configured = !addr.isLocal() && addr.isV6()) || cfgcnt==30) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI "Got IPv6 global address %s"), addr.toString().c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI "Got IPv6 global address %s"), addr.toString().c_str()); break; // IPv6 is mandatory but stop after 15 seconds } delay(500); // Loop until real IPv6 address is aquired or too many tries failed @@ -247,7 +247,7 @@ void WifiBeginAfterScan(void) if (WiFi.scanComplete() != WIFI_SCAN_RUNNING) { WiFi.scanNetworks(true); // Start wifi scan async Wifi.scan_state++; - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_WIFI, PSTR("Network (re)scan started...")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "Network (re)scan started...")); return; } } @@ -295,7 +295,7 @@ void WifiBeginAfterScan(void) } } char hex_char[18]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "Network %d, AP%c, SSId %s, Channel %d, BSSId %s, RSSI %d, Encryption %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "Network %d, AP%c, SSId %s, Channel %d, BSSId %s, RSSI %d, Encryption %d"), i, (known) ? (j) ? '2' : '1' : '-', ssid_scan.c_str(), @@ -389,7 +389,7 @@ void WifiCheckIp(void) Wifi.counter = WIFI_CHECK_SEC; Wifi.retry = Wifi.retry_init; if (Wifi.status != WL_CONNECTED) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_CONNECTED)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECTED)); // AddLog_P(LOG_LEVEL_INFO, PSTR("Wifi: Set IP addresses")); Settings.ip_address[1] = (uint32_t)WiFi.gatewayIP(); Settings.ip_address[2] = (uint32_t)WiFi.subnetMask(); @@ -412,12 +412,12 @@ void WifiCheckIp(void) Wifi.status = WiFi.status(); switch (Wifi.status) { case WL_CONNECTED: - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_CONNECT_FAILED_NO_IP_ADDRESS)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_NO_IP_ADDRESS)); Wifi.status = 0; Wifi.retry = Wifi.retry_init; break; case WL_NO_SSID_AVAIL: - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_CONNECT_FAILED_AP_NOT_REACHED)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_AP_NOT_REACHED)); Settings.wifi_channel = 0; // Disable stored AP if (WIFI_WAIT == Settings.sta_config) { Wifi.retry = Wifi.retry_init; @@ -431,7 +431,7 @@ void WifiCheckIp(void) } break; case WL_CONNECT_FAILED: - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_CONNECT_FAILED_WRONG_PASSWORD)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_WRONG_PASSWORD)); Settings.wifi_channel = 0; // Disable stored AP if (Wifi.retry > (Wifi.retry_init / 2)) { Wifi.retry = Wifi.retry_init / 2; @@ -442,7 +442,7 @@ void WifiCheckIp(void) break; default: // WL_IDLE_STATUS and WL_DISCONNECTED if (!Wifi.retry || ((Wifi.retry_init / 2) == Wifi.retry)) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_WIFI, PSTR(D_CONNECT_FAILED_AP_TIMEOUT)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CONNECT_FAILED_AP_TIMEOUT)); Settings.wifi_channel = 0; // Disable stored AP } else { if (!strlen(SettingsText(SET_STASSID1)) && !strlen(SettingsText(SET_STASSID2))) { @@ -450,7 +450,7 @@ void WifiCheckIp(void) wifi_config_tool = WIFI_MANAGER; // Skip empty SSIDs and start Wifi config tool Wifi.retry = 0; } else { - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_WIFI, PSTR(D_ATTEMPTING_CONNECTION)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_ATTEMPTING_CONNECTION)); } } } @@ -498,7 +498,7 @@ void WifiCheck(uint8_t param) SettingsUpdateText(SET_STAPWD1, WiFi.psk().c_str()); } Settings.sta_active = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER D_CMND_SSID "1 %s"), SettingsText(SET_STASSID1)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_WCFG_2_WIFIMANAGER D_CMND_SSID "1 %s"), SettingsText(SET_STASSID1)); } } if (!Wifi.config_counter) { @@ -509,7 +509,7 @@ void WifiCheck(uint8_t param) if (Wifi.scan_state) { WifiBeginAfterScan(); } if (Wifi.counter <= 0) { - AddLog_P(LOG_LEVEL_DEBUG_MORE, S_LOG_WIFI, PSTR(D_CHECKING_CONNECTION)); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI D_CHECKING_CONNECTION)); Wifi.counter = WIFI_CHECK_SEC; WifiCheckIp(); } @@ -595,7 +595,7 @@ void WifiConnect(void) #ifdef WIFI_RF_PRE_INIT if (rf_pre_init_flag) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "Pre-init done")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI "Pre-init done")); } #endif // WIFI_RF_PRE_INIT } @@ -667,7 +667,7 @@ extern "C" { } void stationKeepAliveNow(void) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI "Sending Gratuitous ARP")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_WIFI "Sending Gratuitous ARP")); for (netif* interface = netif_list; interface != nullptr; interface = interface->next) if ( (interface->flags & NETIF_FLAG_LINK_UP) @@ -724,7 +724,7 @@ void WifiPollNtp() { ntp_sync_minute = 60; // Sync so block further requests Rtc.time_synced = true; RtcSecond(); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: Synced")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: Synced")); } else { ntp_sync_minute++; // Try again in next minute } @@ -750,11 +750,11 @@ uint32_t WifiGetNtp(void) { if (ntp_server_id > 2) { ntp_server_id = 0; } } if (!resolved_ip) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: No server found")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: No server found")); return 0; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: Name %s, IP %s"), ntp_server, time_server_ip.toString().c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: Name %s, IP %s"), ntp_server, time_server_ip.toString().c_str()); WiFiUDP udp; @@ -805,7 +805,7 @@ uint32_t WifiGetNtp(void) { if ((packet_buffer[0] & 0b11000000) == 0b11000000) { // Leap-Indicator: unknown (clock unsynchronized) // See: https://github.com/letscontrolit/ESPEasy/issues/2886#issuecomment-586656384 - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: IP %s unsynched"), time_server_ip.toString().c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: IP %s unsynched"), time_server_ip.toString().c_str()); return 0; } @@ -823,7 +823,7 @@ uint32_t WifiGetNtp(void) { delay(10); } // Timeout. - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NTP: No reply")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: No reply")); udp.stop(); return 0; } diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 84eeecc66..c7ce4f93f 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -274,7 +274,7 @@ void setup(void) { Settings.module = Settings.fallback_module; // Reset module to fallback module // Settings.last_module = Settings.fallback_module; } - AddLog_P2(LOG_LEVEL_INFO, PSTR("FRC: " D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count); + AddLog_P(LOG_LEVEL_INFO, PSTR("FRC: " D_LOG_SOME_SETTINGS_RESET " (%d)"), RtcReboot.fast_reboot_count); } } @@ -296,9 +296,9 @@ void setup(void) { SetPowerOnState(); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_PROJECT " %s %s " D_VERSION " %s%s-" ARDUINO_CORE_RELEASE), PROJECT, SettingsText(SET_DEVICENAME), TasmotaGlobal.version, TasmotaGlobal.image_name); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_PROJECT " %s %s " D_VERSION " %s%s-" ARDUINO_CORE_RELEASE), PROJECT, SettingsText(SET_DEVICENAME), TasmotaGlobal.version, TasmotaGlobal.image_name); #ifdef FIRMWARE_MINIMAL - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_WARNING_MINIMAL_VERSION)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_WARNING_MINIMAL_VERSION)); #endif // FIRMWARE_MINIMAL memcpy_P(TasmotaGlobal.log_data, VERSION_MARKER, 1); // Dummy for compiler saving VERSION_MARKER diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index fe7660b62..bc430f626 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -833,7 +833,7 @@ void ShowWebSource(uint32_t source) { if ((source > 0) && (source < SRC_MAX)) { char stemp1[20]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SRC: %s from %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource), Webserver->client().remoteIP().toString().c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SRC: %s from %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource), Webserver->client().remoteIP().toString().c_str()); } } @@ -915,14 +915,14 @@ void StartWebserver(int type, IPAddress ipweb) #if LWIP_IPV6 String ipv6_addr = WifiGetIPv6(); if (ipv6_addr!="") { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s and IPv6 global address %s "), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s and IPv6 global address %s "), NetworkHostname(), (Mdns.begun) ? ".local" : "", ipweb.toString().c_str(), ipv6_addr.c_str()); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s"), NetworkHostname(), (Mdns.begun) ? ".local" : "", ipweb.toString().c_str()); } #else - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP D_WEBSERVER_ACTIVE_ON " %s%s " D_WITH_IP_ADDRESS " %s"), NetworkHostname(), (Mdns.begun) ? ".local" : "", ipweb.toString().c_str()); #endif // LWIP_IPV6 = 1 TasmotaGlobal.rules_flag.http_init = 1; @@ -1263,11 +1263,11 @@ void WebRestart(uint32_t type) // type 0 = restart // type 1 = restart after config change // type 2 = restart after config change with possible ip address change too - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESTART); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_RESTART)); bool reset_only = (HTTP_MANAGER_RESET_ONLY == Web.state); - WSContentStart_P((type) ? S_SAVE_CONFIGURATION : S_RESTART, !reset_only); + WSContentStart_P((type) ? PSTR(D_SAVE_CONFIGURATION) : PSTR(D_RESTART), !reset_only); WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_RESTART_RECONNECT_TIME); WSContentSendStyle(); if (type) { @@ -1293,7 +1293,7 @@ void WebRestart(uint32_t type) void HandleWifiLogin(void) { - WSContentStart_P(S_CONFIGURE_WIFI, false); // false means show page no matter if the client has or has not credentials + WSContentStart_P(PSTR(D_CONFIGURE_WIFI), false); // false means show page no matter if the client has or has not credentials WSContentSendStyle(); WSContentSend_P(HTTP_FORM_LOGIN); @@ -1349,11 +1349,11 @@ void HandleRoot(void) return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_MAIN_MENU); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_MAIN_MENU)); char stemp[33]; - WSContentStart_P(S_MAIN_MENU); + WSContentStart_P(PSTR(D_MAIN_MENU)); #ifdef USE_SCRIPT_WEB_DISPLAY WSContentSend_P(HTTP_SCRIPT_ROOT, Settings.web_refresh, Settings.web_refresh); #else @@ -1748,9 +1748,9 @@ void HandleConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURATION); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURATION)); - WSContentStart_P(S_CONFIGURATION); + WSContentStart_P(PSTR(D_CONFIGURATION)); WSContentSendStyle(); WSContentButton(BUTTON_MODULE); @@ -1864,9 +1864,9 @@ void HandleTemplateConfiguration(void) return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TEMPLATE); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_TEMPLATE)); - WSContentStart_P(S_CONFIGURE_TEMPLATE); + WSContentStart_P(PSTR(D_CONFIGURE_TEMPLATE)); WSContentSend_P(HTTP_SCRIPT_MODULE_TEMPLATE); WSContentSend_P(HTTP_SCRIPT_TEMPLATE); @@ -1973,14 +1973,14 @@ void HandleModuleConfiguration(void) return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MODULE); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_MODULE)); char stemp[30]; // Sensor name uint32_t midx; myio cmodule; ModuleGpios(&cmodule); - WSContentStart_P(S_CONFIGURE_MODULE); + WSContentStart_P(PSTR(D_CONFIGURE_MODULE)); WSContentSend_P(HTTP_SCRIPT_MODULE_TEMPLATE); WSContentSend_P(PSTR("function sl(){os=\"")); @@ -2053,7 +2053,7 @@ void ModuleSaveSettings(void) } } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), ModuleName().c_str(), gpios.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), ModuleName().c_str(), gpios.c_str()); } /*-------------------------------------------------------------------------------------------*/ @@ -2084,7 +2084,7 @@ void HandleWifiConfiguration(void) { if (!HttpCheckPriviledgedAccess(!WifiIsInManagerMode())) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_WIFI); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_WIFI)); if (Webserver->hasArg("save") && HTTP_MANAGER_RESET_ONLY != Web.state) { WifiSaveSettings(); @@ -2092,7 +2092,7 @@ void HandleWifiConfiguration(void) return; } - WSContentStart_P(S_CONFIGURE_WIFI, !WifiIsInManagerMode()); + WSContentStart_P(PSTR(D_CONFIGURE_WIFI), !WifiIsInManagerMode()); WSContentSend_P(HTTP_SCRIPT_WIFI); WSContentSendStyle(); @@ -2105,8 +2105,8 @@ void HandleWifiConfiguration(void) AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_SCAN_DONE)); if (0 == n) { - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_WIFI, S_NO_NETWORKS_FOUND); - WSContentSend_P(S_NO_NETWORKS_FOUND); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_WIFI D_NO_NETWORKS_FOUND)); + WSContentSend_P(PSTR(D_NO_NETWORKS_FOUND)); WSContentSend_P(PSTR(". " D_REFRESH_TO_SCAN_AGAIN ".")); } else { //sort networks @@ -2198,7 +2198,7 @@ void WifiSaveSettings(void) SettingsUpdateText(SET_STAPWD1, (!strlen(tmp)) ? "" : (strlen(tmp) < 5) ? SettingsText(SET_STAPWD1) : tmp); WebGetArg("p2", tmp, sizeof(tmp)); SettingsUpdateText(SET_STAPWD2, (!strlen(tmp)) ? "" : (strlen(tmp) < 5) ? SettingsText(SET_STAPWD2) : tmp); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s, " D_CMND_CORS " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_CMND_HOSTNAME " %s, " D_CMND_SSID "1 %s, " D_CMND_SSID "2 %s, " D_CMND_CORS " %s"), SettingsText(SET_HOSTNAME), SettingsText(SET_STASSID1), SettingsText(SET_STASSID2), SettingsText(SET_CORS)); } @@ -2208,7 +2208,7 @@ void HandleLoggingConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_LOGGING); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_LOGGING)); if (Webserver->hasArg("save")) { LoggingSaveSettings(); @@ -2216,7 +2216,7 @@ void HandleLoggingConfiguration(void) return; } - WSContentStart_P(S_CONFIGURE_LOGGING); + WSContentStart_P(PSTR(D_CONFIGURE_LOGGING)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_LOG1); char stemp1[45]; @@ -2263,7 +2263,7 @@ void LoggingSaveSettings(void) if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) { Settings.tele_period = 10; // Do not allow periods < 10 seconds } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_MQTTLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_LOG D_CMND_SERIALLOG " %d, " D_CMND_WEBLOG " %d, " D_CMND_MQTTLOG " %d, " D_CMND_SYSLOG " %d, " D_CMND_LOGHOST " %s, " D_CMND_LOGPORT " %d, " D_CMND_TELEPERIOD " %d"), Settings.seriallog_level, Settings.weblog_level, Settings.mqttlog_level, Settings.syslog_level, SettingsText(SET_SYSLOG_HOST), Settings.syslog_port, Settings.tele_period); } @@ -2273,7 +2273,7 @@ void HandleOtherConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_OTHER); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_OTHER)); if (Webserver->hasArg("save")) { OtherSaveSettings(); @@ -2281,7 +2281,7 @@ void HandleOtherConfiguration(void) return; } - WSContentStart_P(S_CONFIGURE_OTHER); + WSContentStart_P(PSTR(D_CONFIGURE_OTHER)); WSContentSendStyle(); TemplateJson(); @@ -2418,9 +2418,9 @@ void HandleResetConfiguration(void) { if (!HttpCheckPriviledgedAccess(!WifiIsInManagerMode())) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESET_CONFIGURATION); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_RESET_CONFIGURATION)); - WSContentStart_P(S_RESET_CONFIGURATION, !WifiIsInManagerMode()); + WSContentStart_P(PSTR(D_RESET_CONFIGURATION), !WifiIsInManagerMode()); WSContentSendStyle(); WSContentSend_P(PSTR("
" D_CONFIGURATION_RESET "
")); WSContentSend_P(HTTP_MSG_RSTRT); @@ -2436,9 +2436,9 @@ void HandleRestoreConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESTORE_CONFIGURATION); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_RESTORE_CONFIGURATION)); - WSContentStart_P(S_RESTORE_CONFIGURATION); + WSContentStart_P(PSTR(D_RESTORE_CONFIGURATION)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_RST); WSContentSend_P(HTTP_FORM_RST_UPG, D_RESTORE); @@ -2459,13 +2459,13 @@ void HandleInformation(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_INFORMATION); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_INFORMATION)); char stopic[TOPSZ]; int freeMem = ESP_getFreeHeap(); - WSContentStart_P(S_INFORMATION); + WSContentStart_P(PSTR(D_INFORMATION)); // Save 1k of code space replacing table html with javascript replace codes // }1 = // }2 = @@ -2606,9 +2606,9 @@ void HandleUpgradeFirmware(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_FIRMWARE_UPGRADE); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_FIRMWARE_UPGRADE)); - WSContentStart_P(S_FIRMWARE_UPGRADE); + WSContentStart_P(PSTR(D_FIRMWARE_UPGRADE)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_UPG, SettingsText(SET_OTAURL)); WSContentSend_P(HTTP_FORM_RST_UPG, D_UPGRADE); @@ -2635,7 +2635,7 @@ void HandleUpgradeFirmwareStart(void) ExecuteWebCommand(command, SRC_WEBGUI); } - WSContentStart_P(S_INFORMATION); + WSContentStart_P(PSTR(D_INFORMATION)); WSContentSend_P(HTTP_SCRIPT_RELOAD_TIME, HTTP_OTA_RESTART_RECONNECT_TIME); WSContentSendStyle(); WSContentSend_P(PSTR("
" D_UPGRADE_STARTED " ...
")); @@ -2672,7 +2672,7 @@ void HandleUploadDone(void) CounterInterruptDisable(false); #endif // USE_COUNTER - WSContentStart_P(S_INFORMATION); + WSContentStart_P(PSTR(D_INFORMATION)); if (!Web.upload_error) { uint32_t javascript_settimeout = HTTP_OTA_RESTART_RECONNECT_TIME; #if defined(USE_ZIGBEE) && defined(USE_ZIGBEE_EZSP) @@ -2746,7 +2746,7 @@ void HandleUploadLoop(void) return; } SettingsSave(1); // Free flash for upload - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD D_FILE " %s ..."), upload.filename.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD D_FILE " %s ..."), upload.filename.c_str()); if (UPL_SETTINGS == Web.upload_file_type) { if (!SettingsBufferAlloc()) { Web.upload_error = 2; // Not enough space @@ -2833,7 +2833,7 @@ void HandleUploadLoop(void) // upload.buf[2] = 3; // Force DOUT - ESP8285 } } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "File type %d"), Web.upload_file_type); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPLOAD "File type %d"), Web.upload_file_type); } } if (UPL_SETTINGS == Web.upload_file_type) { @@ -2984,7 +2984,7 @@ void HandleUploadLoop(void) } } if (!Web.upload_error) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD D_SUCCESSFUL " %u bytes"), upload.totalSize); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD D_SUCCESSFUL " %u bytes"), upload.totalSize); } } @@ -3082,9 +3082,9 @@ void HandleConsole(void) return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONSOLE); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONSOLE)); - WSContentStart_P(S_CONSOLE); + WSContentStart_P(PSTR(D_CONSOLE)); WSContentSend_P(HTTP_SCRIPT_CONSOL, Settings.web_refresh); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_CMND); @@ -3099,7 +3099,7 @@ void HandleConsoleRefresh(void) String svalue = Webserver->arg("c1"); if (svalue.length() && (svalue.length() < MQTT_MAX_PACKET_SIZE)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), svalue.c_str()); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_COMMAND "%s"), svalue.c_str()); ExecuteWebCommand((char*)svalue.c_str(), SRC_WEBCONSOLE); } @@ -3142,7 +3142,7 @@ void HandleConsoleRefresh(void) void HandleNotFound(void) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "Not found (%s)"), Webserver->uri().c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "Not found (%s)"), Webserver->uri().c_str()); if (CaptivePortal()) { return; } // If captive portal redirect instead of displaying the error page. diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 857857d5f..2263686f2 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -223,7 +223,7 @@ bool MqttPublishLib(const char* topic, bool retained) void MqttDumpData(char* topic, char* data, uint32_t data_len) { char dump_data[data_len +1]; memcpy(dump_data, data, sizeof(dump_data)); // Make another copy for removing optional control characters - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, RemoveControlCharacter(dump_data)); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, RemoveControlCharacter(dump_data)); } void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len) @@ -251,7 +251,7 @@ void MqttDataHandler(char* mqtt_topic, uint8_t* mqtt_data, unsigned int data_len char data[data_len +1]; memcpy(data, mqtt_data, sizeof(data)); -// AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, data); +// AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_MQTT D_DATA_SIZE " %d, \"%s %s\""), data_len, topic, data); // if (LOG_LEVEL_DEBUG_MORE <= TasmotaGlobal.seriallog_level) { Serial.println(data); } MqttDumpData(topic, data, data_len); // Use a function to save stack space used by dump_data @@ -276,13 +276,13 @@ void MqttRetryCounter(uint8_t value) void MqttSubscribe(const char *topic) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT D_SUBSCRIBE_TO " %s"), topic); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT D_SUBSCRIBE_TO " %s"), topic); MqttSubscribeLib(topic); } void MqttUnsubscribe(const char *topic) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT D_UNSUBSCRIBE_FROM " %s"), topic); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT D_UNSUBSCRIBE_FROM " %s"), topic); MqttUnsubscribeLib(topic); } @@ -385,7 +385,7 @@ void MqttPublishPrefixTopic_P(uint32_t prefix, const char* subtopic, bool retain free(mqtt_save); bool result = MqttClient.publish(romram, TasmotaGlobal.mqtt_data, false); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Updated shadow: %s"), romram); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Updated shadow: %s"), romram); yield(); // #3313 } #endif // USE_MQTT_AWS_IOT @@ -484,7 +484,7 @@ void MqttDisconnected(int state) MqttClient.disconnect(); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND), SettingsText(SET_MQTT_HOST), Settings.mqtt_port, state, Mqtt.retry_counter); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND), SettingsText(SET_MQTT_HOST), Settings.mqtt_port, state, Mqtt.retry_counter); TasmotaGlobal.rules_flag.mqtt_disconnected = 1; } @@ -493,7 +493,7 @@ void MqttConnected(void) char stopic[TOPSZ]; if (Mqtt.allowed) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_MQTT, PSTR(D_CONNECTED)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CONNECTED)); Mqtt.connected = true; Mqtt.retry_counter = 0; Mqtt.connect_count++; @@ -614,7 +614,7 @@ void MqttReconnect(void) #endif #endif - AddLog_P(LOG_LEVEL_INFO, S_LOG_MQTT, PSTR(D_ATTEMPTING_CONNECTION)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_ATTEMPTING_CONNECTION)); char *mqtt_user = nullptr; char *mqtt_pwd = nullptr; @@ -688,10 +688,10 @@ void MqttReconnect(void) if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, TasmotaGlobal.mqtt_data, MQTT_CLEAN_SESSION)) { #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "TLS connected in %d ms, max ThunkStack used %d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "TLS connected in %d ms, max ThunkStack used %d"), millis() - mqtt_connect_time, tlsClient->getMaxThunkStackUse()); if (!tlsClient->getMFLNStatus()) { - AddLog_P(LOG_LEVEL_INFO, S_LOG_MQTT, PSTR("MFLN not supported by TLS server")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "MFLN not supported by TLS server")); } #ifndef USE_MQTT_TLS_CA_CERT // don't bother with fingerprints if using CA validation // **** Start patch Castellucci @@ -699,7 +699,7 @@ void MqttReconnect(void) // create a printable version of the fingerprint received char buf_fingerprint[64]; ToHex_P((unsigned char *)tlsClient->getRecvPubKeyFingerprint(), 20, buf_fingerprint, sizeof(buf_fingerprint), ' '); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Server fingerprint: %s"), buf_fingerprint); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Server fingerprint: %s"), buf_fingerprint); if (learn_fingerprint1 || learn_fingerprint2) { // we potentially need to learn the fingerprint just seen @@ -719,7 +719,7 @@ void MqttReconnect(void) if (learn_fingerprint2) { memcpy(Settings.mqtt_fingerprint[1], recv_fingerprint, 20); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Fingerprint learned: %s"), buf_fingerprint); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Fingerprint learned: %s"), buf_fingerprint); SettingsSaveAll(); // save settings } @@ -729,7 +729,7 @@ void MqttReconnect(void) // create a printable version of the fingerprint received char buf_fingerprint[64]; ToHex_P(recv_fingerprint, 20, buf_fingerprint, sizeof(buf_fingerprint), ' '); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Server fingerprint: %s"), buf_fingerprint); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_MQTT "Server fingerprint: %s"), buf_fingerprint); bool learned = false; @@ -748,7 +748,7 @@ void MqttReconnect(void) } if (learned) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Fingerprint learned: %s"), buf_fingerprint); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "Fingerprint learned: %s"), buf_fingerprint); SettingsSaveAll(); // save settings } @@ -760,7 +760,7 @@ void MqttReconnect(void) } else { #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "TLS connection error: %d"), tlsClient->getLastError()); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "TLS connection error: %d"), tlsClient->getLastError()); } #endif MqttDisconnected(MqttClient.state()); // status codes are documented here http://pubsubclient.knolleary.net/api.html#state @@ -1218,7 +1218,7 @@ void CmndTlsKey(void) { if (bin_len > 0) { if (bin_len != 32) { // no private key was previously stored, abort - AddLog_P2(LOG_LEVEL_INFO, PSTR("TLSKey: Certificate must be 32 bytes: %d."), bin_len); + AddLog_P(LOG_LEVEL_INFO, PSTR("TLSKey: Certificate must be 32 bytes: %d."), bin_len); free(spi_buffer); free(bin_buf); return; @@ -1242,7 +1242,7 @@ void CmndTlsKey(void) { } if (bin_len <= 256) { // Certificate lenght too short - AddLog_P2(LOG_LEVEL_INFO, PSTR("TLSKey: Certificate length too short: %d."), bin_len); + AddLog_P(LOG_LEVEL_INFO, PSTR("TLSKey: Certificate length too short: %d."), bin_len); free(spi_buffer); free(bin_buf); return; @@ -1319,7 +1319,7 @@ void HandleMqttConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MQTT); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_MQTT)); if (Webserver->hasArg("save")) { MqttSaveSettings(); @@ -1329,7 +1329,7 @@ void HandleMqttConfiguration(void) char str[TOPSZ]; - WSContentStart_P(S_CONFIGURE_MQTT); + WSContentStart_P(PSTR(D_CONFIGURE_MQTT)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_MQTT1, SettingsText(SET_MQTT_HOST), @@ -1375,14 +1375,14 @@ void MqttSaveSettings(void) WebGetArg("mc", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_CLIENT, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp); #if defined(USE_MQTT_TLS) && (defined(USE_MQTT_AWS_IOT) || defined(USE_MQTT_AWS_IOT_LIGHT)) - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), SettingsText(SET_MQTT_HOST), Settings.mqtt_port, SettingsText(SET_MQTT_CLIENT), SettingsText(SET_MQTT_TOPIC), SettingsText(SET_MQTT_FULLTOPIC)); #else // USE_MQTT_AWS_IOT WebGetArg("mu", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_USER, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp); WebGetArg("mp", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_PWD, (!strlen(tmp)) ? "" : (!strcmp(tmp, D_ASTERISK_PWD)) ? SettingsText(SET_MQTT_PWD) : tmp); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), SettingsText(SET_MQTT_HOST), Settings.mqtt_port, SettingsText(SET_MQTT_CLIENT), SettingsText(SET_MQTT_USER), SettingsText(SET_MQTT_TOPIC), SettingsText(SET_MQTT_FULLTOPIC)); #endif } diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index 4f41fa229..18c57b371 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -227,7 +227,7 @@ void EnergyUpdateTotal(float value, bool kwh) { // char energy_total_chr[FLOATSZ]; // dtostrfd(value, 4, energy_total_chr); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %s %sWh"), energy_total_chr, (kwh) ? "k" : ""); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %s %sWh"), energy_total_chr, (kwh) ? "k" : ""); uint32_t multiplier = (kwh) ? 100000 : 100; // kWh or Wh to deca milli Wh @@ -244,7 +244,7 @@ void EnergyUpdateTotal(float value, bool kwh) Settings.energy_kWhtotal = RtcSettings.energy_kWhtotal; Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; Settings.energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); } EnergyUpdateToday(); } @@ -338,7 +338,7 @@ void EnergyMarginCheck(void) for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { uint16_t active_power = (uint16_t)(Energy.active_power[phase]); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy.power_history[phase][0], Energy.power_history[phase][1], Energy.power_history[phase][2]); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy.power_history[phase][0], Energy.power_history[phase][1], Energy.power_history[phase][2]); if (Settings.energy_power_delta[phase]) { power_diff[phase] = active_power - Energy.power_history[phase][0]; @@ -509,7 +509,7 @@ void EnergyEverySecond(void) char temperature[33]; dtostrfd(TasmotaGlobal.temperature_celsius, 1, temperature); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: GlobTemp %s"), temperature); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("NRG: GlobTemp %s"), temperature); SetAllPower(POWER_ALL_OFF, SRC_OVERTEMP); } diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index bfc6319b5..323069b9d 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -387,7 +387,7 @@ class LightStateClass { public: LightStateClass() { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::Constructor RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _bri); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::Constructor RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _bri); } void setSubType(uint8_t sub_type) { @@ -434,7 +434,7 @@ class LightStateClass { if (0 == _briCT) { _briCT = maxbri; } } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setColorMode prev_cm (%d) req_cm (%d) new_cm (%d)", prev_cm, cm, _color_mode); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setColorMode prev_cm (%d) req_cm (%d) new_cm (%d)", prev_cm, cm, _color_mode); #endif return prev_cm; } @@ -562,7 +562,7 @@ class LightStateClass { setBriRGB(_color_mode & LCM_RGB ? bri : 0); setBriCT(_color_mode & LCM_CT ? bri : 0); #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setBri RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setBri RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); #endif } @@ -608,7 +608,7 @@ class LightStateClass { addCTMode(); } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setCT RGB raw (%d %d %d) HS (%d %d) briRGB (%d) briCT (%d) CT (%d)", _r, _g, _b, _hue, _sat, _briRGB, _briCT, _ct); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setCT RGB raw (%d %d %d) HS (%d %d) briRGB (%d) briCT (%d) CT (%d)", _r, _g, _b, _hue, _sat, _briRGB, _briCT, _ct); #endif } @@ -648,7 +648,7 @@ class LightStateClass { if (_color_mode & LCM_CT) { _briCT = free_range ? max : (sum > 255 ? 255 : sum); } } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setCW CW (%d %d) CT (%d) briCT (%d)", c, w, _ct, _briCT); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setCW CW (%d %d) CT (%d) briCT (%d)", c, w, _ct, _briCT); #endif } @@ -657,7 +657,7 @@ class LightStateClass { uint16_t hue; uint8_t sat; #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setRGB RGB input (%d %d %d)", r, g, b); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setRGB RGB input (%d %d %d)", r, g, b); #endif uint32_t max = (r > g && r > b) ? r : (g > b) ? g : b; // 0..255 @@ -685,7 +685,7 @@ class LightStateClass { _hue = hue; _sat = sat; #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setRGB RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setRGB RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); #endif return max; } @@ -700,8 +700,8 @@ class LightStateClass { _sat = sat; addRGBMode(); #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setHS HS (%d %d) rgb (%d %d %d)", hue, sat, r, g, b); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setHS RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setHS HS (%d %d) rgb (%d %d %d)", hue, sat, r, g, b); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setHS RGB raw (%d %d %d) HS (%d %d) bri (%d)", _r, _g, _b, _hue, _sat, _briRGB); #endif } @@ -722,10 +722,10 @@ class LightStateClass { setRGB(channels[0], channels[1], channels[2]); setCW(channels[3], channels[4], true); // free range for WC and WW #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels (%d %d %d %d %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels (%d %d %d %d %d)", channels[0], channels[1], channels[2], channels[3], channels[4]); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels CT (%d) briRGB (%d) briCT (%d)", _ct, _briRGB, _briCT); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels Actuals (%d %d %d %d %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels CT (%d) briRGB (%d) briCT (%d)", _ct, _briRGB, _briCT); + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightStateClass::setChannels Actuals (%d %d %d %d %d)", _r, _g, _b, _wc, _ww); #endif } @@ -772,7 +772,7 @@ void LightStateClass::RgbToHsb(uint8_t ir, uint8_t ig, uint8_t ib, uint16_t *r_h if (r_hue) *r_hue = hue; if (r_sat) *r_sat = sat; if (r_bri) *r_bri = bri; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, "RgbToHsb rgb (%d %d %d) hsb (%d %d %d)", r, g, b, hue, sat, bri); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, "RgbToHsb rgb (%d %d %d) hsb (%d %d %d)", r, g, b, hue, sat, bri); } void LightStateClass::HsToRgb(uint16_t hue, uint8_t sat, uint8_t *r_r, uint8_t *r_g, uint8_t *r_b) { @@ -959,9 +959,9 @@ public: void debugLogs() { uint8_t r,g,b,c,w; _state->getActualRGBCW(&r,&g,&b,&c,&w); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::debugLogs rgb (%d %d %d) cw (%d %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::debugLogs rgb (%d %d %d) cw (%d %d)", r, g, b, c, w); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::debugLogs lightCurrent (%d %d %d %d %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::debugLogs lightCurrent (%d %d %d %d %d)", Light.current_color[0], Light.current_color[1], Light.current_color[2], Light.current_color[3], Light.current_color[4]); } @@ -969,10 +969,10 @@ public: void loadSettings() { #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::loadSettings Settings.light_color (%d %d %d %d %d - %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::loadSettings Settings.light_color (%d %d %d %d %d - %d)", Settings.light_color[0], Settings.light_color[1], Settings.light_color[2], Settings.light_color[3], Settings.light_color[4], Settings.light_dimmer); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::loadSettings light_type/sub (%d %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::loadSettings light_type/sub (%d %d)", TasmotaGlobal.light_type, Light.subtype); #endif if (_pwm_multi_channels) { @@ -1147,7 +1147,7 @@ public: } } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::saveSettings Settings.light_color (%d %d %d %d %d - %d)", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightControllerClass::saveSettings Settings.light_color (%d %d %d %d %d - %d)", Settings.light_color[0], Settings.light_color[1], Settings.light_color[2], Settings.light_color[3], Settings.light_color[4], Settings.light_dimmer); #endif @@ -1322,7 +1322,7 @@ void LightCalcPWMRange(void) { Light.pwm_min = pwm_min; Light.pwm_max = pwm_max; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("LightCalcPWMRange %d %d - %d %d"), Settings.dimmer_hw_min, Settings.dimmer_hw_max, Light.pwm_min, Light.pwm_max); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("LightCalcPWMRange %d %d - %d %d"), Settings.dimmer_hw_min, Settings.dimmer_hw_max, Light.pwm_min, Light.pwm_max); } void LightInit(void) @@ -1354,7 +1354,7 @@ void LightInit(void) } LightCalcPWMRange(); #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightInit Light.pwm_multi_channels=%d Light.subtype=%d Light.device=%d TasmotaGlobal.devices_present=%d", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightInit Light.pwm_multi_channels=%d Light.subtype=%d Light.device=%d TasmotaGlobal.devices_present=%d", Light.pwm_multi_channels, Light.subtype, Light.device, TasmotaGlobal.devices_present); #endif @@ -1430,7 +1430,7 @@ void LightUpdateColorMapping(void) Light.color_remap[4] = tmp[1-param]; Light.update = true; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%d colors: %d %d %d %d %d") ,Settings.param[P_RGB_REMAP], Light.color_remap[0],Light.color_remap[1],Light.color_remap[2],Light.color_remap[3],Light.color_remap[4]); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("%d colors: %d %d %d %d %d") ,Settings.param[P_RGB_REMAP], Light.color_remap[0],Light.color_remap[1],Light.color_remap[2],Light.color_remap[3],Light.color_remap[4]); } uint8_t LightGetDimmer(uint8_t dimmer) { @@ -1551,7 +1551,7 @@ void LightSetSignal(uint16_t lo, uint16_t hi, uint16_t value) */ if (Settings.flag.light_signal) { // SetOption18 - Pair light signal with CO2 sensor uint16_t signal = changeUIntScale(value, lo, hi, 0, 255); // 0..255 -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Light signal %d"), signal); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Light signal %d"), signal); light_controller.changeRGB(signal, 255 - signal, 0, true); // keep bri Settings.light_scheme = 0; if (0 == light_state.getBri()) { @@ -1668,7 +1668,7 @@ void ResponseLightState(uint8_t append) void LightPreparePower(power_t channels = 0xFFFFFFFF) { // 1 = only RGB, 2 = only CT, 3 = both RGB and CT #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG, "LightPreparePower power=%d Light.power=%d", TasmotaGlobal.power, Light.power); + AddLog_P(LOG_LEVEL_DEBUG, "LightPreparePower power=%d Light.power=%d", TasmotaGlobal.power, Light.power); #endif // If multi-channels, then we only switch off channels with a value of zero if (Light.pwm_multi_channels) { @@ -1731,7 +1731,7 @@ void LightPreparePower(power_t channels = 0xFFFFFFFF) { // 1 = only RGB, 2 = } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG, "LightPreparePower End power=%d Light.power=%d", TasmotaGlobal.power, Light.power); + AddLog_P(LOG_LEVEL_DEBUG, "LightPreparePower End power=%d Light.power=%d", TasmotaGlobal.power, Light.power); #endif Light.power = TasmotaGlobal.power >> (Light.device - 1); // reset next state, works also with unlinked RGB/CT ResponseLightState(0); @@ -1788,7 +1788,7 @@ void LightCycleColor(int8_t direction) (Light.random > Light.wheel +128) ? 0 : 1; // Increment or Decrement and roll-over Light.random = (Light.random & 0xFE) | my_dir; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: random %d"), Light.random); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: random %d"), Light.random); } // direction = (Light.random < Light.wheel) ? -1 : 1; direction = (Light.random &0x01) ? 1 : -1; @@ -1799,7 +1799,7 @@ void LightCycleColor(int8_t direction) Light.wheel += direction; uint16_t hue = changeUIntScale(Light.wheel, 0, 255, 0, 359); // Scale to hue to keep amount of steps low (max 255 instead of 359) -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: random %d, wheel %d, hue %d"), Light.random, Light.wheel, hue); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: random %d, wheel %d, hue %d"), Light.random, Light.wheel, hue); if (!Light.pwm_multi_channels) { uint8_t sat; @@ -1834,7 +1834,7 @@ void LightSetPower(void) Light.wakeup_active--; } #ifdef DEBUG_LIGHT - AddLog_P2(LOG_LEVEL_DEBUG_MORE, "LightSetPower XdrvMailbox.index=%d Light.old_power=%d Light.power=%d mask=%d shift=%d", + AddLog_P(LOG_LEVEL_DEBUG_MORE, "LightSetPower XdrvMailbox.index=%d Light.old_power=%d Light.power=%d mask=%d shift=%d", XdrvMailbox.index, Light.old_power, Light.power, mask, shift); #endif if (Light.power != Light.old_power) { @@ -1943,7 +1943,7 @@ void LightAnimate(void) // Apply power modifiers to Light.new_color LightApplyPower(Light.new_color, Light.power); - // AddLog_P2(LOG_LEVEL_INFO, PSTR("last_color (%02X%02X%02X%02X%02X) new_color (%02X%02X%02X%02X%02X) power %d"), + // AddLog_P(LOG_LEVEL_INFO, PSTR("last_color (%02X%02X%02X%02X%02X) new_color (%02X%02X%02X%02X%02X) power %d"), // Light.last_color[0], Light.last_color[1], Light.last_color[2], Light.last_color[3], Light.last_color[4], // Light.new_color[0], Light.new_color[1], Light.new_color[2], Light.new_color[3], Light.new_color[4], // Light.power @@ -2055,7 +2055,7 @@ void LightAnimate(void) } if (Light.fade_running) { if (LightApplyFade()) { - // AddLog_P2(LOG_LEVEL_INFO, PSTR("LightApplyFade %d %d %d %d %d"), + // AddLog_P(LOG_LEVEL_INFO, PSTR("LightApplyFade %d %d %d %d %d"), // Light.fade_cur_10[0], Light.fade_cur_10[1], Light.fade_cur_10[2], Light.fade_cur_10[3], Light.fade_cur_10[4]); LightSetOutputs(Light.fade_cur_10); @@ -2134,7 +2134,7 @@ bool LightApplyFade(void) { // did the value chanegd and needs to be applied if (Settings.save_data) { // Also postpone the save_data for the duration of the Fade (in seconds) uint32_t delay_seconds = 1 + (Light.fade_duration + 999) / 1000; // add one more second - // AddLog_P2(LOG_LEVEL_INFO, PSTR("delay_seconds %d, save_data_counter %d"), delay_seconds, TasmotaGlobal.save_data_counter); + // AddLog_P(LOG_LEVEL_INFO, PSTR("delay_seconds %d, save_data_counter %d"), delay_seconds, TasmotaGlobal.save_data_counter); if (TasmotaGlobal.save_data_counter < delay_seconds) { TasmotaGlobal.save_data_counter = delay_seconds; // pospone } @@ -2184,7 +2184,7 @@ void LightApplyPower(uint8_t new_color[LST_MAX], power_t power) { } } // #ifdef DEBUG_LIGHT - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, "Animate>> Light.power=%d Light.new_color=[%d,%d,%d,%d,%d]", + // AddLog_P(LOG_LEVEL_DEBUG_MORE, "Animate>> Light.power=%d Light.new_color=[%d,%d,%d,%d,%d]", // Light.power, Light.new_color[0], Light.new_color[1], Light.new_color[2], // Light.new_color[3], Light.new_color[4]); // #endif @@ -2210,7 +2210,7 @@ void LightSetOutputs(const uint16_t *cur_col_10) { if (TasmotaGlobal.light_type < LT_PWM6) { // only for direct PWM lights, not for Tuya, Armtronix... for (uint32_t i = 0; i < (Light.subtype - Light.pwm_offset); i++) { if (PinUsed(GPIO_PWM1, i)) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "Cur_Col%d 10 bits %d"), i, cur_col_10[i]); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "Cur_Col%d 10 bits %d"), i, cur_col_10[i]); uint16_t cur_col = cur_col_10[i + Light.pwm_offset]; if (!isChannelCT(i)) { // if CT don't use pwm_min and pwm_max cur_col = cur_col > 0 ? changeUIntScale(cur_col, 0, Settings.pwm_range, Light.pwm_min, Light.pwm_max) : 0; // shrink to the range of pwm_min..pwm_max @@ -2223,7 +2223,7 @@ void LightSetOutputs(const uint16_t *cur_col_10) { } // char msg[24]; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); uint8_t cur_col[LST_MAX]; for (uint32_t i = 0; i < LST_MAX; i++) { diff --git a/tasmota/xdrv_05_irremote.ino b/tasmota/xdrv_05_irremote.ino index 65e08c160..cfbac73ac 100644 --- a/tasmota/xdrv_05_irremote.ino +++ b/tasmota/xdrv_05_irremote.ino @@ -185,7 +185,7 @@ void IrReceiveCheck(void) Uint64toHex(results.value, hvalue, 32); // UNKNOWN is always 32 bits hash } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_IRR "Echo %d, RawLen %d, Overflow %d, Bits %d, Value 0x%s, Decode %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_IRR "Echo %d, RawLen %d, Overflow %d, Bits %d, Value 0x%s, Decode %d"), irsend_active, results.rawlen, results.overflow, results.bits, hvalue, results.decode_type); unsigned long now = millis(); @@ -288,7 +288,7 @@ uint32_t IrRemoteCmndIrSendJson(void) char dvalue[64]; char hvalue[20]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IRS: protocol_text %s, protocol %s, bits %d, data %s (0x%s), repeat %d, protocol_code %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("IRS: protocol_text %s, protocol %s, bits %d, data %s (0x%s), repeat %d, protocol_code %d"), protocol_text, protocol, bits, ulltoa(data, dvalue, 10), Uint64toHex(data, hvalue, bits), repeat, protocol_code); irsend_active = true; diff --git a/tasmota/xdrv_05_irremote_full.ino b/tasmota/xdrv_05_irremote_full.ino index 4a00e2204..ccf823db7 100644 --- a/tasmota/xdrv_05_irremote_full.ino +++ b/tasmota/xdrv_05_irremote_full.ino @@ -238,7 +238,7 @@ String sendIRJsonState(const struct decode_results &results) { json += results.bits; if (hasACState(results.decode_type)) { - json += ",\"" D_JSON_IR_DATA "\":\"0x"; + json += ",\"" D_JSON_IR_DATA "\":\""; json += resultToHexidecimal(&results); json += "\""; } else { @@ -394,7 +394,7 @@ uint32_t IrRemoteCmndIrHvacJson(void) { stdAc::state_t state; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IRHVAC: Received %s"), XdrvMailbox.data); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("IRHVAC: Received %s"), XdrvMailbox.data); JsonParser parser(XdrvMailbox.data); JsonParserObject root = parser.getRootObject(); if (!root) { return IE_INVALID_JSON; } @@ -441,7 +441,7 @@ uint32_t IrRemoteCmndIrHvacJson(void) if (val = root[PSTR(D_JSON_IRHVAC_SWINGV)]) { state.swingv = IRac::strToSwingV(val.getStr()); } if (val = root[PSTR(D_JSON_IRHVAC_SWINGH)]) { state.swingh = IRac::strToSwingH(val.getStr()); } state.degrees = root.getFloat(PSTR(D_JSON_IRHVAC_TEMP), state.degrees); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("model %d, mode %d, fanspeed %d, swingv %d, swingh %d"), + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("model %d, mode %d, fanspeed %d, swingv %d, swingh %d"), // state.model, state.mode, state.fanspeed, state.swingv, state.swingh); // if and how we should handle the state for IRremote @@ -525,7 +525,7 @@ uint32_t IrRemoteCmndIrSendJson(void) char dvalue[32]; char hvalue[32]; - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IRS: protocol %d, bits %d, data 0x%s (%s), repeat %d"), + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("IRS: protocol %d, bits %d, data 0x%s (%s), repeat %d"), // protocol, bits, ulltoa(data, dvalue, 10), Uint64toHex(data, hvalue, bits), repeat); irsend_active = true; // deactivate receive @@ -609,7 +609,7 @@ uint32_t IrRemoteSendRawFormatted(char ** pp, uint32_t count, uint32_t repeat) { } irsend_active = true; for (uint32_t r = 0; r <= repeat; r++) { - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("sendRaw count=%d, space=%d, mark=%d, freq=%d"), count, space, mark, freq); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("sendRaw count=%d, space=%d, mark=%d, freq=%d"), count, space, mark, freq); irsend->sendRaw(raw_array, i, freq); if (r < repeat) { // if it's not the last message irsend->space(40000); // since we don't know the inter-message gap, place an arbitrary 40ms gap @@ -635,7 +635,7 @@ uint32_t IrRemoteSendRawFormatted(char ** pp, uint32_t count, uint32_t repeat) { raw_array[i++] = parm[2]; // Trailing mark irsend_active = true; for (uint32_t r = 0; r <= repeat; r++) { - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("sendRaw %d %d %d %d %d %d"), raw_array[0], raw_array[1], raw_array[2], raw_array[3], raw_array[4], raw_array[5]); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("sendRaw %d %d %d %d %d %d"), raw_array[0], raw_array[1], raw_array[2], raw_array[3], raw_array[4], raw_array[5]); irsend->sendRaw(raw_array, i, freq); if (r < repeat) { // if it's not the last message irsend->space(inter_message); // since we don't know the inter-message gap, place an arbitrary 40ms gap @@ -700,13 +700,13 @@ uint32_t IrRemoteSendRawStandard(char ** pp, uint16_t freq, uint32_t count, uint } else { count++; } - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IrRemoteSendRawStandard: count_1 = %d"), count); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("IrRemoteSendRawStandard: count_1 = %d"), count); arr = (uint16_t*) malloc(count * sizeof(uint16_t)); if (nullptr == arr) { return IE_MEMORY; } count = IrRemoteParseRawCompact(*pp, arr, count); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("IrRemoteSendRawStandard: count_2 = %d"), count); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Arr %d %d %d %d %d %d %d %d"), arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("IrRemoteSendRawStandard: count_2 = %d"), count); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("Arr %d %d %d %d %d %d %d %d"), arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]); if (0 == count) { return IE_INVALID_RAWDATA; } irsend_active = true; diff --git a/tasmota/xdrv_07_domoticz.ino b/tasmota/xdrv_07_domoticz.ino index 4c00f6ee5..e43ed1ce4 100644 --- a/tasmota/xdrv_07_domoticz.ino +++ b/tasmota/xdrv_07_domoticz.ino @@ -219,7 +219,7 @@ bool DomoticzMqttData(void) { uint32_t idx = domoticz.getUInt(PSTR("idx"), 0); int16_t nvalue = domoticz.getInt(PSTR("nvalue"), -1); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_DOMOTICZ "idx %d, nvalue %d"), idx, nvalue); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_DOMOTICZ "idx %d, nvalue %d"), idx, nvalue); bool found = false; if ((idx > 0) && (nvalue >= 0) && (nvalue <= 15)) { @@ -315,7 +315,7 @@ bool DomoticzMqttData(void) { } if (!found) { return true; } // No command received - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_DOMOTICZ D_RECEIVED_TOPIC " %s, " D_DATA " %s"), XdrvMailbox.topic, XdrvMailbox.data); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_DOMOTICZ D_RECEIVED_TOPIC " %s, " D_DATA " %s"), XdrvMailbox.topic, XdrvMailbox.data); domoticz_update_flag = false; return false; // Process new data @@ -524,8 +524,6 @@ void CmndDomoticzSend(void) { #define WEB_HANDLE_DOMOTICZ "dm" -const char S_CONFIGURE_DOMOTICZ[] PROGMEM = D_CONFIGURE_DOMOTICZ; - const char HTTP_BTN_MENU_DOMOTICZ[] PROGMEM = "

"; @@ -546,7 +544,7 @@ const char HTTP_FORM_DOMOTICZ_TIMER[] PROGMEM = void HandleDomoticzConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_DOMOTICZ); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_DOMOTICZ)); if (Webserver->hasArg("save")) { DomoticzSaveSettings(); @@ -556,7 +554,7 @@ void HandleDomoticzConfiguration(void) { char stemp[40]; - WSContentStart_P(S_CONFIGURE_DOMOTICZ); + WSContentStart_P(PSTR(D_CONFIGURE_DOMOTICZ)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_DOMOTICZ); for (uint32_t i = 0; i < MAX_DOMOTICZ_IDX; i++) { @@ -610,7 +608,7 @@ void DomoticzSaveSettings(void) { WebGetArg("ut", tmp, sizeof(tmp)); Settings.domoticz_update_timer = (!strlen(tmp)) ? DOMOTICZ_UPDATE_TIMER : atoi(tmp); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_DOMOTICZ D_CMND_IDX " %d,%d,%d,%d, " D_CMND_KEYIDX " %d,%d,%d,%d, " D_CMND_SWITCHIDX " %d,%d,%d,%d, " D_CMND_SENSORIDX " %s, " D_CMND_UPDATETIMER " %d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_DOMOTICZ D_CMND_IDX " %d,%d,%d,%d, " D_CMND_KEYIDX " %d,%d,%d,%d, " D_CMND_SWITCHIDX " %d,%d,%d,%d, " D_CMND_SENSORIDX " %s, " D_CMND_UPDATETIMER " %d"), Settings.domoticz_relay_idx[0], Settings.domoticz_relay_idx[1], Settings.domoticz_relay_idx[2], Settings.domoticz_relay_idx[3], Settings.domoticz_key_idx[0], Settings.domoticz_key_idx[1], Settings.domoticz_key_idx[2], Settings.domoticz_key_idx[3], Settings.domoticz_switch_idx[0], Settings.domoticz_switch_idx[1], Settings.domoticz_switch_idx[2], Settings.domoticz_switch_idx[3], diff --git a/tasmota/xdrv_09_timers.ino b/tasmota/xdrv_09_timers.ino index 6ac31c1c3..6da968011 100644 --- a/tasmota/xdrv_09_timers.ino +++ b/tasmota/xdrv_09_timers.ino @@ -512,8 +512,6 @@ void CmndLatitude(void) #define WEB_HANDLE_TIMER "tm" -const char S_CONFIGURE_TIMER[] PROGMEM = D_CONFIGURE_TIMER; - const char HTTP_BTN_MENU_TIMER[] PROGMEM = "

"; @@ -843,7 +841,7 @@ void HandleTimerConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TIMER); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_TIMER)); if (Webserver->hasArg("save")) { TimerSaveSettings(); @@ -851,7 +849,7 @@ void HandleTimerConfiguration(void) return; } - WSContentStart_P(S_CONFIGURE_TIMER); + WSContentStart_P(PSTR(D_CONFIGURE_TIMER)); WSContentSend_P(HTTP_TIMER_SCRIPT1); #ifdef USE_SUNRISE WSContentSend_P(HTTP_TIMER_SCRIPT2); diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index 7cd330a38..2e5c041a7 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -354,7 +354,7 @@ int32_t SetRule(uint32_t idx, const char *content, bool append = false) { len_uncompressed = strlen(Settings.rules[idx]); len_compressed = compressor.unishox_compress(Settings.rules[idx], len_uncompressed, nullptr /* dry-run */, MAX_RULE_SIZE + 8); - AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: Stored uncompressed, would compress from %d to %d (-%d%%)"), len_uncompressed, len_compressed, 100 - changeUIntScale(len_compressed, 0, len_uncompressed, 0, 100)); + AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: Stored uncompressed, would compress from %d to %d (-%d%%)"), len_uncompressed, len_compressed, 100 - changeUIntScale(len_compressed, 0, len_uncompressed, 0, 100)); } #endif // USE_UNISHOX_COMPRESSION @@ -383,9 +383,9 @@ int32_t SetRule(uint32_t idx, const char *content, bool append = false) { Settings.rules[idx][1] = (len_in + 7) / 8; // store original length in first bytes (4 bytes chuks) memcpy(&Settings.rules[idx][2], buf_out, len_compressed); Settings.rules[idx][len_compressed + 2] = 0; // add NULL termination - AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: Compressed from %d to %d (-%d%%)"), len_in, len_compressed, 100 - changeUIntScale(len_compressed, 0, len_in, 0, 100)); - // AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: First bytes: %02X%02X%02X%02X"), Settings.rules[idx][0], Settings.rules[idx][1], Settings.rules[idx][2], Settings.rules[idx][3]); - // AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: GetRuleLenStorage = %d"), GetRuleLenStorage(idx)); + AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: Compressed from %d to %d (-%d%%)"), len_in, len_compressed, 100 - changeUIntScale(len_compressed, 0, len_in, 0, 100)); + // AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: First bytes: %02X%02X%02X%02X"), Settings.rules[idx][0], Settings.rules[idx][1], Settings.rules[idx][2], Settings.rules[idx][3]); + // AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: GetRuleLenStorage = %d"), GetRuleLenStorage(idx)); } else { len_compressed = -1; // failed // clear rule cache, so it will be reloaded from Settings @@ -427,7 +427,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all // rule_param = "0.100" or "%VAR1%" #ifdef DEBUG_RULES -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RM1: expr %s, name %s, param %s"), rule_expr.c_str(), rule_name.c_str(), rule_param.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM1: expr %s, name %s, param %s"), rule_expr.c_str(), rule_name.c_str(), rule_param.c_str()); #endif char rule_svalue[80] = { 0 }; @@ -503,13 +503,13 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all String buf = event; // copy the string into a new buffer that will be modified -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RM2: RulesRuleMatch |%s|"), buf.c_str()); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM2: RulesRuleMatch |%s|"), buf.c_str()); JsonParser parser((char*)buf.c_str()); JsonParserObject obj = parser.getRootObject(); if (!obj) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: No valid JSON (%s)"), buf.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: Event too long (%d)"), event.length()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: No valid JSON (%s)"), buf.c_str()); return false; // No valid JSON data } String subtype; @@ -539,7 +539,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all } #ifdef DEBUG_RULES - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RM3: Name %s, Value |%s|, TrigCnt %d, TrigSt %d, Source %s, Json |%s|"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM3: Name %s, Value |%s|, TrigCnt %d, TrigSt %d, Source %s, Json |%s|"), rule_name.c_str(), rule_svalue, Rules.trigger_count[rule_set], bitRead(Rules.triggers[rule_set], Rules.trigger_count[rule_set]), event.c_str(), (str_value[0] != '\0') ? str_value : "none"); #endif @@ -584,7 +584,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all if (stop_all_rules) { match = false; } -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RM4: Match 1 %d, Triggers %08X, TriggerCount %d"), match, Rules.triggers[rule_set], Rules.trigger_count[rule_set]); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM4: Match 1 %d, Triggers %08X, TriggerCount %d"), match, Rules.triggers[rule_set], Rules.trigger_count[rule_set]); if (bitRead(Settings.rule_once, rule_set)) { if (match) { // Only allow match state changes @@ -598,7 +598,7 @@ bool RulesRuleMatch(uint8_t rule_set, String &event, String &rule, bool stop_all } } -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RM5: Match 2 %d, Triggers %08X, TriggerCount %d"), match, Rules.triggers[rule_set], Rules.trigger_count[rule_set]); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RM5: Match 2 %d, Triggers %08X, TriggerCount %d"), match, Rules.triggers[rule_set], Rules.trigger_count[rule_set]); return match; } @@ -670,7 +670,7 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) delay(0); // Prohibit possible loop software watchdog -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RP1: Event = %s, Rule = %s"), event_saved.c_str(), Settings.rules[rule_set]); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RP1: Event = %s, Rule = %s"), event_saved.c_str(), Settings.rules[rule_set]); String rules = GetRule(rule_set); @@ -704,7 +704,7 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) String event = event_saved; #ifdef DEBUG_RULES -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL-RP2: Event |%s|, Rule |%s|, Command(s) |%s|"), event.c_str(), event_trigger.c_str(), commands.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL-RP2: Event |%s|, Rule |%s|, Command(s) |%s|"), event.c_str(), event_trigger.c_str(), commands.c_str()); #endif if (RulesRuleMatch(rule_set, event, event_trigger, stop_all_rules)) { @@ -755,7 +755,7 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved) char command[commands.length() +1]; strlcpy(command, commands.c_str(), sizeof(command)); - AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: %s performs \"%s\""), event_trigger.c_str(), command); + AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: %s performs \"%s\""), event_trigger.c_str(), command); // Response_P(S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED); // MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE)); @@ -785,7 +785,7 @@ bool RulesProcessEvent(char *json_event) ShowFreeMem(PSTR("RulesProcessEvent")); #endif -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: ProcessEvent |%s|"), json_event); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: ProcessEvent |%s|"), json_event); String event_saved = json_event; // json_event = {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}} @@ -799,7 +799,7 @@ bool RulesProcessEvent(char *json_event) } event_saved.toUpperCase(); -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Event |%s|"), event_saved.c_str()); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: Event |%s|"), event_saved.c_str()); for (uint32_t i = 0; i < MAX_RULE_SETS; i++) { if (GetRuleLen(i) && bitRead(Settings.rule_enabled, i)) { @@ -1035,13 +1035,13 @@ bool RulesMqttData(void) bool serviced = false; String sTopic = XdrvMailbox.topic; String sData = XdrvMailbox.data; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: MQTT Topic %s, Event %s"), XdrvMailbox.topic, XdrvMailbox.data); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: MQTT Topic %s, Event %s"), XdrvMailbox.topic, XdrvMailbox.data); MQTT_Subscription event_item; //Looking for matched topic for (uint32_t index = 0; index < subscriptions.size(); index++) { event_item = subscriptions.get(index); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Match MQTT message Topic %s with subscription topic %s"), sTopic.c_str(), event_item.Topic.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: Match MQTT message Topic %s with subscription topic %s"), sTopic.c_str(), event_item.Topic.c_str()); if (sTopic.startsWith(event_item.Topic)) { //This topic is subscribed by us, so serve it serviced = true; @@ -1118,7 +1118,7 @@ void CmndSubscribe(void) } } } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: Subscribe command with parameters: %s, %s, %s."), event_name.c_str(), topic.c_str(), key.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: Subscribe command with parameters: %s, %s, %s."), event_name.c_str(), topic.c_str(), key.c_str()); event_name.toUpperCase(); if (event_name.length() > 0 && topic.length() > 0) { //Search all subscriptions @@ -1139,7 +1139,7 @@ void CmndSubscribe(void) topic.concat("/#"); } } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RUL: New topic: %s."), topic.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("RUL: New topic: %s."), topic.c_str()); //MQTT Subscribe subscription_item.Event = event_name; subscription_item.Topic = topic.substring(0, topic.length() - 2); //Remove "/#" so easy to match @@ -1723,7 +1723,7 @@ bool evaluateLogicalExpression(const char * expression, int len) memcpy(expbuff, expression, len); expbuff[len] = '\0'; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EvalLogic: |%s|"), expbuff); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("EvalLogic: |%s|"), expbuff); char * pointer = expbuff; LinkedList values; LinkedList logicOperators; @@ -1849,7 +1849,7 @@ void ExecuteCommandBlock(const char * commands, int len) memcpy(cmdbuff, commands, len); cmdbuff[len] = '\0'; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ExecCmd: |%s|"), cmdbuff); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("ExecCmd: |%s|"), cmdbuff); char oneCommand[len + 1]; //To put one command int insertPosition = 0; //When insert into backlog, we should do it by 0, 1, 2 ... char * pos = cmdbuff; @@ -2078,7 +2078,7 @@ void CmndRule(void) } int32_t res = SetRule(index - 1, ('"' == XdrvMailbox.data[0]) ? "" : XdrvMailbox.data, append); if (res < 0) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("RUL: Not enough space")); + AddLog_P(LOG_LEVEL_ERROR, PSTR("RUL: Not enough space")); } } Rules.triggers[index -1] = 0; // Reset once flag @@ -2098,7 +2098,7 @@ void CmndRule(void) } else { last_index = rule_len; // until the end of the rule } - AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: Rule%d %s%s"), + AddLog_P(LOG_LEVEL_INFO, PSTR("RUL: Rule%d %s%s"), index, 0 == start_index ? PSTR("") : PSTR("+"), rule.substring(start_index, last_index).c_str()); start_index = last_index + 1; diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 2ef634dac..2f961378e 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -820,7 +820,7 @@ char *script; } } // variables usage info - AddLog_P2(LOG_LEVEL_INFO, PSTR("Script: nv=%d, tv=%d, vns=%d, ram=%d"), nvars, svars, index, glob_script_mem.script_mem_size); + AddLog_P(LOG_LEVEL_INFO, PSTR("Script: nv=%d, tv=%d, vns=%d, ram=%d"), nvars, svars, index, glob_script_mem.script_mem_size); // copy string variables char *cp1 = glob_script_mem.glob_snp; @@ -1041,7 +1041,7 @@ void Script_PollUdp(void) { int32_t len = Script_PortUdp.read(packet_buffer, SCRIPT_UDP_BUFFER_SIZE - 1); packet_buffer[len] = 0; script_udp_remote_ip = Script_PortUdp.remoteIP(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("UDP: Packet %s - %d - %s"), packet_buffer, len, script_udp_remote_ip.toString().c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("UDP: Packet %s - %d - %s"), packet_buffer, len, script_udp_remote_ip.toString().c_str()); char *lp=packet_buffer; if (!strncmp(lp,"=>", 2)) { lp += 2; @@ -1060,10 +1060,10 @@ void Script_PollUdp(void) { uint32_t index; uint32_t res = match_vars(vnam, &fp, &sp, &index); if (res == NUM_RES) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("num var found - %s - %d - %d"), vnam, res, index); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("num var found - %s - %d - %d"), vnam, res, index); *fp=CharToFloat(cp + 1); } else if (res == STR_RES) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("string var found - %s - %d - %d"), vnam, res, index); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("string var found - %s - %d - %d"), vnam, res, index); strlcpy(sp, cp + 1, SCRIPT_MAXSSIZE); } else { // error var not found @@ -1097,10 +1097,10 @@ void script_udp_sendvar(char *vname,float *fp,char *sp) { char flstr[16]; dtostrfd(*fp, 8, flstr); strcat(sbuf, flstr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("num var updated - %s"), sbuf); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("num var updated - %s"), sbuf); } else { strcat(sbuf, sp); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("string var updated - %s"), sbuf); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("string var updated - %s"), sbuf); } Script_PortUdp.beginPacket(IPAddress(239, 255, 255, 250), SCRIPT_UDP_PORT); // Udp.print(String("RET UC: ") + String(recv_Packet)); @@ -1984,7 +1984,7 @@ chknext: if (!glob_script_mem.file_flags[cnt].is_open) { if (mode==0) { #ifdef DEBUG_FS - AddLog_P2(LOG_LEVEL_INFO, PSTR("open file for read %d"), cnt); + AddLog_P(LOG_LEVEL_INFO, PSTR("open file for read %d"), cnt); #endif glob_script_mem.files[cnt] = fsp->open(str, FILE_READ); if (glob_script_mem.files[cnt].isDirectory()) { @@ -1998,12 +1998,12 @@ chknext: if (mode==1) { glob_script_mem.files[cnt] = fsp->open(str,FILE_WRITE); #ifdef DEBUG_FS - AddLog_P2(LOG_LEVEL_INFO, PSTR("open file for write %d"), cnt); + AddLog_P(LOG_LEVEL_INFO, PSTR("open file for write %d"), cnt); #endif } else { glob_script_mem.files[cnt] = fsp->open(str,FILE_APPEND); #ifdef DEBUG_FS - AddLog_P2(LOG_LEVEL_INFO, PSTR("open file for append %d"), cnt); + AddLog_P(LOG_LEVEL_INFO, PSTR("open file for append %d"), cnt); #endif } } @@ -2026,7 +2026,7 @@ chknext: uint8_t ind = fvar; if (ind>=SFS_MAX) ind = SFS_MAX - 1; #ifdef DEBUG_FS - AddLog_P2(LOG_LEVEL_INFO, PSTR("closing file %d"), ind); + AddLog_P(LOG_LEVEL_INFO, PSTR("closing file %d"), ind); #endif glob_script_mem.files[ind].close(); glob_script_mem.file_flags[ind].is_open = 0; @@ -2162,7 +2162,7 @@ chknext: } else { fvar = 0; } - //AddLog_P2(LOG_LEVEL_INFO, PSTR("picture save: %d"), len); + //AddLog_P(LOG_LEVEL_INFO, PSTR("picture save: %d"), len); } else { fvar = 0; } @@ -4191,7 +4191,7 @@ int16_t Run_script_sub(const char *type, int8_t tlen, JsonParserObject *jo) { } else { if (!sflag) { tasm_cmd_activ = 1; - AddLog_P2(glob_script_mem.script_loglevel&0x7f, PSTR("Script: performs \"%s\""), tmp); + AddLog_P(glob_script_mem.script_loglevel&0x7f, PSTR("Script: performs \"%s\""), tmp); } else if (sflag==2) { // allow recursive call } else { @@ -4567,8 +4567,6 @@ void Scripter_save_pvars(void) { #define WEB_HANDLE_SCRIPT "s10" -const char S_CONFIGURE_SCRIPT[] PROGMEM = D_CONFIGURE_SCRIPT; - const char HTTP_BTN_MENU_RULES[] PROGMEM = "

"; @@ -4722,7 +4720,7 @@ void script_upload_start(void) { if (upload.status == UPLOAD_FILE_START) { //AddLog_P(LOG_LEVEL_INFO, PSTR("HTP: upload start")); script_ex_ptr = (uint8_t*)glob_script_mem.script_ram; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("HTP: upload file %s, %d"),upload.filename.c_str(),upload.totalSize); + //AddLog_P(LOG_LEVEL_INFO, PSTR("HTP: upload file %s, %d"),upload.filename.c_str(),upload.totalSize); if (strcmp(upload.filename.c_str(), "execute_script")) { Web.upload_error = 1; @@ -4754,7 +4752,7 @@ void script_upload_start(void) { script_ex_ptr += csiz; uplsize += csiz; } - //AddLog_P2(LOG_LEVEL_INFO, PSTR("HTP: write %d - %d"),csiz,uplsize); + //AddLog_P(LOG_LEVEL_INFO, PSTR("HTP: write %d - %d"),csiz,uplsize); } //if (upload_file) upload_file.write(upload.buf,upload.currentSize); @@ -4842,7 +4840,7 @@ void ListDir(char *path, uint8_t depth) { if (lcp) { ep = lcp + 1; } - //AddLog_P2(LOG_LEVEL_INFO, PSTR("entry: %s"),ep); + //AddLog_P(LOG_LEVEL_INFO, PSTR("entry: %s"),ep); time_t tm = entry.getLastWrite(); char tstr[24]; strftime(tstr, 22, "%d-%m-%Y - %H:%M:%S ", localtime(&tm)); @@ -4920,7 +4918,7 @@ void Script_FileUploadConfiguration(void) { } void ScriptFileUploadSuccess(void) { - WSContentStart_P(S_INFORMATION); + WSContentStart_P(PSTR(D_INFORMATION)); WSContentSendStyle(); WSContentSend_P(PSTR("
" D_UPLOAD " " D_SUCCESSFUL "
"), WebColor(COL_TEXT_SUCCESS)); @@ -5038,7 +5036,7 @@ void HandleScriptConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_SCRIPT); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_SCRIPT)); #ifdef USE_SCRIPT_FATFS if (Webserver->hasArg("d1")) { @@ -5052,7 +5050,7 @@ void HandleScriptConfiguration(void) { } #endif - WSContentStart_P(S_CONFIGURE_SCRIPT); + WSContentStart_P(PSTR(D_CONFIGURE_SCRIPT)); WSContentSendStyle(); WSContentSend_P(HTTP_FORM_SCRIPT); @@ -5159,7 +5157,7 @@ void ScriptSaveSettings(void) { strlcpy(glob_script_mem.script_ram, str.c_str(), glob_script_mem.script_size); if (glob_script_mem.script_ram[0]!='>' && glob_script_mem.script_ram[1]!='D') { - AddLog_P2(LOG_LEVEL_INFO, PSTR("script error: must start with >D")); + AddLog_P(LOG_LEVEL_INFO, PSTR("script error: must start with >D")); bitWrite(Settings.rule_enabled, 0, 0); } @@ -5184,13 +5182,13 @@ void SaveScriptEnd(void) { } #ifdef USE_SCRIPT_COMPRESSION - //AddLog_P2(LOG_LEVEL_INFO,PSTR("in string: %s len = %d"),glob_script_mem.script_ram,strlen(glob_script_mem.script_ram)); + //AddLog_P(LOG_LEVEL_INFO,PSTR("in string: %s len = %d"),glob_script_mem.script_ram,strlen(glob_script_mem.script_ram)); uint32_t len_compressed = SCRIPT_COMPRESS(glob_script_mem.script_ram, strlen(glob_script_mem.script_ram), Settings.rules[0], MAX_SCRIPT_SIZE-1); if (len_compressed > 0) { Settings.rules[0][len_compressed] = 0; - AddLog_P2(LOG_LEVEL_INFO,PSTR("script compressed to %d bytes = %d %%"),len_compressed,len_compressed * 100 / strlen(glob_script_mem.script_ram)); + AddLog_P(LOG_LEVEL_INFO,PSTR("script compressed to %d bytes = %d %%"),len_compressed,len_compressed * 100 / strlen(glob_script_mem.script_ram)); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR("script compress error: %d"), len_compressed); + AddLog_P(LOG_LEVEL_INFO, PSTR("script compress error: %d"), len_compressed); } #endif // USE_SCRIPT_COMPRESSION @@ -5200,7 +5198,7 @@ void SaveScriptEnd(void) { int16_t res = Init_Scripter(); if (res) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("script init error: %d"), res); + AddLog_P(LOG_LEVEL_INFO, PSTR("script init error: %d"), res); return; } @@ -5526,7 +5524,7 @@ void Script_Check_Hue(String *response) { } *response += String(EncodeLightId(hue_devs + TasmotaGlobal.devices_present + 1))+"\":"; Script_HueStatus(response, hue_devs); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("Hue: %s - %d "),response->c_str(), hue_devs); + //AddLog_P(LOG_LEVEL_INFO, PSTR("Hue: %s - %d "),response->c_str(), hue_devs); } hue_devs++; @@ -5541,7 +5539,7 @@ void Script_Check_Hue(String *response) { } #if 0 if (response) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Hue: %d"), hue_devs); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Hue: %d"), hue_devs); toLog(">>>>"); toLog(response->c_str()); toLog(response->c_str()+LOGSZ); @@ -5686,7 +5684,7 @@ void Script_Handle_Hue(String *path) { } else { response = FPSTR(sHUE_ERROR_JSON); } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); WSSend(code, CT_JSON, response); if (resp) { Run_Scripter(">E", 2, 0); @@ -5726,7 +5724,7 @@ bool Script_SubCmd(void) { } //toLog(cmdbuff); uint32_t res = Run_Scripter(cmdbuff, tlen + 1, 0); - //AddLog_P2(LOG_LEVEL_INFO,">>%d",res); + //AddLog_P(LOG_LEVEL_INFO,">>%d",res); if (res) return false; else { if (pl>=0) { @@ -5874,13 +5872,13 @@ bool ScriptMqttData(void) } String sTopic = XdrvMailbox.topic; String sData = XdrvMailbox.data; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Script: MQTT Topic %s, Event %s"), XdrvMailbox.topic, XdrvMailbox.data); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Script: MQTT Topic %s, Event %s"), XdrvMailbox.topic, XdrvMailbox.data); MQTT_Subscription event_item; //Looking for matched topic for (uint32_t index = 0; index < subscriptions.size(); index++) { event_item = subscriptions.get(index); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Script: Match MQTT message Topic %s with subscription topic %s"), sTopic.c_str(), event_item.Topic.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Script: Match MQTT message Topic %s with subscription topic %s"), sTopic.c_str(), event_item.Topic.c_str()); if (sTopic.startsWith(event_item.Topic)) { //This topic is subscribed by us, so serve it serviced = true; @@ -5963,7 +5961,7 @@ String ScriptSubscribe(const char *data, int data_len) } } } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Script: Subscribe command with parameters: %s, %s, %s."), event_name.c_str(), topic.c_str(), key.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Script: Subscribe command with parameters: %s, %s, %s."), event_name.c_str(), topic.c_str(), key.c_str()); //event_name.toUpperCase(); if (event_name.length() > 0 && topic.length() > 0) { //Search all subscriptions @@ -5984,7 +5982,7 @@ String ScriptSubscribe(const char *data, int data_len) topic.concat("/#"); } } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Script: New topic: %s."), topic.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Script: New topic: %s."), topic.c_str()); //MQTT Subscribe subscription_item.Event = event_name; subscription_item.Topic = topic.substring(0, topic.length() - 2); //Remove "/#" so easy to match @@ -7322,7 +7320,7 @@ bool Xdrv10(uint8_t function) if (len_decompressed>0) glob_script_mem.script_ram[len_decompressed] = 0; // indicates scripter use compression bitWrite(Settings.rule_once, 6, 1); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("decompressed script len %d"),len_decompressed); + //AddLog_P(LOG_LEVEL_INFO, PSTR("decompressed script len %d"),len_decompressed); #else // USE_SCRIPT_COMPRESSION // indicates scripter does not use compression bitWrite(Settings.rule_once, 6, 0); diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index e2aa91544..2aa9afa9a 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -255,7 +255,7 @@ void KNX_ADD_GA( uint8_t GAop, uint8_t GA_FNUM, uint8_t GA_AREA, uint8_t GA_FDEF Settings.knx_GA_registered++; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ADD " GA #%d: %s " D_TO " %d/%d/%d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ADD " GA #%d: %s " D_TO " %d/%d/%d"), Settings.knx_GA_registered, device_param_ga[GAop-1], GA_FNUM, GA_AREA, GA_FDEF ); @@ -304,7 +304,7 @@ void KNX_DEL_GA( uint8_t GAnum ) Settings.knx_GA_registered--; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " GA #%d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " GA #%d"), GAnum ); } @@ -336,7 +336,7 @@ void KNX_ADD_CB( uint8_t CBop, uint8_t CB_FNUM, uint8_t CB_AREA, uint8_t CB_FDEF Settings.knx_CB_registered++; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ADD " CB #%d: %d/%d/%d " D_TO " %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ADD " CB #%d: %d/%d/%d " D_TO " %s"), Settings.knx_CB_registered, CB_FNUM, CB_AREA, CB_FDEF, device_param_cb[CBop-1] ); @@ -392,7 +392,7 @@ void KNX_DEL_CB( uint8_t CBnum ) device_param[oldparam-1].CB_id = KNX_Empty; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " CB #%d"), CBnum ); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " CB #%d"), CBnum ); } @@ -449,7 +449,7 @@ bool KNX_CONFIG_NOT_MATCH(void) void KNXStart(void) { knx.start(nullptr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_START)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_START)); } @@ -530,7 +530,7 @@ void KNX_INIT(void) if (KNX_CONFIG_NOT_MATCH()) { Settings.knx_GA_registered = 0; Settings.knx_CB_registered = 0; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " " D_KNX_PARAMETERS)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_DELETE " " D_KNX_PARAMETERS)); } // Register Group Addresses to listen to @@ -572,7 +572,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) float tempvar = knx.data_to_2byte_float(msg.data); dtostrfd(tempvar,2,tempchar); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %s " D_TO " %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %s " D_TO " %s"), msg.received_on.ga.area, msg.received_on.ga.line, msg.received_on.ga.member, (msg.ct == KNX_CT_WRITE) ? D_KNX_COMMAND_WRITE : (msg.ct == KNX_CT_READ) ? D_KNX_COMMAND_READ : D_KNX_COMMAND_OTHER, tempchar, @@ -686,7 +686,7 @@ void KnxUpdatePowerState(uint8_t device, power_t state) knx.write_1bit(KNX_addr, device_param[device -1].last_state); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), device_param_ga[device -1], device_param[device -1].last_state, KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); @@ -720,7 +720,7 @@ void KnxSendButtonPower(void) knx.write_1bit(KNX_addr, !(state == 0)); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), device_param_ga[device + 7], !(state == 0), KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); @@ -751,7 +751,7 @@ void KnxSensor(uint8_t sensor_type, float value) knx.write_2byte_float(KNX_addr, value); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), device_param_ga[sensor_type -1], KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); @@ -766,8 +766,6 @@ void KnxSensor(uint8_t sensor_type, float value) #ifdef USE_WEBSERVER #ifdef USE_KNX_WEB_MENU -const char S_CONFIGURE_KNX[] PROGMEM = D_CONFIGURE_KNX; - const char HTTP_BTN_MENU_KNX[] PROGMEM = "

"; @@ -826,7 +824,7 @@ void HandleKNXConfiguration(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_KNX); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_KNX)); char tmp[100]; String stmp; @@ -889,7 +887,7 @@ void HandleKNXConfiguration(void) } - WSContentStart_P(S_CONFIGURE_KNX); + WSContentStart_P(PSTR(D_CONFIGURE_KNX)); WSContentSend_P( PSTR("function GAwarning()" "{" @@ -978,7 +976,7 @@ void KNX_Save_Settings(void) Settings.flag.knx_enabled = Webserver->hasArg("b1"); Settings.flag.knx_enable_enhancement = Webserver->hasArg("b2"); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ENABLED ": %d, " D_KNX_ENHANCEMENT ": %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_ENABLED ": %d, " D_KNX_ENHANCEMENT ": %d"), Settings.flag.knx_enabled, Settings.flag.knx_enable_enhancement ); stmp = Webserver->arg("area"); @@ -989,26 +987,26 @@ void KNX_Save_Settings(void) KNX_addr.pa.member = stmp.toInt(); Settings.knx_physsical_addr = KNX_addr.value; knx.physical_address_set( KNX_addr ); // Set Physical KNX Address of the device - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_KNX_PHYSICAL_ADDRESS ": %d.%d.%d "), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX D_KNX_PHYSICAL_ADDRESS ": %d.%d.%d "), KNX_addr.pa.area, KNX_addr.pa.line, KNX_addr.pa.member ); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "GA: %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "GA: %d"), Settings.knx_GA_registered ); for (uint32_t i = 0; i < Settings.knx_GA_registered ; ++i) { KNX_addr.value = Settings.knx_GA_addr[i]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "GA #%d: %s " D_TO " %d/%d/%d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "GA #%d: %s " D_TO " %d/%d/%d"), i+1, device_param_ga[Settings.knx_GA_param[i]-1], KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member ); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "CB: %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "CB: %d"), Settings.knx_CB_registered ); for (uint32_t i = 0; i < Settings.knx_CB_registered ; ++i) { KNX_addr.value = Settings.knx_CB_addr[i]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "CB #%d: %d/%d/%d " D_TO " %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_KNX "CB #%d: %d/%d/%d " D_TO " %s"), i+1, KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member, device_param_cb[Settings.knx_CB_param[i]-1] ); @@ -1037,7 +1035,7 @@ void CmndKnxTxCmnd(void) knx.write_1bit(KNX_addr, !(XdrvMailbox.payload == 0)); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), device_param_ga[XdrvMailbox.index + KNX_SLOT1 -2], !(XdrvMailbox.payload == 0), KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); @@ -1066,7 +1064,7 @@ void CmndKnxTxVal(void) knx.write_2byte_float(KNX_addr, tempvar); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"), device_param_ga[XdrvMailbox.index + KNX_SLOT1 -2], XdrvMailbox.data, KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); @@ -1093,7 +1091,7 @@ void CmndKnxTxScene(void) knx.write_1byte_uint(KNX_addr, tempvar); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_KNX "%s = %s " D_SENT_TO " %d.%d.%d"), device_param_ga[KNX_SCENE-1], XdrvMailbox.data, KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); ResponseCmndIdxChar (XdrvMailbox.data); diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 3517bd615..b18d379db 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -358,7 +358,7 @@ void TryResponseAppend_P(const char *format, ...) int slen = sizeof(TasmotaGlobal.mqtt_data) - 1 - mlen; if (dlen >= slen) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s (%u/%u):"), kHAssError1, dlen, slen); + AddLog_P(LOG_LEVEL_ERROR, PSTR("%s (%u/%u):"), kHAssError1, dlen, slen); va_start(args, format); vsnprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), format, args); AddLog(LOG_LEVEL_ERROR); @@ -455,7 +455,7 @@ void HAssAnnounceRelayLight(void) // suppress shutter relays } else if ((i < Light.device) && !RelayX) { err_flag = true; - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s"), kHAssError2); + AddLog_P(LOG_LEVEL_ERROR, PSTR("%s"), kHAssError2); } else { if (Settings.flag.hass_discovery && (RelayX || (Light.device > 0) && (max_lights > 0)) && !err_flag ) { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59) @@ -884,7 +884,7 @@ void HAssAnnounceSensors(void) JsonParserObject root = parser.getRootObject(); if (!root) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR1)"), kHAssError3, sensordata); + AddLog_P(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR1)"), kHAssError3, sensordata); continue; } for (auto sensor_key : root) @@ -895,7 +895,7 @@ void HAssAnnounceSensors(void) if (!sensors) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR2)"), kHAssError3, sensorname); + AddLog_P(LOG_LEVEL_ERROR, PSTR("%s '%s' (ERR2)"), kHAssError3, sensorname); continue; } @@ -1014,7 +1014,7 @@ void HAssAnnounceDeviceInfoAndStatusSensor(void) if (!Settings.flag.hass_discovery) { TasmotaGlobal.masterlog_level = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_LOG "Home Assistant MQTT Discovery disabled.")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_LOG "Home Assistant MQTT Discovery disabled.")); } } diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 8c5bf5870..515a6b90b 100644 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -1148,7 +1148,7 @@ void DisplayJsonValue(const char* topic, const char* device, const char* mkey, c } snprintf_P(buffer, sizeof(buffer), PSTR("%s %s"), source, svalue); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, buffer); DisplayLogBufferAdd(buffer); } @@ -1285,7 +1285,7 @@ void DisplayInitDriver(void) } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Display model %d"), Settings.display_model); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Display model %d"), Settings.display_model); if (Settings.display_model) { TasmotaGlobal.devices_present++; @@ -1308,7 +1308,7 @@ void DisplaySetPower(void) { disp_power = bitRead(XdrvMailbox.index, disp_device -1); -//AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DSP: Power %d"), disp_power); +//AddLog_P(LOG_LEVEL_DEBUG, PSTR("DSP: Power %d"), disp_power); if (Settings.display_model) { if (!renderer) { @@ -2115,7 +2115,7 @@ uint8_t vbutt=0; rotconvert(&pLoc.x, &pLoc.y); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("touch %d - %d"), pLoc.x, pLoc.y); + //AddLog_P(LOG_LEVEL_INFO, PSTR("touch %d - %d"), pLoc.x, pLoc.y); // now must compare with defined buttons for (uint8_t count=0; countvpower.disable) { diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index bec39bf22..77b97be17 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -150,7 +150,7 @@ void CmndTuyaSend(void) { TuyaRequestState(8); } else if (XdrvMailbox.index == 9) { // TuyaSend Topic Toggle if (Settings.tuyamcu_topic) { Settings.tuyamcu_topic = 0; } else { Settings.tuyamcu_topic = 1; } - AddLog_P2(LOG_LEVEL_INFO, PSTR("TYA: TuyaMCU Stat Topic %s"), (Settings.tuyamcu_topic ? PSTR("enabled") : PSTR("disabled"))); + AddLog_P(LOG_LEVEL_INFO, PSTR("TYA: TuyaMCU Stat Topic %s"), (Settings.tuyamcu_topic ? PSTR("enabled") : PSTR("disabled"))); } else { if (XdrvMailbox.data_len > 0) { @@ -197,7 +197,7 @@ void CmndTuyaMcu(void) { // TuyaAddMcuFunc(parm[0], parm[1]); // TasmotaGlobal.restart_flag = 2; // } else { - // AddLog_P2(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); + // AddLog_P(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); // } bool DualDim; if (TUYA_MCU_FUNC_DIMMER2 == parm[0] && parm[1] != 0) { @@ -214,7 +214,7 @@ void CmndTuyaMcu(void) { TuyaAddMcuFunc(parm[0], parm[1]); TasmotaGlobal.restart_flag = 2; } else { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); + AddLog_P(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); } } @@ -510,7 +510,7 @@ void LightSerialDuty(uint16_t duty, char *hex_char, uint8_t TuyaIdx) } else { duty = changeUIntScale(duty, 0, 100, 0, Settings.dimmer_hw_max); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Send dim skipped value %d for dpid %d"), duty, dpid); // due to 0 or already set + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Send dim skipped value %d for dpid %d"), duty, dpid); // due to 0 or already set } else { AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Cannot set dimmer. Dimmer Id unknown")); // } @@ -522,7 +522,7 @@ void LightSerialDuty(uint16_t duty, char *hex_char, uint8_t TuyaIdx) TuyaSendEnum(TuyaGetDpId(TUYA_MCU_FUNC_MODESET), 1); } TuyaSendString(dpid, hex_char); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: TX RGB hex %s to dpId %d"), hex_char, dpid); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: TX RGB hex %s to dpId %d"), hex_char, dpid); } } @@ -563,22 +563,22 @@ void TuyaProcessStatePacket(void) { dpDataLen = Tuya.buffer[dpidStart + 2] << 8 | Tuya.buffer[dpidStart + 3]; fnId = TuyaGetFuncId(Tuya.buffer[dpidStart]); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: fnId=%d is set for dpId=%d"), fnId, Tuya.buffer[dpidStart]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: fnId=%d is set for dpId=%d"), fnId, Tuya.buffer[dpidStart]); // if (TuyaFuncIdValid(fnId)) { if (Tuya.buffer[dpidStart + 1] == 1) { // Data Type 1 if (fnId >= TUYA_MCU_FUNC_REL1 && fnId <= TUYA_MCU_FUNC_REL8) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX Relay-%d --> MCU State: %s Current State:%s"), fnId - TUYA_MCU_FUNC_REL1 + 1, Tuya.buffer[dpidStart + 4]?"On":"Off",bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1)?"On":"Off"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX Relay-%d --> MCU State: %s Current State:%s"), fnId - TUYA_MCU_FUNC_REL1 + 1, Tuya.buffer[dpidStart + 4]?"On":"Off",bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1)?"On":"Off"); if ((TasmotaGlobal.power || Settings.light_dimmer > 0) && (Tuya.buffer[dpidStart + 4] != bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1))) { ExecuteCommandPower(fnId - TUYA_MCU_FUNC_REL1 + 1, Tuya.buffer[dpidStart + 4], SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction } } else if (fnId >= TUYA_MCU_FUNC_REL1_INV && fnId <= TUYA_MCU_FUNC_REL8_INV) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX Relay-%d-Inverted --> MCU State: %s Current State:%s"), fnId - TUYA_MCU_FUNC_REL1_INV + 1, Tuya.buffer[dpidStart + 4]?"Off":"On",bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1_INV) ^ 1?"Off":"On"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX Relay-%d-Inverted --> MCU State: %s Current State:%s"), fnId - TUYA_MCU_FUNC_REL1_INV + 1, Tuya.buffer[dpidStart + 4]?"Off":"On",bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1_INV) ^ 1?"Off":"On"); if (Tuya.buffer[dpidStart + 4] != bitRead(TasmotaGlobal.power, fnId - TUYA_MCU_FUNC_REL1_INV) ^ 1) { ExecuteCommandPower(fnId - TUYA_MCU_FUNC_REL1_INV + 1, Tuya.buffer[dpidStart + 4] ^ 1, SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction } } else if (fnId >= TUYA_MCU_FUNC_SWT1 && fnId <= TUYA_MCU_FUNC_SWT4) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX Switch-%d --> MCU State: %d Current State:%d"),fnId - TUYA_MCU_FUNC_SWT1 + 1,Tuya.buffer[dpidStart + 4], SwitchGetVirtual(fnId - TUYA_MCU_FUNC_SWT1)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX Switch-%d --> MCU State: %d Current State:%d"),fnId - TUYA_MCU_FUNC_SWT1 + 1,Tuya.buffer[dpidStart + 4], SwitchGetVirtual(fnId - TUYA_MCU_FUNC_SWT1)); if (SwitchGetVirtual(fnId - TUYA_MCU_FUNC_SWT1) != Tuya.buffer[dpidStart + 4]) { SwitchSetVirtual(fnId - TUYA_MCU_FUNC_SWT1, Tuya.buffer[dpidStart + 4]); @@ -605,7 +605,7 @@ void TuyaProcessStatePacket(void) { Tuya.Levels[dimIndex] = changeUIntScale(packetValue, 0, Settings.dimmer_hw_max, 0, 100); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX value %d from dpId %d "), packetValue, Tuya.buffer[dpidStart]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX value %d from dpId %d "), packetValue, Tuya.buffer[dpidStart]); if ((fnId == TUYA_MCU_FUNC_DIMMER) || (fnId == TUYA_MCU_FUNC_REPORT1) || (fnId == TUYA_MCU_FUNC_DIMMER2) || (fnId == TUYA_MCU_FUNC_REPORT2) || @@ -646,13 +646,13 @@ void TuyaProcessStatePacket(void) { #ifdef USE_ENERGY_SENSOR else if (tuya_energy_enabled && fnId == TUYA_MCU_FUNC_VOLTAGE) { Energy.voltage[0] = (float)packetValue / 10; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Voltage=%d"), Tuya.buffer[dpidStart], packetValue); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Voltage=%d"), Tuya.buffer[dpidStart], packetValue); } else if (tuya_energy_enabled && fnId == TUYA_MCU_FUNC_CURRENT) { Energy.current[0] = (float)packetValue / 1000; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Current=%d"), Tuya.buffer[dpidStart], packetValue); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Current=%d"), Tuya.buffer[dpidStart], packetValue); } else if (tuya_energy_enabled && fnId == TUYA_MCU_FUNC_POWER) { Energy.active_power[0] = (float)packetValue / 10; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Active_Power=%d"), Tuya.buffer[dpidStart], packetValue); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Rx ID=%d Active_Power=%d"), Tuya.buffer[dpidStart], packetValue); if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { Energy.kWhtoday += (float)Energy.active_power[0] * (Rtc.utc_time - Tuya.lastPowerCheckTime) / 36; @@ -713,7 +713,7 @@ void TuyaLowPowerModePacketProcess(void) { void TuyaHandleProductInfoPacket(void) { uint16_t dataLength = Tuya.buffer[4] << 8 | Tuya.buffer[5]; char *data = &Tuya.buffer[6]; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TYA: MCU Product ID: %.*s"), dataLength, data); + AddLog_P(LOG_LEVEL_INFO, PSTR("TYA: MCU Product ID: %.*s"), dataLength, data); } void TuyaSendLowPowerSuccessIfNeeded(void) { @@ -757,7 +757,7 @@ void TuyaNormalPowerModePacketProcess(void) break; case TUYA_CMD_MCU_CONF: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX MCU configuration Mode=%d"), Tuya.buffer[5]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: RX MCU configuration Mode=%d"), Tuya.buffer[5]); if (Tuya.buffer[5] == 2) { // Processing by ESP module mode uint8_t led1_gpio = Tuya.buffer[6]; @@ -866,7 +866,7 @@ void TuyaInit(void) // Get MCU Configuration Tuya.SuspendTopic = true; Tuya.ignore_topic_timeout = millis() + 1000; // suppress /STAT topic for 1000ms to avoid data overflow - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Request MCU configuration at %d bps"), baudrate); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Request MCU configuration at %d bps"), baudrate); TuyaSendCmd(TUYA_CMD_QUERY_PRODUCT); } @@ -1033,7 +1033,7 @@ uint8_t TuyaGetTuyaWifiState(void) { void TuyaSetWifiLed(void) { Tuya.wifi_state = TuyaGetTuyaWifiState(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: Set WiFi LED %d (%d)"), Tuya.wifi_state, WifiState()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Set WiFi LED %d (%d)"), Tuya.wifi_state, WifiState()); if (Tuya.low_power_mode) { TuyaSendCmd(TUYA_LOW_POWER_CMD_WIFI_STATE, &Tuya.wifi_state, 1); diff --git a/tasmota/xdrv_17_rcswitch.ino b/tasmota/xdrv_17_rcswitch.ino index af3dc1bba..d676b7530 100644 --- a/tasmota/xdrv_17_rcswitch.ino +++ b/tasmota/xdrv_17_rcswitch.ino @@ -55,7 +55,7 @@ void RfReceiveCheck(void) int protocol = mySwitch.getReceivedProtocol(); int delay = mySwitch.getReceivedDelay(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RFR: Data 0x%lX (%u), Bits %d, Protocol %d, Delay %d"), data, data, bits, protocol, delay); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RFR: Data 0x%lX (%u), Bits %d, Protocol %d, Delay %d"), data, data, bits, protocol, delay); uint32_t now = millis(); if ((now - rf_lasttime > RF_TIME_AVOID_DUPLICATE) && (data > 0)) { diff --git a/tasmota/xdrv_18_armtronix_dimmers.ino b/tasmota/xdrv_18_armtronix_dimmers.ino index c49769e9e..a2fa782f5 100644 --- a/tasmota/xdrv_18_armtronix_dimmers.ino +++ b/tasmota/xdrv_18_armtronix_dimmers.ino @@ -61,11 +61,11 @@ void LightSerial2Duty(uint8_t duty1, uint8_t duty2) ArmtronixSerial->print("\nDimmer2:"); ArmtronixSerial->println(duty2); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ARM: Send Serial Packet Dim Values=%d,%d"), Armtronix.dim_state[0],Armtronix.dim_state[1]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ARM: Send Serial Packet Dim Values=%d,%d"), Armtronix.dim_state[0],Armtronix.dim_state[1]); } else { Armtronix.ignore_dim = false; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ARM: Send Dim Level skipped due to already set. Value=%d,%d"), Armtronix.dim_state[0],Armtronix.dim_state[1]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ARM: Send Dim Level skipped due to already set. Value=%d,%d"), Armtronix.dim_state[0],Armtronix.dim_state[1]); } } @@ -124,7 +124,7 @@ void ArmtronixSerialInput(void) Armtronix.ignore_dim = true; snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_CHANNEL "%d %d"),i+1, temp); ExecuteCommand(scmnd,SRC_SWITCH); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ARM: Send CMND_CHANNEL=%s"), scmnd ); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ARM: Send CMND_CHANNEL=%s"), scmnd ); } commaIndex = answer.indexOf(',',commaIndex+1); } @@ -148,7 +148,7 @@ void ArmtronixSetWifiLed(void) break; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ARM: Set WiFi LED to state %d (%d)"), wifi_state, WifiState()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ARM: Set WiFi LED to state %d (%d)"), wifi_state, WifiState()); char state = '0' + ((wifi_state & 1) > 0); ArmtronixSerial->print("Setled:"); diff --git a/tasmota/xdrv_19_ps16dz_dimmer.ino b/tasmota/xdrv_19_ps16dz_dimmer.ino index 341f276af..f3cb9ef5f 100644 --- a/tasmota/xdrv_19_ps16dz_dimmer.ino +++ b/tasmota/xdrv_19_ps16dz_dimmer.ino @@ -43,7 +43,7 @@ struct PS16DZ { void PS16DZSerialSend(const char *tx_buffer) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Send %s"), tx_buffer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Send %s"), tx_buffer); PS16DZSerial->print(tx_buffer); PS16DZSerial->write(0x1B); @@ -96,7 +96,7 @@ void PS16DZSerialInput(void) Ps16dz.rx_buffer[Ps16dz.byte_counter++] = 0x00; // AT+RESULT="sequence":"1554682835320" -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Rcvd %s"), Ps16dz.rx_buffer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Rcvd %s"), Ps16dz.rx_buffer); if (!strncmp(Ps16dz.rx_buffer+3, "RESULT", 6)) { @@ -118,7 +118,7 @@ void PS16DZSerialInput(void) if (!strncmp(token2, "\"switch\"", 8)) { bool switch_state = !strncmp(token3, "\"on\"", 4) ? true : false; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Switch %d"), switch_state); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Switch %d"), switch_state); is_switch_change = (switch_state != TasmotaGlobal.power); if (is_switch_change) { @@ -128,7 +128,7 @@ void PS16DZSerialInput(void) else if (!strncmp(token2, "\"bright\"", 8)) { Ps16dz.dimmer = atoi(token3); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Brightness %d"), Ps16dz.dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Brightness %d"), Ps16dz.dimmer); is_brightness_change = Ps16dz.dimmer != Settings.light_dimmer; if (TasmotaGlobal.power && (Ps16dz.dimmer > 0) && is_brightness_change) { @@ -138,7 +138,7 @@ void PS16DZSerialInput(void) } else if (!strncmp(token2, "\"sequence\"", 10)) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Sequence %s"), token3); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Sequence %s"), token3); } token = strtok_r(nullptr, ",", &end_str); @@ -146,7 +146,7 @@ void PS16DZSerialInput(void) if (!is_brightness_change) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PSZ: Update")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PSZ: Update")); PS16DZSerialSendOk(); } diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index 6c86b5424..44fe09896 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -103,8 +103,8 @@ void HueRespondToMSearch(void) } else { snprintf_P(message, sizeof(message), PSTR(D_FAILED_TO_SEND_RESPONSE)); } - // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPNP D_HUE " %s " D_TO " %s:%d"), + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPNP D_HUE " %s " D_TO " %s:%d"), message, udp_remote_ip.toString().c_str(), udp_remote_port); udp_response_mutex = false; @@ -256,7 +256,7 @@ String GetHueUserId(void) void HandleUpnpSetupHue(void) { - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_HUE_BRIDGE_SETUP)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_HUE_BRIDGE_SETUP)); String description_xml = Decompress(HUE_DESCRIPTION_XML_COMPRESSED,HUE_DESCRIPTION_XML_SIZE); description_xml.replace("{x1", WiFi.localIP().toString()); description_xml.replace("{x2", HueUuid()); @@ -266,7 +266,7 @@ void HandleUpnpSetupHue(void) void HueNotImplemented(String *path) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_API_NOT_IMPLEMENTED " (%s)"), path->c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_API_NOT_IMPLEMENTED " (%s)"), path->c_str()); WSSend(200, CT_JSON, "{}"); } @@ -513,7 +513,7 @@ void HueAuthentication(String *path) snprintf_P(response, sizeof(response), PSTR("[{\"success\":{\"username\":\"%s\"}}]"), GetHueUserId().c_str()); WSSend(200, CT_JSON, response); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Authentication Result (%s)"), response); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Authentication Result (%s)"), response); } // refactored to remove code duplicates @@ -627,7 +627,7 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { LightStateClass::RgbToHsb(rr, gg, bb, &hue, &sat, nullptr); prev_hue = changeUIntScale(hue, 0, 360, 0, 65535); // calculate back prev_hue prev_sat = (sat > 254 ? 254 : sat); - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, "XY RGB (%d %d %d) HS (%d %d)", rr,gg,bb,hue,sat); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, "XY RGB (%d %d %d) HS (%d %d)", rr,gg,bb,hue,sat); if (resp) { response += ","; } snprintf_P(buf, buf_size, PSTR("{\"success\":{\"/lights/%d/state/xy\":[%s,%s]}}"), @@ -696,7 +696,7 @@ void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { if (change) { #ifdef USE_SHUTTER if (ShutterState(device)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Settings.shutter_invert: %d"), Settings.shutter_options[device-1] & 1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Settings.shutter_invert: %d"), Settings.shutter_options[device-1] & 1); ShutterSetPosition(device, bri * 100.0f ); } else #endif @@ -779,7 +779,7 @@ void HueLights(String *path) } else if(path->indexOf(F("/lights/")) >= 0) { // Got /lights/ID - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("/lights path=%s"), path->c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("/lights path=%s"), path->c_str()); path->remove(0,8); // Remove /lights/ device_id = atoi(path->c_str()); device = DecodeLightId(device_id); @@ -811,7 +811,7 @@ void HueLights(String *path) code = 406; } exit: - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); WSSend(code, CT_JSON, response); } @@ -822,7 +822,7 @@ void HueGroups(String *path) */ String response = "{}"; uint8_t maxhue = (TasmotaGlobal.devices_present > MAX_HUE_DEVICES) ? MAX_HUE_DEVICES : TasmotaGlobal.devices_present; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " HueGroups (%s)"), path->c_str()); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " HueGroups (%s)"), path->c_str()); if (path->endsWith("/0")) { response = FPSTR(HUE_GROUP0_STATUS_JSON); @@ -841,7 +841,7 @@ void HueGroups(String *path) response += F("}"); } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " HueGroups Result (%s)"), path->c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " HueGroups Result (%s)"), path->c_str()); WSSend(200, CT_JSON, response); } @@ -863,10 +863,10 @@ void HandleHueApi(String *path) path->remove(0, 4); // remove /api uint16_t apilen = path->length(); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_API " (%s) from %s"), path->c_str(), Webserver->client().remoteIP().toString().c_str()); // HTP: Hue API (//lights/1/state) from 192.168.1.20 + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_API " (%s) from %s"), path->c_str(), Webserver->client().remoteIP().toString().c_str()); // HTP: Hue API (//lights/1/state) from 192.168.1.20 for (args = 0; args < Webserver->args(); args++) { String json = Webserver->arg(args); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_POST_ARGS " (%s)"), json.c_str()); // HTP: Hue POST args ({"on":false}) + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE_POST_ARGS " (%s)"), json.c_str()); // HTP: Hue POST args ({"on":false}) } if (path->endsWith(F("/invalid/"))) {} // Just ignore diff --git a/tasmota/xdrv_21_wemo.ino b/tasmota/xdrv_21_wemo.ino index 6cd5ce4ce..e47f5deb7 100644 --- a/tasmota/xdrv_21_wemo.ino +++ b/tasmota/xdrv_21_wemo.ino @@ -74,8 +74,8 @@ void WemoRespondToMSearch(int echo_type) } else { snprintf_P(message, sizeof(message), PSTR(D_FAILED_TO_SEND_RESPONSE)); } - // Do not use AddLog_P2 here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPNP D_WEMO " " D_JSON_TYPE " %d, %s " D_TO " %s:%d"), + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_UPNP D_WEMO " " D_JSON_TYPE " %d, %s " D_TO " %s:%d"), echo_type, message, udp_remote_ip.toString().c_str(), udp_remote_port); udp_response_mutex = false; @@ -268,7 +268,7 @@ const char WEMO_SETUP_XML[] PROGMEM = /********************************************************************************************/ void LogUpnpWithClient(const char *msg) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "%s from %s"), msg, Webserver->client().remoteIP().toString().c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "%s from %s"), msg, Webserver->client().remoteIP().toString().c_str()); } void HandleUpnpEvent(void) @@ -278,7 +278,7 @@ void HandleUpnpEvent(void) char event[500]; strlcpy(event, Webserver->arg(0).c_str(), sizeof(event)); -// AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("\n%s"), event); +// AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("\n%s"), event); //differentiate get and set state char state = 'G'; diff --git a/tasmota/xdrv_23_zigbee_3_hue.ino b/tasmota/xdrv_23_zigbee_3_hue.ino index a42695fd2..abc6962cb 100644 --- a/tasmota/xdrv_23_zigbee_3_hue.ino +++ b/tasmota/xdrv_23_zigbee_3_hue.ino @@ -106,7 +106,7 @@ void HueLightStatus2Zigbee(uint16_t shortaddr, String *response) (modelId) ? EscapeJSONString(modelId).c_str() : PSTR("Unknown"), (manufacturerId) ? EscapeJSONString(manufacturerId).c_str() : PSTR("Tasmota"), GetHueDeviceId(shortaddr).c_str()); - + *response += buf; free(buf); } @@ -169,7 +169,7 @@ void ZigbeeHueDimmer(uint16_t shortaddr, uint8_t dimmer) { // CT void ZigbeeHueCT(uint16_t shortaddr, uint16_t ct) { if (ct > 0xFEFF) { ct = 0xFEFF; } - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeHueCT 0x%04X - %d"), shortaddr, ct); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZigbeeHueCT 0x%04X - %d"), shortaddr, ct); char param[12]; snprintf_P(param, sizeof(param), PSTR("%02X%02X0A00"), ct & 0xFF, ct >> 8); uint8_t colormode = 2; // "ct" @@ -226,7 +226,7 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { JsonParser parser((char*) Webserver->arg((Webserver->args())-1).c_str()); JsonParserObject root = parser.getRootObject(); - + JsonParserToken hue_on = root[PSTR("on")]; if (hue_on) { on = hue_on.getBool(); @@ -347,7 +347,7 @@ void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { else { response = FPSTR(HUE_ERROR_JSON); } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_HTTP D_HUE " Result (%s)"), response.c_str()); WSSend(code, CT_JSON, response); free(buf); diff --git a/tasmota/xdrv_23_zigbee_4_persistence.ino b/tasmota/xdrv_23_zigbee_4_persistence.ino index 9b24e0af8..8a4b03b68 100644 --- a/tasmota/xdrv_23_zigbee_4_persistence.ino +++ b/tasmota/xdrv_23_zigbee_4_persistence.ino @@ -191,13 +191,13 @@ class SBuffer hibernateDevices(void) { size_t buf_len = buf.len(); if (buf_len > 2040) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Devices list too big to fit in Flash (%d)"), buf_len); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Devices list too big to fit in Flash (%d)"), buf_len); } // Log char *hex_char = (char*) malloc((buf_len * 2) + 2); if (hex_char) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "ZbFlashStore %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "ZbFlashStore %s"), ToHex_P(buf.getBuffer(), buf_len, hex_char, (buf_len * 2) + 2)); free(hex_char); } @@ -306,7 +306,7 @@ void loadZigbeeDevices(void) { // first copy SPI buffer into ram uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); if (!spi_buffer) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); return; } ZigbeeRead(&spi_buffer, z_spi_len); @@ -314,8 +314,8 @@ void loadZigbeeDevices(void) { #endif // ESP32 Z_Flashentry flashdata; memcpy_P(&flashdata, z_dev_start, sizeof(Z_Flashentry)); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Memory %d"), ESP_getFreeHeap()); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Memory %d"), ESP_getFreeHeap()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); // Check the signature if ( ((flashdata.name == ZIGB_NAME1) || (flashdata.name == ZIGB_NAME2)) @@ -325,16 +325,16 @@ void loadZigbeeDevices(void) { // parse what seems to be a valid entry SBuffer buf(buf_len); buf.addBuffer(z_dev_start + sizeof(Z_Flashentry), buf_len); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee devices data in Flash v%d (%d bytes)"), version, buf_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee devices data in Flash v%d (%d bytes)"), version, buf_len); // Serial.printf(">> Buffer="); // for (uint32_t i=0; i Z_MAX_FLASH) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Buffer too big to fit in Flash (%d bytes)"), buf_len); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Buffer too big to fit in Flash (%d bytes)"), buf_len); return; } // first copy SPI buffer into ram uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); if (!spi_buffer) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); return; } // copy the flash into RAM to make local change, and write back the whole buffer @@ -373,10 +373,10 @@ void saveZigbeeDevices(void) { if (ESP.flashEraseSector(z_spi_start_sector)) { ESP.flashWrite(z_spi_start_sector * SPI_FLASH_SEC_SIZE, (uint32_t*) spi_buffer, SPI_FLASH_SEC_SIZE); } - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data store in Flash (0x%08X - %d bytes)"), z_dev_start, buf_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data store in Flash (0x%08X - %d bytes)"), z_dev_start, buf_len); #else // ESP32 ZigbeeWrite(&spi_buffer, z_spi_len); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved (%d bytes)"), buf_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data saved (%d bytes)"), buf_len); #endif // ESP8266 - ESP32 free(spi_buffer); } @@ -388,7 +388,7 @@ void eraseZigbeeDevices(void) { // first copy SPI buffer into ram uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); if (!spi_buffer) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Cannot allocate 4KB buffer")); return; } // copy the flash into RAM to make local change, and write back the whole buffer @@ -403,10 +403,10 @@ void eraseZigbeeDevices(void) { } free(spi_buffer); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (0x%08X - %d bytes)"), z_dev_start, z_block_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (0x%08X - %d bytes)"), z_dev_start, z_block_len); #else // ESP32 ZigbeeErase(); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (%d bytes)"), z_block_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee Devices Data erased (%d bytes)"), z_block_len); #endif // ESP8266 - ESP32 } diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 44757bf2c..cb2317084 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -706,7 +706,7 @@ public: if (Settings.flag3.tuya_serial_mqtt_publish) { MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_SENSOR)); } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); } } @@ -1831,7 +1831,7 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib uint8_t *attr_address = ((uint8_t*)&data) + sizeof(Z_Data) + map_offset; uint32_t uval32 = attr.getUInt(); // call converter to uint only once int32_t ival32 = attr.getInt(); // call converter to int only once - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Mapping type=%d offset=%d zigbee_type=%02X value=%d\n"), (uint8_t) map_type, map_offset, zigbee_type, ival32); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Mapping type=%d offset=%d zigbee_type=%02X value=%d\n"), (uint8_t) map_type, map_offset, zigbee_type, ival32); switch (zigbee_type) { case Zenum8: case Zmap8: @@ -1917,7 +1917,7 @@ bool Z_parseAttributeKey(class Z_attribute & attr) { attr.attr_type = type_id; } } - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("cluster_id = 0x%04X, attr_id = 0x%04X"), cluster_id, attr_id); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("cluster_id = 0x%04X, attr_id = 0x%04X"), cluster_id, attr_id); // do we already know the type, i.e. attribute and cluster are also known if (Zunk == attr.attr_type) { @@ -1929,7 +1929,7 @@ bool Z_parseAttributeKey(class Z_attribute & attr) { uint16_t local_cluster_id = CxToCluster(pgm_read_byte(&converter->cluster_short)); uint8_t local_type_id = pgm_read_byte(&converter->type); int8_t local_multiplier = CmToMultiplier(pgm_read_byte(&converter->multiplier_idx)); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Try cluster = 0x%04X, attr = 0x%04X, type_id = 0x%02X"), local_cluster_id, local_attr_id, local_type_id); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("Try cluster = 0x%04X, attr = 0x%04X, type_id = 0x%02X"), local_cluster_id, local_attr_id, local_type_id); if (!attr.key_is_str) { if ((attr.key.id.cluster == local_cluster_id) && (attr.key.id.attr_id == local_attr_id)) { @@ -1938,7 +1938,7 @@ bool Z_parseAttributeKey(class Z_attribute & attr) { } } else if (pgm_read_word(&converter->name_offset)) { const char * key = attr.key.key; - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Comparing '%s' with '%s'"), attr_name, converter->name); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("Comparing '%s' with '%s'"), attr_name, converter->name); if (0 == strcasecmp_P(key, Z_strings + pgm_read_word(&converter->name_offset))) { // match attr.setKeyId(local_cluster_id, local_attr_id); diff --git a/tasmota/xdrv_23_zigbee_6_commands.ino b/tasmota/xdrv_23_zigbee_6_commands.ino index ef3fc1f71..f5854d175 100644 --- a/tasmota/xdrv_23_zigbee_6_commands.ino +++ b/tasmota/xdrv_23_zigbee_6_commands.ino @@ -277,7 +277,7 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, uint8_t conv_direction; Z_XYZ_Var xyz; -//AddLog_P2(LOG_LEVEL_INFO, PSTR(">>> len = %d - %02X%02X%02X"), payload.len(), payload.get8(0), payload.get8(1), payload.get8(2)); +//AddLog_P(LOG_LEVEL_INFO, PSTR(">>> len = %d - %02X%02X%02X"), payload.len(), payload.get8(0), payload.get8(1), payload.get8(2)); for (uint32_t i = 0; i < sizeof(Z_Commands) / sizeof(Z_Commands[0]); i++) { const Z_CommandConverter *conv = &Z_Commands[i]; uint16_t conv_cluster = pgm_read_word(&conv->cluster); @@ -293,18 +293,18 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, // - payload exactly matches conv->param (conv->param may be longer) // - payload matches conv->param until 'x', 'y' or 'z' const char * p = Z_strings + pgm_read_word(&conv->param_offset); - //AddLog_P2(LOG_LEVEL_INFO, PSTR(">>>++1 param = %s"), p); + //AddLog_P(LOG_LEVEL_INFO, PSTR(">>>++1 param = %s"), p); bool match = true; for (uint8_t i = 0; i < payload.len(); i++) { const char c1 = pgm_read_byte(p); const char c2 = pgm_read_byte(p+1); - //AddLog_P2(LOG_LEVEL_INFO, PSTR(">>>++2 c1 = %c, c2 = %c"), c1, c2); + //AddLog_P(LOG_LEVEL_INFO, PSTR(">>>++2 c1 = %c, c2 = %c"), c1, c2); if ((0x00 == c1) || isXYZ(c1)) { break; } const char * p2 = p; uint32_t nextbyte = parseHex_P(&p2, 2); - //AddLog_P2(LOG_LEVEL_INFO, PSTR(">>>++3 parseHex_P = %02X"), nextbyte); + //AddLog_P(LOG_LEVEL_INFO, PSTR(">>>++3 parseHex_P = %02X"), nextbyte); if (nextbyte != payload.get8(i)) { match = false; break; @@ -538,7 +538,7 @@ String zigbeeCmdAddParams(const char *zcl_cmd_P, uint32_t x, uint32_t y, uint32_ } p++; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SendZCLCommand_P: zcl_cmd = %s"), zcl_cmd); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SendZCLCommand_P: zcl_cmd = %s"), zcl_cmd); return String(zcl_cmd); } diff --git a/tasmota/xdrv_23_zigbee_7_statemachine.ino b/tasmota/xdrv_23_zigbee_7_statemachine.ino index 18f025dfb..cf44eff8e 100644 --- a/tasmota/xdrv_23_zigbee_7_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_statemachine.ino @@ -771,7 +771,7 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_ON_RECV_UNEXPECTED(&EZ_Recv_Default) ZI_WAIT(10500) // wait for 10 seconds for Tasmota to stabilize - // Hardware reset + // Hardware reset ZI_LOG(LOG_LEVEL_INFO, kResettingDevice) // Log Debug: resetting EZSP device ZI_CALL(&EZ_Reset_Device, 0) // LOW = reset ZI_WAIT(100) // wait for .1 second @@ -911,10 +911,10 @@ void ZigbeeGotoLabel(uint8_t label) { const Zigbee_Instruction *cur_instr_line = &zb_prog[i]; cur_instr = pgm_read_byte(&cur_instr_line->i.i); cur_d8 = pgm_read_byte(&cur_instr_line->i.d8); - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZGB GOTO: pc %d instr %d"), i, cur_instr); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZGB GOTO: pc %d instr %d"), i, cur_instr); if (ZGB_INSTR_LABEL == cur_instr) { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "found label %d at pc %d"), cur_d8, i); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "found label %d at pc %d"), cur_d8, i); if (label == cur_d8) { // label found, goto to this pc zigbee.pc = i; @@ -928,12 +928,12 @@ void ZigbeeGotoLabel(uint8_t label) { } // no label found, abort - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Goto label not found, label=%d pc=%d"), label, zigbee.pc); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Goto label not found, label=%d pc=%d"), label, zigbee.pc); if (ZIGBEE_LABEL_ABORT != label) { // if not already looking for ZIGBEE_LABEL_ABORT, goto ZIGBEE_LABEL_ABORT ZigbeeGotoLabel(ZIGBEE_LABEL_ABORT); } else { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Label Abort (%d) not present, aborting Zigbee"), ZIGBEE_LABEL_ABORT); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Label Abort (%d) not present, aborting Zigbee"), ZIGBEE_LABEL_ABORT); zigbee.state_machine = false; zigbee.active = false; } @@ -951,7 +951,7 @@ void ZigbeeStateMachine_Run(void) { // checking if timeout expired if ((zigbee.next_timeout) && (now > zigbee.next_timeout)) { // if next_timeout == 0 then wait forever if (!zigbee.state_no_timeout) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "timeout, goto label %d"), zigbee.on_timeout_goto); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "timeout, goto label %d"), zigbee.on_timeout_goto); ZigbeeGotoLabel(zigbee.on_timeout_goto); } else { zigbee.state_waiting = false; // simply stop waiting @@ -967,7 +967,7 @@ void ZigbeeStateMachine_Run(void) { zigbee.state_no_timeout = false; // reset the no_timeout for next instruction if (zigbee.pc > ARRAY_SIZE(zb_prog)) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Invalid pc: %d, aborting"), zigbee.pc); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Invalid pc: %d, aborting"), zigbee.pc); zigbee.pc = -1; } if (zigbee.pc < 0) { @@ -1016,7 +1016,7 @@ void ZigbeeStateMachine_Run(void) { case ZGB_INSTR_STOP: zigbee.state_machine = false; if (cur_d8) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Stopping (%d)"), cur_d8); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Stopping (%d)"), cur_d8); } break; case ZGB_INSTR_CALL: diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index d87f06055..7b6a96381 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -193,7 +193,7 @@ int32_t EZ_MessageSent(int32_t res, const class SBuffer &buf) { uint16_t group_addr = buf.get16(13); if ((EMBER_OUTGOING_MULTICAST == message_type) && (0xFFFD == dst_addr)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Sniffing group 0x%04X"), group_addr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Sniffing group 0x%04X"), group_addr); } return -1; // ignore } @@ -979,7 +979,7 @@ int32_t Z_MgmtBindRsp(int32_t res, const class SBuffer &buf) { dstep = buf.get8(idx + 20); idx += 21; } else { - //AddLog_P2(LOG_LEVEL_INFO, PSTR("ZNP_MgmtBindRsp unknwon address mode %d"), addrmode); + //AddLog_P(LOG_LEVEL_INFO, PSTR("ZNP_MgmtBindRsp unknwon address mode %d"), addrmode); break; // abort for any other value since we don't know the length of the field } @@ -1279,7 +1279,7 @@ void Z_SendSingleAttributeRead(uint16_t shortaddr, uint16_t groupaddr, uint16_t void Z_AutoBind(uint16_t shortaddr, uint16_t groupaddr, uint16_t cluster, uint8_t endpoint, uint32_t value) { uint64_t srcLongAddr = zigbee_devices.getDeviceLongAddr(shortaddr); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "auto-bind `ZbBind {\"Device\":\"0x%04X\",\"Endpoint\":%d,\"Cluster\":\"0x%04X\"}`"), + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "auto-bind `ZbBind {\"Device\":\"0x%04X\",\"Endpoint\":%d,\"Cluster\":\"0x%04X\"}`"), shortaddr, endpoint, cluster); #ifdef USE_ZIGBEE_ZNP SBuffer buf(34); @@ -1389,7 +1389,7 @@ void Z_AutoConfigReportingForCluster(uint16_t shortaddr, uint16_t groupaddr, uin // encode value int32_t res = encodeSingleAttribute(buf, report_change, "", attr_type); if (res < 0) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "internal error, unsupported attribute type")); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "internal error, unsupported attribute type")); } else { Z_attribute attr; attr.setKeyName(PSTR("ReportableChange"), true); // true because in PMEM @@ -1404,7 +1404,7 @@ void Z_AutoConfigReportingForCluster(uint16_t shortaddr, uint16_t groupaddr, uin ResponseAppend_P(PSTR("}}")); if (buf.len() > 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "auto-bind `%s`"), TasmotaGlobal.mqtt_data); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "auto-bind `%s`"), TasmotaGlobal.mqtt_data); ZigbeeZCLSend_Raw(ZigbeeZCLSendMessage({ shortaddr, 0x0000, /* group */ @@ -1507,11 +1507,11 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) { zcl_received.parseClusterSpecificCommand(attr_list); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZCL_RAW_RECEIVED ": {\"0x%04X\":{%s}}"), srcaddr, attr_list.toString().c_str()); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZCL_RAW_RECEIVED ": {\"0x%04X\":{%s}}"), srcaddr, attr_list.toString().c_str()); // discard the message if it was sent by us (broadcast or group loopback) if (srcaddr == localShortAddr) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "loopback message, ignoring")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "loopback message, ignoring")); return; // abort the rest of message management } @@ -1651,7 +1651,7 @@ int32_t EZ_IncomingMessage(int32_t res, const class SBuffer &buf) { return EZ_ParentAnnceRsp(res, zdo_buf, true); default: // TODO move later to LOG_LEVEL_DEBUG - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZIG: Internal ZDO message 0x%04X sent from 0x%04X %s"), clusterid, srcaddr, wasbroadcast ? PSTR("(broadcast)") : ""); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZIG: Internal ZDO message 0x%04X sent from 0x%04X %s"), clusterid, srcaddr, wasbroadcast ? PSTR("(broadcast)") : ""); break; } } else { @@ -1975,7 +1975,7 @@ void ZCLFrame::autoResponder(const uint16_t *attr_list_ids, size_t attr_len) { // we have a non-empty output // log first - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZIG: Auto-responder: ZbSend {\"Device\":\"0x%04X\"" + AddLog_P(LOG_LEVEL_INFO, PSTR("ZIG: Auto-responder: ZbSend {\"Device\":\"0x%04X\"" ",\"Cluster\":\"0x%04X\"" ",\"Endpoint\":%d" ",\"Response\":%s}" diff --git a/tasmota/xdrv_23_zigbee_9_serial.ino b/tasmota/xdrv_23_zigbee_9_serial.ino index b09562088..e354b6fd2 100644 --- a/tasmota/xdrv_23_zigbee_9_serial.ino +++ b/tasmota/xdrv_23_zigbee_9_serial.ino @@ -92,7 +92,7 @@ void ZigbeeInputLoop(void) { while (ZigbeeSerial->available()) { yield(); uint8_t zigbee_in_byte = ZigbeeSerial->read(); - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZbInput byte=%d len=%d"), zigbee_in_byte, zigbee_buffer->len()); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZbInput byte=%d len=%d"), zigbee_in_byte, zigbee_buffer->len()); if (0 == zigbee_buffer->len()) { // make sure all variables are correctly initialized zigbee_frame_len = 5; @@ -101,14 +101,14 @@ void ZigbeeInputLoop(void) { // in this case the first bit (lsb) is missed and Tasmota receives 0xFF instead of 0xFE // We forgive this mistake, and next bytes are automatically resynchronized if (ZIGBEE_SOF_ALT == zigbee_in_byte) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZbInput forgiven first byte %02X (only for statistics)"), zigbee_in_byte); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZbInput forgiven first byte %02X (only for statistics)"), zigbee_in_byte); zigbee_in_byte = ZIGBEE_SOF; } } if ((0 == zigbee_buffer->len()) && (ZIGBEE_SOF != zigbee_in_byte)) { // waiting for SOF (Start Of Frame) byte, discard anything else - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZbInput discarding byte %02X"), zigbee_in_byte); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZbInput discarding byte %02X"), zigbee_in_byte); continue; // discard } @@ -137,17 +137,17 @@ void ZigbeeInputLoop(void) { char hex_char[(zigbee_buffer->len() * 2) + 2]; ToHex_P((unsigned char*)zigbee_buffer->getBuffer(), zigbee_buffer->len(), hex_char, sizeof(hex_char)); - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Bytes follow_read_metric = %0d"), ZigbeeSerial->getLoopReadMetric()); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Bytes follow_read_metric = %0d"), ZigbeeSerial->getLoopReadMetric()); // buffer received, now check integrity if (zigbee_buffer->len() != zigbee_frame_len) { // Len is not correct, log and reject frame - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received frame of wrong size %s, len %d, expected %d"), hex_char, zigbee_buffer->len(), zigbee_frame_len); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received frame of wrong size %s, len %d, expected %d"), hex_char, zigbee_buffer->len(), zigbee_frame_len); } else if (0x00 != fcs) { // FCS is wrong, packet is corrupt, log and reject frame - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received bad FCS frame %s, %d"), hex_char, fcs); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received bad FCS frame %s, %d"), hex_char, fcs); } else { // frame is correct - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received correct frame %s"), hex_char); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received correct frame %s"), hex_char); SBuffer znp_buffer = zigbee_buffer->subBuffer(2, zigbee_frame_len - 3); // remove SOF, LEN and FCS @@ -156,7 +156,7 @@ void ZigbeeInputLoop(void) { if (Settings.flag3.tuya_serial_mqtt_publish) { MqttPublishPrefixTopicRulesProcess_P(TELE, PSTR(D_RSLT_SENSOR)); } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); } // now process the message ZigbeeProcessInput(znp_buffer); @@ -181,7 +181,7 @@ void ZigbeeInputLoop(void) { yield(); uint8_t zigbee_in_byte = ZigbeeSerial->read(); - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: ZbInput byte=0x%02X len=%d"), zigbee_in_byte, zigbee_buffer->len()); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: ZbInput byte=0x%02X len=%d"), zigbee_in_byte, zigbee_buffer->len()); // if (0 == zigbee_buffer->len()) { // make sure all variables are correctly initialized // escape = false; @@ -193,13 +193,13 @@ void ZigbeeInputLoop(void) { } if (ZIGBEE_EZSP_ESCAPE == zigbee_in_byte) { - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Escape byte received")); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Escape byte received")); escape = true; continue; } if (ZIGBEE_EZSP_CANCEL == zigbee_in_byte) { - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: ZbInput byte=0x1A, cancel byte received, discarding %d bytes"), zigbee_buffer->len()); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: ZbInput byte=0x1A, cancel byte received, discarding %d bytes"), zigbee_buffer->len()); zigbee_buffer->setLen(0); // empty buffer escape = false; frame_complete = false; @@ -229,10 +229,10 @@ void ZigbeeInputLoop(void) { char hex_char[frame_len * 2 + 2]; ToHex_P((unsigned char*)zigbee_buffer->getBuffer(), zigbee_buffer->len(), hex_char, sizeof(hex_char)); - // AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Bytes follow_read_metric = %0d"), ZigbeeSerial->getLoopReadMetric()); + // AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "Bytes follow_read_metric = %0d"), ZigbeeSerial->getLoopReadMetric()); if ((frame_complete) && (frame_len >= 3)) { // frame received and has at least 3 bytes (without EOF), checking CRC - // AddLog_P2(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": received raw frame %s"), hex_char); + // AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": received raw frame %s"), hex_char); uint16_t crc = 0xFFFF; // frame CRC // compute CRC for (uint32_t i=0; isubBuffer(0, frame_len - 2); // CRC @@ -267,13 +267,13 @@ void ZigbeeInputLoop(void) { } ToHex_P((unsigned char*)ezsp_buffer.getBuffer(), ezsp_buffer.len(), hex_char, sizeof(hex_char)); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "{\"" D_JSON_ZIGBEE_EZSP_RECEIVED "2\":\"%s\"}"), hex_char); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "{\"" D_JSON_ZIGBEE_EZSP_RECEIVED "2\":\"%s\"}"), hex_char); // now process the message ZigbeeProcessInputRaw(ezsp_buffer); } } else { // the buffer timed-out, print error and discard - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": time-out, discarding %s, %d"), hex_char); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": time-out, discarding %s, %d"), hex_char); } zigbee_buffer->setLen(0); // empty buffer escape = false; @@ -289,10 +289,10 @@ void ZigbeeInputLoop(void) { // Initialize internal structures void ZigbeeInitSerial(void) { -// AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem1 = %d"), ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem1 = %d"), ESP_getFreeHeap()); zigbee.active = false; if (PinUsed(GPIO_ZIGBEE_RX) && PinUsed(GPIO_ZIGBEE_TX)) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX)); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE "GPIOs Rx:%d Tx:%d"), Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX)); // if TasmotaGlobal.seriallog_level is 0, we allow GPIO 13/15 to switch to Hardware Serial ZigbeeSerial = new TasmotaSerial(Pin(GPIO_ZIGBEE_RX), Pin(GPIO_ZIGBEE_TX), TasmotaGlobal.seriallog_level ? 1 : 2, 0, 256); // set a receive buffer of 256 bytes ZigbeeSerial->begin(115200); @@ -301,9 +301,9 @@ void ZigbeeInitSerial(void) uint32_t aligned_buffer = ((uint32_t)TasmotaGlobal.serial_in_buffer + 3) & ~3; zigbee_buffer = new PreAllocatedSBuffer(sizeof(TasmotaGlobal.serial_in_buffer) - 3, (char*) aligned_buffer); } else { -// AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem2 = %d"), ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem2 = %d"), ESP_getFreeHeap()); zigbee_buffer = new SBuffer(ZIGBEE_BUFFER_SIZE); -// AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem3 = %d"), ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem3 = %d"), ESP_getFreeHeap()); } if (PinUsed(GPIO_ZIGBEE_RST)) { @@ -316,7 +316,7 @@ void ZigbeeInitSerial(void) zigbee.state_machine = true; // start the state machine ZigbeeSerial->flush(); } -// AddLog_P2(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem9 = %d"), ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("ZigbeeInit Mem9 = %d"), ESP_getFreeHeap()); } #ifdef USE_ZIGBEE_ZNP @@ -327,14 +327,14 @@ void ZigbeeZNPFlush(void) { for (uint32_t i = 0; i < 256; i++) { ZigbeeSerial->write(0xFF); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZNPSENT " 0xFF x 255")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZNPSENT " 0xFF x 255")); } } void ZigbeeZNPSend(const uint8_t *msg, size_t len) { if ((len < 2) || (len > 252)) { // abort, message cannot be less than 2 bytes for CMD1 and CMD2 - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_JSON_ZIGBEEZNPSENT ": bad message len %d"), len); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_JSON_ZIGBEEZNPSENT ": bad message len %d"), len); return; } uint8_t data_len = len - 2; // removing CMD1 and CMD2 @@ -343,21 +343,21 @@ void ZigbeeZNPSend(const uint8_t *msg, size_t len) { uint8_t fcs = data_len; ZigbeeSerial->write(ZIGBEE_SOF); // 0xFE - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend SOF %02X"), ZIGBEE_SOF); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend SOF %02X"), ZIGBEE_SOF); ZigbeeSerial->write(data_len); - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend LEN %02X"), data_len); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend LEN %02X"), data_len); for (uint32_t i = 0; i < len; i++) { uint8_t b = pgm_read_byte(msg + i); ZigbeeSerial->write(b); fcs ^= b; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend byt %02X"), b); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend byt %02X"), b); } ZigbeeSerial->write(fcs); // finally send fcs checksum byte - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend FCS %02X"), fcs); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZNPSend FCS %02X"), fcs); } // Now send a MQTT message to report the sent message char hex_char[(len * 2) + 2]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZNPSENT " %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEEZNPSENT " %s"), ToHex_P(msg, len, hex_char, sizeof(hex_char))); } @@ -443,7 +443,7 @@ void ZigbeeEZSPSend_Out(uint8_t out_byte) { void ZigbeeEZSPSendRaw(const uint8_t *msg, size_t len, bool send_cancel) { if ((len < 1) || (len > 252)) { // abort, message cannot be less than 2 bytes for CMD1 and CMD2 - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_JSON_ZIGBEE_EZSP_SENT ": bad message len %d"), len); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_JSON_ZIGBEE_EZSP_SENT ": bad message len %d"), len); return; } uint8_t data_len = len - 2; // removing CMD1 and CMD2 @@ -493,7 +493,7 @@ void ZigbeeEZSPSendRaw(const uint8_t *msg, size_t len, bool send_cancel) { // Now send a MQTT message to report the sent message char hex_char[(len * 2) + 2]; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEE_EZSP_SENT_RAW " %s"), + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_LOG_ZIGBEE D_JSON_ZIGBEE_EZSP_SENT_RAW " %s"), ToHex_P(msg, len, hex_char, sizeof(hex_char))); } @@ -502,7 +502,7 @@ void ZigbeeEZSPSendRaw(const uint8_t *msg, size_t len, bool send_cancel) { void ZigbeeEZSPSendCmd(const uint8_t *msg, size_t len) { char hex_char[len*2 + 2]; ToHex_P(msg, len, hex_char, sizeof(hex_char)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "ZbEZSPSend %s"), hex_char); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "ZbEZSPSend %s"), hex_char); SBuffer cmd(len+3); // prefix with seq number (1 byte) and frame control bytes (2 bytes) @@ -519,7 +519,7 @@ void ZigbeeEZSPSendCmd(const uint8_t *msg, size_t len) { void ZigbeeEZSPSendDATA_frm(bool send_cancel, uint8_t to_frm, uint8_t from_ack) { SBuffer *buf = EZSP_Serial.to_packets[to_frm]; if (!buf) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Buffer for packet %d is not allocated"), EZSP_Serial.to_send); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Buffer for packet %d is not allocated"), EZSP_Serial.to_send); return; } @@ -536,7 +536,7 @@ void ZigbeeEZSPSendDATA(const uint8_t *msg, size_t len) { buf->add8(0x00); // placeholder for control_byte buf->addBuffer(msg, len); // - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: adding packet to_send, to_ack:%d, to_send:%d, to_end:%d"), + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: adding packet to_send, to_ack:%d, to_send:%d, to_end:%d"), EZSP_Serial.to_ack, EZSP_Serial.to_send, EZSP_Serial.to_end); uint8_t to_frm = EZSP_Serial.to_end; if (EZSP_Serial.to_packets[to_frm]) { @@ -564,7 +564,7 @@ int32_t ZigbeeProcessInputEZSP(class SBuffer &buf) { bool callbackPending = frame_control & 0x04; bool security_enabled = frame_control & 0x8000; if (truncated || overflow || security_enabled) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZIG: specific frame_control 0x%04X"), frame_control); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZIG: specific frame_control 0x%04X"), frame_control); } // remove first 2 bytes, be @@ -609,7 +609,7 @@ int32_t ZigbeeProcessInputEZSP(class SBuffer &buf) { log_level = LOG_LEVEL_DEBUG; break; } - AddLog_P2(log_level, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); // TODO move to LOG_LEVEL_DEBUG when stable + AddLog_P(log_level, PSTR(D_LOG_ZIGBEE "%s"), TasmotaGlobal.mqtt_data); // TODO move to LOG_LEVEL_DEBUG when stable } // Pass message to state machine @@ -619,14 +619,14 @@ int32_t ZigbeeProcessInputEZSP(class SBuffer &buf) { // Check if we advanced in the ACKed frames, and free from memory packets acknowledged void EZSP_HandleAck(uint8_t new_ack) { if (EZSP_Serial.to_ack != new_ack) { // new ack receveid - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: new ack/data received, was %d now %d"), EZSP_Serial.to_ack, new_ack); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: new ack/data received, was %d now %d"), EZSP_Serial.to_ack, new_ack); uint32_t i = EZSP_Serial.to_ack; do { if (EZSP_Serial.to_packets[i]) { delete EZSP_Serial.to_packets[i]; EZSP_Serial.to_packets[i] = nullptr; } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: freeing packet %d from memory"), i); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: freeing packet %d from memory"), i); i = (i + 1) & 0x07; } while (i != new_ack); EZSP_Serial.to_ack = new_ack; @@ -647,10 +647,10 @@ int32_t ZigbeeProcessInputRaw(class SBuffer &buf) { } else if (frame_type == 0xA0) { // NAK - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Received NAK %d, to_ack:%d, to_send:%d, to_end:%d"), + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Received NAK %d, to_ack:%d, to_send:%d, to_end:%d"), ack_num, EZSP_Serial.to_ack, EZSP_Serial.to_send, EZSP_Serial.to_end); EZSP_Serial.to_send = ack_num; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZIG: NAK, resending packet %d"), ack_num); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZIG: NAK, resending packet %d"), ack_num); } else if (control_byte == 0xC1) { // RSTACK @@ -676,7 +676,7 @@ int32_t ZigbeeProcessInputRaw(class SBuffer &buf) { } else { // Unknown - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZIG: Received unknown control byte 0x%02X"), control_byte); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZIG: Received unknown control byte 0x%02X"), control_byte); } } else { // DATA Frame @@ -883,7 +883,7 @@ void ZigbeeOutputLoop(void) { #ifdef USE_ZIGBEE_EZSP // while (EZSP_Serial.to_send != EZSP_Serial.to_end) { if (EZSP_Serial.to_send != EZSP_Serial.to_end) { // we send only one packet per tick to lower the chance of NAK - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Something to_send, to_ack:%d, to_send:%d, to_end:%d"), + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ZIG: Something to_send, to_ack:%d, to_send:%d, to_end:%d"), EZSP_Serial.to_ack, EZSP_Serial.to_send, EZSP_Serial.to_end); // we have a frame waiting to be sent ZigbeeEZSPSendDATA_frm(true, EZSP_Serial.to_send, EZSP_Serial.from_ack); diff --git a/tasmota/xdrv_23_zigbee_9a_upload.ino b/tasmota/xdrv_23_zigbee_9a_upload.ino index e4b154dac..a4fcbf1ac 100644 --- a/tasmota/xdrv_23_zigbee_9a_upload.ino +++ b/tasmota/xdrv_23_zigbee_9a_upload.ino @@ -251,7 +251,7 @@ bool ZigbeeUploadBootloaderPrompt(void) { if (buf_len) { char hex_char[256]; ToHex_P(serial_buffer, buf_len, hex_char, 256); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("XMD: Rcvd %s"), hex_char); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("XMD: Rcvd %s"), hex_char); } return ((4 == ZbUpload.byte_counter) && (millis() > XModem.flush_delay)); @@ -264,7 +264,7 @@ bool ZigbeeUploadXmodem(void) { } #ifdef ZIGBEE_BOOTLOADER_SOFTWARE_RESET_FIRST case ZBU_INIT: { // *** Init ESF32 bootloader - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Init bootloader")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Init bootloader")); ZbUpload.ota_step = ZBU_SOFTWARE_RESET; return false; // Keep Zigbee serial active } @@ -279,7 +279,7 @@ bool ZigbeeUploadXmodem(void) { } case ZBU_SOFTWARE_SEND: { if (millis() > XModem.timeout) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader software reset send timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader software reset send timeout")); ZbUpload.ota_step = ZBU_HARDWARE_RESET; return true; } @@ -304,17 +304,17 @@ bool ZigbeeUploadXmodem(void) { case ZBU_PROMPT: { // *** Wait for prompt and select option upload ebl if (millis() > XModem.timeout) { if (ZBU_SOFTWARE_RESET == ZbUpload.bootloader) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader software reset timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader software reset timeout")); ZbUpload.ota_step = ZBU_HARDWARE_RESET; } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader hardware reset timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader hardware reset timeout")); ZbUpload.ota_step = ZBU_ERROR; } return true; } #else // No ZIGBEE_BOOTLOADER_SOFTWARE_RESET_FIRST case ZBU_INIT: { // *** Init ESF32 bootloader - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Init bootloader")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Init bootloader")); ZigbeeUploadSetBootloader(0); // Reboot MCU EFR32 which returns below text XModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EBL prompt XModem.delay = millis() + (2 * XMODEM_FLUSH_DELAY); @@ -324,7 +324,7 @@ bool ZigbeeUploadXmodem(void) { } case ZBU_PROMPT: { // *** Wait for prompt and select option upload ebl if (millis() > XModem.timeout) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader timeout")); ZbUpload.ota_step = ZBU_ERROR; return true; } @@ -344,7 +344,7 @@ bool ZigbeeUploadXmodem(void) { // 3. ebl info // BL > if (ZigbeeUploadBootloaderPrompt()) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Init sync")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Init sync")); ZigbeeSerial->flush(); ZigbeeSerial->write('1'); // upload ebl if (TasmotaGlobal.sleep > 0) { @@ -358,7 +358,7 @@ bool ZigbeeUploadXmodem(void) { } case ZBU_SYNC: { // *** Handle file upload using XModem - sync if (millis() > XModem.timeout) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: SYNC timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: SYNC timeout")); ZbUpload.ota_step = ZBU_ERROR; return true; } @@ -371,7 +371,7 @@ bool ZigbeeUploadXmodem(void) { XModem.packetNo = 1; ZbUpload.byte_counter = 0; ZbUpload.ota_step = ZBU_UPLOAD; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Init packet send")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Init packet send")); } } break; @@ -379,7 +379,7 @@ bool ZigbeeUploadXmodem(void) { case ZBU_UPLOAD: { // *** Handle file upload using XModem - upload if (ZigbeeUploadAvailable()) { if (!XModemSendPacket(XModem.packetNo)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Packet send failed")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Packet send failed")); ZbUpload.ota_step = ZBU_ERROR; return true; } @@ -401,14 +401,14 @@ bool ZigbeeUploadXmodem(void) { // its XModem state machine waits a sufficient amount of time to allow this checksum process // to occur without timing out on the response just before the EOT is sent. if (millis() > XModem.timeout) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: EOT ACK timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: EOT ACK timeout")); ZbUpload.ota_step = ZBU_ERROR; return true; } if (ZigbeeSerial->available()) { char xmodem_ack = XModemWaitACK(); if (XM_ACK == xmodem_ack) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: " D_SUCCESSFUL)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: " D_SUCCESSFUL)); XModem.timeout = millis() + (30 * 1000); // Allow 30 seconds to receive EBL prompt ZbUpload.byte_counter = 0; ZbUpload.ota_step = ZBU_COMPLETE; @@ -418,7 +418,7 @@ bool ZigbeeUploadXmodem(void) { } case ZBU_COMPLETE: { // *** Wait for Serial upload complete EBL prompt if (millis() > XModem.timeout) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader timeout")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: Bootloader timeout")); ZbUpload.ota_step = ZBU_ERROR; return true; } else { @@ -440,7 +440,7 @@ bool ZigbeeUploadXmodem(void) { case ZBU_ERROR: ZbUpload.state = ZBU_ERROR; case ZBU_DONE: { // *** Clean up and restart to disable bootloader and use new firmware - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("XMD: " D_RESTARTING)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("XMD: " D_RESTARTING)); ZigbeeUploadSetBootloader(1); // Disable bootloader and reset MCU - should happen at restart if (1 == TasmotaGlobal.sleep) { TasmotaGlobal.sleep = Settings.sleep; // Restore loop sleep @@ -539,9 +539,9 @@ void HandleZigbeeXfer(void) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR(D_UPLOAD_TRANSFER)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_UPLOAD_TRANSFER)); - WSContentStart_P(S_INFORMATION); + WSContentStart_P(PSTR(D_INFORMATION)); WSContentSend_P(HTTP_SCRIPT_XFER_STATE); WSContentSendStyle(); WSContentSend_P(PSTR("
" D_UPLOAD_TRANSFER " ...
")); diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 3f0d96d44..d1a20f219 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -32,7 +32,7 @@ const char kZbCommands[] PROGMEM = D_PRFX_ZB "|" // prefix D_CMND_ZIGBEE_STATUS "|" D_CMND_ZIGBEE_RESET "|" D_CMND_ZIGBEE_SEND "|" D_CMND_ZIGBEE_PROBE "|" D_CMND_ZIGBEE_FORGET "|" D_CMND_ZIGBEE_SAVE "|" D_CMND_ZIGBEE_NAME "|" D_CMND_ZIGBEE_BIND "|" D_CMND_ZIGBEE_UNBIND "|" D_CMND_ZIGBEE_PING "|" D_CMND_ZIGBEE_MODELID "|" - D_CMND_ZIGBEE_LIGHT "|" D_CMND_ZIGBEE_OCCUPANCY "|" + D_CMND_ZIGBEE_LIGHT "|" D_CMND_ZIGBEE_OCCUPANCY "|" D_CMND_ZIGBEE_RESTORE "|" D_CMND_ZIGBEE_BIND_STATE "|" D_CMND_ZIGBEE_MAP "|" D_CMND_ZIGBEE_CONFIG "|" D_CMND_ZIGBEE_DATA ; @@ -48,7 +48,7 @@ void (* const ZigbeeCommand[])(void) PROGMEM = { &CmndZbStatus, &CmndZbReset, &CmndZbSend, &CmndZbProbe, &CmndZbForget, &CmndZbSave, &CmndZbName, &CmndZbBind, &CmndZbUnbind, &CmndZbPing, &CmndZbModelId, - &CmndZbLight, &CmndZbOccupancy, + &CmndZbLight, &CmndZbOccupancy, &CmndZbRestore, &CmndZbBindState, &CmndZbMap, &CmndZbConfig, CmndZbData, }; @@ -65,7 +65,7 @@ void ZigbeeInit(void) // Check if settings in Flash are set if (PinUsed(GPIO_ZIGBEE_RX) && PinUsed(GPIO_ZIGBEE_TX)) { if (0 == Settings.zb_channel) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Randomizing Zigbee parameters, please check with 'ZbConfig'")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Randomizing Zigbee parameters, please check with 'ZbConfig'")); uint64_t mac64 = 0; // stuff mac address into 64 bits WiFi.macAddress((uint8_t*) &mac64); uint32_t esp_id = ESP_getChipId(); @@ -172,13 +172,13 @@ void zigbeeZCLSendStr(uint16_t shortaddr, uint16_t groupaddr, uint8_t endpoint, if ((0 == endpoint) && (BAD_SHORTADDR != shortaddr)) { // endpoint is not specified, let's try to find it from shortAddr, unless it's a group address endpoint = zigbee_devices.findFirstEndpoint(shortaddr); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZbSend: guessing endpoint 0x%02X"), endpoint); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZbSend: guessing endpoint 0x%02X"), endpoint); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZbSend: shortaddr 0x%04X, groupaddr 0x%04X, cluster 0x%04X, endpoint 0x%02X, cmd 0x%02X, data %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZbSend: shortaddr 0x%04X, groupaddr 0x%04X, cluster 0x%04X, endpoint 0x%02X, cmd 0x%02X, data %s"), shortaddr, groupaddr, cluster, endpoint, cmd, param); if ((0 == endpoint) && (BAD_SHORTADDR != shortaddr)) { // endpoint null is ok for group address - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZbSend: unspecified endpoint")); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZbSend: unspecified endpoint")); return; } @@ -238,7 +238,7 @@ bool ZbTuyaWrite(SBuffer & buf, const Z_attribute & attr, uint8_t transid) { buf.add8(0); // fn int32_t res = encodeSingleAttribute(buf, val_d, val_str, attr.attr_type); if (res < 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Error for Tuya attribute type %04X/%04X '0x%02X'"), attr.key.id.cluster, attr.key.id.attr_id, attr.attr_type); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Error for Tuya attribute type %04X/%04X '0x%02X'"), attr.key.id.cluster, attr.key.id.attr_id, attr.attr_type); return false; } return true; @@ -266,7 +266,7 @@ bool ZbAppendWriteBuf(SBuffer & buf, const Z_attribute & attr, bool prepend_stat if (res < 0) { // remove the attribute type we just added // buf.setLen(buf.len() - (operation == ZCL_READ_ATTRIBUTES_RESPONSE ? 4 : 3)); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Unsupported attribute type %04X/%04X '0x%02X'"), attr.key.id.cluster, attr.key.id.attr_id, attr.attr_type); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Unsupported attribute type %04X/%04X '0x%02X'"), attr.key.id.cluster, attr.key.id.attr_id, attr.attr_type); return false; } return true; @@ -326,7 +326,7 @@ void ZbSendReportWrite(class JsonParserToken val_pubwrite, class ZigbeeZCLSendMe if ((packet.cluster == 0XEF00) && (packet.cmd == ZCL_WRITE_ATTRIBUTES)) { // special case of Tuya / Moes attributes if (buf.len() > 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Only 1 attribute allowed for Tuya")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Only 1 attribute allowed for Tuya")); return; } packet.clusterSpecific = true; @@ -475,7 +475,7 @@ void ZbSendSend(class JsonParserToken val_cmd, uint16_t device, uint16_t groupad } } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZbSend: command_template = %s"), cmd_str.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZbSend: command_template = %s"), cmd_str.c_str()); if (0xFF == cmd_var) { // if command number is a variable, replace it with x cmd = x; x = y; // and shift other variables @@ -484,7 +484,7 @@ void ZbSendSend(class JsonParserToken val_cmd, uint16_t device, uint16_t groupad cmd = cmd_var; // or simply copy the cmd number } cmd_str = zigbeeCmdAddParams(cmd_str.c_str(), x, y, z); // fill in parameters - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZbSend: command_final = %s"), cmd_str.c_str()); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZbSend: command_final = %s"), cmd_str.c_str()); cmd_s = cmd_str.c_str(); } else { // we have zero command, pass through until last error for missing command @@ -526,7 +526,7 @@ void ZbSendSend(class JsonParserToken val_cmd, uint16_t device, uint16_t groupad // we have an unsupported command type, just ignore it and fallback to missing command } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZigbeeZCLSend device: 0x%04X, group: 0x%04X, endpoint:%d, cluster:0x%04X, cmd:0x%02X, send:\"%s\""), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZigbeeZCLSend device: 0x%04X, group: 0x%04X, endpoint:%d, cluster:0x%04X, cmd:0x%02X, send:\"%s\""), device, groupaddr, endpoint, cluster, cmd, cmd_s); zigbeeZCLSendStr(device, groupaddr, endpoint, clusterSpecific, manuf, cluster, cmd, cmd_s); ResponseCmndDone(); @@ -613,7 +613,7 @@ void ZbSendRead(JsonParserToken val_attr, ZigbeeZCLSendMessage & packet) { } } if (!found) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("ZIG: Unknown attribute name (ignored): %s"), key); + AddLog_P(LOG_LEVEL_INFO, PSTR("ZIG: Unknown attribute name (ignored): %s"), key); } } @@ -708,7 +708,7 @@ void CmndZbSend(void) { endpoint = 0xFF; // endpoint not used for group addresses, so use a dummy broadcast endpoint } else if (0 == endpoint) { // if it was not already specified, try to guess it endpoint = zigbee_devices.findFirstEndpoint(device); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ZIG: guessing endpoint %d"), endpoint); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ZIG: guessing endpoint %d"), endpoint); } if (0 == endpoint) { // after this, if it is still zero, then it's an error ResponseCmndChar_P(PSTR("Missing endpoint")); @@ -1140,7 +1140,7 @@ void CmndZbOccupancy(void) { // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered if (!device.valid()) { ResponseCmndChar_P(PSTR("Unknown device")); return; } - + int8_t occupancy_time = -1; if (p) { Z_Data_PIR & pir = (Z_Data_PIR&) device.data.getByType(Z_Data_Type::Z_PIR); @@ -1291,7 +1291,7 @@ void CmndZbPermitJoin(void) { Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{\"Status\":21,\"Message\":\"Pairing mode enabled\"}}")); MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEE_STATE)); zigbee.permit_end_time = millis() + duration * 1000; - AddLog_P2(LOG_LEVEL_INFO, "zigbee.permit_end_time = %d", zigbee.permit_end_time); + AddLog_P(LOG_LEVEL_INFO, "zigbee.permit_end_time = %d", zigbee.permit_end_time); } else { zigbee.permit_end_time = millis(); } @@ -1442,7 +1442,7 @@ bool parseDeviceInnerData(class Z_Device & device, JsonParserObject root) { case Zint32: *(int32_t*)attr_address = ival32; break; } } else if (conv_data_type != Z_Data_Type::Z_Unknown) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "attribute %s is wrong type %d (expected %d)"), attr.getStr(), (uint8_t)data_type, (uint8_t)conv_data_type); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "attribute %s is wrong type %d (expected %d)"), attr.getStr(), (uint8_t)data_type, (uint8_t)conv_data_type); } } } @@ -1603,7 +1603,7 @@ void CmndZbConfig(void) { if (zb_channel > 26) { zb_channel = 26; } // if network key is zero, we generate a truly random key with a hardware generator from ESP if ((0 == zb_precfgkey_l) && (0 == zb_precfgkey_h)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "generating random Zigbee network key")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "generating random Zigbee network key")); zb_precfgkey_l = (uint64_t)HwRandom() << 32 | HwRandom(); zb_precfgkey_h = (uint64_t)HwRandom() << 32 | HwRandom(); } @@ -1770,9 +1770,9 @@ void ZigbeeShow(bool json) "%s" // name "%s" // sbatt (Battery Indicator) "
" // slqi - ), shortaddr, - device.modelId ? device.modelId : "", - device.manufacturerId ? device.manufacturerId : "", + ), shortaddr, + device.modelId ? device.modelId : "", + device.manufacturerId ? device.manufacturerId : "", name, sbatt, slqi); if(device.validLqi()) { diff --git a/tasmota/xdrv_24_buzzer.ino b/tasmota/xdrv_24_buzzer.ino index 25411b7b1..8dcb949c9 100644 --- a/tasmota/xdrv_24_buzzer.ino +++ b/tasmota/xdrv_24_buzzer.ino @@ -97,7 +97,7 @@ void BuzzerBeep(uint32_t count, uint32_t on, uint32_t off, uint32_t tune, uint32 Buzzer.freq_mode = 0; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BUZ: %d(%d),%d,%d,0x%08X(0x%08X),%d"), count, Buzzer.count, on, off, tune, Buzzer.tune, Buzzer.freq_mode); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("BUZ: %d(%d),%d,%d,0x%08X(0x%08X),%d"), count, Buzzer.count, on, off, tune, Buzzer.tune, Buzzer.freq_mode); Buzzer.enable = (Buzzer.count > 0); if (Buzzer.enable) { diff --git a/tasmota/xdrv_26_ariluxrf.ino b/tasmota/xdrv_26_ariluxrf.ino index 8f23b54da..dc0010ac1 100644 --- a/tasmota/xdrv_26_ariluxrf.ino +++ b/tasmota/xdrv_26_ariluxrf.ino @@ -97,7 +97,8 @@ void AriluxRfHandler(void) } uint16_t stored_hostcode = Settings.rf_code[1][6] << 8 | Settings.rf_code[1][7]; - DEBUG_DRIVER_LOG(PSTR(D_LOG_RFR D_HOST D_CODE " 0x%04X, " D_RECEIVED " 0x%06X"), stored_hostcode, Arilux.rf_received_value); +// DEBUG_DRIVER_LOG(PSTR(D_LOG_RFR D_HOST D_CODE " 0x%04X, " D_RECEIVED " 0x%06X"), stored_hostcode, Arilux.rf_received_value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_RFR D_HOST D_CODE " 0x%04X, " D_RECEIVED " 0x%06X"), stored_hostcode, Arilux.rf_received_value); if (hostcode == stored_hostcode) { char command[33]; diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 204f4a900..2a335a21a 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -107,7 +107,7 @@ void ShutterLogPos(uint32_t i) { char stemp2[10]; dtostrfd((float)Shutter[i].time / STEPS_PER_SECOND, 2, stemp2); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Shutter %d Real %d, Start %d, Stop %d, Dir %d, Delay %d, Rtc %s [s], Freq %d, PWM %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Shutter %d Real %d, Start %d, Stop %d, Dir %d, Delay %d, Rtc %s [s], Freq %d, PWM %d"), i+1, Shutter[i].real_position, Shutter[i].start_position, Shutter[i].target_position, Shutter[i].direction, Shutter[i].motordelay, stemp2, Shutter[i].pwm_velocity, Shutter[i].pwm_value); } @@ -144,7 +144,7 @@ void ShutterRtc50mS(void) case SHT_COUNTER: if (Shutter[i].accelerator) { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: accelerator i=%d -> %d"),i, Shutter[i].accelerator); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: accelerator i=%d -> %d"),i, Shutter[i].accelerator); ShutterUpdateVelocity(i); analogWriteFreq(Shutter[i].pwm_velocity); analogWrite(Pin(GPIO_PWM1, i), 50); @@ -164,7 +164,7 @@ int32_t ShutterPercentToRealPosition(uint32_t percent, uint32_t index) // check against DIV 0 for (uint32_t j = 0; j < 5; j++) { if (0 == Settings.shuttercoeff[j][index]) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SHT: RESET/INIT CALIBRATION MATRIX DIV 0")); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SHT: RESET/INIT CALIBRATION MATRIX DIV 0")); for (uint32_t k = 0; k < 5; k++) { Settings.shuttercoeff[k][index] = SHT_DIV_ROUND(calibrate_pos[k+1] * 1000, calibrate_pos[5]); } @@ -173,13 +173,13 @@ int32_t ShutterPercentToRealPosition(uint32_t percent, uint32_t index) for (uint32_t k = 0; k < 5; k++) { if ((percent * 10) >= Settings.shuttercoeff[k][index]) { realpos = SHT_DIV_ROUND(Shutter[index].open_max * calibrate_pos[k+1], 100); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Realposition TEMP1: %d, %% %d, coeff %d"), realpos, percent, Settings.shuttercoeff[i][index]); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Realposition TEMP1: %d, %% %d, coeff %d"), realpos, percent, Settings.shuttercoeff[i][index]); } else { if (0 == k) { realpos = SHT_DIV_ROUND(SHT_DIV_ROUND(percent * Shutter[index].open_max * calibrate_pos[k+1], Settings.shuttercoeff[k][index]), 10); } else { //uint16_t addon = ( percent*10 - Settings.shuttercoeff[i-1][index] ) * Shutter_Open_Max[index] * (calibrate_pos[i+1] - calibrate_pos[i]) / (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index]) / 100; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Realposition TEMP2: %d, %% %d, coeff %d"), addon, (calibrate_pos[i+1] - calibrate_pos[i]), (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index])); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Realposition TEMP2: %d, %% %d, coeff %d"), addon, (calibrate_pos[i+1] - calibrate_pos[i]), (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index])); realpos += SHT_DIV_ROUND(SHT_DIV_ROUND((percent*10 - Settings.shuttercoeff[k-1][index] ) * Shutter[index].open_max * (calibrate_pos[k+1] - calibrate_pos[k]), Settings.shuttercoeff[k][index] - Settings.shuttercoeff[k-1][index]), 100); } break; @@ -199,14 +199,14 @@ uint8_t ShutterRealToPercentPosition(int32_t realpos, uint32_t index) for (uint32_t j = 0; j < 5; j++) { if (realpos >= Shutter[index].open_max * calibrate_pos[j+1] / 100) { realpercent = SHT_DIV_ROUND(Settings.shuttercoeff[j][index], 10); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Realpercent TEMP1: %d, %% %d, coeff %d"), realpercent, realpos, Shutter_Open_Max[index] * calibrate_pos[i+1] / 100); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Realpercent TEMP1: %d, %% %d, coeff %d"), realpercent, realpos, Shutter_Open_Max[index] * calibrate_pos[i+1] / 100); } else { if (0 == j) { realpercent = SHT_DIV_ROUND(SHT_DIV_ROUND((realpos - SHT_DIV_ROUND(Shutter[index].open_max * calibrate_pos[j], 100)) * 10 * Settings.shuttercoeff[j][index], calibrate_pos[j+1]), Shutter[index].open_max); } else { //uint16_t addon = ( realpos - (Shutter_Open_Max[index] * calibrate_pos[i] / 100) ) * 10 * (Settings.shuttercoeff[i][index] - Settings.shuttercoeff[i-1][index]) / (calibrate_pos[i+1] - calibrate_pos[i])/ Shutter_Open_Max[index]; //uint16_t addon = ( percent*10 - Settings.shuttercoeff[i-1][index] ) * Shutter_Open_Max[index] * (calibrate_pos[i+1] - calibrate_pos[i]) / (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index]) / 100; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Realpercent TEMP2: %d, delta %d, %% %d, coeff %d"), addon,( realpos - (Shutter_Open_Max[index] * calibrate_pos[i] / 100) ) , (calibrate_pos[i+1] - calibrate_pos[i])* Shutter_Open_Max[index]/100, (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index])); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("Realpercent TEMP2: %d, delta %d, %% %d, coeff %d"), addon,( realpos - (Shutter_Open_Max[index] * calibrate_pos[i] / 100) ) , (calibrate_pos[i+1] - calibrate_pos[i])* Shutter_Open_Max[index]/100, (Settings.shuttercoeff[i][index] -Settings.shuttercoeff[i-1][index])); realpercent += SHT_DIV_ROUND(SHT_DIV_ROUND((realpos - SHT_DIV_ROUND(Shutter[index].open_max * calibrate_pos[j], 100)) * 10 * (Settings.shuttercoeff[j][index] - Settings.shuttercoeff[j-1][index]), (calibrate_pos[j+1] - calibrate_pos[j])), Shutter[index].open_max) ; } break; @@ -249,12 +249,12 @@ void ShutterInit(void) if (Settings.shutter_mode == SHT_UNDEF) { bool relay_in_interlock = false; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: mode undef.. calculate...")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: mode undef.. calculate...")); for (uint32_t j = 0; j < MAX_INTERLOCKS * Settings.flag.interlock; j++) { // CMND_INTERLOCK - Enable/disable interlock - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Interlock state i=%d %d, flag %d, , shuttermask %d, maskedIL %d"),i, Settings.interlock[i], Settings.flag.interlock,ShutterGlobal.RelayShutterMask, Settings.interlock[i]&ShutterGlobal.RelayShutterMask); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Interlock state i=%d %d, flag %d, , shuttermask %d, maskedIL %d"),i, Settings.interlock[i], Settings.flag.interlock,ShutterGlobal.RelayShutterMask, Settings.interlock[i]&ShutterGlobal.RelayShutterMask); if (Settings.interlock[j] && (Settings.interlock[j] & ShutterGlobal.RelayShutterMask)) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Relay in Interlock group")); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Relay in Interlock group")); relay_in_interlock = true; } } @@ -291,7 +291,7 @@ void ShutterInit(void) Settings.shuttercoeff[1][i] = Shutter[i].open_max/10 * (100 - Settings.shutter_set50percent[i] ) / 5000 ; Settings.shuttercoeff[0][i] = Shutter[i].open_max/100 - (Settings.shuttercoeff[1][i] * 10); Settings.shuttercoeff[2][i] = (int32_t)(Settings.shuttercoeff[0][i]*10 + 5 * Settings.shuttercoeff[1][i]) / 5; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT%d: Shutter[i].open_max %d, 50perc:%d, 0:%d, 1:%d 2:%d"), i, Shutter[i].open_max, Settings.shutter_set50percent[i], Settings.shuttercoeff[0][i],Settings.shuttercoeff[1][i],Settings.shuttercoeff[2][i]); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT%d: Shutter[i].open_max %d, 50perc:%d, 0:%d, 1:%d 2:%d"), i, Shutter[i].open_max, Settings.shutter_set50percent[i], Settings.shuttercoeff[0][i],Settings.shuttercoeff[1][i],Settings.shuttercoeff[2][i]); } ShutterGlobal.RelayShutterMask |= 3 << (Settings.shutter_startrelay[i] -1); @@ -311,8 +311,8 @@ void ShutterInit(void) } Shutter[i].close_velocity_max = ShutterGlobal.open_velocity_max*Shutter[i].open_time / Shutter[i].close_time; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d Openvel %d, Closevel: %d"),i, ShutterGlobal.open_velocity_max, Shutter[i].close_velocity_max); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT%d: Init. Pos: %d,inverted %d, locked %d, end stop time enabled %d, webButtons inverted %d"), + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d Openvel %d, Closevel: %d"),i, ShutterGlobal.open_velocity_max, Shutter[i].close_velocity_max); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT%d: Init. Pos: %d,inverted %d, locked %d, end stop time enabled %d, webButtons inverted %d"), i+1, Shutter[i].real_position, (Settings.shutter_options[i]&1) ? 1 : 0, (Settings.shutter_options[i]&2) ? 1 : 0, (Settings.shutter_options[i]&4) ? 1 : 0, (Settings.shutter_options[i]&8) ? 1 : 0); @@ -336,7 +336,7 @@ void ShutterReportPosition(bool always, uint32_t index) n = index+1; } for (i; i < n; i++) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Shutter %d: Real Pos: %d"), i+1,Shutter[i].real_position); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Shutter %d: Real Pos: %d"), i+1,Shutter[i].real_position); uint32_t position = ShutterRealToPercentPosition(Shutter[i].real_position, i); if (Shutter[i].direction != 0) { TasmotaGlobal.rules_flag.shutter_moving = 1; @@ -350,7 +350,7 @@ void ShutterReportPosition(bool always, uint32_t index) if (always || (TasmotaGlobal.rules_flag.shutter_moving)) { MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_SHUTTER)); // RulesProcess() now re-entry protected } - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: TasmotaGlobal.rules_flag.shutter_moving: %d, moved %d"), TasmotaGlobal.rules_flag.shutter_moving, TasmotaGlobal.rules_flag.shutter_moved); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: TasmotaGlobal.rules_flag.shutter_moving: %d, moved %d"), TasmotaGlobal.rules_flag.shutter_moving, TasmotaGlobal.rules_flag.shutter_moved); } void ShutterLimitRealAndTargetPositions(uint32_t i) { @@ -398,7 +398,7 @@ void ShutterDecellerateForStop(uint8_t i) int16_t missing_steps; Shutter[i].accelerator = -(ShutterGlobal.open_velocity_max / (Shutter[i].motordelay>4 ? (Shutter[i].motordelay*11)/10 : 4) ); while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator ) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: velocity: %ld, delta: %d"), Shutter[i].pwm_velocity, Shutter[i].accelerator ); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: velocity: %ld, delta: %d"), Shutter[i].pwm_velocity, Shutter[i].accelerator ); //Shutter[i].pwm_velocity = tmax(Shutter[i].pwm_velocity-Shutter[i].accelerator , 0); // Control will be done in RTC Ticker. delay(50); @@ -406,7 +406,7 @@ void ShutterDecellerateForStop(uint8_t i) if (ShutterGlobal.position_mode == SHT_COUNTER){ missing_steps = ((Shutter[i].target_position-Shutter[i].start_position)*Shutter[i].direction*ShutterGlobal.open_velocity_max/RESOLUTION/STEPS_PER_SECOND) - RtcSettings.pulse_counter[i]; //prepare for stop PWM - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Remain steps %d, counter %d, freq %d"), missing_steps, RtcSettings.pulse_counter[i] ,Shutter[i].pwm_velocity); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Remain steps %d, counter %d, freq %d"), missing_steps, RtcSettings.pulse_counter[i] ,Shutter[i].pwm_velocity); Shutter[i].accelerator = 0; Shutter[i].pwm_velocity = Shutter[i].pwm_velocity > 250 ? 250 : Shutter[i].pwm_velocity; analogWriteFreq(Shutter[i].pwm_velocity); @@ -418,7 +418,7 @@ void ShutterDecellerateForStop(uint8_t i) } analogWrite(Pin(GPIO_PWM1, i), 0); // removed with 8.3 because of reset caused by watchog Shutter[i].real_position = ShutterCalculatePosition(i); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Real %d, pulsecount %d, start %d"), Shutter[i].real_position,RtcSettings.pulse_counter[i], Shutter[i].start_position); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Real %d, pulsecount %d, start %d"), Shutter[i].real_position,RtcSettings.pulse_counter[i], Shutter[i].start_position); } Shutter[i].direction = 0; @@ -428,7 +428,7 @@ void ShutterDecellerateForStop(uint8_t i) } void ShutterPowerOff(uint8_t i) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Stop Shutter %d. Switchmode %d"), i,Shutter[i].switch_mode); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Stop Shutter %d. Switchmode %d"), i,Shutter[i].switch_mode); ShutterDecellerateForStop(i); if (Shutter[i].direction !=0) { Shutter[i].direction = 0; @@ -479,7 +479,7 @@ void ShutterUpdatePosition(void) XdrvRulesProcess(); ShutterGlobal.start_reported = 1; } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: time: %d, toBeAcc %d, current_stop_way %d,vel_cur %d, vel_max %d, act_vel_change %d, min_runtime_ms %d, act.pos %d, next_stop %d, target: %d, max_vel_change %d, dir: %d"),Shutter[i].time,toBeAcc,current_stop_way, + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: time: %d, toBeAcc %d, current_stop_way %d,vel_cur %d, vel_max %d, act_vel_change %d, min_runtime_ms %d, act.pos %d, next_stop %d, target: %d, max_vel_change %d, dir: %d"),Shutter[i].time,toBeAcc,current_stop_way, Shutter[i].pwm_velocity,velocity_max, Shutter[i].accelerator,min_runtime_ms,Shutter[i].real_position, next_possible_stop_position,Shutter[i].target_position,velocity_change_per_step_max,Shutter[i].direction); @@ -519,20 +519,20 @@ void ShutterAllowPreStartProcedure(uint8_t i) { #ifdef USE_RULES uint32_t uptime_Local=0; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start. var%d <99>=<%s>, max10s?"),i+i, rules_vars[i]); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start. var%d <99>=<%s>, max10s?"),i+i, rules_vars[i]); TasmotaGlobal.rules_flag.shutter_moving = 1; XdrvRulesProcess(); uptime_Local = TasmotaGlobal.uptime; while (uptime_Local+10 > TasmotaGlobal.uptime && (String)rules_vars[i] == "99") { loop(); } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start. Done")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Delay Start. Done")); #endif // USE_RULES } void ShutterStartInit(uint32_t i, int32_t direction, int32_t target_pos) { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: dir %d, delta1 %d, delta2 %d, grant %d"),direction, (Shutter[i].open_max - Shutter[i].real_position) / Shutter[i].close_velocity, Shutter[i].real_position / Shutter[i].close_velocity, 2+Shutter[i].motordelay); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: dir %d, delta1 %d, delta2 %d, grant %d"),direction, (Shutter[i].open_max - Shutter[i].real_position) / Shutter[i].close_velocity, Shutter[i].real_position / Shutter[i].close_velocity, 2+Shutter[i].motordelay); if ( ( (1 == direction) && ((Shutter[i].open_max - Shutter[i].real_position) / 100 <= 2) ) || ( (-1 == direction) && (Shutter[i].real_position / Shutter[i].close_velocity <= 2)) ) { ShutterGlobal.skip_relay_change = 1; @@ -557,9 +557,9 @@ void ShutterStartInit(uint32_t i, int32_t direction, int32_t target_pos) ShutterGlobal.skip_relay_change = 0; TasmotaGlobal.rules_flag.shutter_moved = 0; ShutterGlobal.start_reported = 0; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: real %d, start %d, counter %d,freq_max %d, dir %d, freq %d"),Shutter[i].real_position, Shutter[i].start_position ,RtcSettings.pulse_counter[i],ShutterGlobal.open_velocity_max , Shutter[i].direction ,ShutterGlobal.open_velocity_max ); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: real %d, start %d, counter %d,freq_max %d, dir %d, freq %d"),Shutter[i].real_position, Shutter[i].start_position ,RtcSettings.pulse_counter[i],ShutterGlobal.open_velocity_max , Shutter[i].direction ,ShutterGlobal.open_velocity_max ); } - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Start shutter: %d from %d to %d in direction %d"), i, Shutter[i].start_position, Shutter[i].target_position, Shutter[i].direction); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Start shutter: %d from %d to %d in direction %d"), i, Shutter[i].start_position, Shutter[i].target_position, Shutter[i].direction); } int32_t ShutterCalculatePosition(uint32_t i) @@ -601,7 +601,7 @@ void ShutterRelayChanged(void) // SRC_IGNORE added because INTERLOCK function bite causes this as last source for changing the relay. //uint8 manual_relays_changed = ((ShutterGlobal.RelayCurrentMask >> (Settings.shutter_startrelay[i] -1)) & 3) && SRC_IGNORE != TasmotaGlobal.last_source && SRC_SHUTTER != TasmotaGlobal.last_source && SRC_PULSETIMER != TasmotaGlobal.last_source ; uint8 manual_relays_changed = ((ShutterGlobal.RelayCurrentMask >> (Settings.shutter_startrelay[i] -1)) & 3) && SRC_SHUTTER != TasmotaGlobal.last_source && SRC_PULSETIMER != TasmotaGlobal.last_source ; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: source: %s, powerstate_local %ld, ShutterGlobal.RelayCurrentMask %d, manual change %d"), i+1, GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource), powerstate_local,ShutterGlobal.RelayCurrentMask,manual_relays_changed); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: source: %s, powerstate_local %ld, ShutterGlobal.RelayCurrentMask %d, manual change %d"), i+1, GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource), powerstate_local,ShutterGlobal.RelayCurrentMask,manual_relays_changed); if (manual_relays_changed) { //ShutterGlobal.skip_relay_change = true; ShutterLimitRealAndTargetPositions(i); @@ -610,7 +610,7 @@ void ShutterRelayChanged(void) if (Shutter[i].direction != 0 && powerstate_local) { Shutter[i].target_position = Shutter[i].real_position; powerstate_local = 0; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor. Target: %ld, source: %s, powerstate_local %ld, ShutterGlobal.RelayCurrentMask %d, manual change %d"), i+1, Shutter[i].target_position, GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource), powerstate_local,ShutterGlobal.RelayCurrentMask,manual_relays_changed); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor. Target: %ld, source: %s, powerstate_local %ld, ShutterGlobal.RelayCurrentMask %d, manual change %d"), i+1, Shutter[i].target_position, GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource), powerstate_local,ShutterGlobal.RelayCurrentMask,manual_relays_changed); } break; default: @@ -632,7 +632,7 @@ void ShutterRelayChanged(void) ShutterStartInit(i, -1, 0); break; default: - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor."),i); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor."),i); Shutter[i].target_position = Shutter[i].real_position; } break; @@ -645,7 +645,7 @@ void ShutterRelayChanged(void) ShutterStartInit(i, -1, 0); break; default: - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor."),i); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Switch OFF motor."),i); Shutter[i].target_position = Shutter[i].real_position; } break; @@ -653,7 +653,7 @@ void ShutterRelayChanged(void) switch (powerstate_local) { case 1: ShutterStartInit(i, Shutter[i].lastdirection*-1 , Shutter[i].lastdirection == 1 ? 0 : Shutter[i].open_max); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d Garage. NewTarget %d"), i, Shutter[i].target_position); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d Garage. NewTarget %d"), i, Shutter[i].target_position); break; default: Shutter[i].target_position = Shutter[i].real_position; @@ -661,7 +661,7 @@ void ShutterRelayChanged(void) } // switch (ShutterGlobal.position_mode) - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Target: %ld, powerstatelocal %d"), i+1, Shutter[i].target_position, powerstate_local); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Shutter %d: Target: %ld, powerstatelocal %d"), i+1, Shutter[i].target_position, powerstate_local); } // if (manual_relays_changed) } // for (uint32_t i = 0; i < TasmotaGlobal.shutters_present; i++) } @@ -752,15 +752,15 @@ void ShutterButtonHandler(void) // check for simultaneous shutter button press uint32 min_shutterbutton_press_counter = -1; // -1 == max(uint32) for (uint32_t i = 0; i < MAX_KEYS; i++) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Settings.shutter_button[i] %ld, shutter_index %d, Button.press_counter[i] %d, min_shutterbutton_press_counter %d, i %d"), Settings.shutter_button[i], shutter_index, Button.press_counter[i] , min_shutterbutton_press_counter, i); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Settings.shutter_button[i] %ld, shutter_index %d, Button.press_counter[i] %d, min_shutterbutton_press_counter %d, i %d"), Settings.shutter_button[i], shutter_index, Button.press_counter[i] , min_shutterbutton_press_counter, i); if ((button_index != i) && (Settings.shutter_button[i] & (1<<31)) && ((Settings.shutter_button[i] & 0x03) == shutter_index) && (i != button_index) && (Button.press_counter[i] < min_shutterbutton_press_counter)) { min_shutterbutton_press_counter = Button.press_counter[i]; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: min_shutterbutton_press_counter %d"), min_shutterbutton_press_counter); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: min_shutterbutton_press_counter %d"), min_shutterbutton_press_counter); } } if (min_shutterbutton_press_counter == Button.press_counter[button_index]) { // simultaneous shutter button press detected - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: simultanous presss deteced")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: simultanous presss deteced")); press_index = Button.press_counter[button_index]; for (uint32_t i = 0; i < MAX_KEYS; i++) if ((Settings.shutter_button[i] & (1<<31)) && ((Settings.shutter_button[i] & 0x03) != shutter_index)) @@ -807,7 +807,7 @@ void ShutterButtonHandler(void) if (Settings.shutter_startrelay[shutter_index] && Settings.shutter_startrelay[shutter_index] <9) { uint8_t pos_press_index = (buttonState == SHT_PRESSED_HOLD) ? 3 : (press_index-1); if (pos_press_index>3) pos_press_index=3; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: shutter %d, button %d = %d (single=1, double=2, tripple=3, hold=4)"), shutter_index+1, button_index+1, pos_press_index+1); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: shutter %d, button %d = %d (single=1, double=2, tripple=3, hold=4)"), shutter_index+1, button_index+1, pos_press_index+1); XdrvMailbox.index = shutter_index +1; TasmotaGlobal.last_source = SRC_BUTTON; XdrvMailbox.data_len = 0; @@ -825,7 +825,7 @@ void ShutterButtonHandler(void) CmndShutterStop(); } else { XdrvMailbox.payload = position = (position-1)<<1; - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: shutter %d -> %d"), shutter_index+1, position); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: shutter %d -> %d"), shutter_index+1, position); if (102 == position) { XdrvMailbox.payload = XdrvMailbox.index; CmndShutterToggle(); @@ -866,7 +866,7 @@ void ShutterSetPosition(uint32_t device, uint32_t position) void ShutterToggle(bool dir) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Payload toggle: %d, i %d, dir %d"), XdrvMailbox.payload, XdrvMailbox.index, dir); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Payload toggle: %d, i %d, dir %d"), XdrvMailbox.payload, XdrvMailbox.index, dir); if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) { XdrvMailbox.index = XdrvMailbox.payload; } @@ -890,7 +890,7 @@ void ShutterToggle(bool dir) void CmndShutterOpen(void) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Payload open: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Payload open: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index); if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) { XdrvMailbox.index = XdrvMailbox.payload; } @@ -913,7 +913,7 @@ void CmndShutterStopOpen(void) void CmndShutterClose(void) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Payload close: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Payload close: %d, i %d"), XdrvMailbox.payload, XdrvMailbox.index); if ((1 == XdrvMailbox.index) && (XdrvMailbox.payload != -99)) { XdrvMailbox.index = XdrvMailbox.payload; } @@ -979,7 +979,7 @@ void CmndShutterStop(void) uint32_t i = XdrvMailbox.index -1; if (Shutter[i].direction != 0) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT: Stop moving %d: dir: %d"), XdrvMailbox.index, Shutter[i].direction); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT: Stop moving %d: dir: %d"), XdrvMailbox.index, Shutter[i].direction); int32_t temp_realpos = ShutterCalculatePosition(i); XdrvMailbox.payload = ShutterRealToPercentPosition(temp_realpos, i); @@ -998,7 +998,7 @@ void CmndShutterStop(void) void CmndShutterIncDec(void) { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Change in: payload %s (%d), payload %d, idx %d, src %d"), XdrvMailbox.data , XdrvMailbox.data_len, XdrvMailbox.payload , XdrvMailbox.index, TasmotaGlobal.last_source ); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Change in: payload %s (%d), payload %d, idx %d, src %d"), XdrvMailbox.data , XdrvMailbox.data_len, XdrvMailbox.payload , XdrvMailbox.index, TasmotaGlobal.last_source ); if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= TasmotaGlobal.shutters_present)) { if (XdrvMailbox.data_len > 0) { XdrvMailbox.payload = ShutterRealToPercentPosition(Shutter[XdrvMailbox.index-1].target_position, XdrvMailbox.index-1)+XdrvMailbox.payload; @@ -1016,7 +1016,7 @@ void CmndShutterPosition(void) if (!(Settings.shutter_options[XdrvMailbox.index-1] & 2)) { uint32_t index = XdrvMailbox.index-1; //limit the payload - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Pos. in: payload %s (%d), payload %d, idx %d, src %d"), XdrvMailbox.data , XdrvMailbox.data_len, XdrvMailbox.payload , XdrvMailbox.index, TasmotaGlobal.last_source ); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Pos. in: payload %s (%d), payload %d, idx %d, src %d"), XdrvMailbox.data , XdrvMailbox.data_len, XdrvMailbox.payload , XdrvMailbox.index, TasmotaGlobal.last_source ); // value 0 with data_len > 0 can mean Open // special handling fo UP,DOWN,TOGGLE,STOP command comming with payload -99 @@ -1053,7 +1053,7 @@ void CmndShutterPosition(void) Shutter[index].target_position = ShutterPercentToRealPosition(target_pos_percent, index); //Shutter[i].accelerator[index] = ShutterGlobal.open_velocity_max / ((Shutter[i].motordelay[index] > 0) ? Shutter[i].motordelay[index] : 1); //Shutter[i].target_position[index] = XdrvMailbox.payload < 5 ? Settings.shuttercoeff[2][index] * XdrvMailbox.payload : Settings.shuttercoeff[1][index] * XdrvMailbox.payload + Settings.shuttercoeff[0,index]; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: lastsource %d:, real %d, target %d, payload %d"), TasmotaGlobal.last_source, Shutter[index].real_position ,Shutter[index].target_position,target_pos_percent); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: lastsource %d:, real %d, target %d, payload %d"), TasmotaGlobal.last_source, Shutter[index].real_position ,Shutter[index].target_position,target_pos_percent); } if ( (target_pos_percent >= 0) && (target_pos_percent <= 100) && abs(Shutter[index].target_position - Shutter[index].real_position ) / Shutter[index].close_velocity > 2) { if (Settings.shutter_options[index] & 4) { @@ -1090,7 +1090,7 @@ void CmndShutterPosition(void) case SHT_TIME_GARAGE: if (!ShutterGlobal.skip_relay_change) { if (new_shutterdirection == Shutter[index].lastdirection) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("SHT: Garage not move in this direction: %d"), Shutter[index].switch_mode == SHT_PULSE); + AddLog_P(LOG_LEVEL_INFO, PSTR("SHT: Garage not move in this direction: %d"), Shutter[index].switch_mode == SHT_PULSE); for (uint8_t k=0 ; k <= (uint8_t)(Shutter[index].switch_mode == SHT_PULSE) ; k++) { ExecuteCommandPowerShutter(Settings.shutter_startrelay[index], 1, SRC_SHUTTER); delay(500); @@ -1400,7 +1400,7 @@ void CmndShutterPwmRange(void) } Settings.shutter_pwmrange[i][XdrvMailbox.index -1] = field; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SHT%d: Init1. pwmmin %d, pwmmax %d"), XdrvMailbox.index , Settings.shutter_pwmrange[0][XdrvMailbox.index -1], Settings.shutter_pwmrange[1][XdrvMailbox.index -1]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SHT%d: Init1. pwmmin %d, pwmmax %d"), XdrvMailbox.index , Settings.shutter_pwmrange[0][XdrvMailbox.index -1], Settings.shutter_pwmrange[1][XdrvMailbox.index -1]); ShutterInit(); ResponseCmndIdxChar(XdrvMailbox.data); } else { @@ -1433,7 +1433,7 @@ void CmndShutterCalibration(void) Settings.shutter_set50percent[XdrvMailbox.index -1] = 50; for (i = 0; i < 5; i++) { Settings.shuttercoeff[i][XdrvMailbox.index -1] = SHT_DIV_ROUND((uint32_t)messwerte[i] * 1000, messwerte[4]); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Settings.shuttercoeff: %d, i: %d, value: %d, messwert %d"), i,XdrvMailbox.index -1,Settings.shuttercoeff[i][XdrvMailbox.index -1], messwerte[i]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Settings.shuttercoeff: %d, i: %d, value: %d, messwert %d"), i,XdrvMailbox.index -1,Settings.shuttercoeff[i][XdrvMailbox.index -1], messwerte[i]); } ShutterInit(); ResponseCmndIdxChar(XdrvMailbox.data); @@ -1514,7 +1514,7 @@ bool Xdrv27(uint8_t function) char stemp1[10]; // extract the number of the relay that was switched and save for later in Update Position. ShutterGlobal.RelayCurrentMask = XdrvMailbox.index ^ ShutterGlobal.RelayOldMask; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Switched relay: %d by %s"), ShutterGlobal.RelayCurrentMask,GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource)); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Switched relay: %d by %s"), ShutterGlobal.RelayCurrentMask,GetTextIndexed(stemp1, sizeof(stemp1), TasmotaGlobal.last_source, kCommandSource)); ShutterRelayChanged(); ShutterGlobal.RelayOldMask = XdrvMailbox.index; break; @@ -1527,10 +1527,10 @@ bool Xdrv27(uint8_t function) } ShutterGlobal.RelayCurrentMask >>= 1; } - //AddLog_P2(LOG_LEVEL_ERROR, PSTR("SHT: skip relay change: %d"),i+1); + //AddLog_P(LOG_LEVEL_ERROR, PSTR("SHT: skip relay change: %d"),i+1); result = true; ShutterGlobal.skip_relay_change = 0; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Skipping switch off relay %d"),i); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Skipping switch off relay %d"),i); ExecuteCommandPowerShutter(i+1, 0, SRC_SHUTTER); } break; diff --git a/tasmota/xdrv_28_pcf8574.ino b/tasmota/xdrv_28_pcf8574.ino index a129fef62..f7939a815 100644 --- a/tasmota/xdrv_28_pcf8574.ino +++ b/tasmota/xdrv_28_pcf8574.ino @@ -48,14 +48,14 @@ void Pcf8574SwitchRelay(void) for (uint32_t i = 0; i < TasmotaGlobal.devices_present; i++) { uint8_t relay_state = bitRead(XdrvMailbox.index, i); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PCF: Pcf8574.max_devices %d requested pin %d"), Pcf8574.max_devices,Pcf8574.pin[i]); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("PCF: Pcf8574.max_devices %d requested pin %d"), Pcf8574.max_devices,Pcf8574.pin[i]); if (Pcf8574.max_devices > 0 && Pcf8574.pin[i] < 99) { uint8_t board = Pcf8574.pin[i]>>3; uint8_t oldpinmask = Pcf8574.pin_mask[board]; uint8_t _val = bitRead(TasmotaGlobal.rel_inverted, i) ? !relay_state : relay_state; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PCF: Pcf8574SwitchRelay %d on pin %d"), i,state); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("PCF: Pcf8574SwitchRelay %d on pin %d"), i,state); if (_val) { Pcf8574.pin_mask[board] |= _val << (Pcf8574.pin[i]&0x7); @@ -79,7 +79,7 @@ void Pcf8574Init(void) #ifdef USE_MCP230xx_ADDR if (USE_MCP230xx_ADDR == pcf8574_address) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("PCF: Address 0x%02x reserved for MCP320xx skipped"), pcf8574_address); + AddLog_P(LOG_LEVEL_INFO, PSTR("PCF: Address 0x%02x reserved for MCP320xx skipped"), pcf8574_address); pcf8574_address++; if ((PCF8574_ADDR1 +7) == pcf8574_address) { // Support I2C addresses 0x20 to 0x26 and 0x39 to 0x3F pcf8574_address = PCF8574_ADDR2 +1; @@ -87,7 +87,7 @@ void Pcf8574Init(void) } #endif - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PCF: Probing addr: 0x%x for PCF8574"), pcf8574_address); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("PCF: Probing addr: 0x%x for PCF8574"), pcf8574_address); if (I2cSetDevice(pcf8574_address)) { Pcf8574.type = true; @@ -115,11 +115,11 @@ void Pcf8574Init(void) Pcf8574.max_connected_ports = 0; // reset no of devices to avoid duplicate ports on duplicate init. for (uint32_t idx = 0; idx < Pcf8574.max_devices; idx++) { // suport up to 8 boards PCF8574 - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PCF: Device %d config 0x%02x"), idx +1, Settings.pcf8574_config[idx]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PCF: Device %d config 0x%02x"), idx +1, Settings.pcf8574_config[idx]); for (uint32_t i = 0; i < 8; i++) { uint8_t _result = Settings.pcf8574_config[idx] >> i &1; - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PCF: I2C shift i %d: %d. Powerstate: %d, TasmotaGlobal.devices_present: %d"), i,_result, Settings.power>>i&1, TasmotaGlobal.devices_present); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("PCF: I2C shift i %d: %d. Powerstate: %d, TasmotaGlobal.devices_present: %d"), i,_result, Settings.power>>i&1, TasmotaGlobal.devices_present); if (_result > 0) { Pcf8574.pin[TasmotaGlobal.devices_present] = i + 8 * idx; bitWrite(TasmotaGlobal.rel_inverted, TasmotaGlobal.devices_present, Settings.flag3.pcf8574_ports_inverted); // SetOption81 - Invert all ports on PCF8574 devices @@ -128,7 +128,7 @@ void Pcf8574Init(void) } } } - AddLog_P2(LOG_LEVEL_INFO, PSTR("PCF: Total devices %d, PCF8574 output ports %d"), Pcf8574.max_devices, Pcf8574.max_connected_ports); + AddLog_P(LOG_LEVEL_INFO, PSTR("PCF: Total devices %d, PCF8574 output ports %d"), Pcf8574.max_devices, Pcf8574.max_connected_ports); } } @@ -219,7 +219,7 @@ void Pcf8574SaveSettings(void) } } //Settings.pcf8574_config[0] = (!strlen(webServer->arg("i2cs0").c_str())) ? 0 : atoi(webServer->arg("i2cs0").c_str()); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("PCF: I2C Board: %d, Config: %2x")), idx, Settings.pcf8574_config[idx]; + //AddLog_P(LOG_LEVEL_INFO, PSTR("PCF: I2C Board: %d, Config: %2x")), idx, Settings.pcf8574_config[idx]; } } diff --git a/tasmota/xdrv_29_deepsleep.ino b/tasmota/xdrv_29_deepsleep.ino index bb1a7744c..234d48e47 100644 --- a/tasmota/xdrv_29_deepsleep.ino +++ b/tasmota/xdrv_29_deepsleep.ino @@ -68,7 +68,7 @@ void DeepSleepReInit(void) if ((RtcSettings.ultradeepsleep > DEEPSLEEP_MAX_CYCLE) && (RtcSettings.ultradeepsleep < 1700000000)) { // Go back to sleep after 60 minutes if requested deepsleep has not been reached RtcSettings.ultradeepsleep = RtcSettings.ultradeepsleep - DEEPSLEEP_MAX_CYCLE; - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DSL: Remain DeepSleep %d"), RtcSettings.ultradeepsleep); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DSL: Remain DeepSleep %d"), RtcSettings.ultradeepsleep); RtcSettingsSave(); RtcRebootReset(); #ifdef ESP8266 @@ -95,7 +95,7 @@ void DeepSleepPrepare(void) (RtcSettings.deepsleep_slip < 9000) || (RtcSettings.deepsleep_slip > 11000) || (RtcSettings.nextwakeup > (UtcTime() + Settings.deepsleep))) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR("DSL: Reset wrong settings wakeup: %ld, slip %ld"), RtcSettings.nextwakeup, RtcSettings.deepsleep_slip ); + AddLog_P(LOG_LEVEL_ERROR, PSTR("DSL: Reset wrong settings wakeup: %ld, slip %ld"), RtcSettings.nextwakeup, RtcSettings.deepsleep_slip ); RtcSettings.nextwakeup = 0; RtcSettings.deepsleep_slip = 10000; } diff --git a/tasmota/xdrv_30_exs_dimmer.ino b/tasmota/xdrv_30_exs_dimmer.ino index e882cdd84..df32b6109 100644 --- a/tasmota/xdrv_30_exs_dimmer.ino +++ b/tasmota/xdrv_30_exs_dimmer.ino @@ -220,9 +220,9 @@ void ExsSetBri(uint8_t device, uint8_t bri) void ExsSyncState(uint8_t device) { #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Channel %d Power Want %d, Is %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EXS: Channel %d Power Want %d, Is %d"), device, bitRead(Exs.power, device), Exs.dimmer.channel[device].dimm); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Set Channel %d Brightness Want %d, Is %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EXS: Set Channel %d Brightness Want %d, Is %d"), device, Exs.dimm[device], Exs.dimmer.channel[device].bright_tbl); #endif @@ -241,7 +241,7 @@ void ExsSyncState(uint8_t device) bool ExsSyncState() { #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Serial %p, Cmd %d"), ExsSerial, Exs.cmd_status); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EXS: Serial %p, Cmd %d"), ExsSerial, Exs.cmd_status); #endif if (!ExsSerial || Exs.cmd_status != 0) @@ -255,7 +255,7 @@ bool ExsSyncState() void ExsDebugState() { #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: MCU v%d.%d, c0: On:%d,Dim:%d,Tbl:%d(%d%%), c1: On:%d,Dim:%d,Tbl:%d(%d%%), ChLock: %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EXS: MCU v%d.%d, c0: On:%d,Dim:%d,Tbl:%d(%d%%), c1: On:%d,Dim:%d,Tbl:%d(%d%%), ChLock: %d"), Exs.dimmer.version_major, Exs.dimmer.version_minor, Exs.dimmer.channel[0].on, Exs.dimmer.channel[0].dimm, Exs.dimmer.channel[0].bright_tbl, @@ -384,7 +384,7 @@ bool ExsSetChannels(void) bool ExsSetPower(void) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("EXS: Set Power, Device %d, Power 0x%02x"), + AddLog_P(LOG_LEVEL_INFO, PSTR("EXS: Set Power, Device %d, Power 0x%02x"), TasmotaGlobal.active_device, XdrvMailbox.index); Exs.power = XdrvMailbox.index; @@ -396,7 +396,7 @@ void EsxMcuStart(void) int retries = 3; #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EXS: Request MCU configuration, PIN %d to Low"), Pin(GPIO_EXS_ENABLE)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EXS: Request MCU configuration, PIN %d to Low"), Pin(GPIO_EXS_ENABLE)); #endif pinMode(Pin(GPIO_EXS_ENABLE), OUTPUT); @@ -414,7 +414,7 @@ void EsxMcuStart(void) void ExsInit(void) { #ifdef EXS_DEBUG - AddLog_P2(LOG_LEVEL_INFO, PSTR("EXS: Starting Tx %d Rx %d"), Pin(GPIO_TXD), Pin(GPIO_RXD)); + AddLog_P(LOG_LEVEL_INFO, PSTR("EXS: Starting Tx %d Rx %d"), Pin(GPIO_TXD), Pin(GPIO_RXD)); #endif Exs.buffer = (uint8_t *)malloc(EXS_BUFFER_SIZE); @@ -442,7 +442,7 @@ void ExsSerialInput(void) yield(); uint8_t serial_in_byte = ExsSerial->read(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("EXS: Serial In Byte 0x%02x"), serial_in_byte); + AddLog_P(LOG_LEVEL_INFO, PSTR("EXS: Serial In Byte 0x%02x"), serial_in_byte); if (Exs.cmd_status == 0 && serial_in_byte == 0x7B) diff --git a/tasmota/xdrv_31_tasmota_client.ino b/tasmota/xdrv_31_tasmota_client.ino index 1f355f8de..9ba136b8f 100644 --- a/tasmota/xdrv_31_tasmota_client.ino +++ b/tasmota/xdrv_31_tasmota_client.ino @@ -287,30 +287,30 @@ uint8_t TasmotaClient_SetupFlash(void) { delay(1); } if (no_error) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Found bootloader")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Found bootloader")); } else { no_error = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Bootloader could not be found")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Bootloader could not be found")); } if (no_error) { if (TasmotaClient_execParam(CMND_STK_SET_DEVICE, ProgParams, sizeof(ProgParams))) { } else { no_error = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Could not configure device for programming (1)")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Could not configure device for programming (1)")); } } if (no_error) { if (TasmotaClient_execParam(CMND_STK_SET_DEVICE_EXT, ExtProgParams, sizeof(ExtProgParams))) { } else { no_error = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Could not configure device for programming (2)")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Could not configure device for programming (2)")); } } if (no_error) { if (TasmotaClient_execCmd(CMND_STK_ENTER_PROGMODE)) { } else { no_error = 0; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Failed to put bootloader into programming mode")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Failed to put bootloader into programming mode")); } } return no_error; @@ -345,7 +345,7 @@ void TasmotaClient_Flash(void) { SimpleHexParse hexParse = SimpleHexParse(); if (!TasmotaClient_SetupFlash()) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Flashing aborted!")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Flashing aborted!")); TClient.flashing = false; TasmotaGlobal.restart_flag = 2; return; @@ -383,7 +383,7 @@ void TasmotaClient_Flash(void) { } } TasmotaClient_exitProgMode(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Flash done!")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Flash done!")); TClient.flashing = false; TasmotaGlobal.restart_flag = 2; } @@ -433,7 +433,7 @@ void TasmotaClient_Init(void) { pinMode(Pin(GPIO_TASMOTACLIENT_RST), OUTPUT); TClient.SerialEnabled = true; TasmotaClient_Reset(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Enabled")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Enabled")); } } } @@ -448,10 +448,10 @@ void TasmotaClient_Init(void) { memcpy(&TClientSettings, &buffer, sizeof(TClientSettings)); if (20191129 == TClientSettings.features_version) { TClient.type = true; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Version %u"), TClientSettings.features_version); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Version %u"), TClientSettings.features_version); } else { if ((!TClient.unsupported) && (TClientSettings.features_version > 0)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("TCL: Version %u not supported!"), TClientSettings.features_version); + AddLog_P(LOG_LEVEL_INFO, PSTR("TCL: Version %u not supported!"), TClientSettings.features_version); TClient.unsupported = true; } } diff --git a/tasmota/xdrv_33_nrf24l01.ino b/tasmota/xdrv_33_nrf24l01.ino index 7b8f173f9..7c4d1b843 100644 --- a/tasmota/xdrv_33_nrf24l01.ino +++ b/tasmota/xdrv_33_nrf24l01.ino @@ -69,10 +69,10 @@ bool NRF24Detect(void) if (PinUsed(GPIO_SPI_CS) && PinUsed(GPIO_SPI_DC)) { if(NRF24initRadio()){ NRF24.chipType = 32; // SPACE - AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF24L01 initialized")); + AddLog_P(LOG_LEVEL_INFO,PSTR("NRF24L01 initialized")); if(NRF24radio.isPVariant()){ NRF24.chipType = 43; // + - AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF24L01+ detected")); + AddLog_P(LOG_LEVEL_INFO,PSTR("NRF24L01+ detected")); } return true; } diff --git a/tasmota/xdrv_36_keeloq.ino b/tasmota/xdrv_36_keeloq.ino index c271cf3f7..a1a392897 100644 --- a/tasmota/xdrv_36_keeloq.ino +++ b/tasmota/xdrv_36_keeloq.ino @@ -97,7 +97,7 @@ void GenerateDeviceCryptKey() jaroliftDevice.device_key_msb = k.decrypt(jaroliftDevice.serial | 0x60000000L); jaroliftDevice.device_key_lsb = k.decrypt(jaroliftDevice.serial | 0x20000000L); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("generated device keys: %08x %08x"), jaroliftDevice.device_key_msb, jaroliftDevice.device_key_lsb); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("generated device keys: %08x %08x"), jaroliftDevice.device_key_msb, jaroliftDevice.device_key_lsb); } void CmdSendButton(void) @@ -114,7 +114,7 @@ void CmdSendButton(void) DEBUG_DRIVER_LOG(LOG_LEVEL_DEBUG_MORE, PSTR("lsb: %08x"), jaroliftDevice.device_key_lsb); DEBUG_DRIVER_LOG(LOG_LEVEL_DEBUG_MORE, PSTR("serial: %08x"), jaroliftDevice.serial); DEBUG_DRIVER_LOG(LOG_LEVEL_DEBUG_MORE, PSTR("disc: %08x"), jaroliftDevice.disc); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("KLQ: count: %08x"), jaroliftDevice.count); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("KLQ: count: %08x"), jaroliftDevice.count); CreateKeeloqPacket(); jaroliftDevice.count++; @@ -236,8 +236,8 @@ void CreateKeeloqPacket() jaroliftDevice.enc = k.encrypt(result); jaroliftDevice.pack |= jaroliftDevice.enc; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("pack high: %08x"), jaroliftDevice.pack>>32); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("pack low: %08x"), jaroliftDevice.pack); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("pack high: %08x"), jaroliftDevice.pack>>32); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("pack low: %08x"), jaroliftDevice.pack); } void KeeloqInit() diff --git a/tasmota/xdrv_37_sonoff_d1.ino b/tasmota/xdrv_37_sonoff_d1.ino index a27420e2f..30b061775 100644 --- a/tasmota/xdrv_37_sonoff_d1.ino +++ b/tasmota/xdrv_37_sonoff_d1.ino @@ -50,7 +50,7 @@ void SonoffD1Received(void) if (action != SnfD1.power) { SnfD1.power = action; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SD1: Remote power (%d, %d)"), SnfD1.power, SnfD1.dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SD1: Remote power (%d, %d)"), SnfD1.power, SnfD1.dimmer); ExecuteCommandPower(1, action, SRC_SWITCH); } @@ -59,7 +59,7 @@ void SonoffD1Received(void) if (dimmer != SnfD1.dimmer) { SnfD1.dimmer = dimmer; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SD1: Remote dimmer (%d, %d)"), SnfD1.power, SnfD1.dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SD1: Remote dimmer (%d, %d)"), SnfD1.power, SnfD1.dimmer); char scmnd[20]; snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_DIMMER " %d"), SnfD1.dimmer); @@ -137,7 +137,7 @@ bool SonoffD1SendPower(void) if (action != SnfD1.power) { SnfD1.power = action; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SD1: Tasmota power (%d, %d)"), SnfD1.power, SnfD1.dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SD1: Tasmota power (%d, %d)"), SnfD1.power, SnfD1.dimmer); SonoffD1Send(); } @@ -152,7 +152,7 @@ bool SonoffD1SendDimmer(void) if (dimmer != SnfD1.dimmer) { SnfD1.dimmer = dimmer; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SD1: Tasmota dimmer (%d, %d)"), SnfD1.power, SnfD1.dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SD1: Tasmota dimmer (%d, %d)"), SnfD1.power, SnfD1.dimmer); SonoffD1Send(); } diff --git a/tasmota/xdrv_39_thermostat.ino b/tasmota/xdrv_39_thermostat.ino index a5c618af3..5feba2785 100644 --- a/tasmota/xdrv_39_thermostat.ino +++ b/tasmota/xdrv_39_thermostat.ino @@ -1272,58 +1272,58 @@ void ThermostatVirtualSwitchCtrState(uint8_t ctr_output) void ThermostatDebug(uint8_t ctr_output) { char result_chr[FLOATSZ]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("")); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("------ Thermostat Start ------")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("------ Thermostat Start ------")); dtostrfd(Thermostat[ctr_output].status.counter_seconds, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.counter_seconds: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.counter_seconds: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.thermostat_mode, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.thermostat_mode: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.thermostat_mode: %s"), result_chr); dtostrfd(Thermostat[ctr_output].diag.state_emergency, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].diag.state_emergency: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].diag.state_emergency: %s"), result_chr); dtostrfd(Thermostat[ctr_output].diag.output_inconsist_ctr, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].diag.output_inconsist_ctr: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].diag.output_inconsist_ctr: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.controller_mode, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.controller_mode: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.controller_mode: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.command_output, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.command_output: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.command_output: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.status_output, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_output: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_output: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.status_input, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_input: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_input: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.phase_hybrid_ctr, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.phase_hybrid_ctr: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.phase_hybrid_ctr: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.sensor_alive, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.sensor_alive: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.sensor_alive: %s"), result_chr); dtostrfd(Thermostat[ctr_output].status.status_cycle_active, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_cycle_active: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].status.status_cycle_active: %s"), result_chr); dtostrfd(Thermostat[ctr_output].temp_pi_error, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_pi_error: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_pi_error: %s"), result_chr); dtostrfd(Thermostat[ctr_output].temp_pi_accum_error, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_pi_accum_error: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_pi_accum_error: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_proportional_pi, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_proportional_pi: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_proportional_pi: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_integral_pi, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_integral_pi: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_integral_pi: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_total_pi, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_total_pi: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_total_pi: %s"), result_chr); dtostrfd(Thermostat[ctr_output].temp_measured_gradient, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_measured_gradient: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_measured_gradient: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_rampup_deadtime, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_rampup_deadtime: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_rampup_deadtime: %s"), result_chr); dtostrfd(Thermostat[ctr_output].temp_rampup_meas_gradient, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_rampup_meas_gradient: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_rampup_meas_gradient: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_ctr_changepoint, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_ctr_changepoint: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_ctr_changepoint: %s"), result_chr); dtostrfd(Thermostat[ctr_output].temp_rampup_output_off, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_rampup_output_off: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].temp_rampup_output_off: %s"), result_chr); dtostrfd(Thermostat[ctr_output].time_ctr_checkpoint, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_ctr_checkpoint: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("Thermostat[ctr_output].time_ctr_checkpoint: %s"), result_chr); dtostrfd(TasmotaGlobal.uptime, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("uptime: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("uptime: %s"), result_chr); dtostrfd(TasmotaGlobal.power, 0, result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("power: %s"), result_chr); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("------ Thermostat End ------")); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("power: %s"), result_chr); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("------ Thermostat End ------")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("")); } #endif // DEBUG_THERMOSTAT diff --git a/tasmota/xdrv_40_telegram.ino b/tasmota/xdrv_40_telegram.ino index ba1c6fde3..2ab1eb775 100644 --- a/tasmota/xdrv_40_telegram.ino +++ b/tasmota/xdrv_40_telegram.ino @@ -99,7 +99,7 @@ bool TelegramInit(void) { Telegram.next_update_id = 0; // Code of last read Message Telegram.message[0].text = ""; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TGM: Started")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TGM: Started")); } init_done = true; } @@ -107,7 +107,7 @@ bool TelegramInit(void) { } String TelegramConnectToTelegram(String command) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: Cmnd %s"), command.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: Cmnd %s"), command.c_str()); if (!TelegramInit()) { return ""; } @@ -115,7 +115,7 @@ String TelegramConnectToTelegram(String command) { uint32_t tls_connect_time = millis(); if (telegramClient->connect("api.telegram.org", 443)) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: Connected in %d ms, max ThunkStack used %d"), millis() - tls_connect_time, telegramClient->getMaxThunkStackUse()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: Connected in %d ms, max ThunkStack used %d"), millis() - tls_connect_time, telegramClient->getMaxThunkStackUse()); telegramClient->println("GET /"+command); @@ -144,7 +144,7 @@ String TelegramConnectToTelegram(String command) { } void TelegramGetUpdates(uint32_t offset) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: getUpdates")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: getUpdates")); if (!TelegramInit()) { return; } @@ -204,13 +204,13 @@ void TelegramGetUpdates(uint32_t offset) { // } // ]} - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); JsonParser parser((char*)response.c_str()); JsonParserObject root = parser.getRootObject(); if (root) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: Sent Update request messages up to %s"), offset.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: Sent Update request messages up to %s"), offset.c_str()); JsonParserArray arr = root[PSTR("result")]; uint32_t max_updates = arr.size(); @@ -238,18 +238,18 @@ void TelegramGetUpdates(uint32_t offset) { } Telegram.next_update_id = Telegram.message[i].update_id +1; // Write id of last read message - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Parsed update_id %d, chat_id %d, text \"%s\""), Telegram.message[i].update_id, Telegram.message[i].chat_id, Telegram.message[i].text.c_str()); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Parsed update_id %d, chat_id %d, text \"%s\""), Telegram.message[i].update_id, Telegram.message[i].chat_id, Telegram.message[i].text.c_str()); } } else { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: No new messages")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: No new messages")); } } else { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: Failed to update")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: Failed to update")); } } bool TelegramSendMessage(uint32_t chat_id, String text) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: sendMessage")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: sendMessage")); if (!TelegramInit()) { return false; } @@ -259,10 +259,10 @@ bool TelegramSendMessage(uint32_t chat_id, String text) { String command = "bot" + _token + "/sendMessage?chat_id=" + String(chat_id) + "&text=" + text; String response = TelegramConnectToTelegram(command); -// AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); if (response.startsWith("{\"ok\":true")) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TGM: Message sent")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("TGM: Message sent")); sent = true; } } @@ -272,7 +272,7 @@ bool TelegramSendMessage(uint32_t chat_id, String text) { /* void TelegramSendGetMe(void) { - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: getMe")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: getMe")); if (!TelegramInit()) { return; } @@ -282,7 +282,7 @@ void TelegramSendGetMe(void) { // {"ok":true,"result":{"id":1179906608,"is_bot":true,"first_name":"Tasmota","username":"tasmota_bot","can_join_groups":true,"can_read_all_group_messages":false,"supports_inline_queries":false}} -// AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); +// AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: Response %s"), response.c_str()); } */ diff --git a/tasmota/xdrv_41_tcp_bridge.ino b/tasmota/xdrv_41_tcp_bridge.ino index 88255fb6d..3bd1e045c 100644 --- a/tasmota/xdrv_41_tcp_bridge.ino +++ b/tasmota/xdrv_41_tcp_bridge.ino @@ -92,7 +92,7 @@ void TCPLoop(void) if (buf_len > 0) { char hex_char[TCP_BRIDGE_BUF_SIZE+1]; ToHex_P(tcp_buf, buf_len, hex_char, 256); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_TCP "from MCU: %s"), hex_char); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_TCP "from MCU: %s"), hex_char); for (uint32_t i=0; i 0) { char hex_char[TCP_BRIDGE_BUF_SIZE+1]; ToHex_P(tcp_buf, buf_len, hex_char, 256); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_TCP "to MCU/%d: %s"), i+1, hex_char); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_TCP "to MCU/%d: %s"), i+1, hex_char); TCPSerial->write(tcp_buf, buf_len); } } @@ -127,7 +127,7 @@ void TCPLoop(void) void TCPInit(void) { if (PinUsed(GPIO_TCP_RX) && PinUsed(GPIO_TCP_TX)) { tcp_buf = (uint8_t*) malloc(TCP_BRIDGE_BUF_SIZE); - if (!tcp_buf) { AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_TCP "could not allocate buffer")); return; } + if (!tcp_buf) { AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_TCP "could not allocate buffer")); return; } if (!Settings.tcp_baudrate) { Settings.tcp_baudrate = 115200 / 1200; } TCPSerial = new TasmotaSerial(Pin(GPIO_TCP_RX), Pin(GPIO_TCP_TX), TasmotaGlobal.seriallog_level ? 1 : 2, 0, TCP_BRIDGE_BUF_SIZE); // set a receive buffer of 256 bytes @@ -151,7 +151,7 @@ void CmndTCPStart(void) { int32_t tcp_port = XdrvMailbox.payload; if (server_tcp) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_TCP "Stopping TCP server")); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_TCP "Stopping TCP server")); server_tcp->stop(); delete server_tcp; server_tcp = nullptr; @@ -162,7 +162,7 @@ void CmndTCPStart(void) { } } if (tcp_port > 0) { - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_TCP "Starting TCP server on port %d"), tcp_port); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_TCP "Starting TCP server on port %d"), tcp_port); server_tcp = new WiFiServer(tcp_port); server_tcp->begin(); // start TCP server server_tcp->setNoDelay(true); diff --git a/tasmota/xdrv_42_i2s_audio.ino b/tasmota/xdrv_42_i2s_audio.ino index aa0979797..e06ffb2dc 100644 --- a/tasmota/xdrv_42_i2s_audio.ino +++ b/tasmota/xdrv_42_i2s_audio.ino @@ -54,8 +54,6 @@ AudioFileSourceID3 *id3; AudioGeneratorMP3 *decoder = NULL; void *mp3ram = NULL; -#define I2SAUDIO_TASK_STACK_SIZE 8192 - #ifdef ESP8266 const int preallocateBufferSize = 5*1024; @@ -191,7 +189,6 @@ void sayTime(int hour, int minutes, AudioGeneratorTalkie *talkie) { } else { talkie->say(spA_M_, sizeof(spA_M_)); } - out->stop(); delete talkie; TTGO_PWR_OFF } @@ -265,7 +262,7 @@ void MDCallback(void *cbData, const char *type, bool isUnicode, const char *str) if (strstr_P(type, PSTR("Title"))) { strncpy(wr_title, str, sizeof(wr_title)); wr_title[sizeof(wr_title)-1] = 0; - //AddLog_P2(LOG_LEVEL_INFO,PSTR("WR-Title: %s"),wr_title); + //AddLog_P(LOG_LEVEL_INFO,PSTR("WR-Title: %s"),wr_title); } else { // Who knows what to do? Not me! } @@ -296,7 +293,7 @@ void Webradio(const char *url) { retryms = millis() + 2000; } - xTaskCreatePinnedToCore(mp3_task2, "MP3-2", I2SAUDIO_TASK_STACK_SIZE, NULL, 3, &mp3_task_h, 1); + xTaskCreatePinnedToCore(mp3_task2, "MP3-2", 8192, NULL, 3, &mp3_task_h, 1); } void mp3_task2(void *arg){ @@ -376,27 +373,25 @@ void Play_mp3(const char *path) { } file = new AudioFileSourceFS(*fsp,path); - if (file->isOpen()) { - id3 = new AudioFileSourceID3(file); + id3 = new AudioFileSourceID3(file); - if (mp3ram) { - mp3 = new AudioGeneratorMP3(mp3ram, preallocateCodecSize); - } else { - mp3 = new AudioGeneratorMP3(); - } - mp3->begin(id3, out); + if (mp3ram) { + mp3 = new AudioGeneratorMP3(mp3ram, preallocateCodecSize); + } else { + mp3 = new AudioGeneratorMP3(); + } + mp3->begin(id3, out); - if (I2S_Task) { - xTaskCreatePinnedToCore(mp3_task, "MP3", I2SAUDIO_TASK_STACK_SIZE, NULL, 3, &mp3_task_h, 1); - } else { - while (mp3->isRunning()) { - if (!mp3->loop()) { - mp3->stop(); - mp3_delete(); - break; - } - OsWatchLoop(); + if (I2S_Task) { + xTaskCreatePinnedToCore(mp3_task, "MP3", 8192, NULL, 3, &mp3_task_h, 1); + } else { + while (mp3->isRunning()) { + if (!mp3->loop()) { + mp3->stop(); + mp3_delete(); + break; } + OsWatchLoop(); } } diff --git a/tasmota/xdrv_43_mlx90640.ino b/tasmota/xdrv_43_mlx90640.ino index 35c3942b0..a95b0f1e0 100644 --- a/tasmota/xdrv_43_mlx90640.ino +++ b/tasmota/xdrv_43_mlx90640.ino @@ -413,7 +413,7 @@ void MLX90640HandleWebGuiResponse(void){ WebGetArg("ul", tmp, sizeof(tmp)); // update line if (strlen(tmp)) { uint8_t _line = atoi(tmp); - // AddLog_P2(LOG_LEVEL_DEBUG, "MLX90640: send line %u", _line); + // AddLog_P(LOG_LEVEL_DEBUG, "MLX90640: send line %u", _line); float _buf[65]; if(_line==0){_buf[0]=1000+MLX90640.Ta;} //ambient temperature modulation hack else{_buf[0]=(float)_line;} @@ -431,9 +431,9 @@ void MLX90640HandleWebGuiResponse(void){ uint32_t _poiNum = (_poi-(_poi%10000))/10000; MLX90640.pois[_poiNum*2] = (_poi%10000)/100; MLX90640.pois[(_poiNum*2)+1] = _poi%100; - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RAW: %u, POI-%u: x: %u, y: %u"),_poi,_poiNum,MLX90640.pois[_poiNum],MLX90640.pois[_poiNum+1]); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("RAW: %u, POI-%u: x: %u, y: %u"),_poi,_poiNum,MLX90640.pois[_poiNum],MLX90640.pois[_poiNum+1]); for(int i = 0;i23) MLX90640.pois[_idx+1]=23; } - AddLog_P2(LOG_LEVEL_INFO, PSTR("POI-%u = x:%u,y:%u"),XdrvMailbox.index,MLX90640.pois[_idx],MLX90640.pois[_idx+1]); + AddLog_P(LOG_LEVEL_INFO, PSTR("POI-%u = x:%u,y:%u"),XdrvMailbox.index,MLX90640.pois[_idx],MLX90640.pois[_idx+1]); Response_P(S_JSON_MLX90640_COMMAND_NVALUE, command, XdrvMailbox.payload); break; default: @@ -494,10 +494,10 @@ void MLX90640init() if(!MLX90640.dumpedEE){ status = MLX90640_DumpEE(MLX90640_ADDRESS, MLX90640.Frame); if (status != 0){ - AddLog_P2(LOG_LEVEL_INFO, PSTR("Failed to load system parameters")); + AddLog_P(LOG_LEVEL_INFO, PSTR("Failed to load system parameters")); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR("MLX90640: started")); + AddLog_P(LOG_LEVEL_INFO, PSTR("MLX90640: started")); MLX90640.type = true; } MLX90640.params = new paramsMLX90640; @@ -514,11 +514,11 @@ void MLX90640every100msec(){ if(!MLX90640.extractedParams){ static uint32_t _chunk = 0; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: will read chunk: %u"), _chunk); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: will read chunk: %u"), _chunk); _time = millis(); status = MLX90640_ExtractParameters(MLX90640.Frame, MLX90640.params, _chunk); if (status == 0){ - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: parameter received after: %u msec, status: %u"), TimePassedSince(_time), status); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: parameter received after: %u msec, status: %u"), TimePassedSince(_time), status); } if (_chunk == 5) MLX90640.extractedParams = true; _chunk++; @@ -529,12 +529,12 @@ void MLX90640every100msec(){ case 0: if(MLX90640_SynchFrame(MLX90640_ADDRESS)!=0){ _job=-1; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: frame not ready")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: frame not ready")); break; } // _time = millis(); status = MLX90640_GetFrameData(MLX90640_ADDRESS, MLX90640.Frame); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: got frame 0 in %u msecs, status: %i"), TimePassedSince(_time), status); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: got frame 0 in %u msecs, status: %i"), TimePassedSince(_time), status); break; case 1: MLX90640.Ta = MLX90640_GetTa(MLX90640.Frame, MLX90640.params); @@ -542,7 +542,7 @@ void MLX90640every100msec(){ case 2: // _time = millis(); MLX90640_CalculateTo(MLX90640.Frame, MLX90640.params, 0.95f, MLX90640.Ta - 8, MLX90640.To, 0); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: calculated temperatures in %u msecs"), TimePassedSince(_time)); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: calculated temperatures in %u msecs"), TimePassedSince(_time)); break; case 5: if(MLX90640_SynchFrame(MLX90640_ADDRESS)!=0){ @@ -551,12 +551,12 @@ void MLX90640every100msec(){ } // _time = millis(); status = MLX90640_GetFrameData(MLX90640_ADDRESS, MLX90640.Frame); - // // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: got frame 1 in %u msecs, status: %i"), TimePassedSince(_time), status); + // // AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: got frame 1 in %u msecs, status: %i"), TimePassedSince(_time), status); break; case 7: // _time = millis(); MLX90640_CalculateTo(MLX90640.Frame, MLX90640.params, 0.95f, MLX90640.Ta - 8, MLX90640.To, 1); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MLX90640: calculated temperatures in %u msecs"), TimePassedSince(_time)); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("MLX90640: calculated temperatures in %u msecs"), TimePassedSince(_time)); break; default: break; @@ -580,8 +580,8 @@ void MLX90640Show(uint8_t json) char obj_tstr[FLOATSZ]; dtostrfd(MLX90640.To[MLX90640.pois[i*2]+(MLX90640.pois[(i*2)+1]*32)], Settings.flag2.temperature_resolution, obj_tstr); ResponseAppend_P(PSTR(",%s"),obj_tstr); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Array pos: %u"),MLX90640.pois[i*2]+(MLX90640.pois[(i*2)+1]*32)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("POI-%u: x: %u, y: %u"),i+1,MLX90640.pois[i*2],MLX90640.pois[(i*2)+1]); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("Array pos: %u"),MLX90640.pois[i*2]+(MLX90640.pois[(i*2)+1]*32)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("POI-%u: x: %u, y: %u"),i+1,MLX90640.pois[i*2],MLX90640.pois[(i*2)+1]); } ResponseAppend_P(PSTR("]}")); } diff --git a/tasmota/xdrv_44_miel_hvac.ino b/tasmota/xdrv_44_miel_hvac.ino index 6a9dda6c5..aad4205bd 100644 --- a/tasmota/xdrv_44_miel_hvac.ino +++ b/tasmota/xdrv_44_miel_hvac.ino @@ -366,7 +366,7 @@ miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) case MIEL_HVAC_P_MIDDLE1: if (byte != MIEL_HVAC_H_MIDDLE1) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": parse state MIDDLE1 expected %02x got %02x" ", restarting"), MIEL_HVAC_H_MIDDLE1, byte); return (MIEL_HVAC_P_START); @@ -377,7 +377,7 @@ miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) case MIEL_HVAC_P_MIDDLE2: if (byte != MIEL_HVAC_H_MIDDLE2) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": parse state MIDDLE2 expected %02x got %02x" ", restarting"), MIEL_HVAC_H_MIDDLE2, byte); return (MIEL_HVAC_P_START); @@ -388,7 +388,7 @@ miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) case MIEL_HVAC_P_LEN: if (byte == 0) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": skipping 0 byte message type 0x%02x"), p->p_type); return (MIEL_HVAC_P_SKIP_CKSUM); @@ -403,14 +403,14 @@ miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) case MIEL_HVAC_H_TYPE_UPDATED: break; default: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": skipping unknown message type 0x%02x"), p->p_type); return (MIEL_HVAC_P_SKIP); } if (byte > sizeof(p->p_data)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": skipping %u data bytes of message type 0x%02x"), p->p_len, p->p_type); return (MIEL_HVAC_P_SKIP); @@ -427,7 +427,7 @@ miel_hvac_parse(struct miel_hvac_softc *sc, uint8_t byte) case MIEL_HVAC_P_CKSUM: if (miel_hvac_cksum_fini(p->p_sum) != byte) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": checksum failed, restarting")); return (MIEL_HVAC_P_START); } @@ -495,7 +495,7 @@ miel_hvac_send(struct miel_hvac_softc *sc, uint8_t type, char hex_h[(sizeof(h) + 1) * 2]; char hex_d[(len + 1) * 2]; - AddLog_P2(LOG_LEVEL_DEBUG, + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": sending %s %s %02x"), ToHex_P((uint8_t *)&h, sizeof(h), hex_h, sizeof(hex_h)), ToHex_P((uint8_t *)data, len, hex_d, sizeof(hex_d)), @@ -837,7 +837,7 @@ miel_hvac_log_bytes(struct miel_hvac_softc *sc, const char *name, char hex[(MIEL_HVAC_DATABUFLEN + 1) * 2]; const unsigned char *b = (const unsigned char *)buf; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": response %s %s"), name, ToHex_P(b, len, hex, sizeof(hex))); } @@ -845,7 +845,7 @@ static void miel_hvac_input_connected(struct miel_hvac_softc *sc, const void *buf, size_t len) { - AddLog_P2(LOG_LEVEL_INFO, + AddLog_P(LOG_LEVEL_INFO, PSTR(MIEL_HVAC_LOGNAME ": connected to Mitsubishi Electric HVAC")); sc->sc_connected = 1; } @@ -973,7 +973,7 @@ miel_hvac_input_data(struct miel_hvac_softc *sc, miel_hvac_log_bytes(sc, "data", buf, len); if (len < sizeof(*d)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME + AddLog_P(LOG_LEVEL_DEBUG, PSTR(MIEL_HVAC_LOGNAME ": short data response (%zu < %zu)"), len, sizeof(*d)); return; } @@ -1033,7 +1033,7 @@ miel_hvac_pre_init(void) Pin(GPIO_MIEL_HVAC_TX), 2); if (!sc->sc_serial->begin(baudrate, 2)) { - AddLog_P2(LOG_LEVEL_ERROR, + AddLog_P(LOG_LEVEL_ERROR, PSTR(MIEL_HVAC_LOGNAME ": unable to begin serial " "(baudrate %d)"), baudrate); goto del; diff --git a/tasmota/xdrv_81_webcam.ino b/tasmota/xdrv_81_webcam.ino index d87723cd3..4cbba9757 100755 --- a/tasmota/xdrv_81_webcam.ino +++ b/tasmota/xdrv_81_webcam.ino @@ -153,7 +153,7 @@ uint32_t WcSetup(int32_t fsiz) { if (Wc.up) { esp_camera_deinit(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Deinit")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Deinit")); //return Wc.up; } Wc.up = 0; @@ -186,7 +186,7 @@ uint32_t WcSetup(int32_t fsiz) { config.pin_pwdn = (PinUsed(GPIO_WEBCAM_PWDN)) ? Pin(GPIO_WEBCAM_PWDN) : -1; // PWDN_GPIO_NUM; config.pin_reset = (PinUsed(GPIO_WEBCAM_RESET)) ? Pin(GPIO_WEBCAM_RESET) : -1; // RESET_GPIO_NUM; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: User template")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: User template")); } else { // defaults to AI THINKER config.pin_d0 = Y2_GPIO_NUM; @@ -205,7 +205,7 @@ uint32_t WcSetup(int32_t fsiz) { config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Default template")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Default template")); } //ESP.getPsramSize() @@ -220,15 +220,15 @@ uint32_t WcSetup(int32_t fsiz) { config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: PSRAM found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: PSRAM found")); } else { config.frame_size = FRAMESIZE_VGA; config.jpeg_quality = 12; config.fb_count = 1; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: PSRAM not found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: PSRAM not found")); } -// AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: heap check 1: %d"),ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: heap check 1: %d"),ESP_getFreeHeap()); // stupid workaround camera diver eats up static ram should prefer PSRAM // so we steal static ram to force driver to alloc PSRAM @@ -239,11 +239,11 @@ uint32_t WcSetup(int32_t fsiz) { if (x) { free(x); } if (err != ESP_OK) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: Init failed with error 0x%x"), err); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: Init failed with error 0x%x"), err); return 0; } -// AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: heap check 2: %d"),ESP_getFreeHeap()); +// AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: heap check 2: %d"),ESP_getFreeHeap()); sensor_t * wc_s = esp_camera_sensor_get(); @@ -258,7 +258,7 @@ uint32_t WcSetup(int32_t fsiz) { camera_fb_t *wc_fb = esp_camera_fb_get(); if (!wc_fb) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: Init failed to get the frame on time")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: Init failed to get the frame on time")); return 0; } Wc.width = wc_fb->width; @@ -269,7 +269,7 @@ uint32_t WcSetup(int32_t fsiz) { fd_init(); #endif - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: Initialized")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: Initialized")); Wc.up = 1; if (psram) { Wc.up = 2; } @@ -493,7 +493,7 @@ uint32_t WcDetectFace(void) { image_matrix = dl_matrix3du_alloc(1, fb->width, fb->height, 3); if (!image_matrix) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: dl_matrix3du_alloc failed")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: dl_matrix3du_alloc failed")); esp_camera_fb_return(fb); return ESP_FAIL; } @@ -507,7 +507,7 @@ uint32_t WcDetectFace(void) { esp_camera_fb_return(fb); if (!s){ dl_matrix3du_free(image_matrix); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: to rgb888 failed")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: to rgb888 failed")); return ESP_FAIL; } @@ -582,7 +582,7 @@ uint32_t WcGetFrame(int32_t bnum) { wc_fb = esp_camera_fb_get(); if (!wc_fb) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Can't get frame")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Can't get frame")); return 0; } if (!bnum) { @@ -613,7 +613,7 @@ pcopy: memcpy(picstore[bnum].buff, _jpg_buf, _jpg_buf_len); picstore[bnum].len = _jpg_buf_len; } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Can't allocate picstore")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Can't allocate picstore")); picstore[bnum].len = 0; } if (wc_fb) { esp_camera_fb_return(wc_fb); } @@ -657,14 +657,14 @@ void HandleImage(void) { } else { bnum--; if (!picstore[bnum].len) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: No image #: %d"), bnum); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: No image #: %d"), bnum); return; } client.write((char *)picstore[bnum].buff, picstore[bnum].len); } client.stop(); - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("CAM: Sending image #: %d"), bnum+1); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("CAM: Sending image #: %d"), bnum+1); } void HandleImageBasic(void) { @@ -681,7 +681,7 @@ void HandleImageBasic(void) { camera_fb_t *wc_fb; wc_fb = esp_camera_fb_get(); // Acquire frame if (!wc_fb) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Frame buffer could not be acquired")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Frame buffer could not be acquired")); return; } @@ -708,16 +708,16 @@ void HandleImageBasic(void) { esp_camera_fb_return(wc_fb); // Free frame buffer - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("CAM: Image sent")); + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("CAM: Image sent")); } void HandleWebcamMjpeg(void) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Handle camserver")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Handle camserver")); // if (!Wc.stream_active) { // always restart stream Wc.stream_active = 1; client = CamServer->client(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Create client")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Create client")); // } } @@ -731,13 +731,13 @@ void HandleWebcamMjpegTask(void) { bool jpeg_converted = false; if (!client.connected()) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Client fail")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Client fail")); Wc.stream_active = 0; } if (1 == Wc.stream_active) { client.flush(); client.setTimeout(3); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Start stream")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Start stream")); client.print("HTTP/1.1 200 OK\r\n" "Content-Type: multipart/x-mixed-replace;boundary=" BOUNDARY "\r\n" "\r\n"); @@ -746,7 +746,7 @@ void HandleWebcamMjpegTask(void) { if (2 == Wc.stream_active) { wc_fb = esp_camera_fb_get(); if (!wc_fb) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Frame fail")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Frame fail")); Wc.stream_active = 0; } } @@ -754,7 +754,7 @@ void HandleWebcamMjpegTask(void) { if (wc_fb->format != PIXFORMAT_JPEG) { jpeg_converted = frame2jpg(wc_fb, 80, &_jpg_buf, &_jpg_buf_len); if (!jpeg_converted){ - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: JPEG compression failed")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: JPEG compression failed")); _jpg_buf_len = wc_fb->len; _jpg_buf = wc_fb->buf; } @@ -771,7 +771,7 @@ void HandleWebcamMjpegTask(void) { if (tlen!=_jpg_buf_len) { esp_camera_fb_return(wc_fb); Wc.stream_active=0; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Send fail")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Send fail")); }*/ client.print("\r\n--" BOUNDARY "\r\n"); @@ -788,10 +788,10 @@ void HandleWebcamMjpegTask(void) { if (jpeg_converted) { free(_jpg_buf); } esp_camera_fb_return(wc_fb); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: send frame")); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: send frame")); } if (0 == Wc.stream_active) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream exit")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Stream exit")); client.flush(); client.stop(); } @@ -801,7 +801,7 @@ void HandleWebcamRoot(void) { //CamServer->redirect("http://" + String(ip) + ":81/cam.mjpeg"); CamServer->sendHeader("Location", WiFi.localIP().toString() + ":81/cam.mjpeg"); CamServer->send(302, "", ""); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Root called")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Root called")); } /*********************************************************************************************/ @@ -818,7 +818,7 @@ uint32_t WcSetStreamserver(uint32_t flag) { CamServer->on("/cam.mjpeg", HandleWebcamMjpeg); CamServer->on("/cam.jpg", HandleWebcamMjpeg); CamServer->on("/stream", HandleWebcamMjpeg); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream init")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Stream init")); CamServer->begin(); } } else { @@ -826,7 +826,7 @@ uint32_t WcSetStreamserver(uint32_t flag) { CamServer->stop(); delete CamServer; CamServer = NULL; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CAM: Stream exit")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CAM: Stream exit")); } } return 0; @@ -860,7 +860,7 @@ void WcLoop(void) { if (!rtsp_start && !TasmotaGlobal.global_state.wifi_down && Wc.up) { rtspServer.begin(); rtsp_start = 1; - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: RTSP init")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: RTSP init")); rtsp_lastframe_time = millis(); } @@ -873,7 +873,7 @@ void WcLoop(void) { if ((now-rtsp_lastframe_time) > RTSP_FRAME_TIME) { rtsp_session->broadcastCurrentFrame(now); rtsp_lastframe_time = now; - // AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: RTSP session frame")); + // AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: RTSP session frame")); } if (rtsp_session->m_stopped) { @@ -881,7 +881,7 @@ void WcLoop(void) { delete rtsp_streamer; rtsp_session = NULL; rtsp_streamer = NULL; - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: RTSP stopped")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: RTSP stopped")); } } else { @@ -889,7 +889,7 @@ void WcLoop(void) { if (rtsp_client) { rtsp_streamer = new OV2640Streamer(&rtsp_client, cam); // our streamer for UDP/TCP based RTP transport rtsp_session = new CRtspSession(&rtsp_client, rtsp_streamer); // our threads RTSP session and state - AddLog_P2(LOG_LEVEL_INFO, PSTR("CAM: RTSP stream created")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CAM: RTSP stream created")); } } #endif diff --git a/tasmota/xdrv_82_ethernet.ino b/tasmota/xdrv_82_ethernet.ino index a25cc1072..c51e8c436 100644 --- a/tasmota/xdrv_82_ethernet.ino +++ b/tasmota/xdrv_82_ethernet.ino @@ -85,15 +85,15 @@ char eth_hostname[sizeof(TasmotaGlobal.hostname)]; void EthernetEvent(WiFiEvent_t event) { switch (event) { case SYSTEM_EVENT_ETH_START: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: " D_ATTEMPTING_CONNECTION)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ETH: " D_ATTEMPTING_CONNECTION)); ETH.setHostname(eth_hostname); break; case SYSTEM_EVENT_ETH_CONNECTED: - AddLog_P2(LOG_LEVEL_INFO, PSTR("ETH: " D_CONNECTED " at %dMbps%s"), + AddLog_P(LOG_LEVEL_INFO, PSTR("ETH: " D_CONNECTED " at %dMbps%s"), ETH.linkSpeed(), (ETH.fullDuplex()) ? " Full Duplex" : ""); break; case SYSTEM_EVENT_ETH_GOT_IP: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: Mac %s, IPAddress %s, Hostname %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ETH: Mac %s, IPAddress %s, Hostname %s"), ETH.macAddress().c_str(), ETH.localIP().toString().c_str(), eth_hostname); Settings.ip_address[1] = (uint32_t)ETH.gatewayIP(); Settings.ip_address[2] = (uint32_t)ETH.subnetMask(); @@ -101,11 +101,11 @@ void EthernetEvent(WiFiEvent_t event) { TasmotaGlobal.global_state.eth_down = 0; break; case SYSTEM_EVENT_ETH_DISCONNECTED: - AddLog_P2(LOG_LEVEL_INFO, PSTR("ETH: Disconnected")); + AddLog_P(LOG_LEVEL_INFO, PSTR("ETH: Disconnected")); TasmotaGlobal.global_state.eth_down = 1; break; case SYSTEM_EVENT_ETH_STOP: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: Stopped")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ETH: Stopped")); TasmotaGlobal.global_state.eth_down = 1; break; default: @@ -116,7 +116,7 @@ void EthernetEvent(WiFiEvent_t event) { void EthernetInit(void) { if (!Settings.flag4.network_ethernet) { return; } if (!PinUsed(GPIO_ETH_PHY_MDC) && !PinUsed(GPIO_ETH_PHY_MDIO)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: No ETH MDC and/or ETH MDIO GPIO defined")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ETH: No ETH MDC and/or ETH MDIO GPIO defined")); return; } @@ -130,7 +130,7 @@ void EthernetInit(void) { int eth_mdc = Pin(GPIO_ETH_PHY_MDC); int eth_mdio = Pin(GPIO_ETH_PHY_MDIO); if (!ETH.begin(Settings.eth_address, eth_power, eth_mdc, eth_mdio, (eth_phy_type_t)Settings.eth_type, (eth_clock_mode_t)Settings.eth_clk_mode)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: Bad PHY type or init error")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ETH: Bad PHY type or init error")); }; } diff --git a/tasmota/xdrv_83_esp32watch.ino b/tasmota/xdrv_83_esp32watch.ino index 6a58974c0..fe6da11ea 100644 --- a/tasmota/xdrv_83_esp32watch.ino +++ b/tasmota/xdrv_83_esp32watch.ino @@ -378,11 +378,11 @@ uint8_t data; if (ttgo_globs.bma->isDoubleClick()) { ttgo_globs.bma_double_click = true; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("double click")); + //AddLog_P(LOG_LEVEL_INFO, PSTR("double click")); } if (ttgo_globs.bma->isAnyNoMotion()) { ttgo_globs.bma_click = true; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("click")); + //AddLog_P(LOG_LEVEL_INFO, PSTR("click")); } //! setp counter @@ -408,7 +408,7 @@ uint8_t data; } if (ttgo_globs.ttgo_power->isPEKShortPressIRQ()) { ttgo_globs.bma_button = true; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("button press")); + //AddLog_P(LOG_LEVEL_INFO, PSTR("button press")); } ttgo_globs.ttgo_power->clearIRQ(); break; diff --git a/tasmota/xdrv_99_debug.ino b/tasmota/xdrv_99_debug.ino index 32c296485..3f32fb2fd 100644 --- a/tasmota/xdrv_99_debug.ino +++ b/tasmota/xdrv_99_debug.ino @@ -174,11 +174,11 @@ void CpuLoadLoop(void) #if defined(F_CPU) && (F_CPU == 160000000L) int CPU_load = 100 - ( (CPU_loops*(1 + 30*TasmotaGlobal.sleep)) / (CPU_load_check *800) ); CPU_loops = CPU_loops / CPU_load_check; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), CPU_load, CPU_loops); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), CPU_load, CPU_loops); #else int CPU_load = 100 - ( (CPU_loops*(1 + 30*TasmotaGlobal.sleep)) / (CPU_load_check *400) ); CPU_loops = CPU_loops / CPU_load_check; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), CPU_load, CPU_loops); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), CPU_load, CPU_loops); #endif CPU_last_millis = CPU_last_loop_time; CPU_loops = 0; @@ -202,7 +202,7 @@ void DebugFreeMem(void) { register uint32_t *sp asm("a1"); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d (%s)"), ESP.getFreeHeap(), 4 * (sp - g_pcont->stack), XdrvMailbox.data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d (%s)"), ESP.getFreeHeap(), 4 * (sp - g_pcont->stack), XdrvMailbox.data); } #else // ESP32 @@ -211,7 +211,7 @@ void DebugFreeMem(void) { register uint8_t *sp asm("a1"); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d (%s)"), ESP.getFreeHeap(), sp - pxTaskGetStackStart(NULL), XdrvMailbox.data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "FreeRam %d, FreeStack %d (%s)"), ESP.getFreeHeap(), sp - pxTaskGetStackStart(NULL), XdrvMailbox.data); } #endif // ESP8266 - ESP32 @@ -245,7 +245,7 @@ void DebugRtcDump(char* parms) uint16_t srow = strtol(parms, &p, 16) / CFG_COLS; uint16_t mrow = strtol(p, &p, 10); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow); if (0 == mrow) { // Default only 8 lines mrow = 8; @@ -297,7 +297,7 @@ void DebugCfgDump(char* parms) uint16_t srow = strtol(parms, &p, 16) / CFG_COLS; uint16_t mrow = strtol(p, &p, 10); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("Cnfg: Parms %s, Start row %d, rows %d"), parms, srow, mrow); if (0 == mrow) { // Default only 8 lines mrow = 8; @@ -374,7 +374,7 @@ void DebugCfgPoke(char* parms) uint32_t ndata32 = (buffer[address +3] << 24) + (buffer[address +2] << 16) + (buffer[address +1] << 8) + buffer[address]; - AddLog_P2(LOG_LEVEL_INFO, PSTR("%03X: 0x%0LX (%lu) poked to 0x%0LX (%lu)"), address, data32, data32, ndata32, ndata32); + AddLog_P(LOG_LEVEL_INFO, PSTR("%03X: 0x%0LX (%lu) poked to 0x%0LX (%lu)"), address, data32, data32, ndata32, ndata32); } void SetFlashMode(uint8_t mode) @@ -404,7 +404,7 @@ void SetFlashMode(uint8_t mode) void CmndHelp(void) { - AddLog_P(LOG_LEVEL_INFO, PSTR("HLP: "), kDebugCommands); + AddLog_P(LOG_LEVEL_INFO, PSTR("HLP: %s"), kDebugCommands); ResponseCmndDone(); } @@ -539,7 +539,7 @@ void CmndFlashDump(void) for (uint32_t pos = start; pos < end; pos += bytes_per_cols) { uint32_t* values = (uint32_t*)(pos); - AddLog_P2(LOG_LEVEL_INFO, PSTR("%06X: %08X %08X %08X %08X %08X %08X %08X %08X"), pos - flash_start, + AddLog_P(LOG_LEVEL_INFO, PSTR("%06X: %08X %08X %08X %08X %08X %08X %08X %08X"), pos - flash_start, DebugSwap32(values[0]), DebugSwap32(values[1]), DebugSwap32(values[2]), DebugSwap32(values[3]), DebugSwap32(values[4]), DebugSwap32(values[5]), DebugSwap32(values[6]), DebugSwap32(values[7])); } @@ -571,7 +571,7 @@ void CmndI2cWrite(void) Wire.write(buffer[i]); } int result = Wire.endTransmission(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("I2C: Result %d"), result); + AddLog_P(LOG_LEVEL_INFO, PSTR("I2C: Result %d"), result); } } ResponseCmndDone(); diff --git a/tasmota/xdsp_01_lcd.ino b/tasmota/xdsp_01_lcd.ino index 4afc0b47e..9c57b2943 100644 --- a/tasmota/xdsp_01_lcd.ino +++ b/tasmota/xdsp_01_lcd.ino @@ -147,7 +147,7 @@ bool LcdPrintLog(void) strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); lcd->setCursor(0, last_row); lcd->print(disp_screen_buffer[last_row]); diff --git a/tasmota/xdsp_02_ssd1306.ino b/tasmota/xdsp_02_ssd1306.ino index 24700b0af..def5d931c 100644 --- a/tasmota/xdsp_02_ssd1306.ino +++ b/tasmota/xdsp_02_ssd1306.ino @@ -124,7 +124,7 @@ void Ssd1306PrintLog(void) strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); renderer->println(disp_screen_buffer[last_row]); renderer->Updateframe(); diff --git a/tasmota/xdsp_03_matrix.ino b/tasmota/xdsp_03_matrix.ino index c6722a8e5..6bcfee2e0 100644 --- a/tasmota/xdsp_03_matrix.ino +++ b/tasmota/xdsp_03_matrix.ino @@ -95,7 +95,7 @@ void MatrixScrollLeft(char* txt, int loop) // Horiz. position of text -- starts off right edge mtx_x = 8 * mtx_matrices; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), txt); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), txt); disp_refresh = Settings.display_refresh; case 2: @@ -265,7 +265,7 @@ void MatrixPrintLog(uint8_t direction) i++; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), mtx_buffer); mtx_done = 1; } diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index 019cd883e..fd61b4a82 100644 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -120,7 +120,7 @@ void Ili9341InitDriver(void) Ili9341InitMode(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("DSP: ILI9341")); + AddLog_P(LOG_LEVEL_INFO, PSTR("DSP: ILI9341")); } } @@ -201,7 +201,7 @@ void Ili9341PrintLog(void) DisplayFillScreen(last_row); tft->print(disp_screen_buffer[last_row]); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt); } } } diff --git a/tasmota/xdsp_05_epaper_29.ino b/tasmota/xdsp_05_epaper_29.ino index dc7397221..08fcbcf9b 100644 --- a/tasmota/xdsp_05_epaper_29.ino +++ b/tasmota/xdsp_05_epaper_29.ino @@ -69,11 +69,11 @@ void EpdInitDriver29() // whiten display with full update, takes 3 seconds if (PinUsed(GPIO_SPI_CS) && PinUsed(GPIO_SPI_CLK) && PinUsed(GPIO_SPI_MOSI)) { epd->Begin(Pin(GPIO_SPI_CS),Pin(GPIO_SPI_MOSI),Pin(GPIO_SPI_CLK)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EPD: HardSPI CS %d, CLK %d, MOSI %d"),Pin(GPIO_SPI_CS), Pin(GPIO_SPI_CLK), Pin(GPIO_SPI_MOSI)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EPD: HardSPI CS %d, CLK %d, MOSI %d"),Pin(GPIO_SPI_CS), Pin(GPIO_SPI_CLK), Pin(GPIO_SPI_MOSI)); } else if (PinUsed(GPIO_SSPI_CS) && PinUsed(GPIO_SSPI_SCLK) && PinUsed(GPIO_SSPI_MOSI)) { epd->Begin(Pin(GPIO_SSPI_CS),Pin(GPIO_SSPI_MOSI),Pin(GPIO_SSPI_SCLK)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("EPD: SoftSPI CS %d, CLK %d, MOSI %d"),Pin(GPIO_SSPI_CS), Pin(GPIO_SSPI_SCLK), Pin(GPIO_SSPI_MOSI)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("EPD: SoftSPI CS %d, CLK %d, MOSI %d"),Pin(GPIO_SSPI_CS), Pin(GPIO_SSPI_SCLK), Pin(GPIO_SSPI_MOSI)); } else { free(buffer); return; @@ -136,7 +136,7 @@ void EpdPrintLog29(void) renderer->DrawStringAt(0, epd_scroll, disp_screen_buffer[last_row], COLORED, 0); // EpdDisplayFrame(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "[%s]"), txt); } } } diff --git a/tasmota/xdsp_07_sh1106.ino b/tasmota/xdsp_07_sh1106.ino index 83a43f87a..6bb180cb8 100644 --- a/tasmota/xdsp_07_sh1106.ino +++ b/tasmota/xdsp_07_sh1106.ino @@ -119,7 +119,7 @@ void SH1106PrintLog(void) strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); renderer->println(disp_screen_buffer[last_row]); renderer->Updateframe(); diff --git a/tasmota/xdsp_09_SSD1351.ino b/tasmota/xdsp_09_SSD1351.ino index 822025d16..1b17bd08a 100644 --- a/tasmota/xdsp_09_SSD1351.ino +++ b/tasmota/xdsp_09_SSD1351.ino @@ -111,7 +111,7 @@ void SSD1351PrintLog(void) strlcpy(disp_screen_buffer[last_row], txt, disp_screen_buffer_cols); DisplayFillScreen(last_row); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); renderer->println(disp_screen_buffer[last_row]); renderer->Updateframe(); diff --git a/tasmota/xdsp_12_ST7789.ino b/tasmota/xdsp_12_ST7789.ino index 703bd1d05..b84e17f77 100644 --- a/tasmota/xdsp_12_ST7789.ino +++ b/tasmota/xdsp_12_ST7789.ino @@ -195,7 +195,7 @@ bool Xdsp12(uint8_t function) { bool result = false; -//AddLog_P2(LOG_LEVEL_INFO, PSTR("touch %d - %d"), FT5206_found, function); +//AddLog_P(LOG_LEVEL_INFO, PSTR("touch %d - %d"), FT5206_found, function); if (FUNC_DISPLAY_INIT_DRIVER == function) { ST7789_InitDriver(); diff --git a/tasmota/xlgt_02_my92x1.ino b/tasmota/xlgt_02_my92x1.ino index bd5deb2ff..9206d32c6 100644 --- a/tasmota/xlgt_02_my92x1.ino +++ b/tasmota/xlgt_02_my92x1.ino @@ -138,7 +138,7 @@ void My92x1ModuleSelected(void) LightMy92x1Init(); TasmotaGlobal.light_driver = XLGT_02; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: MY29x1 Found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: MY29x1 Found")); } } diff --git a/tasmota/xlgt_03_sm16716.ino b/tasmota/xlgt_03_sm16716.ino index b670b3ed8..6f29b5c7e 100644 --- a/tasmota/xlgt_03_sm16716.ino +++ b/tasmota/xlgt_03_sm16716.ino @@ -123,7 +123,7 @@ bool Sm16716SetChannels(void) // handle any PWM pins, skipping the first 3 values for sm16716 for (uint32_t i = 3; i < Light.subtype; i++) { if (PinUsed(GPIO_PWM1, i-3)) { - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "Cur_Col%d 10 bits %d, Pwm%d %d"), i, cur_col[i], i+1, curcol); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION "Cur_Col%d 10 bits %d, Pwm%d %d"), i, cur_col[i], i+1, curcol); analogWrite(Pin(GPIO_PWM1, i-3), bitRead(TasmotaGlobal.pwm_inverted, i-3) ? Settings.pwm_range - cur_col_10bits[i] : cur_col_10bits[i]); } } @@ -176,7 +176,7 @@ void Sm16716ModuleSelected(void) LightPwmOffset(LST_RGB); // Handle any PWM pins, skipping the first 3 color values for sm16716 TasmotaGlobal.light_type += LST_RGB; // Add RGB to be controlled by sm16716 TasmotaGlobal.light_driver = XLGT_03; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: SM16716 Found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: SM16716 Found")); } } diff --git a/tasmota/xlgt_04_sm2135.ino b/tasmota/xlgt_04_sm2135.ino index c0128dbb7..17cbc48ec 100644 --- a/tasmota/xlgt_04_sm2135.ino +++ b/tasmota/xlgt_04_sm2135.ino @@ -178,7 +178,7 @@ void Sm2135ModuleSelected(void) TasmotaGlobal.light_type = LT_RGBWC; TasmotaGlobal.light_driver = XLGT_04; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: SM2135 (%s) Found"), (SM2135_WCBGR == Sm2135.model) ? PSTR("BGR") : PSTR("GRB")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DBG: SM2135 (%s) Found"), (SM2135_WCBGR == Sm2135.model) ? PSTR("BGR") : PSTR("GRB")); } } diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 7cf9590f2..21c476a60 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -49,7 +49,7 @@ struct SNFL1 { void SnfL1Send(const char *buffer) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), buffer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), buffer); Serial.print(buffer); Serial.write(0x1B); @@ -79,7 +79,7 @@ bool SnfL1SerialInput(void) // AT+RESULT="sequence":"1554682835320" // AT+UPDATE="sequence":"34906","switch":"on","light_type":1,"colorR":0,"colorG":16,"colorB":0,"bright":6,"mode":1 // AT+UPDATE="switch":"on","light_type":1,"colorR":255,"colorG":0,"colorB":0,"bright":6,"mode":1,"speed":100,"sensitive":10 -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "RESULT", 6)) { Snfl1.receive_ready = true; @@ -107,7 +107,7 @@ bool SnfL1SerialInput(void) if (!strncmp(token2, "\"sequence\"", 10)) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd sequence %s"), token3); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd sequence %s"), token3); token = nullptr; } @@ -115,7 +115,7 @@ bool SnfL1SerialInput(void) else if (!strncmp(token2, "\"switch\"", 8)) { switch_state = !strncmp(token3, "\"on\"", 4) ? true : false; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd switch %d (%d)"), switch_state, Light.power); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd switch %d (%d)"), switch_state, Light.power); is_power_change = (switch_state != Light.power); } @@ -139,7 +139,7 @@ bool SnfL1SerialInput(void) bool all_color_channels_updated = color_updated[0] && color_updated[1] && color_updated[2]; if (all_color_channels_updated) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd color R%d G%d B%d (R%d G%d B%d)"), +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd color R%d G%d B%d (R%d G%d B%d)"), // current_color[0], current_color[1], current_color[2], // Settings.light_color[0], Settings.light_color[1], Settings.light_color[2]); @@ -151,7 +151,7 @@ bool SnfL1SerialInput(void) else if (!strncmp(token2, "\"bright\"", 8)) { uint8_t dimmer = atoi(token3); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd dimmer %d (%d)"), dimmer, Settings.light_dimmer); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd dimmer %d (%d)"), dimmer, Settings.light_dimmer); is_brightness_change = (Light.power && (dimmer > 0) && (dimmer != Settings.light_dimmer)); snprintf_P(cmnd_dimmer, sizeof(cmnd_dimmer), PSTR(D_CMND_DIMMER " %d"), dimmer); @@ -226,7 +226,7 @@ void SnfL1ModuleSelected(void) TasmotaGlobal.light_type = LT_RGB; TasmotaGlobal.light_driver = XLGT_05; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: Sonoff L1 Found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Sonoff L1 Found")); } } } diff --git a/tasmota/xlgt_06_electriq_moodl.ino b/tasmota/xlgt_06_electriq_moodl.ino index 802b658cc..6437b8f3f 100644 --- a/tasmota/xlgt_06_electriq_moodl.ino +++ b/tasmota/xlgt_06_electriq_moodl.ino @@ -74,7 +74,7 @@ void ElectriqMoodLModuleSelected(void) SetSerial(9600, TS_SERIAL_8N1); TasmotaGlobal.light_type = LT_RGBW; TasmotaGlobal.light_driver = XLGT_06; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("LGT: ElectriQ Mood Lamp Found")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: ElectriQ Mood Lamp Found")); } } diff --git a/tasmota/xnrg_01_hlw8012.ino b/tasmota/xnrg_01_hlw8012.ino index c7dbc631f..964474ad1 100644 --- a/tasmota/xnrg_01_hlw8012.ino +++ b/tasmota/xnrg_01_hlw8012.ino @@ -164,7 +164,7 @@ void HlwEvery200ms(void) } } uint32_t median = Hlw.debug[(Hlw.cf1_pulse_counter +1) / 2]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: power %d, ui %d, cnt %d, smpl%s, sum %d, mean %d, median %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("NRG: power %d, ui %d, cnt %d, smpl%s, sum %d, mean %d, median %d"), Hlw.cf_power_pulse_length , Hlw.select_ui_flag, Hlw.cf1_pulse_counter, stemp, Hlw.cf1_summed_pulse_length, cf1_pulse_length, median); #endif diff --git a/tasmota/xnrg_02_cse7766.ino b/tasmota/xnrg_02_cse7766.ino index e6e2eebc3..e4ee38d2b 100644 --- a/tasmota/xnrg_02_cse7766.ino +++ b/tasmota/xnrg_02_cse7766.ino @@ -68,7 +68,7 @@ void CseReceived(void) { uint8_t header = Cse.rx_buffer[0]; if ((header & 0xFC) == 0xFC) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CSE: Abnormal hardware")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Abnormal hardware")); return; } @@ -165,7 +165,7 @@ void CseSerialInput(void) { Cse.byte_counter--; } while ((Cse.byte_counter > 2) && (0x5A != Cse.rx_buffer[1])); if (0x5A != Cse.rx_buffer[1]) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CSE: " D_CHECKSUM_FAILURE)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: " D_CHECKSUM_FAILURE)); Cse.received = false; Cse.byte_counter = 0; } @@ -208,7 +208,7 @@ void CseEverySecond(void) { Energy.kWhtoday_delta += delta; } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("CSE: Overload")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Overload")); Cse.cf_pulses_last_time = CSE_PULSES_NOT_INITIALIZED; } EnergyUpdateToday(); diff --git a/tasmota/xnrg_03_pzem004t.ino b/tasmota/xnrg_03_pzem004t.ino index 36b21564c..0ffbe433b 100644 --- a/tasmota/xnrg_03_pzem004t.ino +++ b/tasmota/xnrg_03_pzem004t.ino @@ -208,7 +208,7 @@ void PzemEvery250ms(void) Pzem.read_state = 1; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PZM: Retry %d"), 5 - Pzem.send_retry); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PZM: Retry %d"), 5 - Pzem.send_retry); } } @@ -220,7 +220,7 @@ void PzemEvery250ms(void) Pzem.phase--; } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PZM: Probing address %d, Max phases %d"), Pzem.phase +1, Energy.phase_count); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("PZM: Probing address %d, Max phases %d"), Pzem.phase +1, Energy.phase_count); } if (Pzem.address) { diff --git a/tasmota/xnrg_05_pzem_ac.ino b/tasmota/xnrg_05_pzem_ac.ino index 580682609..08971cb7f 100644 --- a/tasmota/xnrg_05_pzem_ac.ino +++ b/tasmota/xnrg_05_pzem_ac.ino @@ -63,7 +63,7 @@ void PzemAcEverySecond(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, PzemAcModbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PAC: PzemAc %d error %d"), PZEM_AC_DEVICE_ADDRESS + PzemAc.phase, error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PAC: PzemAc %d error %d"), PZEM_AC_DEVICE_ADDRESS + PzemAc.phase, error); } else { Energy.data_valid[PzemAc.phase] = 0; if (10 == registers) { diff --git a/tasmota/xnrg_06_pzem_dc.ino b/tasmota/xnrg_06_pzem_dc.ino index b96aad085..8de1f7f22 100644 --- a/tasmota/xnrg_06_pzem_dc.ino +++ b/tasmota/xnrg_06_pzem_dc.ino @@ -62,7 +62,7 @@ void PzemDcEverySecond(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, PzemDcModbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PDC: PzemDc %d error %d"), PZEM_DC_DEVICE_ADDRESS + PzemDc.channel, error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PDC: PzemDc %d error %d"), PZEM_DC_DEVICE_ADDRESS + PzemDc.channel, error); } else { Energy.data_valid[PzemDc.channel] = 0; if (8 == registers) { diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index 6e4dd48ce..4e3dbcc0e 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -131,7 +131,7 @@ void Ade7953GetData(void) reg[i >> 2][i &3] = value; } } - AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: %d, %d, [%d, %d, %d, %d], [%d, %d, %d, %d]"), + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: %d, %d, [%d, %d, %d, %d], [%d, %d, %d, %d]"), Ade7953.voltage_rms, Ade7953.period, reg[0][0], reg[0][1], reg[0][2], reg[0][3], reg[1][0], reg[1][1], reg[1][2], reg[1][3]); @@ -154,7 +154,7 @@ void Ade7953GetData(void) uint32_t current_rms_sum = Ade7953.current_rms[0] + Ade7953.current_rms[1]; uint32_t active_power_sum = Ade7953.active_power[0] + Ade7953.active_power[1]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d = %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d = %d"), Ade7953.voltage_rms, Ade7953.period, Ade7953.current_rms[0], Ade7953.current_rms[1], current_rms_sum, Ade7953.active_power[0], Ade7953.active_power[1], active_power_sum); diff --git a/tasmota/xnrg_08_sdm120.ino b/tasmota/xnrg_08_sdm120.ino index b21cf12b8..5659f05ed 100644 --- a/tasmota/xnrg_08_sdm120.ino +++ b/tasmota/xnrg_08_sdm120.ino @@ -83,7 +83,7 @@ void SDM120Every250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Sdm120Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDM: SDM120 error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDM: SDM120 error %d"), error); } else { Energy.data_valid[0] = 0; diff --git a/tasmota/xnrg_09_dds2382.ino b/tasmota/xnrg_09_dds2382.ino index 3138bc444..69826564b 100644 --- a/tasmota/xnrg_09_dds2382.ino +++ b/tasmota/xnrg_09_dds2382.ino @@ -50,7 +50,7 @@ void Dds2382EverySecond(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Dds2382Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "DDS2382 response error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "DDS2382 response error %d"), error); } else { Energy.data_valid[0] = 0; diff --git a/tasmota/xnrg_10_sdm630.ino b/tasmota/xnrg_10_sdm630.ino index 145898f6f..f002e11bb 100644 --- a/tasmota/xnrg_10_sdm630.ino +++ b/tasmota/xnrg_10_sdm630.ino @@ -86,7 +86,7 @@ void SDM630Every250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Sdm630Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDM: SDM630 error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDM: SDM630 error %d"), error); } else { Energy.data_valid[0] = 0; Energy.data_valid[1] = 0; diff --git a/tasmota/xnrg_11_ddsu666.ino b/tasmota/xnrg_11_ddsu666.ino index 8f453e766..cd0701383 100644 --- a/tasmota/xnrg_11_ddsu666.ino +++ b/tasmota/xnrg_11_ddsu666.ino @@ -67,7 +67,7 @@ void DDSU666Every250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Ddsu666Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDM: Ddsu666 error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDM: Ddsu666 error %d"), error); } else { Energy.data_valid[0] = 0; diff --git a/tasmota/xnrg_13_fif_le01mr.ino b/tasmota/xnrg_13_fif_le01mr.ino index a36e99b62..66f93190a 100644 --- a/tasmota/xnrg_13_fif_le01mr.ino +++ b/tasmota/xnrg_13_fif_le01mr.ino @@ -123,7 +123,7 @@ void FifLEEvery250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, FifLEModbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("FiF-LE: LE01MR Modbus error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("FiF-LE: LE01MR Modbus error %d"), error); } else { Energy.data_valid[0] = 0; diff --git a/tasmota/xnrg_14_bl0940.ino b/tasmota/xnrg_14_bl0940.ino index e2c4528e9..2310ad3b7 100644 --- a/tasmota/xnrg_14_bl0940.ino +++ b/tasmota/xnrg_14_bl0940.ino @@ -86,7 +86,7 @@ void Bl0940Received(void) { if ((Bl0940.rx_buffer[0] != BL0940_PACKET_HEADER) || // Bad header (Bl0940.tps1 && ((tps1 < (Bl0940.tps1 -10)) || (tps1 > (Bl0940.tps1 +10)))) // Invalid temperature change ) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BL9: Invalid data")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("BL9: Invalid data")); return; } @@ -101,7 +101,7 @@ void Bl0940Received(void) { int32_t cf_cnt = Bl0940.rx_buffer[24] << 24 | Bl0940.rx_buffer[23] << 16 | Bl0940.rx_buffer[22] << 8; // CF_CNT signed Bl0940.cf_pulses = abs(cf_cnt) >> 8; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BL9: U %d, I %d, P %d, C %d, T %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("BL9: U %d, I %d, P %d, C %d, T %d"), Bl0940.voltage, Bl0940.current, Bl0940.power, Bl0940.cf_pulses, Bl0940.tps1); if (Energy.power_on) { // Powered on @@ -149,7 +149,7 @@ void Bl0940SerialInput(void) { Bl0940.byte_counter--; } while ((Bl0940.byte_counter > 1) && (BL0940_PACKET_HEADER != Bl0940.rx_buffer[0])); if (BL0940_PACKET_HEADER != Bl0940.rx_buffer[0]) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BL9: " D_CHECKSUM_FAILURE)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("BL9: " D_CHECKSUM_FAILURE)); Bl0940.received = false; Bl0940.byte_counter = 0; } @@ -191,7 +191,7 @@ void Bl0940EverySecond(void) { Bl0940.cf_pulses_last_time = Bl0940.cf_pulses; Energy.kWhtoday_delta += delta; } else { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BL9: Overload")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("BL9: Overload")); Bl0940.cf_pulses_last_time = BL0940_PULSES_NOT_INITIALIZED; } EnergyUpdateToday(); @@ -200,7 +200,7 @@ void Bl0940EverySecond(void) { } -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); Bl0940Serial->flush(); Bl0940Serial->write(BL0940_READ_COMMAND); diff --git a/tasmota/xnrg_15_teleinfo.ino b/tasmota/xnrg_15_teleinfo.ino index db5f37b1d..a052027d3 100755 --- a/tasmota/xnrg_15_teleinfo.ino +++ b/tasmota/xnrg_15_teleinfo.ino @@ -158,7 +158,7 @@ void ADPSCallback(uint8_t phase) // Publish adding ADCO serial number into the topic MqttPublishPrefixTopic_P(RESULT_OR_TELE, serialNumber, false); - AddLog_P2(LOG_LEVEL_INFO, PSTR("ADPS on phase %d"), phase); + AddLog_P(LOG_LEVEL_INFO, PSTR("ADPS on phase %d"), phase); } /* ====================================================================== @@ -187,7 +187,7 @@ void DataCallback(struct _ValueList * me, uint8_t flags) if (flags & TINFO_FLAGS_ADDED) { c = '#'; } if (flags & TINFO_FLAGS_UPDATED) { c = '*'; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: [%d]%c %s=%s"), ilabel, c , me->name, me->value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: [%d]%c %s=%s"), ilabel, c , me->name, me->value); if (ilabelvalue, tarif); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Tarif changed, now '%s' (%d)"), me->value, tarif); } // Current tariff (standard is in clear text in value) else if (ilabel == LABEL_LTARF) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Tarif name changed, now '%s'"), me->value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Tarif name changed, now '%s'"), me->value); } // Current tariff (standard index is is in clear text in value) else if (ilabel == LABEL_NTARF) { tarif = atoi(me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Tarif index changed, now '%d'"), tarif); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Tarif index changed, now '%d'"), tarif); } @@ -223,21 +223,21 @@ void DataCallback(struct _ValueList * me, uint8_t flags) { Energy.voltage_available = true; Energy.voltage[0] = (float) atoi(me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Voltage %s, now %d"), me->value, (int) Energy.voltage[0]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Voltage %s, now %d"), me->value, (int) Energy.voltage[0]); } // Current I else if (ilabel == LABEL_IINST || ilabel == LABEL_IRMS1) { Energy.current[0] = (float) atoi(me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Current %s, now %d"), me->value, (int) Energy.current[0]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Current %s, now %d"), me->value, (int) Energy.current[0]); } // Power P else if (ilabel == LABEL_PAPP || ilabel == LABEL_SINSTS) { Energy.active_power[0] = (float) atoi(me->value);; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Power %s, now %d"), me->value, (int) Energy.active_power[0]); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Power %s, now %d"), me->value, (int) Energy.active_power[0]); } // Wh indexes (legacy) @@ -251,7 +251,7 @@ void DataCallback(struct _ValueList * me, uint8_t flags) // Base, un seul index if (ilabel == LABEL_BASE) { total = atoi(me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Base:%u"), total); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Base:%u"), total); // Heures creuses/pleines calculer total } else { // Heures creuses get heures pleines @@ -269,7 +269,7 @@ void DataCallback(struct _ValueList * me, uint8_t flags) } } total = hc + hp; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: HC:%u HP:%u Total:%u"), hc, hp, total); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: HC:%u HP:%u Total:%u"), hc, hp, total); } if (!Settings.flag4.teleinfo_rawdata) { @@ -284,17 +284,17 @@ void DataCallback(struct _ValueList * me, uint8_t flags) if (!Settings.flag4.teleinfo_rawdata) { EnergyUpdateTotal(total/1000.0f, true); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Total:%uWh"), total); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Total:%uWh"), total); } // Wh indexes (standard) else if ( ilabel == LABEL_EASF01) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: HC:%u"), atoi(me->value)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: HC:%u"), atoi(me->value)); } else if ( ilabel == LABEL_EASF02) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: HP:%u"), atoi(me->value)); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: HP:%u"), atoi(me->value)); } // Contract subscribed (legacy) @@ -308,26 +308,26 @@ void DataCallback(struct _ValueList * me, uint8_t flags) break; } } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Contract changed, now '%s' (%d)"), me->value, contrat); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Contract changed, now '%s' (%d)"), me->value, contrat); } // Contract subscribed (standard is in clear text in value) else if (ilabel == LABEL_NGTF) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: Contract changed, now '%s'"), me->value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: Contract changed, now '%s'"), me->value); } // Contract subscribed (Power) else if (ilabel == LABEL_ISOUSC || ilabel == LABEL_PREF) { isousc = atoi( me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: ISousc set to %d"), isousc); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: ISousc set to %d"), isousc); } // Serial Number of device else if (ilabel == LABEL_ADCO || ilabel == LABEL_ADSC) { strcpy(serialNumber, me->value); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: %s set to %s"), me->name, serialNumber); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: %s set to %s"), me->name, serialNumber); } } @@ -447,20 +447,20 @@ void TInfoInit(void) tinfo_mode = TINFO_MODE_HISTORIQUE; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TIC: inferface speed %d bps"),baudrate); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TIC: inferface speed %d bps"),baudrate); if (PinUsed(GPIO_TELEINFO_RX)) { uint8_t rx_pin = Pin(GPIO_TELEINFO_RX); - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: RX on GPIO%d"), rx_pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: RX on GPIO%d"), rx_pin); // Enable Teleinfo pin used, control it if (PinUsed(GPIO_TELEINFO_ENABLE)) { uint8_t en_pin = Pin(GPIO_TELEINFO_ENABLE); pinMode(en_pin, OUTPUT); digitalWrite(en_pin, HIGH); - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: always enabled")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: always enabled")); } #if defined (ESP8266) @@ -487,13 +487,13 @@ void TInfoInit(void) //SetSerialConfig(TS_SERIAL_7E1); //TInfoSerial->setTimeout(TINFO_READ_TIMEOUT); - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: using hardware serial")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: using hardware serial")); } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: using software serial")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: using software serial")); } #elif defined (ESP32) - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: using ESP32 hardware serial")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: using ESP32 hardware serial")); #endif // Init teleinfo tinfo.init(tinfo_mode); @@ -503,7 +503,7 @@ void TInfoInit(void) tinfo.attachNewFrame(NewFrameCallback); tinfo_found = true; - AddLog_P2(LOG_LEVEL_INFO, PSTR("TIC: Ready")); + AddLog_P(LOG_LEVEL_INFO, PSTR("TIC: Ready")); } } } diff --git a/tasmota/xnrg_16_iem3000.ino b/tasmota/xnrg_16_iem3000.ino index 6cf92ebc4..a3dfd2e67 100644 --- a/tasmota/xnrg_16_iem3000.ino +++ b/tasmota/xnrg_16_iem3000.ino @@ -76,7 +76,7 @@ void IEM3000Every250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Iem3000Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDM: Iem3000 error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDM: Iem3000 error %d"), error); } else { Energy.data_valid[0] = 0; diff --git a/tasmota/xnrg_17_ornowe517.ino b/tasmota/xnrg_17_ornowe517.ino index 1e1ed928d..b7eb1b1c1 100644 --- a/tasmota/xnrg_17_ornowe517.ino +++ b/tasmota/xnrg_17_ornowe517.ino @@ -82,7 +82,7 @@ void WE517Every250ms(void) AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, We517Modbus->ReceiveCount()); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 error %d"), error); } else { Energy.data_valid[0] = 0; Energy.data_valid[1] = 0; @@ -188,7 +188,7 @@ void We517SnsInit(void) uint8_t result = We517Modbus->Begin(WE517_SPEED); if (result) { if (2 == result) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 HW serial init 8E1 at %d baud"), WE517_SPEED); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("ORNO: WE517 HW serial init 8E1 at %d baud"), WE517_SPEED); Serial.begin(WE517_SPEED, SERIAL_8E1); ClaimSerial(); } diff --git a/tasmota/xsns_01_counter.ino b/tasmota/xsns_01_counter.ino index 234401ffe..811aada97 100644 --- a/tasmota/xsns_01_counter.ino +++ b/tasmota/xsns_01_counter.ino @@ -263,7 +263,7 @@ void SyncACDimmer(void) #else // ESP32 analogWrite(Pin(GPIO_PWM1, i), 5); #endif // ESP8266 - ESP32 - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("CNT: [%d] dimm_time_CCs %d, current_cycle_CC: %d, timelag %lu, lastcc %lu, currentSteps %d, curr %d"), i, ac_zero_cross_dimmer.dimm_timeClockCycles,ac_zero_cross_dimmer.current_cycle_ClockCycles , timelag_ClockCycles, ac_zero_cross_dimmer.currentCycleCount, ac_zero_cross_dimmer.currentSteps, Light.fade_cur_10[i]); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("CNT: [%d] dimm_time_CCs %d, current_cycle_CC: %d, timelag %lu, lastcc %lu, currentSteps %d, curr %d"), i, ac_zero_cross_dimmer.dimm_timeClockCycles,ac_zero_cross_dimmer.current_cycle_ClockCycles , timelag_ClockCycles, ac_zero_cross_dimmer.currentCycleCount, ac_zero_cross_dimmer.currentSteps, Light.fade_cur_10[i]); } } } diff --git a/tasmota/xsns_04_snfsc.ino b/tasmota/xsns_04_snfsc.ino index 77c8dad12..4822e5aa5 100644 --- a/tasmota/xsns_04_snfsc.ino +++ b/tasmota/xsns_04_snfsc.ino @@ -62,7 +62,7 @@ void SonoffScSend(const char *data) { Serial.write(data); Serial.write('\x1B'); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL D_TRANSMIT " %s"), data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL D_TRANSMIT " %s"), data); } void SonoffScInit(void) @@ -78,7 +78,7 @@ void SonoffScSerialInput(char *rcvstat) char *str; uint16_t value[5] = { 0 }; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL D_RECEIVED " %s"), rcvstat); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL D_RECEIVED " %s"), rcvstat); if (!strncasecmp_P(rcvstat, PSTR("AT+UPDATE="), 10)) { int8_t i = -1; diff --git a/tasmota/xsns_05_ds18x20.ino b/tasmota/xsns_05_ds18x20.ino index 303cd1035..6b46700c3 100644 --- a/tasmota/xsns_05_ds18x20.ino +++ b/tasmota/xsns_05_ds18x20.ino @@ -341,7 +341,7 @@ void Ds18x20Init(void) } } } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSORS_FOUND " %d"), ds18x20_sensors); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSORS_FOUND " %d"), ds18x20_sensors); } void Ds18x20Convert(void) diff --git a/tasmota/xsns_05_ds18x20_esp32.ino b/tasmota/xsns_05_ds18x20_esp32.ino index e33c5f245..db95ccd71 100644 --- a/tasmota/xsns_05_ds18x20_esp32.ino +++ b/tasmota/xsns_05_ds18x20_esp32.ino @@ -56,7 +56,7 @@ void Ds18x20Init(void) { ds = new OneWire(Pin(GPIO_DSB)); Ds18x20Search(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSORS_FOUND " %d"), ds18x20_sensors); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DSB D_SENSORS_FOUND " %d"), ds18x20_sensors); } void Ds18x20Search(void) { diff --git a/tasmota/xsns_06_dht.ino b/tasmota/xsns_06_dht.ino index 705e91cad..fdb56b292 100644 --- a/tasmota/xsns_06_dht.ino +++ b/tasmota/xsns_06_dht.ino @@ -52,7 +52,7 @@ bool DhtWaitState(uint32_t sensor, uint32_t level) unsigned long timeout = micros() + 100; while (digitalRead(Dht[sensor].pin) != level) { if (TimeReachedUsec(timeout)) { - PrepLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT D_TIMEOUT_WAITING_FOR " %s " D_PULSE), + PrepLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT D_TIMEOUT_WAITING_FOR " %s " D_PULSE), (level) ? D_START_SIGNAL_HIGH : D_START_SIGNAL_LOW); return false; } @@ -149,7 +149,7 @@ bool DhtRead(uint32_t sensor) uint8_t checksum = (dht_data[0] + dht_data[1] + dht_data[2] + dht_data[3]) & 0xFF; if (dht_data[4] != checksum) { char hex_char[15]; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT D_CHECKSUM_FAILURE " %s =? %02X"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT D_CHECKSUM_FAILURE " %s =? %02X"), ToHex_P(dht_data, 5, hex_char, sizeof(hex_char), ' '), checksum); return false; } @@ -220,7 +220,7 @@ void DhtInit(void) snprintf_P(Dht[i].stype, sizeof(Dht[i].stype), PSTR("%s%c%02d"), Dht[i].stype, IndexSeparator(), Dht[i].pin); } } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT "(v5) " D_SENSORS_FOUND " %d"), dht_sensors); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DHT "(v5) " D_SENSORS_FOUND " %d"), dht_sensors); } else { dht_active = false; } diff --git a/tasmota/xsns_11_veml6070.ino b/tasmota/xsns_11_veml6070.ino index c97e68c97..cbaba7025 100644 --- a/tasmota/xsns_11_veml6070.ino +++ b/tasmota/xsns_11_veml6070.ino @@ -155,11 +155,11 @@ void Veml6070UvTableInit(void) uv_risk_map[i] = ( (USE_VEML6070_RSET / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); } else { uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 resistor error %d"), USE_VEML6070_RSET); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 resistor error %d"), USE_VEML6070_RSET); } #else uv_risk_map[i] = ( (VEML6070_RSET_DEFAULT / VEML6070_TABLE_COEFFCIENT) / VEML6070_UV_MAX_DEFAULT ) * (i+1); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 resistor default used %d"), VEML6070_RSET_DEFAULT); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 resistor default used %d"), VEML6070_RSET_DEFAULT); #endif } } @@ -187,7 +187,7 @@ void Veml6070ModeCmd(bool mode_cmd) uint8_t status = Wire.endTransmission(); // action on status if (!status) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 mode_cmd")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 mode_cmd")); } } @@ -231,7 +231,7 @@ double Veml6070UvRiskLevel(uint16_t uv_level) // out of range and much to high - it must be outerspace or sensor damaged snprintf_P(str_uvrisk_text, sizeof(str_uvrisk_text), D_UV_INDEX_7); return ( risk = 99 ); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 out of range %d"), risk); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "VEML6070 out of range %d"), risk); } } diff --git a/tasmota/xsns_12_ads1115.ino b/tasmota/xsns_12_ads1115.ino index d6a251f79..5ff73e021 100644 --- a/tasmota/xsns_12_ads1115.ino +++ b/tasmota/xsns_12_ads1115.ino @@ -231,10 +231,10 @@ void AdsEvery250ms(void) } } ResponseJsonEndEnd(); - + XdrvRulesProcess(); } - + } } } @@ -245,14 +245,14 @@ void Ads1115Show(bool json) int16_t values[4]; for (uint32_t t = 0; t < sizeof(Ads1115.addresses); t++) { - //AddLog_P2(LOG_LEVEL_INFO, "Logging ADS1115 %02x", Ads1115.addresses[t]); + //AddLog_P(LOG_LEVEL_INFO, "Logging ADS1115 %02x", Ads1115.addresses[t]); if (Ads1115.found[t]) { uint8_t old_address = Ads1115.address; Ads1115.address = Ads1115.addresses[t]; for (uint32_t i = 0; i < 4; i++) { values[i] = Ads1115GetConversion(i); - //AddLog_P2(LOG_LEVEL_INFO, "Logging ADS1115 %02x (%i) = %i", Ads1115.address, i, values[i] ); + //AddLog_P(LOG_LEVEL_INFO, "Logging ADS1115 %02x (%i) = %i", Ads1115.address, i, values[i] ); } Ads1115.address = old_address; diff --git a/tasmota/xsns_15_mhz19.ino b/tasmota/xsns_15_mhz19.ino index 8fe450f87..d8feadb25 100644 --- a/tasmota/xsns_15_mhz19.ino +++ b/tasmota/xsns_15_mhz19.ino @@ -123,7 +123,7 @@ size_t MhzSendCmd(uint8_t command_id) memcpy_P(&mhz_send[6], kMhzCommands[command_id] + sizeof(uint16_t), sizeof(uint16_t)); mhz_send[8] = MhzCalculateChecksum(mhz_send); -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("Final MhzCommand: %x %x %x %x %x %x %x %x %x"),mhz_send[0],mhz_send[1],mhz_send[2],mhz_send[3],mhz_send[4],mhz_send[5],mhz_send[6],mhz_send[7],mhz_send[8]); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("Final MhzCommand: %x %x %x %x %x %x %x %x %x"),mhz_send[0],mhz_send[1],mhz_send[2],mhz_send[3],mhz_send[4],mhz_send[5],mhz_send[6],mhz_send[7],mhz_send[8]); return MhzSerial->write(mhz_send, sizeof(mhz_send)); } diff --git a/tasmota/xsns_17_senseair.ino b/tasmota/xsns_17_senseair.ino index eb6d3030f..f731d9c1b 100644 --- a/tasmota/xsns_17_senseair.ino +++ b/tasmota/xsns_17_senseair.ino @@ -70,16 +70,16 @@ void Senseair250ms(void) // Every 250 mSec if (data_ready) { uint8_t error = SenseairModbus->Receive16BitRegister(&value); if (error) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir response error %d"), error); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir response error %d"), error); } else { switch(senseair_read_state) { case 0: // 0x1A (26) READ_TYPE_LOW - S8: fe 04 02 01 77 ec 92 senseair_type = 2; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir type id low %04X"), value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir type id low %04X"), value); break; case 1: // 0x00 (0) READ_ERRORLOG - fe 04 02 00 00 ad 24 if (value) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir error %04X"), value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir error %04X"), value); } break; case 2: // 0x03 (3) READ_CO2 - fe 04 02 06 2c af 59 @@ -97,11 +97,11 @@ void Senseair250ms(void) // Every 250 mSec case 5: // 0x1C (28) READ_RELAY_STATE - S8: fe 04 02 01 54 ad 4b - firmware version { bool relay_state = value >> 8 & 1; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir relay state %d"), relay_state); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir relay state %d"), relay_state); break; } case 6: // 0x0A (10) READ_TEMP_ADJUSTMENT - S8: fe 84 02 f2 f1 - Illegal Data Address - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir temp adjustment %d"), value); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "SenseAir temp adjustment %d"), value); break; } } diff --git a/tasmota/xsns_20_novasds.ino b/tasmota/xsns_20_novasds.ino index 3834ff984..052991ea0 100644 --- a/tasmota/xsns_20_novasds.ino +++ b/tasmota/xsns_20_novasds.ino @@ -82,7 +82,7 @@ bool NovaSdsCommand(uint8_t byte1, uint8_t byte2, uint8_t byte3, uint16_t sensor } // char hex_char[60]; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SDS: Send %s"), ToHex_P((unsigned char*)novasds_cmnd, 19, hex_char, sizeof(hex_char), ' ')); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SDS: Send %s"), ToHex_P((unsigned char*)novasds_cmnd, 19, hex_char, sizeof(hex_char), ' ')); // send cmnd NovaSdsSerial->write(novasds_cmnd, sizeof(novasds_cmnd)); diff --git a/tasmota/xsns_21_sgp30.ino b/tasmota/xsns_21_sgp30.ino index bac02976c..c4ca9a38a 100644 --- a/tasmota/xsns_21_sgp30.ino +++ b/tasmota/xsns_21_sgp30.ino @@ -47,7 +47,7 @@ void sgp30_Init(void) if (sgp.begin()) { sgp30_type = true; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SGP: Serialnumber 0x%04X-0x%04X-0x%04X"), sgp.serialnumber[0], sgp.serialnumber[1], sgp.serialnumber[2]); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SGP: Serialnumber 0x%04X-0x%04X-0x%04X"), sgp.serialnumber[0], sgp.serialnumber[1], sgp.serialnumber[2]); I2cSetActiveFound(SGP30_ADDRESS, "SGP30"); } } @@ -97,7 +97,7 @@ void Sgp30Update(void) // Perform every second to ensure proper operation of th uint16_t eCO2_base; if (!sgp.getIAQBaseline(&eCO2_base, &TVOC_base)) return; // Failed to get baseline readings -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SGP: Baseline values eCO2 0x%04X, TVOC 0x%04X"), eCO2_base, TVOC_base); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SGP: Baseline values eCO2 0x%04X, TVOC 0x%04X"), eCO2_base, TVOC_base); } } diff --git a/tasmota/xsns_22_sr04.ino b/tasmota/xsns_22_sr04.ino index 70f0308f9..f7cee1d20 100644 --- a/tasmota/xsns_22_sr04.ino +++ b/tasmota/xsns_22_sr04.ino @@ -71,7 +71,7 @@ uint8_t Sr04TModeDetect(void) } } - AddLog_P2(LOG_LEVEL_INFO,PSTR("SR04: Mode %d"), sr04_type); + AddLog_P(LOG_LEVEL_INFO,PSTR("SR04: Mode %d"), sr04_type); return sr04_type; } @@ -123,7 +123,7 @@ uint16_t Sr04TMode2Distance(void) //check crc sum if (crc != sonar_serial->read()) { - AddLog_P2(LOG_LEVEL_ERROR,PSTR("SR04: Reading CRC error.")); + AddLog_P(LOG_LEVEL_ERROR,PSTR("SR04: Reading CRC error.")); return NO_ECHO; } //DEBUG_SENSOR_LOG(PSTR("SR04: Distance: %d"), distance); diff --git a/tasmota/xsns_27_apds9960.ino b/tasmota/xsns_27_apds9960.ino index 780680262..e332bedaa 100644 --- a/tasmota/xsns_27_apds9960.ino +++ b/tasmota/xsns_27_apds9960.ino @@ -1453,7 +1453,7 @@ int16_t readGesture(void) { fifo_level = I2cRead8(APDS9960_I2C_ADDR, APDS9960_GFLVL); #ifdef USE_DEBUG_DRIVER - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DRV: FIFO Level : %d"), fifo_level); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DRV: FIFO Level : %d"), fifo_level); #endif // USE_DEBUG_DRIVER /* If there's stuff in the FIFO, read it into our data block */ @@ -1471,7 +1471,7 @@ int16_t readGesture(void) { for ( i = 0; i < bytes_read; i++ ) { ptr += sprintf(ptr, "%02X", fifo_data[i]); } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DRV: FIFO Dump : %s"), output); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DRV: FIFO Dump : %s"), output); #endif // USE_DEBUG_DRIVER /* If at least 1 set of data, sort the data into U/D/L/R */ @@ -1812,7 +1812,7 @@ void APDS9960_detect(void) { #ifdef USE_DEBUG_DRIVER // Debug new chip - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DRV: %s Chip %X"), APDS9960_TAG, APDS9960_type); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("DRV: %s Chip %X"), APDS9960_TAG, APDS9960_type); #endif // USE_DEBUG_DRIVER if (APDS9960_type == APDS9960_CHIPID_1 || APDS9960_type == APDS9960_CHIPID_2 || APDS9960_type == APDS9960_CHIPID_3) { diff --git a/tasmota/xsns_29_mcp230xx.ino b/tasmota/xsns_29_mcp230xx.ino index b96fd272b..6a960968a 100644 --- a/tasmota/xsns_29_mcp230xx.ino +++ b/tasmota/xsns_29_mcp230xx.ino @@ -512,7 +512,7 @@ bool MCP230xx_Command(void) if (Settings.mcp230xx_config[pin].int_count_en) { Settings.mcp230xx_config[pin].int_count_en=0; MCP230xx_CheckForIntCounter(); - AddLog_P2(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled INTCNT for pin D%i"),pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled INTCNT for pin D%i"),pin); } Response_P(MCP230XX_INTCFG_RESPONSE,"DEF",pin,Settings.mcp230xx_config[pin].int_report_defer); // "{\"MCP230xx_INT%s\":{\"D_%i\":%i}}"; return serviced; @@ -550,14 +550,14 @@ bool MCP230xx_Command(void) Settings.mcp230xx_config[pin].int_count_en=intcnt; if (Settings.mcp230xx_config[pin].int_report_defer) { Settings.mcp230xx_config[pin].int_report_defer=0; - AddLog_P2(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled INTDEF for pin D%i"),pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled INTDEF for pin D%i"),pin); } if (Settings.mcp230xx_config[pin].int_report_mode < 3) { Settings.mcp230xx_config[pin].int_report_mode=3; - AddLog_P2(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled immediate interrupt/telemetry reporting for pin D%i"),pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("*** WARNING *** - Disabled immediate interrupt/telemetry reporting for pin D%i"),pin); } if ((Settings.mcp230xx_config[pin].int_count_en) && (!Settings.mcp230xx_int_timer)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("*** WARNING *** - INTCNT enabled for pin D%i but global INTTIMER is disabled!"),pin); + AddLog_P(LOG_LEVEL_INFO, PSTR("*** WARNING *** - INTCNT enabled for pin D%i but global INTTIMER is disabled!"),pin); } MCP230xx_CheckForIntCounter(); // update register on whether or not we should be counting interrupts Response_P(MCP230XX_INTCFG_RESPONSE,"CNT",pin,Settings.mcp230xx_config[pin].int_count_en); // "{\"MCP230xx_INT%s\":{\"D_%i\":%i}}"; @@ -801,7 +801,7 @@ void MCP230xx_SwitchRelay() { uint8_t pin = mcp230xx_outpinmapping[i - (TasmotaGlobal.devices_present - mcp230xx_oldoutpincount)]; uint8_t pincmd = Settings.mcp230xx_config[pin].pinmode - 5; uint8_t relay_state = bitRead(XdrvMailbox.index, i); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("MCP: relay %d pin_no %d state %d"), i,pin, relay_state); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MCP: relay %d pin_no %d state %d"), i,pin, relay_state); switch (relay_state) { case 1: MCP230xx_SetOutPin(pin,abs(pincmd-1)); diff --git a/tasmota/xsns_30_mpr121.ino b/tasmota/xsns_30_mpr121.ino index 6fb12cd19..b49be7bee 100644 --- a/tasmota/xsns_30_mpr121.ino +++ b/tasmota/xsns_30_mpr121.ino @@ -293,7 +293,7 @@ void Mpr121Init(struct mpr121 *pS, bool initial) // Check if sensor is running pS->running[i] = (0x00 != I2cRead8(pS->i2c_addr[i], MPR121_ECR_REG)); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_I2C "MPR121%c: %sRunning"), pS->id[i], (pS->running[i]) ? "" : "NOT"); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_I2C "MPR121%c: %sRunning"), pS->id[i], (pS->running[i]) ? "" : "NOT"); } else { @@ -334,7 +334,7 @@ void Mpr121Show(struct mpr121 *pS, uint8_t function) // Read data if (!I2cValidRead16LE(&pS->current[i], pS->i2c_addr[i], MPR121_ELEX_REG)) { - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_I2C "MPR121%c: ERROR: Cannot read data!"), pS->id[i]); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_I2C "MPR121%c: ERROR: Cannot read data!"), pS->id[i]); Mpr121Init(pS, false); return; } @@ -343,7 +343,7 @@ void Mpr121Show(struct mpr121 *pS, uint8_t function) // Clear OVCF bit I2cWrite8(pS->i2c_addr[i], MPR121_ELEX_REG, 0x00); - AddLog_P2(LOG_LEVEL_ERROR, PSTR(D_LOG_I2C "MPR121%c: ERROR: Excess current detected! Fix circuits if it happens repeatedly! Soft-resetting MPR121 ..."), pS->id[i]); + AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_I2C "MPR121%c: ERROR: Excess current detected! Fix circuits if it happens repeatedly! Soft-resetting MPR121 ..."), pS->id[i]); Mpr121Init(pS, false); return; } diff --git a/tasmota/xsns_33_ds3231.ino b/tasmota/xsns_33_ds3231.ino index 02c065e8b..7d6f29b5e 100644 --- a/tasmota/xsns_33_ds3231.ino +++ b/tasmota/xsns_33_ds3231.ino @@ -142,7 +142,7 @@ void DS3231EverySecond(void) RtcTime.year = tmpTime.year + 1970; Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); - AddLog_P2(LOG_LEVEL_INFO, PSTR("Set time from DS3231 to RTC (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR("Set time from DS3231 to RTC (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 TasmotaGlobal.rules_flag.time_init = 1; @@ -151,7 +151,7 @@ void DS3231EverySecond(void) } } else if (!ds3231WriteStatus && Rtc.utc_time > START_VALID_TIME && abs(Rtc.utc_time - ReadFromDS3231()) > 60) {//if time is valid and is drift from RTC in more that 60 second - AddLog_P2(LOG_LEVEL_INFO, PSTR("Write Time TO DS3231 from NTP (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), + AddLog_P(LOG_LEVEL_INFO, PSTR("Write Time TO DS3231 from NTP (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); SetDS3231Time (Rtc.utc_time); //update the DS3231 time ds3231WriteStatus = true; diff --git a/tasmota/xsns_34_hx711.ino b/tasmota/xsns_34_hx711.ino index 2894a9cad..1476a26eb 100644 --- a/tasmota/xsns_34_hx711.ino +++ b/tasmota/xsns_34_hx711.ino @@ -468,8 +468,6 @@ void HxShow(bool json) #define WEB_HANDLE_HX711 "s34" -const char S_CONFIGURE_HX711[] PROGMEM = D_CONFIGURE_HX711; - const char HTTP_BTN_MENU_MAIN_HX711[] PROGMEM = "

"; @@ -492,7 +490,7 @@ void HandleHxAction(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_HX711); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP D_CONFIGURE_HX711)); if (Webserver->hasArg("save")) { HxSaveSettings(); @@ -523,7 +521,7 @@ void HandleHxAction(void) return; } - WSContentStart_P(S_CONFIGURE_HX711); + WSContentStart_P(PSTR(D_CONFIGURE_HX711)); WSContentSendStyle(); dtostrfd((float)Settings.weight_reference / 1000, 3, stemp1); char stemp2[20]; @@ -551,7 +549,7 @@ void HxLogUpdates(void) char weigth_item_chr[33]; dtostrfd((float)Settings.weight_item / 10000, 4, weigth_item_chr); - AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_JSON_WEIGHT_REF " %s, " D_JSON_WEIGHT_ITEM " %s"), weigth_ref_chr, weigth_item_chr); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_WIFI D_JSON_WEIGHT_REF " %s, " D_JSON_WEIGHT_ITEM " %s"), weigth_ref_chr, weigth_item_chr); } #endif // USE_HX711_GUI diff --git a/tasmota/xsns_37_rfsensor.ino b/tasmota/xsns_37_rfsensor.ino index 55895a29d..7dd376b97 100644 --- a/tasmota/xsns_37_rfsensor.ino +++ b/tasmota/xsns_37_rfsensor.ino @@ -251,7 +251,7 @@ void RfSnsAnalyzeTheov2(void) break; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RFS: TheoV2, ChkCalc %d, Chksum %d, id %d, Type %d, Ch %d, Volt %d, BattLo %d, Pld1 %d, Pld2 %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RFS: TheoV2, ChkCalc %d, Chksum %d, id %d, Type %d, Ch %d, Volt %d, BattLo %d, Pld1 %d, Pld2 %d"), chksum, Checksum, id, Type, Channel +1, Payload3, (Voltage & 0x80) >> 7, Payload1, Payload2); } @@ -503,7 +503,7 @@ void RfSnsAnalyzeAlectov2() rfsns_alecto_v2->wdir = data[8] & 0xf; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RFS: " D_ALECTOV2 ", ChkCalc %d, Chksum %d, rc %d, Temp %d, Hum %d, Rain %d, Wind %d, Gust %d, Dir %d, Factor %s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RFS: " D_ALECTOV2 ", ChkCalc %d, Chksum %d, rc %d, Temp %d, Hum %d, Rain %d, Wind %d, Gust %d, Dir %d, Factor %s"), checksumcalc, checksum, rc, ((data[1] & 0x3) * 256 + data[2]) - 400, data[3], (data[6] * 256) + data[7], data[4], data[5], data[8] & 0xf, dtostrfd(factor, 3, buf1)); } @@ -619,7 +619,7 @@ void RfSnsInit(void) void RfSnsAnalyzeRawSignal(void) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("RFS: Pulses %d"), (int)rfsns_raw_signal->Number); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("RFS: Pulses %d"), (int)rfsns_raw_signal->Number); #ifdef USE_THEO_V2 RfSnsAnalyzeTheov2(); diff --git a/tasmota/xsns_40_pn532.ino b/tasmota/xsns_40_pn532.ino index 8fd4e450d..f49d05b82 100644 --- a/tasmota/xsns_40_pn532.ino +++ b/tasmota/xsns_40_pn532.ino @@ -76,7 +76,7 @@ void PN532_Init(void) PN532_setPassiveActivationRetries(0xFF); PN532_SAMConfig(); pn532_model = 1; - AddLog_P2(LOG_LEVEL_INFO,"NFC: PN532 NFC Reader detected (V%u.%u)",(ver>>16) & 0xFF, (ver>>8) & 0xFF); + AddLog_P(LOG_LEVEL_INFO,"NFC: PN532 NFC Reader detected (V%u.%u)",(ver>>16) & 0xFF, (ver>>8) & 0xFF); } } } @@ -554,7 +554,7 @@ bool PN532_Command(void) memcpy(&pn532_newdata,&sub_string_tmp,pn532_newdata_len); pn532_newdata[pn532_newdata_len] = 0x00; // Null terminate the string pn532_function = 2; - AddLog_P2(LOG_LEVEL_INFO, PSTR("NFC: PN532 NFC - Next scanned tag data block 1 will be set to '%s'"), pn532_newdata); + AddLog_P(LOG_LEVEL_INFO, PSTR("NFC: PN532 NFC - Next scanned tag data block 1 will be set to '%s'"), pn532_newdata); ResponseTime_P(PSTR(",\"PN532\":{\"COMMAND\":\"S\"}}")); return serviced; } diff --git a/tasmota/xsns_41_max44009.ino b/tasmota/xsns_41_max44009.ino index 471840050..b07d37567 100644 --- a/tasmota/xsns_41_max44009.ino +++ b/tasmota/xsns_41_max44009.ino @@ -75,7 +75,7 @@ void Max4409Detect(void) if ((I2cValidRead8(&buffer1, max44009_address, REG_LOWER_THRESHOLD)) && (I2cValidRead8(&buffer2, max44009_address, REG_THRESHOLD_TIMER))) { - //AddLog_P2(LOG_LEVEL_DEBUG_MORE, PSTR("MAX44009 %x: %x, %x"), max44009_address, (int)buffer1, (int)buffer2); + //AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("MAX44009 %x: %x, %x"), max44009_address, (int)buffer1, (int)buffer2); if ((0x00 == buffer1) && (0xFF == buffer2)) { diff --git a/tasmota/xsns_42_scd30.ino b/tasmota/xsns_42_scd30.ino index 50e3968ec..c208c3307 100644 --- a/tasmota/xsns_42_scd30.ino +++ b/tasmota/xsns_42_scd30.ino @@ -93,7 +93,7 @@ void Scd30Detect(void) I2cSetActiveFound(SCD30_ADDRESS, "SCD30"); scd30Found = true; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("SCD: FW v%d.%d"), major, minor); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SCD: FW v%d.%d"), major, minor); } // gets data from the sensor every 3 seconds or so to give the sensor time to gather new data @@ -120,7 +120,7 @@ void Scd30Update(void) scd30ErrorState = SCD30_STATE_ERROR_DATA_CRC; scd30CrcError_count++; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: CRC error, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: CRC error, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count); #endif break; @@ -128,7 +128,7 @@ void Scd30Update(void) case ERROR_SCD30_CO2_ZERO: scd30Co2Zero_count++; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: CO2 zero, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: CO2 zero, CRC error: %ld, CO2 zero: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), scd30CrcError_count, scd30Co2Zero_count, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count); #endif break; @@ -136,7 +136,7 @@ void Scd30Update(void) default: { scd30ErrorState = SCD30_STATE_ERROR_READ_MEAS; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: Update: ReadMeasurement error: 0x%lX, counter: %ld"), error, scd30Loop_count); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: Update: ReadMeasurement error: 0x%lX, counter: %ld"), error, scd30Loop_count); #endif return; } @@ -148,9 +148,9 @@ void Scd30Update(void) case SCD30_STATE_ERROR_DATA_CRC: { //scd30IsDataValid = false; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count); - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: got CRC error, try again, counter: %ld"), scd30Loop_count); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: got CRC error, try again, counter: %ld"), scd30Loop_count); #endif scd30ErrorState = ERROR_SCD30_NO_ERROR; } @@ -159,15 +159,15 @@ void Scd30Update(void) case SCD30_STATE_ERROR_READ_MEAS: { //scd30IsDataValid = false; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count); - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: not answering, sending soft reset, counter: %ld"), scd30Loop_count); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: not answering, sending soft reset, counter: %ld"), scd30Loop_count); #endif scd30Reset_count++; error = scd30.softReset(); if (error) { #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: resetting got error: 0x%lX"), error); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: resetting got error: 0x%lX"), error); #endif error >>= 8; if (error == 4) { @@ -184,7 +184,7 @@ void Scd30Update(void) case SCD30_STATE_ERROR_SOFT_RESET: { //scd30IsDataValid = false; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), scd30ErrorState, scd30GoodMeas_count, scd30DataNotAvailable_count, scd30Reset_count, i2cReset_count); AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: clearing i2c bus")); #endif @@ -193,7 +193,7 @@ void Scd30Update(void) if (error) { scd30ErrorState = SCD30_STATE_ERROR_I2C_RESET; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: error clearing i2c bus: 0x%lX"), error); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: error clearing i2c bus: 0x%lX"), error); #endif } else { scd30ErrorState = ERROR_SCD30_NO_ERROR; @@ -204,7 +204,7 @@ void Scd30Update(void) default: { //scd30IsDataValid = false; #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: unknown error state: 0x%lX"), scd30ErrorState); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: unknown error state: 0x%lX"), scd30ErrorState); #endif scd30ErrorState = SCD30_STATE_ERROR_SOFT_RESET; // try again } @@ -340,7 +340,7 @@ bool Scd30CommandSensor() if (error) { #ifdef SCD30_DEBUG - AddLog_P2(LOG_LEVEL_ERROR, PSTR("SCD30: error getting FW version: 0x%lX"), error); + AddLog_P(LOG_LEVEL_ERROR, PSTR("SCD30: error getting FW version: 0x%lX"), error); #endif serviced = false; } diff --git a/tasmota/xsns_43_hre.ino b/tasmota/xsns_43_hre.ino index 2b5a3dff3..f7240ec17 100644 --- a/tasmota/xsns_43_hre.ino +++ b/tasmota/xsns_43_hre.ino @@ -171,7 +171,7 @@ void hreEvery50ms(void) // Start reading the data block case hre_read: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_HRE "sync_run:%d, sync_counter:%d"), sync_run, sync_counter); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HRE "sync_run:%d, sync_counter:%d"), sync_run, sync_counter); read_counter = 0; parity_errors = 0; curr_start = TasmotaGlobal.uptime; @@ -190,7 +190,7 @@ void hreEvery50ms(void) if (read_counter == 46) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_HRE "pe:%d, re:%d, buff:%s"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HRE "pe:%d, re:%d, buff:%s"), parity_errors, hre_read_errors, buff); if (parity_errors == 0) { diff --git a/tasmota/xsns_44_sps30.ino b/tasmota/xsns_44_sps30.ino index ce7912c88..78b925839 100644 --- a/tasmota/xsns_44_sps30.ino +++ b/tasmota/xsns_44_sps30.ino @@ -134,7 +134,7 @@ void SPS30_Detect(void) uint8_t dcode[32]; sps30_get_data(SPS_CMD_GET_SERIAL,dcode,sizeof(dcode)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("sps30 found with serial: %s"),dcode); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("sps30 found with serial: %s"),dcode); sps30_cmd(SPS_CMD_START_MEASUREMENT); sps30_running = 1; sps30_ready = 1; diff --git a/tasmota/xsns_48_chirp.ino b/tasmota/xsns_48_chirp.ino index 3ef5ea72c..ded5b30e6 100644 --- a/tasmota/xsns_48_chirp.ino +++ b/tasmota/xsns_48_chirp.ino @@ -216,13 +216,13 @@ bool ChirpSet(uint8_t addr) { chirp_timeout_count = 10; chirp_next_job = 0; if(chirp_sensor[chirp_current].version == 255){ // this should be Chirp! and it seems to need a power cycle (or RESET to GND) - AddLog_P2(LOG_LEVEL_INFO, PSTR("CHIRP: wrote new address %u, please power off device"), addr); + AddLog_P(LOG_LEVEL_INFO, PSTR("CHIRP: wrote new address %u, please power off device"), addr); chirp_sensor[chirp_current].version == 0; // make it "invisible" } return true; } } - AddLog_P2(LOG_LEVEL_INFO, PSTR("CHIRP: address %u incorrect and not used"), addr); + AddLog_P(LOG_LEVEL_INFO, PSTR("CHIRP: address %u incorrect and not used"), addr); return false; } @@ -241,13 +241,13 @@ bool ChirpScan() I2cSetActiveFound(address, "CHIRP"); if (chirp_found_sensors 0); } @@ -387,7 +387,7 @@ void ChirpEvery100MSecond(void) DEBUG_SENSOR_LOG(PSTR("CHIRP: timeout 1/10 sec: %u, tele: %u"), chirp_timeout_count, Settings.tele_period); } else{ - AddLog_P2(LOG_LEVEL_INFO, PSTR("CHIRP: TELEPERIOD must be > 16 seconds !")); + AddLog_P(LOG_LEVEL_INFO, PSTR("CHIRP: TELEPERIOD must be > 16 seconds !")); // we could overwrite it to i.e. 20 seconds here } chirp_next_job = 1; // back to step 1 diff --git a/tasmota/xsns_50_paj7620.ino b/tasmota/xsns_50_paj7620.ino index c0db8fa94..ad5ce5a2c 100644 --- a/tasmota/xsns_50_paj7620.ino +++ b/tasmota/xsns_50_paj7620.ino @@ -317,7 +317,7 @@ void PAJ7620Detect(void) uint8_t PAJ7620_ver = I2cRead8(PAJ7620_ADDR,2); if (0x7620 == PAJ7620_id) { // this device ID makes sense ;) I2cSetActiveFound(PAJ7620_ADDR, PAJ7620_name); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PAJ: ID: 0x%x and VER: %u"), PAJ7620_id, PAJ7620_ver); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PAJ: ID: 0x%x and VER: %u"), PAJ7620_id, PAJ7620_ver); PAJ7620_next_job = 1; // now init } else { diff --git a/tasmota/xsns_52_ibeacon.ino b/tasmota/xsns_52_ibeacon.ino index 9f31dc6c1..8071d14a7 100755 --- a/tasmota/xsns_52_ibeacon.ino +++ b/tasmota/xsns_52_ibeacon.ino @@ -187,10 +187,10 @@ class ESP32BLEScanCallback : public BLEAdvertisedDeviceCallbacks uint8_t PWR = oBeacon.getSignalPower(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: MAC: %s Major: %d Minor: %d UUID: %s Power: %d RSSI: %d"), + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: MAC: %s Major: %d Minor: %d UUID: %s Power: %d RSSI: %d"), "BLE", advertisedDevice->getAddress().toString().c_str(), - Major, Minor, + Major, Minor, oBeacon.getProximityUUID().toString().c_str(), PWR, RSSI); @@ -239,7 +239,7 @@ void ESP32StartScanTask(){ 0, /* Priority of the task */ NULL, /* Task handle. */ 0); /* Core where the task should run */ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Start scanning"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Start scanning"),"BLE"); } void ESP32scanEndedCB(NimBLEScanResults results); @@ -257,25 +257,25 @@ void ESP32ScanTask(void *pvParameters){ for (;;) { vTaskDelay(10000/ portTICK_PERIOD_MS); ESP32BLEScan->clearResults(); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Clear scanning results"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Clear scanning results"),"BLE"); } } void ESP32scanEndedCB(NimBLEScanResults results) { ESP32BLE.mode.runningScan = 0; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Stop scanning"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Stop scanning"),"BLE"); } void ESP32StopScanTask() { - ESP32BLEScan->stop(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: Pausing scanner task"),"BLE"); + ESP32BLEScan->stop(); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: Pausing scanner task"),"BLE"); } void ESP32ResumeScanTask() { ESP32BLE.mode.runningScan = 1; ESP32BLEScan->start(0, ESP32scanEndedCB, false); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: Resumed scanner task"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: Resumed scanner task"),"BLE"); } #endif @@ -325,12 +325,12 @@ void esp32_every_second(void) { if (TasmotaGlobal.ota_state_flag) { if (ESP32BLE.mode.runningScan) { - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Upgrade procedure started"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Upgrade procedure started"),"BLE"); ESP32StopScanTask(); } } else { if (!ESP32BLE.mode.runningScan) { - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Resuming scan"),"BLE"); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Resuming scan"),"BLE"); ESP32ResumeScanTask(); } } @@ -390,7 +390,7 @@ void hm17_sendcmd(uint8_t cmd) { hm17_sbclr(); hm17_cmd=cmd; #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("hm17cmd %d"),cmd); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("hm17cmd %d"),cmd); #endif switch (cmd) { case HM17_TEST: @@ -454,8 +454,8 @@ uint32_t ibeacon_add(struct IBEACON *ib) { if (ibeacons[cnt].REPTIME >= IB_UPDATE_TIME) { ibeacons[cnt].REPTIME = 0; return 2; - } -#endif + } +#endif return 1; } } else { @@ -467,8 +467,8 @@ uint32_t ibeacon_add(struct IBEACON *ib) { if (ibeacons[cnt].REPTIME >= IB_UPDATE_TIME) { ibeacons[cnt].REPTIME = 0; return 2; - } -#endif + } +#endif return 1; } } @@ -486,7 +486,7 @@ uint32_t ibeacon_add(struct IBEACON *ib) { #ifdef USE_IBEACON_ESP32 memcpy(ibeacons[cnt].NAME,ib->NAME,16); ibeacons[cnt].REPTIME = 0; -#endif +#endif return 1; } } @@ -502,7 +502,7 @@ void hm17_decode(void) { case HM17_TEST: if (!strncmp(hm17_sbuffer,"OK",2)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("AT OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("AT OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -512,7 +512,7 @@ void hm17_decode(void) { case HM17_ROLE: if (!strncmp(hm17_sbuffer,"OK+Set:1",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("ROLE OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("ROLE OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -521,7 +521,7 @@ void hm17_decode(void) { case HM17_IMME: if (!strncmp(hm17_sbuffer,"OK+Set:1",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("IMME OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("IMME OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -530,7 +530,7 @@ void hm17_decode(void) { case HM17_IBEA: if (!strncmp(hm17_sbuffer,"OK+Set:1",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("IBEA OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("IBEA OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -539,7 +539,7 @@ void hm17_decode(void) { case HM17_SCAN: if (!strncmp(hm17_sbuffer,"OK+Set:5",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("SCAN OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("SCAN OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -548,7 +548,7 @@ void hm17_decode(void) { case HM17_RESET: if (!strncmp(hm17_sbuffer,"OK+RESET",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("RESET OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("RESET OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -557,7 +557,7 @@ void hm17_decode(void) { case HM17_RENEW: if (!strncmp(hm17_sbuffer,"OK+RENEW",8)) { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("RENEW OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("RENEW OK")); #endif hm17_sbclr(); hm17_result=HM17_SUCESS; @@ -567,7 +567,7 @@ void hm17_decode(void) { if (!strncmp(hm17_sbuffer,"OK+CONNA",8)) { hm17_sbclr(); #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("CONNA OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("CONNA OK")); #endif hm17_connecting=2; break; @@ -575,21 +575,21 @@ void hm17_decode(void) { if (!strncmp(hm17_sbuffer,"OK+CONNE",8)) { hm17_sbclr(); #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("CONNE ERROR")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("CONNE ERROR")); #endif break; } if (!strncmp(hm17_sbuffer,"OK+CONNF",8)) { hm17_sbclr(); #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("CONNF ERROR")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("CONNF ERROR")); #endif break; } if (hm17_connecting==2 && !strncmp(hm17_sbuffer,"OK+CONN",7)) { hm17_sbclr(); #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("CONN OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("CONN OK")); #endif hm17_connecting=3; hm17_sendcmd(HM17_TEST); @@ -604,7 +604,7 @@ void hm17_decode(void) { hm17_sbclr(); hm17_result=1; #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("DISCS OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("DISCS OK")); #endif break; } @@ -612,7 +612,7 @@ void hm17_decode(void) { hm17_sbclr(); hm17_result=1; #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("DISIS OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("DISIS OK")); #endif break; } @@ -620,7 +620,7 @@ void hm17_decode(void) { hm17_sbclr(); hm17_result=HM17_SUCESS; #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR("DISCE OK")); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR("DISCE OK")); #endif hm17_scanning=0; break; @@ -630,8 +630,8 @@ void hm17_decode(void) { hm17_result=HM17_SUCESS; #ifdef IBEACON_DEBUG if (hm17_debug) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("NAME OK")); - AddLog_P2(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); + AddLog_P(LOG_LEVEL_INFO, PSTR("NAME OK")); + AddLog_P(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); } #endif hm17_sbclr(); @@ -648,8 +648,8 @@ void hm17_decode(void) { hm17_result=HM17_SUCESS; #ifdef IBEACON_DEBUG if (hm17_debug) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("DIS0 OK")); - AddLog_P2(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); + AddLog_P(LOG_LEVEL_INFO, PSTR("DIS0 OK")); + AddLog_P(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); } #endif hm17_sbclr(); @@ -663,9 +663,9 @@ hm17_v110: if (hm17_sindex==78) { #ifdef IBEACON_DEBUG if (hm17_debug) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("DISC: OK")); + AddLog_P(LOG_LEVEL_INFO, PSTR("DISC: OK")); //OK+DISC:4C 000C0E:003 A9144081A8 3B16849611 862EC1005: 0B1CE7485D :4DB4E940F C0E:-078 - AddLog_P2(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); + AddLog_P(LOG_LEVEL_INFO, PSTR(">>%s"),&hm17_sbuffer[8]); } #endif memcpy(ib.FACID,&hm17_sbuffer[8],8); @@ -684,7 +684,7 @@ hm17_v110: } } else { #ifdef IBEACON_DEBUG - if (hm17_debug) AddLog_P2(LOG_LEVEL_INFO, PSTR(">->%s"),&hm17_sbuffer[8]); + if (hm17_debug) AddLog_P(LOG_LEVEL_INFO, PSTR(">->%s"),&hm17_sbuffer[8]); #endif } break; @@ -721,7 +721,7 @@ uint32_t difftime=millis()-hm17_lastms; if (hm17_cmd==99) { if (hm17_sindex>=HM17_BSIZ-2 || (hm17_sindex && (difftime>100))) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),hm17_sbuffer); + AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),hm17_sbuffer); hm17_sbclr(); } } @@ -816,7 +816,7 @@ bool xsns52_cmd(void) { } else if (*cp=='c') { for (uint32_t cnt=0;cnt='0' && *cp<='8') { hm17_sendcmd(*cp&7); diff --git a/tasmota/xsns_53_sml.ino b/tasmota/xsns_53_sml.ino index 23ab94cc5..40e206a4e 100755 --- a/tasmota/xsns_53_sml.ino +++ b/tasmota/xsns_53_sml.ino @@ -1583,7 +1583,7 @@ void SML_Decode(uint8_t index) { if (lowByte(crc)!=smltbuf[mindex][pos]) goto nextsect; if (highByte(crc)!=smltbuf[mindex][pos+1]) goto nextsect; dval=mbus_dval; - //AddLog_P2(LOG_LEVEL_INFO, PSTR(">> %s"),mp); + //AddLog_P(LOG_LEVEL_INFO, PSTR(">> %s"),mp); mp++; } else { if (meter_desc_p[mindex].type=='p') { @@ -1605,7 +1605,7 @@ void SML_Decode(uint8_t index) { #else meter_vars[vindex]=dval; #endif -//AddLog_P2(LOG_LEVEL_INFO, PSTR(">> %s"),mp); +//AddLog_P(LOG_LEVEL_INFO, PSTR(">> %s"),mp); // get scaling factor double fac=CharToDouble((char*)mp); meter_vars[vindex]/=fac; @@ -1898,13 +1898,13 @@ char dstbuf[SML_SRCBSIZE*2]; Replace_Cmd_Vars(lp,1,dstbuf,sizeof(dstbuf)); lp+=SML_getlinelen(lp)+1; uint32_t slen=strlen(dstbuf); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("%d - %s"),slen,dstbuf); + //AddLog_P(LOG_LEVEL_INFO, PSTR("%d - %s"),slen,dstbuf); mlen+=slen+1; if (*lp=='#') break; if (*lp=='>') break; if (*lp==0) break; } - //AddLog_P2(LOG_LEVEL_INFO, PSTR("len=%d"),mlen); + //AddLog_P(LOG_LEVEL_INFO, PSTR("len=%d"),mlen); return mlen+32; } #else @@ -1916,7 +1916,7 @@ uint32_t SML_getscriptsize(char *lp) { break; } } - //AddLog_P2(LOG_LEVEL_INFO, PSTR("len=%d"),mlen); + //AddLog_P(LOG_LEVEL_INFO, PSTR("len=%d"),mlen); return mlen; } #endif @@ -2071,7 +2071,7 @@ dddef_exit: char dstbuf[SML_SRCBSIZE*2]; Replace_Cmd_Vars(lp,1,dstbuf,sizeof(dstbuf)); lp+=SML_getlinelen(lp); - //AddLog_P2(LOG_LEVEL_INFO, PSTR("%s"),dstbuf); + //AddLog_P(LOG_LEVEL_INFO, PSTR("%s"),dstbuf); char *lp1=dstbuf; if (*lp1=='-' || isdigit(*lp1)) { //toLogEOL(">>",lp); @@ -2398,10 +2398,10 @@ void SML_Check_Send(void) { char *cp; for (uint32_t cnt=sml_desc_cnt; cnt=0 && script_meter_desc[cnt].txmem) { - //AddLog_P2(LOG_LEVEL_INFO, PSTR("100 ms>> %d - %s - %d"),sml_desc_cnt,script_meter_desc[cnt].txmem,script_meter_desc[cnt].tsecs); + //AddLog_P(LOG_LEVEL_INFO, PSTR("100 ms>> %d - %s - %d"),sml_desc_cnt,script_meter_desc[cnt].txmem,script_meter_desc[cnt].tsecs); if ((sml_100ms_cnt>=script_meter_desc[cnt].tsecs)) { sml_100ms_cnt=0; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("100 ms>> 2"),cp); + //AddLog_P(LOG_LEVEL_INFO, PSTR("100 ms>> 2"),cp); if (script_meter_desc[cnt].max_index>1) { script_meter_desc[cnt].index++; if (script_meter_desc[cnt].index>=script_meter_desc[cnt].max_index) { @@ -2415,7 +2415,7 @@ void SML_Check_Send(void) { //SML_Send_Seq(cnt,cp); sml_desc_cnt++; } - //AddLog_P2(LOG_LEVEL_INFO, PSTR(">> %s"),cp); + //AddLog_P(LOG_LEVEL_INFO, PSTR(">> %s"),cp); SML_Send_Seq(cnt,cp); if (sml_desc_cnt>=meters_used) { sml_desc_cnt=0; diff --git a/tasmota/xsns_54_ina226.ino b/tasmota/xsns_54_ina226.ino index f9ec67221..49a6b5890 100644 --- a/tasmota/xsns_54_ina226.ino +++ b/tasmota/xsns_54_ina226.ino @@ -125,7 +125,7 @@ static void _debug_fval(const char *str, float fval, uint8_t prec = 4 ) { char fstr[32]; dtostrfd(fval, prec, fstr); - AddLog_P2( LOG_LEVEL_DEBUG, PSTR("%s: %s"), str, fstr ); + AddLog_P( LOG_LEVEL_DEBUG, PSTR("%s: %s"), str, fstr ); } @@ -168,7 +168,7 @@ bool Ina226TestPresence(uint8_t device) // Read config uint16_t config = I2cRead16( Ina226Info[device].address, INA226_REG_CONFIG ); - //AddLog_P2( LOG_LEVEL_NONE, PSTR("Config register %04x" ), config); + //AddLog_P( LOG_LEVEL_NONE, PSTR("Config register %04x" ), config); if (config != Ina226Info[device].config) return false; @@ -203,11 +203,11 @@ void Ina226Init() Ina226Info_t *p = Ina226Info; - //AddLog_P2( LOG_LEVEL_NONE, "Ina226Init"); -// AddLog_P2( LOG_LEVEL_NONE, "Size of Settings: %d bytes", sizeof(Settings)); + //AddLog_P( LOG_LEVEL_NONE, "Ina226Init"); +// AddLog_P( LOG_LEVEL_NONE, "Size of Settings: %d bytes", sizeof(Settings)); // if (!TasmotaGlobal.i2c_enabled) -// AddLog_P2(LOG_LEVEL_DEBUG, "INA226: Initialization failed: No I2C support"); +// AddLog_P(LOG_LEVEL_DEBUG, "INA226: Initialization failed: No I2C support"); // Clear Ina226 info data @@ -216,7 +216,7 @@ void Ina226Init() *p = {0}; } - //AddLog_P2( LOG_LEVEL_NONE, PSTR("Sizeof Ina226Cfg: %d" ), sizeof(Ina226Cfg)); + //AddLog_P( LOG_LEVEL_NONE, PSTR("Sizeof Ina226Cfg: %d" ), sizeof(Ina226Cfg)); // Detect devices @@ -227,25 +227,25 @@ void Ina226Init() // Skip device probing if the full scale current is zero - //AddLog_P2( LOG_LEVEL_NONE, "fs_i[%d]: %d", i, Settings.ina226_i_fs[i]); + //AddLog_P( LOG_LEVEL_NONE, "fs_i[%d]: %d", i, Settings.ina226_i_fs[i]); if (!Settings.ina226_i_fs[i]) continue; - //AddLog_P2( LOG_LEVEL_NONE, PSTR("INA226 trying address %02x" ), addr ); + //AddLog_P( LOG_LEVEL_NONE, PSTR("INA226 trying address %02x" ), addr ); // Try Resetting the device if (!I2cWrite16( addr, INA226_REG_CONFIG, INA226_CONFIG_RESET)){ - AddLog_P2( LOG_LEVEL_DEBUG, "No INA226 at address: %02X", addr); + AddLog_P( LOG_LEVEL_DEBUG, "No INA226 at address: %02X", addr); continue; // No device } // Read config uint16_t config = I2cRead16( addr, INA226_REG_CONFIG ); - //AddLog_P2( LOG_LEVEL_NONE, PSTR("INA226 Config register %04x" ), config); + //AddLog_P( LOG_LEVEL_NONE, PSTR("INA226 Config register %04x" ), config); if (INA226_RES_CONFIG != config) continue; @@ -264,19 +264,19 @@ void Ina226Init() // Configuration p->config = config; // Full scale current in tenths of an amp - //AddLog_P2( LOG_LEVEL_NONE, "Full Scale I in tenths of an amp: %u", Settings.ina226_i_fs[i]); + //AddLog_P( LOG_LEVEL_NONE, "Full Scale I in tenths of an amp: %u", Settings.ina226_i_fs[i]); p->i_lsb = (((float) Settings.ina226_i_fs[i])/10.0f)/32768.0f; //_debug_fval("i_lsb: %s", p->i_lsb, 7); // Get shunt resistor value in micro ohms uint32_t r_shunt_uohms = _expand_r_shunt(Settings.ina226_r_shunt[i]); - //AddLog_P2( LOG_LEVEL_NONE, "Shunt R in micro-ohms: %u", r_shunt_uohms); + //AddLog_P( LOG_LEVEL_NONE, "Shunt R in micro-ohms: %u", r_shunt_uohms); p->calibrationValue = ((uint16_t) (0.00512/(p->i_lsb * r_shunt_uohms/1000000.0f))); // Device present p->present = true; - //AddLog_P2( LOG_LEVEL_NONE, "INA226 Device %d calibration value: %04X", i, p->calibrationValue); + //AddLog_P( LOG_LEVEL_NONE, "INA226 Device %d calibration value: %04X", i, p->calibrationValue); Ina226SetCalibration(i); @@ -336,11 +336,11 @@ float Ina226ReadPower_w(uint8_t device) void Ina226Read(uint8_t device) { - //AddLog_P2( LOG_LEVEL_NONE, "Ina226Read"); + //AddLog_P( LOG_LEVEL_NONE, "Ina226Read"); voltages[device] = Ina226ReadBus_v(device); currents[device] = Ina226ReadShunt_i(device); powers[device] = Ina226ReadPower_w(device); - //AddLog_P2( LOG_LEVEL_NONE, "INA226 Device %d", device ); + //AddLog_P( LOG_LEVEL_NONE, "INA226 Device %d", device ); //_debug_fval("Voltage", voltages[device]); //_debug_fval("Current", currents[device]); //_debug_fval("Power", powers[device]); @@ -352,7 +352,7 @@ void Ina226Read(uint8_t device) void Ina226EverySecond() { - //AddLog_P2( LOG_LEVEL_NONE, "Ina226EverySecond"); + //AddLog_P( LOG_LEVEL_NONE, "Ina226EverySecond"); for (uint8_t device = 0; device < INA226_MAX_ADDRESSES; device++){ // If there are Ina226s, and the device was present, and the device still is present, read its registers if (Ina226sFound && Ina226Info[device].present && Ina226TestPresence(device)){ @@ -363,7 +363,7 @@ void Ina226EverySecond() // If device was present, note that it dropped off here //if(Ina226Info[device].present){ //reinit_count[device]++; - //AddLog_P2( LOG_LEVEL_DEBUG, "INA226 Device %d dropped off, count: %d", device, reinit_count[device]); + //AddLog_P( LOG_LEVEL_DEBUG, "INA226 Device %d dropped off, count: %d", device, reinit_count[device]); //} // Device no longer present Ina226Info[device].present = false; @@ -384,8 +384,8 @@ bool Ina226CommandSensor() uint8_t i, param_count, device, p1 = XdrvMailbox.payload; uint32_t r_shunt_uohms; uint16_t compact_r_shunt_uohms; - //AddLog_P2( LOG_LEVEL_NONE, "Command received: %d", XdrvMailbox.payload); - //AddLog_P2( LOG_LEVEL_NONE, "Command data received: %s", XdrvMailbox.data); + //AddLog_P( LOG_LEVEL_NONE, "Command received: %d", XdrvMailbox.payload); + //AddLog_P( LOG_LEVEL_NONE, "Command data received: %s", XdrvMailbox.data); // Make a copy of the data and add another terminator @@ -401,7 +401,7 @@ bool Ina226CommandSensor() if (param_str[i] == ' ' || param_str[i] == ',' || param_str[i] == 0){ param_str[i] = 0; params[param_count] = cp; - //AddLog_P2( LOG_LEVEL_NONE, "INA226 Command parameter: %d, value: %s", param_count, params[param_count]); + //AddLog_P( LOG_LEVEL_NONE, "INA226 Command parameter: %d, value: %s", param_count, params[param_count]); param_count++; cp = param_str + i + 1; } @@ -437,7 +437,7 @@ bool Ina226CommandSensor() r_shunt_uohms = (uint32_t) ((CharToFloat(params[1])) * 1000000.0f); - //AddLog_P2( LOG_LEVEL_NONE, "r_shunt_uohms: %d", r_shunt_uohms); + //AddLog_P( LOG_LEVEL_NONE, "r_shunt_uohms: %d", r_shunt_uohms); if (r_shunt_uohms > 32767){ uint32_t r_shunt_mohms = r_shunt_uohms/1000UL; Settings.ina226_r_shunt[device] = (uint16_t) (r_shunt_mohms | 0x8000); @@ -445,13 +445,13 @@ bool Ina226CommandSensor() else Settings.ina226_r_shunt[device] = (uint16_t) r_shunt_uohms; - //AddLog_P2( LOG_LEVEL_NONE, "r_shunt_compacted: %04X", Settings.ina226_r_shunt[device]); + //AddLog_P( LOG_LEVEL_NONE, "r_shunt_compacted: %04X", Settings.ina226_r_shunt[device]); show_config = true; break; case 2: // Set full scale current in tenths of amps from user input in Amps Settings.ina226_i_fs[device] = (uint16_t) ((CharToFloat(params[1])) * 10.0f); - //AddLog_P2( LOG_LEVEL_NONE, "i_fs: %d", Settings.ina226_i_fs[device]); + //AddLog_P( LOG_LEVEL_NONE, "i_fs: %d", Settings.ina226_i_fs[device]); show_config = true; break; diff --git a/tasmota/xsns_59_ds1624.ino b/tasmota/xsns_59_ds1624.ino index 7fece459d..12189164e 100644 --- a/tasmota/xsns_59_ds1624.ino +++ b/tasmota/xsns_59_ds1624.ino @@ -69,7 +69,7 @@ void DS1624_Restart(uint8_t config, uint32_t idx) { config &= ~(DS1621_CFG_DONE|DS1621_CFG_1SHOT); I2cWrite8(addr, DS1624_CONF_REGISTER, config); // 1shot off delay(10); // by spec after writing - AddLog_P2(LOG_LEVEL_ERROR, "%s addr %x is reset, reconfig: %x", ds1624_sns[idx].name, addr, config); + AddLog_P(LOG_LEVEL_ERROR, "%s addr %x is reset, reconfig: %x", ds1624_sns[idx].name, addr, config); } I2cValidRead(addr, DS1624_START_REGISTER, 1); } @@ -94,7 +94,7 @@ void DS1624_HotPlugUp(uint32_t idx) ds1624_sns[idx].errcnt = 0; ds1624_sns[idx].misscnt = 0; DS1624_Restart(config,idx); - AddLog_P2(LOG_LEVEL_INFO, "Hot Plug %s addr %x config: %x", ds1624_sns[idx].name, addr, config); + AddLog_P(LOG_LEVEL_INFO, "Hot Plug %s addr %x config: %x", ds1624_sns[idx].name, addr, config); } } @@ -104,7 +104,7 @@ void DS1624_HotPlugDown(int idx) if (!I2cActive(addr)) { return; } I2cResetActive(addr); ds1624_sns[idx].valid = false; - AddLog_P2(LOG_LEVEL_INFO, "Hot UnPlug %s", ds1624_sns[idx].name); + AddLog_P(LOG_LEVEL_INFO, "Hot UnPlug %s", ds1624_sns[idx].name); } bool DS1624GetTemp(float *value, int idx) @@ -114,13 +114,13 @@ bool DS1624GetTemp(float *value, int idx) uint8_t config; if (!I2cValidRead8(&config, addr, DS1624_CONF_REGISTER)) { ds1624_sns[idx].misscnt++; - AddLog_P2(LOG_LEVEL_INFO, "%s device missing (errors: %i)", ds1624_sns[idx].name, ds1624_sns[idx].misscnt); + AddLog_P(LOG_LEVEL_INFO, "%s device missing (errors: %i)", ds1624_sns[idx].name, ds1624_sns[idx].misscnt); return false; } ds1624_sns[idx].misscnt=0; if (config & (DS1621_CFG_1SHOT|DS1621_CFG_DONE)) { ds1624_sns[idx].errcnt++; - AddLog_P2(LOG_LEVEL_INFO, "%s config error, restart... (errors: %i)", ds1624_sns[idx].name, ds1624_sns[idx].errcnt); + AddLog_P(LOG_LEVEL_INFO, "%s config error, restart... (errors: %i)", ds1624_sns[idx].name, ds1624_sns[idx].errcnt); DS1624_Restart(config, idx); return false; } diff --git a/tasmota/xsns_61_MI_NRF24.ino b/tasmota/xsns_61_MI_NRF24.ino index 06ac83062..4c243d4dc 100644 --- a/tasmota/xsns_61_MI_NRF24.ino +++ b/tasmota/xsns_61_MI_NRF24.ino @@ -448,7 +448,7 @@ bool MINRFinitBLE(uint8_t _mode) MINRFchangePacketModeTo(_mode); return true; } - // AddLog_P2(LOG_LEVEL_INFO,PSTR("MINRF chip NOT !!!! connected")); + // AddLog_P(LOG_LEVEL_INFO,PSTR("MINRF chip NOT !!!! connected")); return false; } @@ -491,7 +491,7 @@ bool MINRFreceivePacket(void) MINRFswapbuf((uint8_t*)&MINRF.buffer, sizeof(MINRF.buffer) ); // MINRF_LOG_BUFFER(); - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: _lsfrlist: %x, chan: %u, mode: %u"),_lsfrlist[MINRF.currentChan],MINRF.currentChan, MINRF.packetMode); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: _lsfrlist: %x, chan: %u, mode: %u"),_lsfrlist[MINRF.currentChan],MINRF.currentChan, MINRF.packetMode); switch (MINRF.packetMode) { case 0: case NLIGHT: case MJYD2S: MINRFwhiten((uint8_t *)&MINRF.buffer, sizeof(MINRF.buffer), MINRF.channel[MINRF.currentChan] | 0x40); // "BEACON" mode, "NLIGHT" mode, "MJYD2S" mode @@ -599,7 +599,7 @@ void MINRFhandleScan(void){ MINRFscanResult.erase(std::remove_if(MINRFscanResult.begin(), MINRFscanResult.end(), [&i](scan_entry_t e) { - if(e.showedUp>2) AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: Beacon %02u: %02X%02X%02X%02X%02X%02X Cid: %04X Svc: %04X UUID: %04X"),i,e.MAC[0],e.MAC[1],e.MAC[2],e.MAC[3],e.MAC[4],e.MAC[5],e.cid,e.svc,e.uuid); + if(e.showedUp>2) AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: Beacon %02u: %02X%02X%02X%02X%02X%02X Cid: %04X Svc: %04X UUID: %04X"),i,e.MAC[0],e.MAC[1],e.MAC[2],e.MAC[3],e.MAC[4],e.MAC[5],e.cid,e.svc,e.uuid); i++; return ((e.showedUp < 3)); }), @@ -612,7 +612,7 @@ void MINRFhandleScan(void){ for(uint32_t i=0; i30) break; uint32_t ADtype = _buf[i+1]; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Size: %u AD: %x i:%u"), size, ADtype,i); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Size: %u AD: %x i:%u"), size, ADtype,i); if (size+i>32+offset) size=32-i+offset-2; if (size>30) break; char _stemp[(size*2)]; uint32_t backupSize; switch(ADtype){ case 0x01: - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Flags: %02x"), _buf[i+2]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Flags: %02x"), _buf[i+2]); break; case 0x02: case 0x03: entry->uuid = _buf[i+3]*256 + _buf[i+2]; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: UUID: %04x"), entry->uuid); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: UUID: %04x"), entry->uuid); success = true; break; case 0x08: case 0x09: backupSize = _buf[i+size+1]; _buf[i+size+1] = 0; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Name: %s"), (char*)&_buf[i+2]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Name: %s"), (char*)&_buf[i+2]); success = true; _buf[i+size+1] = backupSize; break; case 0x0a: - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: TxPow: %02u"), _buf[i+2]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: TxPow: %02u"), _buf[i+2]); break; case 0xff: entry->cid = _buf[i+3]*256 + _buf[i+2]; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Cid: %04x"), entry->cid); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Cid: %04x"), entry->cid); ToHex_P((unsigned char*)&_buf+i+4,size-3,_stemp,(size*2)); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); success = true; break; case 0x16: entry->svc = _buf[i+3]*256 + _buf[i+2]; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Svc: %04x"), entry->svc); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Svc: %04x"), entry->svc); ToHex_P((unsigned char*)&_buf+i+4,size-3,_stemp,(size*2)); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); success = true; break; default: ToHex_P((unsigned char*)&_buf+i+2,size-1,_stemp,(size*2)); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s"),_stemp); } i+=size; } @@ -728,7 +728,7 @@ void MINRFbeaconCounter(void) { /* char stemp[20]; snprintf_P(stemp, sizeof(stemp),PSTR("{%s:{\"Beacon\": %u}}"),D_CMND_NRF, MINRF.beacon.time); - AddLog_P2(LOG_LEVEL_DEBUG, stemp); + AddLog_P(LOG_LEVEL_DEBUG, stemp); RulesProcessEvent(stemp); */ Response_P(PSTR("{%s:{\"Beacon\":%u}}"), D_CMND_NRF, MINRF.beacon.time); @@ -757,9 +757,9 @@ void MINRFcomputeBeaconPDU(uint8_t (&_MAC)[6], uint32_t (&PDU)[3], uint32_t offs #ifdef USE_MI_DECRYPTION int MINRFdecryptPacket(char *_buf){ encPacket_t *packet = (encPacket_t*)_buf; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("to decrypt: %02x %02x %02x %02x %02x %02x %02x %02x"),(uint8_t)_buf[0],(uint8_t)_buf[1],(uint8_t)_buf[2],(uint8_t)_buf[3],(uint8_t)_buf[4],(uint8_t)_buf[5],(uint8_t)_buf[6],(uint8_t)_buf[7]); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR(" : %02x %02x %02x %02x %02x %02x %02x %02x"),(uint8_t)_buf[8],(uint8_t)_buf[9],(uint8_t)_buf[10],(uint8_t)_buf[11],(uint8_t)_buf[12],(uint8_t)_buf[13],(uint8_t)_buf[14],(uint8_t)_buf[15]); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR(" : %02x %02x %02x %02x %02x "),(uint8_t)_buf[16],(uint8_t)_buf[17],(uint8_t)_buf[18],(uint8_t)_buf[19],(uint8_t)_buf[20]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("to decrypt: %02x %02x %02x %02x %02x %02x %02x %02x"),(uint8_t)_buf[0],(uint8_t)_buf[1],(uint8_t)_buf[2],(uint8_t)_buf[3],(uint8_t)_buf[4],(uint8_t)_buf[5],(uint8_t)_buf[6],(uint8_t)_buf[7]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR(" : %02x %02x %02x %02x %02x %02x %02x %02x"),(uint8_t)_buf[8],(uint8_t)_buf[9],(uint8_t)_buf[10],(uint8_t)_buf[11],(uint8_t)_buf[12],(uint8_t)_buf[13],(uint8_t)_buf[14],(uint8_t)_buf[15]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR(" : %02x %02x %02x %02x %02x "),(uint8_t)_buf[16],(uint8_t)_buf[17],(uint8_t)_buf[18],(uint8_t)_buf[19],(uint8_t)_buf[20]); int ret = 0; unsigned char output[16] = {0}; @@ -777,13 +777,13 @@ int MINRFdecryptPacket(char *_buf){ uint8_t _bindkey[16] = {0x0}; for(uint32_t i=0; iMAC,MIBLEbindKeys[i].MAC,sizeof(packet->MAC))==0){ - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("have key")); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("have key")); memcpy(_bindkey,MIBLEbindKeys[i].key,sizeof(_bindkey)); break; } // else{ - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MAC in packet: %02x %02x %02x %02x %02x %02x"), packet->MAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MAC in vector: %02x %02x %02x %02x %02x %02x"), MIBLEbindKeys[i].MAC[0], MIBLEbindKeys[i].MAC[1], MIBLEbindKeys[i].MAC[2], MIBLEbindKeys[i].MAC[3], MIBLEbindKeys[i].MAC[4], MIBLEbindKeys[i].MAC[5]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("MAC in packet: %02x %02x %02x %02x %02x %02x"), packet->MAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("MAC in vector: %02x %02x %02x %02x %02x %02x"), MIBLEbindKeys[i].MAC[0], MIBLEbindKeys[i].MAC[1], MIBLEbindKeys[i].MAC[2], MIBLEbindKeys[i].MAC[3], MIBLEbindKeys[i].MAC[4], MIBLEbindKeys[i].MAC[5]); // } } @@ -800,7 +800,7 @@ int MINRFdecryptPacket(char *_buf){ br_ccm_run(&ctx, 0, output, sizeof(packet->payload.cipher)); ret = br_ccm_check_tag(&ctx, packet->payload.tag); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: Err:%i, Decrypted : %02x %02x %02x %02x %02x "), ret, output[0],output[1],output[2],output[3],output[4]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: Err:%i, Decrypted : %02x %02x %02x %02x %02x "), ret, output[0],output[1],output[2],output[3],output[4]); memcpy((uint8_t*)(packet->payload.cipher)+1,output,sizeof(packet->payload.cipher)); return ret; } @@ -819,22 +819,22 @@ int MINRFdecryptMJYD2SPacket(char *_buf, uint8_t _light, char* _output){ memcpy((uint8_t*)&nonce+6,(uint8_t*)&packet->PID,2); nonce[8] = packet->frameCnt; memcpy((uint8_t*)&nonce+9,(uint8_t*)&packet->padding[0] + packet->payloadSize + 5, 3); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("nonce: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"), nonce[0], nonce[1], nonce[2], nonce[3], nonce[4], nonce[5], nonce[6], nonce[7], nonce[8], nonce[9], nonce[10], nonce[11]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("nonce: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"), nonce[0], nonce[1], nonce[2], nonce[3], nonce[4], nonce[5], nonce[6], nonce[7], nonce[8], nonce[9], nonce[10], nonce[11]); uint8_t _bindkey[16]; for(uint32_t i=0; iMAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MAC in vector: %02x %02x %02x %02x %02x %02x"), MIBLEbindKeys[i].MAC[0], MIBLEbindKeys[i].MAC[1], MIBLEbindKeys[i].MAC[2], MIBLEbindKeys[i].MAC[3], MIBLEbindKeys[i].MAC[4], MIBLEbindKeys[i].MAC[5]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("MAC in packet: %02x %02x %02x %02x %02x %02x"), packet->MAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("MAC in vector: %02x %02x %02x %02x %02x %02x"), MIBLEbindKeys[i].MAC[0], MIBLEbindKeys[i].MAC[1], MIBLEbindKeys[i].MAC[2], MIBLEbindKeys[i].MAC[3], MIBLEbindKeys[i].MAC[4], MIBLEbindKeys[i].MAC[5]); // } } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("size %u"),packet->payloadSize); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("size %u"),packet->payloadSize); uint32_t _size; int32_t _offset; uint32_t _tagSize; @@ -858,9 +858,9 @@ int MINRFdecryptMJYD2SPacket(char *_buf, uint8_t _light, char* _output){ return 0; break; } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("size %u , offset %u"),_size,_offset); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("size %u , offset %u"),_size,_offset); memcpy(_output,(uint8_t*)&packet->padding[0] + packet->payloadSize - _offset, _size); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("BEARSSL: Output : %02x %02x %02x %02x %02x %02x %02x"), _output[0], _output[1],_output[2],_output[3],_output[4],_output[5],_output[6]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("BEARSSL: Output : %02x %02x %02x %02x %02x %02x %02x"), _output[0], _output[1],_output[2],_output[3],_output[4],_output[5],_output[6]); br_aes_small_ctrcbc_keys keyCtx; br_aes_small_ctrcbc_init(&keyCtx, _bindkey, sizeof(_bindkey)); @@ -871,7 +871,7 @@ int MINRFdecryptMJYD2SPacket(char *_buf, uint8_t _light, char* _output){ br_ccm_aad_inject(&ctx, authData, sizeof(authData)); br_ccm_flip(&ctx); br_ccm_run(&ctx, 0, _output, _size); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("BEARSSL: Err:%i, Decrypted : %02x %02x %02x %02x %02x %02x %02x"), ret, _output[0], _output[1],_output[2],_output[3],_output[4],_output[5],_output[6]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("BEARSSL: Err:%i, Decrypted : %02x %02x %02x %02x %02x %02x %02x"), ret, _output[0], _output[1],_output[2],_output[3],_output[4],_output[5],_output[6]); br_ccm_get_tag(&ctx, tag); ret = memcmp(tag,(uint8_t*)&packet->padding[0] + packet->payloadSize + 8, _tagSize); @@ -1120,7 +1120,7 @@ uint32_t MINRFgetSensorSlot(uint8_t (&_MAC)[6], uint16_t _type){ break; } MIBLEsensors.push_back(_newSensor); - AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: new %s at slot: %u"),kMINRFDeviceType[_type-1], MIBLEsensors.size()-1); + AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: new %s at slot: %u"),kMINRFDeviceType[_type-1], MIBLEsensors.size()-1); return (MIBLEsensors.size()-1); }; @@ -1199,7 +1199,7 @@ void MINRFhandleMiBeaconPacket(void){ switch(MINRF.buffer.miBeacon.type){ case 0x1: if(MINRF.buffer.miBeacon.counter==_sensorVec->lastCnt) break; - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: YEE-RC button: %u Long: %u"), MINRF.buffer.miBeacon.Btn.num, MINRF.buffer.miBeacon.Btn.longPress); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: YEE-RC button: %u Long: %u"), MINRF.buffer.miBeacon.Btn.num, MINRF.buffer.miBeacon.Btn.longPress); _sensorVec->lastCnt=MINRF.buffer.miBeacon.counter; _sensorVec->Btn=MINRF.buffer.miBeacon.Btn.num + (MINRF.buffer.miBeacon.Btn.longPress/2)*6; _sensorVec->eventType.Btn = 1; @@ -1319,10 +1319,10 @@ void MINRFhandleNlightPacket(void){ // no MiBeacon uint32_t offset = 6; uint8_t _buf[32+offset]; MINRFrecalcBuffer((uint8_t*)&_buf,offset); - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6],_buf[7],_buf[8],_buf[9],_buf[10],_buf[11],_buf[12],_buf[13],_buf[14],_buf[15],_buf[16],_buf[17],_buf[18]); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6],_buf[7],_buf[8],_buf[9],_buf[10],_buf[11],_buf[12],_buf[13],_buf[14],_buf[15],_buf[16],_buf[17],_buf[18]); uint32_t _frame_PID = _buf[15]<<24 | _buf[16]<<16 | _buf[17]<<8 | _buf[18]; if(_frame_PID!=0x4030dd03) return; // invalid packet - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT:%x"),_frame_PID); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT:%x"),_frame_PID); uint32_t _idx = MINRF.activeLight-1; if((millis() - MIBLElights[_idx].lastTime)<1500) return; if(_buf[19]!=MIBLElights[_idx].lastCnt){ @@ -1330,7 +1330,7 @@ void MINRFhandleNlightPacket(void){ // no MiBeacon MIBLElights[_idx].events++; MIBLElights[_idx].shallSendMQTT = 1; MIBLElights[_idx].lastTime = millis(); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: NLIGHT %u: events: %u, Cnt:%u"), _idx,MIBLElights[_idx].events, MIBLElights[_idx].lastCnt); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: NLIGHT %u: events: %u, Cnt:%u"), _idx,MIBLElights[_idx].events, MIBLElights[_idx].lastCnt); } } @@ -1340,20 +1340,20 @@ void MINRFhandleMJYD2SPacket(void){ // no MiBeacon MINRFrecalcBuffer((uint8_t*)&_buf,offset); mjysd02_Packet_t *_packet = (mjysd02_Packet_t*)&_buf; if(_packet->PID!=0x07f6) return; // invalid packet - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S: %02u %04x %04x %04x %02x"),_packet->payloadSize,_packet->UUID,_packet->frameCtrl,_packet->PID,_packet->frameCnt); - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: PAYLOAD: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),_packet->data[0],_packet->data[1],_packet->data[2],_packet->data[3],_packet->data[4],_packet->data[5],_packet->data[6],_packet->data[7],_packet->data[8],_packet->data[9],_packet->data[10],_packet->data[11],_packet->data[12],_packet->data[13],_packet->data[14],_packet->data[15],_packet->data[16],_packet->data[17]); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S: %02u %04x %04x %04x %02x"),_packet->payloadSize,_packet->UUID,_packet->frameCtrl,_packet->PID,_packet->frameCnt); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: PAYLOAD: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),_packet->data[0],_packet->data[1],_packet->data[2],_packet->data[3],_packet->data[4],_packet->data[5],_packet->data[6],_packet->data[7],_packet->data[8],_packet->data[9],_packet->data[10],_packet->data[11],_packet->data[12],_packet->data[13],_packet->data[14],_packet->data[15],_packet->data[16],_packet->data[17]); uint32_t _idx = MINRF.activeLight-1; switch(_packet->frameCtrl){ case 0x5910: if(_packet->frameCnt!=MIBLElights[_idx].lastCnt){ - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S after motion:%x"),_packet->frameCnt); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S after motion:%x"),_packet->frameCnt); MIBLElights[_idx].lastCnt = _packet->frameCnt; if(millis()-MIBLElights[_idx].lastTime>120000){ MIBLElights[_idx].eventType = 1; MIBLElights[_idx].events++; MIBLElights[_idx].shallSendMQTT = 1; MIBLElights[_idx].lastTime = millis(); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S secondary PIR")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S secondary PIR")); } } break; @@ -1369,7 +1369,7 @@ void MINRFhandleMJYD2SPacket(void){ // no MiBeacon if(millis()-MIBLElights[_idx].lastTime>1000){ MIBLElights[_idx].eventType = 1; //PIR MIBLElights[_idx].shallSendMQTT = 1; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S primary PIR")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S primary PIR")); MIBLElights[_idx].events++; } MIBLElights[_idx].lastTime = millis(); @@ -1390,23 +1390,23 @@ void MINRFhandleMJYD2SPacket(void){ // no MiBeacon MIBLElights[_idx].NMT = output[6]<<24 | output[5]<<16 | output[4]<<8 | output[3]; MIBLElights[_idx].eventType = 3; // NMT 0, 120, 300, 600, 1800, ... seconds MIBLElights[_idx].shallSendMQTT = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S NMT: %u"), MIBLElights[_idx].NMT ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("NRF: MJYD2S NMT: %u"), MIBLElights[_idx].NMT ); break; } } } - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT:%x"),_frame_PID); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT:%x"),_frame_PID); } void MINRFhandleLightPacket(void){ switch(MIBLElights[MINRF.activeLight-1].type){ case NLIGHT: - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT!!")); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: NLIGHT!!")); MINRFhandleNlightPacket(); break; case MJYD2S: - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S !!")); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: MJYD2S !!")); MINRFhandleMJYD2SPacket(); break; } @@ -1416,7 +1416,7 @@ void MINRFhandleLightPacket(void){ void MINRFaddLight(uint8_t _MAC[], uint8_t _type){ // no MiBeacon for(uint32_t i=0; iMAC, 0x0a1c); // This must be a hard-coded fake ID - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("known %s at slot %u"), kMINRFDeviceType[MIBLEsensors[_slot].type-1],_slot); - // AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: ATC: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),MINRF.buffer.raw[0],MINRF.buffer.raw[1],MINRF.buffer.raw[2],MINRF.buffer.raw[3],MINRF.buffer.raw[4],MINRF.buffer.raw[5],MINRF.buffer.raw[6],MINRF.buffer.raw[7],MINRF.buffer.raw[8],MINRF.buffer.raw[9],MINRF.buffer.raw[10],MINRF.buffer.raw[11]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("known %s at slot %u"), kMINRFDeviceType[MIBLEsensors[_slot].type-1],_slot); + // AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: ATC: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x"),MINRF.buffer.raw[0],MINRF.buffer.raw[1],MINRF.buffer.raw[2],MINRF.buffer.raw[3],MINRF.buffer.raw[4],MINRF.buffer.raw[5],MINRF.buffer.raw[6],MINRF.buffer.raw[7],MINRF.buffer.raw[8],MINRF.buffer.raw[9],MINRF.buffer.raw[10],MINRF.buffer.raw[11]); if(_slot==0xff) return; MIBLEsensors[_slot].temp = (float)(__builtin_bswap16(_packet->temp))/10.0f; @@ -1468,7 +1468,7 @@ void MINRF_EVERY_50_MSECOND() { // Every 50mseconds MINRF.mode.shallTriggerTele = 0; } // DEBUG_SENSOR_LOG(PSTR("NRF: nothing received")); - // if (MINRF.packetMode==ATC) AddLog_P2(LOG_LEVEL_INFO,PSTR("no ATC..")); + // if (MINRF.packetMode==ATC) AddLog_P(LOG_LEVEL_INFO,PSTR("no ATC..")); } else { @@ -1958,7 +1958,7 @@ bool Xsns61(uint8_t function) switch (function) { case FUNC_INIT: MINRFinit(); - AddLog_P2(LOG_LEVEL_INFO,PSTR("NRF: started")); + AddLog_P(LOG_LEVEL_INFO,PSTR("NRF: started")); break; case FUNC_EVERY_50_MSECOND: MINRF_EVERY_50_MSECOND(); diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index d69ae4a90..d68b99d60 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -367,14 +367,14 @@ enum MI32_BEACON_CMND { class MI32SensorCallback : public NimBLEClientCallbacks { void onConnect(NimBLEClient* pclient) { - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("connected %s"), kMI32DeviceType[(MIBLEsensors[MI32.state.sensor].type)-1]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("connected %s"), kMI32DeviceType[(MIBLEsensors[MI32.state.sensor].type)-1]); MI32.mode.willConnect = 0; MI32.mode.connected = 1; } void onDisconnect(NimBLEClient* pclient) { MI32.mode.connected = 0; MI32.mode.willReadBatt = 0; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("disconnected %s"), kMI32DeviceType[(MIBLEsensors[MI32.state.sensor].type)-1]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("disconnected %s"), kMI32DeviceType[(MIBLEsensors[MI32.state.sensor].type)-1]); } bool onConnParamsUpdateRequest(NimBLEClient* MI32Client, const ble_gap_upd_params* params) { if(params->itvl_min < 24) { /** 1.25ms units */ @@ -392,13 +392,13 @@ class MI32SensorCallback : public NimBLEClientCallbacks { class MI32AdvCallbacks: public NimBLEAdvertisedDeviceCallbacks { void onResult(NimBLEAdvertisedDevice* advertisedDevice) { - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Advertised Device: %s Buffer: %u"),advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Advertised Device: %s Buffer: %u"),advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); int RSSI = advertisedDevice->getRSSI(); uint8_t addr[6]; memcpy(addr,advertisedDevice->getAddress().getNative(),6); MI32_ReverseMAC(addr); if (advertisedDevice->getServiceDataCount() == 0) { - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("No Xiaomi Device: %s Buffer: %u"),advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("No Xiaomi Device: %s Buffer: %u"),advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); if(MI32.state.beaconScanCounter==0 && !MI32.mode.activeBeacon){ MI32Scan->erase(advertisedDevice->getAddress()); return; @@ -410,7 +410,7 @@ class MI32AdvCallbacks: public NimBLEAdvertisedDeviceCallbacks { } uint16_t UUID = advertisedDevice->getServiceDataUUID(0).getNative()->u16.value; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("UUID: %x"),UUID); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("UUID: %x"),UUID); size_t ServiceDataLength = advertisedDevice->getServiceData(0).length(); if(UUID==0xfe95) { @@ -426,7 +426,7 @@ class MI32AdvCallbacks: public NimBLEAdvertisedDeviceCallbacks { if(MI32.state.beaconScanCounter!=0 || MI32.mode.activeBeacon){ MI32HandleGenericBeacon(advertisedDevice->getPayload(), advertisedDevice->getPayloadLength(), RSSI, addr); } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("No Xiaomi Device: %x: %s Buffer: %u"), UUID, advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("No Xiaomi Device: %x: %s Buffer: %u"), UUID, advertisedDevice->getAddress().toString().c_str(),advertisedDevice->getServiceData(0).length()); MI32Scan->erase(advertisedDevice->getAddress()); } }; @@ -442,12 +442,12 @@ static NimBLEClient* MI32Client; \*********************************************************************************************/ void MI32scanEndedCB(NimBLEScanResults results){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Scan ended")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("Scan ended")); MI32.mode.runningScan = 0; } void MI32notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Notified length: %u"),length); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("Notified length: %u"),length); switch(MIBLEsensors[MI32.state.sensor].type){ case LYWSD03MMC: case LYWSD02: case MHOC401: MI32readHT_LY((char*)pData); @@ -525,12 +525,12 @@ void MI32AddKey(char* payload){ bool unknownKey = true; for(uint32_t i=0; iPID,2); nonce[8] = packet->frameCnt; memcpy((uint8_t*)&nonce+9,(uint8_t*)&_buf[_bufSize-9],3); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("nonceCnt1 and 2: %02x %02x %02x"),nonce[9],nonce[10],nonce[11]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("nonceCnt1 and 2: %02x %02x %02x"),nonce[9],nonce[10],nonce[11]); memcpy((uint8_t*)&tag,(uint8_t*)&_buf[_bufSize-6],4); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("tag: %02x %02x %02x %02x"),tag[0],tag[1],tag[2],tag[3]); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("tag: %02x %02x %02x %02x"),tag[0],tag[1],tag[2],tag[3]); MI32_ReverseMAC(packet->MAC); uint8_t _bindkey[16] = {0x0}; bool foundNoKey = true; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MI32: search key for MAC: %02x %02x %02x %02x %02x %02x"), packet->MAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: search key for MAC: %02x %02x %02x %02x %02x %02x"), packet->MAC[0], packet->MAC[1], packet->MAC[2], packet->MAC[3], packet->MAC[4], packet->MAC[5]); for(uint32_t i=0; iMAC,MIBLEbindKeys[i].MAC,sizeof(packet->MAC))==0){ memcpy(_bindkey,MIBLEbindKeys[i].key,sizeof(_bindkey)); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MI32: decryption Key found")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: decryption Key found")); foundNoKey = false; break; } } if(foundNoKey){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MI32: no Key found !!")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: no Key found !!")); return -2; } @@ -599,7 +599,7 @@ int MI32_decryptPacket(char *_buf, uint16_t _bufSize, uint32_t _type){ ret = br_ccm_check_tag(&ctx, &tag); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MI32: Err:%i, Decrypted : %02x %02x %02x %02x %02x "), ret, packet->payload[1],packet->payload[2],packet->payload[3],packet->payload[4],packet->payload[5]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: Err:%i, Decrypted : %02x %02x %02x %02x %02x "), ret, packet->payload[1],packet->payload[2],packet->payload[3],packet->payload[4],packet->payload[5]); return ret-1; } #endif // USE_MI_DECRYPTION @@ -654,9 +654,9 @@ uint32_t MIBLEgetSensorSlot(uint8_t (&_MAC)[6], uint16_t _type, uint8_t counter) for(uint32_t i=0; isetClientCallbacks(&MI32SensorCB , false); MI32Client->setConnectionParams(12,12,0,48); MI32Client->setConnectTimeout(30); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: did create new client"),D_CMND_MI32); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: did create new client"),D_CMND_MI32); } vTaskDelay(300/ portTICK_PERIOD_MS); if (!MI32Client->connect(_address,false)) { MI32.mode.willConnect = 0; // NimBLEDevice::deleteClient(MI32Client); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: did not connect client"),D_CMND_MI32); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: did not connect client"),D_CMND_MI32); return false; } return true; @@ -865,7 +865,7 @@ void MI32StartScanTask(){ 0, /* Priority of the task */ NULL, /* Task handle. */ 0); /* Core where the task should run */ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Start scanning"),D_CMND_MI32); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Start scanning"),D_CMND_MI32); } void MI32ScanTask(void *pvParameters){ @@ -906,8 +906,8 @@ void MI32StartSensorTask(){ 15, /* Priority of the task */ NULL, /* Task handle. */ 0); /* Core where the task should run */ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Start sensor connections"),D_CMND_MI32); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Start sensor connections"),D_CMND_MI32); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); } void MI32SensorTask(void *pvParameters){ @@ -980,8 +980,8 @@ void MI32StartTimeTask(){ 15, /* Priority of the task */ NULL, /* Task handle. */ 0); /* Core where the task should run */ - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Start time set"),D_CMND_MI32); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Start time set"),D_CMND_MI32); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); } void MI32TimeTask(void *pvParameters){ @@ -1045,8 +1045,8 @@ void MI32StartUnitTask(){ 15, /* Priority of the task */ NULL, /* Task handle. */ 0); /* Core where the task should run */ - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Start unit set"),D_CMND_MI32); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Start unit set"),D_CMND_MI32); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: with sensor: %u"),D_CMND_MI32, MI32.state.sensor); } void MI32UnitTask(void *pvParameters){ @@ -1236,13 +1236,13 @@ void MI32parseMiBeacon(char * _buf, uint32_t _slot, uint16_t _bufSize){ else return; // 0x3058 holds no data, TODO: check for unpaired devices, that need connections break; case MJYD2S: - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MJYD2S: %x"),_beacon.frame); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MJYD2S: %x"),_beacon.frame); if (_beacon.frame == 0x5948){ // Now let's build/recreate a special MiBeacon memmove((uint8_t*)&_beacon.MAC+6,(uint8_t*)&_beacon.MAC, _bufSize); // shift payload by the size of the MAC = 6 bytes memcpy((uint8_t*)&_beacon.MAC,MIBLEsensors[_slot].MAC,6); // now insert the real MAC from our internal vector _bufSize+=6; // the packet has grown MI32_ReverseMAC(_beacon.MAC); // payload MAC is always reversed - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MJYD2S: special packet")); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MJYD2S: special packet")); } if (_beacon.frame != 0x5910){ decryptRet = MI32_decryptPacket((char*)&_beacon.productID,_bufSize,MJYD2S); //start with PID @@ -1250,7 +1250,7 @@ void MI32parseMiBeacon(char * _buf, uint32_t _slot, uint16_t _bufSize){ break; } if(decryptRet!=0){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("MI32: decryption failed with error: %d"),decryptRet); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: decryption failed with error: %d"),decryptRet); return; } #endif //USE_MI_DECRYPTION @@ -1259,13 +1259,13 @@ if(decryptRet!=0){ DEBUG_SENSOR_LOG(PSTR("CGD1 no support for MiBeacon, type %u"),MIBLEsensors[_slot].type); return; } - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s at slot %u with payload type: %02x"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot,_beacon.type); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s at slot %u with payload type: %02x"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot,_beacon.type); switch(_beacon.type){ case 0x01: MIBLEsensors[_slot].Btn=_beacon.Btn.num + (_beacon.Btn.longPress/2)*6; MIBLEsensors[_slot].eventType.Btn = 1; MI32.mode.shallTriggerTele = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn ); break; case 0x04: _tempFloat=(float)(_beacon.temp)/10.0f; @@ -1274,7 +1274,7 @@ if(decryptRet!=0){ MIBLEsensors[_slot].eventType.temp = 1; DEBUG_SENSOR_LOG(PSTR("Mode 4: temp updated")); } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 4: U16: %u Temp"), _beacon.temp ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 4: U16: %u Temp"), _beacon.temp ); break; case 0x06: _tempFloat=(float)(_beacon.hum)/10.0f; @@ -1283,7 +1283,7 @@ if(decryptRet!=0){ MIBLEsensors[_slot].eventType.hum = 1; DEBUG_SENSOR_LOG(PSTR("Mode 6: hum updated")); } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 6: U16: %u Hum"), _beacon.hum); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 6: U16: %u Hum"), _beacon.hum); break; case 0x07: MIBLEsensors[_slot].lux=_beacon.lux & 0x00ffffff; @@ -1291,19 +1291,19 @@ if(decryptRet!=0){ MIBLEsensors[_slot].eventType.noMotion = 1; } MIBLEsensors[_slot].eventType.lux = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 7: U24: %u Lux"), _beacon.lux & 0x00ffffff); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 7: U24: %u Lux"), _beacon.lux & 0x00ffffff); break; case 0x08: MIBLEsensors[_slot].moisture=_beacon.moist; MIBLEsensors[_slot].eventType.moist = 1; DEBUG_SENSOR_LOG(PSTR("Mode 8: moisture updated")); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 8: U8: %u Moisture"), _beacon.moist); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 8: U8: %u Moisture"), _beacon.moist); break; case 0x09: MIBLEsensors[_slot].fertility=_beacon.fert; MIBLEsensors[_slot].eventType.fert = 1; DEBUG_SENSOR_LOG(PSTR("Mode 9: fertility updated")); - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 9: U16: %u Fertility"), _beacon.fert); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 9: U16: %u Fertility"), _beacon.fert); break; case 0x0a: if(MI32.option.ignoreBogusBattery){ @@ -1316,7 +1316,7 @@ if(decryptRet!=0){ MIBLEsensors[_slot].eventType.bat = 1; DEBUG_SENSOR_LOG(PSTR("Mode a: bat updated")); } - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode a: U8: %u %%"), _beacon.bat); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode a: U8: %u %%"), _beacon.bat); break; case 0x0d: _tempFloat=(float)(_beacon.HT.temp)/10.0f; @@ -1330,7 +1330,7 @@ if(decryptRet!=0){ DEBUG_SENSOR_LOG(PSTR("Mode d: hum updated")); } MIBLEsensors[_slot].eventType.tempHum = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode d: U16: %x Temp U16: %x Hum"), _beacon.HT.temp, _beacon.HT.hum); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode d: U16: %x Temp U16: %x Hum"), _beacon.HT.temp, _beacon.HT.hum); break; #ifdef USE_MI_DECRYPTION case 0x0f: @@ -1342,13 +1342,13 @@ if(decryptRet!=0){ MIBLEsensors[_slot].eventType.lux = 1; MIBLEsensors[_slot].NMT = 0; MI32.mode.shallTriggerTele = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("PIR: primary"),MIBLEsensors[_slot].lux ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("PIR: primary"),MIBLEsensors[_slot].lux ); break; case 0x17: MIBLEsensors[_slot].NMT = _beacon.NMT; MIBLEsensors[_slot].eventType.NMT = 1; MI32.mode.shallTriggerTele = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 17: NMT: %u seconds"), _beacon.NMT); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 17: NMT: %u seconds"), _beacon.NMT); break; #endif //USE_MI_DECRYPTION default: @@ -1358,7 +1358,7 @@ if(decryptRet!=0){ MIBLEsensors[_slot].NMT = 0; MIBLEsensors[_slot].lastTime = millis(); MI32.mode.shallTriggerTele = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("PIR: primary"),MIBLEsensors[_slot].lux ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("PIR: primary"),MIBLEsensors[_slot].lux ); } else{ AddLogBuffer(LOG_LEVEL_DEBUG,(uint8_t*)_buf,_bufSize); @@ -1373,7 +1373,7 @@ if(decryptRet!=0){ void MI32ParseATCPacket(char * _buf, uint32_t length, uint8_t addr[6], int RSSI){ ATCPacket_t *_packet = (ATCPacket_t*)_buf; uint32_t _slot = MIBLEgetSensorSlot(_packet->MAC, 0x0a1c, _packet->frameCnt); // This must be a hard-coded fake ID - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot); if(_slot==0xff) return; MIBLEsensors[_slot].RSSI=RSSI; @@ -1393,7 +1393,7 @@ void MI32parseCGD1Packet(char * _buf, uint32_t length, uint8_t addr[6], int RSSI uint8_t _addr[6]; memcpy(_addr,addr,6); uint32_t _slot = MIBLEgetSensorSlot(_addr, 0x0576, 0); // This must be hard-coded, no object-id in Cleargrass-packet, we have no packet counter too - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s at slot %u"), kMI32DeviceType[MIBLEsensors[_slot].type-1],_slot); if(_slot==0xff) return; MIBLEsensors[_slot].RSSI=RSSI; cg_packet_t _packet; @@ -1435,7 +1435,7 @@ void MI32ParseResponse(char *buf, uint16_t bufsize, uint8_t addr[6], int RSSI) { return; } uint16_t _type= buf[3]*256 + buf[2]; - // AddLog_P2(LOG_LEVEL_INFO, PSTR("%02x %02x %02x %02x"),(uint8_t)buf[0], (uint8_t)buf[1],(uint8_t)buf[2],(uint8_t)buf[3]); + // AddLog_P(LOG_LEVEL_INFO, PSTR("%02x %02x %02x %02x"),(uint8_t)buf[0], (uint8_t)buf[1],(uint8_t)buf[2],(uint8_t)buf[3]); uint8_t _addr[6]; memcpy(_addr,addr,6); uint16_t _slot = MIBLEgetSensorSlot(_addr, _type, buf[4]); @@ -1455,36 +1455,36 @@ void MI32ParseResponse(char *buf, uint16_t bufsize, uint8_t addr[6], int RSSI) { * @param UUID */ void MI32ParseGenericBeacon(uint8_t* payload, size_t payloadLength, uint16_t* CID, uint16_t*SVC, uint16_t* UUID){ - AddLog_P2(LOG_LEVEL_DEBUG_MORE,PSTR("MI32: Beacon:____________")); + AddLog_P(LOG_LEVEL_DEBUG_MORE,PSTR("MI32: Beacon:____________")); for (uint32_t i = 0; i19) { - AddLog_P2(LOG_LEVEL_INFO,PSTR("MI32: Scan buffer full")); + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: Scan buffer full")); MI32.state.beaconScanCounter = 1; return; } for(auto _scanResult : MINBLEscanResult){ if(memcmp(addr,_scanResult.MAC,6)==0){ - // AddLog_P2(LOG_LEVEL_INFO,PSTR("MI32: known device")); + // AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: known device")); return; } } @@ -1549,12 +1549,12 @@ void MI32addBeacon(uint8_t index, char* data){ _new.time = 0; if(memcmp(_empty,_new.MAC,6) == 0){ _new.active = false; - AddLog_P2(LOG_LEVEL_INFO,PSTR("MI32: beacon%u deactivated"), index); + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: beacon%u deactivated"), index); } else{ _new.active = true; MI32.mode.activeBeacon = 1; - AddLog_P2(LOG_LEVEL_INFO,PSTR("MI32: beacon added with MAC: %s"), _MAC); + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: beacon added with MAC: %s"), _MAC); } } @@ -1563,11 +1563,11 @@ void MI32addBeacon(uint8_t index, char* data){ * */ void MI32showScanResults(){ - AddLog_P2(LOG_LEVEL_INFO,PSTR("MI32: found %u devices in scan:"), MINBLEscanResult.size()); + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: found %u devices in scan:"), MINBLEscanResult.size()); for(auto _scanResult : MINBLEscanResult){ char _MAC[18]; ToHex_P(_scanResult.MAC,6,_MAC,18,':'); - AddLog_P2(LOG_LEVEL_INFO,PSTR("MAC: %s _ CID: %04x _ SVC: %04x _ UUID: %04x _ RSSI: %d"), _MAC, _scanResult.CID, _scanResult.SVC, _scanResult.UUID, _scanResult.RSSI); + AddLog_P(LOG_LEVEL_INFO,PSTR("MAC: %s _ CID: %04x _ SVC: %04x _ UUID: %04x _ RSSI: %d"), _MAC, _scanResult.CID, _scanResult.SVC, _scanResult.UUID, _scanResult.RSSI); } MINBLEscanResult.clear(); } @@ -1579,7 +1579,7 @@ void MI32readHT_LY(char *_buf){ DEBUG_SENSOR_LOG(PSTR("%s: raw data: %x%x%x%x%x%x%x"),D_CMND_MI32,_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6]); if(_buf[0] != 0 && _buf[1] != 0){ memcpy(&LYWSD0x_HT,(void *)_buf,sizeof(LYWSD0x_HT)); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u, V: %u"),D_CMND_MI32,LYWSD0x_HT.temp,LYWSD0x_HT.hum, LYWSD0x_HT.volt); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u, V: %u"),D_CMND_MI32,LYWSD0x_HT.temp,LYWSD0x_HT.hum, LYWSD0x_HT.volt); uint32_t _slot = MI32.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); @@ -1608,7 +1608,7 @@ void MI32readHT_LY(char *_buf){ bool MI32readBat(char *_buf){ DEBUG_SENSOR_LOG(PSTR("%s: raw data: %x%x%x%x%x%x%x"),D_CMND_MI32,_buf[0],_buf[1],_buf[2],_buf[3],_buf[4],_buf[5],_buf[6]); if(_buf[0] != 0){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Battery: %u"),D_CMND_MI32,_buf[0]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Battery: %u"),D_CMND_MI32,_buf[0]); uint32_t _slot = MI32.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); if(_buf[0]<101){ @@ -1616,7 +1616,7 @@ bool MI32readBat(char *_buf){ if(MIBLEsensors[_slot].type==FLORA){ memcpy(MIBLEsensors[_slot].firmware, _buf+2, 5); MIBLEsensors[_slot].firmware[5] = '\0'; - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Firmware: %s"),D_CMND_MI32,MIBLEsensors[_slot].firmware); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Firmware: %s"),D_CMND_MI32,MIBLEsensors[_slot].firmware); } MIBLEsensors[_slot].eventType.bat = 1; MIBLEsensors[_slot].shallSendMQTT = 1; @@ -1730,8 +1730,8 @@ void MI32EverySecond(bool restart){ if(MI32.mode.connected == 0) { if (MI32.mode.shallReadBatt) { //TODO: decide automatically, which sensor can not work without connections - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: active sensor now: %u of %u"),D_CMND_MI32, MI32.state.sensor, MIBLEsensors.size()-1); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("will connect to %s"),kMI32DeviceType[MIBLEsensors[MI32.state.sensor].type-1] ); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: active sensor now: %u of %u"),D_CMND_MI32, MI32.state.sensor, MIBLEsensors.size()-1); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("will connect to %s"),kMI32DeviceType[MIBLEsensors[MI32.state.sensor].type-1] ); MI32StartTask(MI32_TASK_BATT); } @@ -1790,7 +1790,7 @@ bool MI32Cmd(void) { if (XdrvMailbox.data_len > 0) { if(MIBLEsensors.size()>XdrvMailbox.payload){ if(MIBLEsensors[XdrvMailbox.payload].type == LYWSD02 || MIBLEsensors[XdrvMailbox.payload].type == MHOC303){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: will set Time"),D_CMND_MI32); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: will set Time"),D_CMND_MI32); MI32.state.sensor = XdrvMailbox.payload; MI32.mode.canScan = 0; MI32.mode.canConnect = 0; @@ -1805,7 +1805,7 @@ bool MI32Cmd(void) { if (XdrvMailbox.data_len > 0) { if(MIBLEsensors.size()>XdrvMailbox.payload){ if(MIBLEsensors[XdrvMailbox.payload].type == LYWSD02 || MIBLEsensors[XdrvMailbox.payload].type == MHOC303){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: will set Unit"),D_CMND_MI32); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: will set Unit"),D_CMND_MI32); MI32.state.sensor = XdrvMailbox.payload; MI32.mode.canScan = 0; MI32.mode.canConnect = 0; diff --git a/tasmota/xsns_62_MI_HM10.ino b/tasmota/xsns_62_MI_HM10.ino index e3204cf28..d84fa7176 100644 --- a/tasmota/xsns_62_MI_HM10.ino +++ b/tasmota/xsns_62_MI_HM10.ino @@ -622,7 +622,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t (&_MAC)[6], uint16_t _type, int _rssi){ break; } MIBLEsensors.push_back(_newSensor); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: new %s at slot: %u"),D_CMND_HM10, kHM10DeviceType[_type-1],MIBLEsensors.size()-1); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: new %s at slot: %u"),D_CMND_HM10, kHM10DeviceType[_type-1],MIBLEsensors.size()-1); return MIBLEsensors.size()-1; }; @@ -636,7 +636,7 @@ void HM10SerialInit(void) { HM10.serialSpeed = HM10_BAUDRATE; HM10Serial = new TasmotaSerial(Pin(GPIO_HM10_RX), Pin(GPIO_HM10_TX), 1, 0, HM10_MAX_RX_BUF); if (HM10Serial->begin(HM10.serialSpeed)) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s start serial communication fixed to 115200 baud"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s start serial communication fixed to 115200 baud"),D_CMND_HM10); if (HM10Serial->hardwareSerial()) { ClaimSerial(); DEBUG_SENSOR_LOG(PSTR("%s: claim HW"),D_CMND_HM10); @@ -679,7 +679,7 @@ void HM10parseMiBeacon(char * _buf, uint32_t _slot){ HM10_ReverseMAC(_beacon.MAC); // if(memcmp(_beacon.MAC,MIBLEsensors[_slot].MAC,sizeof(_beacon.MAC))!=0){ // if (MIBLEsensors[_slot].showedUp>3) return; // probably false alarm from a damaged packet - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: remove garbage sensor"),D_CMND_HM10); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: remove garbage sensor"),D_CMND_HM10); // DEBUG_SENSOR_LOG(PSTR("%s i: %x %x %x %x %x %x"),D_CMND_HM10, MIBLEsensors[_slot].MAC[5], MIBLEsensors[_slot].MAC[4],MIBLEsensors[_slot].MAC[3],MIBLEsensors[_slot].MAC[2],MIBLEsensors[_slot].MAC[1],MIBLEsensors[_slot].MAC[0]); // DEBUG_SENSOR_LOG(PSTR("%s n: %x %x %x %x %x %x"),D_CMND_HM10, _beacon.MAC[5], _beacon.MAC[4], _beacon.MAC[3],_beacon.MAC[2],_beacon.MAC[1],_beacon.MAC[0]); // MIBLEsensors.erase(MIBLEsensors.begin()+_slot); @@ -695,14 +695,14 @@ void HM10parseMiBeacon(char * _buf, uint32_t _slot){ DEBUG_SENSOR_LOG(PSTR("LYWSD03 and CGD1 no support for MiBeacon, type %u"),MIBLEsensors[_slot].type); return; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: %s mibeacon type: %x"),D_CMND_HM10, kHM10DeviceType[MIBLEsensors[_slot].type-1], _beacon.type); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: %s mibeacon type: %x"),D_CMND_HM10, kHM10DeviceType[MIBLEsensors[_slot].type-1], _beacon.type); DEBUG_SENSOR_LOG(PSTR("%s at slot %u"), kHM10DeviceType[MIBLEsensors[_slot].type-1],_slot); switch(_beacon.type){ case 0x01: MIBLEsensors[_slot].Btn=_beacon.Btn.num + (_beacon.Btn.longPress/2)*6; MIBLEsensors[_slot].eventType.Btn = 1; - // AddLog_P2(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn ); + // AddLog_P(LOG_LEVEL_DEBUG,PSTR("Mode 1: U16: %u Button"), MIBLEsensors[_slot].Btn ); break; case 0x04: _tempFloat=(float)(_beacon.temp)/10.0f; @@ -845,7 +845,7 @@ void HM10readHT_LY(char *_buf){ if(_buf[0]==0x4f && _buf[1]==0x4b) return; // "OK" if(_buf[0] != 0 && _buf[1] != 0){ LYWSD0x_HT_t *packet = (LYWSD0x_HT_t*)_buf; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u"),D_CMND_HM10,packet->temp,packet->hum); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H: %u"),D_CMND_HM10,packet->temp,packet->hum); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); @@ -878,7 +878,7 @@ void HM10readHT_CGD1(char *_buf){ if(_buf[0] == 0){ if(_buf[1]==0 && _buf[2]==0 && _buf[3]==0 && _buf[4]==0) return; CGD1_HT_t *_packet = (CGD1_HT_t*)_buf; - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H * 100: %u"),D_CMND_HM10,_packet->temp,_packet->hum); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: T * 100: %u, H * 100: %u"),D_CMND_HM10,_packet->temp,_packet->hum); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); @@ -908,7 +908,7 @@ void HM10readHT_MJ_HT_V1(char *_buf){ // 0123456789012 uint32_t _temp = (atoi(_buf+2) * 10) + atoi(_buf+5); uint32_t _hum = (atoi(_buf+9) * 10) + atoi(_buf+12); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, H * 10: %u"),D_CMND_HM10,_temp,_hum); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, H * 10: %u"),D_CMND_HM10,_temp,_hum); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); @@ -934,7 +934,7 @@ void HM10readTLMF(char *_buf){ AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t*)_buf,16); Flora_TLMF_t *_packet = (Flora_TLMF_t*)_buf; if(_packet->ID==0xFB003C02){ // this is a magic word ... hopefully independent of FW version - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, L: %u, M: %u, F: %u"),D_CMND_HM10,_packet->temp,_packet->lux,_packet->moist,_packet->fert); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: T * 10: %u, L: %u, M: %u, F: %u"),D_CMND_HM10,_packet->temp,_packet->lux,_packet->moist,_packet->fert); uint32_t _slot = HM10.state.sensor; DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); MIBLEsensors[_slot].showedUp=255; // this sensor is real @@ -965,7 +965,7 @@ bool HM10readBat(char *_buf){ // if (MIBLEsensors[_slot].type == LYWSD03MMC || MIBLEsensors[_slot].type == MHOC401) return true; // } if(_buf[0] != 0){ - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s: Battery: %u"),D_CMND_HM10,_buf[0]); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Battery: %u"),D_CMND_HM10,_buf[0]); DEBUG_SENSOR_LOG(PSTR("MIBLE: Sensor slot: %u"), _slot); if(_buf[0]<101){ MIBLEsensors[_slot].bat=_buf[0]; @@ -1005,13 +1005,13 @@ void HM10HandleGenericBeacon(void){ } // else handle scan if(MINBLEscanResult.size()>19) { - AddLog_P2(LOG_LEVEL_INFO,PSTR("HM10: Scan buffer full")); + AddLog_P(LOG_LEVEL_INFO,PSTR("HM10: Scan buffer full")); HM10.state.beaconScanCounter = 1; return; } for(auto _scanResult : MINBLEscanResult){ if(memcmp(HM10.rxAdvertisement.MAC,_scanResult.MAC,6)==0){ - // AddLog_P2(LOG_LEVEL_INFO,PSTR("HM10: known device")); + // AddLog_P(LOG_LEVEL_INFO,PSTR("HM10: known device")); return; } } @@ -1034,12 +1034,12 @@ void HM10addBeacon(uint8_t index, char* data){ _new.time = 0; if(memcmp(_empty,_new.MAC,6) == 0){ _new.active = false; - AddLog_P2(LOG_LEVEL_INFO,PSTR("HM10: beacon%u deactivated"), index); + AddLog_P(LOG_LEVEL_INFO,PSTR("HM10: beacon%u deactivated"), index); } else{ _new.active = true; HM10.mode.activeBeacon = 1; - AddLog_P2(LOG_LEVEL_INFO,PSTR("HM10: beacon added with MAC: %s"), _MAC); + AddLog_P(LOG_LEVEL_INFO,PSTR("HM10: beacon added with MAC: %s"), _MAC); } } @@ -1048,11 +1048,11 @@ void HM10addBeacon(uint8_t index, char* data){ * */ void HM10showScanResults(){ - AddLog_P2(LOG_LEVEL_INFO,PSTR("HM10: found %u devices in scan:"), MINBLEscanResult.size()); + AddLog_P(LOG_LEVEL_INFO,PSTR("HM10: found %u devices in scan:"), MINBLEscanResult.size()); for(auto _scanResult : MINBLEscanResult){ char _MAC[18]; ToHex_P(_scanResult.MAC,6,_MAC,18,':'); - AddLog_P2(LOG_LEVEL_INFO,PSTR("MAC: %s _ CID: %04x _ SVC: %04x _ UUID: %04x _ TX: %02u _ RSSI: %d"), _MAC, _scanResult.CID, _scanResult.SVC, _scanResult.UUID, _scanResult.TX, _scanResult.RSSI); + AddLog_P(LOG_LEVEL_INFO,PSTR("MAC: %s _ CID: %04x _ SVC: %04x _ UUID: %04x _ TX: %02u _ RSSI: %d"), _MAC, _scanResult.CID, _scanResult.SVC, _scanResult.UUID, _scanResult.TX, _scanResult.RSSI); } MINBLEscanResult.clear(); } @@ -1073,7 +1073,7 @@ bool HM10SerialHandleFeedback(){ // every 50 milliseconds *_rx= HM10Serial->read(); if(i==18){ if(memcmp(HM10.rxBuffer+4,"ISA:",4)==0){ //last 4 bytes of "OK+DISA:" should be safe enough - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s packet size: %u"),D_CMND_HM10,HM10.rxBuffer[16]); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s packet size: %u"),D_CMND_HM10,HM10.rxBuffer[16]); _targetsize = HM10.rxBuffer[16] + 19; // this is the size byte according to HM-10 docs if(_targetsize>64) _targetsize=64; memcpy(HM10.rxAdvertisement.MAC,HM10.rxBuffer+8,6); @@ -1153,7 +1153,7 @@ bool HM10SerialHandleFeedback(){ // every 50 milliseconds HM10HandleGenericBeacon(); } uint16_t _type = (uint8_t)HM10.rxAdvertisement.svcData[5]*256 + (uint8_t)HM10.rxAdvertisement.svcData[4]; - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%04x %02x %04x %04x %04x"),HM10.rxAdvertisement.UUID,HM10.rxAdvertisement.TX,HM10.rxAdvertisement.CID,HM10.rxAdvertisement.SVC, _type); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%04x %02x %04x %04x %04x"),HM10.rxAdvertisement.UUID,HM10.rxAdvertisement.TX,HM10.rxAdvertisement.CID,HM10.rxAdvertisement.SVC, _type); if(HM10.rxAdvertisement.SVC==0x181a) _type = 0xa1c; else if(HM10.rxAdvertisement.SVC==0xfdcd) _type = 0x0576; uint16_t _slot = MIBLEgetSensorSlot(HM10.rxAdvertisement.MAC, _type, HM10.rxAdvertisement.RSSI); @@ -1172,9 +1172,9 @@ bool HM10SerialHandleFeedback(){ // every 50 milliseconds break; case none: if(success) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: response: %s"),D_CMND_HM10, (char *)HM10.rxBuffer); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: response: %s"),D_CMND_HM10, (char *)HM10.rxBuffer); // for(uint32_t j = 0; jwrite("AT+ROLE1"); break; case TASK_HM10_IMME1: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: set imme to 1"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: set imme to 1"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; HM10Serial->write("AT+IMME1"); break; case TASK_HM10_DISC: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: start discovery"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: start discovery"),D_CMND_HM10); HM10.current_task_delay = 90; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1220,14 +1220,14 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+DISA?"); break; case TASK_HM10_VERSION: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read version"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read version"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; HM10Serial->write("AT+VERR?"); break; case TASK_HM10_NAME: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read name"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read name"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1236,7 +1236,7 @@ void HM10_TaskEvery100ms(){ case TASK_HM10_CONN: char _con[20]; sprintf_P(_con,"AT+CON%02x%02x%02x%02x%02x%02x",MIBLEsensors[HM10.state.sensor].MAC[0],MIBLEsensors[HM10.state.sensor].MAC[1],MIBLEsensors[HM10.state.sensor].MAC[2],MIBLEsensors[HM10.state.sensor].MAC[3],MIBLEsensors[HM10.state.sensor].MAC[4],MIBLEsensors[HM10.state.sensor].MAC[5]); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: %s connect %s"),D_CMND_HM10,kHM10DeviceType[MIBLEsensors[HM10.state.sensor].type-1],_con); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: %s connect %s"),D_CMND_HM10,kHM10DeviceType[MIBLEsensors[HM10.state.sensor].type-1],_con); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1245,21 +1245,21 @@ void HM10_TaskEvery100ms(){ HM10.mode.connected = true; break; case TASK_HM10_DISCONN: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: disconnect"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: disconnect"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; HM10Serial->write("AT"); break; case TASK_HM10_RESET: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: Reset Device"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: Reset Device"),D_CMND_HM10); HM10Serial->write("AT+RESET"); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; break; case TASK_HM10_SUB_L3: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: subscribe"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: subscribe"),D_CMND_HM10); HM10.current_task_delay = 25; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); HM10.mode.awaiting = tempHumLY; @@ -1267,7 +1267,7 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+NOTIFY_ON0037"); break; case TASK_HM10_UN_L3: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1275,7 +1275,7 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+NOTIFYOFF0037"); break; case TASK_HM10_SUB_L2: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: subscribe"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: subscribe"),D_CMND_HM10); HM10.current_task_delay = 85; // set task delay HM10.mode.awaiting = tempHumLY; HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); @@ -1284,7 +1284,7 @@ void HM10_TaskEvery100ms(){ else HM10Serial->write("AT+NOTIFY_ON004B"); //MHO-C303 break; case TASK_HM10_UN_L2: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1293,7 +1293,7 @@ void HM10_TaskEvery100ms(){ else HM10Serial->write("AT+NOTIFY_OFF004B"); //MHO-C303 break; case TASK_HM10_TIME_L2: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: set time"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: set time"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1301,10 +1301,10 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+SEND_DATAWR002F"); HM10Serial->write(HM10.timebuf,4); HM10Serial->write(Rtc.time_timezone / 60); - AddLog_P2(LOG_LEVEL_DEBUG,PSTR("%s Time-string: %x%x%x%x%x"),D_CMND_HM10, HM10.timebuf[0],HM10.timebuf[1],HM10.timebuf[2],HM10.timebuf[3],(Rtc.time_timezone /60)); + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s Time-string: %x%x%x%x%x"),D_CMND_HM10, HM10.timebuf[0],HM10.timebuf[1],HM10.timebuf[2],HM10.timebuf[3],(Rtc.time_timezone /60)); break; // case TASK_HM10_READ_BT_L3: - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 003A"),D_CMND_HM10); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 003A"),D_CMND_HM10); // HM10.current_task_delay = 2; // set task delay // HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); // runningTaskLoop = false; @@ -1312,7 +1312,7 @@ void HM10_TaskEvery100ms(){ // HM10.mode.awaiting = bat; // break; case TASK_HM10_READ_BT_L2: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0043"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0043"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1321,7 +1321,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = bat; break; case TASK_HM10_READ_BF_FL: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0038"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0038"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1329,7 +1329,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = bat; break; case TASK_HM10_CALL_TLMF_FL: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: write to handle 0033"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: write to handle 0033"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_READ_TLMF_FL,i); runningTaskLoop = false; @@ -1339,7 +1339,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = none; break; case TASK_HM10_READ_TLMF_FL: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0035"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0035"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1347,7 +1347,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = TLMF; break; case TASK_HM10_READ_B_CGD1: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0011"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0011"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1355,7 +1355,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = bat; break; case TASK_HM10_SUB_HT_CGD1: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: subscribe 4b"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: subscribe 4b"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1363,7 +1363,7 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+NOTIFY_ON004b"); break; case TASK_HM10_UN_HT_CGD1: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe 4b"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: un-subscribe 4b"),D_CMND_HM10); HM10.current_task_delay = 5; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1371,14 +1371,14 @@ void HM10_TaskEvery100ms(){ HM10Serial->write("AT+NOTIFYOFF004b"); break; case TASK_HM10_SCAN9: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: scan time to 9"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: scan time to 9"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; HM10Serial->write("AT+SCAN9"); break; case TASK_HM10_READ_B_MJ: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0x18"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: read handle 0x18"),D_CMND_HM10); HM10.current_task_delay = 2; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1386,7 +1386,7 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = bat; break; case TASK_HM10_SUB_HT_MJ: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: subscribe to 0x0f"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: subscribe to 0x0f"),D_CMND_HM10); HM10.current_task_delay = 10; // set task delay HM10_TaskReplaceInSlot(TASK_HM10_FEEDBACK,i); runningTaskLoop = false; @@ -1394,22 +1394,22 @@ void HM10_TaskEvery100ms(){ HM10.mode.awaiting = tempHumMJ; break; case TASK_HM10_FEEDBACK: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: get response"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: get response"),D_CMND_HM10); HM10SerialHandleFeedback(); HM10.current_task_delay = HM10_TASK_LIST[i+1][1];; // set task delay HM10_TASK_LIST[i][0] = TASK_HM10_DONE; // no feedback for reset runningTaskLoop = false; break; case TASK_HM10_STATUS_EVENT: - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%s: show status"),D_CMND_HM10); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: show status"),D_CMND_HM10); HM10StatusInfo(); HM10.current_task_delay = HM10_TASK_LIST[i+1][1];; // set task delay HM10_TASK_LIST[i][0] = TASK_HM10_DONE; // no feedback for reset runningTaskLoop = false; break; case TASK_HM10_DONE: // this entry was already handled - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%sFound done HM10_TASK"),D_CMND_HM10); - // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("%snext slot:%u, i: %u"),D_CMND_HM10, HM10_TASK_LIST[i+1][0],i); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%sFound done HM10_TASK"),D_CMND_HM10); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR("%snext slot:%u, i: %u"),D_CMND_HM10, HM10_TASK_LIST[i+1][0],i); if(HM10_TASK_LIST[i+1][0] == TASK_HM10_NOTASK) { // check the next entry and if there is none DEBUG_SENSOR_LOG(PSTR("%sno Tasks left"),D_CMND_HM10); DEBUG_SENSOR_LOG(PSTR("%sHM10_TASK_DONE current slot %u"),D_CMND_HM10, i); @@ -1435,7 +1435,7 @@ void HM10StatusInfo() { /* char stemp[20]; snprintf_P(stemp, sizeof(stemp),PSTR("{%s:{\"found\": %u}}"),D_CMND_HM10, MIBLEsensors.size()); - AddLog_P2(LOG_LEVEL_INFO, stemp); + AddLog_P(LOG_LEVEL_INFO, stemp); RulesProcessEvent(stemp); */ Response_P(PSTR("{\"%s\":{\"found\":%u}}"), D_CMND_HM10, MIBLEsensors.size()); diff --git a/tasmota/xsns_65_hdc1080.ino b/tasmota/xsns_65_hdc1080.ino index 1a70cf0a0..1ad48a94d 100644 --- a/tasmota/xsns_65_hdc1080.ino +++ b/tasmota/xsns_65_hdc1080.ino @@ -176,7 +176,7 @@ bool HdcTriggerRead(void) { hdc_next_read = millis() + HDC1080_CONV_TIME; if(status) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("HdcTriggerRead: failed to open the transaction for HDC_REG_TEMP. Status = %d"), status); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("HdcTriggerRead: failed to open the transaction for HDC_REG_TEMP. Status = %d"), status); return false; } @@ -205,7 +205,7 @@ bool HdcRead(void) { status = HdcTransactionClose(HDC1080_ADDR, sensor_data, 4); if(status) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("HdcRead: failed to read HDC_REG_TEMP. Status = %d"), status); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("HdcRead: failed to read HDC_REG_TEMP. Status = %d"), status); return false; } @@ -213,7 +213,7 @@ bool HdcRead(void) { temp_data = (uint16_t) ((sensor_data[0] << 8) | sensor_data[1]); rh_data = (uint16_t) ((sensor_data[2] << 8) | sensor_data[3]); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("HdcRead: temperature raw data: 0x%04x; humidity raw data: 0x%04x"), temp_data, rh_data); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("HdcRead: temperature raw data: 0x%04x; humidity raw data: 0x%04x"), temp_data, rh_data); // read the temperature from the first 16 bits of the result @@ -237,7 +237,7 @@ bool HdcRead(void) { void HdcDetect(void) { if (I2cActive(HDC1080_ADDR)) { -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("HdcDetect: Address = 0x%02X already in use."), HDC1080_ADDR); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("HdcDetect: Address = 0x%02X already in use."), HDC1080_ADDR); return; } @@ -245,7 +245,7 @@ void HdcDetect(void) { hdc_manufacturer_id = HdcReadManufacturerId(); hdc_device_id = HdcReadDeviceId(); - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("HdcDetect: detected device with manufacturerId = 0x%04X and deviceId = 0x%04X"), hdc_manufacturer_id, hdc_device_id); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("HdcDetect: detected device with manufacturerId = 0x%04X and deviceId = 0x%04X"), hdc_manufacturer_id, hdc_device_id); if (hdc_device_id == HDC1080_DEV_ID) { HdcInit(); diff --git a/tasmota/xsns_66_iAQ.ino b/tasmota/xsns_66_iAQ.ino index ed89c855e..c647aa13b 100644 --- a/tasmota/xsns_66_iAQ.ino +++ b/tasmota/xsns_66_iAQ.ino @@ -54,7 +54,7 @@ void IAQ_Read(void) for( uint32_t i=0; i<9; i++ ) { buf[i]= Wire.read(); } - // AddLog_P2(LOG_LEVEL_DEBUG, "iAQ: buffer %x %x %x %x %x %x %x %x %x ", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8]); + // AddLog_P(LOG_LEVEL_DEBUG, "iAQ: buffer %x %x %x %x %x %x %x %x %x ", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], buf[8]); iAQ.pred = (buf[0]<<8) + buf[1]; iAQ.status = buf[2]; iAQ.resistance = ((uint32_t)buf[3]<<24) + ((uint32_t)buf[4]<<16) + ((uint32_t)buf[5]<<8) + (uint32_t)buf[6]; @@ -80,7 +80,7 @@ void IAQ_Show(uint8_t json) if (json) { if (iAQ.status!=IAQ_STATUS_OK){ - AddLog_P2(LOG_LEVEL_INFO, PSTR("iAQ: " D_ERROR " %x" ),iAQ.status); + AddLog_P(LOG_LEVEL_INFO, PSTR("iAQ: " D_ERROR " %x" ),iAQ.status); return; } else { diff --git a/tasmota/xsns_67_as3935.ino b/tasmota/xsns_67_as3935.ino index 540b59ce0..a625163b6 100644 --- a/tasmota/xsns_67_as3935.ino +++ b/tasmota/xsns_67_as3935.ino @@ -218,7 +218,7 @@ bool AS3935AutoTuneCaps(uint8_t irqpin) { // functions bool AS3935CalRCOResult(void) { if(AS3935ReadRegister(CAL_SRCO_NOK) || AS3935ReadRegister(CAL_TRCO_NOK)) { - AddLog_P2(LOG_LEVEL_INFO, PSTR("I2C: AS3935 Fatal Failure of TRCO or SRCO calibration")); + AddLog_P(LOG_LEVEL_INFO, PSTR("I2C: AS3935 Fatal Failure of TRCO or SRCO calibration")); return false; } return true; @@ -514,7 +514,7 @@ void AS3935Detect(void) { if (!AS3935Setup()) return; as3935_sensor.active = true; } else { - AddLog_P2(LOG_LEVEL_INFO, PSTR("I2C: AS3935 GPIO Pin not defined!")); + AddLog_P(LOG_LEVEL_INFO, PSTR("I2C: AS3935 GPIO Pin not defined!")); } } } diff --git a/tasmota/xsns_68_windmeter.ino b/tasmota/xsns_68_windmeter.ino index 320ae0749..a5b2aa49e 100644 --- a/tasmota/xsns_68_windmeter.ino +++ b/tasmota/xsns_68_windmeter.ino @@ -79,7 +79,7 @@ void ICACHE_RAM_ATTR WindMeterUpdateSpeed(void) if (time_diff > Settings.windmeter_pulse_debounce * 1000) { WindMeter.counter_time = time; WindMeter.counter++; -// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("WMET: Counter %d"), WindMeter.counter); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("WMET: Counter %d"), WindMeter.counter); } } @@ -119,7 +119,7 @@ void WindMeterEverySecond(void) { //uint32_t time = micros(); //uint32_t delta_time = time - WindMeter.speed_time; - //AddLog_P2(LOG_LEVEL_INFO, PSTR("delta_time: %d"), delta_time); + //AddLog_P(LOG_LEVEL_INFO, PSTR("delta_time: %d"), delta_time); // speed = ( (pulses / pulses_per_rotation) * (2 * pi * radius) ) / delta_time WindMeter.speed = ((WindMeter.counter / Settings.windmeter_pulses_x_rot) * (windmeter_2pi * ((float)Settings.windmeter_radius / 1000))) * ((float)Settings.windmeter_speed_factor / 1000); @@ -131,7 +131,7 @@ void WindMeterEverySecond(void) //dtostrfd(WindMeter.speed, 2, speed_string); //char uspeed_string[FLOATSZ]; //dtostrfd(ConvertSpeed(WindMeter.speed), 2, uspeed_string); - //AddLog_P2(LOG_LEVEL_DEBUG, PSTR("WMET: Speed %s [m/s] - %s [unit]"), speed_string, uspeed_string); + //AddLog_P(LOG_LEVEL_DEBUG, PSTR("WMET: Speed %s [m/s] - %s [unit]"), speed_string, uspeed_string); #ifndef USE_WINDMETER_NOSTATISTICS if (WindMeter.speed < WindMeter.speed_min) { diff --git a/tasmota/xsns_69_opentherm.ino b/tasmota/xsns_69_opentherm.ino index f08a83f0d..e5f12c3f0 100644 --- a/tasmota/xsns_69_opentherm.ino +++ b/tasmota/xsns_69_opentherm.ino @@ -161,7 +161,7 @@ void ICACHE_RAM_ATTR sns_opentherm_handleInterrupt() void sns_opentherm_processResponseCallback(unsigned long response, int st) { OpenThermResponseStatus status = (OpenThermResponseStatus)st; - AddLog_P2(LOG_LEVEL_DEBUG_MORE, + AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("[OTH]: Processing response. Status=%s, Response=0x%lX"), sns_ot_master->statusToString(status), response); @@ -298,7 +298,7 @@ void sns_ot_start_handshake() return; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("[OTH]: perform handshake")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("[OTH]: perform handshake")); sns_ot_master->sendRequestAync( OpenTherm::buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0)); @@ -312,14 +312,14 @@ void sns_ot_process_handshake(unsigned long response, int st) if (status != OpenThermResponseStatus::SUCCESS || !sns_ot_master->isValidResponse(response)) { - AddLog_P2(LOG_LEVEL_ERROR, + AddLog_P(LOG_LEVEL_ERROR, PSTR("[OTH]: getSlaveConfiguration failed. Status=%s"), sns_ot_master->statusToString(status)); sns_ot_connection_status = OpenThermConnectionStatus::OTC_DISCONNECTED; return; } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("[OTH]: getLastResponseStatus SUCCESS. Slave Cfg: %lX"), response); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("[OTH]: getLastResponseStatus SUCCESS. Slave Cfg: %lX"), response); sns_ot_boiler_status.m_slave_flags = (response & 0xFF00) >> 8; diff --git a/tasmota/xsns_69_opentherm_protocol.ino b/tasmota/xsns_69_opentherm_protocol.ino index 1ebc5c14b..6311b818b 100644 --- a/tasmota/xsns_69_opentherm_protocol.ino +++ b/tasmota/xsns_69_opentherm_protocol.ino @@ -168,7 +168,7 @@ unsigned long sns_opentherm_set_slave_flags(struct OpenThermCommandT *self, stru } if (self->m_results[1].m_bool != centralHeatingIsOn) { - AddLog_P2(LOG_LEVEL_INFO, + AddLog_P(LOG_LEVEL_INFO, PSTR("[OTH]: Central Heating transitioning from %s to %s"), self->m_results[1].m_bool ? "on" : "off", status->m_enableCentralHeating ? "on" : "off"); @@ -219,7 +219,7 @@ unsigned long sns_opentherm_set_boiler_temperature(struct OpenThermCommandT *sel { return -1; } - AddLog_P2(LOG_LEVEL_INFO, + AddLog_P(LOG_LEVEL_INFO, PSTR("[OTH]: Setting Boiler Temp. Old: %d, New: %d"), (int)self->m_results[0].m_float, (int)status->m_boilerSetpoint); @@ -258,7 +258,7 @@ unsigned long sns_opentherm_set_boiler_dhw_temperature(struct OpenThermCommandT { return -1; } - AddLog_P2(LOG_LEVEL_INFO, + AddLog_P(LOG_LEVEL_INFO, PSTR("[OTH]: Setting Hot Water Temp. Old: %d, New: %d"), (int)self->m_results[0].m_float, (int)status->m_hotWaterSetpoint); @@ -400,7 +400,7 @@ void sns_opentherm_check_retry_request() if (!canRetry && !cmd->m_flags.supported) { cmd->m_flags.notSupported = true; - AddLog_P2(LOG_LEVEL_ERROR, + AddLog_P(LOG_LEVEL_ERROR, PSTR("[OTH]: command %s is not supported by the boiler. Last status: %s"), cmd->m_command_name, sns_ot_master->statusToString(sns_ot_master->getLastResponseStatus())); diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 020cc3798..cea6b64ee 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -28,7 +28,7 @@ void HandleMetrics(void) { if (!HttpCheckPriviledgedAccess()) { return; } - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, PSTR("Prometheus")); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "Prometheus")); WSContentBegin(200, CT_PLAIN); diff --git a/tasmota/xsns_interface.ino b/tasmota/xsns_interface.ino index c6427c0b7..fd05ccc57 100644 --- a/tasmota/xsns_interface.ino +++ b/tasmota/xsns_interface.ino @@ -917,7 +917,7 @@ bool XsnsCall(uint8_t Function) uint32_t profile_millis = millis() - profile_start_millis; if (profile_millis) { if (FUNC_EVERY_SECOND == Function) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), TasmotaGlobal.uptime, Function, x, profile_millis); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PRF: At %08u XsnsCall %d to Sensor %d took %u mS"), TasmotaGlobal.uptime, Function, x, profile_millis); } } #endif // PROFILE_XSNS_SENSOR_EVERY_SECOND @@ -937,7 +937,7 @@ bool XsnsCall(uint8_t Function) uint32_t profile_millis = millis() - profile_start_millis; if (profile_millis) { if (FUNC_EVERY_SECOND == Function) { - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("PRF: At %08u XsnsCall %d took %u mS"), TasmotaGlobal.uptime, Function, profile_millis); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("PRF: At %08u XsnsCall %d took %u mS"), TasmotaGlobal.uptime, Function, profile_millis); } } #endif // PROFILE_XSNS_EVERY_SECOND From a2b11520fe6af33817ef30f4a74d52e29182fed9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 6 Nov 2020 18:27:43 +0100 Subject: [PATCH 013/293] Fix tls time with new NTP client --- lib/lib_ssl/bearssl-esp8266/src/t_inner.h | 4 +++- tasmota/WiFiClientSecureLightBearSSL.cpp | 6 +++++- tasmota/WiFiClientSecureLightBearSSL.h | 1 - 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/lib_ssl/bearssl-esp8266/src/t_inner.h b/lib/lib_ssl/bearssl-esp8266/src/t_inner.h index 435c67c49..c596c9f18 100644 --- a/lib/lib_ssl/bearssl-esp8266/src/t_inner.h +++ b/lib/lib_ssl/bearssl-esp8266/src/t_inner.h @@ -433,7 +433,9 @@ */ #ifndef BR_USE_UNIX_TIME -#if defined __unix__ || defined __linux__ || defined ESP8266 || defined ESP32\ +/*#if defined __unix__ || defined __linux__ || defined ESP8266 || defined ESP32\*/ +// Tasmota now uses its own NTP client so we need to pass explicitly the current time +#if defined __unix__ || defined __linux__ || defined ESP32\ || defined _POSIX_SOURCE || defined _POSIX_C_SOURCE \ || (defined __APPLE__ && defined __MACH__) #define BR_USE_UNIX_TIME 1 diff --git a/tasmota/WiFiClientSecureLightBearSSL.cpp b/tasmota/WiFiClientSecureLightBearSSL.cpp index 645509989..809524711 100755 --- a/tasmota/WiFiClientSecureLightBearSSL.cpp +++ b/tasmota/WiFiClientSecureLightBearSSL.cpp @@ -67,6 +67,9 @@ void _Log_heap_size(const char *msg) { #define LOG_HEAP_SIZE(a) #endif +// get UTC time from Tasmota +extern uint32_t UtcTime(void); + // Stack thunked versions of calls // Initially in BearSSLHelpers.h extern "C" { @@ -179,7 +182,6 @@ void WiFiClientSecure_light::_clear() { _eng = nullptr; _iobuf_in = nullptr; _iobuf_out = nullptr; - _now = 0; // You can override or ensure time() is correct w/configTime setBufferSizes(1024, 1024); // reasonable minimum _handshake_done = false; _last_error = 0; @@ -918,6 +920,8 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) { br_x509_minimal_set_rsa(x509_minimal, br_ssl_engine_get_rsavrfy(_eng)); br_x509_minimal_set_hash(x509_minimal, br_sha256_ID, &br_sha256_vtable); br_ssl_engine_set_x509(_eng, &x509_minimal->vtable); + uint32_t now = UtcTime(); + br_x509_minimal_set_time(x509_minimal, now / 86400 + 719528, now % 86400); #else x509_insecure = (br_x509_pubkeyfingerprint_context*) malloc(sizeof(br_x509_pubkeyfingerprint_context)); diff --git a/tasmota/WiFiClientSecureLightBearSSL.h b/tasmota/WiFiClientSecureLightBearSSL.h index 67f74b0db..ed6ced416 100755 --- a/tasmota/WiFiClientSecureLightBearSSL.h +++ b/tasmota/WiFiClientSecureLightBearSSL.h @@ -112,7 +112,6 @@ class WiFiClientSecure_light : public WiFiClient { br_ssl_engine_context *_eng; // &_sc->eng, to allow for client or server contexts std::shared_ptr _iobuf_in; std::shared_ptr _iobuf_out; - time_t _now; int _iobuf_in_size; int _iobuf_out_size; bool _handshake_done; From 32ea8e503dca2c91febd6afefcda58cc2f512c89 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 6 Nov 2020 21:37:38 +0100 Subject: [PATCH 014/293] Make TLS resilient to NTP failure --- tasmota/WiFiClientSecureLightBearSSL.cpp | 3 +++ tasmota/settings.ino | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/tasmota/WiFiClientSecureLightBearSSL.cpp b/tasmota/WiFiClientSecureLightBearSSL.cpp index 809524711..d7b53cf25 100755 --- a/tasmota/WiFiClientSecureLightBearSSL.cpp +++ b/tasmota/WiFiClientSecureLightBearSSL.cpp @@ -69,6 +69,7 @@ void _Log_heap_size(const char *msg) { // get UTC time from Tasmota extern uint32_t UtcTime(void); +extern uint32_t CfgTime(void); // Stack thunked versions of calls // Initially in BearSSLHelpers.h @@ -921,6 +922,8 @@ bool WiFiClientSecure_light::_connectSSL(const char* hostName) { br_x509_minimal_set_hash(x509_minimal, br_sha256_ID, &br_sha256_vtable); br_ssl_engine_set_x509(_eng, &x509_minimal->vtable); uint32_t now = UtcTime(); + uint32_t cfg_time = CfgTime(); + if (cfg_time > now) { now = cfg_time; } br_x509_minimal_set_time(x509_minimal, now / 86400 + 719528, now % 86400); #else diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 190840cc9..dce815948 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -613,6 +613,11 @@ void SettingsLoad(void) { RtcSettingsLoad(); } +// Used in TLS - returns the timestamp of the last Flash settings write +uint32_t CfgTime(void) { + return Settings.cfg_timestamp; +} + void EspErase(uint32_t start_sector, uint32_t end_sector) { bool serial_output = (LOG_LEVEL_DEBUG_MORE <= TasmotaGlobal.seriallog_level); From 8f1b6196d7c72ab0d83177b026fa37ecf0aca6a9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 6 Nov 2020 21:59:08 +0100 Subject: [PATCH 015/293] Zigbee remove unwanted 0x0000 --- tasmota/xdrv_23_zigbee_8_parsers.ino | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 7b6a96381..8dca8c6a7 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -1470,8 +1470,10 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) { // log the packet details zcl_received.log(); - Z_Device & device = zigbee_devices.getShortAddr(srcaddr); - if (srcaddr != localShortAddr) { + // create the device entry if it does not exist and if it's not the local device + Z_Device & device = (srcaddr != localShortAddr) ? zigbee_devices.getShortAddr(srcaddr) : + device_unk; + if (device.valid()) { device.setLQI(linkquality != 0xFF ? linkquality : 0xFE); // EFR32 has a different scale for LQI device.setLastSeenNow(); } @@ -1522,7 +1524,9 @@ void Z_IncomingMessage(class ZCLFrame &zcl_received) { // since we just receveived data from the device, it is reachable zigbee_devices.resetTimersForDevice(srcaddr, 0 /* groupaddr */, Z_CAT_REACHABILITY); // remove any reachability timer already there - device.setReachable(true); // mark device as reachable + if (device.valid()) { + device.setReachable(true); // mark device as reachable + } if (defer_attributes) { // Prepare for publish From 0840b7447d0ffd9d817149d7bc399ab2461ec2b6 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 6 Nov 2020 22:24:45 +0100 Subject: [PATCH 016/293] Zigbee support for Mi Door and Contact --- tasmota/xdrv_23_zigbee_2_devices.ino | 5 +- tasmota/xdrv_23_zigbee_5__constants.ino | 266 ++++++++++++------------ tasmota/xdrv_23_zigbee_5_converters.ino | 45 ++-- tasmota/xdrv_23_zigbee_6_commands.ino | 27 ++- 4 files changed, 181 insertions(+), 162 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 097b608eb..fd64a5695 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -364,11 +364,14 @@ public: inline bool validZoneType(void) const { return 0xFFFF != zone_type; } inline uint16_t getZoneType(void) const { return zone_type; } + inline bool isPIR(void) const { return 0x000d == zone_type; } + inline bool isContact(void) const { return 0x0015 == zone_type; } inline void setZoneType(uint16_t _zone_type) { zone_type = _zone_type; } // 4 bytes - uint16_t zone_type; // mapped to the Zigbee standard + uint16_t zone_status; // last known state for sensor 1 & 2 + uint16_t zone_type; // mapped to the Zigbee standard // 0x0000 Standard CIE // 0x000d Motion sensor // 0x0015 Contact switch diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 4786cc944..405f51068 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -341,6 +341,7 @@ const char Z_strings[] PROGMEM = "ZoneState" "\x00" "ZoneType" "\x00" "ZoneStatus" "\x00" + "Contact" "\x00" "CurrentSummDelivered" "\x00" "CompanyName" "\x00" "MeterTypeID" "\x00" @@ -381,8 +382,8 @@ const char Z_strings[] PROGMEM = "TuyaFanMode" "\x00" "TuyaForceMode" "\x00" "TuyaWeekSelect" "\x00" - "TerncyRotate" "\x00" "TerncyDuration" "\x00" + "TerncyRotate" "\x00" "Identify" "\x00" "xxxx" "\x00" "IdentifyQuery" "\x00" @@ -742,137 +743,138 @@ enum Z_offsets { Zo_ZoneState = 4540, Zo_ZoneType = 4550, Zo_ZoneStatus = 4559, - Zo_CurrentSummDelivered = 4570, - Zo_CompanyName = 4591, - Zo_MeterTypeID = 4603, - Zo_DataQualityID = 4615, - Zo_CustomerName = 4629, - Zo_Model = 4642, - Zo_PartNumber = 4648, - Zo_ProductRevision = 4659, - Zo_SoftwareRevision = 4675, - Zo_UtilityName = 4692, - Zo_POD = 4704, - Zo_AvailablePower = 4708, - Zo_PowerThreshold = 4723, - Zo_RMSVoltage = 4738, - Zo_RMSCurrent = 4749, - Zo_ActivePower = 4760, - Zo_NumberOfResets = 4772, - Zo_PersistentMemoryWrites = 4787, - Zo_LastMessageLQI = 4810, - Zo_LastMessageRSSI = 4825, - Zo_TuyaScheduleWorkdays = 4841, - Zo_TuyaScheduleHolidays = 4862, - Zo_TuyaChildLock = 4883, - Zo_TuyaWindowDetection = 4897, - Zo_TuyaValveDetection = 4917, - Zo_TuyaAutoLock = 4936, - Zo_TuyaTempTarget = 4949, - Zo_TuyaBattery = 4964, - Zo_TuyaMinTemp = 4976, - Zo_TuyaMaxTemp = 4988, - Zo_TuyaBoostTime = 5000, - Zo_TuyaComfortTemp = 5014, - Zo_TuyaEcoTemp = 5030, - Zo_TuyaValvePosition = 5042, - Zo_TuyaAwayTemp = 5060, - Zo_TuyaAwayDays = 5073, - Zo_TuyaPreset = 5086, - Zo_TuyaFanMode = 5097, - Zo_TuyaForceMode = 5109, - Zo_TuyaWeekSelect = 5123, - Zo_TerncyRotate = 5138, - Zo_TerncyDuration = 5151, - Zo_Identify = 5166, - Zo_xxxx = 5175, - Zo_IdentifyQuery = 5180, - Zo_AddGroup = 5194, - Zo_xxxx00 = 5203, - Zo_ViewGroup = 5210, - Zo_GetGroup = 5220, - Zo_01xxxx = 5229, - Zo_GetAllGroups = 5236, - Zo_00 = 5249, - Zo_RemoveGroup = 5252, - Zo_RemoveAllGroups = 5264, - Zo_ViewScene = 5280, - Zo_xxxxyy = 5290, - Zo_RemoveScene = 5297, - Zo_RemoveAllScenes = 5309, - Zo_RecallScene = 5325, - Zo_GetSceneMembership = 5337, - Zo_PowerOffEffect = 5356, - Zo_xxyy = 5371, - Zo_PowerOnRecall = 5376, - Zo_PowerOnTimer = 5390, - Zo_xxyyyyzzzz = 5403, - Zo_xx0A00 = 5414, - Zo_DimmerUp = 5421, - Zo_00190200 = 5430, - Zo_DimmerDown = 5439, - Zo_01190200 = 5450, - Zo_DimmerStop = 5459, - Zo_ResetAlarm = 5470, - Zo_xxyyyy = 5481, - Zo_ResetAllAlarms = 5488, - Zo_xx000A00 = 5503, - Zo_HueSat = 5512, - Zo_xxyy0A00 = 5519, - Zo_Color = 5528, - Zo_xxxxyyyy0A00 = 5534, - Zo_xxxx0A00 = 5547, - Zo_ShutterOpen = 5556, - Zo_ShutterClose = 5568, - Zo_ShutterStop = 5581, - Zo_ShutterLift = 5593, - Zo_xx = 5605, - Zo_ShutterTilt = 5608, - Zo_Shutter = 5620, - Zo_DimmerMove = 5628, - Zo_xx0A = 5639, - Zo_DimmerStepUp = 5644, - Zo_00xx0A00 = 5657, - Zo_DimmerStepDown = 5666, - Zo_01xx0A00 = 5681, - Zo_DimmerStep = 5690, - Zo_xx190A00 = 5701, - Zo_01 = 5710, - Zo_HueMove = 5713, - Zo_xx19 = 5721, - Zo_HueStepUp = 5726, - Zo_HueStepDown = 5736, - Zo_03xx0A00 = 5748, - Zo_HueStep = 5757, - Zo_SatMove = 5765, - Zo_SatStep = 5773, - Zo_xx190A = 5781, - Zo_ColorMove = 5788, - Zo_xxxxyyyy = 5798, - Zo_ColorStep = 5807, - Zo_ColorTempMoveUp = 5817, - Zo_01xxxx000000000000 = 5833, - Zo_ColorTempMoveDown = 5852, - Zo_03xxxx000000000000 = 5870, - Zo_ColorTempMoveStop = 5889, - Zo_00xxxx000000000000 = 5907, - Zo_ColorTempMove = 5926, - Zo_xxyyyy000000000000 = 5940, - Zo_ColorTempStepUp = 5959, - Zo_01xxxx0A0000000000 = 5975, - Zo_ColorTempStepDown = 5994, - Zo_03xxxx0A0000000000 = 6012, - Zo_ColorTempStep = 6031, - Zo_xxyyyy0A0000000000 = 6045, - Zo_ArrowClick = 6064, - Zo_ArrowHold = 6075, - Zo_ArrowRelease = 6085, - Zo_ZoneStatusChange = 6098, - Zo_xxxxyyzz = 6115, - Zo_xxyyzzzz = 6124, - Zo_AddScene = 6133, - Zo_xxyyyyzz = 6142, - Zo_StoreScene = 6151, + Zo_Contact = 4570, + Zo_CurrentSummDelivered = 4578, + Zo_CompanyName = 4599, + Zo_MeterTypeID = 4611, + Zo_DataQualityID = 4623, + Zo_CustomerName = 4637, + Zo_Model = 4650, + Zo_PartNumber = 4656, + Zo_ProductRevision = 4667, + Zo_SoftwareRevision = 4683, + Zo_UtilityName = 4700, + Zo_POD = 4712, + Zo_AvailablePower = 4716, + Zo_PowerThreshold = 4731, + Zo_RMSVoltage = 4746, + Zo_RMSCurrent = 4757, + Zo_ActivePower = 4768, + Zo_NumberOfResets = 4780, + Zo_PersistentMemoryWrites = 4795, + Zo_LastMessageLQI = 4818, + Zo_LastMessageRSSI = 4833, + Zo_TuyaScheduleWorkdays = 4849, + Zo_TuyaScheduleHolidays = 4870, + Zo_TuyaChildLock = 4891, + Zo_TuyaWindowDetection = 4905, + Zo_TuyaValveDetection = 4925, + Zo_TuyaAutoLock = 4944, + Zo_TuyaTempTarget = 4957, + Zo_TuyaBattery = 4972, + Zo_TuyaMinTemp = 4984, + Zo_TuyaMaxTemp = 4996, + Zo_TuyaBoostTime = 5008, + Zo_TuyaComfortTemp = 5022, + Zo_TuyaEcoTemp = 5038, + Zo_TuyaValvePosition = 5050, + Zo_TuyaAwayTemp = 5068, + Zo_TuyaAwayDays = 5081, + Zo_TuyaPreset = 5094, + Zo_TuyaFanMode = 5105, + Zo_TuyaForceMode = 5117, + Zo_TuyaWeekSelect = 5131, + Zo_TerncyDuration = 5146, + Zo_TerncyRotate = 5161, + Zo_Identify = 5174, + Zo_xxxx = 5183, + Zo_IdentifyQuery = 5188, + Zo_AddGroup = 5202, + Zo_xxxx00 = 5211, + Zo_ViewGroup = 5218, + Zo_GetGroup = 5228, + Zo_01xxxx = 5237, + Zo_GetAllGroups = 5244, + Zo_00 = 5257, + Zo_RemoveGroup = 5260, + Zo_RemoveAllGroups = 5272, + Zo_ViewScene = 5288, + Zo_xxxxyy = 5298, + Zo_RemoveScene = 5305, + Zo_RemoveAllScenes = 5317, + Zo_RecallScene = 5333, + Zo_GetSceneMembership = 5345, + Zo_PowerOffEffect = 5364, + Zo_xxyy = 5379, + Zo_PowerOnRecall = 5384, + Zo_PowerOnTimer = 5398, + Zo_xxyyyyzzzz = 5411, + Zo_xx0A00 = 5422, + Zo_DimmerUp = 5429, + Zo_00190200 = 5438, + Zo_DimmerDown = 5447, + Zo_01190200 = 5458, + Zo_DimmerStop = 5467, + Zo_ResetAlarm = 5478, + Zo_xxyyyy = 5489, + Zo_ResetAllAlarms = 5496, + Zo_xx000A00 = 5511, + Zo_HueSat = 5520, + Zo_xxyy0A00 = 5527, + Zo_Color = 5536, + Zo_xxxxyyyy0A00 = 5542, + Zo_xxxx0A00 = 5555, + Zo_ShutterOpen = 5564, + Zo_ShutterClose = 5576, + Zo_ShutterStop = 5589, + Zo_ShutterLift = 5601, + Zo_xx = 5613, + Zo_ShutterTilt = 5616, + Zo_Shutter = 5628, + Zo_DimmerMove = 5636, + Zo_xx0A = 5647, + Zo_DimmerStepUp = 5652, + Zo_00xx0A00 = 5665, + Zo_DimmerStepDown = 5674, + Zo_01xx0A00 = 5689, + Zo_DimmerStep = 5698, + Zo_xx190A00 = 5709, + Zo_01 = 5718, + Zo_HueMove = 5721, + Zo_xx19 = 5729, + Zo_HueStepUp = 5734, + Zo_HueStepDown = 5744, + Zo_03xx0A00 = 5756, + Zo_HueStep = 5765, + Zo_SatMove = 5773, + Zo_SatStep = 5781, + Zo_xx190A = 5789, + Zo_ColorMove = 5796, + Zo_xxxxyyyy = 5806, + Zo_ColorStep = 5815, + Zo_ColorTempMoveUp = 5825, + Zo_01xxxx000000000000 = 5841, + Zo_ColorTempMoveDown = 5860, + Zo_03xxxx000000000000 = 5878, + Zo_ColorTempMoveStop = 5897, + Zo_00xxxx000000000000 = 5915, + Zo_ColorTempMove = 5934, + Zo_xxyyyy000000000000 = 5948, + Zo_ColorTempStepUp = 5967, + Zo_01xxxx0A0000000000 = 5983, + Zo_ColorTempStepDown = 6002, + Zo_03xxxx0A0000000000 = 6020, + Zo_ColorTempStep = 6039, + Zo_xxyyyy0A0000000000 = 6053, + Zo_ArrowClick = 6072, + Zo_ArrowHold = 6083, + Zo_ArrowRelease = 6093, + Zo_ZoneStatusChange = 6106, + Zo_xxxxyyzz = 6123, + Zo_xxyyzzzz = 6132, + Zo_AddScene = 6141, + Zo_xxyyyyzz = 6150, + Zo_StoreScene = 6159, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index cb2317084..642901f13 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -558,8 +558,9 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { // IAS Cluster (Intruder Alarm System) { Zenum8, Cx0500, 0x0000, Z_(ZoneState), Cm1, 0 }, // Occupancy (map8) - { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1, 0 }, // Occupancy (map8) - { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Occupancy (map8) + { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor + { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor + { Zbool, Cx0500, 0xFFF0, Z_(Contact), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // We fit the first bit in the LSB // Metering (Smart Energy) cluster { Zuint48, Cx0702, 0x0000, Z_(CurrentSummDelivered), Cm1, 0 }, @@ -1226,6 +1227,8 @@ void ZCLFrame::generateSyntheticAttributes(Z_attribute_list& attr_list) { // Note: both function are now split to compute on extracted attributes // void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { + const char * model_c = zigbee_devices.getModelId(_srcaddr); // null if unknown + String modelId((char*) model_c); // scan through attributes and apply specific converters for (auto &attr : attr_list) { if (attr.key_is_str) { continue; } // pass if key is a name @@ -1239,12 +1242,13 @@ void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { } break; case 0x00010021: // BatteryPercentage - { - const char * model_c = zigbee_devices.getModelId(_srcaddr); // null if unknown - String modelId((char*) model_c); - if (modelId.startsWith(F("TRADFRI"))) { - attr.setUInt(attr.getUInt() * 2); // bug in TRADFRI battery, need to double the value - } + if (modelId.startsWith(F("TRADFRI"))) { + attr.setUInt(attr.getUInt() * 2); // bug in TRADFRI battery, need to double the value + } + break; + case 0x00060000: // "Power" for lumi Door/Window is converted to "Contact" + if (modelId.startsWith(F("lumi.sensor_magnet"))) { + attr.setKeyId(0x0500, 0xFFF0); // change cluster and attribute to 0500/FFF0 } break; case 0x02010008: // Pi Heating Demand - solve Eutotronic bug @@ -1558,9 +1562,21 @@ void ZCLFrame::syntheticAqaraSensor(Z_attribute_list &attr_list, class Z_attribu attr_list.addAttribute(0x0001, 0x0020).setFloat(batteryvoltage); uint8_t batterypercentage = toPercentageCR2032(uval32); attr_list.addAttribute(0x0001, 0x0021).setUInt(batterypercentage * 2); - } else if ((nullptr != modelId) && (0 == getManufCode())) { + } else if ((nullptr != modelId) && ((0 == getManufCode()) || (0x115F == getManufCode()))) { translated = true; - if (modelId.startsWith(F("lumi.sensor_ht")) || + if (modelId.startsWith(F("lumi.sensor_magnet"))) { // door / window sensor + if (0x64 == attrid) { + attr_list.addAttribute(0x0500, 0xFFF0).copyVal(attr); // Contact + } + } else if (modelId.startsWith(F("lumi.sensor_smoke"))) { // gas leak + if (0x64 == attrid) { + attr_list.addAttribute(F("SmokeDensity")).copyVal(attr); + } + } else if (modelId.startsWith(F("lumi.sensor_natgas"))) { // gas leak + if (0x64 == attrid) { + attr_list.addAttribute(F("GasDensity")).copyVal(attr); + } + } else if (modelId.startsWith(F("lumi.sensor_ht")) || modelId.equals(F("lumi.sens")) || modelId.startsWith(F("lumi.weather"))) { // Temp sensor // Filter according to prefix of model name @@ -1572,18 +1588,9 @@ void ZCLFrame::syntheticAqaraSensor(Z_attribute_list &attr_list, class Z_attribu } else if (0x66 == attrid) { attr_list.addAttribute(0x0403, 0x0000).setUInt((ival32 + 50) / 100); // Pressure } - } else if (modelId.startsWith(F("lumi.sensor_smoke"))) { // gas leak - if (0x64 == attrid) { - attr_list.addAttribute(F("SmokeDensity")).copyVal(attr); - } - } else if (modelId.startsWith(F("lumi.sensor_natgas"))) { // gas leak - if (0x64 == attrid) { - attr_list.addAttribute(F("GasDensity")).copyVal(attr); - } } else { translated = false; // we didn't find a match } - // } else if (0x115F == zcl->getManufCode()) { // Aqara Motion Sensor, still unknown field } if (!translated) { if (attrid >= 100) { // payload is always above 0x64 or 100 diff --git a/tasmota/xdrv_23_zigbee_6_commands.ino b/tasmota/xdrv_23_zigbee_6_commands.ino index f5854d175..425fcad0b 100644 --- a/tasmota/xdrv_23_zigbee_6_commands.ino +++ b/tasmota/xdrv_23_zigbee_6_commands.ino @@ -346,17 +346,24 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, // IAS switch (cccc00mm) { case 0x05000000: // "ZoneStatusChange" - attr_list.addAttribute(command_name, true).setUInt(xyz.x); - if (0 != xyz.y) { - attr_list.addAttribute(command_name, PSTR("Ext")).setUInt(xyz.y); + { + attr_list.addAttribute(command_name, true).setUInt(xyz.x); + if (0 != xyz.y) { + attr_list.addAttribute(command_name, PSTR("Ext")).setUInt(xyz.y); + } + if ((0 != xyz.z) && (0xFF != xyz.z)) { + attr_list.addAttribute(command_name, PSTR("Zone")).setUInt(xyz.z); + } + // Convert to "Occupancy" or to "Contact" if the device is PIR or Contact sensor + const Z_Data_Alarm & alarm = (const Z_Data_Alarm&) zigbee_devices.getShortAddr(shortaddr).data.find(Z_Data_Type::Z_Alarm, srcendpoint); + if (&alarm != nullptr) { + if (alarm.isPIR()) { // set Occupancy + attr_list.addAttribute(0x0406, 0x0000).setUInt((xyz.x) & 0x01 ? 1 : 0); + } else if (alarm.isContact()) { // set Contact + attr_list.addAttribute(0x0500, 0xFFF0).setUInt((xyz.x) & 0x01 ? 1 : 0); + } + } } - if ((0 != xyz.z) && (0xFF != xyz.z)) { - attr_list.addAttribute(command_name, PSTR("Zone")).setUInt(xyz.z); - } - // for now convert alamrs 1 and 2 to Occupancy - // TODO we may only do this conversion to ZoneType == 0x000D 'Motion Sensor' - // Occupancy is 0406/0000 of type Zmap8 - attr_list.addAttribute(0x0406, 0x0000).setUInt((xyz.x) & 0x01 ? 1 : 0); break; case 0x00040000: case 0x00040001: From 959e734924863c44114ae6f590dba40f2f3e32d2 Mon Sep 17 00:00:00 2001 From: Christopher Tremblay Date: Sat, 7 Nov 2020 01:41:22 -0800 Subject: [PATCH 017/293] Add support for EZO PMP Adds support for EZO Peristaltic pump --- I2CDEVICES.md | 1 + tasmota/i18n.h | 2 + tasmota/language/bg_BG.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + tasmota/my_user_config.h | 1 + tasmota/tasmota_configurations.h | 5 ++- tasmota/xsns_78_ezo.ino | 2 +- tasmota/xsns_78_ezopmp.ino | 63 ++++++++++++++++++++++++++++++++ tasmota/xsns_78_xezo.ino | 9 ++++- 31 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 tasmota/xsns_78_ezopmp.ino diff --git a/I2CDEVICES.md b/I2CDEVICES.md index f7cbe820b..351c6d67d 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -88,3 +88,4 @@ Index | Define | Driver | Device | Address(es) | Description 55 | USE_EZOFLO | xsns_78 | EZOFLO | 0x61 - 0x70 | Flow meter sensor 55 | USE_EZODO | xsns_78 | EZODO | 0x61 - 0x70 | Disolved Oxygen sensor 55 | USE_EZORGB | xsns_78 | EZORGB | 0x61 - 0x70 | Color sensor + 55 | USE_EZOPMP | xsns_78 | EZOPMP | 0x61 - 0x70 | Peristaltic Pump diff --git a/tasmota/i18n.h b/tasmota/i18n.h index df4c28b8b..7f23812dd 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -135,6 +135,7 @@ #define D_JSON_PROGRAMSIZE "ProgramSize" #define D_JSON_PSRMAXMEMORY "PsrMax" #define D_JSON_PSRFREEMEMORY "PsrFree" +#define D_JSON_PUMP "Pumped" #define D_JSON_RED "Red" #define D_JSON_REFERENCETEMPERATURE "ReferenceTemperature" #define D_JSON_REMAINING "Remaining" @@ -794,6 +795,7 @@ const char HTTP_SNS_DO[] PROGMEM = "{s}%s " D_DO "{ const char HTTP_SNS_COLOR_RED[] PROGMEM = "{s}%s " D_COLOR_RED "{m}%u " "{e}"; const char HTTP_SNS_COLOR_GREEN[] PROGMEM = "{s}%s " D_COLOR_GREEN "{m}%u " "{e}"; const char HTTP_SNS_COLOR_BLUE[] PROGMEM = "{s}%s " D_COLOR_BLUE "{m}%u " "{e}"; +const char HTTP_SNS_MILLILITERS[] PROGMEM = "{s}%s " D_VOLUME "{m}%s " D_UNIT_MILLILITERS "{e}"; #endif // USE_WEBSERVER const uint32_t MARKER_START = 0x5AA55AA5; diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 6ad19f493..fa8e01c41 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 6db75feae..13f0efc26 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 7b374e719..3865c6f5f 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 519c26299..6e042eca8 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 2a17d14a8..7d47469ce 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 7ecfb47d9..1ab58fadb 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 24dd72ec8..3848542d9 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -751,6 +751,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index edd1cf680..d03e8e090 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 81c8b902b..40cbbc8c6 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 8f70895cd..d2c42327c 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 2d958401a..ffdf1dfef 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "마이크로초" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "밀리초" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 96677cbcf..2fafa100a 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 2976538a2..6cb2abb95 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index fa68108aa..a40114f6e 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 5aee83f2e..579b43987 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index be4678b52..a154e4049 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 30f1c489c..b49bffd79 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "мкс" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "мм рт.ст." #define D_UNIT_MILLISECOND "мс" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 634520391..6007fc315 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 5ab897d31..0b1416573 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index fb672ef48..883d8a4e4 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 0e14712d7..7b1e91b41 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µС" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "мм" #define D_UNIT_MILLIMETER_MERCURY "ммHg" #define D_UNIT_MILLISECOND "мС" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index d53ac9235..122e478a4 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index f2392e13f..53cab55df 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "毫米" #define D_UNIT_MILLIMETER_MERCURY "毫米汞柱" #define D_UNIT_MILLISECOND "毫秒" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 8d9615f12..0af4fcea9 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -755,6 +755,7 @@ #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MICROSIEMENS_PER_CM "µS/cm" #define D_UNIT_MILLIAMPERE "毫安培" +#define D_UNIT_MILLILITERS "ml" #define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "毫秒" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index b2200e29c..b898addd1 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -573,6 +573,7 @@ // #define USE_EZOFLO // [I2cDriver55] Enable support for EZO's FLO sensor (+0k4 code) - Shared EZO code required for any EZO device (+1k2 code) // #define USE_EZODO // [I2cDriver55] Enable support for EZO's DO sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) // #define USE_EZORGB // [I2cDriver55] Enable support for EZO's RGB sensor (+0k5 code) - Shared EZO code required for any EZO device (+1k2 code) +// #define USE_EZOPMP // [I2cDriver55] Enable support for EZO's PMP sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) // #define USE_DISPLAY // Add I2C Display Support (+2k code) #define USE_DISPLAY_MODES1TO5 // Enable display mode 1 to 5 in addition to mode 0 diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 2d9df7c00..24e3f9ace 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -136,8 +136,9 @@ //#define USE_EZOO2 // [I2cDriver55] Enable support for EZO's O2 sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) //#define USE_EZOPRS // [I2cDriver55] Enable support for EZO's PRS sensor (+0k7 code) - Shared EZO code required for any EZO device (+1k2 code) //#define USE_EZOFLO // [I2cDriver55] Enable support for EZO's FLO sensor (+0k4 code) - Shared EZO code required for any EZO device (+1k2 code) -// #define USE_EZODO // [I2cDriver55] Enable support for EZO's DO sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) -// #define USE_EZORGB // [I2cDriver55] Enable support for EZO's RGB sensor (+0k5 code) - Shared EZO code required for any EZO device (+1k2 code) +//#define USE_EZODO // [I2cDriver55] Enable support for EZO's DO sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) +//#define USE_EZORGB // [I2cDriver55] Enable support for EZO's RGB sensor (+0k5 code) - Shared EZO code required for any EZO device (+1k2 code) +//#define USE_EZOPMP // [I2cDriver55] Enable support for EZO's PMP sensor (+0k3 code) - Shared EZO code required for any EZO device (+1k2 code) #define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) #define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) diff --git a/tasmota/xsns_78_ezo.ino b/tasmota/xsns_78_ezo.ino index 0593ed200..b8ba523ea 100644 --- a/tasmota/xsns_78_ezo.ino +++ b/tasmota/xsns_78_ezo.ino @@ -18,7 +18,7 @@ */ #ifdef USE_I2C -#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM) || defined(USE_EZOEC) || defined(USE_EZOCO2) || defined(USE_EZOO2) || defined(USE_EZOPRS) || defined(USE_EZOFLO) || defined(USE_EZODO) || defined(USE_EZORGB) +#if defined(USE_EZOPH) || defined(USE_EZOORP) || defined(USE_EZORTD) || defined(USE_EZOHUM) || defined(USE_EZOEC) || defined(USE_EZOCO2) || defined(USE_EZOO2) || defined(USE_EZOPRS) || defined(USE_EZOFLO) || defined(USE_EZODO) || defined(USE_EZORGB) || defined(USE_EZOPMP) #define USE_EZO #endif #if defined(USE_EZO) diff --git a/tasmota/xsns_78_ezopmp.ino b/tasmota/xsns_78_ezopmp.ino new file mode 100644 index 000000000..cea7a9cf0 --- /dev/null +++ b/tasmota/xsns_78_ezopmp.ino @@ -0,0 +1,63 @@ +/* + xsns_78_ezopmp.ino - EZO PMP I2C PMP sensor support for Tasmota + + Copyright (C) 2020 Christopher Tremblay + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_I2C +#ifdef USE_EZOPMP + +#define EZO_PMP_READ_LATENCY 300 + +struct EZOPMP : public EZOStruct { + EZOPMP(uint32_t addr) : EZOStruct(addr), volume(NAN) {} + + virtual void ProcessMeasurement(void) + { + char data[D_EZO_MAX_BUF]; + + EZOStruct::ProcessMeasurement(data, sizeof(data), EZO_PMP_READ_LATENCY); + + volume = CharToFloat(data); + } + + virtual void Show(bool json, const char *name) + { + char str[FLOATSZ]; + + dtostrfd(volume, 1, str); + + if (json) { + ResponseAppend_P(PSTR(",\"%s\":{\"" D_JSON_PUMP "\":%s"), name, str); + ResponseJsonEnd(); + +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_SNS_MILLILITERS, name, str); +#endif + } + } + + static const char id[] PROGMEM; + +private: + float volume; +}; + +const char EZOPMP::id[] PROGMEM = "PMP"; + +#endif // USE_EZOPMP +#endif // USE_I2C diff --git a/tasmota/xsns_78_xezo.ino b/tasmota/xsns_78_xezo.ino index 6bb745dc4..2774c7a0c 100644 --- a/tasmota/xsns_78_xezo.ino +++ b/tasmota/xsns_78_xezo.ino @@ -77,7 +77,11 @@ const char *const EZOSupport[EZO_ADDR_n] PROGMEM = { #else EZOStruct::id, #endif - EZOStruct::id, // "PMP" +#ifdef USE_EZOPMP + EZOPMP::id, +#else + EZOStruct::id, +#endif #ifdef USE_EZOFLO EZOFLO::id, #else @@ -257,6 +261,9 @@ private: #ifdef USE_EZORTD CREATE_EZO_CLASS(RTD) #endif +#ifdef USE_EZOPMP + CREATE_EZO_CLASS(PMP) +#endif #ifdef USE_EZOFLO CREATE_EZO_CLASS(FLO) #endif From 780db5271c0f91265c6d68b1dddb2308768e067e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 7 Nov 2020 11:09:16 +0100 Subject: [PATCH 018/293] Update changelog --- CHANGELOG.md | 3 +++ RELEASENOTES.md | 3 +++ tasmota/settings.ino | 3 +++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d15684b10..b3e148445 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.1.0.1] +### Added +- Zigbee support for Mi Door and Contact (#9759) + ### Changed - Core library from v2.7.4.5 to v2.7.4.7 - Platformio compiler option `no target align` enabled (#9749) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7f801dfa2..9ab1c99f0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -58,6 +58,9 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota [Complete list](BUILDS.md) of available feature and sensors. ## Changelog v9.1.0.1 +### Added +- Zigbee support for Mi Door and Contact (#9759) + ### Changed - Core library from v2.7.4.5 to v2.7.4.7 - Platformio compiler option `no target align` enabled (#9749) diff --git a/tasmota/settings.ino b/tasmota/settings.ino index dce815948..0bf23a3c0 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1303,6 +1303,9 @@ void SettingsDelta(void) SettingsUpdateText(SET_ADC_PARAM1, parameters); } #endif // ESP8266 + if (Settings.version < 0x09010000) { + Settings.dimmer_step = DEFAULT_DIMMER_STEP; + } Settings.version = VERSION; SettingsSave(1); From e498b28864129daa45571222595210e04f30c1a5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 7 Nov 2020 11:35:33 +0100 Subject: [PATCH 019/293] Add support for EZO PMP sensors Add support for EZO PMP sensors by Christopher Tremblay (#9760) --- BUILDS.md | 1 + CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/support_features.ino | 10 ++++++---- tools/decode-status.py | 4 ++-- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/BUILDS.md b/BUILDS.md index 2f55cc8a8..55be2ae7a 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -141,6 +141,7 @@ | USE_EZOO2 | - | - | - | - | - | - | - | | USE_EZOORP | - | - | - | - | - | - | - | | USE_EZOPH | - | - | - | - | - | - | - | +| USE_EZOPMP | - | - | - | - | - | - | - | | USE_EZOPRS | - | - | - | - | - | - | - | | USE_EZORGB | - | - | - | - | - | - | - | | USE_EZORTD | - | - | - | - | - | - | - | diff --git a/CHANGELOG.md b/CHANGELOG.md index b3e148445..0f2785810 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.1.0.1] ### Added - Zigbee support for Mi Door and Contact (#9759) +- Support for EZO PMP sensors by Christopher Tremblay (#9760) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 9ab1c99f0..962432de8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -60,6 +60,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0.1 ### Added - Zigbee support for Mi Door and Contact (#9759) +- Support for additional EZO sensors by Christopher Tremblay ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index f636752e7..61ccc74a6 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -647,15 +647,17 @@ void ResponseAppendFeatures(void) feature7 |= 0x00000040; // xsns_78_ezoprs.ino #endif #if defined(USE_I2C) && defined(USE_EZOFLO) - feature7 |= 0x00000080; + feature7 |= 0x00000080; // xsns_78_ezoflo.ino #endif #if defined(USE_I2C) && defined(USE_EZODO) - feature7 |= 0x00000100; + feature7 |= 0x00000100; // xsns_78_ezodo.ino #endif #if defined(USE_I2C) && defined(USE_EZORGB) - feature7 |= 0x00000200; + feature7 |= 0x00000200; // xsns_78_ezorgb.ino +#endif +#if defined(USE_I2C) && defined(USE_EZOPMP) + feature7 |= 0x00000400; // xsns_78_ezopmp.ino #endif -// feature7 |= 0x00000400; // feature7 |= 0x00000800; // feature7 |= 0x00001000; diff --git a/tools/decode-status.py b/tools/decode-status.py index 4f94e32d4..b657da571 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -236,7 +236,7 @@ a_features = [[ ],[ "USE_EZOORP","USE_EZORTD","USE_EZOHUM","USE_EZOEC", "USE_EZOCO2","USE_EZOO2","USE_EZOPRS","USE_EZOFLO", - "USE_EZODO","USE_EZORGB","","", + "USE_EZODO","USE_EZORGB","USE_EZOPMP","", "","","","", "","","","", "","","","", @@ -269,7 +269,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20201102 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20201107 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From e5dfbb11375be430b2611eb8968d37a44905234e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 7 Nov 2020 12:42:39 +0100 Subject: [PATCH 020/293] Fix RTC using manual time --- tasmota/support_rtc.ino | 80 ++++++++++++++++++++++------------------ tasmota/support_wifi.ino | 6 +-- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/tasmota/support_rtc.ino b/tasmota/support_rtc.ino index ffa350370..ff1561df8 100644 --- a/tasmota/support_rtc.ino +++ b/tasmota/support_rtc.ino @@ -371,42 +371,46 @@ uint32_t RuleToTime(TimeRule r, int yr) void RtcSecond(void) { static uint32_t last_sync = 0; + static bool mutex = false; + if (mutex) { return; } + + if (Rtc.time_synced) { + mutex = true; + + Rtc.time_synced = false; + last_sync = Rtc.utc_time; + + if (Rtc.restart_time == 0) { + Rtc.restart_time = Rtc.utc_time - TasmotaGlobal.uptime; // save first synced time as restart time + } + + TIME_T tmpTime; + BreakTime(Rtc.utc_time, tmpTime); + RtcTime.year = tmpTime.year + 1970; + Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); + Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); + + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), + GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); + + if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 + TasmotaGlobal.rules_flag.time_init = 1; + } else { + TasmotaGlobal.rules_flag.time_set = 1; + } + } else { + Rtc.utc_time++; // Increment every second + } Rtc.millis = millis(); - if (!Rtc.user_time_entry) { - if (Rtc.time_synced) { - Rtc.time_synced = false; - last_sync = Rtc.utc_time; - - if (Rtc.restart_time == 0) { - Rtc.restart_time = Rtc.utc_time - TasmotaGlobal.uptime; // save first synced time as restart time - } - - TIME_T tmpTime; - BreakTime(Rtc.utc_time, tmpTime); - RtcTime.year = tmpTime.year + 1970; - Rtc.daylight_saving_time = RuleToTime(Settings.tflag[1], RtcTime.year); - Rtc.standard_time = RuleToTime(Settings.tflag[0], RtcTime.year); - - // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: " D_UTC_TIME " %s, " D_DST_TIME " %s, " D_STD_TIME " %s"), - GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); - - if (Rtc.local_time < START_VALID_TIME) { // 2016-01-01 - TasmotaGlobal.rules_flag.time_init = 1; - } else { - TasmotaGlobal.rules_flag.time_set = 1; - } - } - if ((Rtc.utc_time > (2 * 60 * 60)) && (last_sync < Rtc.utc_time - (2 * 60 * 60))) { // Every two hours a warning - // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 - PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: Not synced")); - last_sync = Rtc.utc_time; - } + if ((Rtc.utc_time > (2 * 60 * 60)) && (last_sync < Rtc.utc_time - (2 * 60 * 60))) { // Every two hours a warning + // Do not use AddLog_P( here (interrupt routine) if syslog or mqttlog is enabled. UDP/TCP will force exception 9 + PrepLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: Not synced")); + last_sync = Rtc.utc_time; } - Rtc.utc_time++; // Increment every second Rtc.local_time = Rtc.utc_time; if (Rtc.local_time > START_VALID_TIME) { // 2016-01-01 int16_t timezone_minutes = Settings.timezone_minutes; @@ -453,10 +457,17 @@ void RtcSecond(void) } RtcTime.year += 1970; + + mutex = false; } -void RtcSetTime(uint32_t epoch) -{ +void RtcSync(void) { + Rtc.time_synced = true; + RtcSecond(); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("RTC: Synced")); +} + +void RtcSetTime(uint32_t epoch) { if (epoch < START_VALID_TIME) { // 2016-01-01 Rtc.user_time_entry = false; TasmotaGlobal.ntp_force_sync = true; @@ -466,8 +477,7 @@ void RtcSetTime(uint32_t epoch) } } -void RtcInit(void) -{ +void RtcInit(void) { Rtc.utc_time = 0; BreakTime(Rtc.utc_time, RtcTime); TickerRtc.attach(1, RtcSecond); diff --git a/tasmota/support_wifi.ino b/tasmota/support_wifi.ino index 1779666cf..4309a7622 100644 --- a/tasmota/support_wifi.ino +++ b/tasmota/support_wifi.ino @@ -705,7 +705,7 @@ void wifiKeepAlive(void) { void WifiPollNtp() { static uint8_t ntp_sync_minute = 0; - if (TasmotaGlobal.global_state.network_down) { return; } + if (TasmotaGlobal.global_state.network_down || Rtc.user_time_entry) { return; } uint8_t uptime_minute = (TasmotaGlobal.uptime / 60) % 60; // 0 .. 59 if ((ntp_sync_minute > 59) && (uptime_minute > 2)) { @@ -722,9 +722,7 @@ void WifiPollNtp() { if (ntp_time > START_VALID_TIME) { Rtc.utc_time = ntp_time; ntp_sync_minute = 60; // Sync so block further requests - Rtc.time_synced = true; - RtcSecond(); -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("NTP: Synced")); + RtcSync(); } else { ntp_sync_minute++; // Try again in next minute } From 4e61d992371b502e23e39f97b4fd3b38f6a44c8c Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 7 Nov 2020 14:34:23 +0100 Subject: [PATCH 021/293] Zigbee don't report Battery for IKEA devices --- tasmota/xdrv_23_zigbee_5_converters.ino | 15 +++++++++++++++ tasmota/xdrv_23_zigbee_8_parsers.ino | 2 ++ 2 files changed, 17 insertions(+) diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 642901f13..7be21aab5 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -2004,4 +2004,19 @@ void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const } } +// +// Check if this device needs Battery reporting +// This is usefule for IKEA device that tend to drain battery quickly when Battery reporting is set +// +bool Z_BatteryReportingDeviceSpecific(uint16_t shortaddr) { + const Z_Device & device = zigbee_devices.findShortAddr(shortaddr); + if (device.manufacturerId) { + String manuf_c(device.manufacturerId); + if (manuf_c.startsWith(F("IKEA"))) { + return false; + } + } + return true; +} + #endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 8dca8c6a7..ba99e5e79 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -614,6 +614,7 @@ void Z_AutoBindDefer(uint16_t shortaddr, uint8_t endpoint, const SBuffer &buf, for (uint32_t i=0; i Date: Sat, 7 Nov 2020 15:43:52 +0100 Subject: [PATCH 022/293] Removed version compatibility check Removed version compatibility check --- CHANGELOG.md | 3 +++ RELEASENOTES.md | 3 +++ tasmota/settings.ino | 51 ----------------------------------- tasmota/support_tasmota.ino | 8 ++---- tasmota/xdrv_01_webserver.ino | 8 +----- 5 files changed, 9 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f2785810..47519072a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ All notable changes to this project will be documented in this file. ### Fixed - NTP fallback server functionality (#9739) +### Removed +- Version compatibility check + ## [Released] ### 9.1.0 20201105 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 962432de8..35e23d22b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -68,3 +68,6 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Fixed - NTP fallback server functionality (#9739) + +### Removed +- Version compatibility check diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 0bf23a3c0..18711b5fc 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -213,57 +213,6 @@ void SetFlashModeDout(void) #endif // ESP8266 } -bool VersionCompatible(void) -{ -#ifdef ESP8266 - - if (Settings.flag3.compatibility_check) { - return true; - } - - eboot_command ebcmd; - eboot_command_read(&ebcmd); - uint32_t start_address = ebcmd.args[0]; - uint32_t end_address = start_address + (ebcmd.args[2] & 0xFFFFF000) + FLASH_SECTOR_SIZE; - uint32_t* buffer = new uint32_t[FLASH_SECTOR_SIZE / 4]; - - uint32_t version[3] = { 0 }; - bool found = false; - for (uint32_t address = start_address; address < end_address; address = address + FLASH_SECTOR_SIZE) { - ESP.flashRead(address, (uint32_t*)buffer, FLASH_SECTOR_SIZE); - if ((address == start_address) && (0x1F == (buffer[0] & 0xFF))) { - version[1] = 0xFFFFFFFF; // Ota file is gzipped and can not be checked for compatibility - found = true; - } else { - for (uint32_t i = 0; i < (FLASH_SECTOR_SIZE / 4); i++) { - version[0] = version[1]; - version[1] = version[2]; - version[2] = buffer[i]; - if ((MARKER_START == version[0]) && (MARKER_END == version[2])) { - found = true; - break; - } - } - } - if (found) { break; } - } - delete[] buffer; - - if (!found) { version[1] = 0; } - - AddLog_P(LOG_LEVEL_DEBUG, PSTR("OTA: Version 0x%08X, Compatible 0x%08X"), version[1], VERSION_COMPATIBLE); - - if (version[1] < VERSION_COMPATIBLE) { - uint32_t eboot_magic = 0; // Abandon OTA result - ESP.rtcUserMemoryWrite(0, (uint32_t*)&eboot_magic, sizeof(eboot_magic)); - return false; - } - -#endif // ESP8266 - - return true; -} - void SettingsBufferFree(void) { if (settings_buffer != nullptr) { diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index e2604ba14..b62c19b39 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1066,12 +1066,8 @@ void Every250mSeconds(void) Response_P(PSTR("{\"" D_CMND_UPGRADE "\":\"")); if (ota_result) { // SetFlashModeDout(); // Force DOUT for both ESP8266 and ESP8285 - if (!VersionCompatible()) { - ResponseAppend_P(PSTR(D_JSON_FAILED " " D_UPLOAD_ERR_14)); - } else { - ResponseAppend_P(PSTR(D_JSON_SUCCESSFUL ". " D_JSON_RESTARTING)); - TasmotaGlobal.restart_flag = 2; - } + ResponseAppend_P(PSTR(D_JSON_SUCCESSFUL ". " D_JSON_RESTARTING)); + TasmotaGlobal.restart_flag = 2; } else { ResponseAppend_P(PSTR(D_JSON_FAILED " %s"), ESPhttpUpdate.getLastErrorString().c_str()); } diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index bc430f626..d567215d5 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -796,7 +796,6 @@ const char kUploadErrors[] PROGMEM = #ifdef USE_RF_FLASH "|" D_UPLOAD_ERR_10 "|" D_UPLOAD_ERR_11 "|" D_UPLOAD_ERR_12 "|" D_UPLOAD_ERR_13 #endif - "|" D_UPLOAD_ERR_14 ; const uint16_t DNS_PORT = 53; @@ -2689,8 +2688,7 @@ void HandleUploadDone(void) #ifdef USE_RF_FLASH if (Web.upload_error < 15) { #else - if ((Web.upload_error < 10) || (14 == Web.upload_error)) { - if (14 == Web.upload_error) { Web.upload_error = 10; } + if (Web.upload_error < 10) { #endif GetTextIndexed(error, sizeof(error), Web.upload_error -1, kUploadErrors); } else { @@ -2978,10 +2976,6 @@ void HandleUploadLoop(void) Web.upload_error = 6; // Upload failed. Enable logging 3 return; } - if (!VersionCompatible()) { - Web.upload_error = 14; // Not compatible - return; - } } if (!Web.upload_error) { AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_UPLOAD D_SUCCESSFUL " %u bytes"), upload.totalSize); From a4e4101cf13f642c29b3acd2d0ad9508fb16d86a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 7 Nov 2020 17:52:56 +0100 Subject: [PATCH 023/293] Update OtaUrl for ESP32 --- tasmota/my_user_config.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index b898addd1..ac0583414 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -90,7 +90,11 @@ #define MQTT_LOG_LEVEL LOG_LEVEL_NONE // [MqttLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) // -- Ota ----------------------------------------- +#ifdef ESP8266 #define OTA_URL "http://ota.tasmota.com/tasmota/release/tasmota.bin.gz" // [OtaUrl] +#else // ESP32 +#define OTA_URL "http://ota.tasmota.com/tasmota32/release/tasmota.bin" // [OtaUrl] +#endif #define OTA_COMPATIBILITY false // [SetOption78] Disable OTA compatibility check // -- MQTT ---------------------------------------- @@ -725,7 +729,7 @@ #define USE_ZIGBEE_COALESCE_ATTR_TIMER 350 // timer to coalesce attribute values (in ms) #define USE_ZIGBEE_MODELID "Tasmota Z2T" // reported "ModelId" (cluster 0000 / attribute 0005) #define USE_ZIGBEE_MANUFACTURER "Tasmota" // reported "Manufacturer" (cluster 0000 / attribute 0004) - #define USE_ZBBRIDGE_TLS // TLS support for zbbridge + #define USE_ZBBRIDGE_TLS // TLS support for zbbridge // -- Other sensors/drivers ----------------------- From faeeb82bb5cf471a521bec4d76d72604e65505e2 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 7 Nov 2020 17:54:17 +0100 Subject: [PATCH 024/293] Zigbee fix ZbBind --- tasmota/xdrv_23_zigbee_A_impl.ino | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index d1a20f219..c6b12a1f5 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -817,7 +817,6 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } // params - uint16_t srcDevice = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid uint16_t dstDevice = BAD_SHORTADDR; // BAD_SHORTADDR is broadcast, so considered invalid uint64_t dstLongAddr = 0; uint8_t endpoint = 0x00; // 0x00 is invalid for the src endpoint @@ -884,7 +883,7 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind } else { buf.add8(ZDO_BIND_REQ); } - buf.add16(srcDevice); + buf.add16(src_device.shortaddr); buf.add64(srcLongAddr); buf.add8(endpoint); buf.add16(cluster); @@ -916,7 +915,7 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind buf.add16(toGroup); } - EZ_SendZDO(srcDevice, unbind ? ZDO_UNBIND_REQ : ZDO_BIND_REQ, buf.buf(), buf.len()); + EZ_SendZDO(src_device.shortaddr, unbind ? ZDO_UNBIND_REQ : ZDO_BIND_REQ, buf.buf(), buf.len()); #endif // USE_ZIGBEE_EZSP ResponseCmndDone(); From 255a489127e3b4d143a0d7db2d2b3774836bee67 Mon Sep 17 00:00:00 2001 From: Staars Date: Sat, 7 Nov 2020 18:54:04 +0100 Subject: [PATCH 025/293] prepare API-changes with ESP-idf>4 --- lib/libesp32/ESP32-Ethernet/src/ETH.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/libesp32/ESP32-Ethernet/src/ETH.cpp b/lib/libesp32/ESP32-Ethernet/src/ETH.cpp index 2b3dd4390..68e7a0593 100644 --- a/lib/libesp32/ESP32-Ethernet/src/ETH.cpp +++ b/lib/libesp32/ESP32-Ethernet/src/ETH.cpp @@ -204,8 +204,13 @@ IPAddress ETHClass::gatewayIP() IPAddress ETHClass::dnsIP(uint8_t dns_no) { +#ifdef ESP_IDF_VERSION_VAL //idf_version.h header file is only available in ESP-IDF v4.0 -> this is equal to: #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0) + const ip_addr_t *dns_ip = dns_getserver(dns_no); + return IPAddress(dns_ip->u_addr.ip4.addr); +#else ip_addr_t dns_ip = dns_getserver(dns_no); return IPAddress(dns_ip.u_addr.ip4.addr); +#endif } IPAddress ETHClass::broadcastIP() From 9efa27cbced8bf64ee013eb9193899cac3e2f8b5 Mon Sep 17 00:00:00 2001 From: Staars Date: Sat, 7 Nov 2020 18:55:05 +0100 Subject: [PATCH 026/293] prevent compile error with ESP-idf>4 --- lib/libesp32/NimBLE-Arduino/src/FreeRTOS.cpp | 2 +- lib/libesp32/NimBLE-Arduino/src/FreeRTOS.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.cpp b/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.cpp index ff1061c10..4ebab3958 100644 --- a/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.cpp +++ b/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.cpp @@ -264,7 +264,7 @@ void FreeRTOS::Semaphore::setName(std::string name) { * @param [in] length The amount of storage to allocate for the ring buffer. * @param [in] type The type of buffer. One of RINGBUF_TYPE_NOSPLIT, RINGBUF_TYPE_ALLOWSPLIT, RINGBUF_TYPE_BYTEBUF. */ -#ifdef ESP_IDF_VERSION //Quick hack to detect if using IDF version that replaced ringbuf_type_t +#if defined(ESP_IDF_VERSION) && !defined(ESP_IDF_VERSION_VAL) //Quick hack to detect if using IDF version that replaced ringbuf_type_t, ESP_IDF_VERSION_VAL is for IDF>4.0.0 Ringbuffer::Ringbuffer(size_t length, RingbufferType_t type) { #else Ringbuffer::Ringbuffer(size_t length, ringbuf_type_t type) { diff --git a/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.h b/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.h index 2f3d9386c..f93f0b1a0 100644 --- a/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.h +++ b/lib/libesp32/NimBLE-Arduino/src/FreeRTOS.h @@ -68,7 +68,7 @@ public: */ class Ringbuffer { public: -#ifdef ESP_IDF_VERSION //Quick hack to detect if using IDF version that replaced ringbuf_type_t +#if defined(ESP_IDF_VERSION) && !defined(ESP_IDF_VERSION_VAL) //Quick hack to detect if using IDF version that replaced ringbuf_type_t, ESP_IDF_VERSION_VAL is for IDF>4.0.0 Ringbuffer(size_t length, RingbufferType_t type = RINGBUF_TYPE_NOSPLIT); #else Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); From 61c5e3bc2c030369bc25a9f4176bd3ce7202f1fc Mon Sep 17 00:00:00 2001 From: Federico Leoni Date: Sat, 7 Nov 2020 18:08:07 -0300 Subject: [PATCH 027/293] TuyaMCU Update 1/3 --- tasmota/tasmota.h | 3 +- tasmota/xdrv_01_webserver.ino | 50 ++----- tasmota/xdrv_16_tuyamcu.ino | 270 +++++++++++++++++++++++++--------- 3 files changed, 208 insertions(+), 115 deletions(-) diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 9484b8f2a..2a479c086 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -379,11 +379,12 @@ enum TuyaSupportedFunctions { TUYA_MCU_FUNC_NONE, TUYA_MCU_FUNC_REL1_INV = 41, TUYA_MCU_FUNC_REL2_INV, TUYA_MCU_FUNC_REL3_INV, TUYA_MCU_FUNC_REL4_INV, TUYA_MCU_FUNC_REL5_INV, TUYA_MCU_FUNC_REL6_INV, TUYA_MCU_FUNC_REL7_INV, TUYA_MCU_FUNC_REL8_INV, TUYA_MCU_FUNC_LOWPOWER_MODE = 51, - TUYA_MCU_FUNC_FAN3 = 61, TUYA_MCU_FUNC_FAN4, TUYA_MCU_FUNC_FAN5, TUYA_MCU_FUNC_FAN6, + TUYA_MCU_FUNC_ENUM1 = 61, TUYA_MCU_FUNC_ENUM2, TUYA_MCU_FUNC_ENUM3, TUYA_MCU_FUNC_ENUM4, TUYA_MCU_FUNC_MOTOR_DIR = 97, TUYA_MCU_FUNC_ERROR = 98, TUYA_MCU_FUNC_DUMMY = 99, TUYA_MCU_FUNC_LAST = 255 + // IDs from 230 to 234 are reserved for internal use }; #endif // _TASMOTA_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index d567215d5..dd1c9abc8 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -1485,7 +1485,6 @@ void HandleRoot(void) } #ifdef USE_TUYA_MCU if (IsModuleTuya()) { - uint8_t modeset = 0; if (AsModuleTuyaMS()) { WSContentSend_P(HTTP_TABLE100); WSContentSend_P(PSTR("
")); @@ -1493,18 +1492,6 @@ void HandleRoot(void) WSContentSend_P(HTTP_DEVICE_CONTROL, 26, TasmotaGlobal.devices_present + 1, (strlen(SettingsText(SET_BUTTON1 + TasmotaGlobal.devices_present))) ? SettingsText(SET_BUTTON1 + TasmotaGlobal.devices_present) : stemp, ""); WSContentSend_P(PSTR("")); - modeset = 1; - } - if (IsTuyaFanCtrl()) { - uint8_t device = TasmotaGlobal.devices_present + modeset; - WSContentSend_P(HTTP_TABLE100); - WSContentSend_P(PSTR("
")); - for (uint32_t i = device + 1; i <= (TuyaFanSpeeds() + device) + 1; i++) { - snprintf_P(stemp, sizeof(stemp), PSTR("%d"), i - (device + 1)); - WSContentSend_P(HTTP_DEVICE_CONTROL, 16, i, - (strlen(SettingsText(SET_BUTTON1 + i))) ? SettingsText(SET_BUTTON1 + i) : stemp, ""); - } - WSContentSend_P(PSTR("")); } } #endif // USE_TUYA_MCU @@ -1580,29 +1567,15 @@ bool HandleRootStatusRefresh(void) #endif // USE_SONOFF_IFAN #ifdef USE_TUYA_MCU if (IsModuleTuya()) { - uint8_t FuncIdx = 0; - if (device <= TasmotaGlobal.devices_present) { - ExecuteCommandPower(device, POWER_TOGGLE, SRC_IGNORE); - } else { - if (AsModuleTuyaMS() && device == TasmotaGlobal.devices_present + 1) { - uint8_t dpId = TuyaGetDpId(TUYA_MCU_FUNC_MODESET); - snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend4 %d,%d"), dpId, !TuyaModeSet()); - ExecuteCommand(svalue, SRC_WEBGUI); - } - if (IsTuyaFanCtrl()) { - uint8_t dpId = 0; - for (uint32_t i = 0; i <= 3; i++) { // Tuya Function FAN3 to FAN6 - if (TuyaGetDpId(TUYA_MCU_FUNC_FAN3 + i) != 0) { - dpId = TuyaGetDpId(TUYA_MCU_FUNC_FAN3 + i); - } - } - if ((AsModuleTuyaMS() && device != TasmotaGlobal.devices_present + 1) || !AsModuleTuyaMS()) { - if (AsModuleTuyaMS()) {FuncIdx = 1;} - snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend2 %d,%d"), dpId, (device - (TasmotaGlobal.devices_present + FuncIdx) - 1)); - ExecuteCommand(svalue, SRC_WEBGUI); - } - } + if (device <= TasmotaGlobal.devices_present) { + ExecuteCommandPower(device, POWER_TOGGLE, SRC_IGNORE); + } else { + if (AsModuleTuyaMS() && device == TasmotaGlobal.devices_present + 1) { + uint8_t dpId = TuyaGetDpId(TUYA_MCU_FUNC_MODESET); + snprintf_P(svalue, sizeof(svalue), PSTR("Tuyasend4 %d,%d"), dpId, !TuyaModeSet()); + ExecuteCommand(svalue, SRC_WEBGUI); } + } } else { #endif // USE_TUYA_MCU #ifdef USE_SHUTTER @@ -1707,14 +1680,9 @@ bool HandleRootStatusRefresh(void) } #ifdef USE_TUYA_MCU if (IsModuleTuya()) { - uint32_t fanspeed = TuyaFanState(); uint32_t modeset = TuyaModeSet(); - if (IsTuyaFanCtrl() && !AsModuleTuyaMS()) { - WSContentSend_P(PSTR("
" D_JSON_IRHVAC_FANSPEED ": %d
"), fanspeed); - } else if (!IsTuyaFanCtrl() && AsModuleTuyaMS()) { + if (AsModuleTuyaMS()) { WSContentSend_P(PSTR("
" D_JSON_IRHVAC_MODE ": %d
"), modeset); - } else if (IsTuyaFanCtrl() && AsModuleTuyaMS()) { - WSContentSend_P(PSTR("
" D_JSON_IRHVAC_MODE ": %d - " D_JSON_IRHVAC_FANSPEED ": %d
"), modeset, fanspeed); } } #endif // USE_TUYA_MCU diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 77b97be17..812993b8d 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -56,8 +56,9 @@ TasmotaSerial *TuyaSerial = nullptr; struct TUYA { uint16_t Levels[5] = {0,0,0,0,0}; // Array to store the values of TuyaMCU channels - uint16_t Snapshot[5] = {0,0,0,0,0}; // Array to store a snapshot of Tasmota actual values for channels - char HSBColor[13]; // Stores HSB Color string in Hex format + uint16_t Snapshot[5] = {0,0,0,0,0}; // Array to store a snapshot of Tasmota actual channel values + uint16_t EnumState[4] = {0,0,0,0}; // Array to store up to four Enum type 4 values + char RGBColor[7] = "000000"; // Stores RGB Color string in Hex format uint16_t CTMin = 153; // Minimum CT level allowed - When SetOption82 is enabled will default to 200 uint16_t CTMax = 500; // Maximum CT level allowed - When SetOption82 is enabled will default to 380 bool ModeSet = false; // Controls 0 - Single Tone light, 1 - RGB Light @@ -81,11 +82,15 @@ struct TUYA { bool ignore_tuyareceived = false; // When a modeset changes ignore stat } Tuya; +#define D_CMND_TUYARGB "TuyaRGB" +#define D_CMND_ENUM "Enum" +#define D_CMND_ENUM_LIST "EnumList" + const char kTuyaCommand[] PROGMEM = "|" // No prefix - D_CMND_TUYA_MCU "|" D_CMND_TUYA_MCU_SEND_STATE; + D_CMND_TUYA_MCU "|" D_CMND_TUYA_MCU_SEND_STATE "|" D_CMND_TUYARGB "|" D_CMND_ENUM "|" D_CMND_ENUM_LIST; void (* const TuyaCommand[])(void) PROGMEM = { - &CmndTuyaMcu, &CmndTuyaSend + &CmndTuyaMcu, &CmndTuyaSend, &CmndTuyaRgb, &CmndEnum, &CmndEnumList }; /*********************************************************************************************\ @@ -101,34 +106,11 @@ bool AsModuleTuyaMS(void) // ModeSet Layout return ((TasmotaGlobal.light_type > LT_RGB) && TuyaGetDpId(TUYA_MCU_FUNC_MODESET) != 0); } -bool IsTuyaFanCtrl(void) // Fan Speed Controller Layout -{ - return ((TuyaGetDpId(TUYA_MCU_FUNC_FAN3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_FAN4) != 0) || - (TuyaGetDpId(TUYA_MCU_FUNC_FAN5) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_FAN6) != 0)); -} - bool TuyaModeSet(void) // ModeSet Status { return Tuya.ModeSet; } -uint8_t TuyaFanSpeeds(void) // Number of Fan Speeds for WebUI -{ - uint8_t FanSpeeds = 0; - for (uint32_t i = 0; i <= 3; i++) { - if (TuyaGetDpId(TUYA_MCU_FUNC_FAN3 + i) != 0) { - FanSpeeds = i + 2; - } - } - return FanSpeeds; -} - -uint8_t TuyaFanState(void) // Fan Speed Status -{ - return Tuya.FanState; -} -// Web Interface - /* TuyaSend dpId,data @@ -137,7 +119,7 @@ TuyaSend1 11,1 -> Sends boolean (Type 1) data 0/1 to dpId 11 (Max data length 1 TuyaSend2 11,100 -> Sends integer (Type 2) data 100 to dpId 11 (Max data length 4 bytes) TuyaSend2 11,0xAABBCCDD -> Sends 4 bytes (Type 2) data to dpId 11 (Max data length 4 bytes) TuyaSend3 11,ThisIsTheData -> Sends the supplied string (Type 3) to dpId 11 ( Max data length not-known) -TuyaSend4 11,1 -> Sends enum (Type 4) data 0/1/2/3/4/5 to dpId 11 (Max data length 1 bytes) +TuyaSend4 11,1 -> Sends enum (Type 4) data 0/1/2/3/4/5/6/7/8/9 to dpId 11 (Max data length 1 bytes) */ void CmndTuyaSend(void) { @@ -149,7 +131,7 @@ void CmndTuyaSend(void) { } else if (XdrvMailbox.index == 8) { TuyaRequestState(8); } else if (XdrvMailbox.index == 9) { // TuyaSend Topic Toggle - if (Settings.tuyamcu_topic) { Settings.tuyamcu_topic = 0; } else { Settings.tuyamcu_topic = 1; } + Settings.tuyamcu_topic = !Settings.tuyamcu_topic; AddLog_P(LOG_LEVEL_INFO, PSTR("TYA: TuyaMCU Stat Topic %s"), (Settings.tuyamcu_topic ? PSTR("enabled") : PSTR("disabled"))); } else { @@ -194,25 +176,26 @@ void CmndTuyaMcu(void) { } if (TuyaFuncIdValid(parm[0])) { - // TuyaAddMcuFunc(parm[0], parm[1]); - // TasmotaGlobal.restart_flag = 2; - // } else { - // AddLog_P(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); - // } bool DualDim; if (TUYA_MCU_FUNC_DIMMER2 == parm[0] && parm[1] != 0) { if (TuyaGetDpId(TUYA_MCU_FUNC_DIMMER) != 0) { DualDim = true; } } else if (TUYA_MCU_FUNC_DIMMER == parm[0] && parm[1] != 0) { if (TuyaGetDpId(TUYA_MCU_FUNC_DIMMER2) != 0) { DualDim = true; } } else if ((TUYA_MCU_FUNC_DIMMER == parm[0] && parm[1] == 0) || (TUYA_MCU_FUNC_DIMMER2 == parm[0] && parm[1] == 0)) { DualDim = false; }; - if (DualDim) { - if (TuyaGetDpId(TUYA_MCU_FUNC_CT) != 0) { TuyaAddMcuFunc(TUYA_MCU_FUNC_CT, 0); } // If the second dimmer is enabled CT, RGB or WHITE function must be removed + if (DualDim) { // If the second dimmer is enabled CT, RGB or WHITE function must be removed + if (TuyaGetDpId(TUYA_MCU_FUNC_CT) != 0) { TuyaAddMcuFunc(TUYA_MCU_FUNC_CT, 0); } if (TuyaGetDpId(TUYA_MCU_FUNC_RGB) != 0) { TuyaAddMcuFunc(TUYA_MCU_FUNC_RGB, 0); } if (TuyaGetDpId(TUYA_MCU_FUNC_WHITE) != 0) { TuyaAddMcuFunc(TUYA_MCU_FUNC_WHITE, 0); } Settings.flag3.pwm_multi_channels = 1; } else { Settings.flag3.pwm_multi_channels = 0; } TuyaAddMcuFunc(parm[0], parm[1]); TasmotaGlobal.restart_flag = 2; + if (TUYA_MCU_FUNC_RGB == parm[0] && parm[1] != 0) { + // if (Settings.tuya_fnid_map[235].dpid > 3) { + // Settings.tuya_fnid_map[235].fnid = 235; + // Settings.tuya_fnid_map[235].dpid = 0; + // } + } } else { AddLog_P(LOG_LEVEL_ERROR, PSTR("TYA: TuyaMcu Invalid function id=%d"), parm[0]); } @@ -232,6 +215,99 @@ void CmndTuyaMcu(void) { ResponseAppend_P(PSTR("]}")); } +void CmndTuyaRgb(void) { // Command to control the RGB format + + uint16_t payload = XdrvMailbox.payload; + + if (XdrvMailbox.data_len > 0) { + if (payload < 0 || payload > 3 || TuyaGetDpId(TUYA_MCU_FUNC_RGB) == 0) { + return; + } else { + if (payload != Settings.tuya_fnid_map[230].dpid) { // fnid 230 reserved for RGB + Settings.tuya_fnid_map[230].fnid = 230; + Settings.tuya_fnid_map[230].dpid = payload; + } + } + } + Response_P(PSTR("{\"" D_CMND_TUYARGB "\":%d}"), Settings.tuya_fnid_map[230].dpid); +} + +void CmndEnum(void) { // Command to control up to four type 4 Enum + uint16_t EnumIdx = XdrvMailbox.index; + int32_t payload = XdrvMailbox.payload; + + if (EnumIdx > 4 || TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + (EnumIdx-1)) == 0) { + return; + } + + if (XdrvMailbox.data_len > 0) { + if (payload < 0 || payload > Settings.tuya_fnid_map[EnumIdx + 230].dpid ) { + return; + } else { + if (payload != Tuya.EnumState[EnumIdx-1]) { + Tuya.EnumState[EnumIdx-1] = payload; + TuyaSendEnum(TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + (EnumIdx-1)), payload); + } + Response_P(PSTR("{\"" D_CMND_ENUM "%d\":%d}"), EnumIdx, Tuya.EnumState[EnumIdx-1]); + } + } else { + Response_P(PSTR("{\"" D_CMND_ENUM "\":")); + bool added = false; + for (uint8_t i = 0; i <= 3; i++) { + if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { + if (added) { + ResponseAppend_P(PSTR(",")); + } + ResponseAppend_P(PSTR("{\"Enum%d\":%d}"), i + 1, Tuya.EnumState[i]); // Returns the avtual values of Enum as list + added = true; + } + } + ResponseAppend_P(PSTR("}")); + } +} + +void CmndEnumList(void) { // Command to declare the number of items in list for up to four type 4 enum. Min = 0, Max = 9, Default = 1 + + if (XdrvMailbox.data_len > 0) { + char *p; + uint8_t i = 0; + uint8_t parm[3] = { 0 }; + for (char *str = strtok_r(XdrvMailbox.data, ", ", &p); str && i < 2; str = strtok_r(nullptr, ", ", &p)) { + parm[i] = strtoul(str, nullptr, 0); + i++; + } + if ((parm[0] >= 1 && parm[0] <= 4) && (parm[1] >= 1 && parm[1] <= 9)) { + uint16_t idx = parm[0] + 230; // fnid 231, 232, 233 and 234 are reserved for enum + Settings.tuya_fnid_map[idx].fnid = idx; + Settings.tuya_fnid_map[idx].dpid = parm[1]; + } + } + if ((TuyaGetDpId(TUYA_MCU_FUNC_ENUM1) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || + (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM4) != 0)) { + Response_P(PSTR("{\"" D_CMND_ENUM_LIST "\":")); + bool added = false; + for (uint8_t i = 0; i <= 3; i++) { + if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { + if (added) { + ResponseAppend_P(PSTR(",")); + if ( Settings.tuya_fnid_map[i + 231].dpid > 9 ) { Settings.tuya_fnid_map[i + 231].dpid = 1; } // default to 1 it the value exceed the range + } + ResponseAppend_P(PSTR("{\"Enum%d\":%d}"), i + 1, Settings.tuya_fnid_map[i + 231].dpid); // fnid 231, 232, 233 and 234 are reserved for Enum + added = true; + } + } + ResponseAppend_P(PSTR("}")); + } else { return; } +} + +int StrCmpNoCase(char const *Str1, char const *Str2) // Compare RGB case sensistive strings +{ + for (;; Str1++, Str2++) { + int StrCmp = tolower((unsigned char)*Str1) - tolower((unsigned char)*Str2); + if (StrCmp != 0 || !*Str1) { return StrCmp; } + } +} + /*********************************************************************************************\ * Internal Functions \*********************************************************************************************/ @@ -274,7 +350,6 @@ void UpdateDevices() { } else if (fnId >= TUYA_MCU_FUNC_REL1_INV && fnId <= TUYA_MCU_FUNC_REL8_INV) { // Inverted Relay bitSet(TasmotaGlobal.rel_inverted, fnId - TUYA_MCU_FUNC_REL1_INV); } - } } } @@ -285,11 +360,10 @@ inline bool TuyaFuncIdValid(uint8_t fnId) { (fnId >= TUYA_MCU_FUNC_DIMMER && fnId <= TUYA_MCU_FUNC_REPORT2) || (fnId >= TUYA_MCU_FUNC_POWER && fnId <= TUYA_MCU_FUNC_BATTERY_PERCENTAGE) || (fnId >= TUYA_MCU_FUNC_REL1_INV && fnId <= TUYA_MCU_FUNC_REL8_INV) || - (fnId >= TUYA_MCU_FUNC_FAN3 && fnId <= TUYA_MCU_FUNC_FAN6) || + (fnId >= TUYA_MCU_FUNC_ENUM1 && fnId <= TUYA_MCU_FUNC_ENUM4) || (fnId >= TUYA_MCU_FUNC_MOTOR_DIR && fnId <= TUYA_MCU_FUNC_DUMMY) || (fnId == TUYA_MCU_FUNC_LOWPOWER_MODE); } - uint8_t TuyaGetFuncId(uint8_t dpid) { for (uint8_t i = 0; i < MAX_TUYA_FUNCTIONS; i++) { if (Settings.tuya_fnid_map[i].dpid == dpid) { @@ -413,7 +487,7 @@ bool TuyaSetChannels(void) uint16_t hue, TuyaData; uint8_t sat, bri; uint8_t TuyaIdx = 0; - char hex_char[13]; + char hex_char[15]; bool noupd = false; bool LightMode = TuyaGetDpId(TUYA_MCU_FUNC_MODESET) != 0; uint8_t idx = 0; @@ -457,17 +531,45 @@ bool TuyaSetChannels(void) if (TasmotaGlobal.light_type >= LT_RGB) { + // There are two types of rgb format, configure the correct one using TuyaRGB command. + // The most common is 0HUE0SAT0BRI0 and the less common is RRGGBBFFFF6464 and sometimes both are case sensitive: + // 0 type 1 Uppercase - 00DF00DC0244 + // 1 Type 1 Lowercase - 008003e8037a + // 2 Type 2 Uppercase - 00FF00FFFF6464 + // 3 Type 2 Lowercase - 00e420ffff6464 + + uint8_t RGBType = Settings.tuya_fnid_map[230].dpid; // Select the type of RGB payload + char scolor[7]; + LightGetColor(scolor, 1); // Always get the color in hex format light_state.getHSB(&hue, &sat, &bri); sat = changeUIntScale(sat, 0, 255, 0, 100); bri = changeUIntScale(bri, 0, 255, 0, 100); - if (hue != Tuya.Snapshot[2] || sat != Tuya.Snapshot[3] || bri != Tuya.Snapshot[4]) { + + if ((RGBType > 1 && (StrCmpNoCase(scolor, Tuya.RGBColor) != 0)) || (RGBType <= 1 && ((hue != Tuya.Snapshot[2]) || + (sat != Tuya.Snapshot[3]) || (bri != Tuya.Snapshot[4])))) { + if ((LightMode && Tuya.ModeSet) || LT_RGB == TasmotaGlobal.light_type) { - snprintf_P(hex_char, sizeof(hex_char), PSTR("%04X%04X%04X"), hue, sat * 10, bri * 10); // Create a TuyaMCU readable RGB payload + if (TuyaGetDpId(TUYA_MCU_FUNC_RGB) != 0) { + switch (RGBType) { + case 0: // Uppercase Type 1 payload + snprintf_P(hex_char, sizeof(hex_char), PSTR("%04X%04X%04X"), hue, sat * 10, bri * 10); + break; + case 1: // Lowercase Type 1 payload + snprintf_P(hex_char, sizeof(hex_char), PSTR("%04x%04x%04x"), hue, sat * 10, bri * 10); + break; + case 2: // Uppercase Type 2 payload + snprintf_P(hex_char, sizeof(hex_char), PSTR("%sFFFF6464"), scolor); + break; + case 3: // Lowercase Type 2 payload + snprintf_P(hex_char, sizeof(hex_char), PSTR("%sffff6464"), LowerCase(scolor, scolor)); + break; + } + memcpy_P(Tuya.RGBColor, scolor, strlen(scolor)); + Tuya.Snapshot[2] = hue; + Tuya.Snapshot[3] = sat; + Tuya.Snapshot[4] = bri; + } LightSerialDuty(0, &hex_char[0], 3); - memcpy_P(Tuya.HSBColor, hex_char, strlen(hex_char)); - Tuya.Snapshot[2] = hue; - Tuya.Snapshot[3] = sat; - Tuya.Snapshot[4] = bri; } } } @@ -512,7 +614,7 @@ void LightSerialDuty(uint16_t duty, char *hex_char, uint8_t TuyaIdx) } AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Send dim skipped value %d for dpid %d"), duty, dpid); // due to 0 or already set } else { - AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Cannot set dimmer. Dimmer Id unknown")); // + AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: Cannot set dimmer. Dimmer Id unknown")); } } @@ -564,7 +666,6 @@ void TuyaProcessStatePacket(void) { fnId = TuyaGetFuncId(Tuya.buffer[dpidStart]); AddLog_P(LOG_LEVEL_DEBUG, PSTR("TYA: fnId=%d is set for dpId=%d"), fnId, Tuya.buffer[dpidStart]); - // if (TuyaFuncIdValid(fnId)) { if (Tuya.buffer[dpidStart + 1] == 1) { // Data Type 1 if (fnId >= TUYA_MCU_FUNC_REL1 && fnId <= TUYA_MCU_FUNC_REL8) { @@ -590,10 +691,6 @@ void TuyaProcessStatePacket(void) { bool tuya_energy_enabled = (XNRG_32 == TasmotaGlobal.energy_driver); uint16_t packetValue = Tuya.buffer[dpidStart + 6] << 8 | Tuya.buffer[dpidStart + 7]; uint8_t dimIndex; - if ((fnId == TUYA_MCU_FUNC_FAN3) || (fnId == TUYA_MCU_FUNC_FAN4) || - (fnId == TUYA_MCU_FUNC_FAN5) || (fnId == TUYA_MCU_FUNC_FAN6)) { - Tuya.FanState = packetValue; - } if (fnId == TUYA_MCU_FUNC_DIMMER || fnId == TUYA_MCU_FUNC_REPORT1) { dimIndex = 0; } @@ -664,33 +761,62 @@ void TuyaProcessStatePacket(void) { } else if (Tuya.buffer[dpidStart + 1] == 3) { // Data Type 3 const unsigned char *dpData = (unsigned char*)&Tuya.buffer[dpidStart + 4]; - if ((TuyaGetDpId(TUYA_MCU_FUNC_RGB) != 0) && dpDataLen == 12) { //Decode the RGB hex and transmit HSBCOLOR command + if ((TuyaGetDpId(TUYA_MCU_FUNC_RGB) != 0)) { - //Tuya.ignore_dim = true; - char RgbData[13]; - snprintf_P(RgbData, sizeof(RgbData), PSTR("%.*s"), dpDataLen, dpData); + uint8_t RGBType = Settings.tuya_fnid_map[230].dpid; // Select the type of hex configured + char RgbData[15]; + char RGB[7]; char HSB1[5], HSB2[5], HSB3[5]; - snprintf_P(HSB1, sizeof(HSB1), PSTR("%.4s\n"), &RgbData[0]); - snprintf_P(HSB2, sizeof(HSB2), PSTR("%.4s\n"), &RgbData[4]); - snprintf_P(HSB3, sizeof(HSB3), PSTR("%.4s\n"), &RgbData[8]); - - if ((Tuya.Snapshot[2] != ((int)strtol(HSB1, NULL, 16)) || - Tuya.Snapshot[3] != ((int)strtol(HSB2, NULL, 16)) / 10 || Tuya.Snapshot[4] !=((int)strtol(HSB3, NULL, 16)) / 10)) { + scmnd[0] = '\0'; + snprintf_P(RgbData, sizeof(RgbData), PSTR("%.*s"), dpDataLen, dpData); + if (RGBType <= 1 && dpDataLen == 12) { + snprintf_P(HSB1, sizeof(HSB1), PSTR("%.4s\n"), &RgbData[0]); + snprintf_P(HSB2, sizeof(HSB2), PSTR("%.4s\n"), &RgbData[4]); + snprintf_P(HSB3, sizeof(HSB3), PSTR("%.4s\n"), &RgbData[8]); + if ((Tuya.Snapshot[2] != ((int)strtol(HSB1, NULL, 16)) || + Tuya.Snapshot[3] != ((int)strtol(HSB2, NULL, 16)) / 10 || Tuya.Snapshot[4] !=((int)strtol(HSB3, NULL, 16)) / 10)) { + Tuya.Snapshot[2] = ((int)strtol(HSB1, NULL, 16)); + Tuya.Snapshot[3] = ((int)strtol(HSB2, NULL, 16)) / 10; + Tuya.Snapshot[4] = ((int)strtol(HSB3, NULL, 16)) / 10; snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_HSBCOLOR " %d,%d,%d"), ((int)strtol(HSB1, NULL, 16)), ((int)strtol(HSB2, NULL, 16)) / 10, ((int)strtol(HSB3, NULL, 16)) / 10); - ExecuteCommand(scmnd, SRC_SWITCH); + } + } + if (RGBType > 1 && dpDataLen == 14) { + snprintf_P(RGB, sizeof(RGB), PSTR("%.6s\n"), &RgbData[0]); + if (StrCmpNoCase(RGB, Tuya.RGBColor) != 0) { + snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_COLOR " %s"), RGB); + memcpy_P(Tuya.RGBColor, RGB, strlen(RGB)); + } - memcpy_P(Tuya.HSBColor, RgbData, strlen(RgbData)); + } + if (scmnd[0] != '\0') { + ExecuteCommand(scmnd, SRC_SWITCH); } } } else if (Tuya.buffer[dpidStart + 1] == 4) { // Data Type 4 const unsigned char *dpData = (unsigned char*)&Tuya.buffer[dpidStart + 4]; - if (fnId == TUYA_MCU_FUNC_MODESET) { // toggle light type + + if ((fnId == TUYA_MCU_FUNC_MODESET)) { // Toggle light type Tuya.ModeSet = dpData[0]; Tuya.Levels[3] = dpData[0]; } + if ((fnId >= TUYA_MCU_FUNC_ENUM1) && (fnId <= TUYA_MCU_FUNC_ENUM4)) { + // if ((fnId == TUYA_MCU_FUNC_ENUM1) || (fnId == TUYA_MCU_FUNC_ENUM2) || + // (fnId == TUYA_MCU_FUNC_ENUM3) || (fnId == TUYA_MCU_FUNC_ENUM4)) { + for (uint8_t i = 0; i <= 3; i++) { + bool noupdate = false; + if ((TUYA_MCU_FUNC_ENUM1 + i) == fnId) { + if (Tuya.EnumState[i] != dpData[0]) { + Tuya.EnumState[i] = dpData[0]; + snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_ENUM "%d %d"), i+1, dpData[0]); + ExecuteCommand(scmnd, SRC_SWITCH); + } + } + } + } } dpidStart += dpDataLen + 4; } @@ -912,7 +1038,7 @@ void TuyaSerialInput(void) uint16_t DataVal = 0; uint8_t dpId = 0; uint8_t dpDataType = 0; - char DataStr[13]; + char DataStr[15]; if (len > 0) { ResponseAppend_P(PSTR(",\"CmndData\":\"%s\""), ToHex_P((unsigned char*)&Tuya.buffer[6], len, hex_char, sizeof(hex_char))); @@ -920,7 +1046,6 @@ void TuyaSerialInput(void) //55 AA 03 07 00 0D 01 04 00 01 02 02 02 00 04 00 00 00 1A 40 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 uint8_t dpidStart = 6; - //snprintf_P(DataStr, sizeof(DataStr), PSTR("000000000000")); while (dpidStart + 4 < Tuya.byte_counter) { dpId = Tuya.buffer[dpidStart]; dpDataType = Tuya.buffer[dpidStart + 1]; @@ -969,12 +1094,11 @@ void TuyaSerialInput(void) if (dpId != 0 && Settings.tuyamcu_topic) { // Publish a /STAT Topic ready to use for any home automation system if (!Tuya.SuspendTopic) { - char scommand[10]; - snprintf_P(scommand, sizeof(scommand), PSTR("TuyaSend%d"), dpDataType); - - if (dpDataType != 3 && dpDataType != 5) { Response_P(PSTR("%d,%u"), dpId, DataVal); } - else { Response_P(PSTR("%d,%s"), dpId, DataStr); } - MqttPublishPrefixTopic_P(STAT, (PSTR("%s"), scommand)); + char scommand[13]; + snprintf_P(scommand, sizeof(scommand), PSTR("DpType%uId%u"), dpDataType, dpId); + if (dpDataType != 3 && dpDataType != 5) { Response_P(PSTR("%u"), DataVal); } + else { Response_P(PSTR("%s"), DataStr); } + MqttPublishPrefixTopic_P(STAT, scommand); } } From 345f27bf17ed6e80aad0d3f63bd1c2b28e1d2d82 Mon Sep 17 00:00:00 2001 From: Federico Leoni Date: Sat, 7 Nov 2020 18:40:43 -0300 Subject: [PATCH 028/293] Fix_Json --- tasmota/xdrv_16_tuyamcu.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 812993b8d..0c3b3bc33 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -251,18 +251,18 @@ void CmndEnum(void) { // Command to control up to four type 4 Enum Response_P(PSTR("{\"" D_CMND_ENUM "%d\":%d}"), EnumIdx, Tuya.EnumState[EnumIdx-1]); } } else { - Response_P(PSTR("{\"" D_CMND_ENUM "\":")); + Response_P(PSTR("{\"" D_CMND_ENUM "\":{")); bool added = false; for (uint8_t i = 0; i <= 3; i++) { if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { if (added) { ResponseAppend_P(PSTR(",")); } - ResponseAppend_P(PSTR("{\"Enum%d\":%d}"), i + 1, Tuya.EnumState[i]); // Returns the avtual values of Enum as list + ResponseAppend_P(PSTR("\"Enum%d\":%d"), i + 1, Tuya.EnumState[i]); // Returns the avtual values of Enum as list added = true; } } - ResponseAppend_P(PSTR("}")); + ResponseAppend_P(PSTR("}}")); } } @@ -284,7 +284,7 @@ void CmndEnumList(void) { // Command to declare the number of items in list for } if ((TuyaGetDpId(TUYA_MCU_FUNC_ENUM1) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM4) != 0)) { - Response_P(PSTR("{\"" D_CMND_ENUM_LIST "\":")); + Response_P(PSTR("{\"" D_CMND_ENUM_LIST "\":{")); bool added = false; for (uint8_t i = 0; i <= 3; i++) { if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { @@ -292,11 +292,11 @@ void CmndEnumList(void) { // Command to declare the number of items in list for ResponseAppend_P(PSTR(",")); if ( Settings.tuya_fnid_map[i + 231].dpid > 9 ) { Settings.tuya_fnid_map[i + 231].dpid = 1; } // default to 1 it the value exceed the range } - ResponseAppend_P(PSTR("{\"Enum%d\":%d}"), i + 1, Settings.tuya_fnid_map[i + 231].dpid); // fnid 231, 232, 233 and 234 are reserved for Enum + ResponseAppend_P(PSTR("\"Enum%d\":%d"), i + 1, Settings.tuya_fnid_map[i + 231].dpid); // fnid 231, 232, 233 and 234 are reserved for Enum added = true; } } - ResponseAppend_P(PSTR("}")); + ResponseAppend_P(PSTR("}}")); } else { return; } } From a785d7a6ad2072a07450256425bf4cc7c63b8b25 Mon Sep 17 00:00:00 2001 From: Paul C Diem Date: Sat, 7 Nov 2020 17:37:06 -0600 Subject: [PATCH 029/293] Set light_dimmer on DGR bri changes, Use DGR direct for PWM dimmer bri changes --- tasmota/xdrv_04_light.ino | 12 ++++++++---- tasmota/xdrv_35_pwm_dimmer.ino | 20 +++++++++++--------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 323069b9d..db07bec91 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1954,7 +1954,7 @@ void LightAnimate(void) } if (Light.update) { #ifdef USE_DEVICE_GROUPS - if (Light.power) LightSendDeviceGroupStatus(false); + if (Light.power && !Light.devgrp_no_channels_out) LightSendDeviceGroupStatus(false); #endif // USE_DEVICE_GROUPS uint16_t cur_col_10[LST_MAX]; // 10 bits resolution @@ -2315,7 +2315,7 @@ void LightSendDeviceGroupStatus(bool status) static uint8_t last_bri; uint8_t bri = light_state.getBri(); bool send_bri_update = (status || bri != last_bri); - if (Light.subtype > LST_SINGLE && !Light.devgrp_no_channels_out) { + if (Light.subtype > LST_SINGLE) { static uint8_t channels[LST_MAX + 1] = { 0, 0, 0, 0, 0, 0 }; if (status) { light_state.getChannels(channels); @@ -2345,13 +2345,17 @@ void LightHandleDevGroupItem(void) switch (XdrvMailbox.command_code) { case DGR_ITEM_EOL: more_to_come = (XdrvMailbox.index & DGR_FLAG_MORE_TO_COME); - if (restore_power && !more_to_come) { + if (more_to_come) { + TasmotaGlobal.skip_light_fade = true; + } + else if (restore_power) { restore_power = false; Light.power = Light.old_power; } LightAnimate(); + TasmotaGlobal.skip_light_fade = true; if (send_state && !more_to_come) { light_controller.saveSettings(); if (Settings.flag3.hass_tele_on_power) { // SetOption59 - Send tele/%topic%/STATE in addition to stat/%topic%/RESULT @@ -2363,6 +2367,7 @@ void LightHandleDevGroupItem(void) case DGR_ITEM_LIGHT_BRI: if (light_state.getBri() != value) { light_state.setBri(value); + Settings.light_dimmer = light_state.BriToDimmer(value); send_state = true; } break; @@ -2431,7 +2436,6 @@ void LightHandleDevGroupItem(void) light_controller.changeChannels(Light.entry_color); light_controller.changeBri(old_bri); Settings.light_scheme = 0; - Light.devgrp_no_channels_out = false; if (!restore_power && !Light.power) { Light.old_power = Light.power; Light.power = 0xff; diff --git a/tasmota/xdrv_35_pwm_dimmer.ino b/tasmota/xdrv_35_pwm_dimmer.ino index 4cb98fe52..ad774c03e 100644 --- a/tasmota/xdrv_35_pwm_dimmer.ino +++ b/tasmota/xdrv_35_pwm_dimmer.ino @@ -91,14 +91,14 @@ void PWMModulePreInit(void) if (TasmotaGlobal.module_changed) { Settings.flag.pwm_control = true; // SetOption15 - Switch between commands PWM or COLOR/DIMMER/CT/CHANNEL Settings.bri_power_on = Settings.bri_preset_low = Settings.bri_preset_high = 0; + } - // Previous versions of PWM Dimmer used SetOption32 - Button held for factor times longer as the - // hold time. The hold time is now fixed and SetOption32 is used as normal including to - // determine how long a button is held before a reset command is executed. If SetOption32 is - // still 5, change it to 40 (the default). - if (Settings.param[P_HOLD_TIME] == 5) Settings.param[P_HOLD_TIME] = 40; - } - + // Previous versions of PWM Dimmer used SetOption32 - Button held for factor times longer as the + // hold time. The hold time is now fixed and SetOption32 is used as normal including to + // determine how long a button is held before a reset command is executed. If SetOption32 is + // still 5, change it to 40 (the default). + if (Settings.param[P_HOLD_TIME] == 5) Settings.param[P_HOLD_TIME] = 40; + // Make sure the brightness level settings are sensible. if (!Settings.bri_power_on) Settings.bri_power_on = 128; if (!Settings.bri_preset_low) Settings.bri_preset_low = 10; @@ -482,7 +482,7 @@ void PWMDimmerHandleButton(uint32_t button_index, bool pressed) else #endif // USE_PWM_DIMMER_REMOTE bri = light_state.getBri(); - int32_t new_bri = bri + bri_offset * ((dgr_item ? 16 : Settings.light_correction ? 4 : bri / 16 + 1)); + int32_t new_bri = bri + bri_offset * (Settings.light_correction ? 4 : bri / 16 + 1); if (bri_offset > 0) { if (new_bri > 255) new_bri = 255; @@ -492,7 +492,7 @@ void PWMDimmerHandleButton(uint32_t button_index, bool pressed) } if (new_bri != bri) { #ifdef USE_DEVICE_GROUPS - SendDeviceGroupMessage(power_button_index, (dgr_more_to_come ? DGR_MSGTYP_UPDATE_MORE_TO_COME : DGR_MSGTYP_UPDATE), DGR_ITEM_LIGHT_BRI, new_bri); + SendDeviceGroupMessage(power_button_index, (dgr_more_to_come ? DGR_MSGTYP_UPDATE_MORE_TO_COME : DGR_MSGTYP_UPDATE_DIRECT), DGR_ITEM_LIGHT_BRI, new_bri); #endif // USE_DEVICE_GROUPS #ifdef USE_PWM_DIMMER_REMOTE if (active_remote_pwm_dimmer) { @@ -506,6 +506,7 @@ void PWMDimmerHandleButton(uint32_t button_index, bool pressed) ignore_dgr_sends = true; #endif // USE_DEVICE_GROUPS light_state.setBri(new_bri); + Settings.light_dimmer = light_state.BriToDimmer(new_bri); LightAnimate(); TasmotaGlobal.skip_light_fade = false; #ifdef USE_DEVICE_GROUPS @@ -551,6 +552,7 @@ void PWMDimmerHandleButton(uint32_t button_index, bool pressed) else { #endif // USE_PWM_DIMMER_REMOTE light_state.setBri(power_on_bri); + Settings.light_dimmer = light_state.BriToDimmer(power_on_bri); #ifdef USE_DEVICE_GROUPS Light.devgrp_no_channels_out = true; #endif // USE_DEVICE_GROUPS From 0d56b8f231ea5c8068980d9d7b2cd9ddd6b55834 Mon Sep 17 00:00:00 2001 From: Paul C Diem Date: Sat, 7 Nov 2020 21:40:17 -0600 Subject: [PATCH 030/293] Enable light palettes for all light subtypes --- tasmota/xdrv_04_light.ino | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 323069b9d..91fe92544 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1741,8 +1741,8 @@ void LightPreparePower(power_t channels = 0xFFFFFFFF) { // 1 = only RGB, 2 = void LightSetPaletteEntry(void) { uint8_t bri = light_state.getBri(); - uint8_t * palette_entry = &Light.palette[Light.wheel * LST_MAX]; - for (int i = 0; i < LST_MAX; i++) { + uint8_t * palette_entry = &Light.palette[Light.wheel * Light.subtype]; + for (int i = 0; i < Light.subtype; i++) { Light.new_color[i] = changeUIntScale(palette_entry[i], 0, 255, 0, bri); } light_state.setChannelsRaw(Light.new_color); @@ -2531,9 +2531,8 @@ bool LightColorEntry(char *buffer, uint32_t buffer_length) } #ifdef USE_LIGHT_PALETTE else if (Light.palette_count) { - value--; Light.wheel = value; - memcpy_P(&Light.entry_color, &Light.palette[value * LST_MAX], LST_MAX); + memcpy_P(&Light.entry_color, &Light.palette[value * Light.subtype], Light.subtype); entry_type = 1; // Hexadecimal } #endif // USE_LIGHT_PALETTE From 6d0d9231633a021d41f5b3a73148a8e51e3c2f1a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 8 Nov 2020 09:38:34 +0100 Subject: [PATCH 031/293] Use START_VALID_TIME --- tasmota/xdrv_23_zigbee_2a_devices_impl.ino | 2 +- tasmota/xdrv_23_zigbee_8_parsers.ino | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino index d94c54e0b..20abe848a 100644 --- a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino +++ b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino @@ -315,7 +315,7 @@ void Z_Device::setLastSeenNow(void) { // Fixes issue where zigbee device pings before WiFi/NTP has set utc_time // to the correct time, and "last seen" calculations are based on the // pre-corrected last_seen time and the since-corrected utc_time. - if (Rtc.utc_time < 1577836800) { return; } + if (Rtc.utc_time < START_VALID_TIME) { return; } last_seen = Rtc.utc_time; } diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index ba99e5e79..9753b5a3c 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -1949,19 +1949,19 @@ void ZCLFrame::autoResponder(const uint16_t *attr_list_ids, size_t attr_len) { break; #endif case 0x000A0000: // Time - attr.setUInt((Rtc.utc_time > (60 * 60 * 24 * 365 * 10)) ? Rtc.utc_time - 946684800 : Rtc.utc_time); + attr.setUInt((Rtc.utc_time > START_VALID_TIME) ? Rtc.utc_time - 946684800 : Rtc.utc_time); break; case 0x000AFF00: // TimeEpoch - Tasmota specific attr.setUInt(Rtc.utc_time); break; case 0x000A0001: // TimeStatus - attr.setUInt((Rtc.utc_time > (60 * 60 * 24 * 365 * 10)) ? 0x02 : 0x00); // if time is beyond 2010 then we are synchronized + attr.setUInt((Rtc.utc_time > START_VALID_TIME) ? 0x02 : 0x00); break; case 0x000A0002: // TimeZone attr.setUInt(Settings.toffset[0] * 60); break; case 0x000A0007: // LocalTime // TODO take DST - attr.setUInt(Settings.toffset[0] * 60 + ((Rtc.utc_time > (60 * 60 * 24 * 365 * 10)) ? Rtc.utc_time - 946684800 : Rtc.utc_time)); + attr.setUInt(Settings.toffset[0] * 60 + ((Rtc.utc_time > START_VALID_TIME) ? Rtc.utc_time - 946684800 : Rtc.utc_time)); break; } if (!attr.isNone()) { From b3fe696f091e07f2c5112e58400be0eb2cee91ad Mon Sep 17 00:00:00 2001 From: Dave Russell Date: Sun, 8 Nov 2020 21:12:02 +1100 Subject: [PATCH 032/293] Fix invalid json in zigbee response --- tasmota/xdrv_23_zigbee_8_parsers.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 9753b5a3c..d4e47fa86 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -667,7 +667,7 @@ int32_t Z_ReceiveSimpleDesc(int32_t res, const class SBuffer &buf) { Response_P(PSTR("{\"" D_JSON_ZIGBEE_STATE "\":{" "\"Status\":%d,\"Endpoint\":\"0x%02X\"" ",\"ProfileId\":\"0x%04X\",\"DeviceId\":\"0x%04X\",\"DeviceVersion\":%d" - "\"InClusters\":["), + ",\"InClusters\":["), ZIGBEE_STATUS_SIMPLE_DESC, endpoint, profileId, deviceId, deviceVersion); for (uint32_t i = 0; i < numInCluster; i++) { From eb0e26036d8d7712ff553363ddcac80277716897 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 8 Nov 2020 11:58:33 +0100 Subject: [PATCH 033/293] ESP32 Tasmota core --- platformio_tasmota32.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 5401b8032..318cfcd93 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -87,6 +87,7 @@ build_flags = ${esp_defaults.build_flags} [core32] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 - platformio/framework-arduinoespressif32 @ 3.10004.201016 + framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.1/esp32-1.0.4.1.zip build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} + From 178ff7a841dcaa961524e730f56bec0339bd4224 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 8 Nov 2020 12:05:54 +0100 Subject: [PATCH 034/293] Use always latest ESP32 stage version --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 2cbb6d864..168ef0335 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -189,7 +189,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} [core32_stage] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy @ 1.20800.0 - framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} -DESP32_STAGE=true From 85612776f6630a2238db3fee8f2f39e40a98635e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 8 Nov 2020 12:51:08 +0100 Subject: [PATCH 035/293] Add Tuya commands Add commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/i18n.h | 5 ----- tasmota/my_user_config.h | 4 ++++ tasmota/xdrv_16_tuyamcu.ino | 33 +++++++++++++++++++-------------- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47519072a..73c4ac284 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Zigbee support for Mi Door and Contact (#9759) - Support for EZO PMP sensors by Christopher Tremblay (#9760) +- Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 35e23d22b..11b23124c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -61,6 +61,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Added - Zigbee support for Mi Door and Contact (#9759) - Support for additional EZO sensors by Christopher Tremblay +- Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 7f23812dd..31595fe93 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -515,11 +515,6 @@ #define D_CMND_LATITUDE "Latitude" #define D_CMND_LONGITUDE "Longitude" -// Commands xdrv_16_tuyadimmer.ino -#define D_CMND_TUYA_MCU "TuyaMCU" -#define D_CMND_TUYA_MCU_SEND_STATE "TuyaSend" -#define D_JSON_TUYA_MCU_RECEIVED "TuyaReceived" - // Commands xdrv_23_zigbee.ino #define D_PRFX_ZB "Zb" #define D_ZIGBEE_NOT_STARTED "Zigbee not started" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index ac0583414..185614f89 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -804,6 +804,10 @@ // wESP32-PoE // #define ETH_TYPE 0 // [EthType] 0 = ETH_PHY_LAN8720, 1 = ETH_PHY_TLK110, 2 = ETH_PHY_IP101 // #define ETH_ADDR 0 // [EthAddress] 0 = PHY0 .. 31 = PHY31 +// #define ETH_CLKMODE 0 // [EthClockMode] 0 = ETH_CLOCK_GPIO0_IN, 1 = ETH_CLOCK_GPIO0_OUT, 2 = ETH_CLOCK_GPIO16_OUT, 3 = ETH_CLOCK_GPIO17_OUT + // Wireless-Tag WT32-ETH01 +// #define ETH_TYPE 0 // [EthType] 0 = ETH_PHY_LAN8720, 1 = ETH_PHY_TLK110, 2 = ETH_PHY_IP101 +// #define ETH_ADDR 1 // [EthAddress] 0 = PHY0 .. 31 = PHY31 // #define ETH_CLKMODE 0 // [EthClockMode] 0 = ETH_CLOCK_GPIO0_IN, 1 = ETH_CLOCK_GPIO0_OUT, 2 = ETH_CLOCK_GPIO16_OUT, 3 = ETH_CLOCK_GPIO17_OUT #define USE_ADC // Add support for ADC on GPIO32 to GPIO39 diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 0c3b3bc33..a2628c8a5 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -82,15 +82,20 @@ struct TUYA { bool ignore_tuyareceived = false; // When a modeset changes ignore stat } Tuya; -#define D_CMND_TUYARGB "TuyaRGB" -#define D_CMND_ENUM "Enum" -#define D_CMND_ENUM_LIST "EnumList" +#define D_JSON_TUYA_MCU_RECEIVED "TuyaReceived" -const char kTuyaCommand[] PROGMEM = "|" // No prefix - D_CMND_TUYA_MCU "|" D_CMND_TUYA_MCU_SEND_STATE "|" D_CMND_TUYARGB "|" D_CMND_ENUM "|" D_CMND_ENUM_LIST; +#define D_PRFX_TUYA "Tuya" +#define D_CMND_TUYA_MCU "MCU" +#define D_CMND_TUYA_MCU_SEND_STATE "Send" +#define D_CMND_TUYARGB "RGB" +#define D_CMND_TUYA_ENUM "Enum" +#define D_CMND_TUYA_ENUM_LIST "EnumList" + +const char kTuyaCommand[] PROGMEM = D_PRFX_TUYA "|" // Prefix + D_CMND_TUYA_MCU "|" D_CMND_TUYA_MCU_SEND_STATE "|" D_CMND_TUYARGB "|" D_CMND_TUYA_ENUM "|" D_CMND_TUYA_ENUM_LIST; void (* const TuyaCommand[])(void) PROGMEM = { - &CmndTuyaMcu, &CmndTuyaSend, &CmndTuyaRgb, &CmndEnum, &CmndEnumList + &CmndTuyaMcu, &CmndTuyaSend, &CmndTuyaRgb, &CmndTuyaEnum, &CmndTuyaEnumList }; /*********************************************************************************************\ @@ -201,7 +206,7 @@ void CmndTuyaMcu(void) { } } - Response_P(PSTR("{\"" D_CMND_TUYA_MCU "\":[")); + Response_P(PSTR("{\"%s\":["), XdrvMailbox.command); // Builds TuyaMCU bool added = false; for (uint8_t i = 0; i < MAX_TUYA_FUNCTIONS; i++) { if (Settings.tuya_fnid_map[i].fnid != 0) { @@ -229,10 +234,10 @@ void CmndTuyaRgb(void) { // Command to control the RGB format } } } - Response_P(PSTR("{\"" D_CMND_TUYARGB "\":%d}"), Settings.tuya_fnid_map[230].dpid); + ResponseCmndNumber(Settings.tuya_fnid_map[230].dpid); } -void CmndEnum(void) { // Command to control up to four type 4 Enum +void CmndTuyaEnum(void) { // Command to control up to four type 4 Enum uint16_t EnumIdx = XdrvMailbox.index; int32_t payload = XdrvMailbox.payload; @@ -248,10 +253,10 @@ void CmndEnum(void) { // Command to control up to four type 4 Enum Tuya.EnumState[EnumIdx-1] = payload; TuyaSendEnum(TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + (EnumIdx-1)), payload); } - Response_P(PSTR("{\"" D_CMND_ENUM "%d\":%d}"), EnumIdx, Tuya.EnumState[EnumIdx-1]); + ResponseCmndIdxNumber(Tuya.EnumState[EnumIdx-1]); } } else { - Response_P(PSTR("{\"" D_CMND_ENUM "\":{")); + Response_P(PSTR("{\"%s\":{"), XdrvMailbox.command); // Builds TuyaEnum bool added = false; for (uint8_t i = 0; i <= 3; i++) { if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { @@ -266,7 +271,7 @@ void CmndEnum(void) { // Command to control up to four type 4 Enum } } -void CmndEnumList(void) { // Command to declare the number of items in list for up to four type 4 enum. Min = 0, Max = 9, Default = 1 +void CmndTuyaEnumList(void) { // Command to declare the number of items in list for up to four type 4 enum. Min = 0, Max = 9, Default = 1 if (XdrvMailbox.data_len > 0) { char *p; @@ -284,7 +289,7 @@ void CmndEnumList(void) { // Command to declare the number of items in list for } if ((TuyaGetDpId(TUYA_MCU_FUNC_ENUM1) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM3) != 0) || (TuyaGetDpId(TUYA_MCU_FUNC_ENUM4) != 0)) { - Response_P(PSTR("{\"" D_CMND_ENUM_LIST "\":{")); + Response_P(PSTR("{\"%s\":{"), XdrvMailbox.command); // Builds TuyaEnumList bool added = false; for (uint8_t i = 0; i <= 3; i++) { if (TuyaGetDpId(TUYA_MCU_FUNC_ENUM1 + i) != 0) { @@ -811,7 +816,7 @@ void TuyaProcessStatePacket(void) { if ((TUYA_MCU_FUNC_ENUM1 + i) == fnId) { if (Tuya.EnumState[i] != dpData[0]) { Tuya.EnumState[i] = dpData[0]; - snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_ENUM "%d %d"), i+1, dpData[0]); + snprintf_P(scmnd, sizeof(scmnd), PSTR(D_PRFX_TUYA D_CMND_TUYA_ENUM "%d %d"), i+1, dpData[0]); ExecuteCommand(scmnd, SRC_SWITCH); } } From 5b730fb5d973c32a3d2920927d28d5f07f742dfd Mon Sep 17 00:00:00 2001 From: Roman Bazalevsky Date: Sun, 8 Nov 2020 15:44:57 +0300 Subject: [PATCH 036/293] All detected beacons reporing moved from callbacks to loop() to prevent wrong MQTT payload due to race condition between regular jobs and callbacks. --- tasmota/xsns_52_ibeacon.ino | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/tasmota/xsns_52_ibeacon.ino b/tasmota/xsns_52_ibeacon.ino index 8071d14a7..7ae8c4921 100755 --- a/tasmota/xsns_52_ibeacon.ino +++ b/tasmota/xsns_52_ibeacon.ino @@ -122,6 +122,7 @@ struct IBEACON_UID { uint8_t FLAGS; uint8_t TIME; #ifdef USE_IBEACON_ESP32 + uint8_t REPORTED; uint8_t REPTIME; char NAME[16]; #endif @@ -202,9 +203,7 @@ class ESP32BLEScanCallback : public BLEAdvertisedDeviceCallbacks memcpy(ib.RSSI,sRSSI,4); memset(ib.NAME,0x0,16); - if (ibeacon_add(&ib)==2) { - ibeacon_mqtt(ib.MAC,ib.RSSI,ib.UID,ib.MAJOR,ib.MINOR,ib.NAME); - } + ibeacon_add(&ib); } else { @@ -221,9 +220,7 @@ class ESP32BLEScanCallback : public BLEAdvertisedDeviceCallbacks memset(ib.NAME,0x0,16); } - if (ibeacon_add(&ib)==2) { - ibeacon_mqtt(ib.MAC,ib.RSSI,ib.UID,ib.MAJOR,ib.MINOR,ib.NAME); - } + ibeacon_add(&ib); } } } @@ -453,7 +450,7 @@ uint32_t ibeacon_add(struct IBEACON *ib) { #ifdef USE_IBEACON_ESP32 if (ibeacons[cnt].REPTIME >= IB_UPDATE_TIME) { ibeacons[cnt].REPTIME = 0; - return 2; + ibeacons[cnt].REPORTED = 0; } #endif return 1; @@ -466,7 +463,7 @@ uint32_t ibeacon_add(struct IBEACON *ib) { #ifdef USE_IBEACON_ESP32 if (ibeacons[cnt].REPTIME >= IB_UPDATE_TIME) { ibeacons[cnt].REPTIME = 0; - return 2; + ibeacons[cnt].REPORTED = 0; } #endif return 1; @@ -486,6 +483,7 @@ uint32_t ibeacon_add(struct IBEACON *ib) { #ifdef USE_IBEACON_ESP32 memcpy(ibeacons[cnt].NAME,ib->NAME,16); ibeacons[cnt].REPTIME = 0; + ibeacons[cnt].REPORTED = 0; #endif return 1; } @@ -698,7 +696,12 @@ void IBEACON_loop() { #ifdef USE_IBEACON_ESP32 - return; + for (uint32_t cnt=0;cnt Date: Sun, 8 Nov 2020 08:10:11 -0600 Subject: [PATCH 037/293] Add support for auto SequenceOffset based on Friendly Name or Topic --- tasmota/xdrv_04_light.ino | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 461c1f917..b6f3469f8 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -3096,10 +3096,22 @@ void CmndPalette(void) #ifdef USE_DGR_LIGHT_SEQUENCE void CmndSequenceOffset(void) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) { - if (XdrvMailbox.payload != Light.sequence_offset) { + // SequenceOffset , x: 0=offset, 1=Friendly name 1 ending digits + offset [-1] + // 2=MQTT topic ending digits + offset [-1] + int32_t offset = XdrvMailbox.payload; + if (XdrvMailbox.usridx && XdrvMailbox.index > 0) { + uint32_t index = SET_FRIENDLYNAME1; + if (XdrvMailbox.index == 2) index = SET_MQTT_TOPIC; + char * name = SettingsText(index); + char * ptr = name + strlen(name); + while (--ptr >= name && isdigit(*ptr)); + if (!XdrvMailbox.data_len) offset = -1; + offset += atoi(ptr + 1); + } + if (offset >= 0 && offset <= 255) { + if (offset != Light.sequence_offset) { if (Light.sequence_offset) free(Light.channels_fifo); - Light.sequence_offset = XdrvMailbox.payload; + Light.sequence_offset = offset; if (Light.sequence_offset) Light.channels_fifo = (uint8_t *)calloc(Light.sequence_offset, LST_MAX); } } From 3bcc12e3b50cf4e22ffeb6255c1abd93f6c2c09d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 8 Nov 2020 16:17:22 +0100 Subject: [PATCH 038/293] Esp32 Tasmota core --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 7b8daf732..7427391ff 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR. - [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.4.7 - - [ ] The code change is tested and works on core ESP32 V.1.12.4 + - [ ] The code change is tested and works on Tasmota core ESP32 V.1.0.4.1 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ From 7339e363d0b0c7c16e7762a28f802f6a0ca5e057 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 8 Nov 2020 17:00:15 +0100 Subject: [PATCH 039/293] Add compile option -free -fipa-pta ... Save some tens of bytes Thx to @jjsuwa-sys3175 --- platformio_override_sample.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 168ef0335..27a93b4b6 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -92,6 +92,8 @@ platform_packages = framework-arduinoespressif8266 @ https://github.co platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} + -free + -fipa-pta ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 From 182aabe34d609cdf6bb57155eea94cdc7917ade9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 8 Nov 2020 17:34:31 +0100 Subject: [PATCH 040/293] Zigebee add persisence for Alarm config --- tasmota/xdrv_23_zigbee_2_devices.ino | 37 ++++++++++++++++++++++-- tasmota/xdrv_23_zigbee_4_persistence.ino | 1 + tasmota/xdrv_23_zigbee_5_converters.ino | 1 + 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index fd64a5695..6472548a4 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -74,6 +74,9 @@ public: void toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const; + // update internal structures after an attribut update + inline void update(void) { } + static const Z_Data_Type type = Z_Data_Type::Z_Unknown; static bool ConfigToZData(const char * config_str, Z_Data_Type * type, uint8_t * ep, uint8_t * config); @@ -364,11 +367,28 @@ public: inline bool validZoneType(void) const { return 0xFFFF != zone_type; } inline uint16_t getZoneType(void) const { return zone_type; } - inline bool isPIR(void) const { return 0x000d == zone_type; } - inline bool isContact(void) const { return 0x0015 == zone_type; } + inline bool isPIR(void) const { return 0x1 == _config; } + inline bool isContact(void) const { return 0x2 == _config; } inline void setZoneType(uint16_t _zone_type) { zone_type = _zone_type; } + void update(void) { + switch (zone_type) { + case 0x0000: _config = 0x0; break; // 0x0 : Standard CIE + case 0x000d: _config = 0x1; break; // 0x1 : PIR + case 0x0015: _config = 0x2; break; // 0x2 : Contact + case 0x0028: _config = 0x3; break; // 0x3 : Fire + case 0x002a: _config = 0x4; break; // 0x4 : Leak + case 0x002b: _config = 0x5; break; // 0x5 : CO + case 0x002c: _config = 0x6; break; // 0x6 : Personal + case 0x002d: _config = 0x7; break; // 0x7 : Movement + case 0x010f: + case 0x0115: + case 0x021d: _config = 0x8; break; // 0x8 : Panic + case 0x0226: _config = 0x9; break; // 0x9 : Glass break + } + } + // 4 bytes uint16_t zone_status; // last known state for sensor 1 & 2 uint16_t zone_type; // mapped to the Zigbee standard @@ -401,6 +421,8 @@ public: // getX() always returns a valid object, and creates the object if there is none // find() does not create an object if it does not exist, and returns *(X*)nullptr + // Emulate a virtuel update method for Z_Data + static void updateData(Z_Data & elt); template M & get(uint8_t ep = 0); @@ -413,6 +435,17 @@ public: M & addIfNull(M & cur, uint8_t ep = 0); }; +void Z_Data_Set::updateData(Z_Data & elt) { + switch (elt._type) { + case Z_Data_Type::Z_Light: ((Z_Data_Light&) elt).update(); break; + case Z_Data_Type::Z_Plug: ((Z_Data_Plug&) elt).update(); break; + case Z_Data_Type::Z_Alarm: ((Z_Data_Alarm&) elt).update(); break; + case Z_Data_Type::Z_Thermo: ((Z_Data_Thermo&) elt).update(); break; + case Z_Data_Type::Z_OnOff: ((Z_Data_OnOff&) elt).update(); break; + case Z_Data_Type::Z_PIR: ((Z_Data_PIR&) elt).update(); break; + } +} + Z_Data & Z_Data_Set::getByType(Z_Data_Type type, uint8_t ep) { switch (type) { case Z_Data_Type::Z_Light: diff --git a/tasmota/xdrv_23_zigbee_4_persistence.ino b/tasmota/xdrv_23_zigbee_4_persistence.ino index 8a4b03b68..9a8a095c6 100644 --- a/tasmota/xdrv_23_zigbee_4_persistence.ino +++ b/tasmota/xdrv_23_zigbee_4_persistence.ino @@ -276,6 +276,7 @@ void hydrateSingleDevice(const SBuffer & buf_d, uint32_t version) { Z_Data & z_data = device.data.getByType(type, ep); if (&z_data != nullptr) { z_data.setConfig(config); + Z_Data_Set::updateData(z_data); } } } diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 7be21aab5..b49a0a466 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1851,6 +1851,7 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib case Zint16: *(int16_t*)attr_address = ival32; break; case Zint32: *(int32_t*)attr_address = ival32; break; } + Z_Data_Set::updateData(data); } uint16_t uval16 = attr.getUInt(); // call converter to uint only once From 84d4362de9f7d39de646760e491ec197ff5de930 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 8 Nov 2020 17:49:13 +0100 Subject: [PATCH 041/293] Fix L1 scaleup --- tasmota/xdrv_04_light.ino | 47 +++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index b6f3469f8..cfd81f2ff 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -2220,31 +2220,34 @@ void LightSetOutputs(const uint16_t *cur_col_10) { } } } - } + } else { +// char msg[24]; +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); -// char msg[24]; -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); + // Some devices need scaled RGB like Sonoff L1 + // TODO, should be probably moved to the Sonoff L1 support code + uint32_t max = (cur_col_10[0] > cur_col_10[1] && cur_col_10[0] > cur_col_10[2]) ? cur_col_10[0] : (cur_col_10[1] > cur_col_10[2]) ? cur_col_10[1] : cur_col_10[2]; // 0..1023 + uint8_t scale_col[3]; + for (uint32_t i = 0; i < 3; i++) { + scale_col[i] = (0 == max) ? 255 : changeUIntScale(cur_col_10[i], 0, max, 0, 255); + } +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: CurCol %03X %03X %03X, ScaleCol %02X %02X %02X, Max %02X"), +// cur_col_10[0], cur_col_10[1], cur_col_10[2], scale_col[0], scale_col[1], scale_col[2], max); - uint8_t cur_col[LST_MAX]; - for (uint32_t i = 0; i < LST_MAX; i++) { - cur_col[i] = change10to8(cur_col_10[i]); - } - // Some devices need scaled RGB like Sonoff L1 - // TODO, should be probably moved to the Sonoff L1 support code - uint8_t scale_col[3]; - uint32_t max = (cur_col[0] > cur_col[1] && cur_col[0] > cur_col[2]) ? cur_col[0] : (cur_col[1] > cur_col[2]) ? cur_col[1] : cur_col[2]; // 0..255 - for (uint32_t i = 0; i < 3; i++) { - scale_col[i] = (0 == max) ? 255 : (255 > max) ? changeUIntScale(cur_col[i], 0, max, 0, 255) : cur_col[i]; - } + uint8_t cur_col[LST_MAX]; + for (uint32_t i = 0; i < LST_MAX; i++) { + cur_col[i] = change10to8(cur_col_10[i]); + } - char *tmp_data = XdrvMailbox.data; - char *tmp_topic = XdrvMailbox.topic; - XdrvMailbox.data = (char*)cur_col; - XdrvMailbox.topic = (char*)scale_col; - if (XlgtCall(FUNC_SET_CHANNELS)) { /* Serviced */ } - else if (XdrvCall(FUNC_SET_CHANNELS)) { /* Serviced */ } - XdrvMailbox.data = tmp_data; - XdrvMailbox.topic = tmp_topic; + char *tmp_data = XdrvMailbox.data; + char *tmp_topic = XdrvMailbox.topic; + XdrvMailbox.data = (char*)cur_col; + XdrvMailbox.topic = (char*)scale_col; + if (XlgtCall(FUNC_SET_CHANNELS)) { /* Serviced */ } + else if (XdrvCall(FUNC_SET_CHANNELS)) { /* Serviced */ } + XdrvMailbox.data = tmp_data; + XdrvMailbox.topic = tmp_topic; + } } // Just apply basic Gamma to each channel From 04c7e93a1c983993c06ca46043b260a3df17534b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 8 Nov 2020 18:03:35 +0100 Subject: [PATCH 042/293] Possible fix for auto color change Possible fix for auto color change Sonoff L1 (#9545) --- tasmota/xlgt_05_sonoff_l1.ino | 43 +++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 21c476a60..9ca8d49c7 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -42,6 +42,9 @@ struct SNFL1 { uint32_t unlock = 0; + uint8_t color[3]; + uint8_t dimmer; + uint8_t power; bool receive_ready = true; } Snfl1; @@ -135,6 +138,7 @@ bool SnfL1SerialInput(void) int color_value = atoi(token3); current_color[color_index] = color_value; color_updated[color_index] = true; + Snfl1.color[color_index] = color_value; bool all_color_channels_updated = color_updated[0] && color_updated[1] && color_updated[2]; if (all_color_channels_updated) { @@ -181,6 +185,11 @@ bool SnfL1SerialInput(void) snprintf_P(cmnd_fade, sizeof(cmnd_fade), PSTR(D_CMND_FADE " 0")); ExecuteCommand(cmnd_fade, SRC_SWITCH); } + if (Settings.light_correction) { // Disable ledtable as RC button colors overrule and are immediate supressing ghost colors + char cmnd_fade[20]; + snprintf_P(cmnd_fade, sizeof(cmnd_fade), PSTR(D_CMND_LEDTABLE " 0")); + ExecuteCommand(cmnd_fade, SRC_SWITCH); + } ExecuteCommand(cmnd_color, SRC_SWITCH); } } @@ -198,15 +207,34 @@ bool SnfL1SerialInput(void) bool SnfL1SetChannels(void) { - if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { +// if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { + uint8_t power = Light.power; + uint8_t dimmer = light_state.getDimmer(); uint8_t *scale_col = (uint8_t*)XdrvMailbox.topic; + bool power_changed = (Snfl1.power != power); + Snfl1.power = power; + + bool dimmer_changed = (Snfl1.dimmer != dimmer); + Snfl1.dimmer = dimmer; + + bool color_changed = false; + if (!power_changed) { + for (uint32_t i = 0; i < 3; i++) { + if ((Snfl1.color[i] < scale_col[i] -5) || (Snfl1.color[i] > scale_col[i] +5)) { + color_changed = true; + } + Snfl1.color[i] = scale_col[i]; + } + } + if (!power_changed && !dimmer_changed && !color_changed) { return true; } + char buffer[140]; snprintf_P(buffer, sizeof(buffer), PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), LocalTime(), millis()%1000, Light.power ? "on" : "off", - scale_col[0], scale_col[1], scale_col[2], + Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], light_state.getDimmer(), SONOFF_L1_MODE_COLORFUL); @@ -214,21 +242,26 @@ bool SnfL1SetChannels(void) Snfl1.unlock = millis() + 500; // Allow time for the RC Snfl1.receive_ready = false; - } +// } return true; } -void SnfL1ModuleSelected(void) +bool SnfL1ModuleSelected(void) { if (SONOFF_L1 == TasmotaGlobal.module_type) { if (PinUsed(GPIO_RXD) && PinUsed(GPIO_TXD)) { SetSerial(19200, TS_SERIAL_8N1); + Snfl1.power = !Light.power; + Snfl1.dimmer = !light_state.getDimmer(); + TasmotaGlobal.light_type = LT_RGB; TasmotaGlobal.light_driver = XLGT_05; AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Sonoff L1 Found")); + return true; } } + return false; } /*********************************************************************************************\ @@ -247,7 +280,7 @@ bool Xlgt05(uint8_t function) result = SnfL1SetChannels(); break; case FUNC_MODULE_INIT: - SnfL1ModuleSelected(); + result = SnfL1ModuleSelected(); break; } return result; From 6fa2d12188936a013734efcd90167d8372587314 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 8 Nov 2020 18:17:33 +0100 Subject: [PATCH 043/293] Zigbee more compact code --- tasmota/xdrv_23_zigbee_2_devices.ino | 70 +++++++++++++++++-------- tasmota/xdrv_23_zigbee_5_converters.ino | 4 +- 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 6472548a4..d4b2fdacb 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -75,7 +75,8 @@ public: void toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const; // update internal structures after an attribut update - inline void update(void) { } + // True if a configuration was changed + inline bool update(void) { return false; } static const Z_Data_Type type = Z_Data_Type::Z_Unknown; static bool ConfigToZData(const char * config_str, Z_Data_Type * type, uint8_t * ep, uint8_t * config); @@ -355,6 +356,30 @@ public: /*********************************************************************************************\ * Device specific: Alarm \*********************************************************************************************/ +// We're lucky that alarm type fits in 12 bits, so we can have a total entry of 16 bits +typedef union Z_Alarm_Types_t { + struct { + uint16_t zcl_type : 12; + uint8_t config : 4; + } t; + uint16_t i; +} Z_Alarm_Types_t; + +static const Z_Alarm_Types_t Z_Alarm_Types[] PROGMEM = { + { .t = { 0x000, 0x0 }}, // 0x0 : Standard CIE + { .t = { 0x00d, 0x1 }}, // 0x1 : PIR + { .t = { 0x015, 0x2 }}, // 0x2 : Contact + { .t = { 0x028, 0x3 }}, // 0x3 : Fire + { .t = { 0x02a, 0x4 }}, // 0x4 : Leak + { .t = { 0x02b, 0x5 }}, // 0x5 : CO + { .t = { 0x02c, 0x6 }}, // 0x6 : Personal + { .t = { 0x02d, 0x7 }}, // 0x7 : Movement + { .t = { 0x10f, 0x8 }}, // 0x8 : Panic + { .t = { 0x115, 0x8 }}, // 0x8 : Panic + { .t = { 0x21d, 0x8 }}, // 0x8 : Panic + { .t = { 0x226, 0x9 }}, // 0x9 : Glass break +}; + class Z_Data_Alarm : public Z_Data { public: Z_Data_Alarm(uint8_t endpoint = 0) : @@ -372,20 +397,18 @@ public: inline void setZoneType(uint16_t _zone_type) { zone_type = _zone_type; } - void update(void) { - switch (zone_type) { - case 0x0000: _config = 0x0; break; // 0x0 : Standard CIE - case 0x000d: _config = 0x1; break; // 0x1 : PIR - case 0x0015: _config = 0x2; break; // 0x2 : Contact - case 0x0028: _config = 0x3; break; // 0x3 : Fire - case 0x002a: _config = 0x4; break; // 0x4 : Leak - case 0x002b: _config = 0x5; break; // 0x5 : CO - case 0x002c: _config = 0x6; break; // 0x6 : Personal - case 0x002d: _config = 0x7; break; // 0x7 : Movement - case 0x010f: - case 0x0115: - case 0x021d: _config = 0x8; break; // 0x8 : Panic - case 0x0226: _config = 0x9; break; // 0x9 : Glass break + bool update(void) { + for (uint32_t i=0; i M & get(uint8_t ep = 0); @@ -435,14 +458,15 @@ public: M & addIfNull(M & cur, uint8_t ep = 0); }; -void Z_Data_Set::updateData(Z_Data & elt) { +bool Z_Data_Set::updateData(Z_Data & elt) { switch (elt._type) { - case Z_Data_Type::Z_Light: ((Z_Data_Light&) elt).update(); break; - case Z_Data_Type::Z_Plug: ((Z_Data_Plug&) elt).update(); break; - case Z_Data_Type::Z_Alarm: ((Z_Data_Alarm&) elt).update(); break; - case Z_Data_Type::Z_Thermo: ((Z_Data_Thermo&) elt).update(); break; - case Z_Data_Type::Z_OnOff: ((Z_Data_OnOff&) elt).update(); break; - case Z_Data_Type::Z_PIR: ((Z_Data_PIR&) elt).update(); break; + case Z_Data_Type::Z_Light: return ((Z_Data_Light&) elt).update(); break; + case Z_Data_Type::Z_Plug: return ((Z_Data_Plug&) elt).update(); break; + case Z_Data_Type::Z_Alarm: return ((Z_Data_Alarm&) elt).update(); break; + case Z_Data_Type::Z_Thermo: return ((Z_Data_Thermo&) elt).update(); break; + case Z_Data_Type::Z_OnOff: return ((Z_Data_OnOff&) elt).update(); break; + case Z_Data_Type::Z_PIR: return ((Z_Data_PIR&) elt).update(); break; + default: return false; } } diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index b49a0a466..b68b1067b 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1851,7 +1851,9 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib case Zint16: *(int16_t*)attr_address = ival32; break; case Zint32: *(int32_t*)attr_address = ival32; break; } - Z_Data_Set::updateData(data); + if (Z_Data_Set::updateData(data)) { + zigbee_devices.dirty(); + } } uint16_t uval16 = attr.getUInt(); // call converter to uint only once From a1ba1da02bc0ccab266463b70d299024db816e97 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 9 Nov 2020 11:56:29 +0100 Subject: [PATCH 044/293] Fix ignore Occupancy timeout --- tasmota/xdrv_23_zigbee_5_converters.ino | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index b68b1067b..bf3cc46c8 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1294,7 +1294,9 @@ void ZCLFrame::generateCallBacks(Z_attribute_list& attr_list) { if (&pir_found != nullptr) { pir_timer = pir_found.getTimeoutSeconds() * 1000; } - zigbee_devices.setTimer(_srcaddr, 0 /* groupaddr */, pir_timer, _cluster_id, _srcendpoint, Z_CAT_VIRTUAL_OCCUPANCY, 0, &Z_OccupancyCallback); + if (pir_timer > 0) { + zigbee_devices.setTimer(_srcaddr, 0 /* groupaddr */, pir_timer, _cluster_id, _srcendpoint, Z_CAT_VIRTUAL_OCCUPANCY, 0, &Z_OccupancyCallback); + } } else { zigbee_devices.resetTimersForDevice(_srcaddr, 0 /* groupaddr */, Z_CAT_VIRTUAL_OCCUPANCY); } From 40e58c0702bf0c2cda038b7859edf357e82b3832 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 9 Nov 2020 13:52:42 +0100 Subject: [PATCH 045/293] Allow Sonoff L1 debugging --- tasmota/xdrv_04_light.ino | 52 +++++++++++++++++------------------ tasmota/xlgt_05_sonoff_l1.ino | 30 ++++++++------------ 2 files changed, 37 insertions(+), 45 deletions(-) diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index cfd81f2ff..705a07474 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -2220,34 +2220,32 @@ void LightSetOutputs(const uint16_t *cur_col_10) { } } } - } else { -// char msg[24]; -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); - - // Some devices need scaled RGB like Sonoff L1 - // TODO, should be probably moved to the Sonoff L1 support code - uint32_t max = (cur_col_10[0] > cur_col_10[1] && cur_col_10[0] > cur_col_10[2]) ? cur_col_10[0] : (cur_col_10[1] > cur_col_10[2]) ? cur_col_10[1] : cur_col_10[2]; // 0..1023 - uint8_t scale_col[3]; - for (uint32_t i = 0; i < 3; i++) { - scale_col[i] = (0 == max) ? 255 : changeUIntScale(cur_col_10[i], 0, max, 0, 255); - } -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: CurCol %03X %03X %03X, ScaleCol %02X %02X %02X, Max %02X"), -// cur_col_10[0], cur_col_10[1], cur_col_10[2], scale_col[0], scale_col[1], scale_col[2], max); - - uint8_t cur_col[LST_MAX]; - for (uint32_t i = 0; i < LST_MAX; i++) { - cur_col[i] = change10to8(cur_col_10[i]); - } - - char *tmp_data = XdrvMailbox.data; - char *tmp_topic = XdrvMailbox.topic; - XdrvMailbox.data = (char*)cur_col; - XdrvMailbox.topic = (char*)scale_col; - if (XlgtCall(FUNC_SET_CHANNELS)) { /* Serviced */ } - else if (XdrvCall(FUNC_SET_CHANNELS)) { /* Serviced */ } - XdrvMailbox.data = tmp_data; - XdrvMailbox.topic = tmp_topic; } +// char msg[24]; +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: Channels %s"), ToHex_P((const unsigned char *)cur_col_10, 10, msg, sizeof(msg))); + + // Some devices need scaled RGB like Sonoff L1 + uint32_t max = (cur_col_10[0] > cur_col_10[1] && cur_col_10[0] > cur_col_10[2]) ? cur_col_10[0] : (cur_col_10[1] > cur_col_10[2]) ? cur_col_10[1] : cur_col_10[2]; // 0..1023 + uint8_t scale_col[3]; + for (uint32_t i = 0; i < 3; i++) { + scale_col[i] = (0 == max) ? 255 : changeUIntScale(cur_col_10[i], 0, max, 0, 255); + } +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("LGT: CurCol %03X %03X %03X, ScaleCol %02X %02X %02X, Max %02X"), +// cur_col_10[0], cur_col_10[1], cur_col_10[2], scale_col[0], scale_col[1], scale_col[2], max); + + uint8_t cur_col[LST_MAX]; + for (uint32_t i = 0; i < LST_MAX; i++) { + cur_col[i] = change10to8(cur_col_10[i]); + } + + char *tmp_data = XdrvMailbox.data; + char *tmp_topic = XdrvMailbox.topic; + XdrvMailbox.data = (char*)cur_col; + XdrvMailbox.topic = (char*)scale_col; + if (XlgtCall(FUNC_SET_CHANNELS)) { /* Serviced */ } + else if (XdrvCall(FUNC_SET_CHANNELS)) { /* Serviced */ } + XdrvMailbox.data = tmp_data; + XdrvMailbox.topic = tmp_topic; } // Just apply basic Gamma to each channel diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 9ca8d49c7..387a012b9 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -52,7 +52,7 @@ struct SNFL1 { void SnfL1Send(const char *buffer) { -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), buffer); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), buffer); Serial.print(buffer); Serial.write(0x1B); @@ -82,7 +82,7 @@ bool SnfL1SerialInput(void) // AT+RESULT="sequence":"1554682835320" // AT+UPDATE="sequence":"34906","switch":"on","light_type":1,"colorR":0,"colorG":16,"colorB":0,"bright":6,"mode":1 // AT+UPDATE="switch":"on","light_type":1,"colorR":255,"colorG":0,"colorB":0,"bright":6,"mode":1,"speed":100,"sensitive":10 -// AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "RESULT", 6)) { Snfl1.receive_ready = true; @@ -95,8 +95,6 @@ bool SnfL1SerialInput(void) char *token = strtok_r(string, ",", &end_str); bool color_updated[3] = { false, false, false }; - uint8_t current_color[3]; - memcpy(current_color, Settings.light_color, 3); bool switch_state = false; bool is_power_change = false; @@ -126,8 +124,7 @@ bool SnfL1SerialInput(void) else if (!strncmp(token2, "\"color", 6)) { char color_channel_name = token2[6]; int color_index; - switch(color_channel_name) - { + switch(color_channel_name) { case 'R': color_index = 0; break; case 'G': color_index = 1; @@ -136,20 +133,19 @@ bool SnfL1SerialInput(void) break; } int color_value = atoi(token3); - current_color[color_index] = color_value; - color_updated[color_index] = true; Snfl1.color[color_index] = color_value; + color_updated[color_index] = true; bool all_color_channels_updated = color_updated[0] && color_updated[1] && color_updated[2]; if (all_color_channels_updated) { // AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd color R%d G%d B%d (R%d G%d B%d)"), -// current_color[0], current_color[1], current_color[2], +// Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], // Settings.light_color[0], Settings.light_color[1], Settings.light_color[2]); - is_color_change = (Light.power && (memcmp(current_color, Settings.light_color, 3) != 0)); + is_color_change = (Light.power && (memcmp(Snfl1.color, Settings.light_color, 3) != 0)); } - snprintf_P(cmnd_color, sizeof(cmnd_color), PSTR(D_CMND_COLOR "2 %02x%02x%02x"), current_color[0], current_color[1], current_color[2]); + snprintf_P(cmnd_color, sizeof(cmnd_color), PSTR(D_CMND_COLOR "2 %02x%02x%02x"), Snfl1.color[0], Snfl1.color[1], Snfl1.color[2]); } else if (!strncmp(token2, "\"bright\"", 8)) { @@ -208,22 +204,20 @@ bool SnfL1SerialInput(void) bool SnfL1SetChannels(void) { // if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { - uint8_t power = Light.power; - uint8_t dimmer = light_state.getDimmer(); - uint8_t *scale_col = (uint8_t*)XdrvMailbox.topic; - bool power_changed = (Snfl1.power != power); Snfl1.power = power; + uint8_t dimmer = light_state.getDimmer(); bool dimmer_changed = (Snfl1.dimmer != dimmer); Snfl1.dimmer = dimmer; + uint8_t *scale_col = (uint8_t*)XdrvMailbox.topic; bool color_changed = false; if (!power_changed) { for (uint32_t i = 0; i < 3; i++) { if ((Snfl1.color[i] < scale_col[i] -5) || (Snfl1.color[i] > scale_col[i] +5)) { - color_changed = true; + color_changed = true; // Allow scale-up margins of +/-5 } Snfl1.color[i] = scale_col[i]; } @@ -233,9 +227,9 @@ bool SnfL1SetChannels(void) char buffer[140]; snprintf_P(buffer, sizeof(buffer), PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), LocalTime(), millis()%1000, - Light.power ? "on" : "off", + Snfl1.power ? "on" : "off", Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], - light_state.getDimmer(), + Snfl1.dimmer, SONOFF_L1_MODE_COLORFUL); SnfL1Send(buffer); From 2f647e3db6a06a95131f2471136dc0ae921caa7d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 9 Nov 2020 14:23:38 +0100 Subject: [PATCH 046/293] Use Tasmota ESP32 core from PlatformIO registry --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 318cfcd93..a4475c67b 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -87,7 +87,7 @@ build_flags = ${esp_defaults.build_flags} [core32] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 - framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.1/esp32-1.0.4.1.zip + tasmota/framework-arduinoespressif32 @ 3.10004.1 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 371b00823e68df7beb58ddc4ecb95d5062704f91 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 9 Nov 2020 15:04:22 +0100 Subject: [PATCH 047/293] Change Sonoff L1 color up scaling and color margin detection Change Sonoff L1 color up scaling and color margin detection (#9545) --- CHANGELOG.md | 2 + RELEASENOTES.md | 2 + tasmota/xlgt_05_sonoff_l1.ino | 75 +++++++++++++++++++++++++++++++---- 3 files changed, 72 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73c4ac284..98c45ddfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.1.0.1] ### Added - Zigbee support for Mi Door and Contact (#9759) +- Zigbee alarm persistence (#9785) - Support for EZO PMP sensors by Christopher Tremblay (#9760) - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) @@ -13,6 +14,7 @@ All notable changes to this project will be documented in this file. - Core library from v2.7.4.5 to v2.7.4.7 - Platformio compiler option `no target align` enabled (#9749) - Consolidate `AddLog_P` into `AddLog_P2` and rename to `AddLog_P` +- Sonoff L1 color up scaling and color margin detection (#9545) ### Fixed - NTP fallback server functionality (#9739) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 11b23124c..77e497a0f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -60,12 +60,14 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0.1 ### Added - Zigbee support for Mi Door and Contact (#9759) +- Zigbee alarm persistence (#9785) - Support for additional EZO sensors by Christopher Tremblay - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 - Platformio compiler option `no target align` enabled (#9749) +- Sonoff L1 color up scaling and color margin detection (#9545) ### Fixed - NTP fallback server functionality (#9739) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 387a012b9..d0e96354d 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -25,6 +25,10 @@ #define XLGT_05 5 +//#define SONOFF_L1_START_DELAY // Sync Nuvotron power state with Tasmota on power up +//#define SONOFF_L1_ALLOW_REMOTE_INTERRUPT // During schemes 2..4 +#define SONOFF_L1_DEBUG1 // Add send and receive logging + #define SONOFF_L1_BUFFER_SIZE 140 #define SONOFF_L1_MODE_COLORFUL 1 // [Color key] Colorful (static color) @@ -41,19 +45,51 @@ #define SONOFF_L1_MODE_SYNC_TO_MUSIC 12 // Sync to music [Speed 1- 100, sensitivity 1 - 10] struct SNFL1 { +#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT uint32_t unlock = 0; + bool receive_ready = true; +#endif +#ifdef SONOFF_L1_START_DELAY + char buffer[SONOFF_L1_BUFFER_SIZE]; +#endif uint8_t color[3]; uint8_t dimmer; uint8_t power; - bool receive_ready = true; } Snfl1; /********************************************************************************************/ +#ifdef SONOFF_L1_START_DELAY +#include +Ticker SnfL1StartDelay; + +void SnfL1SendDelayed(void) { + SnfL1StartDelay.detach(); + SnfL1Send(); +} + +void SnfL1Send(void) +{ +#ifdef SONOFF_L1_DEBUG1 + AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), Snfl1.buffer); +#endif + Serial.print(Snfl1.buffer); + Serial.write(0x1B); + Serial.flush(); +} + +void SnfL1SerialSendOk(void) +{ + snprintf_P(Snfl1.buffer, sizeof(Snfl1.buffer), PSTR("AT+SEND=ok")); + + SnfL1Send(); +} +#else void SnfL1Send(const char *buffer) { +#ifdef SONOFF_L1_DEBUG1 AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), buffer); - +#endif Serial.print(buffer); Serial.write(0x1B); Serial.flush(); @@ -66,11 +102,12 @@ void SnfL1SerialSendOk(void) SnfL1Send(buffer); } +#endif // SONOFF_L1_START_DELAY bool SnfL1SerialInput(void) { if (TasmotaGlobal.serial_in_byte != 0x1B) { - if (TasmotaGlobal.serial_in_byte_counter >= 140) { + if (TasmotaGlobal.serial_in_byte_counter >= SONOFF_L1_BUFFER_SIZE) { TasmotaGlobal.serial_in_byte_counter = 0; } if (TasmotaGlobal.serial_in_byte_counter || (!TasmotaGlobal.serial_in_byte_counter && ('A' == TasmotaGlobal.serial_in_byte))) { // A from AT @@ -82,10 +119,13 @@ bool SnfL1SerialInput(void) // AT+RESULT="sequence":"1554682835320" // AT+UPDATE="sequence":"34906","switch":"on","light_type":1,"colorR":0,"colorG":16,"colorB":0,"bright":6,"mode":1 // AT+UPDATE="switch":"on","light_type":1,"colorR":255,"colorG":0,"colorB":0,"bright":6,"mode":1,"speed":100,"sensitive":10 +#ifdef SONOFF_L1_DEBUG1 AddLog_P(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); - +#endif if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "RESULT", 6)) { +#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT Snfl1.receive_ready = true; +#endif } else if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "UPDATE", 6)) { char cmnd_dimmer[20]; @@ -203,7 +243,9 @@ bool SnfL1SerialInput(void) bool SnfL1SetChannels(void) { -// if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { +#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT + if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { +#endif uint8_t power = Light.power; bool power_changed = (Snfl1.power != power); Snfl1.power = power; @@ -224,7 +266,23 @@ bool SnfL1SetChannels(void) } if (!power_changed && !dimmer_changed && !color_changed) { return true; } - char buffer[140]; +#ifdef SONOFF_L1_START_DELAY + snprintf_P(Snfl1.buffer, sizeof(Snfl1.buffer), PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), + LocalTime(), millis()%1000, + Snfl1.power ? "on" : "off", + Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], + Snfl1.dimmer, + SONOFF_L1_MODE_COLORFUL); + + static bool first_call = true; + if (first_call) { + SnfL1StartDelay.attach_ms(900, SnfL1SendDelayed); // Allow startup time for Nuvotron microcontroller + first_call = false; + } else { + SnfL1Send(); + } +#else + char buffer[SONOFF_L1_BUFFER_SIZE]; snprintf_P(buffer, sizeof(buffer), PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), LocalTime(), millis()%1000, Snfl1.power ? "on" : "off", @@ -233,10 +291,13 @@ bool SnfL1SetChannels(void) SONOFF_L1_MODE_COLORFUL); SnfL1Send(buffer); +#endif // SONOFF_L1_START_DELAY +#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT Snfl1.unlock = millis() + 500; // Allow time for the RC Snfl1.receive_ready = false; -// } + } +#endif return true; } From 619377d3f1a1be692cdf4a6a3453eff7e7a9057f Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 9 Nov 2020 16:51:19 +0100 Subject: [PATCH 048/293] BT is not working with latest IDF 3.3. Version --- platformio_tasmota32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index a4475c67b..ae234e368 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -87,7 +87,7 @@ build_flags = ${esp_defaults.build_flags} [core32] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 - tasmota/framework-arduinoespressif32 @ 3.10004.1 + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#56a7ae871204cdf24fab8520ab9f76782d94b599 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} From 9c3d1dd9db20d865a40e9d66a0c243db2a3ed49f Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 9 Nov 2020 17:08:35 +0100 Subject: [PATCH 049/293] Core Stage... --- platformio_tasmota32.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index ae234e368..a7d71e325 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -90,4 +90,5 @@ platform_packages = tool-esptoolpy@1.20800.0 framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#56a7ae871204cdf24fab8520ab9f76782d94b599 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} + -DESP32_STAGE=true From 765215e06655ec302d85dd2f5e140ad80652d93f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 9 Nov 2020 17:15:48 +0100 Subject: [PATCH 050/293] Move Sonoff L1 SrcSwitch to SrcRemote --- tasmota/xlgt_05_sonoff_l1.ino | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index d0e96354d..38f9a3000 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -205,28 +205,28 @@ bool SnfL1SerialInput(void) if (!switch_state) { // If power off RC button pressed stop schemes char cmnd_scheme[20]; snprintf_P(cmnd_scheme, sizeof(cmnd_scheme), PSTR(D_CMND_SCHEME " 0")); - ExecuteCommand(cmnd_scheme, SRC_SWITCH); + ExecuteCommand(cmnd_scheme, SRC_REMOTE); } } else { - ExecuteCommandPower(1, switch_state, SRC_SWITCH); + ExecuteCommandPower(1, switch_state, SRC_REMOTE); } } else if (is_brightness_change) { - ExecuteCommand(cmnd_dimmer, SRC_SWITCH); + ExecuteCommand(cmnd_dimmer, SRC_REMOTE); } else if (Light.power && is_color_change) { if (0 == Settings.light_scheme) { // Fix spurious color receptions when scheme > 0 if (Settings.light_fade) { // Disable fade as RC button colors overrule and are immediate supressing ghost colors char cmnd_fade[20]; snprintf_P(cmnd_fade, sizeof(cmnd_fade), PSTR(D_CMND_FADE " 0")); - ExecuteCommand(cmnd_fade, SRC_SWITCH); + ExecuteCommand(cmnd_fade, SRC_REMOTE); } if (Settings.light_correction) { // Disable ledtable as RC button colors overrule and are immediate supressing ghost colors char cmnd_fade[20]; snprintf_P(cmnd_fade, sizeof(cmnd_fade), PSTR(D_CMND_LEDTABLE " 0")); - ExecuteCommand(cmnd_fade, SRC_SWITCH); + ExecuteCommand(cmnd_fade, SRC_REMOTE); } - ExecuteCommand(cmnd_color, SRC_SWITCH); + ExecuteCommand(cmnd_color, SRC_REMOTE); } } } From 10af28842c4060917c2d24ebdf1cd95d3ef1dabc Mon Sep 17 00:00:00 2001 From: Staars Date: Mon, 9 Nov 2020 20:27:11 +0100 Subject: [PATCH 051/293] MI_ESP32: prepare for core-stage --- tasmota/xsns_62_MI_ESP32.ino | 82 ++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index d68b99d60..71fddc839 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -745,28 +745,34 @@ void MI32StatusInfo() { * init NimBLE \*********************************************************************************************/ -void MI32Init(void) { - -MIBLEsensors.reserve(10); -MIBLEbindKeys.reserve(10); -MINBLEscanResult.reserve(20); +void MI32PreInit(void) { + MIBLEsensors.reserve(10); + MIBLEbindKeys.reserve(10); + MINBLEscanResult.reserve(20); MI32.mode.init = false; + + //test section for options + MI32.option.allwaysAggregate = 1; + MI32.option.noSummary = 0; + MI32.option.minimalSummary = 0; + MI32.option.directBridgeMode = 0; + MI32.option.showRSSI = 1; + MI32.option.ignoreBogusBattery = 1; // from advertisements + MI32.option.holdBackFirstAutodiscovery = 1; + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: pre-init")); +} + +void MI32Init(void) { + if (MI32.mode.init) return; + if (Wifi.status == 0) return; + if (!MI32.mode.init) { NimBLEDevice::init(""); - + AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: init BLE device")); MI32.mode.canScan = 1; MI32.mode.init = 1; MI32.period = Settings.tele_period; - //test section for options - MI32.option.allwaysAggregate = 1; - MI32.option.noSummary = 0; - MI32.option.minimalSummary = 0; - MI32.option.directBridgeMode = 0; - MI32.option.showRSSI = 1; - MI32.option.ignoreBogusBattery = 1; // from advertisements - MI32.option.holdBackFirstAutodiscovery = 1; - MI32StartScanTask(); // Let's get started !! } return; @@ -2179,30 +2185,34 @@ bool Xsns62(uint8_t function) { bool result = false; if (FUNC_INIT == function){ - MI32Init(); + MI32PreInit(); } - if (MI32.mode.init) { - switch (function) { - case FUNC_EVERY_50_MSECOND: - MI32Every50mSecond(); - break; - case FUNC_EVERY_SECOND: - MI32EverySecond(false); - break; - case FUNC_COMMAND: - result = MI32Cmd(); - break; - case FUNC_JSON_APPEND: - MI32Show(1); - break; -#ifdef USE_WEBSERVER - case FUNC_WEB_SENSOR: - MI32Show(0); - break; -#endif // USE_WEBSERVER - } + if(!MI32.mode.init){ + if(function==FUNC_EVERY_250_MSECOND){ + MI32Init(); + } + return result; } + switch (function) { + case FUNC_EVERY_50_MSECOND: + MI32Every50mSecond(); + break; + case FUNC_EVERY_SECOND: + MI32EverySecond(false); + break; + case FUNC_COMMAND: + result = MI32Cmd(); + break; + case FUNC_JSON_APPEND: + MI32Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + MI32Show(0); + break; +#endif // USE_WEBSERVER + } return result; } #endif // USE_MI_ESP32 From 621dc395dabd1e6bd2b06b0dc9c1de4ace8e53fb Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 10 Nov 2020 09:56:51 +0100 Subject: [PATCH 052/293] Use Tasmota core 2.7.4.7 fro platformio registry --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 4ad533b86..bc0605428 100644 --- a/platformio.ini +++ b/platformio.ini @@ -141,7 +141,7 @@ build_flags = -DUSE_IR_REMOTE_FULL [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 platform = espressif8266 @ 2.6.2 -platform_packages = framework-arduinoespressif8266 @ https://github.com/tasmota/Arduino/releases/download/2.7.4.7/esp8266-2.7.4.7.zip +platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} From 75201df20fc6fa76e7919baa9297e5ed236d8a22 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 10 Nov 2020 10:39:36 +0100 Subject: [PATCH 053/293] Add OTA download path to migration data --- README.md | 9 ++++----- RELEASENOTES.md | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 91cbc8486..19d5f2a63 100644 --- a/README.md +++ b/README.md @@ -68,17 +68,16 @@ See [wiki migration path](https://tasmota.github.io/docs/Upgrading#migration-pat 1. Migrate to **Sonoff-Tasmota 3.9.x** 2. Migrate to **Sonoff-Tasmota 4.x** 3. Migrate to **Sonoff-Tasmota 5.14** -4. Migrate to **Sonoff-Tasmota 6.7.1** -5. Migrate to **Tasmota 7.2.0** +4. Migrate to **Sonoff-Tasmota 6.7.1** (http://ota.tasmota.com/tasmota/release-6.7.1/) +5. Migrate to **Tasmota 7.2.0** (http://ota.tasmota.com/tasmota/release-7.2.0/) --- Major change in parameter storage layout --- -6. Migrate to **Tasmota 8.1** -7. Migrate to **Tasmota 8.5.1** +6. Migrate to **Tasmota 8.5.1** (http://ota.tasmota.com/tasmota/release-8.5.1/) --- Major change in internal GPIO function representation --- -8. Migrate to **Tasmota 9.1** +7. Migrate to **Tasmota 9.1** (http://ota.tasmota.com/tasmota/release-9.1.0/) While fallback or downgrading is common practice it was never supported due to Settings additions or changes in newer releases. Starting with version **v9.0.0.1** the internal GPIO function representation has changed in such a way that fallback is only possible to the latest GPIO configuration before installing **v9.0.0.1**. diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 77e497a0f..a87bf6ab0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -9,17 +9,16 @@ See [migration path](https://tasmota.github.io/docs/Upgrading#migration-path) fo 1. Migrate to **Sonoff-Tasmota 3.9.x** 2. Migrate to **Sonoff-Tasmota 4.x** 3. Migrate to **Sonoff-Tasmota 5.14** -4. Migrate to **Sonoff-Tasmota 6.7.1** -5. Migrate to **Tasmota 7.2.0** +4. Migrate to **Sonoff-Tasmota 6.7.1** (http://ota.tasmota.com/tasmota/release-6.7.1/) +5. Migrate to **Tasmota 7.2.0** (http://ota.tasmota.com/tasmota/release-7.2.0/) --- Major change in parameter storage layout --- -6. Migrate to **Tasmota 8.1** -7. Migrate to **Tasmota 8.5.1** +6. Migrate to **Tasmota 8.5.1** (http://ota.tasmota.com/tasmota/release-8.5.1/) --- Major change in internal GPIO function representation --- -8. Migrate to **Tasmota 9.1** +7. Migrate to **Tasmota 9.1** (http://ota.tasmota.com/tasmota/release-9.1.0/) While fallback or downgrading is common practice it was never supported due to Settings additions or changes in newer releases. Starting with release **v9.1.0 Imogen** the internal GPIO function representation has changed in such a way that fallback is only possible to the latest GPIO configuration before installing **v9.1.0**. From 7865fdaffb545eff2e299e689542ee9093079d16 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 10 Nov 2020 10:42:20 +0100 Subject: [PATCH 054/293] Remove very rarly used entrys --- platformio_override_sample.ini | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 27a93b4b6..f9606b36d 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -60,18 +60,6 @@ upload_port = COM5 extra_scripts = ${scripts_defaults.extra_scripts} ; pio/obj-dump.py -; *** Upload file to OTA server using SCP -;upload_port = user@host:/path -;extra_scripts = ${scripts_defaults.extra_scripts} -; pio/strip-floats.py -; pio/sftp-uploader.py - -; *** Upload file to OTA server in folder api/arduino using HTTP -;upload_port = domus1:80/api/upload-arduino.php -;extra_scripts = ${scripts_defaults.extra_scripts} -; pio/strip-floats.py -; pio/http-uploader.py - lib_extra_dirs = ${library.lib_extra_dirs} [core] From 271a07c506da8c6e8a6ab38ffa3c21bc875c1c38 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 10 Nov 2020 10:51:44 +0100 Subject: [PATCH 055/293] Remove more obsolete entrys --- platformio_override_sample.ini | 56 +--------------------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index f9606b36d..3eaa0f2c1 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -83,35 +83,6 @@ build_flags = ${esp82xx_defaults.build_flags} -free -fipa-pta -; *********** Alternative Options, enable only if you know exactly what you do ******** -; NONOSDK221 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK221 -; NONOSDK22x_190313 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190313 -; NONOSDK22x_191024 = 2.2.1+111-dev(5ab15d1) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191024 -; NONOSDK22x_191105 = 2.2.1+113-dev(bb83b9b) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191105 -; NONOSDK22x_191122 = 2.2.1+119-dev(a58da79) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191122 -; NONOSDK3V0 (known issues) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 -; lwIP 1.4 -; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; lwIP 2 - Low Memory -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; lwIP 2 - Higher Bandwidth -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; lwIP 2 - Higher Bandwidth Low Memory no Features -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM -; Exception code in firmware /needs much space! -; -fexceptions -; -lstdc++-exc - [core_stage] ; *** Esp8266 core for Arduino version stage platform_packages = framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git @@ -122,32 +93,7 @@ build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable build_flags = ${esp82xx_defaults.build_flags} -Wno-switch-unreachable -; *********** Alternative Options, enable only if you know exactly what you do ******** -; NONOSDK221 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK221 -; NONOSDK22x_190313 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190313 -; NONOSDK22x_191024 = 2.2.1+111-dev(5ab15d1) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191024 -; NONOSDK22x_191105 = 2.2.1+113-dev(bb83b9b) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191105 -; NONOSDK22x_191122 = 2.2.1+119-dev(a58da79) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_191122 -; NONOSDK3V0 (known issues) -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 -; lwIP 2 - Low Memory -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; lwIP 2 - Higher Bandwidth -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; lwIP 2 - Higher Bandwidth Low Memory no Features -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY_LOW_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM -; Exception code in firmware /needs much space! -; -fexceptions -; -lstdc++-exc + [common32] platform = ${core32.platform} From 3334fe58ed58dc236f6467ea6e9b119243acd03c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 10 Nov 2020 15:04:45 +0100 Subject: [PATCH 056/293] Prep AS608/R503 FIngerprint sensor support --- .../Adafruit_Fingerprint.cpp | 369 ++++++++++++++++++ .../Adafruit_Fingerprint.h | 157 ++++++++ .../README.md | 19 + .../ZFM-20_Fingerprint_Module.pdf | Bin 0 -> 2526320 bytes .../documentation/fingerprint_en.pdf | Bin 0 -> 23847 bytes .../documentation/readme.txt | 7 + .../examples/Leo_passthru/.uno.test.skip | 0 .../examples/Leo_passthru/Leo_passthru.ino | 21 + .../examples/blank/blank.ino | 11 + .../examples/changepassword/.due.test.skip | 0 .../examples/changepassword/.esp32.test.skip | 0 .../examples/changepassword/.m4.test.skip | 0 .../examples/changepassword/.zero.test.skip | 0 .../changepassword/changepassword.ino | 62 +++ .../examples/delete/.due.test.skip | 0 .../examples/delete/.esp32.test.skip | 0 .../examples/delete/.m4.test.skip | 0 .../examples/delete/.zero.test.skip | 0 .../examples/delete/delete.ino | 94 +++++ .../examples/emptyDatabase/.due.test.skip | 0 .../examples/emptyDatabase/.esp32.test.skip | 0 .../examples/emptyDatabase/.m4.test.skip | 0 .../examples/emptyDatabase/.zero.test.skip | 0 .../examples/emptyDatabase/emptyDatabase.ino | 60 +++ .../examples/enroll/.due.test.skip | 0 .../examples/enroll/.esp32.test.skip | 0 .../examples/enroll/.m4.test.skip | 0 .../examples/enroll/.zero.test.skip | 0 .../examples/enroll/enroll.ino | 212 ++++++++++ .../examples/fingerprint/.due.test.skip | 0 .../examples/fingerprint/.esp32.test.skip | 0 .../examples/fingerprint/.m4.test.skip | 0 .../examples/fingerprint/.zero.test.skip | 0 .../examples/fingerprint/fingerprint.ino | 141 +++++++ .../show_fingerprint_templates/.due.test.skip | 0 .../.esp32.test.skip | 0 .../show_fingerprint_templates/.m4.test.skip | 0 .../.zero.test.skip | 0 .../show_fingerprint_templates.ino | 156 ++++++++ .../library.properties | 9 + .../license.txt | 26 ++ tasmota/language/bg_BG.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/vi_VN.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/support_features.ino | 4 +- tasmota/tasmota_template.h | 8 +- tools/decode-status.py | 4 +- 67 files changed, 1402 insertions(+), 4 deletions(-) create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/readme.txt create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/.uno.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/Leo_passthru.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/blank/blank.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/changepassword.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties create mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp new file mode 100644 index 000000000..4c408bbb6 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp @@ -0,0 +1,369 @@ +/*************************************************** + This is a library for our optical Fingerprint sensor + + Designed specifically to work with the Adafruit Fingerprint sensor + ----> http://www.adafruit.com/products/751 + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include "Adafruit_Fingerprint.h" +#include + +//#define FINGERPRINT_DEBUG + +#if ARDUINO >= 100 + #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__) +#else + #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__, BYTE) +#endif + +#define SERIAL_WRITE_U16(v) SERIAL_WRITE((uint8_t)(v>>8)); SERIAL_WRITE((uint8_t)(v & 0xFF)); + +#define GET_CMD_PACKET(...) \ + uint8_t data[] = {__VA_ARGS__}; \ + Adafruit_Fingerprint_Packet packet(FINGERPRINT_COMMANDPACKET, sizeof(data), data); \ + writeStructuredPacket(packet); \ + if (getStructuredPacket(&packet) != FINGERPRINT_OK) return FINGERPRINT_PACKETRECIEVEERR; \ + if (packet.type != FINGERPRINT_ACKPACKET) return FINGERPRINT_PACKETRECIEVEERR; + +#define SEND_CMD_PACKET(...) GET_CMD_PACKET(__VA_ARGS__); return packet.data[0]; + +/*************************************************************************** + PUBLIC FUNCTIONS + ***************************************************************************/ + + +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +/**************************************************************************/ +/*! + @brief Instantiates sensor with Software Serial + @param ss Pointer to SoftwareSerial object + @param password 32-bit integer password (default is 0) +*/ +/**************************************************************************/ +Adafruit_Fingerprint::Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password) { + thePassword = password; + theAddress = 0xFFFFFFFF; + + hwSerial = NULL; + swSerial = ss; + mySerial = swSerial; +} +#endif + +/**************************************************************************/ +/*! + @brief Instantiates sensor with Hardware Serial + @param hs Pointer to HardwareSerial object + @param password 32-bit integer password (default is 0) + +*/ +/**************************************************************************/ +Adafruit_Fingerprint::Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password) { + thePassword = password; + theAddress = 0xFFFFFFFF; + +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + swSerial = NULL; +#endif + hwSerial = hs; + mySerial = hwSerial; +} + +/**************************************************************************/ +/*! + @brief Initializes serial interface and baud rate + @param baudrate Sensor's UART baud rate (usually 57600, 9600 or 115200) +*/ +/**************************************************************************/ +void Adafruit_Fingerprint::begin(uint32_t baudrate) { + delay(1000); // one second delay to let the sensor 'boot up' + + if (hwSerial) hwSerial->begin(baudrate); +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + if (swSerial) swSerial->begin(baudrate); +#endif +} + +/**************************************************************************/ +/*! + @brief Verifies the sensors' access password (default password is 0x0000000). A good way to also check if the sensors is active and responding + @returns True if password is correct +*/ +/**************************************************************************/ +boolean Adafruit_Fingerprint::verifyPassword(void) { + return checkPassword() == FINGERPRINT_OK; +} + + + +uint8_t Adafruit_Fingerprint::checkPassword(void) { + GET_CMD_PACKET(FINGERPRINT_VERIFYPASSWORD, + (uint8_t)(thePassword >> 24), (uint8_t)(thePassword >> 16), + (uint8_t)(thePassword >> 8), (uint8_t)(thePassword & 0xFF)); + + if (packet.data[0] == FINGERPRINT_OK) + return FINGERPRINT_OK; + else + return FINGERPRINT_PACKETRECIEVEERR; +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to take an image of the finger pressed on surface + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_NOFINGER if no finger detected + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_IMAGEFAIL on imaging error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getImage(void) { + SEND_CMD_PACKET(FINGERPRINT_GETIMAGE); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to convert image to feature template + @param slot Location to place feature template (put one in 1 and another in 2 for verification to create model) + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_IMAGEMESS if image is too messy + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_FEATUREFAIL on failure to identify fingerprint features + @returns FINGERPRINT_INVALIDIMAGE on failure to identify fingerprint features +*/ +uint8_t Adafruit_Fingerprint::image2Tz(uint8_t slot) { + SEND_CMD_PACKET(FINGERPRINT_IMAGE2TZ,slot); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to take two print feature template and create a model + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_ENROLLMISMATCH on mismatch of fingerprints +*/ +uint8_t Adafruit_Fingerprint::createModel(void) { + SEND_CMD_PACKET(FINGERPRINT_REGMODEL); +} + + +/**************************************************************************/ +/*! + @brief Ask the sensor to store the calculated model for later matching + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::storeModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_STORE, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to load a fingerprint model from flash into buffer 1 + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::loadModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_LOAD, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to transfer 256-byte fingerprint template from the buffer to the UART + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::getModel(void) { + SEND_CMD_PACKET(FINGERPRINT_UPLOAD, 0x01); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to delete a model in memory + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::deleteModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_DELETE, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF), 0x00, 0x01); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to delete ALL models in memory + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::emptyDatabase(void) { + SEND_CMD_PACKET(FINGERPRINT_EMPTY); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to search the current slot 1 fingerprint features to match saved templates. The matching location is stored in fingerID and the matching confidence in confidence + @returns FINGERPRINT_OK on fingerprint match success + @returns FINGERPRINT_NOTFOUND no match made + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::fingerFastSearch(void) { + // high speed search of slot #1 starting at page 0x0000 and page #0x00A3 + GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3); + fingerID = 0xFFFF; + confidence = 0xFFFF; + + fingerID = packet.data[1]; + fingerID <<= 8; + fingerID |= packet.data[2]; + + confidence = packet.data[3]; + confidence <<= 8; + confidence |= packet.data[4]; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Ask the sensor for the number of templates stored in memory. The number is stored in templateCount on success. + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getTemplateCount(void) { + GET_CMD_PACKET(FINGERPRINT_TEMPLATECOUNT); + + templateCount = packet.data[1]; + templateCount <<= 8; + templateCount |= packet.data[2]; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Set the password on the sensor (future communication will require password verification so don't forget it!!!) + @param password 32-bit password code + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::setPassword(uint32_t password) { + SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (password >> 24), (password >> 16), (password >> 8), password); +} + +/**************************************************************************/ +/*! + @brief Helper function to process a packet and send it over UART to the sensor + @param packet A structure containing the bytes to transmit +*/ +/**************************************************************************/ + +void Adafruit_Fingerprint::writeStructuredPacket(const Adafruit_Fingerprint_Packet & packet) { + SERIAL_WRITE_U16(packet.start_code); + SERIAL_WRITE(packet.address[0]); + SERIAL_WRITE(packet.address[1]); + SERIAL_WRITE(packet.address[2]); + SERIAL_WRITE(packet.address[3]); + SERIAL_WRITE(packet.type); + + uint16_t wire_length = packet.length + 2; + SERIAL_WRITE_U16(wire_length); + + uint16_t sum = ((wire_length)>>8) + ((wire_length)&0xFF) + packet.type; + for (uint8_t i=0; i< packet.length; i++) { + SERIAL_WRITE(packet.data[i]); + sum += packet.data[i]; + } + + SERIAL_WRITE_U16(sum); + return; +} + +/**************************************************************************/ +/*! + @brief Helper function to receive data over UART from the sensor and process it into a packet + @param packet A structure containing the bytes received + @param timeout how many milliseconds we're willing to wait + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_TIMEOUT or FINGERPRINT_BADPACKET on failure +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet * packet, uint16_t timeout) { + uint8_t byte; + uint16_t idx=0, timer=0; + + while(true) { + while(!mySerial->available()) { + delay(1); + timer++; + if( timer >= timeout) { +#ifdef FINGERPRINT_DEBUG + //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG " Time out")); + //AddLog(LOG_LEVEL_INFO); +#endif + return FINGERPRINT_TIMEOUT; + } + } + byte = mySerial->read(); + //mydata[0] = idx; + mydata[idx] = byte; +#ifdef FINGERPRINT_DEBUG + //Serial.print("<- 0x"); Serial.println(byte, HEX); + //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "<- 0x%x", byte)); + //AddLog(LOG_LEVEL_INFO); +#endif + switch (idx) { + case 0: + if (byte != (FINGERPRINT_STARTCODE >> 8)) + continue; + packet->start_code = (uint16_t)byte << 8; + break; + case 1: + packet->start_code |= byte; + if (packet->start_code != FINGERPRINT_STARTCODE) + return FINGERPRINT_BADPACKET; + break; + case 2: + case 3: + case 4: + case 5: + packet->address[idx-2] = byte; + break; + case 6: + packet->type = byte; + break; + case 7: + packet->length = (uint16_t)byte << 8; + break; + case 8: + packet->length |= byte; + break; + default: + packet->data[idx-9] = byte; + if((idx-8) == packet->length) + return FINGERPRINT_OK; + break; + } + idx++; + } + // Shouldn't get here so... + return FINGERPRINT_BADPACKET; +} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h new file mode 100644 index 000000000..783b708aa --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h @@ -0,0 +1,157 @@ +#ifndef ADAFRUIT_FINGERPRINT_H +#define ADAFRUIT_FINGERPRINT_H + +/*************************************************** + This is a library for our optical Fingerprint sensor + + Designed specifically to work with the Adafruit Fingerprint sensor + ----> http://www.adafruit.com/products/751 + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include "Arduino.h" +#if defined(__AVR__) || defined(ESP8266) + //#include + #include +#elif defined(FREEDOM_E300_HIFIVE1) + #include + #define SoftwareSerial SoftwareSerial32 +#endif + +#define FINGERPRINT_OK 0x00 +#define FINGERPRINT_PACKETRECIEVEERR 0x01 +#define FINGERPRINT_NOFINGER 0x02 +#define FINGERPRINT_IMAGEFAIL 0x03 +#define FINGERPRINT_IMAGEMESS 0x06 +#define FINGERPRINT_FEATUREFAIL 0x07 +#define FINGERPRINT_NOMATCH 0x08 +#define FINGERPRINT_NOTFOUND 0x09 +#define FINGERPRINT_ENROLLMISMATCH 0x0A +#define FINGERPRINT_BADLOCATION 0x0B +#define FINGERPRINT_DBRANGEFAIL 0x0C +#define FINGERPRINT_UPLOADFEATUREFAIL 0x0D +#define FINGERPRINT_PACKETRESPONSEFAIL 0x0E +#define FINGERPRINT_UPLOADFAIL 0x0F +#define FINGERPRINT_DELETEFAIL 0x10 +#define FINGERPRINT_DBCLEARFAIL 0x11 +#define FINGERPRINT_PASSFAIL 0x13 +#define FINGERPRINT_INVALIDIMAGE 0x15 +#define FINGERPRINT_FLASHERR 0x18 +#define FINGERPRINT_INVALIDREG 0x1A +#define FINGERPRINT_ADDRCODE 0x20 +#define FINGERPRINT_PASSVERIFY 0x21 + +#define FINGERPRINT_STARTCODE 0xEF01 + +#define FINGERPRINT_COMMANDPACKET 0x1 +#define FINGERPRINT_DATAPACKET 0x2 +#define FINGERPRINT_ACKPACKET 0x7 +#define FINGERPRINT_ENDDATAPACKET 0x8 + +#define FINGERPRINT_TIMEOUT 0xFF +#define FINGERPRINT_BADPACKET 0xFE + +#define FINGERPRINT_GETIMAGE 0x01 +#define FINGERPRINT_IMAGE2TZ 0x02 +#define FINGERPRINT_REGMODEL 0x05 +#define FINGERPRINT_STORE 0x06 +#define FINGERPRINT_LOAD 0x07 +#define FINGERPRINT_UPLOAD 0x08 +#define FINGERPRINT_DELETE 0x0C +#define FINGERPRINT_EMPTY 0x0D +#define FINGERPRINT_SETPASSWORD 0x12 +#define FINGERPRINT_VERIFYPASSWORD 0x13 +#define FINGERPRINT_HISPEEDSEARCH 0x1B +#define FINGERPRINT_TEMPLATECOUNT 0x1D + +//#define FINGERPRINT_DEBUG + +#define DEFAULTTIMEOUT 1000 ///< UART reading timeout in milliseconds + +///! Helper class to craft UART packets +struct Adafruit_Fingerprint_Packet { + +/**************************************************************************/ +/*! + @brief Create a new UART-borne packet + @param type Command, data, ack type packet + @param length Size of payload + @param data Pointer to bytes of size length we will memcopy into the internal buffer +*/ +/**************************************************************************/ + + Adafruit_Fingerprint_Packet(uint8_t type, uint16_t length, uint8_t * data) { + this->start_code = FINGERPRINT_STARTCODE; + this->type = type; + this->length = length; + address[0] = 0xFF; address[1] = 0xFF; + address[2] = 0xFF; address[3] = 0xFF; + if(length<64) + memcpy(this->data, data, length); + else + memcpy(this->data, data, 64); + } + uint16_t start_code; ///< "Wakeup" code for packet detection + uint8_t address[4]; ///< 32-bit Fingerprint sensor address + uint8_t type; ///< Type of packet + uint16_t length; ///< Length of packet + uint8_t data[64]; ///< The raw buffer for packet payload +}; + +///! Helper class to communicate with and keep state for fingerprint sensors +class Adafruit_Fingerprint { + public: + uint8_t mydata[100]; + +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password = 0x0); +#endif + Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password = 0x0); + + void begin(uint32_t baud); + + boolean verifyPassword(void); + uint8_t getImage(void); + uint8_t image2Tz(uint8_t slot = 1); + uint8_t createModel(void); + + uint8_t emptyDatabase(void); + uint8_t storeModel(uint16_t id); + uint8_t loadModel(uint16_t id); + uint8_t getModel(void); + uint8_t deleteModel(uint16_t id); + uint8_t fingerFastSearch(void); + uint8_t getTemplateCount(void); + uint8_t setPassword(uint32_t password); + void writeStructuredPacket(const Adafruit_Fingerprint_Packet & p); + uint8_t getStructuredPacket(Adafruit_Fingerprint_Packet * p, uint16_t timeout=DEFAULTTIMEOUT); + + /// The matching location that is set by fingerFastSearch() + uint16_t fingerID; + /// The confidence of the fingerFastSearch() match, higher numbers are more confidents + uint16_t confidence; + /// The number of stored templates in the sensor, set by getTemplateCount() + uint16_t templateCount; + + private: + uint8_t checkPassword(void); + uint32_t thePassword; + uint32_t theAddress; + uint8_t recvPacket[20]; + + Stream *mySerial; +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + TasmotaSerial *swSerial; +#endif + HardwareSerial *hwSerial; +}; + +#endif diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md new file mode 100644 index 000000000..1a5a5cb20 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md @@ -0,0 +1,19 @@ +# Adafruit Fingerprint Sensor Library [![Build Status](https://travis-ci.org/adafruit/Adafruit-Fingerprint-Sensor-Library.svg?branch=master)](https://travis-ci.org/adafruit/Adafruit-Fingerprint-Sensor-Library) + + + +Secure your project with biometrics - this all-in-one optical fingerprint sensor will make adding fingerprint detection and verification super simple. These modules are typically used in safes - there's a high powered DSP chip that does the image rendering, calculation, feature-finding and searching. Connect to any microcontroller or system with TTL serial, and send packets of data to take photos, detect prints, hash and search. You can also enroll new fingers directly - up to 162 finger prints can be stored in the onboard FLASH memory. There's a red LED in the lens that lights up during a photo so you know its working. + + +Designed specifically to work with the Adafruit Fingerprint sensor + * http://www.adafruit.com/products/751 + +Pick one up today in the adafruit shop! + +These sensors use TTL Serial to communicate, 2 pins are required to interface + +Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +BSD license, check license.txt for more information +All text above must be included in any redistribution \ No newline at end of file diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d732b828057679f0441c86a14c25b6b3464a6325 GIT binary patch literal 2526320 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

VKXO<< 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

(-J>91>C= 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 z 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≪5v;J* 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 z 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

AU1co;7^Lyj$c&8>9RIUUI$0?o zxGFFQP(}+Ww84x63kQl9T0w@xN5&Jl49Z#bZke#odG0Dz0lG|;O;LA!&hopf@yRdp z%?h}BHMi97@VgP+qc)E6Fp0a=Eo2u0V>opnR0Y{_6jHU6%Ui0HmQgJzqXw4yKO&yO z4Qv3WPqnNo{^Fvg27vFIoTO?1gF1{NY#^)k9+IV04EHm@Y0r}kpDEQK_LD+WK;96I z6akLwZ7izdJkfj0EaF?SJ=rv8I1os0ZE>?cF+jQFqaN z0!6}}<|Tyh8(gt@BGTbKGs3Uu)Oo)kZc2Cn<^|!?iI{c)as}N|L4HoJk6v5^5_o!K zdHSKF{$wB{X`0iYcHkH&_Kwr5kGU#w0s6#k9zntjA`9Y^y_n#(bL>a#cm9)fYMWzq zz7qQs_)j8y_rQ}KvgvdUZXvmywG04yuXcfbL#OEB$tc#|W7`K22R6Kt3vUr zNYv6T6B4r%vy;0d7!xL#>qA;cCtPX{Px$eS%(|^0yF3vRdOZN>dZ1jyqBi=oyaA2( z4h@VDyVxMq7`mtfBX-sawYZwrR}{*L~3g#pC4IHx<}=zjya z7$^H2=-<#AN5?L0m%8(#S04%v8Heoez`q|P1QJfkj=g6WAOsi(uJ_+MJ9d!2qwj8* z!43!bZ$QQw?y-mY8>Ig|V|ZUt1iVTga0s9d=XdC*#{rNG{Ey)O@0scoEyNAIvtCX3 zEsvWe=)WPL8L#8fzZoy_apyOBhmBoJ?=Dz~=D&5=I5vMrf4f>h9PFOI0c04=&I;gf zK=_XglwBpj@OMDKq3)>#`WpoQBlBgySc7ez7hRi7n~w{kBQ6Ws;fI6t0;WiN^JtXN z^F_o4>4kerc;gjM^P^m2M{;k$JgQzy&jq8+FVFAR&!H#4@6zuWAl>dVZ1dM>rQNCYgR3ddw&4iQ7R4PN&{8lfpbd}{z!88#z<2;z{+NSkJ!+@H z_xKIq4LAhwAAmgK7_yNGI|Q4J39F~YYblolJFg9v@LiiMmvg_)EY@H_J&KDrK}?$j zTw`6lRE2Xy3)Y}II)~hWX64*wo3M^;URamenSKo|HJpPme{afb+LRSN;0elZ`3pXV zKgjXx2J4t27Pi9P1wgXQJY}Mci>QEPz$G_`o%-UyrZ?+kk}_{-6@1~AWlASggZ$EM zaNkQJ9YO9_#(R+l#KVWI28B|}qWfCwnmg28cA$Yi9)6lL4{gs3#z`*KM zx)pTE@QeIqzfE+Gi;ZMke=DB(Y$5KH^OWq=p}8}se~Q2rmoOU3RK`tZ^Wq}dGv{1Z zk~w*%V`d7MRAzscVFH5Ae#cmANQ6YV8R2?ce_9L(y%1%*MP>?_09q*fjQj8TL#yKp zsTeg=(D zyh^SIfX!k}Cv7$7pQfC%LTB8=T9hCr*!~&e{N)qf#=9;%;&4H@_qI4DgXa!(N|eB z+*(y5v_Pwn0$`SK0GL~)upo?`d<-0zZwa57FwO@>Qea#sd+b12gR=3U+I53;Cq`qZ zr%U21h{^yzx(i_k}R5S5E0=yIv-LHqHF&l`brTF?H0TJ>!aJC=waL@`(K zv6?bEIP&u9ANdu`&BYNF<9>nh8~JNKKZ8~$@7f9&s{1OtN2nvnRY&g6$X_%Lk|qn@ zZ#(MTbym5neX4wjssW8RuI`~LoaeeBpfQ1#87n|pwQz9N7WgIc^qrg-fUq4Qlw zL2REJ3~q;l4|%!##EOhdjPEHLnD9`0)PTGd5TV}&M6UBQycOU;z)2s-Kf?(!`KC9m z)w8+apdmMuYqXx1omoSCg`Ge!<&z_PU#LNqr^+5mMi_PzeLs~y7fr7=TG{bJD%orRZmp#Ito2#?FtIMoy?Nwj1lp6bIcj{{y){ z2O)~GP7cJLE;`@MuIdWioNABZOIC*ww;|#*Bp-94yX*~nv^{#-3)O5Vv9oN;96Jbg(r*HrLfXfDV8+Ocd3wT7kK$sgAt^{5GWubVwVDj8!wtKei z2&ob3>WO>s*1@X(3zxm`nX9-R3b6_NMmla-x8fbF&teh8wg3EWl{)pQQ1JW@MgMjZ z{8(LrehUY5_hg;xSKQX%?xj?sJH?o$7fwjM+ol6`RVB(gT_$2Dc09 zgNoevZoH(Ug%GY?O#;Oz8uai)_AS2OOB27Y_UZ`)8Jhm*-OQ?Oe_d;Ry==A(GHIk5P)RKb!t0HB1B!&^Y@xx=sI+SKmd0^VC^R6bd^W%fSySi&HHTRS(7aKsd-HH|x_-HnzekLdp!u-iTI+$po@mqsQTwRQ$a!0HoPfuv zzI~l>5?0*}Iv$c9y2W?d-U4;YU1N*8QD zQ*4u`N6`}xf(>DhxrMm9chb1RwFIjAaT}6m2>DVzSUEy7?D!IN?XfG#v;475Y%-Df zf;_2jttcw=EN>qEfJ|9cC*EYxI{3P$cgTIJx61s?Pcnl&W@D+eam(Muoo32*)#Cyb z=fi|%H$D(mA1pZF*ht_CZ5POioo@Xg_~3P7#tqRrni+hc+feqzeD3QKp=8+a(d9nx zcZjp($bjY9B(dS(4tIw0Nq;kZg5(P3SUll-x*Td6u zIWuUp@#zVT^$O8w2iAxXq-lLg;7ZRKdo+&4DO!W18lJ(@y#K9RysQT)?c(bR95R!@ry$uuwMRImF>7EEPYPpF)h4<^Gq)># z|8bSFmCzO6l`LDZ)OV=vUgee5A?qXUBk2QfT5GyvOMFGYKz&VdoODm6RIt!wVVXI$ zRq0bzrr}D9&(^ZF?6X8|$5%~E!lwTog^w1-8v49ZgWyic6SafE?F^ECKv^1sXokv{ z;G+n9M(Q^#)Fh8a*}QvE4sDx8Tp52wws|scls85q4RdH%7>uVse1N`6+M=s2O?)_9 zm^Ow@6Ky48+u(nx-)`=Ehca$Zu;Sek{|PEONUwLj9NT`v%o$=;RAO%H0emTd9{>C^ zmDztwu#Ou$E%H4oWp@)M)^CGC4(WQqmS!*qw*mdi(P#b!z@|nw=CcgWl|N#p-CGi$ z+_cP}%^Hjfm%ew8c$B=L*3AXj zqcaJw`IvWlGTV~p@IdA!dl0s^-U(Pk7?-`S=IRkkV^quua&5QBmu}scv``?l{Nf`<9-BaL2 zkP#zuFlfr(0@W(;Y0*1PSMV+CV~3I=-LX<) zguk~(l8lfXdgx7OEf#v<=Ad~j>9(kzKqU&@mT99(V*IKxXqf>bwmTE|6XOTV&yp#oh&inFt-ZgFN&|BD3@v#r!VLJ1fL$rY+!Uj zbzd>bjax6gJGFeW0op$5xqfs5njeud;t3{@6DnzgV^^Lq|bJ0jcX20m@-3`FO1TXBb7MHG78z4LeSzPEihq zam-k{A3l$Emv2T@jB6o!nErjS)_(dVSTJm|$9i8-OQ^`I5}NOojLTTbWxNi@d^KoW zZNu*(?tZ1RR}0K&i~f9KWxlhmFrn7oUZ8yGx2Hi&m7+tx+H)6ELfr$hLti*x_Q103 zK9bX5lms?OXx@j`eopjvaWAGf*w@8SU_@{tc;QoySq^JQ15uHxlB#uL_(O%ez0mjkYfDeviR30tg9kmN{ZIzOwtjC}$!eX^~)L;vzunb(~fX~ki@a^nTG5nYe?od)NjYN=KP zoAm`z2DqT0-EtgKg{dB)=vNxXr%rU?R`47So`Ku*%F4>#==s9!pv0f#xu1!(^>zOK zp0l}Cl!mXU9!UFT)sSa{#-)%bBd9wkr03B(;dmf83*(*9T8}JE2I_aR$SXtwYv-Tl$}x$P$eg@x?+kSNija%PIk+|y7aIGlKrjirS>gt z+eyU3NwObm>($#YPorUt$aT{P=dJT2>kiD5^iCJ1hf5X*2|?sDi-QY`W;f*`ctV7se7s6sUi%Lk;F5FTGudZI*RK} z;}G4CT7F=rAL)#iKNcXc+hS2SD(Y+W8C}qD*I6j0VBq&b1;db#h<+|dUUgJn#v@-9 zhnV-=fNGL$Fd3blPup(r(wlDN+F&PY>)Yp8b$3?LP(1X7+(E+*W|0{k%hm2%dmS)N zFSnp?qCXEZozN_!&`J(pp9G0$tegi`~Y1|xlX9w%?Y9dw9Yasnz zEN6{o8Rct2{R<;CE*2p(`6I6{aXm6Gn3HPC>yByo9O}{rqA9t`p83>8N+$W#T|8Yx zhK%FL)8usnzxn{?fq|Il!}2ybHyL~fMi>~%8mR3FnGvdM^o@)%E3D3n~8Gc%OMeq1S?L&)ePaAMY=^8L2W}-QrAT@w_=@s+Wzy-NSgNrb&I5y+QNF z8VaLo1#mL48iQOIU-?O?BlY_fN5~X4>&e3)f0-1~y59RgM zwo(eY2sw+FrL);wuGkRocX9YP6?)w`-E1}fVdpQ_S~2}ARNyww%8Ps1=PebdVJ28- zDcjC`>lktGou2f;f|SEX8OC)u?3t3?&7H_lm!ICE#w5?;G(lta`mmRJu!M!Q-fraf zZa%KC-uT*lItXf|*EsLCbK;RD0seo$)57{(b%exA9TDVU>{W^@jbiHJ2 z@3huimq(YxJA;B4gMsm;bMh@k8MCDM(Uj8zxZ7iuHjajYkclsk(*s20PYK~7ENVJe z)te6;&M*u5i@YlUy`<3HURd*&_OBlau%%*u{OF1I0|FH88|zru{WbaXRfz2y9L+Xn z0I(1iIb6J~+%E!Z9jx>+uj;@}&f*xlG-NR&KP@h*4Ha6=%t~H8#RQ48E`{DiS`2`1 zLFdDFSVy=D^L@~TuTf$0_z@?9fa7{{_gjYKJiu6c`TTzo5VfGwOUtl}U1{{sskznf zzlEXupk(bN_i~A;iTgooK<%V~-CO``$tSx}iX(FRB_^&?QvN)VaDQfth?L2Lx)`)d z*_ae)GeMxFgHfI9lwq6@Rq9{;i8cF?aS2OqOItvAomJd>2AbleB=I$SS!gM$os=YU zdNcLR`|vO(XSc{zw7VGG$wq@IT%z0jgB+aRUcWF`KUIsyBY4Uw)UxkS>bjwN&7{uk zA?tfSU7f`3zOo{xk8?xCK|TkK7#6ZRiee&jd4FkQ{?t5>FZ^4lj2*t`at-fgd-2h# zWB=XSaq*{KJA%#6=%!G7>w1@l)pgLoppfEK>s@^ZVWMWgk|5B~aCitL$@0dvjuvmR zYCsYacl#9SYC?>>*?fVRVFK-+`!H6+3Vx(f*#0ca5uwUlE;VFgB6<|Am~n9m3a&1_ z@Wp#U#%_bs%L6StBM*Hv*E^uZ82&mb@H)}ZBSia~}{KtRxZI?@@H87e=1^SaA z$Jyfq1N;@5ONDtkALpFFHQ3Ww(2^3BPU=!XlYW{m@{OvY?~%>c*P zwBXNE35trl9YY6uex^}%wPx(Wf^H0Ny4iAU8SXeswS4$?PET$R_W90d%u~3f3={J< zLp{IqHV3;VW!|+q!`QuOI|$hBEH|;eZn$)q6J<5)-JX*9UN|b{Q~cs(Bd$Z*bCe=c z3A<@EHc;5}vI$yARL;>1;#xjl8c`?RK3TbD9$uw<(-lfg%Qp;Auu$Rq=`su6-Ugx8=@I?x7Qmkb5^Q_n4^=S@A&9J4ce8t zk2Y8>+pG}Tr1BeGgi!N#Mi02r)7`us4IOloo?!>|ZnPsO+A!%jb1aaJdJb$S?sMKR zoQD0t;DdI>k{ix{-56O$8rbwe{^;K<_3e~s-Laub`3=dl5%thS_6XG6tb;ea!3#|L z1NZvo$L&xArQ3PD1lT^?i761(ZN@z+5eazLs@?rHQeX;XxNPp^&^v80Fud5x;?8hJ zTVORx3(CU%4Ua@eg&8Y_B>y^o$2{T^W6GBJxSS!Y;^PokoExX3mwS34wxSgIW}K8~ zp@JwGQ4`MXp%J6Q^$bZ;!;msqft8FBJ+fjlL6oFj3V*sHBd{Cm7QJD3;-{l^YOHaw z_-w^s+)Wapw~i08t$jI4`o0IlZhF|v)QEZ0NK7|kaLSyp`Pi*!Nt$34W8kEKxu!+< z_)&G57U7py-1FiNJ`}Aqn#L|m8W=`23i*o>HjzOwff1)sYJh86s#`N;wL;Zv7(i75 z;>!`E-EX_e3^y(ndUbKIt;qf&rl6`S(Ci5HZ1|Mziuuvpow@rO2QN9KT~s2zsa@Ju zNX~|P>m2mc|K}d>bHn!|@rvVuhEg#AboXm{z-pA9$O15qX zaVB&eElykQNpuIffoI*6UQIGtF2vSJRIJ@4t4|5!4v_gEr^`4OaCy6kbU$0VXWi3b z>R#XG3v{Jptn9ER)BKJNoj=Z}wnbXlv{F0tUpa?oz!tu^xAAV{edi{khVREL$F%1p zX6{`S?i?+jRfRfIJIT(qOPx!frtim3L2NP+wl+LPCjuRf6OALZ;mwJsxn}9<&6`>c zd9pDXn5U;alm3)NM>}_Ehe^w-iRm1N_0(ggDay%7(-%f2ayd3|^z9y!hd7RIrQ`x|>^_nFQS0?Yh#>l2A)08<{s{*lwkX1nR z?yETU1C^QDjAc%uqZj5TuLs?z{WKZos)7S?Oyg8iVOJcdI5G1|}KE zmMg4Xe2a7E=iQ5PfM^kO7XKc z_!-8LZ*(;wfv|NkS79ou@T%n~I@)-&!BI4V881th^V3{4IU`~0NLgA8gprNfB!$q9 z$UyR!)KMyGQN3xRiUT6K7BxtAG`Hy;2}19DDy`u6Hgf4)wecwypC}M>B;W_itd4sR ztqHj%^Yp^66Q|4Rm*bqNMNDJ_ml1aazkE~L333Lc_}ZP|=t-;RA~4+=&!{!=74n~q zM~dp4z^cDijYpgnU;m`dk4vSSK#?Z8MZh((oppQJ7!PhpIx3!WSDDO6Q)cPRY6)fC zc$6tJ^KboeBj0w)HOEtuINE!xU>aqcG@}ca6@^MjA9NQ23s0oZ7<}m~9GufRB|YWv z+TSdQ?d2LtpX~ckys3JqKD-~&0=%NkO$`Yi5;|g)L8Sk%#Pp=R+s|@N@Vdofv|Zs( zbl?o0*Nt0agRqpGXPlbuZ@1rCO<^nebfn2aVqOkrGeRg#i~iHHls?QBGb#qBCRE&N zpm(7C+&Jm*r{blU(~3^F9)srfDd~NL!@;$+h#lO2DA|lVdL(8rA zXrh>M*V+7YhC8tcMSHISE!`4HHelpf5s34a>~RLe1@z_R$J_=hT`tKX~q9ZnHlNZ zIQ>=R90@d;zrnTt*$-5bm6nr`p;k7xHg^1nANW7$f!_w&|D*^0BlFK=`VX}1FLe0- zM-P-2uo(CO)A5eVX#*dzoPp*65nNXkE7V+Mjvu=s`GdL1K2yl2yKb&n{ud~g`4I7_ z)cuBAia=M1p2oxvc3b2reF?C<;aT^*DZQ*wK2$@Kv;0_Ln`Msug%?78ZD@d3fkciH zR5&@-2RF5vW+Mg;zP{b_ImS6U2A};v-hK%)STyi>&&$2W3p-T>3^D#jLeMxJkS4jUjF%{ z{-=HSU!chUoecOdPT&7k7m(o};^cqh0y6wBzT`i4`8yd+0tU9fjgjS>1^h>2`6l=n zng6!G_q6|W{(m3jf1Urow*UUcl>ept$M{$N`>PZ(uzk~n-!3Q1|5pBE`#!?|BLDpz z3F+I38=IS&IYIqJ4C$4ejIC9_5Ayp{^&i=POyEDYKL+-10rbCWe++*C$p3-e{72@W zbNr7t&cCyZ|J42%nK{0<`#)=cUXWfWB2QlxSJ}kF2f=}s9%Mr7NPVtz z>mY#0BeB8|zYq{mP~qkM9ZD-cxe)-hgG7P>o#oLH6hQ2qMFx#Uh)Am1fWmVjjNYDq zpQYhIoLqhKc29qar!QYSFIJR4>vVFyIl~TwQUs#KNte}AY1eaRea^$=XY1tW%9)@g zwO`?Lq2RE!g~6PUM;uMp{lW0^3mwc$v=$v)AgbGF3a0SHRya>8I#jt=i~Q1qx_jSy z{WYhkrmzqhYT4@vHiH;57?S;A4|2i=&?#j?lloo!#ubm0YJ@P}L^?x7F*}3d5JQ2j zLI01-SqIg+)cfZ-Q~oFQtk0i?yZoO@OeTENDD5GoNpUR~FP5lJ+6ywfA5(SW^=>+z z*Sx>BwQoh}b)O@+`WOSq{n;RLQ+hVVd2a$IZ=9c<;m2VXNWynb)Q6Sqx*;PYMx~KN zcE(5TBPDF-4k6MI^V0IYJI$E?uuVqIhj#{x;vBe73RCKu=M}pd^LT zoZYes?1EizPPwmj{D53YV5oAU`ax}eT=kYAc&`y#2UrLEpC&X3FaQ!V)TB;|d=lSbV>s6Sc9t8L)3;=>% zFqa5U>yvo`teyC7x+guxHc-OIhuH^$K9qjX>t3hcXVsC#kXrQp?hbZ-xUG{%{b21$ z26cO_ow1JCPSm2hM6fexhqm(Bb2bUn@`3u;KciyuuMEyei_Etr=XY$+%OV(l*#u+* z_l_G=iFINJ@}XF6_kGcYww;;5-nDF%nVo}Pl>lnqy2LHvPE%B80ek?z)B%1dEDQNL zmlDG=P6%N&mnB6#^O&*=?T+kU76~>#0fmOkKPxMM9V(=VG!#4sT_xnUezAbk1^CS> zlU?jQvn9g5jM=Q5arE%=;z7Ov;Tie3Kq6azZsxfi!xAGk_yC`=*!fa8|R9xi8TLNYq8Wz2oNCJm@h zCmlFzaywt!@I%zM`VHNO<{SHw4Vd@!1E2WFwsid|Xzu~7+0e#j`QT@0TQ$7~$|1Jl zF@sq$U%1YO-`gI+IV=-Wu_5O~Z#;hV*6`fc`T;^_Qjr2PDKBV4oj3Hmw(Yy~i*41t z)8brL_%mIVxP+H86q40%AnDga{4`7K-h*V$^Me zZ{V9-$Ew2MfMSF*>)3F=hylX`MFYSIX(F@38y)&C=<4UqMS5a{)oV=r z^#|lYL>ySZ;8#QCY?W6e>q=aVE*wTXY!lqd7l#7cYiTvYtCUO#1==H-P&5jEdL8hS zx(L+?$-J%r_`Kb|(HKIkKpNN!+(k0T`UB7bFk`MM))__&<42T9I166>tlQB(Y5$H8 z4;MuMaQ3@nBqtM0_3UIZu^{;tSxx~?O}7wc^dl(aNV5XekR<*NjDF6tUVCHWz-yt= zC9M*J*EIzwa0!4Ze~NL9X%`~nJ?D%nSvFHo&Zw~Z_a!PP^)ij9g-5dHF z2YDU;ufY7MeZR(3p}tsEY224|!kpQr_vNfhugkbOug%xC0u)PNz@CNZ`>;n>$jM>m z)r;wlRITEeQP7XMyy{Ii*wp}=9=v?j93^%*VvaK$bW2yzk+&scz!yQ$Zse8czI+&uw-7YHFsZ$oaWJ*7TsuBx^>R3 zwpAPMuFbxEo8{YN5Uqtr@yzklPOmi1kD-5uNh6-kIsfx<&-wtfQjaOhC9}kOiTlwC zczw_{__41D^HH@ntyX7AkaZ5qMGEqx8vaeE4o|UzFYBIF6P@1ui1lUB1G4?rSyq?c z+3JP1HRJHylY=1{==|7LUjgr49GT`1gafmtE%0<~#`S&o(>>cu8Us)hWibAtftGc_ z{)jEBj?ew8;#c2B(SaepGre|o$Iwd~;U8*0XFkMF6b!c2G0d;7Ll8^slV$+4ySvUf z-^@Qyx{7>jv&S|Qqh8*7_snBAAMCmTAaIeJ0JgyRON_iF_l=R$r?4337-P=|mhq_> zz~_Ucsny0_vcp)c+0%!Bx}xnHV3#}Oab8(R7~Z!uHUA%LZvos!(=J$>nPZAcW;@21 znVFemW`>xVnK3al#LUbLG04nz%*;%yy#N30-n;v4?cJ&^x1~`}&vZ{uYg8JYr_a(X zv$>>zbaVAAz@bPABTgwXaFU$=y8VwIj&1;7_I$fC09LqaSJVFfh zfG8%y8vUN^ZY#3seG1?2THQzu&>2xp)q$-@9ddR88v@-Sy^KS&&9t!R*5Ev_&rmmc zOXb&{WlL$-eAM@uOHq>{_PDQJYFOV_9p;!YIT4P${YE!?7o3o`UdFyQaD?CJB1g|s zV|pbh?)chvUNQP}`DcL7HmD5!T=}vwwAXV>opP94$-%b*_bt0T;EA0E9Sp#<2w`XK zuac|asQdaAs^v?#^B#GM!`E*Gl^jTO3$#@DTbPF`zU!^;zkA%VujPeSn{zuUd(NEM zzGf&DgPBf1$UA1}A=gaNGu^>t2FP*p!f7Ip%*p@s6y*2wgR;S^Q4_qNbV6)}u!SDe zh0j1$wos(p`fTeno#YShi(8b1Fou4n*QhUyQ7YQgzw#VU;U5gc3H{7*hoUV>A;hMN zfuzd?)teKz0Zt(L5{7rzmHE1M0F7x;5+k-^d5Wq6;c6KvhiC}~`#k|gXs7mKGdByy z8)B&fvZyb0#yitNk-r!m!gqaY$Iu$3Z_+6G%B?-gA_(#ny~anyMq2_h8bBiO*eb%4E(9bkYBb@~_kKT~P$ z1%fjhR1l4#XqE0v-}`zC4yWF6qm%<3MI{8f;A}`EE1=K)zxIeJ3%3!kJfi#oGxLOH zgUv%mygtumyQQlvxceJt>Q{(!D7GSqf27b5p_l)Ax0t>mrD# zABI8@_!3d0_; zJ`lM?Z^N%Ma&F*Ow`T+G70x%#&cfl9a_CR*6Ye^ z!fPXs2=5&4?he(eR6u;%IPGo#x^&x8G6vr|5Js1l8FN&1Z95kO&q{dA4C{2s%q&+k} zWSH!Y*q|cx-0-H%qse17scb5KRGfnX&>u=+=TPT@jyLBEj@^#o?+QJo`3m$@PtKc#NR@U1#yp1xf2Ax)(UERyyi+Ux#O}c;Czy%NiJ_E2e**EZV zFa^lFzHX${d}O)`0a@Ld9?aI`Z2RIC_2%RFx{rpv7_N36-h91lA^?D{UjRSa*T-F~ z*T=xkxU1fXpIX$2pL_`hD<+2iXh|%@xZwD%1>J=L%xh#9a!hLj`r=>_1&Aia>uYUz z$IX+pNHQP<^m^>+ zp-L`EZXA<|)VZRrrqD%vZ(DlW7ibUuvUrk`u?R89=7EAMDeEJ2aO-)YJmf5{Q%$KJkN$sLp4VQmld z%&&tY{$Gy6j!TZw8;352OXhQe0bxt|wvLxO_rG5`cMyEPxoZh9VEayN4a>fW@swoE zTQ%-rN+-HTZ_NAV+MJc%r?|?#DBV~dm;m`p$j^wcGgmg_pV2val=PFi#KO%3xvR2z zEWTQN%&A+yG?qv$WD83nYZkDt0H&ooT{U%}J$XuRRv2Zfe5yN9r2HuVTq|*9Gv?pluqw6pJPYN#t=x9!&$sY_WTO<44e9;UuZ7a^bLDDD(#q44gM zm#^HVX#O;3MN(U|*-D|dtRlSYLF{Se*(4{gYlF(N-FvTLnInk(vDlbz<;-ieIU@VE z@-F6{Z_g|7{0jM&?~q51&!@k%oiPbRvz0OCx1pLQq78Qh``Po#GoQBhTgKhg;zzBo@mu-b z)VzJEAAAk^!*6Zj&URm!&T`+j)KV94XW+B-m3HQWmUZQz1qyxfd$N7=g{gig`(*QA z^Rh-c^1bbCr{+l&ZRNTmN6~#q+bC#4?U-s^eU3U;+x6)cHkTkPjYZQ%el<7SvrjII zb5#{5I$rj=o@eVWK_^ZpFbk&h$ffN~RerkNZ4+%syUVdkmD-E-RT8!*ZOLuBE4gh| z!&3y^mwWoh+zVW>i$1M8nmOs_R_cp3r5+voacnA9*_Dp-bX6XhU%Sn0&ZgKB^v(R1 zyUm7YGU6B>>qLH&vFR@s`qkb?nX+Ydb1HxO5L1(ToXLsxeHA<2Rw)h&&AO~j?Z!rY z-LwaXeu2xhCBf%s+bKePG4V;8c<6s7`f=g^ln^hk`ZWo0#OE9t+#sLVJqq46QSq#sNM+!G zFV~c{xh3pE60MZysoNOBl|lcM1F$$Op5xcgj;S7?M&eVryNpGHUBT|F?Oq-GP}M2o zyP0Dd3hSw~XOG=BW@O{-=FfJ_Q=|fFwL`2K+3N9=TaH?5-pGgaaZ4AE7?h}oBE07# z4<~)-CUqNMgXS|vwoeIYmU_n? z-Nb);IWxQOXFzN(l|9E=Vk4ZL^v5VjXuG~)FD#u2 zAWdjee?fbA@c$re@1Ofv001V=|Pf4?)83~N26*8^r!dS0mG%7__&UlSj-2PJ0k=4$0dzq3a=p4`V3 z`xk8pCGU%fn%^!V#f@Kb<1J9LqiDy1e?!HcJU8}6Aw6eX3iMx{lPCS_YY4lSKErl|MOM%I)7J}Iu zYjj6;vV7-OnfpT@{t{cV)LW^5Zd5Y?m1&+itTM_TkQh%^ggOp1*9@Ng;tX6{wm6U) zPtF)^9Um68J>a^`pK>~eHGy)*BvXmLkko=XL`s$thea8Fe~;OWG{&rlniqpT3X25? zv501%uMZ75Dj%9I-L4?SnPb%%X6G^_EA@AkTS6h0%A)3gb(xNpv)?LVa zA%tR@>=t$*Vx9gj^%>~Mk64#Yr#k>V7ps2AyHgezAYsNY2n??b`tUHkc~#Xq?EY+}DI&^toraQ|hMAOi0s{|&z=ZuXawHwoaq0=K zs>OFV8fV%p0+CSi8*>SCjL39y%r;v|yt&L_+nv40`1$Br_({t&2W}U6b4aSFn!5tu z(RG_vl#G`*g0SD?l+k0bZw9diJ^TD5hbK^-%G21>t~>}!PCL@yZS2%7#$8a;HMFyI zek85M*t+G<1|_wV3?QH)Y-6=s8qAy(ISOWyEv_#lB%RppfW`1~ku;Ys@j0pb+R5{@ zcM`W|WFTiA|M){G(Zs_$s-KxwAK>E5zaoFGz90J9K-aLO)G={V_$4HhCjG}nY81kn zGKoDI^C;oTh~w~vHqPQBZmtu+BJn5{0|u-07i?=*$hd*?yXHtvBvH?74HLU6Ej`1C zTm2wfEFy`?Vxt3>lZW*7Z+5qMvQ;H*pYJ3#@&z}1wpq5{3B|ae?eKnHSnk-65hb?U z#LDOiEAw;hZIM3yb}5jLUwXVTj#1Us8eOwQ&y8#kC(zfMr^5D$7TQH8~r% zuj*3eYh;`V>xO`#A72xKL@Xz(67p+7hDS%yxziGs;F9-VF_I1El;KTsGY^tz zK{s0H?3c-EN4`;>9(kpYrf0llwyjNb;C%x+;5qY)ztGuEGjxD~~OT-d6=%XamjZ>Z_6SEa|nzb%g+0-;I-dSx<0+9T8G z@gnL3QM`Dvw`zD!(aMQo<%;?`A=Xcd8p?HAB!bqcmp=jT(Xiz|0Cf)4o5tH4-Q#^e zc;vQb+gg=bWB-e({2A+WDRh&+C2A@%0OKt0=~3iZBxSXilIj6d&ZJj{N4-Kz4;^_e{QxQES@hyh z+5yDKb*OH@rJkT&M>M&TegF&cENTxB?f~iv_Uc)pE5>WIeHuAUIR|6*C|V7O*0Usu z@1ogjYfI+ZeFRq(fSNXGn{TRseJz~yE9I*G{OLEU_1VpMD*JbC&eXnGrA-M|*X0sy*FP+C&n7|JU z&5fwo%8_3pDbqifRm4&nX%y8NKc>L>@%I%Q>lgm<+IPP4#_i6P?71-q5xGjQ@v;2# zGsD>f@RG07NlVa&J_<&>(_Y-3i%AxPv#Z&>_|qBL9rA+hydLWTuAbM*{(29)a^TmV z*H!^~^E2uS*GRk`yrXVq_QVbGbhe^5QM{j4i9vIj58Mkjdr{uQXdnJu()cZH);x_z zVw|EM#^vq{5n=}Uecf!vDM4RoJVc&l+4<@l%EXPm*=z{?*vOZ$6hU)6-(OUY)agG@ zrA}c~w?<_kL3f^F)a&VN2=*ezhLp489gy}Sgvt0u@q1l6samnG^$*hgTBx3U*l6Ka zmobNaXM~}`cSMk62hVTG-#kc1c5@`Y;gJhDO)jKl=4){8d}CqE27_Q=N`w?c)Q0_DA;0(o)SCIw8n%P7j-^z~vZxicC;llpP*faG042ld@s zu(k{8>se()`Mhp~%3PL1{BQZ{zRd08;sNJ71&_Srp^neTQ69YX+CB)T*&|+>K2Uo^ zvYC16REI}yJgdLldZp}y_)va-Rp^_1-8-8JduF4IZQ z=l1j>xJ2ggNydXa?2cP_-w7(xqa%LNQCxdip%jzL+N22n=r@BjG|GSu)+&d9`@UpC zEUQ6a=-Untr?R|T88qMfrSu%j#XzrP1we0mTl&^gL&Qd=z`Duu`H6_l1(`#eu~Ekf zN9{MF`min2xXKe*-yY}hkm%m(RxjuPz5TV)c$ z-)KgoCkTm)hiqbXG&0LtzRF{;$gr}~%KxIQcNQ>!-_q+@_ZRc$0Ye0DhS-PP2mjTW zUfFT$TBfbtBB$D^t4+Ortk9vR{ih^V^5$*M+cG=1qo+e|i(Vw+LU{eOw`Ji5W&k<7 zjh)$8anjT-gtYc6RoNBeximDx@MR;|A34hOOnaYDNg(9+Rlifk!%k9G1IPq3)+cb#B;@HS=t)}i-JAH4e z=tZUr9ky&W(6V#?R%0_~EiDRJIy#EJ6y2Lly@V0dn~5w>^0?&el+R3Mw`KKdviLg# zd#7AWX+@(2BMCU2M+?@jy_7Uqe`+v!!g?zc&oV<@$;tBU9lNHnZ=~K@)xm1QrbXKa zB(=tUH_gC;DVxmV!5^&Z>4Xyq%(k@O{W_=lU)Wbui`aOBx)Ctte`=38CXDOuIPA5g zaXZ=Qq((TUnN%Mvj}vg|SooYTz0#j#RS`@vA245;wYUtdY?r4uHa6r{Zd)_XE@oI`KC;a%NeVu?$Zd3IB=fz&)^Y?jK4B@#k{r4x}-)N5aH3T6)7j zf`W4rJteV#W+Mwkj;)wV5AKpTn7hj&VOn1&m!i#C9L3G>U$kiA^=Hg1%bDP*h<($* zf4@gpG6c2;mW;SEdV!^w(! znLV8yIGy*gD+caxZSKr7OID+>QMNi}4qA>6$yGF2Nj(iKvN+Ec5?oA!9Faen`_n9I zf0J0|z(`Icx6H_-s_qLL9}IQwhsb1?TzuYoMs$uheA3h`OAA-J&dz|dP6awQc%$YA z^NP1*W(zUeiA>l5Uc+XtSJ3!}f|(rY%>gPZW#3Qh0Z45A_cSLYiC= zto#kyL&I-z+n(a0(;N}*9}KrwdfzT0k|KDGd{r~~D#Qk^psH97B_KV!8$bT=t*GBx zz_epC{Wj#};)FSDw?wZR1QuMz%K=wgd{cF{3+FkX#61FDTV5e1p}VMdnm5N-i?p>WPZi&- zh=Z(fjeb~Z8njGZ78=%X`)}uN;~PutP|hOE_7~ev)9%c0e8z>B`^ZQCt`{_$UIgT| z#5aSYHTuIr=Bp!iK*7?`2CcN?(*U+0(_5Mo++qzSzs=j%mKV41Idn9xm+IZWH6K;{ z6g|3%S34x(dpJxjAJ9E>_0<0-9o|9gp9XtmwNRQwr2bM!Vibykx0^NiEqkBkABYJD zFD$;BHX-3|#=er68iE_jXdhoLKf?M@k-E)o5HQ{W(byKXLQ$vorw9b>G6jX-sOcZnb@~EL*J0=5s(;ISjv;v(B;}LBk1~ z8dzrwmH>Y4!cXj&tAQ(7J>V9}LG_`y&6-va_CsMC(NeO(zzzHodR7q2`JENsnbiU| zFeWJPjqd?L)w z1lN*$MKSGSc5G{(Kd*7W9fmB|i~qTyO5@YwA-M=$ue|kVStD3uXweNPIE$_g3zNvb zb2q=-$Hivh96}?+Ix|(#kBwF=+=F4nKZv$9kBE(c&>%`%wgTZSKLuFF%`$J7@g5X0 zQ6}Wpt?F0ik|A@%AD=HG+RrBwRA8Au}XjO3-Fkee2-+wy_KP zL2#kV7U$giYC66$MNFlf$0Y^@Ibq{k*L}m;HU%{MnD-`T+`jaVg%U68;>TEkbNY6< zeQQqY<$N(vVf+z~Yf6Fk5hZlfB`P1r{g}mfCH(f_tpUDU)8T{_cjr>(OK;qcOy1)M zo3nP`M=#xzPz*Ht{iAoVg1U?@T}_*Po_$13720wC@)nG*qe4_6_;?SCMQQD$LWZfO&LUR6 zbzgOPf6{q*dh)cDLFejP3+sC-WP5s3X+4UQn%WU2c|+@%nG?06&;-V!>>|M`vRF#h z&*rwV;?y>?{J=5&MX-p22_bqcPd3_VW_x!lORW(7tFioF2s)0-)lrk**&1xW=e=Y6 z2-o=q-1|k>l!E=6&h_^XmGi*beJn>8{O2Yi*R0a21|fezYlem}h?MW+<+LU3HnZ6+ z(bHt#C{j$-#5^5Kx!lYW(72~H4vX?>m&PwJzJ`=bCFRZ(mV3k6*Zr~qUHF&IoL~T& zs_+z1k#GBW%B;p44gR0al0o&+YCkT00_+?pGZ0X1KhS(zeryncoFcQV${o8@4UHQR z`vDPk+5by=?FwN1d_~|_7CASi!dU#y;qR zxRu+@EIT@VgTwFohD$(evHPWO;C{2g(KhU;n%9nd@Jn{sf7{Z{opnb^Rh0x#25>Ju!5u!cM=dh3#JhScVSG1;_z0q z%0p7^sRJ*X2{!m5XQ2sIuB@6GgQr<3ltK|0;6ebWAvB2bOPeN@ubf6Uze!OIs}##v z1ui6(#(>O6?a`oDoPX7TE?R7eEZXnfe*g88$F?1!(GQzceWe2iO0=X#c%J`@et@|J#xD{}dz!dBOh~WTF}fOn*(>|G={U z0q|vI{$Eh@e>VAhjQ^itoCQS2a)JKXL2oV4q7E?|2N&_*Og0ct%+A96pZ;};nL*$& z$3J<@T*RRCw)-UZQWj3ouGqOi*{oc|x}dDTiG!Ji81xd9I9Rwq z%JRSIpDMl*gKXUFptbCr2>)o!L1n-GZ3~EtX9v~7#>PR+0$RcTw@sh}VCMY0Q&2;7 z{#oP#Rr)uZ9Rx}LEv`$<$wsULQp1C`1jPV=*#Cc4>w;Y5e-j4>6EPRd-^9kj@*jBV zfBNcQEb;%ixcrCi{HJ^64Q)XegnxT(|1B}i^c93U({r%=?O#?VVkRbb=Kn1+&Gnax z{#)T+b2>dUD6-%`Ak&;|T>l1{X668GB4_BXVQJ!Q@wbZqe-wb+<{;fYE2vZdCuI7c zoPQnWzmREA$Nn>r{)J4lG5Td4&J5#32XfeHObZ&b=~pIOr4)hmbOJIp<=W!%n0 z-Ko|}q6v9CTO7lW=m+>NyZiuK7}b*z4&fc1~*Jnk(&{ryJ(cwHO$?PfBimW z&#DKDD$G9Rp|GoPuP&a==XWvao+PpfX!aby`J%`tJlEW@Oigz6+IirWP5|ylulP+E zsSkG1azNIOl;)hS5c#K2xc5LZjJ6U*d~n`9IOo{0WPlB&S&tA`8txuNA>&&hW{vp> zlAykC_*&7LJPo>E+%2zG{)bqGRCs#6$u;16Fqeqt)Vq+8)L-Si*mL0ca36)T_rzeJa$$SBouqYgE(%^G=1rU z^+sx@(Bx3+9v7S|2hT;JdUURXatCbjZt++aFPOs?brwS0;+OTR0@VvtkbkRPOBSsV z+CrYq_X+CvDLj(-G)+iBUxqnhSe67Ql}T#=HMHeup5*I@zCvC-)8ypZmf}BmYw;=U zTHbLM?A;)ZSx2=sQ}{5^_=*u=6sAz)_!`egz)_hHtdTvjjUf8FdqG*ehCEw1OKg5p zen_?3@wENsX(~P==^o?u`CHW(|2QLR+ z4-$?DJSHFfi~qgvM4x{SnET8IOV0t=3{VndTs=v%w>r=q%HHY~d?UWIs{jbjthA%m z%dutOn-R#6ubZm{ZSZAF%ap+4C@dlO$&*PBYAW&yV?rnTOH6f;<|W4vqXmcPZAxyy zf*BKx=qmmngLLAdrR3(o12MuuTrBTLMo!I=Zi8s+-jXq}+dGfx9dUh%$A_BS`l0c= z2NMR17ykxCTTi095CSw~r6g$FI3rnMO7{U=v^t>^*nkt(4<{mM-{1-~(>G{FQo=yr zd;w?$y$GR2C#I(Ao++3k`~f)BPsaKN3@^2=j6=*rne4?Mkl4&JN%+EM5$~v%;%N0H zQccQW8~8zO={;V?UyDOB5iXT$h=S+tp)+9{V4RWHAQy{zbiqm?E1d6_cSRROeMh?)Bzm%)5Rx2h1~Ug6$PCtsd^_bSyh1Z+#Y92t2zW;P zT;)t^46PsOo5T};nTrH#yJBU0g!?COvB(Li)*uv1<#-+CAmSV37Hx!N<%^mW_DE%M zAyx;*+=gUaBpV8F2yyPd$XA8Ys!5sX`QaGBc{octP#%8`R-Lc_q#k)S_r?tyDZn_& zff7&%V>a%HJJR*>whcc1QFOc&O(Jj!#%OG2HMf1q>HY*jkav*RS0E7Z$#WyhKWYo;Z7@KEi;Aa*N_TyT(gN_m5_|x= zCq?nq-l+6XV4NEM@rZ2KyFQKB$ZBTb@5(ra`E?kTKTjaCLx~Z4s3|F7q$cr8{sxf8 zK_H+8u!n8(>lVzyfy$DBX@ZZUP{0e5S5LezM8{6PxX$R(p1U?cpk25sCRrmMel2WV?x6OFOWOM;`OY(kKbGK!8k=%7f=;q~na}ip;kP9B0&MogO8A zoE>BCM^AzTu(FN;4p{>i9x2$WxyD)dc0mJhCn$G1FlCNt02tup4&keKA_Q_51Prxt zE)b$nU_=<)JFt4JM>1d~8AQwaFOpsu)oIJ!rICz@x4I#K>52-x(hCl+1#q?73NC&_ zo*<_3XA1|zRzz86W1n8&^Ue|f*bTL9twYZDg>YU~6qrMNC7?Yn5M(g;CQS7%(+W>r zBJc|RUjL2dOJK*Bc%6U?mE3W-$JB;Dn&6VUGsDIsXh#Hn86+PJg_2-EM6E?NJaL#2 za}p7%_&Y1C*Px@j>B<+fb>R_~gm(N(n-e%LuvRyWmZ3Pyz*sn9tgR@3-a#;ueKO=j?uDNSImy&%a~cVQ!Skcl8*;;q3^UxX$QNwdlKDGp6; zH59pN!MyyzF`sePVIPyxY>CjXiivg6(89vqJ72d%hze1`cI3tZSKg8$>0rhvqzRx2 zXg?d<^IejIosw;M^oW2phqoSV_BN|beEC4>$}-w`aueibs)j$@%ZO_dL@mkz_x#fZ zw^R%XfO-Pw6l;dxVJY22$Pnb#LhAeg#bAAqJ3kIiljT5N(1%trI4I&gjDPk^zwXf% zszApki}8~~o4&}~^u2s=8fq44o7M1~zwAyS>`DNtZrWY`9Awn-9u8#Q2kZ((tM0tq zS#8Ic>nIK5RiX&%W1gfyYMK+}`habMlLiv+^EAzC48lJBy8ZMu_2KDPVOJLo6RM1T zFR}rYKc}+95|tg5$XAA9@O#`$%{X|Scugt@<4S&IehH9^(Le{x;EZZPzxR&U;w?e7 zUo@xl!`@$P@I?c%koGwTY`-nR!b@N)$^XWm!aoW$%WfPPNR=qLXmyY4qW*-_x!mI}&ZE~_ zLVM&&uHQgS_hMTE-y*QP$uZRC97-HXa=CdUzO`708Mt}KRe>x=lzK4WaqMmUy^k95`WW-XyhV8;lEv17 z^MgZ!BaGnT6}Vf!uX61^;uxk6?^>Wai2@K{o)I zC0GCfez!f?wQ=pRsaUqef%Rxufdl8DhBnSI`}w-rIg2^gAbY@b2kobb*&{ciTYuNy z7Fo1CMslkV64q9!GtA8fEmZ#DYbUOKiZ-xEtp2+W8(|*(ekPOVW;F&oe8pXRWUb{7 z(J^En$<}x7ks*7MurvdrFaDE`h+h_q4A0h~Jv{^gA@tUaCi}2L9==5z_ihiRCp*2o zftvNLeRc@CqV-qMXZpPzL7F4`p)QzLCkJhUoq-AMY0qiu!}kt#Ea&u)9_oBQwbY zLiNU#A%50=nj$=Dn$>eI!a2Xeq6Y|4f}hT)7kHpoUR`jle}VBebix`g`pd!G=<%iE zukbMeB0J%k7~ctD*56mTA-wR7P)aYxiGAK9Hv{$R)t09GX#;PExyhhx5m2vtQaE#Q z;M=L438S;duVDL%$?v~b4cvKS%*9mo_$?|3edJbhheN(P6rDM{^!ODP&qiEPIJf)t zgahUd@c!6=f27`d-`h7WOcsJ-QW79JEv(--=xpK>YaF2+;u(vo4Vv}E&0e9Sx&rAn z>v#G>X>FSN#Gm47aCgk{ZNNT(Pe-a*99v=R;Qfxz{! zXi_lzc*XZeB8G6@H2$u1ZA_?+O4ESn!lq6xkaXuyQFGLV<1f;~15UNI8Eh|@1?Gfe z-~<*Y-r5hA2WF_>iBQTx>erwamlEX*HTDMX0Dct`bEkmztkeI(yod3}2YxC1_RZ%Y znD8E82=OO?!PCO_88!i>9I2Ct6Wl*VsfIDo83_n)dqT0Ir~e?x7ibDS`$o86m{O!8 z6mCdufHxKl4a^1O0qLrt$Dep?EW#fB<3+$udBeOR9VFZ{;)(&|FH=zYOe_h4YutjyU{wDJK41n|M z1o<#5Uci^A6f^Q<8x-Cp3rn8C=-Oy1rO|MVr3WKbLe%5d@4CVn?>ROQO2P0F4KMuP zzhZnJ((~opk6#?AzW%+Ux0@Y$RkhDf5X|t7v_LE}fFSZoNE5CzppRAUH^w95<4I@cmbq$rFK!Na5|NKd=hM-*;S7DhiizVJQ z%zg8RKfol>$zSuC@n zcGx|zvpDZJjH4U)0KX$?F5#g8X0B`qKX-}^QYy}X?9vCKRO^UpB@Dfrv94zbp>BbO z0fW%S$~W*A`H&xJdw{p^^-D5}HH)P8Jb^cUXi@IMoA9AgZ@9J!P?n9IabPHuZh`zp z_KQoRmI!; zCo5+pECZZsFZ!nf%&nxTDk@jUW@nm|r@x&lMDXQr)(ChaJ#*N^LG*XoCWw4(zL(&F z{y}xOrE}S-Za+;bX>AE}%y3M4|69)Ax|V1|Iuy)oM1bVN`O=#EHO=@N1@VTepiXi- zzF}^}E9B|*HXQ1`rDAhZ4I;^P|`A-^iK z`W-elR@N%0K;cT&QVyLf>wu@f1aH!xqXR_BT_YCk4|ytXB=lh1tX`FSiGnM9ejw#_ zg98G5sFKL79WXuM{V|R8djN*FXiTIVXollq70h+o(fUeZVsO>sJO$HwV63aohqL*7K#Qgw4j+aEJO0YlP(M#3T@pk^vXiJFvaM{+>Fuxs%gy9XM>z!&f5b@Pp zBWoiYR&e{4XokCNLZ(9+ndt5br^x(zH<2I7OJ|LK*NC15AowPyfk*aEapa;h_EuNh zr*wSsS%!Q~i}4=(9Ox!xt&4s?TkcamvV*Q)0m+?LX`~ zD!cr2ko~>|NYMCd$E=hFvB!N4cSQ7U8m8EB?q4%8@eGHrdPg5e3Ck}f+$ZQN4mxR zOweEYJzx&te}_6G7vhY+f(E&I{d);ORCR_NH}Kk}9nCV`1@={Bl}aElg=C0wD5+`a zB=X6(kQe`U&=)W!Ii#o58vP`jv{#KD+oBc!&dNHDbX&zZFv|0pZv-YTFoyump6{x z055_Z;&0I`GmNDCH893sVPpEdiT5#ncOhh>eLs@D{S3y;k8NmrUAeTm4D~)PrY}cq zMv?MkP>XUDCA*)${+3`jZ0SS+WL7_YvGx!g3a^JgRXX%W72J;w%mjVEQGs3)32L&z zH2>w}?bf&rBouLW`K!?=V7bb^^D4G41lUl1!h znzmp`bYegr<+cszo~Y6nErX@ZCG!<;pxTI@DZwqn$8x27&$55U%%<+VwN!`_$tdNF zz1N8Np>r+XobXf@if{jGAzEgRCD<*}(7pULxGM&Dn-HfC9HHWt;AczZOR$!VaIZXb z3o3vj;0$U|si6dV#or@z^9(k#z)Hq17=`v!zY`6+=LhOQ$8>7-yv?L>9v>rm6N@F? zkf1&@1`0OScXBHPS1(+Q;|O zXiuGo?CS#rVl!CvII7FEHzVQo)SXcmj(G_yTubA3)d0>$xbi!gKVy<{^Wl=!F{TL@ zl!6Y?kotYnMXt@I0$8o_{5F_1(vkzZJ#ugn>GFkNIr8bn zMftR%e|Q=ZQ!-~%P);S`jN)Bmc>L@TUP#m!<-W%A$f}^Sk4GL5VK)+RW?2?)O0+FZ zPEOz$b-l*+$moD1^n>+CJ0-sm`g2Bkk;He{i8>Mnvbw@Aqn2NQUvoVLdP{YY!j3NP zqCKU0!{VPCIt3F@439WE1!j_$NMdox{ThAPg>?#j6`f4X8D-qn$lQC6d6l0`Lfl1l zN|;OJ{zJh}qmmM;_^DBm)>hb-HKi%fwk+d57xIueT_S8|+ZiuQ-W<5>jFKe-$VCMT zbLU{sgf#qM$d5Ye|LZIEiRPEj$(1=&Zj0uZ%gHN0tiR=Y=JiSF64fuR26B{!*%f9S zskg>ARhaK1hwbA=kJWfhyxI+N-(DK=PMv9<<8O$oL}8O!SGV;d&+war>wUTK}f zG$2n9|7!nzox)PdDa$?AOQ6qam(ga8$f?dfVYx}zvZHHYmXX>iYq=TQsh4Z$+lcqK zKg=B0igx?hM7;$b1aSxKb_Y^xqe&hJ_Px3tSlyu|*G(N{7Xz~%ZW~Dte}2AtW)IqL zlevTEj9nbmdobxw1*}iO7t8->}59d|LH%4R|*Eqbqa|SZOxn``} zxh*A~%7ZkNKl$c2hW=_NHwLo}yC*m1&zszuA8H;N9_k*N^zAQt?k`S<3FmqV>qHz62|Ohl$Yu=P zI0>X;O(a+(zK4y^OwNqXEYA$ijL%FZoZue+*!gkbK7CcV^JUm+n0uIV7<*VsBBg*b zg5rymRU+4DqKO=W41z+WY@~FgT%?S&tP_PP#U53Rt5eBov?IG)TjnB{ITsFRRAy9W z4yy}$rKB(aQ{(RMQJtjm#7$XW+E(7D_1%Xg0m=8TPf5EfzeO^_IHoMGR-s)3^y3+j zy1yO-UL-n?x|ZD)#ilVcxOC3FDObz9b@1zFO~GnmCX2hu;dNfd0ZVuFi)N~53un6g zS)VHcSfBR+MM^Q0F}|<(md;;@V=nz+=9S2hLs$_CBIc^33S1j_&ZJ<0z0TCXOUQ_0 z&I{@xfEGkPa6pS*wW67%cyWc9y?Ak2R?CL;F2O}XyiVc88RU3z3TGM6GQ4F2B=C?= z4lgTT09fy9Dau%bo7#iHW|>?lRbW=pNf`q(CsUB=&pH;wI)*A)zyxmTOhs#u#AfNt z*v?2CV^-g4lT8_e4U!Nm$>Gt@6wb`1vwEghE)*)k7tUZe#iZ1p#fx9m5ZX|!sxij! z8@wzBcv?Ew1h8^LSUT5%jt(4nNF`4kgJ}mWOh}Qq#+599k|cvIR8rYM0+vz~Dp^Yw zuy+u4V*^VOFY=@cHsZy7+=&3A7oe&{;>F_x@#yy$h4CtbSUvH9hq_$=;Gv9f>PO#{ z5T0%@Yks_VUc5LYaZIT6Q@l8;bciz3{)9x~a3NJ81yBX(boAM>s6pFPNSmyat}{s)*jCw=+cs0ibT#;tNELi)(zoee zg)c-0b>_4`D+1^VR}PQj8)ZzoFdkbNtCh7vb(;A4agh>bp;9Vkj2)b00r(xz0;6z7 zRkGlKBxV70*0dR8Bq1#^T|!u`z%A#5lEl|ZVqm!JT#&v`gs^(bCW%*D0ZXq1qzaTk zt8Zz57B1J^a(F3Lz(YdGf^|Q#m}|DbP1V-3@+$jOnDC-JCDREB41a#V)V+M$=ZW<( z-{%oG@)7vdd{J|eeDUK#BWKYq0O{IC2IiSxL{npPv9S9BtQFkzztQ&2L7sG7qHcAe z%dRfl#;@_AH6 zw;;D<*(4W#RPA*#3K6V7b$nZK!8?@$UsYZ$yq&w9iC6#5AKhu+dhdB+UjmwGpHcIv z6Kpf9msR&Q(VII7D~UeYRh#u9TbcZhyT_KKtBTlf_@L&Z9PYtiO1H6R18t zFXCSvO{e8{-gW-!bT9Fi-JR}dVMUPm}f2%bSNwLz7mH#r9413F21eBET&a`Bu7r#Pzb$^zfCAm zRgoyOjdoCTM=-^?O=N9WZ4u4P*+%hm0Po7#9Cb(%Gpdda=0U=-Xd{-j)@>PSqVzi|HJ=8sgZRqUkL>PEAPK5)rQ#X=$&#y81Q7-n#% zKv&(iPa=UvqAV`2HOkywnS|P1nOJlSeTsDDefwwgqXi*Q)^J!9a?psdDH(^e_i9kV7kt-OtV65l1YL1k zwwl(1_Cju1b$MsmYu@Qy*;E;vlDEc#_`;C#8xWqdx7x!GJ-RB-vQ1uVp3iCXyOSbi z+bk_jWtTwgM`dfyTdjrUxq6u?w%hZ#M&&G`v6yzH#?RqUqA45(gmp!kJeV(h1)a?<~@tcid2OJb;ci^u1eO` z<{n&SMdlBehRmWram#raj@6tWnojSL$z;7Wxm(JdA2Jt^%juL0u{~=%x@$2OmhfLM?}HSfqf?`Uuo3yqz5}By&}2Vz1j7#u8P*b$=fw5;eiG z$GdP~`Vd>4K@L$>@sT&Ljx23ZN~02_5~Pd*5-hx(kPXrFJ$kEpJ0L)xmtKgTpbQM9Vn@1;&x#+BzXKoNb+L_R-xan+=QS6zR>TFcAxa(}dJ#mK^ z>4|g|nR)^IiR3H4@0qL(F>9Pv#t&SvpK(2)oH+Za@q!K`mHR9XoFhbnBlPjI!TFy= z*C>b%VJkr=OP)=YYq*STP!33bE*wTF+K$H~OQ{3B))RzAujBO_kpUjLKv)vCFcoH8jSS#$yw+Hf`p8H#KZup~Zn?gfacFsaWu&bE2TjH7M zJka!H>K^UYa#}}>ZkqR4*duIlmg8K>4_WODpKO}$BZCi~zHL&5*DxBNtft7V^8?c( z)@L&QSd}`}XCiIRRt?Hhr0W@)tX&4a7WH0p@%zE)AmbYMBf7uW=`>A>A$+GwL2Qa!=(Wp-h-@s}f6qRD#Ev0bQ=3>v7=@+Y~38mUD<{kgG=# zj(;;#k|Ui~!#w%}$;2@X$)Cz+7$_ARUJ}uiHxVS2L(x!4iX1%~eXp@Bj+c934!)Y? zl8^Bl`Pg}0n+{nggrp39h3{>4oQf?s^0DaS81|l&0NIS?Le@4=*oTbzWk_EfPi(XJ zuUJfPGCVZ*1Tx@9Q^n3cP=z|t2{}hvwEsY7a8o|=2%-mCV^5Ln`lY{j9iY`o=E})> z2<~ETwb44kL;6gmDw#$hjaAa-RLWu5I!qdAchA5uFQ1U8x32=#v1A0@VERl+IGHWK z;8)a5|NZy~_Ep$L>JYRe3Cb)sS(VvjOr#m5|BP-%d znHJmuXX8XHZmyNv2#~P1p*2Qs1;A&fcSy`_0nE5P8;$PZQpgdZrmWT!b_mgCU;ND$ zIREn%=Q_`*;YctqFjF=UZhR(D&b(^{GM6}+C~XypBUf0@npRwT7X>V3SO?x#G*y{9 z5lxd7)8OOz0RbXb*iA}^P`H^Xr~VR2U&5|{Ftwd|OPmsX)boH~A2(ASZ<>=kBH>D$ zjA}0bVad(pxcna9jQor5?0rRc9-L=whnrqBGtK7CH08!ry(!=1AcCN*>D0{6hTmqm zM)?GwJOsTU8vt`6W|zXW01QS>TO%P;;Fn$@XGXBdr)IQ+zMXThRs!PpsaS=r=mFRO zi1-&GM4>q?C91jn`}>kliRB^p^*(N+IB&ypoPh|*8;@A8KlX`^^Ve&RTwZLHjd9oe zgehVd-XHZ~;NLMQ7@qZ`robowWT7FM9e>7MYIU7R}gkkhWtgXq1d zGQgs7ZnEgNrD7Hi7zkQUK9O(Q*%(bSwAWG5=xRJw;D^o8PZ8|9K^ZDFS0WfQ$zfBC zqpt`&s2e-im~74&CC;#)zH7^-))Dvk8Qt3Ypc|syU_I&J{6m&9^IaV+t-@~9l{Kn^&?F3Zz?Swgp z1r7|P=7sl(=05%gJjXbjFI;cwN%gmppU%zg;Z_g;)XqQ>k8wAtShs(L`XNAmY}+3_ zjZXZEx^?vvmDa)6-D^OLIA1W54IJBD4ywVa)O^57Nm!AzBQvPWVqeM(3*!ZG?K=0c z#SCB@C^ZF*6B@=h?fT(Ei%xY+MEer(0fMdseb1HmbJw!vG9qj%q@g3T<1Qk?lk=h@ z;w~cO&+B2d-73xGZj^}OO~JTV8_O-l`<52U)kz22lHmxRBximCSl0vY@)R=9Hp>im z$Aw`?ANbcsMzqWg997-pkpF(Ohn-%A|6b3NLB=mlAHImFSh1VOO@a1A0m^<)>dbz6 zVQHJm9yataLV&0_T4W6WFqcjwN>+LXyN#S5-whl}DMMteCkSxoaQ_a1p_zPXdSrK$ z>7^g`S4U=KC>_D2651=RZs0jYu+S#8z~N89(}W|=8C8Z4xz0gk-=VqKqlb4bE9c;q zxgdJci|Z}ZMAIR?h8qF07&w%ni-ED zGBE=Oah`|gp;N<+niUAK4Otk#>`*L?=dPCni#BYaRRe;ITuc%$RKU4V0D)ssR{=e5 z0Z$WqAHO%uCU|+_b9uwFp}4MJ=*@X?_yGf9_E=ZNAzXi>_faCX zoh?~%3@h#ezSFd3T3%Dwoc##F7eEvGQw=e{IxcIEo@V#?ZQ3E=J^s8#?>`~k(t$?? zli&RK{P`!q%AWxdU$Co(oqwr2L;dFIsEL*&K;wam#ACc5ktbeL!aJz2Ks5nSG4WiJ z3xT^nYBPns1P!)(c&Ku1cH(C#Ms;1J_knF%l_LHcNja!;s79Yw0Q*}W0$n>J9m)qM z5yV}b9*+BR{n_K_czu0x_y{!)J|5r0p4I^!Z}^AWokXQzL59i)ercNV5#RFU1(?Vc zNicm{8%VxIh*_pJA8F4NrPg%aYMyozpS-W_oc z=oXwx`F5XQNI@ZAXizcFvM9Lfx^rXXTu{!q6y#j5rznp#CSQDe!NksQ;-{TZ;zL>@ zvz(u)1%_u-;Tlnb4}%uOIA2{tvz*`GyvW|k;$pq;bG#Wd`k<3G208WL#p zulIe6t~VYYL`aHrnp`bWI*)wAdKJH*gRVYgQLtuIHE&aNLp_8As+ z<%#P*hCyH)oZ$x?T3Bm=&{G4Dy%L=bF>2CU)Krt@1+;msO_zG^IM#)hhu0wLfzV}8 zP?Gvr)(f3>NF|jxPH-h6LczNGU&!_kdRstvvt*$qQ!FoC+9AT?`<#kAVYt1BDLHoT z=cnfw=1?TDfDviyMKU+uz;C z$4=h^w%|5PiJ7*S3s{RxUEy~sZ_?tvDZ%H!v@X#fP?EV3ICSnIEfOn#(>F1Kn(748 zS6yV#n)_F@_JKu(0uP^CiD|gE&D^ECckF&*&(!`9Em3wnr>pJt7lfM=erRo5<|fAK z=3C`zzTJk>XN`61&IF2X^JzX4ML!!SPNA@_K(<4-<6KlhNNx4hP zktQhdcp|;d+1JrJionmX^b{C79s%+f} zm&j2VsH1Qnazt4IJc)~TTAE}G^t9O=&egwXR8^8(mz*x{dITv4K-65IHpc*VC6 z{ZceTH0P1qxSW2q^(3}b+u4RB2ORRCoEk`(d9~d$NY?@soC$VZwkX3rZyI@G71sBM3wk)`$LfTi^lKBVl8UoWpK)}yv?<8*+ymdmRA&Q%; z8JLPwG(kf$f&Hl9(M&uOx5*vtBigkE+6M;e-bW4pm$kNZvO`f0$@36JxXpm|A7UTT)BS6F-;w2Kqk-vS`&(idVSNFqLO6#YrBBTXvvcC@oHkh%b z4xQ%bJJ>xPKM%#zk8Cz;-M2)o?D7~tc7(?pOXQByp8WPb_!@ft8qTeEeh7c2AG(~K3|-89upMAlYVEC)PTsfF zr&>;0(Ww5lS24-HS8q;@$`D$7Bs9_vM5Xl`dKVaY*cSY`B-ot*b%a`XE3mrJ4Sv%@ zoM?LYqj_`K7HJ8IXLRwy#0TU`c6=4Ff|N~!Hab+pKZ-5q7t}g-GZ=$Cc(fV2KQf{X zxQz^;86*}W6g=gJNPN#?J?rvM?0VmI)xAy_H%^8fy)!H;=o;`Hl5S(M zdPpEcbWM0S+-vIXA1pC}bt_hIRcvfjRT|#K;rR{dRB1PuFBU~sdK2?ehF?1R&x1vZ z5cToDfJk=*7Bz<*zn$v(elR1}gd0GPKpD$=HO17Z=6mwRb}2(d{)X}~c79-bz~n#@ z00h>6P8vA4d@g%8TjXmjw&9~6o6zqB3_CzuoDINk;JvQESHfveK%7Dv-6Gvseqr== zsQ4Rp`hH-z;Q^B`s~;)xX6col@aRTuKMsM|qOsue8DrN_3eupsAWJWQcEYnu|Bymr z2Ob0p1_=h%m|5(XO79uA3Jz-lgDj*eg>bqZ>7NKMGd zmCigA(k$69VbQD*=^*GYDd8acV?;!5O}vhSdqm8&UUUtbKCwQ*H8g&avHC2{CLf7B zcGD0>Ari$XtdS?JuMl`r>$XanZ!97qQXg4_A&&7F*&q2FnG!i1Sp(x3%p*9mjX_Mr z8RgOY8s`(>>DEheor9ajq}rumgLiCxbb2&nx^<`v-nY~jUW0&r9v3cwA*VK_X*)(y zSZk1~g|17wdU5hc_t}otDuMHLZso3*+L4X3mjD#e{H$mMZcT zxjt3u8u8Mc3>&UxJoKIH(T^-QQ~0H%E{a~mQEtpvMk_;!dMVkl@trJ{)R&IWdzTgn z8@U~+7*DOCBZ zRDrX;s@)U^c&<{H4uBHXdsb=5ura}Pw=L8#emsCMD@52|O8y_Vhcn|kP6R29FfDhM> zk7EyiKGp{7QIU@A&vSq7S9d3RlhZoeyMA{2dT>@8dqby3{BY>E8&KJEV(@B%Gur2b zR)a2FUc9X8o(HGti_BBkJ;=0x-YehRIf7asu7O+LH)Xx*&EvCO&vjS0soF>q#Lmmk zgHF7vv=go^t8+V??m3$D+Of{xO1;|tne_lJGDqyo4ZF%ApAU!vodEAwfo*5EG80G{ z;EJW1>(Xb-O{N1t*PYv@F~&tSGNfDA(626%Vc045kD)CJ-F0OHmDhMXIDOJAW_JHM zNJaZ9J;?8`q&5hS*z0sV_q{L*{-z5e+v>FpX0nJfoZmFUx%pvFag^+65?TMi;x?=T zC`v@X4mYo(4y=t!D*fZZ0!aqpefOin-U`A)LM zgL>E;$bb>;u^s&Ln@W6Ct1Brn!d1awU*4hbAV#<&otw-r`_{b%DUwgjcOx$7D0$w& ztA{_YkQOT2D+Kcqt{)VW2QMAwEWf9!tRXMtasJ+*Mq;>g+ZNK@s3hj6Tps# zBqC#K(fjiGZb0UvKVMK3&MmrjhFy6*3V}?2gLHT`nr$Q8xF%(L4PJ$@`b%uTdu+mr zJlxq_Ujo*Z5BKq5L43KwOu?o=Yy+rU1fPFLd~|))^Q48$snLM=_T;VGy+hZi)S$iN zz=)tXNA6TYzXPv^;Ku3>&6P=iLA7e96a#rAs=~+gz|tq`z!4PJqV|j<2g(f>c7fe% zA1ilf2n;9b@$-Cvsx%1mEn9Hqd7)P4T7$SjZ*7~y^I;j*VFImUMtBTK;}hdri}B%r zGV#A5Eg=|SNrmD#A#XQdlMxe06TN58b(a!7tH={E&E~{`W4izUI{O5H-#+2aI2*vj zeNhzeX90tEg%;a*df~a4ZHnqUts&hLupew$oH$yXOuETq{mX<#5m!dnIp~ZdBS^N* zp1R1iw9zD+uui&{b`8aeLvd8@orHh#8q^lsc|nNN}%Y*$Qjx*EEZ~=&178kVG3= zXo0Z-?TJMuShFT%gR-AR&~Xl|C4qnnB@rzMOqJ zvK3@0WFHcbc&wl}aO3TKpnW8{lC4Tfm~MV#4;6R_>;zUC8lOEw@~3HU-kjo8!LG+3 zrB=aO>by;_;(DXCV8|huZ<;0GQp?@FKSt==vV3sBo<=oEJlhk$ULp7vZGLgB!Ol+I zY8Y~8j>=5Qk!nu@Af&9s89F=85RXGtaL8s3k@4)x*%R?@y|2C4ypVL=5^=p~bq@bK zEv44csO$S(+E{ckOBe1<2v@_@e`xy3DLS-EJ9nIm6>*$Ud} zctMzac1%pW5m7Qx>PBnNkh`g9!?A(xiHK_&dCm(E5@F;jTr5QnJ6Wu>P6u=FUHYxw zCSsSCJ zvpS!KnrW$S`nKUfS+Y?$8rB@KcQ9z1B$%c@zjlv2qPKk49wQ(^Du15=&_e4U6b%k)pD+S#KZCQtPYt-F7M&swu0Ah843U#eKkiuVeNCZ@M zd1X#uGnL9{;!c$~yTDTzj9z8dLyOlb)Pn*ri#7L3s+;?a7pIdss%y?~a1E|4)NP^P zMHT^iNu0!*IB{;ahT%{6n}}(3LLL=Yw-{);>c2U*TNnsQa^Y(CIiKp6(n<-aX(P2^ z^3kO3+k-A^r+2Se`??^jA^)Ud9fN@|ANS_h6_qzcRAon>oX^;+w_YdOEkbRPgh_?= z7l(QE_O8?opwctLQ_P1=PeseS&_`9Tv~XCZHEC zV|GmA2#l+wC#6>5c(Unx3*oQ+*j`eariv43MNWvi-=t5= zS|(#)jVr%tpiDcZIYCviegV-Ae2Qq<%iF78984UnxygMBK@GW;dNFZt7#}k*uZV5= zna?a49vN!%D%P$z_Q9uSwCI*Z8rTHY!R;hK&ZC-$-x%L4-=UqEb1PFsjV#zjd`xIq zrxTU4UbJ2Squ7jrC#pvv5ou!_%9$rVJj!C-tD-hRMW|Gl2V0m}ZHAPN$w+oMgKndN zav-uwUamv2sF`n2kiL5jkZT7^J=hcOjnUsOK9v6Cf;ag76MVs$G{&j?4R8fRYpNxL zg?I89$KbB!SBDP(t<0&(X~2JL#K8ytR^PH^;8Zngu5mJ17`hF|GYdG7UVOcOhOm0P zZKQ~2-+a~;81+dy{e2ST7<}uSf)TMe=^|G zcb_0-G4xKK@s}25GESA2Wih6K&4iVbz)o_LCG6}(DD14TQFbk_w?NPt}2J)BP?7d}_VZZahQz?g|@V4YB_$4-@_8CNh6o-)2RGIKpTMji{fBIE`rn zX?cSXz#{3P!jj&2Rk8yMHy?$68qDgQT!O^2d%k!guKxj(lodU5;oy(C;WzEUplRPd z19h`E=X&+iGUr@kRX1w_+}xPeF~m?KanpXRtiL1+N1ww(ZP*oJ#0e<@s`kcMudX14 zo~m%+&u!sC!&f}Xy^U0chR=vzGwn8W^j|;U{mUHq!i8Mlz&bg}cA7KEq^$5F%ls#y z`bGv%gJm|u)VK~znIt<7VOgr(V^*k4^MW0N>!bdD(+)iTIh5Ce+q~Yy`u+TfDQM{_U;f6%>9o`gA0=q6~*Y?enUpC$ufoFXaJM-g$ruME*Za*S+kxxzCr{Oq|`_m+co4Uv2 zSkpSVaKDA3m z6p7Mj4Xk}}>k&4KktoN(=s@|scsA7~CziGN6gUhGlA z$&%b!UyAjS;r1;OI;uh-cMb)!?}T5*_K1=F%%JFFd@FrLz`1&qaK4AqaM5KEcd@PV zu7XZ2MtuRni)b_I#W6#|oqVA8>%qig&r57*8}?)F z{f#WC7)W*@W*>7%pP7WV^{@_hQZKlJYFI%@$-Qw%oSQmN7e2Pfwq6kYIOvQ6iG*M0FYwl{+SG=~*^KLcCL- zB<*q)?S5A$et4=;u3&(3!Fq=tJx}lO&)ssTA#&CFytfi{#5i>e6}4>0Qz_@d*Eo&x zQHyW_CQ0za-XqKvDyZZ|@PoNqu+%O>!yZ8P)nW1TmD^iHS&1VFyFk2A_>{t=J`=EQ zTHLQP38+wX(#?jd=A@QUIAMU^;*pdv)qQYqrI{%rtT|e;OsjK*3~~hC60rGV6&M5R z5->&tK5rX>D(>c$#^hZ|#kj*#>!2-Qxkr4Ge(D^|`FT z$;-6~vXjexCUdvQjq-SQfhnC~mT&7&`c!^+vz&FqiLQ8p^lLlM5{!$UG z?EH<`!*n*XKv+DF;Vk}mzMz*_Wg$_7OqHZwdm1*V``FOc1fwVBucD45MY6Z&%TmUG z1P$?EZ(nahZ_8$rS3uV3L!kP^SWP_CPVS(wilo(jU0{icY%Mubu`G3D1kA77B_xAM zC}-5sl*^$y6pZql?pX^oRASRrb$&b;@^MAo-&&^q1u!_^eU$hnT0RTfk<@<>It7ZQ z2FtKCq!mTe)YQNmTrENS?U)3b8{Ol5cP4z+noWM_Xo%%2x>l{vtI`praIL5wVgEJY<x0qJ;kdB zrb-+_+>zfQ-C^F*-m%wX)+O(*)kxk9EJ1m3%d1d3bq1X#pMWiBq!QNM6O5rq_A4IR zX|gc}X=W43zg|y+x2$1jVfrYt@g!p6@W9Qbh{#V*(&aRm!vxNgG7@C+0V4GYTET9Z zh?C24`e9IUR>m=Mewom-+-Ta8I5BXTE>P_yTYFl*{1zQEG{1sQu~5vQYvlfXY%)we zy9Ndq;X^A$+pI+lrz@Cmxso(hiq0d;KgQd+w`Balju7!miTYK(Rbu5i9713vJ$#7p z=zowGWL>MIw(J5$penGEVrCI~i9I23*^j2G%E#Ft=yl@UAf-xE)I_e$s4cpof^!JK z1fIcp)L4G3x#}a{Gw3_}`3OkP5>PybB6uo@zGath0K%(!V6aKHb|~W#<)I!UT@f26 zSTy#44l9b2bWdatLKcfSgTrr64O~)9qs^)tPyqmw;WBn#05zcv{b)QyC;3Z z)_CEcXWNW}Tl)-Wm1A&;s9qZtA4Rny3C4x=g&9it7zdHssXU)3gUoz0H8TaXw(0ok z%-kV?Uy&jebbCnkM&7wuC(;HbPvP~(7(`~}p=(4wp(RnV&)h%LEOKnT0sy+ZCSk#& z`eRb0s4Y^a1Y`8e>PjgT?bDbBy?)V<7(;njFlJ*m6>@>7U>iM9`5Ljo_`61EZgSMn zAA)LqDfs-Hv$@>&#q{N;5Pkb%IH)k&`E7VSXCH~d=he^Qi?9we=NRdywLzx&2 zSVf~SSLW4E99I>%ZsodVDd2Uv*?$M$lnI9)E*GtpFmo--EUWhj#v*ga?%m2kbc0h( z8)poS23Zi92&D*u6j-)mAQ_l#b+tWSUESO6`mGYOXf3vyq&JN$oHa6WW^1fqVd6<_N9|O{2mV_k)dpx^AMSJ zB9s0*9evZ#66a%Gpn1c-zlE_Ce=Q8`xN>aSbkPKF?Uid^9rue;QvaCdA=5?nhpOxR zT=MJWYv-%8hq!GxbFBrkwaKa3sr7EAGG>S`7Hn8P0bQC|#=OEQwfzA9Q+Q!{#GmRR$v7bU*(%EedUKce1p;`^PPp>hcL8PVs zQ!bQ~-HO^0^Y-Z3uVJux+5-)>&;=HJ#0UcK2D$7vI@+)xhGVwyJ*)S(sHUCXf5zmBa(=X{IT(dAodNfZ1>z3 z^Lnpp4qap2vSKBd;rou0_^|YId+EAxfj=R2Fk`UEOEllUgO2p6?>aS8jC4vl?Ha92 z;)x{U4ymx95ZWY~p9bXfj#P^UJFm6W@y`m}t{(NUaU-K=9uV8yGa*)Kc@hV)04R&Um~j?w8WU< z2e1&I0D=;|q(g#M>&W0n6r#`>9)6ttbgDu?w1SoLe5p%Or7iDqzB z26Og|+AIfnD*nLybK_P9BYNf<&Tgq}9&yum0J2IurUFKnlrlr8z^#({Z6m{}poxb{ z4pt3#4YTmL$ff^L)iXZxM}rvDaq=W^Sz+CXL*e*#EZyTzz5A5Df)c%Q)YVa(TR807 zp~Kv2&iz`}kx6cY*B)37rE$SyU38Ai&kWs|*Mqmsv3A)A-uGBk)6Ea^vp+HTL2-db zs|%?|fDp#739c?^_iEd*iZQM8$rGZ~A4b|b7pt7UVVAV?$C!BBNmx!!9(vM#Jq(@M zoPNQ?m=t+3GoHc~Jyt9$f*c2zJtVD8X@4i%x~YN$x?pQ>=`&G^uCw6J-kcs=#C_4Y z(2Y17wk*$?D&f!yWz=)Tc)p0gq`Hjk6cbWYK*I|mr=hcX*{o3F!h$rF*%;|b3CsE< z=y8ObCa{=IESfJ3Z4mC5RzoetUB>LkD|?u;SEUEiPhlh(Q zemOo|;xyb}OuzvQ?DTVoGg&QsmU&SWhRHzUGpA?I+9<3~%k z+yUR4q!$kU5}o};&FaBtnuK)T1TwQbGMDD8Iu*9RC#bnH3^h1emXdymv(q+>#tX4% z05b6QI6D(J3aiS)0p^8xrEjljz zWDWVm6xrN+|M#$+kjD4B>HDZx6Yr4Epi6TGI+njFv+B)S;3jbmX$#2;r42Ps8s?%W zQxe>`U!c5mi@W^;1+Hk=)NX}*bw#puY4Di$1QDA?@^fDEMjku#0MEe68Wbor*z(SJ zKq@G(6}scLzZnki&<)>T$*P;6{7*YawsXVNrn=)>fCehJF=f-GybH+Q$~d>axrI7B zA!!@9nOPvCXr?FI%FaoMz^E_D6rtNTIxE*|rPDd|Wv*YF@vn#yh zuj-YW=j46Sj%2l{5J|($@9ItcC--nY$ASDqn@51)CCe*CepRYEJl>^{Rr}#?gXH7M zZB5ZLbco=O;Y)aJBmn;05jE1>Eq&elgyVF#`m0u%6`pUah+IDxSo`-t z3FjFfsTZzA!AEFjx&wGxSL*v5>qR{jzr;-ChL7^k^pUTLFa}-i`>v(&{Wq|i0yp}& z(lI{L-{Dh7k`FDb?qHvrUVNgpS^tha%0D-g&QKx3Xe<(U{obev^ZvOz^ZFNT-ddu8 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

  • 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ξ5zqza`2U7N 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

    WJ?93M~_gIu40Dg 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%0Ag!a%I#WZw62EM<41uPPN;fmT|Zx9PHGrvt~1D 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%0DS=k2DXnD>mm6_YTijk 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

    W-Q;aa(FIDG#6L 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 z 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

    gNnyX6-@6TtOn7? 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%0Dt=PX^CnR#`9&YEfrwS)8(a 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

    mJYxR4A0-N_fi_aT}4bz8NHT)mv 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

    -C!@eesTEs?OJAU1>?=i9i* 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

    }K)*=4 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%0D<}=Q8BcyY3S^)4pyRrR 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%0A>JU&e znxNvEnwSNXKhkq?37)BN0{=H6>SON40|BlaD|zVotzb()!LI*i>g+g=9jt2 zFEM?bA{7FY$`8v=Hv+lwG$^?DZsNqV+h)jE*hvawX$M@83{xMFnL*PeV8?wgfM5ig zh!r~Gom_>B45=zhtmeIe$#t4GL7Fz1I#f&Le&kC32A`Lk|J=9bJ*N8W(xcnNR>RK; z<-QHmD1%h=q@S!_jWRG@1HTawI*g)^f-4aim^+m>gQ-H}Rg zB=H2}lRp*BK?U{kLz>ts!Inws82BPyCJwPFz4*nLP@B()VdYnA&Y!gT>mQBEQ4Z?7 zV{+O!^BwTVL2}nLJJEy{KU%JEilhbEiFUW~C#rI1id z>WF*}HZck+0XjvsDsLtoO&6R+Q|i_!aYC3tQXID9=@7$f0| zHUZQeIOAYpI|Mhw3FTn%R-aE#59d3CfhHWU5@c=_gC9QNmAbo26g-1fyRwbKL0~l~ zAJ23Su9#uZ7c(rCw%Zle;2Tp9$)ImEygDDWX4!MnHRTnFVIbuxgDdhe(jCe>mFtc9 z*Ve?48ZR_&da+GH5!YnQS1^a=s0I(lM8<=9#&?41XtmTeBqoVFA76l9GLHmPJonXx z>ih!u22L0w-JYUvlHWaHej&jYaW-1E#TI^ZBi5RmuX?vSKLN;&YteHK8@^q5fZ`#F z{WE0qZckkpi2GGgGK2HTr5=JH^#{5whHrA*cZr%TuOL=@KiZ^TP(OgI4^dx&v|;*| z#EgwS)HnS2?QAI=D_T5J&8t>Lk=9VQ;cHT9Zy4)go2y8`yLZmf&1 zvyyuS{}*lN_}od;HQ?B`ZQHi9u{PK^+1R#i+u7K*ZQJ%Q)|31FAKni$Q#I99=X6h1 zSNGKE>q3j0!^-`aAY89Ttl}d<*sC9jNcVw;xnF24!x;6aQ3cm1ug9FQw?8F8)0wxf z{DxS8B|P~6i4xiY(t7dqfo2^$FCGQP1K!UyMtfA%kVNV=X1_sd=6E1Vg&*004d*=H7-!@`8(ud@)g_G?~) z6eu_qteqlIE~p+D7sTz$CzOxesXHSuL!hjqA9Ah%pSc@`#`sAlY1Dgcjnlc@)4Fbb-_iN+uuJC$=!p*iBqH7G`wO*5Htb@N;h~INpIHvp`8; z%?K)VTz{lDDVX{Wad|I#dozyh2{fHh3{Wh%(0Rxm=HHKu}_$mh+v+ceq{SE;V@VG>rabgc^_ggJ-k3p>l)@@Luxb(UQNlywx^ z0G`ATJW1F!8otpPbEj}lu+2xO+9t3p7idd;5%Cd3a3tc5D((jjHyi$~Yy&cm4dm

    ldQfMa<^;SaANLJkBm^`MtF@wrBMdQqLM%#| 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

      ;IP_=@ZR3 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

      7?g~PAYia3k$Pm*AT~z!) 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

      =L3l$@vU1N|B`ND5OUmSgQ)BNv*Vo+09I@8 zrtmw!I+tImF86MTLsHn2bvdrhCu@ZGF(uR!Tx>;Oi@}`iTDVXhl92eggU%fN@cR+U zu3>mjVR8pX9Z{VgH>EkadHyY<5H!qlU2cHj;80EORf^IO^&mVqf>WRsrc=|<1>GUc zlt;6|RGdEpmQ!MG2n;urQ>bTJ?v4=js5)Fr>tETx~@jFjN-inHKrpf{XwJ72*nY4Ag4-*x`_PZEb&&CJF zW~L95W5WX4r*s&&X=ax5QH3SdEdz@BYn-z)U)yWz`fE+?nea_n z)h0{IGfZ($i*5WlZ`?X^h!i<`Gs1o@aEysL>o3#w#||93>y0o~4m0~S^!j`6Pq=FQ zP@AwwZA4p~ZWd=e`7W-Ukm4VRCB9~b#6p1L7;MyFl)V>zEH-#*N$5QLgRpj5aEDRb zx9?{EXA+bxOX(ELg`1YOZh-A()SN70a(autn(pS|;mWq)3rj9(MTuBQe)WKoHec%i zlcioe_=uLmc*qJ;__i%(5HBcv$Lbw{#P&a+s_*qz8R+c>WY$OZNlD6 zfmSV;vmClHrMt?*Q8P4!pnT<&-08yncg%GY<+ZY9>#3C|4F2L4)PS;zs}f7|yE4ex zw;!ph>e}tO&(F|A&maOu&YS4~ANDO}e>(NrSR&CINYxM(LWT>KUP!ea=*lR!ZDgXC zOJ4o*;M0I5vzm{z_LDu94CM2r$efPr`8Mll2tM#v=OGIP!^HO{7ZWt&q|EJ{p{~nIu`X>*( zF5JImr`M8^*Z3y%-*AMIt+j#8|3XJ_{cnlS|7rP`Q~!@f`@a*Pe=573OdLMN*;WQl zCL$(Aw#FvJpZab`CkGP)YdAMh-T3hzfnPC#9{5F*&kXJI6wL$!nF}}b1peHE8afaL z;t4xpb$BHt93il7`gt}VkndCS)lZh=swaClX*$={7_cr+GwWxP&d<8D!cL}sa+6tp zC6deJcl$QlYUx@mV`UZS12girnre;JAyj-1w>XQfv%6xBrpOybNCmALFT&_)NoNVa z4AP+h542|)nW2SM=UQhAgU&1N3+>yMwSBK)Z2^O1C7QE_g``yDY4IKx;>w+m)8xjt zohEvs>H@2yHKRMmRGFx^GOiHoVp zj{S1CQBakbiEkq4H4>@U8+%JgY)f0+wbmcPcq z%uLM6_SaZAxrkXgJ}<}4#6-;bS80_XTzTof7$XcIkhP@PDR6{?nlTXH4Xi+@NRuWJQ=bKJUrI%)$JBhl#MTF#QKi zgqel?-!T!6&q4ZMFp>Wvul^kq`4>gR%S+7o->)F9PsjcNwEl&Ou&^+HW&QtviM0R4 zMD7K&oG;G!){f4dW-OoY~ z8qX1b2BIKpO1ml5xmhf1SL$is5Rp*qz{YjfRXGYRJeQi1cs_Z53!KDu(yP&U3EC$6 zRt#CFbAvs8N)AZkmy?jCAi>2yV9@X$9v9V5jhi^PP337UokfxKLUfM-t+C@dX=ki> z$J#mo*>l{lOmDv}_<>5Yqenq5p4#p<;oq9FK}|&tI2*3WYIbNosW@+;{q}n*do!~+ z*YRrXH$@|g;kvX$OJ-Haj`-cUHBV8Y8lVWO(CI^P90Rt~W462I@K(9e{6giR)@lgA z=vSI4f?DXs#m&d93pA^tEWu%@f!08%kdD1#PuvY9>I{HY^knb}g9#kDN97nDr!at5 zy^`JK0)6luzNR;>ZwrqslpZ3mflq^@7Jv2F!Y+U^S?_(r*#y_YL`AWMAb|P{w&%=Urlx> zPS*psNo>bt2jZ@=vD6fG=nAsOPW*-V6x@0hhJ_lk7^Huw@*CiQbS)exh7MRBhr9

      ;%k+{9Ud3Hmw!#JaO8F+T3 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 E0pLuWaR2}S literal 0 HcmV?d00001 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2b069a7cb1253f70f050c86654e976aa78a8c6d GIT binary patch literal 23847 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%0D!}vAXI!VQtgl^cdYd!7=lG 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 http://www.adafruit.com/products/751 + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include + +// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white +// uncomment this line: +// #define mySerial Serial1 + +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// comment these two lines if using hardware serial +SoftwareSerial mySerial(2, 3); + +// Using sensor without password +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +// Using sensor with password +//Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial, 1337); + +void setup() +{ + while (!Serial); // For Yun/Leo/Micro/Zero/... + + Serial.begin(9600); + Serial.println("Adafruit fingerprint sensor, change password example"); + + // set the data rate for the sensor serial port + finger.begin(19200); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1); + } + + Serial.print("Set password... "); + uint8_t p = finger.setPassword(1337); + if (p == FINGERPRINT_OK) { + Serial.println("OK"); // Password is set + } else { + Serial.println("ERROR"); // Failed to set password + } +} + +void loop() +{ + +} + diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino new file mode 100644 index 000000000..0dd95d07a --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino @@ -0,0 +1,94 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor + + Designed specifically to work with the Adafruit Fingerprint sensor + ----> http://www.adafruit.com/products/751 + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include + +// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white +// uncomment this line: +// #define mySerial Serial1 + +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// comment these two lines if using hardware serial +SoftwareSerial mySerial(2, 3); + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +void setup() +{ + Serial.begin(9600); + while (!Serial); // For Yun/Leo/Micro/Zero/... + delay(100); + Serial.println("\n\nDelete Finger"); + + // set the data rate for the sensor serial port + finger.begin(57600); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1); + } +} + + +uint8_t readnumber(void) { + uint8_t num = 0; + + while (num == 0) { + while (! Serial.available()); + num = Serial.parseInt(); + } + return num; +} + +void loop() // run over and over again +{ + Serial.println("Please type in the ID # (from 1 to 127) you want to delete..."); + uint8_t id = readnumber(); + if (id == 0) {// ID #0 not allowed, try again! + return; + } + + Serial.print("Deleting ID #"); + Serial.println(id); + + deleteFingerprint(id); +} + +uint8_t deleteFingerprint(uint8_t id) { + uint8_t p = -1; + + p = finger.deleteModel(id); + + if (p == FINGERPRINT_OK) { + Serial.println("Deleted!"); + } else if (p == FINGERPRINT_PACKETRECIEVEERR) { + Serial.println("Communication error"); + return p; + } else if (p == FINGERPRINT_BADLOCATION) { + Serial.println("Could not delete in that location"); + return p; + } else if (p == FINGERPRINT_FLASHERR) { + Serial.println("Error writing to flash"); + return p; + } else { + Serial.print("Unknown error: 0x"); Serial.println(p, HEX); + return p; + } +} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino new file mode 100644 index 000000000..3ef5ded60 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino @@ -0,0 +1,60 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor + Designed specifically to work with the Adafruit Fingerprint sensor + ----> http://www.adafruit.com/products/751 + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include + +// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white +// uncomment this line: +// #define mySerial Serial1 + +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// comment these two lines if using hardware serial +SoftwareSerial mySerial(2, 3); + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +void setup() +{ + Serial.begin(9600); + while (!Serial); // For Yun/Leo/Micro/Zero/... + delay(100); + + Serial.println("\n\nDeleting all fingerprint templates!"); + Serial.println("Press 'Y' key to continue"); + + while (1) { + if (Serial.available() && (Serial.read() == 'Y')) { + break; + } + } + + // set the data rate for the sensor serial port + finger.begin(57600); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1); + } + + finger.emptyDatabase(); + + Serial.println("Now database is empty :)"); +} + +void loop() { +} + diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino new file mode 100644 index 000000000..2db858d49 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino @@ -0,0 +1,212 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor + + Designed specifically to work with the Adafruit BMP085 Breakout + ----> http://www.adafruit.com/products/751 + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include + +// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white +// uncomment this line: +// #define mySerial Serial1 + +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// comment these two lines if using hardware serial +SoftwareSerial mySerial(2, 3); + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +uint8_t id; + +void setup() +{ + Serial.begin(9600); + while (!Serial); // For Yun/Leo/Micro/Zero/... + delay(100); + Serial.println("\n\nAdafruit Fingerprint sensor enrollment"); + + // set the data rate for the sensor serial port + finger.begin(57600); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1) { delay(1); } + } +} + +uint8_t readnumber(void) { + uint8_t num = 0; + + while (num == 0) { + while (! Serial.available()); + num = Serial.parseInt(); + } + return num; +} + +void loop() // run over and over again +{ + Serial.println("Ready to enroll a fingerprint!"); + Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as..."); + id = readnumber(); + if (id == 0) {// ID #0 not allowed, try again! + return; + } + Serial.print("Enrolling ID #"); + Serial.println(id); + + while (! getFingerprintEnroll() ); +} + +uint8_t getFingerprintEnroll() { + + int p = -1; + Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); + while (p != FINGERPRINT_OK) { + p = finger.getImage(); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image taken"); + break; + case FINGERPRINT_NOFINGER: + Serial.println("."); + break; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + break; + case FINGERPRINT_IMAGEFAIL: + Serial.println("Imaging error"); + break; + default: + Serial.println("Unknown error"); + break; + } + } + + // OK success! + + p = finger.image2Tz(1); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image converted"); + break; + case FINGERPRINT_IMAGEMESS: + Serial.println("Image too messy"); + return p; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + return p; + case FINGERPRINT_FEATUREFAIL: + Serial.println("Could not find fingerprint features"); + return p; + case FINGERPRINT_INVALIDIMAGE: + Serial.println("Could not find fingerprint features"); + return p; + default: + Serial.println("Unknown error"); + return p; + } + + Serial.println("Remove finger"); + delay(2000); + p = 0; + while (p != FINGERPRINT_NOFINGER) { + p = finger.getImage(); + } + Serial.print("ID "); Serial.println(id); + p = -1; + Serial.println("Place same finger again"); + while (p != FINGERPRINT_OK) { + p = finger.getImage(); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image taken"); + break; + case FINGERPRINT_NOFINGER: + Serial.print("."); + break; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + break; + case FINGERPRINT_IMAGEFAIL: + Serial.println("Imaging error"); + break; + default: + Serial.println("Unknown error"); + break; + } + } + + // OK success! + + p = finger.image2Tz(2); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image converted"); + break; + case FINGERPRINT_IMAGEMESS: + Serial.println("Image too messy"); + return p; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + return p; + case FINGERPRINT_FEATUREFAIL: + Serial.println("Could not find fingerprint features"); + return p; + case FINGERPRINT_INVALIDIMAGE: + Serial.println("Could not find fingerprint features"); + return p; + default: + Serial.println("Unknown error"); + return p; + } + + // OK converted! + Serial.print("Creating model for #"); Serial.println(id); + + p = finger.createModel(); + if (p == FINGERPRINT_OK) { + Serial.println("Prints matched!"); + } else if (p == FINGERPRINT_PACKETRECIEVEERR) { + Serial.println("Communication error"); + return p; + } else if (p == FINGERPRINT_ENROLLMISMATCH) { + Serial.println("Fingerprints did not match"); + return p; + } else { + Serial.println("Unknown error"); + return p; + } + + Serial.print("ID "); Serial.println(id); + p = finger.storeModel(id); + if (p == FINGERPRINT_OK) { + Serial.println("Stored!"); + } else if (p == FINGERPRINT_PACKETRECIEVEERR) { + Serial.println("Communication error"); + return p; + } else if (p == FINGERPRINT_BADLOCATION) { + Serial.println("Could not store in that location"); + return p; + } else if (p == FINGERPRINT_FLASHERR) { + Serial.println("Error writing to flash"); + return p; + } else { + Serial.println("Unknown error"); + return p; + } +} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino new file mode 100644 index 000000000..db13ffa23 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino @@ -0,0 +1,141 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor + + Designed specifically to work with the Adafruit BMP085 Breakout + ----> http://www.adafruit.com/products/751 + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + + +#include + +// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white +// uncomment this line: +// #define mySerial Serial1 + +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// comment these two lines if using hardware serial +SoftwareSerial mySerial(2, 3); + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +void setup() +{ + Serial.begin(9600); + while (!Serial); // For Yun/Leo/Micro/Zero/... + delay(100); + Serial.println("\n\nAdafruit finger detect test"); + + // set the data rate for the sensor serial port + finger.begin(57600); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1) { delay(1); } + } + + finger.getTemplateCount(); + Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); + Serial.println("Waiting for valid finger..."); +} + +void loop() // run over and over again +{ + getFingerprintIDez(); + delay(50); //don't ned to run this at full speed. +} + +uint8_t getFingerprintID() { + uint8_t p = finger.getImage(); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image taken"); + break; + case FINGERPRINT_NOFINGER: + Serial.println("No finger detected"); + return p; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + return p; + case FINGERPRINT_IMAGEFAIL: + Serial.println("Imaging error"); + return p; + default: + Serial.println("Unknown error"); + return p; + } + + // OK success! + + p = finger.image2Tz(); + switch (p) { + case FINGERPRINT_OK: + Serial.println("Image converted"); + break; + case FINGERPRINT_IMAGEMESS: + Serial.println("Image too messy"); + return p; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + return p; + case FINGERPRINT_FEATUREFAIL: + Serial.println("Could not find fingerprint features"); + return p; + case FINGERPRINT_INVALIDIMAGE: + Serial.println("Could not find fingerprint features"); + return p; + default: + Serial.println("Unknown error"); + return p; + } + + // OK converted! + p = finger.fingerFastSearch(); + if (p == FINGERPRINT_OK) { + Serial.println("Found a print match!"); + } else if (p == FINGERPRINT_PACKETRECIEVEERR) { + Serial.println("Communication error"); + return p; + } else if (p == FINGERPRINT_NOTFOUND) { + Serial.println("Did not find a match"); + return p; + } else { + Serial.println("Unknown error"); + return p; + } + + // found a match! + Serial.print("Found ID #"); Serial.print(finger.fingerID); + Serial.print(" with confidence of "); Serial.println(finger.confidence); + + return finger.fingerID; +} + +// returns -1 if failed, otherwise returns ID # +int getFingerprintIDez() { + uint8_t p = finger.getImage(); + if (p != FINGERPRINT_OK) return -1; + + p = finger.image2Tz(); + if (p != FINGERPRINT_OK) return -1; + + p = finger.fingerFastSearch(); + if (p != FINGERPRINT_OK) return -1; + + // found a match! + Serial.print("Found ID #"); Serial.print(finger.fingerID); + Serial.print(" with confidence of "); Serial.println(finger.confidence); + return finger.fingerID; +} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip new file mode 100644 index 000000000..e69de29bb diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino new file mode 100644 index 000000000..919088b96 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino @@ -0,0 +1,156 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor + + 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, all text above must be included in any redistribution + ****************************************************/ + + +#include + +int getFingerprintIDez(); + +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +SoftwareSerial mySerial(2, 3); + + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +void setup() +{ + while(!Serial); + Serial.begin(9600); + Serial.println("Fingerprint template extractor"); + + // set the data rate for the sensor serial port + finger.begin(57600); + + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1); + } + + // Try to get the templates for fingers 1 through 10 + for (int finger = 1; finger < 10; finger++) { + downloadFingerprintTemplate(finger); + } +} + +uint8_t downloadFingerprintTemplate(uint16_t id) +{ + Serial.println("------------------------------------"); + Serial.print("Attempting to load #"); Serial.println(id); + uint8_t p = finger.loadModel(id); + switch (p) { + case FINGERPRINT_OK: + Serial.print("Template "); Serial.print(id); Serial.println(" loaded"); + break; + case FINGERPRINT_PACKETRECIEVEERR: + Serial.println("Communication error"); + return p; + default: + Serial.print("Unknown error "); Serial.println(p); + return p; + } + + // OK success! + + Serial.print("Attempting to get #"); Serial.println(id); + p = finger.getModel(); + switch (p) { + case FINGERPRINT_OK: + Serial.print("Template "); Serial.print(id); Serial.println(" transferring:"); + break; + default: + Serial.print("Unknown error "); Serial.println(p); + return p; + } + + // one data packet is 267 bytes. in one data packet, 11 bytes are 'usesless' :D + uint8_t bytesReceived[534]; // 2 data packets + memset(bytesReceived, 0xff, 534); + + uint32_t starttime = millis(); + int i = 0; + while (i < 534 && (millis() - starttime) < 20000) { + if (mySerial.available()) { + bytesReceived[i++] = mySerial.read(); + } + } + Serial.print(i); Serial.println(" bytes read."); + Serial.println("Decoding packet..."); + + uint8_t fingerTemplate[512]; // the real template + memset(fingerTemplate, 0xff, 512); + + // filtering only the data packets + int uindx = 9, index = 0; + while (index < 534) { + while (index < uindx) ++index; + uindx += 256; + while (index < uindx) { + fingerTemplate[index++] = bytesReceived[index]; + } + uindx += 2; + while (index < uindx) ++index; + uindx = index + 9; + } + for (int i = 0; i < 512; ++i) { + //Serial.print("0x"); + printHex(fingerTemplate[i], 2); + //Serial.print(", "); + } + Serial.println("\ndone."); + + /* + uint8_t templateBuffer[256]; + memset(templateBuffer, 0xff, 256); //zero out template buffer + int index=0; + uint32_t starttime = millis(); + while ((index < 256) && ((millis() - starttime) < 1000)) + { + if (mySerial.available()) + { + templateBuffer[index] = mySerial.read(); + index++; + } + } + + Serial.print(index); Serial.println(" bytes read"); + + //dump entire templateBuffer. This prints out 16 lines of 16 bytes + for (int count= 0; count < 16; count++) + { + for (int i = 0; i < 16; i++) + { + Serial.print("0x"); + Serial.print(templateBuffer[count*16+i], HEX); + Serial.print(", "); + } + Serial.println(); + }*/ +} + + + +void printHex(int num, int precision) { + char tmp[16]; + char format[128]; + + sprintf(format, "%%.%dX", precision); + + sprintf(tmp, format, num); + Serial.print(tmp); +} + +void loop() +{} + + diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties new file mode 100644 index 000000000..e8dab6fc3 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties @@ -0,0 +1,9 @@ +name=Adafruit Fingerprint Sensor Library +version=1.1.2 +author=Adafruit +maintainer=Adafruit +sentence=Arduino library for interfacing to the fingerprint sensor in the Adafruit shop +paragraph=Arduino library for interfacing to the fingerprint sensor in the Adafruit shop +category=Sensors +url=https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library +architectures=* diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt new file mode 100644 index 000000000..f6a0f22b8 --- /dev/null +++ b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt @@ -0,0 +1,26 @@ +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: +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. Neither the name of the copyright holders nor the +names of its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 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/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index fa8e01c41..aeb93d72d 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 3865c6f5f..7bea97561 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 6e042eca8..a23f5fc23 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 7d47469ce..66322e57b 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 1ab58fadb..c97b114ea 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 3848542d9..3b38ec4b0 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -669,6 +669,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 TX" #define D_SENSOR_DDS2382_RX "DDS238-2 RX" #define D_SENSOR_DDSU666_TX "DDSU666 TX" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index d03e8e090..6fcd10532 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 40cbbc8c6..56e80a9f2 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index d2c42327c..79331c1fc 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 - MS1" #define D_SENSOR_OUTPUT_HI "Output - Hi" #define D_SENSOR_OUTPUT_LO "Output - Lo" +#define D_SENSOR_AS608_TX "AS608 - TX" +#define D_SENSOR_AS608_RX "AS608 - RX" #define D_SENSOR_DDS2382_TX "DDS238-2 - TX" #define D_SENSOR_DDS2382_RX "DDS238-2 - RX" #define D_SENSOR_DDSU666_TX "DDSU666 - TX" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index ffdf1dfef..7f310bab5 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 2fafa100a..ad0a81a5e 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 6cb2abb95..1eb720b8b 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index a40114f6e..c74613b53 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 579b43987..b1a7e567c 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index a154e4049..a280d5667 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index b49bffd79..6bf05807c 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 6007fc315..54d253129 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 0b1416573..55234b37f 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 883d8a4e4..e4908e1c4 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 7b1e91b41..e17c41272 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 122e478a4..07a2e6645 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 53cab55df..bf310f1ab 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 0af4fcea9..c041faa97 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 61ccc74a6..6f90fe225 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -658,7 +658,9 @@ void ResponseAppendFeatures(void) #if defined(USE_I2C) && defined(USE_EZOPMP) feature7 |= 0x00000400; // xsns_78_ezopmp.ino #endif -// feature7 |= 0x00000800; +#ifdef USE_AS608 + feature7 |= 0x00000800; // xsns_79_as608.ino +#endif // feature7 |= 0x00001000; // feature7 |= 0x00002000; diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 9d5c10a47..15394ae96 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -148,6 +148,7 @@ enum UserSelectablePins { GPIO_DYP_RX, GPIO_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface + GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503 GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -253,7 +254,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_ZIGBEE_RST "|" D_SENSOR_DYP_RX "|" D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|" - D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX + D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|" + D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -566,6 +568,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_BOILER_OT_TX), AGPIO(GPIO_BOILER_OT_RX), #endif +#ifdef USE_AS608 + AGPIO(GPIO_AS608_TX), + AGPIO(GPIO_AS608_RX), +#endif /*-------------------------------------------------------------------------------------------*\ * Other sensors diff --git a/tools/decode-status.py b/tools/decode-status.py index b657da571..4c462e31a 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -236,7 +236,7 @@ a_features = [[ ],[ "USE_EZOORP","USE_EZORTD","USE_EZOHUM","USE_EZOEC", "USE_EZOCO2","USE_EZOO2","USE_EZOPRS","USE_EZOFLO", - "USE_EZODO","USE_EZORGB","USE_EZOPMP","", + "USE_EZODO","USE_EZORGB","USE_EZOPMP","USE_AS608", "","","","", "","","","", "","","","", @@ -269,7 +269,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20201107 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20201110 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From 996aecf4383e7d9b9b773604cd764217ab7bc5d9 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 10 Nov 2020 15:21:55 +0100 Subject: [PATCH 057/293] add missing AS608 entrys --- tasmota/language/cs_CZ.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 13f0efc26..9614943c5 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -673,6 +673,8 @@ #define D_SENSOR_A4988_MS1 "A4988 MS1" #define D_SENSOR_OUTPUT_HI "Output Hi" #define D_SENSOR_OUTPUT_LO "Output Lo" +#define D_SENSOR_AS608_TX "AS608 Tx" +#define D_SENSOR_AS608_RX "AS608 Rx" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" From 39b0cf4c5655803079226f7dbb6adc6a2a3016c5 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 11 Nov 2020 12:09:18 +0100 Subject: [PATCH 058/293] Zigbee command ``ZbInfo`` and prepare support for EEPROM --- CHANGELOG.md | 1 + lib/default/AT24C256_512/Eeprom24C512.cpp | 4 +- tasmota/i18n.h | 1 + tasmota/my_user_config.h | 3 +- tasmota/xdrv_23_zigbee_1_headers.ino | 18 +- tasmota/xdrv_23_zigbee_2_devices.ino | 119 +++++++--- tasmota/xdrv_23_zigbee_2a_devices_impl.ino | 136 ++++++----- tasmota/xdrv_23_zigbee_4_persistence.ino | 32 ++- tasmota/xdrv_23_zigbee_4a_eeprom.ino | 185 +++++++++++++++ tasmota/xdrv_23_zigbee_5_converters.ino | 19 +- tasmota/xdrv_23_zigbee_A_impl.ino | 249 ++++++--------------- 11 files changed, 470 insertions(+), 297 deletions(-) create mode 100644 tasmota/xdrv_23_zigbee_4a_eeprom.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index 98c45ddfc..954727ff0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Zigbee alarm persistence (#9785) - Support for EZO PMP sensors by Christopher Tremblay (#9760) - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) +- Zigbee command ``ZbInfo`` and prepare support for EEPROM ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/lib/default/AT24C256_512/Eeprom24C512.cpp b/lib/default/AT24C256_512/Eeprom24C512.cpp index 06aedd9cf..86e618aee 100644 --- a/lib/default/AT24C256_512/Eeprom24C512.cpp +++ b/lib/default/AT24C256_512/Eeprom24C512.cpp @@ -227,7 +227,9 @@ Eeprom24C512::readBytes byte remainingBytes = length % EEPROM__RD_BUFFER_SIZE; word offset = length - remainingBytes; - readBuffer(address + offset, remainingBytes, p_data + offset); + if (remainingBytes > 0) { + readBuffer(address + offset, remainingBytes, p_data + offset); + } } /****************************************************************************** diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 31595fe93..bf6bbcb06 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -547,6 +547,7 @@ #define D_JSON_ZIGBEE_MODELID "ModelId" #define D_CMND_ZIGBEE_PROBE "Probe" #define D_CMND_ZIGBEE_FORGET "Forget" +#define D_CMND_ZIGBEE_INFO "Info" #define D_CMND_ZIGBEE_SAVE "Save" #define D_CMND_ZIGBEE_LINKQUALITY "LinkQuality" #define D_CMND_ZIGBEE_CLUSTER "Cluster" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 185614f89..742d24f6c 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -729,7 +729,8 @@ #define USE_ZIGBEE_COALESCE_ATTR_TIMER 350 // timer to coalesce attribute values (in ms) #define USE_ZIGBEE_MODELID "Tasmota Z2T" // reported "ModelId" (cluster 0000 / attribute 0005) #define USE_ZIGBEE_MANUFACTURER "Tasmota" // reported "Manufacturer" (cluster 0000 / attribute 0004) - #define USE_ZBBRIDGE_TLS // TLS support for zbbridge + #define USE_ZBBRIDGE_TLS // TLS support for zbbridge + #define USE_ZIGBEE_ZBBRIDGE_EEPROM 0x50 // I2C id for the ZBBridge EEPROM // -- Other sensors/drivers ----------------------- diff --git a/tasmota/xdrv_23_zigbee_1_headers.ino b/tasmota/xdrv_23_zigbee_1_headers.ino index c4283599e..8ed35fb4b 100644 --- a/tasmota/xdrv_23_zigbee_1_headers.ino +++ b/tasmota/xdrv_23_zigbee_1_headers.ino @@ -19,6 +19,10 @@ #ifdef USE_ZIGBEE +#ifdef USE_ZIGBEE_EZSP +#include "Eeprom24C512.h" +#endif // USE_ZIGBEE_EZSP + // contains some definitions for functions used before their declarations // @@ -69,7 +73,14 @@ const uint8_t ZIGBEE_LABEL_CONFIGURE_EZSP = 53; // main loop const uint8_t ZIGBEE_LABEL_ABORT = 99; // goto label 99 in case of fatal error const uint8_t ZIGBEE_LABEL_UNSUPPORTED_VERSION = 98; // Unsupported ZNP version -struct ZigbeeStatus { +class ZigbeeStatus { +public: + ZigbeeStatus() +#ifdef USE_ZIGBEE_EZSP + : eeprom(USE_ZIGBEE_ZBBRIDGE_EEPROM) +#endif // USE_ZIGBEE_EZSP + {} + bool active = true; // is Zigbee active for this device, i.e. GPIOs configured bool state_machine = false; // the state machine is running bool state_waiting = false; // the state machine is waiting for external event or timeout @@ -77,6 +88,7 @@ struct ZigbeeStatus { bool ready = false; // cc2530 initialization is complet, ready to operate bool init_phase = true; // initialization phase, before accepting zigbee traffic bool recv_until = false; // ignore all messages until the received frame fully matches + bool eeprom_present = false; // is the ZBBridge EEPROM present? uint8_t on_error_goto = ZIGBEE_LABEL_ABORT; // on error goto label, 99 default to abort uint8_t on_timeout_goto = ZIGBEE_LABEL_ABORT; // on timeout goto label, 99 default to abort @@ -89,6 +101,10 @@ struct ZigbeeStatus { ZB_RecvMsgFunc recv_unexpected = nullptr; // function called when unexpected message is received uint32_t permit_end_time = 0; // timestamp when permit join ends + +#ifdef USE_ZIGBEE_EZSP + Eeprom24C512 eeprom; // takes only 1 bytes of RAM +#endif // USE_ZIGBEE_EZSP }; struct ZigbeeStatus zigbee; SBuffer *zigbee_buffer = nullptr; diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index d4b2fdacb..a72c15232 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -53,7 +53,7 @@ const uint8_t Z_Data_Type_char[] PROGMEM = { '\0', // 0x0C '\0', // 0x0D '\0', // 0x0E - 'E', // 0x05 Z_Data_Type::Z_Ext + 'E', // 0x0F Z_Data_Type::Z_Ext // '_' maps to 0xFF Z_Data_Type::Z_Device }; @@ -63,12 +63,13 @@ class Z_Data_Set; \*********************************************************************************************/ class Z_Data { public: - Z_Data(Z_Data_Type type = Z_Data_Type::Z_Unknown, uint8_t endpoint = 0) : _type(type), _endpoint(endpoint), _config(0xF), _power(0) {} + Z_Data(Z_Data_Type type = Z_Data_Type::Z_Unknown, uint8_t endpoint = 0) : _type(type), _endpoint(endpoint), _config(0xF), _align_1(0), _reserved(0) {} inline Z_Data_Type getType(void) const { return _type; } inline int8_t getConfig(void) const { return _config; } inline bool validConfig(void) const { return _config != 0xF; } inline void setConfig(int8_t config) { _config = config; } uint8_t getConfigByte(void) const { return ( ((uint8_t)_type) << 4) | ((_config & 0xF) & 0x0F); } + uint8_t getReserved(void) const { return _reserved; } inline uint8_t getEndpoint(void) const { return _endpoint; } @@ -79,6 +80,7 @@ public: inline bool update(void) { return false; } static const Z_Data_Type type = Z_Data_Type::Z_Unknown; + static size_t DataTypeToLength(Z_Data_Type t); static bool ConfigToZData(const char * config_str, Z_Data_Type * type, uint8_t * ep, uint8_t * config); static Z_Data_Type CharToDataType(char c); @@ -87,9 +89,10 @@ public: friend class Z_Data_Set; protected: Z_Data_Type _type; // encoded on 4 bits, type of the device - uint8_t _endpoint; // source endpoint, or 0x00 if any endpoint + uint8_t _endpoint; // source endpoint, or 0x00 if any endpoint uint8_t _config : 4; // encoded on 4 bits, customize behavior - uint8_t _power; // power state if the type supports it + uint8_t _align_1 : 4; // force aligned to bytes, and fill with zero + uint8_t _reserved; // power state if the type supports it }; Z_Data_Type Z_Data::CharToDataType(char c) { @@ -153,28 +156,20 @@ bool Z_Data::ConfigToZData(const char * config_str, Z_Data_Type * type, uint8_t class Z_Data_OnOff : public Z_Data { public: Z_Data_OnOff(uint8_t endpoint = 0) : - Z_Data(Z_Data_Type::Z_OnOff, endpoint) - { - _config = 1; // at least 1 OnOff - } + Z_Data(Z_Data_Type::Z_OnOff, endpoint), + power(0xFF) + {} - inline bool validPower(uint32_t relay = 0) const { return (_config > relay); } // power is declared - inline bool getPower(uint32_t relay = 0) const { return bitRead(_power, relay); } - void setPower(bool val, uint32_t relay = 0); - - void toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const; + inline bool validPower(void) const { return 0xFF != power; } // power is declared + inline bool getPower(void) const { return validPower() ? (power != 0) : false; } // default to false if undefined + inline void setPower(bool val) { power = val ? 1 : 0; } static const Z_Data_Type type = Z_Data_Type::Z_OnOff; + + // 1 byte + uint8_t power; }; - -void Z_Data_OnOff::setPower(bool val, uint32_t relay) { - if (relay < 8) { - if (_config < relay) { _config = relay; } // we update the number of valid relays - bitWrite(_power, relay, val); - } -} - /*********************************************************************************************\ * Device specific: Plug device \*********************************************************************************************/ @@ -430,6 +425,37 @@ public: // 0x0226 Glass break sensor // 0x0229 Security repeater* }; + +const uint8_t Z_Data_Type_len[] PROGMEM = { + 0, // 0x00 Z_Data_Type::Z_Unknown + sizeof(Z_Data_Light), // 0x01 Z_Data_Type::Z_Light + sizeof(Z_Data_Plug), // 0x02 Z_Data_Type::Z_Plug + sizeof(Z_Data_PIR), // 0x03 Z_Data_Type::Z_PIR + sizeof(Z_Data_Alarm), // 0x04 Z_Data_Type::Z_Alarm + sizeof(Z_Data_Thermo), // 0x05 Z_Data_Type::Z_Thermo + sizeof(Z_Data_OnOff), // 0x05 Z_Data_Type::Z_OnOff + 0, // 0x06 + 0, // 0x07 + 0, // 0x08 + 0, // 0x09 + 0, // 0x0A + 0, // 0x0B + 0, // 0x0C + 0, // 0x0D + 0, // 0x0E + 0, // 0x0F Z_Data_Type::Z_Ext + // '_' maps to 0xFF Z_Data_Type::Z_Device +}; + +size_t Z_Data::DataTypeToLength(Z_Data_Type t) { + uint32_t tt = (uint32_t) t; + if (tt < ARRAY_SIZE(Z_Data_Type_len)) { + return pgm_read_byte(&Z_Data_Type_len[tt]); + } + return 0; +} + + /*********************************************************************************************\ * * Device specific Linked List @@ -453,7 +479,10 @@ public: template const M & find(uint8_t ep = 0) const; - // check if the point is null, if so create a new object with the right sub-class + // create a new data object from a 4 bytes buffer + Z_Data & createFromBuffer(const SBuffer & buf, uint32_t start, uint32_t len); + + // check if the pointer is null, if so create a new object with the right sub-class template M & addIfNull(M & cur, uint8_t ep = 0); }; @@ -489,6 +518,35 @@ Z_Data & Z_Data_Set::getByType(Z_Data_Type type, uint8_t ep) { } } +// Instanciate with either: +// (04)04010100 - without data except minimal Z_Data +// (08)04010100.B06DFFFF - with complete data - in this case must not exceed the structure len +// +// Byte 0: type +// Byte 1: endpoint +// Byte 2: config +// Byte 3: Power +Z_Data & Z_Data_Set::createFromBuffer(const SBuffer & buf, uint32_t start, uint32_t len) { + if (len < sizeof(Z_Data)) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Invalid len (<4) %d"), len); + return *(Z_Data*)nullptr; + } + + Z_Data_Type data_type = (Z_Data_Type) buf.get8(start); + uint8_t expected_len = Z_Data::DataTypeToLength(data_type); + uint8_t endpoint = buf.get8(start + 1); + + Z_Data & elt = getByType(data_type, endpoint); + if (&elt == nullptr) { return *(Z_Data*)nullptr; } + if (len <= expected_len) { + memcpy(&elt, buf.buf(start), len); + } else { + memcpy(&elt, buf.buf(start), sizeof(Z_Data)); + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "buffer len overflow %d > %d"), len, expected_len); + } + return elt; +} + template M & Z_Data_Set::get(uint8_t ep) { M & m = (M&) find(M::type, ep); @@ -528,11 +586,6 @@ const Z_Data & Z_Data_Set::find(Z_Data_Type type, uint8_t ep) const { return *(Z_Data*)nullptr; } -void Z_Data_OnOff::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const { - if (validPower()) { attr_list.addAttribute(PSTR("Power")).setUInt(getPower() ? 1 : 0); } -} - - /*********************************************************************************************\ * Structures for Rules variables related to the last received message \*********************************************************************************************/ @@ -561,11 +614,13 @@ public: // New version of device data handling Z_Data_Set data; // Linkedlist of device data per endpoint - // other status + // other status - device wide data is 8 bytes + // START OF DEVICE WIDE DATA + uint32_t last_seen; // Last seen time (epoch) uint8_t lqi; // lqi from last message, 0xFF means unknown uint8_t batterypercent; // battery percentage (0..100), 0xFF means unknwon - // power plug data- - uint32_t last_seen; // Last seen time (epoch) + uint16_t reserved_for_alignment; + // END OF DEVICE WIDE DATA // Constructor with all defaults Z_Device(uint16_t _shortaddr = BAD_SHORTADDR, uint64_t _longaddr = 0x00): @@ -736,7 +791,7 @@ public: // Dump json static String dumpLightState(const Z_Device & device); String dumpDevice(uint32_t dump_mode, const Z_Device & device) const; - static String dumpSingleDevice(uint32_t dump_mode, const Z_Device & device); + static String dumpSingleDevice(uint32_t dump_mode, const class Z_Device & device, bool add_device_name = true, bool add_brackets = true); int32_t deviceRestore(JsonParserObject json); // Hue support @@ -753,11 +808,13 @@ public: // Append or clear attributes Json structure void jsonAppend(uint16_t shortaddr, const Z_attribute_list &attr_list); + static void jsonPublishFlushAttrList(const Z_Device & device, const String & attr_list_string); void jsonPublishFlush(uint16_t shortaddr); // publish the json message and clear buffer bool jsonIsConflict(uint16_t shortaddr, const Z_attribute_list &attr_list) const; void jsonPublishNow(uint16_t shortaddr, Z_attribute_list &attr_list); // Iterator + inline const LList & getDevices(void) const { return _devices; } size_t devicesSize(void) const { return _devices.length(); } diff --git a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino index 20abe848a..b6591be2b 100644 --- a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino +++ b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino @@ -492,64 +492,71 @@ void Z_Devices::jsonAppend(uint16_t shortaddr, const Z_attribute_list &attr_list device.attr_list.mergeList(attr_list); } +// +// internal function to publish device information with respect to all `SetOption`s +// +void Z_Devices::jsonPublishFlushAttrList(const Z_Device & device, const String & attr_list_string) { + const char * fname = zigbee_devices.getFriendlyName(device.shortaddr); + bool use_fname = (Settings.flag4.zigbee_use_names) && (fname); // should we replace shortaddr with friendlyname? + + TasmotaGlobal.mqtt_data[0] = 0; // clear string + // Do we prefix with `ZbReceived`? + if (!Settings.flag4.remove_zbreceived) { + Response_P(PSTR("{\"" D_JSON_ZIGBEE_RECEIVED "\":")); + } + // What key do we use, shortaddr or name? + if (use_fname) { + Response_P(PSTR("%s{\"%s\":{"), TasmotaGlobal.mqtt_data, fname); + } else { + Response_P(PSTR("%s{\"0x%04X\":{"), TasmotaGlobal.mqtt_data, device.shortaddr); + } + // Add "Device":"0x...." + ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_DEVICE "\":\"0x%04X\","), device.shortaddr); + // Add "Name":"xxx" if name is present + if (fname) { + ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_NAME "\":\"%s\","), EscapeJSONString(fname).c_str()); + } + // Add all other attributes + ResponseAppend_P(PSTR("%s}}"), attr_list_string.c_str()); + + if (!Settings.flag4.remove_zbreceived) { + ResponseAppend_P(PSTR("}")); + } + + if (Settings.flag4.zigbee_distinct_topics) { + if (Settings.flag4.zb_topic_fname && fname) { + //Clean special characters and check size of friendly name + char stemp[TOPSZ]; + strlcpy(stemp, (!strlen(fname)) ? MQTT_TOPIC : fname, sizeof(stemp)); + MakeValidMqtt(0, stemp); + //Create topic with Prefix3 and cleaned up friendly name + char frtopic[TOPSZ]; + snprintf_P(frtopic, sizeof(frtopic), PSTR("%s/%s/" D_RSLT_SENSOR), SettingsText(SET_MQTTPREFIX3), stemp); + MqttPublish(frtopic, Settings.flag.mqtt_sensor_retain); + } else { + char subtopic[16]; + snprintf_P(subtopic, sizeof(subtopic), PSTR("%04X/" D_RSLT_SENSOR), device.shortaddr); + MqttPublishPrefixTopic_P(TELE, subtopic, Settings.flag.mqtt_sensor_retain); + } + } else { + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); + } + XdrvRulesProcess(); // apply rules +} + void Z_Devices::jsonPublishFlush(uint16_t shortaddr) { Z_Device & device = getShortAddr(shortaddr); if (!device.valid()) { return; } // safeguard Z_attribute_list &attr_list = device.attr_list; if (!attr_list.isEmpty()) { - const char * fname = zigbee_devices.getFriendlyName(shortaddr); - bool use_fname = (Settings.flag4.zigbee_use_names) && (fname); // should we replace shortaddr with friendlyname? - // save parameters is global variables to be used by Rules gZbLastMessage.device = shortaddr; // %zbdevice% gZbLastMessage.groupaddr = attr_list.group_id; // %zbgroup% gZbLastMessage.endpoint = attr_list.src_ep; // %zbendpoint% - TasmotaGlobal.mqtt_data[0] = 0; // clear string - // Do we prefix with `ZbReceived`? - if (!Settings.flag4.remove_zbreceived) { - Response_P(PSTR("{\"" D_JSON_ZIGBEE_RECEIVED "\":")); - } - // What key do we use, shortaddr or name? - if (use_fname) { - Response_P(PSTR("%s{\"%s\":{"), TasmotaGlobal.mqtt_data, fname); - } else { - Response_P(PSTR("%s{\"0x%04X\":{"), TasmotaGlobal.mqtt_data, shortaddr); - } - // Add "Device":"0x...." - ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_DEVICE "\":\"0x%04X\","), shortaddr); - // Add "Name":"xxx" if name is present - if (fname) { - ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_NAME "\":\"%s\","), EscapeJSONString(fname).c_str()); - } - // Add all other attributes - ResponseAppend_P(PSTR("%s}}"), attr_list.toString().c_str()); - - if (!Settings.flag4.remove_zbreceived) { - ResponseAppend_P(PSTR("}")); - } + jsonPublishFlushAttrList(device, attr_list.toString()); attr_list.reset(); // clear the attributes - - if (Settings.flag4.zigbee_distinct_topics) { - if (Settings.flag4.zb_topic_fname && fname) { - //Clean special characters and check size of friendly name - char stemp[TOPSZ]; - strlcpy(stemp, (!strlen(fname)) ? MQTT_TOPIC : fname, sizeof(stemp)); - MakeValidMqtt(0, stemp); - //Create topic with Prefix3 and cleaned up friendly name - char frtopic[TOPSZ]; - snprintf_P(frtopic, sizeof(frtopic), PSTR("%s/%s/" D_RSLT_SENSOR), SettingsText(SET_MQTTPREFIX3), stemp); - MqttPublish(frtopic, Settings.flag.mqtt_sensor_retain); - } else { - char subtopic[16]; - snprintf_P(subtopic, sizeof(subtopic), PSTR("%04X/" D_RSLT_SENSOR), shortaddr); - MqttPublishPrefixTopic_P(TELE, subtopic, Settings.flag.mqtt_sensor_retain); - } - } else { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - } - XdrvRulesProcess(); // apply rules } } @@ -649,20 +656,24 @@ String Z_Devices::dumpLightState(const Z_Device & device) { // Dump the internal memory of Zigbee devices // Mode = 1: simple dump of devices addresses // Mode = 2: simple dump of devices addresses and names, endpoints, light -String Z_Devices::dumpSingleDevice(uint32_t dump_mode, const class Z_Device & device) { +// Mode = 3: dump last known data attributes +// add_device_name : do we add shortaddr/name ? +String Z_Devices::dumpSingleDevice(uint32_t dump_mode, const class Z_Device & device, bool add_device_name, bool add_brackets) { uint16_t shortaddr = device.shortaddr; char hex[22]; Z_attribute_list attr_list; - snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), shortaddr); - attr_list.addAttribute(F(D_JSON_ZIGBEE_DEVICE)).setStr(hex); + if (add_device_name) { + snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), shortaddr); + attr_list.addAttribute(F(D_JSON_ZIGBEE_DEVICE)).setStr(hex); - if (device.friendlyName > 0) { - attr_list.addAttribute(F(D_JSON_ZIGBEE_NAME)).setStr(device.friendlyName); + if (device.friendlyName > 0) { + attr_list.addAttribute(F(D_JSON_ZIGBEE_NAME)).setStr(device.friendlyName); + } } - if (2 <= dump_mode) { + if (dump_mode >= 2) { hex[0] = '0'; // prefix with '0x' hex[1] = 'x'; Uint64toHex(device.longaddr, &hex[2], 64); @@ -695,7 +706,17 @@ String Z_Devices::dumpSingleDevice(uint32_t dump_mode, const class Z_Device & de } attr_list.addAttribute(F("Config")).setStrRaw(arr_data.toString().c_str()); } - return attr_list.toString(true); + if (dump_mode >= 3) { + // show internal data - mostly last known values + for (auto & data_elt : device.data) { + Z_Data_Type data_type = data_elt.getType(); + + data_elt.toAttributes(attr_list, data_type); + } + // add device wide attributes + device.toAttributes(attr_list); + } + return attr_list.toString(add_brackets); } // If &device == nullptr, then dump all @@ -796,9 +817,14 @@ Z_Data_Light & Z_Devices::getLight(uint16_t shortaddr) { * Export device specific attributes to ZbData \*********************************************************************************************/ void Z_Device::toAttributes(Z_attribute_list & attr_list) const { - if (validLqi()) { attr_list.addAttribute(PSTR(D_CMND_ZIGBEE_LINKQUALITY)).setUInt(lqi); } if (validBatteryPercent()) { attr_list.addAttribute(PSTR("BatteryPercentage")).setUInt(batterypercent); } - if (validLastSeen()) { attr_list.addAttribute(PSTR("LastSeen")).setUInt(last_seen); } + if (validLastSeen()) { + if (Rtc.utc_time >= last_seen) { + attr_list.addAttribute(PSTR("LastSeen")).setUInt(Rtc.utc_time - last_seen); + } + attr_list.addAttribute(PSTR("LastSeenEpoch")).setUInt(last_seen); + } + if (validLqi()) { attr_list.addAttribute(PSTR(D_CMND_ZIGBEE_LINKQUALITY)).setUInt(lqi); } } /*********************************************************************************************\ diff --git a/tasmota/xdrv_23_zigbee_4_persistence.ino b/tasmota/xdrv_23_zigbee_4_persistence.ino index 9a8a095c6..ecaf150f9 100644 --- a/tasmota/xdrv_23_zigbee_4_persistence.ino +++ b/tasmota/xdrv_23_zigbee_4_persistence.ino @@ -194,14 +194,6 @@ class SBuffer hibernateDevices(void) { AddLog_P(LOG_LEVEL_ERROR, PSTR(D_LOG_ZIGBEE "Devices list too big to fit in Flash (%d)"), buf_len); } - // Log - char *hex_char = (char*) malloc((buf_len * 2) + 2); - if (hex_char) { - AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "ZbFlashStore %s"), - ToHex_P(buf.getBuffer(), buf_len, hex_char, (buf_len * 2) + 2)); - free(hex_char); - } - return buf; } @@ -301,8 +293,8 @@ void hydrateDevices(const SBuffer &buf, uint32_t version) { } } - -void loadZigbeeDevices(void) { +// dump = true, only dump to logs, don't actually load +void loadZigbeeDevices(bool dump_only = false) { #ifdef ESP32 // first copy SPI buffer into ram uint8_t *spi_buffer = (uint8_t*) malloc(z_spi_len); @@ -316,7 +308,7 @@ void loadZigbeeDevices(void) { Z_Flashentry flashdata; memcpy_P(&flashdata, z_dev_start, sizeof(Z_Flashentry)); // AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Memory %d"), ESP_getFreeHeap()); - AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); + // AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "Zigbee signature in Flash: %08X - %d"), flashdata.name, flashdata.len); // Check the signature if ( ((flashdata.name == ZIGB_NAME1) || (flashdata.name == ZIGB_NAME2)) @@ -327,15 +319,21 @@ void loadZigbeeDevices(void) { SBuffer buf(buf_len); buf.addBuffer(z_dev_start + sizeof(Z_Flashentry), buf_len); AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "Zigbee devices data in Flash v%d (%d bytes)"), version, buf_len); - // Serial.printf(">> Buffer="); - // for (uint32_t i=0; i 192) { buf_len = 192; } + AddLogBuffer(LOG_LEVEL_INFO, buf.getBuffer(), buf_len); + // Serial.printf(">> Buffer="); + // for (uint32_t i=0; i. +*/ + +#ifdef USE_ZIGBEE + + +// ======================= +// ZbData v1 +// File structure: +// +// uint8 - number of devices, 0=none, 0xFF=invalid entry (probably Flash was erased) +// +// [Array of devices] +// [Offset = 2] +// uint8 - length of device record (excluding the length byte) +// uint16 - short address +// +// [Device specific data first] +// uint8 - length of structure (excluding the length byte) +// uint8[] - device wide data +// +// [Array of data structures] +// uint8 - length of structure +// uint8[] - list of data +// + +void dumpZigbeeDevicesData(void) { +#ifdef USE_ZIGBEE_EZSP + if (zigbee.eeprom_present) { + SBuffer buf(192); + + zigbee.eeprom.readBytes(64, 192, buf.getBuffer()); + AddLogBuffer(LOG_LEVEL_INFO, buf.getBuffer(), 192); + } +#endif // USE_ZIGBEE_EZSP +} + +// returns the lenght of consumed buffer, or -1 if error +int32_t hydrateDeviceWideData(class Z_Device & device, const SBuffer & buf, size_t start, size_t len) { + size_t segment_len = buf.get8(start); + if ((segment_len < 6) || (segment_len > len)) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "invalid device wide data length=%d"), segment_len); + return -1; + } + device.last_seen = buf.get32(start+1); + device.lqi = buf.get8(start + 5); + device.batterypercent = buf.get8(start + 6); + return segment_len + 1; +} + +// return true if success +bool hydrateDeviceData(class Z_Device & device, const SBuffer & buf, size_t start, size_t len) { + // First hydrate device wide data + int32_t ret = hydrateDeviceWideData(device, buf, start, len); + if (ret < 0) { return false; } + + size_t offset = 0 + ret; + while (offset + 5 <= len) { // each entry is at least 5 bytes + uint8_t data_len = buf.get8(start + offset); + Z_Data & data_elt = device.data.createFromBuffer(buf, offset + 1, data_len); + offset += data_len + 1; + } + return true; +} + +// negative means error +// positive is the segment length +int32_t hydrateSingleDevice(const class SBuffer & buf, size_t start, size_t len) { + uint8_t segment_len = buf.get8(start); + if ((segment_len < 4) || (start + segment_len > len)) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "invalid segment_len=%d"), segment_len); + return -1; + } + // read shortaddr + uint16_t shortaddr = buf.get16(start + 1); + if (shortaddr >= 0xFFF0) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "invalid shortaddr=0x%04X"), shortaddr); + return -1; + } + + // check if the device exists, if not skip the record + Z_Device & device = zigbee_devices.findShortAddr(shortaddr); + if (&device != nullptr) { + + // parse the rest + bool ret = hydrateDeviceData(device, buf, start + 3, segment_len - 3); + + if (!ret) { return -1; } + } + return segment_len + 1; +} + +// Parse the entire blob +// return true if ok +bool hydrateDevicesDataBlob(const class SBuffer & buf, size_t start, size_t len) { + // read number of devices + uint8_t num_devices = buf.get8(start); + if (num_devices > 0x80) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "wrong number of devices=%d"), num_devices); + return false; + } + + size_t offset = 0; + for (uint32_t cur_dev_num = 0; (cur_dev_num < num_devices) && (offset + 4 <= len); cur_dev_num++) { + int32_t segment_len = hydrateSingleDevice(buf, offset, len); + + // advance buffer + if (segment_len <= 0) { return false; } + offset += segment_len; + } +} + +class SBuffer hibernateDeviceData(const struct Z_Device & device, bool log = false) { + SBuffer buf(192); + + // If we have zero information about the device, just skip ir + if (device.validLqi() || + device.validBatteryPercent() || + device.validLastSeen() || + !device.data.isEmpty()) { + + buf.add8(0x00); // overall length, will be updated later + buf.add16(device.shortaddr); + + // device wide data + buf.add8(6); // 6 bytes + buf.add32(device.last_seen); + buf.add8(device.lqi); + buf.add8(device.batterypercent); + + for (const auto & data_elt : device.data) { + size_t item_len = data_elt.DataTypeToLength(data_elt.getType()); + buf.add8(item_len); // place-holder for length + buf.addBuffer((uint8_t*) &data_elt, item_len); + } + + // update overall length + buf.set8(0, buf.len() - 1); + + if (log) { + size_t buf_len = buf.len() - 3; + char hex[2*buf_len + 1]; + // skip first 3 bytes + ToHex_P(buf.buf(3), buf_len, hex, sizeof(hex)); + + Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_DATA "\":\"ZbData 0x%04X,%s\"}"), device.shortaddr, hex); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_DATA)); + } + } + + return buf; +} + +void hibernateAllData(void) { + + // first prefix is number of devices + uint8_t device_num = zigbee_devices.devicesSize(); + + for (const auto & device : zigbee_devices.getDevices()) { + // allocte a buffer for a single device + SBuffer buf = hibernateDeviceData(device, true); // log + if (buf.len() > 0) { + // TODO store in EEPROM + } + } + +} + +#endif // USE_ZIGBEE diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index bf3cc46c8..b736cb544 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -231,7 +231,7 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { //{ Zmap8, Cx0005, 0x0004, (NameSupport), Cm1, 0 }, // On/off cluster - { Zbool, Cx0006, 0x0000, Z_(Power), Cm1, 0 }, + { Zbool, Cx0006, 0x0000, Z_(Power), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_OnOff, power) }, { Zenum8, Cx0006, 0x4003, Z_(StartUpOnOff), Cm1, 0 }, { Zbool, Cx0006, 0x8000, Z_(Power), Cm1, 0 }, // See 7280 @@ -558,8 +558,8 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { // IAS Cluster (Intruder Alarm System) { Zenum8, Cx0500, 0x0000, Z_(ZoneState), Cm1, 0 }, // Occupancy (map8) - { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor - { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor + { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor + { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor { Zbool, Cx0500, 0xFFF0, Z_(Contact), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // We fit the first bit in the LSB // Metering (Smart Energy) cluster @@ -1844,6 +1844,7 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib switch (zigbee_type) { case Zenum8: case Zmap8: + case Zbool: case Zuint8: *(uint8_t*)attr_address = uval32; break; case Zenum16: case Zmap16: @@ -1975,6 +1976,7 @@ void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const const Z_AttributeConverter *converter = &Z_PostProcess[i]; uint8_t conv_export = pgm_read_byte(&converter->multiplier_idx) & Z_EXPORT_DATA; uint8_t conv_mapping = pgm_read_byte(&converter->mapping); + int8_t multiplier = CmToMultiplier(pgm_read_byte(&converter->multiplier_idx)); Z_Data_Type map_type = (Z_Data_Type) ((conv_mapping & 0xF0)>>4); uint8_t map_offset = (conv_mapping & 0x0F); @@ -1982,7 +1984,7 @@ void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const // we need to export this attribute const char * conv_name = Z_strings + pgm_read_word(&converter->name_offset); uint8_t zigbee_type = pgm_read_byte(&converter->type); // zigbee type to select right size 8/16/32 bits - uint8_t *attr_address = ((uint8_t*)this) + sizeof(Z_Data) + map_offset; // address of attribute in memory + uint8_t * attr_address = ((uint8_t*)this) + sizeof(Z_Data) + map_offset; // address of attribute in memory int32_t data_size = 0; int32_t ival32; @@ -1990,6 +1992,7 @@ void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const switch (zigbee_type) { case Zenum8: case Zmap8: + case Zbool: case Zuint8: uval32 = *(uint8_t*)attr_address; if (uval32 != 0xFF) data_size = 8; break; case Zmap16: case Zenum16: @@ -2002,8 +2005,12 @@ void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const if (data_size != 0) { Z_attribute & attr = attr_list.addAttribute(conv_name); - if (data_size > 0) { attr.setUInt(uval32); } - else { attr.setInt(ival32); } + float fval = (data_size > 0) ? uval32 : ival32; + if ((1 != multiplier) && (0 != multiplier)) { + if (multiplier > 0) { fval = fval * multiplier; } + else { fval = fval / (-multiplier); } + } + attr.setFloat(fval); } } } diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index c6b12a1f5..ea6869778 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -30,7 +30,7 @@ const char kZbCommands[] PROGMEM = D_PRFX_ZB "|" // prefix #endif // USE_ZIGBEE_EZSP D_CMND_ZIGBEE_PERMITJOIN "|" D_CMND_ZIGBEE_STATUS "|" D_CMND_ZIGBEE_RESET "|" D_CMND_ZIGBEE_SEND "|" D_CMND_ZIGBEE_PROBE "|" - D_CMND_ZIGBEE_FORGET "|" D_CMND_ZIGBEE_SAVE "|" D_CMND_ZIGBEE_NAME "|" + D_CMND_ZIGBEE_INFO "|" D_CMND_ZIGBEE_FORGET "|" D_CMND_ZIGBEE_SAVE "|" D_CMND_ZIGBEE_NAME "|" D_CMND_ZIGBEE_BIND "|" D_CMND_ZIGBEE_UNBIND "|" D_CMND_ZIGBEE_PING "|" D_CMND_ZIGBEE_MODELID "|" D_CMND_ZIGBEE_LIGHT "|" D_CMND_ZIGBEE_OCCUPANCY "|" D_CMND_ZIGBEE_RESTORE "|" D_CMND_ZIGBEE_BIND_STATE "|" D_CMND_ZIGBEE_MAP "|" @@ -46,7 +46,7 @@ void (* const ZigbeeCommand[])(void) PROGMEM = { #endif // USE_ZIGBEE_EZSP &CmndZbPermitJoin, &CmndZbStatus, &CmndZbReset, &CmndZbSend, &CmndZbProbe, - &CmndZbForget, &CmndZbSave, &CmndZbName, + &CmndZbInfo, &CmndZbForget, &CmndZbSave, &CmndZbName, &CmndZbBind, &CmndZbUnbind, &CmndZbPing, &CmndZbModelId, &CmndZbLight, &CmndZbOccupancy, &CmndZbRestore, &CmndZbBindState, &CmndZbMap, @@ -94,6 +94,16 @@ void ZigbeeInit(void) #endif SettingsSave(2); } + +#ifdef USE_ZIGBEE_EZSP + // Check the I2C EEprom + Wire.beginTransmission(USE_ZIGBEE_ZBBRIDGE_EEPROM); + uint8_t error = Wire.endTransmission(); + if (0 == error) { + AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_ZIGBEE "ZBBridge EEPROM found at address 0x%02X"), USE_ZIGBEE_ZBBRIDGE_EEPROM); + zigbee.eeprom_present = true; + } +#endif } // update commands with the current settings @@ -1175,13 +1185,43 @@ void CmndZbForget(void) { } } +// +// Command `ZbInfo` +// Display all information known about a device, this equivalent to `2bStatus3` with a simpler JSON output +// +void CmndZbInfo(void) { + if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } + Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered + if (!device.valid()) { ResponseCmndChar_P(PSTR("Unknown device")); return; } + + // everything is good, we can send the command + + String device_info = Z_Devices::dumpSingleDevice(3, device, false, false); + Z_Devices::jsonPublishFlushAttrList(device, device_info); + + ResponseCmndDone(); +} + // // Command `ZbSave` // Save Zigbee information to flash // void CmndZbSave(void) { if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - saveZigbeeDevices(); + switch (XdrvMailbox.payload) { + case 2: // save only data + hibernateAllData(); + break; + case -1: // dump configuration + loadZigbeeDevices(true); // dump only + break; + case -2: // dump data + dumpZigbeeDevicesData(); + break; + default: + saveZigbeeDevices(); + break; + } ResponseCmndDone(); } @@ -1378,196 +1418,32 @@ void CmndZbStatus(void) { } } -// -// Innder part of ZbData parsing -// -// {"L02":{"Dimmer":10,"Sat":254}} -bool parseDeviceInnerData(class Z_Device & device, JsonParserObject root) { - for (auto data_elt : root) { - // Parse key in format "L02":.... - const char * data_type_str = data_elt.getStr(); - Z_Data_Type data_type; - uint8_t endpoint; - uint8_t config = 0xFF; // unspecified - - // parse key in the form "L01.5" - if (!Z_Data::ConfigToZData(data_type_str, &data_type, &endpoint, &config)) { data_type = Z_Data_Type::Z_Unknown; } - - if (data_type == Z_Data_Type::Z_Unknown) { - Response_P(PSTR("{\"%s\":\"%s \"%s\"\"}"), XdrvMailbox.command, PSTR("Invalid Parameters"), data_type_str); - return false; - } - - JsonParserObject data_values = data_elt.getValue().getObject(); - if (!data_values) { return false; } - - JsonParserToken val; - if (data_type == Z_Data_Type::Z_Device) { - if (val = data_values[PSTR(D_CMND_ZIGBEE_LINKQUALITY)]) { device.lqi = val.getUInt(); } - if (val = data_values[PSTR("BatteryPercentage")]) { device.batterypercent = val.getUInt(); } - if (val = data_values[PSTR("LastSeen")]) { device.last_seen = val.getUInt(); } - } else { - // Import generic attributes first - device.addEndpoint(endpoint); - Z_Data & data = device.data.getByType(data_type, endpoint); - - // scan through attributes - if (&data != nullptr) { - if (config != 0xFF) { - data.setConfig(config); - } - - for (auto attr : data_values) { - JsonParserToken attr_value = attr.getValue(); - uint8_t conv_zigbee_type; - Z_Data_Type conv_data_type; - uint8_t conv_map_offset; - if (zigbeeFindAttributeByName(attr.getStr(), nullptr, nullptr, nullptr, &conv_zigbee_type, &conv_data_type, &conv_map_offset) != nullptr) { - // found an attribute matching the name, does is fit the type? - if (conv_data_type == data_type) { - // we got a match. Bear in mind that a zero value is not a valid 'data_type' - - uint8_t *attr_address = ((uint8_t*)&data) + sizeof(Z_Data) + conv_map_offset; - uint32_t uval32 = attr_value.getUInt(); // call converter to uint only once - int32_t ival32 = attr_value.getInt(); // call converter to int only once - switch (conv_zigbee_type) { - case Zenum8: - case Zuint8: *(uint8_t*)attr_address = uval32; break; - case Zenum16: - case Zuint16: *(uint16_t*)attr_address = uval32; break; - case Zuint32: *(uint32_t*)attr_address = uval32; break; - case Zint8: *(int8_t*)attr_address = ival32; break; - case Zint16: *(int16_t*)attr_address = ival32; break; - case Zint32: *(int32_t*)attr_address = ival32; break; - } - } else if (conv_data_type != Z_Data_Type::Z_Unknown) { - AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_ZIGBEE "attribute %s is wrong type %d (expected %d)"), attr.getStr(), (uint8_t)data_type, (uint8_t)conv_data_type); - } - } - } - } - - // Import specific attributes that are not handled with the generic method - switch (data_type) { - // case Z_Data_Type::Z_Plug: - // { - // Z_Data_Plug & plug = (Z_Data_Plug&) data; - // } - // break; - // case Z_Data_Type::Z_Light: - // { - // Z_Data_Light & light = (Z_Data_Light&) data; - // } - // break; - case Z_Data_Type::Z_OnOff: - { - Z_Data_OnOff & onoff = (Z_Data_OnOff&) data; - - if (val = data_values[PSTR("Power")]) { onoff.setPower(val.getUInt() ? true : false); } - } - break; - // case Z_Data_Type::Z_Thermo: - // { - // Z_Data_Thermo & thermo = (Z_Data_Thermo&) data; - // } - // break; - // case Z_Data_Type::Z_Alarm: - // { - // Z_Data_Alarm & alarm = (Z_Data_Alarm&) data; - // } - // break; - } - } - } - return true; -} - // // Command `ZbData` // void CmndZbData(void) { if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } - RemoveSpace(XdrvMailbox.data); - if (XdrvMailbox.data[0] == '{') { - // JSON input, enter saved data into memory -- essentially for debugging - JsonParser parser(XdrvMailbox.data); - JsonParserObject root = parser.getRootObject(); - if (!root) { ResponseCmndChar_P(PSTR(D_JSON_INVALID_JSON)); return; } - // Skip `ZbData` if present - JsonParserToken zbdata = root.getObject().findStartsWith(PSTR("ZbData")); - if (zbdata) { - root = zbdata; - } + // check if parameters contain a comma ',' + char *p; + char *str = strtok_r(XdrvMailbox.data, ",", &p); - for (auto device_name : root) { - Z_Device & device = zigbee_devices.parseDeviceFromName(device_name.getStr(), true); - if (!device.valid()) { ResponseCmndChar_P(PSTR("Unknown device")); return; } - JsonParserObject inner_data = device_name.getValue().getObject(); - if (inner_data) { - if (!parseDeviceInnerData(device, inner_data)) { - return; - } - } - } - zigbee_devices.dirty(); // save to flash - ResponseCmndDone(); + // parse first part, + Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered + if (!device.valid()) { ResponseCmndChar_P(PSTR("Unknown device")); return; } + + if (p) { + // set ZbData + const SBuffer buf = SBuffer::SBufferFromHex(p, strlen(p)); + hydrateDeviceData(device, buf, 0, buf.len()); } else { // non-JSON, export current data // ZbData 0x1234 // ZbData Device_Name - Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); - if (!device.valid()) { ResponseCmndChar_P(PSTR("Unknown device")); return; } - - Z_attribute_list attr_data; - - { // scope to force object deallocation - Z_attribute_list device_attr; - device.toAttributes(device_attr); - attr_data.addAttribute(F("_")).setStrRaw(device_attr.toString(true).c_str()); - } - - // Iterate on data objects - for (auto & data_elt : device.data) { - Z_attribute_list inner_attr; - char key[8]; - if (data_elt.validConfig()) { - snprintf_P(key, sizeof(key), "?%02X.%1X", data_elt.getEndpoint(), data_elt.getConfig()); - } else { - snprintf_P(key, sizeof(key), "?%02X", data_elt.getEndpoint()); - } - - Z_Data_Type data_type = data_elt.getType(); - key[0] = Z_Data::DataTypeToChar(data_type); - switch (data_type) { - case Z_Data_Type::Z_Plug: - ((Z_Data_Plug&)data_elt).toAttributes(inner_attr, data_type); - break; - case Z_Data_Type::Z_Light: - ((Z_Data_Light&)data_elt).toAttributes(inner_attr, data_type); - break; - case Z_Data_Type::Z_OnOff: - ((Z_Data_OnOff&)data_elt).toAttributes(inner_attr, data_type); - break; - case Z_Data_Type::Z_Thermo: - ((Z_Data_Thermo&)data_elt).toAttributes(inner_attr, data_type); - break; - case Z_Data_Type::Z_Alarm: - ((Z_Data_Alarm&)data_elt).toAttributes(inner_attr, data_type); - break; - case Z_Data_Type::Z_PIR: - ((Z_Data_PIR&)data_elt).toAttributes(inner_attr, data_type); - break; - } - if ((key[0] != '\0') && (key[0] != '?')) { - attr_data.addAttribute(key).setStrRaw(inner_attr.toString(true).c_str()); - } - } - - char hex[8]; - snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), device.shortaddr); - Response_P(PSTR("{\"%s\":{\"%s\":%s}}"), XdrvMailbox.command, hex, attr_data.toString(true).c_str()); + hibernateDeviceData(device, true); // log } + + ResponseCmndDone(); } // @@ -1652,6 +1528,8 @@ void CmndZbConfig(void) { \*********************************************************************************************/ extern "C" { + // comparator function used to sort Zigbee devices by alphabetical order (if friendlyname) + // then by shortaddr if they don't have friendlyname int device_cmp(const void * a, const void * b) { const Z_Device &dev_a = zigbee_devices.devicesAt(*(uint8_t*)a); const Z_Device &dev_b = zigbee_devices.devicesAt(*(uint8_t*)b); @@ -1664,7 +1542,7 @@ extern "C" { return (int32_t)dev_a.shortaddr - (int32_t)dev_b.shortaddr; } else { if (fn_a) return -1; - return 1; + else return 1; } } @@ -1829,15 +1707,16 @@ void ZigbeeShow(bool json) // Light, switches and plugs const Z_Data_OnOff & onoff = device.data.find(); + bool onoff_display = (&onoff != nullptr) ? onoff.validPower() : false; const Z_Data_Light & light = device.data.find(); bool light_display = (&light != nullptr) ? light.validDimmer() : false; const Z_Data_Plug & plug = device.data.find(); - if ((&onoff != nullptr) || light_display || (&plug != nullptr)) { + if (onoff_display || light_display || (&plug != nullptr)) { int8_t channels = device.getLightChannels(); if (channels < 0) { channels = 5; } // if number of channel is unknown, display all known attributes WSContentSend_P(PSTR("┆")); - if (&onoff != nullptr) { - WSContentSend_P(PSTR(" %s"), device.getPower() ? PSTR(D_ON) : PSTR(D_OFF)); + if (onoff_display) { + WSContentSend_P(PSTR(" %s"), onoff.getPower() ? PSTR(D_ON) : PSTR(D_OFF)); } if (&light != nullptr) { if (light.validDimmer() && (channels >= 1)) { From daec8b9eb5fe252a5a62f056c39d0c3e7ec4245c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 11 Nov 2020 12:35:41 +0100 Subject: [PATCH 059/293] Update fingerprint library to v2.0.4 --- .../.github/ISSUE_TEMPLATE.md | 46 ++ .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../.github/workflows/githubci.yml | 34 ++ .../.gitignore | 1 + .../Adafruit_Fingerprint.cpp | 565 ++++++++++++++++++ .../Adafruit_Fingerprint.h | 196 ++++++ .../README.md | 10 +- .../ZFM-20_Fingerprint_Module.pdf | Bin .../documentation/fingerprint_en.pdf | Bin .../documentation/readme.txt | 0 .../examples/Leo_passthru/.uno.test.skip | 0 .../examples/Leo_passthru/Leo_passthru.ino | 0 .../examples/blank/blank.ino | 0 .../changepassword/changepassword.ino | 29 +- .../examples/delete/delete.ino | 36 +- .../examples/emptyDatabase/emptyDatabase.ino | 30 +- .../examples/enroll/enroll.ino | 58 +- .../examples/fingerprint/fingerprint.ino | 70 ++- .../examples/ledcontrol/ledcontrol.ino | 85 +++ .../show_fingerprint_templates.ino | 36 +- .../library.properties | 2 +- .../license.txt | 0 .../Adafruit_Fingerprint.cpp | 369 ------------ .../Adafruit_Fingerprint.h | 157 ----- .../examples/changepassword/.due.test.skip | 0 .../examples/changepassword/.esp32.test.skip | 0 .../examples/changepassword/.m4.test.skip | 0 .../examples/changepassword/.zero.test.skip | 0 .../examples/delete/.due.test.skip | 0 .../examples/delete/.esp32.test.skip | 0 .../examples/delete/.m4.test.skip | 0 .../examples/delete/.zero.test.skip | 0 .../examples/emptyDatabase/.due.test.skip | 0 .../examples/emptyDatabase/.esp32.test.skip | 0 .../examples/emptyDatabase/.m4.test.skip | 0 .../examples/emptyDatabase/.zero.test.skip | 0 .../examples/enroll/.due.test.skip | 0 .../examples/enroll/.esp32.test.skip | 0 .../examples/enroll/.m4.test.skip | 0 .../examples/enroll/.zero.test.skip | 0 .../examples/fingerprint/.due.test.skip | 0 .../examples/fingerprint/.esp32.test.skip | 0 .../examples/fingerprint/.m4.test.skip | 0 .../examples/fingerprint/.zero.test.skip | 0 .../show_fingerprint_templates/.due.test.skip | 0 .../.esp32.test.skip | 0 .../show_fingerprint_templates/.m4.test.skip | 0 .../.zero.test.skip | 0 48 files changed, 1124 insertions(+), 626 deletions(-) create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/ISSUE_TEMPLATE.md create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/workflows/githubci.yml create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.gitignore create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/README.md (59%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/documentation/ZFM-20_Fingerprint_Module.pdf (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/documentation/fingerprint_en.pdf (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/documentation/readme.txt (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/Leo_passthru/.uno.test.skip (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/Leo_passthru/Leo_passthru.ino (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/blank/blank.ino (100%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/changepassword/changepassword.ino (79%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/delete/delete.ino (84%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/emptyDatabase/emptyDatabase.ino (77%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/enroll/enroll.ino (83%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/fingerprint/fingerprint.ino (68%) create mode 100644 lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/ledcontrol/ledcontrol.ino rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/examples/show_fingerprint_templates/show_fingerprint_templates.ino (88%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/library.properties (96%) rename lib/lib_div/{Adafruit_Fingerprint_Sensor_Library => Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota}/license.txt (100%) delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.zero.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip delete mode 100644 lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/ISSUE_TEMPLATE.md b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..f0e26146f --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.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/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/PULL_REQUEST_TEMPLATE.md b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..7b641eb86 --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.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/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/workflows/githubci.yml b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/workflows/githubci.yml new file mode 100644 index 000000000..e4395824e --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.github/workflows/githubci.yml @@ -0,0 +1,34 @@ +name: Arduino Library CI + +on: [pull_request, push, repository_dispatch] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v2 + - uses: actions/checkout@v2 + 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 Fingerprint Arduino Library" + run: bash ci/doxy_gen_and_deploy.sh + + diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.gitignore b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.gitignore new file mode 100644 index 000000000..b25c15b81 --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp new file mode 100644 index 000000000..3585cf90a --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp @@ -0,0 +1,565 @@ +/*! + * @file Adafruit_Fingerprint.cpp + * + * @mainpage Adafruit Fingerprint Sensor Library + * + * @section intro_sec Introduction + * + * This is a library for our optical Fingerprint sensor + * + * Designed specifically to work with the Adafruit Fingerprint sensor + * ----> http://www.adafruit.com/products/751 + * + * These displays use TTL Serial to communicate, 2 pins are required to + * interface + * Adafruit invests time and resources providing this open source code, + * please support Adafruit and open-source hardware by purchasing + * products from Adafruit! + * + * @section author Author + * + * Written by Limor Fried/Ladyada for Adafruit Industries. + * + * @section license License + * + * BSD license, all text above must be included in any redistribution + * + */ + +#include "Adafruit_Fingerprint.h" + +//#define FINGERPRINT_DEBUG + +/*! + * @brief Gets the command packet + */ +#define GET_CMD_PACKET(...) \ + uint8_t data[] = {__VA_ARGS__}; \ + Adafruit_Fingerprint_Packet packet(FINGERPRINT_COMMANDPACKET, sizeof(data), \ + data); \ + writeStructuredPacket(packet); \ + if (getStructuredPacket(&packet) != FINGERPRINT_OK) \ + return FINGERPRINT_PACKETRECIEVEERR; \ + if (packet.type != FINGERPRINT_ACKPACKET) \ + return FINGERPRINT_PACKETRECIEVEERR; + +/*! + * @brief Sends the command packet + */ +#define SEND_CMD_PACKET(...) \ + GET_CMD_PACKET(__VA_ARGS__); \ + return packet.data[0]; + +/*************************************************************************** + PUBLIC FUNCTIONS + ***************************************************************************/ + +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +/**************************************************************************/ +/*! + @brief Instantiates sensor with Software Serial + @param ss Pointer to SoftwareSerial object + @param password 32-bit integer password (default is 0) +*/ +/**************************************************************************/ +//Adafruit_Fingerprint::Adafruit_Fingerprint(SoftwareSerial *ss, +Adafruit_Fingerprint::Adafruit_Fingerprint(TasmotaSerial *ss, + uint32_t password) { + thePassword = password; + theAddress = 0xFFFFFFFF; + + hwSerial = NULL; + swSerial = ss; + mySerial = swSerial; +} +#endif + +/**************************************************************************/ +/*! + @brief Instantiates sensor with Hardware Serial + @param hs Pointer to HardwareSerial object + @param password 32-bit integer password (default is 0) + +*/ +/**************************************************************************/ +Adafruit_Fingerprint::Adafruit_Fingerprint(HardwareSerial *hs, + uint32_t password) { + thePassword = password; + theAddress = 0xFFFFFFFF; + +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + swSerial = NULL; +#endif + hwSerial = hs; + mySerial = hwSerial; +} + +/**************************************************************************/ +/*! + @brief Instantiates sensor with a stream for Serial + @param serial Pointer to a Stream object + @param password 32-bit integer password (default is 0) + +*/ +/**************************************************************************/ + +Adafruit_Fingerprint::Adafruit_Fingerprint(Stream *serial, uint32_t password) { + + thePassword = password; + theAddress = 0xFFFFFFFF; + + hwSerial = NULL; +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + swSerial = NULL; +#endif + mySerial = serial; +} + +/**************************************************************************/ +/*! + @brief Initializes serial interface and baud rate + @param baudrate Sensor's UART baud rate (usually 57600, 9600 or 115200) +*/ +/**************************************************************************/ +void Adafruit_Fingerprint::begin(uint32_t baudrate) { + delay(1000); // one second delay to let the sensor 'boot up' + + if (hwSerial) + hwSerial->begin(baudrate); +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) + if (swSerial) + swSerial->begin(baudrate); +#endif +} + +/**************************************************************************/ +/*! + @brief Verifies the sensors' access password (default password is + 0x0000000). A good way to also check if the sensors is active and responding + @returns True if password is correct +*/ +/**************************************************************************/ +boolean Adafruit_Fingerprint::verifyPassword(void) { + return checkPassword() == FINGERPRINT_OK; +} + +uint8_t Adafruit_Fingerprint::checkPassword(void) { + GET_CMD_PACKET(FINGERPRINT_VERIFYPASSWORD, (uint8_t)(thePassword >> 24), + (uint8_t)(thePassword >> 16), (uint8_t)(thePassword >> 8), + (uint8_t)(thePassword & 0xFF)); + if (packet.data[0] == FINGERPRINT_OK) + return FINGERPRINT_OK; + else + return FINGERPRINT_PACKETRECIEVEERR; +} + +/**************************************************************************/ +/*! + @brief Get the sensors parameters, fills in the member variables + status_reg, system_id, capacity, security_level, device_addr, packet_len + and baud_rate + @returns True if password is correct +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getParameters(void) { + GET_CMD_PACKET(FINGERPRINT_READSYSPARAM); + + status_reg = ((uint16_t)packet.data[1] << 8) | packet.data[2]; + system_id = ((uint16_t)packet.data[3] << 8) | packet.data[4]; + capacity = ((uint16_t)packet.data[5] << 8) | packet.data[6]; + security_level = ((uint16_t)packet.data[7] << 8) | packet.data[8]; + device_addr = ((uint32_t)packet.data[9] << 24) | + ((uint32_t)packet.data[10] << 16) | + ((uint32_t)packet.data[11] << 8) | (uint32_t)packet.data[12]; + packet_len = ((uint16_t)packet.data[13] << 8) | packet.data[14]; + if (packet_len == 0) { + packet_len = 32; + } else if (packet_len == 1) { + packet_len = 64; + } else if (packet_len == 2) { + packet_len = 128; + } else if (packet_len == 3) { + packet_len = 256; + } + baud_rate = (((uint16_t)packet.data[15] << 8) | packet.data[16]) * 9600; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to take an image of the finger pressed on surface + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_NOFINGER if no finger detected + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_IMAGEFAIL on imaging error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getImage(void) { + SEND_CMD_PACKET(FINGERPRINT_GETIMAGE); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to convert image to feature template + @param slot Location to place feature template (put one in 1 and another in + 2 for verification to create model) + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_IMAGEMESS if image is too messy + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_FEATUREFAIL on failure to identify + fingerprint features + @returns FINGERPRINT_INVALIDIMAGE on failure to identify + fingerprint features +*/ +uint8_t Adafruit_Fingerprint::image2Tz(uint8_t slot) { + SEND_CMD_PACKET(FINGERPRINT_IMAGE2TZ, slot); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to take two print feature template and create a + model + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error + @returns FINGERPRINT_ENROLLMISMATCH on mismatch of fingerprints +*/ +uint8_t Adafruit_Fingerprint::createModel(void) { + SEND_CMD_PACKET(FINGERPRINT_REGMODEL); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to store the calculated model for later matching + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written + to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::storeModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_STORE, 0x01, (uint8_t)(location >> 8), + (uint8_t)(location & 0xFF)); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to load a fingerprint model from flash into buffer 1 + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::loadModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_LOAD, 0x01, (uint8_t)(location >> 8), + (uint8_t)(location & 0xFF)); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to transfer 256-byte fingerprint template from the + buffer to the UART + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::getModel(void) { + SEND_CMD_PACKET(FINGERPRINT_UPLOAD, 0x01); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to delete a model in memory + @param location The model location # + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written + to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::deleteModel(uint16_t location) { + SEND_CMD_PACKET(FINGERPRINT_DELETE, (uint8_t)(location >> 8), + (uint8_t)(location & 0xFF), 0x00, 0x01); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to delete ALL models in memory + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_BADLOCATION if the location is invalid + @returns FINGERPRINT_FLASHERR if the model couldn't be written + to flash memory + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +uint8_t Adafruit_Fingerprint::emptyDatabase(void) { + SEND_CMD_PACKET(FINGERPRINT_EMPTY); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to search the current slot 1 fingerprint features to + match saved templates. The matching location is stored in fingerID and + the matching confidence in confidence + @returns FINGERPRINT_OK on fingerprint match success + @returns FINGERPRINT_NOTFOUND no match made + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::fingerFastSearch(void) { + // high speed search of slot #1 starting at page 0x0000 and page #0x00A3 + GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3); + fingerID = 0xFFFF; + confidence = 0xFFFF; + + fingerID = packet.data[1]; + fingerID <<= 8; + fingerID |= packet.data[2]; + + confidence = packet.data[3]; + confidence <<= 8; + confidence |= packet.data[4]; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Control the built in LED + @param on True if you want LED on, False to turn LED off + @returns FINGERPRINT_OK on success +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::LEDcontrol(bool on) { + if (on) { + SEND_CMD_PACKET(FINGERPRINT_LEDON); + } else { + SEND_CMD_PACKET(FINGERPRINT_LEDOFF); + } +} + +/**************************************************************************/ +/*! + @brief Control the built in Aura LED (if exists). Check datasheet/manual + for different colors and control codes available + @param control The control code (e.g. breathing, full on) + @param speed How fast to go through the breathing/blinking cycles + @param coloridx What color to light the indicator + @param count How many repeats of blinks/breathing cycles + @returns FINGERPRINT_OK on fingerprint match success + @returns FINGERPRINT_NOTFOUND no match made + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::LEDcontrol(uint8_t control, uint8_t speed, + uint8_t coloridx, uint8_t count) { + SEND_CMD_PACKET(FINGERPRINT_AURALEDCONFIG, control, speed, coloridx, count); +} + +/**************************************************************************/ +/*! + @brief Ask the sensor to search the current slot fingerprint features to + match saved templates. The matching location is stored in fingerID and + the matching confidence in confidence + @param slot The slot to use for the print search, defaults to 1 + @returns FINGERPRINT_OK on fingerprint match success + @returns FINGERPRINT_NOTFOUND no match made + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::fingerSearch(uint8_t slot) { + // search of slot starting thru the capacity + GET_CMD_PACKET(FINGERPRINT_SEARCH, slot, 0x00, 0x00, capacity >> 8, + capacity & 0xFF); + + fingerID = 0xFFFF; + confidence = 0xFFFF; + + fingerID = packet.data[1]; + fingerID <<= 8; + fingerID |= packet.data[2]; + + confidence = packet.data[3]; + confidence <<= 8; + confidence |= packet.data[4]; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Ask the sensor for the number of templates stored in memory. The + number is stored in templateCount on success. + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::getTemplateCount(void) { + GET_CMD_PACKET(FINGERPRINT_TEMPLATECOUNT); + + templateCount = packet.data[1]; + templateCount <<= 8; + templateCount |= packet.data[2]; + + return packet.data[0]; +} + +/**************************************************************************/ +/*! + @brief Set the password on the sensor (future communication will require + password verification so don't forget it!!!) + @param password 32-bit password code + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_PACKETRECIEVEERR on communication error +*/ +/**************************************************************************/ +uint8_t Adafruit_Fingerprint::setPassword(uint32_t password) { + SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (password >> 24), (password >> 16), + (password >> 8), password); +} + +/**************************************************************************/ +/*! + @brief Helper function to process a packet and send it over UART to the + sensor + @param packet A structure containing the bytes to transmit +*/ +/**************************************************************************/ + +void Adafruit_Fingerprint::writeStructuredPacket( + const Adafruit_Fingerprint_Packet &packet) { + + mySerial->write((uint8_t)(packet.start_code >> 8)); + mySerial->write((uint8_t)(packet.start_code & 0xFF)); + mySerial->write(packet.address[0]); + mySerial->write(packet.address[1]); + mySerial->write(packet.address[2]); + mySerial->write(packet.address[3]); + mySerial->write(packet.type); + + uint16_t wire_length = packet.length + 2; + mySerial->write((uint8_t)(wire_length >> 8)); + mySerial->write((uint8_t)(wire_length & 0xFF)); + +#ifdef FINGERPRINT_DEBUG + Serial.print("-> 0x"); + Serial.print((uint8_t)(packet.start_code >> 8), HEX); + Serial.print(", 0x"); + Serial.print((uint8_t)(packet.start_code & 0xFF), HEX); + Serial.print(", 0x"); + Serial.print(packet.address[0], HEX); + Serial.print(", 0x"); + Serial.print(packet.address[1], HEX); + Serial.print(", 0x"); + Serial.print(packet.address[2], HEX); + Serial.print(", 0x"); + Serial.print(packet.address[3], HEX); + Serial.print(", 0x"); + Serial.print(packet.type, HEX); + Serial.print(", 0x"); + Serial.print((uint8_t)(wire_length >> 8), HEX); + Serial.print(", 0x"); + Serial.print((uint8_t)(wire_length & 0xFF), HEX); +#endif + + uint16_t sum = ((wire_length) >> 8) + ((wire_length)&0xFF) + packet.type; + for (uint8_t i = 0; i < packet.length; i++) { + mySerial->write(packet.data[i]); + sum += packet.data[i]; +#ifdef FINGERPRINT_DEBUG + Serial.print(", 0x"); + Serial.print(packet.data[i], HEX); +#endif + } + + mySerial->write((uint8_t)(sum >> 8)); + mySerial->write((uint8_t)(sum & 0xFF)); + +#ifdef FINGERPRINT_DEBUG + Serial.print(", 0x"); + Serial.print((uint8_t)(sum >> 8), HEX); + Serial.print(", 0x"); + Serial.println((uint8_t)(sum & 0xFF), HEX); +#endif + + return; +} + +/**************************************************************************/ +/*! + @brief Helper function to receive data over UART from the sensor and + process it into a packet + @param packet A structure containing the bytes received + @param timeout how many milliseconds we're willing to wait + @returns FINGERPRINT_OK on success + @returns FINGERPRINT_TIMEOUT or + FINGERPRINT_BADPACKET on failure +*/ +/**************************************************************************/ +uint8_t +Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet *packet, + uint16_t timeout) { + uint8_t byte; + uint16_t idx = 0, timer = 0; + +#ifdef FINGERPRINT_DEBUG + Serial.print("<- "); +#endif + + while (true) { + while (!mySerial->available()) { + delay(1); + timer++; + if (timer >= timeout) { +#ifdef FINGERPRINT_DEBUG + Serial.println("Timed out"); +#endif + return FINGERPRINT_TIMEOUT; + } + } + byte = mySerial->read(); +#ifdef FINGERPRINT_DEBUG + Serial.print("0x"); + Serial.print(byte, HEX); + Serial.print(", "); +#endif + switch (idx) { + case 0: + if (byte != (FINGERPRINT_STARTCODE >> 8)) + continue; + packet->start_code = (uint16_t)byte << 8; + break; + case 1: + packet->start_code |= byte; + if (packet->start_code != FINGERPRINT_STARTCODE) + return FINGERPRINT_BADPACKET; + break; + case 2: + case 3: + case 4: + case 5: + packet->address[idx - 2] = byte; + break; + case 6: + packet->type = byte; + break; + case 7: + packet->length = (uint16_t)byte << 8; + break; + case 8: + packet->length |= byte; + break; + default: + packet->data[idx - 9] = byte; + if ((idx - 8) == packet->length) { +#ifdef FINGERPRINT_DEBUG + Serial.println(" OK "); +#endif + return FINGERPRINT_OK; + } + break; + } + idx++; + } + // Shouldn't get here so... + return FINGERPRINT_BADPACKET; +} diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h new file mode 100644 index 000000000..1139209fd --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h @@ -0,0 +1,196 @@ +#ifndef ADAFRUIT_FINGERPRINT_H +#define ADAFRUIT_FINGERPRINT_H + +/*! + * @file Adafruit_Fingerprint.h + */ + +#include "Arduino.h" +#if defined(__AVR__) || defined(ESP8266) +//#include +#include +#elif defined(FREEDOM_E300_HIFIVE1) +#include +#define SoftwareSerial SoftwareSerial32 +#endif + +#define FINGERPRINT_OK 0x00 //!< Command execution is complete +#define FINGERPRINT_PACKETRECIEVEERR 0x01 //!< Error when receiving data package +#define FINGERPRINT_NOFINGER 0x02 //!< No finger on the sensor +#define FINGERPRINT_IMAGEFAIL 0x03 //!< Failed to enroll the finger +#define FINGERPRINT_IMAGEMESS \ + 0x06 //!< Failed to generate character file due to overly disorderly + //!< fingerprint image +#define FINGERPRINT_FEATUREFAIL \ + 0x07 //!< Failed to generate character file due to the lack of character point + //!< or small fingerprint image +#define FINGERPRINT_NOMATCH 0x08 //!< Finger doesn't match +#define FINGERPRINT_NOTFOUND 0x09 //!< Failed to find matching finger +#define FINGERPRINT_ENROLLMISMATCH \ + 0x0A //!< Failed to combine the character files +#define FINGERPRINT_BADLOCATION \ + 0x0B //!< Addressed PageID is beyond the finger library +#define FINGERPRINT_DBRANGEFAIL \ + 0x0C //!< Error when reading template from library or invalid template +#define FINGERPRINT_UPLOADFEATUREFAIL 0x0D //!< Error when uploading template +#define FINGERPRINT_PACKETRESPONSEFAIL \ + 0x0E //!< Module failed to receive the following data packages +#define FINGERPRINT_UPLOADFAIL 0x0F //!< Error when uploading image +#define FINGERPRINT_DELETEFAIL 0x10 //!< Failed to delete the template +#define FINGERPRINT_DBCLEARFAIL 0x11 //!< Failed to clear finger library +#define FINGERPRINT_PASSFAIL \ + 0x13 //!< Find whether the fingerprint passed or failed +#define FINGERPRINT_INVALIDIMAGE \ + 0x15 //!< Failed to generate image because of lac of valid primary image +#define FINGERPRINT_FLASHERR 0x18 //!< Error when writing flash +#define FINGERPRINT_INVALIDREG 0x1A //!< Invalid register number +#define FINGERPRINT_ADDRCODE 0x20 //!< Address code +#define FINGERPRINT_PASSVERIFY 0x21 //!< Verify the fingerprint passed +#define FINGERPRINT_STARTCODE \ + 0xEF01 //!< Fixed falue of EF01H; High byte transferred first + +#define FINGERPRINT_COMMANDPACKET 0x1 //!< Command packet +#define FINGERPRINT_DATAPACKET \ + 0x2 //!< Data packet, must follow command packet or acknowledge packet +#define FINGERPRINT_ACKPACKET 0x7 //!< Acknowledge packet +#define FINGERPRINT_ENDDATAPACKET 0x8 //!< End of data packet + +#define FINGERPRINT_TIMEOUT 0xFF //!< Timeout was reached +#define FINGERPRINT_BADPACKET 0xFE //!< Bad packet was sent + +#define FINGERPRINT_GETIMAGE 0x01 //!< Collect finger image +#define FINGERPRINT_IMAGE2TZ 0x02 //!< Generate character file from image +#define FINGERPRINT_SEARCH 0x04 //!< Search for fingerprint in slot +#define FINGERPRINT_REGMODEL \ + 0x05 //!< Combine character files and generate template +#define FINGERPRINT_STORE 0x06 //!< Store template +#define FINGERPRINT_LOAD 0x07 //!< Read/load template +#define FINGERPRINT_UPLOAD 0x08 //!< Upload template +#define FINGERPRINT_DELETE 0x0C //!< Delete templates +#define FINGERPRINT_EMPTY 0x0D //!< Empty library +#define FINGERPRINT_READSYSPARAM 0x0F //!< Read system parameters +#define FINGERPRINT_SETPASSWORD 0x12 //!< Sets passwords +#define FINGERPRINT_VERIFYPASSWORD 0x13 //!< Verifies the password +#define FINGERPRINT_HISPEEDSEARCH \ + 0x1B //!< Asks the sensor to search for a matching fingerprint template to the + //!< last model generated +#define FINGERPRINT_TEMPLATECOUNT 0x1D //!< Read finger template numbers +#define FINGERPRINT_AURALEDCONFIG 0x35 //!< Aura LED control +#define FINGERPRINT_LEDON 0x50 //!< Turn on the onboard LED +#define FINGERPRINT_LEDOFF 0x51 //!< Turn off the onboard LED + +#define FINGERPRINT_LED_BREATHING 0x01 //!< Breathing light +#define FINGERPRINT_LED_FLASHING 0x02 //!< Flashing light +#define FINGERPRINT_LED_ON 0x03 //!< Always on +#define FINGERPRINT_LED_OFF 0x04 //!< Always off +#define FINGERPRINT_LED_GRADUAL_ON 0x05 //!< Gradually on +#define FINGERPRINT_LED_GRADUAL_OFF 0x06 //!< Gradually off +#define FINGERPRINT_LED_RED 0x01 //!< Red LED +#define FINGERPRINT_LED_BLUE 0x02 //!< Blue LED +#define FINGERPRINT_LED_PURPLE 0x03 //!< Purple LED + +//#define FINGERPRINT_DEBUG + +#define DEFAULTTIMEOUT 1000 //!< UART reading timeout in milliseconds + +///! Helper class to craft UART packets +struct Adafruit_Fingerprint_Packet { + + /**************************************************************************/ + /*! + @brief Create a new UART-borne packet + @param type Command, data, ack type packet + @param length Size of payload + @param data Pointer to bytes of size length we will memcopy into the + internal buffer + */ + /**************************************************************************/ + + Adafruit_Fingerprint_Packet(uint8_t type, uint16_t length, uint8_t *data) { + this->start_code = FINGERPRINT_STARTCODE; + this->type = type; + this->length = length; + address[0] = 0xFF; + address[1] = 0xFF; + address[2] = 0xFF; + address[3] = 0xFF; + if (length < 64) + memcpy(this->data, data, length); + else + memcpy(this->data, data, 64); + } + uint16_t start_code; ///< "Wakeup" code for packet detection + uint8_t address[4]; ///< 32-bit Fingerprint sensor address + uint8_t type; ///< Type of packet + uint16_t length; ///< Length of packet + uint8_t data[64]; ///< The raw buffer for packet payload +}; + +///! Helper class to communicate with and keep state for fingerprint sensors +class Adafruit_Fingerprint { +public: +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +// Adafruit_Fingerprint(SoftwareSerial *ss, uint32_t password = 0x0); + Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password = 0x0); +#endif + Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password = 0x0); + Adafruit_Fingerprint(Stream *serial, uint32_t password = 0x0); + + void begin(uint32_t baud); + + boolean verifyPassword(void); + uint8_t getParameters(void); + + uint8_t getImage(void); + uint8_t image2Tz(uint8_t slot = 1); + uint8_t createModel(void); + + uint8_t emptyDatabase(void); + uint8_t storeModel(uint16_t id); + uint8_t loadModel(uint16_t id); + uint8_t getModel(void); + uint8_t deleteModel(uint16_t id); + uint8_t fingerFastSearch(void); + uint8_t fingerSearch(uint8_t slot = 1); + uint8_t getTemplateCount(void); + uint8_t setPassword(uint32_t password); + uint8_t LEDcontrol(bool on); + uint8_t LEDcontrol(uint8_t control, uint8_t speed, uint8_t coloridx, + uint8_t count = 0); + + void writeStructuredPacket(const Adafruit_Fingerprint_Packet &p); + uint8_t getStructuredPacket(Adafruit_Fingerprint_Packet *p, + uint16_t timeout = DEFAULTTIMEOUT); + + /// The matching location that is set by fingerFastSearch() + uint16_t fingerID; + /// The confidence of the fingerFastSearch() match, higher numbers are more + /// confidents + uint16_t confidence; + /// The number of stored templates in the sensor, set by getTemplateCount() + uint16_t templateCount; + + uint16_t status_reg = 0x0; ///< The status register (set by getParameters) + uint16_t system_id = 0x0; ///< The system identifier (set by getParameters) + uint16_t capacity = 64; ///< The fingerprint capacity (set by getParameters) + uint16_t security_level = 0; ///< The security level (set by getParameters) + uint32_t device_addr = + 0xFFFFFFFF; ///< The device address (set by getParameters) + uint16_t packet_len = 64; ///< The max packet length (set by getParameters) + uint16_t baud_rate = 57600; ///< The UART baud rate (set by getParameters) + +private: + uint8_t checkPassword(void); + uint32_t thePassword; + uint32_t theAddress; + uint8_t recvPacket[20]; + + Stream *mySerial; +#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +// SoftwareSerial *swSerial; + TasmotaSerial *swSerial; +#endif + HardwareSerial *hwSerial; +}; + +#endif diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/README.md similarity index 59% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/README.md index 1a5a5cb20..693ffbdaf 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/README.md +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/README.md @@ -1,12 +1,16 @@ -# Adafruit Fingerprint Sensor Library [![Build Status](https://travis-ci.org/adafruit/Adafruit-Fingerprint-Sensor-Library.svg?branch=master)](https://travis-ci.org/adafruit/Adafruit-Fingerprint-Sensor-Library) +# Adafruit-Fingerprint-Sensor-Library [![Build Status](https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/workflows/Arduino%20Library%20CI/badge.svg)](https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/actions)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit-Fingerprint-Sensor-Library/html/index.html) + Secure your project with biometrics - this all-in-one optical fingerprint sensor will make adding fingerprint detection and verification super simple. These modules are typically used in safes - there's a high powered DSP chip that does the image rendering, calculation, feature-finding and searching. Connect to any microcontroller or system with TTL serial, and send packets of data to take photos, detect prints, hash and search. You can also enroll new fingers directly - up to 162 finger prints can be stored in the onboard FLASH memory. There's a red LED in the lens that lights up during a photo so you know its working. +The Rugged Panel Mount Fingerprint Sensor with Bi-Color LED Ring even has an LED ring built around the detection pad, which can be set to red, blue or purple (as well as some fading/blinking effects) for a great user experience. -Designed specifically to work with the Adafruit Fingerprint sensor + +Designed specifically to work with the Adafruit Fingerprint sensors * http://www.adafruit.com/products/751 + * https://www.adafruit.com/product/4651 Pick one up today in the adafruit shop! @@ -16,4 +20,4 @@ Adafruit invests time and resources providing this open source code, please supp 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 \ No newline at end of file +All text above must be included in any redistribution diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/ZFM-20_Fingerprint_Module.pdf similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/ZFM-20_Fingerprint_Module.pdf rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/ZFM-20_Fingerprint_Module.pdf diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/fingerprint_en.pdf similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/fingerprint_en.pdf rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/fingerprint_en.pdf diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/readme.txt b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/readme.txt similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/documentation/readme.txt rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/documentation/readme.txt diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/.uno.test.skip b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/Leo_passthru/.uno.test.skip similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/.uno.test.skip rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/Leo_passthru/.uno.test.skip diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/Leo_passthru.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/Leo_passthru/Leo_passthru.ino similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/Leo_passthru/Leo_passthru.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/Leo_passthru/Leo_passthru.ino diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/blank/blank.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/blank/blank.ino similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/blank/blank.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/blank/blank.ino diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/changepassword.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/changepassword/changepassword.ino similarity index 79% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/changepassword.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/changepassword/changepassword.ino index 9c82dfa90..bc9836160 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/changepassword.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/changepassword/changepassword.ino @@ -1,44 +1,49 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor Designed specifically to work with the Adafruit Fingerprint sensor ----> http://www.adafruit.com/products/751 - These displays use TTL Serial to communicate, 2 pins are required to + These displays use TTL Serial to communicate, 2 pins are required to interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white -// uncomment this line: -// #define mySerial Serial1 +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) -// comment these two lines if using hardware serial +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + // Using sensor without password Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); // Using sensor with password //Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial, 1337); -void setup() +void setup() { while (!Serial); // For Yun/Leo/Micro/Zero/... - + Serial.begin(9600); Serial.println("Adafruit fingerprint sensor, change password example"); // set the data rate for the sensor serial port finger.begin(19200); - + if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/delete/delete.ino similarity index 84% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/delete/delete.ino index 0dd95d07a..563b4b719 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/delete.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/delete/delete.ino @@ -1,34 +1,40 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor Designed specifically to work with the Adafruit Fingerprint sensor ----> http://www.adafruit.com/products/751 - These displays use TTL Serial to communicate, 2 pins are required to + These displays use TTL Serial to communicate, 2 pins are required to interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white -// uncomment this line: -// #define mySerial Serial1 +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) -// comment these two lines if using hardware serial +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + + Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); -void setup() +void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... @@ -37,7 +43,7 @@ void setup() // set the data rate for the sensor serial port finger.begin(57600); - + if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { @@ -49,7 +55,7 @@ void setup() uint8_t readnumber(void) { uint8_t num = 0; - + while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); @@ -67,13 +73,13 @@ void loop() // run over and over again Serial.print("Deleting ID #"); Serial.println(id); - + deleteFingerprint(id); } uint8_t deleteFingerprint(uint8_t id) { uint8_t p = -1; - + p = finger.deleteModel(id); if (p == FINGERPRINT_OK) { @@ -90,5 +96,5 @@ uint8_t deleteFingerprint(uint8_t id) { } else { Serial.print("Unknown error: 0x"); Serial.println(p, HEX); return p; - } + } } diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/emptyDatabase/emptyDatabase.ino similarity index 77% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/emptyDatabase/emptyDatabase.ino index 3ef5ded60..acd638461 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/emptyDatabase.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/emptyDatabase/emptyDatabase.ino @@ -1,31 +1,37 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor Designed specifically to work with the Adafruit Fingerprint sensor ----> http://www.adafruit.com/products/751 - These displays use TTL Serial to communicate, 2 pins are required to + These displays use TTL Serial to communicate, 2 pins are required to interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white -// uncomment this line: -// #define mySerial Serial1 +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) -// comment these two lines if using hardware serial +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + + Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); -void setup() +void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... @@ -42,14 +48,14 @@ void setup() // set the data rate for the sensor serial port finger.begin(57600); - + if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1); } - + finger.emptyDatabase(); Serial.println("Now database is empty :)"); diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/enroll/enroll.ino similarity index 83% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/enroll/enroll.ino index 2db858d49..19fbb40f0 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/enroll.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/enroll/enroll.ino @@ -1,36 +1,42 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor - Designed specifically to work with the Adafruit BMP085 Breakout + Designed specifically to work with the Adafruit BMP085 Breakout ----> http://www.adafruit.com/products/751 - These displays use TTL Serial to communicate, 2 pins are required to + These displays use TTL Serial to communicate, 2 pins are required to interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white -// uncomment this line: -// #define mySerial Serial1 +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) -// comment these two lines if using hardware serial +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + + Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); uint8_t id; -void setup() +void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... @@ -39,18 +45,28 @@ void setup() // set the data rate for the sensor serial port finger.begin(57600); - + if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } } + + Serial.println(F("Reading sensor parameters")); + finger.getParameters(); + Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX); + Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX); + Serial.print(F("Capacity: ")); Serial.println(finger.capacity); + Serial.print(F("Security level: ")); Serial.println(finger.security_level); + Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX); + Serial.print(F("Packet len: ")); Serial.println(finger.packet_len); + Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate); } uint8_t readnumber(void) { uint8_t num = 0; - + while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); @@ -68,7 +84,7 @@ void loop() // run over and over again } Serial.print("Enrolling ID #"); Serial.println(id); - + while (! getFingerprintEnroll() ); } @@ -120,7 +136,7 @@ uint8_t getFingerprintEnroll() { Serial.println("Unknown error"); return p; } - + Serial.println("Remove finger"); delay(2000); p = 0; @@ -174,10 +190,10 @@ uint8_t getFingerprintEnroll() { Serial.println("Unknown error"); return p; } - + // OK converted! Serial.print("Creating model for #"); Serial.println(id); - + p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Prints matched!"); @@ -190,8 +206,8 @@ uint8_t getFingerprintEnroll() { } else { Serial.println("Unknown error"); return p; - } - + } + Serial.print("ID "); Serial.println(id); p = finger.storeModel(id); if (p == FINGERPRINT_OK) { @@ -208,5 +224,7 @@ uint8_t getFingerprintEnroll() { } else { Serial.println("Unknown error"); return p; - } + } + + return true; } diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/fingerprint/fingerprint.ino similarity index 68% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/fingerprint/fingerprint.ino index db13ffa23..f17578461 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/fingerprint.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/fingerprint/fingerprint.ino @@ -1,35 +1,41 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor - Designed specifically to work with the Adafruit BMP085 Breakout + Designed specifically to work with the Adafruit BMP085 Breakout ----> http://www.adafruit.com/products/751 - These displays use TTL Serial to communicate, 2 pins are required to + These displays use TTL Serial to communicate, 2 pins are required to interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -// On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white -// uncomment this line: -// #define mySerial Serial1 +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) -// comment these two lines if using hardware serial +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + + Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); -void setup() +void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/... @@ -38,7 +44,7 @@ void setup() // set the data rate for the sensor serial port finger.begin(57600); - + delay(5); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { @@ -46,14 +52,30 @@ void setup() while (1) { delay(1); } } + Serial.println(F("Reading sensor parameters")); + finger.getParameters(); + Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX); + Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX); + Serial.print(F("Capacity: ")); Serial.println(finger.capacity); + Serial.print(F("Security level: ")); Serial.println(finger.security_level); + Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX); + Serial.print(F("Packet len: ")); Serial.println(finger.packet_len); + Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate); + finger.getTemplateCount(); - Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); - Serial.println("Waiting for valid finger..."); + + if (finger.templateCount == 0) { + Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example."); + } + else { + Serial.println("Waiting for valid finger..."); + Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); + } } void loop() // run over and over again { - getFingerprintIDez(); + getFingerprintID(); delay(50); //don't ned to run this at full speed. } @@ -100,9 +122,9 @@ uint8_t getFingerprintID() { Serial.println("Unknown error"); return p; } - + // OK converted! - p = finger.fingerFastSearch(); + p = finger.fingerSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { @@ -114,11 +136,11 @@ uint8_t getFingerprintID() { } else { Serial.println("Unknown error"); return p; - } - + } + // found a match! - Serial.print("Found ID #"); Serial.print(finger.fingerID); - Serial.print(" with confidence of "); Serial.println(finger.confidence); + Serial.print("Found ID #"); Serial.print(finger.fingerID); + Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } @@ -133,9 +155,9 @@ int getFingerprintIDez() { p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; - + // found a match! - Serial.print("Found ID #"); Serial.print(finger.fingerID); + Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); - return finger.fingerID; + return finger.fingerID; } diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/ledcontrol/ledcontrol.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/ledcontrol/ledcontrol.ino new file mode 100644 index 000000000..d5912493c --- /dev/null +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/ledcontrol/ledcontrol.ino @@ -0,0 +1,85 @@ +/*************************************************** + This is an example sketch for our optical Fingerprint sensor with LED ring + + These displays use TTL Serial to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + + +#include + + + +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) +// For UNO and others without hardware serial, we must use software serial... +// pin #2 is IN from sensor (GREEN wire) +// pin #3 is OUT from arduino (WHITE wire) +// Set up the serial port to use softwareserial.. +SoftwareSerial mySerial(2, 3); + +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + +Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); + +void setup() +{ + Serial.begin(9600); + while (!Serial); // For Yun/Leo/Micro/Zero/... + delay(100); + Serial.println("\n\nAdafruit finger detect test"); + + // set the data rate for the sensor serial port + finger.begin(57600); + delay(5); + if (finger.verifyPassword()) { + Serial.println("Found fingerprint sensor!"); + } else { + Serial.println("Did not find fingerprint sensor :("); + while (1) { delay(1); } + } + + Serial.println(F("Reading sensor parameters")); + finger.getParameters(); + Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX); + Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX); + Serial.print(F("Capacity: ")); Serial.println(finger.capacity); + Serial.print(F("Security level: ")); Serial.println(finger.security_level); + Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX); + Serial.print(F("Packet len: ")); Serial.println(finger.packet_len); + Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate); + + +} + +void loop() // run over and over again +{ + // LED fully on + finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_RED); + delay(250); + finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_BLUE); + delay(250); + finger.LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_PURPLE); + delay(250); + + // flash red LED + finger.LEDcontrol(FINGERPRINT_LED_FLASHING, 25, FINGERPRINT_LED_RED, 10); + delay(2000); + // Breathe blue LED till we say to stop + finger.LEDcontrol(FINGERPRINT_LED_BREATHING, 100, FINGERPRINT_LED_BLUE); + delay(3000); + finger.LEDcontrol(FINGERPRINT_LED_GRADUAL_ON, 200, FINGERPRINT_LED_PURPLE); + delay(2000); + finger.LEDcontrol(FINGERPRINT_LED_GRADUAL_OFF, 200, FINGERPRINT_LED_PURPLE); + delay(2000); +} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/show_fingerprint_templates/show_fingerprint_templates.ino similarity index 88% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/show_fingerprint_templates/show_fingerprint_templates.ino index 919088b96..f18022023 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/show_fingerprint_templates.ino +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/examples/show_fingerprint_templates/show_fingerprint_templates.ino @@ -1,27 +1,37 @@ -/*************************************************** +/*************************************************** This is an example sketch for our optical Fingerprint sensor - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing + 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. + Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include -int getFingerprintIDez(); - +#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) +// For UNO and others without hardware serial, we must use software serial... // pin #2 is IN from sensor (GREEN wire) // pin #3 is OUT from arduino (WHITE wire) +// Set up the serial port to use softwareserial.. SoftwareSerial mySerial(2, 3); +#else +// On Leonardo/M0/etc, others with hardware serial, use hardware serial! +// #0 is green wire, #1 is white +#define mySerial Serial1 + +#endif + Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); -void setup() +int getFingerprintIDez(); + +void setup() { while(!Serial); Serial.begin(9600); @@ -29,7 +39,7 @@ void setup() // set the data rate for the sensor serial port finger.begin(57600); - + if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { @@ -72,7 +82,7 @@ uint8_t downloadFingerprintTemplate(uint16_t id) Serial.print("Unknown error "); Serial.println(p); return p; } - + // one data packet is 267 bytes. in one data packet, 11 bytes are 'usesless' :D uint8_t bytesReceived[534]; // 2 data packets memset(bytesReceived, 0xff, 534); @@ -122,9 +132,9 @@ uint8_t downloadFingerprintTemplate(uint16_t id) index++; } } - + Serial.print(index); Serial.println(" bytes read"); - + //dump entire templateBuffer. This prints out 16 lines of 16 bytes for (int count= 0; count < 16; count++) { @@ -143,9 +153,9 @@ uint8_t downloadFingerprintTemplate(uint16_t id) void printHex(int num, int precision) { char tmp[16]; char format[128]; - + sprintf(format, "%%.%dX", precision); - + sprintf(tmp, format, num); Serial.print(tmp); } diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/library.properties similarity index 96% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/library.properties index e8dab6fc3..d5c86812e 100644 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/library.properties +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/library.properties @@ -1,5 +1,5 @@ name=Adafruit Fingerprint Sensor Library -version=1.1.2 +version=2.0.4 author=Adafruit maintainer=Adafruit sentence=Arduino library for interfacing to the fingerprint sensor in the Adafruit shop diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/license.txt similarity index 100% rename from lib/lib_div/Adafruit_Fingerprint_Sensor_Library/license.txt rename to lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/license.txt diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp deleted file mode 100644 index 4c408bbb6..000000000 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.cpp +++ /dev/null @@ -1,369 +0,0 @@ -/*************************************************** - This is a library for our optical Fingerprint sensor - - Designed specifically to work with the Adafruit Fingerprint sensor - ----> http://www.adafruit.com/products/751 - - These displays use TTL Serial to communicate, 2 pins are required to - interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing - products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include "Adafruit_Fingerprint.h" -#include - -//#define FINGERPRINT_DEBUG - -#if ARDUINO >= 100 - #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__) -#else - #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__, BYTE) -#endif - -#define SERIAL_WRITE_U16(v) SERIAL_WRITE((uint8_t)(v>>8)); SERIAL_WRITE((uint8_t)(v & 0xFF)); - -#define GET_CMD_PACKET(...) \ - uint8_t data[] = {__VA_ARGS__}; \ - Adafruit_Fingerprint_Packet packet(FINGERPRINT_COMMANDPACKET, sizeof(data), data); \ - writeStructuredPacket(packet); \ - if (getStructuredPacket(&packet) != FINGERPRINT_OK) return FINGERPRINT_PACKETRECIEVEERR; \ - if (packet.type != FINGERPRINT_ACKPACKET) return FINGERPRINT_PACKETRECIEVEERR; - -#define SEND_CMD_PACKET(...) GET_CMD_PACKET(__VA_ARGS__); return packet.data[0]; - -/*************************************************************************** - PUBLIC FUNCTIONS - ***************************************************************************/ - - -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) -/**************************************************************************/ -/*! - @brief Instantiates sensor with Software Serial - @param ss Pointer to SoftwareSerial object - @param password 32-bit integer password (default is 0) -*/ -/**************************************************************************/ -Adafruit_Fingerprint::Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password) { - thePassword = password; - theAddress = 0xFFFFFFFF; - - hwSerial = NULL; - swSerial = ss; - mySerial = swSerial; -} -#endif - -/**************************************************************************/ -/*! - @brief Instantiates sensor with Hardware Serial - @param hs Pointer to HardwareSerial object - @param password 32-bit integer password (default is 0) - -*/ -/**************************************************************************/ -Adafruit_Fingerprint::Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password) { - thePassword = password; - theAddress = 0xFFFFFFFF; - -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) - swSerial = NULL; -#endif - hwSerial = hs; - mySerial = hwSerial; -} - -/**************************************************************************/ -/*! - @brief Initializes serial interface and baud rate - @param baudrate Sensor's UART baud rate (usually 57600, 9600 or 115200) -*/ -/**************************************************************************/ -void Adafruit_Fingerprint::begin(uint32_t baudrate) { - delay(1000); // one second delay to let the sensor 'boot up' - - if (hwSerial) hwSerial->begin(baudrate); -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) - if (swSerial) swSerial->begin(baudrate); -#endif -} - -/**************************************************************************/ -/*! - @brief Verifies the sensors' access password (default password is 0x0000000). A good way to also check if the sensors is active and responding - @returns True if password is correct -*/ -/**************************************************************************/ -boolean Adafruit_Fingerprint::verifyPassword(void) { - return checkPassword() == FINGERPRINT_OK; -} - - - -uint8_t Adafruit_Fingerprint::checkPassword(void) { - GET_CMD_PACKET(FINGERPRINT_VERIFYPASSWORD, - (uint8_t)(thePassword >> 24), (uint8_t)(thePassword >> 16), - (uint8_t)(thePassword >> 8), (uint8_t)(thePassword & 0xFF)); - - if (packet.data[0] == FINGERPRINT_OK) - return FINGERPRINT_OK; - else - return FINGERPRINT_PACKETRECIEVEERR; -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to take an image of the finger pressed on surface - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_NOFINGER if no finger detected - @returns FINGERPRINT_PACKETRECIEVEERR on communication error - @returns FINGERPRINT_IMAGEFAIL on imaging error -*/ -/**************************************************************************/ -uint8_t Adafruit_Fingerprint::getImage(void) { - SEND_CMD_PACKET(FINGERPRINT_GETIMAGE); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to convert image to feature template - @param slot Location to place feature template (put one in 1 and another in 2 for verification to create model) - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_IMAGEMESS if image is too messy - @returns FINGERPRINT_PACKETRECIEVEERR on communication error - @returns FINGERPRINT_FEATUREFAIL on failure to identify fingerprint features - @returns FINGERPRINT_INVALIDIMAGE on failure to identify fingerprint features -*/ -uint8_t Adafruit_Fingerprint::image2Tz(uint8_t slot) { - SEND_CMD_PACKET(FINGERPRINT_IMAGE2TZ,slot); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to take two print feature template and create a model - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_PACKETRECIEVEERR on communication error - @returns FINGERPRINT_ENROLLMISMATCH on mismatch of fingerprints -*/ -uint8_t Adafruit_Fingerprint::createModel(void) { - SEND_CMD_PACKET(FINGERPRINT_REGMODEL); -} - - -/**************************************************************************/ -/*! - @brief Ask the sensor to store the calculated model for later matching - @param location The model location # - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_BADLOCATION if the location is invalid - @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -uint8_t Adafruit_Fingerprint::storeModel(uint16_t location) { - SEND_CMD_PACKET(FINGERPRINT_STORE, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to load a fingerprint model from flash into buffer 1 - @param location The model location # - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_BADLOCATION if the location is invalid - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -uint8_t Adafruit_Fingerprint::loadModel(uint16_t location) { - SEND_CMD_PACKET(FINGERPRINT_LOAD, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to transfer 256-byte fingerprint template from the buffer to the UART - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -uint8_t Adafruit_Fingerprint::getModel(void) { - SEND_CMD_PACKET(FINGERPRINT_UPLOAD, 0x01); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to delete a model in memory - @param location The model location # - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_BADLOCATION if the location is invalid - @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -uint8_t Adafruit_Fingerprint::deleteModel(uint16_t location) { - SEND_CMD_PACKET(FINGERPRINT_DELETE, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF), 0x00, 0x01); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to delete ALL models in memory - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_BADLOCATION if the location is invalid - @returns FINGERPRINT_FLASHERR if the model couldn't be written to flash memory - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -uint8_t Adafruit_Fingerprint::emptyDatabase(void) { - SEND_CMD_PACKET(FINGERPRINT_EMPTY); -} - -/**************************************************************************/ -/*! - @brief Ask the sensor to search the current slot 1 fingerprint features to match saved templates. The matching location is stored in fingerID and the matching confidence in confidence - @returns FINGERPRINT_OK on fingerprint match success - @returns FINGERPRINT_NOTFOUND no match made - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -/**************************************************************************/ -uint8_t Adafruit_Fingerprint::fingerFastSearch(void) { - // high speed search of slot #1 starting at page 0x0000 and page #0x00A3 - GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3); - fingerID = 0xFFFF; - confidence = 0xFFFF; - - fingerID = packet.data[1]; - fingerID <<= 8; - fingerID |= packet.data[2]; - - confidence = packet.data[3]; - confidence <<= 8; - confidence |= packet.data[4]; - - return packet.data[0]; -} - -/**************************************************************************/ -/*! - @brief Ask the sensor for the number of templates stored in memory. The number is stored in templateCount on success. - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -/**************************************************************************/ -uint8_t Adafruit_Fingerprint::getTemplateCount(void) { - GET_CMD_PACKET(FINGERPRINT_TEMPLATECOUNT); - - templateCount = packet.data[1]; - templateCount <<= 8; - templateCount |= packet.data[2]; - - return packet.data[0]; -} - -/**************************************************************************/ -/*! - @brief Set the password on the sensor (future communication will require password verification so don't forget it!!!) - @param password 32-bit password code - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_PACKETRECIEVEERR on communication error -*/ -/**************************************************************************/ -uint8_t Adafruit_Fingerprint::setPassword(uint32_t password) { - SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (password >> 24), (password >> 16), (password >> 8), password); -} - -/**************************************************************************/ -/*! - @brief Helper function to process a packet and send it over UART to the sensor - @param packet A structure containing the bytes to transmit -*/ -/**************************************************************************/ - -void Adafruit_Fingerprint::writeStructuredPacket(const Adafruit_Fingerprint_Packet & packet) { - SERIAL_WRITE_U16(packet.start_code); - SERIAL_WRITE(packet.address[0]); - SERIAL_WRITE(packet.address[1]); - SERIAL_WRITE(packet.address[2]); - SERIAL_WRITE(packet.address[3]); - SERIAL_WRITE(packet.type); - - uint16_t wire_length = packet.length + 2; - SERIAL_WRITE_U16(wire_length); - - uint16_t sum = ((wire_length)>>8) + ((wire_length)&0xFF) + packet.type; - for (uint8_t i=0; i< packet.length; i++) { - SERIAL_WRITE(packet.data[i]); - sum += packet.data[i]; - } - - SERIAL_WRITE_U16(sum); - return; -} - -/**************************************************************************/ -/*! - @brief Helper function to receive data over UART from the sensor and process it into a packet - @param packet A structure containing the bytes received - @param timeout how many milliseconds we're willing to wait - @returns FINGERPRINT_OK on success - @returns FINGERPRINT_TIMEOUT or FINGERPRINT_BADPACKET on failure -*/ -/**************************************************************************/ -uint8_t Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet * packet, uint16_t timeout) { - uint8_t byte; - uint16_t idx=0, timer=0; - - while(true) { - while(!mySerial->available()) { - delay(1); - timer++; - if( timer >= timeout) { -#ifdef FINGERPRINT_DEBUG - //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG " Time out")); - //AddLog(LOG_LEVEL_INFO); -#endif - return FINGERPRINT_TIMEOUT; - } - } - byte = mySerial->read(); - //mydata[0] = idx; - mydata[idx] = byte; -#ifdef FINGERPRINT_DEBUG - //Serial.print("<- 0x"); Serial.println(byte, HEX); - //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "<- 0x%x", byte)); - //AddLog(LOG_LEVEL_INFO); -#endif - switch (idx) { - case 0: - if (byte != (FINGERPRINT_STARTCODE >> 8)) - continue; - packet->start_code = (uint16_t)byte << 8; - break; - case 1: - packet->start_code |= byte; - if (packet->start_code != FINGERPRINT_STARTCODE) - return FINGERPRINT_BADPACKET; - break; - case 2: - case 3: - case 4: - case 5: - packet->address[idx-2] = byte; - break; - case 6: - packet->type = byte; - break; - case 7: - packet->length = (uint16_t)byte << 8; - break; - case 8: - packet->length |= byte; - break; - default: - packet->data[idx-9] = byte; - if((idx-8) == packet->length) - return FINGERPRINT_OK; - break; - } - idx++; - } - // Shouldn't get here so... - return FINGERPRINT_BADPACKET; -} diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h deleted file mode 100644 index 783b708aa..000000000 --- a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/Adafruit_Fingerprint.h +++ /dev/null @@ -1,157 +0,0 @@ -#ifndef ADAFRUIT_FINGERPRINT_H -#define ADAFRUIT_FINGERPRINT_H - -/*************************************************** - This is a library for our optical Fingerprint sensor - - Designed specifically to work with the Adafruit Fingerprint sensor - ----> http://www.adafruit.com/products/751 - - These displays use TTL Serial to communicate, 2 pins are required to - interface - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing - products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include "Arduino.h" -#if defined(__AVR__) || defined(ESP8266) - //#include - #include -#elif defined(FREEDOM_E300_HIFIVE1) - #include - #define SoftwareSerial SoftwareSerial32 -#endif - -#define FINGERPRINT_OK 0x00 -#define FINGERPRINT_PACKETRECIEVEERR 0x01 -#define FINGERPRINT_NOFINGER 0x02 -#define FINGERPRINT_IMAGEFAIL 0x03 -#define FINGERPRINT_IMAGEMESS 0x06 -#define FINGERPRINT_FEATUREFAIL 0x07 -#define FINGERPRINT_NOMATCH 0x08 -#define FINGERPRINT_NOTFOUND 0x09 -#define FINGERPRINT_ENROLLMISMATCH 0x0A -#define FINGERPRINT_BADLOCATION 0x0B -#define FINGERPRINT_DBRANGEFAIL 0x0C -#define FINGERPRINT_UPLOADFEATUREFAIL 0x0D -#define FINGERPRINT_PACKETRESPONSEFAIL 0x0E -#define FINGERPRINT_UPLOADFAIL 0x0F -#define FINGERPRINT_DELETEFAIL 0x10 -#define FINGERPRINT_DBCLEARFAIL 0x11 -#define FINGERPRINT_PASSFAIL 0x13 -#define FINGERPRINT_INVALIDIMAGE 0x15 -#define FINGERPRINT_FLASHERR 0x18 -#define FINGERPRINT_INVALIDREG 0x1A -#define FINGERPRINT_ADDRCODE 0x20 -#define FINGERPRINT_PASSVERIFY 0x21 - -#define FINGERPRINT_STARTCODE 0xEF01 - -#define FINGERPRINT_COMMANDPACKET 0x1 -#define FINGERPRINT_DATAPACKET 0x2 -#define FINGERPRINT_ACKPACKET 0x7 -#define FINGERPRINT_ENDDATAPACKET 0x8 - -#define FINGERPRINT_TIMEOUT 0xFF -#define FINGERPRINT_BADPACKET 0xFE - -#define FINGERPRINT_GETIMAGE 0x01 -#define FINGERPRINT_IMAGE2TZ 0x02 -#define FINGERPRINT_REGMODEL 0x05 -#define FINGERPRINT_STORE 0x06 -#define FINGERPRINT_LOAD 0x07 -#define FINGERPRINT_UPLOAD 0x08 -#define FINGERPRINT_DELETE 0x0C -#define FINGERPRINT_EMPTY 0x0D -#define FINGERPRINT_SETPASSWORD 0x12 -#define FINGERPRINT_VERIFYPASSWORD 0x13 -#define FINGERPRINT_HISPEEDSEARCH 0x1B -#define FINGERPRINT_TEMPLATECOUNT 0x1D - -//#define FINGERPRINT_DEBUG - -#define DEFAULTTIMEOUT 1000 ///< UART reading timeout in milliseconds - -///! Helper class to craft UART packets -struct Adafruit_Fingerprint_Packet { - -/**************************************************************************/ -/*! - @brief Create a new UART-borne packet - @param type Command, data, ack type packet - @param length Size of payload - @param data Pointer to bytes of size length we will memcopy into the internal buffer -*/ -/**************************************************************************/ - - Adafruit_Fingerprint_Packet(uint8_t type, uint16_t length, uint8_t * data) { - this->start_code = FINGERPRINT_STARTCODE; - this->type = type; - this->length = length; - address[0] = 0xFF; address[1] = 0xFF; - address[2] = 0xFF; address[3] = 0xFF; - if(length<64) - memcpy(this->data, data, length); - else - memcpy(this->data, data, 64); - } - uint16_t start_code; ///< "Wakeup" code for packet detection - uint8_t address[4]; ///< 32-bit Fingerprint sensor address - uint8_t type; ///< Type of packet - uint16_t length; ///< Length of packet - uint8_t data[64]; ///< The raw buffer for packet payload -}; - -///! Helper class to communicate with and keep state for fingerprint sensors -class Adafruit_Fingerprint { - public: - uint8_t mydata[100]; - -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) - Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password = 0x0); -#endif - Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password = 0x0); - - void begin(uint32_t baud); - - boolean verifyPassword(void); - uint8_t getImage(void); - uint8_t image2Tz(uint8_t slot = 1); - uint8_t createModel(void); - - uint8_t emptyDatabase(void); - uint8_t storeModel(uint16_t id); - uint8_t loadModel(uint16_t id); - uint8_t getModel(void); - uint8_t deleteModel(uint16_t id); - uint8_t fingerFastSearch(void); - uint8_t getTemplateCount(void); - uint8_t setPassword(uint32_t password); - void writeStructuredPacket(const Adafruit_Fingerprint_Packet & p); - uint8_t getStructuredPacket(Adafruit_Fingerprint_Packet * p, uint16_t timeout=DEFAULTTIMEOUT); - - /// The matching location that is set by fingerFastSearch() - uint16_t fingerID; - /// The confidence of the fingerFastSearch() match, higher numbers are more confidents - uint16_t confidence; - /// The number of stored templates in the sensor, set by getTemplateCount() - uint16_t templateCount; - - private: - uint8_t checkPassword(void); - uint32_t thePassword; - uint32_t theAddress; - uint8_t recvPacket[20]; - - Stream *mySerial; -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) - TasmotaSerial *swSerial; -#endif - HardwareSerial *hwSerial; -}; - -#endif diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/changepassword/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/delete/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/emptyDatabase/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/enroll/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/fingerprint/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.due.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.esp32.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.m4.test.skip deleted file mode 100644 index e69de29bb..000000000 diff --git a/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip b/lib/lib_div/Adafruit_Fingerprint_Sensor_Library/examples/show_fingerprint_templates/.zero.test.skip deleted file mode 100644 index e69de29bb..000000000 From 5f0f5943476fc78cf42ccf84c7d9d3712772eb02 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 11 Nov 2020 16:18:09 +0100 Subject: [PATCH 060/293] Experimental support for fingerprint reader Experimental support for fingerprint reader (#9568) --- tasmota/xsns_79_as608.ino | 301 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 301 insertions(+) create mode 100644 tasmota/xsns_79_as608.ino diff --git a/tasmota/xsns_79_as608.ino b/tasmota/xsns_79_as608.ino new file mode 100644 index 000000000..ada626632 --- /dev/null +++ b/tasmota/xsns_79_as608.ino @@ -0,0 +1,301 @@ +/* + xsns_79_as608.ino - AS608 and R503 fingerprint sensor support for Tasmota + + Copyright (C) 2020 boaschti and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_AS608 +/*********************************************************************************************\ + * AS608 optical and R503 capacitive Fingerprint sensor + * + * Currently supports: + * - English only as there are no tanslations supported + * - AS608 only as R503 fails to read stored fingerprints +\*********************************************************************************************/ + +#define XSNS_79 79 + +#define D_JSON_FPRINT "FPrint" + +#define D_PRFX_FP "Fp" +#define D_CMND_FP_ENROLL "Enroll" +#define D_CMND_FP_DELETE "Delete" +#define D_CMND_FP_COUNT "Count" + +const char kAs608Commands[] PROGMEM = D_PRFX_FP "|" D_CMND_FP_ENROLL "|" D_CMND_FP_DELETE "|" D_CMND_FP_COUNT; + +void (*const As608Commands[])(void) PROGMEM = { &CmndFpEnroll, &CmndFpDelete, &CmndFpCount }; + +const char kAs608Messages[] PROGMEM = + "Done|Comms error||Imaging error|Unknown error|Image too messy|Could not find fingerprint features|No match|Did not find a match|Fingerprint did not match|" + "Bad location|DB range error|Upload feature error|Packet response error|Upload error|Delete error|DB Clear error|Password error|Image invalid|" + "Error writing to flash|Invalid reg|Address code|Password verify"; + +const uint8_t As608Reference[] PROGMEM = { 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 4, 17, 4, 18, 4, 4, 19, 4, 20, 4, 4, 4, 4, 4, 21, 22 }; + +#include +#include + +Adafruit_Fingerprint *As608Finger; +TasmotaSerial *As608Serial; + +struct AS608 { + bool selected = false; + uint8_t enroll_step = 0; + uint8_t model_number = 0; +} As608; + +char* As608Message(char* response, uint32_t index) { + if (index > sizeof(As608Reference)) { index = 4; } + uint32_t i = pgm_read_byte(&As608Reference[index]); + return GetTextIndexed(response, TOPSZ, i, kAs608Messages); +} + +void As608PublishMessage(const char* message) { + char romram[TOPSZ]; + snprintf_P(romram, sizeof(romram), message); + if (strlen(romram) > 0) { + char json_name[20]; + if (As608.enroll_step) { + strcpy_P(json_name, PSTR(D_PRFX_FP D_CMND_FP_ENROLL)); + } else { + strcpy_P(json_name, PSTR(D_JSON_FPRINT)); + } + Response_P(S_JSON_COMMAND_SVALUE, json_name, romram); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, json_name); + } +} + +void As608Init(void) { + if (PinUsed(GPIO_AS608_RX) && PinUsed(GPIO_AS608_TX)) { + As608Serial = new TasmotaSerial(Pin(GPIO_AS608_RX), Pin(GPIO_AS608_TX), 0); + As608Finger = new Adafruit_Fingerprint(As608Serial, 0); + + As608Finger->begin(57600); + if (As608Serial->hardwareSerial()) { ClaimSerial(); } + + if (As608Finger->verifyPassword()) { + As608Finger->getTemplateCount(); + AddLog_P(LOG_LEVEL_INFO, PSTR("AS6: Detected with %d fingerprint(s) stored"), As608Finger->templateCount); + As608.selected = true; + } + } +} + +int As608GetFingerImage(void) { + int p = As608Finger->getImage(); + if (p != FINGERPRINT_OK) { + char response[TOPSZ]; + As608PublishMessage(As608Message(response, p)); + } + return p; +} + +int As608ConvertFingerImage(uint8_t slot) { + int p = As608Finger->image2Tz(slot); + if (p != FINGERPRINT_OK) { + char response[TOPSZ]; + As608PublishMessage(As608Message(response, p)); + } + return p; +} + +void As608Loop(void) { + uint32_t p = 0; + + if (!As608.enroll_step) { + // Search for Finger + +// As608Finger->LEDcontrol(FINGERPRINT_LED_OFF, 0, FINGERPRINT_LED_RED); +// As608Finger->LEDcontrol(FINGERPRINT_LED_OFF, 0, FINGERPRINT_LED_BLUE); +// As608Finger->LEDcontrol(FINGERPRINT_LED_OFF, 0, FINGERPRINT_LED_PURPLE); +// As608Finger->LEDcontrol(0); + + p = As608Finger->getImage(); // Take image + if (p != FINGERPRINT_OK) { return; } + + p = As608Finger->image2Tz(); // Convert image + if (p != FINGERPRINT_OK) { return; } + + p = As608Finger->fingerFastSearch(); // Match found + if (p != FINGERPRINT_OK) { +// AddLog_P(LOG_LEVEL_DEBUG, PSTR("AS6: No matching finger")); + return; + } + + // Found a match + Response_P(PSTR("{\"" D_JSON_FPRINT "\":{\"Id\":%d,\"Confidence\":%d}}"), As608Finger->fingerID, As608Finger->confidence); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_FPRINT)); + return; + } else { + // enroll is active + switch (As608.enroll_step) { + case 1: + As608PublishMessage(PSTR("Place finger")); +// As608Finger->LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_BLUE); + As608.enroll_step++; + break; + case 2: + // get first image + if (As608GetFingerImage() == FINGERPRINT_OK) { + As608.enroll_step++; + } + break; + case 3: + // convert image + if (As608ConvertFingerImage(1) == FINGERPRINT_OK) { + As608.enroll_step++; + } else { + As608.enroll_step--; + } + break; + case 4: + As608PublishMessage(PSTR("Remove finger")); + As608.enroll_step++; + break; + case 5: + // Remove finger + p = As608Finger->getImage(); + if (p == FINGERPRINT_NOFINGER) { + As608.enroll_step++; + } + break; + case 6: + As608PublishMessage(PSTR("Place same finger again")); +// As608Finger->LEDcontrol(FINGERPRINT_LED_OFF, 0, FINGERPRINT_LED_PURPLE); + As608.enroll_step++; + break; + case 7: + // get second image of finger + if (As608GetFingerImage() == FINGERPRINT_OK) { + As608.enroll_step++; + } + break; + case 8: + // convert second image + if (As608ConvertFingerImage(2) != FINGERPRINT_OK) { + As608PublishMessage(PSTR("Not Ok so try again")); + As608.enroll_step -= 2; + break; + } + // Create model + p = As608Finger->createModel(); + if (p != FINGERPRINT_OK) { + char response[TOPSZ]; + As608PublishMessage(As608Message(response, p)); + As608.enroll_step = 99; + break; + } + // Store model + p = As608Finger->storeModel(As608.model_number); + char response[TOPSZ]; + As608PublishMessage(As608Message(response, p)); + if (p == FINGERPRINT_OK) { + As608.enroll_step = 0; + As608.model_number = 0; + } else { + As608.enroll_step = 99; + } + break; + case 99: + As608PublishMessage(PSTR("Restart")); + As608.enroll_step = 1; + break; + default: + As608PublishMessage(PSTR("Error")); + As608.enroll_step = 0; + As608.model_number = 0; + break; + } + } +} + +/*********************************************************************************************\ +* Commands +\*********************************************************************************************/ + +void CmndFpEnroll(void) { + if (As608.enroll_step) { + if (0 == XdrvMailbox.payload) { + // FpEnroll 0 - Stop enrollement + As608.enroll_step = 0; + ResponseCmndChar_P(PSTR("Reset")); + } else { + // FpEnroll - Enrollement state + ResponseCmndChar_P(PSTR("Active")); + } + } else { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 128)) { + // FpEnroll 1..128 - Start enrollement into slot x + As608.enroll_step = 1; + As608.model_number = XdrvMailbox.payload; + ResponseClear(); // Will use loop start message + } else { + // FpEnroll - Enrollement state + ResponseCmndChar_P(PSTR("Inactive")); + } + } +} + +void CmndFpDelete(void) { + if (0 == XdrvMailbox.payload) { + // FpDelete 0 - Clear database + As608Finger->emptyDatabase(); + As608Finger->getTemplateCount(); + if (As608Finger->templateCount) { + ResponseCmndChar_P(PSTR("Error")); + } else { + ResponseCmndDone(); + } + } + else if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 128)) { + // FpDelete 1..128 - Delete single entry from database + int p = As608Finger->deleteModel(XdrvMailbox.payload); + char response[TOPSZ]; + ResponseCmndChar(As608Message(response, p)); + } +} + +void CmndFpCount(void) { + // FpCount - Show number of slots used + As608Finger->getTemplateCount(); + ResponseCmndNumber(As608Finger->templateCount); +} + +/*********************************************************************************************\ +* Interface +\*********************************************************************************************/ + +bool Xsns79(uint8_t function) { + bool result = false; + + if (FUNC_INIT == function) { + As608Init(); + } + else if (As608.selected) { + switch (function) { + case FUNC_EVERY_250_MSECOND: + As608Loop(); + break; + case FUNC_COMMAND: + result = DecodeCommand(kAs608Commands, As608Commands); + break; + } + } + return result; +} + +#endif // USE_AS608 From 2c822f948df7798400815f9aae338356f3e9160f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 11 Nov 2020 16:28:35 +0100 Subject: [PATCH 061/293] Fix R503 fingerprint reader support --- tasmota/xsns_79_as608.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_79_as608.ino b/tasmota/xsns_79_as608.ino index ada626632..6c7614de6 100644 --- a/tasmota/xsns_79_as608.ino +++ b/tasmota/xsns_79_as608.ino @@ -23,7 +23,6 @@ * * Currently supports: * - English only as there are no tanslations supported - * - AS608 only as R503 fails to read stored fingerprints \*********************************************************************************************/ #define XSNS_79 79 @@ -130,7 +129,8 @@ void As608Loop(void) { p = As608Finger->image2Tz(); // Convert image if (p != FINGERPRINT_OK) { return; } - p = As608Finger->fingerFastSearch(); // Match found +// p = As608Finger->fingerFastSearch(); // Match found - fails on R503 + p = As608Finger->fingerSearch(); // Match found if (p != FINGERPRINT_OK) { // AddLog_P(LOG_LEVEL_DEBUG, PSTR("AS6: No matching finger")); return; From 4b6465fd10a7401b45941a1ed161518938c6447a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 11 Nov 2020 17:31:48 +0100 Subject: [PATCH 062/293] Add support for fingerprint sensor Add support for AS608 optical and R503 capacitive fingerprint sensor --- BUILDS.md | 1 + CHANGELOG.md | 1 + RELEASENOTES.md | 4 +++- tasmota/i18n.h | 1 + tasmota/language/bg_BG.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/cs_CZ.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/de_DE.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/el_GR.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/en_GB.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/es_ES.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/fr_FR.h | 35 ++++++++++++++++++++++++++++++++ tasmota/language/he_HE.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/hu_HU.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/it_IT.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/ko_KO.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/nl_NL.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/pl_PL.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/pt_BR.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/pt_PT.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/ro_RO.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/ru_RU.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/sk_SK.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/sv_SE.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/tr_TR.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/uk_UA.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/vi_VN.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/zh_CN.h | 34 +++++++++++++++++++++++++++++++ tasmota/language/zh_TW.h | 34 +++++++++++++++++++++++++++++++ tasmota/my_user_config.h | 3 ++- tasmota/tasmota_configurations.h | 4 +++- tasmota/xsns_79_as608.ino | 32 ++++++++++++++--------------- 31 files changed, 844 insertions(+), 19 deletions(-) diff --git a/BUILDS.md b/BUILDS.md index 55be2ae7a..394d74fee 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -165,6 +165,7 @@ | USE_TASMOTA_CLIENT | - | - | - | - | - | - | - | | USE_OPENTHERM | - | - | - | - | - | - | - | | USE_MIEL_HVAC | - | - | - | - | - | - | - | +| USE_AS608 | - | - | - | - | - | - | - | | USE_TCP_BRIDGE | - | - | - | - | - | - | - | zbbridge | | | | | | | | | | USE_NRF24 | - | - | - | - | - | - | - | diff --git a/CHANGELOG.md b/CHANGELOG.md index 954727ff0..436cf5e5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Support for EZO PMP sensors by Christopher Tremblay (#9760) - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) - Zigbee command ``ZbInfo`` and prepare support for EEPROM +- Support for AS608 optical and R503 capacitive fingerprint sensor ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a87bf6ab0..cbabcd046 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -58,10 +58,12 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0.1 ### Added +- Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) +- Zigbee command ``ZbInfo`` and prepare support for EEPROM - Zigbee support for Mi Door and Contact (#9759) - Zigbee alarm persistence (#9785) - Support for additional EZO sensors by Christopher Tremblay -- Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) +- Support for AS608 optical and R503 capacitive fingerprint sensor ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/tasmota/i18n.h b/tasmota/i18n.h index bf6bbcb06..8c60b3c69 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -46,6 +46,7 @@ #define D_JSON_CHANNEL "Channel" #define D_JSON_CO2 "CarbonDioxide" #define D_JSON_COMMAND "Command" +#define D_JSON_CONFIDENCE "Confidence" #define D_JSON_CONFIG_HOLDER "CfgHolder" #define D_JSON_CONNECT_FAILED "Connect failed" #define D_JSON_COREVERSION "Core" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index aeb93d72d..b7823ca56 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_BG_BG_H_ diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 9614943c5..cf2edd17d 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_CS_CZ_H_ diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 7bea97561..4f74ff4d3 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "max. Leistung" #define D_MAX_CURRENT "max. Stromstärke" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_DE_DE_H_ diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index a23f5fc23..623b6b740 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_EL_GR_H_ diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 66322e57b..580570d88 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_EN_GB_H_ diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index c97b114ea..3eea5f1c9 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Potencia Máxima" #define D_MAX_CURRENT "Corriente Máxima" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_ES_ES_H_ diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 3b38ec4b0..ac5ade26b 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -852,4 +852,39 @@ #define D_OVERLOAD "ADPS" #define D_MAX_POWER "Puissance max" #define D_MAX_CURRENT "Courant max" + +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_FR_FR_H_ diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 6fcd10532..2ad3700d3 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_HE_HE_H_ diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 56e80a9f2..6dbb44c9c 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_HU_HU_H_ diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 79331c1fc..81b7080ca 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Potenza max" #define D_MAX_CURRENT "Corrente max" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_IT_IT_H_ diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 7f310bab5..3fe15a1b2 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_KO_KO_H_ diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index ad0a81a5e..4763c030f 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_NL_NL_H_ diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 1eb720b8b..324de77fb 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_PL_PL_D_H_ diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index c74613b53..38f91e7ea 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_PT_BR_H_ diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index b1a7e567c..ae76b55ad 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_PT_PT_H_ diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index a280d5667..c17f4d29f 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_RO_RO_H_ diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 6bf05807c..e9b453281 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_RU_RU_H_ diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 54d253129..b14d8b1bf 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_SK_SK_H_ diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 55234b37f..8112bdf4f 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_SV_SE_H_ diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index e4908e1c4..290d468e4 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_TR_TR_H_ diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index e17c41272..d0941916f 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_UK_UA_H_ diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 07a2e6645..7bd64ffb4 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Nguồn cực đại" #define D_MAX_CURRENT "Dòng cực đại" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_VI_VN_H_ diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index bf310f1ab..85fbb2af5 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_ZH_CN_H_ diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index c041faa97..ed0467608 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -863,4 +863,38 @@ #define D_MAX_POWER "Max Power" #define D_MAX_CURRENT "Max Current" +// xsns_79_as608.ino +#define D_FP_ENROLL_PLACEFINGER "Place finger" +#define D_FP_ENROLL_REMOVEFINGER "Remove finger" +#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" +#define D_FP_ENROLL_RETRY "Error so retry" +#define D_FP_ENROLL_RESTART "Restart" +#define D_FP_ENROLL_ERROR "Error" +#define D_FP_ENROLL_RESET "Reset" +#define D_FP_ENROLL_ACTIVE "Active" +#define D_FP_ENROLL_INACTIVE "Inactive" +// Indexed by Adafruit_Fingerprint.h defines +#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Address code" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Error" // Any other error + #endif // _LANGUAGE_ZH_TW_H_ diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 742d24f6c..2e4798142 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -655,6 +655,7 @@ #define USE_TASMOTA_CLIENT_SERIAL_SPEED 57600 // Depends on the sketch that is running on the Uno/Pro Mini //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) //#define USE_MIEL_HVAC // Add support for Mitsubishi Electric HVAC serial interface (+5k code) +//#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_MARGIN_DETECTION // Add support for Energy Margin detection (+1k6 code) @@ -729,7 +730,7 @@ #define USE_ZIGBEE_COALESCE_ATTR_TIMER 350 // timer to coalesce attribute values (in ms) #define USE_ZIGBEE_MODELID "Tasmota Z2T" // reported "ModelId" (cluster 0000 / attribute 0005) #define USE_ZIGBEE_MANUFACTURER "Tasmota" // reported "Manufacturer" (cluster 0000 / attribute 0004) - #define USE_ZBBRIDGE_TLS // TLS support for zbbridge + #define USE_ZBBRIDGE_TLS // TLS support for zbbridge #define USE_ZIGBEE_ZBBRIDGE_EEPROM 0x50 // I2C id for the ZBBridge EEPROM // -- Other sensors/drivers ----------------------- diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 24e3f9ace..756fdbc83 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -169,6 +169,7 @@ //#define USE_TASMOTA_CLIENT // Add support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) //#define USE_MIEL_HVAC // Add support for Mitsubishi Electric HVAC serial interface (+5k code) +//#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) #define USE_ENERGY_SENSOR // Add energy sensors (-14k code) #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) @@ -449,7 +450,7 @@ #undef USE_HOME_ASSISTANT // Disable Home Assistant // -- MQTT - TLS - AWS IoT ------------------------ -#ifdef USE_ZBBRIDGE_TLS // Enable TLS for ZbBridge +#ifdef USE_ZBBRIDGE_TLS // Enable TLS for ZbBridge #define USE_MQTT_TLS // Use TLS for MQTT connection (+34.5k code, +7.0k mem and +4.8k additional during connection handshake) #define USE_MQTT_TLS_CA_CERT // Force full CA validation instead of fingerprints, slower, but simpler to use. (+2.2k code, +1.9k mem during connection handshake) // This includes the LetsEncrypt CA in tasmota_ca.ino for verifying server certificates @@ -799,6 +800,7 @@ #undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) #undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) #undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) +#undef USE_AS608 // Disable support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) #undef USE_ENERGY_SENSOR // Disable energy sensors #undef USE_PZEM004T // Disable PZEM004T energy sensor diff --git a/tasmota/xsns_79_as608.ino b/tasmota/xsns_79_as608.ino index 6c7614de6..be942e881 100644 --- a/tasmota/xsns_79_as608.ino +++ b/tasmota/xsns_79_as608.ino @@ -21,8 +21,7 @@ /*********************************************************************************************\ * AS608 optical and R503 capacitive Fingerprint sensor * - * Currently supports: - * - English only as there are no tanslations supported + * Uses Adafruit-Fingerprint-sensor-library with TasmotaSerial \*********************************************************************************************/ #define XSNS_79 79 @@ -39,9 +38,10 @@ const char kAs608Commands[] PROGMEM = D_PRFX_FP "|" D_CMND_FP_ENROLL "|" D_CMND_ void (*const As608Commands[])(void) PROGMEM = { &CmndFpEnroll, &CmndFpDelete, &CmndFpCount }; const char kAs608Messages[] PROGMEM = - "Done|Comms error||Imaging error|Unknown error|Image too messy|Could not find fingerprint features|No match|Did not find a match|Fingerprint did not match|" - "Bad location|DB range error|Upload feature error|Packet response error|Upload error|Delete error|DB Clear error|Password error|Image invalid|" - "Error writing to flash|Invalid reg|Address code|Password verify"; + D_DONE "|" D_FP_PACKETRECIEVEERR "|" D_FP_NOFINGER "|" D_FP_IMAGEFAIL "|" D_FP_UNKNOWNERROR "|" D_FP_IMAGEMESS "|" D_FP_FEATUREFAIL "|" D_FP_NOMATCH "|" + D_FP_NOTFOUND "|" D_FP_ENROLLMISMATCH "|" D_FP_BADLOCATION "|" D_FP_DBRANGEFAIL "|" D_FP_UPLOADFEATUREFAIL "|" D_FP_PACKETRESPONSEFAIL "|" + D_FP_UPLOADFAIL "|" D_FP_DELETEFAIL "|" D_FP_DBCLEARFAIL "|" D_FP_PASSFAIL "|" D_FP_INVALIDIMAGE "|" D_FP_FLASHERR "|" D_FP_INVALIDREG "|" + D_FP_ADDRCODE "|" D_FP_PASSVERIFY; const uint8_t As608Reference[] PROGMEM = { 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 4, 17, 4, 18, 4, 4, 19, 4, 20, 4, 4, 4, 4, 4, 21, 22 }; @@ -137,14 +137,14 @@ void As608Loop(void) { } // Found a match - Response_P(PSTR("{\"" D_JSON_FPRINT "\":{\"Id\":%d,\"Confidence\":%d}}"), As608Finger->fingerID, As608Finger->confidence); + Response_P(PSTR("{\"" D_JSON_FPRINT "\":{\"" D_JSON_ID "\":%d,\"" D_JSON_CONFIDENCE "\":%d}}"), As608Finger->fingerID, As608Finger->confidence); MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_JSON_FPRINT)); return; } else { // enroll is active switch (As608.enroll_step) { case 1: - As608PublishMessage(PSTR("Place finger")); + As608PublishMessage(PSTR(D_FP_ENROLL_PLACEFINGER)); // As608Finger->LEDcontrol(FINGERPRINT_LED_ON, 0, FINGERPRINT_LED_BLUE); As608.enroll_step++; break; @@ -163,7 +163,7 @@ void As608Loop(void) { } break; case 4: - As608PublishMessage(PSTR("Remove finger")); + As608PublishMessage(PSTR(D_FP_ENROLL_REMOVEFINGER)); As608.enroll_step++; break; case 5: @@ -174,7 +174,7 @@ void As608Loop(void) { } break; case 6: - As608PublishMessage(PSTR("Place same finger again")); + As608PublishMessage(PSTR(D_FP_ENROLL_PLACESAMEFINGER)); // As608Finger->LEDcontrol(FINGERPRINT_LED_OFF, 0, FINGERPRINT_LED_PURPLE); As608.enroll_step++; break; @@ -187,7 +187,7 @@ void As608Loop(void) { case 8: // convert second image if (As608ConvertFingerImage(2) != FINGERPRINT_OK) { - As608PublishMessage(PSTR("Not Ok so try again")); + As608PublishMessage(PSTR(D_FP_ENROLL_RETRY)); As608.enroll_step -= 2; break; } @@ -211,11 +211,11 @@ void As608Loop(void) { } break; case 99: - As608PublishMessage(PSTR("Restart")); + As608PublishMessage(PSTR(D_FP_ENROLL_RESTART)); As608.enroll_step = 1; break; default: - As608PublishMessage(PSTR("Error")); + As608PublishMessage(PSTR(D_FP_ENROLL_ERROR)); As608.enroll_step = 0; As608.model_number = 0; break; @@ -232,10 +232,10 @@ void CmndFpEnroll(void) { if (0 == XdrvMailbox.payload) { // FpEnroll 0 - Stop enrollement As608.enroll_step = 0; - ResponseCmndChar_P(PSTR("Reset")); + ResponseCmndChar_P(PSTR(D_FP_ENROLL_RESET)); } else { // FpEnroll - Enrollement state - ResponseCmndChar_P(PSTR("Active")); + ResponseCmndChar_P(PSTR(D_FP_ENROLL_ACTIVE)); } } else { if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 128)) { @@ -245,7 +245,7 @@ void CmndFpEnroll(void) { ResponseClear(); // Will use loop start message } else { // FpEnroll - Enrollement state - ResponseCmndChar_P(PSTR("Inactive")); + ResponseCmndChar_P(PSTR(D_FP_ENROLL_INACTIVE)); } } } @@ -256,7 +256,7 @@ void CmndFpDelete(void) { As608Finger->emptyDatabase(); As608Finger->getTemplateCount(); if (As608Finger->templateCount) { - ResponseCmndChar_P(PSTR("Error")); + ResponseCmndChar_P(PSTR(D_FP_DBCLEARFAIL)); } else { ResponseCmndDone(); } From 232fd285147ce52793401b05cfeeaeecfd3f4455 Mon Sep 17 00:00:00 2001 From: Staars Date: Wed, 11 Nov 2020 18:02:39 +0100 Subject: [PATCH 063/293] more secure check, if modem sleep is enabled --- tasmota/xsns_62_MI_ESP32.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index 71fddc839..4c16dc585 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -764,8 +764,10 @@ void MI32PreInit(void) { void MI32Init(void) { if (MI32.mode.init) return; - if (Wifi.status == 0) return; - + if(WiFi.getSleep() == false){ + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: WiFi modem not in sleep mode, BLE cannot start yet")); + return; + } if (!MI32.mode.init) { NimBLEDevice::init(""); AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: init BLE device")); From 20e027e1a5b1ff075012953699efcd21d4247dde Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 11 Nov 2020 18:09:16 +0100 Subject: [PATCH 064/293] ESP32 with BT needs APP_NORMAL_SLEEP --- tasmota/my_user_config.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 2e4798142..3f0d450c0 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -262,7 +262,9 @@ #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1 #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000) -#define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep +#ifndef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! Platformio "-DAPP_NORMAL_SLEEP=true" + #define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep +#endif #define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec), #define PWM_MAX_SLEEP 10 // Sleep will be lowered to this value when light is on, to avoid flickering, and when buzzer is on for better on/off period accuracy From 31dfaaac5c7a99f9dd3dcb5c78ee087c7c9c612e Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 11 Nov 2020 18:11:05 +0100 Subject: [PATCH 065/293] Use Tasmota ESP32 core 1.0.4.2 --- platformio_tasmota32.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index a7d71e325..154dbb916 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -87,8 +87,8 @@ build_flags = ${esp_defaults.build_flags} [core32] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy@1.20800.0 - framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#56a7ae871204cdf24fab8520ab9f76782d94b599 + framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.2/esp32-1.0.4.2.zip build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} - -DESP32_STAGE=true + -DAPP_NORMAL_SLEEP=true From 243353835578b05500d79138a40a38a7b8089028 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 11 Nov 2020 18:14:51 +0100 Subject: [PATCH 066/293] Update platformio_override_sample.ini --- platformio_override_sample.ini | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 3eaa0f2c1..4ea4d9130 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -76,7 +76,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} [tasmota_stage] ; *** Esp8266 core for Arduino version Tasmota stage (PR7231 and Backport PR7514) -platform_packages = framework-arduinoespressif8266 @ https://github.com/Jason2866/Arduino/releases/download/2.7.4.7/esp8266-2.7.4.7.zip +platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} @@ -125,9 +125,11 @@ lib_extra_dirs = ${library.lib_extra_dirs} [core32_stage] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy @ 1.20800.0 - framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git + framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.2/esp32-1.0.4.2.zip build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} + ; ESP32 needs wifi modem sleep for working BT !!! + -DAPP_NORMAL_SLEEP=true -DESP32_STAGE=true [library] From 4698db915149cb9368820e76582a3802719d1b32 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 11 Nov 2020 18:16:05 +0100 Subject: [PATCH 067/293] ESP32 Tasmota core 1.0.4.2 --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 7427391ff..08ecc03ff 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] Only relevant files were touched - [ ] Only one feature/fix was added per PR. - [ ] The code change is tested and works on Tasmota core ESP8266 V.2.7.4.7 - - [ ] The code change is tested and works on Tasmota core ESP32 V.1.0.4.1 + - [ ] The code change is tested and works on Tasmota core ESP32 V.1.0.4.2 - [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla). _NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_ From 12fddac17c5995a8380421ea0fb8e49b090438f9 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 11 Nov 2020 19:26:38 +0100 Subject: [PATCH 068/293] Fix compilation error (#9816) * Fix compilation error * Fix compilation error Co-authored-by: Stephan Hadinger --- tasmota/xdrv_23_zigbee_2_devices.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index a72c15232..6a4dcd49d 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -636,9 +636,10 @@ public: hidden(false), reachable(false), data(), + last_seen(0), lqi(0xFF), batterypercent(0xFF), - last_seen(0) + reserved_for_alignment(0xFFFF) { }; inline bool valid(void) const { return BAD_SHORTADDR != shortaddr; } // is the device known, valid and found? From 2e7fd534e04c47277499e536ec14e8c1d67753e0 Mon Sep 17 00:00:00 2001 From: VergLsm Date: Fri, 16 Oct 2020 00:50:55 +0800 Subject: [PATCH 069/293] Fixed issue of cannot read data when restart and using Sensor18 --- tasmota/xsns_18_pms5003.ino | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tasmota/xsns_18_pms5003.ino b/tasmota/xsns_18_pms5003.ino index d54527ddc..054441b55 100644 --- a/tasmota/xsns_18_pms5003.ino +++ b/tasmota/xsns_18_pms5003.ino @@ -247,6 +247,14 @@ void PmsInit(void) if (!PinUsed(GPIO_PMS5003_TX)) { // setting interval not supported if TX pin not connected Settings.pms_wake_interval = 0; Pms.ready = 1; + } else { + if (Settings.pms_wake_interval >= MIN_INTERVAL_PERIOD) { + // Passive Mode + PmsSendCmd(CMD_MODE_PASSIVE); + Pms.wake_mode = 0; + Pms.ready = 0; + Pms.time = Settings.pms_wake_interval - WARMUP_PERIOD; // Let it wake up in the next second + } } Pms.type = 1; From 85e7f07ef465c59ac0a7d610bd647b23e3e80a8e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 11:48:13 +0100 Subject: [PATCH 070/293] Move ESP32 APP_NORMAL_SLEEP Move ESP32 APP_NORMAL_SLEEP to correct location --- tasmota/my_user_config.h | 4 +--- tasmota/tasmota_globals.h | 11 +++++++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 3f0d450c0..2e4798142 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -262,9 +262,7 @@ #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1 #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000) -#ifndef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! Platformio "-DAPP_NORMAL_SLEEP=true" - #define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep -#endif +#define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep #define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec), #define PWM_MAX_SLEEP 10 // Sleep will be lowered to this value when light is on, to avoid flickering, and when buzzer is on for better on/off period accuracy diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index cfb5315b7..6b9495cb0 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -34,7 +34,7 @@ extern "C" { #endif #include // KNX Header files have to be global else compile fails -> lib/headers -#ifdef USE_KNX +#ifdef USE_KNX void KNX_CB_Action(message_t const &msg, void *arg); #endif // USE_KNX @@ -318,7 +318,7 @@ const char kWebColors[] PROGMEM = COLOR_TIMER_TAB_TEXT "|" COLOR_TIMER_TAB_BACKGROUND "|" COLOR_TITLE_TEXT; /*********************************************************************************************\ - * ESP8266 vs ESP32 related parameters + * ESP8266 specific parameters \*********************************************************************************************/ #ifdef ESP8266 @@ -344,6 +344,10 @@ const char kWebColors[] PROGMEM = #endif // ESP8266 +/*********************************************************************************************\ + * ESP32 specific parameters +\*********************************************************************************************/ + #ifdef ESP32 #ifndef MODULE @@ -353,6 +357,9 @@ const char kWebColors[] PROGMEM = #define FALLBACK_MODULE WEMOS // [Module2] Select default module on fast reboot where USER_MODULE is user template #endif +#undef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! Platformio "-DAPP_NORMAL_SLEEP=true" +#define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep + #ifndef ARDUINO_ESP32_RELEASE #define ARDUINO_CORE_RELEASE "STAGE" #else From ae7b825c74ab7cb16fba82810f334f9023b87074 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 12 Nov 2020 13:26:14 +0100 Subject: [PATCH 071/293] add gzip compression size info --- pio/gzip-firmware.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pio/gzip-firmware.py b/pio/gzip-firmware.py index 248bb5a02..e29c05576 100644 --- a/pio/gzip-firmware.py +++ b/pio/gzip-firmware.py @@ -19,5 +19,10 @@ def bin_gzip(source, target, env): with open(bin_file,"rb") as fp: with gzip.open(gzip_file, "wb", compresslevel = 9) as f: shutil.copyfileobj(fp, f) + + ORG_FIRMWARE_SIZE = os.stat(bin_file).st_size + GZ_FIRMWARE_SIZE = os.stat(gzip_file).st_size + + print("Compression reduced firmware size by {:.0f}% (was {} bytes, now {} bytes)".format((GZ_FIRMWARE_SIZE / ORG_FIRMWARE_SIZE) * 100, ORG_FIRMWARE_SIZE, GZ_FIRMWARE_SIZE)) env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_gzip]) From 08f6b09414a0c748a7a932f16ddaa84b505b4582 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 13:47:50 +0100 Subject: [PATCH 072/293] Add ESP32 fingerprint support --- .../Adafruit_Fingerprint.cpp | 8 ++++---- .../Adafruit_Fingerprint.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp index 3585cf90a..102277087 100644 --- a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp @@ -54,7 +54,7 @@ PUBLIC FUNCTIONS ***************************************************************************/ -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) /**************************************************************************/ /*! @brief Instantiates sensor with Software Serial @@ -87,7 +87,7 @@ Adafruit_Fingerprint::Adafruit_Fingerprint(HardwareSerial *hs, thePassword = password; theAddress = 0xFFFFFFFF; -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) swSerial = NULL; #endif hwSerial = hs; @@ -109,7 +109,7 @@ Adafruit_Fingerprint::Adafruit_Fingerprint(Stream *serial, uint32_t password) { theAddress = 0xFFFFFFFF; hwSerial = NULL; -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) swSerial = NULL; #endif mySerial = serial; @@ -126,7 +126,7 @@ void Adafruit_Fingerprint::begin(uint32_t baudrate) { if (hwSerial) hwSerial->begin(baudrate); -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) if (swSerial) swSerial->begin(baudrate); #endif diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h index 1139209fd..604386f63 100644 --- a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.h @@ -6,7 +6,7 @@ */ #include "Arduino.h" -#if defined(__AVR__) || defined(ESP8266) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) //#include #include #elif defined(FREEDOM_E300_HIFIVE1) @@ -129,7 +129,7 @@ struct Adafruit_Fingerprint_Packet { ///! Helper class to communicate with and keep state for fingerprint sensors class Adafruit_Fingerprint { public: -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) // Adafruit_Fingerprint(SoftwareSerial *ss, uint32_t password = 0x0); Adafruit_Fingerprint(TasmotaSerial *ss, uint32_t password = 0x0); #endif @@ -186,7 +186,7 @@ private: uint8_t recvPacket[20]; Stream *mySerial; -#if defined(__AVR__) || defined(ESP8266) || defined(FREEDOM_E300_HIFIVE1) +#if defined(__AVR__) || defined(ESP8266) || defined(ESP32) || defined(FREEDOM_E300_HIFIVE1) // SoftwareSerial *swSerial; TasmotaSerial *swSerial; #endif From 9d71aea6221dfb1e75a4e9a7b5fac50479fc1756 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 14:24:36 +0100 Subject: [PATCH 073/293] Make fingerprint error messages optional Make fingerprint error messages optional saving 0k4 code space --- tasmota/my_user_config.h | 3 ++- tasmota/xsns_79_as608.ino | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 2e4798142..90c1a009d 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -655,7 +655,8 @@ #define USE_TASMOTA_CLIENT_SERIAL_SPEED 57600 // Depends on the sketch that is running on the Uno/Pro Mini //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) //#define USE_MIEL_HVAC // Add support for Mitsubishi Electric HVAC serial interface (+5k code) -//#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) +//#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k code) +// #define USE_AS608_MESSAGES // Add verbose error messages (+0k4 code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_MARGIN_DETECTION // Add support for Energy Margin detection (+1k6 code) diff --git a/tasmota/xsns_79_as608.ino b/tasmota/xsns_79_as608.ino index be942e881..f4e7d3939 100644 --- a/tasmota/xsns_79_as608.ino +++ b/tasmota/xsns_79_as608.ino @@ -22,10 +22,16 @@ * AS608 optical and R503 capacitive Fingerprint sensor * * Uses Adafruit-Fingerprint-sensor-library with TasmotaSerial + * + * Changes made to Adafruit_Fingerprint.h and Adafruit_Fingerprint.cpp: + * - Replace SoftwareSerial with TasmotaSerial + * - Add defined(ESP32) where also defined(ESP8266) \*********************************************************************************************/ #define XSNS_79 79 +//#define USE_AS608_MESSAGES + #define D_JSON_FPRINT "FPrint" #define D_PRFX_FP "Fp" @@ -37,6 +43,7 @@ const char kAs608Commands[] PROGMEM = D_PRFX_FP "|" D_CMND_FP_ENROLL "|" D_CMND_ void (*const As608Commands[])(void) PROGMEM = { &CmndFpEnroll, &CmndFpDelete, &CmndFpCount }; +#ifdef USE_AS608_MESSAGES const char kAs608Messages[] PROGMEM = D_DONE "|" D_FP_PACKETRECIEVEERR "|" D_FP_NOFINGER "|" D_FP_IMAGEFAIL "|" D_FP_UNKNOWNERROR "|" D_FP_IMAGEMESS "|" D_FP_FEATUREFAIL "|" D_FP_NOMATCH "|" D_FP_NOTFOUND "|" D_FP_ENROLLMISMATCH "|" D_FP_BADLOCATION "|" D_FP_DBRANGEFAIL "|" D_FP_UPLOADFEATUREFAIL "|" D_FP_PACKETRESPONSEFAIL "|" @@ -44,6 +51,9 @@ const char kAs608Messages[] PROGMEM = D_FP_ADDRCODE "|" D_FP_PASSVERIFY; const uint8_t As608Reference[] PROGMEM = { 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 4, 17, 4, 18, 4, 4, 19, 4, 20, 4, 4, 4, 4, 4, 21, 22 }; +#else +const char kAs608Messages[] PROGMEM = D_DONE "|" D_FP_UNKNOWNERROR "|" D_FP_NOFINGER; +#endif #include #include @@ -58,8 +68,13 @@ struct AS608 { } As608; char* As608Message(char* response, uint32_t index) { +#ifdef USE_AS608_MESSAGES if (index > sizeof(As608Reference)) { index = 4; } uint32_t i = pgm_read_byte(&As608Reference[index]); +#else + if (index > 2) { index = 1; } + uint32_t i = index; +#endif return GetTextIndexed(response, TOPSZ, i, kAs608Messages); } From 3786b4ea9fb6b5584fd4ff2e534eb67f7df1dbbf Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 12 Nov 2020 14:28:39 +0100 Subject: [PATCH 074/293] remove esp32 sleep build flag --- platformio_tasmota32.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 154dbb916..5b3f9d77e 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -90,5 +90,3 @@ platform_packages = tool-esptoolpy@1.20800.0 framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.2/esp32-1.0.4.2.zip build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} - -DAPP_NORMAL_SLEEP=true - From b0e2ceb17b1e3860a87d1aacff19d9301cef4003 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 12 Nov 2020 14:30:14 +0100 Subject: [PATCH 075/293] remove ESP32 sleep build flag --- platformio_override_sample.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 4ea4d9130..60b3628b0 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -128,8 +128,6 @@ platform_packages = tool-esptoolpy @ 1.20800.0 framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.2/esp32-1.0.4.2.zip build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} - ; ESP32 needs wifi modem sleep for working BT !!! - -DAPP_NORMAL_SLEEP=true -DESP32_STAGE=true [library] From 0c89adb4353cbd27e8bc9058bad5b388e0793ba1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 12 Nov 2020 14:32:34 +0100 Subject: [PATCH 076/293] Enable ESP32 API sleep --- tasmota/tasmota_globals.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 6b9495cb0..109a1e505 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -357,8 +357,8 @@ const char kWebColors[] PROGMEM = #define FALLBACK_MODULE WEMOS // [Module2] Select default module on fast reboot where USER_MODULE is user template #endif -#undef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! Platformio "-DAPP_NORMAL_SLEEP=true" -#define APP_NORMAL_SLEEP false // [SetOption60] Enable normal sleep instead of dynamic sleep +#undef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! +#define APP_NORMAL_SLEEP true // [SetOption60] Enable normal sleep instead of dynamic sleep #ifndef ARDUINO_ESP32_RELEASE #define ARDUINO_CORE_RELEASE "STAGE" From 0815311e3a0766425fd87b7400bd562fb9a834e9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 16:11:32 +0100 Subject: [PATCH 077/293] Fix one of many warnings --- tasmota/tasmota_globals.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 109a1e505..f32c233d6 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -394,8 +394,8 @@ const char kWebColors[] PROGMEM = #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #endif -#define AGPIO(x) (x<<5) -#define BGPIO(x) (x>>5) +#define AGPIO(x) ((x)<<5) +#define BGPIO(x) ((x)>>5) #ifdef USE_DEVICE_GROUPS #define SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, ...) _SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, __VA_ARGS__, 0) From 979735bb9590c555b0b590aba50c2a30fd8ce902 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 17:38:15 +0100 Subject: [PATCH 078/293] Implement ESP32 Reset 3 --- tasmota/support_command.ino | 9 +++++-- tasmota/support_esp32.ino | 54 +++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 13 deletions(-) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 3fc55e625..4f65da5c2 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -40,7 +40,7 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix #endif // USE_DEVICE_GROUPS D_CMND_SENSOR "|" D_CMND_DRIVER #ifdef ESP32 - "|" D_CMND_TOUCH_CAL "|" D_CMND_TOUCH_THRES "|" D_CMND_TOUCH_NUM "|" D_CMND_CPU_FREQUENCY + "|Info|" D_CMND_TOUCH_CAL "|" D_CMND_TOUCH_THRES "|" D_CMND_TOUCH_NUM "|" D_CMND_CPU_FREQUENCY #endif //ESP32 ; @@ -67,7 +67,7 @@ void (* const TasmotaCommand[])(void) PROGMEM = { #endif // USE_DEVICE_GROUPS &CmndSensor, &CmndDriver #ifdef ESP32 - ,&CmndTouchCal, &CmndTouchThres, &CmndTouchNum, &CmndCpuFrequency + , &CmndInfo, &CmndTouchCal, &CmndTouchThres, &CmndTouchNum, &CmndCpuFrequency #endif //ESP32 }; @@ -2061,6 +2061,11 @@ void CmndDriver(void) #ifdef ESP32 +void CmndInfo(void) { + NvsInfo(); + ResponseCmndDone(); +} + void CmndCpuFrequency(void) { if ((80 == XdrvMailbox.payload) || (160 == XdrvMailbox.payload) || (240 == XdrvMailbox.payload)) { setCpuFrequencyMhz(XdrvMailbox.payload); diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index 0a804551c..e84cc06d9 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -108,25 +108,50 @@ void NvmSave(const char *sNvsName, const char *sName, const void *pSettings, uns interrupts(); } -void NvmErase(const char *sNvsName) { +esp_err_t NvmErase(const char *sNvsName) { nvs_handle handle; noInterrupts(); - nvs_open(sNvsName, NVS_READWRITE, &handle); - nvs_erase_all(handle); - nvs_commit(handle); + esp_err_t result = nvs_open(sNvsName, NVS_READWRITE, &handle); + if (ESP_OK == result) { result = nvs_erase_all(handle); } + if (ESP_OK == result) { result = nvs_commit(handle); } nvs_close(handle); interrupts(); + return result; } void SettingsErase(uint8_t type) { - if (1 == type) { // SDK parameter area - } else if (2 == type) { // Tasmota parameter area (0x0F3xxx - 0x0FBFFF) - } else if (3 == type) { // Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF) + // All SDK and Tasmota data is held in default NVS partition + // + + esp_err_t r1, r2, r3; + switch (type) { + case 0: // Reset 2, 5, 6 = Erase all flash from program end to end of physical flash +// nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. + r1 = NvmErase("qpc"); + r2 = NvmErase("main"); +// NvmErase("cal_data"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); + break; + case 1: case 4: // Reset 3 or WIFI_FORCE_RF_CAL_ERASE = SDK parameter area +// r1 = esp_phy_erase_cal_data_in_nvs(); + r1 = NvmErase("cal_data"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " PHY data (%d)"), r1); + break; + case 2: // Not used = QPC and Tasmota parameter area (0x0F3xxx - 0x0FBFFF) + r1 = NvmErase("qpc"); + r2 = NvmErase("main"); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); + break; + case 3: // QPC Reached = QPC, Tasmota and SDK parameter area (0x0F3xxx - 0x0FFFFF) +// nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. + r1 = NvmErase("qpc"); + r2 = NvmErase("main"); +// r3 = esp_phy_erase_cal_data_in_nvs(); +// r3 = NvmErase("cal_data"); +// AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota (%d,%d) and PHY data (%d)"), r1, r2, r3); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); + break; } - - NvmErase("main"); - - AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " t=%d"), type); } void SettingsRead(void *data, size_t size) { @@ -157,6 +182,13 @@ void ZigbeeWrite(const void *pSettings, unsigned nSettingsLen) { NvmSave("zb", "zigbee", pSettings, nSettingsLen); } +void NvsInfo(void) { + nvs_stats_t nvs_stats; + nvs_get_stats(NULL, &nvs_stats); + AddLog_P(LOG_LEVEL_INFO, PSTR("INF: NVS Used %d, Free %d, Total %d, Namspaces %d"), + nvs_stats.used_entries, nvs_stats.free_entries, nvs_stats.total_entries, nvs_stats.namespace_count); +} + // // Crash stuff // From a8e005336e3eefdf6f6190679f7613322fbce7bf Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 17:50:34 +0100 Subject: [PATCH 079/293] Use valid function for cal_data erase --- tasmota/support_esp32.ino | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index e84cc06d9..1180e5f34 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -87,6 +87,7 @@ void ESP_Restart(void) { #include #include +#include void NvmLoad(const char *sNvsName, const char *sName, void *pSettings, unsigned nSettingsLen) { nvs_handle handle; @@ -121,20 +122,20 @@ esp_err_t NvmErase(const char *sNvsName) { void SettingsErase(uint8_t type) { // All SDK and Tasmota data is held in default NVS partition - // - + // cal_data - SDK PHY calibration data as documented in esp_phy_init.h + // qpc - Tasmota Quick Power Cycle state + // main - Tasmota Settings data esp_err_t r1, r2, r3; switch (type) { case 0: // Reset 2, 5, 6 = Erase all flash from program end to end of physical flash // nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. r1 = NvmErase("qpc"); r2 = NvmErase("main"); -// NvmErase("cal_data"); AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " Tasmota data (%d,%d)"), r1, r2); break; case 1: case 4: // Reset 3 or WIFI_FORCE_RF_CAL_ERASE = SDK parameter area -// r1 = esp_phy_erase_cal_data_in_nvs(); - r1 = NvmErase("cal_data"); + r1 = esp_phy_erase_cal_data_in_nvs(); +// r1 = NvmErase("cal_data"); AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_LOG_APPLICATION D_ERASE " PHY data (%d)"), r1); break; case 2: // Not used = QPC and Tasmota parameter area (0x0F3xxx - 0x0FBFFF) From bec7a8eb69fc13697214b4241d6bf9b829541b17 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 12 Nov 2020 18:37:01 +0100 Subject: [PATCH 080/293] Fix ESP8266 compile error --- tasmota/support_esp32.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index 1180e5f34..b21946bd7 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -109,10 +109,10 @@ void NvmSave(const char *sNvsName, const char *sName, const void *pSettings, uns interrupts(); } -esp_err_t NvmErase(const char *sNvsName) { +int32_t NvmErase(const char *sNvsName) { nvs_handle handle; noInterrupts(); - esp_err_t result = nvs_open(sNvsName, NVS_READWRITE, &handle); + int32_t result = nvs_open(sNvsName, NVS_READWRITE, &handle); if (ESP_OK == result) { result = nvs_erase_all(handle); } if (ESP_OK == result) { result = nvs_commit(handle); } nvs_close(handle); @@ -125,7 +125,7 @@ void SettingsErase(uint8_t type) { // cal_data - SDK PHY calibration data as documented in esp_phy_init.h // qpc - Tasmota Quick Power Cycle state // main - Tasmota Settings data - esp_err_t r1, r2, r3; + int32_t r1, r2, r3; switch (type) { case 0: // Reset 2, 5, 6 = Erase all flash from program end to end of physical flash // nvs_flash_erase(); // Erase RTC, PHY, sta.mac, ap.sndchan, ap.mac, Tasmota etc. From c5d89363215526280a37cdf8dc36e7bad1ee05cd Mon Sep 17 00:00:00 2001 From: Staars Date: Thu, 12 Nov 2020 18:52:22 +0100 Subject: [PATCH 081/293] silence compiler warning, do not redefine global function --- .../OneWire.cpp | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp b/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp index 4476ff53a..8a7309865 100644 --- a/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp +++ b/lib/lib_basic/OneWire-Stickbreaker-20190506-1.1/OneWire.cpp @@ -152,9 +152,12 @@ sample code bearing this copyright. #include "OneWire.h" -#ifdef ARDUINO_ARCH_ESP32 -#define noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux) -#define interrupts() portEXIT_CRITICAL(&mux);} +#ifdef ESP32 +#define t_noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux) +#define t_interrupts() portEXIT_CRITICAL(&mux);} +#else +#define t_noInterrupts noInterrupts +#define t_interrupts interrupts #endif OneWire::OneWire(uint8_t pin) @@ -184,23 +187,23 @@ uint8_t OneWire::reset(void) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; uint8_t r; uint8_t retries = 125; - noInterrupts(); + t_noInterrupts(); DIRECT_MODE_INPUT(reg, mask); - interrupts(); + t_interrupts(); // wait until the wire is high... just in case do { if (--retries == 0) return 0; delayMicroseconds(2); } while ( !DIRECT_READ(reg, mask)); - noInterrupts(); + t_noInterrupts(); DIRECT_WRITE_LOW(reg, mask); DIRECT_MODE_OUTPUT(reg, mask); // drive output low delayMicroseconds(480); DIRECT_MODE_INPUT(reg, mask); // allow it to float delayMicroseconds(70); r = !DIRECT_READ(reg, mask); - interrupts(); + t_interrupts(); delayMicroseconds(410); return r; } @@ -219,20 +222,20 @@ void OneWire::write_bit(uint8_t v) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; if (v & 1) { - noInterrupts(); + t_noInterrupts(); DIRECT_WRITE_LOW(reg, mask); DIRECT_MODE_OUTPUT(reg, mask); // drive output low delayMicroseconds(10); DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); + t_interrupts(); delayMicroseconds(55); } else { - noInterrupts(); + t_noInterrupts(); DIRECT_WRITE_LOW(reg, mask); DIRECT_MODE_OUTPUT(reg, mask); // drive output low delayMicroseconds(65); DIRECT_WRITE_HIGH(reg, mask); // drive output high - interrupts(); + t_interrupts(); delayMicroseconds(5); } } @@ -251,14 +254,14 @@ uint8_t OneWire::read_bit(void) volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg; uint8_t r; - noInterrupts(); + t_noInterrupts(); DIRECT_MODE_OUTPUT(reg, mask); DIRECT_WRITE_LOW(reg, mask); delayMicroseconds(3); DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise delayMicroseconds(10); r = DIRECT_READ(reg, mask); - interrupts(); + t_interrupts(); delayMicroseconds(53); return r; } @@ -277,10 +280,10 @@ void OneWire::write(uint8_t v, uint8_t power /* = 0 */) { OneWire::write_bit( (bitMask & v)?1:0); } if ( !power) { - noInterrupts(); + t_noInterrupts(); DIRECT_MODE_INPUT(baseReg, bitmask); DIRECT_WRITE_LOW(baseReg, bitmask); - interrupts(); + t_interrupts(); } } @@ -288,10 +291,10 @@ void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0 for (uint16_t i = 0 ; i < count ; i++) write(buf[i]); if (!power) { - noInterrupts(); + t_noInterrupts(); DIRECT_MODE_INPUT(baseReg, bitmask); DIRECT_WRITE_LOW(baseReg, bitmask); - interrupts(); + t_interrupts(); } } @@ -335,9 +338,9 @@ void OneWire::skip() void OneWire::depower() { - noInterrupts(); + t_noInterrupts(); DIRECT_MODE_INPUT(baseReg, bitmask); - interrupts(); + t_interrupts(); } #if ONEWIRE_SEARCH @@ -615,11 +618,4 @@ uint16_t OneWire::crc16(const uint8_t* input, uint16_t len, uint16_t crc) return crc; } #endif - - -#ifdef ARDUINO_ARCH_ESP32 -#undef noInterrupts() -#undef interrupts() -#endif - -#endif +#endif \ No newline at end of file From 5f494b7d8a50b6abba532280ad1bdb7908389b78 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 12 Nov 2020 19:38:21 +0100 Subject: [PATCH 082/293] Remove compiler warnings --- tasmota/support.ino | 1 + tasmota/support_crash_recorder.ino | 1 + tasmota/support_light_list.ino | 2 +- tasmota/xdrv_04_light.ino | 3 +- tasmota/xdrv_09_timers.ino | 2 - tasmota/xdrv_20_hue.ino | 1 - tasmota/xdrv_23_zigbee_1z_libs.ino | 3 ++ tasmota/xdrv_23_zigbee_2_devices.ino | 1 + tasmota/xdrv_23_zigbee_2a_devices_impl.ino | 3 +- tasmota/xdrv_23_zigbee_3_hue.ino | 5 +-- tasmota/xdrv_23_zigbee_4_persistence.ino | 2 +- tasmota/xdrv_23_zigbee_4a_eeprom.ino | 2 + tasmota/xdrv_23_zigbee_5_converters.ino | 11 ++---- tasmota/xdrv_23_zigbee_6_commands.ino | 4 +- tasmota/xdrv_23_zigbee_7_statemachine.ino | 1 - tasmota/xdrv_23_zigbee_8_parsers.ino | 45 +++++++++++----------- tasmota/xdrv_23_zigbee_9_serial.ino | 8 ++-- tasmota/xdrv_23_zigbee_A_impl.ino | 14 +++---- 18 files changed, 51 insertions(+), 58 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index 4538c7109..b82c1260e 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -65,6 +65,7 @@ void OsWatchTicker(void) // Force an exception to get a stackdump volatile uint32_t dummy; dummy = *((uint32_t*) 0x00000000); + (void)dummy; // avoid compiler warning } } diff --git a/tasmota/support_crash_recorder.ino b/tasmota/support_crash_recorder.ino index dd0834550..aa1d17a15 100644 --- a/tasmota/support_crash_recorder.ino +++ b/tasmota/support_crash_recorder.ino @@ -50,6 +50,7 @@ void CmndCrash(void) { volatile uint32_t dummy; dummy = *((uint32_t*) 0x00000000); + (void)dummy; } // Do an infinite loop to trigger WDT watchdog diff --git a/tasmota/support_light_list.ino b/tasmota/support_light_list.ino index f439e18fa..316f3f64e 100644 --- a/tasmota/support_light_list.ino +++ b/tasmota/support_light_list.ino @@ -113,7 +113,7 @@ protected: template size_t LList::length(void) const { size_t count = 0; - for (auto & elt : *this) {count++; } + for (auto & elt : *this) { (void)elt; count++; } return count; } diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index 705a07474..ea01afb28 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1848,7 +1848,6 @@ void LightSetPower(void) // Light.power tells which lights or channels (SetOption68) are on/off void LightAnimate(void) { - uint16_t light_still_on = 0; bool power_off = false; // make sure we update CT range in case SetOption82 was changed @@ -2727,7 +2726,7 @@ void CmndHsbColor(void) uint32_t paramcount = ParseParameters(3, HSB); if (HSB[0] > 360) { HSB[0] = 360; } for (uint32_t i = 1; i < paramcount; i++) { - if (HSB[i] > 100) { HSB[i] == 100; } + if (HSB[i] > 100) { HSB[i] = 100; } HSB[i] = changeUIntScale(HSB[i], 0, 100, 0, 255); // change sat and bri to 0..255 } } diff --git a/tasmota/xdrv_09_timers.ino b/tasmota/xdrv_09_timers.ino index 6da968011..786bde4b9 100644 --- a/tasmota/xdrv_09_timers.ino +++ b/tasmota/xdrv_09_timers.ino @@ -101,7 +101,6 @@ float TimeFormula(float *DK, uint32_t Tdays) { float M = InPi( (pi2 * 0.993133f) + (pi2 * 99.997361f / 36525.0f) * Tdays); float L = InPi( (pi2 * 0.7859453f) + M + (6893.0f * sinf(M) + 72.0f * sinf(M+M) + (6191.2f / 36525.0f) * Tdays) * (pi2 / 1296.0e3f)); - float eps = 0.40904f; // we take this angle as constant over the next decade float cos_eps = 0.91750f; // precompute cos(eps) float sin_eps = 0.39773f; // precompute sin(eps) @@ -359,7 +358,6 @@ void CmndTimer(void) error = 1; } else { - char parm_uc[10]; index--; JsonParserToken val = root[PSTR(D_JSON_TIMER_ARM)]; if (val) { diff --git a/tasmota/xdrv_20_hue.ino b/tasmota/xdrv_20_hue.ino index 44fe09896..5673da526 100644 --- a/tasmota/xdrv_20_hue.ino +++ b/tasmota/xdrv_20_hue.ino @@ -533,7 +533,6 @@ void CheckHue(String * response, bool &appending) { } void HueLightsCommand(uint8_t device, uint32_t device_id, String &response) { - uint16_t tmp = 0; uint16_t hue = 0; uint8_t sat = 0; uint8_t bri = 254; diff --git a/tasmota/xdrv_23_zigbee_1z_libs.ino b/tasmota/xdrv_23_zigbee_1z_libs.ino index 82555c941..c1704a67b 100644 --- a/tasmota/xdrv_23_zigbee_1z_libs.ino +++ b/tasmota/xdrv_23_zigbee_1z_libs.ino @@ -135,6 +135,7 @@ public: freeKey(); freeVal(); deepCopy(rhs); + return *this; } // Destructor, free memory that was allocated @@ -659,6 +660,8 @@ void Z_attribute::freeVal(void) { case Za_type::Za_arr: if (val.arrval) { delete val.arrval; val.arrval = nullptr; } break; + default: + break; } } diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 6a4dcd49d..db8f70428 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -405,6 +405,7 @@ public: } } } + return false; } // 4 bytes diff --git a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino index b6591be2b..7ad12557b 100644 --- a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino +++ b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino @@ -215,6 +215,7 @@ Z_Device & Z_Devices::updateDevice(uint16_t shortaddr, uint64_t longaddr) { } return device_unk; } + return device_unk; } // @@ -341,6 +342,7 @@ void Z_Device::setLightChannels(int8_t channels) { zigbee_devices.dirty(); } Z_Data_OnOff & onoff = data.get(0); + (void)onoff; } else { // remove light / onoff object if any for (auto & data_elt : data) { @@ -754,7 +756,6 @@ int32_t Z_Devices::deviceRestore(JsonParserObject json) { const char * modelid = nullptr; const char * manufid = nullptr; const char * friendlyname = nullptr; - size_t endpoints_len = 0; // read mandatory "Device" JsonParserToken val_device = json[PSTR("Device")]; diff --git a/tasmota/xdrv_23_zigbee_3_hue.ino b/tasmota/xdrv_23_zigbee_3_hue.ino index abc6962cb..2939e75b5 100644 --- a/tasmota/xdrv_23_zigbee_3_hue.ino +++ b/tasmota/xdrv_23_zigbee_3_hue.ino @@ -76,7 +76,7 @@ void HueLightStatus1Zigbee(uint16_t shortaddr, uint8_t local_light_subtype, Stri } else { float x_f = x / 65536.0f; float y_f = y / 65536.0f; - snprintf_P(buf, buf_size, PSTR("%s\"xy\":[%s,%s],"), buf, String(x, 5).c_str(), String(y, 5).c_str()); + snprintf_P(buf, buf_size, PSTR("%s\"xy\":[%s,%s],"), buf, String(x_f, 5).c_str(), String(y_f, 5).c_str()); } snprintf_P(buf, buf_size, PSTR("%s\"hue\":%d,\"sat\":%d,"), buf, hue16, sat); } @@ -208,9 +208,8 @@ void ZigbeeHueHS(uint16_t shortaddr, uint16_t hue, uint8_t sat) { } void ZigbeeHandleHue(uint16_t shortaddr, uint32_t device_id, String &response) { - uint8_t power, colormode, bri, sat; + uint8_t bri, sat; uint16_t ct, hue; - float x, y; int code = 200; bool resp = false; // is the response non null (add comma between parameters) diff --git a/tasmota/xdrv_23_zigbee_4_persistence.ino b/tasmota/xdrv_23_zigbee_4_persistence.ino index ecaf150f9..b9d140ad0 100644 --- a/tasmota/xdrv_23_zigbee_4_persistence.ino +++ b/tasmota/xdrv_23_zigbee_4_persistence.ino @@ -218,7 +218,7 @@ void hydrateSingleDevice(const SBuffer & buf_d, uint32_t version) { uint32_t endpoints = buf_d.get8(d++); for (uint32_t j = 0; j < endpoints; j++) { uint8_t ep = buf_d.get8(d++); - uint16_t ep_profile = buf_d.get16(d); d += 2; + // uint16_t ep_profile = buf_d.get16(d); d += 2; device.addEndpoint(ep); // in clusters diff --git a/tasmota/xdrv_23_zigbee_4a_eeprom.ino b/tasmota/xdrv_23_zigbee_4a_eeprom.ino index 7ba87d9bd..9a62a8abe 100644 --- a/tasmota/xdrv_23_zigbee_4a_eeprom.ino +++ b/tasmota/xdrv_23_zigbee_4a_eeprom.ino @@ -74,6 +74,7 @@ bool hydrateDeviceData(class Z_Device & device, const SBuffer & buf, size_t star while (offset + 5 <= len) { // each entry is at least 5 bytes uint8_t data_len = buf.get8(start + offset); Z_Data & data_elt = device.data.createFromBuffer(buf, offset + 1, data_len); + (void)data_elt; // avoid compiler warning offset += data_len + 1; } return true; @@ -124,6 +125,7 @@ bool hydrateDevicesDataBlob(const class SBuffer & buf, size_t start, size_t len) if (segment_len <= 0) { return false; } offset += segment_len; } + return true; } class SBuffer hibernateDeviceData(const struct Z_Device & device, bool log = false) { diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index b736cb544..9a3114ab6 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -883,7 +883,6 @@ int32_t encodeSingleAttribute(class SBuffer &buf, double val_d, const char *val_ break; case Zsingle: // float - uint32_t *f_ptr; buf.add32( *((uint32_t*)&f32) ); // cast float as uint32_t break; @@ -1023,7 +1022,7 @@ uint32_t parseSingleAttribute(Z_attribute & attr, const SBuffer &buf, { int32_t int32_val = buf.get32(i); // i += 4; - if (0x80000000 != int32_val) { + if (-0x80000000 != int32_val) { attr.setInt(int32_val); } } @@ -1805,9 +1804,9 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib // Look for an entry in the converter table bool found = false; const char * conv_name; - Z_Data_Type map_type; - uint8_t map_offset; - uint8_t zigbee_type; + Z_Data_Type map_type = Z_Data_Type::Z_Unknown; + uint8_t map_offset = 0; + uint8_t zigbee_type = Znodata; int8_t conv_multiplier; for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; @@ -1861,7 +1860,6 @@ void Z_postProcessAttributes(uint16_t shortaddr, uint16_t src_ep, class Z_attrib uint16_t uval16 = attr.getUInt(); // call converter to uint only once int16_t ival16 = attr.getInt(); // call converter to int only once - Z_Data_Set & data = device.data; // update any internal structure switch (ccccaaaa) { case 0x00000004: device.setManufId(attr.getStr()); break; @@ -1937,7 +1935,6 @@ bool Z_parseAttributeKey(class Z_attribute & attr) { // scan attributes to find by name, and retrieve type for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; - bool match = false; uint16_t local_attr_id = pgm_read_word(&converter->attribute); uint16_t local_cluster_id = CxToCluster(pgm_read_byte(&converter->cluster_short)); uint8_t local_type_id = pgm_read_byte(&converter->type); diff --git a/tasmota/xdrv_23_zigbee_6_commands.ino b/tasmota/xdrv_23_zigbee_6_commands.ino index 425fcad0b..5c1a1aeae 100644 --- a/tasmota/xdrv_23_zigbee_6_commands.ino +++ b/tasmota/xdrv_23_zigbee_6_commands.ino @@ -297,7 +297,7 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, bool match = true; for (uint8_t i = 0; i < payload.len(); i++) { const char c1 = pgm_read_byte(p); - const char c2 = pgm_read_byte(p+1); + // const char c2 = pgm_read_byte(p+1); //AddLog_P(LOG_LEVEL_INFO, PSTR(">>>++2 c1 = %c, c2 = %c"), c1, c2); if ((0x00 == c1) || isXYZ(c1)) { break; @@ -524,7 +524,7 @@ String zigbeeCmdAddParams(const char *zcl_cmd_P, uint32_t x, uint32_t y, uint32_ char *p = zcl_cmd; while (*p) { if (isXYZ(*p) && (*p == *(p+1))) { // if char is [x-z] and followed by same char - uint8_t val; + uint8_t val = 0; switch (*p) { case 'x': val = x & 0xFF; diff --git a/tasmota/xdrv_23_zigbee_7_statemachine.ino b/tasmota/xdrv_23_zigbee_7_statemachine.ino index cf44eff8e..65da03d24 100644 --- a/tasmota/xdrv_23_zigbee_7_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_statemachine.ino @@ -902,7 +902,6 @@ uint8_t ZigbeeGetInstructionSize(uint8_t instr) { // in Zigbee_Instruction lin void ZigbeeGotoLabel(uint8_t label) { // look for the label scanning entire code - uint16_t goto_pc = 0xFFFF; // 0xFFFF means not found uint8_t cur_instr = 0; uint8_t cur_d8 = 0; uint8_t cur_instr_len = 1; // size of current instruction in words diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index d4e47fa86..26bbe45e8 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -35,7 +35,7 @@ uint8_t ZNP_RSSI2Lqi(int8_t rssi) { \*********************************************************************************************/ // EZSP: received ASH "RSTACK" frame, indicating that the MCU finished boot -int32_t EZ_RSTACK(uint8_t reset_code) { +void EZ_RSTACK(uint8_t reset_code) { const char *reason_str; switch (reset_code) { @@ -57,7 +57,7 @@ int32_t EZ_RSTACK(uint8_t reset_code) { } // EZSP: received ASH "ERROR" frame, indicating that the MCU finished boot -int32_t EZ_ERROR(uint8_t error_code) { +void EZ_ERROR(uint8_t error_code) { const char *reason_str; switch (error_code) { @@ -75,7 +75,7 @@ int32_t EZ_ERROR(uint8_t error_code) { int32_t EZ_ReadAPSUnicastMessage(int32_t res, class SBuffer &buf) { // Called when receiving a response from getConfigurationValue // Value is in bytes 2+3 - uint16_t value = buf.get16(2); + // uint16_t value = buf.get16(2); return res; } @@ -129,8 +129,8 @@ int32_t EZ_NetworkParameters(int32_t res, class SBuffer &buf) { // Analyze response to "getKey" and check NWK key // int32_t EZ_CheckKeyNWK(int32_t res, class SBuffer &buf) { - uint8_t status = buf.get8(2); - uint16_t bitmask = buf.get16(3); + // uint8_t status = buf.get8(2); + // uint16_t bitmask = buf.get16(3); uint8_t key_type = buf.get8(5); uint64_t key_low = buf.get64(6); uint64_t key_high = buf.get64(14); @@ -314,11 +314,11 @@ int32_t ZNP_Reboot(int32_t res, class SBuffer &buf) { // 4180.02.02.00.02.06.03 // uint8_t reason = buf.get8(2); - uint8_t transport_rev = buf.get8(3); - uint8_t product_id = buf.get8(4); + // uint8_t transport_rev = buf.get8(3); + // uint8_t product_id = buf.get8(4); uint8_t major_rel = buf.get8(5); uint8_t minor_rel = buf.get8(6); - uint8_t hw_rev = buf.get8(7); + // uint8_t hw_rev = buf.get8(7); const char *reason_str; switch (reason) { @@ -481,18 +481,18 @@ int32_t ZNP_ReceivePermitJoinStatus(int32_t res, const class SBuffer &buf) { // int32_t ZNP_ReceiveNodeDesc(int32_t res, const class SBuffer &buf) { // Received ZDO_NODE_DESC_RSP - Z_ShortAddress srcAddr = buf.get16(2); + // Z_ShortAddress srcAddr = buf.get16(2); uint8_t status = buf.get8(4); - Z_ShortAddress nwkAddr = buf.get16(5); + // Z_ShortAddress nwkAddr = buf.get16(5); uint8_t logicalType = buf.get8(7); - uint8_t apsFlags = buf.get8(8); - uint8_t MACCapabilityFlags = buf.get8(9); - uint16_t manufacturerCapabilities = buf.get16(10); - uint8_t maxBufferSize = buf.get8(12); - uint16_t maxInTransferSize = buf.get16(13); - uint16_t serverMask = buf.get16(15); - uint16_t maxOutTransferSize = buf.get16(17); - uint8_t descriptorCapabilities = buf.get8(19); + // uint8_t apsFlags = buf.get8(8); + // uint8_t MACCapabilityFlags = buf.get8(9); + // uint16_t manufacturerCapabilities = buf.get16(10); + // uint8_t maxBufferSize = buf.get8(12); + // uint16_t maxInTransferSize = buf.get16(13); + // uint16_t serverMask = buf.get16(15); + // uint16_t maxOutTransferSize = buf.get16(17); + // uint8_t descriptorCapabilities = buf.get8(19); if (0 == status) { @@ -525,13 +525,13 @@ int32_t Z_ReceiveActiveEp(int32_t res, const class SBuffer &buf) { // Received ZDO_ACTIVE_EP_RSP #ifdef USE_ZIGBEE_ZNP // Z_ShortAddress srcAddr = buf.get16(2); - uint8_t status = buf.get8(4); + // uint8_t status = buf.get8(4); Z_ShortAddress nwkAddr = buf.get16(5); uint8_t activeEpCount = buf.get8(7); uint8_t* activeEpList = (uint8_t*) buf.charptr(8); #endif #ifdef USE_ZIGBEE_EZSP - uint8_t status = buf.get8(0); + // uint8_t status = buf.get8(0); Z_ShortAddress nwkAddr = buf.get16(1); uint8_t activeEpCount = buf.get8(3); uint8_t* activeEpList = (uint8_t*) buf.charptr(4); @@ -635,7 +635,7 @@ int32_t Z_ReceiveSimpleDesc(int32_t res, const class SBuffer &buf) { // Z_ShortAddress srcAddr = buf.get16(2); uint8_t status = buf.get8(4); Z_ShortAddress nwkAddr = buf.get16(5); - uint8_t lenDescriptor = buf.get8(7); + // uint8_t lenDescriptor = buf.get8(7); uint8_t endpoint = buf.get8(8); uint16_t profileId = buf.get16(9); // The profile Id for this endpoint. uint16_t deviceId = buf.get16(11); // The Device Description Id for this endpoint. @@ -648,7 +648,7 @@ int32_t Z_ReceiveSimpleDesc(int32_t res, const class SBuffer &buf) { #ifdef USE_ZIGBEE_EZSP uint8_t status = buf.get8(0); Z_ShortAddress nwkAddr = buf.get16(1); - uint8_t lenDescriptor = buf.get8(3); + // uint8_t lenDescriptor = buf.get8(3); uint8_t endpoint = buf.get8(4); uint16_t profileId = buf.get16(5); // The profile Id for this endpoint. uint16_t deviceId = buf.get16(7); // The Device Description Id for this endpoint. @@ -1661,7 +1661,6 @@ int32_t EZ_IncomingMessage(int32_t res, const class SBuffer &buf) { break; } } else { - bool defer_attributes = false; // do we defer attributes reporting to coalesce ZCLFrame zcl_received = ZCLFrame::parseRawFrame(buf, 21, buf.get8(20), clusterid, groupid, srcaddr, srcendpoint, dstendpoint, wasbroadcast, diff --git a/tasmota/xdrv_23_zigbee_9_serial.ino b/tasmota/xdrv_23_zigbee_9_serial.ino index e354b6fd2..b3600c151 100644 --- a/tasmota/xdrv_23_zigbee_9_serial.ino +++ b/tasmota/xdrv_23_zigbee_9_serial.ino @@ -446,8 +446,6 @@ void ZigbeeEZSPSendRaw(const uint8_t *msg, size_t len, bool send_cancel) { AddLog_P(LOG_LEVEL_DEBUG, PSTR(D_JSON_ZIGBEE_EZSP_SENT ": bad message len %d"), len); return; } - uint8_t data_len = len - 2; // removing CMD1 and CMD2 - // turn send led on Z_LedStatusSet(true); @@ -554,14 +552,14 @@ void ZigbeeEZSPSendDATA(const uint8_t *msg, size_t len) { } // Receive a high-level EZSP command/response, starting with 16-bits frame ID -int32_t ZigbeeProcessInputEZSP(class SBuffer &buf) { +void ZigbeeProcessInputEZSP(class SBuffer &buf) { // verify errors in first 2 bytes. // TODO // uint8_t sequence_num = buf.get8(0); uint16_t frame_control = buf.get16(1); bool truncated = frame_control & 0x02; bool overflow = frame_control & 0x01; - bool callbackPending = frame_control & 0x04; + // bool callbackPending = frame_control & 0x04; bool security_enabled = frame_control & 0x8000; if (truncated || overflow || security_enabled) { AddLog_P(LOG_LEVEL_INFO, PSTR("ZIG: specific frame_control 0x%04X"), frame_control); @@ -634,7 +632,7 @@ void EZSP_HandleAck(uint8_t new_ack) { } // Receive raw ASH frame (CRC was removed, data unstuffed) but still contains frame numbers -int32_t ZigbeeProcessInputRaw(class SBuffer &buf) { +void ZigbeeProcessInputRaw(class SBuffer &buf) { uint8_t control_byte = buf.get8(0); uint8_t ack_num = control_byte & 0x07; // keep 3 LSB if (control_byte & 0x80) { // non DATA frame diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index ea6869778..dcacff1ed 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -593,7 +593,6 @@ void ZbSendRead(JsonParserToken val_attr, ZigbeeZCLSendMessage & packet) { // scan attributes to find by name, and retrieve type for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; - bool match = false; uint16_t local_attr_id = pgm_read_word(&converter->attribute); uint16_t local_cluster_id = CxToCluster(pgm_read_byte(&converter->cluster_short)); // uint8_t local_type_id = pgm_read_byte(&converter->type); @@ -833,7 +832,6 @@ void ZbBindUnbind(bool unbind) { // false = bind, true = unbind uint8_t toendpoint = 0x01; // default dest endpoint to 0x01 uint16_t toGroup = 0x0000; // group address uint16_t cluster = 0; // cluster 0 is default - uint32_t group = 0xFFFFFFFF; // 16 bits values, otherwise 0xFFFFFFFF is unspecified // Information about source device: "Device", "Endpoint", "Cluster" // - the source endpoint must have a known IEEE address @@ -1040,7 +1038,7 @@ void CmndZbName(void) { // check if parameters contain a comma ',' char *p; - char *str = strtok_r(XdrvMailbox.data, ",", &p); + strtok_r(XdrvMailbox.data, ",", &p); // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, false); // it's the only case where we create a new device @@ -1072,7 +1070,7 @@ void CmndZbModelId(void) { // check if parameters contain a comma ',' char *p; - char *str = strtok_r(XdrvMailbox.data, ",", &p); + strtok_r(XdrvMailbox.data, ",", &p); // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered @@ -1101,7 +1099,7 @@ void CmndZbLight(void) { // check if parameters contain a comma ',' char *p; - char *str = strtok_r(XdrvMailbox.data, ", ", &p); + strtok_r(XdrvMailbox.data, ", ", &p); // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered @@ -1144,7 +1142,7 @@ void CmndZbOccupancy(void) { // check if parameters contain a comma ',' char *p; - char *str = strtok_r(XdrvMailbox.data, ", ", &p); + strtok_r(XdrvMailbox.data, ", ", &p); // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered @@ -1293,8 +1291,6 @@ void CmndZbPermitJoin(void) { duration = 0xFF; // unlimited time } - uint16_t dstAddr = 0xFFFC; // default addr - SBuffer buf(34); buf.add8(Z_SREQ | Z_ZDO); // 25 buf.add8(ZDO_MGMT_PERMIT_JOIN_REQ); // 36 @@ -1426,7 +1422,7 @@ void CmndZbData(void) { // check if parameters contain a comma ',' char *p; - char *str = strtok_r(XdrvMailbox.data, ",", &p); + strtok_r(XdrvMailbox.data, ",", &p); // parse first part, Z_Device & device = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true); // in case of short_addr, it must be already registered From 3bd192d5f8e75ea478beed2a830004d123d49c32 Mon Sep 17 00:00:00 2001 From: Staars Date: Thu, 12 Nov 2020 20:26:06 +0100 Subject: [PATCH 083/293] add missing casts to silence compiler warnings --- .../Adafruit_Fingerprint.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp index 102277087..fadc5a164 100644 --- a/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp +++ b/lib/lib_div/Adafruit-Fingerprint-Sensor-Library-2.0.4-Tasmota/Adafruit_Fingerprint.cpp @@ -368,8 +368,8 @@ uint8_t Adafruit_Fingerprint::LEDcontrol(uint8_t control, uint8_t speed, /**************************************************************************/ uint8_t Adafruit_Fingerprint::fingerSearch(uint8_t slot) { // search of slot starting thru the capacity - GET_CMD_PACKET(FINGERPRINT_SEARCH, slot, 0x00, 0x00, capacity >> 8, - capacity & 0xFF); + GET_CMD_PACKET(FINGERPRINT_SEARCH, slot, 0x00, 0x00, (uint8_t)(capacity >> 8), + (uint8_t)(capacity & 0xFF)); fingerID = 0xFFFF; confidence = 0xFFFF; @@ -413,8 +413,8 @@ uint8_t Adafruit_Fingerprint::getTemplateCount(void) { */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::setPassword(uint32_t password) { - SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (password >> 24), (password >> 16), - (password >> 8), password); + SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (uint8_t)(password >> 24), (uint8_t)(password >> 16), + (uint8_t)(password >> 8), (uint8_t)password); } /**************************************************************************/ From bc68a1c0f9a12770af3e4a25e0de9c6189765af5 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 09:10:47 +0100 Subject: [PATCH 084/293] define exact toolchain... to avoid warning in platformio when installing --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index bc0605428..6d75b16d3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -142,6 +142,7 @@ build_flags = -DUSE_IR_REMOTE_FULL ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 platform = espressif8266 @ 2.6.2 platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 + platformio/toolchain-xtensa @ 2.40802.200502 platformio/tool-esptool @ 1.413.0 build_unflags = ${esp_defaults.build_unflags} build_flags = ${esp82xx_defaults.build_flags} From 03d6d8198e94fe21bef33378045fd57605225fec Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 09:24:35 +0100 Subject: [PATCH 085/293] add compiler flag -Wreturn-type to get a warning for "unclear" returns --- platformio.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/platformio.ini b/platformio.ini index bc0605428..4d9951948 100644 --- a/platformio.ini +++ b/platformio.ini @@ -105,6 +105,7 @@ build_unflags = -mtarget-align -Wdeprecated-declarations build_flags = -mno-target-align -Wno-deprecated-declarations + -Wreturn-type -D_IR_ENABLE_DEFAULT_=false -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true From 9915c9e7313b30d5393adca76f1756fcce8f16b2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 09:54:01 +0100 Subject: [PATCH 086/293] Fixed Telegram group chatid not supported Fixed Telegram group chatid not supported (#9831) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_40_telegram.ino | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 436cf5e5a..04c2dd4ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file. ### Fixed - NTP fallback server functionality (#9739) +- Telegram group chatid not supported (#9831) ### Removed - Version compatibility check diff --git a/RELEASENOTES.md b/RELEASENOTES.md index cbabcd046..251b6396b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -72,6 +72,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Fixed - NTP fallback server functionality (#9739) +- Telegram group chatid not supported (#9831) ### Removed - Version compatibility check diff --git a/tasmota/xdrv_40_telegram.ino b/tasmota/xdrv_40_telegram.ino index 2ab1eb775..e959268d2 100644 --- a/tasmota/xdrv_40_telegram.ino +++ b/tasmota/xdrv_40_telegram.ino @@ -66,7 +66,7 @@ typedef struct { // String from_last_name; // uint32_t from_id = 0; uint32_t update_id = 0; - uint32_t chat_id = 0; + int32_t chat_id = 0; } TelegramMessage; struct { @@ -248,7 +248,7 @@ void TelegramGetUpdates(uint32_t offset) { } } -bool TelegramSendMessage(uint32_t chat_id, String text) { +bool TelegramSendMessage(int32_t chat_id, String text) { AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR("TGM: sendMessage")); if (!TelegramInit()) { return false; } From d092879f710f77123e67743b97016375d93e8962 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Fri, 13 Nov 2020 10:42:04 +0100 Subject: [PATCH 087/293] rtsplib added --- lib/libesp32/rtsp/CRtspSession.cpp | 412 ++++ lib/libesp32/rtsp/CRtspSession.h | 73 + lib/libesp32/rtsp/CStreamer.cpp | 350 +++ lib/libesp32/rtsp/CStreamer.h | 56 + lib/libesp32/rtsp/JPEGSamples.cpp | 3327 ++++++++++++++++++++++++++ lib/libesp32/rtsp/JPEGSamples.h | 11 + lib/libesp32/rtsp/OV2640.cpp | 193 ++ lib/libesp32/rtsp/OV2640.h | 43 + lib/libesp32/rtsp/OV2640Streamer.cpp | 19 + lib/libesp32/rtsp/OV2640Streamer.h | 15 + lib/libesp32/rtsp/SimStreamer.cpp | 28 + lib/libesp32/rtsp/SimStreamer.h | 15 + lib/libesp32/rtsp/platglue-esp32.h | 107 + lib/libesp32/rtsp/platglue-posix.h | 111 + lib/libesp32/rtsp/platglue.h | 7 + 15 files changed, 4767 insertions(+) create mode 100755 lib/libesp32/rtsp/CRtspSession.cpp create mode 100755 lib/libesp32/rtsp/CRtspSession.h create mode 100755 lib/libesp32/rtsp/CStreamer.cpp create mode 100755 lib/libesp32/rtsp/CStreamer.h create mode 100755 lib/libesp32/rtsp/JPEGSamples.cpp create mode 100755 lib/libesp32/rtsp/JPEGSamples.h create mode 100755 lib/libesp32/rtsp/OV2640.cpp create mode 100755 lib/libesp32/rtsp/OV2640.h create mode 100755 lib/libesp32/rtsp/OV2640Streamer.cpp create mode 100755 lib/libesp32/rtsp/OV2640Streamer.h create mode 100755 lib/libesp32/rtsp/SimStreamer.cpp create mode 100755 lib/libesp32/rtsp/SimStreamer.h create mode 100755 lib/libesp32/rtsp/platglue-esp32.h create mode 100755 lib/libesp32/rtsp/platglue-posix.h create mode 100755 lib/libesp32/rtsp/platglue.h diff --git a/lib/libesp32/rtsp/CRtspSession.cpp b/lib/libesp32/rtsp/CRtspSession.cpp new file mode 100755 index 000000000..9d5718091 --- /dev/null +++ b/lib/libesp32/rtsp/CRtspSession.cpp @@ -0,0 +1,412 @@ +#include "CRtspSession.h" +#include +#include + +CRtspSession::CRtspSession(SOCKET aRtspClient, CStreamer * aStreamer) : m_RtspClient(aRtspClient),m_Streamer(aStreamer) +{ + printf("Creating RTSP session\n"); + Init(); + + m_RtspSessionID = getRandom(); // create a session ID + m_RtspSessionID |= 0x80000000; + m_StreamID = -1; + m_ClientRTPPort = 0; + m_ClientRTCPPort = 0; + m_TcpTransport = false; + m_streaming = false; + m_stopped = false; +}; + +CRtspSession::~CRtspSession() +{ + closesocket(m_RtspClient); +}; + +void CRtspSession::Init() +{ + m_RtspCmdType = RTSP_UNKNOWN; + memset(m_URLPreSuffix, 0x00, sizeof(m_URLPreSuffix)); + memset(m_URLSuffix, 0x00, sizeof(m_URLSuffix)); + memset(m_CSeq, 0x00, sizeof(m_CSeq)); + memset(m_URLHostPort, 0x00, sizeof(m_URLHostPort)); + m_ContentLength = 0; +}; + +bool CRtspSession::ParseRtspRequest(char const * aRequest, unsigned aRequestSize) +{ + char CmdName[RTSP_PARAM_STRING_MAX]; + static char CurRequest[RTSP_BUFFER_SIZE]; // Note: we assume single threaded, this large buf we keep off of the tiny stack + unsigned CurRequestSize; + + Init(); + CurRequestSize = aRequestSize; + memcpy(CurRequest,aRequest,aRequestSize); + + // check whether the request contains information about the RTP/RTCP UDP client ports (SETUP command) + char * ClientPortPtr; + char * TmpPtr; + static char CP[1024]; + char * pCP; + + ClientPortPtr = strstr(CurRequest,"client_port"); + if (ClientPortPtr != nullptr) + { + TmpPtr = strstr(ClientPortPtr,"\r\n"); + if (TmpPtr != nullptr) + { + TmpPtr[0] = 0x00; + strcpy(CP,ClientPortPtr); + pCP = strstr(CP,"="); + if (pCP != nullptr) + { + pCP++; + strcpy(CP,pCP); + pCP = strstr(CP,"-"); + if (pCP != nullptr) + { + pCP[0] = 0x00; + m_ClientRTPPort = atoi(CP); + m_ClientRTCPPort = m_ClientRTPPort + 1; + }; + }; + }; + }; + + // Read everything up to the first space as the command name + bool parseSucceeded = false; + unsigned i; + for (i = 0; i < sizeof(CmdName)-1 && i < CurRequestSize; ++i) + { + char c = CurRequest[i]; + if (c == ' ' || c == '\t') + { + parseSucceeded = true; + break; + } + CmdName[i] = c; + } + CmdName[i] = '\0'; + if (!parseSucceeded) { + printf("failed to parse RTSP\n"); + return false; + } + + printf("RTSP received %s\n", CmdName); + + // find out the command type + if (strstr(CmdName,"OPTIONS") != nullptr) m_RtspCmdType = RTSP_OPTIONS; else + if (strstr(CmdName,"DESCRIBE") != nullptr) m_RtspCmdType = RTSP_DESCRIBE; else + if (strstr(CmdName,"SETUP") != nullptr) m_RtspCmdType = RTSP_SETUP; else + if (strstr(CmdName,"PLAY") != nullptr) m_RtspCmdType = RTSP_PLAY; else + if (strstr(CmdName,"TEARDOWN") != nullptr) m_RtspCmdType = RTSP_TEARDOWN; + + // check whether the request contains transport information (UDP or TCP) + if (m_RtspCmdType == RTSP_SETUP) + { + TmpPtr = strstr(CurRequest,"RTP/AVP/TCP"); + if (TmpPtr != nullptr) m_TcpTransport = true; else m_TcpTransport = false; + }; + + // Skip over the prefix of any "rtsp://" or "rtsp:/" URL that follows: + unsigned j = i+1; + while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t')) ++j; // skip over any additional white space + for (; (int)j < (int)(CurRequestSize-8); ++j) + { + if ((CurRequest[j] == 'r' || CurRequest[j] == 'R') && + (CurRequest[j+1] == 't' || CurRequest[j+1] == 'T') && + (CurRequest[j+2] == 's' || CurRequest[j+2] == 'S') && + (CurRequest[j+3] == 'p' || CurRequest[j+3] == 'P') && + CurRequest[j+4] == ':' && CurRequest[j+5] == '/') + { + j += 6; + if (CurRequest[j] == '/') + { // This is a "rtsp://" URL; skip over the host:port part that follows: + ++j; + unsigned uidx = 0; + while (j < CurRequestSize && CurRequest[j] != '/' && CurRequest[j] != ' ' && uidx < sizeof(m_URLHostPort) - 1) + { // extract the host:port part of the URL here + m_URLHostPort[uidx] = CurRequest[j]; + uidx++; + ++j; + }; + } + else --j; + i = j; + break; + } + } + + // Look for the URL suffix (before the following "RTSP/"): + parseSucceeded = false; + for (unsigned k = i+1; (int)k < (int)(CurRequestSize-5); ++k) + { + if (CurRequest[k] == 'R' && CurRequest[k+1] == 'T' && + CurRequest[k+2] == 'S' && CurRequest[k+3] == 'P' && + CurRequest[k+4] == '/') + { + while (--k >= i && CurRequest[k] == ' ') {} + unsigned k1 = k; + while (k1 > i && CurRequest[k1] != '/') --k1; + if (k - k1 + 1 > sizeof(m_URLSuffix)) return false; + unsigned n = 0, k2 = k1+1; + + while (k2 <= k) m_URLSuffix[n++] = CurRequest[k2++]; + m_URLSuffix[n] = '\0'; + + if (k1 - i > sizeof(m_URLPreSuffix)) return false; + n = 0; k2 = i + 1; + while (k2 <= k1 - 1) m_URLPreSuffix[n++] = CurRequest[k2++]; + m_URLPreSuffix[n] = '\0'; + i = k + 7; + parseSucceeded = true; + break; + } + } + if (!parseSucceeded) return false; + + // Look for "CSeq:", skip whitespace, then read everything up to the next \r or \n as 'CSeq': + parseSucceeded = false; + for (j = i; (int)j < (int)(CurRequestSize-5); ++j) + { + if (CurRequest[j] == 'C' && CurRequest[j+1] == 'S' && + CurRequest[j+2] == 'e' && CurRequest[j+3] == 'q' && + CurRequest[j+4] == ':') + { + j += 5; + while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t')) ++j; + unsigned n; + for (n = 0; n < sizeof(m_CSeq)-1 && j < CurRequestSize; ++n,++j) + { + char c = CurRequest[j]; + if (c == '\r' || c == '\n') + { + parseSucceeded = true; + break; + } + m_CSeq[n] = c; + } + m_CSeq[n] = '\0'; + break; + } + } + if (!parseSucceeded) return false; + + // Also: Look for "Content-Length:" (optional) + for (j = i; (int)j < (int)(CurRequestSize-15); ++j) + { + if (CurRequest[j] == 'C' && CurRequest[j+1] == 'o' && + CurRequest[j+2] == 'n' && CurRequest[j+3] == 't' && + CurRequest[j+4] == 'e' && CurRequest[j+5] == 'n' && + CurRequest[j+6] == 't' && CurRequest[j+7] == '-' && + (CurRequest[j+8] == 'L' || CurRequest[j+8] == 'l') && + CurRequest[j+9] == 'e' && CurRequest[j+10] == 'n' && + CurRequest[j+11] == 'g' && CurRequest[j+12] == 't' && + CurRequest[j+13] == 'h' && CurRequest[j+14] == ':') + { + j += 15; + while (j < CurRequestSize && (CurRequest[j] == ' ' || CurRequest[j] == '\t')) ++j; + unsigned num; + if (sscanf(&CurRequest[j], "%u", &num) == 1) m_ContentLength = num; + } + } + return true; +}; + +RTSP_CMD_TYPES CRtspSession::Handle_RtspRequest(char const * aRequest, unsigned aRequestSize) +{ + if (ParseRtspRequest(aRequest,aRequestSize)) + { + switch (m_RtspCmdType) + { + case RTSP_OPTIONS: { Handle_RtspOPTION(); break; }; + case RTSP_DESCRIBE: { Handle_RtspDESCRIBE(); break; }; + case RTSP_SETUP: { Handle_RtspSETUP(); break; }; + case RTSP_PLAY: { Handle_RtspPLAY(); break; }; + default: {}; + }; + }; + return m_RtspCmdType; +}; + +void CRtspSession::Handle_RtspOPTION() +{ + static char Response[1024]; // Note: we assume single threaded, this large buf we keep off of the tiny stack + + snprintf(Response,sizeof(Response), + "RTSP/1.0 200 OK\r\nCSeq: %s\r\n" + "Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n\r\n",m_CSeq); + + socketsend(m_RtspClient,Response,strlen(Response)); +} + +void CRtspSession::Handle_RtspDESCRIBE() +{ + static char Response[1024]; // Note: we assume single threaded, this large buf we keep off of the tiny stack + static char SDPBuf[1024]; + static char URLBuf[1024]; + + // check whether we know a stream with the URL which is requested + m_StreamID = -1; // invalid URL + if ((strcmp(m_URLPreSuffix,"mjpeg") == 0) && (strcmp(m_URLSuffix,"1") == 0)) m_StreamID = 0; else + if ((strcmp(m_URLPreSuffix,"mjpeg") == 0) && (strcmp(m_URLSuffix,"2") == 0)) m_StreamID = 1; + if (m_StreamID == -1) + { // Stream not available + snprintf(Response,sizeof(Response), + "RTSP/1.0 404 Stream Not Found\r\nCSeq: %s\r\n%s\r\n", + m_CSeq, + DateHeader()); + + socketsend(m_RtspClient,Response,strlen(Response)); + return; + }; + + // simulate DESCRIBE server response + static char OBuf[256]; + char * ColonPtr; + strcpy(OBuf,m_URLHostPort); + ColonPtr = strstr(OBuf,":"); + if (ColonPtr != nullptr) ColonPtr[0] = 0x00; + + snprintf(SDPBuf,sizeof(SDPBuf), + "v=0\r\n" + "o=- %d 1 IN IP4 %s\r\n" + "s=\r\n" + "t=0 0\r\n" // start / stop - 0 -> unbounded and permanent session + "m=video 0 RTP/AVP 26\r\n" // currently we just handle UDP sessions + // "a=x-dimensions: 640,480\r\n" + "c=IN IP4 0.0.0.0\r\n", + rand(), + OBuf); + char StreamName[64]; + switch (m_StreamID) + { + case 0: strcpy(StreamName,"mjpeg/1"); break; + case 1: strcpy(StreamName,"mjpeg/2"); break; + }; + snprintf(URLBuf,sizeof(URLBuf), + "rtsp://%s/%s", + m_URLHostPort, + StreamName); + snprintf(Response,sizeof(Response), + "RTSP/1.0 200 OK\r\nCSeq: %s\r\n" + "%s\r\n" + "Content-Base: %s/\r\n" + "Content-Type: application/sdp\r\n" + "Content-Length: %d\r\n\r\n" + "%s", + m_CSeq, + DateHeader(), + URLBuf, + (int) strlen(SDPBuf), + SDPBuf); + + socketsend(m_RtspClient,Response,strlen(Response)); +} + +void CRtspSession::Handle_RtspSETUP() +{ + static char Response[1024]; + static char Transport[255]; + + // init RTP streamer transport type (UDP or TCP) and ports for UDP transport + m_Streamer->InitTransport(m_ClientRTPPort,m_ClientRTCPPort,m_TcpTransport); + + // simulate SETUP server response + if (m_TcpTransport) + snprintf(Transport,sizeof(Transport),"RTP/AVP/TCP;unicast;interleaved=0-1"); + else + snprintf(Transport,sizeof(Transport), + "RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_port=%i-%i;server_port=%i-%i", + m_ClientRTPPort, + m_ClientRTCPPort, + m_Streamer->GetRtpServerPort(), + m_Streamer->GetRtcpServerPort()); + snprintf(Response,sizeof(Response), + "RTSP/1.0 200 OK\r\nCSeq: %s\r\n" + "%s\r\n" + "Transport: %s\r\n" + "Session: %i\r\n\r\n", + m_CSeq, + DateHeader(), + Transport, + m_RtspSessionID); + + socketsend(m_RtspClient,Response,strlen(Response)); +} + +void CRtspSession::Handle_RtspPLAY() +{ + static char Response[1024]; + + // simulate SETUP server response + snprintf(Response,sizeof(Response), + "RTSP/1.0 200 OK\r\nCSeq: %s\r\n" + "%s\r\n" + "Range: npt=0.000-\r\n" + "Session: %i\r\n" + "RTP-Info: url=rtsp://127.0.0.1:8554/mjpeg/1/track1\r\n\r\n", + m_CSeq, + DateHeader(), + m_RtspSessionID); + + socketsend(m_RtspClient,Response,strlen(Response)); +} + +char const * CRtspSession::DateHeader() +{ + static char buf[200]; + time_t tt = time(NULL); + strftime(buf, sizeof buf, "Date: %a, %b %d %Y %H:%M:%S GMT", gmtime(&tt)); + return buf; +} + +int CRtspSession::GetStreamID() +{ + return m_StreamID; +}; + + + +/** + Read from our socket, parsing commands as possible. + */ +bool CRtspSession::handleRequests(uint32_t readTimeoutMs) +{ + if(m_stopped) + return false; // Already closed down + + static char RecvBuf[RTSP_BUFFER_SIZE]; // Note: we assume single threaded, this large buf we keep off of the tiny stack + + memset(RecvBuf,0x00,sizeof(RecvBuf)); + int res = socketread(m_RtspClient,RecvBuf,sizeof(RecvBuf), readTimeoutMs); + if(res > 0) { + // we filter away everything which seems not to be an RTSP command: O-ption, D-escribe, S-etup, P-lay, T-eardown + if ((RecvBuf[0] == 'O') || (RecvBuf[0] == 'D') || (RecvBuf[0] == 'S') || (RecvBuf[0] == 'P') || (RecvBuf[0] == 'T')) + { + RTSP_CMD_TYPES C = Handle_RtspRequest(RecvBuf,res); + if (C == RTSP_PLAY) + m_streaming = true; + else if (C == RTSP_TEARDOWN) + m_stopped = true; + } + return true; + } + else if(res == 0) { + printf("client closed socket, exiting\n"); + m_stopped = true; + return true; + } + else { + // Timeout on read + + return false; + } +} + +void CRtspSession::broadcastCurrentFrame(uint32_t curMsec) { + // Send a frame + if (m_streaming && !m_stopped) { + // printf("serving a frame\n"); + m_Streamer->streamImage(curMsec); + } +} diff --git a/lib/libesp32/rtsp/CRtspSession.h b/lib/libesp32/rtsp/CRtspSession.h new file mode 100755 index 000000000..298bd6a15 --- /dev/null +++ b/lib/libesp32/rtsp/CRtspSession.h @@ -0,0 +1,73 @@ +#pragma once + +#include "CStreamer.h" +#include "platglue.h" + +// supported command types +enum RTSP_CMD_TYPES +{ + RTSP_OPTIONS, + RTSP_DESCRIBE, + RTSP_SETUP, + RTSP_PLAY, + RTSP_TEARDOWN, + RTSP_UNKNOWN +}; + +#define RTSP_BUFFER_SIZE 10000 // for incoming requests, and outgoing responses +#define RTSP_PARAM_STRING_MAX 200 +#define MAX_HOSTNAME_LEN 256 + +class CRtspSession +{ +public: + CRtspSession(SOCKET aRtspClient, CStreamer * aStreamer); + ~CRtspSession(); + + RTSP_CMD_TYPES Handle_RtspRequest(char const * aRequest, unsigned aRequestSize); + int GetStreamID(); + + /** + Read from our socket, parsing commands as possible. + + return false if the read timed out + */ + bool handleRequests(uint32_t readTimeoutMs); + + /** + broadcast a current frame + */ + void broadcastCurrentFrame(uint32_t curMsec); + + bool m_streaming; + bool m_stopped; + +private: + void Init(); + bool ParseRtspRequest(char const * aRequest, unsigned aRequestSize); + char const * DateHeader(); + + // RTSP request command handlers + void Handle_RtspOPTION(); + void Handle_RtspDESCRIBE(); + void Handle_RtspSETUP(); + void Handle_RtspPLAY(); + + // global session state parameters + int m_RtspSessionID; + SOCKET m_RtspClient; // RTSP socket of that session + int m_StreamID; // number of simulated stream of that session + IPPORT m_ClientRTPPort; // client port for UDP based RTP transport + IPPORT m_ClientRTCPPort; // client port for UDP based RTCP transport + bool m_TcpTransport; // if Tcp based streaming was activated + CStreamer * m_Streamer; // the UDP or TCP streamer of that session + + // parameters of the last received RTSP request + + RTSP_CMD_TYPES m_RtspCmdType; // command type (if any) of the current request + char m_URLPreSuffix[RTSP_PARAM_STRING_MAX]; // stream name pre suffix + char m_URLSuffix[RTSP_PARAM_STRING_MAX]; // stream name suffix + char m_CSeq[RTSP_PARAM_STRING_MAX]; // RTSP command sequence number + char m_URLHostPort[MAX_HOSTNAME_LEN]; // host:port part of the URL + unsigned m_ContentLength; // SDP string size +}; diff --git a/lib/libesp32/rtsp/CStreamer.cpp b/lib/libesp32/rtsp/CStreamer.cpp new file mode 100755 index 000000000..26322c0fa --- /dev/null +++ b/lib/libesp32/rtsp/CStreamer.cpp @@ -0,0 +1,350 @@ +#include "CStreamer.h" + +#include + +//#define STREAM_DEBUG + +CStreamer::CStreamer(SOCKET aClient, u_short width, u_short height) : m_Client(aClient) +{ + printf("Creating TSP streamer\n"); + m_RtpServerPort = 0; + m_RtcpServerPort = 0; + m_RtpClientPort = 0; + m_RtcpClientPort = 0; + + m_SequenceNumber = 0; + m_Timestamp = 0; + m_SendIdx = 0; + m_TCPTransport = false; + + m_RtpSocket = NULLSOCKET; + m_RtcpSocket = NULLSOCKET; + + m_width = width; + m_height = height; + m_prevMsec = 0; +}; + +CStreamer::~CStreamer() +{ + udpsocketclose(m_RtpSocket); + udpsocketclose(m_RtcpSocket); +}; + +int CStreamer::SendRtpPacket(unsigned const char * jpeg, int jpegLen, int fragmentOffset, BufPtr quant0tbl, BufPtr quant1tbl) +{ +#define KRtpHeaderSize 12 // size of the RTP header +#define KJpegHeaderSize 8 // size of the special JPEG payload header + +#define MAX_FRAGMENT_SIZE 1100 // FIXME, pick more carefully + int fragmentLen = MAX_FRAGMENT_SIZE; + if(fragmentLen + fragmentOffset > jpegLen) // Shrink last fragment if needed + fragmentLen = jpegLen - fragmentOffset; + + bool isLastFragment = (fragmentOffset + fragmentLen) == jpegLen; + + // Do we have custom quant tables? If so include them per RFC + + bool includeQuantTbl = quant0tbl && quant1tbl && fragmentOffset == 0; + uint8_t q = includeQuantTbl ? 128 : 0x5e; + + static char RtpBuf[2048]; // Note: we assume single threaded, this large buf we keep off of the tiny stack + int RtpPacketSize = fragmentLen + KRtpHeaderSize + KJpegHeaderSize + (includeQuantTbl ? (4 + 64 * 2) : 0); + + memset(RtpBuf,0x00,sizeof(RtpBuf)); + // Prepare the first 4 byte of the packet. This is the Rtp over Rtsp header in case of TCP based transport + RtpBuf[0] = '$'; // magic number + RtpBuf[1] = 0; // number of multiplexed subchannel on RTPS connection - here the RTP channel + RtpBuf[2] = (RtpPacketSize & 0x0000FF00) >> 8; + RtpBuf[3] = (RtpPacketSize & 0x000000FF); + // Prepare the 12 byte RTP header + RtpBuf[4] = 0x80; // RTP version + RtpBuf[5] = 0x1a | (isLastFragment ? 0x80 : 0x00); // JPEG payload (26) and marker bit + RtpBuf[7] = m_SequenceNumber & 0x0FF; // each packet is counted with a sequence counter + RtpBuf[6] = m_SequenceNumber >> 8; + RtpBuf[8] = (m_Timestamp & 0xFF000000) >> 24; // each image gets a timestamp + RtpBuf[9] = (m_Timestamp & 0x00FF0000) >> 16; + RtpBuf[10] = (m_Timestamp & 0x0000FF00) >> 8; + RtpBuf[11] = (m_Timestamp & 0x000000FF); + RtpBuf[12] = 0x13; // 4 byte SSRC (sychronization source identifier) + RtpBuf[13] = 0xf9; // we just an arbitrary number here to keep it simple + RtpBuf[14] = 0x7e; + RtpBuf[15] = 0x67; + + // Prepare the 8 byte payload JPEG header + RtpBuf[16] = 0x00; // type specific + RtpBuf[17] = (fragmentOffset & 0x00FF0000) >> 16; // 3 byte fragmentation offset for fragmented images + RtpBuf[18] = (fragmentOffset & 0x0000FF00) >> 8; + RtpBuf[19] = (fragmentOffset & 0x000000FF); + + /* These sampling factors indicate that the chrominance components of + type 0 video is downsampled horizontally by 2 (often called 4:2:2) + while the chrominance components of type 1 video are downsampled both + horizontally and vertically by 2 (often called 4:2:0). */ + RtpBuf[20] = 0x00; // type (fixme might be wrong for camera data) https://tools.ietf.org/html/rfc2435 + RtpBuf[21] = q; // quality scale factor was 0x5e + RtpBuf[22] = m_width / 8; // width / 8 + RtpBuf[23] = m_height / 8; // height / 8 + + int headerLen = 24; // Inlcuding jpeg header but not qant table header + if(includeQuantTbl) { // we need a quant header - but only in first packet of the frame + //printf("inserting quanttbl\n"); + RtpBuf[24] = 0; // MBZ + RtpBuf[25] = 0; // 8 bit precision + RtpBuf[26] = 0; // MSB of lentgh + + int numQantBytes = 64; // Two 64 byte tables + RtpBuf[27] = 2 * numQantBytes; // LSB of length + + headerLen += 4; + + memcpy(RtpBuf + headerLen, quant0tbl, numQantBytes); + headerLen += numQantBytes; + + memcpy(RtpBuf + headerLen, quant1tbl, numQantBytes); + headerLen += numQantBytes; + } + // printf("Sending timestamp %d, seq %d, fragoff %d, fraglen %d, jpegLen %d\n", m_Timestamp, m_SequenceNumber, fragmentOffset, fragmentLen, jpegLen); + + // append the JPEG scan data to the RTP buffer + memcpy(RtpBuf + headerLen,jpeg + fragmentOffset, fragmentLen); + fragmentOffset += fragmentLen; + + m_SequenceNumber++; // prepare the packet counter for the next packet + + IPADDRESS otherip; + IPPORT otherport; + socketpeeraddr(m_Client, &otherip, &otherport); + + // RTP marker bit must be set on last fragment + if (m_TCPTransport) // RTP over RTSP - we send the buffer + 4 byte additional header + socketsend(m_Client,RtpBuf,RtpPacketSize + 4); + else // UDP - we send just the buffer by skipping the 4 byte RTP over RTSP header + udpsocketsend(m_RtpSocket,&RtpBuf[4],RtpPacketSize, otherip, m_RtpClientPort); + + return isLastFragment ? 0 : fragmentOffset; +}; + +void CStreamer::InitTransport(u_short aRtpPort, u_short aRtcpPort, bool TCP) +{ + m_RtpClientPort = aRtpPort; + m_RtcpClientPort = aRtcpPort; + m_TCPTransport = TCP; + + if (!m_TCPTransport) + { // allocate port pairs for RTP/RTCP ports in UDP transport mode + for (u_short P = 6970; P < 0xFFFE; P += 2) + { + m_RtpSocket = udpsocketcreate(P); + if (m_RtpSocket) + { // Rtp socket was bound successfully. Lets try to bind the consecutive Rtsp socket + m_RtcpSocket = udpsocketcreate(P + 1); + if (m_RtcpSocket) + { + m_RtpServerPort = P; + m_RtcpServerPort = P+1; + break; + } + else + { + udpsocketclose(m_RtpSocket); + udpsocketclose(m_RtcpSocket); + }; + } + }; + }; +}; + +u_short CStreamer::GetRtpServerPort() +{ + return m_RtpServerPort; +}; + +u_short CStreamer::GetRtcpServerPort() +{ + return m_RtcpServerPort; +}; + +void CStreamer::streamFrame(unsigned const char *data, uint32_t dataLen, uint32_t curMsec) +{ + if(m_prevMsec == 0) // first frame init our timestamp + m_prevMsec = curMsec; + + // compute deltat (being careful to handle clock rollover with a little lie) + uint32_t deltams = (curMsec >= m_prevMsec) ? curMsec - m_prevMsec : 100; + m_prevMsec = curMsec; + + // locate quant tables if possible + BufPtr qtable0, qtable1; + + if (!decodeJPEGfile(&data, &dataLen, &qtable0, &qtable1)) { +#ifdef STREAM_DEBUG + printf("can't decode jpeg data\n"); +#endif + return; + } + + int offset = 0; + do { + offset = SendRtpPacket(data, dataLen, offset, qtable0, qtable1); + } while(offset != 0); + + // Increment ONLY after a full frame + uint32_t units = 90000; // Hz per RFC 2435 + m_Timestamp += (units * deltams / 1000); // fixed timestamp increment for a frame rate of 25fps + + m_SendIdx++; + if (m_SendIdx > 1) m_SendIdx = 0; + +#ifdef STREAM_DEBUG + printf("frame sent\n"); +#endif +}; + +#include + +// search for a particular JPEG marker, moves *start to just after that marker +// This function fixes up the provided start ptr to point to the +// actual JPEG stream data and returns the number of bytes skipped +// APP0 e0 +// DQT db +// DQT db +// DHT c4 +// DHT c4 +// DHT c4 +// DHT c4 +// SOF0 c0 baseline (not progressive) 3 color 0x01 Y, 0x21 2h1v, 0x00 tbl0 +// - 0x02 Cb, 0x11 1h1v, 0x01 tbl1 - 0x03 Cr, 0x11 1h1v, 0x01 tbl1 +// therefore 4:2:2, with two separate quant tables (0 and 1) +// SOS da +// EOI d9 (no need to strip data after this RFC says client will discard) +bool findJPEGheader(BufPtr *start, uint32_t *len, uint8_t marker) { + // per https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format + unsigned const char *bytes = *start; + + // kinda skanky, will break if unlucky and the headers inxlucde 0xffda + // might fall off array if jpeg is invalid + // FIXME - return false instead + while(bytes - *start < *len) { + uint8_t framing = *bytes++; // better be 0xff + if(framing != 0xff) { + printf("malformed jpeg, framing=%x\n", framing); + return false; + } + uint8_t typecode = *bytes++; + if(typecode == marker) { + unsigned skipped = bytes - *start; + //printf("found marker 0x%x, skipped %d\n", marker, skipped); + + *start = bytes; + + // shrink len for the bytes we just skipped + *len -= skipped; + + return true; + } + else { + // not the section we were looking for, skip the entire section + switch(typecode) { + case 0xd8: // start of image + { + break; // no data to skip + } + case 0xe0: // app0 + case 0xdb: // dqt + case 0xc4: // dht + case 0xc0: // sof0 + case 0xda: // sos + { + // standard format section with 2 bytes for len. skip that many bytes + uint32_t len = bytes[0] * 256 + bytes[1]; + //printf("skipping section 0x%x, %d bytes\n", typecode, len); + bytes += len; + break; + } + default: + printf("unexpected jpeg typecode 0x%x\n", typecode); + break; + } + } + } + + printf("failed to find jpeg marker 0x%x", marker); + return false; +} + +// the scan data uses byte stuffing to guarantee anything that starts with 0xff +// followed by something not zero, is a new section. Look for that marker and return the ptr +// pointing there +void skipScanBytes(BufPtr *start) { + BufPtr bytes = *start; + + while(true) { // FIXME, check against length + while(*bytes++ != 0xff); + if(*bytes++ != 0) { + *start = bytes - 2; // back up to the 0xff marker we just found + return; + } + } +} +void nextJpegBlock(BufPtr *bytes) { + uint32_t len = (*bytes)[0] * 256 + (*bytes)[1]; + //printf("going to next jpeg block %d bytes\n", len); + *bytes += len; +} + +// When JPEG is stored as a file it is wrapped in a container +// This function fixes up the provided start ptr to point to the +// actual JPEG stream data and returns the number of bytes skipped +bool decodeJPEGfile(BufPtr *start, uint32_t *len, BufPtr *qtable0, BufPtr *qtable1) { + // per https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format + unsigned const char *bytes = *start; + + if(!findJPEGheader(&bytes, len, 0xd8)) // better at least look like a jpeg file + return false; // FAILED! + + // Look for quant tables if they are present + *qtable0 = NULL; + *qtable1 = NULL; + BufPtr quantstart = *start; + uint32_t quantlen = *len; + if(!findJPEGheader(&quantstart, &quantlen, 0xdb)) { + printf("error can't find quant table 0\n"); + } + else { + // printf("found quant table %x\n", quantstart[2]); + + *qtable0 = quantstart + 3; // 3 bytes of header skipped + nextJpegBlock(&quantstart); + if(!findJPEGheader(&quantstart, &quantlen, 0xdb)) { + printf("error can't find quant table 1\n"); + } + else { + // printf("found quant table %x\n", quantstart[2]); + } + *qtable1 = quantstart + 3; + nextJpegBlock(&quantstart); + } + + if(!findJPEGheader(start, len, 0xda)) + return false; // FAILED! + + // Skip the header bytes of the SOS marker FIXME why doesn't this work? + uint32_t soslen = (*start)[0] * 256 + (*start)[1]; + *start += soslen; + *len -= soslen; + + // start scanning the data portion of the scan to find the end marker + BufPtr endmarkerptr = *start; + uint32_t endlen = *len; + + skipScanBytes(&endmarkerptr); + if(!findJPEGheader(&endmarkerptr, &endlen, 0xd9)) + return false; // FAILED! + + // endlen must now be the # of bytes between the start of our scan and + // the end marker, tell the caller to ignore bytes afterwards + *len = endmarkerptr - *start; + + return true; +} diff --git a/lib/libesp32/rtsp/CStreamer.h b/lib/libesp32/rtsp/CStreamer.h new file mode 100755 index 000000000..78d112b5b --- /dev/null +++ b/lib/libesp32/rtsp/CStreamer.h @@ -0,0 +1,56 @@ +#pragma once + +#include "platglue.h" + +typedef unsigned const char *BufPtr; + +class CStreamer +{ +public: + CStreamer(SOCKET aClient, u_short width, u_short height); + virtual ~CStreamer(); + + void InitTransport(u_short aRtpPort, u_short aRtcpPort, bool TCP); + u_short GetRtpServerPort(); + u_short GetRtcpServerPort(); + + virtual void streamImage(uint32_t curMsec) = 0; // send a new image to the client +protected: + + void streamFrame(unsigned const char *data, uint32_t dataLen, uint32_t curMsec); + +private: + int SendRtpPacket(unsigned const char *jpeg, int jpegLen, int fragmentOffset, BufPtr quant0tbl = NULL, BufPtr quant1tbl = NULL);// returns new fragmentOffset or 0 if finished with frame + + UDPSOCKET m_RtpSocket; // RTP socket for streaming RTP packets to client + UDPSOCKET m_RtcpSocket; // RTCP socket for sending/receiving RTCP packages + + uint16_t m_RtpClientPort; // RTP receiver port on client (in host byte order!) + uint16_t m_RtcpClientPort; // RTCP receiver port on client (in host byte order!) + IPPORT m_RtpServerPort; // RTP sender port on server + IPPORT m_RtcpServerPort; // RTCP sender port on server + + u_short m_SequenceNumber; + uint32_t m_Timestamp; + int m_SendIdx; + bool m_TCPTransport; + SOCKET m_Client; + uint32_t m_prevMsec; + + u_short m_width; // image data info + u_short m_height; +}; + + + +// When JPEG is stored as a file it is wrapped in a container +// This function fixes up the provided start ptr to point to the +// actual JPEG stream data and returns the number of bytes skipped +// returns true if the file seems to be valid jpeg +// If quant tables can be found they will be stored in qtable0/1 +bool decodeJPEGfile(BufPtr *start, uint32_t *len, BufPtr *qtable0, BufPtr *qtable1); +bool findJPEGheader(BufPtr *start, uint32_t *len, uint8_t marker); + +// Given a jpeg ptr pointing to a pair of length bytes, advance the pointer to +// the next 0xff marker byte +void nextJpegBlock(BufPtr *start); diff --git a/lib/libesp32/rtsp/JPEGSamples.cpp b/lib/libesp32/rtsp/JPEGSamples.cpp new file mode 100755 index 000000000..12def78e2 --- /dev/null +++ b/lib/libesp32/rtsp/JPEGSamples.cpp @@ -0,0 +1,3327 @@ +#include "JPEGSamples.h" + +#ifdef INCLUDE_SIMDATA +// APP0 e0 +// DQT db +// DQT db +// DHT c4 +// DHT c4 +// DHT c4 +// DHT c4 +// SOF0 c0 baseline (not progressive) 3 color 0x01 Y, 0x21 2h1v, 0x00 tbl0 +// - 0x02 Cb, 0x11 1h1v, 0x01 tbl1 - 0x03 Cr, 0x11 1h1v, 0x01 tbl1 +// therefore 4:2:2, with two separate quant tables (0 and 1) +// SOS da +// EOI d9 (no need to strip data after this RFC says client will discard) +unsigned const char capture_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, + 0x00, 0x0f, 0x0a, 0x0b, 0x0d, 0x0b, 0x09, 0x0f, 0x0d, 0x0c, 0x0d, 0x11, + 0x10, 0x0f, 0x12, 0x17, 0x26, 0x18, 0x17, 0x15, 0x15, 0x17, 0x2e, 0x21, + 0x23, 0x1b, 0x26, 0x36, 0x30, 0x39, 0x38, 0x35, 0x30, 0x35, 0x34, 0x3c, + 0x44, 0x56, 0x49, 0x3c, 0x40, 0x52, 0x41, 0x34, 0x35, 0x4b, 0x66, 0x4c, + 0x52, 0x59, 0x5c, 0x61, 0x62, 0x61, 0x3a, 0x48, 0x6a, 0x71, 0x69, 0x5e, + 0x71, 0x56, 0x5f, 0x61, 0x5d, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x10, 0x11, + 0x11, 0x17, 0x14, 0x17, 0x2c, 0x18, 0x18, 0x2c, 0x5d, 0x3e, 0x35, 0x3e, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0xff, 0xc4, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, + 0xc4, 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, + 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, + 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, + 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, + 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, + 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, + 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, + 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, + 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, + 0xf9, 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, + 0xc4, 0x00, 0xb5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, + 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, + 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, + 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, + 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, + 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, + 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, + 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, + 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, + 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, + 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, + 0xf9, 0xfa, 0xff, 0xc0, 0x00, 0x11, 0x08, 0x02, 0x58, 0x03, 0x20, 0x03, + 0x01, 0x21, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xda, 0x00, + 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xc7, + 0x10, 0xd3, 0xa3, 0x84, 0xaf, 0x34, 0xda, 0x08, 0x9a, 0xe3, 0x1b, 0x46, + 0x29, 0xc9, 0xf7, 0xc5, 0x4f, 0x40, 0x34, 0xd3, 0xa5, 0x3a, 0x84, 0x20, + 0xa5, 0xa6, 0x20, 0xa2, 0x81, 0x85, 0x14, 0x08, 0x28, 0xa0, 0x62, 0xd1, + 0x40, 0x05, 0x14, 0x00, 0x94, 0x50, 0x01, 0x45, 0x03, 0x0a, 0x28, 0x10, + 0x52, 0x50, 0x01, 0x49, 0x40, 0xc2, 0x8a, 0x00, 0x29, 0x28, 0x01, 0x28, + 0xa0, 0x02, 0x92, 0x80, 0x12, 0x8a, 0x00, 0x4a, 0x4a, 0x00, 0x29, 0x28, + 0x01, 0x29, 0x28, 0x01, 0x28, 0xa0, 0x04, 0xa4, 0xa0, 0x02, 0x92, 0x80, + 0x12, 0x92, 0x80, 0x12, 0x8a, 0x60, 0x25, 0x25, 0x02, 0x12, 0x92, 0x80, + 0x12, 0x8a, 0x00, 0x4a, 0x4a, 0x40, 0x14, 0x50, 0x02, 0x52, 0x53, 0x10, + 0x94, 0x94, 0x08, 0x4a, 0x28, 0x10, 0x94, 0x94, 0x00, 0x52, 0x50, 0x02, + 0x52, 0x50, 0x02, 0x51, 0x40, 0x09, 0x49, 0x40, 0x09, 0x4f, 0x4e, 0x94, + 0x08, 0x75, 0x15, 0x42, 0x12, 0x8a, 0x42, 0x12, 0x92, 0x98, 0x09, 0x45, + 0x00, 0x14, 0x94, 0x08, 0x28, 0xa4, 0x02, 0x52, 0x53, 0x10, 0x52, 0x52, + 0x00, 0xa4, 0xa0, 0x90, 0x13, 0x2d, 0x4a, 0xb2, 0x27, 0xa8, 0xa9, 0x67, + 0x51, 0x76, 0x06, 0xdd, 0x06, 0x7d, 0xe9, 0xd4, 0x90, 0xcd, 0x28, 0x4e, + 0x56, 0xa5, 0xa1, 0x08, 0x29, 0x69, 0x88, 0x28, 0xa0, 0x02, 0x8a, 0x00, + 0x28, 0xa0, 0x61, 0x4b, 0x40, 0x09, 0x4b, 0x40, 0x84, 0xa2, 0x81, 0x85, + 0x14, 0x00, 0x51, 0x40, 0xc2, 0x92, 0x81, 0x05, 0x14, 0x00, 0x94, 0x50, + 0x01, 0x49, 0x40, 0x05, 0x25, 0x03, 0x0a, 0x4a, 0x00, 0x29, 0x28, 0x01, + 0x29, 0x28, 0x00, 0xa4, 0xa0, 0x04, 0xa2, 0x80, 0x12, 0x92, 0x81, 0x09, + 0x45, 0x03, 0x12, 0x92, 0x80, 0x12, 0x8a, 0x00, 0x4a, 0x4a, 0x62, 0x12, + 0x92, 0x90, 0x09, 0x49, 0x40, 0x09, 0x49, 0x40, 0x05, 0x25, 0x02, 0x12, + 0x8a, 0x60, 0x25, 0x25, 0x00, 0x14, 0x94, 0x08, 0x29, 0xb4, 0x00, 0x52, + 0x50, 0x21, 0x29, 0x28, 0x00, 0xa4, 0xa0, 0x04, 0xa2, 0x98, 0x86, 0xd1, + 0x48, 0x04, 0xa7, 0xa5, 0x00, 0x3a, 0x90, 0xd5, 0x12, 0x25, 0x25, 0x00, + 0x14, 0x50, 0x02, 0x51, 0x40, 0x84, 0xa4, 0xa0, 0x02, 0x8a, 0x00, 0x4a, + 0x29, 0x08, 0x29, 0x28, 0x01, 0x29, 0x29, 0x88, 0xcb, 0xf3, 0x4d, 0x28, + 0x90, 0xd2, 0xb1, 0xd4, 0x6d, 0xe8, 0xf2, 0x6f, 0xb6, 0xdb, 0xe9, 0x93, + 0xfa, 0xd5, 0xda, 0xce, 0x23, 0x65, 0xeb, 0x43, 0x94, 0xab, 0x14, 0xd0, + 0x98, 0xb4, 0x53, 0x24, 0x28, 0xa0, 0x05, 0xa2, 0x80, 0x0a, 0x28, 0x18, + 0x51, 0x40, 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, 0x51, 0x40, + 0x09, 0x45, 0x00, 0x14, 0x94, 0x0c, 0x28, 0xa0, 0x02, 0x92, 0x80, 0x0a, + 0x4a, 0x00, 0x29, 0x28, 0x00, 0xa4, 0xa0, 0x04, 0xa2, 0x80, 0x12, 0x8a, + 0x00, 0x4a, 0x4a, 0x00, 0x4a, 0x4a, 0x00, 0x4a, 0x28, 0x01, 0x29, 0x28, + 0x10, 0x94, 0x50, 0x31, 0x29, 0x28, 0x10, 0x94, 0x94, 0x0c, 0x4a, 0x4a, + 0x62, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x0a, 0x4a, 0x04, 0x14, 0x94, + 0x00, 0x53, 0x68, 0x10, 0x52, 0x50, 0x02, 0x51, 0x40, 0x86, 0xd1, 0x40, + 0x09, 0x49, 0x4c, 0x04, 0xa2, 0x80, 0x12, 0x92, 0x81, 0x09, 0x4f, 0x4a, + 0x40, 0x3a, 0x9b, 0x56, 0x48, 0x52, 0x50, 0x01, 0x45, 0x20, 0x0a, 0x29, + 0x08, 0x4a, 0x4a, 0x60, 0x25, 0x14, 0x80, 0x4a, 0x29, 0x92, 0x14, 0x94, + 0x80, 0x4a, 0x29, 0x8c, 0xc4, 0xcd, 0x28, 0xe9, 0x53, 0x63, 0xa4, 0xd7, + 0xd0, 0x5f, 0xe7, 0x91, 0x7f, 0xd9, 0xfe, 0xb5, 0xad, 0x59, 0xc4, 0xa9, + 0x97, 0x2c, 0xcf, 0x6a, 0xb9, 0x4d, 0x12, 0x14, 0xb5, 0x42, 0x0a, 0x28, + 0x00, 0xa2, 0x80, 0x16, 0x8a, 0x00, 0x28, 0xa0, 0x41, 0x45, 0x00, 0x14, + 0x50, 0x30, 0xa4, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x92, 0x81, + 0x85, 0x14, 0x00, 0x94, 0x50, 0x01, 0x49, 0x40, 0x05, 0x25, 0x00, 0x14, + 0x94, 0x00, 0x52, 0x50, 0x02, 0x52, 0x50, 0x01, 0x49, 0x40, 0x09, 0x49, + 0x40, 0x09, 0x49, 0x40, 0x05, 0x25, 0x00, 0x25, 0x14, 0x00, 0x94, 0x94, + 0x00, 0x94, 0x94, 0x00, 0x94, 0x94, 0xc4, 0x25, 0x25, 0x20, 0x12, 0x92, + 0x80, 0x12, 0x92, 0x80, 0x0a, 0x29, 0x80, 0x94, 0x94, 0x08, 0x29, 0x29, + 0x08, 0x6d, 0x15, 0x40, 0x25, 0x25, 0x21, 0x09, 0x45, 0x20, 0x12, 0x92, + 0x81, 0x09, 0x49, 0x4c, 0x02, 0x9c, 0x94, 0x00, 0xfa, 0x69, 0xaa, 0x24, + 0x4a, 0x4a, 0x00, 0x29, 0x68, 0x01, 0x28, 0xa4, 0x21, 0x28, 0xa6, 0x02, + 0x52, 0x52, 0x00, 0xa2, 0x81, 0x09, 0x45, 0x31, 0x09, 0x4d, 0x35, 0x43, + 0x30, 0xa9, 0xea, 0x6a, 0x2c, 0x74, 0x9a, 0x3a, 0x3b, 0xe2, 0xf6, 0x25, + 0xfe, 0xf3, 0x62, 0xb7, 0xab, 0x3e, 0xa3, 0x96, 0xc4, 0xf6, 0x87, 0xe7, + 0xad, 0x01, 0x42, 0x10, 0xb4, 0x55, 0x08, 0x5a, 0x28, 0x10, 0x51, 0x40, + 0x0b, 0x49, 0x40, 0xc5, 0xa2, 0x98, 0x05, 0x14, 0x80, 0x29, 0x28, 0x00, + 0xa2, 0x80, 0x0a, 0x28, 0x00, 0xa2, 0x80, 0x0a, 0x4a, 0x06, 0x14, 0x50, + 0x02, 0x51, 0x40, 0x05, 0x25, 0x00, 0x14, 0x94, 0x00, 0x52, 0x50, 0x01, + 0x49, 0x40, 0x09, 0x45, 0x00, 0x25, 0x25, 0x00, 0x25, 0x25, 0x00, 0x14, + 0x94, 0x00, 0x94, 0x94, 0x00, 0x94, 0x50, 0x02, 0x52, 0x50, 0x21, 0x29, + 0x28, 0x01, 0x29, 0xb4, 0x00, 0x52, 0x50, 0x21, 0x29, 0x28, 0x01, 0x29, + 0x29, 0x80, 0x94, 0x52, 0x00, 0xa4, 0xa6, 0x21, 0x29, 0x28, 0x01, 0x29, + 0x28, 0x00, 0xa4, 0x34, 0x08, 0x4a, 0x4a, 0x04, 0x25, 0x14, 0x00, 0xda, + 0x28, 0x01, 0x29, 0xcb, 0x40, 0x0f, 0xa4, 0xab, 0x20, 0x4a, 0x4a, 0x00, + 0x28, 0xa0, 0x04, 0xa2, 0x81, 0x09, 0x45, 0x21, 0x85, 0x25, 0x02, 0x12, + 0x8a, 0x00, 0x4a, 0x4a, 0x42, 0x0a, 0x29, 0x81, 0x81, 0x4e, 0x14, 0x8e, + 0xa2, 0xcd, 0x9b, 0xf9, 0x77, 0x51, 0xbf, 0xa1, 0xae, 0xa3, 0xf8, 0x54, + 0xfa, 0x81, 0x51, 0xf6, 0x87, 0xd0, 0x92, 0x0e, 0x25, 0x15, 0xa4, 0xbd, + 0x29, 0x75, 0x10, 0xb4, 0xb5, 0x42, 0x0a, 0x28, 0x10, 0xb4, 0x50, 0x01, + 0x45, 0x03, 0x0a, 0x29, 0x80, 0xb4, 0x94, 0x80, 0x29, 0x68, 0x01, 0x28, + 0xa0, 0x02, 0x8a, 0x00, 0x29, 0x29, 0x80, 0xb4, 0x94, 0x86, 0x14, 0x50, + 0x02, 0x52, 0xd0, 0x02, 0x52, 0x50, 0x01, 0x45, 0x00, 0x14, 0x94, 0x00, + 0x94, 0x94, 0x00, 0x52, 0x50, 0x02, 0x52, 0x50, 0x01, 0x49, 0x40, 0x09, + 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, 0x45, 0x00, 0x25, + 0x25, 0x02, 0x12, 0x92, 0x98, 0x09, 0x49, 0x48, 0x42, 0x52, 0x50, 0x02, + 0x52, 0x50, 0x02, 0x52, 0x53, 0x00, 0xa2, 0x81, 0x09, 0x49, 0x40, 0x09, + 0x49, 0x40, 0x09, 0x45, 0x00, 0x36, 0x8a, 0x64, 0x89, 0x49, 0x48, 0x62, + 0x51, 0x45, 0xc4, 0x25, 0x2a, 0x50, 0x03, 0xe8, 0xaa, 0x24, 0x4a, 0x28, + 0x10, 0x94, 0x50, 0x02, 0x51, 0x40, 0x86, 0xd1, 0x48, 0x61, 0x49, 0x45, + 0xc4, 0x25, 0x14, 0xc0, 0x4a, 0x29, 0x00, 0x94, 0xb4, 0x08, 0xe7, 0xe9, + 0xc0, 0xd0, 0xce, 0x91, 0xd9, 0xae, 0xbe, 0x36, 0xdf, 0x0a, 0x9f, 0xc3, + 0xf4, 0xac, 0xdf, 0xc4, 0x57, 0xd9, 0x1c, 0x3a, 0xd6, 0x9c, 0x7c, 0xad, + 0x1d, 0x44, 0x3e, 0x8a, 0xa1, 0x0b, 0x45, 0x00, 0x14, 0xb4, 0x08, 0x28, + 0xa0, 0x61, 0x45, 0x00, 0x14, 0xb4, 0x00, 0x94, 0x50, 0x02, 0xd2, 0x50, + 0x01, 0x45, 0x00, 0x14, 0x94, 0x00, 0x51, 0x40, 0x05, 0x14, 0x0c, 0x4a, + 0x28, 0x00, 0xa2, 0x80, 0x12, 0x8a, 0x00, 0x4a, 0x28, 0x01, 0x28, 0xa0, + 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x02, 0x92, 0x80, 0x12, 0x92, 0x80, + 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x0a, 0x4a, 0x00, 0x6d, 0x14, 0x00, + 0x94, 0x94, 0x08, 0x4a, 0x4a, 0x04, 0x25, 0x36, 0x80, 0x12, 0x92, 0x80, + 0x0a, 0x4a, 0x00, 0x4a, 0x28, 0x01, 0x29, 0x28, 0x10, 0x94, 0x94, 0x0c, + 0x29, 0x28, 0x10, 0x94, 0x94, 0x08, 0x4a, 0x29, 0x88, 0x4a, 0x43, 0x40, + 0x09, 0x4e, 0x5a, 0x60, 0x3e, 0x8a, 0x76, 0x24, 0x6d, 0x14, 0x00, 0x52, + 0x50, 0x21, 0x28, 0xa0, 0x42, 0x52, 0x1a, 0x2c, 0x30, 0xa2, 0x80, 0x12, + 0x92, 0x98, 0x82, 0x92, 0xa4, 0x41, 0x49, 0x4c, 0x66, 0x05, 0x14, 0x1d, + 0x03, 0x96, 0xba, 0x9d, 0x29, 0xf7, 0xe9, 0xab, 0xeb, 0xb9, 0xab, 0x29, + 0xbd, 0x51, 0x7f, 0x64, 0xb3, 0xda, 0xb4, 0xa0, 0x39, 0x4a, 0x1e, 0xe4, + 0x92, 0xd2, 0xd5, 0x08, 0x5a, 0x28, 0x10, 0x51, 0x40, 0x0b, 0x45, 0x00, + 0x14, 0x50, 0x30, 0xa2, 0x80, 0x0a, 0x28, 0x00, 0xa2, 0x80, 0x0a, 0x4a, + 0x00, 0x28, 0xa0, 0x05, 0xa4, 0xa0, 0x61, 0x45, 0x02, 0x0a, 0x4a, 0x06, + 0x14, 0x50, 0x02, 0x51, 0x40, 0x05, 0x25, 0x00, 0x14, 0x94, 0x00, 0x94, + 0x94, 0x00, 0x52, 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, + 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, 0x21, 0x28, + 0xa0, 0x62, 0x53, 0x68, 0x10, 0x94, 0x94, 0x08, 0x4a, 0x4a, 0x06, 0x25, + 0x25, 0x02, 0x12, 0x8a, 0x00, 0x4a, 0x28, 0x10, 0x94, 0x94, 0x00, 0x94, + 0x53, 0x10, 0x94, 0x94, 0x0c, 0x4a, 0x4a, 0x09, 0x12, 0x92, 0x98, 0x05, + 0x2a, 0xf5, 0xa0, 0x07, 0xd1, 0x4c, 0x91, 0x28, 0xa0, 0x42, 0x52, 0x50, + 0x01, 0x45, 0x00, 0x25, 0x36, 0x80, 0x0a, 0x29, 0x88, 0x4a, 0x29, 0x08, + 0x43, 0x45, 0x20, 0x1b, 0x45, 0x00, 0x73, 0xf4, 0x50, 0x74, 0x8e, 0x53, + 0x5d, 0x0f, 0x87, 0xdf, 0x74, 0x0c, 0x87, 0xb0, 0xcf, 0xeb, 0x59, 0x54, + 0x45, 0xa3, 0x4f, 0xb5, 0x5e, 0xb4, 0x3f, 0x2d, 0x53, 0x24, 0xb3, 0x4b, + 0x4c, 0x41, 0x45, 0x00, 0x2d, 0x14, 0x08, 0x28, 0xa0, 0x02, 0x96, 0x81, + 0x85, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, 0x52, 0x50, 0x30, 0xa2, + 0x81, 0x05, 0x14, 0x0c, 0x29, 0x28, 0x01, 0x69, 0x28, 0x00, 0xa4, 0xa0, + 0x02, 0x8a, 0x00, 0x4a, 0x28, 0x01, 0x28, 0xa0, 0x04, 0xa2, 0x80, 0x12, + 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, + 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x0a, 0x6d, 0x00, 0x25, + 0x25, 0x02, 0x12, 0x92, 0x80, 0x1b, 0x45, 0x02, 0x12, 0x92, 0x98, 0x09, + 0x49, 0x40, 0x05, 0x25, 0x02, 0x12, 0x92, 0x80, 0x0a, 0x4a, 0x42, 0x10, + 0xd2, 0x53, 0x01, 0x29, 0x28, 0x00, 0xa6, 0xd0, 0x20, 0xa5, 0x1d, 0x69, + 0x80, 0xfa, 0x29, 0x92, 0x25, 0x25, 0x31, 0x05, 0x25, 0x00, 0x25, 0x14, + 0x00, 0x94, 0x50, 0x21, 0x28, 0xa4, 0x02, 0x51, 0x4c, 0x04, 0xa4, 0xa4, + 0x01, 0x45, 0x22, 0x4e, 0x76, 0x92, 0x9d, 0xb5, 0x3a, 0x87, 0x0a, 0xd9, + 0xf0, 0xec, 0x9f, 0xe9, 0x32, 0x2f, 0xf7, 0xb6, 0x8f, 0xd6, 0xb2, 0xa8, + 0x5c, 0x0d, 0xda, 0xb5, 0x66, 0x79, 0xc5, 0x36, 0x4a, 0x2e, 0xd2, 0xd3, + 0x10, 0xb4, 0x94, 0x08, 0x5a, 0x5a, 0x00, 0x4a, 0x28, 0x18, 0xb4, 0x53, + 0x00, 0xa2, 0x90, 0x05, 0x14, 0xc0, 0x28, 0xa4, 0x01, 0x45, 0x03, 0x0a, + 0x28, 0x10, 0x51, 0x40, 0xc2, 0x92, 0x81, 0x05, 0x14, 0x0c, 0x29, 0x28, + 0x00, 0xa2, 0x80, 0x0a, 0x4a, 0x00, 0x29, 0x28, 0x00, 0xa4, 0xa0, 0x04, + 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, + 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, + 0xa4, 0xa0, 0x42, 0x52, 0x50, 0x02, 0x53, 0x69, 0x88, 0x4a, 0x4a, 0x40, + 0x25, 0x25, 0x00, 0x14, 0x53, 0x10, 0x94, 0x94, 0x00, 0x94, 0x94, 0x80, + 0x4a, 0x4a, 0x62, 0x0a, 0x6d, 0x02, 0x12, 0x92, 0x98, 0x05, 0x2a, 0xd2, + 0x02, 0x4a, 0x4a, 0xa2, 0x44, 0xa4, 0xa0, 0x41, 0x49, 0x4c, 0x02, 0x92, + 0x81, 0x89, 0x45, 0x21, 0x09, 0x45, 0x32, 0x44, 0xa4, 0xa0, 0x02, 0x8a, + 0x40, 0x25, 0x14, 0x86, 0x73, 0x94, 0xb4, 0x23, 0xa0, 0x4c, 0xd6, 0x86, + 0x8a, 0xf8, 0xd4, 0x61, 0xff, 0x00, 0x7c, 0x54, 0x54, 0xd8, 0xd2, 0x9e, + 0xe7, 0x51, 0xe9, 0x53, 0xda, 0xff, 0x00, 0xac, 0xa5, 0xba, 0x20, 0xd0, + 0x14, 0xb5, 0x42, 0x16, 0x8a, 0x04, 0x2d, 0x14, 0x0c, 0x28, 0xa0, 0x02, + 0x8a, 0x00, 0x5a, 0x28, 0x00, 0xa2, 0x80, 0x0a, 0x28, 0x18, 0x51, 0x40, + 0x05, 0x14, 0xc0, 0x28, 0xa4, 0x02, 0x52, 0xd0, 0x02, 0x51, 0x40, 0x05, + 0x14, 0x00, 0x52, 0x50, 0x01, 0x49, 0x40, 0x05, 0x14, 0x00, 0x94, 0x94, + 0x00, 0x94, 0x94, 0x00, 0x53, 0x68, 0x00, 0xa4, 0xa0, 0x06, 0xd2, 0x50, + 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, 0x02, 0x52, 0x50, + 0x02, 0x52, 0x50, 0x02, 0x53, 0x68, 0x01, 0x29, 0x28, 0x10, 0x94, 0x94, + 0x08, 0x6d, 0x25, 0x30, 0x0a, 0x29, 0x00, 0x94, 0x94, 0x08, 0x4a, 0x4a, + 0x60, 0x25, 0x14, 0x84, 0x36, 0x8a, 0x00, 0x4a, 0x4a, 0x62, 0x12, 0x94, + 0x52, 0x02, 0x4a, 0x4a, 0xb2, 0x44, 0xa2, 0x98, 0x84, 0xa2, 0x90, 0x09, + 0x49, 0x40, 0x09, 0x45, 0x02, 0x12, 0x8a, 0x04, 0x25, 0x14, 0x00, 0x94, + 0x94, 0x00, 0x51, 0x49, 0x01, 0xcd, 0x52, 0xd3, 0xb1, 0xd4, 0x15, 0x62, + 0xc9, 0xfc, 0xbb, 0x84, 0x7f, 0xee, 0xf3, 0x51, 0x3d, 0x8a, 0x8e, 0xe7, + 0x62, 0x3e, 0xe2, 0x7f, 0xba, 0x3f, 0x95, 0x4b, 0x0f, 0x12, 0x0a, 0x95, + 0xf0, 0x93, 0xd4, 0xd2, 0x5e, 0x94, 0xea, 0xa1, 0x0b, 0x45, 0x00, 0x14, + 0x50, 0x21, 0x68, 0xa0, 0x02, 0x8a, 0x06, 0x14, 0x53, 0x00, 0xa2, 0x90, + 0x05, 0x2d, 0x00, 0x25, 0x14, 0x00, 0x51, 0x40, 0xc5, 0xa2, 0x80, 0x12, + 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x8a, 0x00, 0x29, 0x28, 0x00, 0xa2, 0x80, + 0x12, 0x92, 0x80, 0x0a, 0x4a, 0x00, 0x4a, 0x28, 0x01, 0x29, 0x28, 0x01, + 0x29, 0x28, 0x01, 0x29, 0x28, 0x01, 0xb4, 0x94, 0x00, 0x94, 0x94, 0x00, + 0x94, 0x94, 0x00, 0x94, 0x94, 0x00, 0x94, 0x94, 0x08, 0x6d, 0x25, 0x00, + 0x25, 0x25, 0x00, 0x36, 0x92, 0x81, 0x09, 0x49, 0x40, 0x09, 0x45, 0x00, + 0x14, 0x94, 0x00, 0x94, 0x94, 0x08, 0x4a, 0x4a, 0x00, 0x4a, 0x4a, 0x04, + 0x25, 0x25, 0x31, 0x05, 0x14, 0x01, 0x25, 0x25, 0x31, 0x09, 0x45, 0x31, + 0x09, 0x45, 0x00, 0x25, 0x14, 0x12, 0x25, 0x25, 0x00, 0x14, 0x94, 0xc0, + 0x4a, 0x29, 0x08, 0x4a, 0x4a, 0x00, 0x29, 0x28, 0x03, 0x9c, 0xa2, 0xa4, + 0xea, 0x0a, 0x50, 0xdc, 0x7e, 0x14, 0xa5, 0xb0, 0xe2, 0x76, 0xb6, 0xef, + 0xe6, 0xdb, 0xab, 0x7e, 0x1f, 0xa0, 0xa9, 0x97, 0xae, 0x6a, 0x21, 0xf0, + 0x83, 0xdc, 0xd3, 0x8f, 0xee, 0xd4, 0x95, 0x68, 0x90, 0xa2, 0x80, 0x16, + 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x96, 0x80, 0x0a, 0x28, 0x00, 0xa2, 0x81, + 0x85, 0x2d, 0x02, 0x12, 0x8a, 0x06, 0x14, 0x50, 0x01, 0x45, 0x00, 0x14, + 0x50, 0x01, 0x45, 0x00, 0x14, 0x50, 0x01, 0x49, 0x40, 0x05, 0x14, 0x00, + 0x94, 0x50, 0x01, 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, + 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, 0x4d, 0xa0, 0x04, 0xa4, 0xa0, 0x04, + 0xa4, 0xa0, 0x06, 0xd2, 0x50, 0x02, 0x52, 0x50, 0x21, 0x29, 0x28, 0x01, + 0xb4, 0x50, 0x03, 0x69, 0x28, 0x01, 0x29, 0x28, 0x10, 0x94, 0x94, 0x00, + 0x52, 0x50, 0x21, 0x29, 0x28, 0x01, 0x29, 0x28, 0x10, 0x94, 0x94, 0x00, + 0x86, 0x92, 0x98, 0x09, 0x45, 0x02, 0x24, 0xa2, 0xa8, 0x91, 0x28, 0xa0, + 0x42, 0x51, 0x40, 0x09, 0x45, 0x00, 0x25, 0x25, 0x31, 0x09, 0x45, 0x21, + 0x09, 0x45, 0x03, 0x12, 0x8a, 0x62, 0x12, 0x8a, 0x00, 0xe6, 0x8d, 0x2e, + 0x78, 0xa9, 0x3a, 0x80, 0x51, 0x40, 0x2d, 0xce, 0xb7, 0x44, 0x7f, 0x33, + 0x4c, 0x1f, 0xef, 0xb5, 0x5e, 0xed, 0x59, 0x53, 0xd8, 0x72, 0xf8, 0x8d, + 0x2b, 0x7e, 0x52, 0xa5, 0xab, 0x44, 0x8b, 0x4b, 0x40, 0x05, 0x14, 0x00, + 0xb4, 0x94, 0x00, 0xb4, 0x50, 0x01, 0x45, 0x00, 0x14, 0x50, 0x02, 0xd1, + 0x40, 0xc2, 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x02, + 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x8a, 0x00, 0x29, 0x28, 0x01, 0x28, 0xa0, + 0x04, 0xa2, 0x80, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, 0x12, 0x92, 0x80, + 0x12, 0x92, 0x80, 0x1b, 0x49, 0x40, 0x09, 0x49, 0x40, 0x09, 0x49, 0x40, + 0x0d, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa6, 0xd0, 0x02, 0x52, 0x50, + 0x21, 0x29, 0x28, 0x10, 0xda, 0x4a, 0x00, 0x29, 0x28, 0x01, 0x29, 0x28, + 0x10, 0x94, 0x94, 0x00, 0x94, 0x94, 0x00, 0x94, 0x94, 0xc4, 0x25, 0x25, + 0x02, 0x12, 0x8a, 0x40, 0x49, 0x45, 0x50, 0x84, 0xa4, 0xa6, 0x48, 0x52, + 0x53, 0x00, 0xa4, 0xa4, 0x01, 0x49, 0x40, 0x82, 0x92, 0x81, 0x09, 0x45, + 0x21, 0x89, 0x45, 0x31, 0x09, 0x45, 0x20, 0x39, 0xaa, 0x5e, 0x94, 0xec, + 0x75, 0x0a, 0x29, 0x31, 0x4a, 0xc0, 0x74, 0x7e, 0x19, 0x7c, 0xc3, 0x24, + 0x7f, 0xdd, 0x19, 0xff, 0x00, 0xc7, 0xab, 0x66, 0xb3, 0xa7, 0xd8, 0xa9, + 0xee, 0x5d, 0xb3, 0x6f, 0x92, 0xad, 0x55, 0x22, 0x18, 0xb4, 0x50, 0x01, + 0x4b, 0x40, 0x82, 0x8a, 0x06, 0x14, 0x53, 0x00, 0xa2, 0x90, 0x0b, 0x45, + 0x00, 0x14, 0x50, 0x30, 0xa5, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x02, + 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x04, 0xa2, 0x80, + 0x12, 0x8a, 0x00, 0x29, 0x28, 0x01, 0x29, 0x28, 0x00, 0xa4, 0xa0, 0x06, + 0xd2, 0x50, 0x02, 0x52, 0x50, 0x02, 0x53, 0x68, 0x01, 0x29, 0x28, 0x01, + 0x29, 0xb4, 0x00, 0x94, 0x94, 0x00, 0x94, 0xda, 0x00, 0x29, 0xb4, 0x08, + 0x4a, 0x69, 0xa0, 0x04, 0xa4, 0xa0, 0x42, 0x52, 0x50, 0x02, 0x52, 0x50, + 0x02, 0x51, 0x40, 0x0d, 0xa4, 0xa6, 0x21, 0x29, 0x29, 0x00, 0x94, 0x94, + 0xc4, 0x06, 0x9b, 0x40, 0x09, 0x45, 0x02, 0x1f, 0x45, 0x32, 0x44, 0xa2, + 0x98, 0x05, 0x25, 0x00, 0x14, 0x50, 0x21, 0x29, 0x29, 0x80, 0x94, 0x50, + 0x21, 0x28, 0xa0, 0x02, 0x92, 0x90, 0x84, 0xa2, 0x98, 0x1c, 0xd5, 0x25, + 0x23, 0xa8, 0x70, 0xe9, 0x4b, 0x48, 0x0d, 0x9f, 0x0e, 0x49, 0xfe, 0x99, + 0x27, 0xfb, 0x5b, 0x57, 0xf5, 0xae, 0x88, 0x56, 0x50, 0xea, 0x54, 0xcb, + 0x56, 0x47, 0x9c, 0x55, 0xda, 0xa4, 0x4b, 0x16, 0x8a, 0x62, 0x16, 0x8a, + 0x00, 0x28, 0xa0, 0x02, 0x96, 0x98, 0x05, 0x14, 0x86, 0x14, 0x50, 0x21, + 0x68, 0xa0, 0x61, 0x45, 0x00, 0x2d, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, + 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, 0x51, 0x40, 0x09, 0x45, 0x00, 0x14, + 0x94, 0x00, 0x52, 0x50, 0x02, 0x51, 0x40, 0x09, 0x49, 0x40, 0x09, 0x49, + 0x40, 0x0d, 0xa4, 0xa0, 0x04, 0xa6, 0xd0, 0x02, 0x52, 0x50, 0x02, 0x53, + 0x68, 0x01, 0x29, 0xb4, 0x00, 0x94, 0x94, 0x00, 0x94, 0x94, 0x00, 0xda, + 0x4a, 0x04, 0x25, 0x25, 0x00, 0x25, 0x25, 0x00, 0x25, 0x25, 0x02, 0x1b, + 0x45, 0x00, 0x25, 0x36, 0x81, 0x05, 0x21, 0xa0, 0x06, 0xd1, 0x40, 0x86, + 0xd2, 0x50, 0x02, 0x52, 0x50, 0x04, 0x9d, 0xa9, 0x2a, 0x90, 0x98, 0x52, + 0x53, 0x24, 0x28, 0xa0, 0x41, 0x49, 0x40, 0xc2, 0x8a, 0x04, 0x25, 0x25, + 0x30, 0x12, 0x92, 0x90, 0x85, 0xa4, 0xa4, 0x02, 0x51, 0x48, 0x0e, 0x62, + 0x96, 0xad, 0x9d, 0x21, 0x4a, 0x33, 0xde, 0x96, 0x80, 0x68, 0x68, 0x8f, + 0xb3, 0x53, 0x83, 0xde, 0x41, 0x5d, 0x68, 0xac, 0x97, 0xc4, 0x54, 0xb6, + 0x44, 0xf6, 0xa7, 0x12, 0xd6, 0x88, 0xe9, 0x54, 0x48, 0x52, 0xd0, 0x20, + 0xa2, 0x80, 0x16, 0x8a, 0x00, 0x28, 0xa6, 0x01, 0x4b, 0x48, 0x02, 0x8a, + 0x06, 0x14, 0xb4, 0x00, 0x51, 0x40, 0x05, 0x2d, 0x00, 0x14, 0x50, 0x01, + 0x45, 0x00, 0x14, 0x50, 0x01, 0x4b, 0x40, 0x09, 0x45, 0x00, 0x14, 0x94, + 0x00, 0x52, 0x52, 0x00, 0xa4, 0xa6, 0x02, 0x51, 0x40, 0x09, 0x49, 0x40, + 0x09, 0x49, 0x40, 0x0d, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x06, 0xd2, 0x50, + 0x03, 0x69, 0x28, 0x01, 0x0d, 0x36, 0x80, 0x12, 0x9b, 0x40, 0x09, 0x49, + 0x40, 0x09, 0x4d, 0xa0, 0x42, 0x52, 0x50, 0x02, 0x52, 0x1a, 0x00, 0x4a, + 0x6d, 0x00, 0x25, 0x14, 0x08, 0x6d, 0x25, 0x00, 0x25, 0x14, 0xc4, 0x36, + 0x92, 0x90, 0x84, 0xa4, 0xa6, 0x21, 0x29, 0x29, 0x00, 0xf1, 0x45, 0x31, + 0x05, 0x25, 0x31, 0x05, 0x25, 0x50, 0x85, 0xa4, 0xa4, 0x30, 0xa4, 0xa4, + 0x21, 0x28, 0xaa, 0x01, 0x29, 0x29, 0x12, 0x14, 0x52, 0xb8, 0xc4, 0xa4, + 0xa6, 0x17, 0x39, 0xaa, 0x4a, 0x47, 0x48, 0x52, 0x8a, 0x56, 0x02, 0x7b, + 0x39, 0x3c, 0xab, 0xa8, 0xe4, 0xfe, 0xef, 0x3f, 0xa5, 0x76, 0xeb, 0xf7, + 0x13, 0xfd, 0xd1, 0xfc, 0xab, 0x3f, 0xb6, 0x5c, 0xbe, 0x12, 0x48, 0xb8, + 0x90, 0x56, 0x9a, 0xf4, 0xaa, 0xea, 0x40, 0xb4, 0xb4, 0xc4, 0x14, 0xb4, + 0xc0, 0x28, 0xa4, 0x01, 0x45, 0x00, 0x2d, 0x14, 0x0c, 0x28, 0xa0, 0x42, + 0xd1, 0x40, 0xc2, 0x8a, 0x00, 0x29, 0x68, 0x00, 0xa2, 0x80, 0x0a, 0x5a, + 0x00, 0x28, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x04, 0xa2, 0x80, 0x0a, + 0x4a, 0x00, 0x29, 0x28, 0x01, 0x28, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, + 0xa0, 0x04, 0xa6, 0xd0, 0x02, 0x52, 0x50, 0x03, 0x69, 0x28, 0x01, 0xb4, + 0x94, 0x00, 0xda, 0x4a, 0x00, 0x6d, 0x25, 0x00, 0x25, 0x36, 0x80, 0x12, + 0x92, 0x81, 0x0d, 0xa2, 0x80, 0x1b, 0x49, 0x40, 0x0d, 0xa4, 0xa0, 0x04, + 0xa2, 0x81, 0x0d, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, 0x91, + 0x29, 0xb4, 0xc0, 0x4a, 0x4a, 0x40, 0x3b, 0xb5, 0x2d, 0x32, 0x44, 0xa2, + 0x81, 0x05, 0x2d, 0x50, 0x84, 0xa2, 0x90, 0x09, 0x49, 0x4c, 0x05, 0xa4, + 0xa6, 0x21, 0x29, 0x29, 0x00, 0x52, 0x54, 0x80, 0x51, 0x40, 0x8e, 0x6f, + 0x63, 0x51, 0xe5, 0x9a, 0xd5, 0x9d, 0x43, 0x71, 0x8a, 0x75, 0x64, 0x03, + 0x4f, 0xdd, 0x3c, 0xf6, 0xae, 0xea, 0xd9, 0xfc, 0xcb, 0x65, 0x6f, 0xc3, + 0xf4, 0x15, 0x1f, 0x6c, 0xbb, 0xfb, 0xa4, 0xc3, 0xad, 0x6a, 0x27, 0xdd, + 0xaa, 0x7b, 0x90, 0x3a, 0x9d, 0x4c, 0x41, 0x45, 0x20, 0x0a, 0x29, 0x80, + 0xb4, 0x50, 0x01, 0x45, 0x20, 0x0a, 0x5a, 0x06, 0x14, 0x50, 0x02, 0xd1, + 0x40, 0x05, 0x14, 0x00, 0xb4, 0x50, 0x01, 0x45, 0x00, 0x14, 0x50, 0x02, + 0xd1, 0x40, 0x05, 0x14, 0x00, 0x51, 0x40, 0x09, 0x49, 0x40, 0x05, 0x25, + 0x00, 0x25, 0x14, 0x00, 0x94, 0x94, 0x00, 0x94, 0x94, 0x80, 0x4a, 0x4a, + 0x60, 0x36, 0x92, 0x80, 0x1b, 0x49, 0x40, 0x0d, 0xa6, 0xd0, 0x02, 0x53, + 0x68, 0x01, 0x29, 0xb4, 0x00, 0x94, 0x94, 0x00, 0x94, 0xda, 0x00, 0x69, + 0xa4, 0x34, 0x08, 0x4a, 0x69, 0xa0, 0x04, 0xa4, 0xa0, 0x04, 0xa4, 0xa0, + 0x42, 0x52, 0x50, 0x02, 0x52, 0x50, 0x21, 0x29, 0x28, 0x01, 0x29, 0xb4, + 0xc0, 0x43, 0x49, 0x48, 0x07, 0x0a, 0x29, 0x92, 0x25, 0x2d, 0x31, 0x05, + 0x25, 0x31, 0x0b, 0x49, 0x40, 0x05, 0x14, 0x84, 0x25, 0x14, 0xc4, 0x25, + 0x25, 0x00, 0x14, 0x94, 0x08, 0x29, 0x31, 0x48, 0x66, 0x16, 0xf1, 0xdc, + 0x53, 0xc4, 0x8b, 0xf8, 0x55, 0x33, 0xa4, 0x3e, 0x43, 0x4d, 0xd8, 0xb4, + 0xae, 0x03, 0x4c, 0x60, 0xd7, 0x55, 0xa2, 0x36, 0xed, 0x34, 0x7f, 0xbe, + 0xd5, 0x9b, 0xf8, 0x91, 0x4b, 0xe1, 0x2f, 0x76, 0xad, 0x38, 0x0f, 0xc9, + 0x4d, 0xee, 0x49, 0x2d, 0x2d, 0x02, 0x0a, 0x29, 0x80, 0xb4, 0x52, 0x00, + 0xa2, 0x98, 0x05, 0x2d, 0x00, 0x14, 0xb4, 0x0c, 0x4a, 0x5a, 0x40, 0x14, + 0x50, 0x02, 0xd1, 0x40, 0x05, 0x2d, 0x00, 0x14, 0x50, 0x01, 0x4b, 0x40, + 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x25, 0x00, 0x14, 0x94, 0x00, 0x51, + 0x40, 0x09, 0x49, 0x40, 0x09, 0x49, 0x40, 0x05, 0x25, 0x00, 0x36, 0x92, + 0x90, 0x09, 0x4d, 0xa6, 0x03, 0x69, 0x28, 0x01, 0xb4, 0xd3, 0x40, 0x0d, + 0xa6, 0xd0, 0x02, 0x52, 0x50, 0x03, 0x69, 0x28, 0x01, 0x29, 0xb4, 0x00, + 0xd3, 0x4d, 0xa0, 0x04, 0xa4, 0xa0, 0x42, 0x53, 0x68, 0x00, 0xa4, 0xa0, + 0x04, 0xa6, 0xd0, 0x21, 0x29, 0x28, 0x01, 0x29, 0x28, 0x01, 0x29, 0x28, + 0x24, 0x4a, 0x4a, 0x00, 0x51, 0x4b, 0x4c, 0x42, 0x51, 0x4c, 0x41, 0x45, + 0x00, 0x2d, 0x25, 0x04, 0x89, 0x45, 0x30, 0x0a, 0x4a, 0x04, 0x25, 0x14, + 0x00, 0x94, 0x51, 0x70, 0x12, 0x8a, 0x04, 0x73, 0xa4, 0xd2, 0x66, 0x9d, + 0x8e, 0xa0, 0xcd, 0x2e, 0xef, 0x7a, 0x90, 0x1f, 0x9a, 0xe8, 0xbc, 0x37, + 0x26, 0x60, 0x74, 0xcf, 0x40, 0x4f, 0xfe, 0x3d, 0x59, 0x4b, 0xa1, 0x6b, + 0x63, 0x62, 0xaf, 0x59, 0x9c, 0xa5, 0x5c, 0x88, 0x2c, 0xd2, 0xd3, 0x10, + 0x51, 0x48, 0x05, 0xa2, 0x80, 0x0a, 0x5a, 0x06, 0x14, 0x50, 0x20, 0xa5, + 0xa0, 0x61, 0x45, 0x00, 0x2d, 0x14, 0x00, 0x51, 0x40, 0x0b, 0x45, 0x00, + 0x14, 0xb4, 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, + 0x00, 0x94, 0x52, 0x00, 0xa4, 0xa6, 0x01, 0x49, 0x48, 0x02, 0x92, 0x80, + 0x12, 0x92, 0x98, 0x09, 0x4d, 0xa0, 0x04, 0xa6, 0xd0, 0x02, 0x53, 0x4d, + 0x20, 0x1a, 0x69, 0xb4, 0xc0, 0x61, 0xa4, 0xa0, 0x06, 0xd3, 0x68, 0x01, + 0x29, 0xb4, 0x80, 0x6d, 0x36, 0x80, 0x12, 0x92, 0x80, 0x1b, 0x45, 0x30, + 0x12, 0x92, 0x80, 0x12, 0x92, 0x81, 0x09, 0x4d, 0xa4, 0x02, 0x52, 0x53, + 0x01, 0x29, 0x28, 0x24, 0x6d, 0x25, 0x00, 0x25, 0x25, 0x02, 0x0a, 0x75, + 0x02, 0x12, 0x8a, 0x60, 0x14, 0x50, 0x21, 0x68, 0xa6, 0x21, 0x28, 0xa6, + 0x02, 0x51, 0x40, 0x84, 0xa2, 0x90, 0x84, 0xa2, 0x80, 0x12, 0x8a, 0x62, + 0x39, 0xb6, 0xa6, 0xd5, 0x33, 0xa8, 0x5a, 0x5c, 0xd6, 0x7a, 0x85, 0xc7, + 0x56, 0xcf, 0x86, 0x24, 0xff, 0x00, 0x4a, 0x91, 0x7d, 0x42, 0x8f, 0xd6, + 0xa2, 0x65, 0x44, 0xe9, 0x2a, 0xdd, 0x97, 0x71, 0x57, 0x32, 0x11, 0x76, + 0x8a, 0x00, 0x29, 0x68, 0x00, 0xa2, 0x90, 0x05, 0x2d, 0x03, 0x0a, 0x5a, + 0x00, 0x28, 0xa0, 0x02, 0x96, 0x80, 0x0a, 0x28, 0x01, 0x68, 0xa0, 0x05, + 0xa2, 0x80, 0x0a, 0x5a, 0x00, 0x4a, 0x5a, 0x00, 0x28, 0xa0, 0x02, 0x8a, + 0x06, 0x14, 0x94, 0x00, 0x52, 0x50, 0x01, 0x45, 0x20, 0x12, 0x8a, 0x00, + 0x4a, 0x28, 0x10, 0x94, 0x94, 0x00, 0x94, 0xda, 0x00, 0x4a, 0x6d, 0x30, + 0x12, 0x9a, 0x68, 0x01, 0x86, 0x9a, 0x68, 0x01, 0xa6, 0x9b, 0x40, 0x0d, + 0x34, 0xda, 0x90, 0x1b, 0x4d, 0xa0, 0x06, 0xd3, 0x68, 0x01, 0x29, 0x28, + 0x00, 0xa6, 0xd3, 0x01, 0x29, 0x28, 0x01, 0x28, 0xdb, 0x40, 0x06, 0xda, + 0x4d, 0xb4, 0x08, 0x42, 0x2a, 0x33, 0x4c, 0x43, 0x68, 0xa4, 0x02, 0x52, + 0x53, 0x10, 0x94, 0xda, 0x00, 0x51, 0x4b, 0x40, 0x84, 0xa2, 0x82, 0x42, + 0x8a, 0xa0, 0x16, 0x8a, 0x62, 0x0a, 0x4a, 0x04, 0x14, 0x50, 0x02, 0x51, + 0x48, 0x04, 0xa2, 0x98, 0x84, 0xa2, 0x81, 0x1c, 0xd9, 0xa6, 0xd6, 0x96, + 0xb1, 0xd2, 0x14, 0x56, 0x4d, 0x8c, 0x5a, 0xd2, 0xd0, 0x5f, 0x6e, 0xad, + 0x07, 0xbb, 0x8a, 0x8a, 0x9a, 0xa2, 0xa0, 0x75, 0xc3, 0xa5, 0x58, 0xb4, + 0x3f, 0xbc, 0xaa, 0x96, 0xc4, 0xa3, 0x43, 0xb5, 0x14, 0x21, 0x0b, 0x45, + 0x00, 0x14, 0x50, 0x31, 0x68, 0xa4, 0x20, 0xa5, 0xa0, 0x61, 0x45, 0x00, + 0x2d, 0x14, 0x00, 0xb4, 0x50, 0x02, 0xd1, 0x40, 0x05, 0x2d, 0x00, 0x14, + 0x50, 0x01, 0x4b, 0x40, 0x09, 0x45, 0x00, 0x14, 0x50, 0x30, 0xa2, 0x80, + 0x0a, 0x4a, 0x40, 0x14, 0x94, 0x00, 0x52, 0x50, 0x20, 0xa4, 0xa0, 0x62, + 0x52, 0x50, 0x20, 0xa4, 0xa0, 0x06, 0xd2, 0x50, 0x03, 0x69, 0xa6, 0x98, + 0x0c, 0x34, 0xce, 0xf8, 0xf5, 0xa0, 0x08, 0x16, 0x5d, 0xc7, 0x14, 0xea, + 0x4c, 0x06, 0xd3, 0x69, 0x00, 0xda, 0x6d, 0x00, 0x36, 0x9b, 0x40, 0x09, + 0xba, 0x96, 0x80, 0x0c, 0x66, 0x93, 0x14, 0xc0, 0x4a, 0x6e, 0x68, 0x10, + 0x99, 0xa3, 0x75, 0x2b, 0x80, 0xdd, 0xe2, 0x93, 0x7d, 0x3b, 0x80, 0xc3, + 0x20, 0xa4, 0x6a, 0x2e, 0x21, 0x94, 0x50, 0x31, 0x28, 0xa6, 0x21, 0xb4, + 0x94, 0x08, 0x4a, 0x5a, 0x04, 0x14, 0x53, 0x10, 0x52, 0xd2, 0x10, 0x51, + 0x54, 0x48, 0x51, 0x40, 0x09, 0x45, 0x30, 0x12, 0x96, 0xa4, 0x04, 0xa4, + 0xa6, 0x20, 0xa4, 0xa1, 0x01, 0xce, 0x37, 0x5e, 0x29, 0xb8, 0xad, 0xeb, + 0x7c, 0x4c, 0xe9, 0x12, 0x96, 0xb0, 0x00, 0xab, 0x36, 0x12, 0x79, 0x57, + 0x90, 0xc9, 0xfd, 0xd3, 0x9f, 0xd2, 0xa6, 0x7b, 0x15, 0x0d, 0xce, 0xe1, + 0x7e, 0xe2, 0x7f, 0xba, 0x3f, 0x95, 0x4d, 0x07, 0x12, 0x8a, 0x7f, 0x60, + 0x9e, 0xa6, 0x90, 0xe9, 0x4b, 0x42, 0x10, 0x51, 0x40, 0x0b, 0x45, 0x00, + 0x14, 0x50, 0x31, 0x68, 0xa4, 0x01, 0x4b, 0x40, 0x05, 0x2d, 0x00, 0x14, + 0x50, 0x02, 0xd1, 0x40, 0x0b, 0x45, 0x00, 0x14, 0x50, 0x02, 0xd1, 0x40, + 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x0c, 0x4a, 0x29, 0x00, 0x94, + 0x50, 0x01, 0x4d, 0xa0, 0x02, 0x8a, 0x04, 0x25, 0x25, 0x00, 0x25, 0x25, + 0x30, 0x0a, 0x69, 0xa0, 0x06, 0xd3, 0x71, 0x9a, 0x00, 0x5f, 0x28, 0xfa, + 0x54, 0x32, 0xdb, 0x4a, 0x4a, 0xed, 0x1d, 0x29, 0xa0, 0x21, 0x5b, 0x09, + 0x95, 0xf7, 0x71, 0xf9, 0xd4, 0x8d, 0x1e, 0x3a, 0xd2, 0x60, 0x42, 0xd5, + 0x19, 0xa4, 0x02, 0x1a, 0x6d, 0x48, 0x0c, 0x34, 0xc3, 0x4c, 0x08, 0x9d, + 0xb1, 0x53, 0x7f, 0x0d, 0x00, 0x34, 0x1a, 0x5c, 0xd3, 0x01, 0x8e, 0xf8, + 0x15, 0x4c, 0xde, 0x0d, 0xf8, 0xe9, 0x45, 0x84, 0x3f, 0xcd, 0xa8, 0xfc, + 0xef, 0x9f, 0x19, 0xa4, 0x21, 0xcc, 0x78, 0xa8, 0x43, 0xf3, 0xcd, 0x21, + 0x11, 0xca, 0x70, 0xe1, 0xbd, 0x2a, 0xef, 0xf0, 0x0f, 0xa5, 0x30, 0x19, + 0x45, 0x31, 0x89, 0x49, 0x4c, 0x02, 0x92, 0x81, 0x0d, 0xa2, 0x81, 0x0b, + 0x45, 0x32, 0x45, 0xa2, 0x98, 0x05, 0x2d, 0x21, 0x09, 0x4b, 0x4c, 0x42, + 0x51, 0x40, 0x84, 0xa2, 0x80, 0x0a, 0x4a, 0x00, 0x4a, 0x29, 0x81, 0xce, + 0x51, 0xb4, 0xd5, 0xb6, 0x74, 0x86, 0xda, 0x36, 0xd6, 0x63, 0x48, 0x00, + 0xa3, 0xee, 0xe4, 0x8f, 0x4a, 0x96, 0x38, 0xee, 0x77, 0x96, 0xcc, 0x1e, + 0xdd, 0x48, 0x3e, 0xdf, 0xa0, 0xa9, 0x97, 0x86, 0x14, 0xd7, 0xc0, 0x4b, + 0xf8, 0x8d, 0x44, 0xfb, 0xb4, 0xea, 0x48, 0x42, 0xd1, 0x4c, 0x02, 0x8a, + 0x00, 0x29, 0x68, 0x00, 0xa2, 0x90, 0xc5, 0xa2, 0x80, 0x0a, 0x28, 0x01, + 0x68, 0xa0, 0x05, 0xa2, 0x80, 0x16, 0x8a, 0x00, 0x29, 0x68, 0x00, 0xa2, + 0x80, 0x0a, 0x28, 0x18, 0x51, 0x40, 0x05, 0x14, 0x80, 0x29, 0x28, 0x00, + 0xa4, 0xa0, 0x02, 0x92, 0x90, 0x05, 0x25, 0x31, 0x05, 0x25, 0x00, 0x25, + 0x25, 0x00, 0x25, 0x25, 0x30, 0x1b, 0x42, 0x7d, 0xf1, 0x40, 0x17, 0x14, + 0xe0, 0x53, 0x5e, 0x5a, 0x00, 0xa9, 0x2c, 0x84, 0xd5, 0x66, 0xa0, 0x08, + 0x1e, 0xa3, 0xa4, 0x02, 0x53, 0x49, 0xa4, 0x04, 0x66, 0x9a, 0x68, 0x02, + 0x19, 0x7a, 0x54, 0x90, 0xbe, 0x62, 0xa1, 0x80, 0x77, 0xa1, 0xce, 0x05, + 0x50, 0x15, 0x5a, 0x5d, 0xdc, 0x54, 0x12, 0x28, 0x54, 0x26, 0x80, 0x14, + 0xfc, 0xe9, 0xc5, 0x34, 0x45, 0xce, 0x6a, 0x09, 0x15, 0x81, 0xc8, 0xa4, + 0xef, 0x40, 0x81, 0x86, 0xe5, 0x23, 0xbd, 0x4e, 0xad, 0x8e, 0x0d, 0x03, + 0x48, 0x43, 0x49, 0x54, 0x30, 0xa2, 0x81, 0x09, 0x49, 0x40, 0x09, 0x49, + 0x40, 0x82, 0x96, 0x99, 0x2c, 0x29, 0x6a, 0x84, 0x14, 0xb4, 0xc4, 0x14, + 0x50, 0x20, 0xa4, 0xa0, 0x41, 0x45, 0x03, 0x12, 0x8a, 0x42, 0x12, 0x8c, + 0xd1, 0xb8, 0x18, 0x0b, 0xef, 0x4e, 0xa0, 0xee, 0x12, 0x99, 0x83, 0x48, + 0x04, 0xa4, 0xaa, 0xe8, 0x66, 0xb7, 0x3b, 0x3d, 0x0e, 0x4f, 0x37, 0x4b, + 0x53, 0xfe, 0xdb, 0x55, 0xea, 0x54, 0xd7, 0xb8, 0x29, 0x7c, 0x46, 0x9c, + 0x07, 0xe4, 0xa9, 0x2a, 0x50, 0x82, 0x96, 0x98, 0x05, 0x2d, 0x00, 0x14, + 0x50, 0x01, 0x4b, 0x48, 0x61, 0x45, 0x00, 0x14, 0xb4, 0xc0, 0x28, 0xa4, + 0x03, 0xa8, 0xa0, 0x02, 0x8a, 0x00, 0x5a, 0x28, 0x00, 0xa2, 0x80, 0x0a, + 0x28, 0x01, 0x69, 0x29, 0x00, 0x51, 0x4c, 0x61, 0x49, 0x40, 0x05, 0x25, + 0x20, 0x0a, 0x28, 0x01, 0x28, 0xa0, 0x04, 0xa2, 0x80, 0x1b, 0x49, 0x40, + 0x84, 0xa6, 0x93, 0x4c, 0x05, 0x48, 0x99, 0xea, 0x65, 0x80, 0x2d, 0x00, + 0x29, 0xa8, 0x9a, 0x80, 0x2b, 0xbd, 0x42, 0x68, 0x02, 0x09, 0x2a, 0x23, + 0x48, 0x06, 0xd3, 0x0d, 0x48, 0x0d, 0xa6, 0x1a, 0x60, 0x43, 0x2f, 0x4a, + 0x4b, 0x57, 0xea, 0x3d, 0x28, 0x60, 0x4a, 0x4d, 0x38, 0xfc, 0xeb, 0x54, + 0x06, 0x63, 0x26, 0xd6, 0xa9, 0x67, 0x1e, 0x64, 0x25, 0x47, 0x71, 0x43, + 0xdc, 0x43, 0x2d, 0xd0, 0xc7, 0x16, 0xd6, 0x39, 0xe4, 0x9a, 0x5f, 0x30, + 0x54, 0x00, 0xc3, 0x32, 0xd3, 0x37, 0xb3, 0x74, 0xa0, 0x40, 0x1d, 0xd1, + 0xd7, 0x7f, 0x4c, 0xd5, 0xae, 0xb4, 0x0c, 0x43, 0x49, 0x54, 0x01, 0x45, + 0x02, 0x12, 0x92, 0x90, 0x84, 0xa4, 0xaa, 0x01, 0x28, 0xcd, 0x04, 0x8b, + 0x9a, 0x75, 0x32, 0x42, 0x96, 0xa8, 0x02, 0x8a, 0x42, 0x0a, 0x4a, 0x04, + 0x14, 0x53, 0x00, 0xa2, 0x81, 0x09, 0x45, 0x20, 0x39, 0xfc, 0xd2, 0x83, + 0x49, 0x9d, 0xd1, 0x1d, 0x9a, 0x61, 0xeb, 0x49, 0x14, 0x34, 0x9a, 0x07, + 0x4a, 0xb4, 0x62, 0xce, 0xa3, 0xc2, 0xf2, 0xee, 0xb5, 0x68, 0xff, 0x00, + 0xbb, 0x96, 0xff, 0x00, 0xc7, 0xab, 0x66, 0xa6, 0x97, 0xc2, 0x13, 0xf8, + 0x8b, 0xd6, 0x87, 0x29, 0x56, 0x29, 0x21, 0x31, 0x68, 0xa6, 0x01, 0x4b, + 0x40, 0x05, 0x14, 0x0c, 0x28, 0xa0, 0x05, 0xa2, 0x80, 0x0a, 0x28, 0x01, + 0x69, 0x69, 0x00, 0x52, 0xd0, 0x01, 0x4b, 0x40, 0x05, 0x14, 0x00, 0x51, + 0x40, 0x0b, 0x45, 0x20, 0x0a, 0x28, 0x18, 0x52, 0x53, 0x00, 0xa4, 0xa0, + 0x61, 0x45, 0x20, 0x0a, 0x28, 0x10, 0x94, 0x94, 0x00, 0x94, 0x94, 0x00, + 0x94, 0x94, 0x08, 0x4a, 0x86, 0x5a, 0x68, 0x0b, 0x96, 0xaf, 0xbe, 0x2a, + 0x94, 0xd1, 0x10, 0x23, 0x6a, 0x85, 0xa8, 0x02, 0x07, 0xa8, 0x1a, 0x80, + 0x20, 0x97, 0xa5, 0x40, 0x4d, 0x4b, 0x01, 0x84, 0xd3, 0x73, 0x48, 0x63, + 0x69, 0xa4, 0xd0, 0x04, 0x0e, 0xd5, 0x52, 0xda, 0x5d, 0xb3, 0xed, 0xcf, + 0x5e, 0x29, 0xbd, 0x80, 0xb8, 0xd2, 0x2f, 0x72, 0x2a, 0x2f, 0xb7, 0x43, + 0x1f, 0xde, 0x6a, 0x40, 0x67, 0xdd, 0xea, 0x11, 0x6e, 0xf9, 0x7f, 0x95, + 0x3a, 0xd6, 0xfa, 0x39, 0x46, 0xd2, 0x7e, 0x61, 0x4a, 0x57, 0x11, 0x66, + 0x47, 0xfd, 0xd9, 0xe7, 0x1c, 0x53, 0x3c, 0xa1, 0x8c, 0xd2, 0xb8, 0x86, + 0x05, 0x19, 0xe9, 0x52, 0x6d, 0x2b, 0xcd, 0x51, 0x23, 0x2e, 0x33, 0xe5, + 0xd3, 0xe0, 0x98, 0x3a, 0x66, 0xa5, 0x8d, 0x13, 0x75, 0xa6, 0xd5, 0xad, + 0x86, 0x14, 0x50, 0x02, 0x52, 0x1a, 0x04, 0x26, 0x69, 0xb9, 0xa1, 0x08, + 0x4c, 0xd2, 0xd5, 0x5c, 0x41, 0x9a, 0x5c, 0xd0, 0x48, 0xb9, 0xa5, 0xa6, + 0x21, 0x68, 0xa6, 0x20, 0xa2, 0x98, 0x05, 0x14, 0x00, 0x94, 0x52, 0x24, + 0x28, 0xa0, 0x67, 0x39, 0xd6, 0x9d, 0xf3, 0x55, 0x58, 0xe9, 0x1f, 0xb4, + 0xf7, 0xa3, 0x61, 0x35, 0x08, 0xab, 0x89, 0xe5, 0xe0, 0xd3, 0x31, 0x83, + 0x55, 0x62, 0x4d, 0xdf, 0x0a, 0x3f, 0xfa, 0x4c, 0xc9, 0xea, 0xa3, 0xff, + 0x00, 0x42, 0xae, 0x92, 0x95, 0x25, 0xba, 0x09, 0x96, 0xec, 0xcd, 0x5c, + 0xa9, 0x00, 0xa2, 0x98, 0x82, 0x8a, 0x00, 0x29, 0x68, 0x18, 0x51, 0x48, + 0x02, 0x96, 0x80, 0x0a, 0x5a, 0x00, 0x5a, 0x29, 0x80, 0x52, 0xd2, 0x00, + 0xa5, 0xa0, 0x02, 0x8a, 0x00, 0x28, 0xa0, 0x05, 0xa2, 0x81, 0x85, 0x14, + 0x80, 0x29, 0x28, 0x00, 0xa2, 0x81, 0x89, 0x45, 0x02, 0x0a, 0x4a, 0x40, + 0x14, 0x94, 0x00, 0x53, 0x69, 0x80, 0x94, 0x94, 0x00, 0xda, 0x86, 0x6e, + 0x94, 0x08, 0x7d, 0x8c, 0x98, 0x97, 0x6f, 0xaf, 0x15, 0xa1, 0x4d, 0x03, + 0x23, 0x6a, 0x85, 0xa9, 0x81, 0x5d, 0xea, 0x07, 0xa4, 0x04, 0x32, 0x74, + 0xaa, 0x84, 0xd4, 0x81, 0x19, 0x6a, 0x89, 0xee, 0x23, 0x5e, 0xae, 0x3f, + 0x3a, 0x91, 0x95, 0xa4, 0xd4, 0xa0, 0x4e, 0xad, 0x55, 0x24, 0xd6, 0x93, + 0xf8, 0x56, 0xab, 0x95, 0xb1, 0x14, 0xe5, 0xd5, 0xe4, 0x6f, 0xba, 0xa0, + 0x55, 0x46, 0xbb, 0x90, 0xb6, 0x7a, 0x53, 0x51, 0x01, 0x8d, 0x3c, 0x8d, + 0xd5, 0xcd, 0x46, 0x49, 0xa6, 0x02, 0x52, 0x86, 0x2a, 0x73, 0x45, 0x80, + 0xd3, 0x4b, 0xcf, 0x3a, 0x06, 0x07, 0xef, 0x55, 0xe5, 0x62, 0x63, 0xac, + 0xb6, 0x18, 0x80, 0xe0, 0xd4, 0xbe, 0x68, 0xc5, 0x16, 0x64, 0x91, 0x33, + 0x13, 0x50, 0xdb, 0x9c, 0x4a, 0x57, 0xf1, 0xaa, 0xe8, 0x4a, 0x2f, 0x25, + 0x21, 0xa1, 0x6c, 0x31, 0x28, 0xa2, 0xc0, 0x25, 0x25, 0x30, 0x1a, 0x4d, + 0x37, 0x34, 0x80, 0x4c, 0xd1, 0x9a, 0x64, 0x8b, 0x46, 0x6a, 0x84, 0x00, + 0xd3, 0xb3, 0x4c, 0x07, 0x66, 0x96, 0x82, 0x45, 0xa2, 0x98, 0x82, 0x92, + 0x81, 0x05, 0x14, 0x00, 0x51, 0x45, 0x80, 0xe7, 0x3a, 0x51, 0xbc, 0x8a, + 0xa6, 0xce, 0x91, 0xde, 0x69, 0xa6, 0x99, 0x18, 0xd2, 0x40, 0x33, 0x71, + 0xa3, 0x34, 0x80, 0xd5, 0xf0, 0xe4, 0x9b, 0x35, 0x58, 0x47, 0xf7, 0x98, + 0x0a, 0xec, 0x3b, 0x52, 0xa7, 0xf1, 0x30, 0xa9, 0xd0, 0xb1, 0x6a, 0x7e, + 0x7a, 0xbd, 0x47, 0x50, 0x0a, 0x29, 0x88, 0x5a, 0x29, 0x00, 0x51, 0x40, + 0x05, 0x2d, 0x21, 0x85, 0x2d, 0x00, 0x14, 0xb4, 0x00, 0x52, 0xd0, 0x02, + 0xd1, 0x40, 0x05, 0x14, 0x00, 0x52, 0xd0, 0x01, 0x45, 0x00, 0x2d, 0x25, + 0x20, 0x16, 0x8a, 0x06, 0x14, 0x94, 0x00, 0x52, 0x50, 0x30, 0xa2, 0x90, + 0x09, 0x45, 0x00, 0x14, 0x94, 0xc0, 0x4a, 0x4a, 0x04, 0x25, 0x36, 0x80, + 0x1b, 0x9a, 0x86, 0x63, 0xf2, 0xd3, 0x11, 0x02, 0x3e, 0xc7, 0x07, 0xd2, + 0xb6, 0x50, 0xee, 0x40, 0x68, 0xea, 0x03, 0x5a, 0xa0, 0x6a, 0x60, 0x40, + 0xf5, 0x5d, 0xea, 0x40, 0x8d, 0xfa, 0x56, 0x73, 0xb7, 0x3d, 0x69, 0x01, + 0x85, 0xab, 0xea, 0x5c, 0x6c, 0x85, 0xfe, 0xb5, 0x90, 0x65, 0x76, 0xea, + 0xd5, 0x62, 0x43, 0x73, 0x49, 0x9a, 0x43, 0x0a, 0x4c, 0xd0, 0x02, 0xd2, + 0x50, 0x20, 0xa2, 0x80, 0x00, 0x7d, 0xeb, 0x5a, 0xca, 0xe8, 0x3a, 0x6c, + 0xfe, 0x2c, 0xd4, 0x4c, 0x65, 0xce, 0xd5, 0x2a, 0xc4, 0x2a, 0x6e, 0x48, + 0xbe, 0x58, 0xaa, 0x73, 0x83, 0x1c, 0xc8, 0xfd, 0xb3, 0xcd, 0x52, 0xd8, + 0x0b, 0x4a, 0xc7, 0x14, 0x67, 0x34, 0x90, 0xc3, 0x34, 0x55, 0x5c, 0x04, + 0x34, 0x94, 0x84, 0x21, 0xa8, 0xe8, 0x01, 0x33, 0x4b, 0x54, 0x21, 0x29, + 0x73, 0x4c, 0x40, 0x29, 0xf4, 0x5c, 0x91, 0xc2, 0x9d, 0x4c, 0x42, 0xd1, + 0x4c, 0x90, 0xa2, 0x90, 0x05, 0x25, 0x50, 0x05, 0x25, 0x24, 0x23, 0x9c, + 0xcd, 0x25, 0x5a, 0x48, 0xea, 0x41, 0x49, 0x48, 0x02, 0x96, 0x86, 0x80, + 0xb7, 0xa5, 0xbf, 0x97, 0xa8, 0xc0, 0xde, 0x8d, 0x9f, 0xd0, 0xd7, 0x74, + 0xbc, 0xc6, 0x87, 0xd5, 0x47, 0xf2, 0xa8, 0x87, 0xf1, 0x02, 0x7b, 0x12, + 0xc1, 0xfe, 0xb0, 0x56, 0x88, 0xe9, 0x47, 0x50, 0x0a, 0x5a, 0x04, 0x14, + 0x50, 0x01, 0x45, 0x00, 0x14, 0xb4, 0x0c, 0x29, 0x68, 0x00, 0xa5, 0xa4, + 0x02, 0xd1, 0x40, 0x0b, 0x45, 0x00, 0x14, 0x50, 0x01, 0x45, 0x00, 0x14, + 0xb4, 0x00, 0x51, 0x40, 0xc2, 0x8a, 0x00, 0x29, 0x29, 0x0c, 0x29, 0x29, + 0x00, 0x51, 0x40, 0x05, 0x25, 0x00, 0x14, 0x94, 0x00, 0x94, 0x99, 0xa6, + 0x21, 0xa4, 0xd4, 0x65, 0xe9, 0x01, 0x13, 0x4a, 0x05, 0x40, 0xf2, 0xe6, + 0x98, 0x10, 0x96, 0xad, 0x5d, 0x3a, 0x6d, 0xf1, 0x6d, 0xcf, 0x23, 0x9a, + 0x43, 0x2c, 0xb5, 0x40, 0xd5, 0x44, 0x90, 0xbd, 0x56, 0x92, 0x80, 0x21, + 0x93, 0xee, 0xd7, 0x35, 0xaa, 0xdc, 0xb4, 0x28, 0x48, 0x26, 0x9c, 0x50, + 0x33, 0x9c, 0x63, 0x97, 0x24, 0xd0, 0x0d, 0x30, 0x16, 0x8a, 0x90, 0x0a, + 0x29, 0x80, 0x52, 0x52, 0x10, 0x51, 0x40, 0xc2, 0x9c, 0xad, 0xb4, 0xe4, + 0x50, 0xc0, 0xd9, 0xb4, 0xbb, 0x59, 0xd3, 0x07, 0xef, 0xd5, 0xd5, 0x6e, + 0x2b, 0x9c, 0x07, 0x8e, 0x45, 0x24, 0x91, 0x6e, 0x5a, 0xd1, 0x09, 0x82, + 0x47, 0xf2, 0xf2, 0x69, 0x7c, 0xae, 0x3e, 0xf5, 0x52, 0x11, 0x17, 0x7a, + 0x28, 0x18, 0x52, 0x52, 0x10, 0xda, 0x61, 0xa4, 0x02, 0x51, 0x4c, 0x42, + 0x52, 0xd5, 0x80, 0x53, 0xb3, 0x45, 0x89, 0x1c, 0x29, 0xc2, 0x82, 0x07, + 0x51, 0x54, 0x20, 0xa2, 0x81, 0x85, 0x14, 0x08, 0x28, 0xa4, 0x07, 0x33, + 0x4b, 0x4d, 0x9d, 0x22, 0xf6, 0xa6, 0xd3, 0x01, 0x73, 0x4b, 0xda, 0x90, + 0x0e, 0x56, 0xda, 0x77, 0x0e, 0xd9, 0xfe, 0x55, 0xe8, 0x16, 0xe7, 0x75, + 0xba, 0x1f, 0x61, 0xfc, 0x85, 0x4a, 0xfe, 0x20, 0x3f, 0x84, 0x99, 0x3e, + 0xf0, 0xad, 0x15, 0xfb, 0xb4, 0xde, 0xe0, 0x3a, 0x8a, 0x62, 0x0a, 0x5a, + 0x40, 0x14, 0x50, 0x01, 0x45, 0x03, 0x0a, 0x5a, 0x40, 0x14, 0xb4, 0x00, + 0x52, 0xd0, 0x01, 0x45, 0x00, 0x2d, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, + 0x0c, 0x4a, 0x29, 0x0c, 0x33, 0x49, 0x9a, 0x40, 0x19, 0xa3, 0x34, 0x86, + 0x14, 0x94, 0xc0, 0x29, 0x68, 0x00, 0xa4, 0xa4, 0x21, 0x29, 0x29, 0x80, + 0x99, 0xa6, 0x3b, 0x60, 0x53, 0x11, 0x55, 0xee, 0x2a, 0xbb, 0x4d, 0xef, + 0x52, 0x02, 0x67, 0x34, 0xc3, 0x4c, 0x64, 0x64, 0xd5, 0xbd, 0x36, 0x6d, + 0xb7, 0x20, 0x7f, 0x7a, 0xa5, 0x94, 0x6c, 0xf6, 0xa8, 0x5e, 0xb4, 0x33, + 0x2b, 0xb5, 0x57, 0x92, 0x80, 0x21, 0x6a, 0xe4, 0xf5, 0xcf, 0xf5, 0x67, + 0xf1, 0xaa, 0x80, 0xa4, 0x60, 0x9a, 0x4a, 0x43, 0x1e, 0x0d, 0x2d, 0x20, + 0x0a, 0x4a, 0x77, 0x00, 0xa2, 0x90, 0x84, 0xcd, 0x1b, 0xa8, 0x18, 0xdc, + 0xd1, 0x9a, 0x00, 0xb3, 0x63, 0x29, 0x49, 0xc7, 0xbd, 0x6b, 0xa4, 0xbc, + 0x72, 0x6b, 0x26, 0x03, 0xd6, 0xee, 0x21, 0xc6, 0xf3, 0x50, 0x49, 0x7c, + 0xe7, 0xa3, 0xe2, 0x9c, 0x22, 0x04, 0x4b, 0x34, 0xb2, 0x7f, 0xcb, 0x43, + 0x53, 0x45, 0x33, 0x35, 0xbc, 0x8a, 0x4f, 0xcc, 0x06, 0x73, 0xf8, 0xd5, + 0xc8, 0x0b, 0x29, 0xf7, 0x29, 0xd5, 0x02, 0x0c, 0xd2, 0x50, 0x02, 0x52, + 0x55, 0x12, 0x36, 0x92, 0x98, 0x05, 0x2d, 0x31, 0x05, 0x2d, 0x02, 0x16, + 0x9c, 0x29, 0xa2, 0x47, 0x52, 0xd5, 0x08, 0x28, 0xa4, 0x26, 0x14, 0x50, + 0x02, 0x51, 0x40, 0x1c, 0xd5, 0x2d, 0x51, 0xd0, 0x26, 0x33, 0x45, 0x26, + 0x86, 0x14, 0xa2, 0x86, 0x80, 0x5f, 0xe1, 0x35, 0xdb, 0xe8, 0xb2, 0xf9, + 0xba, 0x72, 0x9f, 0xf6, 0x8d, 0x45, 0xbd, 0xe4, 0x3f, 0xb0, 0x68, 0x56, + 0x8c, 0x47, 0x2b, 0x55, 0x3d, 0xc9, 0x43, 0xe8, 0xa4, 0x01, 0x45, 0x00, + 0x14, 0xb4, 0x00, 0x51, 0x48, 0x61, 0x4b, 0x40, 0x05, 0x14, 0xc0, 0x5a, + 0x29, 0x00, 0x52, 0xd0, 0x02, 0x52, 0xd0, 0x01, 0x49, 0x40, 0x09, 0xb8, + 0x51, 0x9a, 0x91, 0x8d, 0x2d, 0x50, 0x4f, 0x78, 0x90, 0xae, 0x58, 0xd0, + 0x33, 0x3e, 0x1d, 0x7a, 0x39, 0x6e, 0x96, 0x20, 0x38, 0x26, 0xb5, 0x83, + 0x64, 0x56, 0x6f, 0x49, 0x58, 0xd3, 0x97, 0x41, 0x73, 0x4b, 0x4c, 0x90, + 0xa2, 0xa8, 0x41, 0x45, 0x00, 0x14, 0x94, 0x00, 0x99, 0xa6, 0xe6, 0x98, + 0x86, 0x16, 0xe6, 0xa2, 0x94, 0x6f, 0x18, 0xcd, 0x51, 0x25, 0x71, 0x0a, + 0x8f, 0x7a, 0x43, 0x12, 0x7a, 0x52, 0x01, 0x70, 0x29, 0xaf, 0xd2, 0x80, + 0x29, 0xb9, 0xe6, 0x9a, 0x18, 0xab, 0x66, 0xa6, 0x45, 0xa3, 0xa3, 0xb7, + 0x93, 0xcd, 0x84, 0x30, 0xfa, 0x52, 0xbd, 0x38, 0x6c, 0x4b, 0x2b, 0x49, + 0x55, 0xde, 0xa8, 0x44, 0x0d, 0x5c, 0xb6, 0xbc, 0x3e, 0x56, 0xff, 0x00, + 0x77, 0x34, 0xe0, 0x29, 0x1c, 0xf5, 0x14, 0xc6, 0x02, 0x9f, 0x52, 0x01, + 0x9a, 0x6e, 0x68, 0xb0, 0x5c, 0x4c, 0xd1, 0x9a, 0x00, 0x4a, 0x28, 0x01, + 0x28, 0xa6, 0x03, 0x93, 0xad, 0x4b, 0x96, 0x3d, 0xcd, 0x45, 0x86, 0x2a, + 0xf1, 0x56, 0xfe, 0x5d, 0xb5, 0xa4, 0x44, 0xc5, 0xf2, 0xb2, 0x99, 0x53, + 0x51, 0xfc, 0xf1, 0xe7, 0x06, 0xa6, 0xc0, 0x5c, 0x8a, 0x46, 0xdb, 0xd6, + 0xa4, 0xf3, 0x4d, 0x65, 0x62, 0x85, 0xf3, 0x4d, 0x2f, 0x9d, 0x48, 0x9b, + 0x0f, 0x59, 0x77, 0x53, 0xab, 0x44, 0x48, 0x53, 0x6a, 0xac, 0x48, 0x52, + 0xd0, 0x48, 0x94, 0xb4, 0x08, 0x5a, 0x70, 0xaa, 0x01, 0x69, 0x68, 0x10, + 0x51, 0x40, 0x82, 0x8a, 0x2c, 0x01, 0x45, 0x2b, 0x01, 0xcd, 0xd1, 0x5a, + 0x9b, 0x80, 0xa2, 0xa5, 0x8c, 0x28, 0x15, 0x1b, 0x80, 0xbd, 0x2b, 0xac, + 0xf0, 0xc4, 0x9b, 0xac, 0xca, 0x67, 0xa6, 0x4f, 0xeb, 0x53, 0x27, 0xaa, + 0x29, 0x6c, 0xcd, 0xba, 0xbd, 0x6a, 0x72, 0x95, 0xa4, 0xc9, 0x44, 0xf4, + 0x54, 0x80, 0x51, 0x40, 0x05, 0x14, 0x00, 0x51, 0x4c, 0x61, 0x45, 0x20, + 0x16, 0x8a, 0x40, 0x2d, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, 0x52, + 0x77, 0x14, 0x03, 0x39, 0x3b, 0xfd, 0x4e, 0xe1, 0x2e, 0xb0, 0x8d, 0xc5, + 0x4b, 0x6d, 0xaf, 0x4e, 0x06, 0x1d, 0x73, 0x45, 0x58, 0xea, 0x6d, 0x05, + 0x78, 0x84, 0x9a, 0xe4, 0xbd, 0xb0, 0x2b, 0x36, 0xee, 0xf6, 0x4b, 0xaf, + 0xbf, 0x51, 0xb1, 0x4a, 0x28, 0x86, 0x13, 0xb2, 0x5d, 0xcb, 0x5d, 0xac, + 0x2f, 0x98, 0x54, 0xfb, 0x0f, 0xe5, 0x58, 0xcb, 0xe2, 0x2e, 0x5f, 0x09, + 0x20, 0x34, 0xec, 0xd6, 0x86, 0x02, 0xd1, 0x54, 0x01, 0x9a, 0x5c, 0xd2, + 0x01, 0x29, 0x29, 0x88, 0x08, 0x6c, 0x64, 0x03, 0x50, 0x92, 0xdf, 0xdd, + 0x3f, 0x95, 0x5a, 0x57, 0x11, 0x13, 0x6e, 0x5e, 0xa0, 0xd3, 0x4c, 0x94, + 0x3d, 0x04, 0x44, 0x5f, 0x9a, 0x4d, 0xd5, 0x37, 0x01, 0xbb, 0xe9, 0xac, + 0x68, 0x02, 0x8c, 0xbe, 0x67, 0x9a, 0x36, 0xe7, 0x15, 0x2c, 0x4a, 0x58, + 0x80, 0x70, 0x3e, 0xb5, 0x12, 0xdc, 0xd1, 0x6c, 0x6b, 0x69, 0x72, 0x71, + 0xb2, 0xae, 0xb1, 0xaa, 0x81, 0x12, 0x2a, 0xc9, 0x55, 0xde, 0xa8, 0x92, + 0xbb, 0xd7, 0x39, 0xe2, 0x01, 0xf2, 0x4b, 0xfe, 0xed, 0x54, 0x37, 0x14, + 0x8e, 0x68, 0xf5, 0xa4, 0xaa, 0x63, 0x14, 0x51, 0x52, 0x02, 0x52, 0xd0, + 0x02, 0x51, 0x40, 0x09, 0x45, 0x20, 0x0a, 0x29, 0x88, 0x96, 0x24, 0x35, + 0x3e, 0xca, 0x45, 0x8f, 0x8a, 0x20, 0x5f, 0xe6, 0xa9, 0xdd, 0x03, 0x0c, + 0x52, 0x4c, 0x2c, 0x1b, 0x4e, 0x29, 0xdb, 0x32, 0x39, 0xa2, 0xe1, 0x61, + 0xea, 0x30, 0x29, 0x6b, 0x31, 0x87, 0x34, 0xef, 0x2d, 0xaa, 0xc9, 0xb9, + 0x2c, 0x71, 0x6d, 0x39, 0xcd, 0x48, 0x4d, 0x34, 0x66, 0xc4, 0xcd, 0x25, + 0x32, 0x44, 0xa3, 0x34, 0xc4, 0x2d, 0x2d, 0x02, 0x17, 0x34, 0xea, 0x62, + 0x16, 0x8e, 0xf4, 0xc0, 0x5a, 0x29, 0x08, 0x28, 0xa0, 0x02, 0x8a, 0x62, + 0x39, 0xaa, 0x29, 0xb6, 0x75, 0x0b, 0x49, 0x52, 0x01, 0x49, 0x40, 0x85, + 0xae, 0x8b, 0xc2, 0x72, 0x7e, 0xf6, 0x54, 0xff, 0x00, 0x64, 0x7f, 0xe8, + 0x55, 0x9d, 0x44, 0x5c, 0x4e, 0x98, 0x55, 0xbb, 0x3a, 0xd2, 0x64, 0x22, + 0xdd, 0x14, 0x80, 0x28, 0xa0, 0x02, 0x8a, 0x06, 0x14, 0x53, 0x00, 0xa2, + 0x90, 0x05, 0x14, 0x80, 0x5a, 0x5a, 0x00, 0x29, 0x28, 0x00, 0xa4, 0xa0, + 0x06, 0x3b, 0xed, 0x15, 0x0f, 0xda, 0x14, 0x9a, 0x68, 0x4c, 0xe4, 0x35, + 0x1e, 0x2f, 0x0f, 0xd2, 0xab, 0x99, 0x82, 0x74, 0xc5, 0x2a, 0xdf, 0x11, + 0xbd, 0x2f, 0x84, 0x84, 0xc9, 0xba, 0x9b, 0xe6, 0x56, 0x46, 0x82, 0xac, + 0xa6, 0xb6, 0xac, 0x35, 0xb6, 0x8a, 0x3f, 0x2d, 0x86, 0xee, 0xb5, 0x0e, + 0x1d, 0x4a, 0xf2, 0x3a, 0x44, 0x6d, 0xc8, 0x18, 0x77, 0x15, 0x20, 0xa1, + 0x6a, 0x62, 0xd0, 0xb4, 0x66, 0xac, 0x42, 0x66, 0x8c, 0xd2, 0x10, 0x99, + 0xa6, 0x34, 0x9b, 0x46, 0x6a, 0x80, 0xb1, 0x63, 0xa8, 0xc4, 0x99, 0x0e, + 0x2a, 0xd7, 0xf6, 0x9d, 0xa9, 0xf5, 0xfc, 0xa8, 0x8e, 0x83, 0xf6, 0x77, + 0x2a, 0xea, 0x77, 0xb0, 0xb5, 0xa9, 0x54, 0x07, 0x2c, 0x08, 0xac, 0x33, + 0x29, 0xab, 0x9b, 0xd0, 0x98, 0xc6, 0xc3, 0x7c, 0xea, 0x97, 0x20, 0xd6, + 0x25, 0xd8, 0x4d, 0xcb, 0xeb, 0x51, 0x99, 0x45, 0x3d, 0x45, 0x61, 0x86, + 0x5e, 0x78, 0x14, 0x9b, 0x9c, 0xd2, 0x19, 0x34, 0x12, 0x34, 0x52, 0xab, + 0x1a, 0xd9, 0xce, 0x56, 0xaa, 0x3b, 0x93, 0x22, 0x07, 0xa8, 0x1e, 0xb4, + 0x66, 0x65, 0x69, 0x2b, 0x07, 0x5d, 0x19, 0x8d, 0xfd, 0xc5, 0x38, 0x6e, + 0x29, 0x1c, 0xab, 0x7d, 0xe3, 0xf5, 0xa4, 0xaa, 0x6c, 0x61, 0x4b, 0x48, + 0x02, 0x92, 0x92, 0x01, 0x28, 0xa0, 0x03, 0x06, 0x9f, 0xe5, 0x9a, 0x02, + 0xc3, 0xc4, 0x0d, 0x52, 0x2d, 0xb1, 0xa5, 0x71, 0xd8, 0xb5, 0x14, 0x07, + 0x1d, 0x31, 0x53, 0x08, 0x6b, 0x2e, 0x63, 0x41, 0x7c, 0xa1, 0x4e, 0xc0, + 0xa0, 0x01, 0x7e, 0x6e, 0x94, 0xfd, 0x95, 0x46, 0x6e, 0x43, 0xbc, 0xaa, + 0x5d, 0xa2, 0xa8, 0x9b, 0x8b, 0xd2, 0x97, 0x34, 0xc4, 0x2e, 0x69, 0x09, + 0xa0, 0x43, 0x77, 0x51, 0xba, 0x82, 0x43, 0x75, 0x19, 0xa6, 0x01, 0x9a, + 0x5c, 0xd0, 0x21, 0xd4, 0xa2, 0xa8, 0x43, 0xa9, 0x68, 0x10, 0x52, 0xd2, + 0x10, 0x51, 0x4c, 0x02, 0x8a, 0x04, 0x73, 0x74, 0xb4, 0xce, 0xa1, 0x28, + 0x15, 0x00, 0x21, 0xa2, 0x80, 0x1d, 0x5a, 0xde, 0x1b, 0x7d, 0x9a, 0x9a, + 0x2f, 0xf7, 0x99, 0x47, 0xf3, 0xa8, 0xa9, 0xb1, 0x70, 0x3b, 0x05, 0xe9, + 0x56, 0xad, 0x0f, 0xcf, 0x5a, 0x3d, 0x88, 0x45, 0xda, 0x28, 0x10, 0x51, + 0x40, 0x05, 0x14, 0x0c, 0x28, 0xa0, 0x04, 0xa5, 0xa4, 0x01, 0x45, 0x00, + 0x14, 0x50, 0x01, 0x45, 0x00, 0x14, 0x94, 0x01, 0x5e, 0xe7, 0xa5, 0x63, + 0x35, 0xfc, 0x62, 0xe3, 0xca, 0x63, 0x86, 0xe2, 0xae, 0xda, 0x5c, 0x5d, + 0x4c, 0x5b, 0xb7, 0xdc, 0x72, 0x6a, 0x91, 0xe6, 0xb3, 0x99, 0xb4, 0x40, + 0x29, 0xc7, 0x43, 0x4d, 0xef, 0xc5, 0x09, 0x14, 0xc7, 0x04, 0x35, 0xa9, + 0xa3, 0x5a, 0xf9, 0x97, 0x49, 0xe6, 0x27, 0xcb, 0x9a, 0x99, 0xc6, 0xc5, + 0xa3, 0xa9, 0x4e, 0x14, 0x0a, 0x7e, 0x6b, 0x34, 0x64, 0x2e, 0xea, 0x4d, + 0xd5, 0x40, 0x26, 0xfa, 0x69, 0x90, 0x54, 0x8c, 0x61, 0x9c, 0x7a, 0xd4, + 0x12, 0xdc, 0xae, 0xd2, 0x28, 0xb8, 0x72, 0x95, 0xa2, 0x6d, 0xd2, 0x71, + 0x57, 0x92, 0x16, 0x04, 0x1a, 0x39, 0x8e, 0x8d, 0x91, 0x16, 0xa0, 0xdc, + 0xa2, 0x7a, 0x55, 0x3a, 0xa9, 0x19, 0xb1, 0xa4, 0x53, 0xe3, 0xe6, 0x91, + 0x23, 0xcc, 0x23, 0x34, 0x9e, 0x58, 0xa4, 0x48, 0xbb, 0x69, 0x69, 0x0c, + 0x46, 0xe9, 0x5a, 0x36, 0x72, 0xf9, 0x90, 0xfb, 0x8a, 0x64, 0xb1, 0xcf, + 0x55, 0xda, 0xb6, 0x33, 0x2b, 0xcb, 0xd2, 0xb1, 0x35, 0x7c, 0x15, 0xc7, + 0xa9, 0xa1, 0x09, 0x9c, 0xbb, 0xa7, 0xcc, 0xdf, 0x5a, 0x8f, 0x63, 0x7a, + 0x1a, 0x60, 0x37, 0x14, 0xec, 0x50, 0x01, 0xb0, 0xd3, 0xc4, 0x06, 0x80, + 0xb1, 0x22, 0xdb, 0x7d, 0x6a, 0x55, 0xb4, 0xa9, 0xe6, 0x34, 0xe5, 0x26, + 0x4b, 0x2a, 0x99, 0x6d, 0x36, 0xd6, 0x6e, 0x65, 0xf2, 0x8f, 0x10, 0x20, + 0xa7, 0x61, 0x16, 0x8d, 0x58, 0xf4, 0x43, 0x1a, 0x50, 0xb4, 0x6f, 0xcf, + 0x34, 0xd4, 0x0c, 0xb9, 0x84, 0xcd, 0x15, 0xa5, 0x88, 0x6c, 0x4b, 0x63, + 0xf3, 0x35, 0x59, 0xcd, 0x21, 0x09, 0x9a, 0x4d, 0xd4, 0xac, 0x21, 0x37, + 0x53, 0x0c, 0xa0, 0x77, 0xa0, 0x08, 0xda, 0xed, 0x45, 0x40, 0xf7, 0xde, + 0x82, 0xa9, 0x21, 0x91, 0x1b, 0xc7, 0xff, 0x00, 0x26, 0x99, 0xf6, 0xd7, + 0xef, 0xcd, 0x16, 0x02, 0x41, 0x7c, 0x6a, 0x41, 0x7a, 0x3d, 0xa9, 0x59, + 0x8a, 0xc4, 0x8b, 0x74, 0xbe, 0xf5, 0x2a, 0xcc, 0x3d, 0x69, 0x85, 0x87, + 0x89, 0x85, 0x48, 0x24, 0x14, 0xc8, 0xb0, 0xfd, 0xd4, 0xbb, 0xa8, 0x24, + 0x5c, 0xd2, 0xd3, 0x10, 0xb4, 0xb4, 0x08, 0x28, 0xa2, 0xe2, 0x39, 0xba, + 0x2b, 0x43, 0xa4, 0x28, 0xa9, 0x18, 0x51, 0x48, 0x02, 0xae, 0x69, 0x4f, + 0xe5, 0xea, 0x30, 0x37, 0xfb, 0x55, 0x35, 0x2d, 0xca, 0x5c, 0x37, 0x3b, + 0xa4, 0xfb, 0xab, 0xfe, 0xe8, 0xab, 0x10, 0x1c, 0x48, 0x28, 0xfb, 0x24, + 0x1a, 0x03, 0xa5, 0x25, 0x31, 0x0b, 0x45, 0x00, 0x14, 0x50, 0x01, 0x45, + 0x00, 0x25, 0x14, 0x0c, 0x28, 0xa4, 0x01, 0x45, 0x00, 0x14, 0x50, 0x01, + 0x4d, 0x26, 0x80, 0x2b, 0xdc, 0xb7, 0xc9, 0x58, 0x37, 0x9a, 0x6c, 0x57, + 0x13, 0x79, 0x85, 0x99, 0x5a, 0xb5, 0x8c, 0xac, 0x4d, 0xb5, 0xb9, 0x91, + 0x76, 0x9e, 0x41, 0xd9, 0x55, 0xc5, 0x63, 0x50, 0xe8, 0xa7, 0xa9, 0xb9, + 0x6d, 0x6a, 0xbf, 0x67, 0xe9, 0x4e, 0x8b, 0x4a, 0x0c, 0xc4, 0x88, 0xbf, + 0x4a, 0x28, 0x31, 0x4d, 0x59, 0xdc, 0x9f, 0xfb, 0x2e, 0x4f, 0xe1, 0x8c, + 0xd4, 0xf6, 0x96, 0x52, 0xc1, 0x26, 0xe6, 0x4c, 0x57, 0x5d, 0x54, 0xb9, + 0x48, 0x8c, 0xcb, 0x7e, 0x60, 0x1d, 0xe9, 0xa6, 0xe5, 0x47, 0x7a, 0xf3, + 0xcd, 0x08, 0xda, 0xf5, 0x45, 0x42, 0xda, 0x87, 0xa5, 0x45, 0xcb, 0x50, + 0x22, 0x6b, 0xe7, 0x3d, 0x2a, 0x26, 0xba, 0x90, 0xf7, 0xa5, 0x73, 0x4e, + 0x51, 0x86, 0x42, 0x7b, 0xd3, 0x73, 0x41, 0x64, 0xb6, 0xd2, 0xf9, 0x72, + 0x83, 0x5b, 0x30, 0xcd, 0xd2, 0x92, 0x5a, 0x8d, 0xec, 0x51, 0xd4, 0x64, + 0x12, 0x5d, 0x65, 0x7d, 0x05, 0x41, 0x5b, 0xcc, 0xc5, 0x85, 0x3e, 0x2f, + 0xbd, 0x50, 0x41, 0x39, 0xa6, 0xd2, 0x24, 0x4a, 0x6d, 0x00, 0x21, 0xe9, + 0x4e, 0xb1, 0x9f, 0x65, 0xca, 0xc7, 0xfd, 0xf3, 0x8a, 0x60, 0x69, 0x35, + 0x57, 0x7a, 0xd6, 0xe6, 0x45, 0x5b, 0x96, 0xfd, 0xdb, 0x57, 0x2b, 0x37, + 0x9d, 0x23, 0x9d, 0xc4, 0x9c, 0x1a, 0x77, 0xd0, 0x12, 0xbb, 0x20, 0xf2, + 0x39, 0xa3, 0xc8, 0xac, 0xf9, 0x8d, 0x94, 0x05, 0xfb, 0x28, 0x3d, 0x56, + 0x9c, 0xb6, 0x23, 0xfb, 0xb4, 0xb9, 0xc7, 0xc8, 0x4a, 0xb6, 0x3e, 0xc2, + 0xa4, 0x16, 0xa8, 0x2a, 0x79, 0xca, 0xe5, 0x1e, 0x12, 0x35, 0xec, 0x29, + 0x0c, 0xa8, 0xb4, 0x25, 0x71, 0x68, 0x88, 0x8d, 0xc5, 0x30, 0xcc, 0x4d, + 0x68, 0xa0, 0x64, 0xe6, 0x30, 0xb1, 0xa4, 0xad, 0x2c, 0x67, 0x71, 0x92, + 0xfd, 0xda, 0x91, 0x69, 0x88, 0x09, 0xa6, 0xee, 0xa4, 0x05, 0x63, 0x75, + 0xb3, 0x3b, 0x45, 0x11, 0x5e, 0xb6, 0xff, 0x00, 0x98, 0x71, 0xf5, 0xa2, + 0xc3, 0x26, 0x6b, 0xd1, 0x51, 0x35, 0xe3, 0x76, 0xe2, 0x8b, 0x01, 0x0b, + 0x5c, 0x31, 0xef, 0x51, 0x34, 0xb9, 0xef, 0x40, 0x86, 0x79, 0x94, 0xdd, + 0xe6, 0x81, 0x8d, 0xc9, 0xa2, 0x81, 0x0b, 0xb6, 0x9e, 0x05, 0x00, 0x38, + 0x1c, 0x54, 0x9e, 0x69, 0xa0, 0x05, 0xf3, 0x4d, 0x3c, 0x5c, 0x38, 0xa3, + 0x70, 0x24, 0x17, 0x4d, 0xde, 0xa4, 0x5b, 0xca, 0x56, 0x11, 0x62, 0x3b, + 0x9d, 0xd5, 0x30, 0x9a, 0x92, 0x64, 0x34, 0x4a, 0x0d, 0x3e, 0xa9, 0x33, + 0x30, 0xa5, 0xaa, 0xb0, 0x1c, 0xe5, 0x25, 0x07, 0x48, 0x1e, 0x94, 0x52, + 0x01, 0x68, 0xa6, 0x80, 0x4a, 0x92, 0x16, 0xdb, 0x26, 0xef, 0xad, 0x4c, + 0xf6, 0x2a, 0x1b, 0x9e, 0x81, 0x6d, 0xcc, 0x11, 0x9f, 0xf6, 0x47, 0xf2, + 0xab, 0x2b, 0xf7, 0x85, 0x28, 0xfc, 0x24, 0xbd, 0xcd, 0x05, 0xe9, 0x4b, + 0x54, 0x01, 0x45, 0x00, 0x14, 0x50, 0x01, 0x45, 0x20, 0x12, 0x92, 0x80, + 0x0a, 0x28, 0x00, 0xa2, 0x80, 0x0a, 0x4c, 0xd0, 0x03, 0x77, 0x54, 0x53, + 0x49, 0xf2, 0x1c, 0x51, 0x70, 0x28, 0xcb, 0x21, 0x6a, 0xac, 0xcc, 0x69, + 0x5c, 0x66, 0x76, 0xa1, 0x6d, 0xf6, 0x84, 0xe3, 0xef, 0x0a, 0xc4, 0x62, + 0x62, 0x72, 0xad, 0x43, 0xd5, 0x15, 0x07, 0x66, 0x6c, 0x69, 0xba, 0x9a, + 0x30, 0x11, 0x3f, 0x5a, 0xf4, 0x0d, 0x2a, 0xd6, 0x34, 0x87, 0x77, 0x1c, + 0xd7, 0x34, 0x74, 0x95, 0x8d, 0xaa, 0xec, 0x5f, 0x70, 0x31, 0x59, 0xb7, + 0x5b, 0x6b, 0xb9, 0xb3, 0x96, 0xc7, 0x29, 0xa8, 0x36, 0xd9, 0xf8, 0xe9, + 0x55, 0xb7, 0x66, 0xb9, 0xaa, 0xee, 0x76, 0x53, 0xd8, 0x33, 0x4d, 0xcd, + 0x73, 0x9b, 0x09, 0x9a, 0x68, 0x6d, 0xdd, 0x29, 0x00, 0xfa, 0x75, 0x00, + 0x2a, 0xf5, 0xad, 0xeb, 0x44, 0xfd, 0xde, 0xfe, 0xd5, 0xa4, 0x5e, 0xa5, + 0x74, 0x32, 0xae, 0xbf, 0xd6, 0x53, 0x33, 0x5a, 0xcb, 0x73, 0x19, 0x8e, + 0xa7, 0x45, 0xf7, 0xaa, 0x0c, 0xcb, 0x06, 0x9b, 0x4d, 0x90, 0x25, 0x26, + 0x2a, 0x46, 0x21, 0xaa, 0x53, 0x31, 0x8e, 0x40, 0xc3, 0xa8, 0xaa, 0x03, + 0x6d, 0x24, 0xf3, 0x21, 0x0d, 0x55, 0x6e, 0xa6, 0xd8, 0x2a, 0xa2, 0xf4, + 0x33, 0xea, 0x66, 0x4d, 0x2c, 0x92, 0xf1, 0x9a, 0xad, 0xe4, 0x0a, 0xce, + 0x4c, 0xdd, 0x21, 0x86, 0xdc, 0x7a, 0xd2, 0xf9, 0x28, 0x3d, 0x2a, 0x2e, + 0xcb, 0xb0, 0x9b, 0xa3, 0x5a, 0x61, 0xb8, 0x41, 0xde, 0xad, 0x45, 0x92, + 0xdd, 0x88, 0x5a, 0xe7, 0xda, 0xa2, 0x33, 0x31, 0xef, 0x5a, 0xf2, 0x18, + 0xba, 0x83, 0x0b, 0x13, 0x4d, 0xad, 0x0c, 0x84, 0xa5, 0xa0, 0x02, 0x8a, + 0x04, 0x32, 0x4e, 0x94, 0x2b, 0x71, 0x43, 0x10, 0x85, 0xaa, 0xbd, 0xc4, + 0x85, 0x71, 0x40, 0xc4, 0xb7, 0x45, 0x9b, 0xef, 0x54, 0xc6, 0x38, 0x17, + 0xf8, 0x69, 0x5c, 0x0a, 0x9e, 0xb8, 0xa6, 0x91, 0x4c, 0x63, 0x0a, 0xd3, + 0x76, 0x50, 0x20, 0xd9, 0x4a, 0x23, 0xa0, 0x63, 0xb1, 0x4b, 0x40, 0x82, + 0x8a, 0x00, 0x4c, 0xd2, 0x6e, 0xa0, 0x62, 0x6e, 0xa7, 0x86, 0xa4, 0x20, + 0x2f, 0x49, 0xba, 0x98, 0x16, 0xad, 0x5a, 0xae, 0x21, 0xac, 0xc4, 0xcb, + 0x31, 0x9a, 0x98, 0x56, 0x88, 0xcc, 0x5a, 0x5a, 0x64, 0x9c, 0xef, 0x7a, + 0x4a, 0xd2, 0xc6, 0xe2, 0xd1, 0x52, 0x31, 0x40, 0x34, 0x63, 0x07, 0x91, + 0x49, 0x08, 0x6d, 0x3b, 0xb1, 0xa2, 0x43, 0x8e, 0xe7, 0x7b, 0xa3, 0xbf, + 0x9b, 0x60, 0xa7, 0xfd, 0xa3, 0xfd, 0x2b, 0x47, 0x1c, 0x54, 0x53, 0xf8, + 0x47, 0x3f, 0x88, 0xb9, 0x1f, 0xdd, 0xa5, 0xa6, 0x89, 0x16, 0x8a, 0x60, + 0x14, 0x53, 0x18, 0x52, 0x52, 0x01, 0x28, 0xa4, 0x02, 0x51, 0x9a, 0x00, + 0x4d, 0xd4, 0xc3, 0x28, 0x1d, 0xe8, 0x60, 0x42, 0xf7, 0x68, 0x3b, 0xd4, + 0x26, 0xf2, 0xb2, 0x6c, 0x9e, 0x62, 0x13, 0x7c, 0x7d, 0x29, 0xbf, 0x68, + 0x2c, 0x32, 0x2a, 0x05, 0x71, 0x14, 0x96, 0xed, 0x46, 0xd3, 0x53, 0x71, + 0x31, 0x8c, 0x17, 0xf8, 0xb1, 0x5c, 0xe6, 0xaa, 0x8a, 0x2e, 0x8e, 0xde, + 0x98, 0x15, 0xa5, 0x36, 0x54, 0x6f, 0x72, 0x9a, 0x65, 0x4f, 0x15, 0xd8, + 0x5b, 0x5e, 0xea, 0x10, 0xdb, 0x02, 0x8f, 0x95, 0xad, 0x69, 0xa8, 0xb9, + 0xea, 0x74, 0x49, 0xfb, 0xa3, 0x2e, 0x35, 0x8d, 0x40, 0x8e, 0x49, 0xab, + 0x50, 0xcc, 0xef, 0x0f, 0xcc, 0xd9, 0xae, 0xba, 0xd0, 0x51, 0xd8, 0xc9, + 0x19, 0xba, 0x91, 0xc3, 0x8c, 0xf7, 0xa8, 0x63, 0xe9, 0x5e, 0x7d, 0x63, + 0xae, 0x97, 0xc2, 0x3a, 0x8a, 0xc4, 0xd0, 0x43, 0x50, 0x6d, 0x60, 0xdc, + 0x53, 0xb0, 0x89, 0x79, 0xa7, 0x0a, 0x7c, 0xa3, 0xb8, 0xe5, 0xeb, 0x5d, + 0x25, 0xa4, 0x32, 0x1b, 0x4f, 0x96, 0x9c, 0x7e, 0x20, 0xe7, 0xb2, 0x33, + 0xb5, 0x0b, 0x57, 0x5c, 0xb1, 0xe2, 0xb3, 0xb7, 0x1a, 0xda, 0xaa, 0x31, + 0x52, 0xe6, 0x1e, 0x24, 0xa9, 0x62, 0x3c, 0xd6, 0x20, 0xd1, 0x68, 0xf4, + 0xa6, 0xe4, 0x53, 0x20, 0x61, 0x75, 0xa6, 0x19, 0x94, 0x54, 0x95, 0x62, + 0x17, 0x9e, 0xab, 0x4a, 0xdb, 0xb9, 0x35, 0x45, 0x58, 0x9a, 0x0d, 0x43, + 0x62, 0x18, 0xf1, 0xd3, 0x9c, 0xd4, 0x72, 0x4f, 0xbc, 0xe4, 0x9a, 0x5b, + 0x0b, 0x94, 0x81, 0xa7, 0x02, 0xa2, 0x6b, 0xa1, 0x4d, 0x42, 0xe0, 0xe6, + 0x91, 0x13, 0x5c, 0x9e, 0xd5, 0x0b, 0x4a, 0xc7, 0xbd, 0x6d, 0xc8, 0x8c, + 0x5d, 0x46, 0x44, 0x4e, 0x4d, 0x15, 0x66, 0x62, 0x51, 0x40, 0x05, 0x25, + 0x00, 0x25, 0x2d, 0x00, 0x25, 0x25, 0x02, 0x18, 0xe7, 0x8a, 0x62, 0xfd, + 0xda, 0x42, 0x10, 0x9a, 0x82, 0x7f, 0xb9, 0x54, 0x03, 0x2d, 0xdb, 0x14, + 0xf2, 0xcb, 0xeb, 0x52, 0x8a, 0x2b, 0xb3, 0x73, 0xc5, 0x1e, 0x65, 0x0c, + 0x57, 0x17, 0xcc, 0xa3, 0x70, 0xa0, 0x63, 0xa9, 0x68, 0x10, 0x62, 0x8c, + 0x50, 0x02, 0x52, 0x71, 0x40, 0x0d, 0x6a, 0x6d, 0x30, 0x16, 0x8a, 0x00, + 0x4c, 0xd1, 0x9a, 0x40, 0x59, 0xb7, 0x35, 0x75, 0x0d, 0x48, 0x99, 0x65, + 0x0f, 0x15, 0x30, 0x35, 0x48, 0xcd, 0x8e, 0xcd, 0x2e, 0x68, 0x20, 0xe7, + 0xa8, 0x35, 0xa9, 0xd2, 0x14, 0xf5, 0xa8, 0x60, 0x5a, 0x18, 0x0b, 0x51, + 0x4b, 0x8c, 0x54, 0xc4, 0x08, 0x71, 0x4b, 0x8e, 0xd4, 0xc0, 0xec, 0xfc, + 0x2c, 0xfb, 0xb4, 0xfd, 0xbe, 0x9b, 0x8f, 0xeb, 0x5b, 0xe8, 0x32, 0xb5, + 0x9d, 0x2d, 0x8b, 0xa9, 0xb9, 0x62, 0x25, 0xf9, 0x69, 0xd8, 0xad, 0x0c, + 0xc4, 0xa2, 0x80, 0x0a, 0x28, 0x18, 0xda, 0x42, 0x68, 0x01, 0xa5, 0xc7, + 0xad, 0x46, 0x65, 0x51, 0xde, 0xa6, 0xe0, 0x46, 0xd7, 0x48, 0x3b, 0xd4, + 0x7f, 0x6c, 0x07, 0xa5, 0x4d, 0xca, 0xb1, 0x04, 0x97, 0x2c, 0xc3, 0x1d, + 0x2a, 0x21, 0xb8, 0xf5, 0xac, 0xe5, 0x23, 0x2b, 0x83, 0x42, 0x0d, 0x1e, + 0x4a, 0xe2, 0xa2, 0xe4, 0x86, 0xd5, 0xc6, 0x29, 0xca, 0x10, 0x0e, 0xc2, + 0xa5, 0x8c, 0x6b, 0xdd, 0x43, 0x10, 0xe5, 0xaa, 0xa4, 0xda, 0xcc, 0x2b, + 0xc2, 0x02, 0xc7, 0xe9, 0x57, 0x18, 0x5c, 0x46, 0x75, 0xc5, 0xed, 0xc4, + 0xfd, 0x3e, 0x51, 0xed, 0x54, 0x58, 0x36, 0x7e, 0x6a, 0xdb, 0x92, 0xc6, + 0xf0, 0x56, 0x45, 0x73, 0x2a, 0xd7, 0x61, 0xa2, 0xcf, 0xe6, 0xd9, 0x0f, + 0xa9, 0xa7, 0xb3, 0x45, 0xef, 0x11, 0x93, 0x7c, 0xca, 0x6a, 0xc5, 0x97, + 0xfa, 0xb3, 0x5d, 0x95, 0xb6, 0x33, 0x89, 0x99, 0xe2, 0x21, 0x85, 0x8c, + 0xff, 0x00, 0xb4, 0x7f, 0xf4, 0x1a, 0xa9, 0x67, 0x3f, 0x99, 0xf2, 0x9e, + 0xb5, 0xc5, 0x5d, 0x68, 0x99, 0xd1, 0x41, 0xe9, 0x62, 0xde, 0x29, 0x71, + 0x5c, 0xe6, 0xc2, 0xe2, 0x8a, 0x00, 0xb7, 0x07, 0x94, 0x63, 0xe4, 0x73, + 0x50, 0xcc, 0xa1, 0x9f, 0xe5, 0xad, 0x96, 0x91, 0x30, 0x5f, 0x10, 0xc1, + 0x19, 0xae, 0xaf, 0x45, 0x90, 0x7d, 0x93, 0x04, 0xfa, 0xd6, 0x5d, 0x4a, + 0x9e, 0xc5, 0x7d, 0x69, 0x81, 0x85, 0xb9, 0xed, 0x5c, 0xe9, 0x1f, 0x31, + 0xae, 0x8a, 0x9b, 0x19, 0xd2, 0x42, 0x62, 0x9c, 0x38, 0xae, 0x63, 0x71, + 0xe6, 0x53, 0x8e, 0xb5, 0x1b, 0x4b, 0x4c, 0x08, 0xda, 0x5f, 0x7a, 0x89, + 0xa5, 0xf5, 0x34, 0xf9, 0x40, 0x85, 0xee, 0x14, 0x0e, 0xb5, 0x52, 0x5b, + 0xcc, 0x74, 0xad, 0x3d, 0x99, 0x0e, 0xa5, 0x86, 0xf9, 0xef, 0xd7, 0xa1, + 0xa4, 0xf3, 0x19, 0xba, 0x9a, 0xd2, 0x31, 0x31, 0x73, 0xb8, 0x75, 0xa3, + 0x15, 0x56, 0x33, 0x12, 0x92, 0x80, 0x12, 0x8a, 0x00, 0x4a, 0x29, 0x00, + 0x94, 0x50, 0x02, 0x62, 0x99, 0x23, 0x6c, 0x5c, 0x9a, 0x00, 0x8d, 0x27, + 0x0c, 0x71, 0x52, 0x1a, 0x9e, 0xa0, 0x31, 0x87, 0x14, 0x46, 0xbb, 0x85, + 0x50, 0x88, 0x5a, 0xa2, 0x97, 0xee, 0xd3, 0xb0, 0x11, 0x27, 0x5a, 0x47, + 0x5c, 0x49, 0x40, 0x0d, 0x2b, 0xcd, 0x34, 0xad, 0x00, 0x25, 0x14, 0x86, + 0x14, 0xbb, 0xcd, 0x00, 0x3f, 0x79, 0xa4, 0xdc, 0x68, 0xb0, 0x82, 0x8a, + 0x00, 0x4a, 0x28, 0x01, 0x28, 0xa0, 0x02, 0x81, 0x40, 0x16, 0x60, 0xab, + 0x91, 0xd2, 0x02, 0xc2, 0x1a, 0x94, 0x1a, 0x66, 0x6c, 0x93, 0x34, 0xb4, + 0x12, 0x73, 0xf4, 0x55, 0x9b, 0x8a, 0x06, 0x4d, 0x48, 0x8a, 0x43, 0x50, + 0x05, 0x81, 0x19, 0xa5, 0xfb, 0x39, 0xf4, 0xfd, 0x2a, 0x40, 0x51, 0x68, + 0xcc, 0x71, 0xe5, 0xb7, 0xfd, 0xf3, 0x56, 0xd3, 0x49, 0xb8, 0x93, 0xee, + 0xc7, 0x81, 0x5a, 0x72, 0xf7, 0x11, 0xd0, 0x68, 0x56, 0xb2, 0xd9, 0xab, + 0x09, 0x40, 0x00, 0xfb, 0xfb, 0xd6, 0xe4, 0x2c, 0x37, 0x62, 0xb1, 0xb7, + 0x29, 0x4d, 0xdc, 0xd0, 0x81, 0x72, 0x28, 0x74, 0xa7, 0x12, 0x59, 0x1e, + 0xda, 0x6d, 0x30, 0x1b, 0x49, 0x4c, 0x0a, 0xd7, 0x53, 0xf9, 0x29, 0xba, + 0xb3, 0x9f, 0x53, 0x3d, 0x85, 0x4c, 0xf4, 0x45, 0xc1, 0x5c, 0xae, 0xf7, + 0xf2, 0x1e, 0xf5, 0x11, 0xb8, 0x73, 0xde, 0xb1, 0xb9, 0xb2, 0x89, 0x13, + 0x3b, 0x1e, 0xf4, 0xd1, 0x76, 0xf0, 0xfb, 0xd3, 0xb5, 0xd1, 0x13, 0x1c, + 0xba, 0xba, 0x7f, 0x12, 0x55, 0xd8, 0xae, 0xbc, 0xc8, 0xf7, 0x20, 0x15, + 0x9f, 0x2e, 0xa6, 0x1c, 0xa5, 0x49, 0x35, 0xa4, 0x47, 0xda, 0x62, 0x39, + 0xa8, 0x5f, 0x5c, 0x6f, 0xe1, 0x86, 0xaa, 0x54, 0x83, 0x94, 0x81, 0xb5, + 0x7b, 0xa6, 0xfb, 0xaa, 0x17, 0xf1, 0xa8, 0x1e, 0xee, 0xf2, 0x6f, 0xf9, + 0x6a, 0x6b, 0x58, 0x53, 0x8f, 0x50, 0xe4, 0x64, 0x62, 0xda, 0x59, 0x1b, + 0x2e, 0x33, 0x53, 0x7d, 0x9c, 0xf1, 0xb4, 0x55, 0x5d, 0x5c, 0xd3, 0x93, + 0x42, 0x58, 0x93, 0xd6, 0x96, 0xe1, 0x7f, 0x77, 0x53, 0xcd, 0xa9, 0xa7, + 0x2d, 0x91, 0x89, 0x30, 0x09, 0x21, 0x18, 0xad, 0xed, 0x12, 0xec, 0xac, + 0x5b, 0x47, 0x6f, 0xf1, 0xaa, 0x62, 0x5b, 0x16, 0x3c, 0xd0, 0xd1, 0x90, + 0x5a, 0xae, 0xe9, 0xa7, 0xf7, 0x67, 0x15, 0xd5, 0x57, 0xe1, 0x25, 0x10, + 0xeb, 0x10, 0x79, 0xb0, 0x73, 0xda, 0xa8, 0x5b, 0x5b, 0x79, 0x6d, 0x5c, + 0x55, 0x76, 0xb1, 0xad, 0x12, 0x69, 0x25, 0x58, 0xbe, 0xf5, 0x31, 0x2e, + 0x91, 0xa4, 0x0b, 0x9e, 0xbe, 0xd5, 0x8f, 0x26, 0x97, 0x2f, 0x9f, 0x5b, + 0x17, 0x15, 0x72, 0x29, 0x7c, 0xba, 0x94, 0x50, 0xe5, 0x87, 0x34, 0xf1, + 0x16, 0x0d, 0x5d, 0xc8, 0x1f, 0x80, 0x2a, 0x54, 0xb8, 0xf2, 0xc7, 0x07, + 0x15, 0x20, 0x43, 0x35, 0xce, 0xfe, 0xa7, 0x35, 0x58, 0x9a, 0x72, 0x63, + 0x5a, 0x0c, 0x32, 0x01, 0x51, 0xb4, 0xc2, 0x9a, 0x8d, 0xc7, 0xcd, 0x62, + 0x33, 0x3e, 0x7b, 0x54, 0x4d, 0x31, 0xad, 0x55, 0x33, 0x17, 0x54, 0x89, + 0xa4, 0x3e, 0xb5, 0x19, 0x35, 0xa2, 0x89, 0x93, 0x91, 0x0b, 0x1a, 0x87, + 0x6e, 0xe7, 0xa6, 0x22, 0x6a, 0x70, 0x15, 0x20, 0x3b, 0x14, 0x62, 0xa8, + 0x03, 0x61, 0xa6, 0x62, 0x9b, 0x40, 0x25, 0x18, 0xa8, 0x01, 0x76, 0x1a, + 0x6e, 0xda, 0x2c, 0x01, 0xb6, 0x97, 0x6d, 0x20, 0x0c, 0x55, 0x5b, 0xe1, + 0xfb, 0xa3, 0x4d, 0x6e, 0x26, 0x67, 0x03, 0xf3, 0x0a, 0xb8, 0x67, 0x18, + 0x14, 0x9a, 0x18, 0x79, 0xdb, 0xfb, 0x56, 0xbe, 0x9d, 0x68, 0x02, 0x92, + 0xfc, 0xd0, 0x22, 0x79, 0xac, 0x23, 0x6c, 0xf1, 0x59, 0x57, 0x5a, 0x54, + 0xa3, 0x98, 0xfa, 0x55, 0xa7, 0xdc, 0xcc, 0xa0, 0xd6, 0xb2, 0xc6, 0xdf, + 0x32, 0xd3, 0x58, 0x53, 0xb1, 0x57, 0x19, 0x46, 0x29, 0x58, 0xa1, 0x92, + 0x27, 0xa5, 0x45, 0x40, 0x05, 0x15, 0x23, 0x1d, 0x45, 0x02, 0x0a, 0x29, + 0x80, 0xb4, 0xa3, 0x14, 0x80, 0x09, 0xe2, 0x9b, 0x40, 0x05, 0x2d, 0x00, + 0x4f, 0x05, 0x5b, 0x4a, 0x56, 0x11, 0x32, 0x9a, 0x98, 0x1a, 0x09, 0x1e, + 0x0d, 0x3f, 0x34, 0xc9, 0x32, 0xc5, 0xbe, 0xee, 0x8a, 0x7f, 0x0a, 0x9a, + 0x3d, 0x3e, 0x57, 0xe9, 0x1b, 0x7e, 0x55, 0xb1, 0xa1, 0x7a, 0x2d, 0x0a, + 0xe5, 0xbf, 0xe5, 0x98, 0xfc, 0x4d, 0x5e, 0x8b, 0xc3, 0x6d, 0xff, 0x00, + 0x2d, 0x24, 0xc7, 0xe4, 0x69, 0x0a, 0xe5, 0xd8, 0xb4, 0x0b, 0x65, 0xea, + 0xc4, 0xfe, 0x15, 0x72, 0x2d, 0x26, 0xd6, 0x3e, 0x91, 0x0a, 0x9e, 0x61, + 0x97, 0x62, 0xb6, 0x89, 0x3f, 0x80, 0x0a, 0xb2, 0x15, 0x00, 0xed, 0x51, + 0x70, 0xb0, 0xc2, 0x15, 0x8d, 0x2a, 0x42, 0xa0, 0xe6, 0x86, 0xc6, 0x8b, + 0xf6, 0xdd, 0x6a, 0x76, 0x5a, 0x51, 0x19, 0x13, 0xa7, 0x15, 0x55, 0xea, + 0x84, 0x32, 0x9a, 0xdf, 0x76, 0x80, 0x33, 0x2e, 0xfe, 0x65, 0x35, 0x90, + 0xdc, 0x1a, 0x55, 0x36, 0x34, 0xa4, 0x25, 0x15, 0x81, 0xb3, 0x62, 0x54, + 0x6c, 0xa0, 0xd6, 0x88, 0xcd, 0x90, 0xb4, 0x00, 0xfa, 0xd4, 0x5f, 0x67, + 0xbb, 0x1f, 0xea, 0xe5, 0x6c, 0x7d, 0x6a, 0xf4, 0xea, 0x40, 0x0b, 0x4b, + 0x8d, 0xf9, 0x90, 0x7e, 0xb5, 0x37, 0x90, 0x07, 0x50, 0x2a, 0x64, 0x52, + 0x06, 0x01, 0x50, 0x9c, 0x53, 0x22, 0x7c, 0xb8, 0x15, 0x3d, 0x2e, 0x52, + 0x65, 0xc5, 0x15, 0x25, 0x67, 0x73, 0x42, 0xb9, 0xf9, 0x24, 0xa5, 0x97, + 0xe7, 0x89, 0x87, 0xad, 0x1d, 0x41, 0xec, 0x64, 0x4d, 0x06, 0xf9, 0x73, + 0xd6, 0xb4, 0xf4, 0x48, 0x17, 0xcc, 0x2a, 0x6b, 0x49, 0xcf, 0x42, 0x63, + 0x13, 0x7d, 0x74, 0x24, 0x97, 0x90, 0xd8, 0xab, 0x96, 0xda, 0x52, 0x5a, + 0x7f, 0x1e, 0x6b, 0x7f, 0x6b, 0xcd, 0x1b, 0x18, 0x14, 0xb5, 0x3d, 0x85, + 0x76, 0xad, 0x50, 0x48, 0xeb, 0x0a, 0x86, 0xf0, 0x21, 0xb9, 0xb5, 0xf3, + 0x31, 0xed, 0x51, 0x45, 0x63, 0x87, 0x07, 0x9a, 0x97, 0x2d, 0x07, 0x15, + 0xa9, 0xa2, 0x30, 0x00, 0xa7, 0x64, 0x56, 0x45, 0x89, 0xe6, 0x62, 0x90, + 0xcb, 0x4c, 0x08, 0xda, 0x5f, 0x7a, 0x88, 0xcb, 0x5a, 0x28, 0xdc, 0x87, + 0x3b, 0x0c, 0x32, 0x55, 0x71, 0x2b, 0x33, 0x11, 0x5b, 0x2a, 0x66, 0x4e, + 0xa0, 0xa6, 0xa2, 0x7e, 0x95, 0xa2, 0x46, 0x77, 0x0e, 0xd4, 0xd3, 0x48, + 0x08, 0xcd, 0x30, 0xd5, 0x6c, 0x22, 0xbc, 0x8d, 0xe9, 0x4b, 0x1d, 0x43, + 0x1a, 0x26, 0x02, 0xa4, 0x55, 0xa1, 0x03, 0x2c, 0x2d, 0xb1, 0x63, 0xc0, + 0xab, 0x70, 0xe9, 0xa5, 0xba, 0xd3, 0x62, 0x2e, 0x47, 0xa7, 0x44, 0xbd, + 0xab, 0x3b, 0x53, 0xb6, 0xdb, 0x36, 0x54, 0x7f, 0x9c, 0x55, 0x45, 0x92, + 0x54, 0x4b, 0x66, 0x6e, 0x82, 0xad, 0xc1, 0xa7, 0x16, 0x3f, 0x30, 0xa8, + 0x2c, 0xbf, 0x0e, 0x99, 0x12, 0x8f, 0x99, 0x45, 0x67, 0x6a, 0x90, 0x2c, + 0x53, 0xf0, 0x38, 0xc0, 0xa6, 0x49, 0x40, 0xe0, 0x77, 0xa6, 0x19, 0x14, + 0x56, 0x05, 0x91, 0x35, 0xc0, 0xed, 0x55, 0xa6, 0x9b, 0xcc, 0x18, 0x22, + 0x98, 0x58, 0x80, 0xaa, 0xfa, 0x50, 0x2a, 0xc4, 0x68, 0xe9, 0x96, 0x62, + 0x59, 0x33, 0xda, 0xb7, 0x02, 0x15, 0x14, 0x21, 0x31, 0xd9, 0x22, 0x93, + 0x23, 0xd2, 0x8b, 0x10, 0x35, 0x91, 0x58, 0x55, 0x77, 0xb7, 0x4e, 0xe8, + 0x29, 0x05, 0x8a, 0x72, 0xe9, 0xf0, 0xb7, 0x6c, 0x1a, 0xab, 0x2e, 0x9b, + 0x93, 0xf2, 0x1a, 0xab, 0xf7, 0x0d, 0x86, 0xa6, 0x9b, 0x37, 0x4c, 0x52, + 0x36, 0x89, 0x26, 0x33, 0x9a, 0xad, 0x02, 0xe5, 0x39, 0x74, 0xf9, 0xa3, + 0xed, 0x9a, 0xa8, 0x46, 0x38, 0xa1, 0xd8, 0xa4, 0xc2, 0x96, 0xa4, 0x61, + 0x4b, 0x40, 0x05, 0x14, 0x80, 0x29, 0x68, 0x10, 0x94, 0xb4, 0x01, 0x2c, + 0x55, 0x6d, 0x05, 0x00, 0x4e, 0x12, 0x9f, 0x82, 0x3b, 0x50, 0x48, 0xe0, + 0x69, 0xf9, 0xa4, 0x23, 0xa8, 0x8a, 0xd6, 0x24, 0xfb, 0xb0, 0xaf, 0xe5, + 0x56, 0x15, 0x1b, 0xb7, 0x15, 0x77, 0x2a, 0xc3, 0xf6, 0x1f, 0xe2, 0x6a, + 0x77, 0xca, 0x2a, 0x6e, 0x50, 0xbb, 0x80, 0xa5, 0xf3, 0x28, 0x01, 0x3c, + 0xc6, 0xa4, 0xcd, 0x21, 0x8f, 0x8f, 0xef, 0x55, 0xc5, 0xcd, 0x20, 0x2c, + 0x47, 0xf2, 0x9a, 0x95, 0xa4, 0xf7, 0xa0, 0x08, 0x5e, 0x74, 0x1d, 0x5a, + 0xa9, 0xbc, 0xb9, 0x7e, 0x3a, 0x55, 0x08, 0x78, 0xe6, 0x91, 0xba, 0x53, + 0x40, 0x67, 0x4e, 0x39, 0x22, 0xb1, 0xa7, 0xe3, 0x35, 0x53, 0xd8, 0xba, + 0x65, 0x4f, 0x30, 0xf3, 0xcd, 0x20, 0x91, 0x8e, 0x79, 0xac, 0xac, 0x5b, + 0x91, 0x07, 0xda, 0x1c, 0xb1, 0xe6, 0xad, 0xa6, 0xe2, 0xa3, 0x9a, 0x87, + 0xa0, 0x22, 0x5c, 0x62, 0xac, 0x47, 0xc2, 0x52, 0x18, 0xbb, 0xaa, 0xb3, + 0x55, 0x81, 0x0c, 0xdf, 0x70, 0xd5, 0x68, 0xb8, 0x93, 0xf1, 0xaa, 0xe8, + 0x4a, 0xf8, 0x8d, 0x18, 0x46, 0x6a, 0x56, 0x5e, 0x2b, 0x9d, 0x1a, 0xb2, + 0xb4, 0xe2, 0x84, 0x39, 0x5a, 0x63, 0xe8, 0x55, 0x54, 0xcb, 0x9e, 0xbd, + 0x6a, 0xed, 0xac, 0x7b, 0x24, 0xc8, 0xa1, 0xb2, 0xba, 0x1a, 0xf0, 0x4f, + 0x2a, 0xae, 0x03, 0x9a, 0x73, 0xcc, 0xcd, 0xf7, 0x9c, 0x9a, 0xd1, 0x33, + 0x3b, 0x15, 0x9b, 0x14, 0xda, 0x86, 0x5a, 0x13, 0x34, 0xd2, 0xe0, 0x52, + 0x48, 0x06, 0x99, 0x85, 0x47, 0xe7, 0x56, 0x8a, 0x99, 0x9b, 0xa8, 0x34, + 0xc8, 0xde, 0xb4, 0xcc, 0x9a, 0xd1, 0x53, 0x46, 0x4e, 0x6c, 0x29, 0x2b, + 0x4b, 0x12, 0x25, 0x41, 0xd2, 0x5a, 0xa1, 0x12, 0x1a, 0x8e, 0xa4, 0x61, + 0x4c, 0x34, 0x01, 0x19, 0xa8, 0x65, 0x38, 0x14, 0xc4, 0x44, 0x16, 0xa4, + 0x44, 0xe6, 0xa4, 0x65, 0xc8, 0xa2, 0x26, 0xb4, 0xad, 0x2c, 0xc7, 0xf1, + 0xd4, 0x81, 0xa2, 0x91, 0x2c, 0x7d, 0x05, 0x3f, 0xb5, 0x31, 0x08, 0x2a, + 0x39, 0xa0, 0x59, 0x3e, 0xf0, 0xa1, 0x08, 0x45, 0x89, 0x13, 0xa2, 0xd4, + 0x9d, 0xa9, 0x0c, 0x55, 0xac, 0x2f, 0x12, 0x39, 0x8f, 0xcb, 0x23, 0xd7, + 0xfa, 0x55, 0x44, 0x4c, 0xe7, 0xcc, 0xa4, 0xf5, 0xa8, 0xcb, 0x66, 0xa2, + 0xc6, 0x82, 0x66, 0x93, 0xbd, 0x20, 0x1a, 0x4d, 0x0b, 0xd6, 0x98, 0x8d, + 0xed, 0x24, 0x6c, 0x8b, 0x35, 0xac, 0x1e, 0x84, 0x43, 0x17, 0x83, 0x4d, + 0xf2, 0xc1, 0xa6, 0x21, 0xa6, 0x1f, 0x43, 0x49, 0xe5, 0x37, 0xd6, 0x91, + 0x23, 0xbc, 0x8c, 0x8e, 0x95, 0x1b, 0x42, 0x16, 0x84, 0x03, 0x37, 0x62, + 0xa2, 0x79, 0xf8, 0xe6, 0x81, 0x99, 0x9a, 0x84, 0xf8, 0xe8, 0x6b, 0x0e, + 0x6e, 0x64, 0xcd, 0x31, 0xa1, 0x94, 0xa2, 0x82, 0xc7, 0x51, 0x41, 0x21, + 0x45, 0x31, 0x8b, 0x8a, 0x31, 0x48, 0x44, 0x89, 0x03, 0xbf, 0x41, 0x56, + 0xe2, 0xd3, 0xff, 0x00, 0xbc, 0x68, 0x25, 0x96, 0xd2, 0xd2, 0x30, 0xbd, + 0x2a, 0x74, 0x86, 0x35, 0xfe, 0x11, 0x48, 0x90, 0x64, 0xe6, 0x8e, 0x94, + 0xc4, 0x47, 0x8c, 0xd3, 0x84, 0x74, 0x86, 0x76, 0x1b, 0xa8, 0xc9, 0xf5, + 0xa0, 0xd4, 0x5a, 0x31, 0x48, 0x07, 0x88, 0xd8, 0xf6, 0xa9, 0x16, 0xdd, + 0xcd, 0x30, 0x24, 0x16, 0x9f, 0xde, 0x6a, 0x7f, 0x95, 0x02, 0x7d, 0xe2, + 0x28, 0x01, 0x0c, 0xf6, 0xd1, 0xf4, 0x1f, 0xa5, 0x30, 0xea, 0x3f, 0xdd, + 0x8e, 0x8b, 0x01, 0x19, 0xbd, 0xb8, 0x6e, 0x9c, 0x54, 0x12, 0x35, 0xcb, + 0x7f, 0x1d, 0x55, 0x90, 0x08, 0x90, 0x48, 0xdf, 0x78, 0xd5, 0xa5, 0x4c, + 0x52, 0x02, 0x55, 0xe2, 0xa5, 0x1c, 0xd0, 0x05, 0x0b, 0x94, 0xf9, 0xab, + 0x16, 0xfe, 0x2f, 0xdd, 0x33, 0x55, 0x30, 0x83, 0x33, 0xd1, 0x73, 0x4f, + 0xf2, 0x30, 0xbd, 0xf3, 0x58, 0xdc, 0xd8, 0xab, 0xe4, 0xb0, 0x6e, 0x6a, + 0xdd, 0xb1, 0xc8, 0xc1, 0xed, 0x4a, 0x48, 0x22, 0x49, 0x3f, 0x4e, 0x3b, + 0xd4, 0xe3, 0xee, 0x54, 0xb1, 0x8a, 0x9c, 0xd3, 0xa4, 0x87, 0x8c, 0xd3, + 0x4c, 0x19, 0x46, 0x61, 0x9a, 0xaa, 0x99, 0xf3, 0x2a, 0xfa, 0x02, 0x34, + 0x60, 0x3d, 0x2a, 0xc6, 0x6b, 0x13, 0x46, 0x41, 0x24, 0x6c, 0xfd, 0x05, + 0x3d, 0x2d, 0x8f, 0x7a, 0x4c, 0x11, 0x20, 0xb6, 0x45, 0xa7, 0x84, 0x0b, + 0x40, 0xc7, 0x6e, 0xc5, 0x34, 0xc9, 0x56, 0xa2, 0x27, 0x24, 0x30, 0xcb, + 0x4c, 0xf3, 0x0d, 0x6a, 0xa9, 0x99, 0x3a, 0x83, 0x79, 0x3d, 0xe8, 0x22, + 0xad, 0x44, 0xca, 0xe3, 0x29, 0xb5, 0x68, 0x90, 0xa5, 0xa0, 0x61, 0x45, + 0x20, 0x0a, 0xaf, 0xff, 0x00, 0x2d, 0xa9, 0x8c, 0x93, 0x14, 0xcc, 0x73, + 0x50, 0x01, 0xb6, 0x9a, 0x56, 0x8b, 0x81, 0x14, 0x9f, 0x28, 0xa8, 0x02, + 0x17, 0x6c, 0xd5, 0x08, 0x9a, 0x1b, 0x76, 0x90, 0xf4, 0xab, 0x70, 0xd8, + 0x3e, 0xf1, 0x52, 0x33, 0x4a, 0x1b, 0x60, 0x95, 0x61, 0x78, 0x34, 0x84, + 0x4f, 0x8c, 0x8a, 0x5c, 0x53, 0x00, 0xc5, 0x14, 0x80, 0x61, 0x14, 0x62, + 0x90, 0x0b, 0x59, 0x1a, 0xfd, 0xa9, 0xb9, 0x48, 0xb1, 0xd9, 0x8f, 0xf2, + 0xab, 0x83, 0xb1, 0x32, 0x31, 0x9a, 0xc2, 0x28, 0xa1, 0xf9, 0x8e, 0x5a, + 0xb3, 0x5e, 0xd7, 0x93, 0x83, 0x51, 0x72, 0xc6, 0x7d, 0x9d, 0x87, 0x4a, + 0x6e, 0xc7, 0x14, 0x05, 0xc3, 0x69, 0xee, 0x28, 0x14, 0x86, 0x6f, 0xe9, + 0xcf, 0xfb, 0xac, 0x55, 0xe0, 0xd4, 0xd1, 0x0c, 0x78, 0x6a, 0x76, 0xea, + 0x64, 0x86, 0xea, 0x43, 0x2e, 0x29, 0x0c, 0x3e, 0xd1, 0x50, 0xbc, 0xc5, + 0xa8, 0x10, 0xcd, 0xa6, 0xab, 0xcf, 0xc5, 0x00, 0x64, 0x6a, 0x1c, 0xf1, + 0x54, 0x7c, 0xba, 0x2e, 0x68, 0x90, 0x9e, 0x55, 0x37, 0xcb, 0x22, 0x80, + 0xb0, 0x98, 0x34, 0xf1, 0x1b, 0x1e, 0x94, 0x08, 0x7a, 0xdb, 0x48, 0xdd, + 0xaa, 0xc2, 0x69, 0xec, 0x7a, 0x9a, 0xa2, 0x2e, 0x4e, 0x9a, 0x72, 0xf7, + 0xa9, 0xd2, 0xd6, 0x34, 0xfe, 0x1a, 0x9b, 0x88, 0x97, 0x66, 0x29, 0x76, + 0xd0, 0x21, 0xd4, 0x50, 0x20, 0xa4, 0xc5, 0x00, 0x20, 0x14, 0xf0, 0x28, + 0x03, 0xb1, 0x5b, 0x67, 0xff, 0x00, 0x26, 0xa5, 0x16, 0x9e, 0xad, 0x41, + 0xa8, 0xef, 0x2e, 0x04, 0xfb, 0xc4, 0x1a, 0x69, 0xb9, 0xb6, 0x8f, 0xa0, + 0xfd, 0x28, 0x18, 0xc3, 0xa8, 0xff, 0x00, 0x71, 0x2a, 0x23, 0x7b, 0x70, + 0xdd, 0x38, 0xa3, 0x94, 0x06, 0x7f, 0xa4, 0x3f, 0x56, 0x34, 0xa2, 0xd8, + 0x9e, 0xa6, 0x98, 0x12, 0xad, 0xb2, 0xd4, 0xab, 0x02, 0xff, 0x00, 0x76, + 0x80, 0x24, 0x11, 0xd4, 0x4c, 0x3f, 0x79, 0x40, 0x12, 0x85, 0xe2, 0x97, + 0xcb, 0x34, 0x00, 0xf1, 0x15, 0x3f, 0x6e, 0x28, 0x02, 0xac, 0xe3, 0x71, + 0xac, 0x0d, 0x53, 0x70, 0x2c, 0x81, 0x4e, 0x18, 0x7a, 0x56, 0x9b, 0x89, + 0x14, 0xe0, 0x42, 0x3a, 0x8a, 0x9f, 0x8a, 0xe6, 0x92, 0x3a, 0x11, 0x0c, + 0xcc, 0x3a, 0x54, 0x70, 0xfc, 0x87, 0x9a, 0x4c, 0x48, 0x25, 0x6c, 0xb5, + 0x4e, 0x25, 0xf9, 0x40, 0xc5, 0x12, 0x2d, 0x12, 0xad, 0x49, 0xf3, 0x15, + 0xa5, 0x70, 0x21, 0xfb, 0x23, 0x37, 0xb5, 0x2a, 0x69, 0xc8, 0xa7, 0x27, + 0x93, 0x4f, 0x98, 0x14, 0x49, 0xc5, 0xbc, 0x6b, 0xda, 0x9d, 0xb5, 0x45, + 0x49, 0x41, 0xb8, 0x0a, 0x6e, 0xfa, 0xb5, 0x02, 0x39, 0xc4, 0xdd, 0x49, + 0x9a, 0xd1, 0x40, 0xc9, 0xd4, 0x1b, 0x4c, 0xad, 0x6c, 0x67, 0x70, 0xa4, + 0xa6, 0x01, 0x4a, 0x4d, 0x48, 0xc8, 0xe9, 0xb4, 0xc4, 0x34, 0x9a, 0x7a, + 0xf3, 0x48, 0x64, 0xde, 0x53, 0x7a, 0x53, 0x5a, 0x36, 0x03, 0xa5, 0x48, + 0x11, 0x66, 0xa0, 0x6f, 0xf5, 0xb4, 0xc0, 0x92, 0x9a, 0x6a, 0x46, 0x3d, + 0x69, 0x0d, 0x08, 0x08, 0x7c, 0x97, 0x9d, 0xba, 0x71, 0x56, 0xe3, 0xb1, + 0xe3, 0x9a, 0xa6, 0xc0, 0xb7, 0x6f, 0x6e, 0xb0, 0xf4, 0x15, 0x6b, 0x15, + 0x00, 0x3b, 0x14, 0x95, 0x42, 0x26, 0x46, 0xe2, 0x97, 0x75, 0x48, 0xc6, + 0x97, 0xa6, 0xef, 0xa0, 0x04, 0xdf, 0x4e, 0x06, 0x80, 0x0c, 0xd6, 0x76, + 0xaf, 0x26, 0xc8, 0x01, 0x1e, 0xf5, 0x48, 0x96, 0x60, 0xc8, 0xed, 0x25, + 0x20, 0x84, 0x9a, 0x82, 0x8b, 0x09, 0x67, 0xbc, 0x72, 0x0d, 0x59, 0x4d, + 0x35, 0x3a, 0xbd, 0x17, 0x01, 0xb7, 0x56, 0x91, 0x0b, 0x77, 0xc0, 0x19, + 0xc7, 0x15, 0xcd, 0x79, 0x4c, 0x1c, 0xf1, 0xdc, 0xd5, 0x74, 0x25, 0x6e, + 0x6a, 0xd8, 0xb6, 0xd5, 0xad, 0x28, 0xdf, 0x75, 0x24, 0x36, 0x49, 0x4f, + 0x0d, 0x54, 0x40, 0xd6, 0x7a, 0x88, 0xe6, 0x90, 0x08, 0xab, 0x52, 0xaa, + 0xd2, 0x01, 0x64, 0xe0, 0x56, 0x6d, 0xdc, 0xc1, 0x01, 0x26, 0x80, 0x31, + 0x66, 0x9c, 0x49, 0x25, 0x34, 0x73, 0x52, 0xcd, 0x90, 0xb4, 0x99, 0xa2, + 0xc0, 0xc7, 0x62, 0xa4, 0x49, 0x36, 0xf4, 0xa9, 0xdc, 0x56, 0x2c, 0xc7, + 0x77, 0x8e, 0xd5, 0x66, 0x3b, 0x85, 0x7a, 0x35, 0x25, 0xc4, 0x96, 0x93, + 0x35, 0xa1, 0x02, 0x6e, 0x14, 0x9b, 0xa8, 0x24, 0x5a, 0x28, 0x00, 0xc9, + 0x1d, 0xa9, 0x54, 0xe7, 0xb5, 0x02, 0x25, 0xc5, 0x19, 0xc5, 0x02, 0x3a, + 0x83, 0x77, 0x70, 0xdd, 0x38, 0xa6, 0xfe, 0xfd, 0xfa, 0xb9, 0xa6, 0x6e, + 0x28, 0xb7, 0xcf, 0x5a, 0x91, 0x6d, 0x94, 0x52, 0x02, 0x65, 0x84, 0x7a, + 0x53, 0x84, 0x74, 0x08, 0x77, 0x97, 0x4b, 0x85, 0xfe, 0xf5, 0x03, 0x0f, + 0x36, 0x35, 0xa4, 0xfb, 0x48, 0xec, 0x28, 0x00, 0xf3, 0x9c, 0xf6, 0xc5, + 0x39, 0x23, 0x24, 0xe4, 0xd0, 0x05, 0x90, 0x38, 0xa4, 0xa0, 0x03, 0x35, + 0x0c, 0x92, 0xd3, 0x11, 0x09, 0xa8, 0x9e, 0x14, 0x6e, 0xa2, 0x98, 0x15, + 0xa5, 0xb4, 0x5c, 0x70, 0x2b, 0x3e, 0xe2, 0xd4, 0xaf, 0x4a, 0x24, 0x69, + 0x06, 0x57, 0xfb, 0x3e, 0xe3, 0x52, 0xad, 0x9d, 0x73, 0xb3, 0x72, 0x45, + 0xb5, 0x5a, 0x78, 0x85, 0x45, 0x48, 0x0f, 0xc0, 0x14, 0x6e, 0x14, 0xec, + 0x31, 0x4b, 0x54, 0x7b, 0xeb, 0x45, 0x03, 0x27, 0x31, 0xbb, 0x8d, 0x27, + 0x35, 0xa2, 0x81, 0x9f, 0x38, 0x51, 0x56, 0x48, 0x51, 0x55, 0x61, 0x08, + 0x69, 0xb4, 0x00, 0x86, 0x9b, 0x9a, 0x40, 0x47, 0xe6, 0x8a, 0x63, 0x4c, + 0x2b, 0x3b, 0x94, 0x46, 0xd3, 0x0a, 0x8f, 0xce, 0x1e, 0xb4, 0x5c, 0x00, + 0x48, 0x1a, 0xb5, 0x6d, 0xa3, 0x53, 0x8a, 0xce, 0x52, 0x2a, 0x31, 0x3a, + 0x6b, 0xbd, 0x35, 0x52, 0x34, 0x2b, 0x8e, 0x14, 0x93, 0x59, 0x3a, 0x90, + 0x48, 0x2d, 0xc9, 0x26, 0xaa, 0x0e, 0xe9, 0x12, 0xce, 0x73, 0xcc, 0xf3, + 0x24, 0x24, 0x74, 0xa6, 0xb9, 0xf9, 0xa9, 0xdc, 0x76, 0x26, 0x19, 0x22, + 0x94, 0xc7, 0xc5, 0x4a, 0x60, 0x3a, 0x3c, 0x53, 0xe0, 0x29, 0x2b, 0x9f, + 0x6a, 0x04, 0x5c, 0x50, 0x07, 0x4a, 0x90, 0x55, 0x00, 0xb9, 0xc5, 0x2f, + 0x9a, 0x28, 0x01, 0x0c, 0xb5, 0x19, 0x91, 0x8d, 0x00, 0x27, 0x98, 0xde, + 0xb5, 0x34, 0x79, 0x22, 0x90, 0xc9, 0x31, 0x4d, 0xa0, 0x42, 0x35, 0x3e, + 0x3a, 0x40, 0x3f, 0x15, 0x4b, 0x52, 0x8c, 0x3a, 0xaa, 0x9f, 0xf3, 0xc5, + 0x5a, 0x21, 0x95, 0x3e, 0xc0, 0x31, 0xd6, 0xa5, 0x4b, 0x55, 0x5a, 0x86, + 0xcb, 0x25, 0x1b, 0x57, 0xa5, 0x31, 0xde, 0xa4, 0x0c, 0x9b, 0xc9, 0x82, + 0x9f, 0xbd, 0x54, 0x0b, 0x03, 0xd2, 0xac, 0x09, 0xed, 0x31, 0xe6, 0x63, + 0xd6, 0xb4, 0x56, 0x3a, 0x98, 0xb0, 0x63, 0xfa, 0x75, 0xa2, 0xb5, 0x33, + 0x12, 0xa2, 0x90, 0xf1, 0xc5, 0x24, 0x03, 0xa1, 0x27, 0x6e, 0x0f, 0x5a, + 0xb0, 0x38, 0x14, 0x86, 0x57, 0xb8, 0x7d, 0xdf, 0x2d, 0x65, 0xdf, 0x63, + 0xcb, 0xda, 0x68, 0x1a, 0x32, 0x9a, 0x2a, 0x45, 0x14, 0x8b, 0x1f, 0x49, + 0x8e, 0x68, 0x28, 0x90, 0x0e, 0x29, 0x6a, 0x09, 0x03, 0x42, 0xcb, 0xb1, + 0xb3, 0x4e, 0xc2, 0xb9, 0x60, 0x5d, 0xb9, 0xa7, 0x89, 0x19, 0xba, 0xb5, + 0x55, 0x88, 0x14, 0xff, 0x00, 0xbf, 0x4e, 0x8c, 0x65, 0xaa, 0xac, 0x49, + 0x6d, 0x13, 0x8a, 0x7f, 0x14, 0x99, 0x21, 0x8a, 0x31, 0x40, 0x0b, 0x51, + 0x3d, 0x16, 0x03, 0xb4, 0x09, 0x4f, 0x09, 0x41, 0xb0, 0xec, 0x01, 0xde, + 0x93, 0xcc, 0x8c, 0x50, 0x02, 0x1b, 0x81, 0xd9, 0x69, 0xbe, 0x73, 0x9e, + 0x82, 0x80, 0x1a, 0x7c, 0xe3, 0xde, 0xb9, 0xfb, 0x9d, 0x53, 0xca, 0xb8, + 0x2a, 0xd2, 0x55, 0x72, 0xfb, 0xa2, 0x4f, 0xde, 0xb1, 0xa7, 0xa7, 0xde, + 0xdb, 0xdc, 0x60, 0x6f, 0x15, 0xae, 0x91, 0x2d, 0x62, 0xa5, 0xd0, 0xb9, + 0x44, 0x94, 0x01, 0x4e, 0xad, 0x09, 0x17, 0x35, 0x1b, 0x1a, 0x04, 0x42, + 0xcf, 0x51, 0xd3, 0x00, 0xa2, 0x81, 0x8c, 0x35, 0x04, 0xb1, 0xe6, 0x98, + 0xd1, 0x5b, 0x6f, 0xb5, 0x1b, 0x4d, 0x65, 0xca, 0x6d, 0xcc, 0x34, 0x8a, + 0x84, 0xb9, 0xdf, 0x8a, 0xb5, 0x4c, 0x8f, 0x68, 0x32, 0xe5, 0xca, 0xa1, + 0xc5, 0x16, 0xfb, 0xb6, 0xf3, 0x56, 0xe3, 0x62, 0x39, 0xae, 0x4a, 0x6a, + 0x3a, 0x64, 0x85, 0x14, 0xc0, 0x28, 0xa0, 0x41, 0x45, 0x50, 0x08, 0x4d, + 0x30, 0x9a, 0x43, 0x23, 0x67, 0xc5, 0x20, 0xff, 0x00, 0x55, 0x4e, 0xc0, + 0x67, 0xaa, 0x33, 0xb9, 0xe6, 0xa0, 0x96, 0x62, 0xa7, 0x07, 0xad, 0x4c, + 0xa1, 0xd4, 0xab, 0x90, 0x99, 0x58, 0xf7, 0xa8, 0xdd, 0xda, 0xb9, 0xc0, + 0x96, 0xd2, 0x6f, 0x9f, 0x69, 0xef, 0x5b, 0x30, 0xce, 0xf1, 0x91, 0xcd, + 0x46, 0xe5, 0xa6, 0x69, 0x5c, 0xeb, 0xf7, 0xed, 0x6d, 0xb3, 0x78, 0x03, + 0x6e, 0xda, 0xe7, 0xb5, 0x3b, 0xcb, 0x89, 0xf8, 0x92, 0x53, 0x8f, 0x4a, + 0xb8, 0xab, 0x0f, 0xcc, 0x5b, 0x1c, 0x2a, 0x7c, 0xd5, 0x25, 0xcc, 0xa9, + 0xb7, 0xe5, 0xa8, 0x4d, 0x89, 0x8f, 0xfb, 0x7a, 0x05, 0xe0, 0x54, 0x2f, + 0x7c, 0xc6, 0x9a, 0x89, 0x44, 0x6d, 0x23, 0x95, 0xeb, 0x5a, 0x3a, 0x6c, + 0x65, 0x13, 0x9e, 0xf5, 0x6c, 0x92, 0xed, 0x2e, 0x69, 0x90, 0x3d, 0x95, + 0xb1, 0x40, 0x8c, 0xd3, 0x18, 0x86, 0x9e, 0xb1, 0x66, 0x91, 0x42, 0xf9, + 0x27, 0x35, 0x32, 0xa6, 0x05, 0x04, 0x92, 0xaa, 0xd4, 0x72, 0x75, 0xa0, + 0x44, 0x75, 0x22, 0xd2, 0x01, 0xf5, 0x4b, 0x50, 0xfe, 0x1f, 0xad, 0x51, + 0x24, 0x4b, 0x2f, 0xcb, 0xcd, 0x46, 0xf3, 0xe3, 0xf8, 0xab, 0x3b, 0x14, + 0x56, 0x6b, 0xd4, 0x15, 0x4e, 0x7b, 0xa6, 0x7f, 0xbb, 0x42, 0x02, 0x9b, + 0x2e, 0x4e, 0x69, 0x0e, 0x05, 0x3b, 0x95, 0x62, 0x1d, 0xce, 0x1f, 0x2a, + 0x71, 0x57, 0x62, 0xbe, 0x9c, 0x0f, 0x98, 0xe6, 0x95, 0xae, 0x04, 0xff, + 0x00, 0x6e, 0x24, 0x7c, 0xc9, 0x47, 0xdb, 0x2a, 0x85, 0xca, 0x39, 0x6f, + 0x13, 0xb8, 0xa9, 0x96, 0xea, 0x13, 0x4b, 0x51, 0x72, 0x92, 0x09, 0xa1, + 0xfe, 0xf5, 0x0d, 0x3c, 0x67, 0xf8, 0xa8, 0xe6, 0x17, 0x29, 0x56, 0x7b, + 0xa8, 0xd7, 0xa1, 0xcd, 0x65, 0xcc, 0xc6, 0x47, 0xa0, 0x69, 0x11, 0x62, + 0x9b, 0x81, 0x4a, 0xe5, 0x87, 0x14, 0xdd, 0xf8, 0xa4, 0x21, 0x86, 0x4a, + 0x4d, 0xc6, 0xae, 0xc2, 0xb8, 0xf1, 0x27, 0xa8, 0xa9, 0x01, 0x8d, 0xbd, + 0x28, 0x13, 0x1e, 0x23, 0xf4, 0x34, 0xe1, 0x01, 0xf5, 0xa7, 0x72, 0x09, + 0x92, 0x2a, 0xbb, 0x1a, 0x71, 0xd6, 0x99, 0x2c, 0x7d, 0x2d, 0x04, 0x0b, + 0x46, 0x28, 0x00, 0xc5, 0x26, 0xda, 0x00, 0xea, 0xbc, 0xe7, 0xec, 0x29, + 0x7f, 0x78, 0xdd, 0xe9, 0x9b, 0x8f, 0x10, 0x16, 0xea, 0x6a, 0x41, 0x6d, + 0x48, 0x43, 0xc4, 0x20, 0x54, 0x98, 0xc5, 0x00, 0x57, 0xbc, 0x97, 0xc9, + 0x81, 0x9a, 0xbc, 0xd6, 0xea, 0x76, 0x92, 0xe5, 0x89, 0xf5, 0x23, 0xaf, + 0xb9, 0xae, 0x85, 0xfc, 0x33, 0x35, 0xf1, 0x89, 0x6d, 0x75, 0x25, 0xbc, + 0xbb, 0x90, 0xe2, 0xbb, 0xad, 0x13, 0x56, 0x4b, 0x98, 0x42, 0xb1, 0xf9, + 0xab, 0xcf, 0xa9, 0xa4, 0xae, 0x77, 0x7c, 0x51, 0x36, 0x41, 0xa7, 0x66, + 0xb6, 0x47, 0x38, 0xb5, 0x1c, 0x87, 0x8a, 0xa4, 0x26, 0x56, 0xcd, 0x46, + 0x25, 0x56, 0x3c, 0x1a, 0x00, 0x7e, 0x69, 0x73, 0x4c, 0x00, 0xd3, 0x68, + 0x01, 0x36, 0x8a, 0x6b, 0x2d, 0x34, 0x04, 0x0e, 0xb5, 0x46, 0x51, 0x89, + 0x81, 0xad, 0x09, 0xea, 0x2c, 0x91, 0xef, 0x5a, 0x21, 0x18, 0x8e, 0x93, + 0x1a, 0x1e, 0x6a, 0x23, 0x40, 0x82, 0x8a, 0x06, 0x21, 0x35, 0x19, 0x93, + 0x14, 0x80, 0x4f, 0x32, 0x9a, 0xd2, 0xe0, 0x53, 0x03, 0x36, 0x6b, 0xf7, + 0x17, 0x7b, 0x41, 0x3b, 0x6b, 0x49, 0x3e, 0x61, 0x53, 0x3d, 0x19, 0x4b, + 0x61, 0x66, 0x0a, 0x22, 0xf7, 0xc5, 0x44, 0x0f, 0x6a, 0xb4, 0x4a, 0x1b, + 0x6a, 0xc1, 0x9c, 0xe0, 0x56, 0x7e, 0xa0, 0x37, 0xdc, 0x7e, 0x02, 0x9f, + 0x46, 0x4b, 0xd5, 0x95, 0xc4, 0x75, 0x15, 0xc7, 0x0b, 0x5c, 0x69, 0x96, + 0x43, 0x01, 0xc4, 0x9b, 0xab, 0x4a, 0x1b, 0x82, 0x13, 0x15, 0x56, 0xbb, + 0x2d, 0x12, 0x5c, 0x6a, 0x1f, 0xbb, 0xc6, 0x3a, 0x56, 0x64, 0xb7, 0x26, + 0x43, 0x55, 0xcb, 0x61, 0xf3, 0x13, 0x09, 0x36, 0xae, 0x0d, 0x3b, 0xe5, + 0x7e, 0x6b, 0x3d, 0x88, 0x1e, 0x29, 0x0d, 0x17, 0x34, 0x52, 0x27, 0xb7, + 0x5f, 0x33, 0x02, 0xb6, 0x93, 0x85, 0x14, 0x5f, 0x51, 0x31, 0xf4, 0xe8, + 0x86, 0xe6, 0xab, 0x24, 0xb2, 0x29, 0xc2, 0x98, 0x88, 0xd8, 0x7c, 0xd4, + 0xe5, 0xa4, 0x34, 0x4e, 0xa4, 0x52, 0xee, 0x5f, 0x51, 0x4a, 0xe0, 0x2e, + 0xf5, 0xf5, 0xa8, 0x1f, 0x93, 0x4c, 0x42, 0x0a, 0x75, 0x30, 0x1c, 0x0d, + 0x67, 0x6a, 0x93, 0xf9, 0x45, 0x3e, 0xbf, 0xd2, 0x98, 0x8a, 0x5f, 0x68, + 0x69, 0x3e, 0xe8, 0xc5, 0x54, 0xba, 0xdc, 0x5b, 0x04, 0xd4, 0x21, 0x90, + 0x84, 0xa4, 0x69, 0x11, 0x6a, 0x0d, 0x36, 0x2b, 0xb4, 0x99, 0xa6, 0x53, + 0x0b, 0x0f, 0x5a, 0x90, 0x50, 0x30, 0xa2, 0x98, 0x09, 0x45, 0x2b, 0x92, + 0x14, 0xd6, 0x22, 0x90, 0xc8, 0xc9, 0x15, 0x19, 0x92, 0x98, 0x11, 0x3c, + 0xc0, 0x54, 0x2d, 0x71, 0xe9, 0x55, 0xca, 0x4d, 0xc8, 0x8c, 0xac, 0x68, + 0xdf, 0x54, 0x48, 0xe0, 0xd5, 0x25, 0x20, 0x16, 0x97, 0x14, 0x0c, 0x70, + 0xc8, 0xe9, 0x52, 0x2c, 0xf2, 0x0e, 0xf4, 0x84, 0x4a, 0x2e, 0xdf, 0xbd, + 0x4c, 0x97, 0x39, 0xea, 0x48, 0xa0, 0x4e, 0x25, 0xb8, 0x5f, 0x23, 0xef, + 0x66, 0xac, 0x0a, 0x68, 0xc9, 0xa1, 0x77, 0x01, 0x46, 0x68, 0x24, 0x4c, + 0xd3, 0x77, 0x53, 0x03, 0xb3, 0x0a, 0x05, 0x3c, 0x53, 0x66, 0xe4, 0x80, + 0xd2, 0xd0, 0x21, 0x0d, 0x47, 0xbf, 0x9a, 0x43, 0x1b, 0x73, 0x17, 0x98, + 0x84, 0x11, 0x95, 0x35, 0xc3, 0xeb, 0xda, 0x4b, 0x5a, 0xbf, 0x99, 0x18, + 0xf9, 0x0d, 0x74, 0xd1, 0x77, 0x56, 0x31, 0x97, 0xbb, 0x23, 0x0c, 0xe4, + 0x1a, 0xbb, 0xa6, 0xde, 0x1b, 0x7b, 0xa5, 0x62, 0x78, 0xae, 0x7a, 0xd1, + 0xd0, 0xeb, 0xa4, 0xf5, 0x3b, 0xfb, 0x1b, 0xe4, 0xb9, 0xb7, 0x56, 0x07, + 0x9a, 0xb2, 0xb2, 0x66, 0xb1, 0xa7, 0xb1, 0x32, 0xdc, 0x94, 0x1a, 0x64, + 0xc7, 0x8a, 0xd5, 0x10, 0x51, 0xb9, 0x93, 0xcb, 0x89, 0x9b, 0xd2, 0xa9, + 0x69, 0x88, 0x7c, 0xc9, 0x1c, 0x9e, 0xbd, 0x3f, 0x3a, 0x72, 0xf8, 0x42, + 0x26, 0x86, 0x69, 0x77, 0x50, 0x02, 0x6e, 0xa3, 0x34, 0x0c, 0x5c, 0xd2, + 0x66, 0x80, 0x13, 0x15, 0x46, 0xed, 0x30, 0x73, 0x57, 0x12, 0x47, 0xb2, + 0x7c, 0xbf, 0x85, 0x44, 0xa2, 0x8e, 0x82, 0x11, 0xf8, 0xaa, 0xcf, 0x32, + 0x03, 0xf7, 0x85, 0x50, 0xc3, 0xce, 0x04, 0x71, 0x4c, 0x32, 0x35, 0x4a, + 0x01, 0xbb, 0xe9, 0x3a, 0xd2, 0x65, 0x12, 0xad, 0x05, 0x44, 0x9c, 0x1a, + 0x23, 0x2b, 0x03, 0x33, 0xae, 0x74, 0xb9, 0x03, 0xef, 0x8f, 0x9a, 0xd2, + 0xb5, 0x80, 0x98, 0x79, 0xa7, 0x57, 0x5b, 0x34, 0x28, 0x6c, 0x54, 0xbb, + 0x3f, 0xbf, 0x09, 0xe9, 0x4b, 0xb5, 0xb1, 0xef, 0x4c, 0x3a, 0x0f, 0xb4, + 0x84, 0xae, 0xe6, 0x38, 0xe6, 0xa3, 0xb9, 0xd3, 0x9d, 0xfe, 0x74, 0xab, + 0x4d, 0x6c, 0x4b, 0x32, 0x9f, 0x7c, 0x47, 0x0e, 0x2a, 0xb4, 0xd2, 0x8a, + 0xc1, 0xc2, 0xcc, 0xad, 0xc6, 0x27, 0xcd, 0x56, 0xe0, 0x1c, 0x50, 0x31, + 0x97, 0x08, 0x76, 0x1e, 0x2a, 0x90, 0x1c, 0xd6, 0xf2, 0x8e, 0x82, 0x45, + 0xc9, 0xe3, 0x7f, 0x28, 0x30, 0x1c, 0x0e, 0xb5, 0x02, 0x3e, 0x2b, 0x07, + 0xb0, 0xc7, 0xfd, 0xa3, 0xb5, 0x3b, 0xcf, 0x3e, 0x95, 0x9d, 0x80, 0xbd, + 0x67, 0x20, 0x4c, 0x39, 0xad, 0x34, 0xba, 0x0d, 0xd3, 0x15, 0x8f, 0x53, + 0x5d, 0xc9, 0x7c, 0xcf, 0xa5, 0x39, 0x2e, 0x36, 0x75, 0xc5, 0x69, 0x71, + 0x58, 0x71, 0xd4, 0x23, 0x15, 0x0b, 0x6b, 0x11, 0xad, 0x51, 0x03, 0x3f, + 0xb6, 0xa2, 0xfe, 0xf5, 0x30, 0xeb, 0x91, 0xfa, 0xd1, 0x66, 0x05, 0x59, + 0xbc, 0x43, 0xfd, 0xca, 0xaa, 0xda, 0xec, 0xc7, 0xb9, 0xad, 0x39, 0x45, + 0x72, 0x4b, 0x5d, 0x4e, 0x79, 0xe4, 0xda, 0xcf, 0x5d, 0x1d, 0xb6, 0xe3, + 0x18, 0xcd, 0x62, 0xfe, 0x22, 0x8b, 0x21, 0x31, 0x4b, 0x8a, 0xd1, 0x12, + 0x57, 0x96, 0x53, 0x1f, 0xf0, 0xd7, 0x3d, 0x7b, 0xaa, 0xf9, 0xf2, 0xe3, + 0x67, 0x4a, 0xa9, 0x2d, 0x02, 0x3b, 0x96, 0x2d, 0xef, 0x20, 0x23, 0xae, + 0x2a, 0xb5, 0xec, 0xea, 0x65, 0xf9, 0x6b, 0x9e, 0x37, 0x35, 0x65, 0x36, + 0x76, 0x6a, 0x4d, 0xbe, 0xb5, 0x4c, 0x61, 0x8a, 0x4a, 0x43, 0x01, 0x52, + 0x50, 0x21, 0x69, 0x2a, 0x84, 0x34, 0x9a, 0x63, 0x49, 0x49, 0x81, 0x1f, + 0x9b, 0x50, 0xbc, 0xe2, 0x9d, 0x89, 0x64, 0x2d, 0x71, 0xe9, 0x51, 0x19, + 0x09, 0xab, 0xb1, 0x17, 0x19, 0x9a, 0x4a, 0xa0, 0x16, 0x8a, 0x00, 0x5a, + 0x76, 0x69, 0x00, 0xf0, 0xd4, 0xf5, 0x6a, 0x06, 0x48, 0x0d, 0x3a, 0xa0, + 0x02, 0x9a, 0x5c, 0x0a, 0x60, 0x33, 0xed, 0x2c, 0xa7, 0x83, 0x57, 0x6d, + 0x35, 0x20, 0x4e, 0xd9, 0x68, 0x62, 0x34, 0x70, 0x24, 0x5c, 0x83, 0xc5, + 0x41, 0xb4, 0xa1, 0xe3, 0x8a, 0xa5, 0xa9, 0x90, 0x07, 0x97, 0xd6, 0x9d, + 0xf3, 0x37, 0x7a, 0x62, 0x3b, 0xbd, 0xd4, 0x66, 0x83, 0x52, 0x78, 0xf6, + 0xe2, 0xa5, 0xf9, 0x29, 0x01, 0x04, 0xec, 0x16, 0xaa, 0x97, 0xa6, 0xc4, + 0x89, 0x62, 0x93, 0xb1, 0xa8, 0x6f, 0x6d, 0x52, 0x68, 0xf6, 0xb0, 0xc8, + 0x34, 0x42, 0x56, 0x62, 0xa8, 0xae, 0x8e, 0x13, 0x57, 0xb0, 0x6b, 0x3b, + 0x9e, 0x73, 0xb4, 0xf4, 0xac, 0xec, 0x60, 0xd6, 0xd5, 0x57, 0x50, 0xa4, + 0xf4, 0x34, 0xf4, 0xed, 0x51, 0xad, 0x48, 0x19, 0xe2, 0xbb, 0x4d, 0x3a, + 0xee, 0x39, 0xed, 0xc3, 0x67, 0x9a, 0xe1, 0xf8, 0x19, 0xd0, 0xf5, 0x57, + 0x2d, 0x89, 0x69, 0x25, 0x7e, 0x2b, 0x74, 0x64, 0x66, 0xea, 0x32, 0x7e, + 0xe0, 0x8f, 0x5c, 0xd3, 0xac, 0x76, 0xa4, 0x1b, 0x47, 0xa9, 0x34, 0x48, + 0x6b, 0x62, 0x6d, 0xe2, 0x8c, 0xd0, 0x20, 0xa5, 0xcd, 0x00, 0x2e, 0x69, + 0x69, 0x80, 0xea, 0xaf, 0x74, 0xb9, 0x02, 0x9a, 0x25, 0x92, 0xec, 0xcc, + 0x55, 0x53, 0x18, 0x26, 0xa9, 0x6c, 0x2e, 0xa6, 0x6e, 0xa3, 0x79, 0xe5, + 0xa3, 0x2a, 0xe7, 0x76, 0x2b, 0x9a, 0x92, 0x69, 0x59, 0xfe, 0x62, 0x6b, + 0x6b, 0x59, 0x0a, 0x25, 0xeb, 0x09, 0x78, 0xc1, 0x35, 0xaf, 0x01, 0xdf, + 0xc5, 0x73, 0x6c, 0xcd, 0x65, 0xa8, 0xe7, 0xb6, 0x6e, 0xab, 0xd2, 0x9d, + 0x1c, 0x47, 0xbd, 0x6d, 0x52, 0xd6, 0xb9, 0x10, 0xec, 0x3e, 0x40, 0x91, + 0xaf, 0x26, 0xab, 0x24, 0xeb, 0xbb, 0xad, 0x60, 0x59, 0xa3, 0x03, 0x2c, + 0x8b, 0x52, 0x49, 0x19, 0xd9, 0xf2, 0x55, 0x41, 0xdc, 0x97, 0xa1, 0x94, + 0x96, 0xb2, 0xfd, 0xb3, 0xf7, 0xcb, 0xde, 0xb4, 0x3e, 0xc9, 0xc5, 0x6f, + 0xcb, 0xa8, 0x93, 0xd0, 0x6b, 0x47, 0xb6, 0x9d, 0x11, 0xf5, 0xac, 0xe4, + 0xac, 0x51, 0x05, 0xdd, 0xb4, 0x2c, 0xa4, 0xb2, 0xd7, 0x35, 0x79, 0xa7, + 0x49, 0xbb, 0x74, 0x63, 0x8a, 0x49, 0xdc, 0x56, 0xb1, 0x57, 0x98, 0xc6, + 0x3b, 0xd5, 0xdb, 0x4f, 0xf5, 0x64, 0xb5, 0x44, 0x95, 0x86, 0xb5, 0x3a, + 0x64, 0xb2, 0xb7, 0x7b, 0x0f, 0xba, 0x32, 0x6b, 0x09, 0xf4, 0x99, 0x11, + 0x1e, 0x60, 0x03, 0x46, 0xb9, 0xef, 0xef, 0x5a, 0xa9, 0xde, 0x16, 0x33, + 0x51, 0xe5, 0x98, 0x0f, 0x96, 0x33, 0x55, 0x0d, 0xba, 0x93, 0x58, 0x6c, + 0x6b, 0x2d, 0xc6, 0xfd, 0x95, 0x73, 0x47, 0xc8, 0x9d, 0x05, 0x65, 0x76, + 0xc4, 0x46, 0xd3, 0x0a, 0x44, 0xb9, 0xd9, 0x4e, 0xc6, 0xd1, 0x76, 0x1f, + 0xf6, 0xf9, 0x7a, 0x06, 0x34, 0xdf, 0xb4, 0xcd, 0xfd, 0xe3, 0x56, 0xa2, + 0x4b, 0x91, 0x19, 0x79, 0x18, 0xfd, 0xf3, 0x40, 0xb5, 0x91, 0xf9, 0xe2, + 0xaf, 0x44, 0x66, 0x3b, 0xec, 0x4f, 0xed, 0x47, 0xd8, 0xcf, 0xad, 0x1c, + 0xc1, 0x60, 0xfb, 0x18, 0x1d, 0x5e, 0x9d, 0xf6, 0x78, 0x97, 0xa9, 0xa3, + 0x98, 0x2c, 0x44, 0x24, 0x58, 0xa5, 0xca, 0x56, 0x9d, 0xa6, 0xbf, 0x24, + 0x43, 0x6f, 0xde, 0xc5, 0x65, 0x38, 0x5c, 0xb8, 0xb3, 0x4a, 0x0f, 0x11, + 0xab, 0x7f, 0xac, 0x5c, 0x56, 0x94, 0x3a, 0x9c, 0x32, 0xf4, 0xa9, 0xd6, + 0x23, 0x71, 0x25, 0x96, 0xea, 0x2f, 0x25, 0xb0, 0x6b, 0x8e, 0x91, 0x01, + 0x95, 0xbe, 0xa7, 0xf9, 0xd6, 0xbc, 0xde, 0xe8, 0xa1, 0x1d, 0x45, 0x10, + 0x8a, 0x5f, 0x28, 0x0a, 0xc2, 0xe6, 0xf6, 0x0c, 0x51, 0x4c, 0x43, 0x0d, + 0x36, 0x82, 0x40, 0x53, 0xf3, 0x8a, 0x60, 0x21, 0x7a, 0x89, 0xe5, 0xc5, + 0x3d, 0xc9, 0x2b, 0xbd, 0xc0, 0x15, 0x0b, 0x5c, 0x1e, 0xd5, 0x7c, 0xa4, + 0x36, 0x44, 0x5c, 0xb7, 0x5a, 0x65, 0x59, 0x21, 0x45, 0x00, 0x25, 0x2d, + 0x00, 0x14, 0xb4, 0x00, 0xb4, 0xb4, 0x80, 0x29, 0x45, 0x00, 0x3c, 0x35, + 0x3f, 0x77, 0x15, 0x36, 0x19, 0x13, 0x4d, 0xe9, 0x51, 0x97, 0x26, 0xaa, + 0xc2, 0x1b, 0x4b, 0x4c, 0x0b, 0xb6, 0x97, 0xcd, 0x0b, 0x7f, 0xb3, 0x5a, + 0x1f, 0x6d, 0x8d, 0x86, 0x6b, 0x3b, 0x59, 0x8a, 0x48, 0x95, 0x24, 0x57, + 0xfb, 0xa6, 0x94, 0xd5, 0x19, 0x9d, 0xa6, 0x4d, 0x49, 0x1c, 0x4e, 0xc7, + 0xa5, 0x51, 0xa1, 0x68, 0x46, 0x40, 0xa4, 0x67, 0x0b, 0x41, 0x37, 0x28, + 0xcc, 0xe5, 0x8d, 0x34, 0x35, 0x0c, 0xa4, 0x47, 0x3c, 0xfe, 0x50, 0x18, + 0xa5, 0x49, 0xa4, 0x75, 0xeb, 0x53, 0xd4, 0x2f, 0x72, 0xad, 0xf4, 0x0b, + 0x73, 0x19, 0x47, 0x5a, 0xe4, 0x75, 0x1b, 0x19, 0x6d, 0x1c, 0xef, 0x5c, + 0x2f, 0xad, 0x75, 0x47, 0xde, 0x8d, 0x8c, 0xbe, 0x19, 0x14, 0xc5, 0x68, + 0x58, 0xdf, 0xcb, 0x6e, 0xc3, 0x0d, 0xc5, 0x72, 0xce, 0x3a, 0x1d, 0x11, + 0x67, 0x61, 0xa7, 0xcf, 0xf6, 0x88, 0xb7, 0x54, 0xf3, 0x4e, 0x8b, 0x16, + 0x59, 0xc0, 0xf4, 0xc9, 0xa9, 0xa7, 0xa8, 0xa5, 0xb9, 0x8d, 0xa9, 0xdf, + 0x05, 0x65, 0xf2, 0xb0, 0xf4, 0x1d, 0x43, 0xec, 0xd0, 0x6e, 0xc7, 0xcc, + 0x6b, 0xa1, 0x53, 0xe6, 0x69, 0x13, 0x7b, 0x13, 0xe9, 0x53, 0x49, 0x72, + 0xa6, 0x47, 0xcf, 0x5f, 0x5f, 0x7a, 0xd0, 0x35, 0x8b, 0x5e, 0xf3, 0x28, + 0x29, 0x69, 0x88, 0x5a, 0x7d, 0x30, 0x1c, 0x29, 0xb3, 0x0f, 0x96, 0x9a, + 0x25, 0x8f, 0x87, 0xfd, 0x4f, 0xe3, 0x50, 0xa4, 0x79, 0x62, 0x29, 0xad, + 0x83, 0xa9, 0x4b, 0x54, 0xd1, 0xd6, 0x54, 0xca, 0x8e, 0x7d, 0xab, 0x99, + 0x6b, 0x53, 0x14, 0xa5, 0x66, 0xf9, 0x3d, 0xeb, 0xa7, 0xe2, 0x89, 0x92, + 0xde, 0xc5, 0x59, 0x18, 0x45, 0x2e, 0x15, 0xb3, 0x5a, 0xd6, 0xcf, 0xc8, + 0x39, 0xae, 0x4a, 0x9b, 0x9d, 0x10, 0xd8, 0xd8, 0xb7, 0x6d, 0xc0, 0x54, + 0xcd, 0x18, 0x23, 0x8e, 0xb4, 0x26, 0x4b, 0xd0, 0xcd, 0xb9, 0xb7, 0x79, + 0x32, 0x8e, 0x6a, 0x18, 0xec, 0xbc, 0xbe, 0xe6, 0xa9, 0xae, 0x84, 0xfb, + 0x42, 0xe5, 0xbe, 0x52, 0xb4, 0x61, 0x62, 0xc3, 0x9a, 0x9d, 0x8b, 0xdc, + 0xbf, 0x6b, 0x66, 0x27, 0x93, 0xa5, 0x68, 0x7f, 0x63, 0x2e, 0x2b, 0x68, + 0x4c, 0x86, 0xac, 0x43, 0x26, 0x8e, 0x8b, 0xc9, 0xac, 0xfb, 0xb8, 0x12, + 0x25, 0xe2, 0x94, 0xdd, 0xc0, 0xc1, 0xd5, 0x3c, 0xc6, 0x5d, 0xb1, 0xe6, + 0x9b, 0x0c, 0x6f, 0xe5, 0x61, 0x85, 0x27, 0x6b, 0x15, 0x72, 0x9e, 0xa3, + 0x69, 0x19, 0x8f, 0x20, 0x60, 0xd6, 0x68, 0x27, 0xa2, 0xd6, 0x72, 0xd5, + 0x04, 0x74, 0x67, 0x45, 0x63, 0x3e, 0x6d, 0xf1, 0x54, 0xe7, 0xd4, 0x4a, + 0xdb, 0x49, 0x6d, 0xb3, 0x3b, 0xb2, 0x3a, 0xd4, 0xc3, 0xe1, 0x2d, 0xbd, + 0x4a, 0xd1, 0x9d, 0xe9, 0x4d, 0x64, 0xc5, 0x65, 0x71, 0x32, 0x19, 0x98, + 0x2a, 0x1a, 0xa0, 0x5b, 0x71, 0xaa, 0x8a, 0x04, 0x26, 0xd3, 0x46, 0xca, + 0xb2, 0xc5, 0x58, 0xfb, 0x9a, 0x75, 0x51, 0x98, 0x99, 0xc5, 0x2f, 0xda, + 0x1b, 0xb5, 0x2b, 0x01, 0x0b, 0x5c, 0xb8, 0x3f, 0x78, 0xd3, 0x4d, 0xc3, + 0xfa, 0xd1, 0xca, 0x17, 0x13, 0xcd, 0x73, 0xde, 0x98, 0x4d, 0x30, 0x15, + 0x73, 0x56, 0x6d, 0xe1, 0xf5, 0xa8, 0x94, 0x8a, 0x8a, 0x2f, 0xc5, 0x6f, + 0x57, 0x63, 0x01, 0x6b, 0x16, 0xcd, 0xed, 0x61, 0xec, 0xff, 0x00, 0x2e, + 0x2a, 0x8b, 0x8e, 0x69, 0xdc, 0x04, 0x14, 0x1a, 0x45, 0x0d, 0xa4, 0xc5, + 0x04, 0x89, 0x4d, 0x38, 0xaa, 0x11, 0x1b, 0x48, 0x05, 0x42, 0xf7, 0x1e, + 0x95, 0x4a, 0x06, 0x7c, 0xc5, 0x67, 0x9d, 0x8d, 0x45, 0x92, 0x7a, 0xd6, + 0xbc, 0xb6, 0x33, 0xe6, 0x13, 0x14, 0x62, 0x81, 0x5c, 0x5c, 0x52, 0xe2, + 0x81, 0x0b, 0xb6, 0x93, 0xcb, 0xa0, 0x43, 0x48, 0xc5, 0x36, 0x99, 0x41, + 0x4b, 0x48, 0x62, 0xd1, 0x48, 0x05, 0xa5, 0xa0, 0x07, 0x53, 0xbf, 0x86, + 0xa7, 0xa8, 0x15, 0xcf, 0x5a, 0x4a, 0xb0, 0x16, 0x8a, 0x00, 0x5a, 0x33, + 0x40, 0x16, 0x2d, 0x66, 0x68, 0xdc, 0x62, 0xad, 0x49, 0x78, 0x4d, 0x47, + 0x50, 0x68, 0xf5, 0x05, 0x0a, 0x3b, 0x54, 0xc1, 0xeb, 0x42, 0x04, 0x72, + 0x3f, 0x89, 0xc5, 0x55, 0x96, 0x44, 0xfe, 0x1e, 0x69, 0xdc, 0x45, 0x39, + 0x32, 0x4d, 0x25, 0x4b, 0x2d, 0x10, 0x5d, 0x28, 0x92, 0x32, 0x0d, 0x54, + 0xd3, 0x66, 0x90, 0x48, 0x63, 0xcf, 0xc8, 0x3f, 0xc6, 0x94, 0xb6, 0x08, + 0xee, 0x68, 0x3e, 0x0d, 0x32, 0xe2, 0xde, 0x3b, 0xab, 0x46, 0x89, 0xc7, + 0x5e, 0x2b, 0x4a, 0x6e, 0xd2, 0x46, 0x75, 0x15, 0xd1, 0xc2, 0x4d, 0x1f, + 0x95, 0x33, 0x27, 0xbf, 0xf5, 0xa6, 0xf4, 0xab, 0xab, 0xf1, 0x1a, 0x41, + 0xe8, 0x6c, 0xe8, 0x9a, 0x83, 0x47, 0xbd, 0x59, 0x8e, 0x31, 0xfd, 0x69, + 0x75, 0x6b, 0xa6, 0x97, 0x1b, 0x5b, 0xe4, 0x15, 0x95, 0x05, 0x6b, 0x97, + 0x3d, 0x4a, 0xf6, 0xfc, 0xbc, 0x31, 0xe3, 0xef, 0x39, 0xfe, 0x55, 0x73, + 0x52, 0x18, 0xb6, 0x80, 0x0f, 0xf3, 0xf2, 0xd6, 0xf4, 0x7e, 0x23, 0x29, + 0xad, 0x8d, 0x6d, 0x3f, 0x10, 0xc2, 0x16, 0xaf, 0x75, 0xae, 0x4e, 0xa6, + 0xac, 0x75, 0x2d, 0x32, 0x47, 0x0a, 0x5a, 0xa0, 0x0a, 0x59, 0x06, 0x63, + 0x34, 0xd0, 0x98, 0x42, 0x71, 0x1d, 0x47, 0x1b, 0x62, 0x71, 0x48, 0x7d, + 0x4d, 0x20, 0x16, 0x44, 0xed, 0x8a, 0xc7, 0xd5, 0xb4, 0xb4, 0x9d, 0x48, + 0xc5, 0x69, 0x46, 0x66, 0x35, 0x22, 0x71, 0x17, 0xba, 0x7c, 0xd6, 0x32, + 0x9d, 0xc3, 0xe5, 0xcf, 0x06, 0xac, 0x5a, 0xb9, 0xe0, 0x0e, 0xb4, 0x57, + 0x86, 0xb7, 0x46, 0xd4, 0x65, 0x74, 0x6f, 0x58, 0xb9, 0x23, 0x91, 0xcd, + 0x68, 0xa0, 0x27, 0xb5, 0x64, 0x8a, 0x90, 0x92, 0x26, 0x3a, 0xd5, 0x59, + 0x2b, 0x56, 0x71, 0xdb, 0x52, 0xdd, 0x94, 0x51, 0xec, 0xc9, 0x1c, 0xd4, + 0xf9, 0x02, 0xb2, 0x4c, 0xea, 0x2f, 0x69, 0xd7, 0x3b, 0x24, 0x15, 0xb6, + 0x2e, 0x57, 0x6e, 0x69, 0xc7, 0x70, 0x91, 0x4a, 0xee, 0xf3, 0x8e, 0x2b, + 0x0a, 0xf2, 0x46, 0x6e, 0xb5, 0x4c, 0x84, 0x53, 0x62, 0xa3, 0x92, 0x2b, + 0x3a, 0xeb, 0x55, 0xda, 0xbb, 0x51, 0x7a, 0xd6, 0x5a, 0x96, 0x66, 0xdc, + 0xdc, 0x3b, 0x2f, 0x27, 0xad, 0x53, 0x4e, 0xb4, 0x3d, 0x80, 0xd5, 0xb1, + 0x93, 0x1c, 0x54, 0x17, 0x89, 0x89, 0xcd, 0x3a, 0x7d, 0x86, 0xc7, 0x5a, + 0x21, 0x7e, 0x05, 0x17, 0x3b, 0xa3, 0x3b, 0x58, 0x73, 0x47, 0x28, 0x9b, + 0xd4, 0xce, 0x9f, 0x27, 0x35, 0x5d, 0x0e, 0x1a, 0x97, 0x42, 0xe2, 0x8b, + 0x1c, 0x1a, 0x8f, 0xbd, 0x49, 0xa5, 0x87, 0x37, 0x02, 0xa2, 0x35, 0xa1, + 0x83, 0x23, 0xa4, 0xa6, 0x03, 0x59, 0x73, 0x4e, 0x8e, 0x02, 0xd4, 0x9b, + 0xb0, 0xd2, 0x27, 0x5b, 0x4a, 0x90, 0x5a, 0x8f, 0x4a, 0xcf, 0x98, 0xd9, + 0x53, 0x24, 0x10, 0x01, 0x53, 0x44, 0x80, 0x1a, 0xca, 0x4c, 0xd1, 0x46, + 0xc5, 0x92, 0x46, 0x06, 0xda, 0x6e, 0xea, 0x10, 0x0b, 0x9a, 0x63, 0x0a, + 0x2e, 0x04, 0x74, 0x94, 0xc4, 0x34, 0xb5, 0x37, 0x24, 0xd5, 0x58, 0x86, + 0xc3, 0xca, 0x95, 0xba, 0x0a, 0x4f, 0xb0, 0x4c, 0xdd, 0x6b, 0x64, 0xac, + 0x60, 0xe6, 0x3c, 0x69, 0x3f, 0xde, 0x6a, 0x91, 0x74, 0xb8, 0xc7, 0xff, + 0x00, 0xaa, 0x9f, 0x31, 0x06, 0x76, 0xa7, 0x6e, 0x90, 0xb0, 0xd9, 0xfe, + 0x78, 0xaa, 0x20, 0x55, 0x30, 0x42, 0xed, 0xa5, 0xc5, 0x48, 0xc5, 0xc5, + 0x14, 0x00, 0x52, 0x8f, 0x9a, 0x80, 0x1d, 0xe4, 0x16, 0xa8, 0xa4, 0x5f, + 0x2f, 0x83, 0x45, 0xc0, 0x8a, 0x96, 0x82, 0x85, 0xa2, 0xa4, 0x05, 0xa5, + 0xa0, 0x62, 0xd3, 0xfb, 0x50, 0x22, 0xb1, 0xeb, 0x45, 0x50, 0x05, 0x14, + 0x00, 0xb4, 0x50, 0x04, 0xa9, 0x52, 0x54, 0x81, 0xea, 0xbb, 0x98, 0xd2, + 0x3b, 0x32, 0x2e, 0x4b, 0x56, 0xe9, 0x19, 0x36, 0x73, 0x97, 0x17, 0x57, + 0x37, 0x52, 0xb2, 0xa4, 0x8d, 0x81, 0x56, 0xf4, 0xab, 0x82, 0xc4, 0xc6, + 0x6b, 0x2a, 0xbe, 0x46, 0xb1, 0x7a, 0x1a, 0x4c, 0xb5, 0x0b, 0x53, 0x24, + 0x82, 0x5e, 0x54, 0xd5, 0x0b, 0x47, 0xf2, 0xee, 0x19, 0x5f, 0xa9, 0xa4, + 0xfe, 0x11, 0xad, 0xcd, 0x38, 0xc6, 0xee, 0x0d, 0x53, 0xd4, 0x2f, 0x06, + 0x9e, 0x57, 0x3f, 0x36, 0x7d, 0x2a, 0xa9, 0xea, 0x44, 0x8e, 0x71, 0x22, + 0x17, 0xd7, 0x2e, 0xc7, 0xb7, 0xf8, 0xd5, 0x4b, 0xbb, 0x57, 0xb7, 0x71, + 0xbf, 0xa7, 0x6a, 0xab, 0xf3, 0x19, 0x46, 0x7c, 0xb2, 0xe5, 0x35, 0xbc, + 0x31, 0x62, 0x97, 0x53, 0x91, 0x2f, 0xdd, 0xe3, 0x3f, 0x9d, 0x4d, 0xe2, + 0x3b, 0x14, 0xb4, 0xb8, 0x55, 0x87, 0xee, 0x37, 0x1f, 0xf8, 0xed, 0x3c, + 0x33, 0xbf, 0x32, 0x37, 0xa8, 0xf9, 0x64, 0x8a, 0xf6, 0x69, 0x9b, 0xa4, + 0x20, 0x7d, 0xcc, 0x35, 0x6a, 0xc9, 0x0a, 0xca, 0x10, 0x32, 0xe7, 0x15, + 0x2b, 0x70, 0x6c, 0x97, 0xee, 0xd4, 0xd1, 0xcb, 0x59, 0x34, 0x59, 0x65, + 0x5f, 0x34, 0xfe, 0xb4, 0x08, 0x76, 0x30, 0x29, 0x54, 0x8c, 0x53, 0x01, + 0x9e, 0x60, 0x53, 0xcd, 0x47, 0x25, 0xe2, 0xe3, 0x02, 0x98, 0x98, 0xd4, + 0x97, 0x34, 0x15, 0x24, 0xd2, 0x63, 0x45, 0xcb, 0x36, 0x21, 0xf1, 0x53, + 0xdc, 0x76, 0xa5, 0x00, 0x91, 0x42, 0xea, 0xc1, 0x2e, 0xd0, 0xab, 0x2e, + 0x73, 0x54, 0x63, 0xf0, 0xfd, 0xba, 0x3f, 0xdd, 0xad, 0xbd, 0xa3, 0xb1, + 0x0a, 0x36, 0x66, 0xd5, 0xa6, 0x9d, 0x04, 0x71, 0x70, 0x29, 0xbb, 0xe2, + 0x53, 0x8e, 0x95, 0x9f, 0x4b, 0x95, 0xd4, 0x8e, 0x50, 0x25, 0xaa, 0xb2, + 0x44, 0x2a, 0x65, 0x23, 0x68, 0x53, 0x08, 0x38, 0x24, 0x54, 0xad, 0x4a, + 0x24, 0x48, 0x96, 0xd1, 0x87, 0x99, 0x5a, 0xe9, 0x32, 0xf9, 0x75, 0x44, + 0xbd, 0x8c, 0xfb, 0xb3, 0xcf, 0x06, 0xab, 0xdd, 0x0f, 0xdd, 0x55, 0xb3, + 0x38, 0xa2, 0x84, 0xa3, 0x28, 0x71, 0x58, 0x12, 0xdb, 0xc8, 0xb2, 0x12, + 0xeb, 0x8e, 0x6a, 0x6d, 0x72, 0x9e, 0xe5, 0x49, 0x79, 0x35, 0x25, 0xb5, + 0xa4, 0x92, 0xfc, 0xca, 0x38, 0xa6, 0x97, 0x42, 0x8b, 0x50, 0xc4, 0xca, + 0xe2, 0xac, 0x98, 0xd5, 0x99, 0x77, 0x52, 0x94, 0x79, 0x47, 0xb8, 0xd9, + 0x8c, 0x56, 0xec, 0x3c, 0xa3, 0x96, 0xaa, 0x93, 0xb9, 0x91, 0xf2, 0xdc, + 0x9a, 0x96, 0x38, 0xab, 0x95, 0x24, 0x4a, 0xa6, 0xfc, 0x1a, 0x46, 0x82, + 0x83, 0x4e, 0x5e, 0xb4, 0x8a, 0x62, 0xc9, 0x51, 0x35, 0x68, 0x8e, 0x71, + 0x94, 0x50, 0x00, 0x2b, 0x46, 0x10, 0x0a, 0x66, 0xb1, 0xa8, 0x6f, 0x48, + 0x97, 0x6d, 0x18, 0xac, 0xae, 0x6c, 0x2e, 0x28, 0xc5, 0x50, 0x0e, 0xa3, + 0xa5, 0x48, 0x09, 0xbe, 0xa3, 0x69, 0xb1, 0x4d, 0x44, 0x86, 0xc8, 0x8c, + 0xd4, 0x0d, 0xcd, 0x5b, 0xa8, 0x98, 0xca, 0x64, 0xc9, 0x6e, 0x4f, 0xde, + 0xab, 0x09, 0x14, 0x6b, 0x4f, 0x63, 0x2b, 0x92, 0x79, 0xa8, 0xbd, 0xe9, + 0xad, 0x77, 0x12, 0xf7, 0xa9, 0x11, 0x09, 0xd4, 0xa2, 0xa8, 0x1f, 0x54, + 0xfe, 0xe8, 0xa7, 0xca, 0x33, 0x3e, 0xe6, 0x73, 0x70, 0x7e, 0x61, 0x50, + 0x62, 0xac, 0x81, 0x69, 0xb9, 0x14, 0x0c, 0x42, 0xf4, 0xdc, 0xd0, 0x51, + 0x22, 0xad, 0x49, 0x18, 0xa4, 0x4b, 0x2c, 0xc6, 0x2a, 0xa5, 0xe7, 0xfa, + 0xca, 0x71, 0x02, 0xad, 0x2d, 0x05, 0x85, 0x2d, 0x00, 0x14, 0xea, 0x00, + 0x5a, 0x7f, 0x6a, 0x40, 0x57, 0x6e, 0xb4, 0xda, 0x60, 0x2d, 0x14, 0x00, + 0x52, 0xd0, 0x03, 0xd0, 0xd4, 0xb5, 0x36, 0x03, 0xd6, 0x96, 0x33, 0x4d, + 0xba, 0x83, 0x30, 0xb7, 0x35, 0xd5, 0x0d, 0xcc, 0x26, 0x61, 0x5b, 0xd9, + 0xdc, 0x43, 0x23, 0xe1, 0x33, 0x93, 0xfd, 0x6a, 0xc5, 0x9d, 0xab, 0xc0, + 0xe5, 0xde, 0xa2, 0x71, 0xde, 0xc6, 0x8a, 0xc6, 0x87, 0x55, 0xaa, 0xcc, + 0x39, 0xa8, 0xe8, 0x04, 0x4f, 0xd2, 0xb3, 0xee, 0xad, 0xb7, 0x1d, 0xca, + 0x76, 0xb5, 0x24, 0x36, 0x11, 0xcf, 0x73, 0x0a, 0xe3, 0xad, 0x52, 0x9a, + 0xc2, 0x7b, 0xf9, 0xf7, 0xcc, 0xdf, 0x81, 0xe6, 0x9c, 0x6d, 0x11, 0x3d, + 0x5d, 0xcb, 0x49, 0x65, 0xe5, 0x11, 0x84, 0xa9, 0xee, 0x6c, 0xa3, 0xbb, + 0xb5, 0x68, 0xf6, 0xf3, 0x8e, 0x31, 0x45, 0xac, 0xee, 0x71, 0x56, 0xde, + 0xe6, 0x7d, 0x82, 0xcb, 0xa6, 0xb3, 0x20, 0x49, 0x39, 0xe0, 0x1c, 0x7b, + 0xd5, 0xe7, 0xb0, 0x9e, 0xfe, 0x3c, 0xb2, 0x73, 0x9e, 0x0d, 0x6d, 0x4e, + 0x3c, 0x8e, 0xe7, 0x4c, 0xa5, 0xce, 0xae, 0x5c, 0xb0, 0xd0, 0xcc, 0x2a, + 0x77, 0x1a, 0x9d, 0xe0, 0x58, 0x97, 0x00, 0x54, 0xb4, 0x51, 0x51, 0xa3, + 0xe6, 0x8c, 0x01, 0x58, 0xb3, 0x51, 0x7c, 0xc5, 0x5e, 0xf4, 0xf1, 0x78, + 0xa3, 0xbd, 0x40, 0xc8, 0xe4, 0xd4, 0x07, 0x6a, 0x87, 0xed, 0xaf, 0xda, + 0x82, 0xd4, 0x48, 0xcb, 0xb3, 0x77, 0xa4, 0x5e, 0x0d, 0x30, 0x91, 0x6a, + 0xdd, 0xbe, 0x71, 0x57, 0x29, 0x32, 0x47, 0x23, 0xec, 0x39, 0xa9, 0x65, + 0x9d, 0x5d, 0x28, 0x8e, 0xe2, 0x63, 0xb4, 0xd6, 0xf3, 0x24, 0xc5, 0x68, + 0xc9, 0x69, 0xbf, 0xee, 0xd5, 0xd3, 0x7a, 0x93, 0x3d, 0x08, 0xc5, 0xb4, + 0xe8, 0x31, 0x54, 0xe4, 0xd3, 0xdf, 0x3b, 0x98, 0xd6, 0x96, 0x26, 0xe4, + 0x43, 0x03, 0x8a, 0x8a, 0x5a, 0xe6, 0x96, 0xe7, 0x74, 0x36, 0x22, 0x8f, + 0xef, 0xd4, 0x93, 0x0c, 0x2d, 0x38, 0x1c, 0xf3, 0x24, 0xd3, 0xff, 0x00, + 0xd6, 0x8a, 0xd4, 0x92, 0x2f, 0x97, 0x81, 0x5a, 0x47, 0x73, 0x2a, 0x9b, + 0x15, 0x4a, 0xb1, 0x93, 0xa5, 0x3e, 0xe6, 0x3d, 0xd1, 0x62, 0xaa, 0x7a, + 0x31, 0x47, 0x54, 0x51, 0xf2, 0x29, 0x24, 0xb6, 0x57, 0x4c, 0x62, 0xb3, + 0xbd, 0x99, 0x6d, 0x68, 0x73, 0x3a, 0xbd, 0x83, 0x5b, 0x49, 0x95, 0xfb, + 0xb4, 0xb6, 0x17, 0x2f, 0x6f, 0x0f, 0x09, 0xf9, 0x8a, 0xd5, 0xae, 0xa4, + 0xa7, 0x74, 0x34, 0x5c, 0x3b, 0x31, 0xc2, 0xf5, 0xa1, 0xc4, 0x95, 0x33, + 0x91, 0x51, 0x56, 0x21, 0xf2, 0xf9, 0xcd, 0x48, 0x23, 0xae, 0x76, 0xcd, + 0xa2, 0x41, 0x72, 0x06, 0xde, 0x2a, 0x89, 0x43, 0x4d, 0x31, 0x8c, 0xc6, + 0x29, 0xea, 0x2a, 0x81, 0xec, 0x12, 0x54, 0x4d, 0x5a, 0x18, 0x0d, 0xa2, + 0x80, 0x0a, 0xb7, 0x64, 0xdc, 0xed, 0xac, 0xe6, 0x8d, 0x69, 0x6e, 0x5d, + 0xa5, 0xc5, 0x60, 0x74, 0x87, 0x14, 0xd2, 0xc2, 0x98, 0x88, 0x5e, 0x75, + 0x5a, 0xad, 0x25, 0xf2, 0x76, 0xaa, 0x50, 0x6c, 0xce, 0x53, 0x48, 0x83, + 0xed, 0x8c, 0xc6, 0x83, 0x2d, 0x6c, 0x95, 0x8e, 0x77, 0x2b, 0x8a, 0x26, + 0xa9, 0xd6, 0xf7, 0x6f, 0x6a, 0x76, 0x24, 0x1b, 0x50, 0x7e, 0xd5, 0x11, + 0xb9, 0x91, 0xbf, 0x8a, 0x8b, 0x12, 0x33, 0xcc, 0x6f, 0x5a, 0x43, 0xcd, + 0x16, 0xd4, 0x57, 0x12, 0x8a, 0x62, 0x1a, 0x6a, 0x32, 0xe0, 0x50, 0x55, + 0x88, 0xcb, 0xd2, 0x50, 0x50, 0xa0, 0x54, 0xa1, 0x28, 0x19, 0x2e, 0x38, + 0xa7, 0x45, 0xd2, 0x91, 0x04, 0xcb, 0xc5, 0x51, 0x9c, 0xfe, 0xf2, 0x92, + 0x19, 0x1e, 0x05, 0x36, 0xa8, 0xa0, 0xa2, 0x80, 0x1d, 0x45, 0x20, 0x1d, + 0x4e, 0x1d, 0x28, 0x02, 0x06, 0xeb, 0x49, 0x4c, 0x04, 0xa5, 0xa0, 0x02, + 0x8a, 0x00, 0x70, 0xa9, 0xc5, 0x20, 0x3d, 0x79, 0xa6, 0x1d, 0x8d, 0x47, + 0xf6, 0x94, 0x6e, 0xa6, 0xb5, 0xb9, 0x9d, 0x89, 0x92, 0x68, 0x94, 0x67, + 0x22, 0xa1, 0x94, 0x7d, 0xa0, 0xfc, 0xa6, 0xaa, 0xe4, 0x58, 0x0c, 0x5b, + 0x56, 0xa9, 0x4c, 0x30, 0x69, 0x74, 0x1a, 0xdc, 0x80, 0xf3, 0x51, 0xb5, + 0x64, 0x6a, 0x45, 0x27, 0x4a, 0x6d, 0xb9, 0xf9, 0xa8, 0x03, 0x77, 0x4e, + 0xb7, 0x8e, 0x53, 0xf3, 0x01, 0x5a, 0x8b, 0xa5, 0xc1, 0xfd, 0xda, 0xda, + 0x9c, 0x8e, 0x7a, 0x91, 0x25, 0x1a, 0x74, 0x03, 0xf8, 0x45, 0x29, 0x86, + 0x34, 0xe8, 0xb5, 0xb1, 0x05, 0x59, 0xeb, 0x1e, 0xfb, 0xe4, 0x42, 0x69, + 0x33, 0x44, 0x54, 0xb7, 0x46, 0xb9, 0xce, 0xd1, 0xd2, 0xaa, 0x5e, 0x41, + 0x73, 0x1f, 0xdd, 0xce, 0x2b, 0x9d, 0x2e, 0x63, 0x7b, 0xd9, 0x94, 0x32, + 0xe7, 0xad, 0x39, 0x54, 0x9a, 0xca, 0xc6, 0xd7, 0x25, 0x11, 0xd4, 0xd1, + 0xc0, 0x7f, 0xbb, 0xfa, 0x55, 0x72, 0xdc, 0xcf, 0x98, 0x90, 0x43, 0xed, + 0x47, 0xd9, 0xfd, 0x69, 0xda, 0xc2, 0xb8, 0xd1, 0xfb, 0xa9, 0x05, 0x5e, + 0x53, 0x95, 0x15, 0x12, 0x29, 0x6c, 0x0d, 0xd2, 0xb3, 0xa5, 0xb9, 0x64, + 0x3d, 0x69, 0xa4, 0x06, 0x8e, 0x81, 0x3f, 0x99, 0x38, 0xfa, 0xd7, 0x5b, + 0x00, 0xe9, 0x51, 0x0d, 0xc2, 0xa2, 0x26, 0x93, 0xee, 0x1a, 0xcb, 0xbd, + 0x6f, 0x90, 0xd7, 0x52, 0x39, 0xce, 0x65, 0x66, 0xfd, 0xe3, 0x66, 0xa4, + 0x33, 0xe4, 0x57, 0x3c, 0xd7, 0xbc, 0x76, 0x46, 0x76, 0x44, 0x31, 0xc9, + 0xfb, 0xce, 0xb5, 0x35, 0xc5, 0xc2, 0x08, 0xba, 0xd2, 0x5b, 0x91, 0x2d, + 0x48, 0x2c, 0xef, 0x57, 0xcf, 0x00, 0x57, 0x5d, 0x01, 0xcc, 0x40, 0xd1, + 0x1f, 0x88, 0x89, 0xad, 0x08, 0x65, 0x7e, 0x6a, 0xbb, 0xf3, 0x57, 0x21, + 0x45, 0x0c, 0xd9, 0x49, 0xb2, 0xb3, 0x19, 0x97, 0x75, 0xb0, 0xc8, 0x55, + 0xb1, 0xd2, 0xa9, 0xbf, 0x94, 0xa9, 0xb4, 0x0a, 0x2f, 0xa8, 0xed, 0xa1, + 0x93, 0x0c, 0x91, 0xac, 0xc7, 0x91, 0xd6, 0xa7, 0x69, 0xa2, 0x3d, 0xea, + 0x5e, 0xe6, 0xaa, 0x24, 0x6d, 0x71, 0x1f, 0xad, 0x40, 0xf7, 0x04, 0xfd, + 0xda, 0x8f, 0x53, 0x44, 0x88, 0xc2, 0x16, 0xeb, 0x4b, 0xe5, 0x52, 0xb9, + 0xa5, 0x83, 0xc8, 0x14, 0x92, 0x44, 0x02, 0xf4, 0xaa, 0xbe, 0xa4, 0x49, + 0x68, 0x51, 0x93, 0xad, 0x42, 0xd5, 0xd0, 0x72, 0x0c, 0xa2, 0x80, 0x12, + 0xa6, 0xb7, 0x7d, 0x8d, 0x9a, 0x52, 0xd8, 0xa8, 0xee, 0x69, 0xf9, 0xa9, + 0x8e, 0xa2, 0xa2, 0x92, 0xed, 0x57, 0xb8, 0xae, 0x54, 0x8e, 0xa7, 0x2b, + 0x14, 0xe4, 0xd4, 0x7d, 0x2a, 0xac, 0x97, 0x6e, 0xdf, 0xfe, 0xba, 0xe8, + 0x8c, 0x4c, 0x1d, 0x42, 0x22, 0xcc, 0xdd, 0x4d, 0x1b, 0x6a, 0xcc, 0x5b, + 0x1c, 0x05, 0x2d, 0x04, 0x0b, 0x4e, 0xa0, 0x05, 0xa2, 0x81, 0x0b, 0x49, + 0x40, 0x08, 0x5c, 0x0a, 0x88, 0xcd, 0xe9, 0x41, 0x64, 0x65, 0xc9, 0xa6, + 0xd3, 0x28, 0x29, 0xc2, 0x80, 0x24, 0x15, 0x2a, 0x54, 0x88, 0x7b, 0x74, + 0xa5, 0x8b, 0xa5, 0x04, 0x93, 0x76, 0xaa, 0x13, 0x7d, 0xfa, 0x60, 0xb7, + 0x19, 0xda, 0x9b, 0x41, 0x61, 0x4b, 0x40, 0x0b, 0x45, 0x20, 0x14, 0x53, + 0xc7, 0x4a, 0x40, 0x42, 0xdd, 0x69, 0xb5, 0x42, 0x0a, 0x28, 0x18, 0x51, + 0x40, 0x0e, 0x4e, 0xb5, 0x3d, 0x26, 0x07, 0x71, 0x2e, 0xa0, 0x55, 0x38, + 0xeb, 0x4b, 0xa6, 0xdc, 0xb4, 0xb3, 0xfc, 0xc7, 0xa9, 0xad, 0x27, 0x1b, + 0x22, 0xd4, 0x74, 0xb9, 0xa3, 0x77, 0xfe, 0xa4, 0x7e, 0x35, 0xa5, 0xa6, + 0x27, 0xfa, 0x20, 0xfa, 0x9a, 0x97, 0xd0, 0xe7, 0xee, 0x4d, 0x22, 0xd6, + 0x6d, 0xd0, 0xc5, 0x6e, 0xc9, 0x45, 0x16, 0x6c, 0x53, 0x37, 0x57, 0x33, + 0x36, 0x18, 0xc6, 0xa0, 0x47, 0xc4, 0x94, 0x08, 0xd8, 0xd3, 0x2e, 0xb1, + 0x28, 0xe6, 0xba, 0x78, 0x5b, 0x2a, 0x29, 0xd3, 0x7e, 0xf0, 0xa6, 0x58, + 0xa8, 0xe4, 0x5a, 0xee, 0x47, 0x39, 0x4a, 0x65, 0xac, 0x7d, 0x46, 0x3d, + 0xd1, 0x30, 0xa9, 0x6c, 0xa4, 0x59, 0xf0, 0xfd, 0xb0, 0x8c, 0x90, 0xd5, + 0xa3, 0x7b, 0xa6, 0xa4, 0xc3, 0x28, 0x30, 0x6b, 0x9a, 0x8c, 0xb5, 0x66, + 0x95, 0xba, 0x18, 0xf7, 0x9a, 0x01, 0x65, 0xca, 0x28, 0xcd, 0x54, 0x8f, + 0x44, 0x3d, 0x1c, 0x73, 0x5a, 0x4b, 0xb8, 0xa3, 0x2e, 0x86, 0x8d, 0x97, + 0x86, 0xd3, 0xef, 0x4d, 0xfc, 0xab, 0x62, 0x2d, 0x3a, 0xda, 0x25, 0xc0, + 0x88, 0x56, 0x7c, 0xc3, 0x63, 0x7f, 0xb3, 0x6d, 0xf7, 0x67, 0x60, 0xae, + 0x5f, 0x56, 0x0d, 0x1c, 0x99, 0x5a, 0xdf, 0xe2, 0x46, 0x71, 0xdc, 0xcb, + 0x67, 0x2d, 0x57, 0x2d, 0x9f, 0xe4, 0xae, 0x29, 0x9d, 0xab, 0x62, 0x7a, + 0xc9, 0xba, 0x8c, 0x99, 0x78, 0xa6, 0xb6, 0x27, 0xa9, 0x67, 0x4a, 0xcd, + 0xbc, 0xc1, 0xab, 0xb5, 0xb0, 0xb8, 0x59, 0x50, 0x73, 0xcd, 0x60, 0xb4, + 0x66, 0xb3, 0x57, 0x45, 0x99, 0xa4, 0x54, 0x43, 0x9a, 0xc8, 0xba, 0x6d, + 0xd1, 0xb6, 0x2b, 0xb5, 0x6c, 0x71, 0x9c, 0xb3, 0xfc, 0xb2, 0x1a, 0x53, + 0x90, 0xb5, 0x9c, 0xb7, 0x3a, 0xa3, 0x0d, 0x08, 0xb0, 0xc7, 0xa5, 0x4d, + 0xfd, 0x98, 0xd3, 0x2f, 0xce, 0x69, 0x0a, 0x5a, 0x0f, 0x83, 0x4c, 0x30, + 0xb8, 0xc5, 0x74, 0x56, 0xd7, 0x0c, 0xb1, 0x05, 0x22, 0x8e, 0xb7, 0x25, + 0xbb, 0xa1, 0x7a, 0xd1, 0xb6, 0x94, 0x99, 0x21, 0x8a, 0x31, 0x52, 0x07, + 0x3f, 0xa8, 0x2e, 0x2f, 0x3f, 0x2a, 0xcd, 0x92, 0xe0, 0xac, 0xbb, 0x68, + 0x9e, 0xe5, 0xc3, 0x53, 0x24, 0xdb, 0xb3, 0x48, 0x48, 0xcd, 0x3c, 0x5b, + 0x9f, 0x7a, 0x87, 0x23, 0x65, 0x01, 0xeb, 0x6b, 0x52, 0xac, 0x20, 0x54, + 0x36, 0x6a, 0x87, 0xed, 0x02, 0x93, 0x15, 0x23, 0x12, 0x98, 0xfd, 0x28, + 0x44, 0xb3, 0x32, 0x51, 0xcd, 0x40, 0x6b, 0xb0, 0xe2, 0x19, 0x49, 0x40, + 0x05, 0x19, 0xc5, 0x00, 0x36, 0x49, 0x9f, 0xd6, 0xab, 0x92, 0x49, 0xa1, + 0x21, 0xdc, 0x4a, 0x5a, 0x04, 0x2e, 0x69, 0xea, 0x68, 0x11, 0x28, 0x02, + 0x97, 0x6d, 0x06, 0x62, 0xe2, 0x8c, 0x50, 0x20, 0xa4, 0x2c, 0x05, 0x03, + 0x22, 0x69, 0x7d, 0x2a, 0x32, 0xc6, 0x8b, 0x1a, 0x58, 0x4a, 0x6d, 0x03, + 0x0a, 0x28, 0x00, 0xa5, 0xa0, 0x42, 0xe6, 0xa7, 0x8e, 0x89, 0x20, 0x24, + 0x6e, 0x94, 0xf8, 0xba, 0x52, 0x44, 0x92, 0xb7, 0x4a, 0xce, 0x7e, 0xb4, + 0xd0, 0x96, 0xe3, 0x7b, 0x51, 0x41, 0xa0, 0x51, 0x48, 0x05, 0xa2, 0x90, + 0x0b, 0x4f, 0x14, 0x01, 0x13, 0x53, 0x6a, 0x84, 0x18, 0xa4, 0xa0, 0x62, + 0x52, 0xd0, 0x03, 0xd3, 0xad, 0x4d, 0x4a, 0xc0, 0x75, 0xdf, 0xd9, 0xf3, + 0x34, 0x98, 0xda, 0x7e, 0xb5, 0x72, 0xce, 0xc5, 0xed, 0xc8, 0x2d, 0x5d, + 0x75, 0xec, 0xcb, 0x53, 0xf7, 0x4b, 0x77, 0x2f, 0xfb, 0xb1, 0x5b, 0x9a, + 0x68, 0xff, 0x00, 0x45, 0x1f, 0x53, 0x5c, 0xd6, 0x7a, 0x1c, 0xfd, 0x19, + 0x3b, 0xad, 0x66, 0xde, 0x27, 0x15, 0xd0, 0x66, 0x8c, 0x59, 0xdb, 0x63, + 0x73, 0x55, 0x9a, 0xe9, 0x47, 0xad, 0x73, 0x4c, 0xe9, 0x89, 0x03, 0xde, + 0x31, 0xe9, 0x50, 0x79, 0x8e, 0x4d, 0x67, 0x72, 0xf9, 0x4b, 0x76, 0x72, + 0x95, 0x95, 0x73, 0x5d, 0xce, 0x97, 0x37, 0x99, 0x00, 0xa2, 0x2f, 0xdf, + 0x26, 0xa2, 0xf7, 0x4d, 0x41, 0xd2, 0x9a, 0xfd, 0x2b, 0xd1, 0x47, 0x13, + 0x29, 0xcc, 0x2b, 0x1f, 0x50, 0x6d, 0xbd, 0x2a, 0x64, 0x5c, 0x4b, 0x5a, + 0x73, 0x10, 0x77, 0x81, 0x5a, 0xf1, 0x4a, 0x64, 0xea, 0x2b, 0x92, 0x2a, + 0xda, 0x9b, 0x4c, 0x96, 0xa0, 0x6e, 0x26, 0x15, 0xb6, 0xe8, 0xc9, 0x5a, + 0xe3, 0xa3, 0xb8, 0x8e, 0x53, 0x85, 0x6a, 0x96, 0xb2, 0x34, 0x10, 0xb0, + 0x02, 0xb9, 0x5b, 0xd2, 0x24, 0x95, 0xab, 0x68, 0xe9, 0x13, 0x3f, 0xb4, + 0x56, 0x8f, 0x4a, 0xf3, 0x89, 0x38, 0x34, 0x87, 0x4d, 0x9a, 0x16, 0xe3, + 0x9a, 0x8d, 0x1a, 0x36, 0x52, 0xb0, 0xbf, 0x65, 0xb8, 0x23, 0x85, 0xfd, + 0x6a, 0xbc, 0x96, 0x72, 0xa3, 0x72, 0xb5, 0x1c, 0xa6, 0x8a, 0x48, 0x8f, + 0x69, 0x5f, 0x6a, 0xbf, 0x69, 0x7a, 0x61, 0x20, 0xe6, 0xb9, 0xe4, 0x8d, + 0xfa, 0x13, 0x49, 0xac, 0xee, 0x97, 0x61, 0xe7, 0x35, 0x15, 0xc5, 0xe9, + 0x09, 0xc7, 0x7a, 0xd9, 0x76, 0x39, 0xec, 0x65, 0xce, 0xdb, 0x9c, 0x10, + 0x28, 0x67, 0xf9, 0x31, 0x8a, 0x3a, 0x9d, 0x9a, 0x24, 0x3a, 0xdf, 0x99, + 0x16, 0xb6, 0x55, 0xc6, 0x05, 0x2e, 0xa7, 0x3d, 0x46, 0x48, 0xbb, 0x69, + 0xfc, 0x0a, 0x66, 0x43, 0x8c, 0x98, 0x15, 0x4c, 0xea, 0x6a, 0x1b, 0x15, + 0x0d, 0x14, 0x84, 0xfe, 0xd3, 0x5a, 0x3f, 0xb4, 0xd6, 0xb3, 0x2b, 0x94, + 0xcd, 0xbd, 0xb8, 0x12, 0xb6, 0x45, 0x67, 0x34, 0x79, 0x6c, 0xd3, 0x9c, + 0x8b, 0xa7, 0x1b, 0x07, 0x96, 0x3d, 0x29, 0xe1, 0x31, 0x59, 0x23, 0x5b, + 0x8c, 0x6c, 0x0a, 0x8c, 0xb5, 0x50, 0x26, 0x44, 0x65, 0xa6, 0x79, 0x82, + 0xa5, 0x22, 0x80, 0x4a, 0xb4, 0x17, 0x14, 0x09, 0x94, 0x27, 0xfb, 0xd5, + 0x58, 0xd7, 0x59, 0xc4, 0xc6, 0x1a, 0x6d, 0x30, 0x12, 0x8a, 0x00, 0x6b, + 0x0c, 0xd4, 0x24, 0x73, 0x4c, 0x42, 0x51, 0x48, 0x61, 0x4b, 0x40, 0x0b, + 0x9a, 0x91, 0x25, 0xf5, 0xa0, 0x56, 0x25, 0x0e, 0x0d, 0x35, 0xa5, 0x02, + 0x91, 0x3c, 0xa4, 0x2d, 0x36, 0x6a, 0x3c, 0x93, 0x4c, 0xa1, 0x69, 0xd8, + 0xa0, 0x62, 0x53, 0x28, 0x00, 0xa2, 0x80, 0x16, 0x96, 0x80, 0x0a, 0x9e, + 0x3a, 0x1b, 0x11, 0x23, 0x0e, 0x2a, 0x58, 0xbe, 0xed, 0x22, 0x47, 0xc9, + 0xc2, 0x56, 0x6b, 0xd3, 0x04, 0x03, 0xa5, 0x25, 0x05, 0x8b, 0x45, 0x20, + 0x0a, 0x29, 0x80, 0xb4, 0xe1, 0xd2, 0x90, 0x11, 0x37, 0x5a, 0x41, 0x4c, + 0x05, 0x34, 0xda, 0x00, 0x28, 0xa0, 0x07, 0xa7, 0x5a, 0x9a, 0xa4, 0x0f, + 0x56, 0x86, 0x1e, 0x7a, 0x52, 0xcb, 0x6f, 0x9e, 0xd5, 0xd6, 0xb5, 0x24, + 0xc8, 0xd4, 0xa2, 0x6d, 0xbc, 0x56, 0xd6, 0x93, 0x36, 0x62, 0x0b, 0x58, + 0xd5, 0xbd, 0xd0, 0x2d, 0x8d, 0x26, 0xe4, 0x55, 0x1b, 0xa5, 0xad, 0xd1, + 0xce, 0x73, 0x1a, 0xa2, 0xf2, 0x2b, 0x37, 0x15, 0xcb, 0x5b, 0x46, 0x75, + 0xd2, 0x7a, 0x06, 0xca, 0x5d, 0xb5, 0x8d, 0xcd, 0x19, 0x32, 0xa9, 0xae, + 0xa7, 0xc3, 0xf7, 0x1c, 0xed, 0x34, 0x9e, 0xe2, 0x7b, 0x1d, 0x32, 0x1e, + 0x29, 0x4f, 0x4a, 0xf4, 0xa2, 0xce, 0x09, 0x14, 0xe7, 0x35, 0x10, 0xb1, + 0x8d, 0xf9, 0x96, 0x94, 0x98, 0x22, 0xd2, 0xb4, 0x71, 0xae, 0x16, 0x84, + 0x90, 0x6e, 0xac, 0x8d, 0x11, 0x36, 0xe1, 0x50, 0x4d, 0xf3, 0x1a, 0xa8, + 0x10, 0xca, 0xd6, 0x3a, 0x7f, 0x93, 0x2c, 0x8e, 0xdc, 0x86, 0xe9, 0xf9, + 0xd5, 0x89, 0x54, 0xd5, 0x79, 0x95, 0xcc, 0x56, 0x2f, 0xf2, 0x90, 0x6a, + 0x8a, 0x5a, 0x82, 0xfc, 0x8e, 0xf5, 0x9d, 0xf4, 0x2b, 0xa9, 0xa4, 0x1a, + 0x38, 0x63, 0xe2, 0xb3, 0x7c, 0xed, 0xd3, 0x7a, 0x54, 0xfd, 0x92, 0x96, + 0xe5, 0x95, 0x95, 0x14, 0x7c, 0xcd, 0x54, 0x6f, 0x35, 0x28, 0x11, 0x4f, + 0xcd, 0x50, 0x8a, 0xb1, 0xcf, 0xdc, 0x6a, 0x42, 0x69, 0x38, 0x1c, 0x55, + 0x2b, 0x8d, 0x45, 0xa3, 0x3f, 0x2d, 0x43, 0x57, 0x67, 0x46, 0xc8, 0x8e, + 0x1b, 0xff, 0x00, 0x32, 0xee, 0x33, 0x20, 0xc7, 0x35, 0xaa, 0xf7, 0x31, + 0xca, 0x8a, 0x01, 0xa9, 0xbd, 0x98, 0xa2, 0x89, 0xe2, 0xb6, 0x59, 0x06, + 0x6a, 0x3b, 0xb8, 0x96, 0x15, 0xe3, 0xad, 0x74, 0x50, 0xf7, 0xcc, 0xaa, + 0xcf, 0x94, 0xa8, 0x27, 0x68, 0xfd, 0x69, 0x46, 0xaa, 0x54, 0xf3, 0x5d, + 0x72, 0xc3, 0xf5, 0x30, 0x55, 0xae, 0x5d, 0x8f, 0x53, 0x52, 0x82, 0x9d, + 0xfd, 0xa3, 0x9e, 0x95, 0xe7, 0x48, 0xec, 0xe4, 0x18, 0xd7, 0x6e, 0xd5, + 0x5c, 0xe4, 0x9a, 0x8b, 0x94, 0x90, 0x98, 0xa7, 0x8a, 0x96, 0x50, 0xc9, + 0x2a, 0x2c, 0xd0, 0x03, 0x09, 0xe6, 0x97, 0x76, 0x05, 0x20, 0x2b, 0x48, + 0xd5, 0x59, 0xa4, 0xa2, 0xc5, 0x22, 0x17, 0x9a, 0xab, 0xbc, 0xfe, 0xf5, + 0x51, 0x89, 0x2e, 0x44, 0x2d, 0x73, 0x8a, 0x8d, 0xaf, 0x49, 0xab, 0xf6, + 0x66, 0x5c, 0xe1, 0x14, 0x9b, 0xcd, 0x48, 0x6b, 0x43, 0x31, 0x86, 0x99, + 0x40, 0x09, 0x45, 0x00, 0x25, 0x42, 0xdd, 0x69, 0x88, 0x6d, 0x14, 0x0c, + 0x4a, 0x76, 0x29, 0x00, 0x52, 0x50, 0x02, 0x6e, 0x34, 0x94, 0xc4, 0x14, + 0xb4, 0x86, 0x3c, 0x51, 0x40, 0x05, 0x47, 0x40, 0x05, 0x2d, 0x36, 0x01, + 0x4e, 0xa4, 0x01, 0x53, 0xc5, 0xd2, 0x86, 0x22, 0x46, 0xe9, 0x53, 0x47, + 0xd2, 0x91, 0x01, 0x3f, 0xdc, 0xac, 0xc6, 0xaa, 0xe8, 0x08, 0x55, 0xa7, + 0x52, 0x34, 0x0c, 0x51, 0x8a, 0x00, 0x28, 0xa4, 0x01, 0x4e, 0x14, 0x01, + 0x0b, 0x75, 0xa0, 0x53, 0x10, 0xb4, 0x94, 0x00, 0x52, 0x50, 0x03, 0x96, + 0xa6, 0xa9, 0x63, 0x3d, 0xa6, 0xda, 0x0a, 0x7d, 0xca, 0x0c, 0x57, 0x6d, + 0x24, 0x63, 0x36, 0x61, 0x5f, 0x2f, 0x06, 0x9f, 0xa4, 0x9d, 0xac, 0x3e, + 0xb5, 0x85, 0x72, 0xe0, 0x6e, 0xff, 0x00, 0x0d, 0x53, 0xb9, 0xe9, 0x5a, + 0x47, 0x63, 0x03, 0x9a, 0xd5, 0x97, 0xe5, 0x35, 0x92, 0x05, 0x61, 0x58, + 0xea, 0xa4, 0x4a, 0x07, 0x14, 0x6d, 0xac, 0x6e, 0x6c, 0x58, 0x89, 0x2b, + 0x42, 0xc9, 0x8c, 0x2c, 0x0d, 0x48, 0x8e, 0x8a, 0xd6, 0xf5, 0xd8, 0x63, + 0x15, 0x6a, 0x49, 0x5f, 0x67, 0x35, 0xd7, 0x44, 0xe4, 0xa8, 0x88, 0xa3, + 0xe7, 0x9a, 0x94, 0xa1, 0x61, 0x5a, 0x90, 0x2a, 0xc7, 0x4b, 0xe5, 0x1a, + 0x00, 0xb1, 0x18, 0xe2, 0xab, 0x5e, 0x48, 0x10, 0xf5, 0xa9, 0xe8, 0x3e, + 0xa4, 0xe6, 0x40, 0x91, 0x02, 0x6a, 0x8c, 0xb3, 0xb3, 0xf0, 0x2a, 0x53, + 0xd0, 0x2d, 0xa8, 0xc4, 0x88, 0x9a, 0x71, 0x01, 0x28, 0x28, 0xad, 0x71, + 0x20, 0x11, 0x92, 0x4f, 0x15, 0xce, 0x5d, 0xeb, 0x1b, 0x64, 0x29, 0x6e, + 0xb9, 0x6f, 0x5e, 0x69, 0xda, 0xe8, 0x16, 0xe4, 0x3e, 0x75, 0xd4, 0xa3, + 0xe6, 0x7d, 0xbf, 0x4a, 0xcf, 0x9a, 0x36, 0x2f, 0x86, 0xf9, 0xab, 0x16, + 0xf4, 0x3a, 0x61, 0xb8, 0xe8, 0xe0, 0xa7, 0xb5, 0xaa, 0x3f, 0x51, 0x5c, + 0xfc, 0xc7, 0x43, 0x44, 0x2f, 0x60, 0x3f, 0x87, 0x8a, 0xaa, 0xd0, 0xcb, + 0x09, 0xc8, 0xab, 0xbd, 0xcc, 0xb6, 0x2c, 0x45, 0xad, 0xcd, 0x0a, 0xe3, + 0x15, 0x32, 0xea, 0x9e, 0x67, 0x2f, 0xf3, 0x7e, 0x15, 0xbe, 0x1f, 0xdd, + 0x67, 0x3e, 0x23, 0xde, 0x1e, 0x2f, 0x15, 0xbb, 0x55, 0x1b, 0xac, 0xc9, + 0x27, 0x02, 0xbd, 0x27, 0x56, 0xd1, 0x39, 0x29, 0xd1, 0x7c, 0xe4, 0xb6, + 0xf1, 0x95, 0x15, 0xa1, 0x08, 0xe2, 0xbc, 0x26, 0xee, 0xcf, 0x63, 0xa1, + 0x3e, 0xda, 0x6e, 0x70, 0x6a, 0xcc, 0xc8, 0x9d, 0xe9, 0x9b, 0x8d, 0x4b, + 0x65, 0x20, 0xce, 0x7a, 0xd2, 0x56, 0x77, 0x2a, 0xc4, 0x52, 0x4c, 0xa9, + 0x54, 0x9e, 0xf7, 0xde, 0xa9, 0x08, 0xa9, 0x2d, 0xd7, 0xbd, 0x55, 0x92, + 0xe8, 0x76, 0x35, 0xa2, 0x44, 0x39, 0x95, 0xda, 0xe0, 0xd4, 0x65, 0x8d, + 0x6c, 0x62, 0xdd, 0xc6, 0xd2, 0x53, 0xd8, 0x44, 0xb1, 0x1c, 0x35, 0x5b, + 0xed, 0x48, 0x06, 0x1a, 0x61, 0xa0, 0x06, 0xd1, 0x40, 0x05, 0x34, 0x8c, + 0xd0, 0x98, 0x06, 0xce, 0x2a, 0x13, 0x4c, 0x42, 0x53, 0xc5, 0x21, 0x85, + 0x34, 0xd0, 0x03, 0x69, 0x76, 0xd3, 0x01, 0xd8, 0xa5, 0xc5, 0x4d, 0xc0, + 0x5a, 0x4a, 0x2e, 0x01, 0x51, 0x9a, 0x60, 0x14, 0xe1, 0x40, 0x0b, 0x49, + 0x40, 0x21, 0x45, 0x5a, 0x4f, 0xbb, 0x43, 0x01, 0xc6, 0xa6, 0x5a, 0x46, + 0x42, 0x5c, 0x7d, 0xca, 0xcb, 0x3d, 0x69, 0x95, 0x11, 0xc9, 0x4b, 0x41, + 0x63, 0xe9, 0xc2, 0x90, 0x08, 0xd4, 0xca, 0x60, 0x14, 0xea, 0x40, 0x44, + 0xdd, 0x69, 0x29, 0x88, 0x5a, 0x5a, 0x00, 0x43, 0x4d, 0xa0, 0x07, 0xad, + 0x4b, 0x48, 0x67, 0xb7, 0x5a, 0xbe, 0x56, 0xa6, 0x95, 0x32, 0xb5, 0xdf, + 0x48, 0xe5, 0x9e, 0xe6, 0x05, 0xf2, 0xf5, 0xa8, 0x6c, 0xfe, 0x59, 0x45, + 0x73, 0xe2, 0x0d, 0xe0, 0x6f, 0xaf, 0x31, 0xd5, 0x4b, 0xa2, 0x00, 0xeb, + 0x4e, 0x1b, 0x18, 0xbd, 0xce, 0x57, 0x55, 0x9f, 0xcc, 0x7d, 0x8b, 0x8a, + 0xa8, 0x13, 0x8a, 0xe7, 0xab, 0xbd, 0x8e, 0xba, 0x6b, 0x41, 0xe1, 0x69, + 0xe1, 0x6b, 0x13, 0x42, 0x78, 0xd6, 0xb4, 0x21, 0xd9, 0x8c, 0x1a, 0x48, + 0x4c, 0xe8, 0x34, 0xf1, 0x0e, 0x06, 0xdc, 0x66, 0xa5, 0xd4, 0x1f, 0x11, + 0x7e, 0x75, 0xdb, 0x40, 0xe2, 0xaa, 0x25, 0x9a, 0xe6, 0x3e, 0x7a, 0xf5, + 0xa7, 0xca, 0xf8, 0x38, 0x15, 0x51, 0xd8, 0x19, 0x24, 0x3e, 0xf5, 0x2e, + 0xe1, 0x4e, 0x22, 0x64, 0x12, 0x5d, 0xaa, 0x1e, 0x39, 0xac, 0x6b, 0xb8, + 0xe6, 0x9e, 0xe0, 0x49, 0x9f, 0x97, 0xd2, 0xa8, 0x16, 0xe5, 0xed, 0xcc, + 0xca, 0x01, 0xa9, 0x62, 0x41, 0x58, 0x24, 0x5b, 0x1f, 0x2b, 0x88, 0xd6, + 0xb2, 0xef, 0x6e, 0xf0, 0x33, 0x9e, 0x2b, 0x5b, 0x12, 0x61, 0xde, 0xde, + 0x3d, 0xc2, 0xec, 0x07, 0x09, 0x54, 0xbe, 0x44, 0xe8, 0x2b, 0x29, 0xcb, + 0x4b, 0x1b, 0xc2, 0x02, 0xf9, 0x84, 0xd2, 0x6c, 0xe7, 0x26, 0xb9, 0x9b, + 0x3b, 0x23, 0x0b, 0x12, 0x62, 0x93, 0x15, 0x98, 0x0e, 0x02, 0x92, 0x48, + 0xb3, 0x40, 0x14, 0xe5, 0xb2, 0x57, 0xed, 0x51, 0xa6, 0x9f, 0xb5, 0x86, + 0x0d, 0x5a, 0x9d, 0x8c, 0xdc, 0x0b, 0x69, 0x66, 0x3a, 0x9a, 0x77, 0xd9, + 0xd5, 0x7a, 0x01, 0x57, 0xcf, 0x70, 0xb5, 0x88, 0x98, 0x73, 0x52, 0xc6, + 0xd8, 0xac, 0xca, 0x25, 0x2f, 0xc5, 0x46, 0x69, 0x89, 0x22, 0x36, 0x34, + 0xcd, 0xe2, 0xb2, 0x65, 0x91, 0xbc, 0xc0, 0x55, 0x29, 0x2f, 0x87, 0xaf, + 0xeb, 0x4e, 0x31, 0x0b, 0xd8, 0xcd, 0x9a, 0xfb, 0x7d, 0x55, 0x7b, 0x86, + 0x35, 0xd1, 0x18, 0x9c, 0xf2, 0x99, 0x11, 0x62, 0x69, 0xb5, 0x64, 0x06, + 0x29, 0x69, 0xd8, 0x04, 0xa5, 0xa0, 0x05, 0x1d, 0x6a, 0xe2, 0x1c, 0xad, + 0x20, 0x03, 0x4d, 0x34, 0x00, 0xca, 0x4a, 0x00, 0x4a, 0x5a, 0x40, 0x3a, + 0xaa, 0xbf, 0xde, 0xa6, 0x21, 0x2a, 0x41, 0x40, 0xc7, 0x53, 0x48, 0xa0, + 0x04, 0xdb, 0x4b, 0x48, 0x05, 0xa4, 0xa0, 0x02, 0x8a, 0x00, 0x6d, 0x30, + 0xd3, 0x00, 0xa7, 0x2d, 0x00, 0x3f, 0x14, 0xca, 0x00, 0x72, 0x75, 0xab, + 0x29, 0x40, 0x31, 0x5a, 0xa7, 0x4a, 0x46, 0x63, 0x2e, 0x7e, 0xe5, 0x66, + 0x9a, 0x63, 0x88, 0xe5, 0xa5, 0xa0, 0xb1, 0x69, 0x73, 0x45, 0x80, 0x09, + 0xa6, 0xd2, 0x01, 0x69, 0xd4, 0x01, 0x13, 0x75, 0xa2, 0x98, 0x83, 0x14, + 0x0a, 0x40, 0x3a, 0x9a, 0x45, 0x30, 0x05, 0xeb, 0x52, 0xd2, 0xea, 0x33, + 0xdb, 0x2c, 0x4f, 0xc9, 0x56, 0xa4, 0x6f, 0x96, 0xbb, 0x68, 0xec, 0x73, + 0x54, 0x31, 0x75, 0x05, 0xe6, 0xb3, 0x51, 0xc4, 0x72, 0xf2, 0x6b, 0x3c, + 0x41, 0xac, 0x0d, 0x5f, 0xed, 0x28, 0xd2, 0x2a, 0xc5, 0xbf, 0xd4, 0x1a, + 0x5c, 0xaa, 0x71, 0x58, 0xc6, 0x5a, 0x0f, 0x93, 0x53, 0x37, 0xcb, 0xcb, + 0x6e, 0x34, 0xed, 0xb5, 0xce, 0xce, 0x81, 0xca, 0x29, 0xf8, 0xe6, 0xa4, + 0x09, 0x10, 0x54, 0xeb, 0xc5, 0x30, 0x2c, 0x43, 0x76, 0xd1, 0x9a, 0xd0, + 0x17, 0xde, 0x76, 0xd4, 0x7a, 0xd2, 0x2f, 0x94, 0xca, 0x71, 0xb9, 0xa3, + 0x04, 0x83, 0xaa, 0x1f, 0xc2, 0x95, 0xfe, 0x76, 0xe9, 0x5d, 0x31, 0x77, + 0x39, 0xd9, 0x3a, 0x82, 0x16, 0xab, 0xb8, 0x91, 0xab, 0x48, 0xad, 0x09, + 0x6c, 0x8f, 0xec, 0xe4, 0x9f, 0x7a, 0x5b, 0xe7, 0xfb, 0x34, 0x1c, 0x2f, + 0x5a, 0x69, 0x5c, 0x2e, 0x36, 0xc5, 0x5e, 0x71, 0x92, 0x31, 0x56, 0xe5, + 0xdb, 0x6f, 0x1f, 0xbd, 0x44, 0x51, 0x52, 0x76, 0x31, 0xaf, 0x75, 0x24, + 0x5c, 0x96, 0xae, 0x76, 0xee, 0xf5, 0xe7, 0x7e, 0x7a, 0x54, 0xc9, 0xd8, + 0xd2, 0x9c, 0x46, 0x2a, 0xc8, 0xe2, 0x90, 0x44, 0x01, 0xf9, 0x8e, 0x2b, + 0x9f, 0x73, 0xb9, 0x35, 0x12, 0xa7, 0xdb, 0xa3, 0x0f, 0x8a, 0xb4, 0xb7, + 0xb6, 0xe0, 0x72, 0x6b, 0x3b, 0x3b, 0x8e, 0x75, 0x2f, 0xb1, 0x2a, 0xdd, + 0x40, 0xdf, 0xfe, 0xaa, 0x78, 0x68, 0x8f, 0x43, 0x45, 0xcc, 0x47, 0x6d, + 0x1d, 0x54, 0xd3, 0x6a, 0x59, 0xa2, 0x61, 0x4e, 0x51, 0x52, 0x50, 0xfd, + 0xb4, 0x85, 0x29, 0x5c, 0x76, 0x23, 0x68, 0xaa, 0x22, 0x31, 0x4c, 0x44, + 0x6f, 0x20, 0x51, 0x50, 0x35, 0xc7, 0xa1, 0xa4, 0x05, 0x69, 0x6f, 0x42, + 0xf5, 0x35, 0x46, 0x6d, 0x48, 0x0e, 0x95, 0xa2, 0xa7, 0x72, 0x5c, 0x8a, + 0x32, 0xdf, 0xc8, 0xf5, 0x5c, 0xb9, 0x6e, 0xb5, 0xb2, 0x85, 0x8e, 0x76, + 0xee, 0x32, 0x8a, 0x62, 0x0a, 0x5a, 0x76, 0x00, 0xa2, 0x80, 0x16, 0x8a, + 0x40, 0x15, 0x3c, 0x2d, 0x4c, 0x09, 0xa9, 0xa6, 0x90, 0x88, 0xcd, 0x36, + 0x80, 0x0a, 0x4a, 0x06, 0x3a, 0xa1, 0x93, 0xad, 0x08, 0x4c, 0x65, 0x48, + 0xb4, 0x0c, 0x5a, 0x28, 0x18, 0xb4, 0x94, 0x00, 0x94, 0x50, 0x20, 0xa4, + 0xa0, 0x02, 0xa3, 0x34, 0x20, 0x0a, 0x70, 0xa0, 0x07, 0xd3, 0x4d, 0x00, + 0x2a, 0x55, 0x84, 0xa0, 0x07, 0x35, 0x4e, 0x9d, 0x29, 0x19, 0x90, 0xdd, + 0xfd, 0xca, 0xa1, 0x4c, 0x71, 0x1c, 0xb4, 0xe1, 0x41, 0x62, 0xe2, 0x96, + 0x8b, 0x88, 0x69, 0xa4, 0xa4, 0x31, 0xd4, 0xb4, 0x80, 0x8d, 0xba, 0xd2, + 0x8a, 0x62, 0x0c, 0x52, 0x62, 0x98, 0x0b, 0x45, 0x00, 0x20, 0xeb, 0x52, + 0x8a, 0x43, 0x3d, 0x8b, 0x4b, 0x97, 0x30, 0xd5, 0x9b, 0x89, 0x0f, 0x15, + 0xd5, 0x87, 0xf8, 0x4c, 0x2a, 0x7c, 0x45, 0x2b, 0xce, 0x63, 0x15, 0xcf, + 0xde, 0x47, 0x33, 0xb8, 0x11, 0xf1, 0xcd, 0x69, 0x25, 0x74, 0x34, 0xec, + 0x46, 0x15, 0xc7, 0x12, 0x75, 0xa3, 0x8a, 0xe2, 0x6a, 0xc6, 0xf7, 0x1a, + 0x69, 0x2b, 0x36, 0x50, 0xe5, 0x34, 0xec, 0x54, 0x6c, 0x31, 0xe2, 0x9e, + 0xb4, 0x0c, 0x95, 0x45, 0x38, 0x64, 0x3d, 0x59, 0x24, 0xe2, 0xe0, 0x83, + 0xcd, 0x69, 0x5a, 0xdf, 0x0c, 0xfc, 0xc7, 0x34, 0xf9, 0xac, 0x44, 0xa3, + 0x73, 0x66, 0x27, 0x49, 0x17, 0x2b, 0x8a, 0x73, 0x2e, 0x6b, 0xae, 0x9c, + 0xee, 0x72, 0x38, 0xd9, 0x80, 0x50, 0x29, 0xb2, 0xc0, 0x92, 0xfd, 0xf1, + 0x9a, 0xbb, 0xd8, 0x42, 0x34, 0x91, 0x40, 0x9d, 0x40, 0x15, 0xce, 0x6b, + 0x3a, 0xc1, 0x20, 0xac, 0x1d, 0x6a, 0x63, 0xa6, 0xac, 0xab, 0x5d, 0x98, + 0x3e, 0x49, 0x90, 0xee, 0x91, 0x89, 0x3e, 0xf4, 0xfd, 0xb1, 0xc6, 0x33, + 0xd2, 0xb9, 0xa7, 0x3b, 0xb3, 0xb1, 0x14, 0xef, 0xb5, 0x58, 0xe1, 0x52, + 0x17, 0x93, 0x58, 0x77, 0x5a, 0x9c, 0xd3, 0xe4, 0x74, 0x53, 0xe8, 0x68, + 0x48, 0x4d, 0x95, 0x50, 0xd3, 0x5f, 0xef, 0x55, 0x22, 0x6e, 0xc4, 0x12, + 0xb2, 0xf4, 0x63, 0x52, 0xa5, 0xec, 0xc8, 0x78, 0x73, 0x53, 0xc9, 0x73, + 0x4e, 0x62, 0xca, 0xeb, 0x13, 0x63, 0xff, 0x00, 0xaf, 0x4f, 0x5d, 0x62, + 0x4c, 0xfc, 0xc4, 0x9a, 0xcd, 0xd2, 0x29, 0x4e, 0xc5, 0x88, 0x35, 0x8e, + 0x79, 0xad, 0xcb, 0x5b, 0x85, 0x95, 0x6b, 0x9a, 0x4b, 0x95, 0x9d, 0x31, + 0xd5, 0x16, 0x29, 0xac, 0xc0, 0x53, 0x02, 0xbc, 0xd7, 0x28, 0xbd, 0xeb, + 0x3a, 0x7b, 0xe1, 0x54, 0x91, 0x06, 0x7c, 0xf7, 0xea, 0x3b, 0xd6, 0x7c, + 0xb7, 0xec, 0xdd, 0x2b, 0x65, 0x13, 0x27, 0x32, 0xb3, 0x4a, 0xcd, 0xd4, + 0xd4, 0x79, 0xad, 0x4c, 0x6e, 0x14, 0x50, 0x01, 0x4b, 0x48, 0x04, 0xa5, + 0xa6, 0x01, 0x45, 0x30, 0x1d, 0x8a, 0x7a, 0xad, 0x20, 0x1d, 0x22, 0x60, + 0x54, 0x4a, 0x70, 0x68, 0x02, 0xca, 0x3e, 0x69, 0xc6, 0x81, 0x0c, 0x22, + 0x99, 0x48, 0x63, 0x68, 0xa0, 0x02, 0xa3, 0x7e, 0xb4, 0xc4, 0x32, 0x9e, + 0xb4, 0x86, 0x3a, 0x8a, 0x00, 0x28, 0xa0, 0x04, 0xa2, 0x90, 0x05, 0x14, + 0x00, 0x94, 0xc3, 0x4c, 0x04, 0xa7, 0x0a, 0x00, 0x75, 0x36, 0x80, 0x1c, + 0xb5, 0x3a, 0xd0, 0x0c, 0x52, 0x7e, 0x6a, 0xb2, 0x94, 0x8c, 0xca, 0xf7, + 0x67, 0x8a, 0xa5, 0x54, 0x38, 0x8f, 0x4a, 0x78, 0xa4, 0x58, 0x51, 0x83, + 0x45, 0x84, 0x34, 0xd1, 0x49, 0x8c, 0x29, 0xc2, 0x90, 0x11, 0xb7, 0x5a, + 0x51, 0x54, 0x21, 0xd4, 0x94, 0x08, 0x69, 0xa6, 0xe6, 0x81, 0x8a, 0x2a, + 0x5a, 0x06, 0x7a, 0xbe, 0x91, 0x27, 0xcb, 0x8a, 0xd6, 0x6d, 0xac, 0x05, + 0x5d, 0x09, 0x59, 0x11, 0x38, 0x5e, 0x45, 0x79, 0xb0, 0xdc, 0x76, 0xaa, + 0x93, 0x98, 0xe0, 0x84, 0x91, 0x8a, 0xeb, 0x5a, 0x9c, 0xf3, 0xec, 0x62, + 0xca, 0x09, 0x3b, 0x9a, 0xa3, 0xe2, 0xb9, 0x2a, 0x6e, 0x75, 0x43, 0x61, + 0xac, 0xde, 0xd4, 0xcc, 0x9f, 0x4a, 0xc8, 0xa1, 0xd1, 0xc5, 0x33, 0x74, + 0x5a, 0x9d, 0x20, 0x97, 0xb8, 0x1f, 0x9d, 0x3e, 0x41, 0x73, 0x93, 0x79, + 0x34, 0xf5, 0xb7, 0x3e, 0xb4, 0xb9, 0x47, 0xcc, 0x4b, 0xe5, 0x15, 0x14, + 0x8b, 0x1e, 0x69, 0xd8, 0x57, 0x14, 0xc4, 0x69, 0x9b, 0x48, 0xa2, 0xc5, + 0x73, 0x17, 0x20, 0xbc, 0x92, 0x3c, 0x56, 0x95, 0xbe, 0xa6, 0x3b, 0x9f, + 0xce, 0xa5, 0x7b, 0xa4, 0xc9, 0x5c, 0xb1, 0xfd, 0xa7, 0x15, 0x41, 0x73, + 0xad, 0xc5, 0x0c, 0x44, 0x81, 0xcd, 0x6c, 0xa6, 0x63, 0xec, 0xce, 0x66, + 0xe6, 0xfa, 0xe2, 0xed, 0xc9, 0x76, 0xe3, 0xd2, 0xa0, 0xc6, 0x2a, 0x2a, + 0x54, 0xb9, 0xd3, 0x1a, 0x76, 0x17, 0x9a, 0x82, 0xee, 0x27, 0x78, 0x48, + 0x5a, 0xc1, 0x3d, 0x4d, 0x24, 0xb4, 0x30, 0xe7, 0xd3, 0x27, 0xea, 0x71, + 0x55, 0x5e, 0xc6, 0x55, 0xfe, 0x1a, 0xe8, 0x52, 0xb9, 0x85, 0x86, 0x79, + 0x2e, 0x3b, 0x53, 0x1e, 0x26, 0xf4, 0xa6, 0x84, 0x45, 0xe5, 0xb0, 0xed, + 0x4d, 0xc1, 0xa2, 0xc3, 0x12, 0x9c, 0x05, 0x48, 0x17, 0x2d, 0x2c, 0xa4, + 0x99, 0xba, 0x1c, 0x57, 0x4f, 0x67, 0x6f, 0xe4, 0xa7, 0x5a, 0xe5, 0xa8, + 0xee, 0xce, 0xc8, 0x2b, 0x22, 0x59, 0x6e, 0x16, 0x31, 0xcd, 0x66, 0x4f, + 0xa9, 0x73, 0xc5, 0x25, 0x11, 0x36, 0x64, 0xdc, 0x5f, 0x77, 0xc9, 0xaa, + 0x32, 0x5e, 0x3b, 0x74, 0x3c, 0x57, 0x4a, 0x89, 0x84, 0xa6, 0x56, 0x24, + 0x93, 0xcd, 0x25, 0x59, 0x98, 0x51, 0x40, 0x09, 0x45, 0x30, 0x16, 0x8a, + 0x90, 0x0a, 0x5a, 0x00, 0x4a, 0x5a, 0x60, 0x48, 0x2a, 0x45, 0xa4, 0x03, + 0xa4, 0xfb, 0xb5, 0x57, 0x1c, 0xd0, 0x04, 0xb1, 0xe4, 0x1a, 0xb0, 0x0d, + 0x00, 0xc0, 0x8a, 0x89, 0x85, 0x02, 0x19, 0x45, 0x03, 0x12, 0x9a, 0xd4, + 0x08, 0x8a, 0x9e, 0xb4, 0xc6, 0x3a, 0x8a, 0x40, 0x14, 0x52, 0x01, 0x28, + 0xa2, 0xc0, 0x25, 0x2d, 0x00, 0x25, 0x25, 0x50, 0x06, 0x29, 0x69, 0x00, + 0xb8, 0xa4, 0xc5, 0x20, 0x01, 0x52, 0x07, 0xa5, 0x60, 0x63, 0xb7, 0xf3, + 0x56, 0x11, 0xc5, 0x04, 0x15, 0xee, 0xdb, 0x9a, 0xad, 0x54, 0x34, 0x28, + 0x38, 0xa9, 0x63, 0xe4, 0x50, 0x50, 0xea, 0x33, 0x83, 0x40, 0x86, 0x4a, + 0x72, 0xd4, 0xca, 0x43, 0x16, 0x9d, 0x48, 0x06, 0x37, 0x5a, 0x51, 0x54, + 0x21, 0x69, 0xa4, 0xd0, 0x03, 0x69, 0x28, 0x18, 0xe1, 0x52, 0x0e, 0x95, + 0x20, 0x7a, 0x3d, 0x94, 0x84, 0x36, 0x06, 0x6b, 0x7a, 0x31, 0x95, 0x19, + 0x6a, 0xa4, 0x8d, 0x79, 0x92, 0x2b, 0xcf, 0x2e, 0x24, 0xfb, 0xd8, 0x15, + 0x91, 0x79, 0x7d, 0x18, 0xcb, 0x1e, 0x47, 0xa2, 0xf5, 0xae, 0xa8, 0xec, + 0x71, 0x4f, 0xe2, 0x33, 0xbe, 0xd6, 0x6e, 0xe6, 0x08, 0xb9, 0xdb, 0x57, + 0xa3, 0xb4, 0x5e, 0xec, 0x6b, 0x07, 0xab, 0x36, 0xd9, 0x12, 0x3c, 0x30, + 0xa2, 0xf4, 0xaa, 0x98, 0x06, 0x4f, 0x6a, 0x52, 0xd8, 0x11, 0x6b, 0xed, + 0x51, 0x01, 0x8c, 0xd3, 0x0d, 0xc6, 0x7a, 0x54, 0xdc, 0x2c, 0x09, 0x37, + 0xcd, 0xcd, 0x4f, 0xf6, 0xa4, 0x5a, 0x45, 0x10, 0xbe, 0xa4, 0xbb, 0xb6, + 0xf1, 0xf9, 0xd3, 0xe3, 0xbe, 0x43, 0xc5, 0x29, 0x68, 0x09, 0x13, 0x79, + 0xd9, 0xa6, 0xef, 0x35, 0x3c, 0xc5, 0x72, 0x86, 0xfa, 0x4c, 0x9a, 0x9b, + 0x97, 0x60, 0xa6, 0x34, 0x7e, 0xd4, 0x93, 0x18, 0xdf, 0x2e, 0x97, 0xcb, + 0xa8, 0x6c, 0xb0, 0xd9, 0x4a, 0x40, 0xef, 0x48, 0x64, 0x05, 0xa3, 0xa5, + 0xf2, 0x15, 0x85, 0x5a, 0xd0, 0x96, 0x91, 0x1f, 0xd8, 0x22, 0x6e, 0xd4, + 0xd6, 0xd1, 0xe0, 0x6e, 0xab, 0x5b, 0x29, 0xd8, 0xc6, 0x51, 0x2a, 0xdc, + 0xe8, 0xf1, 0xed, 0x1b, 0x06, 0xdf, 0xa5, 0x67, 0xbe, 0x90, 0xe3, 0xbe, + 0x6a, 0x9d, 0x52, 0x54, 0x0a, 0x8f, 0xa6, 0xcd, 0x9f, 0xbb, 0x56, 0xec, + 0xb4, 0x67, 0x2d, 0x99, 0x78, 0x15, 0x95, 0x49, 0x9a, 0xd3, 0x89, 0xb5, + 0x14, 0x31, 0xdb, 0x2d, 0x54, 0xb9, 0xd4, 0x82, 0xf0, 0xa6, 0xb0, 0x8a, + 0x36, 0x6c, 0xc7, 0xb9, 0xbe, 0xc9, 0xf9, 0x8e, 0x6b, 0x3e, 0x4b, 0xa7, + 0x6e, 0x95, 0xd3, 0x18, 0x9c, 0xf3, 0x65, 0x66, 0x39, 0xeb, 0x49, 0x5b, + 0x10, 0x14, 0x94, 0x84, 0x25, 0x2d, 0x21, 0x85, 0x15, 0x42, 0x0a, 0x2a, + 0x46, 0x2d, 0x14, 0x80, 0x28, 0xaa, 0x02, 0x55, 0xa7, 0xe6, 0xa4, 0x43, + 0xdb, 0x95, 0xa8, 0x01, 0xc5, 0x31, 0x8b, 0x9a, 0x96, 0x3c, 0xd0, 0x04, + 0xc3, 0x9a, 0x64, 0x8b, 0x48, 0x92, 0x03, 0x49, 0x40, 0xc4, 0xa4, 0xa0, + 0x08, 0xda, 0x94, 0x53, 0x63, 0x43, 0xb3, 0x45, 0x20, 0x12, 0x8a, 0x00, + 0x5a, 0x4a, 0x04, 0x14, 0x53, 0x00, 0xa2, 0x86, 0x01, 0x45, 0x20, 0x16, + 0x8a, 0x00, 0x43, 0x4c, 0xa6, 0x01, 0x9a, 0x70, 0x90, 0x8a, 0x56, 0x01, + 0x33, 0x9a, 0x5c, 0x53, 0x01, 0xad, 0x53, 0x45, 0xf7, 0x29, 0x00, 0xfa, + 0x88, 0xd1, 0x70, 0x1b, 0xde, 0x92, 0x90, 0xc5, 0xa7, 0x0a, 0x00, 0x63, + 0x75, 0xa3, 0x34, 0xc4, 0x2d, 0x46, 0x68, 0x00, 0xa2, 0x81, 0x8e, 0x15, + 0x20, 0xa0, 0x0f, 0x5b, 0xfb, 0x32, 0xda, 0x29, 0x6e, 0x33, 0x54, 0x26, + 0xd4, 0x8a, 0xb6, 0x31, 0x9f, 0xc6, 0xba, 0xa6, 0xb9, 0x4c, 0x29, 0xbe, + 0x66, 0x67, 0xdc, 0x5d, 0xca, 0xcd, 0xc1, 0xaa, 0x8f, 0x6e, 0xb2, 0xf3, + 0x23, 0x56, 0x77, 0xd0, 0xd1, 0x8f, 0xb6, 0x78, 0xe0, 0x3c, 0x55, 0x9f, + 0xb5, 0xfa, 0x66, 0xa5, 0x09, 0x95, 0x6e, 0xaf, 0xcf, 0x4e, 0xbf, 0x5a, + 0x84, 0x5d, 0xbe, 0x3a, 0x7e, 0xb4, 0xdd, 0x31, 0x29, 0x11, 0x1b, 0x96, + 0xce, 0x49, 0x35, 0x13, 0x6a, 0x72, 0x29, 0xc2, 0x8f, 0xd6, 0x9f, 0xb2, + 0x2b, 0x98, 0x85, 0xb5, 0x09, 0xbe, 0x95, 0x19, 0xbb, 0x9c, 0xff, 0x00, + 0xcb, 0x43, 0x53, 0x6b, 0x0e, 0xe3, 0x3c, 0xc7, 0xcf, 0xdf, 0x35, 0xa1, + 0xa3, 0x2c, 0x92, 0xdd, 0x0f, 0x98, 0xe2, 0xb3, 0xad, 0xb1, 0xad, 0x2d, + 0xce, 0x94, 0x27, 0x02, 0x97, 0x6d, 0x73, 0x16, 0x3b, 0x65, 0x38, 0x44, + 0x4f, 0x41, 0x40, 0xcb, 0x31, 0xe9, 0xf2, 0x3f, 0x6a, 0x8e, 0xea, 0xd8, + 0xdb, 0xfd, 0xea, 0xdb, 0x94, 0xcf, 0x9f, 0x52, 0xb5, 0x15, 0xce, 0x6e, + 0x36, 0x99, 0x27, 0x4a, 0x10, 0x99, 0x44, 0xdb, 0x1d, 0xd5, 0x69, 0x14, + 0xd5, 0x30, 0x48, 0x99, 0x45, 0x48, 0x2a, 0x2e, 0x55, 0x86, 0x91, 0x9a, + 0x61, 0x8c, 0x7a, 0x51, 0x70, 0xb1, 0x1f, 0x94, 0xa2, 0xa0, 0xb8, 0xb8, + 0x8e, 0x04, 0xcd, 0x35, 0xa8, 0x6c, 0x62, 0x5e, 0xea, 0x06, 0x4c, 0xf3, + 0xc7, 0xb5, 0x64, 0xcd, 0x75, 0xe9, 0x5d, 0x11, 0x89, 0x8b, 0x65, 0x46, + 0x62, 0xd4, 0x95, 0xa1, 0x90, 0x86, 0x92, 0x98, 0x05, 0x25, 0x02, 0x0a, + 0x5c, 0x52, 0x18, 0xb8, 0xa4, 0xa6, 0x80, 0x4a, 0x5a, 0x00, 0x29, 0x68, + 0x01, 0x29, 0x69, 0x00, 0xf1, 0x4f, 0x14, 0x80, 0x97, 0xf8, 0x69, 0x82, + 0x2a, 0x04, 0x4a, 0x23, 0x02, 0x9d, 0x8a, 0x04, 0x37, 0xa1, 0xa9, 0x78, + 0x65, 0xa0, 0x0a, 0xae, 0xb8, 0xa8, 0xe8, 0x01, 0x29, 0x28, 0x18, 0xd3, + 0x49, 0x4c, 0x62, 0xd2, 0xd2, 0x10, 0x51, 0x40, 0x05, 0x14, 0xc0, 0x28, + 0xa4, 0x02, 0x51, 0x40, 0x06, 0x28, 0xa0, 0x61, 0x4b, 0x40, 0x82, 0xa3, + 0xa0, 0x04, 0xa2, 0x81, 0x8e, 0x5a, 0x75, 0x31, 0x0d, 0x6a, 0x96, 0x1f, + 0xbb, 0x48, 0x07, 0xf6, 0xa8, 0xa8, 0x01, 0x86, 0x8a, 0x06, 0x2d, 0x3a, + 0x90, 0x0c, 0x6a, 0x41, 0x4e, 0xc0, 0x49, 0xfc, 0x35, 0x0d, 0x02, 0x12, + 0x9d, 0x40, 0xc5, 0xa9, 0x29, 0x30, 0x3d, 0x37, 0x53, 0xbb, 0x77, 0x3b, + 0x73, 0x59, 0xbb, 0x47, 0x2e, 0x6b, 0xa6, 0xb6, 0xb2, 0xb1, 0x8d, 0x3f, + 0x76, 0x37, 0x2b, 0xb4, 0x9f, 0x3e, 0x4f, 0xdd, 0x15, 0x14, 0x7e, 0x7c, + 0xc7, 0x8f, 0xbb, 0xef, 0x55, 0xca, 0x47, 0x30, 0xa2, 0xd1, 0xde, 0x40, + 0x37, 0x6d, 0xfa, 0x55, 0xcf, 0xb3, 0x72, 0x06, 0x49, 0xfc, 0x2a, 0x89, + 0xb9, 0x05, 0xc5, 0xb0, 0x3c, 0x2f, 0x5a, 0x86, 0xe1, 0x56, 0xde, 0x23, + 0xf2, 0xd6, 0x84, 0xdc, 0xa0, 0xd7, 0x1b, 0x07, 0xff, 0x00, 0x5e, 0xa9, + 0xb1, 0xc9, 0x35, 0x93, 0x36, 0x48, 0x51, 0x49, 0x59, 0x58, 0xd0, 0x3e, + 0x83, 0x9a, 0xeb, 0x34, 0x1b, 0x2f, 0x22, 0x0d, 0xe4, 0x7c, 0xc6, 0xb9, + 0x6b, 0xbe, 0x87, 0x45, 0x25, 0xa5, 0xcd, 0x4d, 0x94, 0x6d, 0xac, 0x4a, + 0x16, 0xb4, 0x34, 0x98, 0x95, 0xe4, 0x62, 0xc0, 0x71, 0x8a, 0x40, 0xf6, + 0x34, 0x65, 0xb8, 0x8a, 0xdc, 0xe0, 0x57, 0x3d, 0xac, 0x5c, 0x19, 0xfe, + 0xed, 0x75, 0xde, 0xc7, 0x34, 0x62, 0xee, 0x53, 0x55, 0x38, 0xa7, 0xd7, + 0x19, 0xd8, 0x14, 0xda, 0x00, 0x6e, 0x29, 0xd4, 0x0c, 0x5a, 0x75, 0x21, + 0x85, 0x21, 0x38, 0xa0, 0x0c, 0xdb, 0xeb, 0xf1, 0x0a, 0xfc, 0xbc, 0x9a, + 0xe7, 0xee, 0xaf, 0x0b, 0xb6, 0x5f, 0x9a, 0xde, 0x28, 0xc5, 0xc8, 0xcc, + 0x96, 0xe0, 0xbd, 0x42, 0x2b, 0x74, 0x62, 0xc7, 0x52, 0x53, 0x01, 0x29, + 0xb4, 0x00, 0x94, 0x54, 0x80, 0x66, 0x9d, 0x9a, 0x04, 0x26, 0x69, 0x33, + 0x54, 0x30, 0xa5, 0xa4, 0x01, 0x45, 0x00, 0x14, 0x52, 0x01, 0xeb, 0x52, + 0x0a, 0x00, 0x91, 0x4d, 0x4b, 0x40, 0x83, 0x34, 0xb4, 0x08, 0x6b, 0x53, + 0x51, 0xf1, 0x40, 0x09, 0x27, 0x35, 0x01, 0xa1, 0x00, 0xdc, 0xd2, 0x50, + 0x50, 0x94, 0xa0, 0x50, 0x01, 0x45, 0x32, 0x42, 0x8a, 0x43, 0x0a, 0x33, + 0x40, 0x09, 0x9a, 0x37, 0x50, 0x02, 0x6e, 0xa5, 0xdf, 0x40, 0x09, 0xbe, + 0x8d, 0xd4, 0x00, 0x6e, 0xa7, 0xee, 0xe2, 0x80, 0x19, 0x9a, 0x69, 0xa0, + 0x04, 0xa2, 0x98, 0xc7, 0x2d, 0x3a, 0x90, 0x86, 0xb5, 0x4b, 0x09, 0xf9, + 0x68, 0x01, 0x69, 0x94, 0x30, 0x18, 0x68, 0xa0, 0x62, 0xd2, 0xd4, 0x80, + 0xd7, 0xa6, 0x8a, 0xa0, 0x24, 0x6f, 0xb9, 0x51, 0x50, 0x20, 0xa5, 0x14, + 0x0c, 0x5c, 0xd3, 0xe9, 0x01, 0xe8, 0xd2, 0x21, 0x63, 0xbd, 0xeb, 0x36, + 0xe2, 0x4f, 0x35, 0xbc, 0xb5, 0xfb, 0xbd, 0xeb, 0xaa, 0x3a, 0xbe, 0x63, + 0x9e, 0x5d, 0x84, 0x58, 0x8b, 0x9f, 0x25, 0x39, 0x53, 0xe9, 0x57, 0x45, + 0xa8, 0x8c, 0x04, 0x40, 0x72, 0x6b, 0x43, 0x33, 0x46, 0x1b, 0x3f, 0x22, + 0x0d, 0xc5, 0x23, 0xdd, 0xeb, 0x9a, 0x72, 0x42, 0xb1, 0x23, 0x49, 0xe6, + 0xe3, 0xda, 0x9a, 0x64, 0xb3, 0x35, 0xbc, 0xbd, 0xfb, 0x98, 0xb6, 0x41, + 0xaa, 0x17, 0x3f, 0xbc, 0x72, 0x48, 0xe3, 0xde, 0xa9, 0x05, 0x8c, 0xab, + 0x80, 0xac, 0xdc, 0x0e, 0x95, 0x0e, 0xca, 0xc6, 0x7b, 0x9b, 0xc4, 0x29, + 0xb5, 0x9b, 0x28, 0xbb, 0xa4, 0xda, 0xfd, 0xa6, 0xf1, 0x01, 0x1f, 0x28, + 0x35, 0xda, 0x5b, 0xc6, 0x12, 0x25, 0x51, 0xd0, 0x0a, 0xe0, 0xa9, 0xac, + 0x8e, 0xd8, 0xfc, 0x24, 0x84, 0x55, 0x7b, 0x89, 0x04, 0x29, 0xb8, 0xd1, + 0x15, 0x72, 0x5b, 0x28, 0xc9, 0xa9, 0xa2, 0x0c, 0xd4, 0x71, 0xf8, 0x94, + 0x40, 0xd8, 0x59, 0x76, 0xd5, 0x3a, 0x4c, 0x14, 0x91, 0x66, 0xd7, 0x53, + 0xfb, 0x74, 0xb5, 0x68, 0x8a, 0x8e, 0x62, 0xb9, 0x6c, 0x36, 0x98, 0x45, + 0x22, 0x82, 0x9b, 0x40, 0x08, 0x69, 0x05, 0x16, 0x01, 0xd4, 0x54, 0x14, + 0x26, 0x6b, 0x33, 0x51, 0xd4, 0x3c, 0xa1, 0xb5, 0x7a, 0xd6, 0x90, 0x8d, + 0xc9, 0x93, 0x39, 0xbb, 0x9b, 0xa2, 0xce, 0x49, 0x35, 0x42, 0x47, 0xdd, + 0x5d, 0x56, 0x39, 0xe4, 0x45, 0x4e, 0x15, 0x64, 0x8b, 0x49, 0x40, 0x05, + 0x34, 0xd4, 0x80, 0xda, 0x4a, 0x04, 0x82, 0x96, 0x9d, 0xc6, 0x14, 0x52, + 0x01, 0x68, 0xa4, 0x01, 0x4b, 0x4c, 0x02, 0x8a, 0x40, 0x2a, 0xd4, 0x82, + 0x80, 0x24, 0x5e, 0xb5, 0x2d, 0x02, 0x0a, 0x5a, 0x00, 0x4a, 0x89, 0xc6, + 0x39, 0xa0, 0x06, 0xe6, 0x9a, 0xd4, 0x0c, 0x65, 0x14, 0x08, 0x6d, 0x3c, + 0x30, 0xc5, 0x00, 0x30, 0x9a, 0x6e, 0x69, 0xee, 0x02, 0xe6, 0x93, 0x34, + 0x86, 0x26, 0x68, 0xcd, 0x00, 0x25, 0x14, 0x00, 0x51, 0x40, 0x09, 0x4b, + 0x4c, 0x05, 0xa6, 0xd0, 0x02, 0xd1, 0x8a, 0x40, 0x2e, 0x29, 0x31, 0x40, + 0x87, 0x2d, 0x3a, 0x80, 0x1a, 0xd5, 0x24, 0x3d, 0x0d, 0x00, 0x38, 0xd4, + 0x74, 0x00, 0xda, 0x29, 0x0c, 0x51, 0x4b, 0x40, 0x0d, 0x7a, 0x6d, 0x30, + 0x15, 0x8f, 0x14, 0xda, 0x00, 0x4a, 0x78, 0x14, 0x00, 0xec, 0x53, 0xa8, + 0x03, 0xd0, 0xf5, 0x19, 0x73, 0xfb, 0xb4, 0xea, 0x6a, 0x88, 0x4d, 0x9f, + 0xc3, 0xf3, 0x1a, 0xe9, 0x8a, 0x39, 0x59, 0xa5, 0xa7, 0xd8, 0x98, 0x17, + 0x7e, 0xee, 0x7e, 0xb5, 0xa1, 0x04, 0x0a, 0xff, 0x00, 0xbd, 0x9a, 0x46, + 0x03, 0xda, 0xb4, 0x44, 0x49, 0x99, 0x17, 0xd7, 0xe1, 0x2e, 0x30, 0x9f, + 0xbc, 0x51, 0xfd, 0xea, 0x8d, 0xee, 0x6e, 0x6e, 0xe3, 0x2a, 0x91, 0x44, + 0xa3, 0xd7, 0x75, 0x5c, 0xb4, 0x90, 0x2d, 0x8a, 0xc5, 0x67, 0xf3, 0x02, + 0x34, 0xbc, 0x54, 0x37, 0xce, 0x04, 0x7b, 0x43, 0x9d, 0xd5, 0x3d, 0x47, + 0xb9, 0x9b, 0x48, 0x71, 0x58, 0xbd, 0xcd, 0xc8, 0xd8, 0xd3, 0x7e, 0x95, + 0x0c, 0xa8, 0x9d, 0x5f, 0x87, 0xec, 0xfc, 0x98, 0x3c, 0xc3, 0xf7, 0x8f, + 0xf8, 0xd6, 0xe4, 0x75, 0xe6, 0xee, 0x76, 0xb1, 0x4d, 0x64, 0xeb, 0xdf, + 0xf1, 0xe2, 0xdf, 0x8d, 0x6f, 0x47, 0xe2, 0x39, 0xea, 0xfc, 0x27, 0x2f, + 0x2f, 0x4a, 0xce, 0x97, 0xad, 0x7a, 0x12, 0xd8, 0xe7, 0x8b, 0x36, 0xfc, + 0x31, 0x20, 0x87, 0x7f, 0xd3, 0xfa, 0xd6, 0xe9, 0xbe, 0x5a, 0xf2, 0xf9, + 0x7d, 0xe6, 0x7a, 0x12, 0x64, 0x7f, 0xda, 0x0b, 0x47, 0xdb, 0x47, 0xbd, + 0x57, 0x29, 0x37, 0x1b, 0xf6, 0xcf, 0x63, 0x4d, 0xfb, 0x67, 0xb1, 0xaa, + 0x51, 0x23, 0x98, 0x0d, 0xef, 0xfb, 0x26, 0xa3, 0x5b, 0xd2, 0x7f, 0x86, + 0x93, 0x88, 0xe2, 0xcb, 0x70, 0xc8, 0x5d, 0x6a, 0x6a, 0xc4, 0xd8, 0xce, + 0xd5, 0x2f, 0x84, 0x11, 0xe0, 0x7d, 0xea, 0xe5, 0xee, 0x67, 0xdc, 0xd9, + 0x35, 0xd1, 0x04, 0x60, 0xe4, 0x51, 0x27, 0x3d, 0x69, 0x2b, 0x63, 0x21, + 0x48, 0xe6, 0x8a, 0x00, 0x43, 0x49, 0x40, 0x05, 0x34, 0xd0, 0x03, 0x68, + 0xa4, 0x02, 0xd2, 0x55, 0x00, 0x51, 0x48, 0x05, 0xa2, 0x80, 0x0a, 0x5a, + 0x40, 0x14, 0x50, 0x02, 0xad, 0x48, 0x28, 0x01, 0xea, 0x6a, 0x5a, 0x00, + 0x5a, 0x28, 0x10, 0x53, 0x5b, 0xee, 0x1a, 0x04, 0x57, 0xcf, 0x34, 0x53, + 0x18, 0xda, 0x29, 0x00, 0xc3, 0x4d, 0xa0, 0x04, 0xa2, 0x98, 0x0b, 0x49, + 0x48, 0x61, 0x45, 0x30, 0x16, 0x8c, 0x52, 0x10, 0xb8, 0xa5, 0xc5, 0x00, + 0x32, 0x9e, 0x28, 0x01, 0x68, 0xc5, 0x03, 0x11, 0x69, 0x28, 0x10, 0x66, + 0x92, 0x98, 0x0a, 0xb4, 0xea, 0x43, 0x1a, 0x69, 0xd1, 0x1a, 0x00, 0x71, + 0xa6, 0xd0, 0x21, 0xb4, 0x50, 0x31, 0x68, 0xa0, 0x00, 0xd2, 0x50, 0x03, + 0x69, 0x31, 0x40, 0x05, 0x48, 0x28, 0x00, 0xdd, 0x49, 0x9a, 0x00, 0xef, + 0x91, 0x77, 0x39, 0x79, 0x2a, 0xd6, 0x9d, 0x6d, 0xe6, 0xcf, 0xba, 0x55, + 0x62, 0x05, 0x75, 0x1c, 0x86, 0xc7, 0x91, 0xe6, 0x61, 0x56, 0x11, 0xff, + 0x00, 0x02, 0x38, 0xa6, 0x6b, 0x17, 0xf2, 0x59, 0x59, 0xf9, 0x42, 0x28, + 0xc6, 0x78, 0xf9, 0x4d, 0x74, 0xc1, 0x6a, 0x61, 0x2d, 0x8e, 0x49, 0xb0, + 0x5c, 0x9f, 0x53, 0x57, 0x62, 0xb9, 0x8a, 0x35, 0xc0, 0xdd, 0x9a, 0xc2, + 0x6e, 0xf2, 0x36, 0x5b, 0x11, 0x49, 0x38, 0x1f, 0xc0, 0x33, 0x59, 0xb7, + 0x2f, 0xe6, 0x1c, 0x95, 0xc5, 0x52, 0x63, 0x48, 0xaf, 0x8a, 0x8d, 0xab, + 0x37, 0xa9, 0xa8, 0xcc, 0x55, 0xcd, 0x26, 0xd7, 0xed, 0x37, 0xa8, 0x31, + 0xf2, 0xe6, 0xb9, 0xaa, 0xbb, 0x44, 0xde, 0x92, 0xd4, 0xed, 0x63, 0x5d, + 0xb1, 0xa8, 0x1e, 0x95, 0x2a, 0xd7, 0x11, 0xb8, 0xe3, 0x59, 0x7a, 0xda, + 0xee, 0xb3, 0x61, 0xf5, 0xad, 0xa8, 0xfc, 0x46, 0x15, 0x76, 0x39, 0x79, + 0xc6, 0x06, 0x2b, 0x3a, 0x41, 0xf3, 0x57, 0x7c, 0x96, 0x87, 0x3c, 0x0d, + 0xdf, 0x0e, 0xdb, 0x16, 0x47, 0x7e, 0xd8, 0xfe, 0xb5, 0xa8, 0xf6, 0xb5, + 0xe7, 0xf5, 0x3b, 0x64, 0x33, 0xec, 0xc3, 0xd2, 0x9c, 0xb6, 0xf5, 0x7b, + 0x88, 0x9c, 0x5a, 0x67, 0xff, 0x00, 0xd5, 0x4b, 0xf6, 0x51, 0x53, 0x66, + 0x3d, 0x06, 0x9b, 0x74, 0xa4, 0xf2, 0x12, 0xa5, 0xb2, 0x92, 0x24, 0x55, + 0x0b, 0x55, 0xef, 0x6e, 0x56, 0xde, 0x12, 0xc6, 0xa2, 0x2a, 0xec, 0xa9, + 0x1c, 0x9d, 0xed, 0xd1, 0x9a, 0x42, 0xed, 0x59, 0xec, 0x77, 0x57, 0x5c, + 0x4e, 0x71, 0x29, 0x45, 0x36, 0x48, 0xfc, 0x71, 0x51, 0xd3, 0xb8, 0x09, + 0x45, 0x48, 0x0a, 0x72, 0x6a, 0x33, 0x4e, 0xe0, 0x36, 0x8a, 0x00, 0x7d, + 0x36, 0x8b, 0x80, 0x62, 0x8a, 0x2e, 0x02, 0x53, 0xa8, 0x00, 0xa5, 0x14, + 0x80, 0x29, 0x0d, 0x00, 0x02, 0xa5, 0x14, 0x00, 0xb5, 0x32, 0xf4, 0xa0, + 0x05, 0xa2, 0x81, 0x0b, 0x47, 0x6a, 0x04, 0x54, 0x3f, 0x7a, 0x8a, 0x60, + 0x25, 0x14, 0xae, 0x31, 0x86, 0x81, 0x40, 0x08, 0x69, 0x29, 0x8c, 0x5a, + 0x28, 0x10, 0x62, 0x9d, 0xb6, 0x90, 0x06, 0x29, 0x68, 0xb8, 0x0b, 0x49, + 0x40, 0x82, 0x8d, 0xb4, 0x0c, 0x5c, 0x52, 0xe2, 0x80, 0x13, 0x6d, 0x30, + 0x8a, 0x62, 0x0d, 0xb4, 0xb8, 0xa4, 0x30, 0xa2, 0x80, 0x18, 0xd5, 0x24, + 0x3d, 0xe8, 0x00, 0x6a, 0x6d, 0x00, 0x21, 0xa2, 0x81, 0x85, 0x2d, 0x2b, + 0x80, 0xec, 0x66, 0x82, 0x29, 0x88, 0x6e, 0x28, 0x34, 0x98, 0xc4, 0xa4, + 0xcd, 0x30, 0x12, 0x94, 0x0a, 0x00, 0xf4, 0x36, 0xf9, 0xa4, 0x11, 0xd6, + 0xbd, 0xa5, 0xce, 0xd0, 0x23, 0x49, 0x30, 0x7d, 0xab, 0xa9, 0xe8, 0xce, + 0x4d, 0xd0, 0xeb, 0xbb, 0xbf, 0x22, 0x13, 0x23, 0x34, 0x8d, 0x8f, 0xee, + 0xd7, 0x29, 0xa9, 0xdd, 0x34, 0xad, 0xe6, 0x7c, 0xdb, 0x7f, 0xdd, 0xae, + 0xa5, 0x1d, 0x0c, 0xba, 0x94, 0x7c, 0xf7, 0x28, 0x5b, 0x9c, 0x7b, 0xd4, + 0xb6, 0xf9, 0x61, 0x97, 0xe0, 0x57, 0x31, 0xb9, 0x5b, 0x69, 0x9e, 0x6e, + 0x1b, 0x8a, 0x99, 0xb9, 0xc0, 0xa7, 0xf6, 0x82, 0xe3, 0x1b, 0xa5, 0x40, + 0x6a, 0x64, 0x52, 0x0c, 0x13, 0xd2, 0xba, 0xaf, 0x0e, 0x69, 0xed, 0x1c, + 0x5b, 0xf6, 0xfc, 0xdf, 0xfd, 0x7a, 0xe5, 0xad, 0xd8, 0xea, 0xa5, 0xa6, + 0xa7, 0x44, 0xba, 0x7c, 0xed, 0xda, 0xa7, 0x5d, 0x2e, 0x4f, 0xef, 0x52, + 0xf6, 0x44, 0x7b, 0x54, 0x3b, 0xfb, 0x35, 0xbf, 0xbd, 0x55, 0x35, 0x0d, + 0x1c, 0xc9, 0x6e, 0x46, 0xe3, 0x5b, 0x52, 0xa6, 0x94, 0x8c, 0x6a, 0xd5, + 0xf7, 0x4e, 0x5a, 0xe3, 0x43, 0xbb, 0x24, 0xfc, 0xa2, 0xab, 0x2f, 0x86, + 0x6e, 0x5f, 0xa9, 0x02, 0xbb, 0x27, 0x63, 0x08, 0x4c, 0xe8, 0x34, 0x7d, + 0x0d, 0xad, 0xad, 0xf6, 0x75, 0xeb, 0x5a, 0x23, 0x49, 0x26, 0xb8, 0x94, + 0x0e, 0xa9, 0x55, 0x24, 0x1a, 0x38, 0xa9, 0x97, 0x4b, 0x51, 0x4e, 0xc4, + 0x73, 0x8f, 0x36, 0x91, 0xc4, 0xb9, 0xae, 0x73, 0x51, 0xbc, 0x54, 0x27, + 0x6d, 0x2e, 0x5d, 0x07, 0x19, 0xea, 0x62, 0xdc, 0xea, 0xcf, 0x9d, 0xa8, + 0xbf, 0xad, 0x5d, 0xb3, 0x9b, 0xcc, 0x5a, 0xe2, 0xa9, 0xb9, 0xdf, 0x4f, + 0x62, 0xce, 0xec, 0x57, 0x35, 0xac, 0x5e, 0x99, 0xa5, 0xda, 0x3a, 0x0a, + 0xba, 0x68, 0xce, 0xa3, 0x31, 0x1c, 0x92, 0x69, 0x36, 0xf1, 0x5b, 0x18, + 0x8e, 0x0b, 0x45, 0x3d, 0xc4, 0x1d, 0xaa, 0x3a, 0x06, 0x1c, 0xd2, 0x73, + 0x45, 0x80, 0x4e, 0x69, 0x3a, 0xd0, 0x03, 0x69, 0x3b, 0xd3, 0x60, 0x3e, + 0x8c, 0x52, 0xb0, 0x05, 0x36, 0x8b, 0x00, 0x94, 0xb4, 0x80, 0x29, 0x69, + 0x80, 0xb4, 0x52, 0x01, 0x29, 0xe2, 0x80, 0x1e, 0x2a, 0x45, 0xcd, 0x02, + 0x1d, 0x45, 0x30, 0x16, 0x95, 0x7a, 0xd2, 0xb8, 0x8a, 0xce, 0x39, 0xa6, + 0x53, 0x60, 0x86, 0xd2, 0xd2, 0x28, 0x43, 0x41, 0xa6, 0x21, 0x29, 0xb4, + 0x80, 0x50, 0x29, 0xe1, 0x68, 0x01, 0xdd, 0x29, 0x28, 0x00, 0xc5, 0x18, + 0xa0, 0x03, 0x14, 0x98, 0xa0, 0x02, 0x8a, 0x00, 0x5c, 0xd2, 0xe6, 0x8b, + 0x08, 0x33, 0x48, 0x68, 0x18, 0x94, 0x94, 0x00, 0x51, 0x40, 0x0d, 0x34, + 0xf8, 0x7a, 0x9a, 0x06, 0x07, 0xad, 0x21, 0xa0, 0x44, 0x7d, 0xe8, 0xa0, + 0x62, 0xe6, 0x9d, 0x48, 0x07, 0x52, 0x66, 0x98, 0x0d, 0x26, 0x92, 0x80, + 0x12, 0x97, 0x14, 0x08, 0x5a, 0x28, 0x19, 0xe9, 0xd1, 0xd9, 0xb7, 0xde, + 0x28, 0x0f, 0xd6, 0xae, 0xd9, 0xda, 0xc0, 0x9f, 0xbe, 0x95, 0x9c, 0x7b, + 0x01, 0x5d, 0xdb, 0x9c, 0x43, 0x9e, 0x0f, 0x3e, 0x5d, 0xd1, 0x6d, 0xf2, + 0xff, 0x00, 0xda, 0x35, 0x9b, 0x7f, 0x1b, 0xc9, 0x27, 0x97, 0x80, 0x56, + 0xb4, 0xba, 0x23, 0xd4, 0xa7, 0x75, 0x02, 0x24, 0x3b, 0x16, 0x35, 0x19, + 0xac, 0x5b, 0xa9, 0x76, 0x2f, 0x93, 0x19, 0xc0, 0x35, 0x25, 0xc7, 0x72, + 0x58, 0x53, 0xc8, 0x83, 0x27, 0xa9, 0xfd, 0x69, 0xf0, 0x41, 0x9e, 0x58, + 0xd6, 0x45, 0xb1, 0x97, 0x71, 0xac, 0x69, 0x85, 0xa8, 0xec, 0x2c, 0x65, + 0xbd, 0x9c, 0x47, 0x1a, 0xf2, 0x6a, 0xa7, 0xdc, 0x21, 0xa9, 0xd8, 0xe9, + 0x9e, 0x0e, 0x85, 0x42, 0xbd, 0xd7, 0x27, 0xd3, 0x02, 0xba, 0x7b, 0x7b, + 0x68, 0xad, 0x93, 0x6c, 0x49, 0x81, 0x5c, 0xb3, 0x95, 0xcd, 0xa3, 0x72, + 0x5a, 0x2a, 0x0a, 0xe4, 0x41, 0x45, 0x3b, 0xd8, 0xc7, 0x96, 0xfa, 0x0c, + 0x31, 0x21, 0xfe, 0x11, 0x48, 0xb6, 0xf1, 0x2f, 0x44, 0x15, 0xa7, 0xb4, + 0xb9, 0x1e, 0xce, 0xc3, 0xf0, 0x3d, 0x29, 0x6a, 0x79, 0x8a, 0xe4, 0x0a, + 0x46, 0xe0, 0x55, 0x27, 0x70, 0xb5, 0x8c, 0x2f, 0x10, 0x5d, 0xb4, 0x36, + 0xdb, 0x14, 0xfc, 0xcd, 0x91, 0x5c, 0x1d, 0xfd, 0xce, 0xd2, 0xc1, 0x7a, + 0x93, 0x4e, 0x7b, 0x17, 0x4b, 0x72, 0x8c, 0x7f, 0x31, 0xc9, 0xad, 0xad, + 0x35, 0xf8, 0xc5, 0x70, 0x54, 0x3d, 0x18, 0x12, 0x6a, 0x77, 0x5e, 0x45, + 0xb9, 0xc7, 0xde, 0xed, 0x5c, 0xa4, 0xaf, 0xb9, 0xcd, 0x6d, 0x4f, 0x63, + 0x9a, 0x7b, 0x91, 0xe2, 0x9d, 0x5a, 0x12, 0x2d, 0x06, 0x90, 0x11, 0x66, + 0x9b, 0x4c, 0x02, 0x8a, 0x00, 0x29, 0xb4, 0x80, 0x63, 0x52, 0x03, 0x54, + 0x04, 0x94, 0x52, 0x00, 0xa6, 0xd0, 0x02, 0x51, 0x48, 0x02, 0x96, 0xa8, + 0x05, 0xa2, 0xa5, 0x80, 0x94, 0xf5, 0xa0, 0x07, 0x53, 0xd2, 0x81, 0x12, + 0x51, 0x40, 0x05, 0x20, 0x6f, 0x9a, 0x98, 0x11, 0xce, 0x3e, 0x7a, 0x8a, + 0x81, 0x09, 0x40, 0xa4, 0x50, 0x53, 0x68, 0x10, 0x94, 0xa0, 0x50, 0x04, + 0x80, 0x53, 0xc0, 0xa0, 0x03, 0x14, 0x98, 0xa0, 0x02, 0x9b, 0x9a, 0x00, + 0x4c, 0xd2, 0x66, 0x80, 0x0a, 0x28, 0x18, 0x52, 0x66, 0x98, 0x83, 0x34, + 0x66, 0x90, 0x06, 0x69, 0x33, 0x40, 0x82, 0x8a, 0x06, 0x07, 0x9a, 0x74, + 0x5d, 0x68, 0x01, 0xa4, 0xf3, 0x49, 0x40, 0xc4, 0xa4, 0xa0, 0x02, 0x97, + 0x34, 0x00, 0xbb, 0xa9, 0x28, 0x00, 0xa2, 0x80, 0x16, 0x96, 0x80, 0x12, + 0x8a, 0x00, 0xf5, 0xe8, 0xa1, 0x69, 0xa7, 0x01, 0x72, 0xeb, 0xdf, 0x70, + 0xa9, 0x6e, 0xe7, 0x2a, 0xbe, 0x47, 0x96, 0x23, 0xcf, 0xf7, 0x2b, 0xd0, + 0x5d, 0xd1, 0xe7, 0xb2, 0x85, 0xd4, 0x90, 0xc7, 0x16, 0xc4, 0x67, 0x24, + 0xfa, 0xad, 0x51, 0xff, 0x00, 0x52, 0x85, 0xb7, 0xe2, 0x82, 0x8c, 0xc9, + 0xae, 0x36, 0x83, 0x21, 0x6c, 0x91, 0x54, 0xec, 0xa3, 0xf3, 0xe7, 0xde, + 0x7a, 0x2f, 0xaf, 0xd6, 0xa2, 0x6f, 0x42, 0xa2, 0x5b, 0x65, 0xde, 0xde, + 0xc2, 0x9a, 0xd2, 0x34, 0x7f, 0x76, 0x80, 0x29, 0xca, 0xcd, 0x2b, 0x7b, + 0xe2, 0xbb, 0xef, 0x09, 0xe9, 0x8b, 0x6d, 0x6b, 0xe7, 0x32, 0xfc, 0xed, + 0x91, 0xfa, 0xd7, 0x3d, 0x67, 0xd0, 0xe9, 0xa6, 0xb4, 0x3a, 0x1a, 0x2b, + 0x22, 0xc2, 0x8a, 0x00, 0x33, 0x45, 0x04, 0x44, 0x28, 0xa0, 0xb0, 0xa2, + 0x80, 0x0a, 0x3a, 0xd3, 0x89, 0x95, 0x43, 0x90, 0xf1, 0x9c, 0xfe, 0x40, + 0xc8, 0xea, 0x39, 0x1f, 0x95, 0x70, 0x6c, 0x4b, 0xc9, 0x93, 0xcd, 0x6d, + 0x5f, 0x64, 0x56, 0x18, 0x9a, 0x2a, 0xd2, 0xb3, 0xf9, 0x6b, 0xcf, 0x91, + 0xdc, 0x8c, 0xfd, 0x5e, 0xe3, 0xcc, 0x97, 0x06, 0xb2, 0x47, 0xde, 0xae, + 0xa5, 0xb1, 0xc8, 0xc7, 0x77, 0xa2, 0xa8, 0x42, 0xd2, 0x37, 0x4a, 0x90, + 0x22, 0xa6, 0xd3, 0x18, 0x51, 0x40, 0x0b, 0x4d, 0xa4, 0xc4, 0x34, 0xd3, + 0x68, 0x01, 0x69, 0x68, 0x18, 0x66, 0x92, 0x90, 0x05, 0x14, 0xc4, 0x14, + 0x50, 0x31, 0x69, 0x29, 0x00, 0x53, 0xd6, 0x98, 0x87, 0xd3, 0xd6, 0x80, + 0x24, 0xa2, 0x81, 0x08, 0xd5, 0x1e, 0x79, 0xa0, 0x68, 0x7c, 0xa3, 0x85, + 0xaa, 0xef, 0x40, 0x84, 0xcd, 0x25, 0x03, 0x16, 0x9a, 0x69, 0x00, 0x0a, + 0x78, 0xa6, 0x03, 0xa9, 0xe0, 0xd2, 0x01, 0x09, 0xa6, 0x96, 0xa0, 0x42, + 0x53, 0x73, 0x40, 0xc4, 0xcd, 0x26, 0x69, 0x80, 0x99, 0xa2, 0x90, 0x05, + 0x25, 0x00, 0x14, 0xb4, 0x00, 0x51, 0x4c, 0x02, 0x8a, 0x00, 0x5a, 0x50, + 0x71, 0x48, 0x04, 0xa4, 0xa1, 0x00, 0x94, 0x53, 0x01, 0x28, 0xa4, 0x31, + 0x71, 0x4b, 0x40, 0x84, 0xa2, 0x80, 0x16, 0x92, 0x81, 0x8b, 0x45, 0x00, + 0x7b, 0x21, 0x95, 0x6d, 0x6d, 0x4f, 0xef, 0xdb, 0x71, 0xfe, 0xe8, 0xcd, + 0x67, 0x89, 0x36, 0xee, 0x90, 0xa0, 0x63, 0xfe, 0xd0, 0xae, 0xd5, 0xb1, + 0xc2, 0xf7, 0x18, 0x21, 0xf3, 0xff, 0x00, 0x78, 0xff, 0x00, 0x28, 0xac, + 0xdd, 0x4a, 0x68, 0xc1, 0xf2, 0xd7, 0xa7, 0x7a, 0xd1, 0x77, 0x24, 0xe7, + 0xa6, 0x79, 0x2e, 0xa6, 0x58, 0xd4, 0x63, 0xb5, 0x6c, 0xac, 0x5e, 0x45, + 0xb8, 0x8d, 0x7f, 0x8b, 0x9a, 0xc1, 0xeb, 0x23, 0x7d, 0x90, 0xad, 0xf2, + 0xad, 0x51, 0x99, 0xb9, 0xab, 0xe8, 0x40, 0x96, 0x89, 0xe6, 0x5c, 0x2a, + 0xfa, 0xff, 0x00, 0x85, 0x7a, 0xa5, 0xa2, 0x85, 0xb6, 0x8f, 0x1f, 0xdd, + 0x15, 0xc5, 0x53, 0xe3, 0x3b, 0x23, 0xa4, 0x09, 0xa8, 0xa0, 0x02, 0x8a, + 0x68, 0x97, 0x23, 0x9f, 0xd5, 0x35, 0x19, 0x61, 0xb8, 0x3b, 0x1f, 0x8d, + 0xa2, 0xa1, 0xb7, 0xd7, 0xca, 0x47, 0xfb, 0xce, 0xbe, 0xb5, 0xa5, 0x58, + 0x76, 0x22, 0x9b, 0xb9, 0xb7, 0x65, 0x7c, 0x97, 0x5d, 0x2a, 0xdd, 0x63, + 0x12, 0xa6, 0xec, 0x14, 0x55, 0xd8, 0x8e, 0x70, 0xa8, 0xa6, 0x97, 0x65, + 0x52, 0x44, 0x5c, 0xe0, 0xfc, 0x65, 0x37, 0x9d, 0x8e, 0x7b, 0x7f, 0x4a, + 0xe5, 0x54, 0x73, 0x46, 0x21, 0x9d, 0x18, 0x75, 0xa1, 0x76, 0xde, 0x12, + 0x71, 0x5a, 0x1b, 0x76, 0x47, 0xbb, 0xd2, 0xb8, 0xba, 0x9d, 0x4f, 0x63, + 0x9c, 0xb9, 0x25, 0xe4, 0x63, 0xf8, 0x54, 0x41, 0x71, 0x5d, 0x27, 0x30, + 0xe3, 0x49, 0x8a, 0x60, 0x39, 0x54, 0x9a, 0x64, 0xa3, 0x14, 0x80, 0x84, + 0xd2, 0x50, 0x00, 0x45, 0x25, 0x30, 0x12, 0x92, 0x80, 0x0a, 0x6e, 0x28, + 0x01, 0x71, 0x4b, 0x49, 0x80, 0x94, 0x94, 0xc0, 0x4a, 0x28, 0x00, 0xa2, + 0x80, 0x16, 0x8a, 0x40, 0x25, 0x48, 0xb4, 0x00, 0xfa, 0x7a, 0xd0, 0x22, + 0x5e, 0xd4, 0x84, 0xd0, 0x22, 0x07, 0x7a, 0x8b, 0x75, 0x03, 0x24, 0x32, + 0x7c, 0xb5, 0x1e, 0x6a, 0x80, 0x28, 0xa4, 0x20, 0xa4, 0x34, 0x86, 0x28, + 0xa7, 0x50, 0x31, 0x73, 0x46, 0x4d, 0x02, 0x12, 0x93, 0x34, 0x0c, 0x6e, + 0xea, 0x4a, 0x04, 0x25, 0x2d, 0x00, 0x25, 0x2d, 0x00, 0x14, 0x50, 0x01, + 0x45, 0x03, 0x0a, 0x28, 0xb8, 0x82, 0x8a, 0x00, 0x28, 0xa0, 0x02, 0x8a, + 0x00, 0x31, 0x45, 0x03, 0x12, 0x8a, 0x40, 0x19, 0xa2, 0x98, 0x0b, 0x8a, + 0x28, 0x00, 0x34, 0xda, 0x40, 0x2d, 0x3a, 0x98, 0x1e, 0x96, 0x24, 0x59, + 0x64, 0xc8, 0x00, 0x53, 0xb2, 0xd7, 0x12, 0x88, 0xb2, 0xc5, 0x6b, 0xae, + 0xe7, 0x1d, 0x8b, 0xd7, 0xf2, 0xc1, 0x67, 0x60, 0x71, 0x0f, 0xcf, 0x8f, + 0xa7, 0xa5, 0x72, 0x3a, 0x8b, 0x95, 0x89, 0xd8, 0x9f, 0xbd, 0x9c, 0x7f, + 0x3a, 0xe9, 0xda, 0x3a, 0x99, 0xad, 0x58, 0xed, 0x12, 0xcf, 0x6e, 0x6e, + 0x25, 0xcf, 0xe3, 0xf5, 0xab, 0xf8, 0xdc, 0xfb, 0x9b, 0xb5, 0x72, 0x47, + 0xb9, 0xb4, 0xf7, 0xb1, 0x5e, 0x73, 0x54, 0x1f, 0xad, 0x6a, 0x4a, 0x35, + 0x34, 0x5d, 0x26, 0xe6, 0x6b, 0x85, 0x75, 0x4c, 0x00, 0x7e, 0x95, 0xe8, + 0x56, 0xea, 0xc9, 0x0a, 0x86, 0xeb, 0x8a, 0xe4, 0x94, 0x57, 0x35, 0xcd, + 0xa5, 0x2f, 0x76, 0xc4, 0xb4, 0x52, 0x64, 0xab, 0xb0, 0xa2, 0xae, 0x2e, + 0xc4, 0x33, 0x3a, 0x6d, 0x26, 0x39, 0x5f, 0x24, 0x0a, 0x60, 0xd1, 0x21, + 0xf4, 0x5a, 0xd9, 0xd4, 0x44, 0xab, 0x96, 0xed, 0x6c, 0xa3, 0xb6, 0xfb, + 0xa2, 0xac, 0xd7, 0x39, 0xa8, 0x51, 0x4a, 0xe0, 0xe2, 0x15, 0x95, 0xaf, + 0x5e, 0x0b, 0x5b, 0x5e, 0x3e, 0xf1, 0xcd, 0x6b, 0x4f, 0x52, 0x5a, 0x3c, + 0xff, 0x00, 0x58, 0x94, 0xcd, 0xd7, 0xde, 0xaa, 0xd9, 0xc1, 0xe6, 0x3d, + 0x72, 0xd7, 0x91, 0xdf, 0x41, 0x58, 0xd8, 0x8a, 0x0d, 0xa3, 0x1d, 0xaa, + 0x3d, 0x43, 0xf7, 0x76, 0x52, 0x63, 0xd2, 0xb1, 0x86, 0xe5, 0xcf, 0x63, + 0x98, 0xea, 0xc7, 0xeb, 0x46, 0x2b, 0xa4, 0xe7, 0x1d, 0xe5, 0x9a, 0xb1, + 0x1c, 0x23, 0x14, 0x00, 0x93, 0x62, 0x35, 0xcd, 0x67, 0x31, 0xdc, 0x68, + 0x10, 0xca, 0x28, 0x18, 0xec, 0x52, 0x53, 0x01, 0xb4, 0xde, 0xf4, 0x00, + 0xb4, 0x50, 0x02, 0x52, 0x66, 0x80, 0x12, 0x92, 0x90, 0x09, 0x45, 0x3b, + 0x00, 0xb4, 0x52, 0x00, 0xa5, 0xa0, 0x02, 0x9c, 0xb4, 0x00, 0xfa, 0x5d, + 0xf4, 0x08, 0x53, 0x25, 0x44, 0x58, 0xd0, 0x31, 0xa4, 0xd3, 0x68, 0x10, + 0xea, 0x28, 0x18, 0xb4, 0x50, 0x20, 0xa3, 0x19, 0xa0, 0x03, 0x14, 0xb4, + 0x0c, 0x28, 0xcd, 0x02, 0x1a, 0x4d, 0x36, 0x80, 0x0a, 0x5a, 0x00, 0x28, + 0xa0, 0x61, 0x45, 0x00, 0x2d, 0x25, 0x02, 0x0a, 0x28, 0x00, 0xa5, 0xa0, + 0x04, 0xa2, 0x80, 0x0a, 0x28, 0x18, 0x51, 0x40, 0x0b, 0x49, 0x40, 0x84, + 0xa3, 0x14, 0x0c, 0x5c, 0x52, 0xe2, 0x90, 0x0b, 0x4d, 0xcd, 0x00, 0x18, + 0xa5, 0xa6, 0x01, 0x4b, 0x48, 0x0f, 0x44, 0xf2, 0x64, 0xd9, 0xc7, 0x5a, + 0xe9, 0x34, 0x5b, 0x3f, 0xb3, 0x43, 0xbc, 0xc4, 0xa1, 0xbd, 0x6b, 0xb3, + 0x94, 0xe3, 0x7b, 0x18, 0x3a, 0xf5, 0xf1, 0xba, 0xbf, 0x11, 0x3b, 0x7c, + 0x91, 0xe0, 0xe3, 0x3c, 0x77, 0x15, 0xce, 0xed, 0x3a, 0xa6, 0xa4, 0xb1, + 0xff, 0x00, 0xcb, 0x35, 0xc6, 0x7f, 0x51, 0x5b, 0xd5, 0x76, 0x22, 0x8a, + 0x37, 0x24, 0x5d, 0x91, 0xac, 0x2b, 0xe9, 0xcf, 0xe5, 0x50, 0xc9, 0xf2, + 0x8c, 0x56, 0x51, 0x2a, 0xe5, 0x19, 0x89, 0x26, 0xb4, 0xb4, 0x2d, 0x14, + 0xdf, 0x4f, 0x97, 0xfb, 0x83, 0xad, 0x4d, 0x49, 0x58, 0xb8, 0x23, 0xb9, + 0xb6, 0xb6, 0x8e, 0xda, 0x30, 0xb1, 0x8c, 0x54, 0xd5, 0xcb, 0x73, 0x5b, + 0x20, 0xa2, 0x91, 0xa8, 0x51, 0x4c, 0xc6, 0xde, 0xf0, 0x51, 0x48, 0xa6, + 0x14, 0x50, 0x48, 0x51, 0x4d, 0x0a, 0x4c, 0x09, 0xc7, 0x5a, 0xe1, 0x7c, + 0x47, 0x7e, 0x25, 0xb8, 0x66, 0x63, 0xf2, 0xa5, 0x6d, 0x0d, 0x9b, 0x17, + 0xda, 0x39, 0x67, 0x90, 0xca, 0xd9, 0x35, 0xa3, 0xa6, 0xc7, 0x83, 0x93, + 0xd6, 0xbc, 0xfa, 0x8e, 0xe7, 0xa3, 0x4c, 0xd2, 0xaa, 0x9a, 0xaf, 0xfc, + 0x78, 0xc9, 0xfe, 0xed, 0x10, 0xdc, 0x55, 0x36, 0x30, 0x12, 0x1c, 0xf5, + 0xf5, 0xa9, 0x44, 0x38, 0xed, 0x5d, 0x27, 0x28, 0xae, 0x94, 0xcd, 0xdb, + 0x68, 0x02, 0x9d, 0xc4, 0x9b, 0xb8, 0xaa, 0xf5, 0x43, 0x10, 0xd1, 0x48, + 0x63, 0xa9, 0x28, 0x10, 0xda, 0x4a, 0x06, 0x25, 0x36, 0x81, 0x09, 0x49, + 0x40, 0x09, 0x45, 0x03, 0x0a, 0x28, 0x00, 0xa2, 0x80, 0x16, 0x8a, 0x00, + 0x29, 0x73, 0x40, 0x06, 0x68, 0xcd, 0x00, 0x19, 0xa4, 0xcd, 0x20, 0x1b, + 0x45, 0x00, 0x3a, 0x96, 0x98, 0x05, 0x14, 0x84, 0x2d, 0x14, 0xc0, 0x5a, + 0x4a, 0x40, 0x14, 0x94, 0x00, 0x94, 0x50, 0xc0, 0x28, 0xa0, 0x05, 0xa2, + 0x85, 0xa0, 0x09, 0x45, 0x31, 0x85, 0x14, 0x84, 0x2d, 0x25, 0x03, 0x16, + 0x92, 0x81, 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x0c, 0x28, 0xa0, + 0x42, 0xe2, 0x97, 0x14, 0x00, 0x62, 0x8a, 0x06, 0x25, 0x18, 0xa4, 0x01, + 0x4b, 0x40, 0x09, 0x49, 0x4c, 0x0f, 0x5d, 0xd3, 0x20, 0xdf, 0x74, 0x1b, + 0x83, 0x8a, 0xb7, 0xe2, 0x09, 0xe7, 0x8a, 0xcc, 0xc7, 0x13, 0xfc, 0xe4, + 0x11, 0x5e, 0x85, 0x1b, 0x4e, 0x57, 0x3c, 0xf9, 0xbb, 0x1c, 0x66, 0xa9, + 0x17, 0xd9, 0xed, 0x0a, 0xc4, 0x4e, 0xe9, 0x37, 0x67, 0xb7, 0xbd, 0x5c, + 0xd1, 0xad, 0x92, 0xda, 0xd8, 0xc9, 0x8d, 0xce, 0x7f, 0xc6, 0xa6, 0xa6, + 0xeb, 0xcc, 0xda, 0x1b, 0x32, 0xc6, 0x3b, 0xd5, 0x59, 0xcd, 0x04, 0x0d, + 0xb3, 0xb4, 0xfb, 0x5c, 0xe1, 0x7b, 0x1a, 0xef, 0xac, 0xad, 0x92, 0xd6, + 0x00, 0x88, 0x31, 0x5c, 0x95, 0x25, 0x79, 0x58, 0xe9, 0x8a, 0xb4, 0x6e, + 0x58, 0xa2, 0x95, 0x8c, 0x79, 0xb5, 0x0a, 0x46, 0x6d, 0xbd, 0x68, 0x51, + 0xb9, 0xb3, 0x95, 0x88, 0xd6, 0x75, 0x67, 0xda, 0x2a, 0x5a, 0x97, 0xd8, + 0x22, 0x14, 0x50, 0x50, 0x51, 0x54, 0x61, 0xd4, 0x28, 0xa6, 0xc4, 0x51, + 0xd5, 0xe7, 0x30, 0xd9, 0x3e, 0xdf, 0xbc, 0x47, 0x15, 0xe6, 0x9a, 0xbc, + 0xcc, 0xf2, 0xb0, 0xec, 0x4f, 0xf3, 0xad, 0x5c, 0x5a, 0xa6, 0x55, 0x2d, + 0x66, 0x56, 0xb6, 0x8f, 0x27, 0x15, 0xbb, 0x6d, 0x1e, 0xd5, 0xaf, 0x36, + 0x47, 0xa6, 0x4f, 0x55, 0xaf, 0xd3, 0x7d, 0xbb, 0x0f, 0x6a, 0xa8, 0x6e, + 0x44, 0xf6, 0x32, 0x02, 0xe3, 0x8a, 0x5c, 0x56, 0xec, 0xe6, 0x17, 0x65, + 0x50, 0xba, 0x3c, 0xd5, 0x22, 0x4a, 0x4f, 0x4d, 0xa1, 0x94, 0x21, 0xa0, + 0x52, 0x63, 0x1d, 0x4d, 0x34, 0xc4, 0x30, 0x9a, 0x6d, 0x03, 0x12, 0x9b, + 0x4c, 0x02, 0x8a, 0x40, 0x14, 0x50, 0x02, 0x51, 0x4c, 0x02, 0x8a, 0x40, + 0x2d, 0x14, 0x80, 0x28, 0xa0, 0x41, 0x49, 0x4c, 0x61, 0x49, 0x48, 0x02, + 0x8a, 0x60, 0x2d, 0x3a, 0x80, 0x0a, 0x54, 0xeb, 0x43, 0x10, 0xa6, 0x92, + 0x90, 0x0b, 0x45, 0x17, 0x18, 0xda, 0x4a, 0x04, 0x28, 0xe6, 0x96, 0x9b, + 0x01, 0x08, 0xa2, 0x90, 0x05, 0x14, 0x00, 0x51, 0x40, 0x05, 0x14, 0x00, + 0x52, 0x50, 0x02, 0xd2, 0x50, 0x01, 0x4b, 0x40, 0x05, 0x25, 0x00, 0x14, + 0x50, 0x01, 0x4b, 0x40, 0xc5, 0x14, 0xa6, 0x90, 0x09, 0x45, 0x0c, 0x04, + 0xcd, 0x2d, 0x00, 0x25, 0x26, 0x69, 0x80, 0x94, 0x50, 0x07, 0xff, 0xd9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xca, 0x0c, 0x57, 0x6d, 0x24, 0x63, 0x36, 0x61, 0x5f, 0x2f, 0x06, 0x9f, + 0xa4, 0x9d, 0xac, 0x3e, 0xb5, 0x85, 0x72, 0xe0, 0x6e, 0xff, 0x00, 0x0d, + 0x53, 0xb9, 0xe9, 0x5a, 0x47, 0x63, 0x03, 0x9a, 0xd5, 0x97, 0xe5, 0x35, + 0x92, 0x05, 0x61, 0x58, 0xea, 0xa4, 0x4a, 0x07, 0x14, 0x6d, 0xac, 0x6e, + 0x6c, 0x58, 0x89, 0x2b, 0x42, 0xc9, 0x8c, 0x2c, 0x0d, 0x48, 0x8e, 0x8a, + 0xd6, 0xf5, 0xd8, 0x63, 0x15, 0x6a, 0x49, 0x5f, 0x67, 0x35, 0xd7, 0x44, + 0xe4, 0xa8, 0x88, 0xa3, 0xe7, 0x9a, 0x94, 0xa1, 0x61, 0x5a, 0x90, 0x2a, + 0xc7, 0x4b, 0xe5, 0x1a, 0x00, 0xb1, 0x18, 0xe2, 0xab, 0x5e, 0x48, 0x10, + 0xf5, 0xa9, 0xe8, 0x3e, 0xa4, 0xe6, 0x40, 0x91, 0x02, 0x6a, 0x8c, 0xb3, + 0xb3, 0xf0, 0x2a, 0x53, 0xd0, 0x2d, 0xa8, 0xc4, 0x88, 0x9a, 0x71, 0x01, + 0x28, 0x28, 0xad, 0x71, 0x20, 0x11, 0x92, 0x4f, 0x15, 0xce, 0x5d, 0xeb, + 0x1b, 0x64, 0x29, 0x6e, 0xb9, 0x6f, 0x5e, 0x69, 0xda, 0xe8, 0x16, 0xe4, + 0x3e, 0x75, 0xd4, 0xa3, 0xe6, 0x7d, 0xbf, 0x4a, 0xcf, 0x9a, 0x36, 0x2f, + 0x86, 0xf9, 0xab, 0x16, 0xf4, 0x3a, 0x61, 0xb8, 0xe8, 0xe0, 0xa7, 0xb5, + 0xaa, 0x3f, 0x51, 0x5c, 0xfc, 0xc7, 0x43, 0x44, 0x2f, 0x60, 0x3f, 0x87, + 0x8a, 0xaa, 0xd0, 0xcb, 0x09, 0xc8, 0xab, 0xbd, 0xcc, 0xb6, 0x2c, 0x45, + 0xad, 0xcd, 0x0a, 0xe3, 0x15, 0x32, 0xea, 0x9e, 0x67, 0x2f, 0xf3, 0x7e, + 0x15, 0xbe, 0x1f, 0xdd, 0x67, 0x3e, 0x23, 0xde, 0x1e, 0x2f, 0x15, 0xbb, + 0x55, 0x1b, 0xac, 0xc9, 0x27, 0x02, 0xbd, 0x27, 0x56, 0xd1, 0x39, 0x29, + 0xd1, 0x7c, 0xe4, 0xb6, 0xf1, 0x95, 0x15, 0xa1, 0x08, 0xe2, 0xbc, 0x26, + 0xee, 0xcf, 0x63, 0xa1, 0x3e, 0xda, 0x6e, 0x70, 0x6a, 0xcc, 0xc8, 0x9d, + 0xe9, 0x9b, 0x8d, 0x4b, 0x65, 0x20, 0xce, 0x7a, 0xd2, 0x56, 0x77, 0x2a, + 0xc4, 0x52, 0x4c, 0xa9, 0x54, 0x9e, 0xf7, 0xde, 0xa9, 0x08, 0xa9, 0x2d, + 0xd7, 0xbd, 0x55, 0x92, 0xe8, 0x76, 0x35, 0xa2, 0x44, 0x39, 0x95, 0xda, + 0xe0, 0xd4, 0x65, 0x8d, 0x6c, 0x62, 0xdd, 0xc6, 0xd2, 0x53, 0xd8, 0x44, + 0xb1, 0x1c, 0x35, 0x5b, 0xed, 0x48, 0x06, 0x1a, 0x61, 0xa0, 0x06, 0xd1, + 0x40, 0x05, 0x34, 0x8c, 0xd0, 0x98, 0x06, 0xce, 0x2a, 0x13, 0x4c, 0x42, + 0x53, 0xc5, 0x21, 0x85, 0x34, 0xd0, 0x03, 0x69, 0x76, 0xd3, 0x01, 0xd8, + 0xa5, 0xc5, 0x4d, 0xc0, 0x5a, 0x4a, 0x2e, 0x01, 0x51, 0x9a, 0x60, 0x14, + 0xe1, 0x40, 0x0b, 0x49, 0x40, 0x21, 0x45, 0x5a, 0x4f, 0xbb, 0x43, 0x01, + 0xc6, 0xa6, 0x5a, 0x46, 0x42, 0x5c, 0x7d, 0xca, 0xcb, 0x3d, 0x69, 0x95, + 0x11, 0xc9, 0x4b, 0x41, 0x63, 0xe9, 0xc2, 0x90, 0x08, 0xd4, 0xca, 0x60, + 0x14, 0xea, 0x40, 0x44, 0xdd, 0x69, 0x29, 0x88, 0x5a, 0x5a, 0x00, 0x43, + 0x4d, 0xa0, 0x07, 0xad, 0x4b, 0x48, 0x67, 0xb7, 0x5a, 0xbe, 0x56, 0xa6, + 0x95, 0x32, 0xb5, 0xdf, 0x48, 0xe5, 0x9e, 0xe6, 0x05, 0xf2, 0xf5, 0xa8, + 0x6c, 0xfe, 0x59, 0x45, 0x73, 0xe2, 0x0d, 0xe0, 0x6f, 0xaf, 0x31, 0xd5, + 0x4b, 0xa2, 0x00, 0xeb, 0x4e, 0x1b, 0x18, 0xbd, 0xce, 0x57, 0x55, 0x9f, + 0xcc, 0x7d, 0x8b, 0x8a, 0xa8, 0x13, 0x8a, 0xe7, 0xab, 0xbd, 0x8e, 0xba, + 0x6b, 0x41, 0xe1, 0x69, 0xe1, 0x6b, 0x13, 0x42, 0x78, 0xd6, 0xb4, 0x21, + 0xd9, 0x8c, 0x1a, 0x48, 0x4c, 0xe8, 0x34, 0xf1, 0x0e, 0x06, 0xdc, 0x66, + 0xa5, 0xd4, 0x1f, 0x11, 0x7e, 0x75, 0xdb, 0x40, 0xe2, 0xaa, 0x25, 0x9a, + 0xe6, 0x3e, 0x7a, 0xf5, 0xa7, 0xca, 0xf8, 0x38, 0x15, 0x51, 0xd8, 0x19, + 0x24, 0x3e, 0xf5, 0x2e, 0xe1, 0x4e, 0x22, 0x64, 0x12, 0x5d, 0xaa, 0x1e, + 0x39, 0xac, 0x6b, 0xb8, 0xe6, 0x9e, 0xe0, 0x49, 0x9f, 0x97, 0xd2, 0xa8, + 0x16, 0xe5, 0xed, 0xcc, 0xca, 0x01, 0xa9, 0x62, 0x41, 0x58, 0x24, 0x5b, + 0x1f, 0x2b, 0x88, 0xd6, 0xb2, 0xef, 0x6e, 0xf0, 0x33, 0x9e, 0x2b, 0x5b, + 0x12, 0x61, 0xde, 0xde, 0x3d, 0xc2, 0xec, 0x07, 0x09, 0x54, 0xbe, 0x44, + 0xe8, 0x2b, 0x29, 0xcb, 0x4b, 0x1b, 0xc2, 0x02, 0xf9, 0x84, 0xd2, 0x6c, + 0xe7, 0x26, 0xb9, 0x9b, 0x3b, 0x23, 0x0b, 0x12, 0x62, 0x93, 0x15, 0x98, + 0x0e, 0x02, 0x92, 0x48, 0xb3, 0x40, 0x14, 0xe5, 0xb2, 0x57, 0xed, 0x51, + 0xa6, 0x9f, 0xb5, 0x86, 0x0d, 0x5a, 0x9d, 0x8c, 0xdc, 0x0b, 0x69, 0x66, + 0x3a, 0x9a, 0x77, 0xd9, 0xd5, 0x7a, 0x01, 0x57, 0xcf, 0x70, 0xb5, 0x88, + 0x98, 0x73, 0x52, 0xc6, 0xd8, 0xac, 0xca, 0x25, 0x2f, 0xc5, 0x46, 0x69, + 0x89, 0x22, 0x36, 0x34, 0xcd, 0xe2, 0xb2, 0x65, 0x91, 0xbc, 0xc0, 0x55, + 0x29, 0x2f, 0x87, 0xaf, 0xeb, 0x4e, 0x31, 0x0b, 0xd8, 0xcd, 0x9a, 0xfb, + 0x7d, 0x55, 0x7b, 0x86, 0x35, 0xd1, 0x18, 0x9c, 0xf2, 0x99, 0x11, 0x62, + 0x69, 0xb5, 0x64, 0x06, 0x29, 0x69, 0xd8, 0x04, 0xa5, 0xa0, 0x05, 0x1d, + 0x6a, 0xe2, 0x1c, 0xad, 0x20, 0x03, 0x4d, 0x34, 0x00, 0xca, 0x4a, 0x00, + 0x4a, 0x5a, 0x40, 0x3a, 0xaa, 0xbf, 0xde, 0xa6, 0x21, 0x2a, 0x41, 0x40, + 0xc7, 0x53, 0x48, 0xa0, 0x04, 0xdb, 0x4b, 0x48, 0x05, 0xa4, 0xa0, 0x02, + 0x8a, 0x00, 0x6d, 0x30, 0xd3, 0x00, 0xa7, 0x2d, 0x00, 0x3f, 0x14, 0xca, + 0x00, 0x72, 0x75, 0xab, 0x29, 0x40, 0x31, 0x5a, 0xa7, 0x4a, 0x46, 0x63, + 0x2e, 0x7e, 0xe5, 0x66, 0x9a, 0x63, 0x88, 0xe5, 0xa5, 0xa0, 0xb1, 0x69, + 0x73, 0x45, 0x80, 0x09, 0xa6, 0xd2, 0x01, 0x69, 0xd4, 0x01, 0x13, 0x75, + 0xa2, 0x98, 0x83, 0x14, 0x0a, 0x40, 0x3a, 0x9a, 0x45, 0x30, 0x05, 0xeb, + 0x52, 0xd2, 0xea, 0x33, 0xdb, 0x2c, 0x4f, 0xc9, 0x56, 0xa4, 0x6f, 0x96, + 0xbb, 0x68, 0xec, 0x73, 0x54, 0x31, 0x75, 0x05 +}; +unsigned int capture_jpg_len = 24800; + + +unsigned const char octo_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x01, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, + 0x00, 0x11, 0x0b, 0x0c, 0x0f, 0x0c, 0x0a, 0x11, 0x0f, 0x0e, 0x0f, 0x13, + 0x12, 0x11, 0x14, 0x19, 0x2a, 0x1b, 0x19, 0x17, 0x17, 0x19, 0x33, 0x24, + 0x26, 0x1e, 0x2a, 0x3c, 0x35, 0x3f, 0x3e, 0x3b, 0x35, 0x3a, 0x39, 0x43, + 0x4b, 0x60, 0x51, 0x43, 0x47, 0x5a, 0x48, 0x39, 0x3a, 0x53, 0x71, 0x54, + 0x5a, 0x63, 0x66, 0x6b, 0x6c, 0x6b, 0x40, 0x50, 0x76, 0x7e, 0x74, 0x68, + 0x7d, 0x60, 0x69, 0x6b, 0x67, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x12, 0x13, + 0x13, 0x19, 0x16, 0x19, 0x31, 0x1b, 0x1b, 0x31, 0x67, 0x45, 0x3a, 0x45, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x67, 0xff, 0xc0, 0x00, 0x11, 0x08, 0x01, 0xe0, 0x02, 0x80, 0x03, + 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, + 0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00, + 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, + 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, + 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, + 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, + 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, + 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, + 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, + 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, + 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, + 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, + 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00, + 0x1f, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x11, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, + 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, + 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, + 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, + 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, + 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, + 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, + 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, + 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, + 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, + 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00, + 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xef, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa4, 0xa5, 0xa0, + 0x02, 0x8a, 0x4a, 0x5a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa4, 0xa5, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x92, 0x96, + 0xab, 0xdd, 0x4e, 0x96, 0xb6, 0xd2, 0xcc, 0xe7, 0x09, 0x1a, 0x96, 0x3f, + 0x80, 0xa0, 0x09, 0x8b, 0x28, 0xea, 0xc0, 0x7e, 0x34, 0x07, 0x53, 0xd1, + 0x81, 0xfc, 0x6b, 0xc8, 0xaf, 0x6f, 0xe7, 0xbd, 0xbb, 0x96, 0x69, 0x25, + 0x7c, 0xbb, 0x13, 0x80, 0xc7, 0x00, 0x54, 0x71, 0xdd, 0x4f, 0x19, 0xf9, + 0x27, 0x95, 0x48, 0xfe, 0xeb, 0x1a, 0x00, 0xf6, 0x2a, 0x2b, 0xcb, 0x6d, + 0x7c, 0x4b, 0xaa, 0xda, 0x91, 0xb2, 0xed, 0xdd, 0x47, 0xf0, 0xc9, 0xf3, + 0x56, 0xdd, 0x87, 0x8f, 0x5c, 0x61, 0x6f, 0xad, 0x81, 0x1f, 0xdf, 0x88, + 0xff, 0x00, 0x43, 0x40, 0x1d, 0xbd, 0x15, 0x99, 0xa7, 0xeb, 0xda, 0x7e, + 0xa1, 0x81, 0x05, 0xc2, 0xee, 0x3f, 0xc0, 0xdc, 0x1a, 0xd3, 0x1d, 0x28, + 0x01, 0x68, 0xa4, 0xa2, 0x80, 0x16, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x29, 0x28, 0x01, 0x69, 0x28, 0xcd, 0x21, 0x3c, 0xf3, + 0xd2, 0x80, 0x16, 0x8a, 0xca, 0xd4, 0x7c, 0x45, 0xa7, 0x69, 0xc0, 0xf9, + 0xd3, 0x86, 0x71, 0xfc, 0x09, 0xc9, 0xae, 0x6e, 0xfb, 0xc7, 0x93, 0x3e, + 0x56, 0xca, 0xdd, 0x50, 0x76, 0x79, 0x39, 0xfd, 0x28, 0x03, 0xb9, 0xa4, + 0x2e, 0xa3, 0xab, 0x01, 0xf8, 0xd7, 0x96, 0x5d, 0x78, 0x8b, 0x55, 0xba, + 0x24, 0xbd, 0xe4, 0x8b, 0xec, 0x9f, 0x28, 0xfd, 0x2a, 0x8b, 0xdc, 0xcf, + 0x26, 0x4b, 0xcf, 0x23, 0x7d, 0x5c, 0xd0, 0x07, 0xb0, 0x87, 0x53, 0xd1, + 0x81, 0xfc, 0x69, 0x6b, 0xc9, 0xb4, 0x9d, 0x46, 0x5b, 0x1d, 0x42, 0x19, + 0xbc, 0xd6, 0xda, 0x8c, 0x0b, 0x02, 0xc7, 0x91, 0xde, 0xbd, 0x5a, 0x36, + 0x57, 0x45, 0x74, 0x39, 0x56, 0x00, 0x83, 0xed, 0x40, 0x12, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x57, 0x3b, 0xe3, 0x8b, 0xcf, 0xb3, 0x68, 0x4d, 0x18, 0x3f, + 0x34, 0xec, 0x13, 0xf0, 0xea, 0x7f, 0x95, 0x74, 0x55, 0xc2, 0x7c, 0x44, + 0xb8, 0xdf, 0x77, 0x6d, 0x00, 0x3c, 0x22, 0x17, 0x23, 0xdc, 0x9c, 0x7f, + 0x4a, 0x00, 0xe4, 0xa8, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x5c, + 0xed, 0x3b, 0x81, 0x23, 0xdc, 0x75, 0xfc, 0xeb, 0x6f, 0x4a, 0xf1, 0x5e, + 0xa1, 0xa7, 0xe1, 0x1d, 0xfe, 0xd1, 0x10, 0xe8, 0x92, 0x76, 0xfa, 0x1e, + 0xb5, 0x86, 0x28, 0xa0, 0x0f, 0x4d, 0xd2, 0x7c, 0x4f, 0x61, 0xa9, 0xe1, + 0x44, 0x9e, 0x4c, 0xa7, 0xfe, 0x59, 0xc8, 0x70, 0x7f, 0x0f, 0x5a, 0xda, + 0x06, 0xbc, 0x64, 0x70, 0x72, 0x38, 0x3e, 0xbf, 0xfd, 0x7f, 0x5a, 0xde, + 0xd1, 0xfc, 0x5b, 0x79, 0x60, 0x56, 0x2b, 0x82, 0x6e, 0x60, 0xe9, 0x86, + 0x3f, 0x3a, 0x8f, 0x63, 0xfe, 0x7f, 0x0a, 0x00, 0xf4, 0x8a, 0x2a, 0x86, + 0x99, 0xaa, 0xda, 0x6a, 0x91, 0x6f, 0xb6, 0x94, 0x37, 0x19, 0x28, 0x78, + 0x65, 0x3f, 0x4a, 0xba, 0x58, 0x28, 0xe4, 0x81, 0xf5, 0xa0, 0x07, 0x51, + 0x54, 0x6e, 0x75, 0x8d, 0x3e, 0xd7, 0x26, 0x6b, 0xb8, 0x57, 0x1d, 0xb7, + 0x64, 0xd6, 0x65, 0xc7, 0x8c, 0xf4, 0xa8, 0x41, 0xd9, 0x24, 0x92, 0x9f, + 0xf6, 0x13, 0xaf, 0xe7, 0x40, 0x1d, 0x0d, 0x15, 0xc6, 0xcb, 0xe3, 0xd8, + 0x97, 0x88, 0x6c, 0x9d, 0x87, 0x6d, 0xee, 0x07, 0xe8, 0x05, 0x53, 0x93, + 0xc7, 0x97, 0xcd, 0xfe, 0xae, 0xda, 0x05, 0xfa, 0x92, 0x4f, 0xf3, 0xa0, + 0x0e, 0xfa, 0x8a, 0xf3, 0x87, 0xf1, 0xae, 0xaa, 0xd9, 0xc3, 0x44, 0xa3, + 0xd0, 0x20, 0xa8, 0xdb, 0xc5, 0xfa, 0xc3, 0x1f, 0xf8, 0xf9, 0x51, 0xf4, + 0x45, 0xa0, 0x0f, 0x4b, 0xa2, 0xbc, 0xc4, 0xf8, 0xb3, 0x58, 0x3f, 0xf2, + 0xf6, 0x7f, 0xef, 0x81, 0xfe, 0x14, 0x0f, 0x16, 0x6b, 0x03, 0xfe, 0x5e, + 0xcf, 0xfd, 0xf0, 0x3f, 0xc2, 0x80, 0x3d, 0x3a, 0x8a, 0xf3, 0x35, 0xf1, + 0x7e, 0xb0, 0xbf, 0xf2, 0xf2, 0x0f, 0xd5, 0x07, 0xf8, 0x54, 0xe9, 0xe3, + 0x6d, 0x55, 0x7e, 0xf3, 0x42, 0xff, 0x00, 0xef, 0x27, 0xf8, 0x50, 0x07, + 0xa2, 0xd1, 0x5c, 0x14, 0x7e, 0x3d, 0xbc, 0x18, 0xf3, 0x2d, 0xa1, 0x71, + 0xdf, 0x04, 0x83, 0x56, 0xed, 0xfc, 0x7f, 0x0f, 0xfc, 0xb6, 0xb3, 0x95, + 0x7d, 0xd1, 0xf7, 0x7f, 0x3a, 0x00, 0xec, 0xa8, 0xac, 0x0b, 0x7f, 0x18, + 0xe9, 0x32, 0xe0, 0x34, 0xaf, 0x11, 0x3d, 0x9d, 0x3f, 0xc2, 0xb4, 0xed, + 0xb5, 0x6b, 0x1b, 0xac, 0x79, 0x37, 0x51, 0x39, 0x3d, 0x83, 0x50, 0x05, + 0xcc, 0xd2, 0x1a, 0xce, 0xd5, 0x75, 0xab, 0x3d, 0x2a, 0x1d, 0xd7, 0x12, + 0xfc, 0xc7, 0xa2, 0x29, 0xcb, 0x1a, 0xe1, 0xb5, 0x8f, 0x15, 0x5e, 0xea, + 0x5b, 0xa3, 0x8d, 0x8c, 0x10, 0x1c, 0xfc, 0x88, 0x70, 0x4f, 0xd4, 0xd0, + 0x07, 0x5b, 0xab, 0xf8, 0xae, 0xc3, 0x4d, 0xdc, 0x88, 0xc6, 0xe2, 0x61, + 0xd5, 0x23, 0x39, 0x03, 0xea, 0x6b, 0x8e, 0xd5, 0x7c, 0x4f, 0xa8, 0x6a, + 0x7f, 0x29, 0x94, 0xc1, 0x11, 0xfe, 0x08, 0xce, 0x3f, 0x33, 0x59, 0x1f, + 0xe7, 0xfc, 0xfa, 0xd2, 0x50, 0x02, 0x9e, 0xb9, 0xff, 0x00, 0xeb, 0xd2, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x1d, 0x47, 0xad, 0x7a, 0x67, + 0x84, 0x2f, 0x0d, 0xde, 0x83, 0x0e, 0xe3, 0x96, 0x8b, 0x28, 0xdf, 0x87, + 0x4a, 0xf3, 0x3a, 0xed, 0x7e, 0x1d, 0xdc, 0x66, 0x3b, 0xb8, 0x33, 0xc0, + 0x21, 0xc5, 0x00, 0x76, 0x74, 0x52, 0x52, 0xd0, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x5e, 0x6d, 0xe3, + 0x89, 0x3c, 0xcf, 0x11, 0xc8, 0xbf, 0xdc, 0x45, 0x5f, 0xd3, 0x3f, 0xd6, + 0xbd, 0x26, 0xbc, 0xbf, 0xc5, 0xc7, 0x3e, 0x26, 0xbc, 0xf6, 0x2b, 0xff, + 0x00, 0xa0, 0x8a, 0x00, 0xc7, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa3, 0xfa, 0xf5, 0xa2, 0x8a, 0x00, 0x96, + 0xde, 0xe6, 0x6b, 0x59, 0x44, 0xb0, 0x48, 0xd1, 0xc8, 0x3b, 0xa9, 0xc5, + 0x4b, 0x75, 0xaa, 0x5e, 0xdd, 0x93, 0xe7, 0x5c, 0xca, 0xd9, 0xed, 0xbb, + 0x15, 0x56, 0x8a, 0x00, 0x3b, 0xe7, 0xbf, 0xbd, 0x2d, 0x25, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0xb4, 0x98, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x0b, 0x42, 0xf0, + 0x72, 0x32, 0x3b, 0xe4, 0x1c, 0x52, 0x51, 0x40, 0x0e, 0x67, 0x77, 0x39, + 0x76, 0x66, 0x61, 0xc0, 0x24, 0xe7, 0x02, 0x92, 0x92, 0x8a, 0x00, 0x28, + 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x2b, + 0xa5, 0xf0, 0x0c, 0xa5, 0x35, 0xd9, 0x23, 0xec, 0xf0, 0x91, 0xf9, 0x11, + 0xfe, 0x15, 0xcd, 0x56, 0xf7, 0x81, 0xff, 0x00, 0xe4, 0x64, 0x88, 0x7f, + 0xb0, 0xdf, 0xca, 0x80, 0x3d, 0x24, 0x7a, 0xd2, 0xd2, 0x0a, 0x5a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x2b, 0xcc, 0xbc, 0x67, 0x1e, 0xcf, 0x12, 0xdc, 0x13, 0xfc, 0x61, 0x48, + 0xff, 0x00, 0xbe, 0x45, 0x7a, 0x6d, 0x79, 0xf7, 0xc4, 0x08, 0x3c, 0xbd, + 0x5e, 0x19, 0x40, 0xe2, 0x58, 0x87, 0x3e, 0xe3, 0x20, 0xfe, 0x98, 0xa0, + 0x0e, 0x62, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xba, 0x1f, 0x02, 0xa6, 0xef, 0x10, + 0x06, 0xfe, 0xe4, 0x4c, 0xc7, 0xf9, 0x7f, 0x5a, 0xe7, 0xba, 0x57, 0x5d, + 0xf0, 0xf2, 0xdf, 0x75, 0xd5, 0xd4, 0xe4, 0x70, 0xa8, 0x10, 0x1f, 0xaf, + 0xff, 0x00, 0xaa, 0x80, 0x3b, 0x91, 0x4b, 0x49, 0x4b, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x72, + 0xfe, 0x3d, 0xb3, 0xf3, 0xf4, 0xa4, 0xb8, 0x51, 0xf3, 0x40, 0xfc, 0xfd, + 0x0f, 0x1f, 0xcf, 0x15, 0xd3, 0xd7, 0x17, 0xe3, 0x2f, 0x10, 0x8d, 0xaf, + 0xa6, 0xdb, 0x61, 0x89, 0xe2, 0x67, 0xea, 0x07, 0xb0, 0xa0, 0x0e, 0x32, + 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, + 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, + 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, + 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, + 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, + 0x8a, 0x28, 0xa0, 0x03, 0xb5, 0x77, 0x7e, 0x01, 0x9a, 0xd8, 0x69, 0xf2, + 0xc4, 0x8f, 0xfe, 0x90, 0x5c, 0xb3, 0xa9, 0xf4, 0xed, 0x8a, 0xe1, 0x2a, + 0x6b, 0x4b, 0xb9, 0x6c, 0x6e, 0x12, 0x78, 0x1c, 0xa3, 0xa1, 0xc8, 0x23, + 0xf9, 0x50, 0x07, 0xb0, 0xd2, 0xd6, 0x56, 0x83, 0xac, 0xc7, 0xac, 0x59, + 0x09, 0x57, 0x0b, 0x2a, 0xf1, 0x22, 0x67, 0xa1, 0xff, 0x00, 0x0a, 0xd4, + 0xa0, 0x05, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa4, 0xa5, + 0xaa, 0xf7, 0x57, 0x31, 0xda, 0xdb, 0x49, 0x3c, 0x87, 0x09, 0x1a, 0x96, + 0x26, 0x80, 0x31, 0xbc, 0x5b, 0xae, 0x8d, 0x2a, 0xcf, 0xc9, 0x85, 0x87, + 0xda, 0x66, 0x18, 0x51, 0x9f, 0xba, 0x3d, 0x6b, 0xce, 0x8e, 0x59, 0x8b, + 0x12, 0x49, 0x27, 0x39, 0x35, 0x67, 0x55, 0xbf, 0x93, 0x53, 0xd4, 0x65, + 0xb9, 0x94, 0x93, 0xb8, 0x9d, 0xa3, 0xfb, 0xa3, 0xb0, 0xaa, 0xb4, 0x00, + 0x94, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x5f, 0xd1, 0x75, 0x49, + 0x74, 0x9b, 0xf4, 0xb8, 0x8f, 0x25, 0x73, 0x89, 0x13, 0x3f, 0x79, 0x6b, + 0xd4, 0xad, 0x2e, 0x62, 0xbb, 0xb7, 0x8e, 0x78, 0x5b, 0x74, 0x72, 0x0c, + 0xa9, 0xaf, 0x1f, 0xfe, 0x67, 0xa5, 0x75, 0xbe, 0x04, 0xd5, 0xcc, 0x72, + 0xb6, 0x9d, 0x33, 0x1d, 0x8f, 0xf3, 0x43, 0x9e, 0xc7, 0xd2, 0x80, 0x3b, + 0x9a, 0x5a, 0x6d, 0x3a, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x10, 0xf4, 0xae, + 0x3f, 0xc7, 0xda, 0x91, 0x8e, 0x18, 0xec, 0x22, 0x3f, 0x7f, 0xe7, 0x93, + 0x1e, 0x9d, 0x87, 0xf9, 0xf6, 0xae, 0xbc, 0x9e, 0x39, 0xaf, 0x29, 0xd7, + 0x6f, 0x8e, 0xa3, 0xab, 0xdc, 0x4f, 0x9f, 0x94, 0xb1, 0x09, 0xfe, 0xe8, + 0xa0, 0x0a, 0x14, 0x94, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, + 0x51, 0x40, 0x05, 0x4b, 0x6d, 0x71, 0x25, 0xad, 0xc4, 0x73, 0xc4, 0x70, + 0xf1, 0x9d, 0xc2, 0xa2, 0xa2, 0x80, 0x3d, 0x77, 0x4f, 0xbb, 0x5b, 0xeb, + 0x38, 0x6e, 0x23, 0xe9, 0x22, 0xe7, 0xe9, 0xea, 0x3f, 0x03, 0x56, 0xeb, + 0x92, 0xf8, 0x7f, 0x7a, 0x65, 0xb0, 0x9a, 0xd1, 0xce, 0x5a, 0x17, 0xdc, + 0xbf, 0x43, 0xff, 0x00, 0xd7, 0xae, 0xb6, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x4a, 0x5a, 0x4a, + 0x00, 0xcf, 0xd7, 0xae, 0xbe, 0xc7, 0xa3, 0x5d, 0xcc, 0x3a, 0xac, 0x64, + 0x2f, 0xd4, 0xf0, 0x3f, 0x5a, 0xf2, 0x93, 0xc8, 0xe6, 0xbd, 0x0b, 0xc7, + 0x53, 0x18, 0xf4, 0x1f, 0x2c, 0x1c, 0x79, 0x92, 0xa8, 0xc7, 0xb0, 0xc9, + 0xfe, 0x82, 0xbc, 0xf2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa5, 0xfe, 0x42, 0x80, 0x12, + 0x8a, 0x72, 0xa3, 0x39, 0xc2, 0x2b, 0x31, 0xf4, 0x00, 0xd5, 0x98, 0xf4, + 0xcb, 0xd9, 0x31, 0x8b, 0x77, 0x00, 0xfa, 0x8c, 0x7f, 0x3a, 0x34, 0x1d, + 0x99, 0x52, 0x8a, 0xd2, 0x1a, 0x15, 0xf9, 0xff, 0x00, 0x96, 0x4a, 0x3f, + 0xe0, 0x42, 0x97, 0xfb, 0x06, 0xf7, 0xfb, 0x8b, 0xff, 0x00, 0x7d, 0x0a, + 0x57, 0x41, 0xca, 0xcc, 0xca, 0x2b, 0x48, 0xe8, 0x57, 0xf9, 0xff, 0x00, + 0x54, 0xbf, 0xf7, 0xd0, 0xa6, 0x36, 0x8b, 0x7c, 0xa3, 0x98, 0x33, 0xf4, + 0x61, 0x45, 0xd0, 0x72, 0xb2, 0x85, 0x15, 0x6d, 0xb4, 0xbb, 0xd5, 0xeb, + 0x6f, 0x27, 0xe4, 0x2a, 0x23, 0x67, 0x70, 0xbd, 0x6d, 0xe5, 0xcf, 0xfb, + 0x86, 0x8b, 0xa0, 0xb3, 0x21, 0xa2, 0x9e, 0xd0, 0xc8, 0xa7, 0xe6, 0x8d, + 0xd7, 0xea, 0xa4, 0x52, 0x15, 0x3d, 0xd4, 0xfe, 0x46, 0x8b, 0x85, 0x98, + 0xda, 0x29, 0xdb, 0x4f, 0x70, 0x7f, 0x2a, 0x36, 0x9e, 0xc0, 0xfe, 0x54, + 0xee, 0x16, 0x1b, 0x45, 0x3b, 0x69, 0xf4, 0x3f, 0x95, 0x39, 0x61, 0x9a, + 0x4f, 0xb9, 0x13, 0xb7, 0xfb, 0xaa, 0x4d, 0x2b, 0x85, 0x99, 0x1d, 0x15, + 0x3a, 0xd9, 0x5d, 0x3f, 0x0b, 0x6f, 0x2f, 0xfd, 0xf1, 0x8f, 0xe7, 0x52, + 0x8d, 0x2a, 0xf8, 0xf4, 0xb6, 0x7f, 0xd2, 0x8b, 0xa0, 0xb3, 0x29, 0xd1, + 0x5a, 0x0b, 0xa1, 0xdf, 0x30, 0xcf, 0x93, 0x8f, 0xab, 0x01, 0x4e, 0x1a, + 0x0d, 0xf7, 0x78, 0x97, 0xfe, 0xfa, 0x14, 0x5d, 0x07, 0x2b, 0x33, 0x68, + 0xad, 0x3f, 0xec, 0x0b, 0xdc, 0x7d, 0xd4, 0xff, 0x00, 0xbe, 0x85, 0x27, + 0xf6, 0x15, 0xf8, 0x07, 0xf7, 0x4a, 0x7e, 0x8c, 0x28, 0xba, 0x0e, 0x56, + 0x66, 0xd1, 0x56, 0xa5, 0xd3, 0x6f, 0x22, 0x53, 0xbe, 0xde, 0x4c, 0x7a, + 0x85, 0xc8, 0xfd, 0x2a, 0xb3, 0x29, 0x53, 0x86, 0x52, 0x3d, 0x88, 0x34, + 0xee, 0x2b, 0x31, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, + 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0xe8, 0x7c, 0x0f, 0x73, 0xe4, + 0x6b, 0xeb, 0x19, 0x3c, 0x4c, 0x85, 0x7f, 0xaf, 0xf4, 0xaf, 0x46, 0xcd, + 0x79, 0x36, 0x89, 0x37, 0xd9, 0xf5, 0xcb, 0x39, 0x73, 0x8f, 0xdf, 0x28, + 0x27, 0xd8, 0x9c, 0x1f, 0xd0, 0xd7, 0xac, 0x0a, 0x00, 0x75, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x1c, 0x87, 0xc4, 0x56, 0xff, 0x00, 0x43, 0xb4, 0x5f, 0x59, 0x09, + 0xfd, 0x2b, 0x86, 0xae, 0xdb, 0xe2, 0x2f, 0xfa, 0x8b, 0x3f, 0xf7, 0x9b, + 0xf9, 0x0a, 0xe2, 0x68, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa5, 0xa4, 0xab, 0x3a, 0x7d, 0x84, 0x97, 0xf3, 0x88, 0xe3, 0xe0, + 0x0f, 0xbc, 0xc7, 0xa2, 0x8f, 0xf3, 0xd2, 0x93, 0xd0, 0x06, 0x5b, 0x5a, + 0xcd, 0x77, 0x27, 0x97, 0x0a, 0x16, 0x35, 0xd0, 0xd8, 0x78, 0x6e, 0x31, + 0x83, 0x36, 0x66, 0x6f, 0xee, 0x8e, 0x17, 0x35, 0xb5, 0xa5, 0xe9, 0x51, + 0x5a, 0xc2, 0xa1, 0x57, 0x0a, 0x7a, 0xf1, 0xcb, 0x7b, 0x9a, 0xd2, 0x00, + 0x2f, 0x0b, 0xc0, 0x1d, 0xab, 0x39, 0x4e, 0xfb, 0x1b, 0x46, 0x09, 0x6e, + 0x67, 0xdb, 0xe9, 0x8b, 0x12, 0xed, 0x45, 0x48, 0xc7, 0xa0, 0x15, 0x38, + 0xb2, 0x5e, 0xee, 0xc6, 0xac, 0xd2, 0x8a, 0x8b, 0x9a, 0x58, 0xaf, 0xf6, + 0x28, 0xbf, 0xda, 0xfc, 0xe9, 0x0d, 0x94, 0x5f, 0xed, 0x7e, 0x75, 0x66, + 0x8a, 0x00, 0xad, 0xf6, 0x28, 0xfd, 0x5a, 0x90, 0xd8, 0xaf, 0x67, 0x35, + 0x6a, 0x8a, 0x00, 0xa6, 0x6c, 0x7d, 0x1f, 0xf4, 0xa6, 0x9b, 0x27, 0xec, + 0xe2, 0xaf, 0x1a, 0x05, 0x00, 0x50, 0x36, 0x52, 0x76, 0xdb, 0x4d, 0xfb, + 0x14, 0x9f, 0xdd, 0x53, 0x5a, 0x26, 0x81, 0x45, 0xc2, 0xc8, 0xcd, 0x36, + 0x2f, 0xde, 0x25, 0xfc, 0x85, 0x02, 0xc5, 0xfb, 0x44, 0xbf, 0x90, 0xad, + 0x2a, 0x4a, 0x2e, 0x16, 0x46, 0x78, 0xb3, 0x93, 0xd1, 0x45, 0x38, 0x59, + 0x49, 0xdc, 0x81, 0x57, 0xa9, 0x68, 0xb8, 0x14, 0x45, 0x93, 0xf7, 0x71, + 0xf9, 0x53, 0x85, 0x88, 0xee, 0xff, 0x00, 0xa5, 0x5c, 0xa2, 0x8b, 0x81, + 0x50, 0x59, 0x27, 0x76, 0x26, 0x9e, 0x2c, 0xa2, 0xef, 0xbb, 0xf3, 0xab, + 0x14, 0x50, 0x05, 0x7f, 0xb1, 0xc3, 0xe8, 0x69, 0x3e, 0xc5, 0x17, 0x6d, + 0xdf, 0x9d, 0x59, 0xa2, 0x80, 0x2a, 0x9b, 0x25, 0xfe, 0x17, 0x35, 0x56, + 0xe7, 0x4a, 0x49, 0x94, 0x89, 0x22, 0x49, 0x41, 0xf5, 0x15, 0xa8, 0x68, + 0x14, 0x5c, 0x2c, 0x71, 0x97, 0xfe, 0x1a, 0xc1, 0x66, 0xb7, 0x62, 0xad, + 0xff, 0x00, 0x3c, 0xdb, 0xfa, 0x1a, 0xc1, 0x96, 0x29, 0x21, 0x90, 0xa4, + 0x8a, 0x55, 0x97, 0xb1, 0xaf, 0x4f, 0x74, 0x57, 0x18, 0x71, 0x9f, 0xc3, + 0xa5, 0x62, 0xeb, 0x3a, 0x2c, 0x77, 0x71, 0x1e, 0x06, 0xe1, 0xf7, 0x5f, + 0xd0, 0xfb, 0xfb, 0x55, 0xa9, 0x99, 0xca, 0x1d, 0x8e, 0x1e, 0x8a, 0x96, + 0xe6, 0xda, 0x5b, 0x59, 0xda, 0x29, 0x57, 0x6b, 0x2f, 0x7f, 0x5f, 0x7a, + 0x8a, 0xb5, 0x31, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x1c, + 0x8e, 0x63, 0x75, 0x71, 0xd5, 0x08, 0x6f, 0xca, 0xbd, 0x8d, 0x79, 0x03, + 0xe9, 0x5e, 0x34, 0x7a, 0x1a, 0xf6, 0x54, 0xfb, 0x8b, 0xf4, 0x14, 0x00, + 0xfa, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x39, 0x0f, 0x88, 0xa3, 0xfd, 0x0e, 0xd1, 0xbd, + 0x24, 0x61, 0xfa, 0x57, 0x0d, 0x5d, 0xf7, 0xc4, 0x28, 0xf3, 0xa3, 0xc3, + 0x27, 0xf7, 0x66, 0x03, 0xf3, 0x06, 0xb8, 0x1a, 0x00, 0x28, 0xa2, 0x8a, + 0x00, 0x28, 0xa2, 0x96, 0x80, 0x1f, 0x6d, 0x04, 0x97, 0x33, 0xa4, 0x31, + 0x02, 0x59, 0x8e, 0x3f, 0xfd, 0x75, 0xde, 0x68, 0xfa, 0x5c, 0x76, 0x76, + 0xca, 0xa1, 0x78, 0xea, 0x49, 0xee, 0x7d, 0x6b, 0x23, 0xc2, 0x5a, 0x66, + 0x50, 0xdc, 0xc8, 0xbf, 0x78, 0xe1, 0x7e, 0x9f, 0xfe, 0xba, 0xea, 0x80, + 0x00, 0x60, 0x74, 0x15, 0x94, 0xdd, 0xdd, 0x8d, 0xa1, 0x1b, 0x2b, 0xb1, + 0x47, 0x41, 0x9a, 0x28, 0x14, 0x1f, 0x5a, 0x83, 0x40, 0x35, 0x34, 0x56, + 0xc5, 0xf9, 0x63, 0x80, 0x69, 0xd6, 0xd0, 0xe7, 0xe7, 0x61, 0xf4, 0xab, + 0x55, 0x71, 0x8f, 0x73, 0x29, 0x4f, 0xa2, 0x21, 0x5b, 0x58, 0xc0, 0xc6, + 0x09, 0xf7, 0xcd, 0x35, 0xed, 0x06, 0x3e, 0x53, 0x83, 0x4d, 0xb8, 0xbf, + 0xb6, 0xb7, 0x38, 0x96, 0x55, 0x56, 0xf4, 0xce, 0x4d, 0x16, 0xda, 0x85, + 0xb5, 0xc9, 0xc4, 0x33, 0x23, 0x1f, 0x4c, 0xf3, 0x57, 0x64, 0x4d, 0xe5, + 0xb9, 0x5d, 0xd1, 0x91, 0x88, 0x65, 0xc1, 0xa0, 0x55, 0xe9, 0x62, 0x12, + 0x29, 0x07, 0xaf, 0x63, 0x54, 0x4a, 0xec, 0x62, 0xa7, 0xa8, 0xac, 0xe5, + 0x1b, 0x1a, 0x42, 0x57, 0x0a, 0x28, 0xa2, 0xa4, 0xb0, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa3, 0xbf, 0x4c, 0xd1, 0x56, 0x2d, 0x61, 0xe3, 0x7b, 0x7a, 0xf0, + 0x29, 0xa5, 0x76, 0x26, 0xec, 0xae, 0x24, 0x56, 0xc5, 0x80, 0x2e, 0x70, + 0x2a, 0x51, 0x6b, 0x1f, 0x7c, 0x9f, 0xc6, 0x96, 0x69, 0xe2, 0x81, 0x37, + 0x4d, 0x22, 0xa2, 0xfb, 0x9a, 0xae, 0x9a, 0xbd, 0x93, 0xb6, 0xd1, 0x3a, + 0x03, 0xef, 0xc5, 0x6a, 0x92, 0x46, 0x37, 0x93, 0x25, 0x7b, 0x51, 0x82, + 0x50, 0xe3, 0xda, 0xab, 0x32, 0x94, 0x38, 0x61, 0x83, 0x5a, 0x0a, 0xc1, + 0x97, 0x20, 0x82, 0x3d, 0x45, 0x32, 0x68, 0x84, 0x8a, 0x78, 0xe7, 0xb5, + 0x4c, 0xa3, 0xd8, 0x71, 0x9b, 0x5b, 0x94, 0x68, 0x23, 0x23, 0x04, 0x64, + 0x1e, 0xa2, 0x82, 0x36, 0x9c, 0x1e, 0xbd, 0xe8, 0x15, 0x99, 0xb1, 0x83, + 0xe2, 0x0d, 0x1d, 0x6e, 0xa0, 0x2d, 0x18, 0x02, 0x41, 0xca, 0x9e, 0xdf, + 0x43, 0xed, 0x5c, 0x5b, 0x29, 0x46, 0x2a, 0xc0, 0x82, 0x0e, 0x08, 0x3d, + 0x73, 0x5e, 0xa2, 0xc0, 0x30, 0x21, 0x80, 0xc1, 0x15, 0xc4, 0xf8, 0xab, + 0x4e, 0x36, 0xf7, 0x2b, 0x70, 0x06, 0x12, 0x43, 0xb5, 0xf1, 0xd8, 0xff, + 0x00, 0xf5, 0xc5, 0x69, 0x09, 0x74, 0x33, 0x9c, 0x7a, 0x98, 0x54, 0x52, + 0xd2, 0x56, 0x86, 0x21, 0x45, 0x14, 0x50, 0x02, 0x80, 0x4f, 0x4a, 0xf6, + 0x44, 0xfb, 0xa3, 0xe8, 0x2b, 0xc7, 0xad, 0x97, 0xcc, 0xba, 0x86, 0x3f, + 0xef, 0x48, 0xab, 0xf9, 0x90, 0x2b, 0xd8, 0x87, 0x41, 0xf4, 0xa0, 0x07, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x52, 0x52, 0xd2, 0x1e, 0x94, 0x01, 0x83, 0xe3, 0x68, 0x7c, 0xdf, 0x0e, + 0x4c, 0x47, 0x58, 0xd9, 0x5b, 0xf5, 0xc7, 0xf5, 0xaf, 0x36, 0xaf, 0x58, + 0xd6, 0xa0, 0xfb, 0x4e, 0x8d, 0x77, 0x0f, 0x76, 0x89, 0xb1, 0xf5, 0xc6, + 0x6b, 0xca, 0x39, 0xe9, 0xde, 0x80, 0x12, 0x8a, 0x28, 0xa0, 0x02, 0xa4, + 0x82, 0x36, 0x9a, 0x74, 0x88, 0x73, 0xbd, 0x82, 0xfe, 0x75, 0x1d, 0x68, + 0xf8, 0x7a, 0x21, 0x2e, 0xb5, 0x6c, 0xac, 0x38, 0xde, 0x49, 0xfc, 0x29, + 0x31, 0xad, 0xce, 0xee, 0xc6, 0x01, 0x6d, 0x6b, 0x1c, 0x4a, 0x31, 0x80, + 0x3f, 0x95, 0x58, 0xa6, 0x8e, 0x82, 0x9d, 0x58, 0x1d, 0x21, 0x42, 0x29, + 0x77, 0x0b, 0xdc, 0x9a, 0x2a, 0x6b, 0x41, 0x99, 0xb3, 0xe8, 0x29, 0xad, + 0x58, 0xa4, 0xec, 0x8b, 0x6a, 0x02, 0xae, 0x07, 0x6a, 0xca, 0xd6, 0x2f, + 0xe5, 0x8d, 0x96, 0xda, 0xd0, 0x33, 0x4e, 0xe3, 0x27, 0x03, 0x3b, 0x47, + 0xad, 0x6a, 0xbb, 0x05, 0x52, 0x7d, 0x2b, 0x9d, 0xd2, 0x35, 0x08, 0x9b, + 0x53, 0xb8, 0x79, 0x9c, 0x29, 0x94, 0xfc, 0x84, 0xfa, 0x64, 0xf1, 0x5a, + 0xbe, 0xc6, 0x30, 0x4d, 0xea, 0x64, 0x5d, 0x5b, 0x4f, 0x6e, 0xe0, 0xdc, + 0x23, 0xa1, 0x63, 0xd4, 0x8c, 0xfe, 0xb5, 0x0a, 0xb1, 0x53, 0xb8, 0x1c, + 0x30, 0x3d, 0x73, 0x5d, 0x27, 0x89, 0x2e, 0xa0, 0x6b, 0x2f, 0x29, 0x4a, + 0xbc, 0x85, 0x81, 0x18, 0xed, 0xef, 0x5c, 0xdf, 0x7f, 0xaf, 0x35, 0x93, + 0x56, 0x67, 0x5d, 0x37, 0xcc, 0xb5, 0x47, 0x4f, 0xa0, 0xea, 0x86, 0xe5, + 0x7c, 0x89, 0x8e, 0x65, 0x5e, 0x41, 0xf5, 0x15, 0x7a, 0xf1, 0x0e, 0xe0, + 0xeb, 0x5c, 0x85, 0xa4, 0xe6, 0xda, 0xea, 0x29, 0x54, 0xe3, 0x6b, 0x0c, + 0xfb, 0x8e, 0xf5, 0xda, 0x4d, 0x89, 0x2d, 0xf7, 0x0e, 0xe3, 0x22, 0xae, + 0xf7, 0x46, 0x13, 0x8f, 0x2c, 0xae, 0x8a, 0x60, 0xf1, 0x45, 0x02, 0x8a, + 0xcc, 0xb0, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x01, 0x63, 0x4f, 0x31, 0xd5, 0x7d, 0x4d, + 0x58, 0xbd, 0xbb, 0x8e, 0xc2, 0xd1, 0xa5, 0x7e, 0x8b, 0xc0, 0x1e, 0xb4, + 0xcb, 0x35, 0xcc, 0xa4, 0xfa, 0x56, 0x2f, 0x89, 0xee, 0x0b, 0xdc, 0xa5, + 0xb8, 0x3f, 0x2a, 0x8c, 0x91, 0xea, 0x4d, 0x5c, 0x74, 0x57, 0x33, 0x6b, + 0x9a, 0x56, 0x28, 0x4c, 0xd7, 0x7a, 0x8b, 0xbc, 0xed, 0x1b, 0xc8, 0x07, + 0x65, 0x07, 0x02, 0xaa, 0x63, 0x07, 0x07, 0x8c, 0x57, 0x53, 0xa4, 0x6a, + 0x16, 0x8b, 0x61, 0x1a, 0x19, 0x12, 0x36, 0x51, 0x86, 0x0c, 0x79, 0xae, + 0x7b, 0x50, 0x96, 0x39, 0xef, 0xe5, 0x92, 0x21, 0x84, 0x27, 0x8a, 0x4d, + 0x1b, 0x41, 0xbb, 0xf2, 0xd8, 0xb7, 0xa3, 0xea, 0xaf, 0x6b, 0x38, 0x8e, + 0x56, 0x2d, 0x0b, 0x1c, 0x7d, 0x3f, 0xfa, 0xd5, 0xd6, 0x2b, 0x06, 0x50, + 0x41, 0xc8, 0x3c, 0x83, 0x5c, 0x06, 0x3f, 0x3a, 0xeb, 0xb4, 0x1b, 0x93, + 0x71, 0xa6, 0xa1, 0x6e, 0x59, 0x3e, 0x53, 0xf8, 0x55, 0x45, 0xf4, 0x66, + 0x75, 0xa0, 0x96, 0xa8, 0x9e, 0xf1, 0x30, 0xe1, 0x87, 0x43, 0x50, 0x0a, + 0xbb, 0x76, 0xbb, 0xa1, 0x3e, 0xd5, 0x4a, 0xa6, 0x4a, 0xcc, 0x50, 0x77, + 0x40, 0x79, 0xac, 0xdd, 0x7e, 0xcc, 0x5d, 0xe9, 0x93, 0x0c, 0x65, 0x95, + 0x77, 0x0f, 0xa8, 0xad, 0x23, 0x4d, 0x74, 0x0e, 0x85, 0x58, 0x64, 0x10, + 0x45, 0x4a, 0xdc, 0xb7, 0xb1, 0xe5, 0xd8, 0x23, 0x83, 0xd4, 0x75, 0xa4, + 0xa9, 0x2e, 0x57, 0x65, 0xcc, 0xab, 0xfd, 0xd7, 0x22, 0xa3, 0xae, 0x83, + 0x94, 0x29, 0x69, 0x29, 0x7d, 0x28, 0x02, 0xe6, 0x8b, 0x1f, 0x9b, 0xad, + 0xd9, 0x20, 0x1c, 0x79, 0xe8, 0x4f, 0xd3, 0x22, 0xbd, 0x64, 0x57, 0x98, + 0xf8, 0x42, 0x2f, 0x37, 0xc4, 0x76, 0xb9, 0x1f, 0x74, 0x96, 0xfc, 0x94, + 0x8f, 0xeb, 0x5e, 0x9c, 0x28, 0x01, 0xd4, 0x51, 0x45, 0x00, 0x14, 0x51, + 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, + 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, + 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, + 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x49, 0x40, 0x0b, 0x45, + 0x25, 0x14, 0x00, 0xb4, 0x52, 0x66, 0x8a, 0x00, 0x5a, 0x29, 0x28, 0xa0, + 0x05, 0xa2, 0x92, 0x90, 0xba, 0x8e, 0xac, 0x07, 0xe3, 0x40, 0x0b, 0x45, + 0x37, 0xcc, 0x4f, 0xef, 0x2f, 0xe7, 0x49, 0xe7, 0x46, 0x3a, 0xc8, 0x83, + 0xfe, 0x04, 0x28, 0x02, 0x4a, 0x2a, 0x2f, 0x3e, 0x2f, 0xf9, 0xea, 0x9f, + 0xf7, 0xd0, 0xa3, 0xcf, 0x8b, 0xfe, 0x7a, 0xa7, 0xfd, 0xf4, 0x28, 0x01, + 0xec, 0xa1, 0x94, 0x82, 0x32, 0x08, 0xc1, 0xaf, 0x23, 0xd5, 0x2d, 0x8d, + 0x9e, 0xa5, 0x71, 0x01, 0xff, 0x00, 0x96, 0x72, 0x10, 0x3e, 0x99, 0xe2, + 0xbd, 0x68, 0x4b, 0x19, 0xe8, 0xeb, 0xf9, 0xd7, 0x01, 0xe3, 0xcb, 0x41, + 0x16, 0xaa, 0x97, 0x0b, 0x8d, 0xb3, 0xa7, 0x38, 0x3d, 0xc5, 0x00, 0x73, + 0x54, 0x52, 0xd2, 0x50, 0x01, 0x5a, 0xbe, 0x17, 0x3f, 0xf1, 0x3c, 0xb7, + 0xcf, 0xfb, 0x5f, 0xc8, 0xd6, 0x55, 0x68, 0x68, 0x12, 0x79, 0x7a, 0xd5, + 0xa9, 0x3d, 0xdf, 0x1f, 0x9e, 0x45, 0x27, 0xb0, 0xd6, 0xe7, 0xa2, 0x63, + 0x8a, 0x28, 0xcd, 0x15, 0x81, 0xd2, 0x15, 0x3d, 0x97, 0xdf, 0x6f, 0xa5, + 0x40, 0x6a, 0x6b, 0x46, 0xc4, 0xa4, 0x7a, 0x8a, 0x71, 0xdc, 0x99, 0xec, + 0x4d, 0x76, 0x71, 0x69, 0x29, 0x1d, 0x42, 0x13, 0xfa, 0x57, 0x08, 0x3b, + 0x1f, 0xc6, 0xbb, 0xe9, 0x57, 0x7c, 0x4c, 0x9f, 0xde, 0x04, 0x57, 0x0b, + 0x22, 0x18, 0xe4, 0x68, 0xc8, 0xe5, 0x49, 0x1f, 0x95, 0x5c, 0xc7, 0x43, + 0xa8, 0xca, 0x29, 0x68, 0xa8, 0x3a, 0x44, 0x27, 0x1c, 0xd7, 0x6d, 0x6c, + 0xd9, 0xd3, 0x63, 0x27, 0xa9, 0x41, 0x5c, 0x5a, 0x23, 0x49, 0x22, 0xa2, + 0xff, 0x00, 0x19, 0xc5, 0x76, 0xe5, 0x04, 0x56, 0x41, 0x07, 0x45, 0x50, + 0x2a, 0xa2, 0x73, 0x57, 0xdd, 0x15, 0x05, 0x14, 0x0a, 0x2a, 0x06, 0x14, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, + 0x51, 0x45, 0x00, 0x58, 0xb2, 0xea, 0xf5, 0xcc, 0x6b, 0xc4, 0x9d, 0x5a, + 0x6c, 0xfb, 0x63, 0xf2, 0xae, 0x9a, 0xcd, 0xb1, 0x21, 0x1e, 0xb5, 0xcf, + 0x78, 0x8e, 0x23, 0x1e, 0xa6, 0x5f, 0x1c, 0x48, 0xb9, 0xfd, 0x2a, 0xfe, + 0xc9, 0x30, 0xd2, 0x66, 0x5d, 0x2f, 0xf5, 0xa4, 0x1d, 0x29, 0x6a, 0x0e, + 0xa0, 0xae, 0x8f, 0xc2, 0xcd, 0xfe, 0x8f, 0x30, 0xec, 0x18, 0x57, 0x36, + 0x6b, 0xa9, 0xf0, 0xcc, 0x3b, 0x34, 0xf6, 0x90, 0x8c, 0x19, 0x1b, 0x35, + 0x70, 0xdc, 0xc2, 0xb3, 0xf7, 0x4d, 0x49, 0xff, 0x00, 0xd4, 0xb7, 0xd2, + 0xa8, 0x0e, 0x82, 0xae, 0xdc, 0xb6, 0xd8, 0x5a, 0xa9, 0x0a, 0x27, 0xb9, + 0x95, 0x3d, 0x82, 0x94, 0x75, 0x14, 0x94, 0x13, 0x80, 0x4f, 0xa5, 0x42, + 0x34, 0x3c, 0xca, 0xff, 0x00, 0x9b, 0xfb, 0x83, 0xff, 0x00, 0x4d, 0x1b, + 0xf9, 0xd4, 0x15, 0x25, 0xc3, 0x17, 0xb8, 0x91, 0xbf, 0xbc, 0xc4, 0xfe, + 0xb5, 0x1d, 0x74, 0x2d, 0x8e, 0x67, 0xb8, 0x52, 0xf3, 0x8e, 0x3a, 0xd2, + 0x51, 0xf4, 0xa0, 0x47, 0x4f, 0xf0, 0xfe, 0x0f, 0x33, 0x58, 0x9a, 0x6c, + 0x7c, 0xb1, 0x45, 0x81, 0xf8, 0x9f, 0xfe, 0xb1, 0xaf, 0x40, 0xae, 0x4f, + 0xc0, 0x16, 0xe2, 0x2d, 0x3e, 0xe2, 0xe5, 0x88, 0x1e, 0x74, 0x81, 0x57, + 0x27, 0xb0, 0xff, 0x00, 0xf5, 0xd7, 0x52, 0x65, 0x8c, 0x75, 0x91, 0x47, + 0xfc, 0x08, 0x50, 0x04, 0x94, 0x54, 0x5e, 0x7c, 0x5f, 0xf3, 0xd5, 0x3f, + 0xef, 0xa1, 0x47, 0x9f, 0x17, 0xfc, 0xf5, 0x4f, 0xfb, 0xe8, 0x50, 0x04, + 0xb4, 0x54, 0x42, 0x68, 0x8f, 0x49, 0x13, 0xfe, 0xfa, 0x14, 0xef, 0x31, + 0x3f, 0xbc, 0xbf, 0x9d, 0x00, 0x3e, 0x8a, 0x68, 0x75, 0x3d, 0x18, 0x1f, + 0xc6, 0x96, 0x80, 0x16, 0x8a, 0x4a, 0x28, 0x01, 0x68, 0xa4, 0xa2, 0x80, + 0x16, 0x8a, 0x4a, 0x28, 0x01, 0x68, 0xa4, 0xa2, 0x80, 0x16, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x04, 0xcd, 0x55, 0xb8, 0xd4, 0x2d, 0x2d, + 0x4f, 0xef, 0xae, 0x62, 0x88, 0xfa, 0x33, 0x81, 0x56, 0x4d, 0x67, 0x7f, + 0x61, 0xe9, 0xcd, 0x33, 0xcc, 0xd6, 0x91, 0x3c, 0x92, 0x31, 0x66, 0x67, + 0x19, 0xc9, 0x3e, 0xc6, 0x80, 0x20, 0x7f, 0x14, 0xe9, 0x6a, 0xdb, 0x52, + 0x66, 0x95, 0xbd, 0x23, 0x42, 0xd4, 0x87, 0x5f, 0x96, 0x4f, 0xf8, 0xf7, + 0xd2, 0xef, 0x24, 0xf7, 0x64, 0xdb, 0xfc, 0xeb, 0x56, 0x28, 0x22, 0x88, + 0x62, 0x38, 0x96, 0x31, 0xe8, 0x14, 0x0a, 0x93, 0x14, 0x01, 0x89, 0xf6, + 0xfd, 0x72, 0x4f, 0xf5, 0x7a, 0x64, 0x51, 0xe7, 0xa1, 0x92, 0x51, 0xfd, + 0x29, 0x42, 0xf8, 0x86, 0x51, 0xcb, 0xda, 0x43, 0x9f, 0x40, 0x4e, 0x2b, + 0x6e, 0x8c, 0xf7, 0xa0, 0x0c, 0x51, 0xa7, 0xeb, 0x2f, 0xfe, 0xb3, 0x54, + 0x44, 0xff, 0x00, 0x72, 0x21, 0x41, 0xd0, 0xef, 0x24, 0x1f, 0xbe, 0xd6, + 0x2e, 0x4f, 0xfb, 0x80, 0x2d, 0x6d, 0x64, 0x51, 0x9a, 0x00, 0xc3, 0x1e, + 0x19, 0x53, 0xf7, 0xf5, 0x1b, 0xe7, 0xfa, 0xcb, 0x47, 0xfc, 0x22, 0x96, + 0x47, 0xef, 0xcd, 0x74, 0xff, 0x00, 0x59, 0x4d, 0x6e, 0x12, 0x3b, 0xd4, + 0x32, 0x5d, 0x43, 0x17, 0xfa, 0xc9, 0xa3, 0x4f, 0xf7, 0x9c, 0x0a, 0x00, + 0xca, 0x1e, 0x13, 0xd3, 0x57, 0xa8, 0x98, 0xfd, 0x65, 0x34, 0xa3, 0xc2, + 0x9a, 0x5f, 0x78, 0x5c, 0xfd, 0x64, 0x35, 0x6a, 0x4d, 0x73, 0x4c, 0x87, + 0xef, 0xdf, 0xc1, 0xf8, 0x38, 0x3f, 0xca, 0xab, 0xb7, 0x8a, 0x74, 0xa1, + 0x90, 0xb7, 0x0c, 0xe7, 0xd1, 0x23, 0x63, 0xfd, 0x28, 0x01, 0x3f, 0xe1, + 0x14, 0xd2, 0xbf, 0xe7, 0x83, 0x7f, 0xdf, 0x66, 0x93, 0xfe, 0x11, 0x5d, + 0x2b, 0xfe, 0x78, 0xb7, 0xfd, 0xfc, 0x34, 0x7f, 0xc2, 0x51, 0x6a, 0xdf, + 0xea, 0xad, 0xaf, 0x25, 0xff, 0x00, 0x72, 0x03, 0x47, 0xfc, 0x24, 0x13, + 0x3f, 0xfa, 0xad, 0x1f, 0x51, 0x6f, 0x76, 0x8c, 0x2f, 0xf5, 0xa0, 0x00, + 0xf8, 0x4f, 0x4b, 0xff, 0x00, 0x9e, 0x52, 0x0f, 0xa4, 0x86, 0xb3, 0x35, + 0xbf, 0x0a, 0xda, 0x2e, 0x97, 0x34, 0x96, 0xbe, 0x67, 0x9d, 0x1a, 0x97, + 0x5c, 0xb9, 0x6f, 0xaf, 0xe7, 0x5a, 0x27, 0x58, 0xd5, 0x1c, 0x7e, 0xef, + 0x42, 0x9c, 0xff, 0x00, 0xbf, 0x3a, 0xad, 0x0f, 0xa8, 0xeb, 0x4e, 0x08, + 0x1a, 0x22, 0x80, 0x78, 0x3b, 0xee, 0x41, 0xfe, 0x42, 0x80, 0x3c, 0xd0, + 0x13, 0xde, 0x8a, 0xd0, 0xd6, 0xf4, 0xfb, 0x8d, 0x3e, 0xf4, 0xfd, 0xa2, + 0x01, 0x08, 0x94, 0x97, 0x45, 0x0c, 0x0a, 0xe3, 0xd3, 0x35, 0x9f, 0x40, + 0x05, 0x49, 0x6f, 0x2f, 0x93, 0x71, 0x1c, 0xa0, 0xe3, 0xcb, 0x65, 0x61, + 0xf8, 0x1a, 0x8e, 0x8e, 0x7b, 0x50, 0x07, 0xa8, 0xc4, 0xe2, 0x58, 0x92, + 0x45, 0xe4, 0x30, 0xc8, 0x3e, 0xd4, 0xfa, 0xc7, 0xf0, 0xb5, 0xea, 0xdd, + 0xe8, 0xf1, 0xa9, 0x39, 0x92, 0x1f, 0xdd, 0x91, 0xec, 0x39, 0x1f, 0xa5, + 0x6c, 0x56, 0x0f, 0x46, 0x74, 0xa7, 0x74, 0x14, 0xb1, 0x39, 0x59, 0x54, + 0xf6, 0xce, 0x29, 0x33, 0x41, 0xa4, 0x86, 0xf5, 0x34, 0x73, 0x9f, 0xce, + 0xb9, 0x8f, 0x10, 0xd8, 0x34, 0x37, 0x06, 0xe1, 0x01, 0xd9, 0x27, 0xde, + 0xc7, 0xf0, 0x9c, 0xf5, 0xae, 0x86, 0xda, 0x6d, 0xcb, 0xb5, 0xbe, 0xf0, + 0xa9, 0x24, 0x8d, 0x25, 0x42, 0x92, 0x00, 0xca, 0xc3, 0x04, 0x1a, 0xd9, + 0xda, 0x48, 0xc2, 0x32, 0x70, 0x91, 0xc1, 0x76, 0xcd, 0x2d, 0x74, 0x37, + 0x3e, 0x1a, 0x46, 0x25, 0xad, 0xe6, 0xd8, 0x3f, 0xba, 0x57, 0x22, 0x8b, + 0x6f, 0x0c, 0xa2, 0xb6, 0xeb, 0x89, 0xb7, 0x8f, 0xee, 0xa8, 0xda, 0x2b, + 0x3e, 0x56, 0x74, 0xfb, 0x68, 0xd8, 0xab, 0xe1, 0xdd, 0x3d, 0xa6, 0xb9, + 0x17, 0x2e, 0xb8, 0x8d, 0x3e, 0xee, 0x7b, 0x9a, 0xe8, 0x2f, 0x1f, 0xe5, + 0x0a, 0x3b, 0xd3, 0xd1, 0x12, 0xde, 0x10, 0xa8, 0x02, 0xa2, 0x8c, 0x00, + 0x06, 0x2a, 0x9b, 0xb9, 0x91, 0xcb, 0x1f, 0xc2, 0xa9, 0xfb, 0xaa, 0xc6, + 0x29, 0xb9, 0xca, 0xe2, 0x01, 0x45, 0x14, 0x56, 0x46, 0x81, 0x45, 0x14, + 0x66, 0x98, 0x06, 0x68, 0xa8, 0x6e, 0x2e, 0xa1, 0xb7, 0xff, 0x00, 0x5a, + 0xe0, 0x1f, 0x4e, 0xf4, 0x41, 0x75, 0x0d, 0xc0, 0xcc, 0x4e, 0x1c, 0xf7, + 0x1e, 0x94, 0x0e, 0xc4, 0xd4, 0x51, 0x45, 0x02, 0x0a, 0x28, 0xa2, 0x80, + 0x1d, 0x0b, 0x14, 0x94, 0x37, 0xbe, 0x29, 0x9a, 0xed, 0x81, 0xbd, 0xb3, + 0xdd, 0x18, 0xfd, 0xe4, 0x7c, 0xaf, 0xbd, 0x2e, 0x3d, 0x2a, 0xe5, 0xb4, + 0xbb, 0xd3, 0x69, 0xea, 0x2a, 0xe3, 0xd8, 0xce, 0x57, 0x4f, 0x99, 0x1c, + 0x29, 0xc8, 0x24, 0x1e, 0x08, 0xeb, 0xed, 0x45, 0x75, 0x9a, 0x86, 0x87, + 0x0d, 0xdb, 0x79, 0x8a, 0xc6, 0x29, 0x0f, 0x52, 0x06, 0x41, 0xfc, 0x2a, + 0x82, 0x78, 0x62, 0x4d, 0xd8, 0x92, 0xe1, 0x76, 0xe7, 0xf8, 0x57, 0x9a, + 0x1c, 0x59, 0xb4, 0x6b, 0x45, 0xad, 0x4c, 0x9b, 0x3b, 0x59, 0x2f, 0x2e, + 0x56, 0x28, 0xc6, 0x77, 0x1e, 0x4f, 0xf7, 0x45, 0x76, 0xb6, 0xf1, 0x2d, + 0xbc, 0x0b, 0x12, 0x8f, 0x95, 0x06, 0x05, 0x43, 0x63, 0xa7, 0xc3, 0x63, + 0x1e, 0xd8, 0x97, 0x9e, 0xec, 0x7a, 0x9a, 0xb0, 0xee, 0x11, 0x37, 0x31, + 0xc0, 0x15, 0x51, 0x56, 0x30, 0xa9, 0x3e, 0x76, 0x41, 0x78, 0xfc, 0x84, + 0x1f, 0x5a, 0xad, 0x43, 0xb9, 0x77, 0x2c, 0x7b, 0xd2, 0x0e, 0x95, 0x9b, + 0x77, 0x65, 0xc5, 0x59, 0x0b, 0x55, 0xf5, 0x09, 0xbc, 0x8b, 0x09, 0xa5, + 0xce, 0x36, 0xa1, 0x3f, 0xa1, 0xab, 0x15, 0x87, 0xe2, 0xfb, 0xbf, 0xb3, + 0xe9, 0x0d, 0x10, 0x3f, 0x3c, 0xec, 0x17, 0x1e, 0xc3, 0xad, 0x09, 0x5d, + 0x8d, 0xe8, 0x8e, 0x20, 0x9c, 0x9f, 0x6c, 0xd2, 0x52, 0x9a, 0x4a, 0xdc, + 0xe6, 0x0a, 0x50, 0x0b, 0x10, 0x17, 0x96, 0x3d, 0x07, 0xad, 0x25, 0x69, + 0x78, 0x7e, 0xca, 0xe6, 0xef, 0x52, 0x49, 0x2d, 0x6d, 0xc4, 0xed, 0x01, + 0x0e, 0xca, 0xed, 0x81, 0x40, 0x1d, 0x8d, 0x87, 0x84, 0x6c, 0x92, 0xce, + 0x21, 0x37, 0x9d, 0xe6, 0x6c, 0xcb, 0xe2, 0x42, 0x06, 0x7e, 0x95, 0x68, + 0x78, 0x4f, 0x4b, 0xef, 0x1c, 0xa7, 0xeb, 0x21, 0xa6, 0xff, 0x00, 0x68, + 0xeb, 0x83, 0xef, 0x68, 0xe8, 0x7f, 0xdd, 0xb9, 0x14, 0xa7, 0x57, 0xd5, + 0x97, 0xef, 0xe8, 0x32, 0xff, 0x00, 0xc0, 0x2e, 0x15, 0xbf, 0xa5, 0x00, + 0x3b, 0xfe, 0x11, 0x4d, 0x2b, 0xfe, 0x78, 0x31, 0xff, 0x00, 0xb6, 0x86, + 0x8f, 0xf8, 0x45, 0x34, 0xaf, 0xf9, 0xe0, 0xdf, 0xf7, 0xd9, 0xa6, 0x8d, + 0x7a, 0xe5, 0x07, 0xef, 0x34, 0x4d, 0x40, 0x1f, 0xf6, 0x14, 0x37, 0xf5, + 0xa3, 0xfe, 0x12, 0x48, 0x54, 0x7e, 0xfa, 0xca, 0xfe, 0x2f, 0xf7, 0xa0, + 0x3c, 0x7e, 0x54, 0x00, 0xa7, 0xc2, 0x9a, 0x5f, 0xfc, 0xf1, 0x7f, 0xc2, + 0x43, 0x41, 0xf0, 0x9e, 0x98, 0x7a, 0x24, 0xa3, 0xe9, 0x29, 0xa5, 0x5f, + 0x14, 0xe9, 0x7f, 0xc7, 0x2c, 0x91, 0xff, 0x00, 0xbd, 0x13, 0x0f, 0xe9, + 0x53, 0xc5, 0xaf, 0xe9, 0x52, 0x0f, 0x96, 0xfe, 0x1f, 0xf8, 0x13, 0x63, + 0xf9, 0xd0, 0x05, 0x5f, 0xf8, 0x44, 0xec, 0x47, 0xdd, 0x96, 0xe5, 0x7e, + 0x92, 0x9a, 0x3f, 0xe1, 0x17, 0x8d, 0x7f, 0xd5, 0xdf, 0xde, 0xa7, 0xd2, + 0x5a, 0xd4, 0x8e, 0xf6, 0xde, 0x61, 0x98, 0xe7, 0x89, 0xff, 0x00, 0xdd, + 0x70, 0x6a, 0x70, 0xc0, 0xf4, 0x34, 0x01, 0x8a, 0x34, 0x0b, 0x88, 0xff, + 0x00, 0xd4, 0xea, 0xf7, 0x8b, 0xfe, 0xf1, 0x0d, 0x4b, 0xfd, 0x99, 0xac, + 0x20, 0xf9, 0x35, 0x7d, 0xc7, 0xfd, 0xb8, 0x85, 0x6d, 0x51, 0x91, 0x40, + 0x18, 0x9e, 0x57, 0x88, 0x22, 0xfb, 0xb7, 0x16, 0x92, 0x8e, 0xd9, 0x52, + 0x29, 0x05, 0xde, 0xbf, 0x11, 0x1e, 0x65, 0x84, 0x12, 0x8f, 0x54, 0x93, + 0x15, 0xb9, 0x46, 0x05, 0x00, 0x62, 0x7f, 0x6e, 0xdd, 0xc7, 0xff, 0x00, + 0x1f, 0x1a, 0x45, 0xca, 0x8f, 0x54, 0xc3, 0x52, 0x8f, 0x14, 0xe9, 0xca, + 0x76, 0xcc, 0xd2, 0xdb, 0xb7, 0xf7, 0x65, 0x88, 0xad, 0x6d, 0x53, 0x1e, + 0x34, 0x71, 0x86, 0x50, 0x41, 0xec, 0x45, 0x00, 0x55, 0xb7, 0xd6, 0x2c, + 0x2e, 0x3f, 0xd4, 0xde, 0x42, 0xc7, 0xd3, 0x78, 0x15, 0x70, 0x10, 0x7d, + 0xea, 0x84, 0xda, 0x16, 0x9b, 0x71, 0xcc, 0x96, 0x71, 0x67, 0xd5, 0x57, + 0x15, 0x79, 0x10, 0x46, 0x81, 0x54, 0x60, 0x01, 0x80, 0x28, 0x01, 0xf4, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x25, 0x19, 0xe2, 0x96, 0xb2, + 0xaf, 0x64, 0xd5, 0x9a, 0xe5, 0xa3, 0xb3, 0x8a, 0xd9, 0x22, 0x03, 0xfd, + 0x6c, 0xac, 0x49, 0x3f, 0x80, 0xa0, 0x0d, 0x4a, 0x82, 0x7b, 0xcb, 0x7b, + 0x75, 0xcc, 0xd3, 0xc7, 0x18, 0xff, 0x00, 0x69, 0x80, 0xac, 0x93, 0xa2, + 0x5f, 0x5d, 0x73, 0x7d, 0xaa, 0xcc, 0x41, 0x3c, 0xa4, 0x00, 0x20, 0xa9, + 0xad, 0xfc, 0x35, 0xa6, 0x42, 0x77, 0x1b, 0x7f, 0x35, 0x87, 0xf1, 0x4a, + 0xc5, 0xcf, 0xeb, 0x40, 0x09, 0x27, 0x89, 0xb4, 0xd5, 0x6d, 0xb1, 0xc9, + 0x24, 0xed, 0xe9, 0x12, 0x16, 0xa6, 0x8d, 0x6a, 0xf2, 0x60, 0x4d, 0xae, + 0x95, 0x70, 0xe0, 0xf4, 0x32, 0x10, 0x82, 0xb5, 0x62, 0xb7, 0x8a, 0x11, + 0x88, 0xe3, 0x44, 0x1f, 0xec, 0xae, 0x2a, 0x5c, 0x7a, 0xd0, 0x06, 0x11, + 0x6f, 0x11, 0x5c, 0x7d, 0xd8, 0xed, 0x2d, 0x81, 0xfe, 0xf1, 0x2e, 0x45, + 0x20, 0xd2, 0x75, 0x69, 0xb1, 0xf6, 0x8d, 0x65, 0xd4, 0x77, 0x11, 0x46, + 0x17, 0xf5, 0xad, 0xec, 0x51, 0x8a, 0x00, 0xc4, 0x5f, 0x0d, 0x40, 0xff, + 0x00, 0xf1, 0xf1, 0x77, 0x79, 0x3f, 0xfb, 0xf2, 0x91, 0xfc, 0xaa, 0x64, + 0xf0, 0xd6, 0x96, 0x9c, 0x9b, 0x45, 0x73, 0xea, 0xe4, 0x9a, 0xd5, 0xa2, + 0x80, 0x29, 0xc7, 0xa5, 0x58, 0xc5, 0xfe, 0xae, 0xd2, 0x10, 0x7f, 0xdc, + 0x15, 0x61, 0x20, 0x89, 0x3e, 0xec, 0x68, 0xbf, 0x45, 0x02, 0xa4, 0xa2, + 0x80, 0x13, 0x1e, 0x9c, 0x52, 0xe2, 0x8a, 0x5a, 0x00, 0x4c, 0x71, 0x46, + 0x29, 0x68, 0xa0, 0x0c, 0x7f, 0x10, 0xe9, 0x0b, 0xab, 0xe9, 0xcd, 0x16, + 0x00, 0x95, 0x3e, 0x68, 0xdb, 0xd0, 0x8f, 0xf1, 0xaf, 0x32, 0x96, 0x27, + 0x86, 0x56, 0x8a, 0x55, 0x2a, 0xea, 0xdb, 0x4a, 0x9e, 0xa0, 0xd7, 0xb2, + 0x62, 0xb9, 0x4f, 0x17, 0xf8, 0x77, 0xed, 0x8a, 0x6f, 0xed, 0x14, 0x7d, + 0xa1, 0x07, 0xef, 0x14, 0x0f, 0xbe, 0x3f, 0xc6, 0x80, 0x38, 0x3a, 0x29, + 0x7a, 0x1c, 0x1e, 0x29, 0x28, 0x03, 0x5b, 0xc3, 0x5a, 0x90, 0xd3, 0xf5, + 0x10, 0x24, 0x38, 0x86, 0x6f, 0x91, 0x8f, 0xa7, 0xbd, 0x77, 0xbd, 0x46, + 0x45, 0x79, 0x6f, 0xf4, 0xae, 0xbf, 0xc3, 0x1a, 0xe0, 0x9d, 0x16, 0xca, + 0xe5, 0xb1, 0x22, 0x8c, 0x46, 0xc7, 0xa3, 0x0f, 0x4f, 0xad, 0x67, 0x38, + 0xf5, 0x35, 0x84, 0xba, 0x33, 0xa4, 0xa3, 0x14, 0x0f, 0xff, 0x00, 0x5f, + 0xb5, 0x15, 0x99, 0xa8, 0x0c, 0xa9, 0xc8, 0x3c, 0xd5, 0xa8, 0xae, 0x94, + 0x8c, 0x3f, 0x07, 0xd6, 0xaa, 0xd1, 0x8a, 0x69, 0xb4, 0x4c, 0xa2, 0x99, + 0xa0, 0x1d, 0x4f, 0x71, 0x4d, 0x79, 0x91, 0x06, 0x73, 0x93, 0x54, 0x68, + 0xc5, 0x57, 0x3b, 0x27, 0xd9, 0x8f, 0x9a, 0x66, 0x95, 0xb1, 0xd0, 0x76, + 0xa6, 0x0a, 0x28, 0xc5, 0x43, 0xd4, 0xb4, 0xac, 0x14, 0x51, 0x45, 0x03, + 0x0c, 0xd1, 0x46, 0x29, 0x33, 0x40, 0x1c, 0xee, 0xab, 0xbf, 0xed, 0xf2, + 0x19, 0x3b, 0x9e, 0x29, 0xfa, 0x28, 0x7f, 0xb7, 0x8d, 0x99, 0xdb, 0x86, + 0xdd, 0xfe, 0x7e, 0xb5, 0xb7, 0x3d, 0xb4, 0x53, 0x8c, 0x4a, 0x81, 0x8d, + 0x10, 0xc1, 0x15, 0xba, 0xe2, 0x34, 0x0a, 0x3d, 0xa8, 0x2f, 0x9b, 0x4b, + 0x12, 0xd1, 0x49, 0x4b, 0x41, 0x21, 0x45, 0x14, 0x50, 0x20, 0xa1, 0x49, + 0x46, 0xdc, 0x0f, 0x34, 0x51, 0x8a, 0x00, 0xb7, 0x15, 0xca, 0x30, 0xf9, + 0xb8, 0x35, 0x36, 0xf4, 0x3d, 0xc5, 0x67, 0x51, 0xcd, 0x5f, 0x3b, 0x33, + 0x74, 0xd1, 0x79, 0xe7, 0x44, 0x19, 0xce, 0x4f, 0xb5, 0x54, 0x96, 0x63, + 0x29, 0xe7, 0x81, 0xe9, 0x4c, 0xc5, 0x14, 0x9c, 0x9b, 0x1c, 0x60, 0x90, + 0x62, 0x8a, 0x28, 0xc7, 0x07, 0xda, 0xa4, 0xb0, 0xae, 0x13, 0xc5, 0x77, + 0xc2, 0xf3, 0x54, 0x28, 0x8d, 0xba, 0x38, 0x3e, 0x41, 0xf5, 0xef, 0x5d, + 0x27, 0x88, 0xb5, 0x65, 0xd3, 0x6d, 0x0a, 0x46, 0x41, 0xb8, 0x94, 0x6d, + 0x50, 0x3b, 0x7b, 0xd7, 0x06, 0x49, 0x27, 0x24, 0xe5, 0x8f, 0x53, 0xeb, + 0x5a, 0x41, 0x75, 0x32, 0x9c, 0xba, 0x09, 0x45, 0x14, 0x64, 0x63, 0x39, + 0xe2, 0xb4, 0x32, 0x14, 0x02, 0xc4, 0x2a, 0x82, 0x49, 0xe9, 0x5e, 0x97, + 0xe1, 0x6d, 0x24, 0x69, 0x7a, 0x5a, 0x87, 0x50, 0x27, 0x9b, 0xe7, 0x93, + 0x8e, 0x87, 0xb0, 0xae, 0x7b, 0xc1, 0x9a, 0x07, 0xda, 0x25, 0x5d, 0x42, + 0xe5, 0x7f, 0x74, 0x87, 0x31, 0x03, 0xfc, 0x47, 0xd7, 0xe9, 0x5d, 0xd8, + 0x14, 0x00, 0xb4, 0x62, 0x96, 0x8a, 0x00, 0x4c, 0x51, 0x8c, 0xd2, 0xd1, + 0x40, 0x11, 0xbc, 0x68, 0xff, 0x00, 0x79, 0x14, 0xfd, 0x57, 0x35, 0x04, + 0x9a, 0x75, 0x9c, 0xbf, 0xeb, 0x2d, 0x60, 0x6f, 0xac, 0x62, 0xad, 0x51, + 0x40, 0x19, 0x6f, 0xe1, 0xdd, 0x2e, 0x43, 0x93, 0x65, 0x10, 0xff, 0x00, + 0x74, 0x62, 0xa1, 0x6f, 0x0c, 0x59, 0x81, 0x98, 0x65, 0xb9, 0xb7, 0x3e, + 0xb1, 0xcc, 0x7f, 0xad, 0x6d, 0x51, 0x40, 0x18, 0x47, 0x43, 0xd4, 0x62, + 0xc1, 0xb6, 0xd6, 0x67, 0x00, 0x76, 0x95, 0x43, 0x51, 0xe5, 0xf8, 0x86, + 0xdf, 0xa4, 0xb6, 0x97, 0x20, 0x7f, 0x78, 0x6d, 0x26, 0xb7, 0x68, 0xc5, + 0x00, 0x62, 0x9d, 0x5b, 0x52, 0x87, 0x1f, 0x68, 0xd2, 0x24, 0xc7, 0xac, + 0x2e, 0x1a, 0x95, 0x7c, 0x51, 0x62, 0x1b, 0x6c, 0xeb, 0x3d, 0xbb, 0x7a, + 0x4b, 0x19, 0x15, 0xb3, 0x8a, 0x63, 0xc4, 0x92, 0x0c, 0x3a, 0x2b, 0x0f, + 0x42, 0x33, 0x40, 0x15, 0xed, 0xb5, 0x3b, 0x3b, 0xac, 0x79, 0x17, 0x51, + 0x39, 0x3d, 0x83, 0x0c, 0xfe, 0x55, 0x6c, 0x1c, 0x8c, 0xd6, 0x6d, 0xce, + 0x81, 0xa6, 0x5d, 0x64, 0xbd, 0xa4, 0x61, 0xbf, 0xbc, 0x83, 0x69, 0xfc, + 0xc5, 0x55, 0xff, 0x00, 0x84, 0x7a, 0x58, 0x0e, 0x6c, 0x75, 0x3b, 0xa8, + 0x4f, 0xf7, 0x5c, 0xef, 0x1f, 0xad, 0x00, 0x6e, 0x66, 0x8a, 0xc5, 0x8c, + 0xeb, 0xb6, 0xf2, 0x22, 0xc8, 0xb6, 0xd7, 0x69, 0xbb, 0x0c, 0xc0, 0xec, + 0x60, 0x3e, 0x9d, 0x2b, 0x64, 0x74, 0xa0, 0x07, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x52, 0x63, 0x1d, 0x29, 0x68, 0xa0, 0x04, 0xc5, + 0x14, 0xb4, 0x50, 0x02, 0x52, 0xd1, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x98, 0xa5, 0xa2, 0x80, 0x39, 0x2f, 0x13, + 0xf8, 0x57, 0xed, 0x5b, 0xae, 0xec, 0x15, 0x56, 0x7e, 0xaf, 0x1f, 0x40, + 0xdf, 0x4a, 0xe1, 0xa4, 0x46, 0x8a, 0x46, 0x49, 0x15, 0x91, 0xd7, 0xaa, + 0xb0, 0xe4, 0x57, 0xb2, 0xe2, 0xb1, 0x35, 0xdf, 0x0d, 0xda, 0xea, 0xe0, + 0xbe, 0x3c, 0xab, 0x81, 0xca, 0xc8, 0xbd, 0xfe, 0xbe, 0xb4, 0x01, 0xe6, + 0x9e, 0xd4, 0x02, 0x54, 0x86, 0x52, 0x54, 0x8e, 0x84, 0x76, 0xfa, 0x55, + 0xfd, 0x5b, 0x45, 0xbc, 0xd2, 0x65, 0x22, 0xe2, 0x3f, 0xdd, 0x9f, 0xbb, + 0x20, 0xe5, 0x4f, 0xf8, 0x56, 0x7e, 0x3f, 0x2f, 0x7a, 0x00, 0xeb, 0x74, + 0x2f, 0x13, 0xab, 0x85, 0xb7, 0xbf, 0x6d, 0xad, 0x8c, 0x2c, 0xbe, 0xbe, + 0xc6, 0xba, 0x75, 0x60, 0xea, 0x19, 0x48, 0x60, 0x7b, 0x83, 0x5e, 0x59, + 0xdb, 0x18, 0xc8, 0xad, 0x1d, 0x33, 0x5c, 0xbb, 0xd3, 0x4e, 0xd8, 0xdf, + 0xcc, 0x8f, 0xbc, 0x6d, 0xcf, 0xe5, 0x59, 0xb8, 0x2e, 0x86, 0x91, 0x9d, + 0xb7, 0x3d, 0x0a, 0x8a, 0xc4, 0xd3, 0xfc, 0x53, 0x65, 0x75, 0x85, 0x98, + 0x9b, 0x79, 0x0f, 0x66, 0xe4, 0x7e, 0x75, 0xb4, 0x8e, 0xb2, 0x20, 0x64, + 0x60, 0xca, 0x7b, 0xa9, 0xcd, 0x66, 0xd3, 0x46, 0xa9, 0xa6, 0x2d, 0x14, + 0x76, 0xa3, 0x34, 0x0c, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x33, 0x58, 0xed, 0x3c, 0xb6, 0x1a, 0xa3, 0x19, 0x4b, 0x18, 0xdc, 0xf0, + 0x7b, 0x56, 0xc6, 0x2a, 0x1b, 0x8b, 0x68, 0xee, 0x63, 0x29, 0x2a, 0xe4, + 0x76, 0x3e, 0x94, 0x0d, 0x12, 0x46, 0xeb, 0x22, 0x86, 0x46, 0x04, 0x1f, + 0x4a, 0x49, 0x24, 0x8e, 0x24, 0xdd, 0x23, 0x05, 0x51, 0xef, 0x59, 0x67, + 0x48, 0x9e, 0x33, 0xfe, 0x8f, 0x39, 0x03, 0xd3, 0x38, 0xa5, 0x5d, 0x22, + 0x59, 0x1f, 0x75, 0xc4, 0xfb, 0x87, 0xfb, 0x3c, 0xd0, 0x3b, 0x21, 0x2d, + 0x26, 0x9a, 0xfb, 0x52, 0x32, 0xab, 0x32, 0xc2, 0xbd, 0x79, 0xe3, 0xda, + 0xb5, 0xea, 0x38, 0x60, 0x8e, 0x08, 0xc2, 0x46, 0xa1, 0x40, 0xa9, 0x33, + 0x40, 0x98, 0x51, 0x45, 0x19, 0xa0, 0x41, 0x45, 0x14, 0x66, 0x80, 0x0a, + 0x28, 0xa3, 0x34, 0x00, 0x51, 0x9a, 0x4e, 0x95, 0x15, 0xc5, 0xd4, 0x16, + 0x91, 0xef, 0xb8, 0x95, 0x23, 0x5e, 0xdb, 0x8e, 0x33, 0x40, 0x12, 0xf6, + 0xfe, 0x55, 0x9f, 0xac, 0xeb, 0x30, 0x69, 0x71, 0x12, 0xc4, 0x3c, 0xe7, + 0xee, 0x46, 0x3f, 0x99, 0xac, 0x6d, 0x53, 0xc5, 0xc3, 0x0d, 0x1e, 0x9e, + 0x87, 0x3f, 0xf3, 0xd5, 0x87, 0x4f, 0xa0, 0xae, 0x62, 0x69, 0x64, 0x9e, + 0x43, 0x24, 0xae, 0xce, 0xec, 0x72, 0x49, 0xe6, 0xad, 0x43, 0xb9, 0x9c, + 0xa6, 0xba, 0x12, 0x5e, 0xde, 0x4d, 0x7d, 0x72, 0xf3, 0xce, 0xfb, 0x9d, + 0x8f, 0xe5, 0x50, 0x51, 0x4f, 0x8a, 0x29, 0x27, 0x90, 0x47, 0x12, 0x33, + 0xc8, 0xc7, 0x01, 0x54, 0x64, 0xd6, 0xa6, 0x23, 0x2b, 0xa1, 0xf0, 0xcf, + 0x86, 0x64, 0xd4, 0xa4, 0x5b, 0x8b, 0xa5, 0x29, 0x6a, 0xa7, 0x20, 0x63, + 0x05, 0xcf, 0xa5, 0x69, 0xf8, 0x7f, 0xc1, 0xa5, 0x59, 0x6e, 0x35, 0x30, + 0x09, 0x1c, 0x88, 0x07, 0x4f, 0xc6, 0xbb, 0x14, 0x45, 0x55, 0x0a, 0xa0, + 0x28, 0x03, 0x00, 0x0e, 0xd4, 0x00, 0x91, 0x46, 0x91, 0x22, 0xa4, 0x6a, + 0x15, 0x14, 0x60, 0x28, 0x1d, 0x29, 0xf4, 0x62, 0x96, 0x80, 0x0a, 0x28, + 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, + 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x4a, 0x5a, 0x28, 0x01, 0x28, + 0xa5, 0xa2, 0x80, 0x13, 0x1e, 0xf4, 0x52, 0xd1, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x09, 0x46, 0x6a, 0x1b, 0xb9, 0x8d, 0xbd, + 0xa4, 0xb2, 0x85, 0xde, 0x63, 0x42, 0xc1, 0x47, 0x7c, 0x57, 0x9b, 0xdd, + 0xf8, 0xaf, 0x54, 0xb9, 0x72, 0xcb, 0x39, 0x85, 0x4f, 0xf0, 0x27, 0x6f, + 0xad, 0x00, 0x7a, 0x75, 0x15, 0xe5, 0x71, 0xf8, 0x8f, 0x56, 0x8c, 0xe7, + 0xed, 0xb2, 0xe3, 0xdf, 0x9a, 0xd9, 0xd3, 0x7c, 0x63, 0xa8, 0xaf, 0xfa, + 0xfb, 0x6f, 0xb4, 0xc6, 0xbf, 0x79, 0x91, 0x48, 0x61, 0x40, 0x1d, 0xe5, + 0x15, 0x95, 0xa5, 0x6b, 0xd6, 0x5a, 0xaa, 0xfe, 0xe2, 0x4c, 0x49, 0x8e, + 0x63, 0x6e, 0x0d, 0x69, 0xe6, 0x80, 0x1d, 0x49, 0x4b, 0x45, 0x00, 0x43, + 0x34, 0x11, 0xcd, 0x1b, 0x47, 0x22, 0x2b, 0xa3, 0x7d, 0xe5, 0x61, 0x90, + 0x7e, 0xb5, 0xcc, 0xea, 0xbe, 0x08, 0xb7, 0x9f, 0x32, 0x58, 0x3f, 0x91, + 0x27, 0xf7, 0x1b, 0x95, 0x3f, 0xe1, 0x5d, 0x5d, 0x18, 0xa0, 0x0f, 0x28, + 0xd4, 0x74, 0x3b, 0xfd, 0x34, 0x9f, 0xb4, 0xdb, 0xb8, 0x5e, 0xce, 0x9f, + 0x32, 0x9f, 0xc4, 0x74, 0xac, 0xfe, 0x9e, 0xbf, 0x88, 0xaf, 0x66, 0x65, + 0x0c, 0xa4, 0x10, 0x08, 0x3d, 0x8f, 0x4a, 0xc8, 0xbe, 0xf0, 0xc6, 0x97, + 0x7d, 0x92, 0xf6, 0xe1, 0x1f, 0xfb, 0xf1, 0xf0, 0x68, 0x03, 0xcc, 0x6a, + 0x6b, 0x5b, 0xcb, 0x8b, 0x47, 0xdd, 0x6f, 0x3c, 0x91, 0x1f, 0xf6, 0x5b, + 0x83, 0xf8, 0x57, 0x4f, 0x7b, 0xe0, 0x39, 0x54, 0x93, 0x65, 0x72, 0xae, + 0x0f, 0xf0, 0xca, 0x30, 0x47, 0xe3, 0x58, 0xd7, 0x7e, 0x1a, 0xd5, 0x6d, + 0x32, 0x5a, 0xd5, 0x9d, 0x47, 0x74, 0xe6, 0x80, 0x2c, 0x5b, 0xf8, 0xb6, + 0xfe, 0x2c, 0x09, 0x44, 0x73, 0x28, 0xfe, 0xf2, 0xed, 0xad, 0x2b, 0x7f, + 0x19, 0x40, 0x40, 0xfb, 0x45, 0xb4, 0x88, 0x7d, 0x54, 0xe4, 0x57, 0x29, + 0x24, 0x52, 0xc4, 0xdb, 0x64, 0x8e, 0x44, 0x3e, 0x8c, 0xa6, 0xa3, 0xe3, + 0xb7, 0x5a, 0x9e, 0x54, 0x52, 0x9b, 0x47, 0x7d, 0x17, 0x89, 0x74, 0xb9, + 0x7f, 0xe5, 0xb9, 0x43, 0xe8, 0xc8, 0xd5, 0x6a, 0x3d, 0x56, 0xc2, 0x4f, + 0xb9, 0x79, 0x01, 0xfa, 0xc8, 0x05, 0x79, 0xbf, 0xb5, 0x02, 0x97, 0x22, + 0x2b, 0xda, 0x33, 0xd4, 0x56, 0x68, 0xdb, 0xee, 0xc8, 0x87, 0xe8, 0x69, + 0xe0, 0x83, 0xd0, 0x8f, 0xce, 0xbc, 0xb0, 0x1d, 0xbd, 0x09, 0x1f, 0x43, + 0x4f, 0x17, 0x13, 0xaf, 0x49, 0xa4, 0x1f, 0xf0, 0x23, 0x4b, 0x90, 0x7e, + 0xd0, 0xf5, 0x0a, 0x2b, 0xcc, 0xc5, 0xf5, 0xd2, 0xf4, 0xb9, 0x9b, 0xfe, + 0xfb, 0x34, 0xe1, 0xa9, 0x5e, 0x0e, 0x97, 0x32, 0xff, 0x00, 0xdf, 0x46, + 0x97, 0x20, 0x7b, 0x43, 0xd2, 0xa8, 0xaf, 0x35, 0xfe, 0xd3, 0xbe, 0xff, + 0x00, 0x9f, 0xa9, 0x7f, 0xef, 0xaa, 0x5f, 0xed, 0x4b, 0xef, 0xf9, 0xfb, + 0x9b, 0xfe, 0xfa, 0xa3, 0x90, 0x3d, 0xa1, 0xe9, 0x34, 0x95, 0xe6, 0xdf, + 0xda, 0x77, 0xc7, 0xad, 0xd4, 0xbf, 0xf7, 0xd5, 0x21, 0xd4, 0x2f, 0x0f, + 0xfc, 0xbd, 0x4b, 0xff, 0x00, 0x7d, 0x1a, 0x39, 0x03, 0xda, 0x1e, 0x97, + 0xf8, 0xd2, 0x12, 0x07, 0x52, 0x3f, 0x3a, 0xf3, 0x33, 0x7b, 0x72, 0xdf, + 0x7a, 0xe2, 0x6f, 0xfb, 0xec, 0xd3, 0x1a, 0xe2, 0x76, 0xeb, 0x3c, 0x87, + 0xea, 0xc6, 0x8f, 0x66, 0x1e, 0xd0, 0xf4, 0xd6, 0x92, 0x35, 0x1c, 0xba, + 0x81, 0xea, 0x5b, 0x15, 0x5e, 0x4d, 0x4e, 0xca, 0x31, 0xf3, 0xdd, 0xc2, + 0x3d, 0xb7, 0x82, 0x6b, 0xcd, 0xc9, 0x2c, 0x72, 0xc4, 0x9f, 0xa9, 0xa2, + 0x9f, 0x20, 0x7b, 0x43, 0xbe, 0x9b, 0xc4, 0xba, 0x64, 0x5d, 0x2e, 0x37, + 0x1f, 0x44, 0x53, 0x59, 0xf7, 0x1e, 0x32, 0x81, 0x78, 0xb7, 0xb7, 0x91, + 0xcf, 0xab, 0x9d, 0xa2, 0xb9, 0x1f, 0xc7, 0x8a, 0x06, 0x73, 0xf2, 0xfe, + 0x60, 0x53, 0xe4, 0x44, 0xb9, 0xb3, 0x66, 0xeb, 0xc5, 0x7a, 0x84, 0xe0, + 0x88, 0xd9, 0x20, 0x1d, 0xb6, 0x0e, 0x7f, 0x5c, 0xd6, 0x4c, 0xd3, 0x4b, + 0x3b, 0x97, 0x9a, 0x46, 0x77, 0x3d, 0x59, 0x8e, 0x4d, 0x4d, 0x6d, 0xa6, + 0x5f, 0x5d, 0x36, 0x21, 0xb5, 0x95, 0xfd, 0xf6, 0x56, 0xbd, 0xaf, 0x82, + 0xb5, 0x39, 0xf0, 0x65, 0xf2, 0xe0, 0x1d, 0xf7, 0x1c, 0xd5, 0x59, 0x22, + 0x6e, 0xd9, 0xcf, 0x7e, 0xb4, 0xf8, 0x62, 0x92, 0x77, 0x54, 0x85, 0x1a, + 0x47, 0x27, 0x01, 0x51, 0x72, 0x4d, 0x77, 0x76, 0x3e, 0x06, 0xb1, 0x87, + 0x0d, 0x75, 0x23, 0xdc, 0x37, 0xf7, 0x73, 0xb5, 0x7f, 0x4a, 0xdf, 0xb4, + 0xb0, 0xb6, 0xb2, 0x4d, 0xb6, 0xf0, 0x24, 0x43, 0xfd, 0x91, 0xcd, 0x31, + 0x1c, 0x3e, 0x95, 0xe0, 0xab, 0xcb, 0xa2, 0xb2, 0x5e, 0x1f, 0xb3, 0x47, + 0xdd, 0x7a, 0xb1, 0xff, 0x00, 0x0a, 0xec, 0x74, 0xbd, 0x16, 0xcb, 0x4a, + 0x4c, 0x5b, 0x44, 0x03, 0x63, 0x97, 0x3c, 0xb1, 0xfc, 0x6b, 0x44, 0x0a, + 0x31, 0x40, 0x08, 0x07, 0xe9, 0x4e, 0xa4, 0xa5, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x06, 0x90, 0x0a, 0x90, 0x79, 0x15, 0xc8, + 0xeb, 0xde, 0x0f, 0x4b, 0x89, 0x9a, 0xe3, 0x4f, 0x61, 0x1c, 0x8f, 0xc9, + 0x88, 0xf0, 0x1b, 0xe9, 0xe9, 0x5d, 0x79, 0xaa, 0x13, 0x4d, 0x8b, 0xd5, + 0x1f, 0xc2, 0xbd, 0x69, 0xa5, 0x72, 0x64, 0xec, 0x8f, 0x2e, 0xbc, 0xb2, + 0xb9, 0xb1, 0x98, 0xc3, 0x75, 0x0b, 0x42, 0xc3, 0x8e, 0x47, 0x5f, 0xa1, + 0xe9, 0x56, 0xf4, 0xad, 0x6a, 0x7d, 0x2d, 0x5d, 0x63, 0x8d, 0x24, 0x49, + 0x39, 0x2a, 0xf5, 0xe9, 0x77, 0x96, 0x56, 0xf7, 0xf0, 0x18, 0xae, 0x22, + 0x57, 0x42, 0x3a, 0x11, 0xc8, 0xae, 0x07, 0xc4, 0x7e, 0x19, 0x97, 0x4a, + 0x3e, 0x7d, 0xbe, 0x65, 0xb6, 0x39, 0xfa, 0xa7, 0xb1, 0xff, 0x00, 0x1a, + 0x13, 0xb0, 0xda, 0xb9, 0x47, 0x4e, 0xb2, 0xba, 0xd4, 0xef, 0x26, 0x96, + 0xd0, 0xac, 0x72, 0x26, 0x18, 0x90, 0xd8, 0xc6, 0x6b, 0xab, 0xd0, 0x7c, + 0x47, 0x27, 0xda, 0x7f, 0xb3, 0xb5, 0x5f, 0xdd, 0xdc, 0x8f, 0x95, 0x1c, + 0xff, 0x00, 0x17, 0xa0, 0x3e, 0xfe, 0xf5, 0xc6, 0x58, 0xdf, 0xcf, 0xa7, + 0xcf, 0xe6, 0xdb, 0xb6, 0x1b, 0x18, 0x20, 0xf2, 0x0f, 0xe1, 0x4f, 0x96, + 0x5b, 0xad, 0x5e, 0xf9, 0xa4, 0x08, 0x5e, 0x66, 0x00, 0x81, 0x18, 0xe8, + 0x05, 0x1a, 0x58, 0x5a, 0xa6, 0x7a, 0xde, 0x68, 0xae, 0x67, 0xc2, 0x9a, + 0xcc, 0x97, 0x51, 0x9b, 0x1b, 0xc0, 0xcb, 0x73, 0x0a, 0x8c, 0x6e, 0xea, + 0xcb, 0xfe, 0x35, 0xd3, 0x52, 0x28, 0x5a, 0x28, 0xa2, 0x80, 0x0a, 0x4c, + 0x52, 0xd1, 0x40, 0x09, 0x46, 0x29, 0x68, 0xa0, 0x08, 0x25, 0xb6, 0x86, + 0x61, 0x89, 0x61, 0x47, 0x1e, 0x8c, 0xa0, 0xd5, 0x0b, 0x8f, 0x0e, 0x69, + 0x77, 0x1c, 0x3d, 0x94, 0x63, 0x3f, 0xdd, 0xf9, 0x7f, 0x95, 0x6a, 0xd2, + 0x1a, 0x00, 0xe6, 0x67, 0xf0, 0x46, 0x96, 0xc0, 0xb2, 0x99, 0xa1, 0x1f, + 0xec, 0xbf, 0x03, 0xf3, 0x15, 0xc5, 0x6b, 0x42, 0xc2, 0xca, 0xe7, 0xc8, + 0xb0, 0x9e, 0x4b, 0x80, 0xa7, 0xe6, 0x72, 0x00, 0x03, 0xd8, 0x57, 0x43, + 0xe3, 0x4f, 0x10, 0xc9, 0x2c, 0xad, 0xa7, 0x5a, 0x49, 0xb6, 0x35, 0x38, + 0x99, 0xd4, 0xf2, 0x7d, 0xab, 0x8e, 0x5b, 0x74, 0x03, 0x04, 0x93, 0x40, + 0x0c, 0xfb, 0x4f, 0xaa, 0xfe, 0xb4, 0xbf, 0x69, 0x1f, 0xdd, 0x35, 0x28, + 0x86, 0x31, 0xfc, 0x22, 0x9c, 0x11, 0x47, 0xf0, 0x8f, 0xca, 0x80, 0x21, + 0xfb, 0x50, 0xfe, 0xe9, 0xa3, 0xed, 0x23, 0xfb, 0xa6, 0xa6, 0xda, 0xa3, + 0xb0, 0xa5, 0xc0, 0xf4, 0x14, 0x01, 0x0f, 0xda, 0x47, 0xf7, 0x1a, 0x93, + 0xed, 0x23, 0xfb, 0x8d, 0x53, 0xe3, 0xd8, 0x51, 0x81, 0xe9, 0x40, 0x10, + 0xfd, 0xa1, 0x7f, 0xba, 0x69, 0x3e, 0xd2, 0x3f, 0xba, 0x6a, 0x7c, 0x0f, + 0x4a, 0x69, 0x55, 0x3d, 0x54, 0x7e, 0x54, 0x01, 0x0f, 0xda, 0x47, 0xf7, + 0x7f, 0x5a, 0x3e, 0xd4, 0x3f, 0xbb, 0x52, 0x98, 0xd0, 0xf5, 0x51, 0x51, + 0xb5, 0xaa, 0x9f, 0xba, 0x48, 0xa0, 0x09, 0xec, 0xa5, 0xb6, 0x92, 0xe5, + 0x16, 0xee, 0x47, 0x8a, 0x12, 0x70, 0x5d, 0x46, 0x48, 0xae, 0xde, 0xcb, + 0xc1, 0x7a, 0x6c, 0xf0, 0xc7, 0x32, 0xdd, 0xcd, 0x3a, 0xb8, 0x0c, 0x19, + 0x08, 0x00, 0x8a, 0xf3, 0xc7, 0x85, 0xd3, 0xb6, 0x47, 0xb5, 0x6f, 0xf8, + 0x5b, 0xc4, 0x72, 0x68, 0xb7, 0x22, 0x29, 0x99, 0x9a, 0xce, 0x43, 0xf3, + 0xae, 0x7e, 0xe1, 0xfe, 0xf0, 0xfe, 0xa2, 0x80, 0x3b, 0x78, 0x3c, 0x23, + 0xa4, 0x43, 0xcf, 0xd9, 0x77, 0x9f, 0x57, 0x62, 0x6b, 0x46, 0x1d, 0x2e, + 0xca, 0xdf, 0xfd, 0x4d, 0xac, 0x4b, 0xf4, 0x5a, 0xb1, 0x14, 0x89, 0x2c, + 0x6b, 0x24, 0x6c, 0x19, 0x18, 0x64, 0x11, 0xd0, 0x8a, 0x7d, 0x00, 0x22, + 0xa8, 0x51, 0x80, 0x00, 0xfa, 0x0a, 0x5a, 0x29, 0x68, 0x01, 0x31, 0x45, + 0x2d, 0x14, 0x00, 0x94, 0xb4, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x08, 0x7a, 0x56, 0x3c, 0x8c, + 0x4c, 0x8c, 0x4f, 0x5c, 0xd6, 0xc1, 0xa8, 0x5a, 0xd6, 0x26, 0x7d, 0xc5, + 0x79, 0xaa, 0x8c, 0x92, 0x33, 0x9c, 0x5c, 0xb6, 0x1d, 0x09, 0x2d, 0x0a, + 0x93, 0xd7, 0x14, 0xb2, 0x46, 0xb2, 0xc6, 0xc8, 0xea, 0x19, 0x58, 0x60, + 0x83, 0xde, 0x9c, 0x00, 0x50, 0x00, 0xe9, 0x4b, 0x52, 0x5a, 0x3c, 0xcf, + 0xc5, 0x3a, 0x1b, 0x69, 0x17, 0xbe, 0x64, 0x40, 0x9b, 0x69, 0x8f, 0xc8, + 0x7f, 0xbb, 0xea, 0x2a, 0xa6, 0x89, 0xa8, 0x0d, 0x36, 0xfd, 0x67, 0x65, + 0x2d, 0x19, 0x05, 0x5b, 0x1d, 0x79, 0xef, 0x5e, 0x93, 0xab, 0xe9, 0xf1, + 0xea, 0x76, 0x12, 0x5b, 0x4a, 0x06, 0x18, 0x7c, 0xa7, 0xd1, 0xbb, 0x57, + 0x95, 0xdd, 0x5b, 0xc9, 0x69, 0x73, 0x24, 0x13, 0xa9, 0x59, 0x11, 0x8a, + 0x91, 0xee, 0x3a, 0x7e, 0x14, 0x2d, 0x01, 0xab, 0xa3, 0x5f, 0x58, 0xd6, + 0x62, 0x7d, 0x5a, 0xde, 0xee, 0xc0, 0x9f, 0x32, 0x21, 0xf3, 0x31, 0x04, + 0x64, 0xfd, 0x2b, 0xbb, 0xd1, 0xb5, 0x38, 0xb5, 0x6b, 0x04, 0xb8, 0x8c, + 0xe1, 0x8f, 0x0e, 0x99, 0xe5, 0x5b, 0xb8, 0xaf, 0x2f, 0xd3, 0xe3, 0x86, + 0x5b, 0xe8, 0x63, 0x9c, 0xe2, 0x26, 0x60, 0x1a, 0xba, 0xab, 0x9b, 0x7f, + 0xf8, 0x47, 0x08, 0xbf, 0xb0, 0x2c, 0x23, 0x04, 0x2c, 0xd0, 0xb3, 0x7c, + 0xae, 0x3e, 0xa6, 0xaa, 0xcd, 0xea, 0x4d, 0xd4, 0x74, 0x3b, 0x6a, 0x5a, + 0xce, 0xd2, 0x75, 0x6b, 0x6d, 0x56, 0xdc, 0x4b, 0x6d, 0x26, 0x71, 0xf7, + 0x90, 0xfd, 0xe5, 0x3e, 0xe2, 0xb4, 0x07, 0x4a, 0x92, 0xc5, 0xa2, 0x92, + 0x96, 0x80, 0x0a, 0x28, 0xa4, 0xa0, 0x05, 0xac, 0x5f, 0x14, 0xea, 0xbf, + 0xd9, 0x5a, 0x53, 0x32, 0x36, 0x26, 0x94, 0xec, 0x8c, 0x7b, 0x9e, 0xff, + 0x00, 0x85, 0x6c, 0x1f, 0x4a, 0xf3, 0xcf, 0x1d, 0xde, 0x9b, 0x8d, 0x64, + 0x40, 0xa7, 0xe4, 0xb7, 0x4c, 0x1f, 0xa9, 0xeb, 0x40, 0x1c, 0xf3, 0x12, + 0x49, 0x24, 0xe4, 0x93, 0x92, 0x69, 0x28, 0xa4, 0xa0, 0x02, 0x96, 0x92, + 0x8a, 0x00, 0x5a, 0x29, 0x28, 0xa0, 0x05, 0xa2, 0x8f, 0x6f, 0xca, 0x8f, + 0x5e, 0x3a, 0x50, 0x01, 0x49, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0xb5, 0x14, 0xb0, 0xee, 0x19, 0x5f, 0xbc, 0x3f, 0x5a, 0x92, 0x8a, 0x00, + 0xec, 0x7e, 0x1f, 0x6b, 0x26, 0x58, 0x5f, 0x4d, 0x98, 0xfc, 0xf1, 0x8d, + 0xd1, 0x7b, 0x8e, 0xe2, 0xbb, 0x61, 0xd0, 0x57, 0x90, 0x69, 0x57, 0x6d, + 0xa6, 0xeb, 0x16, 0xf7, 0x6b, 0xc0, 0x57, 0x01, 0xc7, 0xb1, 0xeb, 0x5e, + 0xba, 0xac, 0x19, 0x43, 0x29, 0xc8, 0x23, 0x22, 0x80, 0x1f, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x02, 0x51, 0x4b, + 0x45, 0x00, 0x25, 0x2d, 0x14, 0x50, 0x02, 0x57, 0x1d, 0xe3, 0x9d, 0x1b, + 0xcc, 0x4f, 0xed, 0x28, 0x57, 0xe6, 0x41, 0xb6, 0x50, 0x07, 0x51, 0xeb, + 0x5d, 0x95, 0x42, 0xf1, 0xac, 0xa8, 0xc8, 0xea, 0x19, 0x58, 0x10, 0x41, + 0x19, 0x04, 0x1e, 0xa2, 0x80, 0x3c, 0x77, 0xa1, 0xab, 0x12, 0x5e, 0xdc, + 0x4b, 0x6e, 0xb0, 0x49, 0x3b, 0xb4, 0x4b, 0xd1, 0x49, 0xad, 0x4f, 0x13, + 0xe8, 0x0f, 0xa4, 0x5d, 0x19, 0x62, 0x52, 0x6d, 0x64, 0x3f, 0x2b, 0x0f, + 0xe1, 0x3e, 0x86, 0xb0, 0xe8, 0x15, 0x8d, 0xdd, 0x17, 0x47, 0xd4, 0x5a, + 0x15, 0xbf, 0xb3, 0xb8, 0x58, 0x5c, 0xe7, 0x6f, 0x24, 0x6e, 0xf6, 0x35, + 0xb1, 0x69, 0xe3, 0x49, 0x6d, 0x65, 0x36, 0xfa, 0xad, 0xb9, 0x59, 0x10, + 0xe0, 0xba, 0x7f, 0x85, 0x73, 0x7a, 0x6e, 0xb7, 0x77, 0xa7, 0x21, 0x8e, + 0x16, 0x47, 0x8b, 0x39, 0xd9, 0x20, 0xc8, 0xcf, 0xaf, 0x5a, 0xab, 0x79, + 0x75, 0x2d, 0xed, 0xd3, 0xcf, 0x31, 0x05, 0xdb, 0xd3, 0xb7, 0xd2, 0xa9, + 0xda, 0xc2, 0x57, 0xbe, 0xa7, 0xa5, 0xdb, 0x78, 0x8f, 0x4b, 0xb9, 0x1f, + 0x25, 0xe4, 0x60, 0xfa, 0x31, 0xc5, 0x5d, 0x17, 0xd6, 0xcc, 0x32, 0x2e, + 0x23, 0x23, 0xfd, 0xe1, 0x5c, 0x6e, 0x99, 0x6f, 0xa2, 0x4d, 0xa7, 0x26, + 0xf3, 0x08, 0x7d, 0xa3, 0xcc, 0x2e, 0xdb, 0x58, 0x1e, 0xe7, 0x26, 0xb9, + 0x8b, 0xb5, 0x89, 0x2e, 0xa5, 0x5b, 0x76, 0x2d, 0x08, 0x63, 0xb0, 0xfa, + 0x8a, 0x1a, 0xb2, 0x05, 0x2b, 0xb3, 0xd5, 0x65, 0xd5, 0xac, 0x21, 0x1f, + 0xbc, 0xbc, 0x85, 0x7e, 0xae, 0x2b, 0x32, 0xef, 0xc6, 0x3a, 0x5d, 0xb0, + 0x3b, 0x65, 0x69, 0x4f, 0x40, 0x23, 0x15, 0xcf, 0xe8, 0x96, 0x3a, 0x44, + 0xba, 0x6a, 0x3c, 0xcd, 0x1b, 0xcc, 0x47, 0xef, 0x3c, 0xc6, 0xc1, 0x53, + 0xfd, 0x2b, 0x07, 0x53, 0x8e, 0xde, 0x3b, 0xf9, 0x92, 0xd1, 0xf7, 0x40, + 0x0f, 0xca, 0x41, 0xcf, 0xe5, 0xed, 0xcd, 0x26, 0x81, 0x4a, 0xee, 0xc7, + 0x4d, 0x7f, 0xe2, 0x8d, 0x56, 0xea, 0xca, 0x49, 0xec, 0xad, 0x44, 0x16, + 0xe0, 0x1f, 0xde, 0x39, 0xf9, 0xab, 0x92, 0x96, 0x69, 0x2e, 0x64, 0x69, + 0xa6, 0x73, 0x24, 0x8f, 0xcb, 0x33, 0x75, 0x26, 0xaf, 0xcd, 0xae, 0xca, + 0x74, 0x36, 0xd3, 0xde, 0x24, 0x2b, 0x80, 0xa1, 0xc1, 0xc1, 0xc6, 0x7d, + 0x2b, 0x34, 0x70, 0x00, 0xa1, 0xd8, 0x6a, 0xfd, 0x42, 0x8a, 0x28, 0xfc, + 0x69, 0x0c, 0x50, 0x09, 0x38, 0x03, 0x27, 0x38, 0x03, 0xde, 0x9d, 0x24, + 0x4f, 0x0c, 0x85, 0x25, 0x46, 0x47, 0x5e, 0x08, 0x61, 0x82, 0x2b, 0xa2, + 0xf0, 0x3e, 0x98, 0xb7, 0x9a, 0x83, 0xdc, 0xc8, 0x01, 0x48, 0x30, 0x54, + 0x1f, 0xef, 0x1f, 0xfe, 0xb0, 0x35, 0x9f, 0xe2, 0xaf, 0xf9, 0x18, 0xaf, + 0x07, 0xfb, 0x74, 0x01, 0x95, 0x45, 0x14, 0x50, 0x06, 0xf7, 0x83, 0x2d, + 0xa2, 0xb9, 0xd7, 0x00, 0x99, 0x12, 0x45, 0x58, 0xc9, 0xc3, 0x0c, 0x8c, + 0xd6, 0x87, 0x8f, 0xac, 0xe0, 0x83, 0xec, 0xd3, 0x45, 0x12, 0xc6, 0xce, + 0x4a, 0xb6, 0xd1, 0x8c, 0xd5, 0x3f, 0x01, 0x7f, 0xc8, 0x78, 0xff, 0x00, + 0xd7, 0x26, 0xad, 0x3f, 0x88, 0x9f, 0xea, 0xac, 0xff, 0x00, 0xde, 0x6f, + 0xe4, 0x28, 0x03, 0x8a, 0xa2, 0x96, 0x92, 0x80, 0x0a, 0x71, 0x52, 0xa7, + 0x0c, 0x08, 0x3e, 0x84, 0x74, 0xa1, 0x3f, 0xd6, 0x2f, 0xfb, 0xc2, 0xba, + 0xff, 0x00, 0x1c, 0xe9, 0x0a, 0x89, 0x1e, 0xa5, 0x0a, 0x81, 0xd1, 0x25, + 0x03, 0xf4, 0x3f, 0xd3, 0xf2, 0xa0, 0x0e, 0x3e, 0x92, 0x8f, 0xc3, 0x1e, + 0xd4, 0x50, 0x00, 0x40, 0x65, 0x22, 0xbd, 0x67, 0x45, 0x97, 0xce, 0xd2, + 0x2d, 0x24, 0x3d, 0xe2, 0x51, 0xf9, 0x71, 0x5e, 0x4e, 0x7a, 0x7e, 0x15, + 0xe9, 0xfe, 0x14, 0x6d, 0xde, 0x1d, 0xb4, 0xf6, 0x52, 0x3f, 0x53, 0x40, + 0x1b, 0x14, 0x52, 0x52, 0xd0, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x04, 0x17, 0x16, 0xf1, 0x5c, 0xc0, 0xf1, 0x4c, 0x81, 0xe3, 0x71, + 0x86, 0x56, 0xe9, 0x5c, 0x06, 0xbf, 0xe1, 0x49, 0xf4, 0xf2, 0xd7, 0x16, + 0x80, 0xcd, 0x6d, 0xe8, 0x07, 0xcd, 0x1f, 0xe1, 0xdc, 0x7d, 0x2b, 0xd1, + 0xa9, 0xa4, 0x03, 0xc1, 0x1f, 0x5a, 0x00, 0xf1, 0xae, 0x9f, 0x85, 0x15, + 0xe9, 0x3a, 0xb7, 0x85, 0x6c, 0x35, 0x22, 0x64, 0x11, 0x98, 0x66, 0x3f, + 0xc6, 0x9f, 0xd4, 0x57, 0x2f, 0x7f, 0xe0, 0xad, 0x46, 0xdc, 0x93, 0x6f, + 0xb2, 0xe2, 0x3e, 0xa3, 0x07, 0x04, 0x7e, 0x06, 0x80, 0x39, 0xda, 0x2a, + 0xe4, 0xda, 0x55, 0xf4, 0x07, 0x12, 0xda, 0xcc, 0x3d, 0x72, 0x95, 0x55, + 0xa2, 0x90, 0x75, 0x89, 0xc7, 0xe0, 0x68, 0x01, 0x28, 0xa7, 0x08, 0xdf, + 0xb2, 0x39, 0xff, 0x00, 0x80, 0x9a, 0x92, 0x3b, 0x2b, 0x99, 0x7f, 0xd5, + 0xdb, 0xca, 0xc7, 0xd9, 0x4d, 0x00, 0x56, 0x9b, 0xee, 0x1f, 0xa8, 0xa7, + 0x76, 0x15, 0xa2, 0x3c, 0x37, 0xaa, 0xcd, 0x13, 0x32, 0xda, 0x48, 0xa0, + 0x72, 0x77, 0x71, 0xc5, 0x67, 0x90, 0x41, 0xda, 0x7a, 0x8e, 0xb4, 0x00, + 0x94, 0x51, 0x41, 0xa0, 0x0f, 0x47, 0xf0, 0x35, 0xb8, 0x87, 0x40, 0x56, + 0xc6, 0x0c, 0xb2, 0x33, 0x9f, 0xd0, 0x7f, 0x4a, 0xe3, 0x7c, 0x55, 0xff, + 0x00, 0x23, 0x15, 0xe7, 0xfb, 0xff, 0x00, 0xd2, 0xbb, 0xcf, 0x0b, 0x00, + 0x3c, 0x39, 0x67, 0x8f, 0xee, 0x1f, 0xe6, 0x6b, 0x83, 0xf1, 0x57, 0xfc, + 0x8c, 0x57, 0x9f, 0xef, 0xff, 0x00, 0x4a, 0x00, 0xca, 0xa2, 0x8a, 0x28, + 0x03, 0xa2, 0xf0, 0x17, 0xfc, 0x87, 0xcf, 0xfd, 0x72, 0x6a, 0xd3, 0xf8, + 0x8b, 0xfe, 0xaa, 0xcb, 0xfd, 0xe6, 0xfe, 0x42, 0xb3, 0x3c, 0x05, 0xff, + 0x00, 0x21, 0xe3, 0xff, 0x00, 0x5c, 0x9a, 0xb4, 0xbe, 0x22, 0xff, 0x00, + 0xab, 0xb3, 0xfa, 0xb7, 0xf2, 0x14, 0x01, 0xc5, 0xd1, 0x45, 0x14, 0x00, + 0xa9, 0xf7, 0xc7, 0xfb, 0xc2, 0xbd, 0x53, 0x5c, 0xb7, 0x17, 0x5a, 0x15, + 0xc4, 0x24, 0x67, 0x31, 0x64, 0x7e, 0x03, 0x3f, 0xd2, 0xbc, 0xad, 0x3f, + 0xd6, 0x2f, 0xfb, 0xc2, 0xbd, 0x7e, 0x60, 0x1a, 0xd1, 0xc1, 0xe8, 0x63, + 0x23, 0xf4, 0xa0, 0x0f, 0x20, 0x1c, 0x8a, 0x4a, 0x73, 0x8c, 0x48, 0xe3, + 0xd1, 0x88, 0xfd, 0x69, 0xb4, 0x00, 0x76, 0xaf, 0x4e, 0xf0, 0x8f, 0xfc, + 0x8b, 0x76, 0xbf, 0xee, 0x9f, 0xe6, 0x6b, 0xcc, 0x7b, 0x57, 0xa7, 0x78, + 0x47, 0xfe, 0x45, 0xbb, 0x5f, 0xf7, 0x4f, 0xf3, 0x34, 0x01, 0xb5, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x49, + 0x4b, 0x45, 0x00, 0x14, 0x98, 0xa5, 0xa2, 0x80, 0x1a, 0x46, 0x47, 0x22, + 0x9a, 0x62, 0x8c, 0xf5, 0x8d, 0x4f, 0xe0, 0x2a, 0x4a, 0x28, 0x02, 0x21, + 0x0c, 0x63, 0xa4, 0x6a, 0x3f, 0xe0, 0x22, 0x9e, 0x14, 0x0e, 0x80, 0x52, + 0xd2, 0xd0, 0x04, 0x17, 0x5f, 0xf1, 0xe9, 0x37, 0xfb, 0x87, 0xf9, 0x57, + 0x90, 0x37, 0xde, 0x3f, 0x53, 0x5e, 0xbf, 0x75, 0xff, 0x00, 0x1e, 0x93, + 0x7f, 0xb8, 0x7f, 0x95, 0x79, 0x03, 0xfd, 0xe3, 0xf5, 0x34, 0x00, 0xda, + 0x0d, 0x14, 0x1a, 0x00, 0xf5, 0x2f, 0x0b, 0xff, 0x00, 0xc8, 0xbb, 0x65, + 0xfe, 0xe7, 0xf5, 0x35, 0xc1, 0x78, 0xab, 0xfe, 0x46, 0x2b, 0xcf, 0xf7, + 0xff, 0x00, 0xa5, 0x77, 0xbe, 0x17, 0xff, 0x00, 0x91, 0x76, 0xcb, 0xfd, + 0xcf, 0xea, 0x6b, 0x82, 0xf1, 0x57, 0xfc, 0x8c, 0x57, 0x9f, 0xef, 0xff, + 0x00, 0x4a, 0x00, 0xca, 0xa2, 0x8a, 0x28, 0x03, 0xa2, 0xf0, 0x17, 0xfc, + 0x87, 0x8f, 0xfd, 0x72, 0x6a, 0xd2, 0xf8, 0x8b, 0xfe, 0xae, 0xcf, 0xea, + 0xdf, 0xc8, 0x56, 0x6f, 0x80, 0xbf, 0xe4, 0x3c, 0x7f, 0xeb, 0x93, 0x56, + 0x97, 0xc4, 0x5f, 0xf5, 0x76, 0x7f, 0x56, 0xfe, 0x42, 0x80, 0x38, 0xba, + 0x28, 0xa2, 0x80, 0x15, 0x3f, 0xd6, 0x2f, 0xfb, 0xc2, 0xbd, 0x86, 0x4f, + 0xf8, 0xf6, 0x6f, 0xf7, 0x0f, 0xf2, 0xaf, 0x1e, 0x4f, 0xf5, 0x8b, 0xfe, + 0xf0, 0xaf, 0x61, 0x93, 0xfe, 0x3d, 0x9b, 0xfd, 0xc3, 0xfc, 0xa8, 0x03, + 0xc8, 0x25, 0xff, 0x00, 0x5d, 0x27, 0xfb, 0xcd, 0xfc, 0xe9, 0x94, 0xf9, + 0xbf, 0xd7, 0x49, 0xfe, 0xf3, 0x7f, 0x3a, 0x65, 0x00, 0x1d, 0xab, 0xd3, + 0xbc, 0x23, 0xff, 0x00, 0x22, 0xdd, 0xaf, 0xfb, 0xa7, 0xf9, 0x9a, 0xf3, + 0x1e, 0xd5, 0xe9, 0xde, 0x11, 0xff, 0x00, 0x91, 0x6e, 0xd7, 0xfd, 0xd3, + 0xfc, 0xcd, 0x00, 0x6d, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x49, 0x4b, 0x40, 0x05, 0x14, 0x94, 0x50, 0x04, 0x37, 0x5f, 0xf1, + 0xe9, 0x37, 0xfb, 0x87, 0xf9, 0x57, 0x90, 0x3f, 0xde, 0x3f, 0x53, 0x5e, + 0xbf, 0x77, 0xff, 0x00, 0x1e, 0xb3, 0x7f, 0xb8, 0xdf, 0xca, 0xbc, 0x81, + 0xfe, 0xf1, 0xfa, 0x9a, 0x00, 0x6d, 0x06, 0x8a, 0x28, 0x03, 0xd4, 0xbc, + 0x2f, 0xff, 0x00, 0x22, 0xf5, 0x9f, 0xfb, 0x9f, 0xd4, 0xd7, 0x05, 0xe2, + 0xaf, 0xf9, 0x18, 0xaf, 0x3f, 0xdf, 0xfe, 0x95, 0xdc, 0xf8, 0x6a, 0xe2, + 0x34, 0xf0, 0xfd, 0x98, 0x2d, 0xc8, 0x4f, 0xea, 0x6b, 0x85, 0xf1, 0x43, + 0x07, 0xf1, 0x0d, 0xd9, 0x1d, 0x0b, 0xd1, 0x61, 0x5d, 0x19, 0x74, 0x0e, + 0xb4, 0x51, 0x40, 0xce, 0x8f, 0xc0, 0x5f, 0xf2, 0x1e, 0x3f, 0xf5, 0xc9, + 0xab, 0x4b, 0xe2, 0x2f, 0xfa, 0xbb, 0x2f, 0xf7, 0x9b, 0xf9, 0x0a, 0xca, + 0xf0, 0x4c, 0xa2, 0x2d, 0x6c, 0xb1, 0x19, 0xfd, 0xd3, 0x55, 0xff, 0x00, + 0x1f, 0x4e, 0x27, 0x8e, 0xd3, 0x00, 0x8c, 0x33, 0x7f, 0x21, 0x4e, 0xce, + 0xd7, 0x17, 0x32, 0xbd, 0x8e, 0x42, 0x8a, 0x28, 0xa4, 0x31, 0x53, 0xfd, + 0x62, 0xff, 0x00, 0xbc, 0x2b, 0xd8, 0x64, 0xff, 0x00, 0x8f, 0x66, 0xff, + 0x00, 0x70, 0xff, 0x00, 0x2a, 0xf1, 0xf4, 0xfb, 0xe3, 0xea, 0x3f, 0x9d, + 0x7a, 0xcb, 0x5d, 0xc4, 0x6d, 0xd8, 0x64, 0x8f, 0x90, 0xff, 0x00, 0x2a, + 0x2d, 0x71, 0x36, 0x96, 0xe7, 0x93, 0xcd, 0xfe, 0xba, 0x4f, 0xf7, 0x9b, + 0xf9, 0xd3, 0x29, 0xf2, 0xf3, 0x34, 0x9f, 0xef, 0x1f, 0xe7, 0x4c, 0xa0, + 0x61, 0xda, 0xbd, 0x3f, 0xc2, 0x3f, 0xf2, 0x2e, 0x5a, 0xff, 0x00, 0xba, + 0x7f, 0x99, 0xaf, 0x30, 0xed, 0x5e, 0x9f, 0xe1, 0x1f, 0xf9, 0x17, 0x2d, + 0x7f, 0xdd, 0x3f, 0xcc, 0xd0, 0x06, 0xc5, 0x2d, 0x25, 0x14, 0x00, 0xb4, + 0x52, 0x52, 0xd0, 0x01, 0x45, 0x25, 0x2d, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x49, 0x40, + 0x05, 0x14, 0xc7, 0x95, 0x50, 0x7c, 0xcc, 0x05, 0x56, 0x92, 0xf9, 0x47, + 0x11, 0x8c, 0xfb, 0xd3, 0x49, 0xb2, 0x5c, 0x92, 0x2e, 0x1a, 0x6b, 0x48, + 0xa9, 0xf7, 0x98, 0x0a, 0xcd, 0x92, 0xea, 0x57, 0xfe, 0x2d, 0xbf, 0x4a, + 0x88, 0xe4, 0xf7, 0x27, 0xeb, 0x56, 0xa9, 0xb3, 0x37, 0x59, 0x74, 0x34, + 0x5e, 0xf6, 0x25, 0xe0, 0x1d, 0xc7, 0xda, 0xa1, 0x6b, 0xf3, 0xfc, 0x2b, + 0x8a, 0xa9, 0x45, 0x52, 0x82, 0x33, 0x75, 0x64, 0x3e, 0xea, 0xf2, 0x56, + 0xb5, 0x97, 0xa0, 0xf9, 0x0f, 0xf2, 0xaf, 0x30, 0x6f, 0xbc, 0x79, 0xee, + 0x6b, 0xd1, 0xee, 0x7f, 0xe3, 0xde, 0x5f, 0xf7, 0x4d, 0x79, 0xbb, 0x75, + 0x3f, 0x5a, 0x99, 0xa4, 0x8d, 0x29, 0x49, 0xbd, 0xc4, 0xa2, 0x8a, 0x2b, + 0x33, 0x63, 0xbf, 0xd0, 0x7f, 0xe4, 0x0b, 0x6b, 0x9f, 0xee, 0x7f, 0xec, + 0xc6, 0xb9, 0x0f, 0x10, 0x7f, 0xc8, 0x6e, 0xe7, 0xfd, 0xfa, 0xeb, 0xf4, + 0x2f, 0xf9, 0x02, 0xda, 0xff, 0x00, 0xb9, 0xfd, 0x4d, 0x72, 0x3e, 0x20, + 0xff, 0x00, 0x90, 0xd5, 0xd7, 0xfb, 0xf5, 0xac, 0xbe, 0x13, 0x0a, 0x7f, + 0x13, 0x33, 0xa8, 0xa2, 0x8e, 0xf5, 0x91, 0xb9, 0xb5, 0xe1, 0x1f, 0xf9, + 0x0b, 0xff, 0x00, 0xdb, 0x36, 0xab, 0xde, 0x34, 0xfb, 0x96, 0xdf, 0x56, + 0xfe, 0x42, 0xa8, 0xf8, 0x47, 0xfe, 0x42, 0xff, 0x00, 0xf6, 0xcd, 0xaa, + 0xf7, 0x8d, 0x3e, 0xed, 0xb7, 0xd5, 0xbf, 0x90, 0xad, 0x17, 0xc2, 0x62, + 0xfe, 0x33, 0x97, 0xa2, 0x8a, 0x2b, 0x33, 0x61, 0xc9, 0xf7, 0x87, 0xd4, + 0x57, 0xa4, 0x1f, 0xf5, 0x07, 0xfd, 0xc3, 0xfc, 0xab, 0xcd, 0xd7, 0xef, + 0x0f, 0xa8, 0xaf, 0x48, 0x3f, 0xea, 0x1b, 0xfd, 0xc3, 0xfc, 0xab, 0x58, + 0x18, 0xd5, 0xe8, 0x79, 0xc4, 0x9f, 0xeb, 0x5f, 0xfd, 0xe3, 0xfc, 0xe9, + 0x94, 0xf9, 0x3f, 0xd6, 0xbf, 0xfb, 0xc7, 0xf9, 0xd3, 0x2b, 0x36, 0x6a, + 0xb6, 0x0a, 0xef, 0xfc, 0x33, 0x34, 0x89, 0xa1, 0xdb, 0x85, 0x62, 0x00, + 0x07, 0x8f, 0xc4, 0xd7, 0x01, 0x5d, 0xe7, 0x87, 0x3f, 0xe4, 0x0b, 0x6f, + 0xf4, 0x3f, 0xcc, 0xd5, 0x41, 0x5d, 0x99, 0xd5, 0x6d, 0x2d, 0x0d, 0xa4, + 0xbd, 0x94, 0x01, 0x9c, 0x1a, 0x91, 0x6f, 0xc7, 0xf1, 0x29, 0xaa, 0x63, + 0xa5, 0x15, 0xa7, 0x22, 0x66, 0x3e, 0xd2, 0x48, 0xd2, 0x4b, 0xa8, 0x9f, + 0xf8, 0xb1, 0xf5, 0xa9, 0x43, 0x02, 0x32, 0x08, 0x35, 0x91, 0xfc, 0xe9, + 0x43, 0x32, 0x9c, 0xab, 0x10, 0x7d, 0x73, 0x52, 0xe9, 0xf6, 0x2d, 0x56, + 0x7d, 0x4d, 0x8a, 0x2b, 0x32, 0x3b, 0xc9, 0x54, 0xf2, 0x43, 0x0f, 0x71, + 0x56, 0xa3, 0xbd, 0x8d, 0xf8, 0x3f, 0x29, 0xa8, 0x71, 0x68, 0xd1, 0x54, + 0x8b, 0x2c, 0xd2, 0xd3, 0x15, 0x83, 0x0c, 0x83, 0x9a, 0x75, 0x49, 0xa0, + 0xb4, 0x52, 0x52, 0xd0, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x49, 0x9a, 0x33, 0x55, 0x6e, 0x6e, 0x84, + 0x43, 0x6a, 0x9c, 0xb1, 0xfd, 0x28, 0x4a, 0xe2, 0x6d, 0x25, 0xa9, 0x3c, + 0x92, 0xac, 0x63, 0x2c, 0x71, 0x54, 0xa5, 0xbd, 0x66, 0x38, 0x8f, 0x81, + 0x55, 0xdd, 0xda, 0x43, 0x97, 0x39, 0xa4, 0xad, 0x94, 0x12, 0xdc, 0xe7, + 0x95, 0x46, 0xf6, 0x06, 0x25, 0xcf, 0xcc, 0x49, 0xa2, 0x8a, 0x2a, 0xcc, + 0xb7, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa4, 0x66, 0x0a, 0xa5, 0x89, + 0x00, 0x0e, 0xb9, 0x3d, 0x28, 0x02, 0xae, 0xa9, 0x3a, 0xdb, 0x69, 0xb3, + 0xca, 0xe7, 0x18, 0x5e, 0x2b, 0xcf, 0x7a, 0xf2, 0x7b, 0xd6, 0xdf, 0x89, + 0x75, 0x95, 0xbe, 0x93, 0xec, 0xd6, 0xed, 0x98, 0x11, 0xb9, 0x6f, 0xef, + 0x9a, 0xc3, 0xef, 0x58, 0xcd, 0xdd, 0x9d, 0x34, 0xa3, 0x64, 0x14, 0x7a, + 0xd1, 0x57, 0x34, 0x8b, 0x17, 0xbf, 0xd4, 0x23, 0x85, 0x46, 0x57, 0x70, + 0x2d, 0xec, 0xb5, 0x2b, 0x53, 0x46, 0xec, 0xae, 0x76, 0xfa, 0x42, 0x18, + 0xf4, 0xab, 0x64, 0x23, 0x04, 0x46, 0x0f, 0xe7, 0xcd, 0x71, 0xbe, 0x20, + 0xff, 0x00, 0x90, 0xd5, 0xd7, 0xfb, 0xf5, 0xde, 0x05, 0x0a, 0x00, 0x1f, + 0x74, 0x0c, 0x0a, 0xe0, 0xfc, 0x41, 0xff, 0x00, 0x21, 0xab, 0xaf, 0xf7, + 0xeb, 0x49, 0xec, 0x61, 0x49, 0xde, 0x4c, 0xce, 0xa2, 0x8a, 0x2b, 0x23, + 0xa0, 0xda, 0xf0, 0x8f, 0xfc, 0x85, 0xbf, 0xed, 0x99, 0xab, 0xde, 0x34, + 0xfb, 0xb6, 0xdf, 0x56, 0xfe, 0x42, 0xa8, 0xf8, 0x4b, 0xfe, 0x42, 0xff, + 0x00, 0xf6, 0xcc, 0xd5, 0xdf, 0x1a, 0x7d, 0xdb, 0x5f, 0xab, 0x7f, 0x2a, + 0xd1, 0x7c, 0x26, 0x2f, 0xe3, 0x39, 0x8a, 0x28, 0xa2, 0xb3, 0x36, 0x1c, + 0xbf, 0x78, 0x7e, 0x15, 0xe9, 0x40, 0x66, 0x3c, 0x7b, 0x62, 0xbc, 0xd5, + 0x7e, 0xf8, 0xfa, 0x8a, 0xf4, 0xa5, 0xfb, 0xa2, 0xb5, 0xa6, 0x61, 0x5b, + 0xa1, 0xe7, 0x17, 0x48, 0x63, 0xba, 0x95, 0x08, 0xc1, 0x57, 0x35, 0x15, + 0x6d, 0xf8, 0xaa, 0xc0, 0xdb, 0x6a, 0x1f, 0x68, 0x51, 0xfb, 0xa9, 0xb9, + 0x27, 0xd1, 0xab, 0x17, 0xf9, 0xfa, 0x56, 0x6d, 0x59, 0x9b, 0x45, 0xdd, + 0x21, 0x2b, 0xaf, 0xf0, 0x7d, 0xe0, 0x96, 0xc6, 0x4b, 0x66, 0x38, 0x78, + 0x9b, 0x23, 0xfd, 0xd3, 0x5c, 0x85, 0x5b, 0xd3, 0x2f, 0xdf, 0x4e, 0xbc, + 0x49, 0xd3, 0xa0, 0xe1, 0xd7, 0xb1, 0x53, 0xd6, 0x9c, 0x5d, 0x99, 0x33, + 0x8f, 0x32, 0xb1, 0xe8, 0x63, 0x90, 0x33, 0xde, 0x8a, 0x82, 0xd2, 0xea, + 0x1b, 0xcb, 0x75, 0x9a, 0x17, 0x0c, 0x84, 0x77, 0x3c, 0x83, 0xef, 0x53, + 0xd6, 0xe7, 0x26, 0xdb, 0x85, 0x14, 0x51, 0x40, 0x05, 0x06, 0x8a, 0x28, + 0x10, 0xe8, 0xe5, 0x78, 0xc8, 0x2a, 0x48, 0xab, 0x50, 0xdf, 0x03, 0xf2, + 0xc8, 0x31, 0xee, 0x2a, 0x9d, 0x15, 0x2e, 0x29, 0x97, 0x19, 0xb8, 0x9a, + 0xea, 0xc1, 0x86, 0x41, 0xc8, 0xa7, 0x56, 0x54, 0x33, 0x49, 0x11, 0xe0, + 0xf1, 0xe9, 0x5a, 0x10, 0x4c, 0xb2, 0xae, 0x54, 0xfe, 0x15, 0x94, 0xa3, + 0x63, 0xa2, 0x13, 0x52, 0x26, 0xa2, 0x92, 0x96, 0xa4, 0xd0, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, + 0x8a, 0x00, 0x28, 0xa2, 0x92, 0x80, 0x20, 0xb9, 0x9b, 0xc9, 0x8c, 0x9f, + 0xe2, 0x3d, 0x2b, 0x34, 0x92, 0x58, 0xb1, 0xe4, 0x9e, 0xb5, 0x62, 0xfd, + 0xb3, 0x36, 0xde, 0xc0, 0x55, 0x7a, 0xda, 0x0a, 0xca, 0xe7, 0x2d, 0x49, + 0x5d, 0xd8, 0x28, 0xa2, 0x8a, 0xb3, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xa2, + 0x8a, 0x28, 0x03, 0x37, 0x59, 0xd6, 0x62, 0xd2, 0x91, 0x41, 0x53, 0x24, + 0xcf, 0xf7, 0x56, 0xb9, 0x3d, 0x43, 0x5a, 0xbb, 0xd4, 0x32, 0xb2, 0x49, + 0xb2, 0x3e, 0xd1, 0xa7, 0x03, 0xf1, 0xf5, 0xae, 0x97, 0x5e, 0xd0, 0x8e, + 0xa9, 0x22, 0xcb, 0x1c, 0x81, 0x24, 0x55, 0xdb, 0xf3, 0x56, 0x23, 0x78, + 0x62, 0xe9, 0x4f, 0xcd, 0x24, 0x63, 0xf0, 0xac, 0xe4, 0xa4, 0xde, 0x86, + 0xd0, 0x71, 0x4b, 0x53, 0x1b, 0xf0, 0xc5, 0x27, 0x6a, 0xdd, 0x4f, 0x0c, + 0x39, 0x3f, 0xbc, 0x9d, 0x40, 0xf6, 0x19, 0xab, 0xb6, 0xfe, 0x1f, 0xb4, + 0x84, 0x82, 0xfb, 0xa5, 0x23, 0xb3, 0x74, 0xa1, 0x52, 0x93, 0x34, 0x75, + 0x22, 0x8e, 0x7e, 0xc3, 0x4f, 0x9f, 0x50, 0x90, 0x24, 0x11, 0x92, 0x3b, + 0xb9, 0xe8, 0x05, 0x76, 0xba, 0x3e, 0x95, 0x16, 0x95, 0x6d, 0xe5, 0xa6, + 0x1a, 0x56, 0xfb, 0xef, 0x8e, 0x4d, 0x49, 0x6e, 0xe9, 0x12, 0x84, 0x11, + 0xaa, 0x28, 0xe8, 0x54, 0x62, 0xad, 0x03, 0xb8, 0x64, 0x1e, 0xb5, 0x6a, + 0x1c, 0xa6, 0x33, 0xa8, 0xe4, 0x29, 0xe9, 0x5c, 0x0e, 0xbe, 0x73, 0xad, + 0xdc, 0xe3, 0xfb, 0xf5, 0xde, 0x3b, 0x2c, 0x68, 0x5e, 0x43, 0xb5, 0x14, + 0x65, 0x8f, 0xa0, 0xaf, 0x39, 0xbd, 0x9f, 0xed, 0x57, 0x92, 0xcf, 0x8e, + 0x24, 0x72, 0xc3, 0xf1, 0xa8, 0xa8, 0x55, 0x1d, 0xc8, 0x68, 0xa2, 0x96, + 0xb2, 0x3a, 0x0d, 0xcf, 0x07, 0xa1, 0x3a, 0xab, 0xb7, 0x65, 0x4a, 0xb9, + 0xe3, 0x45, 0x26, 0x2b, 0x66, 0x1d, 0x32, 0xc3, 0xf4, 0xa9, 0x3c, 0x1f, + 0x64, 0xd1, 0xdb, 0x49, 0x72, 0xc3, 0x06, 0x53, 0xf2, 0xfd, 0x2a, 0xef, + 0x89, 0x2c, 0xcd, 0xee, 0x95, 0x26, 0xc0, 0x0c, 0x91, 0x7c, 0xeb, 0xef, + 0xc7, 0x23, 0xf2, 0xad, 0x52, 0xf7, 0x4e, 0x77, 0x25, 0xce, 0x70, 0xb4, + 0x52, 0xd2, 0x56, 0x47, 0x40, 0xa0, 0xe1, 0x81, 0xf4, 0xaf, 0x4a, 0x89, + 0x83, 0x44, 0x8c, 0x3a, 0x11, 0x9a, 0xf3, 0x4a, 0xef, 0x3c, 0x3f, 0x74, + 0x2e, 0xf4, 0x98, 0x9b, 0x39, 0x74, 0x1b, 0x5b, 0xd8, 0xd6, 0x94, 0xcc, + 0x6b, 0x2d, 0x0b, 0x57, 0x96, 0x90, 0xde, 0xdb, 0x34, 0x13, 0x28, 0x65, + 0x6f, 0xcc, 0x1f, 0x5a, 0xe2, 0xf5, 0x4d, 0x12, 0xe3, 0x4e, 0x76, 0x24, + 0x19, 0x21, 0x3d, 0x1d, 0x46, 0x7f, 0x3a, 0xee, 0xf3, 0x51, 0x4d, 0x2a, + 0x80, 0x53, 0x86, 0xf5, 0x07, 0xa5, 0x68, 0xe1, 0xcc, 0x65, 0x19, 0xb8, + 0x9e, 0x71, 0x45, 0x75, 0xf7, 0x7a, 0x2d, 0x9d, 0xd3, 0x16, 0xf2, 0xfc, + 0xb6, 0x3f, 0xdd, 0xe2, 0xb3, 0xe4, 0xf0, 0xc1, 0xff, 0x00, 0x96, 0x53, + 0xff, 0x00, 0xdf, 0x42, 0xa1, 0xd2, 0x92, 0x36, 0x55, 0x53, 0x32, 0x2c, + 0xb5, 0x0b, 0x8d, 0x3e, 0x4d, 0xf6, 0xf2, 0x94, 0x24, 0xe7, 0x1d, 0x41, + 0xfc, 0x2b, 0xac, 0xd0, 0xf5, 0xd5, 0xd4, 0xd8, 0xc3, 0x2a, 0x2c, 0x77, + 0x00, 0x64, 0x63, 0xa3, 0x56, 0x21, 0xf0, 0xcd, 0xc1, 0x38, 0x59, 0x50, + 0xd6, 0xb6, 0x85, 0xa0, 0x36, 0x9f, 0x71, 0xf6, 0x89, 0x9c, 0x34, 0x80, + 0x61, 0x54, 0x76, 0xa2, 0x2a, 0x49, 0x93, 0x37, 0x06, 0x8d, 0xd1, 0xd2, + 0x96, 0x8a, 0x2b, 0x43, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa7, 0x43, 0x2b, 0x44, 0xe1, 0x87, 0xe3, 0x4d, 0xa2, 0x86, 0xae, + 0x09, 0xd9, 0xdc, 0xd7, 0x47, 0x0e, 0xa1, 0x87, 0x43, 0x4f, 0xaa, 0x9a, + 0x7b, 0x13, 0x11, 0x53, 0xd8, 0xd5, 0xba, 0xe7, 0x6a, 0xce, 0xc7, 0x64, + 0x5d, 0xd5, 0xc2, 0x8a, 0x28, 0xa4, 0x50, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x52, 0x52, 0xd1, 0x40, 0x19, + 0xd7, 0xe8, 0x44, 0xa1, 0xbb, 0x1a, 0xad, 0x5a, 0x77, 0x11, 0x09, 0x63, + 0x2b, 0xdf, 0xb5, 0x66, 0x32, 0xb2, 0x36, 0xd7, 0x18, 0x22, 0xb6, 0x83, + 0xba, 0xb1, 0xcb, 0x52, 0x36, 0x77, 0x0a, 0x28, 0xa2, 0xac, 0xcc, 0x28, + 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x29, 0x19, 0x43, 0x8c, 0x11, + 0x4b, 0x45, 0x30, 0x29, 0xca, 0x85, 0x1b, 0x1d, 0xa9, 0x95, 0x6a, 0x75, + 0xdd, 0x19, 0xf5, 0x02, 0xaa, 0x8f, 0x7a, 0xd1, 0x3b, 0x80, 0xb4, 0xe5, + 0xb8, 0x5b, 0x74, 0x2f, 0x23, 0x62, 0x30, 0x32, 0x49, 0xa6, 0xd5, 0x4d, + 0x52, 0x09, 0x2e, 0x2c, 0x25, 0x8a, 0x1f, 0xbe, 0x47, 0x03, 0xd6, 0x89, + 0x6c, 0x0b, 0x73, 0x17, 0x5a, 0xf1, 0x13, 0xdf, 0x2b, 0x43, 0x6e, 0x3c, + 0xb8, 0x0f, 0x7e, 0xee, 0x3d, 0xfd, 0x2b, 0x14, 0xfd, 0x38, 0xa9, 0x5a, + 0xd2, 0xe1, 0x5b, 0x06, 0xde, 0x5c, 0xfb, 0x29, 0xa9, 0xe0, 0xd1, 0xef, + 0x67, 0x23, 0x10, 0xb0, 0x07, 0xfb, 0xdc, 0x57, 0x1d, 0xa4, 0xd9, 0xd6, + 0xb9, 0x62, 0x8a, 0x55, 0xa7, 0xa2, 0x68, 0xf2, 0x6a, 0x73, 0x86, 0x6f, + 0x96, 0xdd, 0x4e, 0x5d, 0xcf, 0x7f, 0x61, 0x5a, 0x36, 0x5e, 0x1b, 0x8e, + 0x3c, 0x3d, 0xcb, 0xef, 0x3f, 0xdd, 0x5e, 0x9f, 0x8d, 0x6e, 0x41, 0xb6, + 0x0d, 0xab, 0x1a, 0x85, 0x51, 0xc6, 0x07, 0x40, 0x2b, 0x48, 0xd2, 0x7b, + 0xb2, 0x27, 0x55, 0x5a, 0xc8, 0xb7, 0x12, 0x24, 0x51, 0x2c, 0x71, 0x8c, + 0x2a, 0x8c, 0x01, 0xe8, 0x29, 0xe7, 0x91, 0xcd, 0x20, 0x21, 0x86, 0x47, + 0xa5, 0x2d, 0x59, 0xce, 0x72, 0x1e, 0x20, 0xd0, 0x5a, 0xdd, 0xda, 0xea, + 0xd9, 0x73, 0x13, 0x1c, 0xba, 0x0f, 0xe0, 0x3f, 0xe1, 0x58, 0x15, 0xe8, + 0x73, 0xc9, 0xb8, 0x94, 0x1d, 0x07, 0x51, 0x58, 0xf7, 0xfa, 0x15, 0xbd, + 0xd1, 0x2f, 0x17, 0xee, 0x64, 0x3d, 0x48, 0x1c, 0x1a, 0x99, 0x53, 0xbe, + 0xa8, 0xde, 0x15, 0x6d, 0xa3, 0x39, 0x4a, 0xbd, 0xa4, 0x6a, 0xb3, 0x69, + 0x73, 0x6f, 0x8c, 0x6e, 0x8d, 0x87, 0xcc, 0x84, 0xe3, 0x77, 0xbf, 0xd6, + 0xa4, 0xb8, 0xd0, 0xaf, 0x20, 0x24, 0x84, 0x12, 0x8e, 0xc5, 0x6a, 0xa2, + 0xd8, 0xdd, 0x33, 0x6d, 0x5b, 0x79, 0x09, 0xee, 0x76, 0xd6, 0x5c, 0xb2, + 0x46, 0xad, 0xc5, 0xa3, 0xb7, 0x83, 0x52, 0x86, 0xfa, 0xd8, 0x4b, 0x6e, + 0x4e, 0xd3, 0xc1, 0x07, 0xaa, 0xd2, 0xd6, 0x6e, 0x81, 0x63, 0x2d, 0x9d, + 0xab, 0x79, 0xc3, 0x6b, 0x48, 0xdb, 0xb6, 0xff, 0x00, 0x76, 0xb4, 0xeb, + 0xaa, 0x1b, 0x6a, 0x72, 0x49, 0x24, 0xf4, 0x12, 0x94, 0x02, 0xcc, 0x00, + 0xeb, 0xda, 0x8a, 0x9a, 0xd9, 0x3a, 0xb1, 0xaa, 0xbd, 0x84, 0x49, 0x1c, + 0x4a, 0x83, 0xa7, 0x35, 0x20, 0xa0, 0x51, 0x59, 0xde, 0xe0, 0x14, 0x51, + 0x45, 0x20, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, + 0xa9, 0x20, 0x84, 0xcc, 0xe0, 0x01, 0xc7, 0x73, 0x43, 0x76, 0x1a, 0x4d, + 0xbb, 0x22, 0xdd, 0x8a, 0x95, 0x8b, 0x71, 0xfe, 0x23, 0x56, 0xe9, 0xaa, + 0xa1, 0x40, 0x03, 0xa0, 0xa7, 0x57, 0x3b, 0x77, 0x67, 0x64, 0x55, 0x95, + 0x82, 0x8a, 0x28, 0xa4, 0x30, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, + 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x01, 0x0d, 0x41, 0x71, + 0x6e, 0xb3, 0x0f, 0x46, 0xec, 0x6a, 0x7a, 0x28, 0xd8, 0x4d, 0x27, 0xb9, + 0x93, 0x2c, 0x2d, 0x13, 0x61, 0xf8, 0x1e, 0xbe, 0xb4, 0xca, 0xd6, 0x64, + 0x57, 0x18, 0x60, 0x08, 0xaa, 0xb2, 0xd8, 0xf7, 0x88, 0xe3, 0xd8, 0xd6, + 0xb1, 0x9a, 0xea, 0x61, 0x2a, 0x4d, 0x6a, 0x8a, 0x74, 0x53, 0x9e, 0x37, + 0x8c, 0x9d, 0xca, 0x45, 0x34, 0x56, 0x97, 0x31, 0xb3, 0x5b, 0x85, 0x14, + 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x0d, 0x7f, 0xba, 0x7e, 0x95, 0x4b, + 0xb9, 0xab, 0xad, 0xf7, 0x4f, 0xd0, 0xd5, 0x2a, 0xd2, 0x20, 0x2d, 0x25, + 0x2d, 0x15, 0x40, 0x5a, 0x45, 0xdd, 0x00, 0x1e, 0xa2, 0xaa, 0x91, 0x82, + 0x47, 0xbd, 0x5b, 0x8b, 0xfd, 0x52, 0xd5, 0x59, 0x06, 0x25, 0x6f, 0xad, + 0x4c, 0x77, 0x01, 0x28, 0xa2, 0x8a, 0xa0, 0x2c, 0x5b, 0x1c, 0xc7, 0x8e, + 0xe2, 0xa4, 0x73, 0xb5, 0x09, 0xf6, 0xa8, 0x6d, 0x8e, 0x37, 0x0a, 0x7d, + 0xc1, 0xc4, 0x47, 0xde, 0xb3, 0x6b, 0x50, 0x2a, 0x9e, 0xb9, 0xf5, 0xa5, + 0xa4, 0xa5, 0xab, 0x00, 0xab, 0x30, 0x2e, 0x23, 0xcf, 0x72, 0x2a, 0xb5, + 0x5c, 0x51, 0x84, 0xc7, 0xa0, 0xa5, 0x20, 0x29, 0x9e, 0x49, 0xfa, 0xd1, + 0x41, 0xea, 0x7e, 0xb4, 0x55, 0x20, 0x0a, 0xb5, 0x6f, 0xfe, 0xa8, 0x55, + 0x5a, 0xb3, 0x07, 0xfa, 0xa1, 0x53, 0x2d, 0x80, 0x96, 0x8a, 0x28, 0xac, + 0xc0, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, 0x29, 0x3e, 0x95, + 0x2c, 0x76, 0xf2, 0x48, 0x78, 0x04, 0x0f, 0x53, 0x57, 0x21, 0xb3, 0x44, + 0x39, 0x7f, 0x99, 0xaa, 0x5c, 0x92, 0x2e, 0x34, 0xdb, 0x2a, 0xc3, 0x6c, + 0xf2, 0x9c, 0xf4, 0x5f, 0x5a, 0xd0, 0x8e, 0x35, 0x8d, 0x70, 0xa3, 0x14, + 0xe0, 0x29, 0x6b, 0x27, 0x26, 0xce, 0x88, 0xc1, 0x44, 0x5a, 0x28, 0xa2, + 0xa4, 0xb0, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, + 0x28, 0x01, 0x28, 0xa5, 0xa2, 0x80, 0x18, 0x54, 0x30, 0xc1, 0x19, 0xa8, + 0x64, 0xb3, 0x8d, 0xfe, 0xee, 0x54, 0xfb, 0x55, 0x8a, 0x29, 0xdd, 0xa1, + 0x38, 0xa7, 0xb9, 0x9d, 0x25, 0x94, 0x8b, 0x9d, 0xbc, 0x8a, 0x85, 0xa3, + 0x75, 0xfb, 0xca, 0x41, 0xfa, 0x56, 0xb9, 0xa4, 0x20, 0x1e, 0xbc, 0xfe, + 0x15, 0x4a, 0x6c, 0xcd, 0xd2, 0x4c, 0xc7, 0xa2, 0xb4, 0xda, 0xda, 0x27, + 0xea, 0x83, 0xf0, 0xa8, 0x9a, 0xc1, 0x0f, 0x46, 0x22, 0xaf, 0xda, 0x23, + 0x37, 0x49, 0xad, 0x8c, 0xf6, 0xfb, 0xa7, 0xe9, 0x54, 0xeb, 0x59, 0xec, + 0x24, 0xda, 0x76, 0xb0, 0x39, 0x15, 0x41, 0xb4, 0xfb, 0x94, 0xc9, 0xf2, + 0x89, 0xfa, 0x10, 0x6b, 0x48, 0xcd, 0x10, 0xe1, 0x24, 0x41, 0x45, 0x3c, + 0xc3, 0x2a, 0xf0, 0xd1, 0xb0, 0xfc, 0x29, 0x84, 0x11, 0xd4, 0x62, 0xb4, + 0xba, 0xee, 0x4d, 0x99, 0x6e, 0x2f, 0xf5, 0x4b, 0xf4, 0xaa, 0xd3, 0x7f, + 0xad, 0x6a, 0xb3, 0x17, 0xfa, 0xa1, 0x55, 0xa6, 0x3f, 0xbe, 0x6f, 0xad, + 0x4c, 0x5e, 0xa0, 0x36, 0x8a, 0x28, 0xab, 0x02, 0x5b, 0x5f, 0xbc, 0x7e, + 0x94, 0xfb, 0xaf, 0xb8, 0x3e, 0xb4, 0xcb, 0x5f, 0xbc, 0x7e, 0x94, 0xfb, + 0xaf, 0xb8, 0x3f, 0xde, 0xa8, 0xea, 0x05, 0x7a, 0x28, 0xa2, 0xac, 0x02, + 0xae, 0xf6, 0x1f, 0x4a, 0xa3, 0x9a, 0xba, 0x39, 0x51, 0xf4, 0xa8, 0x90, + 0x14, 0xdb, 0xef, 0x1f, 0xad, 0x14, 0x87, 0xef, 0x1f, 0xad, 0x28, 0x56, + 0x3d, 0x14, 0x9f, 0xc0, 0xd5, 0x5d, 0x06, 0xa2, 0x55, 0xa8, 0x3f, 0xd4, + 0x8a, 0x85, 0x6d, 0x67, 0x7f, 0xbb, 0x0b, 0xfd, 0x71, 0x57, 0xed, 0xec, + 0xa6, 0x11, 0x80, 0xca, 0x17, 0xea, 0x6a, 0x25, 0x25, 0x61, 0xa8, 0xb7, + 0xd0, 0x8e, 0x8a, 0xb6, 0xb6, 0x0d, 0xd5, 0x9c, 0x7e, 0x02, 0xa5, 0x5b, + 0x28, 0x87, 0x52, 0x58, 0xd6, 0x5c, 0xe8, 0xb5, 0x4e, 0x4c, 0xcf, 0x3c, + 0x53, 0xd2, 0x19, 0x24, 0xfb, 0xaa, 0x7f, 0x1a, 0xd1, 0x58, 0x23, 0x4e, + 0x42, 0x01, 0x52, 0x54, 0xba, 0x85, 0xaa, 0x3d, 0xca, 0x09, 0x62, 0xe7, + 0xef, 0xb0, 0x1f, 0x4a, 0xb3, 0x1d, 0xac, 0x71, 0xf4, 0x19, 0x3e, 0xf5, + 0x38, 0xa2, 0xa5, 0xc9, 0xb3, 0x45, 0x08, 0xa0, 0x14, 0x51, 0x4b, 0x52, + 0x58, 0x94, 0xb4, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x09, 0x45, 0x2d, 0x14, 0x00, 0x94, 0x52, + 0xd1, 0x40, 0x09, 0x45, 0x2d, 0x14, 0x00, 0x86, 0x9a, 0x63, 0x56, 0xea, + 0xa0, 0xd3, 0xa8, 0xa0, 0x56, 0x23, 0x30, 0xc6, 0x47, 0xdc, 0x1f, 0x95, + 0x46, 0xf6, 0x36, 0xef, 0xc9, 0x8c, 0x55, 0x9a, 0x4a, 0x77, 0x61, 0xca, + 0x8a, 0x87, 0x4d, 0xb6, 0x3f, 0xc0, 0x7f, 0x3a, 0x69, 0xd2, 0xed, 0xcf, + 0xf0, 0x91, 0xf8, 0xd5, 0xda, 0x29, 0xf3, 0x3e, 0xe2, 0xe4, 0x89, 0x4d, + 0x34, 0xd8, 0x50, 0xe4, 0x6e, 0xfc, 0xe9, 0x5f, 0x4e, 0x86, 0x41, 0x83, + 0xbb, 0xf3, 0xab, 0x74, 0x51, 0xcc, 0xc3, 0x92, 0x25, 0x0f, 0xec, 0x98, + 0x3f, 0xdb, 0xfc, 0xe9, 0xc3, 0x4b, 0xb7, 0x1f, 0xc2, 0x4f, 0xd4, 0xd5, + 0xda, 0x28, 0xe7, 0x97, 0x70, 0xe4, 0x89, 0x54, 0x69, 0xd6, 0xe3, 0xfe, + 0x59, 0xe7, 0xf1, 0xa9, 0x05, 0xbc, 0x43, 0xf8, 0x07, 0xe5, 0x53, 0x51, + 0x4b, 0x99, 0x87, 0x2a, 0x22, 0x10, 0x44, 0x3a, 0x46, 0xbf, 0x95, 0x3c, + 0x28, 0x1d, 0x00, 0x14, 0xea, 0x29, 0x6a, 0x3b, 0x20, 0xa2, 0x96, 0x8a, + 0x06, 0x25, 0x14, 0xb4, 0x50, 0x02, 0x51, 0x4b, 0x45, 0x00, 0x25, 0x2d, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, + 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x07, 0xff, 0xd9 +}; +unsigned int octo_jpg_len = 14817; + +#endif diff --git a/lib/libesp32/rtsp/JPEGSamples.h b/lib/libesp32/rtsp/JPEGSamples.h new file mode 100755 index 000000000..038b19f7f --- /dev/null +++ b/lib/libesp32/rtsp/JPEGSamples.h @@ -0,0 +1,11 @@ +#pragma once + +#ifndef ARDUINO_ARCH_ESP32 +#define INCLUDE_SIMDATA +#endif + +#ifdef INCLUDE_SIMDATA +extern unsigned const char capture_jpg[]; +extern unsigned const char octo_jpg[]; +extern unsigned int octo_jpg_len, capture_jpg_len; +#endif diff --git a/lib/libesp32/rtsp/OV2640.cpp b/lib/libesp32/rtsp/OV2640.cpp new file mode 100755 index 000000000..9c1908b99 --- /dev/null +++ b/lib/libesp32/rtsp/OV2640.cpp @@ -0,0 +1,193 @@ +#include "OV2640.h" + +#define TAG "OV2640" + +// definitions appropriate for the ESP32-CAM devboard (and most clones) +camera_config_t esp32cam_config{ + + .pin_pwdn = -1, // FIXME: on the TTGO T-Journal I think this is GPIO 0 + .pin_reset = 15, + + .pin_xclk = 27, + + .pin_sscb_sda = 25, + .pin_sscb_scl = 23, + + .pin_d7 = 19, + .pin_d6 = 36, + .pin_d5 = 18, + .pin_d4 = 39, + .pin_d3 = 5, + .pin_d2 = 34, + .pin_d1 = 35, + .pin_d0 = 17, + .pin_vsync = 22, + .pin_href = 26, + .pin_pclk = 21, + .xclk_freq_hz = 20000000, + .ledc_timer = LEDC_TIMER_0, + .ledc_channel = LEDC_CHANNEL_0, + .pixel_format = PIXFORMAT_JPEG, + // .frame_size = FRAMESIZE_UXGA, // needs 234K of framebuffer space + // .frame_size = FRAMESIZE_SXGA, // needs 160K for framebuffer + // .frame_size = FRAMESIZE_XGA, // needs 96K or even smaller FRAMESIZE_SVGA - can work if using only 1 fb + .frame_size = FRAMESIZE_SVGA, + .jpeg_quality = 12, //0-63 lower numbers are higher quality + .fb_count = 2 // if more than one i2s runs in continous mode. Use only with jpeg +}; + +camera_config_t esp32cam_aithinker_config{ + + .pin_pwdn = 32, + .pin_reset = -1, + + .pin_xclk = 0, + + .pin_sscb_sda = 26, + .pin_sscb_scl = 27, + + // Note: LED GPIO is apparently 4 not sure where that goes + // per https://github.com/donny681/ESP32_CAMERA_QR/blob/e4ef44549876457cd841f33a0892c82a71f35358/main/led.c + .pin_d7 = 35, + .pin_d6 = 34, + .pin_d5 = 39, + .pin_d4 = 36, + .pin_d3 = 21, + .pin_d2 = 19, + .pin_d1 = 18, + .pin_d0 = 5, + .pin_vsync = 25, + .pin_href = 23, + .pin_pclk = 22, + .xclk_freq_hz = 20000000, + .ledc_timer = LEDC_TIMER_1, + .ledc_channel = LEDC_CHANNEL_1, + .pixel_format = PIXFORMAT_JPEG, + // .frame_size = FRAMESIZE_UXGA, // needs 234K of framebuffer space + // .frame_size = FRAMESIZE_SXGA, // needs 160K for framebuffer + // .frame_size = FRAMESIZE_XGA, // needs 96K or even smaller FRAMESIZE_SVGA - can work if using only 1 fb + .frame_size = FRAMESIZE_SVGA, + .jpeg_quality = 12, //0-63 lower numbers are higher quality + .fb_count = 2 // if more than one i2s runs in continous mode. Use only with jpeg +}; + +camera_config_t esp32cam_ttgo_t_config{ + + .pin_pwdn = 26, + .pin_reset = -1, + + .pin_xclk = 32, + + .pin_sscb_sda = 13, + .pin_sscb_scl = 12, + + .pin_d7 = 39, + .pin_d6 = 36, + .pin_d5 = 23, + .pin_d4 = 18, + .pin_d3 = 15, + .pin_d2 = 4, + .pin_d1 = 14, + .pin_d0 = 5, + .pin_vsync = 27, + .pin_href = 25, + .pin_pclk = 19, + .xclk_freq_hz = 20000000, + .ledc_timer = LEDC_TIMER_0, + .ledc_channel = LEDC_CHANNEL_0, + .pixel_format = PIXFORMAT_JPEG, + .frame_size = FRAMESIZE_SVGA, + .jpeg_quality = 12, //0-63 lower numbers are higher quality + .fb_count = 2 // if more than one i2s runs in continous mode. Use only with jpeg +}; + +void OV2640::run(void) +{ + if (fb) + //return the frame buffer back to the driver for reuse + esp_camera_fb_return(fb); + + fb = esp_camera_fb_get(); +} + +void OV2640::runIfNeeded(void) +{ + if (!fb) + run(); +} + +int OV2640::getWidth(void) +{ + runIfNeeded(); + return fb->width; +} + +int OV2640::getHeight(void) +{ + runIfNeeded(); + return fb->height; +} + +size_t OV2640::getSize(void) +{ + runIfNeeded(); + if (!fb) + return 0; // FIXME - this shouldn't be possible but apparently the new cam board returns null sometimes? + return fb->len; +} + +uint8_t *OV2640::getfb(void) +{ + runIfNeeded(); + if (!fb) + return NULL; // FIXME - this shouldn't be possible but apparently the new cam board returns null sometimes? + + return fb->buf; +} + +framesize_t OV2640::getFrameSize(void) +{ + return _cam_config.frame_size; +} + +void OV2640::setFrameSize(framesize_t size) +{ + _cam_config.frame_size = size; +} + +pixformat_t OV2640::getPixelFormat(void) +{ + return _cam_config.pixel_format; +} + +void OV2640::setPixelFormat(pixformat_t format) +{ + switch (format) + { + case PIXFORMAT_RGB565: + case PIXFORMAT_YUV422: + case PIXFORMAT_GRAYSCALE: + case PIXFORMAT_JPEG: + _cam_config.pixel_format = format; + break; + default: + _cam_config.pixel_format = PIXFORMAT_GRAYSCALE; + break; + } +} + +esp_err_t OV2640::init(camera_config_t config) +{ + memset(&_cam_config, 0, sizeof(_cam_config)); + memcpy(&_cam_config, &config, sizeof(config)); + + esp_err_t err = esp_camera_init(&_cam_config); + if (err != ESP_OK) + { + printf("Camera probe failed with error 0x%x", err); + return err; + } + // ESP_ERROR_CHECK(gpio_install_isr_service(0)); + + return ESP_OK; +} diff --git a/lib/libesp32/rtsp/OV2640.h b/lib/libesp32/rtsp/OV2640.h new file mode 100755 index 000000000..9c69cc930 --- /dev/null +++ b/lib/libesp32/rtsp/OV2640.h @@ -0,0 +1,43 @@ +#ifndef OV2640_H_ +#define OV2640_H_ + +#include +#include +#include +#include "esp_log.h" +#include "esp_attr.h" +#include "esp_camera.h" + +extern camera_config_t esp32cam_config, esp32cam_aithinker_config, esp32cam_ttgo_t_config; + +class OV2640 +{ +public: + OV2640(){ + fb = NULL; + }; + ~OV2640(){ + }; + esp_err_t init(camera_config_t config); + void run(void); + size_t getSize(void); + uint8_t *getfb(void); + int getWidth(void); + int getHeight(void); + framesize_t getFrameSize(void); + pixformat_t getPixelFormat(void); + + void setFrameSize(framesize_t size); + void setPixelFormat(pixformat_t format); + +private: + void runIfNeeded(); // grab a frame if we don't already have one + + // camera_framesize_t _frame_size; + // camera_pixelformat_t _pixel_format; + camera_config_t _cam_config; + + camera_fb_t *fb; +}; + +#endif //OV2640_H_ diff --git a/lib/libesp32/rtsp/OV2640Streamer.cpp b/lib/libesp32/rtsp/OV2640Streamer.cpp new file mode 100755 index 000000000..679594f48 --- /dev/null +++ b/lib/libesp32/rtsp/OV2640Streamer.cpp @@ -0,0 +1,19 @@ + +#include "OV2640Streamer.h" +#include + + + +OV2640Streamer::OV2640Streamer(SOCKET aClient, OV2640 &cam) : CStreamer(aClient, cam.getWidth(), cam.getHeight()), m_cam(cam) +{ + Serial.printf("Created streamer width=%d, height=%d\n", cam.getWidth(), cam.getHeight()); +} + +void OV2640Streamer::streamImage(uint32_t curMsec) +{ + m_cam.run();// queue up a read for next time + + BufPtr bytes = m_cam.getfb(); + streamFrame(bytes, m_cam.getSize(), curMsec); + Serial.printf("get frame: %d\n",m_cam.getSize()); +} diff --git a/lib/libesp32/rtsp/OV2640Streamer.h b/lib/libesp32/rtsp/OV2640Streamer.h new file mode 100755 index 000000000..775922729 --- /dev/null +++ b/lib/libesp32/rtsp/OV2640Streamer.h @@ -0,0 +1,15 @@ +#pragma once + +#include "CStreamer.h" +#include "OV2640.h" + +class OV2640Streamer : public CStreamer +{ + bool m_showBig; + OV2640 &m_cam; + +public: + OV2640Streamer(SOCKET aClient, OV2640 &cam); + + virtual void streamImage(uint32_t curMsec); +}; diff --git a/lib/libesp32/rtsp/SimStreamer.cpp b/lib/libesp32/rtsp/SimStreamer.cpp new file mode 100755 index 000000000..b59f7855e --- /dev/null +++ b/lib/libesp32/rtsp/SimStreamer.cpp @@ -0,0 +1,28 @@ + +#include "SimStreamer.h" +#include "JPEGSamples.h" + + +#ifdef INCLUDE_SIMDATA +SimStreamer::SimStreamer(SOCKET aClient, bool showBig) : CStreamer(aClient, showBig ? 800 : 640, showBig ? 600 : 480) +{ + m_showBig = showBig; +} + +void SimStreamer::streamImage(uint32_t curMsec) +{ + if(m_showBig) { + BufPtr bytes = capture_jpg; + uint32_t len = capture_jpg_len; + + streamFrame(bytes, len, curMsec); + } + else { + BufPtr bytes = octo_jpg; + uint32_t len = octo_jpg_len; + + streamFrame(bytes, len, curMsec); + } +} + +#endif diff --git a/lib/libesp32/rtsp/SimStreamer.h b/lib/libesp32/rtsp/SimStreamer.h new file mode 100755 index 000000000..fd4d4b190 --- /dev/null +++ b/lib/libesp32/rtsp/SimStreamer.h @@ -0,0 +1,15 @@ +#pragma once + +#include "JPEGSamples.h" +#include "CStreamer.h" + +#ifdef INCLUDE_SIMDATA +class SimStreamer : public CStreamer +{ + bool m_showBig; +public: + SimStreamer(SOCKET aClient, bool showBig); + + virtual void streamImage(uint32_t curMsec); +}; +#endif diff --git a/lib/libesp32/rtsp/platglue-esp32.h b/lib/libesp32/rtsp/platglue-esp32.h new file mode 100755 index 000000000..8646904c9 --- /dev/null +++ b/lib/libesp32/rtsp/platglue-esp32.h @@ -0,0 +1,107 @@ +#pragma once + +#include +#include +#include +#include +#include +//#include +#include + +#include +#include +#include +#include + + +typedef WiFiClient *SOCKET; +typedef WiFiUDP *UDPSOCKET; +typedef IPAddress IPADDRESS; // On linux use uint32_t in network byte order (per getpeername) +typedef uint16_t IPPORT; // on linux use network byte order + +#define NULLSOCKET NULL + +inline void closesocket(SOCKET s) { + printf("closing TCP socket\n"); + + if(s) { + s->stop(); + // delete s; TDP WiFiClients are never on the heap in arduino land? + } +} + +#define getRandom() random(65536) + +inline void socketpeeraddr(SOCKET s, IPADDRESS *addr, IPPORT *port) { + *addr = s->remoteIP(); + *port = s->remotePort(); +} + +inline void udpsocketclose(UDPSOCKET s) { + printf("closing UDP socket\n"); + if(s) { + s->stop(); + delete s; + } +} + +inline UDPSOCKET udpsocketcreate(unsigned short portNum) +{ + UDPSOCKET s = new WiFiUDP(); + + if(!s->begin(portNum)) { + printf("Can't bind port %d\n", portNum); + delete s; + return NULL; + } + + return s; +} + +// TCP sending +inline ssize_t socketsend(SOCKET sockfd, const void *buf, size_t len) +{ + return sockfd->write((uint8_t *) buf, len); +} + +inline ssize_t udpsocketsend(UDPSOCKET sockfd, const void *buf, size_t len, + IPADDRESS destaddr, IPPORT destport) +{ + sockfd->beginPacket(destaddr, destport); + sockfd->write((const uint8_t *) buf, len); + if(!sockfd->endPacket()) + printf("error sending udp packet\n"); + + return len; +} + +/** + Read from a socket with a timeout. + + Return 0=socket was closed by client, -1=timeout, >0 number of bytes read + */ +inline int socketread(SOCKET sock, char *buf, size_t buflen, int timeoutmsec) +{ + if(!sock->connected()) { + printf("client has closed the socket\n"); + return 0; + } + + int numAvail = sock->available(); + if(numAvail == 0 && timeoutmsec != 0) { + // sleep and hope for more + delay(timeoutmsec); + numAvail = sock->available(); + } + + if(numAvail == 0) { + // printf("timeout on read\n"); + return -1; + } + else { + // int numRead = sock->readBytesUntil('\n', buf, buflen); + int numRead = sock->readBytes(buf, buflen); + // printf("bytes avail %d, read %d: %s", numAvail, numRead, buf); + return numRead; + } +} diff --git a/lib/libesp32/rtsp/platglue-posix.h b/lib/libesp32/rtsp/platglue-posix.h new file mode 100755 index 000000000..046258ef5 --- /dev/null +++ b/lib/libesp32/rtsp/platglue-posix.h @@ -0,0 +1,111 @@ +#pragma once + +#include +#include +#include +#include + +#include +#include +#include +#include + +typedef int SOCKET; +typedef int UDPSOCKET; +typedef uint32_t IPADDRESS; // On linux use uint32_t in network byte order (per getpeername) +typedef uint16_t IPPORT; // on linux use network byte order + +#define NULLSOCKET 0 + +inline void closesocket(SOCKET s) { + close(s); +} + +#define getRandom() rand() + +inline void socketpeeraddr(SOCKET s, IPADDRESS *addr, IPPORT *port) { + + sockaddr_in r; + socklen_t len = sizeof(r); + if(getpeername(s,(struct sockaddr*)&r,&len) < 0) { + printf("getpeername failed\n"); + *addr = 0; + *port = 0; + } + else { + //htons + + *port = r.sin_port; + *addr = r.sin_addr.s_addr; + } +} + +inline void udpsocketclose(UDPSOCKET s) { + close(s); +} + +inline UDPSOCKET udpsocketcreate(unsigned short portNum) +{ + sockaddr_in addr; + + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = INADDR_ANY; + + int s = socket(AF_INET, SOCK_DGRAM, 0); + addr.sin_port = htons(portNum); + if (bind(s,(sockaddr*)&addr,sizeof(addr)) != 0) { + printf("Error, can't bind\n"); + close(s); + s = 0; + } + + return s; +} + +// TCP sending +inline ssize_t socketsend(SOCKET sockfd, const void *buf, size_t len) +{ + // printf("TCP send\n"); + return send(sockfd, buf, len, 0); +} + +inline ssize_t udpsocketsend(UDPSOCKET sockfd, const void *buf, size_t len, + IPADDRESS destaddr, uint16_t destport) +{ + sockaddr_in addr; + + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = destaddr; + addr.sin_port = htons(destport); + //printf("UDP send to 0x%0x:%0x\n", destaddr, destport); + + return sendto(sockfd, buf, len, 0, (sockaddr *) &addr, sizeof(addr)); +} + +/** + Read from a socket with a timeout. + + Return 0=socket was closed by client, -1=timeout, >0 number of bytes read + */ +inline int socketread(SOCKET sock, char *buf, size_t buflen, int timeoutmsec) +{ + // Use a timeout on our socket read to instead serve frames + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = timeoutmsec * 1000; // send a new frame ever + setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv); + + int res = recv(sock,buf,buflen,0); + if(res > 0) { + return res; + } + else if(res == 0) { + return 0; // client dropped connection + } + else { + if (errno == EWOULDBLOCK || errno == EAGAIN) + return -1; + else + return 0; // unknown error, just claim client dropped it + }; +} diff --git a/lib/libesp32/rtsp/platglue.h b/lib/libesp32/rtsp/platglue.h new file mode 100755 index 000000000..cce3e224d --- /dev/null +++ b/lib/libesp32/rtsp/platglue.h @@ -0,0 +1,7 @@ +#pragma once + +#ifdef ARDUINO_ARCH_ESP32 +#include "platglue-esp32.h" +#else +#include "platglue-posix.h" +#endif From 14034ee9d11cc7e3a4823a01fa480ee24296bd7b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 11:21:28 +0100 Subject: [PATCH 088/293] Fix KNX buttons, switches and sensors detection Fix KNX buttons, switches and sensors detection regression from v9.1.0 (#9811) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_11_knx.ino | 50 +++++++++++++++++------------------------ 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04c2dd4ba..c11a67ce5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ All notable changes to this project will be documented in this file. ### Fixed - NTP fallback server functionality (#9739) - Telegram group chatid not supported (#9831) +- KNX buttons, switches and sensors detection regression from v9.1.0 (#9811) ### Removed - Version compatibility check diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 251b6396b..d3792191c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -73,6 +73,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ### Fixed - NTP fallback server functionality (#9739) - Telegram group chatid not supported (#9831) +- KNX buttons, switches and sensors detection regression from v9.1.0 (#9811) ### Removed - Version compatibility check diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index 2aa9afa9a..ce8aa6250 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -466,43 +466,35 @@ void KNX_INIT(void) // Read Configuration // Check which relays, buttons and sensors where configured for this device // and activate options according to the hardware - /*for (uint32_t i = GPIO_REL1; i < GPIO_REL8 + 1; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_REL1].show = true; } + /* + for (uint32_t i = 0; i < 8; i++) { + if (PinUsed(GPIO_REL1, i)) { + device_param[i].show = true; + } } - for (uint32_t i = GPIO_REL1_INV; i < GPIO_REL8_INV + 1; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_REL1_INV].show = true; } - }*/ - for (uint32_t i = 0; i < TasmotaGlobal.devices_present; ++i) - { + */ + for (uint32_t i = 0; i < TasmotaGlobal.devices_present; ++i) { device_param[i].show = true; } - for (uint32_t i = GPIO_SWT1; i < GPIO_SWT1 + 4; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_SWT1 + 8].show = true; } + for (uint32_t i = 0; i < 4; i++) { + if (PinUsed(GPIO_KEY1, i)) { + device_param[8 + i].show = true; + } } - for (uint32_t i = GPIO_KEY1; i < GPIO_KEY1 + 4; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_KEY1 + 8].show = true; } + for (uint32_t i = 0; i < 8; i++) { + if (PinUsed(GPIO_SWT1, i)) { + device_param[8 + i].show = true; + } } - for (uint32_t i = GPIO_SWT1_NP; i < GPIO_SWT1_NP + 4; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_SWT1_NP + 8].show = true; } + if (PinUsed(GPIO_DHT11) || PinUsed(GPIO_DHT22) || PinUsed(GPIO_SI7021)) { + device_param[KNX_TEMPERATURE-1].show = true; + device_param[KNX_HUMIDITY-1].show = true; } - for (uint32_t i = GPIO_KEY1_NP; i < GPIO_KEY1_NP + 4; ++i) - { - if (GetUsedInModule(i, TasmotaGlobal.my_module.io)) { device_param[i - GPIO_KEY1_NP + 8].show = true; } - } - if (GetUsedInModule(GPIO_DHT11, TasmotaGlobal.my_module.io)) { device_param[KNX_TEMPERATURE-1].show = true; } - if (GetUsedInModule(GPIO_DHT22, TasmotaGlobal.my_module.io)) { device_param[KNX_TEMPERATURE-1].show = true; } - if (GetUsedInModule(GPIO_SI7021, TasmotaGlobal.my_module.io)) { device_param[KNX_TEMPERATURE-1].show = true; } #ifdef USE_DS18x20 - if (GetUsedInModule(GPIO_DSB, TasmotaGlobal.my_module.io)) { device_param[KNX_TEMPERATURE-1].show = true; } + if (PinUsed(GPIO_DSB)) { + device_param[KNX_TEMPERATURE-1].show = true; + } #endif - if (GetUsedInModule(GPIO_DHT11, TasmotaGlobal.my_module.io)) { device_param[KNX_HUMIDITY-1].show = true; } - if (GetUsedInModule(GPIO_DHT22, TasmotaGlobal.my_module.io)) { device_param[KNX_HUMIDITY-1].show = true; } - if (GetUsedInModule(GPIO_SI7021, TasmotaGlobal.my_module.io)) { device_param[KNX_HUMIDITY-1].show = true; } #if defined(USE_ENERGY_SENSOR) // Any device with a Power Monitoring From 5f39d15a84771d6e6bccc32d4413422cb63d8c76 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 13 Nov 2020 13:32:45 +0100 Subject: [PATCH 089/293] Zigbee more consistent messages for ZbInfo and ZbLight --- tasmota/i18n.h | 1 + tasmota/xdrv_23_zigbee_2_devices.ino | 19 +- tasmota/xdrv_23_zigbee_2a_devices_impl.ino | 218 +++++++++++---------- tasmota/xdrv_23_zigbee_5_converters.ino | 3 +- tasmota/xdrv_23_zigbee_A_impl.ino | 12 +- 5 files changed, 135 insertions(+), 118 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 8c60b3c69..3d8254960 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -565,6 +565,7 @@ #define D_CMND_ZIGBEE_RESPONSE "Response" #define D_JSON_ZIGBEE_ZCL_SENT "ZbZCLSent" #define D_JSON_ZIGBEE_RECEIVED "ZbReceived" +#define D_JSON_ZIGBEE_INFO "ZbInfo" #define D_CMND_ZIGBEE_BIND "Bind" #define D_JSON_ZIGBEE_BIND "ZbBind" #define D_CMND_ZIGBEE_UNBIND "Unbind" diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index db8f70428..8163c572d 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -73,7 +73,7 @@ public: inline uint8_t getEndpoint(void) const { return _endpoint; } - void toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const; + void toAttributes(Z_attribute_list & attr_list) const; // update internal structures after an attribut update // True if a configuration was changed @@ -215,7 +215,7 @@ public: inline bool validColormode(void) const { return 0xFF != colormode; } inline bool validDimmer(void) const { return 0xFF != dimmer; } inline bool validSat(void) const { return 0xFF != sat; } - inline bool validHue(void) const { return 0xFFFF != hue; } + inline bool validHue(void) const { return 0xFF != hue; } inline bool validCT(void) const { return 0xFFFF != ct; } inline bool validX(void) const { return 0xFFFF != x; } inline bool validY(void) const { return 0xFFFF != y; } @@ -674,6 +674,18 @@ public: void setLastSeenNow(void); + // multiple function to dump part of the Device state into JSON + void jsonAddDeviceNamme(Z_attribute_list & attr_list) const; + void jsonAddIEEE(Z_attribute_list & attr_list) const; + void jsonAddModelManuf(Z_attribute_list & attr_list) const; + void jsonAddEndpoints(Z_attribute_list & attr_list) const; + void jsonAddConfig(Z_attribute_list & attr_list) const; + void jsonAddDataAttributes(Z_attribute_list & attr_list) const; + void jsonAddDeviceAttributes(Z_attribute_list & attr_list) const; + void jsonDumpSingleDevice(Z_attribute_list & attr_list, uint32_t dump_mode, bool add_name) const; + void jsonPublishAttrList(const char * json_prefix, const Z_attribute_list &attr_list) const; + void jsonLightState(Z_attribute_list & attr_list) const; + // dump device attributes to ZbData void toAttributes(Z_attribute_list & attr_list) const; @@ -791,9 +803,7 @@ public: uint8_t getNextSeqNumber(uint16_t shortaddr); // Dump json - static String dumpLightState(const Z_Device & device); String dumpDevice(uint32_t dump_mode, const Z_Device & device) const; - static String dumpSingleDevice(uint32_t dump_mode, const class Z_Device & device, bool add_device_name = true, bool add_brackets = true); int32_t deviceRestore(JsonParserObject json); // Hue support @@ -810,7 +820,6 @@ public: // Append or clear attributes Json structure void jsonAppend(uint16_t shortaddr, const Z_attribute_list &attr_list); - static void jsonPublishFlushAttrList(const Z_Device & device, const String & attr_list_string); void jsonPublishFlush(uint16_t shortaddr); // publish the json message and clear buffer bool jsonIsConflict(uint16_t shortaddr, const Z_attribute_list &attr_list) const; void jsonPublishNow(uint16_t shortaddr, Z_attribute_list &attr_list); diff --git a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino index 7ad12557b..a7aa91fcc 100644 --- a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino +++ b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino @@ -497,39 +497,38 @@ void Z_Devices::jsonAppend(uint16_t shortaddr, const Z_attribute_list &attr_list // // internal function to publish device information with respect to all `SetOption`s // -void Z_Devices::jsonPublishFlushAttrList(const Z_Device & device, const String & attr_list_string) { - const char * fname = zigbee_devices.getFriendlyName(device.shortaddr); - bool use_fname = (Settings.flag4.zigbee_use_names) && (fname); // should we replace shortaddr with friendlyname? +void Z_Device::jsonPublishAttrList(const char * json_prefix, const Z_attribute_list &attr_list) const { + bool use_fname = (Settings.flag4.zigbee_use_names) && (friendlyName); // should we replace shortaddr with friendlyname? TasmotaGlobal.mqtt_data[0] = 0; // clear string // Do we prefix with `ZbReceived`? if (!Settings.flag4.remove_zbreceived) { - Response_P(PSTR("{\"" D_JSON_ZIGBEE_RECEIVED "\":")); + Response_P(PSTR("{\"%s\":"), json_prefix); } // What key do we use, shortaddr or name? if (use_fname) { - Response_P(PSTR("%s{\"%s\":{"), TasmotaGlobal.mqtt_data, fname); + Response_P(PSTR("%s{\"%s\":{"), TasmotaGlobal.mqtt_data, friendlyName); } else { - Response_P(PSTR("%s{\"0x%04X\":{"), TasmotaGlobal.mqtt_data, device.shortaddr); + Response_P(PSTR("%s{\"0x%04X\":{"), TasmotaGlobal.mqtt_data, shortaddr); } // Add "Device":"0x...." - ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_DEVICE "\":\"0x%04X\","), device.shortaddr); + ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_DEVICE "\":\"0x%04X\","), shortaddr); // Add "Name":"xxx" if name is present - if (fname) { - ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_NAME "\":\"%s\","), EscapeJSONString(fname).c_str()); + if (friendlyName) { + ResponseAppend_P(PSTR("\"" D_JSON_ZIGBEE_NAME "\":\"%s\","), EscapeJSONString(friendlyName).c_str()); } // Add all other attributes - ResponseAppend_P(PSTR("%s}}"), attr_list_string.c_str()); + ResponseAppend_P(PSTR("%s}}"), attr_list.toString(false).c_str()); if (!Settings.flag4.remove_zbreceived) { ResponseAppend_P(PSTR("}")); } if (Settings.flag4.zigbee_distinct_topics) { - if (Settings.flag4.zb_topic_fname && fname) { + if (Settings.flag4.zb_topic_fname && friendlyName) { //Clean special characters and check size of friendly name char stemp[TOPSZ]; - strlcpy(stemp, (!strlen(fname)) ? MQTT_TOPIC : fname, sizeof(stemp)); + strlcpy(stemp, (!strlen(friendlyName)) ? MQTT_TOPIC : friendlyName, sizeof(stemp)); MakeValidMqtt(0, stemp); //Create topic with Prefix3 and cleaned up friendly name char frtopic[TOPSZ]; @@ -537,7 +536,7 @@ void Z_Devices::jsonPublishFlushAttrList(const Z_Device & device, const String & MqttPublish(frtopic, Settings.flag.mqtt_sensor_retain); } else { char subtopic[16]; - snprintf_P(subtopic, sizeof(subtopic), PSTR("%04X/" D_RSLT_SENSOR), device.shortaddr); + snprintf_P(subtopic, sizeof(subtopic), PSTR("%04X/" D_RSLT_SENSOR), shortaddr); MqttPublishPrefixTopic_P(TELE, subtopic, Settings.flag.mqtt_sensor_retain); } } else { @@ -557,7 +556,7 @@ void Z_Devices::jsonPublishFlush(uint16_t shortaddr) { gZbLastMessage.groupaddr = attr_list.group_id; // %zbgroup% gZbLastMessage.endpoint = attr_list.src_ep; // %zbendpoint% - jsonPublishFlushAttrList(device, attr_list.toString()); + device.jsonPublishAttrList(PSTR(D_JSON_ZIGBEE_RECEIVED), attr_list); attr_list.reset(); // clear the attributes } } @@ -615,110 +614,125 @@ Z_Device & Z_Devices::parseDeviceFromName(const char * param, bool short_must_be } } -// Display the tracked status for a light -String Z_Devices::dumpLightState(const Z_Device & device) { - Z_attribute_list attr_list; - char hex[8]; +/*********************************************************************************************\ + * + * Methods below build a JSON representation of device data + * Used by: ZbLight, ZbStatus, ZbInfo + * +\*********************************************************************************************/ - const char * fname = device.friendlyName; +// Add "Device":"0x1234","Name":"FrienflyName" +void Z_Device::jsonAddDeviceNamme(Z_attribute_list & attr_list) const { + char hex[8]; + const char * fname = friendlyName; bool use_fname = (Settings.flag4.zigbee_use_names) && (fname); // should we replace shortaddr with friendlyname? - snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), device.shortaddr); + snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), shortaddr); attr_list.addAttribute(F(D_JSON_ZIGBEE_DEVICE)).setStr(hex); if (fname) { attr_list.addAttribute(F(D_JSON_ZIGBEE_NAME)).setStr(fname); } +} +// Add "IEEEAddr":"0x1234567812345678" +void Z_Device::jsonAddIEEE(Z_attribute_list & attr_list) const { + char hex[22]; + hex[0] = '0'; // prefix with '0x' + hex[1] = 'x'; + Uint64toHex(longaddr, &hex[2], 64); + attr_list.addAttribute(F("IEEEAddr")).setStr(hex); +} +// Add "ModelId":"","Manufacturer":"" +void Z_Device::jsonAddModelManuf(Z_attribute_list & attr_list) const { + if (modelId) { + attr_list.addAttribute(F(D_JSON_MODEL D_JSON_ID)).setStr(modelId); + } + if (manufacturerId) { + attr_list.addAttribute(F("Manufacturer")).setStr(manufacturerId); + } +} +// Add "Endpoints":[...] +void Z_Device::jsonAddEndpoints(Z_attribute_list & attr_list) const { + JsonGeneratorArray arr_ep; + for (uint32_t i = 0; i < endpoints_max; i++) { + uint8_t endpoint = endpoints[i]; + if (0x00 == endpoint) { break; } + arr_ep.add(endpoint); + } + attr_list.addAttribute(F("Endpoints")).setStrRaw(arr_ep.toString().c_str()); +} +// Add "Config":["",""...] +void Z_Device::jsonAddConfig(Z_attribute_list & attr_list) const { + JsonGeneratorArray arr_data; + for (auto & data_elt : data) { + char key[8]; + if (data_elt.validConfig()) { + snprintf_P(key, sizeof(key), "?%02X.%1X", data_elt.getEndpoint(), data_elt.getConfig()); + } else { + snprintf_P(key, sizeof(key), "?%02X", data_elt.getEndpoint()); + } + key[0] = Z_Data::DataTypeToChar(data_elt.getType()); + arr_data.addStr(key); + } + attr_list.addAttribute(F("Config")).setStrRaw(arr_data.toString().c_str()); +} +// Add All data attributes +void Z_Device::jsonAddDataAttributes(Z_attribute_list & attr_list) const { + // show internal data - mostly last known values + for (auto & data_elt : data) { + data_elt.toAttributes(attr_list); + } +} +// Add "BatteryPercentage", "LastSeen", "LastSeenEpoch", "LinkQuality" +void Z_Device::jsonAddDeviceAttributes(Z_attribute_list & attr_list) const { + attr_list.addAttribute(F("Reachable")).setBool(getReachable()); + if (validBatteryPercent()) { attr_list.addAttribute(PSTR("BatteryPercentage")).setUInt(batterypercent); } + if (validLastSeen()) { + if (Rtc.utc_time >= last_seen) { + attr_list.addAttribute(PSTR("LastSeen")).setUInt(Rtc.utc_time - last_seen); + } + attr_list.addAttribute(PSTR("LastSeenEpoch")).setUInt(last_seen); + } + if (validLqi()) { attr_list.addAttribute(PSTR(D_CMND_ZIGBEE_LINKQUALITY)).setUInt(lqi); } +} - if (device.valid()) { + +// Display the tracked status for a light +void Z_Device::jsonLightState(Z_attribute_list & attr_list) const { + if (valid()) { // dump all known values - attr_list.addAttribute(F("Reachable")).setBool(device.getReachable()); - if (device.validPower()) { attr_list.addAttribute(F("Power")).setUInt(device.getPower()); } - const Z_Data_Light & light = device.data.find(0); + attr_list.addAttribute(F("Reachable")).setBool(getReachable()); + if (validPower()) { attr_list.addAttribute(F("Power")).setUInt(getPower()); } + const Z_Data_Light & light = data.find(0); if (&light != nullptr) { - light.toAttributes(attr_list, Z_Data_Light::type); + light.toAttributes(attr_list); // Exception, we need to convert Hue to 0..360 instead of 0..254 if (light.validHue()) { attr_list.findOrCreateAttribute(PSTR("Hue")).setUInt(light.getHue()); } } - // Z_Data_Light::toAttributes(attr_list, device.data.find(0)); } - - Z_attribute_list attr_list_root; - Z_attribute * attr_root; - if (use_fname) { - attr_root = &attr_list_root.addAttribute(fname); - } else { - attr_root = &attr_list_root.addAttribute(hex); - } - attr_root->setStrRaw(attr_list.toString(true).c_str()); - return attr_list_root.toString(true); } -// Dump the internal memory of Zigbee devices +// Dump the internal memory of Zigbee devices - does not include "Device" and "Name" // Mode = 1: simple dump of devices addresses // Mode = 2: simple dump of devices addresses and names, endpoints, light // Mode = 3: dump last known data attributes -// add_device_name : do we add shortaddr/name ? -String Z_Devices::dumpSingleDevice(uint32_t dump_mode, const class Z_Device & device, bool add_device_name, bool add_brackets) { - uint16_t shortaddr = device.shortaddr; - char hex[22]; - - Z_attribute_list attr_list; - - if (add_device_name) { - snprintf_P(hex, sizeof(hex), PSTR("0x%04X"), shortaddr); - attr_list.addAttribute(F(D_JSON_ZIGBEE_DEVICE)).setStr(hex); - - if (device.friendlyName > 0) { - attr_list.addAttribute(F(D_JSON_ZIGBEE_NAME)).setStr(device.friendlyName); - } +// String Z_Device::dumpSingleDevice(uint32_t dump_mode, bool add_device_name, bool add_brackets) const { +void Z_Device::jsonDumpSingleDevice(Z_attribute_list & attr_list, uint32_t dump_mode, bool add_name) const { + if (add_name) { + jsonAddDeviceNamme(attr_list); } - if (dump_mode >= 2) { - hex[0] = '0'; // prefix with '0x' - hex[1] = 'x'; - Uint64toHex(device.longaddr, &hex[2], 64); - attr_list.addAttribute(F("IEEEAddr")).setStr(hex); - if (device.modelId) { - attr_list.addAttribute(F(D_JSON_MODEL D_JSON_ID)).setStr(device.modelId); - } - if (device.manufacturerId) { - attr_list.addAttribute(F("Manufacturer")).setStr(device.manufacturerId); - } - - JsonGeneratorArray arr_ep; - for (uint32_t i = 0; i < endpoints_max; i++) { - uint8_t endpoint = device.endpoints[i]; - if (0x00 == endpoint) { break; } - arr_ep.add(endpoint); - } - attr_list.addAttribute(F("Endpoints")).setStrRaw(arr_ep.toString().c_str()); - - JsonGeneratorArray arr_data; - for (auto & data_elt : device.data) { - char key[8]; - if (data_elt.validConfig()) { - snprintf_P(key, sizeof(key), "?%02X.%1X", data_elt.getEndpoint(), data_elt.getConfig()); - } else { - snprintf_P(key, sizeof(key), "?%02X", data_elt.getEndpoint()); - } - key[0] = Z_Data::DataTypeToChar(data_elt.getType()); - arr_data.addStr(key); - } - attr_list.addAttribute(F("Config")).setStrRaw(arr_data.toString().c_str()); + jsonAddIEEE(attr_list); + jsonAddModelManuf(attr_list); + jsonAddEndpoints(attr_list); + jsonAddConfig(attr_list); } if (dump_mode >= 3) { - // show internal data - mostly last known values - for (auto & data_elt : device.data) { - Z_Data_Type data_type = data_elt.getType(); - - data_elt.toAttributes(attr_list, data_type); - } + jsonAddDataAttributes(attr_list); // add device wide attributes - device.toAttributes(attr_list); + jsonAddDeviceAttributes(attr_list); } - return attr_list.toString(add_brackets); } // If &device == nullptr, then dump all @@ -729,11 +743,15 @@ String Z_Devices::dumpDevice(uint32_t dump_mode, const Z_Device & device) const if (dump_mode < 2) { // dump light mode for all devices for (const auto & device2 : _devices) { - json_arr.addStrRaw(dumpSingleDevice(dump_mode, device2).c_str()); + Z_attribute_list attr_list; + device2.jsonDumpSingleDevice(attr_list, dump_mode, true); + json_arr.addStrRaw(attr_list.toString(true).c_str()); } } } else { - json_arr.addStrRaw(dumpSingleDevice(dump_mode, device).c_str()); + Z_attribute_list attr_list; + device.jsonDumpSingleDevice(attr_list, dump_mode, true); + json_arr.addStrRaw(attr_list.toString(true).c_str()); } return json_arr.toString(); @@ -814,20 +832,6 @@ Z_Data_Light & Z_Devices::getLight(uint16_t shortaddr) { return getShortAddr(shortaddr).data.get(); } -/*********************************************************************************************\ - * Export device specific attributes to ZbData -\*********************************************************************************************/ -void Z_Device::toAttributes(Z_attribute_list & attr_list) const { - if (validBatteryPercent()) { attr_list.addAttribute(PSTR("BatteryPercentage")).setUInt(batterypercent); } - if (validLastSeen()) { - if (Rtc.utc_time >= last_seen) { - attr_list.addAttribute(PSTR("LastSeen")).setUInt(Rtc.utc_time - last_seen); - } - attr_list.addAttribute(PSTR("LastSeenEpoch")).setUInt(last_seen); - } - if (validLqi()) { attr_list.addAttribute(PSTR(D_CMND_ZIGBEE_LINKQUALITY)).setUInt(lqi); } -} - /*********************************************************************************************\ * Device specific data handlers \*********************************************************************************************/ diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 9a3114ab6..7ed706771 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1967,7 +1967,8 @@ bool Z_parseAttributeKey(class Z_attribute & attr) { // Input: // the Json object to add attributes to // the type of object (necessary since the type system is unaware of the actual sub-type) -void Z_Data::toAttributes(Z_attribute_list & attr_list, Z_Data_Type type) const { +void Z_Data::toAttributes(Z_attribute_list & attr_list) const { + Z_Data_Type type = getType(); // iterate through attributes to see which ones need to be exported for (uint32_t i = 0; i < ARRAY_SIZE(Z_PostProcess); i++) { const Z_AttributeConverter *converter = &Z_PostProcess[i]; diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index dcacff1ed..c1066b296 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1111,10 +1111,11 @@ void CmndZbLight(void) { if (bulbtype < -1) { bulbtype = -1; } device.setLightChannels(bulbtype); } - String dump = zigbee_devices.dumpLightState(device); - Response_P(PSTR("{\"" D_PRFX_ZB D_CMND_ZIGBEE_LIGHT "\":%s}"), dump.c_str()); + Z_attribute_list attr_list; + device.jsonLightState(attr_list); + + device.jsonPublishAttrList(PSTR(D_PRFX_ZB D_CMND_ZIGBEE_LIGHT), attr_list); // publish as ZbReceived - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_PRFX_ZB D_CMND_ZIGBEE_LIGHT)); ResponseCmndDone(); } // @@ -1194,8 +1195,9 @@ void CmndZbInfo(void) { // everything is good, we can send the command - String device_info = Z_Devices::dumpSingleDevice(3, device, false, false); - Z_Devices::jsonPublishFlushAttrList(device, device_info); + Z_attribute_list attr_list; + device.jsonDumpSingleDevice(attr_list, 3, false); // don't add Device/Name + device.jsonPublishAttrList(PSTR(D_JSON_ZIGBEE_INFO), attr_list); // publish as ZbReceived ResponseCmndDone(); } From 846da7b6caf975309d1ba4c80ba86ed0db50991b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 13:54:51 +0100 Subject: [PATCH 090/293] Fix GUI MqttUser and MqttPassword updates Fix GUI MqttUser and MqttPassword updates when TLS is compiled in (#9825) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_02_mqtt.ino | 5 ----- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c11a67ce5..fe0547c19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - NTP fallback server functionality (#9739) - Telegram group chatid not supported (#9831) - KNX buttons, switches and sensors detection regression from v9.1.0 (#9811) +- GUI MqttUser and MqttPassword updates when TLS is compiled in (#9825) ### Removed - Version compatibility check diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d3792191c..4653cf93b 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -74,6 +74,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - NTP fallback server functionality (#9739) - Telegram group chatid not supported (#9831) - KNX buttons, switches and sensors detection regression from v9.1.0 (#9811) +- GUI MqttUser and MqttPassword updates when TLS is compiled in (#9825) ### Removed - Version compatibility check diff --git a/tasmota/xdrv_02_mqtt.ino b/tasmota/xdrv_02_mqtt.ino index 2263686f2..0d0221559 100644 --- a/tasmota/xdrv_02_mqtt.ino +++ b/tasmota/xdrv_02_mqtt.ino @@ -1374,17 +1374,12 @@ void MqttSaveSettings(void) #endif WebGetArg("mc", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_CLIENT, (!strlen(tmp)) ? MQTT_CLIENT_ID : tmp); -#if defined(USE_MQTT_TLS) && (defined(USE_MQTT_AWS_IOT) || defined(USE_MQTT_AWS_IOT_LIGHT)) - AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), - SettingsText(SET_MQTT_HOST), Settings.mqtt_port, SettingsText(SET_MQTT_CLIENT), SettingsText(SET_MQTT_TOPIC), SettingsText(SET_MQTT_FULLTOPIC)); -#else // USE_MQTT_AWS_IOT WebGetArg("mu", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_USER, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp); WebGetArg("mp", tmp, sizeof(tmp)); SettingsUpdateText(SET_MQTT_PWD, (!strlen(tmp)) ? "" : (!strcmp(tmp, D_ASTERISK_PWD)) ? SettingsText(SET_MQTT_PWD) : tmp); AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), SettingsText(SET_MQTT_HOST), Settings.mqtt_port, SettingsText(SET_MQTT_CLIENT), SettingsText(SET_MQTT_USER), SettingsText(SET_MQTT_TOPIC), SettingsText(SET_MQTT_FULLTOPIC)); -#endif } #endif // USE_WEBSERVER From 29e990dd2307041a9d8acb5f30bf2daa79e1afbd Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 14:23:16 +0100 Subject: [PATCH 091/293] Remove obsolete code --- tasmota/support.ino | 61 ------------------------------------- tasmota/support_command.ino | 3 -- 2 files changed, 64 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index b82c1260e..2d3519084 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1477,67 +1477,6 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } -bool GetUsedInModule(uint32_t val, uint16_t *arr) -{ - int offset = 0; - - if (!val) { return false; } // None - - if ((val >= GPIO_KEY1) && (val < GPIO_KEY1 + MAX_KEYS)) { - offset = (GPIO_KEY1_NP - GPIO_KEY1); - } - if ((val >= GPIO_KEY1_NP) && (val < GPIO_KEY1_NP + MAX_KEYS)) { - offset = -(GPIO_KEY1_NP - GPIO_KEY1); - } - if ((val >= GPIO_KEY1_INV) && (val < GPIO_KEY1_INV + MAX_KEYS)) { - offset = -(GPIO_KEY1_INV - GPIO_KEY1); - } - if ((val >= GPIO_KEY1_INV_NP) && (val < GPIO_KEY1_INV_NP + MAX_KEYS)) { - offset = -(GPIO_KEY1_INV_NP - GPIO_KEY1); - } - - if ((val >= GPIO_SWT1) && (val < GPIO_SWT1 + MAX_SWITCHES)) { - offset = (GPIO_SWT1_NP - GPIO_SWT1); - } - if ((val >= GPIO_SWT1_NP) && (val < GPIO_SWT1_NP + MAX_SWITCHES)) { - offset = -(GPIO_SWT1_NP - GPIO_SWT1); - } - - if ((val >= GPIO_REL1) && (val < GPIO_REL1 + MAX_RELAYS)) { - offset = (GPIO_REL1_INV - GPIO_REL1); - } - if ((val >= GPIO_REL1_INV) && (val < GPIO_REL1_INV + MAX_RELAYS)) { - offset = -(GPIO_REL1_INV - GPIO_REL1); - } - - if ((val >= GPIO_LED1) && (val < GPIO_LED1 + MAX_LEDS)) { - offset = (GPIO_LED1_INV - GPIO_LED1); - } - if ((val >= GPIO_LED1_INV) && (val < GPIO_LED1_INV + MAX_LEDS)) { - offset = -(GPIO_LED1_INV - GPIO_LED1); - } - - if ((val >= GPIO_PWM1) && (val < GPIO_PWM1 + MAX_PWMS)) { - offset = (GPIO_PWM1_INV - GPIO_PWM1); - } - if ((val >= GPIO_PWM1_INV) && (val < GPIO_PWM1_INV + MAX_PWMS)) { - offset = -(GPIO_PWM1_INV - GPIO_PWM1); - } - - if ((val >= GPIO_CNTR1) && (val < GPIO_CNTR1 + MAX_COUNTERS)) { - offset = (GPIO_CNTR1_NP - GPIO_CNTR1); - } - if ((val >= GPIO_CNTR1_NP) && (val < GPIO_CNTR1_NP + MAX_COUNTERS)) { - offset = -(GPIO_CNTR1_NP - GPIO_CNTR1); - } - - for (uint32_t i = 0; i < MAX_GPIO_PIN; i++) { - if (arr[i] == val) { return true; } - if (arr[i] == val + offset) { return true; } - } - return false; -} - bool JsonTemplate(char* dataBuf) { // Old: {"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18} diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 4f65da5c2..1ff09237c 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1191,8 +1191,6 @@ void CmndGpio(void) void ShowGpios(const uint16_t *NiceList, uint32_t size, uint32_t offset, uint32_t &lines) { uint32_t ridx; uint32_t midx; - myio cmodule; - ModuleGpios(&cmodule); bool jsflg = false; for (uint32_t i = offset; i < size; i++) { // Skip ADC_NONE if (NiceList == nullptr) { @@ -1201,7 +1199,6 @@ void ShowGpios(const uint16_t *NiceList, uint32_t size, uint32_t offset, uint32_ } else { ridx = pgm_read_word(NiceList + i) & 0xFFE0; midx = BGPIO(ridx); - if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } } if (!jsflg) { Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":{"), lines); From b4f728436cb1e75b7ceced6a0079567c4a9d3313 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Fri, 13 Nov 2020 16:04:15 +0100 Subject: [PATCH 092/293] Update Italian language --- tasmota/language/it_IT.h | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 81b7080ca..0eb173bae 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -1,7 +1,7 @@ /* it-IT.h - localization for Italian - Italy for Tasmota - Copyright (C) 2020 Gennaro Tortone - some mods by Antonio Fragola - Updated by bovirus - rev. 02.11.2020 + Copyright (C) 2020 Gennaro Tortone - some mods by Antonio Fragola - Updated by bovirus - rev. 13.11.2020 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -729,8 +729,8 @@ #define D_SENSOR_TCP_RXD "TCP - RX" #define D_SENSOR_IEM3000_TX "iEM3000 - TX" #define D_SENSOR_IEM3000_RX "iEM3000 - RX" -#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" -#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC - TX" +#define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC - RX" // Units #define D_UNIT_AMPERE "A" @@ -864,37 +864,37 @@ #define D_MAX_CURRENT "Corrente max" // xsns_79_as608.ino -#define D_FP_ENROLL_PLACEFINGER "Place finger" -#define D_FP_ENROLL_REMOVEFINGER "Remove finger" -#define D_FP_ENROLL_PLACESAMEFINGER "Place same finger again" -#define D_FP_ENROLL_RETRY "Error so retry" -#define D_FP_ENROLL_RESTART "Restart" -#define D_FP_ENROLL_ERROR "Error" -#define D_FP_ENROLL_RESET "Reset" -#define D_FP_ENROLL_ACTIVE "Active" -#define D_FP_ENROLL_INACTIVE "Inactive" +#define D_FP_ENROLL_PLACEFINGER "Appoggia impronta" +#define D_FP_ENROLL_REMOVEFINGER "Rimuovi impronta" +#define D_FP_ENROLL_PLACESAMEFINGER "Appoggia di nuovo stessa impronta" +#define D_FP_ENROLL_RETRY "Errore quindi riprova" +#define D_FP_ENROLL_RESTART "Riavvia" +#define D_FP_ENROLL_ERROR "Errore" +#define D_FP_ENROLL_RESET "Ripristina" +#define D_FP_ENROLL_ACTIVE "Attivo" +#define D_FP_ENROLL_INACTIVE "Non attivo" // Indexed by Adafruit_Fingerprint.h defines -#define D_FP_PACKETRECIEVEERR "Comms error" // 0x01 Error when receiving data package -#define D_FP_NOFINGER "" // 0x02 No finger on the sensor -#define D_FP_IMAGEFAIL "Imaging error" // 0x03 Failed to enroll the finger -#define D_FP_IMAGEMESS "Image too messy" // 0x06 Failed to generate character file due to overly disorderly fingerprint image -#define D_FP_FEATUREFAIL "Fingerprint too small" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image -#define D_FP_NOMATCH "No match" // 0x08 Finger doesn't match -#define D_FP_NOTFOUND "Did not find a match" // 0x09 Failed to find matching finger -#define D_FP_ENROLLMISMATCH "Fingerprint did not match" // 0x0A Failed to combine the character files -#define D_FP_BADLOCATION "Bad location" // 0x0B Addressed PageID is beyond the finger library -#define D_FP_DBRANGEFAIL "DB range error" // 0x0C Error when reading template from library or invalid template -#define D_FP_UPLOADFEATUREFAIL "Upload feature error" // 0x0D Error when uploading template -#define D_FP_PACKETRESPONSEFAIL "Packet response error" // 0x0E Module failed to receive the following data packages -#define D_FP_UPLOADFAIL "Upload error" // 0x0F Error when uploading image -#define D_FP_DELETEFAIL "Delete error" // 0x10 Failed to delete the template -#define D_FP_DBCLEARFAIL "DB Clear error" // 0x11 Failed to clear finger library -#define D_FP_PASSFAIL "Password error" // 0x13 Find whether the fingerprint passed or failed -#define D_FP_INVALIDIMAGE "Image invalid" // 0x15 Failed to generate image because of lac of valid primary image -#define D_FP_FLASHERR "Flash write error" // 0x18 Error when writing flash -#define D_FP_INVALIDREG "Invalid number" // 0x1A Invalid register number -#define D_FP_ADDRCODE "Address code" // 0x20 Address code -#define D_FP_PASSVERIFY "Password verified" // 0x21 Verify the fingerprint passed -#define D_FP_UNKNOWNERROR "Error" // Any other error +#define D_FP_PACKETRECIEVEERR "Errore comunicazione" // 0x01 Error when receiving data package +#define D_FP_NOFINGER "" // 0x02 No finger on the sensor +#define D_FP_IMAGEFAIL "Errore immagine" // 0x03 Failed to enroll the finger +#define D_FP_IMAGEMESS "Immmagine troppo danneggiata" // 0x06 Failed to generate character file due to overly disorderly fingerprint image +#define D_FP_FEATUREFAIL "Impronta troppo piccola" // 0x07 Failed to generate character file due to the lack of character point or small fingerprint image +#define D_FP_NOMATCH "Nessuna corrispondenza" // 0x08 Finger doesn't match +#define D_FP_NOTFOUND "Corrispondenza non trovata" // 0x09 Failed to find matching finger +#define D_FP_ENROLLMISMATCH "L'impronta non corrisponde" // 0x0A Failed to combine the character files +#define D_FP_BADLOCATION "Locazione errata" // 0x0B Addressed PageID is beyond the finger library +#define D_FP_DBRANGEFAIL "Errore intervallo DB" // 0x0C Error when reading template from library or invalid template +#define D_FP_UPLOADFEATUREFAIL "Errore funzione upload" // 0x0D Error when uploading template +#define D_FP_PACKETRESPONSEFAIL "Errore risposta pacchetto" // 0x0E Module failed to receive the following data packages +#define D_FP_UPLOADFAIL "Errore upload" // 0x0F Error when uploading image +#define D_FP_DELETEFAIL "Errore eliminazione" // 0x10 Failed to delete the template +#define D_FP_DBCLEARFAIL "Errore azzeramento DB" // 0x11 Failed to clear finger library +#define D_FP_PASSFAIL "Errore password" // 0x13 Find whether the fingerprint passed or failed +#define D_FP_INVALIDIMAGE "Immagine non valida" // 0x15 Failed to generate image because of lac of valid primary image +#define D_FP_FLASHERR "Errore scrittura flash" // 0x18 Error when writing flash +#define D_FP_INVALIDREG "Numero non valido" // 0x1A Invalid register number +#define D_FP_ADDRCODE "Codice indirizzo" // 0x20 Address code +#define D_FP_PASSVERIFY "Password verificata" // 0x21 Verify the fingerprint passed +#define D_FP_UNKNOWNERROR "Errore" // Any other error #endif // _LANGUAGE_IT_IT_H_ From 203124d678aec6586e46f53823f935314a0ca8cc Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 17:00:44 +0100 Subject: [PATCH 093/293] Add command ``SetOption115 1`` to enable ESP32 MiBle Add command ``SetOption115 1`` to enable ESP32 MiBle --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/settings.h | 7 +- tasmota/support_command.ino | 6 + tasmota/xsns_62_MI_ESP32.ino | 233 +++++++++++++++++------------------ tools/decode-status.py | 5 +- 6 files changed, 127 insertions(+), 126 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe0547c19..2c7ba3cb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) - Zigbee command ``ZbInfo`` and prepare support for EEPROM - Support for AS608 optical and R503 capacitive fingerprint sensor +- Command ``SetOption115 1`` to enable ESP32 MiBle ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4653cf93b..9d87f9de8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -58,6 +58,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0.1 ### Added +- Command ``SetOption115 1`` to enable ESP32 MiBle - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) - Zigbee command ``ZbInfo`` and prepare support for EEPROM - Zigbee support for Mi Door and Contact (#9759) diff --git a/tasmota/settings.h b/tasmota/settings.h index 806c3386f..deaa7fa39 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -139,9 +139,8 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption114 .. SetOption145 - uint32_t mqtt_switches : 1; // bit 0 (V9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes - //uint32_t spare00 : 1; // bit 0 - uint32_t spare01 : 1; // bit 1 + uint32_t mqtt_switches : 1; // bit 0 (v9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes + uint32_t mi32_enable : 1; // bit 1 (v9.1.0.1) - SetOption115 - Enable ESP32 MI32 BLE uint32_t spare02 : 1; // bit 2 uint32_t spare03 : 1; // bit 3 uint32_t spare04 : 1; // bit 4 @@ -636,7 +635,7 @@ struct { uint16_t energy_power_delta[3]; // F44 uint16_t shutter_pwmrange[2][MAX_SHUTTERS]; // F4A uint8_t dimmer_step; // F5A - + uint8_t free_f5b[88]; // F5B - Decrement if adding new Setting variables just above and below // Only 32 bit boundary variables below diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 1ff09237c..b6106b9f5 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -955,6 +955,12 @@ void CmndSetoption(void) } else if (5 == ptype) { // SetOption114 .. 145 bitWrite(Settings.flag5.data, pindex, XdrvMailbox.payload); + switch (pindex) { + case 1: // SetOption115 - Enable ESP32 MI32 + Settings.flag3.sleep_normal = 1; // SetOption60 - Enable normal sleep instead of dynamic sleep + TasmotaGlobal.restart_flag = 2; + break; + } } } else { ptype = 99; // Command Error diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index 4c16dc585..dfbbd7334 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -284,11 +284,17 @@ static BLEScan* MI32Scan; #define D_CMND_MI32 "MI32" -const char S_JSON_MI32_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_MI32 "%s\":%d}"; -const char S_JSON_MI32_COMMAND[] PROGMEM = "{\"" D_CMND_MI32 "%s%s\"}"; -// const char S_JSON_MI32_BCOMMAND_SVALUE[] PROGMEM = "{\"" D_CMND_MI32 "%s\":%s}"; -const char S_JSON_MI32_BCOMMAND_SVALUE[] PROGMEM = "{\"" D_CMND_MI32 "%s%u\":\"%s\"}"; -const char kMI32_Commands[] PROGMEM = "Period|Time|Page|Battery|Unit|Key|Beacon"; +const char kMI32_Commands[] PROGMEM = D_CMND_MI32 "|" +#ifdef USE_MI_DECRYPTION + "Key|" +#endif // USE_MI_DECRYPTION + "Period|Time|Page|Battery|Unit|Beacon"; + +void (*const MI32_Commands[])(void) PROGMEM = { +#ifdef USE_MI_DECRYPTION + &CmndMi32Key, +#endif // USE_MI_DECRYPTION + &CmndMi32Period, &CmndMi32Time, &CmndMi32Page, &CmndMi32Battery, &CmndMi32Unit, &CmndMi32Beacon }; #define FLORA 1 #define MJ_HT_V1 2 @@ -763,11 +769,19 @@ void MI32PreInit(void) { } void MI32Init(void) { - if (MI32.mode.init) return; - if(WiFi.getSleep() == false){ - AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: WiFi modem not in sleep mode, BLE cannot start yet")); + if (MI32.mode.init) { return; } + + if (TasmotaGlobal.global_state.wifi_down) { return; } + if (WiFi.getSleep() == false) { +// AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: WiFi modem not in sleep mode, BLE cannot start yet")); + if (0 == Settings.flag3.sleep_normal) { + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: About to restart to put WiFi modem in sleep mode")); + Settings.flag3.sleep_normal = 1; // SetOption60 - Enable normal sleep instead of dynamic sleep + TasmotaGlobal.restart_flag = 2; + } return; } + if (!MI32.mode.init) { NimBLEDevice::init(""); AddLog_P(LOG_LEVEL_INFO,PSTR("MI32: init BLE device")); @@ -1771,119 +1785,95 @@ void MI32EverySecond(bool restart){ * Commands \*********************************************************************************************/ -bool MI32Cmd(void) { - char command[CMDSZ]; - bool serviced = true; - uint8_t disp_len = strlen(D_CMND_MI32); - - if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_MI32), disp_len)) { // prefix - uint32_t command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + disp_len, kMI32_Commands); - switch (command_code) { - case CMND_MI32_PERIOD: - if (XdrvMailbox.data_len > 0) { - if (XdrvMailbox.payload==1) { - MI32EverySecond(true); - XdrvMailbox.payload = MI32.period; - } - else { - MI32.period = XdrvMailbox.payload; - } - } - else { - XdrvMailbox.payload = MI32.period; - } - Response_P(S_JSON_MI32_COMMAND_NVALUE, command, XdrvMailbox.payload); - break; - case CMND_MI32_TIME: - if (XdrvMailbox.data_len > 0) { - if(MIBLEsensors.size()>XdrvMailbox.payload){ - if(MIBLEsensors[XdrvMailbox.payload].type == LYWSD02 || MIBLEsensors[XdrvMailbox.payload].type == MHOC303){ - AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: will set Time"),D_CMND_MI32); - MI32.state.sensor = XdrvMailbox.payload; - MI32.mode.canScan = 0; - MI32.mode.canConnect = 0; - MI32.mode.shallSetTime = 1; - MI32.mode.willSetTime = 0; - } - } - } - Response_P(S_JSON_MI32_COMMAND_NVALUE, command, XdrvMailbox.payload); - break; - case CMND_MI32_UNIT: - if (XdrvMailbox.data_len > 0) { - if(MIBLEsensors.size()>XdrvMailbox.payload){ - if(MIBLEsensors[XdrvMailbox.payload].type == LYWSD02 || MIBLEsensors[XdrvMailbox.payload].type == MHOC303){ - AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: will set Unit"),D_CMND_MI32); - MI32.state.sensor = XdrvMailbox.payload; - MI32.mode.canScan = 0; - MI32.mode.canConnect = 0; - MI32.mode.shallSetUnit = 1; - MI32.mode.willSetUnit = 0; - } - } - } - Response_P(S_JSON_MI32_COMMAND_NVALUE, command, XdrvMailbox.payload); - break; - case CMND_MI32_PAGE: - if (XdrvMailbox.data_len > 0) { - if (XdrvMailbox.payload == 0) XdrvMailbox.payload = MI32.perPage; // ignore 0 - MI32.perPage = XdrvMailbox.payload; - } - else XdrvMailbox.payload = MI32.perPage; - Response_P(S_JSON_MI32_COMMAND_NVALUE, command, XdrvMailbox.payload); - break; - case CMND_MI32_BATTERY: - MI32EverySecond(true); - MI32.mode.shallReadBatt = 1; - MI32.mode.canConnect = 1; - XdrvMailbox.payload = MI32.period; - Response_P(S_JSON_MI32_COMMAND, command, ""); - break; -#ifdef USE_MI_DECRYPTION - case CMND_MI32_KEY: - if (XdrvMailbox.data_len==44){ // a KEY-MAC-string - MI32AddKey(XdrvMailbox.data); - Response_P(S_JSON_MI32_COMMAND, command, XdrvMailbox.data); - } - break; -#endif //USE_MI_DECRYPTION - case CMND_MI32_BEACON: - if (XdrvMailbox.data_len == 0) { - switch(XdrvMailbox.index){ - case 0: - MI32.state.beaconScanCounter = 8; - Response_P(S_JSON_MI32_BCOMMAND_SVALUE, command, XdrvMailbox.index,PSTR("scanning")); - break; - case 1: case 2: case 3: case 4: - char _MAC[18]; - ToHex_P(MIBLEbeacons[XdrvMailbox.index-1].MAC,6,_MAC,18,':'); - Response_P(S_JSON_MI32_BCOMMAND_SVALUE, command, XdrvMailbox.index,_MAC); - break; - } - } - else { - if(XdrvMailbox.data_len == 12 || XdrvMailbox.data_len == 17){ // MAC-string without or with colons - switch(XdrvMailbox.index){ - case 1: case 2: case 3: case 4: - MI32addBeacon(XdrvMailbox.index,XdrvMailbox.data); - break; - } - } - Response_P(S_JSON_MI32_BCOMMAND_SVALUE, command, XdrvMailbox.index,XdrvMailbox.data); - } - break; - - default: - // else for Unknown command - serviced = false; - break; +void CmndMi32Period(void) { + if (XdrvMailbox.data_len > 0) { + if (1 == XdrvMailbox.payload) { + MI32EverySecond(true); + } else { + MI32.period = XdrvMailbox.payload; } - } else { - return false; } - return serviced; + ResponseCmndNumber(MI32.period); } +void CmndMi32Time(void) { + if (XdrvMailbox.data_len > 0) { + if (MIBLEsensors.size() > XdrvMailbox.payload) { + if ((LYWSD02 == MIBLEsensors[XdrvMailbox.payload].type) || (MHOC303 == MIBLEsensors[XdrvMailbox.payload].type)) { + AddLog_P(LOG_LEVEL_DEBUG, PSTR("MI32: will set Time")); + MI32.state.sensor = XdrvMailbox.payload; + MI32.mode.canScan = 0; + MI32.mode.canConnect = 0; + MI32.mode.shallSetTime = 1; + MI32.mode.willSetTime = 0; + ResponseCmndNumber(XdrvMailbox.payload); + } + } + } +} + +void CmndMi32Page(void) { + if (XdrvMailbox.payload > 0) { + MI32.perPage = XdrvMailbox.payload; + } + ResponseCmndNumber(MI32.perPage); +} + +void CmndMi32Battery(void) { + MI32EverySecond(true); + MI32.mode.shallReadBatt = 1; + MI32.mode.canConnect = 1; + ResponseCmndDone(); +} + +void CmndMi32Unit(void) { + if (XdrvMailbox.data_len > 0) { + if (MIBLEsensors.size() > XdrvMailbox.payload) { + if ((LYWSD02 == MIBLEsensors[XdrvMailbox.payload].type) || (MHOC303 == MIBLEsensors[XdrvMailbox.payload].type)) { + AddLog_P(LOG_LEVEL_DEBUG,PSTR("MI32: will set Unit")); + MI32.state.sensor = XdrvMailbox.payload; + MI32.mode.canScan = 0; + MI32.mode.canConnect = 0; + MI32.mode.shallSetUnit = 1; + MI32.mode.willSetUnit = 0; + ResponseCmndNumber(XdrvMailbox.payload); + } + } + } +} + +#ifdef USE_MI_DECRYPTION +void CmndMi32Key(void) { + if (44 == XdrvMailbox.data_len) { // a KEY-MAC-string + MI32AddKey(XdrvMailbox.data); + ResponseCmndDone(); + } +} +#endif // USE_MI_DECRYPTION + +void CmndMi32Beacon(void) { + if (XdrvMailbox.data_len == 0) { + switch (XdrvMailbox.index) { + case 0: + MI32.state.beaconScanCounter = 8; + ResponseCmndIdxChar(PSTR("Scanning...")); + break; + case 1: case 2: case 3: case 4: + char _MAC[18]; + ResponseCmndIdxChar(ToHex_P(MIBLEbeacons[XdrvMailbox.index-1].MAC, 6, _MAC, 18, ':')); + break; + } + } else { + if ((12 == XdrvMailbox.data_len) || (17 == XdrvMailbox.data_len)) { // MAC-string without or with colons + switch (XdrvMailbox.index) { + case 1: case 2: case 3: case 4: + MI32addBeacon(XdrvMailbox.index, XdrvMailbox.data); + break; + } + } + ResponseCmndIdxChar(XdrvMailbox.data); + } +} /*********************************************************************************************\ * Presentation @@ -2185,13 +2175,16 @@ void MI32Show(bool json) bool Xsns62(uint8_t function) { + if (!Settings.flag5.mi32_enable) { return false; } + bool result = false; + if (FUNC_INIT == function){ MI32PreInit(); } - if(!MI32.mode.init){ - if(function==FUNC_EVERY_250_MSECOND){ + if (!MI32.mode.init) { + if (function == FUNC_EVERY_250_MSECOND) { MI32Init(); } return result; @@ -2204,7 +2197,7 @@ bool Xsns62(uint8_t function) MI32EverySecond(false); break; case FUNC_COMMAND: - result = MI32Cmd(); + result = DecodeCommand(kMI32_Commands, MI32_Commands); break; case FUNC_JSON_APPEND: MI32Show(1); diff --git a/tools/decode-status.py b/tools/decode-status.py index 4c462e31a..1c7a3ba7f 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -169,7 +169,8 @@ a_setoption = [[ "Set dimmer low on rotary dial after power off" ],[ "Detach Switches from Relays and enable MQTT action state for all the SwitchModes", - "","","", + "Enable ESP32 MI32 BLE", + "","", "","","","", "","","","", "","","","", @@ -269,7 +270,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20201110 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20201113 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From c1b0a50630410b240a2f87249195b6cafa99d1a7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 13 Nov 2020 17:09:43 +0100 Subject: [PATCH 094/293] Add info --- tasmota/xsns_62_MI_ESP32.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_62_MI_ESP32.ino b/tasmota/xsns_62_MI_ESP32.ino index dfbbd7334..b79d13e09 100644 --- a/tasmota/xsns_62_MI_ESP32.ino +++ b/tasmota/xsns_62_MI_ESP32.ino @@ -2175,7 +2175,7 @@ void MI32Show(bool json) bool Xsns62(uint8_t function) { - if (!Settings.flag5.mi32_enable) { return false; } + if (!Settings.flag5.mi32_enable) { return false; } // SetOption115 - Enable ESP32 MI32 BLE bool result = false; From 0073572f47c457cc505e3c76afb3729e16778d3e Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 17:40:51 +0100 Subject: [PATCH 095/293] Esp32 sleep override not needed anymore since code does take care now --- tasmota/tasmota_globals.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index f32c233d6..93193c98a 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -357,9 +357,6 @@ const char kWebColors[] PROGMEM = #define FALLBACK_MODULE WEMOS // [Module2] Select default module on fast reboot where USER_MODULE is user template #endif -#undef APP_NORMAL_SLEEP // ESP32 with BT needs API sleep! -#define APP_NORMAL_SLEEP true // [SetOption60] Enable normal sleep instead of dynamic sleep - #ifndef ARDUINO_ESP32_RELEASE #define ARDUINO_CORE_RELEASE "STAGE" #else From 121687088e793d696520b4c66e561d4fc326dff5 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 13 Nov 2020 18:55:06 +0100 Subject: [PATCH 096/293] Zigbee support more alarms types (#9839) * Zigbee support more alarms types * Forgot Fire, and renamed Leak to Water Co-authored-by: Stephan Hadinger --- tasmota/xdrv_23_zigbee_2_devices.ino | 48 ++-- tasmota/xdrv_23_zigbee_5__constants.ino | 280 +++++++++++++----------- tasmota/xdrv_23_zigbee_5_converters.ino | 21 +- tasmota/xdrv_23_zigbee_6_commands.ino | 6 +- 4 files changed, 200 insertions(+), 155 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_2_devices.ino b/tasmota/xdrv_23_zigbee_2_devices.ino index 8163c572d..4c66bff95 100644 --- a/tasmota/xdrv_23_zigbee_2_devices.ino +++ b/tasmota/xdrv_23_zigbee_2_devices.ino @@ -308,6 +308,19 @@ void Z_Data_PIR::setTimeoutSeconds(int32_t value) { /*********************************************************************************************\ * Device specific: Sensors: temp, humidity, pressure... \*********************************************************************************************/ +enum Z_Alarm_Type { + ZA_CIE = 0x0, + ZA_PIR = 0x1, + ZA_Contact = 0x2, + ZA_Fire = 0x3, + ZA_Water = 0x4, + ZA_CO = 0x5, + ZA_Personal = 0x6, + ZA_Movement = 0x7, + ZA_Panic = 0x8, + ZA_GlassBreak =0x9, +}; + class Z_Data_Thermo : public Z_Data { public: Z_Data_Thermo(uint8_t endpoint = 0) : @@ -361,18 +374,18 @@ typedef union Z_Alarm_Types_t { } Z_Alarm_Types_t; static const Z_Alarm_Types_t Z_Alarm_Types[] PROGMEM = { - { .t = { 0x000, 0x0 }}, // 0x0 : Standard CIE - { .t = { 0x00d, 0x1 }}, // 0x1 : PIR - { .t = { 0x015, 0x2 }}, // 0x2 : Contact - { .t = { 0x028, 0x3 }}, // 0x3 : Fire - { .t = { 0x02a, 0x4 }}, // 0x4 : Leak - { .t = { 0x02b, 0x5 }}, // 0x5 : CO - { .t = { 0x02c, 0x6 }}, // 0x6 : Personal - { .t = { 0x02d, 0x7 }}, // 0x7 : Movement - { .t = { 0x10f, 0x8 }}, // 0x8 : Panic - { .t = { 0x115, 0x8 }}, // 0x8 : Panic - { .t = { 0x21d, 0x8 }}, // 0x8 : Panic - { .t = { 0x226, 0x9 }}, // 0x9 : Glass break + { .t = { 0x000, ZA_CIE }}, // 0x0 : Standard CIE + { .t = { 0x00d, ZA_PIR }}, // 0x1 : PIR + { .t = { 0x015, ZA_Contact }}, // 0x2 : Contact + { .t = { 0x028, ZA_Fire }}, // 0x3 : Fire + { .t = { 0x02a, ZA_Water }}, // 0x4 : Leak + { .t = { 0x02b, ZA_CO }}, // 0x5 : CO + { .t = { 0x02c, ZA_Personal }}, // 0x6 : Personal + { .t = { 0x02d, ZA_Movement }}, // 0x7 : Movement + { .t = { 0x10f, ZA_Panic }}, // 0x8 : Panic + { .t = { 0x115, ZA_Panic }}, // 0x8 : Panic + { .t = { 0x21d, ZA_Panic }}, // 0x8 : Panic + { .t = { 0x226, ZA_GlassBreak }}, // 0x9 : Glass break }; class Z_Data_Alarm : public Z_Data { @@ -387,8 +400,15 @@ public: inline bool validZoneType(void) const { return 0xFFFF != zone_type; } inline uint16_t getZoneType(void) const { return zone_type; } - inline bool isPIR(void) const { return 0x1 == _config; } - inline bool isContact(void) const { return 0x2 == _config; } + inline bool isPIR(void) const { return ZA_PIR == _config; } + inline bool isContact(void) const { return ZA_Contact == _config; } + inline bool isFire(void) const { return ZA_Fire == _config; } + inline bool isWater(void) const { return ZA_Water == _config; } + inline bool isCO(void) const { return ZA_CO == _config; } + inline bool isPersonalAlarm(void) const { return ZA_Personal == _config; } + inline bool isMovement(void) const { return ZA_Movement == _config; } + inline bool isPanic(void) const { return ZA_Panic == _config; } + inline bool isGlassBreak(void) const { return ZA_GlassBreak == _config; } inline void setZoneType(uint16_t _zone_type) { zone_type = _zone_type; } diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 405f51068..b9af8d092 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -341,7 +341,15 @@ const char Z_strings[] PROGMEM = "ZoneState" "\x00" "ZoneType" "\x00" "ZoneStatus" "\x00" + "CIE" "\x00" "Contact" "\x00" + "Fire" "\x00" + "Water" "\x00" + "CO" "\x00" + "PersonalAlarm" "\x00" + "Movement" "\x00" + "Panic" "\x00" + "GlassBreak" "\x00" "CurrentSummDelivered" "\x00" "CompanyName" "\x00" "MeterTypeID" "\x00" @@ -743,138 +751,146 @@ enum Z_offsets { Zo_ZoneState = 4540, Zo_ZoneType = 4550, Zo_ZoneStatus = 4559, - Zo_Contact = 4570, - Zo_CurrentSummDelivered = 4578, - Zo_CompanyName = 4599, - Zo_MeterTypeID = 4611, - Zo_DataQualityID = 4623, - Zo_CustomerName = 4637, - Zo_Model = 4650, - Zo_PartNumber = 4656, - Zo_ProductRevision = 4667, - Zo_SoftwareRevision = 4683, - Zo_UtilityName = 4700, - Zo_POD = 4712, - Zo_AvailablePower = 4716, - Zo_PowerThreshold = 4731, - Zo_RMSVoltage = 4746, - Zo_RMSCurrent = 4757, - Zo_ActivePower = 4768, - Zo_NumberOfResets = 4780, - Zo_PersistentMemoryWrites = 4795, - Zo_LastMessageLQI = 4818, - Zo_LastMessageRSSI = 4833, - Zo_TuyaScheduleWorkdays = 4849, - Zo_TuyaScheduleHolidays = 4870, - Zo_TuyaChildLock = 4891, - Zo_TuyaWindowDetection = 4905, - Zo_TuyaValveDetection = 4925, - Zo_TuyaAutoLock = 4944, - Zo_TuyaTempTarget = 4957, - Zo_TuyaBattery = 4972, - Zo_TuyaMinTemp = 4984, - Zo_TuyaMaxTemp = 4996, - Zo_TuyaBoostTime = 5008, - Zo_TuyaComfortTemp = 5022, - Zo_TuyaEcoTemp = 5038, - Zo_TuyaValvePosition = 5050, - Zo_TuyaAwayTemp = 5068, - Zo_TuyaAwayDays = 5081, - Zo_TuyaPreset = 5094, - Zo_TuyaFanMode = 5105, - Zo_TuyaForceMode = 5117, - Zo_TuyaWeekSelect = 5131, - Zo_TerncyDuration = 5146, - Zo_TerncyRotate = 5161, - Zo_Identify = 5174, - Zo_xxxx = 5183, - Zo_IdentifyQuery = 5188, - Zo_AddGroup = 5202, - Zo_xxxx00 = 5211, - Zo_ViewGroup = 5218, - Zo_GetGroup = 5228, - Zo_01xxxx = 5237, - Zo_GetAllGroups = 5244, - Zo_00 = 5257, - Zo_RemoveGroup = 5260, - Zo_RemoveAllGroups = 5272, - Zo_ViewScene = 5288, - Zo_xxxxyy = 5298, - Zo_RemoveScene = 5305, - Zo_RemoveAllScenes = 5317, - Zo_RecallScene = 5333, - Zo_GetSceneMembership = 5345, - Zo_PowerOffEffect = 5364, - Zo_xxyy = 5379, - Zo_PowerOnRecall = 5384, - Zo_PowerOnTimer = 5398, - Zo_xxyyyyzzzz = 5411, - Zo_xx0A00 = 5422, - Zo_DimmerUp = 5429, - Zo_00190200 = 5438, - Zo_DimmerDown = 5447, - Zo_01190200 = 5458, - Zo_DimmerStop = 5467, - Zo_ResetAlarm = 5478, - Zo_xxyyyy = 5489, - Zo_ResetAllAlarms = 5496, - Zo_xx000A00 = 5511, - Zo_HueSat = 5520, - Zo_xxyy0A00 = 5527, - Zo_Color = 5536, - Zo_xxxxyyyy0A00 = 5542, - Zo_xxxx0A00 = 5555, - Zo_ShutterOpen = 5564, - Zo_ShutterClose = 5576, - Zo_ShutterStop = 5589, - Zo_ShutterLift = 5601, - Zo_xx = 5613, - Zo_ShutterTilt = 5616, - Zo_Shutter = 5628, - Zo_DimmerMove = 5636, - Zo_xx0A = 5647, - Zo_DimmerStepUp = 5652, - Zo_00xx0A00 = 5665, - Zo_DimmerStepDown = 5674, - Zo_01xx0A00 = 5689, - Zo_DimmerStep = 5698, - Zo_xx190A00 = 5709, - Zo_01 = 5718, - Zo_HueMove = 5721, - Zo_xx19 = 5729, - Zo_HueStepUp = 5734, - Zo_HueStepDown = 5744, - Zo_03xx0A00 = 5756, - Zo_HueStep = 5765, - Zo_SatMove = 5773, - Zo_SatStep = 5781, - Zo_xx190A = 5789, - Zo_ColorMove = 5796, - Zo_xxxxyyyy = 5806, - Zo_ColorStep = 5815, - Zo_ColorTempMoveUp = 5825, - Zo_01xxxx000000000000 = 5841, - Zo_ColorTempMoveDown = 5860, - Zo_03xxxx000000000000 = 5878, - Zo_ColorTempMoveStop = 5897, - Zo_00xxxx000000000000 = 5915, - Zo_ColorTempMove = 5934, - Zo_xxyyyy000000000000 = 5948, - Zo_ColorTempStepUp = 5967, - Zo_01xxxx0A0000000000 = 5983, - Zo_ColorTempStepDown = 6002, - Zo_03xxxx0A0000000000 = 6020, - Zo_ColorTempStep = 6039, - Zo_xxyyyy0A0000000000 = 6053, - Zo_ArrowClick = 6072, - Zo_ArrowHold = 6083, - Zo_ArrowRelease = 6093, - Zo_ZoneStatusChange = 6106, - Zo_xxxxyyzz = 6123, - Zo_xxyyzzzz = 6132, - Zo_AddScene = 6141, - Zo_xxyyyyzz = 6150, - Zo_StoreScene = 6159, + Zo_CIE = 4570, + Zo_Contact = 4574, + Zo_Fire = 4582, + Zo_Water = 4587, + Zo_CO = 4593, + Zo_PersonalAlarm = 4596, + Zo_Movement = 4610, + Zo_Panic = 4619, + Zo_GlassBreak = 4625, + Zo_CurrentSummDelivered = 4636, + Zo_CompanyName = 4657, + Zo_MeterTypeID = 4669, + Zo_DataQualityID = 4681, + Zo_CustomerName = 4695, + Zo_Model = 4708, + Zo_PartNumber = 4714, + Zo_ProductRevision = 4725, + Zo_SoftwareRevision = 4741, + Zo_UtilityName = 4758, + Zo_POD = 4770, + Zo_AvailablePower = 4774, + Zo_PowerThreshold = 4789, + Zo_RMSVoltage = 4804, + Zo_RMSCurrent = 4815, + Zo_ActivePower = 4826, + Zo_NumberOfResets = 4838, + Zo_PersistentMemoryWrites = 4853, + Zo_LastMessageLQI = 4876, + Zo_LastMessageRSSI = 4891, + Zo_TuyaScheduleWorkdays = 4907, + Zo_TuyaScheduleHolidays = 4928, + Zo_TuyaChildLock = 4949, + Zo_TuyaWindowDetection = 4963, + Zo_TuyaValveDetection = 4983, + Zo_TuyaAutoLock = 5002, + Zo_TuyaTempTarget = 5015, + Zo_TuyaBattery = 5030, + Zo_TuyaMinTemp = 5042, + Zo_TuyaMaxTemp = 5054, + Zo_TuyaBoostTime = 5066, + Zo_TuyaComfortTemp = 5080, + Zo_TuyaEcoTemp = 5096, + Zo_TuyaValvePosition = 5108, + Zo_TuyaAwayTemp = 5126, + Zo_TuyaAwayDays = 5139, + Zo_TuyaPreset = 5152, + Zo_TuyaFanMode = 5163, + Zo_TuyaForceMode = 5175, + Zo_TuyaWeekSelect = 5189, + Zo_TerncyDuration = 5204, + Zo_TerncyRotate = 5219, + Zo_Identify = 5232, + Zo_xxxx = 5241, + Zo_IdentifyQuery = 5246, + Zo_AddGroup = 5260, + Zo_xxxx00 = 5269, + Zo_ViewGroup = 5276, + Zo_GetGroup = 5286, + Zo_01xxxx = 5295, + Zo_GetAllGroups = 5302, + Zo_00 = 5315, + Zo_RemoveGroup = 5318, + Zo_RemoveAllGroups = 5330, + Zo_ViewScene = 5346, + Zo_xxxxyy = 5356, + Zo_RemoveScene = 5363, + Zo_RemoveAllScenes = 5375, + Zo_RecallScene = 5391, + Zo_GetSceneMembership = 5403, + Zo_PowerOffEffect = 5422, + Zo_xxyy = 5437, + Zo_PowerOnRecall = 5442, + Zo_PowerOnTimer = 5456, + Zo_xxyyyyzzzz = 5469, + Zo_xx0A00 = 5480, + Zo_DimmerUp = 5487, + Zo_00190200 = 5496, + Zo_DimmerDown = 5505, + Zo_01190200 = 5516, + Zo_DimmerStop = 5525, + Zo_ResetAlarm = 5536, + Zo_xxyyyy = 5547, + Zo_ResetAllAlarms = 5554, + Zo_xx000A00 = 5569, + Zo_HueSat = 5578, + Zo_xxyy0A00 = 5585, + Zo_Color = 5594, + Zo_xxxxyyyy0A00 = 5600, + Zo_xxxx0A00 = 5613, + Zo_ShutterOpen = 5622, + Zo_ShutterClose = 5634, + Zo_ShutterStop = 5647, + Zo_ShutterLift = 5659, + Zo_xx = 5671, + Zo_ShutterTilt = 5674, + Zo_Shutter = 5686, + Zo_DimmerMove = 5694, + Zo_xx0A = 5705, + Zo_DimmerStepUp = 5710, + Zo_00xx0A00 = 5723, + Zo_DimmerStepDown = 5732, + Zo_01xx0A00 = 5747, + Zo_DimmerStep = 5756, + Zo_xx190A00 = 5767, + Zo_01 = 5776, + Zo_HueMove = 5779, + Zo_xx19 = 5787, + Zo_HueStepUp = 5792, + Zo_HueStepDown = 5802, + Zo_03xx0A00 = 5814, + Zo_HueStep = 5823, + Zo_SatMove = 5831, + Zo_SatStep = 5839, + Zo_xx190A = 5847, + Zo_ColorMove = 5854, + Zo_xxxxyyyy = 5864, + Zo_ColorStep = 5873, + Zo_ColorTempMoveUp = 5883, + Zo_01xxxx000000000000 = 5899, + Zo_ColorTempMoveDown = 5918, + Zo_03xxxx000000000000 = 5936, + Zo_ColorTempMoveStop = 5955, + Zo_00xxxx000000000000 = 5973, + Zo_ColorTempMove = 5992, + Zo_xxyyyy000000000000 = 6006, + Zo_ColorTempStepUp = 6025, + Zo_01xxxx0A0000000000 = 6041, + Zo_ColorTempStepDown = 6060, + Zo_03xxxx0A0000000000 = 6078, + Zo_ColorTempStep = 6097, + Zo_xxyyyy0A0000000000 = 6111, + Zo_ArrowClick = 6130, + Zo_ArrowHold = 6141, + Zo_ArrowRelease = 6151, + Zo_ZoneStatusChange = 6164, + Zo_xxxxyyzz = 6181, + Zo_xxyyzzzz = 6190, + Zo_AddScene = 6199, + Zo_xxyyyyzz = 6208, + Zo_StoreScene = 6217, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 7ed706771..7b2cb29b2 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -557,10 +557,19 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zunk, Cx0406, 0xFFFF, Z_(), Cm0, 0 }, // Remove all other values // IAS Cluster (Intruder Alarm System) - { Zenum8, Cx0500, 0x0000, Z_(ZoneState), Cm1, 0 }, // Occupancy (map8) - { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor - { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor - { Zbool, Cx0500, 0xFFF0, Z_(Contact), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // We fit the first bit in the LSB + { Zenum8, Cx0500, 0x0000, Z_(ZoneState), Cm1, 0 }, // Occupancy (map8) + { Zenum16, Cx0500, 0x0001, Z_(ZoneType), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_type) }, // Zone type for sensor + { Zmap16, Cx0500, 0x0002, Z_(ZoneStatus), Cm1 + Z_EXPORT_DATA, Z_MAPPING(Z_Data_Alarm, zone_status) }, // Zone status for sensor + { Zuint8, Cx0500, 0xFFF0 + ZA_CIE, Z_(CIE), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_PIR, Z_(Occupancy), Cm1, 0 }, // normally converted to the actual Occupancy 0406/0000 + { Zuint8, Cx0500, 0xFFF0 + ZA_Contact, Z_(Contact), Cm1, Z_MAPPING(Z_Data_Alarm, zone_status) }, // We fit the first bit in the LSB + { Zuint8, Cx0500, 0xFFF0 + ZA_Fire, Z_(Fire), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_Water, Z_(Water), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_CO, Z_(CO), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_Personal, Z_(PersonalAlarm),Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_Movement, Z_(Movement), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_Panic, Z_(Panic), Cm1, 0 }, + { Zuint8, Cx0500, 0xFFF0 + ZA_GlassBreak, Z_(GlassBreak),Cm1, 0 }, // Metering (Smart Energy) cluster { Zuint48, Cx0702, 0x0000, Z_(CurrentSummDelivered), Cm1, 0 }, @@ -1247,7 +1256,7 @@ void ZCLFrame::computeSyntheticAttributes(Z_attribute_list& attr_list) { break; case 0x00060000: // "Power" for lumi Door/Window is converted to "Contact" if (modelId.startsWith(F("lumi.sensor_magnet"))) { - attr.setKeyId(0x0500, 0xFFF0); // change cluster and attribute to 0500/FFF0 + attr.setKeyId(0x0500, 0xFFF0 + ZA_Contact); // change cluster and attribute to 0500/FFF0 } break; case 0x02010008: // Pi Heating Demand - solve Eutotronic bug @@ -1567,7 +1576,7 @@ void ZCLFrame::syntheticAqaraSensor(Z_attribute_list &attr_list, class Z_attribu translated = true; if (modelId.startsWith(F("lumi.sensor_magnet"))) { // door / window sensor if (0x64 == attrid) { - attr_list.addAttribute(0x0500, 0xFFF0).copyVal(attr); // Contact + attr_list.addAttribute(0x0500, 0xFFF0 + ZA_Contact).copyVal(attr); // Contact } } else if (modelId.startsWith(F("lumi.sensor_smoke"))) { // gas leak if (0x64 == attrid) { diff --git a/tasmota/xdrv_23_zigbee_6_commands.ino b/tasmota/xdrv_23_zigbee_6_commands.ino index 5c1a1aeae..b5f0296da 100644 --- a/tasmota/xdrv_23_zigbee_6_commands.ino +++ b/tasmota/xdrv_23_zigbee_6_commands.ino @@ -356,11 +356,11 @@ void convertClusterSpecific(class Z_attribute_list &attr_list, uint16_t cluster, } // Convert to "Occupancy" or to "Contact" if the device is PIR or Contact sensor const Z_Data_Alarm & alarm = (const Z_Data_Alarm&) zigbee_devices.getShortAddr(shortaddr).data.find(Z_Data_Type::Z_Alarm, srcendpoint); - if (&alarm != nullptr) { + if ((&alarm != nullptr) && (alarm.validConfig())) { if (alarm.isPIR()) { // set Occupancy attr_list.addAttribute(0x0406, 0x0000).setUInt((xyz.x) & 0x01 ? 1 : 0); - } else if (alarm.isContact()) { // set Contact - attr_list.addAttribute(0x0500, 0xFFF0).setUInt((xyz.x) & 0x01 ? 1 : 0); + } else { // all other cases + attr_list.addAttribute(0x0500, 0xFFF0 + alarm.getConfig()).setUInt(xyz.x); } } } From 092139e4c4f786ae90f11be704b008ec5e86b35a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 19:01:13 +0100 Subject: [PATCH 097/293] MI_ESP32 enabled in sensors build. BT is enabled in ESP8266 as default too. --- tasmota/tasmota_configurations.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 756fdbc83..68fcddff2 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -164,7 +164,7 @@ #define USE_IBEACON // Add support for bluetooth LE passive scan of ibeacon devices (uses HM17 module) //#define USE_GPS // Add support for GPS and NTP Server for becoming Stratus 1 Time Source (+ 3.1kb flash, +132 bytes RAM) #define USE_HM10 // (ESP8266 only) Add support for HM-10 as a BLE-bridge for the LYWSD03 (+5k1 code) -//#define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #define USE_HRXL // Add support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) //#define USE_TASMOTA_CLIENT // Add support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) //#define USE_OPENTHERM // Add support for OpenTherm (+15k code) From 8e5205f35f9d6b4c253a783a44ec0ece3c4935a9 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 19:08:54 +0100 Subject: [PATCH 098/293] Update platformio_tasmota_env32.ini --- platformio_tasmota_env32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 77eb654f6..4fd87373c 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -54,7 +54,7 @@ lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_div [env:tasmota32-sensors] extends = env:tasmota32 build_flags = ${common32.build_flags} -DFIRMWARE_SENSORS -lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div +lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl [env:tasmota32-display] extends = env:tasmota32 From 698dd755de3dcfcfa01fe1a973db1b1ae39736cf Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 13 Nov 2020 19:23:35 +0100 Subject: [PATCH 099/293] Zigbee command ``ZbLeave`` to unpair a device --- CHANGELOG.md | 1 + tasmota/i18n.h | 1 + tasmota/xdrv_23_zigbee_A_impl.ino | 38 +++++++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c7ba3cb1..7562fc9a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Zigbee command ``ZbInfo`` and prepare support for EEPROM - Support for AS608 optical and R503 capacitive fingerprint sensor - Command ``SetOption115 1`` to enable ESP32 MiBle +- Zigbee command ``ZbLeave`` to unpair a device ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 3d8254960..9a0528c9e 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -572,6 +572,7 @@ #define D_JSON_ZIGBEE_UNBIND "ZbUnbind" #define D_CMND_ZIGBEE_BIND_STATE "BindState" #define D_JSON_ZIGBEE_BIND_STATE "ZbBindState" +#define D_CMND_ZIGBEE_LEAVE "Leave" #define D_CMND_ZIGBEE_MAP "Map" #define D_JSON_ZIGBEE_MAP "ZbMap" #define D_JSON_ZIGBEE_PARENT "ZbParent" diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index c1066b296..7acd3e4a1 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -33,7 +33,7 @@ const char kZbCommands[] PROGMEM = D_PRFX_ZB "|" // prefix D_CMND_ZIGBEE_INFO "|" D_CMND_ZIGBEE_FORGET "|" D_CMND_ZIGBEE_SAVE "|" D_CMND_ZIGBEE_NAME "|" D_CMND_ZIGBEE_BIND "|" D_CMND_ZIGBEE_UNBIND "|" D_CMND_ZIGBEE_PING "|" D_CMND_ZIGBEE_MODELID "|" D_CMND_ZIGBEE_LIGHT "|" D_CMND_ZIGBEE_OCCUPANCY "|" - D_CMND_ZIGBEE_RESTORE "|" D_CMND_ZIGBEE_BIND_STATE "|" D_CMND_ZIGBEE_MAP "|" + D_CMND_ZIGBEE_RESTORE "|" D_CMND_ZIGBEE_BIND_STATE "|" D_CMND_ZIGBEE_MAP "|" D_CMND_ZIGBEE_LEAVE "|" D_CMND_ZIGBEE_CONFIG "|" D_CMND_ZIGBEE_DATA ; @@ -49,7 +49,7 @@ void (* const ZigbeeCommand[])(void) PROGMEM = { &CmndZbInfo, &CmndZbForget, &CmndZbSave, &CmndZbName, &CmndZbBind, &CmndZbUnbind, &CmndZbPing, &CmndZbModelId, &CmndZbLight, &CmndZbOccupancy, - &CmndZbRestore, &CmndZbBindState, &CmndZbMap, + &CmndZbRestore, &CmndZbBindState, &CmndZbMap, CmndZbLeave, &CmndZbConfig, CmndZbData, }; @@ -943,6 +943,40 @@ void CmndZbUnbind(void) { ZbBindUnbind(true); } +// +// ZbLeave - ask for a device to leave the network +// +void CmndZbLeave(void) { + if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } + uint16_t shortaddr = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true).shortaddr; + if (BAD_SHORTADDR == shortaddr) { ResponseCmndChar_P(PSTR("Unknown device")); return; } + +#ifdef USE_ZIGBEE_ZNP + SBuffer buf(14); + buf.add8(Z_SREQ | Z_ZDO); // 25 + buf.add8(ZDO_MGMT_LEAVE_REQ); // 34 + buf.add16(shortaddr); // shortaddr + buf.add64(0); // remove self + buf.add8(0x00); // don't rejoin and don't remove children + + ZigbeeZNPSend(buf.getBuffer(), buf.len()); +#endif // USE_ZIGBEE_ZNP + + +#ifdef USE_ZIGBEE_EZSP + // ZDO message payload (see Zigbee spec 2.4.3.3.4) + SBuffer buf(10); + buf.add64(0); // remove self + buf.add8(0x00); // don't rejoin and don't remove children + + EZ_SendZDO(shortaddr, ZDO_MGMT_LEAVE_REQ, buf.getBuffer(), buf.len()); +#endif // USE_ZIGBEE_EZSP + + ResponseCmndDone(); +} + + + void CmndZbBindState_or_Map(uint16_t zdo_cmd) { if (zigbee.init_phase) { ResponseCmndChar_P(PSTR(D_ZIGBEE_NOT_STARTED)); return; } uint16_t shortaddr = zigbee_devices.parseDeviceFromName(XdrvMailbox.data, true).shortaddr; From 9f18c21f8697bbf0927c34fc4ca3c9918dc53da1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 19:29:49 +0100 Subject: [PATCH 100/293] Enable MI_ESP32 by default --- tasmota/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 90c1a009d..e183a68fa 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -816,7 +816,7 @@ #define USE_ADC // Add support for ADC on GPIO32 to GPIO39 //#define USE_SPI // Add support for hardware SPI -//#define USE_MI_ESP32 // Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#define USE_MI_ESP32 // Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) //#define USE_WEBCAM // Add support for webcam #endif From 63d09dcfdda7e2ca110f18152314574f2f1aed6c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 20:18:20 +0100 Subject: [PATCH 101/293] No MI_ESP32 --- tasmota/tasmota_configurations.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 68fcddff2..7c2a35e15 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -227,6 +227,8 @@ #undef USE_EMULATION_WEMO // Disable Belkin WeMo emulation for Alexa (+6k code, +2k mem common) #undef USE_DEEPSLEEP // Disable support for deepsleep (+1k code) #undef USE_DEVICE_GROUPS // Disable support for device groups (+3k5 code) +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) + #undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer #undef DEBUG_THEO // Disable debug code #undef USE_DEBUG_DRIVER // Disable debug code @@ -283,6 +285,7 @@ #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry #undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #define USE_I2C // I2C using library wire (+10k code, 0k2 mem, 124 iram) From 41b1789af251d4544a1b2639fed4c2f028c45e44 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 13 Nov 2020 20:20:55 +0100 Subject: [PATCH 102/293] No MI_ESP32 --- tasmota/tasmota_configurations_ESP32.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index b551c78ef..86e27a534 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -33,6 +33,7 @@ #define CODE_IMAGE_STR "webcam" #define USE_WEBCAM +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #endif // FIRMWARE_WEBCAM #endif // ESP32 From 53bcfd5ef87ea9228600cf5076772dea6efd8dbc Mon Sep 17 00:00:00 2001 From: TheChatty Date: Sat, 14 Nov 2020 00:35:21 +0100 Subject: [PATCH 103/293] SML: Clean code for NO_OP meter Removing description for NO_OP meter saves about 80 bytes. --- tasmota/xsns_53_sml.ino | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tasmota/xsns_53_sml.ino b/tasmota/xsns_53_sml.ino index 40e206a4e..5356efb04 100755 --- a/tasmota/xsns_53_sml.ino +++ b/tasmota/xsns_53_sml.ino @@ -117,10 +117,8 @@ struct METER_DESC { #if METER==SML_NO_OP #undef METERS_USED #define METERS_USED 0 -struct METER_DESC const meter_desc[1]={ - [0]={3,'o',0,SML_BAUDRATE,"OBIS",-1,1,0}}; -const uint8_t meter[]= -"1,1-0:1.8.0*255(@1," D_TPWRIN ",kWh," DJ_TPWRIN ",4|"; +struct METER_DESC const meter_desc[]={}; +const uint8_t meter[]=""; #endif From 5947f3516b14169c49872235f79ea393fb3906c0 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 14 Nov 2020 10:57:24 +0100 Subject: [PATCH 104/293] Use ESP32 stage core for entry `[core32_stage]` since the core 1.0.4.2 is Tasmota standard and not stage anymore --- platformio_override_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 60b3628b0..ab35d9707 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -125,7 +125,7 @@ lib_extra_dirs = ${library.lib_extra_dirs} [core32_stage] platform = espressif32 @ 2.0.0 platform_packages = tool-esptoolpy @ 1.20800.0 - framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.4.2/esp32-1.0.4.2.zip + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#idf-release/v3.3 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} -DESP32_STAGE=true From dd8bb39a0239ca37a649af970b267eb586a1bbab Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 14 Nov 2020 11:15:41 +0100 Subject: [PATCH 105/293] Zigbee ``SetOption116 1`` to disable auto-query of light devices (avoids network storms with large groups) (#9847) Co-authored-by: Stephan Hadinger --- CHANGELOG.md | 1 + tasmota/settings.h | 2 +- tasmota/xdrv_23_zigbee_0_constants.ino | 2 -- tasmota/xdrv_23_zigbee_5_converters.ino | 11 ++++++----- tasmota/xdrv_23_zigbee_7_statemachine.ino | 2 -- tasmota/xdrv_23_zigbee_8_parsers.ino | 12 +++++++----- tasmota/xdrv_23_zigbee_A_impl.ino | 7 ++++--- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7562fc9a9..179921dd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. - Support for AS608 optical and R503 capacitive fingerprint sensor - Command ``SetOption115 1`` to enable ESP32 MiBle - Zigbee command ``ZbLeave`` to unpair a device +- Zigbee ``SetOption116 1`` to disable auto-query of light devices (avoids network storms with large groups) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/tasmota/settings.h b/tasmota/settings.h index deaa7fa39..76e499281 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -141,7 +141,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu struct { // SetOption114 .. SetOption145 uint32_t mqtt_switches : 1; // bit 0 (v9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes uint32_t mi32_enable : 1; // bit 1 (v9.1.0.1) - SetOption115 - Enable ESP32 MI32 BLE - uint32_t spare02 : 1; // bit 2 + uint32_t zb_disable_autoquery : 1; // bit 2 (v9.1.0.1) - SetOption116 - Disable auto-query of lights and devices uint32_t spare03 : 1; // bit 3 uint32_t spare04 : 1; // bit 4 uint32_t spare05 : 1; // bit 5 diff --git a/tasmota/xdrv_23_zigbee_0_constants.ino b/tasmota/xdrv_23_zigbee_0_constants.ino index 857279f48..50c9e4eee 100644 --- a/tasmota/xdrv_23_zigbee_0_constants.ino +++ b/tasmota/xdrv_23_zigbee_0_constants.ino @@ -26,8 +26,6 @@ #error "You must select one of: #define USE_ZIGBEE_ZNP or #define USE_ZIGBEE_EZSP" #endif -// #define USE_ZIGBEE_NO_READ_ATTRIBUTES // disable automatic READ ATTRIBUTES generated by Z2T - for debugging only - #define OCCUPANCY "Occupancy" // global define for Aqara #define ZIGBEE_EZSP_RESET_LED 4 // Led number to drive the EZSP Reset pin diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 7b2cb29b2..5b1f5f0d5 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -1538,13 +1538,14 @@ void ZCLFrame::parseResponse(void) { // Parse non-normalized attributes void ZCLFrame::parseClusterSpecificCommand(Z_attribute_list& attr_list) { convertClusterSpecific(attr_list, _cluster_id, _cmd_id, _frame_control.b.direction, _srcaddr, _srcendpoint, _payload); -#ifndef USE_ZIGBEE_NO_READ_ATTRIBUTES // read attributes unless disabled - if (!_frame_control.b.direction) { // only handle server->client (i.e. device->coordinator) - if (_wasbroadcast) { // only update for broadcast messages since we don't see unicast from device to device and we wouldn't know the target - sendHueUpdate(BAD_SHORTADDR, _groupaddr, _cluster_id); + if (!Settings.flag5.zb_disable_autoquery) { + // read attributes unless disabled + if (!_frame_control.b.direction) { // only handle server->client (i.e. device->coordinator) + if (_wasbroadcast) { // only update for broadcast messages since we don't see unicast from device to device and we wouldn't know the target + sendHueUpdate(BAD_SHORTADDR, _groupaddr, _cluster_id); + } } } -#endif } // ====================================================================== diff --git a/tasmota/xdrv_23_zigbee_7_statemachine.ino b/tasmota/xdrv_23_zigbee_7_statemachine.ino index 65da03d24..1cbb29d5d 100644 --- a/tasmota/xdrv_23_zigbee_7_statemachine.ino +++ b/tasmota/xdrv_23_zigbee_7_statemachine.ino @@ -868,9 +868,7 @@ static const Zigbee_Instruction zb_prog[] PROGMEM = { ZI_LOG(LOG_LEVEL_INFO, kZigbeeStarted) ZI_CALL(&Z_State_Ready, 1) // Now accept incoming messages ZI_CALL(&Z_Load_Devices, 0) -#ifndef USE_ZIGBEE_NO_READ_ATTRIBUTES ZI_CALL(&Z_Query_Bulbs, 0) -#endif ZI_LABEL(ZIGBEE_LABEL_MAIN_LOOP) ZI_WAIT_FOREVER() diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 26bbe45e8..8e3bffc6f 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -1885,11 +1885,13 @@ void Z_Query_Bulb(uint16_t shortaddr, uint32_t &wait_ms) { // Send messages to query the state of each Hue emulated light // int32_t Z_Query_Bulbs(uint8_t value) { - // Scan all devices and send deferred requests to know the state of bulbs - uint32_t wait_ms = 1000; // start with 1.0 s delay - for (uint32_t i = 0; i < zigbee_devices.devicesSize(); i++) { - const Z_Device &device = zigbee_devices.devicesAt(i); - Z_Query_Bulb(device.shortaddr, wait_ms); + if (!Settings.flag5.zb_disable_autoquery) { + // Scan all devices and send deferred requests to know the state of bulbs + uint32_t wait_ms = 1000; // start with 1.0 s delay + for (uint32_t i = 0; i < zigbee_devices.devicesSize(); i++) { + const Z_Device &device = zigbee_devices.devicesAt(i); + Z_Query_Bulb(device.shortaddr, wait_ms); + } } return 0; // continue } diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index 7acd3e4a1..bf8fa3730 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -210,9 +210,10 @@ void zigbeeZCLSendStr(uint16_t shortaddr, uint16_t groupaddr, uint8_t endpoint, })); // now set the timer, if any, to read back the state later if (clusterSpecific) { -#ifndef USE_ZIGBEE_NO_READ_ATTRIBUTES // read back attribute value unless it is disabled - sendHueUpdate(shortaddr, groupaddr, cluster, endpoint); -#endif + if (!Settings.flag5.zb_disable_autoquery) { + // read back attribute value unless it is disabled + sendHueUpdate(shortaddr, groupaddr, cluster, endpoint); + } } } From 825f72cb51618770d428594a755a46641cad9a64 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 14 Nov 2020 11:23:43 +0100 Subject: [PATCH 106/293] Zigbee fix missing Light attribute in ZbLight --- tasmota/xdrv_23_zigbee_2a_devices_impl.ino | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino index a7aa91fcc..006e7c76d 100644 --- a/tasmota/xdrv_23_zigbee_2a_devices_impl.ino +++ b/tasmota/xdrv_23_zigbee_2a_devices_impl.ino @@ -702,14 +702,19 @@ void Z_Device::jsonLightState(Z_attribute_list & attr_list) const { // dump all known values attr_list.addAttribute(F("Reachable")).setBool(getReachable()); if (validPower()) { attr_list.addAttribute(F("Power")).setUInt(getPower()); } + int32_t light_mode = -1; const Z_Data_Light & light = data.find(0); if (&light != nullptr) { + if (light.validConfig()) { + light_mode = light.getConfig(); + } light.toAttributes(attr_list); // Exception, we need to convert Hue to 0..360 instead of 0..254 if (light.validHue()) { attr_list.findOrCreateAttribute(PSTR("Hue")).setUInt(light.getHue()); } } + attr_list.addAttribute(F("Light")).setInt(light_mode); } } From b4b87a8d0a88e0c7e84683fa88a3b57ecdbb1828 Mon Sep 17 00:00:00 2001 From: Roman Bazalevsky Date: Sat, 14 Nov 2020 13:09:48 +0300 Subject: [PATCH 107/293] Delay ESP32 Bluetooth initialization after WiFi init/set sleep mode. --- tasmota/xsns_52_ibeacon.ino | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/tasmota/xsns_52_ibeacon.ino b/tasmota/xsns_52_ibeacon.ino index 7ae8c4921..db5c5951e 100755 --- a/tasmota/xsns_52_ibeacon.ino +++ b/tasmota/xsns_52_ibeacon.ino @@ -275,13 +275,21 @@ void ESP32ResumeScanTask() { AddLog_P(LOG_LEVEL_DEBUG, PSTR("%s: Resumed scanner task"),"BLE"); } -#endif +void ESP32Init() { -void IBEACON_Init() { + if (TasmotaGlobal.global_state.wifi_down) { return; } -#ifdef USE_IBEACON_ESP32 + if (WiFi.getSleep() == false) { + if (0 == Settings.flag3.sleep_normal) { + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: About to restart to put WiFi modem in sleep mode"),"BLE"); + Settings.flag3.sleep_normal = 1; // SetOption60 - Enable normal sleep instead of dynamic sleep + TasmotaGlobal.restart_flag = 2; + } + return; + } + + AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Initializing Blueetooth..."),"BLE"); - ESP32BLE.mode.init = false; if (!ESP32BLE.mode.init) { NimBLEDevice::init(""); @@ -293,6 +301,17 @@ void IBEACON_Init() { IB_TIMEOUT_TIME=IB_TIMEOUT_INTERVAL; } +} + +#endif + +void IBEACON_Init() { + +#ifdef USE_IBEACON_ESP32 + + ESP32BLE.mode.init = false; + ESP32BLE.mode.runningScan = false; + #else hm17_found=0; @@ -320,6 +339,8 @@ void IBEACON_Init() { void esp32_every_second(void) { + if (!ESP32BLE.mode.init) { return; } + if (TasmotaGlobal.ota_state_flag) { if (ESP32BLE.mode.runningScan) { AddLog_P(LOG_LEVEL_DEBUG,PSTR("%s: Upgrade procedure started"),"BLE"); @@ -953,6 +974,13 @@ bool Xsns52(byte function) case FUNC_INIT: IBEACON_Init(); break; +#ifdef USE_IBEACON_ESP32 + case FUNC_EVERY_250_MSECOND: + if (!ESP32BLE.mode.init) { + ESP32Init(); + } + break; +#endif case FUNC_LOOP: IBEACON_loop(); break; From abb56854f5648f895e03e5717763905181af2d3d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Nov 2020 13:34:39 +0100 Subject: [PATCH 108/293] Update changelog --- CHANGELOG.md | 2 +- RELEASENOTES.md | 2 ++ tasmota/settings.h | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 179921dd9..e48a377f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ All notable changes to this project will be documented in this file. - Support for AS608 optical and R503 capacitive fingerprint sensor - Command ``SetOption115 1`` to enable ESP32 MiBle - Zigbee command ``ZbLeave`` to unpair a device -- Zigbee ``SetOption116 1`` to disable auto-query of light devices (avoids network storms with large groups) +- Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 9d87f9de8..443f3ecab 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -59,8 +59,10 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota ## Changelog v9.1.0.1 ### Added - Command ``SetOption115 1`` to enable ESP32 MiBle +- Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups) - Commands ``TuyaRGB``, ``TuyaEnum`` and ``TuyaEnumList`` (#9769) - Zigbee command ``ZbInfo`` and prepare support for EEPROM +- Zigbee command ``ZbLeave`` to unpair a device - Zigbee support for Mi Door and Contact (#9759) - Zigbee alarm persistence (#9785) - Support for additional EZO sensors by Christopher Tremblay diff --git a/tasmota/settings.h b/tasmota/settings.h index 76e499281..118c60bec 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -139,9 +139,9 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu typedef union { // Restricted by MISRA-C Rule 18.4 but so useful... uint32_t data; // Allow bit manipulation using SetOption struct { // SetOption114 .. SetOption145 - uint32_t mqtt_switches : 1; // bit 0 (v9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes - uint32_t mi32_enable : 1; // bit 1 (v9.1.0.1) - SetOption115 - Enable ESP32 MI32 BLE - uint32_t zb_disable_autoquery : 1; // bit 2 (v9.1.0.1) - SetOption116 - Disable auto-query of lights and devices + uint32_t mqtt_switches : 1; // bit 0 (v9.0.0.3) - SetOption114 - Detach Switches from relays and enable MQTT action state for all the SwitchModes + uint32_t mi32_enable : 1; // bit 1 (v9.1.0.1) - SetOption115 - Enable ESP32 MI32 BLE + uint32_t zb_disable_autoquery : 1; // bit 2 (v9.1.0.1) - SetOption116 - Disable auto-query of zigbee lights and devices uint32_t spare03 : 1; // bit 3 uint32_t spare04 : 1; // bit 4 uint32_t spare05 : 1; // bit 5 From fa9b04cd1b7f3cb8a39af030b886b622eec5ba35 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Nov 2020 14:02:15 +0100 Subject: [PATCH 109/293] Satisfy compiler --- tasmota/xdrv_27_shutter.ino | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 2a335a21a..50dcd970a 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -564,7 +564,7 @@ void ShutterStartInit(uint32_t i, int32_t direction, int32_t target_pos) int32_t ShutterCalculatePosition(uint32_t i) { - // No Logging allowed. Part of RTC Timer + // No Logging allowed. Part of RTC Timer if (Shutter[i].direction != 0) { switch (ShutterGlobal.position_mode) { case SHT_COUNTER: @@ -582,10 +582,11 @@ int32_t ShutterCalculatePosition(uint32_t i) break; default: break; - } - } else { - return Shutter[i].real_position; } + } else { + return Shutter[i].real_position; + } + return 0; // Never reaches here, Satisfy compiler } void ShutterRelayChanged(void) From f943d682ba2b08af1ad3832ca0faf1dc6302c5c5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Nov 2020 14:43:08 +0100 Subject: [PATCH 110/293] Unable to satisfy compiler --- tasmota/support_esp32.ino | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/tasmota/support_esp32.ino b/tasmota/support_esp32.ino index b21946bd7..4f3c24ae3 100644 --- a/tasmota/support_esp32.ino +++ b/tasmota/support_esp32.ino @@ -247,24 +247,26 @@ void DisableBrownout(void) { String ESP32GetResetReason(uint32_t cpu_no) { // tools\sdk\include\esp32\rom\rtc.h - switch (rtc_get_reset_reason( (RESET_REASON) cpu_no)) { - case POWERON_RESET : return F("Vbat power on reset"); // 1 - case SW_RESET : return F("Software reset digital core"); // 3 - case OWDT_RESET : return F("Legacy watch dog reset digital core"); // 4 - case DEEPSLEEP_RESET : return F("Deep Sleep reset digital core"); // 5 - case SDIO_RESET : return F("Reset by SLC module, reset digital core"); // 6 - case TG0WDT_SYS_RESET : return F("Timer Group0 Watch dog reset digital core"); // 7 - case TG1WDT_SYS_RESET : return F("Timer Group1 Watch dog reset digital core"); // 8 - case RTCWDT_SYS_RESET : return F("RTC Watch dog Reset digital core"); // 9 - case INTRUSION_RESET : return F("Instrusion tested to reset CPU"); // 10 - case TGWDT_CPU_RESET : return F("Time Group reset CPU"); // 11 - case SW_CPU_RESET : return F("Software reset CPU"); // 12 - case RTCWDT_CPU_RESET : return F("RTC Watch dog Reset CPU"); // 13 - case EXT_CPU_RESET : return F("or APP CPU, reseted by PRO CPU"); // 14 - case RTCWDT_BROWN_OUT_RESET : return F("Reset when the vdd voltage is not stable"); // 15 - case RTCWDT_RTC_RESET : return F("RTC Watch dog reset digital core and rtc module"); // 16 - default : return F("NO_MEAN"); // 0 + RESET_REASON reset_reason = rtc_get_reset_reason(cpu_no); + switch (reset_reason) { + case POWERON_RESET : return "Vbat power on reset"; // 1 + case SW_RESET : return "Software reset digital core"; // 3 + case OWDT_RESET : return "Legacy watch dog reset digital core"; // 4 + case DEEPSLEEP_RESET : return "Deep Sleep reset digital core"; // 5 + case SDIO_RESET : return "Reset by SLC module, reset digital core"; // 6 + case TG0WDT_SYS_RESET : return "Timer Group0 Watch dog reset digital core"; // 7 + case TG1WDT_SYS_RESET : return "Timer Group1 Watch dog reset digital core"; // 8 + case RTCWDT_SYS_RESET : return "RTC Watch dog Reset digital core"; // 9 + case INTRUSION_RESET : return "Instrusion tested to reset CPU"; // 10 + case TGWDT_CPU_RESET : return "Time Group reset CPU"; // 11 + case SW_CPU_RESET : return "Software reset CPU"; // 12 + case RTCWDT_CPU_RESET : return "RTC Watch dog Reset CPU"; // 13 + case EXT_CPU_RESET : return "For APP CPU, reseted by PRO CPU"; // 14 + case RTCWDT_BROWN_OUT_RESET : return "Reset when the vdd voltage is not stable"; // 15 + case RTCWDT_RTC_RESET : return "RTC Watch dog reset digital core and rtc module"; // 16 + default : return "No meaning"; // 0 } + return "No meaning"; // 0 } String ESP_getResetReason(void) { From ab4b8cacfd3c2e51fe7cb6ff1ae430d100f732d9 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 14 Nov 2020 16:39:27 +0100 Subject: [PATCH 111/293] move c2 programmer to lib_div --- lib/{lib_basic => lib_div}/C2Programmer-1.0.0/README.md | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/keywords.txt | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/library.json | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/library.properties | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/c2.cpp | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/c2.h | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/ihx.cpp | 0 lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/ihx.h | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/README.md (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/keywords.txt (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/library.json (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/library.properties (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/c2.cpp (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/c2.h (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/ihx.cpp (100%) rename lib/{lib_basic => lib_div}/C2Programmer-1.0.0/src/ihx.h (100%) diff --git a/lib/lib_basic/C2Programmer-1.0.0/README.md b/lib/lib_div/C2Programmer-1.0.0/README.md similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/README.md rename to lib/lib_div/C2Programmer-1.0.0/README.md diff --git a/lib/lib_basic/C2Programmer-1.0.0/keywords.txt b/lib/lib_div/C2Programmer-1.0.0/keywords.txt similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/keywords.txt rename to lib/lib_div/C2Programmer-1.0.0/keywords.txt diff --git a/lib/lib_basic/C2Programmer-1.0.0/library.json b/lib/lib_div/C2Programmer-1.0.0/library.json similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/library.json rename to lib/lib_div/C2Programmer-1.0.0/library.json diff --git a/lib/lib_basic/C2Programmer-1.0.0/library.properties b/lib/lib_div/C2Programmer-1.0.0/library.properties similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/library.properties rename to lib/lib_div/C2Programmer-1.0.0/library.properties diff --git a/lib/lib_basic/C2Programmer-1.0.0/src/c2.cpp b/lib/lib_div/C2Programmer-1.0.0/src/c2.cpp similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/src/c2.cpp rename to lib/lib_div/C2Programmer-1.0.0/src/c2.cpp diff --git a/lib/lib_basic/C2Programmer-1.0.0/src/c2.h b/lib/lib_div/C2Programmer-1.0.0/src/c2.h similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/src/c2.h rename to lib/lib_div/C2Programmer-1.0.0/src/c2.h diff --git a/lib/lib_basic/C2Programmer-1.0.0/src/ihx.cpp b/lib/lib_div/C2Programmer-1.0.0/src/ihx.cpp similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/src/ihx.cpp rename to lib/lib_div/C2Programmer-1.0.0/src/ihx.cpp diff --git a/lib/lib_basic/C2Programmer-1.0.0/src/ihx.h b/lib/lib_div/C2Programmer-1.0.0/src/ihx.h similarity index 100% rename from lib/lib_basic/C2Programmer-1.0.0/src/ihx.h rename to lib/lib_div/C2Programmer-1.0.0/src/ihx.h From c02770ce965b07064133708b713f3034b0d69c5c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Nov 2020 16:43:32 +0100 Subject: [PATCH 112/293] Add support for Shelly Dimmer 1 and 2 Add support for Shelly Dimmer 1 and 2 by James Turton (#9854) --- BUILDS.md | 1 + CHANGELOG.md | 1 + RELEASENOTES.md | 1 + lib/lib_basic/stm32flash-1.0/dev_table.h | 108 ++ .../fw/shelly/dimmer/stm_v50.1.h | 905 +++++++++++++ .../fw/shelly/dimmer/stm_v50.2.h | 795 +++++++++++ .../fw/shelly/dimmer/stm_v51.0.h | 444 ++++++ .../fw/shelly/dimmer/stm_v51.1.h | 444 ++++++ .../fw/shelly/dimmer/stm_v51.2.h | 1185 +++++++++++++++++ .../fw/shelly/dimmer/stm_v51.3.h | 1185 +++++++++++++++++ .../fw/shelly/dimmer/stm_v51.4.h | 1183 ++++++++++++++++ .../stm32flash-1.0/stm32_flash_debug.h | 12 + lib/lib_basic/stm32flash-1.0/stm32flash.cpp | 1143 ++++++++++++++++ lib/lib_basic/stm32flash-1.0/stm32flash.h | 117 ++ tasmota/language/bg_BG.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/vi_VN.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/my_user_config.h | 4 + tasmota/settings.h | 7 +- tasmota/support_features.ino | 4 +- tasmota/tasmota.h | 1 + tasmota/tasmota_configurations.h | 113 +- tasmota/tasmota_template.h | 9 +- tasmota/xdrv_45_shelly_dimmer.ino | 873 ++++++++++++ tasmota/xnrg_interface.ino | 2 +- tools/decode-status.py | 7 +- 47 files changed, 8583 insertions(+), 9 deletions(-) create mode 100644 lib/lib_basic/stm32flash-1.0/dev_table.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h create mode 100644 lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h create mode 100644 lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h create mode 100644 lib/lib_basic/stm32flash-1.0/stm32flash.cpp create mode 100644 lib/lib_basic/stm32flash-1.0/stm32flash.h create mode 100644 tasmota/xdrv_45_shelly_dimmer.ino diff --git a/BUILDS.md b/BUILDS.md index 394d74fee..fa362074b 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -48,6 +48,7 @@ | USE_PWM_DIMMER | - | - | x | x | - | - | - | | USE_KEELOQ | - | - | - | - | - | - | - | | USE_SONOFF_D1 | - | - | x | x | - | - | - | +| USE_SHELLY_DIMMER | - | - | - | - | - | - | - | | | | | | | | | | | Feature or Sensor | minimal | lite | tasmota | knx | sensors | ir | display | Remarks | USE_LIGHT | - | x | x | x | x | x | x | diff --git a/CHANGELOG.md b/CHANGELOG.md index e48a377f9..2a560c5b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - Command ``SetOption115 1`` to enable ESP32 MiBle - Zigbee command ``ZbLeave`` to unpair a device - Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups) +- Support for Shelly Dimmer 1 and 2 by James Turton (#9854) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 443f3ecab..c6f4aa90a 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -67,6 +67,7 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Zigbee alarm persistence (#9785) - Support for additional EZO sensors by Christopher Tremblay - Support for AS608 optical and R503 capacitive fingerprint sensor +- Support for Shelly Dimmer 1 and 2 by James Turton (#9854) ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/lib/lib_basic/stm32flash-1.0/dev_table.h b/lib/lib_basic/stm32flash-1.0/dev_table.h new file mode 100644 index 000000000..021dd5fff --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/dev_table.h @@ -0,0 +1,108 @@ +/* + stm32flash - Open Source ST STM32 flash program for Arduino + Copyright (C) 2010 Geoffrey McRae + Copyright (C) 2014-2015 Antonio Borneo + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#define SZ_128 0x00000080 +#define SZ_256 0x00000100 +#define SZ_1K 0x00000400 +#define SZ_2K 0x00000800 +#define SZ_16K 0x00004000 +#define SZ_32K 0x00008000 +#define SZ_64K 0x00010000 +#define SZ_128K 0x00020000 +#define SZ_256K 0x00040000 + +/* + * Page-size for page-by-page flash erase. + * Arrays are zero terminated; last non-zero value is automatically repeated + */ + +/* fixed size pages */ +static uint32_t p_128[] = { SZ_128, 0 }; +static uint32_t p_256[] = { SZ_256, 0 }; +static uint32_t p_1k[] = { SZ_1K, 0 }; +static uint32_t p_2k[] = { SZ_2K, 0 }; +/* F2 and F4 page size */ +static uint32_t f2f4[] = { SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0 }; +/* F4 dual bank page size */ +static uint32_t f4db[] = { + SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, SZ_128K, SZ_128K, + SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0 +}; +/* F7 page size */ +static uint32_t f7[] = { SZ_32K, SZ_32K, SZ_32K, SZ_32K, SZ_128K, SZ_256K, 0 }; + +/* + * Device table, corresponds to the "Bootloader device-dependant parameters" + * table in ST document AN2606. + * Note that the option bytes upper range is inclusive! + */ +const stm32_dev_t devices[] = { + /* ID "name" SRAM-address-range FLASH-address-range PPS PSize Option-byte-addr-range System-mem-addr-range Flags */ + /* F0 */ + {0x440, "STM32F030x8/F05xxx" , 0x20000800, 0x20002000, 0x08000000, 0x08010000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0}, + {0x442, "STM32F030xC/F09xxx" , 0x20001800, 0x20008000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, F_OBLL}, + {0x444, "STM32F03xx4/6" , 0x20000800, 0x20001000, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFEC00, 0x1FFFF800, 0}, + {0x445, "STM32F04xxx/F070x6" , 0x20001800, 0x20001800, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC400, 0x1FFFF800, 0}, + {0x448, "STM32F070xB/F071xx/F72xx" , 0x20001800, 0x20004000, 0x08000000, 0x08020000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFC800, 0x1FFFF800, 0}, + /* F1 */ + {0x412, "STM32F10xxx Low-density" , 0x20000200, 0x20002800, 0x08000000, 0x08008000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x410, "STM32F10xxx Medium-density" , 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x414, "STM32F10xxx High-density" , 0x20000200, 0x20010000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x420, "STM32F10xxx Medium-density VL" , 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x428, "STM32F10xxx High-density VL" , 0x20000200, 0x20008000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x418, "STM32F105xx/F107xx" , 0x20001000, 0x20010000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFB000, 0x1FFFF800, 0}, + {0x430, "STM32F10xxx XL-density" , 0x20000800, 0x20018000, 0x08000000, 0x08100000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFE000, 0x1FFFF800, 0}, + /* F2 */ + {0x411, "STM32F2xxxx" , 0x20002000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + /* F3 */ + {0x432, "STM32F373xx/F378xx" , 0x20001400, 0x20008000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x422, "STM32F302xB(C)/F303xB(C)/F358xx" , 0x20001400, 0x2000A000, 0x08000000, 0x08040000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x439, "STM32F301xx/F302x4(6/8)/F318xx" , 0x20001800, 0x20004000, 0x08000000, 0x08010000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x438, "STM32F303x4(6/8)/F334xx/F328xx" , 0x20001800, 0x20003000, 0x08000000, 0x08010000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + {0x446, "STM32F302xD(E)/F303xD(E)/F398xx" , 0x20001800, 0x20010000, 0x08000000, 0x08080000, 2, p_2k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFD800, 0x1FFFF800, 0}, + /* F4 */ + {0x413, "STM32F40xxx/41xxx" , 0x20003000, 0x20020000, 0x08000000, 0x08100000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x419, "STM32F42xxx/43xxx" , 0x20003000, 0x20030000, 0x08000000, 0x08200000, 1, f4db , 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x423, "STM32F401xB(C)" , 0x20003000, 0x20010000, 0x08000000, 0x08040000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x433, "STM32F401xD(E)" , 0x20003000, 0x20018000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x458, "STM32F410xx" , 0x20003000, 0x20008000, 0x08000000, 0x08020000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x431, "STM32F411xx" , 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x421, "STM32F446xx" , 0x20003000, 0x20020000, 0x08000000, 0x08080000, 1, f2f4 , 0x1FFFC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + {0x434, "STM32F469xx" , 0x20003000, 0x20060000, 0x08000000, 0x08200000, 1, f4db , 0x1FFEC000, 0x1FFFC00F, 0x1FFF0000, 0x1FFF7800, 0}, + /* F7 */ + {0x449, "STM32F74xxx/75xxx" , 0x20004000, 0x20050000, 0x08000000, 0x08100000, 1, f7 , 0x1FFF0000, 0x1FFF001F, 0x1FF00000, 0x1FF0EDC0, 0}, + /* L0 */ + {0x425, "STM32L031xx/041xx" , 0x20001000, 0x20002000, 0x08000000, 0x08008000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0}, + {0x417, "STM32L05xxx/06xxx" , 0x20001000, 0x20002000, 0x08000000, 0x08010000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0}, + {0x447, "STM32L07xxx/08xxx" , 0x20002000, 0x20005000, 0x08000000, 0x08030000, 32, p_128 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, 0}, + /* L1 */ + {0x416, "STM32L1xxx6(8/B)" , 0x20000800, 0x20004000, 0x08000000, 0x08020000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, F_NO_ME}, + {0x429, "STM32L1xxx6(8/B)A" , 0x20001000, 0x20008000, 0x08000000, 0x08020000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF01000, 0}, + {0x427, "STM32L1xxxC" , 0x20001000, 0x20008000, 0x08000000, 0x08040000, 16, p_256 , 0x1FF80000, 0x1FF8001F, 0x1FF00000, 0x1FF02000, 0}, + {0x436, "STM32L1xxxD" , 0x20001000, 0x2000C000, 0x08000000, 0x08060000, 16, p_256 , 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, 0}, + {0x437, "STM32L1xxxE" , 0x20001000, 0x20014000, 0x08000000, 0x08080000, 16, p_256 , 0x1FF80000, 0x1FF8009F, 0x1FF00000, 0x1FF02000, F_NO_ME}, + /* L4 */ + {0x415, "STM32L476xx/486xx" , 0x20003100, 0x20018000, 0x08000000, 0x08100000, 1, p_2k , 0x1FFF7800, 0x1FFFF80F, 0x1FFF0000, 0x1FFF7000, 0}, + /* These are not (yet) in AN2606: */ + {0x641, "Medium_Density PL" , 0x20000200, 0x20005000, 0x08000000, 0x08020000, 4, p_1k , 0x1FFFF800, 0x1FFFF80F, 0x1FFFF000, 0x1FFFF800, 0}, + {0x9a8, "STM32W-128K" , 0x20000200, 0x20002000, 0x08000000, 0x08020000, 4, p_1k , 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0}, + {0x9b0, "STM32W-256K" , 0x20000200, 0x20004000, 0x08000000, 0x08040000, 4, p_2k , 0x08040800, 0x0804080F, 0x08040000, 0x08040800, 0}, + {0x0} +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h new file mode 100644 index 000000000..90c9b32a9 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h @@ -0,0 +1,905 @@ +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 50; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 1; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0x4d, 0x10, 0x00, 0x08, 0x4b, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x10, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x10, 0x00, 0x08, + 0xe9, 0x05, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x05, 0x06, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0xcd, 0x05, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, 0x49, 0x10, 0x00, 0x08, + 0x01, 0x4b, 0x18, 0x68, 0x70, 0x47, 0xc0, 0x46, 0x38, 0x01, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0x6d, 0x4c, 0xc5, 0xb0, 0x22, 0x68, 0x00, 0xaf, + 0xfc, 0x60, 0x1a, 0x42, 0x69, 0xd0, 0x6b, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x65, 0xd0, 0x20, 0x00, 0x00, 0xf0, 0xa5, 0xff, 0x68, 0x4d, 0x69, 0x49, + 0x2b, 0x78, 0xc6, 0xb2, 0xce, 0x54, 0x00, 0x2b, 0x03, 0xd1, 0x01, 0x2e, + 0x22, 0xd1, 0x01, 0x33, 0x21, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, 0xca, 0x78, + 0xf9, 0x2a, 0x1b, 0xd8, 0x14, 0x1d, 0x9c, 0x42, 0xf5, 0xda, 0x54, 0x1d, + 0xa3, 0x42, 0x18, 0xd1, 0x5f, 0x49, 0xc0, 0xb2, 0xc9, 0x5c, 0x5f, 0x4c, + 0x09, 0x02, 0x01, 0x43, 0x00, 0x20, 0xb9, 0x60, 0xa4, 0x46, 0x01, 0x00, + 0x03, 0x32, 0x64, 0x46, 0x66, 0x5c, 0x01, 0x31, 0x80, 0x19, 0xc9, 0xb2, + 0x80, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xba, 0x68, 0x82, 0x42, 0xdc, 0xd0, + 0x00, 0x23, 0x2b, 0x70, 0x33, 0xe0, 0x06, 0x32, 0x93, 0x42, 0xf9, 0xd1, + 0x04, 0x2e, 0xf7, 0xd1, 0x4a, 0x78, 0x52, 0x4b, 0x1a, 0x70, 0x8b, 0x78, + 0x51, 0x4a, 0x13, 0x70, 0x01, 0x2b, 0x1e, 0xd1, 0x4b, 0x79, 0x08, 0x79, + 0x1b, 0x02, 0x18, 0x43, 0x4e, 0x4b, 0x4f, 0x49, 0x18, 0x80, 0x4f, 0x4b, + 0x1b, 0x68, 0x58, 0x43, 0x01, 0xf0, 0x9e, 0xf8, 0x02, 0xf0, 0xbe, 0xfb, + 0x4c, 0x4a, 0x4d, 0x4b, 0x01, 0xf0, 0x86, 0xfd, 0x01, 0xf0, 0x60, 0xf9, + 0x06, 0x00, 0x02, 0x00, 0x00, 0x21, 0x4a, 0x48, 0x00, 0xf0, 0x44, 0xfe, + 0x32, 0x00, 0x06, 0x21, 0x47, 0x48, 0x00, 0xf0, 0x3f, 0xfe, 0x00, 0x23, + 0x2b, 0x70, 0xfb, 0x68, 0x1a, 0x68, 0x80, 0x23, 0x13, 0x43, 0xfa, 0x68, + 0x13, 0x60, 0xfb, 0x68, 0x1a, 0x68, 0x80, 0x23, 0x1a, 0x42, 0x52, 0xd0, + 0x33, 0x4a, 0x12, 0x68, 0x1a, 0x42, 0x4e, 0xd0, 0x00, 0x25, 0x6c, 0x3b, + 0xf8, 0x18, 0xfc, 0x22, 0x29, 0x00, 0x3d, 0x61, 0x01, 0xf0, 0x14, 0xf8, + 0x33, 0x4b, 0x1b, 0x78, 0x10, 0x2b, 0x49, 0xd0, 0x11, 0x2b, 0x43, 0xd0, + 0x01, 0x2b, 0x38, 0xd1, 0x1d, 0x00, 0x3b, 0x74, 0x6a, 0x46, 0x69, 0x46, + 0xba, 0x60, 0xea, 0x1d, 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, + 0x8a, 0x1a, 0x95, 0x46, 0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x27, 0x4a, + 0x01, 0xa8, 0x12, 0x78, 0xb3, 0x70, 0x10, 0x23, 0x72, 0x70, 0xf9, 0x18, + 0x2a, 0x00, 0xf5, 0x70, 0x00, 0xf0, 0x9e, 0xff, 0x00, 0x22, 0x13, 0x00, + 0x29, 0x1d, 0xe8, 0x1c, 0xf4, 0x18, 0x64, 0x78, 0x01, 0x33, 0xa4, 0x46, + 0xdb, 0xb2, 0x62, 0x44, 0x92, 0xb2, 0x98, 0x42, 0xf6, 0xdc, 0x13, 0x0a, + 0x73, 0x54, 0x6b, 0x1d, 0xf2, 0x54, 0x04, 0x23, 0x06, 0x35, 0x73, 0x55, + 0x00, 0x25, 0x71, 0x5d, 0x10, 0x48, 0x00, 0xf0, 0xe8, 0xfe, 0x7b, 0x68, + 0x01, 0x35, 0xab, 0x42, 0xf7, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0x80, 0x22, + 0xfb, 0x68, 0x1b, 0x68, 0x93, 0x43, 0xfa, 0x68, 0x13, 0x60, 0xbd, 0x46, + 0x45, 0xb0, 0xf0, 0xbd, 0x01, 0x22, 0x02, 0x25, 0x3a, 0x82, 0xbb, 0xe7, + 0x0d, 0x4a, 0x3d, 0x82, 0x12, 0x88, 0xbd, 0x61, 0x7a, 0x82, 0x0d, 0x4a, + 0x0d, 0x25, 0x12, 0x68, 0x7a, 0x61, 0x69, 0x22, 0x3a, 0x77, 0xaf, 0xe7, + 0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, 0x2a, 0x00, 0x00, 0x20, + 0x35, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, 0x36, 0x00, 0x00, 0x20, + 0x34, 0x00, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x20, 0xe1, 0x7a, 0x14, 0xae, + 0x47, 0xe1, 0xf2, 0x3f, 0x00, 0x2c, 0x01, 0x40, 0x10, 0xb5, 0x00, 0xf0, + 0xf1, 0xfb, 0xb6, 0x48, 0x00, 0xf0, 0x20, 0xfc, 0xb5, 0x48, 0x00, 0xf0, + 0x1d, 0xfc, 0xb5, 0x48, 0x00, 0xf0, 0x1a, 0xfc, 0xb4, 0x48, 0x00, 0xf0, + 0x17, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x13, 0xfc, 0xc0, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0x0f, 0xfc, 0x90, 0x23, 0x90, 0x20, 0x1b, 0x01, + 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xda, 0xfa, 0x90, 0x22, + 0x90, 0x20, 0x02, 0x21, 0x12, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xf3, 0xfa, + 0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xcc, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xc5, 0xfa, 0x90, 0x20, 0x03, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xdf, 0xfa, 0x80, 0x23, 0x00, 0x22, 0x01, 0x21, 0x9d, 0x48, + 0x5b, 0x00, 0x00, 0xf0, 0xb8, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, + 0x99, 0x48, 0x00, 0xf0, 0xb2, 0xfa, 0xc0, 0x23, 0x90, 0x20, 0xdb, 0x00, + 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xaa, 0xfa, 0xc0, 0x22, + 0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa, + 0x1b, 0x20, 0x00, 0xf0, 0xd3, 0xfe, 0xe1, 0x21, 0x8f, 0x4c, 0x49, 0x02, + 0x20, 0x00, 0x00, 0xf0, 0x11, 0xfe, 0x08, 0x21, 0x20, 0x00, 0x00, 0xf0, + 0x19, 0xfe, 0x00, 0x21, 0x20, 0x00, 0x00, 0xf0, 0x2b, 0xfe, 0x00, 0x21, + 0x20, 0x00, 0x00, 0xf0, 0x1f, 0xfe, 0x0c, 0x21, 0x20, 0x00, 0x00, 0xf0, + 0x2b, 0xfe, 0x00, 0x21, 0x20, 0x00, 0x00, 0xf0, 0x2d, 0xfe, 0x20, 0x23, + 0x22, 0x68, 0x20, 0x00, 0x13, 0x43, 0x23, 0x60, 0x00, 0xf0, 0x2e, 0xfe, + 0x80, 0x48, 0x00, 0xf0, 0xe6, 0xfb, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, + 0xb3, 0xfb, 0x00, 0x23, 0x7c, 0x48, 0x1a, 0x00, 0x19, 0x00, 0x00, 0xf0, + 0xc1, 0xfb, 0xf0, 0x21, 0x79, 0x48, 0x49, 0x00, 0x00, 0xf0, 0xdc, 0xfb, + 0x77, 0x48, 0x00, 0xf0, 0x34, 0xfd, 0x76, 0x48, 0x00, 0xf0, 0xc2, 0xfb, + 0x74, 0x48, 0x00, 0xf0, 0xc4, 0xfb, 0x00, 0x21, 0x72, 0x48, 0x00, 0xf0, + 0xf3, 0xfc, 0x07, 0x22, 0x00, 0x21, 0x70, 0x48, 0x00, 0xf0, 0xcc, 0xfb, + 0x00, 0x21, 0x6e, 0x48, 0x00, 0xf0, 0xac, 0xfc, 0x00, 0x21, 0x6c, 0x48, + 0x00, 0xf0, 0xc7, 0xfc, 0xfa, 0x22, 0x00, 0x21, 0x52, 0x00, 0x69, 0x48, + 0x00, 0xf0, 0x04, 0xfd, 0x06, 0x21, 0x67, 0x48, 0x00, 0xf0, 0xdc, 0xfc, + 0x07, 0x22, 0x06, 0x21, 0x64, 0x48, 0x00, 0xf0, 0xb5, 0xfb, 0x06, 0x21, + 0x62, 0x48, 0x00, 0xf0, 0x95, 0xfc, 0x06, 0x21, 0x60, 0x48, 0x00, 0xf0, + 0xb0, 0xfc, 0xfa, 0x22, 0x06, 0x21, 0x52, 0x00, 0x5d, 0x48, 0x00, 0xf0, + 0xed, 0xfc, 0x5c, 0x48, 0x00, 0xf0, 0x98, 0xfb, 0x80, 0x20, 0xc0, 0x05, + 0x00, 0xf0, 0x99, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x66, 0xfb, + 0x0f, 0x20, 0x00, 0xf0, 0x5b, 0xfe, 0x00, 0x23, 0x80, 0x20, 0x1a, 0x00, + 0x19, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x70, 0xfb, 0x80, 0x20, 0x30, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x8b, 0xfb, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x7d, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x00, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x3c, 0xfd, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0xde, 0xfc, 0x00, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x04, 0xfd, 0x80, 0x20, 0x50, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x6e, 0xfd, 0x80, 0x20, 0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc, + 0x80, 0x20, 0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x27, 0xfc, 0x80, 0x20, + 0x00, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x65, 0xfc, 0x80, 0x20, 0x00, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x4b, 0xfd, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x32, 0xfb, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x0c, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xae, 0xfc, 0x80, 0x20, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xd4, 0xfc, 0x80, 0x20, 0x50, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x3e, 0xfd, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x5e, 0xfc, + 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x35, 0xfc, 0x80, 0x20, 0x01, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x1b, 0xfd, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x02, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x18, 0xfb, + 0x06, 0x20, 0x00, 0xf0, 0xe3, 0xfd, 0x04, 0x20, 0x16, 0x49, 0x00, 0xf0, + 0x67, 0xf9, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x2f, 0xf9, 0x04, 0x20, + 0x00, 0xf0, 0x4c, 0xf9, 0x14, 0x49, 0x01, 0x20, 0x00, 0xf0, 0x0a, 0xf9, + 0x00, 0x20, 0x00, 0xf0, 0xb7, 0xfd, 0x00, 0x22, 0x11, 0x4b, 0x12, 0x49, + 0x1a, 0x60, 0x12, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x99, 0xfe, 0x00, 0xf0, + 0xa5, 0xfd, 0x00, 0xf0, 0xb5, 0xfd, 0x00, 0xf0, 0xbb, 0xfd, 0x80, 0x21, + 0x06, 0x48, 0x49, 0x00, 0x00, 0xf0, 0x86, 0xf9, 0xfe, 0xe7, 0xc0, 0x46, + 0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, + 0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0x38, 0x01, 0x40, + 0x00, 0x2c, 0x01, 0x40, 0x80, 0x84, 0x1e, 0x00, 0x18, 0xe0, 0x00, 0xe0, + 0x00, 0x12, 0x7a, 0x00, 0x20, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x10, 0xb5, + 0x1c, 0x68, 0xa3, 0x07, 0x01, 0xd5, 0x00, 0xf0, 0x3f, 0xf8, 0x63, 0x07, + 0x01, 0xd5, 0x00, 0xf0, 0x27, 0xf8, 0x10, 0xbd, 0x10, 0x00, 0x00, 0x40, + 0x04, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, + 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x38, 0x01, 0x00, 0x20, + 0x30, 0x00, 0x00, 0x20, 0x10, 0xb5, 0x00, 0x21, 0x06, 0x48, 0x00, 0xf0, + 0x22, 0xfc, 0x06, 0x4b, 0x06, 0x4a, 0x19, 0x68, 0x04, 0x20, 0x11, 0x60, + 0x00, 0x22, 0x1a, 0x60, 0x00, 0xf0, 0xfe, 0xf8, 0x10, 0xbd, 0xc0, 0x46, + 0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x10, 0xb5, 0xff, 0xf7, 0x45, 0xfd, 0x05, 0x4a, 0x05, 0x49, 0x13, 0x68, + 0xc3, 0x1a, 0x0b, 0x60, 0x10, 0x60, 0x04, 0x4a, 0x13, 0x68, 0x01, 0x33, + 0x13, 0x60, 0x10, 0xbd, 0x54, 0x01, 0x00, 0x20, 0x68, 0x01, 0x00, 0x20, + 0x6c, 0x01, 0x00, 0x20, 0x70, 0xb5, 0xff, 0xf7, 0x31, 0xfd, 0x16, 0x4e, + 0x16, 0x4a, 0x33, 0x68, 0x12, 0x68, 0x04, 0x00, 0x15, 0x4d, 0xc3, 0x1a, + 0x93, 0x42, 0x1c, 0xd9, 0x29, 0x68, 0x32, 0x68, 0x00, 0x23, 0x91, 0x42, + 0x01, 0xd0, 0x2b, 0x68, 0xc3, 0x1a, 0x11, 0x4a, 0x11, 0x48, 0x11, 0x78, + 0x00, 0x78, 0x88, 0x42, 0x11, 0xd1, 0x10, 0x49, 0x0b, 0x60, 0x01, 0x23, + 0x11, 0x78, 0x0f, 0x48, 0x5b, 0x1a, 0x80, 0x21, 0xdb, 0xb2, 0x13, 0x70, + 0x13, 0x78, 0x49, 0x00, 0x00, 0x2b, 0x06, 0xd0, 0x00, 0xf0, 0x00, 0xf9, + 0x34, 0x60, 0x2c, 0x60, 0x70, 0xbd, 0x09, 0x49, 0xec, 0xe7, 0x00, 0xf0, + 0xfb, 0xf8, 0xf7, 0xe7, 0x4c, 0x01, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, + 0x50, 0x01, 0x00, 0x20, 0x58, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, + 0x48, 0x01, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, 0x78, 0x01, 0x00, 0x20, + 0xf8, 0xb5, 0x1f, 0x4b, 0x00, 0x20, 0x1e, 0x68, 0x5f, 0x68, 0x1e, 0x49, + 0x32, 0x00, 0x3b, 0x00, 0x00, 0xf0, 0xce, 0xfe, 0x00, 0x22, 0x1c, 0x4b, + 0x00, 0xf0, 0xca, 0xfe, 0x00, 0x22, 0x1b, 0x4b, 0x00, 0xf0, 0xc6, 0xfe, + 0x1a, 0x4b, 0x00, 0x22, 0x18, 0x60, 0x59, 0x60, 0x19, 0x4b, 0x1c, 0x68, + 0x5d, 0x68, 0x14, 0x4b, 0x29, 0x00, 0x20, 0x00, 0x01, 0xf0, 0xc0, 0xfa, + 0x00, 0x22, 0x16, 0x4b, 0x01, 0xf0, 0xbc, 0xfa, 0x00, 0x22, 0x11, 0x4b, + 0x00, 0xf0, 0xb2, 0xfe, 0x13, 0x4b, 0x00, 0x22, 0x18, 0x60, 0x59, 0x60, + 0x29, 0x00, 0x20, 0x00, 0x11, 0x4b, 0x01, 0xf0, 0xaf, 0xfa, 0x32, 0x00, + 0x3b, 0x00, 0x00, 0xf0, 0xa5, 0xfe, 0x00, 0x22, 0x0e, 0x4b, 0x00, 0xf0, + 0xa1, 0xfe, 0x00, 0x22, 0x06, 0x4b, 0x00, 0xf0, 0x9d, 0xfe, 0x0c, 0x4b, + 0x18, 0x60, 0x59, 0x60, 0xf8, 0xbd, 0xc0, 0x46, 0x08, 0x00, 0x00, 0x20, + 0x18, 0x8a, 0xd2, 0x41, 0x00, 0x00, 0x38, 0x40, 0x3c, 0x4e, 0x4b, 0x41, + 0x40, 0x01, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0xe0, 0x3f, + 0x70, 0x01, 0x00, 0x20, 0x81, 0x86, 0xc6, 0x41, 0x00, 0x00, 0x48, 0x40, + 0x60, 0x01, 0x00, 0x20, 0x10, 0xb5, 0x0a, 0x4b, 0x0a, 0x4c, 0x19, 0x60, + 0x20, 0x70, 0xff, 0xf7, 0xa3, 0xff, 0x80, 0x21, 0x08, 0x4b, 0x22, 0x78, + 0x08, 0x48, 0x1a, 0x70, 0x1b, 0x78, 0x49, 0x00, 0x00, 0x2b, 0x02, 0xd0, + 0x00, 0xf0, 0x80, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0x7f, 0xf8, 0xfb, 0xe7, + 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x58, 0x01, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, + 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, + 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, + 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, + 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, + 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, + 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, + 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, + 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, + 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, + 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, + 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, + 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, + 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, + 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, + 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, + 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, + 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, + 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, 0x01, 0x91, + 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, 0xc3, 0x68, + 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, 0x3d, 0x00, + 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, 0x02, 0x9d, + 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, 0x10, 0x29, + 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0xf7, 0xb5, + 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, 0x41, 0x6a, + 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, + 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x14, 0x43, + 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, 0x01, 0x9a, + 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0x20, 0x3d, + 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x33, + 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, 0x00, 0x00, + 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0, + 0xa7, 0xfc, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a, + 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a, + 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, + 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a, + 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, + 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, + 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28, + 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0, + 0x77, 0xfc, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a, + 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd, + 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, + 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7, + 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46, + 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, + 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8, + 0x00, 0xf0, 0x4c, 0xfc, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21, + 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22, + 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43, + 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43, + 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68, + 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff, + 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff, + 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff, + 0x00, 0xf0, 0x32, 0xfb, 0x01, 0x20, 0x00, 0xf0, 0x37, 0xfb, 0xa0, 0x20, + 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60, + 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02, + 0x24, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09, + 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68, + 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40, + 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, + 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43, + 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43, + 0xc3, 0x60, 0x70, 0x47, 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, + 0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, + 0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x1c, 0xd8, 0x00, 0xf0, + 0x81, 0xfb, 0x04, 0x1b, 0x2f, 0x1b, 0x5c, 0x1b, 0x86, 0x00, 0x03, 0x20, + 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x99, 0x61, 0x70, 0x21, + 0x98, 0x69, 0x88, 0x43, 0x98, 0x61, 0x07, 0x2a, 0x0a, 0xd8, 0x10, 0x00, + 0x00, 0xf0, 0x6e, 0xfb, 0x2f, 0x04, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, + 0x10, 0x22, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x20, 0x22, + 0x99, 0x69, 0xf9, 0xe7, 0x30, 0x22, 0x99, 0x69, 0xf6, 0xe7, 0x40, 0x22, + 0x99, 0x69, 0xf3, 0xe7, 0x50, 0x22, 0x99, 0x69, 0xf0, 0xe7, 0x60, 0x22, + 0x99, 0x69, 0xed, 0xe7, 0x9a, 0x69, 0x11, 0x43, 0x99, 0x61, 0xeb, 0xe7, + 0x99, 0x69, 0x42, 0x48, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0x41, 0x48, + 0x99, 0x61, 0x99, 0x69, 0x01, 0x40, 0x99, 0x61, 0x07, 0x2a, 0xdf, 0xd8, + 0x10, 0x00, 0x00, 0xf0, 0x43, 0xfb, 0x04, 0x06, 0x0a, 0x0e, 0x11, 0x15, + 0x18, 0x1b, 0x9a, 0x69, 0xd5, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x52, 0x01, + 0xd0, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x92, 0x01, 0xcc, 0xe7, 0xc0, 0x22, + 0x99, 0x69, 0xfa, 0xe7, 0x80, 0x22, 0x99, 0x69, 0xd2, 0x01, 0xc5, 0xe7, + 0xa0, 0x22, 0x99, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0x99, 0x69, 0xf7, 0xe7, + 0xe0, 0x22, 0x99, 0x69, 0xf4, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, + 0xd9, 0x61, 0xd9, 0x69, 0xd9, 0x61, 0x70, 0x21, 0xd8, 0x69, 0x88, 0x43, + 0xd8, 0x61, 0x07, 0x2a, 0xb2, 0xd8, 0x10, 0x00, 0x00, 0xf0, 0x16, 0xfb, + 0x2f, 0x04, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x10, 0x22, 0xd9, 0x69, + 0x0a, 0x43, 0x27, 0xe0, 0x20, 0x22, 0xd9, 0x69, 0xfa, 0xe7, 0x30, 0x22, + 0xd9, 0x69, 0xf7, 0xe7, 0x40, 0x22, 0xd9, 0x69, 0xf4, 0xe7, 0x50, 0x22, + 0xd9, 0x69, 0xf1, 0xe7, 0x60, 0x22, 0xd9, 0x69, 0xee, 0xe7, 0xda, 0x69, + 0x11, 0x43, 0xd9, 0x61, 0x94, 0xe7, 0xd9, 0x69, 0x16, 0x48, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0x15, 0x48, 0xd9, 0x61, 0xd9, 0x69, 0x01, 0x40, + 0xd9, 0x61, 0x07, 0x2a, 0x00, 0xd9, 0x87, 0xe7, 0x10, 0x00, 0x00, 0xf0, + 0xeb, 0xfa, 0x04, 0x07, 0x0b, 0x0f, 0x12, 0x16, 0x19, 0x1c, 0xda, 0x69, + 0xda, 0x61, 0x7d, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0x52, 0x01, 0xcf, 0xe7, + 0x80, 0x22, 0xd9, 0x69, 0x92, 0x01, 0xcb, 0xe7, 0xc0, 0x22, 0xd9, 0x69, + 0xfa, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0xd2, 0x01, 0xc4, 0xe7, 0xa0, 0x22, + 0xd9, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0xd9, 0x69, 0xf7, 0xe7, 0xe0, 0x22, + 0xd9, 0x69, 0xf4, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0xc0, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, + 0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, + 0x00, 0xf0, 0x9c, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, + 0x02, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x22, 0xfa, 0xe7, + 0x80, 0x22, 0x92, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x92, 0x01, 0xf4, 0xe7, + 0x08, 0x22, 0xf2, 0xe7, 0x80, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0x12, 0x01, + 0xed, 0xe7, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, + 0x19, 0x6a, 0x00, 0xf0, 0x7d, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, + 0x0d, 0x00, 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, + 0xfa, 0xe7, 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, + 0xf4, 0xe7, 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, + 0xd2, 0x00, 0xed, 0xe7, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x5e, 0xfa, 0x04, 0x0f, 0x08, 0x11, + 0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, + 0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, + 0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x06, 0xd8, 0x00, 0xf0, 0x3b, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, + 0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, + 0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, + 0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, + 0x1f, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, 0x99, 0x69, 0x12, 0x01, + 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, + 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, + 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, 0x81, 0x43, 0xd9, 0x61, + 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, + 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0xf3, 0xf9, 0x02, 0x0b, 0x12, 0x1b, 0x0c, 0x20, + 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x92, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, 0xd9, 0x69, 0x92, 0x00, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0x03, 0x00, 0x08, 0x00, + 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, 0x0a, 0x40, 0xa5, 0x43, + 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, 0x00, 0xd8, 0x4a, 0x40, + 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xbc, 0xf9, 0x02, 0x0a, 0x11, 0x19, + 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, 0x12, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, + 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xef, 0xe7, 0xd9, 0x69, + 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, + 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x02, 0x6a, + 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, 0x83, 0x68, 0x93, 0x43, + 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, 0x70, 0x47, 0x70, 0x22, + 0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, + 0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, + 0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x84, 0xf9, 0xe0, 0x60, 0x10, 0xbd, + 0x24, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, + 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, + 0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, + 0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x70, 0xb5, 0x0d, 0x00, 0x04, 0x00, + 0x00, 0xf0, 0x0d, 0xf8, 0x29, 0x00, 0x20, 0x00, 0x00, 0xf0, 0x01, 0xf8, + 0x70, 0xbd, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, 0x70, 0x47, 0x40, 0x6a, + 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0x80, 0x23, 0xc2, 0x69, 0x1a, 0x42, + 0xfc, 0xd0, 0x70, 0x47, 0xfe, 0xe7, 0x70, 0x47, 0x10, 0xb5, 0x16, 0x4b, + 0x16, 0x4a, 0x17, 0x49, 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, + 0x93, 0x42, 0x17, 0xd3, 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, + 0x14, 0x4c, 0x0b, 0x43, 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, + 0x13, 0x4c, 0x14, 0x4b, 0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0x20, 0xf9, + 0x12, 0x4c, 0x13, 0x4b, 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, + 0x01, 0xc3, 0xe1, 0xe7, 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, + 0xe9, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, + 0xed, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x20, 0x04, 0x2a, 0x00, 0x08, + 0x28, 0x00, 0x00, 0x20, 0x7c, 0x01, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, + 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, + 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, 0x04, 0x2a, 0x00, 0x08, + 0x02, 0x4b, 0x00, 0x02, 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x14, 0xe0, 0x00, 0xe0, 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, + 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x02, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, + 0x9b, 0x00, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, + 0x1a, 0x60, 0x70, 0x47, 0x00, 0xe1, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, + 0x07, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, + 0x00, 0xb5, 0x0f, 0x2a, 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, + 0x1e, 0x40, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, + 0x10, 0x3d, 0x2d, 0x09, 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, + 0x00, 0xe0, 0x3b, 0x00, 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, + 0x1d, 0x60, 0xdf, 0x60, 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, + 0x10, 0x34, 0x43, 0x45, 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, + 0x01, 0x35, 0x2d, 0x01, 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, + 0x23, 0xd0, 0x8c, 0x59, 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, + 0xf9, 0xd8, 0x03, 0x24, 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, + 0x22, 0x40, 0xed, 0x18, 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, + 0x00, 0x23, 0x00, 0xe0, 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, + 0x9e, 0x42, 0xf9, 0xd1, 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, + 0x56, 0x1e, 0x00, 0x2a, 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, + 0xec, 0xe7, 0x1a, 0x00, 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, + 0x83, 0x07, 0x4a, 0xd0, 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, + 0x03, 0x00, 0x03, 0x22, 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, + 0x01, 0x33, 0x2e, 0x70, 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, + 0xff, 0x22, 0x0a, 0x40, 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, + 0x0f, 0x2c, 0x35, 0xd9, 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, + 0xb4, 0x46, 0x1e, 0x00, 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, + 0x55, 0x60, 0x95, 0x60, 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, + 0x0f, 0x26, 0x0c, 0x22, 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, + 0x37, 0x00, 0x22, 0x42, 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, + 0xa4, 0x46, 0x1a, 0x00, 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, + 0xfc, 0xd1, 0x03, 0x24, 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, + 0x00, 0x2c, 0x05, 0xd0, 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, + 0x9c, 0x42, 0xfb, 0xd1, 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, + 0x03, 0x00, 0xbf, 0xe7, 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, + 0x49, 0x08, 0x49, 0x00, 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, + 0x03, 0x09, 0x8b, 0x42, 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, + 0x03, 0x0b, 0x8b, 0x42, 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, + 0xff, 0x22, 0x09, 0x02, 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, + 0x12, 0x12, 0x09, 0x02, 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, + 0x00, 0xe0, 0x09, 0x0a, 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, + 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, + 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, + 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, + 0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, + 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, + 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, + 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, + 0xc0, 0x1a, 0x52, 0x41, 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, + 0xcb, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, + 0x8b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, + 0x4b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, + 0x0b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, + 0xcb, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, + 0x8b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, + 0x4b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, + 0x52, 0x41, 0x10, 0x46, 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, + 0x00, 0xf0, 0x06, 0xf8, 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, + 0x76, 0xe7, 0x70, 0x47, 0x70, 0x47, 0xc0, 0x46, 0x84, 0x46, 0x10, 0x1c, + 0x62, 0x46, 0x8c, 0x46, 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, + 0x1f, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, + 0xc8, 0x42, 0x1f, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0x31, 0xfb, 0x40, 0x42, + 0x01, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0xd9, 0xfb, 0x00, 0x28, + 0x01, 0xdb, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0xcf, 0xfb, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0x53, 0xfb, 0x00, 0x28, 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x49, 0xfb, 0x00, 0x28, + 0x01, 0xda, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, 0x0d, 0x00, 0xff, 0xf7, + 0xef, 0xff, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, 0x29, 0x00, 0x01, 0xf0, + 0x15, 0xfa, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, 0x20, 0x00, 0x29, 0x00, + 0x00, 0xf0, 0x7c, 0xfe, 0x01, 0xf0, 0x0c, 0xfa, 0x80, 0x23, 0x1b, 0x06, + 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0xe0, 0x41, + 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0xe0, 0xb5, + 0x81, 0x46, 0x05, 0x00, 0x0c, 0x03, 0x48, 0x00, 0x92, 0x46, 0x1f, 0x00, + 0x85, 0xb0, 0x24, 0x0b, 0x40, 0x0d, 0xce, 0x0f, 0x00, 0x28, 0x59, 0xd0, + 0x87, 0x4b, 0x98, 0x42, 0x00, 0xd1, 0x98, 0xe0, 0x6b, 0x0f, 0xe4, 0x00, + 0x1c, 0x43, 0x80, 0x23, 0x1b, 0x04, 0x23, 0x43, 0x98, 0x46, 0x83, 0x4b, + 0xed, 0x00, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, 0x83, 0x44, 0x00, 0x93, + 0x3c, 0x03, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, 0x5b, 0x0d, 0xff, 0x0f, + 0x00, 0x2b, 0x67, 0xd0, 0x7a, 0x4a, 0x93, 0x42, 0x18, 0xd0, 0x7a, 0x49, + 0x42, 0x0f, 0x8c, 0x46, 0xe4, 0x00, 0x59, 0x46, 0x14, 0x43, 0x80, 0x22, + 0x63, 0x44, 0x12, 0x04, 0xcb, 0x1a, 0x14, 0x43, 0x9b, 0x46, 0xc2, 0x00, + 0x00, 0x20, 0x33, 0x00, 0x7b, 0x40, 0x9a, 0x46, 0x4b, 0x46, 0x0f, 0x2b, + 0x00, 0xd9, 0xef, 0xe0, 0x70, 0x49, 0x9b, 0x00, 0xcb, 0x58, 0x9f, 0x46, + 0x6f, 0x4b, 0x52, 0x46, 0x9c, 0x46, 0x22, 0x43, 0xe3, 0x44, 0x00, 0x2a, + 0x00, 0xd0, 0x95, 0xe0, 0x49, 0x46, 0x02, 0x23, 0x19, 0x43, 0x89, 0x46, + 0x00, 0x24, 0x02, 0x20, 0xe5, 0xe7, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, + 0x52, 0x46, 0x1b, 0x05, 0x23, 0x43, 0xd2, 0x07, 0x13, 0x43, 0x28, 0x00, + 0x19, 0x00, 0x05, 0xb0, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x24, 0x00, 0x25, 0x5b, 0x4b, 0xed, 0xe7, + 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x00, 0xd1, 0x89, 0xe0, 0x00, 0x2c, + 0x00, 0xd1, 0xe0, 0xe1, 0x20, 0x00, 0x01, 0xf0, 0xe9, 0xf9, 0x01, 0x00, + 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x5b, 0x1a, 0x49, 0x46, 0x10, 0x00, + 0xd9, 0x40, 0x08, 0x38, 0x84, 0x40, 0x0b, 0x00, 0x4d, 0x46, 0x23, 0x43, + 0x98, 0x46, 0x85, 0x40, 0x51, 0x48, 0x3c, 0x03, 0x83, 0x1a, 0x9b, 0x46, + 0x00, 0x23, 0x99, 0x46, 0x00, 0x93, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, + 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x97, 0xd1, 0x52, 0x46, 0x22, 0x43, + 0x55, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0xca, 0xe1, 0x20, 0x00, 0x01, 0xf0, + 0xc3, 0xf9, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a, + 0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8c, 0x40, 0x14, 0x43, 0x52, 0x46, + 0x8a, 0x40, 0x41, 0x4b, 0x58, 0x44, 0x9b, 0x46, 0x83, 0x44, 0x00, 0x20, + 0x8d, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x40, 0xd1, 0x08, 0x23, + 0x99, 0x46, 0x06, 0x3b, 0x00, 0x25, 0x83, 0x46, 0x00, 0x93, 0x69, 0xe7, + 0xb2, 0x46, 0x00, 0x9b, 0x02, 0x2b, 0xa9, 0xd0, 0x03, 0x2b, 0x00, 0xd1, + 0x11, 0xe2, 0x01, 0x2b, 0x93, 0xd0, 0x35, 0x4a, 0x5a, 0x44, 0x00, 0x2a, + 0x00, 0xdc, 0x3c, 0xe1, 0x6b, 0x07, 0x00, 0xd0, 0xa7, 0xe1, 0xed, 0x08, + 0x43, 0x46, 0xdb, 0x01, 0x06, 0xd5, 0x42, 0x46, 0x2f, 0x4b, 0x1a, 0x40, + 0x90, 0x46, 0x80, 0x22, 0xd2, 0x00, 0x5a, 0x44, 0x2d, 0x4b, 0x9a, 0x42, + 0x8e, 0xdc, 0x43, 0x46, 0x52, 0x05, 0x58, 0x07, 0x5c, 0x02, 0x05, 0x43, + 0x24, 0x0b, 0x53, 0x0d, 0x78, 0xe7, 0xba, 0x46, 0xa0, 0x46, 0x15, 0x00, + 0x00, 0x90, 0xd4, 0xe7, 0x4a, 0x46, 0x03, 0x23, 0x1a, 0x43, 0x91, 0x46, + 0x03, 0x20, 0x52, 0x46, 0x4f, 0xe7, 0x49, 0x46, 0x01, 0x23, 0x19, 0x43, + 0x89, 0x46, 0x00, 0x24, 0x01, 0x20, 0x48, 0xe7, 0x0c, 0x23, 0x99, 0x46, + 0x09, 0x3b, 0xa0, 0x46, 0x83, 0x46, 0x00, 0x93, 0x28, 0xe7, 0x04, 0x23, + 0x99, 0x46, 0x00, 0x23, 0x9b, 0x46, 0x01, 0x33, 0x00, 0x25, 0x00, 0x93, + 0x20, 0xe7, 0x00, 0x23, 0x80, 0x24, 0x9a, 0x46, 0x00, 0x25, 0x0d, 0x4b, + 0x24, 0x03, 0x4f, 0xe7, 0x80, 0x23, 0x41, 0x46, 0x1b, 0x03, 0x19, 0x42, + 0x08, 0xd0, 0x1c, 0x42, 0x06, 0xd1, 0x1c, 0x43, 0x24, 0x03, 0xba, 0x46, + 0x15, 0x00, 0x06, 0x4b, 0x24, 0x0b, 0x41, 0xe7, 0x80, 0x24, 0x43, 0x46, + 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0xb2, 0x46, 0x01, 0x4b, 0x24, 0x0b, + 0x38, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff, + 0x84, 0x29, 0x00, 0x08, 0x01, 0xf8, 0xff, 0xff, 0x0d, 0xfc, 0xff, 0xff, + 0xf3, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, + 0xfe, 0x07, 0x00, 0x00, 0x44, 0x45, 0x00, 0xd2, 0x16, 0xe1, 0x00, 0xd1, + 0x11, 0xe1, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x2e, 0x00, 0x40, 0x46, + 0x00, 0x25, 0xe3, 0x44, 0x23, 0x02, 0x14, 0x0e, 0x1c, 0x43, 0x1b, 0x0c, + 0x99, 0x46, 0x23, 0x04, 0x1f, 0x0c, 0x12, 0x02, 0x49, 0x46, 0x00, 0x92, + 0x01, 0x97, 0xff, 0xf7, 0x51, 0xfe, 0x02, 0x00, 0x7a, 0x43, 0x0b, 0x04, + 0x31, 0x0c, 0x80, 0x46, 0x19, 0x43, 0x8a, 0x42, 0x0b, 0xd9, 0x01, 0x23, + 0x5b, 0x42, 0x9c, 0x46, 0x09, 0x19, 0xe0, 0x44, 0x8c, 0x42, 0x04, 0xd8, + 0x8a, 0x42, 0x02, 0xd9, 0x83, 0x1e, 0x98, 0x46, 0x09, 0x19, 0x88, 0x1a, + 0x49, 0x46, 0xff, 0xf7, 0x39, 0xfe, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04, + 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43, + 0x8a, 0x42, 0x04, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x00, 0xd8, + 0x11, 0xe1, 0x89, 0x1a, 0x42, 0x46, 0x00, 0x9e, 0x12, 0x04, 0x1a, 0x43, + 0x33, 0x0c, 0x1f, 0x00, 0x10, 0x0c, 0x90, 0x46, 0x02, 0x93, 0x13, 0x04, + 0x32, 0x04, 0x16, 0x0c, 0x32, 0x00, 0x1b, 0x0c, 0x5a, 0x43, 0x03, 0x96, + 0x7b, 0x43, 0x46, 0x43, 0x78, 0x43, 0x17, 0x0c, 0xbc, 0x46, 0x9b, 0x19, + 0x63, 0x44, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02, 0xb4, 0x46, + 0x60, 0x44, 0x1e, 0x0c, 0x30, 0x18, 0x16, 0x04, 0x1b, 0x04, 0x36, 0x0c, + 0x9e, 0x19, 0x81, 0x42, 0x00, 0xd2, 0x9c, 0xe0, 0x00, 0xd1, 0x97, 0xe0, + 0xae, 0x1b, 0x09, 0x1a, 0xb5, 0x42, 0x80, 0x41, 0x40, 0x42, 0x08, 0x1a, + 0x84, 0x42, 0x00, 0xd1, 0x11, 0xe1, 0x49, 0x46, 0xff, 0xf7, 0xf4, 0xfd, + 0x01, 0x9a, 0x0b, 0x04, 0x42, 0x43, 0x31, 0x0c, 0x05, 0x00, 0x19, 0x43, + 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3d, 0x8c, 0x42, 0x03, 0xd8, + 0x8a, 0x42, 0x01, 0xd9, 0x85, 0x1e, 0x09, 0x19, 0x88, 0x1a, 0x49, 0x46, + 0xff, 0xf7, 0xe0, 0xfd, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04, 0x66, 0x46, + 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43, 0x8a, 0x42, + 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x03, 0xd8, 0x8a, 0x42, + 0x01, 0xd9, 0x83, 0x1e, 0x09, 0x19, 0x03, 0x9e, 0x89, 0x1a, 0x32, 0x00, + 0x2d, 0x04, 0x1d, 0x43, 0x02, 0x9f, 0x2b, 0x04, 0x1b, 0x0c, 0x5a, 0x43, + 0x7b, 0x43, 0x9c, 0x46, 0x28, 0x0c, 0x46, 0x43, 0x13, 0x0c, 0xb4, 0x44, + 0x63, 0x44, 0x78, 0x43, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02, + 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x12, 0x04, 0x1b, 0x04, 0x12, 0x0c, + 0x30, 0x18, 0x9b, 0x18, 0x81, 0x42, 0x06, 0xd3, 0x02, 0xd0, 0x01, 0x23, + 0x1d, 0x43, 0xce, 0xe6, 0x00, 0x2b, 0x00, 0xd1, 0xcb, 0xe6, 0x61, 0x18, + 0x6e, 0x1e, 0xa1, 0x42, 0x00, 0xd2, 0xa4, 0xe0, 0x81, 0x42, 0x00, 0xd2, + 0xc9, 0xe0, 0x00, 0xd1, 0xd9, 0xe0, 0x35, 0x00, 0xed, 0xe7, 0x01, 0x25, + 0x6d, 0x42, 0x01, 0x21, 0x89, 0x1a, 0x38, 0x29, 0x00, 0xdd, 0x4c, 0xe6, + 0x1f, 0x29, 0x00, 0xdc, 0x7f, 0xe0, 0x1f, 0x23, 0x5b, 0x42, 0x9a, 0x1a, + 0x43, 0x46, 0xd3, 0x40, 0x20, 0x29, 0x04, 0xd0, 0x44, 0x46, 0x65, 0x4a, + 0x5a, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, 0x95, 0x41, 0x07, 0x22, + 0x2b, 0x43, 0x15, 0x00, 0x00, 0x24, 0x1d, 0x40, 0x1a, 0x42, 0x00, 0xd1, + 0xa1, 0xe0, 0x0f, 0x22, 0x00, 0x24, 0x1a, 0x40, 0x04, 0x2a, 0x00, 0xd1, + 0x98, 0xe0, 0x1a, 0x1d, 0x9a, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xe4, 0x18, + 0x13, 0x00, 0x22, 0x02, 0x00, 0xd4, 0x8f, 0xe0, 0x01, 0x23, 0x00, 0x24, + 0x00, 0x25, 0x23, 0xe6, 0xb5, 0x42, 0x00, 0xd3, 0x64, 0xe7, 0x43, 0x46, + 0x5a, 0x1e, 0x00, 0x9b, 0x9c, 0x46, 0x65, 0x44, 0x1f, 0x00, 0x9d, 0x42, + 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, 0x8c, 0x42, 0x3a, 0xd2, + 0x88, 0x42, 0x63, 0xd8, 0x60, 0xd0, 0x90, 0x46, 0x52, 0xe7, 0xaa, 0x42, + 0x00, 0xd9, 0xea, 0xe6, 0x43, 0x46, 0xde, 0x07, 0x58, 0x08, 0x6b, 0x08, + 0x1e, 0x43, 0xed, 0x07, 0xea, 0xe6, 0x48, 0x46, 0x01, 0xf0, 0x08, 0xf8, + 0x01, 0x00, 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, + 0x1a, 0xe6, 0x4b, 0x46, 0x08, 0x38, 0x83, 0x40, 0x00, 0x25, 0x98, 0x46, + 0x20, 0xe6, 0x00, 0xf0, 0xf9, 0xff, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32, + 0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x30, 0xe6, 0x54, 0x46, 0x08, 0x3b, + 0x00, 0x22, 0x9c, 0x40, 0x35, 0xe6, 0x0f, 0x23, 0x2b, 0x40, 0x04, 0x2b, + 0x00, 0xd1, 0x52, 0xe6, 0x05, 0x23, 0x5b, 0x42, 0xab, 0x42, 0x9b, 0x41, + 0x04, 0x35, 0x5b, 0x42, 0xed, 0x08, 0x98, 0x44, 0x4a, 0xe6, 0x8c, 0x42, + 0xc5, 0xd1, 0xaf, 0x42, 0xc0, 0xd9, 0x90, 0x46, 0x16, 0xe7, 0x8a, 0x42, + 0x00, 0xd8, 0xea, 0xe6, 0x83, 0x1e, 0x09, 0x19, 0xe7, 0xe6, 0x2a, 0x4a, + 0x28, 0x00, 0x5a, 0x44, 0x43, 0x46, 0x95, 0x40, 0x93, 0x40, 0xc8, 0x40, + 0x6a, 0x1e, 0x95, 0x41, 0x44, 0x46, 0x03, 0x43, 0x2b, 0x43, 0xcc, 0x40, + 0x5a, 0x07, 0x92, 0xd0, 0x0f, 0x22, 0x1a, 0x40, 0x04, 0x2a, 0x88, 0xd1, + 0x8d, 0xe7, 0x35, 0x00, 0x81, 0x42, 0x00, 0xd0, 0x4b, 0xe7, 0x00, 0x9a, + 0x93, 0x42, 0x00, 0xd0, 0x47, 0xe7, 0x18, 0xe6, 0xae, 0x42, 0x9c, 0xd9, + 0x02, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x00, 0x9b, 0xe0, 0x44, 0x9c, 0x46, + 0x65, 0x44, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, + 0xe4, 0xe6, 0x15, 0x4a, 0x5a, 0x44, 0x00, 0x2a, 0x00, 0xdc, 0x44, 0xe7, + 0x01, 0x23, 0x00, 0x25, 0x98, 0x44, 0x09, 0xe6, 0x65, 0x07, 0x64, 0x02, + 0x24, 0x0b, 0xdb, 0x08, 0x1d, 0x43, 0x00, 0x23, 0x90, 0xe5, 0x00, 0x9e, + 0x02, 0x3d, 0x72, 0x00, 0xb2, 0x42, 0xbf, 0x41, 0x7f, 0x42, 0x3c, 0x19, + 0x09, 0x19, 0x00, 0x92, 0xce, 0xe7, 0x80, 0x24, 0x43, 0x46, 0x24, 0x03, + 0x1c, 0x43, 0x24, 0x03, 0x06, 0x4b, 0x24, 0x0b, 0x7e, 0xe5, 0x00, 0x9a, + 0x9a, 0x42, 0xea, 0xd3, 0x35, 0x00, 0xc4, 0xe7, 0x3e, 0x04, 0x00, 0x00, + 0x1e, 0x04, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, + 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, 0x94, 0x46, 0x91, 0x46, + 0x1a, 0x03, 0x12, 0x0b, 0x18, 0x4d, 0xc0, 0xb5, 0x4c, 0x00, 0x0f, 0x03, + 0x92, 0x46, 0x5a, 0x00, 0x06, 0x00, 0x80, 0x46, 0x3f, 0x0b, 0x01, 0x20, + 0x64, 0x0d, 0xc9, 0x0f, 0x52, 0x0d, 0xdb, 0x0f, 0xac, 0x42, 0x0a, 0xd0, + 0xaa, 0x42, 0x03, 0xd0, 0x94, 0x42, 0x01, 0xd1, 0x57, 0x45, 0x0d, 0xd0, + 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x3d, 0x00, + 0x35, 0x43, 0xf7, 0xd1, 0xa2, 0x42, 0xf5, 0xd1, 0x52, 0x46, 0x65, 0x46, + 0x2a, 0x43, 0xf1, 0xd1, 0x01, 0x20, 0xc8, 0x45, 0xee, 0xd1, 0x99, 0x42, + 0x06, 0xd0, 0x00, 0x2c, 0xea, 0xd1, 0x3e, 0x43, 0x30, 0x00, 0x46, 0x1e, + 0xb0, 0x41, 0xe5, 0xe7, 0x00, 0x20, 0xe3, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, + 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x32, 0x4d, + 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, + 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, + 0x29, 0xd0, 0xab, 0x42, 0x18, 0xd0, 0x00, 0x2a, 0x2a, 0xd1, 0x3c, 0x43, + 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x02, 0xd1, 0x4c, 0x46, + 0x26, 0x43, 0x27, 0xd0, 0x00, 0x2d, 0x15, 0xd1, 0x81, 0x42, 0x28, 0xd0, + 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x4d, 0x46, 0x2e, 0x43, + 0x2f, 0xd1, 0x00, 0x2a, 0xee, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, + 0x00, 0x2d, 0xe9, 0xd0, 0x00, 0x28, 0xed, 0xd1, 0x01, 0x20, 0x40, 0x42, + 0xea, 0xe7, 0x3d, 0x00, 0x25, 0x43, 0x20, 0xd1, 0x93, 0x42, 0xeb, 0xd0, + 0x00, 0x2b, 0xdd, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xda, 0xd1, 0xdb, 0xe7, + 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0xdb, 0xd0, 0xd6, 0xe7, 0x9a, 0x42, + 0x0a, 0xdc, 0xe7, 0xdb, 0x4f, 0x45, 0xd1, 0xd8, 0x10, 0xd0, 0x00, 0x20, + 0x4f, 0x45, 0xd1, 0xd2, 0x00, 0x29, 0xe1, 0xd0, 0x08, 0x00, 0xcd, 0xe7, + 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, + 0xc6, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xc3, 0xe7, 0xc4, 0x45, 0xbd, 0xd8, + 0x00, 0x20, 0xc4, 0x45, 0xbe, 0xd2, 0xeb, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, + 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x31, 0x4d, + 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, + 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, + 0x11, 0xd0, 0xab, 0x42, 0x14, 0xd0, 0x00, 0x2a, 0x2f, 0xd1, 0x3c, 0x43, + 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x14, 0xd1, 0x4c, 0x46, + 0x26, 0x43, 0x11, 0xd1, 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0x17, 0xd0, + 0x10, 0xe0, 0x3d, 0x00, 0x25, 0x43, 0x12, 0xd1, 0x93, 0x42, 0x1c, 0xd1, + 0x4d, 0x46, 0x2e, 0x43, 0x0d, 0xd1, 0x00, 0x2a, 0x04, 0xd1, 0x3c, 0x43, + 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0x0d, 0xd1, 0x81, 0x42, 0x16, 0xd0, + 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, + 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, + 0x00, 0x28, 0xf7, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf4, 0xe7, 0x00, 0x2b, + 0xea, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xe7, 0xd1, 0xe8, 0xe7, 0x9a, 0x42, + 0x06, 0xdd, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, + 0x01, 0x38, 0xe5, 0xe7, 0x9a, 0x42, 0xe9, 0xdb, 0x4f, 0x45, 0xdb, 0xd8, + 0x06, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xdd, 0xd2, 0x00, 0x29, 0xe3, 0xd0, + 0x08, 0x00, 0xd9, 0xe7, 0xc4, 0x45, 0xd1, 0xd8, 0x00, 0x20, 0xc4, 0x45, + 0xd4, 0xd2, 0xf5, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x57, 0x46, + 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0xe0, 0xb5, 0x98, 0x46, 0x0c, 0x03, + 0x4b, 0x00, 0x06, 0x00, 0x92, 0x46, 0x87, 0xb0, 0x24, 0x0b, 0x5b, 0x0d, + 0xcf, 0x0f, 0x00, 0x2b, 0x6c, 0xd0, 0xdd, 0x4a, 0x93, 0x42, 0x00, 0xd1, + 0x86, 0xe0, 0x42, 0x0f, 0xe4, 0x00, 0x14, 0x43, 0x80, 0x22, 0x12, 0x04, + 0x14, 0x43, 0xd9, 0x4a, 0xc5, 0x00, 0x94, 0x46, 0x63, 0x44, 0x00, 0x93, + 0x00, 0x23, 0x99, 0x46, 0x9b, 0x46, 0x43, 0x46, 0x42, 0x46, 0x1e, 0x03, + 0xd2, 0x0f, 0x5b, 0x00, 0x50, 0x46, 0x90, 0x46, 0x36, 0x0b, 0x5b, 0x0d, + 0x00, 0xd1, 0x78, 0xe0, 0xce, 0x4a, 0x93, 0x42, 0x1d, 0xd0, 0xce, 0x49, + 0x42, 0x0f, 0x8c, 0x46, 0x00, 0x99, 0x63, 0x44, 0xf6, 0x00, 0x8c, 0x46, + 0x16, 0x43, 0x80, 0x22, 0x9c, 0x44, 0x12, 0x04, 0x63, 0x46, 0x16, 0x43, + 0xc2, 0x00, 0x00, 0x20, 0x00, 0x93, 0x00, 0x99, 0x43, 0x46, 0x01, 0x31, + 0x8c, 0x46, 0x49, 0x46, 0x7b, 0x40, 0x01, 0x93, 0x0f, 0x29, 0x00, 0xd9, + 0x7e, 0xe0, 0xc2, 0x4b, 0x89, 0x00, 0x59, 0x58, 0x8f, 0x46, 0x52, 0x46, + 0x00, 0x9b, 0x32, 0x43, 0x00, 0xd0, 0x56, 0xe1, 0xbb, 0x49, 0x00, 0x26, + 0x8c, 0x46, 0x63, 0x44, 0x49, 0x46, 0x00, 0x93, 0x02, 0x23, 0x19, 0x43, + 0x89, 0x46, 0x02, 0x20, 0xe1, 0xe7, 0x43, 0x46, 0x01, 0x93, 0x34, 0x00, + 0x15, 0x00, 0x83, 0x46, 0x5b, 0x46, 0x02, 0x2b, 0x5e, 0xd0, 0x03, 0x2b, + 0x00, 0xd1, 0xf3, 0xe1, 0x01, 0x2b, 0x00, 0xd0, 0x18, 0xe1, 0x00, 0x22, + 0x00, 0x24, 0x00, 0x25, 0x01, 0x9b, 0x12, 0x05, 0x22, 0x43, 0xdb, 0x07, + 0x1a, 0x43, 0x28, 0x00, 0x11, 0x00, 0x07, 0xb0, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x25, 0x00, 0x05, 0x43, + 0x00, 0xd1, 0x41, 0xe1, 0x00, 0x2c, 0x00, 0xd1, 0xad, 0xe1, 0x20, 0x00, + 0x00, 0xf0, 0xd2, 0xfd, 0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, + 0x10, 0x00, 0x5b, 0x1a, 0x31, 0x00, 0x35, 0x00, 0x08, 0x38, 0x84, 0x40, + 0xd9, 0x40, 0x85, 0x40, 0x0c, 0x43, 0x9e, 0x48, 0x83, 0x1a, 0x00, 0x93, + 0x00, 0x23, 0x99, 0x46, 0x9b, 0x46, 0x86, 0xe7, 0x05, 0x00, 0x25, 0x43, + 0x00, 0xd0, 0x1c, 0xe1, 0x08, 0x22, 0x00, 0x93, 0x02, 0x23, 0x00, 0x24, + 0x91, 0x46, 0x9b, 0x46, 0x7b, 0xe7, 0x52, 0x46, 0x32, 0x43, 0x00, 0xd1, + 0x0a, 0xe1, 0x00, 0x2e, 0x00, 0xd1, 0x76, 0xe1, 0x30, 0x00, 0x00, 0xf0, + 0xa9, 0xfd, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a, + 0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8e, 0x40, 0x16, 0x43, 0x52, 0x46, + 0x8a, 0x40, 0x00, 0x9b, 0x89, 0x49, 0x18, 0x1a, 0x03, 0x00, 0x8c, 0x46, + 0x63, 0x44, 0x00, 0x20, 0x00, 0x93, 0x7a, 0xe7, 0x00, 0x24, 0x00, 0x25, + 0x81, 0x4a, 0xa5, 0xe7, 0x2f, 0x0c, 0x2d, 0x04, 0x2d, 0x0c, 0x2b, 0x00, + 0x11, 0x0c, 0x12, 0x04, 0x12, 0x0c, 0x53, 0x43, 0x98, 0x46, 0x13, 0x00, + 0x28, 0x00, 0x7b, 0x43, 0x99, 0x46, 0x48, 0x43, 0x48, 0x44, 0x83, 0x46, + 0x40, 0x46, 0x0b, 0x00, 0x00, 0x0c, 0x82, 0x46, 0x58, 0x46, 0x7b, 0x43, + 0x50, 0x44, 0x02, 0x93, 0x81, 0x45, 0x06, 0xd9, 0x9a, 0x46, 0x80, 0x23, + 0x5b, 0x02, 0x99, 0x46, 0xca, 0x44, 0x53, 0x46, 0x02, 0x93, 0x03, 0x0c, + 0x9b, 0x46, 0x43, 0x46, 0x1b, 0x04, 0x00, 0x04, 0x1b, 0x0c, 0x98, 0x46, + 0x03, 0x00, 0x43, 0x44, 0x04, 0x93, 0x33, 0x0c, 0x99, 0x46, 0x2b, 0x00, + 0x36, 0x04, 0x36, 0x0c, 0x73, 0x43, 0x98, 0x46, 0x33, 0x00, 0x7b, 0x43, + 0x9a, 0x46, 0x4b, 0x46, 0x5d, 0x43, 0x5f, 0x43, 0x43, 0x46, 0x55, 0x44, + 0x18, 0x0c, 0x40, 0x19, 0x82, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, + 0x9a, 0x46, 0x57, 0x44, 0x05, 0x0c, 0xeb, 0x19, 0x05, 0x93, 0x43, 0x46, + 0x1d, 0x04, 0x2d, 0x0c, 0x00, 0x04, 0x40, 0x19, 0x25, 0x0c, 0x24, 0x04, + 0x24, 0x0c, 0x27, 0x00, 0x57, 0x43, 0x6a, 0x43, 0x90, 0x46, 0x2a, 0x00, + 0x3b, 0x0c, 0x9a, 0x46, 0x4a, 0x43, 0x61, 0x43, 0x41, 0x44, 0x51, 0x44, + 0x83, 0x44, 0x88, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, + 0x42, 0x44, 0x3f, 0x04, 0x0b, 0x0c, 0x3f, 0x0c, 0x09, 0x04, 0xc9, 0x19, + 0x27, 0x00, 0x98, 0x46, 0x4b, 0x46, 0x77, 0x43, 0x5c, 0x43, 0x6e, 0x43, + 0x5d, 0x43, 0x3b, 0x0c, 0x99, 0x46, 0xa4, 0x19, 0x4c, 0x44, 0x42, 0x44, + 0x03, 0x95, 0xa6, 0x42, 0x04, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, + 0x45, 0x44, 0x03, 0x95, 0x02, 0x9b, 0x3f, 0x04, 0x5b, 0x44, 0x1e, 0x00, + 0x83, 0x42, 0x80, 0x41, 0x23, 0x04, 0x98, 0x46, 0x05, 0x9b, 0x3f, 0x0c, + 0x47, 0x44, 0x98, 0x46, 0x76, 0x18, 0x8e, 0x42, 0x89, 0x41, 0x47, 0x44, + 0x40, 0x42, 0x3d, 0x18, 0xa8, 0x46, 0x93, 0x46, 0x49, 0x42, 0x8a, 0x46, + 0xc3, 0x44, 0x9f, 0x42, 0xbf, 0x41, 0x80, 0x45, 0x80, 0x41, 0x03, 0x9b, + 0xda, 0x44, 0x98, 0x46, 0x53, 0x46, 0x40, 0x42, 0x7f, 0x42, 0x07, 0x43, + 0x24, 0x0c, 0x93, 0x45, 0x92, 0x41, 0x8a, 0x45, 0x89, 0x41, 0x3f, 0x19, + 0xdc, 0x0d, 0x04, 0x9b, 0x75, 0x02, 0x1d, 0x43, 0x68, 0x1e, 0x85, 0x41, + 0x53, 0x46, 0x52, 0x42, 0x49, 0x42, 0x0a, 0x43, 0xbf, 0x18, 0x47, 0x44, + 0xf6, 0x0d, 0x7f, 0x02, 0x35, 0x43, 0x5a, 0x02, 0x3c, 0x43, 0x15, 0x43, + 0xfb, 0x01, 0x00, 0xd4, 0xc1, 0xe0, 0x01, 0x21, 0x6a, 0x08, 0x0d, 0x40, + 0x15, 0x43, 0xe2, 0x07, 0x15, 0x43, 0x64, 0x08, 0x26, 0x49, 0x61, 0x44, + 0x00, 0x29, 0x56, 0xdd, 0x6b, 0x07, 0x09, 0xd0, 0x0f, 0x22, 0x2a, 0x40, + 0x04, 0x2a, 0x05, 0xd0, 0x2a, 0x1d, 0xaa, 0x42, 0xad, 0x41, 0x6d, 0x42, + 0x64, 0x19, 0x15, 0x00, 0xe3, 0x01, 0x04, 0xd5, 0x80, 0x21, 0x1e, 0x4a, + 0xc9, 0x00, 0x14, 0x40, 0x61, 0x44, 0x1d, 0x4a, 0x91, 0x42, 0x00, 0xdd, + 0x24, 0xe7, 0x62, 0x07, 0xed, 0x08, 0x64, 0x02, 0x49, 0x05, 0x15, 0x43, + 0x24, 0x0b, 0x4a, 0x0d, 0xc6, 0xe6, 0x01, 0x97, 0xb8, 0xe6, 0x10, 0x4a, + 0x03, 0x20, 0x94, 0x46, 0x63, 0x44, 0x4a, 0x46, 0x00, 0x93, 0x03, 0x23, + 0x1a, 0x43, 0x91, 0x46, 0x52, 0x46, 0x8a, 0xe6, 0x49, 0x46, 0x01, 0x23, + 0x19, 0x43, 0x89, 0x46, 0x00, 0x26, 0x01, 0x20, 0x83, 0xe6, 0x0c, 0x22, + 0x00, 0x93, 0x03, 0x23, 0x05, 0x00, 0x91, 0x46, 0x9b, 0x46, 0x5e, 0xe6, + 0x04, 0x23, 0x99, 0x46, 0x00, 0x23, 0x00, 0x93, 0x01, 0x33, 0x00, 0x24, + 0x9b, 0x46, 0x56, 0xe6, 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff, + 0xc4, 0x29, 0x00, 0x08, 0x0d, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xfe, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x23, 0x80, 0x24, + 0x00, 0x25, 0x44, 0x4a, 0x01, 0x93, 0x24, 0x03, 0x8e, 0xe6, 0x01, 0x20, + 0x40, 0x1a, 0x38, 0x28, 0x00, 0xdd, 0x86, 0xe6, 0x1f, 0x28, 0x5b, 0xdd, + 0x1f, 0x22, 0x23, 0x00, 0x52, 0x42, 0x51, 0x1a, 0xcb, 0x40, 0x19, 0x00, + 0x20, 0x28, 0x03, 0xd0, 0x3b, 0x4a, 0x62, 0x44, 0x94, 0x40, 0x25, 0x43, + 0x6a, 0x1e, 0x95, 0x41, 0x2a, 0x00, 0x0a, 0x43, 0x07, 0x21, 0x0d, 0x00, + 0x00, 0x24, 0x15, 0x40, 0x11, 0x42, 0x5b, 0xd0, 0x0f, 0x21, 0x00, 0x24, + 0x11, 0x40, 0x04, 0x29, 0x53, 0xd0, 0x11, 0x1d, 0x91, 0x42, 0x92, 0x41, + 0x52, 0x42, 0xa4, 0x18, 0x0a, 0x00, 0x23, 0x02, 0x4b, 0xd5, 0x01, 0x22, + 0x00, 0x24, 0x00, 0x25, 0x60, 0xe6, 0x80, 0x23, 0x1b, 0x03, 0x1c, 0x42, + 0x09, 0xd0, 0x1e, 0x42, 0x07, 0xd1, 0x33, 0x43, 0x1c, 0x03, 0x43, 0x46, + 0x15, 0x00, 0x24, 0x0b, 0x25, 0x4a, 0x01, 0x93, 0x52, 0xe6, 0x80, 0x22, + 0x12, 0x03, 0x14, 0x43, 0x24, 0x03, 0x22, 0x4a, 0x24, 0x0b, 0x01, 0x97, + 0x4a, 0xe6, 0x00, 0xf0, 0x33, 0xfc, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32, + 0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x84, 0xe6, 0x56, 0x46, 0x08, 0x3b, + 0x00, 0x22, 0x9e, 0x40, 0x89, 0xe6, 0x00, 0xf0, 0x25, 0xfc, 0x01, 0x00, + 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, 0x4e, 0xe6, + 0x34, 0x00, 0x08, 0x38, 0x00, 0x25, 0x84, 0x40, 0x53, 0xe6, 0x00, 0x9b, + 0x9c, 0x46, 0x41, 0xe7, 0x12, 0x49, 0x22, 0x00, 0x61, 0x44, 0x2e, 0x00, + 0x8d, 0x40, 0x8a, 0x40, 0xc6, 0x40, 0x69, 0x1e, 0x8d, 0x41, 0x32, 0x43, + 0x2a, 0x43, 0xc4, 0x40, 0x53, 0x07, 0xb6, 0xd0, 0x0f, 0x21, 0x11, 0x40, + 0x04, 0x29, 0xac, 0xd1, 0xb1, 0xe7, 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b, + 0xd2, 0x08, 0x15, 0x43, 0x00, 0x22, 0x11, 0xe6, 0x80, 0x22, 0x12, 0x03, + 0x14, 0x43, 0x24, 0x03, 0x01, 0x4a, 0x24, 0x0b, 0x0a, 0xe6, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, + 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x04, 0x00, + 0xe0, 0xb5, 0x1f, 0x00, 0x10, 0x00, 0x0b, 0x03, 0x62, 0x0f, 0x4e, 0x00, + 0xcd, 0x0f, 0x5b, 0x0a, 0x39, 0x03, 0x13, 0x43, 0x49, 0x0a, 0xe2, 0x00, + 0x44, 0x0f, 0x21, 0x43, 0xc2, 0x4c, 0x91, 0x46, 0x92, 0x46, 0xc0, 0x00, + 0x7a, 0x00, 0x80, 0x46, 0x76, 0x0d, 0x52, 0x0d, 0xff, 0x0f, 0xa2, 0x42, + 0x00, 0xd1, 0xb4, 0xe0, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, + 0x00, 0xd1, 0x88, 0xe0, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x00, 0xdc, + 0xb2, 0xe0, 0x00, 0x2a, 0x00, 0xd1, 0xc5, 0xe0, 0xb5, 0x4a, 0x96, 0x42, + 0x00, 0xd1, 0x8b, 0xe2, 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, + 0x38, 0x2a, 0x00, 0xdd, 0xa1, 0xe1, 0x1f, 0x2a, 0x00, 0xdd, 0x16, 0xe2, + 0x20, 0x27, 0x0c, 0x00, 0xbf, 0x1a, 0xbc, 0x40, 0x02, 0x00, 0xa0, 0x46, + 0x64, 0x46, 0xb8, 0x40, 0xe2, 0x40, 0x44, 0x46, 0x14, 0x43, 0x02, 0x00, + 0x50, 0x1e, 0x82, 0x41, 0x60, 0x46, 0xc1, 0x40, 0x22, 0x43, 0x5b, 0x1a, + 0x49, 0x46, 0x8c, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x9b, 0x1a, + 0x98, 0x46, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0x17, 0xe1, 0x43, 0x46, + 0x5b, 0x02, 0x5b, 0x0a, 0x98, 0x46, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, + 0x6c, 0xe1, 0x40, 0x46, 0x00, 0xf0, 0x8a, 0xfb, 0x02, 0x00, 0x08, 0x3a, + 0x20, 0x21, 0x20, 0x00, 0x43, 0x46, 0x89, 0x1a, 0x93, 0x40, 0xc8, 0x40, + 0x94, 0x40, 0x03, 0x43, 0x96, 0x42, 0x00, 0xdd, 0x57, 0xe1, 0x96, 0x1b, + 0x71, 0x1c, 0x1f, 0x29, 0x00, 0xdd, 0xcb, 0xe1, 0x20, 0x22, 0x18, 0x00, + 0x26, 0x00, 0x52, 0x1a, 0x94, 0x40, 0x90, 0x40, 0xce, 0x40, 0xcb, 0x40, + 0x62, 0x1e, 0x94, 0x41, 0x30, 0x43, 0x98, 0x46, 0x00, 0x26, 0x04, 0x43, + 0x63, 0x07, 0x09, 0xd0, 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x05, 0xd0, + 0x23, 0x1d, 0xa3, 0x42, 0xa4, 0x41, 0x64, 0x42, 0xa0, 0x44, 0x1c, 0x00, + 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0xdf, 0xe0, 0x82, 0x4b, 0x01, 0x36, + 0x9e, 0x42, 0x00, 0xd1, 0xfb, 0xe0, 0x42, 0x46, 0x80, 0x4b, 0xe4, 0x08, + 0x1a, 0x40, 0x13, 0x00, 0x71, 0x05, 0x52, 0x07, 0x5b, 0x02, 0x22, 0x43, + 0x1b, 0x0b, 0x49, 0x0d, 0x09, 0x05, 0xed, 0x07, 0x19, 0x43, 0x29, 0x43, + 0x10, 0x00, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, + 0xf8, 0xbd, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x58, 0xdd, 0x00, 0x2a, + 0x00, 0xd1, 0x9e, 0xe0, 0x71, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x3b, 0xe1, + 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, + 0xc1, 0xe0, 0x1f, 0x2a, 0x00, 0xdc, 0xbb, 0xe1, 0x0c, 0x00, 0x20, 0x3a, + 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, + 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, + 0x8c, 0x41, 0x14, 0x43, 0xb1, 0xe0, 0x0c, 0x00, 0x04, 0x43, 0x2a, 0xd0, + 0xbb, 0x46, 0xbd, 0x42, 0x2d, 0xd0, 0x61, 0x4c, 0xa4, 0x46, 0xb4, 0x44, + 0x64, 0x46, 0x00, 0x2c, 0x5c, 0xd0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, + 0x00, 0xd0, 0x15, 0xe1, 0x4d, 0x46, 0x1d, 0x43, 0x00, 0xd1, 0xc3, 0xe1, + 0x65, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0x0c, 0xe2, 0x55, 0x4e, 0xb4, 0x42, + 0x00, 0xd1, 0xf8, 0xe1, 0xac, 0x46, 0x0e, 0xe1, 0x0a, 0x00, 0x02, 0x43, + 0x00, 0xd1, 0x36, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x00, 0xd1, + 0xc6, 0xe1, 0x4e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0xf4, 0xe0, 0x94, 0x46, + 0x31, 0xe7, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd0, + 0x1c, 0xe7, 0x4a, 0x4c, 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, + 0x00, 0xd1, 0xcf, 0xe0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd1, + 0x5c, 0xe1, 0x42, 0x4e, 0xb2, 0x42, 0x00, 0xd1, 0xec, 0xe1, 0x80, 0x26, + 0x36, 0x04, 0x33, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x00, 0xdd, 0xb3, 0xe1, + 0x1f, 0x2c, 0x00, 0xdd, 0x38, 0xe2, 0x20, 0x26, 0x36, 0x1b, 0x1c, 0x00, + 0xb4, 0x40, 0x4f, 0x46, 0xa0, 0x46, 0x64, 0x46, 0xe7, 0x40, 0x44, 0x46, + 0x3c, 0x43, 0x4f, 0x46, 0xb7, 0x40, 0x3e, 0x00, 0x77, 0x1e, 0xbe, 0x41, + 0x34, 0x43, 0x66, 0x46, 0xf3, 0x40, 0xc9, 0x18, 0x24, 0x18, 0x84, 0x42, + 0x9b, 0x41, 0x5b, 0x42, 0x98, 0x46, 0x16, 0x00, 0x88, 0x44, 0x4e, 0xe0, + 0x30, 0x4a, 0x74, 0x1c, 0x14, 0x42, 0x00, 0xd0, 0xd6, 0xe0, 0x4a, 0x46, + 0x1a, 0x43, 0x00, 0x2e, 0x00, 0xd0, 0x5b, 0xe1, 0x00, 0x2a, 0x00, 0xd1, + 0xa5, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0xbb, 0xe1, 0x4a, 0x46, + 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x27, 0xe0, 0x0a, 0x00, + 0x02, 0x43, 0x00, 0xd1, 0x74, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, + 0x05, 0xd0, 0x1e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0x94, 0xe0, 0x94, 0x46, + 0x59, 0xe7, 0x48, 0x44, 0x48, 0x45, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, + 0x04, 0x00, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x02, 0x26, 0x1b, 0x02, + 0x00, 0xd5, 0xc4, 0xe0, 0x01, 0x3e, 0x63, 0x07, 0x00, 0xd0, 0x11, 0xe7, + 0x43, 0x46, 0xb4, 0x46, 0x59, 0x07, 0xe2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x0f, 0x49, 0x8c, 0x45, 0x40, 0xd0, 0x61, 0x46, 0x1b, 0x03, 0x49, 0x05, + 0x1b, 0x0b, 0x49, 0x0d, 0x20, 0xe7, 0x01, 0x43, 0x0c, 0x00, 0x61, 0x1e, + 0x8c, 0x41, 0x4c, 0x44, 0x4c, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, + 0x98, 0x44, 0x43, 0x46, 0x1b, 0x02, 0xe0, 0xd5, 0x04, 0x4b, 0x01, 0x36, + 0x9e, 0x42, 0x00, 0xd0, 0x9f, 0xe0, 0x31, 0x00, 0x00, 0x23, 0x00, 0x22, + 0x0a, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, + 0x01, 0xf8, 0xff, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xd1, + 0x60, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x4d, 0xd0, 0x4a, 0x46, 0x5c, 0x07, + 0xd2, 0x08, 0x22, 0x43, 0x80, 0x24, 0xdb, 0x08, 0x24, 0x03, 0x23, 0x42, + 0x07, 0xd0, 0xce, 0x08, 0x26, 0x42, 0x04, 0xd1, 0x5d, 0x46, 0x33, 0x00, + 0xc2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x51, 0x0f, 0xd2, 0x00, 0xd2, 0x08, + 0x49, 0x07, 0x0a, 0x43, 0x11, 0x00, 0x19, 0x43, 0x00, 0xd1, 0xc8, 0xe1, + 0x80, 0x21, 0x09, 0x03, 0x0b, 0x43, 0x1b, 0x03, 0xd5, 0x49, 0x1b, 0x0b, + 0xda, 0xe6, 0xd5, 0x49, 0xb6, 0x1a, 0x0b, 0x40, 0x98, 0x46, 0xb5, 0xe6, + 0x20, 0x00, 0x00, 0xf0, 0x1d, 0xfa, 0x02, 0x00, 0x18, 0x32, 0x1f, 0x2a, + 0x00, 0xdc, 0x8f, 0xe6, 0x23, 0x00, 0x08, 0x38, 0x83, 0x40, 0x00, 0x24, + 0x92, 0xe6, 0x08, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x6d, 0xe6, + 0xca, 0x4c, 0x72, 0x1c, 0x22, 0x42, 0x00, 0xd0, 0xad, 0xe0, 0x4a, 0x46, + 0x1a, 0x43, 0x00, 0x2e, 0xb8, 0xd1, 0x00, 0x2a, 0x00, 0xd1, 0x58, 0xe1, + 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0x59, 0xe1, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x86, 0xe7, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xc1, 0xe7, 0xba, 0x4d, 0xaa, 0x42, + 0x00, 0xd1, 0x1e, 0xe1, 0x80, 0x25, 0x2d, 0x04, 0x2b, 0x43, 0x64, 0x46, + 0x38, 0x2c, 0x5d, 0xdc, 0x1f, 0x2c, 0x00, 0xdd, 0xd0, 0xe0, 0x20, 0x25, + 0x67, 0x46, 0x2d, 0x1b, 0x4e, 0x46, 0x1c, 0x00, 0xfe, 0x40, 0xac, 0x40, + 0x34, 0x43, 0x4e, 0x46, 0xae, 0x40, 0x35, 0x00, 0xfb, 0x40, 0x6e, 0x1e, + 0xb5, 0x41, 0xc9, 0x1a, 0x2c, 0x43, 0x4e, 0xe0, 0x4a, 0x46, 0x14, 0x1a, + 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, 0x5f, 0x1a, 0x3a, 0x00, + 0x47, 0x46, 0xd2, 0x1b, 0x90, 0x46, 0x12, 0x02, 0x00, 0xd5, 0x8b, 0xe0, + 0x42, 0x46, 0x22, 0x43, 0x00, 0xd0, 0x30, 0xe6, 0x00, 0x23, 0x00, 0x25, + 0x4d, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x44, 0xe7, 0x42, 0x46, 0x9e, 0x4b, 0x61, 0x08, 0x1a, 0x40, 0x13, 0x00, + 0x01, 0x22, 0x14, 0x40, 0x0c, 0x43, 0xda, 0x07, 0x5b, 0x08, 0x98, 0x46, + 0x14, 0x43, 0x41, 0xe6, 0x1a, 0x00, 0x1f, 0x3e, 0xf2, 0x40, 0x16, 0x00, + 0x20, 0x29, 0x03, 0xd0, 0x40, 0x22, 0x51, 0x1a, 0x8b, 0x40, 0x1c, 0x43, + 0x62, 0x1e, 0x94, 0x41, 0x00, 0x23, 0x34, 0x43, 0x98, 0x46, 0x00, 0x26, + 0x1d, 0xe7, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, + 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, + 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x22, 0x43, 0xe9, 0xe5, + 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x1b, + 0xa0, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xcb, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x16, 0x00, 0xe2, 0xe5, 0x4e, 0x46, 0x1e, 0x43, 0x00, 0xd1, 0xae, 0xe0, + 0x66, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0xfd, 0xe0, 0x7b, 0x4f, 0xbc, 0x42, + 0x00, 0xd1, 0x07, 0xe1, 0xb4, 0x46, 0x9b, 0xe6, 0x64, 0x46, 0x20, 0x22, + 0x12, 0x1b, 0x0c, 0x00, 0x94, 0x40, 0x07, 0x00, 0x90, 0x40, 0xa0, 0x46, + 0x64, 0x46, 0x42, 0x1e, 0x90, 0x41, 0x62, 0x46, 0xe7, 0x40, 0x44, 0x46, + 0xd1, 0x40, 0x3c, 0x43, 0x04, 0x43, 0x5b, 0x18, 0xf3, 0xe6, 0x6f, 0x4c, + 0xa2, 0x42, 0x00, 0xd1, 0xd5, 0xe0, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, + 0x89, 0x41, 0x49, 0x42, 0x5b, 0x18, 0xdc, 0x07, 0x40, 0x08, 0x5b, 0x08, + 0x98, 0x46, 0x16, 0x00, 0x04, 0x43, 0xcc, 0xe6, 0x00, 0x2a, 0x00, 0xd0, + 0x82, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x40, 0xd1, 0x80, 0x23, 0x00, 0x25, + 0x1b, 0x03, 0x13, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, + 0xcb, 0x08, 0xc5, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, + 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x9e, 0xe5, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xf9, 0xe6, + 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5b, 0x1a, 0x52, 0x42, + 0x9b, 0x1a, 0x98, 0x46, 0x01, 0x26, 0x86, 0xe5, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xa5, 0xe6, 0x4c, 0x46, 0x23, 0x43, + 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x5b, 0xe6, 0x65, 0x46, 0x1e, 0x00, + 0x20, 0x3d, 0xee, 0x40, 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x25, 0x2d, 0x1b, + 0xab, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, + 0x9c, 0x41, 0x34, 0x43, 0x7d, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0xcc, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, + 0x36, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, + 0x81, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, + 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x01, 0x26, 0x4e, 0xe5, + 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0xb2, 0xe6, 0x4a, 0x46, + 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5f, 0x1a, 0x52, 0x42, 0xba, 0x1a, + 0x90, 0x46, 0x12, 0x02, 0x6b, 0xd5, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, + 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x64, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, + 0x98, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x4f, 0xe6, + 0x0a, 0x00, 0x02, 0x43, 0x90, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, + 0x14, 0x43, 0x80, 0x22, 0xdb, 0x08, 0x12, 0x03, 0x13, 0x42, 0x08, 0xd0, + 0xce, 0x08, 0x16, 0x42, 0x05, 0xd1, 0xc0, 0x08, 0x49, 0x07, 0x08, 0x43, + 0x04, 0x00, 0x5d, 0x46, 0x33, 0x00, 0x61, 0x0f, 0xe2, 0x00, 0x49, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0x78, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0xcb, 0x08, 0x32, 0xe6, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x92, 0x41, + 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x04, 0x00, 0x1b, 0x02, + 0x00, 0xd4, 0x1a, 0xe6, 0x42, 0x46, 0x0e, 0x4b, 0x01, 0x26, 0x1a, 0x40, + 0x90, 0x46, 0x14, 0xe6, 0x66, 0x46, 0x1f, 0x00, 0x20, 0x3e, 0xf7, 0x40, + 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x26, 0x36, 0x1b, 0xb3, 0x40, 0x4c, 0x46, + 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x3c, 0x43, + 0xc8, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x22, 0x32, 0xe5, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0xfe, 0x07, 0x00, 0x00, + 0x4a, 0x46, 0x14, 0x18, 0x84, 0x42, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, + 0x52, 0x42, 0x90, 0x44, 0xe9, 0xe5, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd1, + 0xa6, 0xe6, 0xea, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, + 0x32, 0xe6, 0x00, 0x22, 0x01, 0x49, 0x13, 0x00, 0x14, 0xe5, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0x0a, 0x00, 0x30, 0xb5, 0x13, 0x4c, 0x53, 0x00, + 0x09, 0x03, 0x05, 0x00, 0x09, 0x0b, 0x00, 0x20, 0x5b, 0x0d, 0xd2, 0x0f, + 0xa3, 0x42, 0x04, 0xdd, 0x0f, 0x48, 0x83, 0x42, 0x02, 0xdd, 0x0f, 0x4b, + 0xd0, 0x18, 0x30, 0xbd, 0x80, 0x20, 0x40, 0x03, 0x01, 0x43, 0x0d, 0x48, + 0xc0, 0x1a, 0x1f, 0x28, 0x08, 0xdd, 0x0c, 0x48, 0xc3, 0x1a, 0xd9, 0x40, + 0x0b, 0x00, 0x58, 0x42, 0x00, 0x2a, 0xf0, 0xd1, 0x18, 0x00, 0xee, 0xe7, + 0x08, 0x4c, 0xc5, 0x40, 0xa4, 0x46, 0x63, 0x44, 0x99, 0x40, 0x0b, 0x00, + 0x2b, 0x43, 0xf2, 0xe7, 0xfe, 0x03, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x7f, 0x33, 0x04, 0x00, 0x00, 0x13, 0x04, 0x00, 0x00, + 0xed, 0xfb, 0xff, 0xff, 0x10, 0xb5, 0x04, 0x1e, 0x10, 0xd0, 0x00, 0xf0, + 0x21, 0xf8, 0x0f, 0x4b, 0x1b, 0x1a, 0x0a, 0x28, 0x11, 0xdc, 0x0b, 0x22, + 0x21, 0x00, 0x12, 0x1a, 0xd1, 0x40, 0x15, 0x30, 0x0a, 0x03, 0x5b, 0x05, + 0x84, 0x40, 0x12, 0x0b, 0x5b, 0x0d, 0x01, 0xe0, 0x00, 0x23, 0x00, 0x22, + 0x1b, 0x05, 0x13, 0x43, 0x20, 0x00, 0x19, 0x00, 0x10, 0xbd, 0x22, 0x00, + 0x0b, 0x38, 0x82, 0x40, 0x5b, 0x05, 0x12, 0x03, 0x00, 0x24, 0x12, 0x0b, + 0x5b, 0x0d, 0xf1, 0xe7, 0x1e, 0x04, 0x00, 0x00, 0x1c, 0x21, 0x01, 0x23, + 0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a, + 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42, + 0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x08, + 0x58, 0x15, 0x00, 0x08, 0x36, 0x15, 0x00, 0x08, 0x4a, 0x16, 0x00, 0x08, + 0x36, 0x15, 0x00, 0x08, 0x8e, 0x16, 0x00, 0x08, 0x36, 0x15, 0x00, 0x08, + 0x4a, 0x16, 0x00, 0x08, 0x58, 0x15, 0x00, 0x08, 0x58, 0x15, 0x00, 0x08, + 0x8e, 0x16, 0x00, 0x08, 0x4a, 0x16, 0x00, 0x08, 0xfc, 0x15, 0x00, 0x08, + 0xfc, 0x15, 0x00, 0x08, 0xfc, 0x15, 0x00, 0x08, 0x9c, 0x16, 0x00, 0x08, + 0x28, 0x1e, 0x00, 0x08, 0x56, 0x1d, 0x00, 0x08, 0x56, 0x1d, 0x00, 0x08, + 0x52, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, + 0x48, 0x20, 0x00, 0x08, 0x52, 0x1d, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, + 0x48, 0x20, 0x00, 0x08, 0x5c, 0x1d, 0x00, 0x08, 0x52, 0x1d, 0x00, 0x08, + 0xe6, 0x1f, 0x00, 0x08, 0xe6, 0x1f, 0x00, 0x08, 0xe6, 0x1f, 0x00, 0x08, + 0xb2, 0x20, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xa9, 0xf1, 0xd2, 0x4d, 0x62, 0x50, 0x3f, 0x80, 0x84, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xa6, 0x40, + 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h new file mode 100644 index 000000000..74e9dfb88 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h @@ -0,0 +1,795 @@ +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 50; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 2; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0x21, 0x11, 0x00, 0x08, 0x1d, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x11, 0x00, 0x08, + 0xc9, 0x07, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0xd9, 0x07, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, 0x1b, 0x11, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x56, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x4a, 0xfc, + 0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0x87, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf, + 0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x85, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0xe3, 0xff, 0x82, 0x4c, 0x83, 0x49, + 0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x79, 0x49, 0xed, 0xb2, 0xc8, 0x5c, + 0x78, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2, + 0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x68, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6b, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb8, 0xe0, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x62, 0x4a, 0x63, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x5e, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x5b, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21, + 0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x01, 0xf0, 0x78, 0xf8, + 0xff, 0xf7, 0x50, 0xff, 0x56, 0x4b, 0x57, 0x4c, 0x1b, 0x68, 0x57, 0x4e, + 0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff, + 0x00, 0xe0, 0x33, 0x60, 0x53, 0x4b, 0x54, 0x49, 0x1b, 0x68, 0x09, 0x68, + 0x32, 0x68, 0x5b, 0x1a, 0x52, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23, + 0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b, + 0x0a, 0xd0, 0x10, 0x2b, 0x5a, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23, + 0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1, + 0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d, + 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46, + 0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x37, 0x4a, 0x01, 0xa8, 0x12, 0x78, + 0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70, + 0x00, 0xf0, 0xe0, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c, + 0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2, + 0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54, + 0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x26, 0x4d, 0x33, 0x5d, + 0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, + 0xfb, 0x60, 0x01, 0xf0, 0xf9, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0, + 0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54, + 0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0xec, 0xf8, 0xe9, 0x60, 0x7b, 0x68, + 0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7, + 0x21, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xaf, 0xe7, 0x21, 0x68, 0x00, 0x20, + 0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21, 0x15, 0x48, + 0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18, 0x11, 0x24, + 0x78, 0x83, 0x0a, 0x70, 0x9e, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60, + 0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0xc8, 0xf8, 0x02, 0x48, 0xa1, 0x60, + 0xa9, 0xb2, 0x00, 0xf0, 0xde, 0xfe, 0x3e, 0xe7, 0x00, 0x38, 0x01, 0x40, + 0x1c, 0x38, 0x01, 0x40, 0x10, 0x00, 0x00, 0x20, 0x4c, 0x01, 0x00, 0x20, + 0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, + 0x24, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0x1d, 0xfc, 0xbf, 0x48, 0x00, 0xf0, 0x4c, 0xfc, 0xbe, 0x48, 0x00, 0xf0, + 0x49, 0xfc, 0xbe, 0x48, 0x00, 0xf0, 0x46, 0xfc, 0xbd, 0x48, 0x00, 0xf0, + 0x43, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x3f, 0xfc, 0xc0, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0x3b, 0xfc, 0x90, 0x23, 0x90, 0x20, 0x1b, 0x01, + 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xe8, 0xfa, 0x90, 0x22, + 0x90, 0x20, 0x02, 0x21, 0x12, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x1f, 0xfb, + 0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xda, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xd3, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x09, 0xfb, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0xa5, 0x48, 0x00, 0xf0, 0xc5, 0xfa, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0xa2, 0x48, 0x00, 0xf0, 0xdf, 0xfa, 0x21, 0x00, 0xa0, 0x48, + 0x00, 0xf0, 0xb6, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x9d, 0x48, + 0x00, 0xf0, 0xb5, 0xfa, 0x9c, 0x4b, 0x9d, 0x4a, 0x5c, 0x60, 0x00, 0x24, + 0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, + 0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa6, 0xfa, 0xc0, 0x22, + 0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xdd, 0xfa, + 0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0xca, 0xfe, 0x1b, 0x20, 0x00, 0xf0, + 0xbb, 0xfe, 0xe1, 0x21, 0x8f, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, + 0x07, 0xfe, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x0f, 0xfe, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x21, 0xfe, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0x15, 0xfe, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x21, 0xfe, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x23, 0xfe, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, + 0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x24, 0xfe, 0x80, 0x48, 0x00, 0xf0, + 0x00, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xc9, 0xfb, 0x23, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x7b, 0x48, 0x00, 0xf0, 0xdb, 0xfb, 0xf0, 0x21, + 0x79, 0x48, 0x49, 0x00, 0x00, 0xf0, 0xf6, 0xfb, 0x77, 0x48, 0x00, 0xf0, + 0x30, 0xfd, 0x76, 0x48, 0x00, 0xf0, 0xdc, 0xfb, 0x74, 0x48, 0x00, 0xf0, + 0xde, 0xfb, 0x21, 0x00, 0x72, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0x07, 0x22, + 0x21, 0x00, 0x70, 0x48, 0x00, 0xf0, 0xe6, 0xfb, 0x21, 0x00, 0x6e, 0x48, + 0x00, 0xf0, 0xa2, 0xfc, 0x21, 0x00, 0x6c, 0x48, 0x00, 0xf0, 0xc2, 0xfc, + 0x01, 0x22, 0x21, 0x00, 0x52, 0x42, 0x69, 0x48, 0x00, 0xf0, 0x00, 0xfd, + 0x06, 0x21, 0x67, 0x48, 0x00, 0xf0, 0xd8, 0xfc, 0x07, 0x22, 0x06, 0x21, + 0x64, 0x48, 0x00, 0xf0, 0xcf, 0xfb, 0x06, 0x21, 0x62, 0x48, 0x00, 0xf0, + 0x8b, 0xfc, 0x06, 0x21, 0x60, 0x48, 0x00, 0xf0, 0xab, 0xfc, 0x01, 0x22, + 0x06, 0x21, 0x52, 0x42, 0x5d, 0x48, 0x00, 0xf0, 0xe9, 0xfc, 0x5c, 0x48, + 0x00, 0xf0, 0xb2, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xb3, 0xfb, + 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x7c, 0xfb, 0x0f, 0x20, 0x00, 0xf0, + 0x43, 0xfe, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xa5, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x8d, 0xfb, 0x80, 0x20, + 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x73, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x32, 0xfd, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0xd4, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x87, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x3e, 0xfc, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x5d, 0xfc, 0x80, 0x20, + 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x46, 0xfd, 0x80, 0x20, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x45, 0xfb, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x07, 0xfd, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xa9, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x01, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x5c, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x13, 0xfc, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x32, 0xfc, + 0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1b, 0xfd, 0x80, 0x20, + 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1a, 0xfb, 0x01, 0x21, 0x80, 0x20, + 0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0xc0, 0x05, + 0x00, 0xf0, 0x2e, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0xc7, 0xfd, 0x04, 0x20, + 0x12, 0x49, 0x00, 0xf0, 0x5b, 0xf9, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, + 0x23, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x40, 0xf9, 0x20, 0x00, 0x00, 0xf0, + 0x9f, 0xfd, 0xfa, 0x21, 0x10, 0x4b, 0x49, 0x01, 0x1c, 0x60, 0x10, 0x4b, + 0x18, 0x68, 0x00, 0xf0, 0x9f, 0xfe, 0x00, 0xf0, 0x8d, 0xfd, 0x00, 0xf0, + 0x9d, 0xfd, 0x00, 0xf0, 0xa3, 0xfd, 0xc0, 0x46, 0xfd, 0xe7, 0xc0, 0x46, + 0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, + 0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x34, 0x00, 0x00, 0x20, + 0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, 0x00, 0x2c, 0x01, 0x40, + 0x18, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x20, 0xf7, 0xb5, 0x2e, 0x4b, + 0x1b, 0x68, 0x01, 0x93, 0x9b, 0x07, 0x38, 0xd5, 0x2c, 0x4b, 0x2d, 0x4f, + 0x19, 0x68, 0x2d, 0x4b, 0x2d, 0x4e, 0x1a, 0x68, 0x2d, 0x4d, 0x19, 0x60, + 0x94, 0x46, 0x2d, 0x4b, 0x38, 0x68, 0x32, 0x68, 0x1c, 0x68, 0x2b, 0x68, + 0x82, 0x42, 0x09, 0xd0, 0x01, 0x2b, 0x07, 0xd9, 0x62, 0x46, 0x8a, 0x1a, + 0x28, 0x49, 0x09, 0x78, 0x00, 0x29, 0x39, 0xd0, 0x27, 0x49, 0x0a, 0x60, + 0x27, 0x49, 0x01, 0x33, 0x2b, 0x60, 0x20, 0x1a, 0x88, 0x42, 0x03, 0xd8, + 0xfa, 0x22, 0x92, 0x00, 0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x20, 0x4a, + 0x22, 0x48, 0x11, 0x78, 0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, + 0x00, 0x2b, 0x25, 0xd0, 0x00, 0xf0, 0x36, 0xf9, 0x00, 0x23, 0x3c, 0x60, + 0x2b, 0x60, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x34, 0x60, 0x00, 0xf0, + 0x9d, 0xfa, 0x04, 0x21, 0x01, 0x9b, 0x0b, 0x42, 0x13, 0xd0, 0x18, 0x4a, + 0x18, 0x4b, 0x19, 0x4c, 0x18, 0x68, 0x13, 0x68, 0x10, 0x60, 0xc3, 0x1a, + 0x80, 0x20, 0x17, 0x4a, 0x23, 0x60, 0x13, 0x68, 0xc0, 0x05, 0x01, 0x33, + 0x13, 0x60, 0x0c, 0x4b, 0x1a, 0x68, 0x14, 0x4b, 0x1a, 0x60, 0x00, 0xf0, + 0x85, 0xfa, 0xf7, 0xbd, 0x12, 0x49, 0xc4, 0xe7, 0x00, 0xf0, 0x0e, 0xf9, + 0xd8, 0xe7, 0xc0, 0x46, 0x10, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x40, + 0x20, 0x00, 0x00, 0x20, 0x50, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x14, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x54, 0x02, 0x00, 0x20, 0x38, 0x00, 0x00, 0x40, 0x48, 0x01, 0x00, 0x20, + 0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x4c, 0x02, 0x00, 0x20, 0x70, 0xb5, 0x30, 0x48, 0x00, 0xf0, 0xb7, 0xfb, + 0x2f, 0x4b, 0x30, 0x4c, 0x1d, 0x78, 0x30, 0x4e, 0x00, 0x2d, 0x3a, 0xd0, + 0x00, 0x21, 0x2b, 0x48, 0x00, 0xf0, 0x70, 0xfb, 0x07, 0x22, 0x00, 0x21, + 0x28, 0x48, 0x00, 0xf0, 0x67, 0xfa, 0x00, 0x21, 0x26, 0x48, 0x00, 0xf0, + 0x47, 0xfb, 0x06, 0x21, 0x24, 0x48, 0x00, 0xf0, 0x63, 0xfb, 0x07, 0x22, + 0x06, 0x21, 0x22, 0x48, 0x00, 0xf0, 0x5a, 0xfa, 0x06, 0x21, 0x20, 0x48, + 0x00, 0xf0, 0x3a, 0xfb, 0xfa, 0x23, 0x32, 0x88, 0x9b, 0x00, 0x9b, 0x1a, + 0x23, 0x60, 0x20, 0x68, 0x01, 0xf0, 0xaa, 0xfc, 0x1e, 0x4b, 0x1f, 0x4a, + 0x00, 0xf0, 0x72, 0xfe, 0x00, 0xf0, 0x52, 0xfe, 0x00, 0x21, 0x02, 0x00, + 0x20, 0x60, 0x16, 0x48, 0x00, 0xf0, 0x6a, 0xfb, 0x22, 0x68, 0x06, 0x21, + 0x13, 0x48, 0x00, 0xf0, 0x65, 0xfb, 0x00, 0x21, 0x11, 0x48, 0x00, 0xf0, + 0x7c, 0xfb, 0x04, 0x20, 0x00, 0xf0, 0x58, 0xf8, 0x70, 0xbd, 0x29, 0x00, + 0x0d, 0x48, 0x00, 0xf0, 0x35, 0xfb, 0x06, 0x22, 0x29, 0x00, 0x0b, 0x48, + 0x00, 0xf0, 0x2c, 0xfa, 0x29, 0x00, 0x09, 0x48, 0x00, 0xf0, 0x0c, 0xfb, + 0x06, 0x21, 0x07, 0x48, 0x00, 0xf0, 0x28, 0xfb, 0x06, 0x22, 0x05, 0x48, + 0x11, 0x00, 0x00, 0xf0, 0x1f, 0xfa, 0x06, 0x21, 0x02, 0x48, 0x00, 0xf0, + 0xff, 0xfa, 0x33, 0x88, 0xc6, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, + 0x30, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x20, + 0xeb, 0x51, 0xf0, 0x3f, 0x52, 0xb8, 0x1e, 0x85, 0x01, 0x29, 0x0c, 0xd0, + 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, + 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, + 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, + 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, + 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, + 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, + 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, + 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, + 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, + 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, + 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, + 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, + 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, + 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, + 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, + 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, + 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0xf0, 0xb5, + 0x85, 0xb0, 0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, + 0x02, 0x68, 0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, + 0x0a, 0xd0, 0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, + 0xab, 0x43, 0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, + 0x01, 0x31, 0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, + 0xf0, 0xbd, 0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, + 0x19, 0x43, 0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, + 0x1d, 0x00, 0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, + 0xaa, 0x40, 0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, + 0x10, 0x2c, 0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, + 0xe7, 0xe7, 0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, + 0x00, 0x91, 0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, + 0x06, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, + 0xaa, 0x40, 0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, + 0x0f, 0x27, 0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, + 0x9d, 0x00, 0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, + 0x11, 0x43, 0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, + 0xf7, 0xbd, 0x00, 0x00, 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, + 0x01, 0x33, 0x00, 0xf0, 0x97, 0xfc, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, + 0x04, 0x00, 0x0b, 0x4a, 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, + 0x00, 0xbd, 0x08, 0x4a, 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, + 0xfa, 0xe7, 0x06, 0x4a, 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, + 0xf0, 0xe7, 0x04, 0x4a, 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, + 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, + 0x24, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, + 0xd1, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, + 0x0b, 0xd8, 0x00, 0xf0, 0x67, 0xfc, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, + 0x04, 0x00, 0x0c, 0x4a, 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, + 0x13, 0x60, 0x00, 0xbd, 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, + 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, + 0x06, 0x4a, 0xf4, 0xe7, 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, + 0xeb, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, + 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, + 0x05, 0x28, 0x12, 0xd8, 0x00, 0xf0, 0x3c, 0xfc, 0x03, 0x09, 0x12, 0x11, + 0x11, 0x19, 0x03, 0x21, 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, + 0x07, 0xe0, 0x03, 0x22, 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, + 0x01, 0x23, 0x13, 0x43, 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, + 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, + 0x01, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, + 0xf0, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, + 0xff, 0xf7, 0x7e, 0xff, 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, + 0xff, 0xf7, 0xa2, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, + 0xff, 0xf7, 0xda, 0xff, 0x00, 0xf0, 0x22, 0xfb, 0x01, 0x20, 0x00, 0xf0, + 0x27, 0xfb, 0xa0, 0x20, 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, + 0xff, 0xf7, 0xc2, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, + 0xff, 0xf7, 0x58, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, + 0x03, 0x4a, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, + 0x00, 0x6c, 0xdc, 0x02, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, + 0x05, 0x4b, 0x42, 0x09, 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, + 0x83, 0x40, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x10, 0x02, 0x40, 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, + 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, + 0x19, 0x68, 0x91, 0x43, 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, + 0xc3, 0x68, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, + 0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, + 0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, + 0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x1c, 0xd8, 0x00, 0xf0, + 0x6d, 0xfb, 0x04, 0x1b, 0x2f, 0x1b, 0x5c, 0x1b, 0x86, 0x00, 0x03, 0x20, + 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x99, 0x61, 0x70, 0x21, + 0x98, 0x69, 0x88, 0x43, 0x98, 0x61, 0x07, 0x2a, 0x0a, 0xd8, 0x10, 0x00, + 0x00, 0xf0, 0x5a, 0xfb, 0x2f, 0x04, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, + 0x10, 0x22, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x20, 0x22, + 0x99, 0x69, 0xf9, 0xe7, 0x30, 0x22, 0x99, 0x69, 0xf6, 0xe7, 0x40, 0x22, + 0x99, 0x69, 0xf3, 0xe7, 0x50, 0x22, 0x99, 0x69, 0xf0, 0xe7, 0x60, 0x22, + 0x99, 0x69, 0xed, 0xe7, 0x9a, 0x69, 0x11, 0x43, 0x99, 0x61, 0xeb, 0xe7, + 0x99, 0x69, 0x42, 0x48, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0x41, 0x48, + 0x99, 0x61, 0x99, 0x69, 0x01, 0x40, 0x99, 0x61, 0x07, 0x2a, 0xdf, 0xd8, + 0x10, 0x00, 0x00, 0xf0, 0x2f, 0xfb, 0x04, 0x06, 0x0a, 0x0e, 0x11, 0x15, + 0x18, 0x1b, 0x9a, 0x69, 0xd5, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x52, 0x01, + 0xd0, 0xe7, 0x80, 0x22, 0x99, 0x69, 0x92, 0x01, 0xcc, 0xe7, 0xc0, 0x22, + 0x99, 0x69, 0xfa, 0xe7, 0x80, 0x22, 0x99, 0x69, 0xd2, 0x01, 0xc5, 0xe7, + 0xa0, 0x22, 0x99, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0x99, 0x69, 0xf7, 0xe7, + 0xe0, 0x22, 0x99, 0x69, 0xf4, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, + 0xd9, 0x61, 0xd9, 0x69, 0xd9, 0x61, 0x70, 0x21, 0xd8, 0x69, 0x88, 0x43, + 0xd8, 0x61, 0x07, 0x2a, 0xb2, 0xd8, 0x10, 0x00, 0x00, 0xf0, 0x02, 0xfb, + 0x2f, 0x04, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x10, 0x22, 0xd9, 0x69, + 0x0a, 0x43, 0x27, 0xe0, 0x20, 0x22, 0xd9, 0x69, 0xfa, 0xe7, 0x30, 0x22, + 0xd9, 0x69, 0xf7, 0xe7, 0x40, 0x22, 0xd9, 0x69, 0xf4, 0xe7, 0x50, 0x22, + 0xd9, 0x69, 0xf1, 0xe7, 0x60, 0x22, 0xd9, 0x69, 0xee, 0xe7, 0xda, 0x69, + 0x11, 0x43, 0xd9, 0x61, 0x94, 0xe7, 0xd9, 0x69, 0x16, 0x48, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0x15, 0x48, 0xd9, 0x61, 0xd9, 0x69, 0x01, 0x40, + 0xd9, 0x61, 0x07, 0x2a, 0x00, 0xd9, 0x87, 0xe7, 0x10, 0x00, 0x00, 0xf0, + 0xd7, 0xfa, 0x04, 0x07, 0x0b, 0x0f, 0x12, 0x16, 0x19, 0x1c, 0xda, 0x69, + 0xda, 0x61, 0x7d, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0x52, 0x01, 0xcf, 0xe7, + 0x80, 0x22, 0xd9, 0x69, 0x92, 0x01, 0xcb, 0xe7, 0xc0, 0x22, 0xd9, 0x69, + 0xfa, 0xe7, 0x80, 0x22, 0xd9, 0x69, 0xd2, 0x01, 0xc4, 0xe7, 0xa0, 0x22, + 0xd9, 0x69, 0xfa, 0xe7, 0xc0, 0x22, 0xd9, 0x69, 0xf7, 0xe7, 0xe0, 0x22, + 0xd9, 0x69, 0xf4, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, + 0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, + 0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, + 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7, + 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7, + 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00, + 0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11, + 0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, + 0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, + 0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, + 0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, + 0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, + 0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62, + 0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, + 0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b, + 0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, + 0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, + 0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, + 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, + 0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, + 0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9, + 0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, + 0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, + 0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, + 0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, + 0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, + 0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, + 0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, + 0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, + 0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd, + 0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, + 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, + 0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, + 0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, + 0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7, + 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49, + 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3, + 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43, + 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b, + 0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0x22, 0xf9, 0x12, 0x4c, 0x13, 0x4b, + 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7, + 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc, + 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0x00, 0x20, 0x04, 0x25, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20, + 0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0x04, 0x25, 0x00, 0x08, + 0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08, + 0x04, 0x25, 0x00, 0x08, 0x04, 0x25, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02, + 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0, + 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18, + 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47, + 0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23, + 0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00, + 0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40, + 0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd, + 0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0, + 0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, + 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, + 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, + 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, + 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, + 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, + 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, + 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, + 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, + 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, + 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, + 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, + 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, + 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, + 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, + 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, + 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, + 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, + 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, + 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, + 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, + 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, + 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, + 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, + 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, + 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, + 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, + 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, + 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, + 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, + 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, + 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, + 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, + 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, + 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, + 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, + 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, + 0x70, 0x47, 0xc0, 0x46, 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0xf0, 0xa5, 0xfe, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, + 0x29, 0x00, 0x00, 0xf0, 0x0f, 0xfe, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, + 0x20, 0x00, 0x29, 0x00, 0x00, 0xf0, 0x76, 0xfa, 0x00, 0xf0, 0x06, 0xfe, + 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0xe0, 0x41, 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, + 0xde, 0x46, 0xe0, 0xb5, 0x98, 0x46, 0x0c, 0x03, 0x4b, 0x00, 0x06, 0x00, + 0x92, 0x46, 0x87, 0xb0, 0x24, 0x0b, 0x5b, 0x0d, 0xcf, 0x0f, 0x00, 0x2b, + 0x6c, 0xd0, 0xdd, 0x4a, 0x93, 0x42, 0x00, 0xd1, 0x86, 0xe0, 0x42, 0x0f, + 0xe4, 0x00, 0x14, 0x43, 0x80, 0x22, 0x12, 0x04, 0x14, 0x43, 0xd9, 0x4a, + 0xc5, 0x00, 0x94, 0x46, 0x63, 0x44, 0x00, 0x93, 0x00, 0x23, 0x99, 0x46, + 0x9b, 0x46, 0x43, 0x46, 0x42, 0x46, 0x1e, 0x03, 0xd2, 0x0f, 0x5b, 0x00, + 0x50, 0x46, 0x90, 0x46, 0x36, 0x0b, 0x5b, 0x0d, 0x00, 0xd1, 0x78, 0xe0, + 0xce, 0x4a, 0x93, 0x42, 0x1d, 0xd0, 0xce, 0x49, 0x42, 0x0f, 0x8c, 0x46, + 0x00, 0x99, 0x63, 0x44, 0xf6, 0x00, 0x8c, 0x46, 0x16, 0x43, 0x80, 0x22, + 0x9c, 0x44, 0x12, 0x04, 0x63, 0x46, 0x16, 0x43, 0xc2, 0x00, 0x00, 0x20, + 0x00, 0x93, 0x00, 0x99, 0x43, 0x46, 0x01, 0x31, 0x8c, 0x46, 0x49, 0x46, + 0x7b, 0x40, 0x01, 0x93, 0x0f, 0x29, 0x00, 0xd9, 0x7e, 0xe0, 0xc2, 0x4b, + 0x89, 0x00, 0x59, 0x58, 0x8f, 0x46, 0x52, 0x46, 0x00, 0x9b, 0x32, 0x43, + 0x00, 0xd0, 0x56, 0xe1, 0xbb, 0x49, 0x00, 0x26, 0x8c, 0x46, 0x63, 0x44, + 0x49, 0x46, 0x00, 0x93, 0x02, 0x23, 0x19, 0x43, 0x89, 0x46, 0x02, 0x20, + 0xe1, 0xe7, 0x43, 0x46, 0x01, 0x93, 0x34, 0x00, 0x15, 0x00, 0x83, 0x46, + 0x5b, 0x46, 0x02, 0x2b, 0x5e, 0xd0, 0x03, 0x2b, 0x00, 0xd1, 0xf3, 0xe1, + 0x01, 0x2b, 0x00, 0xd0, 0x18, 0xe1, 0x00, 0x22, 0x00, 0x24, 0x00, 0x25, + 0x01, 0x9b, 0x12, 0x05, 0x22, 0x43, 0xdb, 0x07, 0x1a, 0x43, 0x28, 0x00, + 0x11, 0x00, 0x07, 0xb0, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x25, 0x00, 0x05, 0x43, 0x00, 0xd1, 0x41, 0xe1, + 0x00, 0x2c, 0x00, 0xd1, 0xad, 0xe1, 0x20, 0x00, 0x00, 0xf0, 0x10, 0xfe, + 0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x10, 0x00, 0x5b, 0x1a, + 0x31, 0x00, 0x35, 0x00, 0x08, 0x38, 0x84, 0x40, 0xd9, 0x40, 0x85, 0x40, + 0x0c, 0x43, 0x9e, 0x48, 0x83, 0x1a, 0x00, 0x93, 0x00, 0x23, 0x99, 0x46, + 0x9b, 0x46, 0x86, 0xe7, 0x05, 0x00, 0x25, 0x43, 0x00, 0xd0, 0x1c, 0xe1, + 0x08, 0x22, 0x00, 0x93, 0x02, 0x23, 0x00, 0x24, 0x91, 0x46, 0x9b, 0x46, + 0x7b, 0xe7, 0x52, 0x46, 0x32, 0x43, 0x00, 0xd1, 0x0a, 0xe1, 0x00, 0x2e, + 0x00, 0xd1, 0x76, 0xe1, 0x30, 0x00, 0x00, 0xf0, 0xe7, 0xfd, 0x02, 0x00, + 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a, 0x52, 0x46, 0x08, 0x39, + 0xda, 0x40, 0x8e, 0x40, 0x16, 0x43, 0x52, 0x46, 0x8a, 0x40, 0x00, 0x9b, + 0x89, 0x49, 0x18, 0x1a, 0x03, 0x00, 0x8c, 0x46, 0x63, 0x44, 0x00, 0x20, + 0x00, 0x93, 0x7a, 0xe7, 0x00, 0x24, 0x00, 0x25, 0x81, 0x4a, 0xa5, 0xe7, + 0x2f, 0x0c, 0x2d, 0x04, 0x2d, 0x0c, 0x2b, 0x00, 0x11, 0x0c, 0x12, 0x04, + 0x12, 0x0c, 0x53, 0x43, 0x98, 0x46, 0x13, 0x00, 0x28, 0x00, 0x7b, 0x43, + 0x99, 0x46, 0x48, 0x43, 0x48, 0x44, 0x83, 0x46, 0x40, 0x46, 0x0b, 0x00, + 0x00, 0x0c, 0x82, 0x46, 0x58, 0x46, 0x7b, 0x43, 0x50, 0x44, 0x02, 0x93, + 0x81, 0x45, 0x06, 0xd9, 0x9a, 0x46, 0x80, 0x23, 0x5b, 0x02, 0x99, 0x46, + 0xca, 0x44, 0x53, 0x46, 0x02, 0x93, 0x03, 0x0c, 0x9b, 0x46, 0x43, 0x46, + 0x1b, 0x04, 0x00, 0x04, 0x1b, 0x0c, 0x98, 0x46, 0x03, 0x00, 0x43, 0x44, + 0x04, 0x93, 0x33, 0x0c, 0x99, 0x46, 0x2b, 0x00, 0x36, 0x04, 0x36, 0x0c, + 0x73, 0x43, 0x98, 0x46, 0x33, 0x00, 0x7b, 0x43, 0x9a, 0x46, 0x4b, 0x46, + 0x5d, 0x43, 0x5f, 0x43, 0x43, 0x46, 0x55, 0x44, 0x18, 0x0c, 0x40, 0x19, + 0x82, 0x45, 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x9a, 0x46, 0x57, 0x44, + 0x05, 0x0c, 0xeb, 0x19, 0x05, 0x93, 0x43, 0x46, 0x1d, 0x04, 0x2d, 0x0c, + 0x00, 0x04, 0x40, 0x19, 0x25, 0x0c, 0x24, 0x04, 0x24, 0x0c, 0x27, 0x00, + 0x57, 0x43, 0x6a, 0x43, 0x90, 0x46, 0x2a, 0x00, 0x3b, 0x0c, 0x9a, 0x46, + 0x4a, 0x43, 0x61, 0x43, 0x41, 0x44, 0x51, 0x44, 0x83, 0x44, 0x88, 0x45, + 0x03, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, 0x42, 0x44, 0x3f, 0x04, + 0x0b, 0x0c, 0x3f, 0x0c, 0x09, 0x04, 0xc9, 0x19, 0x27, 0x00, 0x98, 0x46, + 0x4b, 0x46, 0x77, 0x43, 0x5c, 0x43, 0x6e, 0x43, 0x5d, 0x43, 0x3b, 0x0c, + 0x99, 0x46, 0xa4, 0x19, 0x4c, 0x44, 0x42, 0x44, 0x03, 0x95, 0xa6, 0x42, + 0x04, 0xd9, 0x80, 0x23, 0x5b, 0x02, 0x98, 0x46, 0x45, 0x44, 0x03, 0x95, + 0x02, 0x9b, 0x3f, 0x04, 0x5b, 0x44, 0x1e, 0x00, 0x83, 0x42, 0x80, 0x41, + 0x23, 0x04, 0x98, 0x46, 0x05, 0x9b, 0x3f, 0x0c, 0x47, 0x44, 0x98, 0x46, + 0x76, 0x18, 0x8e, 0x42, 0x89, 0x41, 0x47, 0x44, 0x40, 0x42, 0x3d, 0x18, + 0xa8, 0x46, 0x93, 0x46, 0x49, 0x42, 0x8a, 0x46, 0xc3, 0x44, 0x9f, 0x42, + 0xbf, 0x41, 0x80, 0x45, 0x80, 0x41, 0x03, 0x9b, 0xda, 0x44, 0x98, 0x46, + 0x53, 0x46, 0x40, 0x42, 0x7f, 0x42, 0x07, 0x43, 0x24, 0x0c, 0x93, 0x45, + 0x92, 0x41, 0x8a, 0x45, 0x89, 0x41, 0x3f, 0x19, 0xdc, 0x0d, 0x04, 0x9b, + 0x75, 0x02, 0x1d, 0x43, 0x68, 0x1e, 0x85, 0x41, 0x53, 0x46, 0x52, 0x42, + 0x49, 0x42, 0x0a, 0x43, 0xbf, 0x18, 0x47, 0x44, 0xf6, 0x0d, 0x7f, 0x02, + 0x35, 0x43, 0x5a, 0x02, 0x3c, 0x43, 0x15, 0x43, 0xfb, 0x01, 0x00, 0xd4, + 0xc1, 0xe0, 0x01, 0x21, 0x6a, 0x08, 0x0d, 0x40, 0x15, 0x43, 0xe2, 0x07, + 0x15, 0x43, 0x64, 0x08, 0x26, 0x49, 0x61, 0x44, 0x00, 0x29, 0x56, 0xdd, + 0x6b, 0x07, 0x09, 0xd0, 0x0f, 0x22, 0x2a, 0x40, 0x04, 0x2a, 0x05, 0xd0, + 0x2a, 0x1d, 0xaa, 0x42, 0xad, 0x41, 0x6d, 0x42, 0x64, 0x19, 0x15, 0x00, + 0xe3, 0x01, 0x04, 0xd5, 0x80, 0x21, 0x1e, 0x4a, 0xc9, 0x00, 0x14, 0x40, + 0x61, 0x44, 0x1d, 0x4a, 0x91, 0x42, 0x00, 0xdd, 0x24, 0xe7, 0x62, 0x07, + 0xed, 0x08, 0x64, 0x02, 0x49, 0x05, 0x15, 0x43, 0x24, 0x0b, 0x4a, 0x0d, + 0xc6, 0xe6, 0x01, 0x97, 0xb8, 0xe6, 0x10, 0x4a, 0x03, 0x20, 0x94, 0x46, + 0x63, 0x44, 0x4a, 0x46, 0x00, 0x93, 0x03, 0x23, 0x1a, 0x43, 0x91, 0x46, + 0x52, 0x46, 0x8a, 0xe6, 0x49, 0x46, 0x01, 0x23, 0x19, 0x43, 0x89, 0x46, + 0x00, 0x26, 0x01, 0x20, 0x83, 0xe6, 0x0c, 0x22, 0x00, 0x93, 0x03, 0x23, + 0x05, 0x00, 0x91, 0x46, 0x9b, 0x46, 0x5e, 0xe6, 0x04, 0x23, 0x99, 0x46, + 0x00, 0x23, 0x00, 0x93, 0x01, 0x33, 0x00, 0x24, 0x9b, 0x46, 0x56, 0xe6, + 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff, 0xc4, 0x24, 0x00, 0x08, + 0x0d, 0xfc, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, + 0xfe, 0x07, 0x00, 0x00, 0x00, 0x23, 0x80, 0x24, 0x00, 0x25, 0x44, 0x4a, + 0x01, 0x93, 0x24, 0x03, 0x8e, 0xe6, 0x01, 0x20, 0x40, 0x1a, 0x38, 0x28, + 0x00, 0xdd, 0x86, 0xe6, 0x1f, 0x28, 0x5b, 0xdd, 0x1f, 0x22, 0x23, 0x00, + 0x52, 0x42, 0x51, 0x1a, 0xcb, 0x40, 0x19, 0x00, 0x20, 0x28, 0x03, 0xd0, + 0x3b, 0x4a, 0x62, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, 0x95, 0x41, + 0x2a, 0x00, 0x0a, 0x43, 0x07, 0x21, 0x0d, 0x00, 0x00, 0x24, 0x15, 0x40, + 0x11, 0x42, 0x5b, 0xd0, 0x0f, 0x21, 0x00, 0x24, 0x11, 0x40, 0x04, 0x29, + 0x53, 0xd0, 0x11, 0x1d, 0x91, 0x42, 0x92, 0x41, 0x52, 0x42, 0xa4, 0x18, + 0x0a, 0x00, 0x23, 0x02, 0x4b, 0xd5, 0x01, 0x22, 0x00, 0x24, 0x00, 0x25, + 0x60, 0xe6, 0x80, 0x23, 0x1b, 0x03, 0x1c, 0x42, 0x09, 0xd0, 0x1e, 0x42, + 0x07, 0xd1, 0x33, 0x43, 0x1c, 0x03, 0x43, 0x46, 0x15, 0x00, 0x24, 0x0b, + 0x25, 0x4a, 0x01, 0x93, 0x52, 0xe6, 0x80, 0x22, 0x12, 0x03, 0x14, 0x43, + 0x24, 0x03, 0x22, 0x4a, 0x24, 0x0b, 0x01, 0x97, 0x4a, 0xe6, 0x00, 0xf0, + 0x71, 0xfc, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32, 0x20, 0x30, 0x1c, 0x2a, + 0x00, 0xdc, 0x84, 0xe6, 0x56, 0x46, 0x08, 0x3b, 0x00, 0x22, 0x9e, 0x40, + 0x89, 0xe6, 0x00, 0xf0, 0x63, 0xfc, 0x01, 0x00, 0x02, 0x00, 0x15, 0x31, + 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, 0x4e, 0xe6, 0x34, 0x00, 0x08, 0x38, + 0x00, 0x25, 0x84, 0x40, 0x53, 0xe6, 0x00, 0x9b, 0x9c, 0x46, 0x41, 0xe7, + 0x12, 0x49, 0x22, 0x00, 0x61, 0x44, 0x2e, 0x00, 0x8d, 0x40, 0x8a, 0x40, + 0xc6, 0x40, 0x69, 0x1e, 0x8d, 0x41, 0x32, 0x43, 0x2a, 0x43, 0xc4, 0x40, + 0x53, 0x07, 0xb6, 0xd0, 0x0f, 0x21, 0x11, 0x40, 0x04, 0x29, 0xac, 0xd1, + 0xb1, 0xe7, 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b, 0xd2, 0x08, 0x15, 0x43, + 0x00, 0x22, 0x11, 0xe6, 0x80, 0x22, 0x12, 0x03, 0x14, 0x43, 0x24, 0x03, + 0x01, 0x4a, 0x24, 0x0b, 0x0a, 0xe6, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0xf8, 0xb5, 0x57, 0x46, + 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x04, 0x00, 0xe0, 0xb5, 0x1f, 0x00, + 0x10, 0x00, 0x0b, 0x03, 0x62, 0x0f, 0x4e, 0x00, 0xcd, 0x0f, 0x5b, 0x0a, + 0x39, 0x03, 0x13, 0x43, 0x49, 0x0a, 0xe2, 0x00, 0x44, 0x0f, 0x21, 0x43, + 0xc2, 0x4c, 0x91, 0x46, 0x92, 0x46, 0xc0, 0x00, 0x7a, 0x00, 0x80, 0x46, + 0x76, 0x0d, 0x52, 0x0d, 0xff, 0x0f, 0xa2, 0x42, 0x00, 0xd1, 0xb4, 0xe0, + 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd1, 0x88, 0xe0, + 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x00, 0xdc, 0xb2, 0xe0, 0x00, 0x2a, + 0x00, 0xd1, 0xc5, 0xe0, 0xb5, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x8b, 0xe2, + 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, + 0xa1, 0xe1, 0x1f, 0x2a, 0x00, 0xdd, 0x16, 0xe2, 0x20, 0x27, 0x0c, 0x00, + 0xbf, 0x1a, 0xbc, 0x40, 0x02, 0x00, 0xa0, 0x46, 0x64, 0x46, 0xb8, 0x40, + 0xe2, 0x40, 0x44, 0x46, 0x14, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, + 0x60, 0x46, 0xc1, 0x40, 0x22, 0x43, 0x5b, 0x1a, 0x49, 0x46, 0x8c, 0x1a, + 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x43, 0x46, + 0x1b, 0x02, 0x00, 0xd4, 0x17, 0xe1, 0x43, 0x46, 0x5b, 0x02, 0x5b, 0x0a, + 0x98, 0x46, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x6c, 0xe1, 0x40, 0x46, + 0x00, 0xf0, 0xc8, 0xfb, 0x02, 0x00, 0x08, 0x3a, 0x20, 0x21, 0x20, 0x00, + 0x43, 0x46, 0x89, 0x1a, 0x93, 0x40, 0xc8, 0x40, 0x94, 0x40, 0x03, 0x43, + 0x96, 0x42, 0x00, 0xdd, 0x57, 0xe1, 0x96, 0x1b, 0x71, 0x1c, 0x1f, 0x29, + 0x00, 0xdd, 0xcb, 0xe1, 0x20, 0x22, 0x18, 0x00, 0x26, 0x00, 0x52, 0x1a, + 0x94, 0x40, 0x90, 0x40, 0xce, 0x40, 0xcb, 0x40, 0x62, 0x1e, 0x94, 0x41, + 0x30, 0x43, 0x98, 0x46, 0x00, 0x26, 0x04, 0x43, 0x63, 0x07, 0x09, 0xd0, + 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x05, 0xd0, 0x23, 0x1d, 0xa3, 0x42, + 0xa4, 0x41, 0x64, 0x42, 0xa0, 0x44, 0x1c, 0x00, 0x43, 0x46, 0x1b, 0x02, + 0x00, 0xd4, 0xdf, 0xe0, 0x82, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd1, + 0xfb, 0xe0, 0x42, 0x46, 0x80, 0x4b, 0xe4, 0x08, 0x1a, 0x40, 0x13, 0x00, + 0x71, 0x05, 0x52, 0x07, 0x5b, 0x02, 0x22, 0x43, 0x1b, 0x0b, 0x49, 0x0d, + 0x09, 0x05, 0xed, 0x07, 0x19, 0x43, 0x29, 0x43, 0x10, 0x00, 0x3c, 0xbc, + 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf8, 0xbd, 0xb4, 0x1a, + 0xa4, 0x46, 0x00, 0x2c, 0x58, 0xdd, 0x00, 0x2a, 0x00, 0xd1, 0x9e, 0xe0, + 0x71, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x3b, 0xe1, 0x80, 0x22, 0x12, 0x04, + 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, 0xc1, 0xe0, 0x1f, 0x2a, + 0x00, 0xdc, 0xbb, 0xe1, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, + 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, + 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x14, 0x43, + 0xb1, 0xe0, 0x0c, 0x00, 0x04, 0x43, 0x2a, 0xd0, 0xbb, 0x46, 0xbd, 0x42, + 0x2d, 0xd0, 0x61, 0x4c, 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, + 0x5c, 0xd0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd0, 0x15, 0xe1, + 0x4d, 0x46, 0x1d, 0x43, 0x00, 0xd1, 0xc3, 0xe1, 0x65, 0x1e, 0x01, 0x2c, + 0x00, 0xd1, 0x0c, 0xe2, 0x55, 0x4e, 0xb4, 0x42, 0x00, 0xd1, 0xf8, 0xe1, + 0xac, 0x46, 0x0e, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe1, + 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x00, 0xd1, 0xc6, 0xe1, 0x4e, 0x4c, + 0xa4, 0x45, 0x00, 0xd1, 0xf4, 0xe0, 0x94, 0x46, 0x31, 0xe7, 0x01, 0x24, + 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd0, 0x1c, 0xe7, 0x4a, 0x4c, + 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, 0x00, 0xd1, 0xcf, 0xe0, + 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd1, 0x5c, 0xe1, 0x42, 0x4e, + 0xb2, 0x42, 0x00, 0xd1, 0xec, 0xe1, 0x80, 0x26, 0x36, 0x04, 0x33, 0x43, + 0x64, 0x46, 0x38, 0x2c, 0x00, 0xdd, 0xb3, 0xe1, 0x1f, 0x2c, 0x00, 0xdd, + 0x38, 0xe2, 0x20, 0x26, 0x36, 0x1b, 0x1c, 0x00, 0xb4, 0x40, 0x4f, 0x46, + 0xa0, 0x46, 0x64, 0x46, 0xe7, 0x40, 0x44, 0x46, 0x3c, 0x43, 0x4f, 0x46, + 0xb7, 0x40, 0x3e, 0x00, 0x77, 0x1e, 0xbe, 0x41, 0x34, 0x43, 0x66, 0x46, + 0xf3, 0x40, 0xc9, 0x18, 0x24, 0x18, 0x84, 0x42, 0x9b, 0x41, 0x5b, 0x42, + 0x98, 0x46, 0x16, 0x00, 0x88, 0x44, 0x4e, 0xe0, 0x30, 0x4a, 0x74, 0x1c, + 0x14, 0x42, 0x00, 0xd0, 0xd6, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, + 0x00, 0xd0, 0x5b, 0xe1, 0x00, 0x2a, 0x00, 0xd1, 0xa5, 0xe1, 0x0a, 0x00, + 0x02, 0x43, 0x00, 0xd0, 0xbb, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, + 0x0a, 0x43, 0xdb, 0x08, 0x27, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, + 0x74, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x05, 0xd0, 0x1e, 0x4c, + 0xa4, 0x45, 0x00, 0xd1, 0x94, 0xe0, 0x94, 0x46, 0x59, 0xe7, 0x48, 0x44, + 0x48, 0x45, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, 0x04, 0x00, 0x52, 0x42, + 0x90, 0x44, 0x43, 0x46, 0x02, 0x26, 0x1b, 0x02, 0x00, 0xd5, 0xc4, 0xe0, + 0x01, 0x3e, 0x63, 0x07, 0x00, 0xd0, 0x11, 0xe7, 0x43, 0x46, 0xb4, 0x46, + 0x59, 0x07, 0xe2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x0f, 0x49, 0x8c, 0x45, + 0x40, 0xd0, 0x61, 0x46, 0x1b, 0x03, 0x49, 0x05, 0x1b, 0x0b, 0x49, 0x0d, + 0x20, 0xe7, 0x01, 0x43, 0x0c, 0x00, 0x61, 0x1e, 0x8c, 0x41, 0x4c, 0x44, + 0x4c, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, 0x98, 0x44, 0x43, 0x46, + 0x1b, 0x02, 0xe0, 0xd5, 0x04, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd0, + 0x9f, 0xe0, 0x31, 0x00, 0x00, 0x23, 0x00, 0x22, 0x0a, 0xe7, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0x01, 0xf8, 0xff, 0xff, + 0xfe, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xd1, 0x60, 0xe1, 0x0a, 0x00, + 0x02, 0x43, 0x4d, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x22, 0x43, + 0x80, 0x24, 0xdb, 0x08, 0x24, 0x03, 0x23, 0x42, 0x07, 0xd0, 0xce, 0x08, + 0x26, 0x42, 0x04, 0xd1, 0x5d, 0x46, 0x33, 0x00, 0xc2, 0x08, 0x49, 0x07, + 0x0a, 0x43, 0x51, 0x0f, 0xd2, 0x00, 0xd2, 0x08, 0x49, 0x07, 0x0a, 0x43, + 0x11, 0x00, 0x19, 0x43, 0x00, 0xd1, 0xc8, 0xe1, 0x80, 0x21, 0x09, 0x03, + 0x0b, 0x43, 0x1b, 0x03, 0xd5, 0x49, 0x1b, 0x0b, 0xda, 0xe6, 0xd5, 0x49, + 0xb6, 0x1a, 0x0b, 0x40, 0x98, 0x46, 0xb5, 0xe6, 0x20, 0x00, 0x00, 0xf0, + 0x5b, 0xfa, 0x02, 0x00, 0x18, 0x32, 0x1f, 0x2a, 0x00, 0xdc, 0x8f, 0xe6, + 0x23, 0x00, 0x08, 0x38, 0x83, 0x40, 0x00, 0x24, 0x92, 0xe6, 0x08, 0x43, + 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x6d, 0xe6, 0xca, 0x4c, 0x72, 0x1c, + 0x22, 0x42, 0x00, 0xd0, 0xad, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, + 0xb8, 0xd1, 0x00, 0x2a, 0x00, 0xd1, 0x58, 0xe1, 0x0a, 0x00, 0x02, 0x43, + 0x00, 0xd0, 0x59, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0xdb, 0x08, 0x86, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0xdb, 0x08, 0xc1, 0xe7, 0xba, 0x4d, 0xaa, 0x42, 0x00, 0xd1, 0x1e, 0xe1, + 0x80, 0x25, 0x2d, 0x04, 0x2b, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x5d, 0xdc, + 0x1f, 0x2c, 0x00, 0xdd, 0xd0, 0xe0, 0x20, 0x25, 0x67, 0x46, 0x2d, 0x1b, + 0x4e, 0x46, 0x1c, 0x00, 0xfe, 0x40, 0xac, 0x40, 0x34, 0x43, 0x4e, 0x46, + 0xae, 0x40, 0x35, 0x00, 0xfb, 0x40, 0x6e, 0x1e, 0xb5, 0x41, 0xc9, 0x1a, + 0x2c, 0x43, 0x4e, 0xe0, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, + 0x52, 0x42, 0x90, 0x46, 0x5f, 0x1a, 0x3a, 0x00, 0x47, 0x46, 0xd2, 0x1b, + 0x90, 0x46, 0x12, 0x02, 0x00, 0xd5, 0x8b, 0xe0, 0x42, 0x46, 0x22, 0x43, + 0x00, 0xd0, 0x30, 0xe6, 0x00, 0x23, 0x00, 0x25, 0x4d, 0xe7, 0x4a, 0x46, + 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x44, 0xe7, 0x42, 0x46, + 0x9e, 0x4b, 0x61, 0x08, 0x1a, 0x40, 0x13, 0x00, 0x01, 0x22, 0x14, 0x40, + 0x0c, 0x43, 0xda, 0x07, 0x5b, 0x08, 0x98, 0x46, 0x14, 0x43, 0x41, 0xe6, + 0x1a, 0x00, 0x1f, 0x3e, 0xf2, 0x40, 0x16, 0x00, 0x20, 0x29, 0x03, 0xd0, + 0x40, 0x22, 0x51, 0x1a, 0x8b, 0x40, 0x1c, 0x43, 0x62, 0x1e, 0x94, 0x41, + 0x00, 0x23, 0x34, 0x43, 0x98, 0x46, 0x00, 0x26, 0x1d, 0xe7, 0x0c, 0x00, + 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, + 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, + 0x61, 0x1e, 0x8c, 0x41, 0x22, 0x43, 0xe9, 0xe5, 0x4c, 0x46, 0x23, 0x43, + 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x1b, 0xa0, 0x42, 0x9b, 0x41, + 0x5b, 0x42, 0xcb, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x16, 0x00, 0xe2, 0xe5, + 0x4e, 0x46, 0x1e, 0x43, 0x00, 0xd1, 0xae, 0xe0, 0x66, 0x1e, 0x01, 0x2c, + 0x00, 0xd1, 0xfd, 0xe0, 0x7b, 0x4f, 0xbc, 0x42, 0x00, 0xd1, 0x07, 0xe1, + 0xb4, 0x46, 0x9b, 0xe6, 0x64, 0x46, 0x20, 0x22, 0x12, 0x1b, 0x0c, 0x00, + 0x94, 0x40, 0x07, 0x00, 0x90, 0x40, 0xa0, 0x46, 0x64, 0x46, 0x42, 0x1e, + 0x90, 0x41, 0x62, 0x46, 0xe7, 0x40, 0x44, 0x46, 0xd1, 0x40, 0x3c, 0x43, + 0x04, 0x43, 0x5b, 0x18, 0xf3, 0xe6, 0x6f, 0x4c, 0xa2, 0x42, 0x00, 0xd1, + 0xd5, 0xe0, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x89, 0x41, 0x49, 0x42, + 0x5b, 0x18, 0xdc, 0x07, 0x40, 0x08, 0x5b, 0x08, 0x98, 0x46, 0x16, 0x00, + 0x04, 0x43, 0xcc, 0xe6, 0x00, 0x2a, 0x00, 0xd0, 0x82, 0xe0, 0x0a, 0x00, + 0x02, 0x43, 0x40, 0xd1, 0x80, 0x23, 0x00, 0x25, 0x1b, 0x03, 0x13, 0xe7, + 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xc5, 0xe6, + 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, + 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x9e, 0xe5, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xf9, 0xe6, 0x4a, 0x46, 0x14, 0x1a, + 0xa1, 0x45, 0x92, 0x41, 0x5b, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, + 0x01, 0x26, 0x86, 0xe5, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0xdb, 0x08, 0xa5, 0xe6, 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, + 0x9c, 0x41, 0x5b, 0xe6, 0x65, 0x46, 0x1e, 0x00, 0x20, 0x3d, 0xee, 0x40, + 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x25, 0x2d, 0x1b, 0xab, 0x40, 0x4c, 0x46, + 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x34, 0x43, + 0x7d, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, + 0xcc, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe7, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0x81, 0xe6, 0x4a, 0x46, + 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, + 0x98, 0x46, 0x5d, 0x46, 0x01, 0x26, 0x4e, 0xe5, 0x4b, 0x07, 0xc2, 0x08, + 0x1a, 0x43, 0xcb, 0x08, 0xb2, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, + 0x92, 0x41, 0x5f, 0x1a, 0x52, 0x42, 0xba, 0x1a, 0x90, 0x46, 0x12, 0x02, + 0x6b, 0xd5, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, + 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x64, 0xe5, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0x98, 0xe6, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x4f, 0xe6, 0x0a, 0x00, 0x02, 0x43, + 0x90, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x14, 0x43, 0x80, 0x22, + 0xdb, 0x08, 0x12, 0x03, 0x13, 0x42, 0x08, 0xd0, 0xce, 0x08, 0x16, 0x42, + 0x05, 0xd1, 0xc0, 0x08, 0x49, 0x07, 0x08, 0x43, 0x04, 0x00, 0x5d, 0x46, + 0x33, 0x00, 0x61, 0x0f, 0xe2, 0x00, 0x49, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0x78, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, + 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x92, 0x41, 0x98, 0x46, 0x52, 0x42, + 0x90, 0x44, 0x43, 0x46, 0x04, 0x00, 0x1b, 0x02, 0x00, 0xd4, 0x1a, 0xe6, + 0x42, 0x46, 0x0e, 0x4b, 0x01, 0x26, 0x1a, 0x40, 0x90, 0x46, 0x14, 0xe6, + 0x66, 0x46, 0x1f, 0x00, 0x20, 0x3e, 0xf7, 0x40, 0x20, 0x2c, 0x05, 0xd0, + 0x40, 0x26, 0x36, 0x1b, 0xb3, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, + 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x3c, 0x43, 0xc8, 0xe5, 0x11, 0x00, + 0x00, 0x23, 0x00, 0x22, 0x32, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x4a, 0x46, 0x14, 0x18, + 0x84, 0x42, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, + 0xe9, 0xe5, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd1, 0xa6, 0xe6, 0xea, 0xe5, + 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x00, 0x22, + 0x01, 0x49, 0x13, 0x00, 0x14, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0x0a, 0x00, 0x30, 0xb5, 0x13, 0x4c, 0x53, 0x00, 0x09, 0x03, 0x05, 0x00, + 0x09, 0x0b, 0x00, 0x20, 0x5b, 0x0d, 0xd2, 0x0f, 0xa3, 0x42, 0x04, 0xdd, + 0x0f, 0x48, 0x83, 0x42, 0x02, 0xdd, 0x0f, 0x4b, 0xd0, 0x18, 0x30, 0xbd, + 0x80, 0x20, 0x40, 0x03, 0x01, 0x43, 0x0d, 0x48, 0xc0, 0x1a, 0x1f, 0x28, + 0x08, 0xdd, 0x0c, 0x48, 0xc3, 0x1a, 0xd9, 0x40, 0x0b, 0x00, 0x58, 0x42, + 0x00, 0x2a, 0xf0, 0xd1, 0x18, 0x00, 0xee, 0xe7, 0x08, 0x4c, 0xc5, 0x40, + 0xa4, 0x46, 0x63, 0x44, 0x99, 0x40, 0x0b, 0x00, 0x2b, 0x43, 0xf2, 0xe7, + 0xfe, 0x03, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, + 0x33, 0x04, 0x00, 0x00, 0x13, 0x04, 0x00, 0x00, 0xed, 0xfb, 0xff, 0xff, + 0x10, 0xb5, 0x04, 0x1e, 0x10, 0xd0, 0x00, 0xf0, 0x5f, 0xf8, 0x0f, 0x4b, + 0x1b, 0x1a, 0x0a, 0x28, 0x11, 0xdc, 0x0b, 0x22, 0x21, 0x00, 0x12, 0x1a, + 0xd1, 0x40, 0x15, 0x30, 0x0a, 0x03, 0x5b, 0x05, 0x84, 0x40, 0x12, 0x0b, + 0x5b, 0x0d, 0x01, 0xe0, 0x00, 0x23, 0x00, 0x22, 0x1b, 0x05, 0x13, 0x43, + 0x20, 0x00, 0x19, 0x00, 0x10, 0xbd, 0x22, 0x00, 0x0b, 0x38, 0x82, 0x40, + 0x5b, 0x05, 0x12, 0x03, 0x00, 0x24, 0x12, 0x0b, 0x5b, 0x0d, 0xf1, 0xe7, + 0x1e, 0x04, 0x00, 0x00, 0x84, 0x46, 0x10, 0x1c, 0x62, 0x46, 0x8c, 0x46, + 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, 0x1f, 0xb5, 0x00, 0xf0, + 0xff, 0xf8, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0x49, 0xf8, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0xf1, 0xf8, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0xe7, 0xf8, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x6b, 0xf8, 0x00, 0x28, + 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0x61, 0xf8, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x1c, 0x21, 0x01, 0x23, + 0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a, + 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42, + 0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb5, 0x4f, 0x46, + 0x46, 0x46, 0xd6, 0x46, 0x94, 0x46, 0x91, 0x46, 0x1a, 0x03, 0x12, 0x0b, + 0x18, 0x4d, 0xc0, 0xb5, 0x4c, 0x00, 0x0f, 0x03, 0x92, 0x46, 0x5a, 0x00, + 0x06, 0x00, 0x80, 0x46, 0x3f, 0x0b, 0x01, 0x20, 0x64, 0x0d, 0xc9, 0x0f, + 0x52, 0x0d, 0xdb, 0x0f, 0xac, 0x42, 0x0a, 0xd0, 0xaa, 0x42, 0x03, 0xd0, + 0x94, 0x42, 0x01, 0xd1, 0x57, 0x45, 0x0d, 0xd0, 0x1c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x3d, 0x00, 0x35, 0x43, 0xf7, 0xd1, + 0xa2, 0x42, 0xf5, 0xd1, 0x52, 0x46, 0x65, 0x46, 0x2a, 0x43, 0xf1, 0xd1, + 0x01, 0x20, 0xc8, 0x45, 0xee, 0xd1, 0x99, 0x42, 0x06, 0xd0, 0x00, 0x2c, + 0xea, 0xd1, 0x3e, 0x43, 0x30, 0x00, 0x46, 0x1e, 0xb0, 0x41, 0xe5, 0xe7, + 0x00, 0x20, 0xe3, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, + 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, + 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x32, 0x4d, 0x0f, 0x03, 0x4a, 0x00, + 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, + 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, 0x29, 0xd0, 0xab, 0x42, + 0x18, 0xd0, 0x00, 0x2a, 0x2a, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, + 0x65, 0x41, 0x00, 0x2b, 0x02, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x27, 0xd0, + 0x00, 0x2d, 0x15, 0xd1, 0x81, 0x42, 0x28, 0xd0, 0x02, 0x20, 0x01, 0x39, + 0x08, 0x40, 0x01, 0x38, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x4d, 0x46, 0x2e, 0x43, 0x2f, 0xd1, 0x00, 0x2a, + 0xee, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0xe9, 0xd0, + 0x00, 0x28, 0xed, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xea, 0xe7, 0x3d, 0x00, + 0x25, 0x43, 0x20, 0xd1, 0x93, 0x42, 0xeb, 0xd0, 0x00, 0x2b, 0xdd, 0xd1, + 0x4c, 0x46, 0x26, 0x43, 0xda, 0xd1, 0xdb, 0xe7, 0x5b, 0x46, 0x00, 0x20, + 0x00, 0x2b, 0xdb, 0xd0, 0xd6, 0xe7, 0x9a, 0x42, 0x0a, 0xdc, 0xe7, 0xdb, + 0x4f, 0x45, 0xd1, 0xd8, 0x10, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xd1, 0xd2, + 0x00, 0x29, 0xe1, 0xd0, 0x08, 0x00, 0xcd, 0xe7, 0x43, 0x42, 0x58, 0x41, + 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xc6, 0xe7, 0x02, 0x20, + 0x40, 0x42, 0xc3, 0xe7, 0xc4, 0x45, 0xbd, 0xd8, 0x00, 0x20, 0xc4, 0x45, + 0xbe, 0xd2, 0xeb, 0xe7, 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, + 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, + 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x31, 0x4d, 0x0f, 0x03, 0x4a, 0x00, + 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, + 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, 0x11, 0xd0, 0xab, 0x42, + 0x14, 0xd0, 0x00, 0x2a, 0x2f, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, + 0x65, 0x41, 0x00, 0x2b, 0x14, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x11, 0xd1, + 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0x17, 0xd0, 0x10, 0xe0, 0x3d, 0x00, + 0x25, 0x43, 0x12, 0xd1, 0x93, 0x42, 0x1c, 0xd1, 0x4d, 0x46, 0x2e, 0x43, + 0x0d, 0xd1, 0x00, 0x2a, 0x04, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, + 0x00, 0x2d, 0x0d, 0xd1, 0x81, 0x42, 0x16, 0xd0, 0x02, 0x20, 0x01, 0x39, + 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x28, 0xf7, 0xd1, + 0x01, 0x20, 0x40, 0x42, 0xf4, 0xe7, 0x00, 0x2b, 0xea, 0xd1, 0x4c, 0x46, + 0x26, 0x43, 0xe7, 0xd1, 0xe8, 0xe7, 0x9a, 0x42, 0x06, 0xdd, 0x43, 0x42, + 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xe5, 0xe7, + 0x9a, 0x42, 0xe9, 0xdb, 0x4f, 0x45, 0xdb, 0xd8, 0x06, 0xd0, 0x00, 0x20, + 0x4f, 0x45, 0xdd, 0xd2, 0x00, 0x29, 0xe3, 0xd0, 0x08, 0x00, 0xd9, 0xe7, + 0xc4, 0x45, 0xd1, 0xd8, 0x00, 0x20, 0xc4, 0x45, 0xd4, 0xd2, 0xf5, 0xe7, + 0xff, 0x07, 0x00, 0x00, 0xb0, 0x16, 0x00, 0x08, 0xde, 0x15, 0x00, 0x08, + 0xde, 0x15, 0x00, 0x08, 0xda, 0x15, 0x00, 0x08, 0xe4, 0x15, 0x00, 0x08, + 0xe4, 0x15, 0x00, 0x08, 0xd0, 0x18, 0x00, 0x08, 0xda, 0x15, 0x00, 0x08, + 0xe4, 0x15, 0x00, 0x08, 0xd0, 0x18, 0x00, 0x08, 0xe4, 0x15, 0x00, 0x08, + 0xda, 0x15, 0x00, 0x08, 0x6e, 0x18, 0x00, 0x08, 0x6e, 0x18, 0x00, 0x08, + 0x6e, 0x18, 0x00, 0x08, 0x3a, 0x19, 0x00, 0x08, 0x00, 0x12, 0x7a, 0x00, + 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h new file mode 100644 index 000000000..148f34c90 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h @@ -0,0 +1,444 @@ +/* + * This file has been generated by the shelly-dimmer-stm32 project. + * https://github.com/jamesturton/shelly-dimmer-stm32 + * Copyright (c) 2020 James Turton. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 0; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0xf5, 0x0f, 0x00, 0x08, 0xf1, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08, + 0x99, 0x07, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x31, 0x08, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xa9, 0x07, 0x00, 0x08, 0x95, 0x06, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x76, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x6a, 0xfc, + 0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0x88, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf, + 0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x86, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0x4d, 0xff, 0x83, 0x4c, 0x84, 0x49, + 0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x7a, 0x49, 0xed, 0xb2, 0xc8, 0x5c, + 0x79, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2, + 0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x69, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6c, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb9, 0xe0, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x63, 0x4a, 0x64, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x5f, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x5c, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21, + 0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x00, 0xf0, 0xe2, 0xff, + 0xff, 0xf7, 0x50, 0xff, 0x57, 0x4b, 0x58, 0x4c, 0x1b, 0x68, 0x58, 0x4e, + 0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff, + 0x00, 0xe0, 0x33, 0x60, 0x54, 0x4b, 0x55, 0x49, 0x1b, 0x68, 0x09, 0x68, + 0x32, 0x68, 0x5b, 0x1a, 0x53, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23, + 0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b, + 0x0a, 0xd0, 0x10, 0x2b, 0x5b, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23, + 0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1, + 0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d, + 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46, + 0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x38, 0x4a, 0x01, 0xa8, 0x12, 0x78, + 0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70, + 0x00, 0xf0, 0x4a, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c, + 0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2, + 0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54, + 0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x27, 0x4d, 0x33, 0x5d, + 0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, + 0xfb, 0x60, 0x01, 0xf0, 0x63, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0, + 0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54, + 0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0x56, 0xf8, 0xe9, 0x60, 0x7b, 0x68, + 0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7, + 0xcc, 0x22, 0x92, 0x01, 0x02, 0x24, 0x3a, 0x83, 0xae, 0xe7, 0x21, 0x68, + 0x00, 0x20, 0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21, + 0x15, 0x48, 0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18, + 0x11, 0x24, 0x78, 0x83, 0x0a, 0x70, 0x9d, 0xe7, 0x22, 0x68, 0x58, 0x1c, + 0xa0, 0x60, 0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0x31, 0xf8, 0x03, 0x48, + 0xa1, 0x60, 0xa9, 0xb2, 0x00, 0xf0, 0x47, 0xfe, 0x3d, 0xe7, 0xc0, 0x46, + 0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, + 0x4c, 0x01, 0x00, 0x20, 0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20, + 0x34, 0x00, 0x00, 0x20, 0x25, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x48, 0x01, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, + 0x2c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0x3f, 0xfc, 0xb0, 0x48, 0x00, 0xf0, 0x6e, 0xfc, 0xaf, 0x48, 0x00, 0xf0, + 0x6b, 0xfc, 0xaf, 0x48, 0x00, 0xf0, 0x68, 0xfc, 0xae, 0x48, 0x00, 0xf0, + 0x65, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x61, 0xfc, 0xc0, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0x5d, 0xfc, 0x00, 0x22, 0x90, 0x20, 0x11, 0x00, + 0x08, 0x23, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfb, 0x02, 0x21, 0xa6, 0x48, + 0x00, 0xf0, 0x05, 0xfb, 0xa5, 0x4b, 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23, + 0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xfe, 0xfa, + 0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xf7, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xf0, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x26, 0xfb, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0x93, 0x48, 0x00, 0xf0, 0xe2, 0xfa, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0x90, 0x48, 0x00, 0xf0, 0xfc, 0xfa, 0x21, 0x00, 0x8e, 0x48, + 0x00, 0xf0, 0xd0, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x8b, 0x48, + 0x00, 0xf0, 0xd2, 0xfa, 0x8b, 0x4b, 0x8c, 0x4a, 0x5c, 0x60, 0x00, 0x24, + 0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, + 0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa, 0xc0, 0x22, + 0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfa, + 0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0x2e, 0xfe, 0x1b, 0x20, 0x00, 0xf0, + 0x1f, 0xfe, 0xe1, 0x21, 0x7e, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, + 0x6b, 0xfd, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x73, 0xfd, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0x79, 0xfd, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x87, 0xfd, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, + 0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x88, 0xfd, 0x6f, 0x48, 0x00, 0xf0, + 0x22, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xe5, 0xfb, 0x0e, 0x20, + 0x00, 0xf0, 0xf4, 0xfd, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x69, 0x48, + 0x00, 0xf0, 0xfa, 0xfb, 0xf0, 0x21, 0x67, 0x48, 0x49, 0x00, 0x00, 0xf0, + 0x15, 0xfc, 0x65, 0x48, 0x00, 0xf0, 0x91, 0xfc, 0x63, 0x48, 0x00, 0xf0, + 0xfb, 0xfb, 0x62, 0x48, 0x00, 0xf0, 0xfd, 0xfb, 0x61, 0x49, 0x60, 0x48, + 0x00, 0xf0, 0x0a, 0xfc, 0x02, 0x21, 0x5e, 0x48, 0x00, 0xf0, 0xd6, 0xfb, + 0x5c, 0x48, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, + 0xf8, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xbb, 0xfb, 0x0f, 0x20, + 0x00, 0xf0, 0xca, 0xfd, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xea, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfb, + 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfb, 0x80, 0x20, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xb9, 0xfc, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x0e, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xc5, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe4, 0xfb, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xcd, 0xfc, 0x80, 0x20, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x84, 0xfb, 0x80, 0x20, 0x02, 0x22, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc, 0x80, 0x20, 0x01, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfc, 0x80, 0x20, 0x22, 0x00, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x56, 0xfc, 0x80, 0x20, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xe3, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x9a, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xb9, 0xfb, 0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa2, 0xfc, + 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x59, 0xfb, 0x01, 0x21, + 0x80, 0x20, 0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x08, 0xfc, 0x80, 0x20, + 0xc0, 0x05, 0x00, 0xf0, 0x73, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0x4e, 0xfd, + 0x04, 0x20, 0x12, 0x49, 0x00, 0xf0, 0x98, 0xf9, 0x02, 0x21, 0x04, 0x20, + 0x00, 0xf0, 0x60, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x7d, 0xf9, 0x20, 0x00, + 0x00, 0xf0, 0x26, 0xfd, 0xfa, 0x21, 0x12, 0x4b, 0x49, 0x01, 0x1c, 0x60, + 0x11, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x26, 0xfe, 0x00, 0xf0, 0x14, 0xfd, + 0x00, 0xf0, 0x24, 0xfd, 0x00, 0xf0, 0x2a, 0xfd, 0xc0, 0x46, 0xfd, 0xe7, + 0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, + 0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x24, 0x00, 0x00, 0x20, + 0x34, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, + 0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0, + 0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x11, 0xfb, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68, + 0x11, 0x68, 0x2a, 0x4f, 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68, + 0x15, 0x68, 0x3a, 0x68, 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68, + 0x01, 0x28, 0x06, 0xd9, 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29, + 0x39, 0xd0, 0x26, 0x49, 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33, + 0x23, 0x60, 0xaa, 0x1a, 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00, + 0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78, + 0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0, + 0x00, 0xf0, 0x6a, 0xf9, 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60, + 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfa, 0x00, 0x28, + 0x14, 0xd0, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfa, + 0x14, 0x4b, 0x15, 0x4a, 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60, + 0x14, 0x4a, 0xcb, 0x1a, 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, + 0x08, 0x4b, 0x1a, 0x68, 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49, + 0xc4, 0xe7, 0x00, 0xf0, 0x43, 0xf9, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40, + 0x50, 0x02, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x4c, 0x02, 0x00, 0x20, 0x14, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x38, 0x00, 0x00, 0x40, 0x54, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20, + 0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x4c, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x1c, 0x48, 0x00, 0xf0, + 0x89, 0xfa, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0, + 0x89, 0xfa, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, 0x12, 0x88, 0x9a, 0x42, + 0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, + 0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, 0xc0, 0x05, 0x9a, 0x42, + 0x0e, 0xd0, 0x00, 0xf0, 0xfd, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0xf1, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0xec, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe6, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe0, 0xf8, + 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x08, 0x00, 0x00, 0x20, + 0x24, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x70, 0xb5, 0x04, 0x20, + 0x00, 0xf0, 0x8c, 0xf8, 0x28, 0x48, 0x00, 0xf0, 0xf2, 0xfa, 0x28, 0x4c, + 0x28, 0x4b, 0x22, 0x78, 0x00, 0x2a, 0x38, 0xd0, 0xfa, 0x22, 0x1b, 0x88, + 0x92, 0x00, 0xd2, 0x1a, 0x92, 0xb2, 0xfa, 0x21, 0x24, 0x4d, 0x50, 0x43, + 0x2a, 0x80, 0x89, 0x00, 0x00, 0xf0, 0x1e, 0xfd, 0x22, 0x4e, 0x02, 0x00, + 0x00, 0x21, 0x30, 0x60, 0x1c, 0x48, 0x00, 0xf0, 0xc1, 0xfa, 0x06, 0x21, + 0x32, 0x68, 0x1a, 0x48, 0x00, 0xf0, 0xbc, 0xfa, 0x00, 0x21, 0x18, 0x48, + 0x00, 0xf0, 0xd3, 0xfa, 0x2b, 0x88, 0x00, 0x2b, 0x18, 0xd0, 0x1a, 0x4b, + 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78, + 0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, 0x10, 0xd0, 0x00, 0xf0, 0x9e, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x98, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x92, 0xf8, + 0x70, 0xbd, 0x1a, 0x88, 0xc9, 0xe7, 0x00, 0xf0, 0x8f, 0xf8, 0x80, 0x21, + 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x89, 0xf8, 0x80, 0x21, + 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x83, 0xf8, 0xed, 0xe7, + 0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, + 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, + 0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, + 0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, + 0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, + 0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, + 0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, + 0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, + 0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, + 0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, + 0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, + 0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, + 0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, + 0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, + 0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, + 0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, + 0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, + 0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, + 0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, + 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, + 0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, + 0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, + 0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, + 0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, + 0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, + 0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43, + 0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00, + 0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40, + 0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c, + 0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7, + 0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, + 0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, + 0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, + 0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, + 0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, + 0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, + 0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, + 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0, + 0xdf, 0xfb, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a, + 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a, + 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, + 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a, + 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, + 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, + 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28, + 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0, + 0xaf, 0xfb, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a, + 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd, + 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, + 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7, + 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46, + 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, + 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8, + 0x00, 0xf0, 0x84, 0xfb, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21, + 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22, + 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43, + 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43, + 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68, + 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff, + 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff, + 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff, + 0x00, 0xf0, 0x6a, 0xfa, 0x01, 0x20, 0x00, 0xf0, 0x6f, 0xfa, 0xa0, 0x20, + 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60, + 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02, + 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09, + 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68, + 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40, + 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, + 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43, + 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43, + 0xc3, 0x60, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41, + 0xc0, 0xb2, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00, + 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43, + 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff, + 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, + 0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, + 0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, + 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7, + 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7, + 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00, + 0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11, + 0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, + 0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, + 0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, + 0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, + 0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, + 0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62, + 0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, + 0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b, + 0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, + 0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, + 0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, + 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, + 0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, + 0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9, + 0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, + 0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, + 0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, + 0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, + 0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, + 0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, + 0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, + 0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, + 0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd, + 0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, + 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, + 0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, + 0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, + 0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7, + 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49, + 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3, + 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43, + 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b, + 0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0xb8, 0xf9, 0x12, 0x4c, 0x13, 0x4b, + 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7, + 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc, + 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0x00, 0x20, 0xb4, 0x13, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20, + 0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0xb4, 0x13, 0x00, 0x08, + 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, + 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02, + 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0, + 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18, + 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47, + 0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23, + 0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00, + 0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40, + 0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd, + 0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0, + 0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, + 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, + 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, + 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, + 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, + 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, + 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, + 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, + 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, + 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, + 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, + 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, + 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, + 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, + 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, + 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, + 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, + 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, + 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, + 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, + 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, + 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, + 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, + 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, + 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, + 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, + 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, + 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, + 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, + 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, + 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, + 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, + 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, + 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, + 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, + 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, + 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h new file mode 100644 index 000000000..2ceb388cd --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h @@ -0,0 +1,444 @@ +/* + * This file has been generated by the shelly-dimmer-stm32 project. + * https://github.com/jamesturton/shelly-dimmer-stm32 + * Copyright (c) 2020 James Turton. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 1; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0xf5, 0x0f, 0x00, 0x08, 0xf1, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x08, + 0x99, 0x07, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x31, 0x08, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xa9, 0x07, 0x00, 0x08, 0x95, 0x06, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, 0xef, 0x0f, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x76, 0xfc, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x6a, 0xfc, + 0xf4, 0xe7, 0xc0, 0x46, 0x4c, 0x02, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x19, 0x00, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x20, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0x87, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf, + 0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0x85, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x78, 0x69, 0x00, 0xf0, 0x4d, 0xff, 0x82, 0x4c, 0x83, 0x49, + 0x23, 0x78, 0x05, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x79, 0x49, 0xed, 0xb2, 0xc8, 0x5c, + 0x78, 0x4e, 0x00, 0x02, 0x28, 0x43, 0x00, 0x25, 0xb4, 0x46, 0x29, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xad, 0x19, 0xc9, 0xb2, + 0xad, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa8, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x23, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x68, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x6b, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xb8, 0xe0, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x62, 0x4a, 0x63, 0x4d, 0x13, 0x70, 0x8b, 0x78, 0x2b, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x5e, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x5b, 0x4a, 0x13, 0x80, 0x1c, 0x23, 0x00, 0x21, + 0xf8, 0x18, 0xfc, 0x22, 0x21, 0x70, 0xb9, 0x61, 0x00, 0xf0, 0xe2, 0xff, + 0xff, 0xf7, 0x50, 0xff, 0x56, 0x4b, 0x57, 0x4c, 0x1b, 0x68, 0x57, 0x4e, + 0x3b, 0x61, 0x23, 0x68, 0x00, 0x2b, 0x02, 0xd0, 0xff, 0xf7, 0x46, 0xff, + 0x00, 0xe0, 0x33, 0x60, 0x53, 0x4b, 0x54, 0x49, 0x1b, 0x68, 0x09, 0x68, + 0x32, 0x68, 0x5b, 0x1a, 0x52, 0x49, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23, + 0x23, 0x60, 0x2b, 0x78, 0x11, 0x2b, 0x5b, 0xd0, 0x0a, 0xd8, 0x01, 0x2b, + 0x0a, 0xd0, 0x10, 0x2b, 0x5a, 0xd0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23, + 0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x9c, 0xe7, 0x20, 0x2b, 0xf6, 0xd1, + 0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d, + 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46, + 0x01, 0x22, 0x6e, 0x46, 0x32, 0x70, 0x37, 0x4a, 0x01, 0xa8, 0x12, 0x78, + 0xb3, 0x70, 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70, + 0x00, 0xf0, 0x4a, 0xff, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c, + 0xf5, 0x18, 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2, + 0x98, 0x42, 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54, + 0x04, 0x23, 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x26, 0x4d, 0x33, 0x5d, + 0x69, 0x68, 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, + 0xfb, 0x60, 0x01, 0xf0, 0x63, 0xf8, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0, + 0xfb, 0x68, 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54, + 0xe8, 0x68, 0x69, 0x68, 0x01, 0xf0, 0x56, 0xf8, 0xe9, 0x60, 0x7b, 0x68, + 0x01, 0x34, 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0xa8, 0xe7, + 0x21, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xaf, 0xe7, 0x21, 0x68, 0x00, 0x20, + 0xf9, 0x61, 0x39, 0x69, 0x38, 0x83, 0x39, 0x62, 0x28, 0x21, 0x15, 0x48, + 0x7a, 0x62, 0x13, 0x4a, 0x00, 0x88, 0x12, 0x78, 0x79, 0x18, 0x11, 0x24, + 0x78, 0x83, 0x0a, 0x70, 0x9e, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60, + 0x61, 0x68, 0xd5, 0x5c, 0x01, 0xf0, 0x32, 0xf8, 0x02, 0x48, 0xa1, 0x60, + 0xa9, 0xb2, 0x00, 0xf0, 0x48, 0xfe, 0x3e, 0xe7, 0x00, 0x38, 0x01, 0x40, + 0x1c, 0x38, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, 0x4c, 0x01, 0x00, 0x20, + 0x4b, 0x01, 0x00, 0x20, 0x4d, 0x01, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, + 0x25, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, + 0x10, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x4c, 0x02, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x01, 0x33, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0x3f, 0xfc, 0xb0, 0x48, 0x00, 0xf0, 0x6e, 0xfc, 0xaf, 0x48, 0x00, 0xf0, + 0x6b, 0xfc, 0xaf, 0x48, 0x00, 0xf0, 0x68, 0xfc, 0xae, 0x48, 0x00, 0xf0, + 0x65, 0xfc, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0x61, 0xfc, 0xc0, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0x5d, 0xfc, 0x00, 0x22, 0x90, 0x20, 0x11, 0x00, + 0x08, 0x23, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfb, 0x02, 0x21, 0xa6, 0x48, + 0x00, 0xf0, 0x05, 0xfb, 0xa5, 0x4b, 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23, + 0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xfe, 0xfa, + 0x90, 0x20, 0xc0, 0x23, 0x00, 0x22, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xf7, 0xfa, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xf0, 0xfa, 0x80, 0x24, 0x90, 0x20, 0x64, 0x00, 0x03, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x26, 0xfb, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0x93, 0x48, 0x00, 0xf0, 0xe2, 0xfa, 0x23, 0x00, 0x00, 0x22, + 0x01, 0x21, 0x90, 0x48, 0x00, 0xf0, 0xfc, 0xfa, 0x21, 0x00, 0x8e, 0x48, + 0x00, 0xf0, 0xd0, 0xfa, 0x00, 0x22, 0x04, 0x23, 0x11, 0x00, 0x8b, 0x48, + 0x00, 0xf0, 0xd2, 0xfa, 0x8b, 0x4b, 0x8c, 0x4a, 0x5c, 0x60, 0x00, 0x24, + 0x1a, 0x60, 0x9c, 0x60, 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, + 0xdb, 0x00, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc3, 0xfa, 0xc0, 0x22, + 0x90, 0x20, 0xd2, 0x00, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfa, + 0xff, 0x21, 0x1b, 0x20, 0x00, 0xf0, 0x2e, 0xfe, 0x1b, 0x20, 0x00, 0xf0, + 0x1f, 0xfe, 0xe1, 0x21, 0x7e, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, + 0x6b, 0xfd, 0x08, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x73, 0xfd, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0x79, 0xfd, 0x0c, 0x21, 0x28, 0x00, 0x00, 0xf0, 0x85, 0xfd, 0x21, 0x00, + 0x28, 0x00, 0x00, 0xf0, 0x87, 0xfd, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, + 0x13, 0x43, 0x2b, 0x60, 0x00, 0xf0, 0x88, 0xfd, 0x6f, 0x48, 0x00, 0xf0, + 0x22, 0xfc, 0x8c, 0x20, 0xff, 0x30, 0x00, 0xf0, 0xe5, 0xfb, 0x0e, 0x20, + 0x00, 0xf0, 0xf4, 0xfd, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x69, 0x48, + 0x00, 0xf0, 0xfa, 0xfb, 0xf0, 0x21, 0x67, 0x48, 0x49, 0x00, 0x00, 0xf0, + 0x15, 0xfc, 0x65, 0x48, 0x00, 0xf0, 0x91, 0xfc, 0x63, 0x48, 0x00, 0xf0, + 0xfb, 0xfb, 0x62, 0x48, 0x00, 0xf0, 0xfd, 0xfb, 0x61, 0x49, 0x60, 0x48, + 0x00, 0xf0, 0x0a, 0xfc, 0x02, 0x21, 0x5e, 0x48, 0x00, 0xf0, 0xd6, 0xfb, + 0x5c, 0x48, 0x00, 0xf0, 0xf7, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, + 0xf8, 0xfb, 0x80, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xbb, 0xfb, 0x0f, 0x20, + 0x00, 0xf0, 0xca, 0xfd, 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xcf, 0xfb, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xea, 0xfb, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfb, + 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfb, 0x80, 0x20, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xfa, 0xfc, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xb9, 0xfc, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfc, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0x81, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, + 0x00, 0xf0, 0x0e, 0xfc, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xc5, 0xfb, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe4, 0xfb, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xcd, 0xfc, 0x80, 0x20, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x84, 0xfb, 0x80, 0x20, 0x02, 0x22, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x8e, 0xfc, 0x80, 0x20, 0x01, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfc, 0x80, 0x20, 0x22, 0x00, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x56, 0xfc, 0x80, 0x20, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xe3, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x9a, 0xfb, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xb9, 0xfb, 0x80, 0x20, 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xa2, 0xfc, + 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x59, 0xfb, 0x01, 0x21, + 0x80, 0x20, 0x49, 0x42, 0xc0, 0x05, 0x00, 0xf0, 0x08, 0xfc, 0x80, 0x20, + 0xc0, 0x05, 0x00, 0xf0, 0x73, 0xfb, 0x06, 0x20, 0x00, 0xf0, 0x4e, 0xfd, + 0x04, 0x20, 0x12, 0x49, 0x00, 0xf0, 0x98, 0xf9, 0x02, 0x21, 0x04, 0x20, + 0x00, 0xf0, 0x60, 0xf9, 0x04, 0x20, 0x00, 0xf0, 0x7d, 0xf9, 0x20, 0x00, + 0x00, 0xf0, 0x26, 0xfd, 0xfa, 0x21, 0x12, 0x4b, 0x49, 0x01, 0x1c, 0x60, + 0x11, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x26, 0xfe, 0x00, 0xf0, 0x14, 0xfd, + 0x00, 0xf0, 0x24, 0xfd, 0x00, 0xf0, 0x2a, 0xfd, 0xc0, 0x46, 0xfd, 0xe7, + 0x91, 0x02, 0x00, 0x00, 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, + 0x0b, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x24, 0x00, 0x00, 0x20, + 0x34, 0x00, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, + 0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0, + 0x00, 0x00, 0x00, 0x20, 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x11, 0xfb, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68, + 0x11, 0x68, 0x2a, 0x4f, 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68, + 0x15, 0x68, 0x3a, 0x68, 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68, + 0x01, 0x28, 0x06, 0xd9, 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29, + 0x39, 0xd0, 0x26, 0x49, 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33, + 0x23, 0x60, 0xaa, 0x1a, 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00, + 0x93, 0x42, 0x0e, 0xd9, 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78, + 0x4b, 0x40, 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0, + 0x00, 0xf0, 0x6a, 0xf9, 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60, + 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd3, 0xfa, 0x00, 0x28, + 0x14, 0xd0, 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xd2, 0xfa, + 0x14, 0x4b, 0x15, 0x4a, 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60, + 0x14, 0x4a, 0xcb, 0x1a, 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, + 0x08, 0x4b, 0x1a, 0x68, 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49, + 0xc4, 0xe7, 0x00, 0xf0, 0x43, 0xf9, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40, + 0x50, 0x02, 0x00, 0x20, 0x20, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x4c, 0x02, 0x00, 0x20, 0x14, 0x00, 0x00, 0x20, 0x19, 0x00, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x38, 0x00, 0x00, 0x40, 0x54, 0x02, 0x00, 0x20, 0x48, 0x01, 0x00, 0x20, + 0x44, 0x01, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x58, 0x02, 0x00, 0x20, + 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x4c, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x1c, 0x48, 0x00, 0xf0, + 0x89, 0xfa, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0, + 0x89, 0xfa, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, 0x12, 0x88, 0x9a, 0x42, + 0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, + 0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, 0xc0, 0x05, 0x9a, 0x42, + 0x0e, 0xd0, 0x00, 0xf0, 0xfd, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0xf7, 0xf8, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0xf1, 0xf8, 0x10, 0xbd, 0x00, 0xf0, 0xec, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe6, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0xe0, 0xf8, + 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x08, 0x00, 0x00, 0x20, + 0x24, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x70, 0xb5, 0x04, 0x20, + 0x00, 0xf0, 0x8c, 0xf8, 0x28, 0x48, 0x00, 0xf0, 0xf2, 0xfa, 0x28, 0x4c, + 0x28, 0x4b, 0x22, 0x78, 0x00, 0x2a, 0x38, 0xd0, 0xfa, 0x22, 0x1b, 0x88, + 0x92, 0x00, 0xd2, 0x1a, 0x92, 0xb2, 0xfa, 0x21, 0x24, 0x4d, 0x50, 0x43, + 0x2a, 0x80, 0x89, 0x00, 0x00, 0xf0, 0x1e, 0xfd, 0x22, 0x4e, 0x02, 0x00, + 0x00, 0x21, 0x30, 0x60, 0x1c, 0x48, 0x00, 0xf0, 0xc1, 0xfa, 0x06, 0x21, + 0x32, 0x68, 0x1a, 0x48, 0x00, 0xf0, 0xbc, 0xfa, 0x00, 0x21, 0x18, 0x48, + 0x00, 0xf0, 0xd3, 0xfa, 0x2b, 0x88, 0x00, 0x2b, 0x18, 0xd0, 0x1a, 0x4b, + 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78, + 0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, 0x10, 0xd0, 0x00, 0xf0, 0x9e, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x98, 0xf8, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x92, 0xf8, + 0x70, 0xbd, 0x1a, 0x88, 0xc9, 0xe7, 0x00, 0xf0, 0x8f, 0xf8, 0x80, 0x21, + 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x89, 0xf8, 0x80, 0x21, + 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x83, 0xf8, 0xed, 0xe7, + 0x00, 0x2c, 0x01, 0x40, 0x30, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x20, 0x0c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, + 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, + 0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, + 0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, + 0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, + 0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, + 0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, + 0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, + 0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, + 0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, + 0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, + 0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, + 0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, + 0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, + 0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, + 0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, + 0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, + 0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, + 0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, + 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, + 0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, + 0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, + 0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, + 0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, + 0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, + 0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43, + 0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00, + 0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40, + 0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c, + 0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7, + 0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, + 0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, + 0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, + 0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, + 0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, + 0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, + 0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, + 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0, + 0xdf, 0xfb, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a, + 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a, + 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, + 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a, + 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, + 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, + 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28, + 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0, + 0xaf, 0xfb, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a, + 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd, + 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, + 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7, + 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46, + 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, + 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8, + 0x00, 0xf0, 0x84, 0xfb, 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21, + 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22, + 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43, + 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43, + 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68, + 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49, + 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff, + 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff, + 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff, + 0x00, 0xf0, 0x6a, 0xfa, 0x01, 0x20, 0x00, 0xf0, 0x6f, 0xfa, 0xa0, 0x20, + 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff, + 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60, + 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02, + 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09, + 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68, + 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40, + 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, + 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43, + 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43, + 0xc3, 0x60, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41, + 0xc0, 0xb2, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00, + 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43, + 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff, + 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0xac, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, + 0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, + 0x00, 0xf0, 0x88, 0xfa, 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, + 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7, + 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7, + 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00, + 0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x68, 0xfa, 0x04, 0x0f, 0x08, 0x11, + 0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, + 0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, + 0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x06, 0xd8, 0x00, 0xf0, 0x45, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, + 0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, + 0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, + 0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62, + 0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0x27, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, + 0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0xfb, 0xf9, 0x02, 0x0b, + 0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, + 0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, + 0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, + 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, + 0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, + 0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc4, 0xf9, + 0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, + 0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, + 0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, + 0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, + 0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, + 0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, + 0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, + 0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, + 0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x94, 0xf9, 0xe0, 0x60, 0x10, 0xbd, + 0x04, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, + 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, + 0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, + 0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, + 0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7, + 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49, + 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3, + 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43, + 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b, + 0x9c, 0x42, 0x0e, 0xd3, 0xff, 0xf7, 0xb8, 0xf9, 0x12, 0x4c, 0x13, 0x4b, + 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7, + 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc, + 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0x00, 0x20, 0xb4, 0x13, 0x00, 0x08, 0x08, 0x00, 0x00, 0x20, + 0x5c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, 0xb4, 0x13, 0x00, 0x08, + 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, + 0xb4, 0x13, 0x00, 0x08, 0xb4, 0x13, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02, + 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0, + 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18, + 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47, + 0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23, + 0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00, + 0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40, + 0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd, + 0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0, + 0x00, 0xe4, 0x00, 0xe0, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, + 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, + 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, + 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, + 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, + 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, + 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, + 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, + 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, + 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, + 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, + 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, + 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, + 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, + 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, + 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, + 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, + 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, + 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, + 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, + 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, + 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, + 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, + 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, + 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, + 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, + 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, + 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, + 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, + 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, + 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, + 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, + 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, + 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, + 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, + 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, + 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h new file mode 100644 index 000000000..1e8d3df28 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h @@ -0,0 +1,1185 @@ +/* + * This file has been generated by the shelly-dimmer-stm32 project. + * https://github.com/jamesturton/shelly-dimmer-stm32 + * Copyright (c) 2020 James Turton. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 2; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0xcd, 0x15, 0x00, 0x08, 0xc9, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x15, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x15, 0x00, 0x08, + 0xa5, 0x08, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xd1, 0x0a, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xb5, 0x08, 0x00, 0x08, 0x3d, 0x09, 0x00, 0x08, 0x41, 0x0a, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x62, 0xff, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x56, 0xff, + 0xf4, 0xe7, 0xc0, 0x46, 0x64, 0x02, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0xad, 0x4e, 0xc7, 0xb0, 0x31, 0x68, 0x00, 0xaf, + 0x7e, 0x61, 0x19, 0x42, 0x33, 0xd0, 0xab, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x30, 0x00, 0x01, 0xf0, 0x39, 0xfa, 0xa8, 0x4d, 0xa9, 0x49, + 0x2b, 0x78, 0x04, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x9f, 0x49, 0xe4, 0xb2, 0xc8, 0x5c, + 0x9e, 0x4e, 0x00, 0x02, 0x20, 0x43, 0x00, 0x24, 0xb4, 0x46, 0x21, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xa4, 0x19, 0xc9, 0xb2, + 0xa4, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa0, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x2b, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x8e, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x91, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0x04, 0xe1, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x88, 0x4a, 0x13, 0x70, 0x8b, 0x78, 0x88, 0x4a, 0x13, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x84, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x81, 0x4a, 0x13, 0x80, 0x00, 0x24, 0x1c, 0x23, + 0xfc, 0x22, 0xf8, 0x18, 0x21, 0x00, 0x2c, 0x70, 0xbc, 0x61, 0x01, 0xf0, + 0xcf, 0xfa, 0x7d, 0x4b, 0x1b, 0x78, 0x01, 0x2b, 0x30, 0xd1, 0xff, 0xf7, + 0x4b, 0xff, 0x7b, 0x4b, 0x1c, 0x68, 0x79, 0x4b, 0x1b, 0x78, 0x01, 0x2b, + 0x3f, 0xd1, 0x79, 0x4b, 0x79, 0x4d, 0x1b, 0x68, 0x00, 0x2b, 0x37, 0xd1, + 0x2b, 0x60, 0x2d, 0x68, 0x73, 0x4b, 0x1b, 0x78, 0x01, 0x2b, 0x42, 0xd1, + 0x75, 0x4b, 0x76, 0x4a, 0x1b, 0x68, 0x12, 0x68, 0x75, 0x49, 0x9b, 0x1a, + 0x70, 0x4a, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23, 0x13, 0x60, 0x10, 0x68, + 0x68, 0x4b, 0x1b, 0x78, 0x11, 0x2b, 0x00, 0xd1, 0x9c, 0xe0, 0x47, 0xd8, + 0x01, 0x2b, 0x47, 0xd0, 0x10, 0x2b, 0x00, 0xd1, 0x9a, 0xe0, 0x7b, 0x69, + 0x1a, 0x68, 0x80, 0x23, 0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x8e, 0xe7, + 0x69, 0x4b, 0x1b, 0x88, 0x00, 0x2b, 0xce, 0xd0, 0x68, 0x4b, 0x18, 0x88, + 0x01, 0xf0, 0xc0, 0xff, 0x02, 0xf0, 0xaa, 0xfe, 0x02, 0x00, 0x0b, 0x00, + 0x00, 0x20, 0x65, 0x49, 0x01, 0xf0, 0xf4, 0xff, 0x01, 0xf0, 0x8a, 0xfb, + 0x04, 0x00, 0xbe, 0xe7, 0xff, 0xf7, 0x06, 0xff, 0xc5, 0xe7, 0x00, 0x25, + 0x5d, 0x4b, 0x5b, 0x88, 0xab, 0x42, 0xc1, 0xd0, 0x5e, 0x4b, 0x5f, 0x48, + 0x19, 0x68, 0x01, 0xf0, 0x99, 0xfb, 0x01, 0xf0, 0x61, 0xfb, 0x05, 0x00, + 0xb8, 0xe7, 0x57, 0x4b, 0x1a, 0x88, 0x10, 0x1e, 0xc4, 0xd0, 0x00, 0x20, + 0x5b, 0x88, 0x83, 0x42, 0xc0, 0xd0, 0x54, 0x4b, 0x18, 0x88, 0x01, 0xf0, + 0x97, 0xff, 0x54, 0x4b, 0x19, 0x68, 0x01, 0xf0, 0x91, 0xfc, 0x01, 0x1c, + 0x53, 0x48, 0x01, 0xf0, 0x81, 0xfb, 0x01, 0xf0, 0x49, 0xfb, 0xb1, 0xe7, + 0x20, 0x2b, 0xba, 0xd1, 0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, + 0xba, 0x60, 0xe2, 0x1d, 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, + 0x8a, 0x1a, 0x95, 0x46, 0x01, 0x22, 0x6d, 0x46, 0x2a, 0x70, 0x38, 0x4a, + 0x01, 0xa8, 0x12, 0x78, 0xab, 0x70, 0x18, 0x23, 0x6a, 0x70, 0xf9, 0x18, + 0x22, 0x00, 0xec, 0x70, 0x01, 0xf0, 0xee, 0xf9, 0x00, 0x22, 0x13, 0x00, + 0x21, 0x1d, 0xe0, 0x1c, 0xee, 0x18, 0x76, 0x78, 0x01, 0x33, 0xb4, 0x46, + 0xdb, 0xb2, 0x62, 0x44, 0x92, 0xb2, 0x98, 0x42, 0xf6, 0xdc, 0x13, 0x0a, + 0x6b, 0x54, 0x63, 0x1d, 0xea, 0x54, 0x04, 0x23, 0x06, 0x34, 0x2b, 0x55, + 0x00, 0x23, 0x1e, 0x00, 0x26, 0x4c, 0xab, 0x5d, 0x61, 0x68, 0x3b, 0x60, + 0xe3, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, 0xfb, 0x60, 0x01, 0xf0, + 0x05, 0xfb, 0xa3, 0x68, 0x99, 0x42, 0x0a, 0xd0, 0xfb, 0x68, 0x3a, 0x69, + 0xe3, 0x60, 0x39, 0x68, 0x23, 0x68, 0x99, 0x54, 0xe0, 0x68, 0x61, 0x68, + 0x01, 0xf0, 0xf8, 0xfa, 0xe1, 0x60, 0x33, 0x00, 0x01, 0x33, 0x1e, 0x00, + 0x7b, 0x68, 0xb3, 0x42, 0xe1, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0x68, 0xe7, + 0x27, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xab, 0xe7, 0x00, 0x22, 0x28, 0x21, + 0x3a, 0x83, 0x16, 0x4a, 0x79, 0x18, 0x12, 0x88, 0x3c, 0x62, 0x7a, 0x83, + 0x12, 0x4a, 0x11, 0x24, 0x12, 0x78, 0xf8, 0x61, 0x7d, 0x62, 0x0a, 0x70, + 0x9c, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60, 0x61, 0x68, 0xd5, 0x5c, + 0x01, 0xf0, 0xd4, 0xfa, 0x02, 0x48, 0xa1, 0x60, 0xa9, 0xb2, 0x01, 0xf0, + 0xe8, 0xf8, 0xf2, 0xe6, 0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, + 0x1a, 0x00, 0x00, 0x20, 0x64, 0x01, 0x00, 0x20, 0x63, 0x01, 0x00, 0x20, + 0x65, 0x01, 0x00, 0x20, 0x4c, 0x00, 0x00, 0x20, 0x3d, 0x00, 0x00, 0x20, + 0x20, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x3c, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, 0x60, 0x01, 0x00, 0x20, + 0x28, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x70, 0x02, 0x00, 0x20, + 0x8d, 0x90, 0x54, 0x41, 0x34, 0x00, 0x00, 0x20, 0x00, 0x8e, 0x44, 0x49, + 0xa2, 0x1c, 0xe2, 0x4f, 0x02, 0x33, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0xd1, 0xfe, 0xfd, 0x48, 0x00, 0xf0, 0x00, 0xff, 0xfc, 0x48, 0x00, 0xf0, + 0xfd, 0xfe, 0xfc, 0x48, 0x00, 0xf0, 0xfa, 0xfe, 0xfb, 0x48, 0x00, 0xf0, + 0xf7, 0xfe, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xf3, 0xfe, 0xf9, 0x48, + 0x00, 0xf0, 0xf0, 0xfe, 0xc0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xec, 0xfe, + 0xf6, 0x48, 0x00, 0xf0, 0xe9, 0xfe, 0xa0, 0x20, 0x80, 0x00, 0x00, 0xf0, + 0xe5, 0xfe, 0x00, 0x22, 0x02, 0x23, 0x11, 0x00, 0xf2, 0x48, 0x00, 0xf0, + 0x95, 0xfd, 0x02, 0x21, 0xf0, 0x48, 0x00, 0xf0, 0x8e, 0xfd, 0xf0, 0x4b, + 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23, 0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x87, 0xfd, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x80, 0xfd, 0x80, 0x24, 0x90, 0x20, + 0x64, 0x00, 0x03, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xb6, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xe1, 0x48, 0x00, 0xf0, 0x72, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xde, 0x48, 0x00, 0xf0, 0x8c, 0xfd, + 0x21, 0x00, 0xdc, 0x48, 0x00, 0xf0, 0x60, 0xfd, 0x00, 0x22, 0x04, 0x23, + 0x11, 0x00, 0xd9, 0x48, 0x00, 0xf0, 0x62, 0xfd, 0x90, 0x20, 0x08, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfd, 0x01, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xd2, 0x48, 0x00, 0xf0, 0x55, 0xfd, 0xd3, 0x48, + 0x00, 0xf0, 0x00, 0xfc, 0x01, 0x21, 0xd1, 0x48, 0x00, 0xf0, 0x66, 0xfb, + 0xcf, 0x48, 0x00, 0xf0, 0x11, 0xfc, 0xce, 0x48, 0x00, 0xf0, 0x82, 0xfb, + 0xcc, 0x48, 0x00, 0xf0, 0x19, 0xfc, 0x00, 0xf0, 0x21, 0xfc, 0x06, 0x21, + 0xc9, 0x48, 0x00, 0xf0, 0xb6, 0xfb, 0xc9, 0x4a, 0x02, 0x21, 0xc7, 0x48, + 0x00, 0xf0, 0x7c, 0xfb, 0x00, 0x21, 0xc5, 0x48, 0x00, 0xf0, 0x04, 0xfc, + 0xc3, 0x48, 0x00, 0xf0, 0xaf, 0xfb, 0xc2, 0x48, 0x00, 0xf0, 0xee, 0xfb, + 0x01, 0x21, 0xc2, 0x48, 0x00, 0xf0, 0x19, 0xfc, 0x00, 0x22, 0x01, 0x21, + 0xbf, 0x48, 0x00, 0xf0, 0x33, 0xfc, 0x80, 0x22, 0x01, 0x21, 0xbd, 0x48, + 0xd2, 0x00, 0x00, 0xf0, 0x3d, 0xfc, 0x22, 0x00, 0x01, 0x21, 0xba, 0x48, + 0x00, 0xf0, 0x48, 0xfc, 0x01, 0x21, 0xb8, 0x48, 0x00, 0xf0, 0x54, 0xfc, + 0x01, 0x21, 0xb6, 0x48, 0x00, 0xf0, 0x5a, 0xfc, 0x01, 0x21, 0xb4, 0x48, + 0x00, 0xf0, 0x66, 0xfc, 0x01, 0x21, 0xb3, 0x4a, 0xb1, 0x48, 0x00, 0xf0, + 0x75, 0xfc, 0x01, 0x21, 0xb1, 0x4a, 0xaf, 0x48, 0x00, 0xf0, 0x79, 0xfc, + 0x02, 0x22, 0x01, 0x21, 0xac, 0x48, 0x00, 0xf0, 0x7d, 0xfc, 0x01, 0x21, + 0xaa, 0x48, 0x00, 0xf0, 0x5d, 0xfc, 0xa7, 0x48, 0x00, 0xf0, 0xd3, 0xfb, + 0xa5, 0x48, 0x00, 0xf0, 0x80, 0xfb, 0xa4, 0x48, 0x00, 0xf0, 0xdc, 0xfb, + 0xa7, 0x4b, 0xa8, 0x4a, 0x5c, 0x60, 0x00, 0x24, 0x1a, 0x60, 0x9c, 0x60, + 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, 0xdb, 0x00, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xe5, 0xfc, 0xc0, 0x22, 0x90, 0x20, 0xd2, 0x00, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1c, 0xfd, 0xff, 0x21, 0x1b, 0x20, + 0x01, 0xf0, 0x50, 0xf8, 0x1b, 0x20, 0x01, 0xf0, 0x41, 0xf8, 0xe1, 0x21, + 0x9a, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, 0x8d, 0xff, 0x08, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0x95, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xa7, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, 0x9b, 0xff, 0x0c, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0xa7, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xa9, 0xff, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, 0x13, 0x43, 0x2b, 0x60, + 0x00, 0xf0, 0xaa, 0xff, 0x8b, 0x48, 0x00, 0xf0, 0x44, 0xfe, 0x8c, 0x20, + 0xff, 0x30, 0x00, 0xf0, 0x07, 0xfe, 0x0e, 0x20, 0x01, 0xf0, 0x16, 0xf8, + 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x85, 0x48, 0x00, 0xf0, 0x1c, 0xfe, + 0xf0, 0x21, 0x83, 0x48, 0x49, 0x00, 0x00, 0xf0, 0x37, 0xfe, 0x81, 0x48, + 0x00, 0xf0, 0xb3, 0xfe, 0x7f, 0x48, 0x00, 0xf0, 0x1d, 0xfe, 0x7e, 0x48, + 0x00, 0xf0, 0x1f, 0xfe, 0x7d, 0x49, 0x7c, 0x48, 0x00, 0xf0, 0x2c, 0xfe, + 0x02, 0x21, 0x7a, 0x48, 0x00, 0xf0, 0xf8, 0xfd, 0x78, 0x48, 0x00, 0xf0, + 0x19, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x1a, 0xfe, 0x80, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0xdd, 0xfd, 0x0f, 0x20, 0x00, 0xf0, 0xec, 0xff, + 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xf1, 0xfd, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfe, + 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xf4, 0xfd, 0x80, 0x20, 0xc0, 0x05, + 0x00, 0xf0, 0xf5, 0xfd, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x1c, 0xff, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xdb, 0xfe, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x7d, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xa3, 0xfe, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfe, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe7, 0xfd, 0x80, 0x20, + 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x06, 0xfe, 0x80, 0x20, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xef, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xa6, 0xfd, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xb0, 0xfe, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x52, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x78, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x05, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xbc, 0xfd, + 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xdb, 0xfd, 0x80, 0x20, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc4, 0xfe, 0x80, 0x20, 0x04, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x7b, 0xfd, 0x01, 0x21, 0x80, 0x20, 0x49, 0x42, + 0xc0, 0x05, 0x00, 0xf0, 0x2a, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, + 0x95, 0xfd, 0x37, 0x48, 0x00, 0xf0, 0x97, 0xfd, 0x36, 0x48, 0x00, 0xf0, + 0x5b, 0xfd, 0x10, 0x20, 0x00, 0xf0, 0x6a, 0xff, 0x23, 0x00, 0x22, 0x00, + 0x21, 0x00, 0x31, 0x48, 0x00, 0xf0, 0x70, 0xfd, 0xf0, 0x21, 0x2f, 0x48, + 0x49, 0x00, 0x00, 0xf0, 0x8b, 0xfd, 0x2d, 0x48, 0x00, 0xf0, 0x74, 0xfd, + 0x2b, 0x48, 0x00, 0xf0, 0x76, 0xfd, 0x0a, 0x21, 0x29, 0x48, 0x00, 0xf0, + 0x83, 0xfd, 0x05, 0x22, 0x21, 0x00, 0x27, 0x48, 0x00, 0xf0, 0xe8, 0xfd, + 0x02, 0x21, 0x25, 0x48, 0x00, 0xf0, 0x4a, 0xfd, 0x23, 0x48, 0x00, 0xf0, + 0x6b, 0xfd, 0x06, 0x20, 0x00, 0xf0, 0x46, 0xff, 0x04, 0x20, 0x14, 0x49, + 0x00, 0xf0, 0x90, 0xfb, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x58, 0xfb, + 0x04, 0x20, 0x00, 0xf0, 0x75, 0xfb, 0x20, 0x00, 0x00, 0xf0, 0x1e, 0xff, + 0x1b, 0x4b, 0x1c, 0x49, 0x1c, 0x60, 0x1c, 0x4b, 0x18, 0x68, 0x01, 0xf0, + 0x21, 0xf8, 0x00, 0xf0, 0x0d, 0xff, 0x00, 0xf0, 0x1d, 0xff, 0x00, 0xf0, + 0x23, 0xff, 0xc0, 0x46, 0xfd, 0xe7, 0xc0, 0x46, 0x91, 0x02, 0x00, 0x00, + 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x00, + 0x81, 0x03, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x3c, 0x00, 0x00, 0x20, 0x00, 0x24, 0x01, 0x40, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x02, 0x40, 0x40, 0x24, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, + 0x4c, 0x00, 0x00, 0x20, 0x5c, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, + 0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, + 0x01, 0x02, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0, 0x80, 0x38, 0x01, 0x00, + 0x08, 0x00, 0x00, 0x20, 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x64, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, + 0x1c, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, + 0x19, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, + 0x12, 0x88, 0x9a, 0x42, 0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, + 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, + 0xc0, 0x05, 0x9a, 0x42, 0x0e, 0xd0, 0x00, 0xf0, 0x63, 0xfb, 0x80, 0x21, + 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x5d, 0xfb, 0x80, 0x21, + 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x57, 0xfb, 0x10, 0xbd, + 0x00, 0xf0, 0x52, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, + 0x00, 0xf0, 0x4c, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, + 0x00, 0xf0, 0x46, 0xfb, 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, + 0x16, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, + 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xaa, 0xfc, + 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xa9, 0xfc, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x2a, 0x4f, + 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68, 0x15, 0x68, 0x3a, 0x68, + 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68, 0x01, 0x28, 0x06, 0xd9, + 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29, 0x39, 0xd0, 0x26, 0x49, + 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33, 0x23, 0x60, 0xaa, 0x1a, + 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00, 0x93, 0x42, 0x0e, 0xd9, + 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78, 0x4b, 0x40, 0x80, 0x21, + 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0, 0x00, 0xf0, 0x02, 0xfb, + 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60, 0x80, 0x20, 0x04, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x6b, 0xfc, 0x00, 0x28, 0x14, 0xd0, 0x80, 0x20, + 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x6a, 0xfc, 0x14, 0x4b, 0x15, 0x4a, + 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60, 0x14, 0x4a, 0xcb, 0x1a, + 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x08, 0x4b, 0x1a, 0x68, + 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49, 0xc4, 0xe7, 0x00, 0xf0, + 0xdb, 0xfa, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40, 0x68, 0x02, 0x00, 0x20, + 0x38, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x40, + 0x6c, 0x02, 0x00, 0x20, 0x60, 0x01, 0x00, 0x20, 0x5c, 0x01, 0x00, 0x20, + 0x44, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, + 0x19, 0x48, 0x00, 0xf0, 0x29, 0xfc, 0x00, 0x28, 0x2a, 0xd0, 0x02, 0x21, + 0x16, 0x48, 0x00, 0xf0, 0x29, 0xfc, 0x02, 0x22, 0x01, 0x21, 0x15, 0x48, + 0x00, 0xf0, 0xb4, 0xf9, 0x00, 0x28, 0x1f, 0xd0, 0x02, 0x22, 0x01, 0x21, + 0x11, 0x48, 0x00, 0xf0, 0xa8, 0xf9, 0x11, 0x49, 0x11, 0x4a, 0x08, 0x68, + 0x13, 0x88, 0x1b, 0x18, 0x0b, 0x60, 0x10, 0x49, 0x52, 0x88, 0x0b, 0x68, + 0x9b, 0x18, 0x0b, 0x60, 0x0e, 0x4b, 0x0f, 0x49, 0x1b, 0x88, 0x9a, 0x42, + 0x0b, 0xd9, 0xd3, 0x1a, 0x0a, 0x68, 0x0d, 0x48, 0x9b, 0x18, 0x0d, 0x4a, + 0x0b, 0x60, 0x13, 0x88, 0x01, 0x33, 0x13, 0x80, 0x00, 0xf0, 0x78, 0xf9, + 0x10, 0xbd, 0x9b, 0x1a, 0xf2, 0xe7, 0xc0, 0x46, 0x00, 0x04, 0x00, 0x40, + 0x00, 0x00, 0x02, 0x40, 0x78, 0x02, 0x00, 0x20, 0x12, 0x00, 0x00, 0x20, + 0x2c, 0x00, 0x00, 0x20, 0x22, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, + 0x00, 0x24, 0x01, 0x40, 0x10, 0x00, 0x00, 0x20, 0xf8, 0xb5, 0x04, 0x20, + 0x00, 0xf0, 0x28, 0xfa, 0x38, 0x48, 0x00, 0xf0, 0x8e, 0xfc, 0x38, 0x4e, + 0x04, 0x21, 0x30, 0x60, 0x37, 0x48, 0x00, 0xf0, 0x6a, 0xfa, 0x00, 0x28, + 0x1e, 0xd0, 0x36, 0x4b, 0x36, 0x4f, 0x1d, 0x88, 0x00, 0x24, 0x38, 0x68, + 0x29, 0x00, 0x00, 0xf0, 0xbd, 0xfe, 0x34, 0x4b, 0x3c, 0x60, 0x34, 0x4f, + 0x18, 0x80, 0x29, 0x00, 0x38, 0x68, 0x00, 0xf0, 0xb5, 0xfe, 0x01, 0xf0, + 0x83, 0xfb, 0x31, 0x4b, 0x3c, 0x60, 0x31, 0x4f, 0x18, 0x60, 0x29, 0x00, + 0x38, 0x68, 0x00, 0xf0, 0xab, 0xfe, 0x2f, 0x4b, 0x3c, 0x60, 0x18, 0x80, + 0x27, 0x4b, 0x1c, 0x80, 0x2d, 0x4b, 0x2e, 0x4c, 0x18, 0x88, 0x23, 0x78, + 0x00, 0x2b, 0x03, 0xd0, 0xfa, 0x23, 0x9b, 0x00, 0x18, 0x1a, 0x80, 0xb2, + 0xfa, 0x21, 0x33, 0x68, 0x29, 0x4d, 0x89, 0x00, 0x28, 0x80, 0x58, 0x43, + 0x00, 0xf0, 0x94, 0xfe, 0x00, 0x21, 0x02, 0x00, 0x19, 0x48, 0x00, 0xf0, + 0x37, 0xfc, 0x00, 0x21, 0x17, 0x48, 0x00, 0xf0, 0x4e, 0xfc, 0x2b, 0x88, + 0x00, 0x2b, 0x18, 0xd0, 0x21, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, + 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78, 0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, + 0x0e, 0xd0, 0x00, 0xf0, 0x19, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x13, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x0d, 0xfa, 0xf8, 0xbd, 0x00, 0xf0, 0x0c, 0xfa, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x06, 0xfa, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x00, 0xfa, + 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x04, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x10, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x22, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, + 0x78, 0x02, 0x00, 0x20, 0x70, 0x02, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x48, 0x00, 0x00, 0x20, 0x16, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x20, + 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x0f, 0xd0, 0x00, 0x29, 0x0c, 0xd1, + 0xc3, 0x68, 0x0a, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x80, 0x23, 0xc2, 0x68, + 0x5b, 0x02, 0x13, 0x43, 0x02, 0xe0, 0xc3, 0x68, 0x06, 0x4a, 0x13, 0x40, + 0xc3, 0x60, 0x70, 0x47, 0xc3, 0x68, 0x05, 0x4a, 0x13, 0x40, 0xc3, 0x60, + 0x80, 0x23, 0xc2, 0x68, 0x9b, 0x01, 0xf0, 0xe7, 0xff, 0xdf, 0xff, 0xff, + 0xff, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc3, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0xf7, 0xb5, 0x00, 0x29, 0x01, 0xd1, 0x81, 0x62, 0xf7, 0xbd, 0x01, 0x23, + 0x1d, 0x00, 0x14, 0x78, 0x00, 0x93, 0xa5, 0x40, 0x00, 0x24, 0x26, 0x00, + 0x9b, 0x1a, 0x01, 0x93, 0x01, 0x9b, 0x9b, 0x18, 0xdb, 0xb2, 0x99, 0x42, + 0x06, 0xd8, 0x04, 0x23, 0x00, 0x2e, 0x13, 0xd0, 0x00, 0x2c, 0x18, 0xd0, + 0x00, 0xf0, 0x38, 0xfd, 0x53, 0x78, 0x00, 0x9f, 0x9f, 0x40, 0x3d, 0x43, + 0x17, 0x78, 0x01, 0x32, 0xbc, 0x46, 0x9c, 0x45, 0xbf, 0x41, 0x63, 0x45, + 0x9b, 0x41, 0x7f, 0x42, 0x5b, 0x42, 0x3e, 0x43, 0x1c, 0x43, 0xe3, 0xe7, + 0x00, 0x2c, 0x04, 0xd0, 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x85, 0x62, + 0xd2, 0xe7, 0xc2, 0x68, 0x9a, 0x43, 0xc2, 0x60, 0xf9, 0xe7, 0x07, 0x23, + 0x19, 0x40, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, 0xc3, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xff, 0x7f, 0xff, + 0x01, 0x23, 0x82, 0x68, 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, + 0x04, 0x00, 0xff, 0xf7, 0xf7, 0xff, 0x01, 0x23, 0x22, 0x68, 0x1a, 0x42, + 0xfc, 0xd0, 0x10, 0xbd, 0x83, 0x68, 0x01, 0x20, 0x98, 0x43, 0x70, 0x47, + 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, 0xf8, 0xff, 0x00, 0x28, 0x10, 0xd1, + 0x21, 0x00, 0x04, 0x23, 0xa2, 0x68, 0x08, 0x31, 0x1a, 0x42, 0x06, 0xd0, + 0x10, 0x22, 0xa0, 0x68, 0x02, 0x43, 0xa2, 0x60, 0x0a, 0x68, 0x1a, 0x42, + 0xfc, 0xd1, 0x02, 0x23, 0xa2, 0x68, 0x13, 0x43, 0xa3, 0x60, 0x10, 0xbd, + 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, 0xe4, 0xff, 0x20, 0x00, 0xff, 0xf7, + 0xdd, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, 0x80, 0x23, 0x82, 0x68, + 0x1b, 0x06, 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x00, + 0xff, 0xf7, 0xf6, 0xff, 0xa3, 0x68, 0x00, 0x2b, 0xfc, 0xdb, 0x10, 0xbd, + 0xc3, 0x68, 0x02, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0xff, 0xdf, 0xff, 0xff, 0x18, 0x22, 0xc3, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0xc3, 0x60, 0x70, 0x47, 0x20, 0x22, 0xc3, 0x68, 0x93, 0x43, 0xc3, 0x60, + 0x70, 0x47, 0x01, 0x23, 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x70, 0x47, + 0x80, 0x23, 0x03, 0x4a, 0x1b, 0x04, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x08, 0x27, 0x01, 0x40, 0x04, 0x23, 0x82, 0x68, + 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x14, 0x23, 0x00, 0x22, 0x01, 0x39, + 0x4b, 0x43, 0x1b, 0x18, 0x9a, 0x60, 0xda, 0x60, 0x1a, 0x61, 0x5a, 0x61, + 0x0f, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x42, 0x68, 0x13, 0x43, 0x43, 0x60, + 0x70, 0x47, 0x01, 0x39, 0x89, 0x00, 0x8a, 0x40, 0x42, 0x60, 0x70, 0x47, + 0x01, 0x39, 0x89, 0x00, 0x8a, 0x40, 0x00, 0x68, 0x10, 0x40, 0x42, 0x1e, + 0x90, 0x41, 0xc0, 0xb2, 0x70, 0x47, 0x00, 0x00, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, + 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0xff, 0xcf, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, + 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, + 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0xff, 0xfc, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x80, 0x23, 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x20, 0x23, + 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x03, 0x68, + 0x01, 0x4a, 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0xff, 0xbf, 0xff, 0xff, + 0x4b, 0x1e, 0x14, 0x21, 0x10, 0x22, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x01, 0x23, 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x18, + 0x83, 0x68, 0xdb, 0x07, 0x00, 0xd4, 0x02, 0x61, 0x70, 0x47, 0x4b, 0x1e, + 0x14, 0x21, 0x59, 0x43, 0x08, 0x18, 0x83, 0x68, 0xdb, 0x07, 0x00, 0xd4, + 0x42, 0x61, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x0c, 0x30, + 0x09, 0x18, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x00, 0x01, 0x29, 0x0c, 0xd0, + 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, + 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, + 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, + 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, + 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, + 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, + 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, + 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, + 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, + 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, + 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, + 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, + 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, + 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, + 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, + 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, + 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0x00, 0x69, + 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, 0x01, 0x91, 0x03, 0x27, + 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, 0xc3, 0x68, 0x03, 0x9c, + 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, 0x3d, 0x00, 0x4c, 0x00, + 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, 0x02, 0x9d, 0xa6, 0x40, + 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, 0x10, 0x29, 0xec, 0xd1, + 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0xf7, 0xb5, 0x01, 0x92, + 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43, 0x00, 0x24, 0x01, 0x26, + 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00, 0x25, 0x41, 0x35, 0x42, + 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40, 0x91, 0x43, 0x01, 0x9a, + 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c, 0xf1, 0xd1, 0x81, 0x60, + 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7, 0xf7, 0xb5, 0x00, 0x23, + 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, 0x41, 0x6a, 0x01, 0x92, + 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x9d, 0x00, + 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x14, 0x43, 0x01, 0x33, + 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, 0x01, 0x9a, 0x1a, 0x41, + 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0x20, 0x3d, 0xaa, 0x40, + 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x33, 0x10, 0x2b, + 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, 0x00, 0x23, 0x00, 0xb5, + 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0, 0xe1, 0xfb, 0x0a, 0x0e, + 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a, 0x10, 0x68, 0x40, 0x0c, + 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a, 0x10, 0x68, 0x40, 0x08, + 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf2, 0xe7, 0x05, 0x4a, + 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a, 0xf2, 0xe7, 0x04, 0x4a, + 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, + 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x04, 0x00, + 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, + 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0, 0xb1, 0xfb, 0x0b, 0x0f, + 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a, 0x80, 0x23, 0x11, 0x68, + 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd, 0x08, 0x4a, 0x01, 0x23, + 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf1, 0xe7, + 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7, 0x80, 0x23, 0x03, 0x4a, + 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, + 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, + 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8, 0x00, 0xf0, 0x86, 0xfb, + 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21, 0x0c, 0x4a, 0x13, 0x68, + 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22, 0x09, 0x49, 0x0b, 0x68, + 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43, 0x0b, 0x60, 0x00, 0xbd, + 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x02, 0x23, + 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0xe8, 0xe7, + 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x00, 0x04, + 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff, 0x01, 0x20, 0xff, 0xf7, + 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff, 0x00, 0x20, 0xff, 0xf7, + 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff, 0x00, 0xf0, 0x6c, 0xfa, + 0x01, 0x20, 0x00, 0xf0, 0x71, 0xfa, 0xa0, 0x20, 0x80, 0x03, 0xff, 0xf7, + 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff, 0x03, 0x20, 0xff, 0xf7, + 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff, 0x03, 0x20, 0xff, 0xf7, + 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x60, + 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02, 0x0c, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09, 0xd2, 0x18, 0x1f, 0x23, + 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40, 0x06, 0x4a, 0x43, 0x09, + 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x19, 0x68, + 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43, 0x19, 0x60, 0x70, 0x47, + 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, + 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41, 0xc0, 0xb2, 0x70, 0x47, + 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x04, 0x68, + 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, + 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0xae, 0xfa, + 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, 0x02, 0x21, 0x8a, 0x43, + 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, + 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, 0xf3, 0xe7, 0x80, 0x21, + 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfd, 0xff, 0xff, + 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, 0x00, 0xf0, 0x8a, 0xfa, + 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, 0x01, 0x22, 0x0a, 0x43, + 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7, 0x80, 0x22, 0x52, 0x00, + 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7, 0x04, 0x22, 0xf2, 0xe7, + 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00, 0xed, 0xe7, 0x00, 0x00, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0x6a, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x04, 0x21, + 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x06, 0xd8, 0x00, 0xf0, + 0x47, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, 0x0a, 0x00, 0x5a, 0x63, + 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, 0xfa, 0xe7, 0x1a, 0x64, + 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, 0x13, 0x43, 0x43, 0x64, + 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, + 0x29, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, 0x99, 0x69, 0x12, 0x01, + 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, + 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, + 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, 0x81, 0x43, 0xd9, 0x61, + 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, + 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0xfd, 0xf9, 0x02, 0x0b, 0x12, 0x1b, 0x0c, 0x20, + 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x92, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, 0xd9, 0x69, 0x92, 0x00, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0x03, 0x00, 0x08, 0x00, + 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, 0x0a, 0x40, 0xa5, 0x43, + 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, 0x00, 0xd8, 0x4a, 0x40, + 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc6, 0xf9, 0x02, 0x0a, 0x11, 0x19, + 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, 0x12, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, + 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xef, 0xe7, 0xd9, 0x69, + 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, + 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x02, 0x6a, + 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, 0x83, 0x68, 0x93, 0x43, + 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, + 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, 0x48, 0x08, 0xc0, 0x18, + 0x00, 0xf0, 0x96, 0xf9, 0xe0, 0x60, 0x10, 0xbd, 0x0c, 0x00, 0x00, 0x20, + 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, 0x13, 0x40, 0x03, 0x60, + 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, 0x13, 0x43, 0xf8, 0xe7, + 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, 0x03, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, 0xff, 0xf9, 0xff, 0xff, + 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x83, 0x60, 0x70, 0x47, + 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, 0x70, 0x47, 0x40, 0x6a, + 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7, 0x70, 0x47, 0x00, 0x00, + 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49, 0x8b, 0x42, 0x18, 0xd3, + 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3, 0x80, 0x23, 0x15, 0x4a, + 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43, 0x13, 0x60, 0x14, 0x4b, + 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b, 0x9c, 0x42, 0x0e, 0xd3, + 0xfe, 0xf7, 0x26, 0xff, 0x12, 0x4c, 0x13, 0x4b, 0x9c, 0x42, 0x0b, 0xd3, + 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7, 0x02, 0xc3, 0xe3, 0xe7, + 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xea, 0xe7, + 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x20, + 0x64, 0x36, 0x00, 0x08, 0x10, 0x00, 0x00, 0x20, 0x7c, 0x02, 0x00, 0x20, + 0x14, 0xed, 0x00, 0xe0, 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, + 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, + 0x64, 0x36, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02, 0x00, 0x0a, 0x18, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0, 0x04, 0x21, 0x03, 0x4a, + 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x01, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, + 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47, 0x00, 0xe1, 0x00, 0xe0, + 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23, 0x18, 0x40, 0x04, 0x38, + 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00, 0x18, 0x24, 0xc0, 0x00, + 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40, 0x9b, 0x18, 0x1a, 0x68, + 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd, 0x83, 0x08, 0x02, 0x4a, + 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0, 0x00, 0xe4, 0x00, 0xe0, + 0xfe, 0xe7, 0x00, 0x00, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, + 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, + 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, + 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, + 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, + 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, + 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, + 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, + 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, + 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, + 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, + 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, + 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, + 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, + 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, + 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, + 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, + 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, + 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, + 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, + 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, + 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, + 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, + 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, + 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, + 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, + 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, + 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, + 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, + 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, + 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, + 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, + 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, + 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, + 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, + 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, + 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, + 0x70, 0x47, 0xc0, 0x46, 0x9e, 0x21, 0x10, 0xb5, 0xc9, 0x05, 0x04, 0x1c, + 0x01, 0xf0, 0xe0, 0xfb, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, + 0x19, 0xfc, 0x10, 0xbd, 0x9e, 0x21, 0x20, 0x1c, 0xc9, 0x05, 0x00, 0xf0, + 0x4b, 0xfa, 0x00, 0xf0, 0x11, 0xfc, 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, + 0x60, 0x44, 0xf2, 0xe7, 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, + 0x0d, 0x00, 0x01, 0xf0, 0x8d, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, + 0x29, 0x00, 0x01, 0xf0, 0xd5, 0xfa, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, + 0x20, 0x00, 0x29, 0x00, 0x00, 0xf0, 0x3c, 0xff, 0x01, 0xf0, 0xcc, 0xfa, + 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0xe0, 0x41, 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, + 0x45, 0x02, 0xc0, 0xb5, 0x47, 0x00, 0x0c, 0x1c, 0x6d, 0x0a, 0x3f, 0x0e, + 0xc6, 0x0f, 0x00, 0x2f, 0x66, 0xd0, 0xff, 0x2f, 0x6c, 0xd0, 0x00, 0x23, + 0xea, 0x00, 0x80, 0x25, 0x99, 0x46, 0x9a, 0x46, 0xed, 0x04, 0x15, 0x43, + 0x7f, 0x3f, 0x60, 0x02, 0x61, 0x00, 0x43, 0x0a, 0x98, 0x46, 0x09, 0x0e, + 0xe4, 0x0f, 0x00, 0x29, 0x48, 0xd0, 0xff, 0x29, 0x10, 0xd0, 0x80, 0x22, + 0xd8, 0x00, 0xd2, 0x04, 0x02, 0x43, 0x90, 0x46, 0x00, 0x20, 0x7f, 0x39, + 0x4a, 0x46, 0x33, 0x00, 0x7f, 0x1a, 0x02, 0x43, 0x6c, 0x49, 0x92, 0x00, + 0x8a, 0x58, 0x63, 0x40, 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2b, 0x6d, 0xd1, + 0x02, 0x20, 0xff, 0x3f, 0x33, 0xe0, 0x00, 0x23, 0x98, 0x46, 0x26, 0x00, + 0x45, 0x46, 0x82, 0x46, 0x53, 0x46, 0x02, 0x2b, 0x00, 0xd1, 0x7f, 0xe0, + 0x03, 0x2b, 0x00, 0xd1, 0x94, 0xe0, 0x01, 0x2b, 0x17, 0xd0, 0x38, 0x00, + 0x7f, 0x30, 0x00, 0x28, 0x5f, 0xdd, 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, + 0x2b, 0x40, 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x35, 0x2b, 0x01, 0x03, 0xd5, + 0x38, 0x00, 0x5a, 0x4b, 0x80, 0x30, 0x1d, 0x40, 0xfe, 0x28, 0x67, 0xdc, + 0xad, 0x01, 0x6d, 0x0a, 0xc0, 0xb2, 0x02, 0xe0, 0x1e, 0x00, 0x00, 0x20, + 0x00, 0x25, 0xc0, 0x05, 0x28, 0x43, 0xf6, 0x07, 0x30, 0x43, 0x1c, 0xbc, + 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x00, 0x2b, 0x2b, 0xd1, + 0x01, 0x20, 0x4a, 0x46, 0x33, 0x00, 0x4e, 0x49, 0x02, 0x43, 0x92, 0x00, + 0x8a, 0x58, 0x63, 0x40, 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2d, 0x13, 0xd1, + 0x04, 0x23, 0x99, 0x46, 0x03, 0x3b, 0x00, 0x27, 0x9a, 0x46, 0x9a, 0xe7, + 0x00, 0x2d, 0x05, 0xd1, 0x08, 0x23, 0x99, 0x46, 0x06, 0x3b, 0xff, 0x27, + 0x9a, 0x46, 0x92, 0xe7, 0x0c, 0x23, 0x99, 0x46, 0x09, 0x3b, 0xff, 0x27, + 0x9a, 0x46, 0x8c, 0xe7, 0x28, 0x00, 0x01, 0xf0, 0x2d, 0xfb, 0x76, 0x27, + 0x43, 0x1f, 0x9d, 0x40, 0x00, 0x23, 0x7f, 0x42, 0x99, 0x46, 0x9a, 0x46, + 0x3f, 0x1a, 0x80, 0xe7, 0x18, 0x00, 0x01, 0xf0, 0x21, 0xfb, 0x42, 0x46, + 0x43, 0x1f, 0x76, 0x21, 0x9a, 0x40, 0x49, 0x42, 0x09, 0x1a, 0x90, 0x46, + 0x00, 0x20, 0x85, 0xe7, 0xff, 0x21, 0x03, 0x20, 0x82, 0xe7, 0x1e, 0x00, + 0xff, 0x20, 0x00, 0x25, 0xb5, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, + 0xaf, 0xdc, 0x9e, 0x37, 0x29, 0x00, 0xbd, 0x40, 0xd9, 0x40, 0x6a, 0x1e, + 0x95, 0x41, 0x0d, 0x43, 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x2b, 0x40, + 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x35, 0x6b, 0x01, 0x44, 0xd5, 0x01, 0x20, + 0x00, 0x25, 0x9e, 0xe7, 0xff, 0x20, 0x00, 0x25, 0x9b, 0xe7, 0x80, 0x25, + 0x00, 0x26, 0xff, 0x20, 0xed, 0x03, 0x96, 0xe7, 0x00, 0x23, 0x98, 0x46, + 0x80, 0x20, 0xc0, 0x03, 0x05, 0x42, 0x09, 0xd0, 0x43, 0x46, 0x03, 0x42, + 0x06, 0xd1, 0x45, 0x46, 0x05, 0x43, 0x6d, 0x02, 0x26, 0x00, 0xff, 0x20, + 0x6d, 0x0a, 0x86, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x05, 0x43, 0x6d, 0x02, + 0xff, 0x20, 0x6d, 0x0a, 0x7f, 0xe7, 0x41, 0x46, 0x6a, 0x01, 0x48, 0x01, + 0x82, 0x42, 0x19, 0xd2, 0x1b, 0x21, 0x00, 0x25, 0x01, 0x3f, 0x01, 0x26, + 0x14, 0x00, 0x6d, 0x00, 0x52, 0x00, 0x00, 0x2c, 0x01, 0xdb, 0x90, 0x42, + 0x01, 0xd8, 0x12, 0x1a, 0x35, 0x43, 0x01, 0x39, 0x00, 0x29, 0xf3, 0xd1, + 0x50, 0x1e, 0x82, 0x41, 0x38, 0x00, 0x7f, 0x30, 0x1e, 0x00, 0x15, 0x43, + 0x00, 0x28, 0x00, 0xdd, 0x4b, 0xe7, 0xaa, 0xe7, 0x1a, 0x21, 0x01, 0x25, + 0x12, 0x1a, 0xe4, 0xe7, 0xad, 0x01, 0x00, 0x20, 0x6d, 0x0a, 0x58, 0xe7, + 0x64, 0x35, 0x00, 0x08, 0xff, 0xff, 0xff, 0xf7, 0xa4, 0x35, 0x00, 0x08, + 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x44, 0x02, + 0xe0, 0xb5, 0x45, 0x00, 0x0f, 0x1c, 0x64, 0x0a, 0x2d, 0x0e, 0xc6, 0x0f, + 0x00, 0x2d, 0x47, 0xd0, 0xff, 0x2d, 0x4d, 0xd0, 0x00, 0x23, 0x80, 0x20, + 0x9a, 0x46, 0x9b, 0x46, 0xe4, 0x00, 0xc0, 0x04, 0x04, 0x43, 0x7f, 0x3d, + 0x78, 0x02, 0x43, 0x0a, 0x99, 0x46, 0x7a, 0x00, 0xfb, 0x0f, 0x98, 0x46, + 0x12, 0x0e, 0x4b, 0x46, 0x44, 0xd0, 0xff, 0x2a, 0x11, 0xd0, 0xd8, 0x00, + 0x80, 0x23, 0xdb, 0x04, 0x03, 0x43, 0x99, 0x46, 0x00, 0x20, 0x7f, 0x3a, + 0xad, 0x18, 0x47, 0x46, 0x53, 0x46, 0x77, 0x40, 0x69, 0x1c, 0x0f, 0x2b, + 0x3f, 0xd8, 0x72, 0x4a, 0x9b, 0x00, 0xd3, 0x58, 0x9f, 0x46, 0xff, 0x35, + 0x00, 0x2b, 0x00, 0xd0, 0x79, 0xe0, 0x52, 0x46, 0x02, 0x23, 0x1a, 0x43, + 0x92, 0x46, 0x02, 0x20, 0xeb, 0xe7, 0x47, 0x46, 0x4c, 0x46, 0x83, 0x46, + 0x5b, 0x46, 0x02, 0x2b, 0x28, 0xd0, 0x03, 0x2b, 0x00, 0xd1, 0xc6, 0xe0, + 0x01, 0x2b, 0x4f, 0xd1, 0x00, 0x20, 0x00, 0x24, 0xc0, 0x05, 0xff, 0x07, + 0x20, 0x43, 0x38, 0x43, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf8, 0xbd, 0x00, 0x2c, 0x71, 0xd1, 0x04, 0x23, 0x9a, 0x46, + 0x03, 0x3b, 0x00, 0x25, 0x9b, 0x46, 0xb9, 0xe7, 0x00, 0x2c, 0x63, 0xd1, + 0x08, 0x23, 0x9a, 0x46, 0x06, 0x3b, 0xff, 0x25, 0x9b, 0x46, 0xb1, 0xe7, + 0x00, 0x2b, 0x50, 0xd1, 0x52, 0x46, 0x01, 0x33, 0x1a, 0x43, 0x92, 0x46, + 0x01, 0x20, 0xbc, 0xe7, 0xff, 0x20, 0x00, 0x24, 0xda, 0xe7, 0x48, 0x46, + 0x26, 0x0c, 0x24, 0x04, 0x22, 0x0c, 0x04, 0x04, 0x24, 0x0c, 0x4b, 0x46, + 0x20, 0x00, 0x1b, 0x0c, 0x50, 0x43, 0x74, 0x43, 0x5a, 0x43, 0x5e, 0x43, + 0x12, 0x19, 0x03, 0x0c, 0x9b, 0x18, 0x9c, 0x42, 0x03, 0xd9, 0x80, 0x22, + 0x52, 0x02, 0x94, 0x46, 0x66, 0x44, 0x00, 0x04, 0x1a, 0x04, 0x00, 0x0c, + 0x12, 0x18, 0x94, 0x01, 0x60, 0x1e, 0x84, 0x41, 0x1b, 0x0c, 0x92, 0x0e, + 0x9b, 0x19, 0x14, 0x43, 0x9b, 0x01, 0x1c, 0x43, 0x1b, 0x01, 0x72, 0xd5, + 0x01, 0x20, 0x63, 0x08, 0x04, 0x40, 0x1c, 0x43, 0x08, 0x00, 0x7f, 0x30, + 0x00, 0x28, 0x3c, 0xdd, 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x23, 0x40, + 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x34, 0x23, 0x01, 0x03, 0xd5, 0x80, 0x31, + 0x08, 0x00, 0x37, 0x4b, 0x1c, 0x40, 0xfe, 0x28, 0xc0, 0xdc, 0xa4, 0x01, + 0x64, 0x0a, 0xc0, 0xb2, 0x9a, 0xe7, 0x37, 0x00, 0x8e, 0xe7, 0x52, 0x46, + 0x03, 0x23, 0x1a, 0x43, 0x92, 0x46, 0x03, 0x20, 0x71, 0xe7, 0x48, 0x46, + 0x01, 0xf0, 0xf2, 0xf9, 0x4a, 0x46, 0x43, 0x1f, 0x9a, 0x40, 0x2d, 0x1a, + 0x91, 0x46, 0x00, 0x20, 0x76, 0x3d, 0x66, 0xe7, 0x0c, 0x23, 0x9a, 0x46, + 0x09, 0x3b, 0xff, 0x25, 0x9b, 0x46, 0x4d, 0xe7, 0x20, 0x00, 0x01, 0xf0, + 0xe1, 0xf9, 0x76, 0x25, 0x43, 0x1f, 0x9c, 0x40, 0x00, 0x23, 0x6d, 0x42, + 0x9a, 0x46, 0x9b, 0x46, 0x2d, 0x1a, 0x41, 0xe7, 0x80, 0x24, 0x00, 0x27, + 0xff, 0x20, 0xe4, 0x03, 0x70, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, + 0x00, 0xdd, 0x69, 0xe7, 0x9e, 0x31, 0x20, 0x00, 0x8c, 0x40, 0xd8, 0x40, + 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x43, 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, + 0x23, 0x40, 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x34, 0x63, 0x01, 0x1a, 0xd5, + 0x01, 0x20, 0x00, 0x24, 0x58, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x42, + 0x09, 0xd0, 0x4b, 0x46, 0x03, 0x42, 0x06, 0xd1, 0x4c, 0x46, 0x04, 0x43, + 0x64, 0x02, 0x47, 0x46, 0xff, 0x20, 0x64, 0x0a, 0x4a, 0xe7, 0x80, 0x20, + 0xc0, 0x03, 0x04, 0x43, 0x64, 0x02, 0x37, 0x00, 0xff, 0x20, 0x64, 0x0a, + 0x42, 0xe7, 0x29, 0x00, 0x8e, 0xe7, 0xa4, 0x01, 0x00, 0x20, 0x64, 0x0a, + 0x3c, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x43, 0x64, 0x02, 0xff, 0x20, + 0x64, 0x0a, 0x35, 0xe7, 0xe4, 0x35, 0x00, 0x08, 0xff, 0xff, 0xff, 0xf7, + 0xf0, 0xb5, 0x46, 0x46, 0xd6, 0x46, 0x4f, 0x46, 0x43, 0x02, 0x5b, 0x0a, + 0xda, 0x00, 0x94, 0x46, 0x4a, 0x02, 0xc0, 0xb5, 0x44, 0x00, 0x56, 0x0a, + 0x05, 0x1c, 0xb0, 0x46, 0x24, 0x0e, 0x4e, 0x00, 0x92, 0x09, 0x1f, 0x00, + 0x20, 0x00, 0x92, 0x46, 0xed, 0x0f, 0x36, 0x0e, 0xc9, 0x0f, 0xff, 0x2e, + 0x00, 0xd1, 0x7f, 0xe0, 0x01, 0x22, 0x51, 0x40, 0x8d, 0x42, 0x51, 0xd0, + 0xa2, 0x1b, 0x91, 0x46, 0x00, 0x2a, 0x00, 0xdc, 0x7e, 0xe0, 0x00, 0x2e, + 0x00, 0xd1, 0x99, 0xe0, 0xff, 0x2c, 0x00, 0xd1, 0x8c, 0xe0, 0x80, 0x23, + 0x52, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x92, 0x46, 0x4a, 0x46, 0x01, 0x23, + 0x1b, 0x2a, 0x08, 0xdc, 0x53, 0x46, 0x20, 0x21, 0xd3, 0x40, 0x89, 0x1a, + 0x52, 0x46, 0x8a, 0x40, 0x51, 0x1e, 0x8a, 0x41, 0x13, 0x43, 0x62, 0x46, + 0xd3, 0x1a, 0x5a, 0x01, 0x00, 0xd4, 0xf3, 0xe0, 0x9b, 0x01, 0x9e, 0x09, + 0x30, 0x00, 0x01, 0xf0, 0x4f, 0xf9, 0x05, 0x38, 0x86, 0x40, 0x84, 0x42, + 0x00, 0xdd, 0xf7, 0xe0, 0x32, 0x00, 0x04, 0x1b, 0x20, 0x20, 0x01, 0x34, + 0xe2, 0x40, 0x04, 0x1b, 0xa6, 0x40, 0x33, 0x00, 0x5e, 0x1e, 0xb3, 0x41, + 0x00, 0x24, 0x13, 0x43, 0x5a, 0x07, 0x04, 0xd0, 0x0f, 0x22, 0x1a, 0x40, + 0x04, 0x2a, 0x00, 0xd0, 0x04, 0x33, 0x5a, 0x01, 0x00, 0xd4, 0xd6, 0xe0, + 0x62, 0x1c, 0xfe, 0x2c, 0x00, 0xd1, 0xda, 0xe0, 0x9b, 0x01, 0x5f, 0x0a, + 0xd0, 0xb2, 0xc0, 0x05, 0x38, 0x43, 0xed, 0x07, 0x28, 0x43, 0x1c, 0xbc, + 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0xa2, 0x1b, 0x91, 0x46, + 0x00, 0x2a, 0x63, 0xdd, 0x00, 0x2e, 0x00, 0xd1, 0x99, 0xe0, 0xff, 0x2c, + 0x3c, 0xd0, 0x80, 0x23, 0x52, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x92, 0x46, + 0x4a, 0x46, 0x01, 0x23, 0x1b, 0x2a, 0x08, 0xdc, 0x53, 0x46, 0x20, 0x21, + 0xd3, 0x40, 0x89, 0x1a, 0x52, 0x46, 0x8a, 0x40, 0x51, 0x1e, 0x8a, 0x41, + 0x13, 0x43, 0x63, 0x44, 0x5a, 0x01, 0x00, 0xd4, 0xa4, 0xe0, 0x01, 0x34, + 0xff, 0x2c, 0x00, 0xd1, 0xab, 0xe0, 0x01, 0x22, 0x97, 0x49, 0x1a, 0x40, + 0x5b, 0x08, 0x0b, 0x40, 0x13, 0x43, 0xbb, 0xe7, 0x00, 0x2a, 0x32, 0xd0, + 0x8d, 0x42, 0x35, 0xd0, 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, + 0x4a, 0x46, 0x00, 0x2a, 0x51, 0xd0, 0x30, 0x1b, 0x00, 0x2c, 0x00, 0xd0, + 0x9c, 0xe0, 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0xdf, 0xe0, 0x01, 0x38, + 0x00, 0x28, 0x00, 0xd1, 0xf7, 0xe0, 0xff, 0x2e, 0x00, 0xd0, 0x99, 0xe0, + 0x0d, 0x00, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x85, 0xe0, 0x80, 0x27, + 0xff, 0x03, 0x1f, 0x43, 0x7f, 0x02, 0xff, 0x20, 0x7f, 0x0a, 0xa6, 0xe7, + 0x52, 0x46, 0x00, 0x2a, 0x74, 0xd0, 0x01, 0x22, 0x52, 0x42, 0x90, 0x46, + 0xc1, 0x44, 0x4a, 0x46, 0x00, 0x2a, 0x00, 0xd1, 0xc8, 0xe0, 0xff, 0x2c, + 0x00, 0xd0, 0x5f, 0xe7, 0xe6, 0xe7, 0x01, 0x22, 0x51, 0x40, 0xa9, 0x42, + 0x00, 0xd0, 0x49, 0xe7, 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, + 0x4a, 0x46, 0x00, 0x2a, 0x43, 0xd0, 0x31, 0x1b, 0x00, 0x2c, 0x00, 0xd1, + 0x8c, 0xe0, 0xff, 0x2e, 0x00, 0xd1, 0x92, 0xe0, 0x80, 0x23, 0x62, 0x46, + 0xdb, 0x04, 0x1a, 0x43, 0x94, 0x46, 0x01, 0x23, 0x1b, 0x29, 0x09, 0xdc, + 0x20, 0x20, 0x63, 0x46, 0x62, 0x46, 0xcb, 0x40, 0x41, 0x1a, 0x8a, 0x40, + 0x11, 0x00, 0x48, 0x1e, 0x81, 0x41, 0x0b, 0x43, 0x34, 0x00, 0x53, 0x44, + 0x94, 0xe7, 0xfe, 0x22, 0x66, 0x1c, 0x32, 0x42, 0x64, 0xd1, 0x00, 0x2c, + 0x00, 0xd0, 0x82, 0xe0, 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0xab, 0xe0, + 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x60, 0xe7, 0x63, 0x46, 0x52, 0x46, + 0x9b, 0x1a, 0x5a, 0x01, 0x00, 0xd4, 0xaa, 0xe0, 0x63, 0x46, 0x52, 0x46, + 0x0d, 0x00, 0xd3, 0x1a, 0x44, 0xe7, 0x52, 0x46, 0x00, 0x2a, 0x23, 0xd0, + 0x01, 0x22, 0x52, 0x42, 0x90, 0x46, 0xc1, 0x44, 0x4a, 0x46, 0x00, 0x2a, + 0x75, 0xd0, 0xff, 0x2c, 0x00, 0xd0, 0x5f, 0xe7, 0x96, 0xe7, 0xfe, 0x26, + 0x01, 0x34, 0x26, 0x42, 0x53, 0xd1, 0x00, 0x28, 0x72, 0xd1, 0x63, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0x93, 0xe0, 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd1, + 0x39, 0xe7, 0x63, 0x44, 0x00, 0x24, 0x5a, 0x01, 0x02, 0xd5, 0x4a, 0x4a, + 0x01, 0x34, 0x13, 0x40, 0x5a, 0x07, 0x00, 0xd0, 0x20, 0xe7, 0xdb, 0x08, + 0xff, 0x2c, 0x00, 0xd1, 0x7a, 0xe7, 0x5b, 0x02, 0x5f, 0x0a, 0xe0, 0xb2, + 0x27, 0xe7, 0xff, 0x20, 0x00, 0x27, 0x24, 0xe7, 0x41, 0x4b, 0x24, 0x1a, + 0x33, 0x40, 0x0f, 0xe7, 0xff, 0x2e, 0x00, 0xd1, 0x6a, 0xe7, 0x80, 0x23, + 0x62, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x94, 0x46, 0x01, 0x23, 0x1b, 0x28, + 0x09, 0xdc, 0x20, 0x24, 0x63, 0x46, 0x62, 0x46, 0xc3, 0x40, 0x20, 0x1a, + 0x82, 0x40, 0x10, 0x00, 0x44, 0x1e, 0xa0, 0x41, 0x03, 0x43, 0x52, 0x46, + 0x0d, 0x00, 0x34, 0x00, 0xd3, 0x1a, 0xdc, 0xe6, 0x63, 0x46, 0x52, 0x46, + 0x9e, 0x1a, 0x73, 0x01, 0x17, 0xd4, 0x00, 0x2e, 0x00, 0xd0, 0xd9, 0xe6, + 0x00, 0x25, 0x00, 0x20, 0x00, 0x27, 0xfa, 0xe6, 0x63, 0x46, 0x00, 0x2b, + 0x44, 0xd0, 0x01, 0x39, 0x00, 0x29, 0x4c, 0xd0, 0xff, 0x2e, 0x00, 0xd0, + 0x71, 0xe7, 0x43, 0x46, 0x3e, 0xe7, 0xff, 0x2c, 0xc5, 0xd0, 0x52, 0x46, + 0x62, 0x44, 0x53, 0x08, 0xb6, 0xe7, 0x63, 0x46, 0x0d, 0x00, 0xd6, 0x1a, + 0xc0, 0xe6, 0x62, 0x46, 0x00, 0x2a, 0x16, 0xd1, 0x53, 0x46, 0x00, 0x2b, + 0x00, 0xd0, 0x2b, 0xe7, 0x80, 0x27, 0x00, 0x25, 0xff, 0x20, 0xff, 0x03, + 0xd9, 0xe6, 0x0d, 0x00, 0x43, 0x46, 0x34, 0x00, 0xa6, 0xe7, 0x53, 0x46, + 0x63, 0x44, 0xf7, 0xe6, 0x63, 0x46, 0x52, 0x46, 0x9b, 0x1a, 0xa4, 0xe6, + 0x62, 0x46, 0x00, 0x2a, 0xd9, 0xd0, 0x52, 0x46, 0x00, 0x2a, 0x00, 0xd1, + 0x16, 0xe7, 0x80, 0x22, 0xd2, 0x03, 0x13, 0x42, 0x00, 0xd1, 0x11, 0xe7, + 0x40, 0x46, 0x10, 0x42, 0x00, 0xd0, 0x0d, 0xe7, 0x0a, 0xe7, 0x52, 0x46, + 0x0d, 0x00, 0x34, 0x00, 0xd3, 0x1a, 0x8e, 0xe6, 0x53, 0x46, 0x00, 0x2b, + 0x08, 0xd0, 0x0d, 0x00, 0x47, 0x46, 0xb2, 0xe6, 0x43, 0x46, 0x34, 0x00, + 0x80, 0xe7, 0x00, 0x2b, 0x00, 0xd0, 0x79, 0xe7, 0x00, 0x25, 0x00, 0x27, + 0xa9, 0xe6, 0x47, 0x46, 0xa7, 0xe6, 0x53, 0x46, 0x34, 0x00, 0x63, 0x44, + 0xc8, 0xe6, 0xc0, 0x46, 0xff, 0xff, 0xff, 0x7d, 0xff, 0xff, 0xff, 0xfb, + 0x41, 0x02, 0x42, 0x00, 0xc3, 0x0f, 0x49, 0x0a, 0x00, 0x20, 0x12, 0x0e, + 0x7e, 0x2a, 0x03, 0xd9, 0x9d, 0x2a, 0x02, 0xd9, 0x09, 0x4a, 0x98, 0x18, + 0x70, 0x47, 0x80, 0x20, 0x00, 0x04, 0x01, 0x43, 0x95, 0x2a, 0x07, 0xdc, + 0x96, 0x20, 0x82, 0x1a, 0xd1, 0x40, 0x48, 0x42, 0x00, 0x2b, 0xf3, 0xd1, + 0x08, 0x00, 0xf1, 0xe7, 0x96, 0x3a, 0x91, 0x40, 0xf7, 0xe7, 0xc0, 0x46, + 0xff, 0xff, 0xff, 0x7f, 0x70, 0xb5, 0x05, 0x1e, 0x0e, 0xd0, 0x00, 0xf0, + 0xa7, 0xff, 0x9e, 0x23, 0x04, 0x00, 0x1b, 0x1a, 0x96, 0x2b, 0x0c, 0xdc, + 0x08, 0x28, 0x01, 0xdd, 0x08, 0x3c, 0xa5, 0x40, 0x6d, 0x02, 0x6d, 0x0a, + 0xd8, 0xb2, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x25, 0xc0, 0x05, 0x28, 0x43, + 0x70, 0xbd, 0x99, 0x2b, 0x09, 0xdd, 0x02, 0x00, 0x29, 0x00, 0x1b, 0x32, + 0x91, 0x40, 0x4a, 0x1e, 0x91, 0x41, 0x05, 0x22, 0x12, 0x1a, 0xd5, 0x40, + 0x0d, 0x43, 0x05, 0x2c, 0x01, 0xdd, 0x62, 0x1f, 0x95, 0x40, 0x29, 0x00, + 0x08, 0x4e, 0x31, 0x40, 0x6a, 0x07, 0x09, 0xd0, 0x0f, 0x20, 0x28, 0x40, + 0x04, 0x28, 0x05, 0xd0, 0x04, 0x31, 0x4a, 0x01, 0x02, 0xd5, 0x9f, 0x23, + 0x31, 0x40, 0x1b, 0x1b, 0x89, 0x01, 0x4d, 0x0a, 0xd8, 0xb2, 0xd9, 0xe7, + 0xff, 0xff, 0xff, 0xfb, 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, + 0xde, 0x46, 0xe0, 0xb5, 0x81, 0x46, 0x05, 0x00, 0x0c, 0x03, 0x48, 0x00, + 0x92, 0x46, 0x1f, 0x00, 0x85, 0xb0, 0x24, 0x0b, 0x40, 0x0d, 0xce, 0x0f, + 0x00, 0x28, 0x59, 0xd0, 0x87, 0x4b, 0x98, 0x42, 0x00, 0xd1, 0x98, 0xe0, + 0x6b, 0x0f, 0xe4, 0x00, 0x1c, 0x43, 0x80, 0x23, 0x1b, 0x04, 0x23, 0x43, + 0x98, 0x46, 0x83, 0x4b, 0xed, 0x00, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, + 0x83, 0x44, 0x00, 0x93, 0x3c, 0x03, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, + 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x67, 0xd0, 0x7a, 0x4a, 0x93, 0x42, + 0x18, 0xd0, 0x7a, 0x49, 0x42, 0x0f, 0x8c, 0x46, 0xe4, 0x00, 0x59, 0x46, + 0x14, 0x43, 0x80, 0x22, 0x63, 0x44, 0x12, 0x04, 0xcb, 0x1a, 0x14, 0x43, + 0x9b, 0x46, 0xc2, 0x00, 0x00, 0x20, 0x33, 0x00, 0x7b, 0x40, 0x9a, 0x46, + 0x4b, 0x46, 0x0f, 0x2b, 0x00, 0xd9, 0xef, 0xe0, 0x70, 0x49, 0x9b, 0x00, + 0xcb, 0x58, 0x9f, 0x46, 0x6f, 0x4b, 0x52, 0x46, 0x9c, 0x46, 0x22, 0x43, + 0xe3, 0x44, 0x00, 0x2a, 0x00, 0xd0, 0x95, 0xe0, 0x49, 0x46, 0x02, 0x23, + 0x19, 0x43, 0x89, 0x46, 0x00, 0x24, 0x02, 0x20, 0xe5, 0xe7, 0x00, 0x23, + 0x00, 0x24, 0x00, 0x25, 0x52, 0x46, 0x1b, 0x05, 0x23, 0x43, 0xd2, 0x07, + 0x13, 0x43, 0x28, 0x00, 0x19, 0x00, 0x05, 0xb0, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x24, 0x00, 0x25, + 0x5b, 0x4b, 0xed, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x00, 0xd1, + 0x89, 0xe0, 0x00, 0x2c, 0x00, 0xd1, 0xe0, 0xe1, 0x20, 0x00, 0x00, 0xf0, + 0xf9, 0xfe, 0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x5b, 0x1a, + 0x49, 0x46, 0x10, 0x00, 0xd9, 0x40, 0x08, 0x38, 0x84, 0x40, 0x0b, 0x00, + 0x4d, 0x46, 0x23, 0x43, 0x98, 0x46, 0x85, 0x40, 0x51, 0x48, 0x3c, 0x03, + 0x83, 0x1a, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, 0x00, 0x93, 0x7b, 0x00, + 0x50, 0x46, 0x24, 0x0b, 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x97, 0xd1, + 0x52, 0x46, 0x22, 0x43, 0x55, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0xca, 0xe1, + 0x20, 0x00, 0x00, 0xf0, 0xd3, 0xfe, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, + 0x01, 0x00, 0x9b, 0x1a, 0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8c, 0x40, + 0x14, 0x43, 0x52, 0x46, 0x8a, 0x40, 0x41, 0x4b, 0x58, 0x44, 0x9b, 0x46, + 0x83, 0x44, 0x00, 0x20, 0x8d, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, + 0x40, 0xd1, 0x08, 0x23, 0x99, 0x46, 0x06, 0x3b, 0x00, 0x25, 0x83, 0x46, + 0x00, 0x93, 0x69, 0xe7, 0xb2, 0x46, 0x00, 0x9b, 0x02, 0x2b, 0xa9, 0xd0, + 0x03, 0x2b, 0x00, 0xd1, 0x11, 0xe2, 0x01, 0x2b, 0x93, 0xd0, 0x35, 0x4a, + 0x5a, 0x44, 0x00, 0x2a, 0x00, 0xdc, 0x3c, 0xe1, 0x6b, 0x07, 0x00, 0xd0, + 0xa7, 0xe1, 0xed, 0x08, 0x43, 0x46, 0xdb, 0x01, 0x06, 0xd5, 0x42, 0x46, + 0x2f, 0x4b, 0x1a, 0x40, 0x90, 0x46, 0x80, 0x22, 0xd2, 0x00, 0x5a, 0x44, + 0x2d, 0x4b, 0x9a, 0x42, 0x8e, 0xdc, 0x43, 0x46, 0x52, 0x05, 0x58, 0x07, + 0x5c, 0x02, 0x05, 0x43, 0x24, 0x0b, 0x53, 0x0d, 0x78, 0xe7, 0xba, 0x46, + 0xa0, 0x46, 0x15, 0x00, 0x00, 0x90, 0xd4, 0xe7, 0x4a, 0x46, 0x03, 0x23, + 0x1a, 0x43, 0x91, 0x46, 0x03, 0x20, 0x52, 0x46, 0x4f, 0xe7, 0x49, 0x46, + 0x01, 0x23, 0x19, 0x43, 0x89, 0x46, 0x00, 0x24, 0x01, 0x20, 0x48, 0xe7, + 0x0c, 0x23, 0x99, 0x46, 0x09, 0x3b, 0xa0, 0x46, 0x83, 0x46, 0x00, 0x93, + 0x28, 0xe7, 0x04, 0x23, 0x99, 0x46, 0x00, 0x23, 0x9b, 0x46, 0x01, 0x33, + 0x00, 0x25, 0x00, 0x93, 0x20, 0xe7, 0x00, 0x23, 0x80, 0x24, 0x9a, 0x46, + 0x00, 0x25, 0x0d, 0x4b, 0x24, 0x03, 0x4f, 0xe7, 0x80, 0x23, 0x41, 0x46, + 0x1b, 0x03, 0x19, 0x42, 0x08, 0xd0, 0x1c, 0x42, 0x06, 0xd1, 0x1c, 0x43, + 0x24, 0x03, 0xba, 0x46, 0x15, 0x00, 0x06, 0x4b, 0x24, 0x0b, 0x41, 0xe7, + 0x80, 0x24, 0x43, 0x46, 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0xb2, 0x46, + 0x01, 0x4b, 0x24, 0x0b, 0x38, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0x01, 0xfc, 0xff, 0xff, 0x24, 0x36, 0x00, 0x08, 0x01, 0xf8, 0xff, 0xff, + 0x0d, 0xfc, 0xff, 0xff, 0xf3, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xfe, 0xfe, 0x07, 0x00, 0x00, 0x44, 0x45, 0x00, 0xd2, + 0x16, 0xe1, 0x00, 0xd1, 0x11, 0xe1, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, + 0x2e, 0x00, 0x40, 0x46, 0x00, 0x25, 0xe3, 0x44, 0x23, 0x02, 0x14, 0x0e, + 0x1c, 0x43, 0x1b, 0x0c, 0x99, 0x46, 0x23, 0x04, 0x1f, 0x0c, 0x12, 0x02, + 0x49, 0x46, 0x00, 0x92, 0x01, 0x97, 0xff, 0xf7, 0x2d, 0xfa, 0x02, 0x00, + 0x7a, 0x43, 0x0b, 0x04, 0x31, 0x0c, 0x80, 0x46, 0x19, 0x43, 0x8a, 0x42, + 0x0b, 0xd9, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x09, 0x19, 0xe0, 0x44, + 0x8c, 0x42, 0x04, 0xd8, 0x8a, 0x42, 0x02, 0xd9, 0x83, 0x1e, 0x98, 0x46, + 0x09, 0x19, 0x88, 0x1a, 0x49, 0x46, 0xff, 0xf7, 0x15, 0xfa, 0x09, 0x04, + 0x8c, 0x46, 0x31, 0x04, 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, + 0x03, 0x00, 0x31, 0x43, 0x8a, 0x42, 0x04, 0xd9, 0x09, 0x19, 0x01, 0x3b, + 0x8c, 0x42, 0x00, 0xd8, 0x11, 0xe1, 0x89, 0x1a, 0x42, 0x46, 0x00, 0x9e, + 0x12, 0x04, 0x1a, 0x43, 0x33, 0x0c, 0x1f, 0x00, 0x10, 0x0c, 0x90, 0x46, + 0x02, 0x93, 0x13, 0x04, 0x32, 0x04, 0x16, 0x0c, 0x32, 0x00, 0x1b, 0x0c, + 0x5a, 0x43, 0x03, 0x96, 0x7b, 0x43, 0x46, 0x43, 0x78, 0x43, 0x17, 0x0c, + 0xbc, 0x46, 0x9b, 0x19, 0x63, 0x44, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, + 0x76, 0x02, 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x30, 0x18, 0x16, 0x04, + 0x1b, 0x04, 0x36, 0x0c, 0x9e, 0x19, 0x81, 0x42, 0x00, 0xd2, 0x9c, 0xe0, + 0x00, 0xd1, 0x97, 0xe0, 0xae, 0x1b, 0x09, 0x1a, 0xb5, 0x42, 0x80, 0x41, + 0x40, 0x42, 0x08, 0x1a, 0x84, 0x42, 0x00, 0xd1, 0x11, 0xe1, 0x49, 0x46, + 0xff, 0xf7, 0xd0, 0xf9, 0x01, 0x9a, 0x0b, 0x04, 0x42, 0x43, 0x31, 0x0c, + 0x05, 0x00, 0x19, 0x43, 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3d, + 0x8c, 0x42, 0x03, 0xd8, 0x8a, 0x42, 0x01, 0xd9, 0x85, 0x1e, 0x09, 0x19, + 0x88, 0x1a, 0x49, 0x46, 0xff, 0xf7, 0xbc, 0xf9, 0x09, 0x04, 0x8c, 0x46, + 0x31, 0x04, 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, + 0x31, 0x43, 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, + 0x03, 0xd8, 0x8a, 0x42, 0x01, 0xd9, 0x83, 0x1e, 0x09, 0x19, 0x03, 0x9e, + 0x89, 0x1a, 0x32, 0x00, 0x2d, 0x04, 0x1d, 0x43, 0x02, 0x9f, 0x2b, 0x04, + 0x1b, 0x0c, 0x5a, 0x43, 0x7b, 0x43, 0x9c, 0x46, 0x28, 0x0c, 0x46, 0x43, + 0x13, 0x0c, 0xb4, 0x44, 0x63, 0x44, 0x78, 0x43, 0x9e, 0x42, 0x03, 0xd9, + 0x80, 0x26, 0x76, 0x02, 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x12, 0x04, + 0x1b, 0x04, 0x12, 0x0c, 0x30, 0x18, 0x9b, 0x18, 0x81, 0x42, 0x06, 0xd3, + 0x02, 0xd0, 0x01, 0x23, 0x1d, 0x43, 0xce, 0xe6, 0x00, 0x2b, 0x00, 0xd1, + 0xcb, 0xe6, 0x61, 0x18, 0x6e, 0x1e, 0xa1, 0x42, 0x00, 0xd2, 0xa4, 0xe0, + 0x81, 0x42, 0x00, 0xd2, 0xc9, 0xe0, 0x00, 0xd1, 0xd9, 0xe0, 0x35, 0x00, + 0xed, 0xe7, 0x01, 0x25, 0x6d, 0x42, 0x01, 0x21, 0x89, 0x1a, 0x38, 0x29, + 0x00, 0xdd, 0x4c, 0xe6, 0x1f, 0x29, 0x00, 0xdc, 0x7f, 0xe0, 0x1f, 0x23, + 0x5b, 0x42, 0x9a, 0x1a, 0x43, 0x46, 0xd3, 0x40, 0x20, 0x29, 0x04, 0xd0, + 0x44, 0x46, 0x65, 0x4a, 0x5a, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, + 0x95, 0x41, 0x07, 0x22, 0x2b, 0x43, 0x15, 0x00, 0x00, 0x24, 0x1d, 0x40, + 0x1a, 0x42, 0x00, 0xd1, 0xa1, 0xe0, 0x0f, 0x22, 0x00, 0x24, 0x1a, 0x40, + 0x04, 0x2a, 0x00, 0xd1, 0x98, 0xe0, 0x1a, 0x1d, 0x9a, 0x42, 0x9b, 0x41, + 0x5b, 0x42, 0xe4, 0x18, 0x13, 0x00, 0x22, 0x02, 0x00, 0xd4, 0x8f, 0xe0, + 0x01, 0x23, 0x00, 0x24, 0x00, 0x25, 0x23, 0xe6, 0xb5, 0x42, 0x00, 0xd3, + 0x64, 0xe7, 0x43, 0x46, 0x5a, 0x1e, 0x00, 0x9b, 0x9c, 0x46, 0x65, 0x44, + 0x1f, 0x00, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, + 0x8c, 0x42, 0x3a, 0xd2, 0x88, 0x42, 0x63, 0xd8, 0x60, 0xd0, 0x90, 0x46, + 0x52, 0xe7, 0xaa, 0x42, 0x00, 0xd9, 0xea, 0xe6, 0x43, 0x46, 0xde, 0x07, + 0x58, 0x08, 0x6b, 0x08, 0x1e, 0x43, 0xed, 0x07, 0xea, 0xe6, 0x48, 0x46, + 0x00, 0xf0, 0x18, 0xfd, 0x01, 0x00, 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, + 0x1c, 0x29, 0x00, 0xdc, 0x1a, 0xe6, 0x4b, 0x46, 0x08, 0x38, 0x83, 0x40, + 0x00, 0x25, 0x98, 0x46, 0x20, 0xe6, 0x00, 0xf0, 0x09, 0xfd, 0x03, 0x00, + 0x1a, 0x00, 0x15, 0x32, 0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x30, 0xe6, + 0x54, 0x46, 0x08, 0x3b, 0x00, 0x22, 0x9c, 0x40, 0x35, 0xe6, 0x0f, 0x23, + 0x2b, 0x40, 0x04, 0x2b, 0x00, 0xd1, 0x52, 0xe6, 0x05, 0x23, 0x5b, 0x42, + 0xab, 0x42, 0x9b, 0x41, 0x04, 0x35, 0x5b, 0x42, 0xed, 0x08, 0x98, 0x44, + 0x4a, 0xe6, 0x8c, 0x42, 0xc5, 0xd1, 0xaf, 0x42, 0xc0, 0xd9, 0x90, 0x46, + 0x16, 0xe7, 0x8a, 0x42, 0x00, 0xd8, 0xea, 0xe6, 0x83, 0x1e, 0x09, 0x19, + 0xe7, 0xe6, 0x2a, 0x4a, 0x28, 0x00, 0x5a, 0x44, 0x43, 0x46, 0x95, 0x40, + 0x93, 0x40, 0xc8, 0x40, 0x6a, 0x1e, 0x95, 0x41, 0x44, 0x46, 0x03, 0x43, + 0x2b, 0x43, 0xcc, 0x40, 0x5a, 0x07, 0x92, 0xd0, 0x0f, 0x22, 0x1a, 0x40, + 0x04, 0x2a, 0x88, 0xd1, 0x8d, 0xe7, 0x35, 0x00, 0x81, 0x42, 0x00, 0xd0, + 0x4b, 0xe7, 0x00, 0x9a, 0x93, 0x42, 0x00, 0xd0, 0x47, 0xe7, 0x18, 0xe6, + 0xae, 0x42, 0x9c, 0xd9, 0x02, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x00, 0x9b, + 0xe0, 0x44, 0x9c, 0x46, 0x65, 0x44, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, + 0x1b, 0x19, 0xc9, 0x18, 0xe4, 0xe6, 0x15, 0x4a, 0x5a, 0x44, 0x00, 0x2a, + 0x00, 0xdc, 0x44, 0xe7, 0x01, 0x23, 0x00, 0x25, 0x98, 0x44, 0x09, 0xe6, + 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b, 0xdb, 0x08, 0x1d, 0x43, 0x00, 0x23, + 0x90, 0xe5, 0x00, 0x9e, 0x02, 0x3d, 0x72, 0x00, 0xb2, 0x42, 0xbf, 0x41, + 0x7f, 0x42, 0x3c, 0x19, 0x09, 0x19, 0x00, 0x92, 0xce, 0xe7, 0x80, 0x24, + 0x43, 0x46, 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0x06, 0x4b, 0x24, 0x0b, + 0x7e, 0xe5, 0x00, 0x9a, 0x9a, 0x42, 0xea, 0xd3, 0x35, 0x00, 0xc4, 0xe7, + 0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, + 0xff, 0x07, 0x00, 0x00, 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, + 0xde, 0x46, 0x04, 0x00, 0xe0, 0xb5, 0x1f, 0x00, 0x10, 0x00, 0x0b, 0x03, + 0x62, 0x0f, 0x4e, 0x00, 0xcd, 0x0f, 0x5b, 0x0a, 0x39, 0x03, 0x13, 0x43, + 0x49, 0x0a, 0xe2, 0x00, 0x44, 0x0f, 0x21, 0x43, 0xc2, 0x4c, 0x91, 0x46, + 0x92, 0x46, 0xc0, 0x00, 0x7a, 0x00, 0x80, 0x46, 0x76, 0x0d, 0x52, 0x0d, + 0xff, 0x0f, 0xa2, 0x42, 0x00, 0xd1, 0xb4, 0xe0, 0x01, 0x24, 0x67, 0x40, + 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd1, 0x88, 0xe0, 0xb4, 0x1a, 0xa4, 0x46, + 0x00, 0x2c, 0x00, 0xdc, 0xb2, 0xe0, 0x00, 0x2a, 0x00, 0xd1, 0xc5, 0xe0, + 0xb5, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x8b, 0xe2, 0x80, 0x22, 0x12, 0x04, + 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, 0xa1, 0xe1, 0x1f, 0x2a, + 0x00, 0xdd, 0x16, 0xe2, 0x20, 0x27, 0x0c, 0x00, 0xbf, 0x1a, 0xbc, 0x40, + 0x02, 0x00, 0xa0, 0x46, 0x64, 0x46, 0xb8, 0x40, 0xe2, 0x40, 0x44, 0x46, + 0x14, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x60, 0x46, 0xc1, 0x40, + 0x22, 0x43, 0x5b, 0x1a, 0x49, 0x46, 0x8c, 0x1a, 0xa1, 0x45, 0x92, 0x41, + 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, + 0x17, 0xe1, 0x43, 0x46, 0x5b, 0x02, 0x5b, 0x0a, 0x98, 0x46, 0x43, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0x6c, 0xe1, 0x40, 0x46, 0x00, 0xf0, 0x24, 0xfc, + 0x02, 0x00, 0x08, 0x3a, 0x20, 0x21, 0x20, 0x00, 0x43, 0x46, 0x89, 0x1a, + 0x93, 0x40, 0xc8, 0x40, 0x94, 0x40, 0x03, 0x43, 0x96, 0x42, 0x00, 0xdd, + 0x57, 0xe1, 0x96, 0x1b, 0x71, 0x1c, 0x1f, 0x29, 0x00, 0xdd, 0xcb, 0xe1, + 0x20, 0x22, 0x18, 0x00, 0x26, 0x00, 0x52, 0x1a, 0x94, 0x40, 0x90, 0x40, + 0xce, 0x40, 0xcb, 0x40, 0x62, 0x1e, 0x94, 0x41, 0x30, 0x43, 0x98, 0x46, + 0x00, 0x26, 0x04, 0x43, 0x63, 0x07, 0x09, 0xd0, 0x0f, 0x23, 0x23, 0x40, + 0x04, 0x2b, 0x05, 0xd0, 0x23, 0x1d, 0xa3, 0x42, 0xa4, 0x41, 0x64, 0x42, + 0xa0, 0x44, 0x1c, 0x00, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0xdf, 0xe0, + 0x82, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd1, 0xfb, 0xe0, 0x42, 0x46, + 0x80, 0x4b, 0xe4, 0x08, 0x1a, 0x40, 0x13, 0x00, 0x71, 0x05, 0x52, 0x07, + 0x5b, 0x02, 0x22, 0x43, 0x1b, 0x0b, 0x49, 0x0d, 0x09, 0x05, 0xed, 0x07, + 0x19, 0x43, 0x29, 0x43, 0x10, 0x00, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, + 0xa2, 0x46, 0xab, 0x46, 0xf8, 0xbd, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, + 0x58, 0xdd, 0x00, 0x2a, 0x00, 0xd1, 0x9e, 0xe0, 0x71, 0x4a, 0x96, 0x42, + 0x00, 0xd1, 0x3b, 0xe1, 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, + 0x38, 0x2a, 0x00, 0xdd, 0xc1, 0xe0, 0x1f, 0x2a, 0x00, 0xdc, 0xbb, 0xe1, + 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, + 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, + 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x14, 0x43, 0xb1, 0xe0, 0x0c, 0x00, + 0x04, 0x43, 0x2a, 0xd0, 0xbb, 0x46, 0xbd, 0x42, 0x2d, 0xd0, 0x61, 0x4c, + 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, 0x5c, 0xd0, 0x94, 0x1b, + 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd0, 0x15, 0xe1, 0x4d, 0x46, 0x1d, 0x43, + 0x00, 0xd1, 0xc3, 0xe1, 0x65, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0x0c, 0xe2, + 0x55, 0x4e, 0xb4, 0x42, 0x00, 0xd1, 0xf8, 0xe1, 0xac, 0x46, 0x0e, 0xe1, + 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe1, 0x22, 0x00, 0x01, 0x3a, + 0x01, 0x2c, 0x00, 0xd1, 0xc6, 0xe1, 0x4e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, + 0xf4, 0xe0, 0x94, 0x46, 0x31, 0xe7, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, + 0xbd, 0x42, 0x00, 0xd0, 0x1c, 0xe7, 0x4a, 0x4c, 0xa4, 0x46, 0xb4, 0x44, + 0x64, 0x46, 0x00, 0x2c, 0x00, 0xd1, 0xcf, 0xe0, 0x94, 0x1b, 0xa4, 0x46, + 0x00, 0x2e, 0x00, 0xd1, 0x5c, 0xe1, 0x42, 0x4e, 0xb2, 0x42, 0x00, 0xd1, + 0xec, 0xe1, 0x80, 0x26, 0x36, 0x04, 0x33, 0x43, 0x64, 0x46, 0x38, 0x2c, + 0x00, 0xdd, 0xb3, 0xe1, 0x1f, 0x2c, 0x00, 0xdd, 0x38, 0xe2, 0x20, 0x26, + 0x36, 0x1b, 0x1c, 0x00, 0xb4, 0x40, 0x4f, 0x46, 0xa0, 0x46, 0x64, 0x46, + 0xe7, 0x40, 0x44, 0x46, 0x3c, 0x43, 0x4f, 0x46, 0xb7, 0x40, 0x3e, 0x00, + 0x77, 0x1e, 0xbe, 0x41, 0x34, 0x43, 0x66, 0x46, 0xf3, 0x40, 0xc9, 0x18, + 0x24, 0x18, 0x84, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x98, 0x46, 0x16, 0x00, + 0x88, 0x44, 0x4e, 0xe0, 0x30, 0x4a, 0x74, 0x1c, 0x14, 0x42, 0x00, 0xd0, + 0xd6, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, 0x00, 0xd0, 0x5b, 0xe1, + 0x00, 0x2a, 0x00, 0xd1, 0xa5, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, + 0xbb, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x27, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x74, 0xe1, 0x22, 0x00, + 0x01, 0x3a, 0x01, 0x2c, 0x05, 0xd0, 0x1e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, + 0x94, 0xe0, 0x94, 0x46, 0x59, 0xe7, 0x48, 0x44, 0x48, 0x45, 0x92, 0x41, + 0x5b, 0x18, 0x98, 0x46, 0x04, 0x00, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, + 0x02, 0x26, 0x1b, 0x02, 0x00, 0xd5, 0xc4, 0xe0, 0x01, 0x3e, 0x63, 0x07, + 0x00, 0xd0, 0x11, 0xe7, 0x43, 0x46, 0xb4, 0x46, 0x59, 0x07, 0xe2, 0x08, + 0x0a, 0x43, 0xdb, 0x08, 0x0f, 0x49, 0x8c, 0x45, 0x40, 0xd0, 0x61, 0x46, + 0x1b, 0x03, 0x49, 0x05, 0x1b, 0x0b, 0x49, 0x0d, 0x20, 0xe7, 0x01, 0x43, + 0x0c, 0x00, 0x61, 0x1e, 0x8c, 0x41, 0x4c, 0x44, 0x4c, 0x45, 0x92, 0x41, + 0x52, 0x42, 0x90, 0x46, 0x98, 0x44, 0x43, 0x46, 0x1b, 0x02, 0xe0, 0xd5, + 0x04, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd0, 0x9f, 0xe0, 0x31, 0x00, + 0x00, 0x23, 0x00, 0x22, 0x0a, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xfe, 0x07, 0x00, 0x00, + 0x00, 0x2a, 0x00, 0xd1, 0x60, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x4d, 0xd0, + 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x22, 0x43, 0x80, 0x24, 0xdb, 0x08, + 0x24, 0x03, 0x23, 0x42, 0x07, 0xd0, 0xce, 0x08, 0x26, 0x42, 0x04, 0xd1, + 0x5d, 0x46, 0x33, 0x00, 0xc2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x51, 0x0f, + 0xd2, 0x00, 0xd2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x11, 0x00, 0x19, 0x43, + 0x00, 0xd1, 0xc8, 0xe1, 0x80, 0x21, 0x09, 0x03, 0x0b, 0x43, 0x1b, 0x03, + 0xd5, 0x49, 0x1b, 0x0b, 0xda, 0xe6, 0xd5, 0x49, 0xb6, 0x1a, 0x0b, 0x40, + 0x98, 0x46, 0xb5, 0xe6, 0x20, 0x00, 0x00, 0xf0, 0xb7, 0xfa, 0x02, 0x00, + 0x18, 0x32, 0x1f, 0x2a, 0x00, 0xdc, 0x8f, 0xe6, 0x23, 0x00, 0x08, 0x38, + 0x83, 0x40, 0x00, 0x24, 0x92, 0xe6, 0x08, 0x43, 0x02, 0x00, 0x50, 0x1e, + 0x82, 0x41, 0x6d, 0xe6, 0xca, 0x4c, 0x72, 0x1c, 0x22, 0x42, 0x00, 0xd0, + 0xad, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, 0xb8, 0xd1, 0x00, 0x2a, + 0x00, 0xd1, 0x58, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0x59, 0xe1, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x86, 0xe7, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xc1, 0xe7, + 0xba, 0x4d, 0xaa, 0x42, 0x00, 0xd1, 0x1e, 0xe1, 0x80, 0x25, 0x2d, 0x04, + 0x2b, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x5d, 0xdc, 0x1f, 0x2c, 0x00, 0xdd, + 0xd0, 0xe0, 0x20, 0x25, 0x67, 0x46, 0x2d, 0x1b, 0x4e, 0x46, 0x1c, 0x00, + 0xfe, 0x40, 0xac, 0x40, 0x34, 0x43, 0x4e, 0x46, 0xae, 0x40, 0x35, 0x00, + 0xfb, 0x40, 0x6e, 0x1e, 0xb5, 0x41, 0xc9, 0x1a, 0x2c, 0x43, 0x4e, 0xe0, + 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, + 0x5f, 0x1a, 0x3a, 0x00, 0x47, 0x46, 0xd2, 0x1b, 0x90, 0x46, 0x12, 0x02, + 0x00, 0xd5, 0x8b, 0xe0, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd0, 0x30, 0xe6, + 0x00, 0x23, 0x00, 0x25, 0x4d, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, + 0x0a, 0x43, 0xdb, 0x08, 0x44, 0xe7, 0x42, 0x46, 0x9e, 0x4b, 0x61, 0x08, + 0x1a, 0x40, 0x13, 0x00, 0x01, 0x22, 0x14, 0x40, 0x0c, 0x43, 0xda, 0x07, + 0x5b, 0x08, 0x98, 0x46, 0x14, 0x43, 0x41, 0xe6, 0x1a, 0x00, 0x1f, 0x3e, + 0xf2, 0x40, 0x16, 0x00, 0x20, 0x29, 0x03, 0xd0, 0x40, 0x22, 0x51, 0x1a, + 0x8b, 0x40, 0x1c, 0x43, 0x62, 0x1e, 0x94, 0x41, 0x00, 0x23, 0x34, 0x43, + 0x98, 0x46, 0x00, 0x26, 0x1d, 0xe7, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, + 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, + 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, + 0x22, 0x43, 0xe9, 0xe5, 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, + 0x9c, 0x41, 0x04, 0x1b, 0xa0, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xcb, 0x1a, + 0x98, 0x46, 0x5d, 0x46, 0x16, 0x00, 0xe2, 0xe5, 0x4e, 0x46, 0x1e, 0x43, + 0x00, 0xd1, 0xae, 0xe0, 0x66, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0xfd, 0xe0, + 0x7b, 0x4f, 0xbc, 0x42, 0x00, 0xd1, 0x07, 0xe1, 0xb4, 0x46, 0x9b, 0xe6, + 0x64, 0x46, 0x20, 0x22, 0x12, 0x1b, 0x0c, 0x00, 0x94, 0x40, 0x07, 0x00, + 0x90, 0x40, 0xa0, 0x46, 0x64, 0x46, 0x42, 0x1e, 0x90, 0x41, 0x62, 0x46, + 0xe7, 0x40, 0x44, 0x46, 0xd1, 0x40, 0x3c, 0x43, 0x04, 0x43, 0x5b, 0x18, + 0xf3, 0xe6, 0x6f, 0x4c, 0xa2, 0x42, 0x00, 0xd1, 0xd5, 0xe0, 0x48, 0x44, + 0x5b, 0x18, 0x48, 0x45, 0x89, 0x41, 0x49, 0x42, 0x5b, 0x18, 0xdc, 0x07, + 0x40, 0x08, 0x5b, 0x08, 0x98, 0x46, 0x16, 0x00, 0x04, 0x43, 0xcc, 0xe6, + 0x00, 0x2a, 0x00, 0xd0, 0x82, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x40, 0xd1, + 0x80, 0x23, 0x00, 0x25, 0x1b, 0x03, 0x13, 0xe7, 0x4b, 0x07, 0xc2, 0x08, + 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xc5, 0xe6, 0x4a, 0x46, 0x84, 0x1a, + 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, + 0x5d, 0x46, 0x9e, 0xe5, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0xdb, 0x08, 0xf9, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, + 0x5b, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x01, 0x26, 0x86, 0xe5, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xa5, 0xe6, + 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x5b, 0xe6, + 0x65, 0x46, 0x1e, 0x00, 0x20, 0x3d, 0xee, 0x40, 0x20, 0x2c, 0x05, 0xd0, + 0x40, 0x25, 0x2d, 0x1b, 0xab, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, + 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x34, 0x43, 0x7d, 0xe7, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xcc, 0xe6, 0x0a, 0x00, + 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0x81, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, + 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x01, 0x26, 0x4e, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, + 0xb2, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5f, 0x1a, + 0x52, 0x42, 0xba, 0x1a, 0x90, 0x46, 0x12, 0x02, 0x6b, 0xd5, 0x4a, 0x46, + 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, + 0x98, 0x46, 0x5d, 0x46, 0x64, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0x98, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0xcb, 0x08, 0x4f, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x90, 0xd0, 0x4a, 0x46, + 0x5c, 0x07, 0xd2, 0x08, 0x14, 0x43, 0x80, 0x22, 0xdb, 0x08, 0x12, 0x03, + 0x13, 0x42, 0x08, 0xd0, 0xce, 0x08, 0x16, 0x42, 0x05, 0xd1, 0xc0, 0x08, + 0x49, 0x07, 0x08, 0x43, 0x04, 0x00, 0x5d, 0x46, 0x33, 0x00, 0x61, 0x0f, + 0xe2, 0x00, 0x49, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0x78, 0xe6, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x48, 0x44, 0x5b, 0x18, + 0x48, 0x45, 0x92, 0x41, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, + 0x04, 0x00, 0x1b, 0x02, 0x00, 0xd4, 0x1a, 0xe6, 0x42, 0x46, 0x0e, 0x4b, + 0x01, 0x26, 0x1a, 0x40, 0x90, 0x46, 0x14, 0xe6, 0x66, 0x46, 0x1f, 0x00, + 0x20, 0x3e, 0xf7, 0x40, 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x26, 0x36, 0x1b, + 0xb3, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, + 0x9c, 0x41, 0x3c, 0x43, 0xc8, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x22, + 0x32, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, + 0xfe, 0x07, 0x00, 0x00, 0x4a, 0x46, 0x14, 0x18, 0x84, 0x42, 0x92, 0x41, + 0x5b, 0x18, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0xe9, 0xe5, 0x42, 0x46, + 0x22, 0x43, 0x00, 0xd1, 0xa6, 0xe6, 0xea, 0xe5, 0x4b, 0x07, 0xc2, 0x08, + 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x00, 0x22, 0x01, 0x49, 0x13, 0x00, + 0x14, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0x0a, 0x00, 0x30, 0xb5, + 0x13, 0x4c, 0x53, 0x00, 0x09, 0x03, 0x05, 0x00, 0x09, 0x0b, 0x00, 0x20, + 0x5b, 0x0d, 0xd2, 0x0f, 0xa3, 0x42, 0x04, 0xdd, 0x0f, 0x48, 0x83, 0x42, + 0x02, 0xdd, 0x0f, 0x4b, 0xd0, 0x18, 0x30, 0xbd, 0x80, 0x20, 0x40, 0x03, + 0x01, 0x43, 0x0d, 0x48, 0xc0, 0x1a, 0x1f, 0x28, 0x08, 0xdd, 0x0c, 0x48, + 0xc3, 0x1a, 0xd9, 0x40, 0x0b, 0x00, 0x58, 0x42, 0x00, 0x2a, 0xf0, 0xd1, + 0x18, 0x00, 0xee, 0xe7, 0x08, 0x4c, 0xc5, 0x40, 0xa4, 0x46, 0x63, 0x44, + 0x99, 0x40, 0x0b, 0x00, 0x2b, 0x43, 0xf2, 0xe7, 0xfe, 0x03, 0x00, 0x00, + 0x1d, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x33, 0x04, 0x00, 0x00, + 0x13, 0x04, 0x00, 0x00, 0xed, 0xfb, 0xff, 0xff, 0x70, 0xb5, 0x43, 0x00, + 0x46, 0x02, 0xc4, 0x0f, 0xfe, 0x20, 0x1b, 0x0e, 0x59, 0x1c, 0x75, 0x0a, + 0x08, 0x42, 0x0c, 0xd0, 0xe0, 0x22, 0x92, 0x00, 0x94, 0x46, 0x6d, 0x07, + 0x36, 0x0b, 0x63, 0x44, 0x1b, 0x05, 0x33, 0x43, 0xe4, 0x07, 0x23, 0x43, + 0x28, 0x00, 0x19, 0x00, 0x70, 0xbd, 0x00, 0x2b, 0x14, 0xd1, 0x00, 0x2d, + 0x1b, 0xd0, 0x28, 0x00, 0x00, 0xf0, 0xa2, 0xf8, 0x0a, 0x28, 0x1c, 0xdc, + 0x0b, 0x23, 0x2a, 0x00, 0x1b, 0x1a, 0xda, 0x40, 0x03, 0x00, 0x15, 0x33, + 0x9d, 0x40, 0x0e, 0x4b, 0x12, 0x03, 0x1b, 0x1a, 0x5b, 0x05, 0x16, 0x0b, + 0x5b, 0x0d, 0xe1, 0xe7, 0x00, 0x2d, 0x09, 0xd0, 0x32, 0x0b, 0x80, 0x26, + 0x36, 0x03, 0x09, 0x4b, 0x6d, 0x07, 0x16, 0x43, 0xd8, 0xe7, 0x00, 0x23, + 0x00, 0x26, 0xd5, 0xe7, 0x00, 0x26, 0x05, 0x4b, 0xd2, 0xe7, 0x03, 0x00, + 0x2a, 0x00, 0x0b, 0x3b, 0x9a, 0x40, 0x00, 0x25, 0xe3, 0xe7, 0xc0, 0x46, + 0x89, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x84, 0x46, 0x10, 0x1c, + 0x62, 0x46, 0x8c, 0x46, 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, + 0x1f, 0xb5, 0x00, 0xf0, 0xf7, 0xf9, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, + 0xc8, 0x42, 0x1f, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0x41, 0xf9, 0x40, 0x42, + 0x01, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0xe9, 0xf9, 0x00, 0x28, + 0x01, 0xdb, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0xdf, 0xf9, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0x63, 0xf9, 0x00, 0x28, 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x59, 0xf9, 0x00, 0x28, + 0x01, 0xda, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x84, 0x46, 0x08, 0x1c, 0x61, 0x46, 0xff, 0xe7, 0x1f, 0xb5, 0x00, 0xf0, + 0xc5, 0xf8, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0x49, 0xf8, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0xb7, 0xf8, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0xad, 0xf8, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x57, 0xf8, 0x00, 0x28, + 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x1c, 0x21, 0x01, 0x23, + 0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a, + 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42, + 0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb5, 0x42, 0x00, + 0x4e, 0x02, 0x4c, 0x00, 0x45, 0x02, 0x6d, 0x0a, 0x12, 0x0e, 0xc3, 0x0f, + 0x76, 0x0a, 0x24, 0x0e, 0xc9, 0x0f, 0xff, 0x2a, 0x0f, 0xd0, 0xff, 0x2c, + 0x11, 0xd0, 0x01, 0x20, 0xa2, 0x42, 0x00, 0xd0, 0x70, 0xbd, 0xb5, 0x42, + 0xfc, 0xd1, 0x8b, 0x42, 0x0d, 0xd0, 0x00, 0x2a, 0xf8, 0xd1, 0x28, 0x00, + 0x45, 0x1e, 0xa8, 0x41, 0xf4, 0xe7, 0x01, 0x20, 0x00, 0x2d, 0xf1, 0xd1, + 0xeb, 0xe7, 0x01, 0x20, 0x00, 0x2e, 0xed, 0xd1, 0xe9, 0xe7, 0x00, 0x20, + 0xea, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x42, 0x00, 0x46, 0x02, 0x4d, 0x02, + 0x4c, 0x00, 0xc3, 0x0f, 0x76, 0x0a, 0x12, 0x0e, 0x6d, 0x0a, 0x24, 0x0e, + 0xc8, 0x0f, 0xff, 0x2a, 0x1f, 0xd0, 0xff, 0x2c, 0x10, 0xd0, 0x00, 0x2a, + 0x1f, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x2c, 0x01, 0xd1, 0x00, 0x2d, + 0x1e, 0xd0, 0x00, 0x29, 0x0e, 0xd1, 0x83, 0x42, 0x1e, 0xd0, 0x02, 0x21, + 0x58, 0x1e, 0x08, 0x40, 0x01, 0x38, 0xf0, 0xbd, 0x00, 0x2d, 0x26, 0xd1, + 0x00, 0x2a, 0xf4, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x29, 0xf0, 0xd0, + 0x00, 0x28, 0xf4, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf1, 0xe7, 0x00, 0x2e, + 0x19, 0xd1, 0xff, 0x2c, 0xee, 0xd0, 0x00, 0x2c, 0xe5, 0xd1, 0x00, 0x2d, + 0xe3, 0xd1, 0xe4, 0xe7, 0x00, 0x20, 0x00, 0x2e, 0xe5, 0xd0, 0xe0, 0xe7, + 0xa2, 0x42, 0x05, 0xdc, 0xea, 0xdb, 0xae, 0x42, 0x02, 0xd8, 0xe7, 0xd3, + 0x00, 0x20, 0xdc, 0xe7, 0x41, 0x42, 0x41, 0x41, 0x48, 0x42, 0x02, 0x21, + 0x08, 0x40, 0x01, 0x38, 0xd5, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xd2, 0xe7, + 0xf0, 0xb5, 0x42, 0x00, 0x46, 0x02, 0x4d, 0x02, 0x4c, 0x00, 0xc3, 0x0f, + 0x76, 0x0a, 0x12, 0x0e, 0x6d, 0x0a, 0x24, 0x0e, 0xc8, 0x0f, 0xff, 0x2a, + 0x0d, 0xd0, 0xff, 0x2c, 0x0f, 0xd0, 0x00, 0x2a, 0x23, 0xd1, 0x71, 0x42, + 0x71, 0x41, 0x00, 0x2c, 0x0f, 0xd1, 0x00, 0x2d, 0x0d, 0xd1, 0x00, 0x20, + 0x00, 0x2e, 0x14, 0xd0, 0x0d, 0xe0, 0x00, 0x2e, 0x10, 0xd1, 0xff, 0x2c, + 0x15, 0xd1, 0x00, 0x2d, 0x0c, 0xd1, 0x00, 0x2a, 0x03, 0xd1, 0x71, 0x42, + 0x71, 0x41, 0x00, 0x29, 0x08, 0xd1, 0x83, 0x42, 0x10, 0xd0, 0x02, 0x21, + 0x58, 0x1e, 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, 0xf0, 0xbd, + 0x00, 0x28, 0xfc, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf9, 0xe7, 0x00, 0x2c, + 0xef, 0xd1, 0x00, 0x2d, 0xed, 0xd1, 0xee, 0xe7, 0xa2, 0x42, 0x05, 0xdc, + 0xf2, 0xdb, 0xae, 0x42, 0x02, 0xd8, 0xef, 0xd3, 0x00, 0x20, 0xec, 0xe7, + 0x41, 0x42, 0x41, 0x41, 0x48, 0x42, 0x02, 0x21, 0x08, 0x40, 0x01, 0x38, + 0xe5, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, + 0x94, 0x46, 0x91, 0x46, 0x1a, 0x03, 0x12, 0x0b, 0x18, 0x4d, 0xc0, 0xb5, + 0x4c, 0x00, 0x0f, 0x03, 0x92, 0x46, 0x5a, 0x00, 0x06, 0x00, 0x80, 0x46, + 0x3f, 0x0b, 0x01, 0x20, 0x64, 0x0d, 0xc9, 0x0f, 0x52, 0x0d, 0xdb, 0x0f, + 0xac, 0x42, 0x0a, 0xd0, 0xaa, 0x42, 0x03, 0xd0, 0x94, 0x42, 0x01, 0xd1, + 0x57, 0x45, 0x0d, 0xd0, 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xf0, 0xbd, 0x3d, 0x00, 0x35, 0x43, 0xf7, 0xd1, 0xa2, 0x42, 0xf5, 0xd1, + 0x52, 0x46, 0x65, 0x46, 0x2a, 0x43, 0xf1, 0xd1, 0x01, 0x20, 0xc8, 0x45, + 0xee, 0xd1, 0x99, 0x42, 0x06, 0xd0, 0x00, 0x2c, 0xea, 0xd1, 0x3e, 0x43, + 0x30, 0x00, 0x46, 0x1e, 0xb0, 0x41, 0xe5, 0xe7, 0x00, 0x20, 0xe3, 0xe7, + 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, + 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, + 0x1b, 0x0b, 0x32, 0x4d, 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, + 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, + 0xc0, 0x0f, 0xaa, 0x42, 0x29, 0xd0, 0xab, 0x42, 0x18, 0xd0, 0x00, 0x2a, + 0x2a, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, + 0x02, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x27, 0xd0, 0x00, 0x2d, 0x15, 0xd1, + 0x81, 0x42, 0x28, 0xd0, 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, + 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, + 0x4d, 0x46, 0x2e, 0x43, 0x2f, 0xd1, 0x00, 0x2a, 0xee, 0xd1, 0x3c, 0x43, + 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0xe9, 0xd0, 0x00, 0x28, 0xed, 0xd1, + 0x01, 0x20, 0x40, 0x42, 0xea, 0xe7, 0x3d, 0x00, 0x25, 0x43, 0x20, 0xd1, + 0x93, 0x42, 0xeb, 0xd0, 0x00, 0x2b, 0xdd, 0xd1, 0x4c, 0x46, 0x26, 0x43, + 0xda, 0xd1, 0xdb, 0xe7, 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0xdb, 0xd0, + 0xd6, 0xe7, 0x9a, 0x42, 0x0a, 0xdc, 0xe7, 0xdb, 0x4f, 0x45, 0xd1, 0xd8, + 0x10, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xd1, 0xd2, 0x00, 0x29, 0xe1, 0xd0, + 0x08, 0x00, 0xcd, 0xe7, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, + 0x18, 0x40, 0x01, 0x38, 0xc6, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xc3, 0xe7, + 0xc4, 0x45, 0xbd, 0xd8, 0x00, 0x20, 0xc4, 0x45, 0xbe, 0xd2, 0xeb, 0xe7, + 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, + 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, + 0x1b, 0x0b, 0x31, 0x4d, 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, + 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, + 0xc0, 0x0f, 0xaa, 0x42, 0x11, 0xd0, 0xab, 0x42, 0x14, 0xd0, 0x00, 0x2a, + 0x2f, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, + 0x14, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x11, 0xd1, 0x5b, 0x46, 0x00, 0x20, + 0x00, 0x2b, 0x17, 0xd0, 0x10, 0xe0, 0x3d, 0x00, 0x25, 0x43, 0x12, 0xd1, + 0x93, 0x42, 0x1c, 0xd1, 0x4d, 0x46, 0x2e, 0x43, 0x0d, 0xd1, 0x00, 0x2a, + 0x04, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0x0d, 0xd1, + 0x81, 0x42, 0x16, 0xd0, 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, + 0x00, 0xe0, 0x02, 0x20, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x28, 0xf7, 0xd1, 0x01, 0x20, 0x40, 0x42, + 0xf4, 0xe7, 0x00, 0x2b, 0xea, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xe7, 0xd1, + 0xe8, 0xe7, 0x9a, 0x42, 0x06, 0xdd, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, + 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xe5, 0xe7, 0x9a, 0x42, 0xe9, 0xdb, + 0x4f, 0x45, 0xdb, 0xd8, 0x06, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xdd, 0xd2, + 0x00, 0x29, 0xe3, 0xd0, 0x08, 0x00, 0xd9, 0xe7, 0xc4, 0x45, 0xd1, 0xd8, + 0x00, 0x20, 0xc4, 0x45, 0xd4, 0xd2, 0xf5, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xba, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, + 0x6e, 0x1a, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, + 0xb4, 0x1a, 0x00, 0x08, 0x6e, 0x1a, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, + 0x46, 0x1b, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, 0x6e, 0x1a, 0x00, 0x08, + 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, + 0x90, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, + 0xb4, 0x1a, 0x00, 0x08, 0x6a, 0x1a, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, + 0x82, 0x1b, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, 0x6a, 0x1a, 0x00, 0x08, + 0x46, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, + 0x6a, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, + 0x74, 0x1a, 0x00, 0x08, 0x8c, 0x1b, 0x00, 0x08, 0xf6, 0x1c, 0x00, 0x08, + 0x94, 0x1c, 0x00, 0x08, 0x94, 0x1c, 0x00, 0x08, 0x92, 0x1c, 0x00, 0x08, + 0x98, 0x1c, 0x00, 0x08, 0x98, 0x1c, 0x00, 0x08, 0xc0, 0x1d, 0x00, 0x08, + 0x92, 0x1c, 0x00, 0x08, 0x98, 0x1c, 0x00, 0x08, 0xc0, 0x1d, 0x00, 0x08, + 0x98, 0x1c, 0x00, 0x08, 0x92, 0x1c, 0x00, 0x08, 0x76, 0x1d, 0x00, 0x08, + 0x76, 0x1d, 0x00, 0x08, 0x76, 0x1d, 0x00, 0x08, 0xfa, 0x1d, 0x00, 0x08, + 0xf8, 0x24, 0x00, 0x08, 0x60, 0x23, 0x00, 0x08, 0x3e, 0x23, 0x00, 0x08, + 0x52, 0x24, 0x00, 0x08, 0x3e, 0x23, 0x00, 0x08, 0x96, 0x24, 0x00, 0x08, + 0x3e, 0x23, 0x00, 0x08, 0x52, 0x24, 0x00, 0x08, 0x60, 0x23, 0x00, 0x08, + 0x60, 0x23, 0x00, 0x08, 0x96, 0x24, 0x00, 0x08, 0x52, 0x24, 0x00, 0x08, + 0x04, 0x24, 0x00, 0x08, 0x04, 0x24, 0x00, 0x08, 0x04, 0x24, 0x00, 0x08, + 0xa4, 0x24, 0x00, 0x08, 0x03, 0x08, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, + 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h new file mode 100644 index 000000000..77ca432c9 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h @@ -0,0 +1,1185 @@ +/* + * This file has been generated by the shelly-dimmer-stm32 project. + * https://github.com/jamesturton/shelly-dimmer-stm32 + * Copyright (c) 2020 James Turton. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 3; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0xcd, 0x15, 0x00, 0x08, 0xc9, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x15, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0x15, 0x00, 0x08, + 0xa5, 0x08, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xd1, 0x0a, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xb5, 0x08, 0x00, 0x08, 0x3d, 0x09, 0x00, 0x08, 0x41, 0x0a, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, 0xc7, 0x15, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x62, 0xff, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x56, 0xff, + 0xf4, 0xe7, 0xc0, 0x46, 0x64, 0x02, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0xad, 0x4e, 0xc7, 0xb0, 0x31, 0x68, 0x00, 0xaf, + 0x7e, 0x61, 0x19, 0x42, 0x33, 0xd0, 0xab, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x30, 0x00, 0x01, 0xf0, 0x39, 0xfa, 0xa8, 0x4d, 0xa9, 0x49, + 0x2b, 0x78, 0x04, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x9f, 0x49, 0xe4, 0xb2, 0xc8, 0x5c, + 0x9e, 0x4e, 0x00, 0x02, 0x20, 0x43, 0x00, 0x24, 0xb4, 0x46, 0x21, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xa4, 0x19, 0xc9, 0xb2, + 0xa4, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa0, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x2b, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x8e, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x91, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0x04, 0xe1, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x88, 0x4a, 0x13, 0x70, 0x8b, 0x78, 0x88, 0x4a, 0x13, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x84, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x81, 0x4a, 0x13, 0x80, 0x00, 0x24, 0x1c, 0x23, + 0xfc, 0x22, 0xf8, 0x18, 0x21, 0x00, 0x2c, 0x70, 0xbc, 0x61, 0x01, 0xf0, + 0xcf, 0xfa, 0x7d, 0x4b, 0x1b, 0x78, 0x01, 0x2b, 0x30, 0xd1, 0xff, 0xf7, + 0x4b, 0xff, 0x7b, 0x4b, 0x1c, 0x68, 0x79, 0x4b, 0x1b, 0x78, 0x01, 0x2b, + 0x3f, 0xd1, 0x79, 0x4b, 0x79, 0x4d, 0x1b, 0x68, 0x00, 0x2b, 0x37, 0xd1, + 0x2b, 0x60, 0x2d, 0x68, 0x73, 0x4b, 0x1b, 0x78, 0x01, 0x2b, 0x42, 0xd1, + 0x75, 0x4b, 0x76, 0x4a, 0x1b, 0x68, 0x12, 0x68, 0x75, 0x49, 0x9b, 0x1a, + 0x70, 0x4a, 0x8b, 0x42, 0x01, 0xd9, 0x00, 0x23, 0x13, 0x60, 0x10, 0x68, + 0x68, 0x4b, 0x1b, 0x78, 0x11, 0x2b, 0x00, 0xd1, 0x9c, 0xe0, 0x47, 0xd8, + 0x01, 0x2b, 0x47, 0xd0, 0x10, 0x2b, 0x00, 0xd1, 0x9a, 0xe0, 0x7b, 0x69, + 0x1a, 0x68, 0x80, 0x23, 0x13, 0x43, 0x7a, 0x69, 0x13, 0x60, 0x8e, 0xe7, + 0x69, 0x4b, 0x1b, 0x88, 0x00, 0x2b, 0xce, 0xd0, 0x68, 0x4b, 0x18, 0x88, + 0x01, 0xf0, 0xc0, 0xff, 0x02, 0xf0, 0xaa, 0xfe, 0x02, 0x00, 0x0b, 0x00, + 0x00, 0x20, 0x65, 0x49, 0x01, 0xf0, 0xf4, 0xff, 0x01, 0xf0, 0x8a, 0xfb, + 0x04, 0x00, 0xbe, 0xe7, 0xff, 0xf7, 0x06, 0xff, 0xc5, 0xe7, 0x00, 0x25, + 0x5d, 0x4b, 0x5b, 0x88, 0xab, 0x42, 0xc1, 0xd0, 0x5e, 0x4b, 0x5f, 0x48, + 0x19, 0x68, 0x01, 0xf0, 0x99, 0xfb, 0x01, 0xf0, 0x61, 0xfb, 0x05, 0x00, + 0xb8, 0xe7, 0x57, 0x4b, 0x1a, 0x88, 0x10, 0x1e, 0xc4, 0xd0, 0x00, 0x20, + 0x5b, 0x88, 0x83, 0x42, 0xc0, 0xd0, 0x54, 0x4b, 0x18, 0x88, 0x01, 0xf0, + 0x97, 0xff, 0x54, 0x4b, 0x19, 0x68, 0x01, 0xf0, 0x91, 0xfc, 0x01, 0x1c, + 0x53, 0x48, 0x01, 0xf0, 0x81, 0xfb, 0x01, 0xf0, 0x49, 0xfb, 0xb1, 0xe7, + 0x20, 0x2b, 0xba, 0xd1, 0x01, 0x24, 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, + 0xba, 0x60, 0xe2, 0x1d, 0x7a, 0x60, 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, + 0x8a, 0x1a, 0x95, 0x46, 0x01, 0x22, 0x6d, 0x46, 0x2a, 0x70, 0x38, 0x4a, + 0x01, 0xa8, 0x12, 0x78, 0xab, 0x70, 0x18, 0x23, 0x6a, 0x70, 0xf9, 0x18, + 0x22, 0x00, 0xec, 0x70, 0x01, 0xf0, 0xee, 0xf9, 0x00, 0x22, 0x13, 0x00, + 0x21, 0x1d, 0xe0, 0x1c, 0xee, 0x18, 0x76, 0x78, 0x01, 0x33, 0xb4, 0x46, + 0xdb, 0xb2, 0x62, 0x44, 0x92, 0xb2, 0x98, 0x42, 0xf6, 0xdc, 0x13, 0x0a, + 0x6b, 0x54, 0x63, 0x1d, 0xea, 0x54, 0x04, 0x23, 0x06, 0x34, 0x2b, 0x55, + 0x00, 0x23, 0x1e, 0x00, 0x26, 0x4c, 0xab, 0x5d, 0x61, 0x68, 0x3b, 0x60, + 0xe3, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, 0xfb, 0x60, 0x01, 0xf0, + 0x05, 0xfb, 0xa3, 0x68, 0x99, 0x42, 0x0a, 0xd0, 0xfb, 0x68, 0x3a, 0x69, + 0xe3, 0x60, 0x39, 0x68, 0x23, 0x68, 0x99, 0x54, 0xe0, 0x68, 0x61, 0x68, + 0x01, 0xf0, 0xf8, 0xfa, 0xe1, 0x60, 0x33, 0x00, 0x01, 0x33, 0x1e, 0x00, + 0x7b, 0x68, 0xb3, 0x42, 0xe1, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0x68, 0xe7, + 0x27, 0x4a, 0x02, 0x24, 0x3a, 0x83, 0xab, 0xe7, 0x00, 0x22, 0x28, 0x21, + 0x3a, 0x83, 0x16, 0x4a, 0x79, 0x18, 0x12, 0x88, 0x3c, 0x62, 0x7a, 0x83, + 0x12, 0x4a, 0x11, 0x24, 0x12, 0x78, 0xf8, 0x61, 0x7d, 0x62, 0x0a, 0x70, + 0x9c, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60, 0x61, 0x68, 0xd5, 0x5c, + 0x01, 0xf0, 0xd4, 0xfa, 0x02, 0x48, 0xa1, 0x60, 0xa9, 0xb2, 0x01, 0xf0, + 0xe8, 0xf8, 0xf2, 0xe6, 0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, + 0x1a, 0x00, 0x00, 0x20, 0x64, 0x01, 0x00, 0x20, 0x63, 0x01, 0x00, 0x20, + 0x65, 0x01, 0x00, 0x20, 0x4c, 0x00, 0x00, 0x20, 0x3d, 0x00, 0x00, 0x20, + 0x20, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x3c, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, 0x60, 0x01, 0x00, 0x20, + 0x28, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x70, 0x02, 0x00, 0x20, + 0x8d, 0x90, 0x54, 0x41, 0x34, 0x00, 0x00, 0x20, 0x00, 0x8e, 0x44, 0x49, + 0xa2, 0x1c, 0xe2, 0x4f, 0x03, 0x33, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0xd1, 0xfe, 0xfd, 0x48, 0x00, 0xf0, 0x00, 0xff, 0xfc, 0x48, 0x00, 0xf0, + 0xfd, 0xfe, 0xfc, 0x48, 0x00, 0xf0, 0xfa, 0xfe, 0xfb, 0x48, 0x00, 0xf0, + 0xf7, 0xfe, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xf3, 0xfe, 0xf9, 0x48, + 0x00, 0xf0, 0xf0, 0xfe, 0xc0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xec, 0xfe, + 0xf6, 0x48, 0x00, 0xf0, 0xe9, 0xfe, 0xa0, 0x20, 0x80, 0x00, 0x00, 0xf0, + 0xe5, 0xfe, 0x00, 0x22, 0x02, 0x23, 0x11, 0x00, 0xf2, 0x48, 0x00, 0xf0, + 0x95, 0xfd, 0x02, 0x21, 0xf0, 0x48, 0x00, 0xf0, 0x8e, 0xfd, 0xf0, 0x4b, + 0x00, 0x22, 0x18, 0x70, 0xc8, 0x23, 0x90, 0x20, 0x01, 0x21, 0x5b, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x87, 0xfd, 0x90, 0x20, 0x03, 0x23, 0x00, 0x22, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x80, 0xfd, 0x80, 0x24, 0x90, 0x20, + 0x64, 0x00, 0x03, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xb6, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xe1, 0x48, 0x00, 0xf0, 0x72, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xde, 0x48, 0x00, 0xf0, 0x8c, 0xfd, + 0x21, 0x00, 0xdc, 0x48, 0x00, 0xf0, 0x60, 0xfd, 0x00, 0x22, 0x04, 0x23, + 0x11, 0x00, 0xd9, 0x48, 0x00, 0xf0, 0x62, 0xfd, 0x90, 0x20, 0x08, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x5b, 0xfd, 0x01, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xd2, 0x48, 0x00, 0xf0, 0x55, 0xfd, 0xd3, 0x48, + 0x00, 0xf0, 0x00, 0xfc, 0x01, 0x21, 0xd1, 0x48, 0x00, 0xf0, 0x66, 0xfb, + 0xcf, 0x48, 0x00, 0xf0, 0x11, 0xfc, 0xce, 0x48, 0x00, 0xf0, 0x82, 0xfb, + 0xcc, 0x48, 0x00, 0xf0, 0x19, 0xfc, 0x00, 0xf0, 0x21, 0xfc, 0x06, 0x21, + 0xc9, 0x48, 0x00, 0xf0, 0xb6, 0xfb, 0xc9, 0x4a, 0x02, 0x21, 0xc7, 0x48, + 0x00, 0xf0, 0x7c, 0xfb, 0x00, 0x21, 0xc5, 0x48, 0x00, 0xf0, 0x04, 0xfc, + 0xc3, 0x48, 0x00, 0xf0, 0xaf, 0xfb, 0xc2, 0x48, 0x00, 0xf0, 0xee, 0xfb, + 0x01, 0x21, 0xc2, 0x48, 0x00, 0xf0, 0x19, 0xfc, 0x00, 0x22, 0x01, 0x21, + 0xbf, 0x48, 0x00, 0xf0, 0x33, 0xfc, 0x80, 0x22, 0x01, 0x21, 0xbd, 0x48, + 0xd2, 0x00, 0x00, 0xf0, 0x3d, 0xfc, 0x22, 0x00, 0x01, 0x21, 0xba, 0x48, + 0x00, 0xf0, 0x48, 0xfc, 0x01, 0x21, 0xb8, 0x48, 0x00, 0xf0, 0x54, 0xfc, + 0x01, 0x21, 0xb6, 0x48, 0x00, 0xf0, 0x5a, 0xfc, 0x01, 0x21, 0xb4, 0x48, + 0x00, 0xf0, 0x66, 0xfc, 0x01, 0x21, 0xb3, 0x4a, 0xb1, 0x48, 0x00, 0xf0, + 0x75, 0xfc, 0x01, 0x21, 0xb1, 0x4a, 0xaf, 0x48, 0x00, 0xf0, 0x79, 0xfc, + 0x02, 0x22, 0x01, 0x21, 0xac, 0x48, 0x00, 0xf0, 0x7d, 0xfc, 0x01, 0x21, + 0xaa, 0x48, 0x00, 0xf0, 0x5d, 0xfc, 0xa7, 0x48, 0x00, 0xf0, 0xd3, 0xfb, + 0xa5, 0x48, 0x00, 0xf0, 0x80, 0xfb, 0xa4, 0x48, 0x00, 0xf0, 0xdc, 0xfb, + 0xa7, 0x4b, 0xa8, 0x4a, 0x5c, 0x60, 0x00, 0x24, 0x1a, 0x60, 0x9c, 0x60, + 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, 0xdb, 0x00, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xe5, 0xfc, 0xc0, 0x22, 0x90, 0x20, 0xd2, 0x00, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x1c, 0xfd, 0xff, 0x21, 0x1b, 0x20, + 0x01, 0xf0, 0x50, 0xf8, 0x1b, 0x20, 0x01, 0xf0, 0x41, 0xf8, 0xe1, 0x21, + 0x9a, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, 0x8d, 0xff, 0x08, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0x95, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xa7, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, 0x9b, 0xff, 0x0c, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0xa7, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xa9, 0xff, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, 0x13, 0x43, 0x2b, 0x60, + 0x00, 0xf0, 0xaa, 0xff, 0x8b, 0x48, 0x00, 0xf0, 0x44, 0xfe, 0x8c, 0x20, + 0xff, 0x30, 0x00, 0xf0, 0x07, 0xfe, 0x0e, 0x20, 0x01, 0xf0, 0x16, 0xf8, + 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x85, 0x48, 0x00, 0xf0, 0x1c, 0xfe, + 0xf0, 0x21, 0x83, 0x48, 0x49, 0x00, 0x00, 0xf0, 0x37, 0xfe, 0x81, 0x48, + 0x00, 0xf0, 0xb3, 0xfe, 0x7f, 0x48, 0x00, 0xf0, 0x1d, 0xfe, 0x7e, 0x48, + 0x00, 0xf0, 0x1f, 0xfe, 0x7d, 0x49, 0x7c, 0x48, 0x00, 0xf0, 0x2c, 0xfe, + 0x02, 0x21, 0x7a, 0x48, 0x00, 0xf0, 0xf8, 0xfd, 0x78, 0x48, 0x00, 0xf0, + 0x19, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x1a, 0xfe, 0x80, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0xdd, 0xfd, 0x0f, 0x20, 0x00, 0xf0, 0xec, 0xff, + 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xf1, 0xfd, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x0c, 0xfe, + 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xf4, 0xfd, 0x80, 0x20, 0xc0, 0x05, + 0x00, 0xf0, 0xf5, 0xfd, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x1c, 0xff, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xdb, 0xfe, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x7d, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xa3, 0xfe, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x30, 0xfe, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xe7, 0xfd, 0x80, 0x20, + 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x06, 0xfe, 0x80, 0x20, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xef, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xa6, 0xfd, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xb0, 0xfe, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x52, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x78, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x05, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xbc, 0xfd, + 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xdb, 0xfd, 0x80, 0x20, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc4, 0xfe, 0x80, 0x20, 0x04, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x7b, 0xfd, 0x01, 0x21, 0x80, 0x20, 0x49, 0x42, + 0xc0, 0x05, 0x00, 0xf0, 0x2a, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, + 0x95, 0xfd, 0x37, 0x48, 0x00, 0xf0, 0x97, 0xfd, 0x36, 0x48, 0x00, 0xf0, + 0x5b, 0xfd, 0x10, 0x20, 0x00, 0xf0, 0x6a, 0xff, 0x23, 0x00, 0x22, 0x00, + 0x21, 0x00, 0x31, 0x48, 0x00, 0xf0, 0x70, 0xfd, 0xf0, 0x21, 0x2f, 0x48, + 0x49, 0x00, 0x00, 0xf0, 0x8b, 0xfd, 0x2d, 0x48, 0x00, 0xf0, 0x74, 0xfd, + 0x2b, 0x48, 0x00, 0xf0, 0x76, 0xfd, 0x0a, 0x21, 0x29, 0x48, 0x00, 0xf0, + 0x83, 0xfd, 0x05, 0x22, 0x21, 0x00, 0x27, 0x48, 0x00, 0xf0, 0xe8, 0xfd, + 0x02, 0x21, 0x25, 0x48, 0x00, 0xf0, 0x4a, 0xfd, 0x23, 0x48, 0x00, 0xf0, + 0x6b, 0xfd, 0x06, 0x20, 0x00, 0xf0, 0x46, 0xff, 0x04, 0x20, 0x14, 0x49, + 0x00, 0xf0, 0x90, 0xfb, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x58, 0xfb, + 0x04, 0x20, 0x00, 0xf0, 0x75, 0xfb, 0x20, 0x00, 0x00, 0xf0, 0x1e, 0xff, + 0x1b, 0x4b, 0x1c, 0x49, 0x1c, 0x60, 0x1c, 0x4b, 0x18, 0x68, 0x01, 0xf0, + 0x21, 0xf8, 0x00, 0xf0, 0x0d, 0xff, 0x00, 0xf0, 0x1d, 0xff, 0x00, 0xf0, + 0x23, 0xff, 0xc0, 0x46, 0xfd, 0xe7, 0xc0, 0x46, 0x91, 0x02, 0x00, 0x00, + 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x00, + 0x81, 0x03, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x3c, 0x00, 0x00, 0x20, 0x00, 0x24, 0x01, 0x40, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x02, 0x40, 0x40, 0x24, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, + 0x4c, 0x00, 0x00, 0x20, 0x5c, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, + 0x00, 0x2c, 0x01, 0x40, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, + 0x01, 0x02, 0x00, 0x00, 0x18, 0xe0, 0x00, 0xe0, 0x80, 0x38, 0x01, 0x00, + 0x08, 0x00, 0x00, 0x20, 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x64, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, + 0x1c, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, + 0x19, 0x48, 0x00, 0xf0, 0xef, 0xfc, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, + 0x12, 0x88, 0x9a, 0x42, 0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, + 0x90, 0x20, 0x5a, 0x1e, 0x93, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, + 0xc0, 0x05, 0x9a, 0x42, 0x0e, 0xd0, 0x00, 0xf0, 0x63, 0xfb, 0x80, 0x21, + 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x5d, 0xfb, 0x80, 0x21, + 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x57, 0xfb, 0x10, 0xbd, + 0x00, 0xf0, 0x52, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, + 0x00, 0xf0, 0x4c, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, + 0x00, 0xf0, 0x46, 0xfb, 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, + 0x16, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, + 0x80, 0x20, 0xf8, 0xb5, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xaa, 0xfc, + 0x00, 0x28, 0x37, 0xd0, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0xa9, 0xfc, 0x2a, 0x4b, 0x2a, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x2a, 0x4f, + 0x13, 0x60, 0x2a, 0x4e, 0x2a, 0x4a, 0x30, 0x68, 0x15, 0x68, 0x3a, 0x68, + 0x29, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68, 0x01, 0x28, 0x06, 0xd9, + 0x5b, 0x1a, 0x27, 0x49, 0x09, 0x78, 0x00, 0x29, 0x39, 0xd0, 0x26, 0x49, + 0x0b, 0x60, 0x23, 0x68, 0x25, 0x49, 0x01, 0x33, 0x23, 0x60, 0xaa, 0x1a, + 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00, 0x93, 0x42, 0x0e, 0xd9, + 0x01, 0x23, 0x1e, 0x4a, 0x20, 0x48, 0x11, 0x78, 0x4b, 0x40, 0x80, 0x21, + 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0, 0x00, 0xf0, 0x02, 0xfb, + 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60, 0x80, 0x20, 0x04, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x6b, 0xfc, 0x00, 0x28, 0x14, 0xd0, 0x80, 0x20, + 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x6a, 0xfc, 0x14, 0x4b, 0x15, 0x4a, + 0x19, 0x68, 0x13, 0x68, 0x14, 0x48, 0x11, 0x60, 0x14, 0x4a, 0xcb, 0x1a, + 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x08, 0x4b, 0x1a, 0x68, + 0x11, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x11, 0x49, 0xc4, 0xe7, 0x00, 0xf0, + 0xdb, 0xfa, 0xd9, 0xe7, 0x34, 0x00, 0x00, 0x40, 0x68, 0x02, 0x00, 0x20, + 0x38, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, + 0x1c, 0x00, 0x00, 0x20, 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x40, + 0x6c, 0x02, 0x00, 0x20, 0x60, 0x01, 0x00, 0x20, 0x5c, 0x01, 0x00, 0x20, + 0x44, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, + 0x19, 0x48, 0x00, 0xf0, 0x29, 0xfc, 0x00, 0x28, 0x2a, 0xd0, 0x02, 0x21, + 0x16, 0x48, 0x00, 0xf0, 0x29, 0xfc, 0x02, 0x22, 0x01, 0x21, 0x15, 0x48, + 0x00, 0xf0, 0xb4, 0xf9, 0x00, 0x28, 0x1f, 0xd0, 0x02, 0x22, 0x01, 0x21, + 0x11, 0x48, 0x00, 0xf0, 0xa8, 0xf9, 0x11, 0x49, 0x11, 0x4a, 0x08, 0x68, + 0x13, 0x88, 0x1b, 0x18, 0x0b, 0x60, 0x10, 0x49, 0x52, 0x88, 0x0b, 0x68, + 0x9b, 0x18, 0x0b, 0x60, 0x0e, 0x4b, 0x0f, 0x49, 0x1b, 0x88, 0x9a, 0x42, + 0x0b, 0xd9, 0xd3, 0x1a, 0x0a, 0x68, 0x0d, 0x48, 0x9b, 0x18, 0x0d, 0x4a, + 0x0b, 0x60, 0x13, 0x88, 0x01, 0x33, 0x13, 0x80, 0x00, 0xf0, 0x78, 0xf9, + 0x10, 0xbd, 0x9b, 0x1a, 0xf2, 0xe7, 0xc0, 0x46, 0x00, 0x04, 0x00, 0x40, + 0x00, 0x00, 0x02, 0x40, 0x78, 0x02, 0x00, 0x20, 0x12, 0x00, 0x00, 0x20, + 0x2c, 0x00, 0x00, 0x20, 0x22, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, + 0x00, 0x24, 0x01, 0x40, 0x10, 0x00, 0x00, 0x20, 0xf8, 0xb5, 0x04, 0x20, + 0x00, 0xf0, 0x28, 0xfa, 0x38, 0x48, 0x00, 0xf0, 0x8e, 0xfc, 0x38, 0x4e, + 0x04, 0x21, 0x30, 0x60, 0x37, 0x48, 0x00, 0xf0, 0x6a, 0xfa, 0x00, 0x28, + 0x1e, 0xd0, 0x36, 0x4b, 0x36, 0x4f, 0x1d, 0x88, 0x00, 0x24, 0x38, 0x68, + 0x29, 0x00, 0x00, 0xf0, 0xbd, 0xfe, 0x34, 0x4b, 0x3c, 0x60, 0x34, 0x4f, + 0x18, 0x80, 0x29, 0x00, 0x38, 0x68, 0x00, 0xf0, 0xb5, 0xfe, 0x01, 0xf0, + 0x83, 0xfb, 0x31, 0x4b, 0x3c, 0x60, 0x31, 0x4f, 0x18, 0x60, 0x29, 0x00, + 0x38, 0x68, 0x00, 0xf0, 0xab, 0xfe, 0x2f, 0x4b, 0x3c, 0x60, 0x18, 0x80, + 0x27, 0x4b, 0x1c, 0x80, 0x2d, 0x4b, 0x2e, 0x4c, 0x18, 0x88, 0x23, 0x78, + 0x00, 0x2b, 0x03, 0xd0, 0xfa, 0x23, 0x9b, 0x00, 0x18, 0x1a, 0x80, 0xb2, + 0xfa, 0x21, 0x33, 0x68, 0x29, 0x4d, 0x89, 0x00, 0x28, 0x80, 0x58, 0x43, + 0x00, 0xf0, 0x94, 0xfe, 0x00, 0x21, 0x02, 0x00, 0x19, 0x48, 0x00, 0xf0, + 0x37, 0xfc, 0x00, 0x21, 0x17, 0x48, 0x00, 0xf0, 0x4e, 0xfc, 0x2b, 0x88, + 0x00, 0x2b, 0x18, 0xd0, 0x21, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, + 0x5a, 0x1e, 0x93, 0x41, 0x22, 0x78, 0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, + 0x0e, 0xd0, 0x00, 0xf0, 0x19, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x13, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x0d, 0xfa, 0xf8, 0xbd, 0x00, 0xf0, 0x0c, 0xfa, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x06, 0xfa, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x00, 0xfa, + 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x04, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x10, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x22, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, + 0x78, 0x02, 0x00, 0x20, 0x70, 0x02, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x48, 0x00, 0x00, 0x20, 0x16, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x20, + 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x0f, 0xd0, 0x00, 0x29, 0x0c, 0xd1, + 0xc3, 0x68, 0x0a, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x80, 0x23, 0xc2, 0x68, + 0x5b, 0x02, 0x13, 0x43, 0x02, 0xe0, 0xc3, 0x68, 0x06, 0x4a, 0x13, 0x40, + 0xc3, 0x60, 0x70, 0x47, 0xc3, 0x68, 0x05, 0x4a, 0x13, 0x40, 0xc3, 0x60, + 0x80, 0x23, 0xc2, 0x68, 0x9b, 0x01, 0xf0, 0xe7, 0xff, 0xdf, 0xff, 0xff, + 0xff, 0xdf, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc3, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0xf7, 0xb5, 0x00, 0x29, 0x01, 0xd1, 0x81, 0x62, 0xf7, 0xbd, 0x01, 0x23, + 0x1d, 0x00, 0x14, 0x78, 0x00, 0x93, 0xa5, 0x40, 0x00, 0x24, 0x26, 0x00, + 0x9b, 0x1a, 0x01, 0x93, 0x01, 0x9b, 0x9b, 0x18, 0xdb, 0xb2, 0x99, 0x42, + 0x06, 0xd8, 0x04, 0x23, 0x00, 0x2e, 0x13, 0xd0, 0x00, 0x2c, 0x18, 0xd0, + 0x00, 0xf0, 0x38, 0xfd, 0x53, 0x78, 0x00, 0x9f, 0x9f, 0x40, 0x3d, 0x43, + 0x17, 0x78, 0x01, 0x32, 0xbc, 0x46, 0x9c, 0x45, 0xbf, 0x41, 0x63, 0x45, + 0x9b, 0x41, 0x7f, 0x42, 0x5b, 0x42, 0x3e, 0x43, 0x1c, 0x43, 0xe3, 0xe7, + 0x00, 0x2c, 0x04, 0xd0, 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x85, 0x62, + 0xd2, 0xe7, 0xc2, 0x68, 0x9a, 0x43, 0xc2, 0x60, 0xf9, 0xe7, 0x07, 0x23, + 0x19, 0x40, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, 0xc3, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xff, 0x7f, 0xff, + 0x01, 0x23, 0x82, 0x68, 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, + 0x04, 0x00, 0xff, 0xf7, 0xf7, 0xff, 0x01, 0x23, 0x22, 0x68, 0x1a, 0x42, + 0xfc, 0xd0, 0x10, 0xbd, 0x83, 0x68, 0x01, 0x20, 0x98, 0x43, 0x70, 0x47, + 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, 0xf8, 0xff, 0x00, 0x28, 0x10, 0xd1, + 0x21, 0x00, 0x04, 0x23, 0xa2, 0x68, 0x08, 0x31, 0x1a, 0x42, 0x06, 0xd0, + 0x10, 0x22, 0xa0, 0x68, 0x02, 0x43, 0xa2, 0x60, 0x0a, 0x68, 0x1a, 0x42, + 0xfc, 0xd1, 0x02, 0x23, 0xa2, 0x68, 0x13, 0x43, 0xa3, 0x60, 0x10, 0xbd, + 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, 0xe4, 0xff, 0x20, 0x00, 0xff, 0xf7, + 0xdd, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, 0x80, 0x23, 0x82, 0x68, + 0x1b, 0x06, 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x00, + 0xff, 0xf7, 0xf6, 0xff, 0xa3, 0x68, 0x00, 0x2b, 0xfc, 0xdb, 0x10, 0xbd, + 0xc3, 0x68, 0x02, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0xff, 0xdf, 0xff, 0xff, 0x18, 0x22, 0xc3, 0x68, 0x93, 0x43, 0x0b, 0x43, + 0xc3, 0x60, 0x70, 0x47, 0x20, 0x22, 0xc3, 0x68, 0x93, 0x43, 0xc3, 0x60, + 0x70, 0x47, 0x01, 0x23, 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x70, 0x47, + 0x80, 0x23, 0x03, 0x4a, 0x1b, 0x04, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x08, 0x27, 0x01, 0x40, 0x04, 0x23, 0x82, 0x68, + 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x14, 0x23, 0x00, 0x22, 0x01, 0x39, + 0x4b, 0x43, 0x1b, 0x18, 0x9a, 0x60, 0xda, 0x60, 0x1a, 0x61, 0x5a, 0x61, + 0x0f, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x42, 0x68, 0x13, 0x43, 0x43, 0x60, + 0x70, 0x47, 0x01, 0x39, 0x89, 0x00, 0x8a, 0x40, 0x42, 0x60, 0x70, 0x47, + 0x01, 0x39, 0x89, 0x00, 0x8a, 0x40, 0x00, 0x68, 0x10, 0x40, 0x42, 0x1e, + 0x90, 0x41, 0xc0, 0xb2, 0x70, 0x47, 0x00, 0x00, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, + 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0xff, 0xcf, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, + 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, + 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0xff, 0xfc, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x80, 0x23, 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x20, 0x23, + 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x03, 0x68, + 0x01, 0x4a, 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0xff, 0xbf, 0xff, 0xff, + 0x4b, 0x1e, 0x14, 0x21, 0x10, 0x22, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x01, 0x23, 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x18, + 0x83, 0x68, 0xdb, 0x07, 0x00, 0xd4, 0x02, 0x61, 0x70, 0x47, 0x4b, 0x1e, + 0x14, 0x21, 0x59, 0x43, 0x08, 0x18, 0x83, 0x68, 0xdb, 0x07, 0x00, 0xd4, + 0x42, 0x61, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x0c, 0x30, + 0x09, 0x18, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x00, 0x01, 0x29, 0x0c, 0xd0, + 0x02, 0x29, 0x13, 0xd0, 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0x13, 0x60, 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, + 0x70, 0x47, 0x06, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, + 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0xf5, 0xe7, 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, + 0x04, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, + 0x18, 0x43, 0x10, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, + 0x04, 0x04, 0x01, 0x40, 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x14, 0x04, 0x01, 0x40, 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, + 0x5e, 0x41, 0x00, 0x22, 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, + 0x93, 0x40, 0x01, 0x98, 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, + 0xa9, 0x42, 0x05, 0xd0, 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, + 0x00, 0xd0, 0x33, 0x00, 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, + 0x0f, 0x20, 0x15, 0x40, 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, + 0x27, 0x68, 0x87, 0x43, 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, + 0xde, 0xd1, 0xf7, 0xbd, 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, + 0x07, 0x4c, 0x00, 0x23, 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, + 0x00, 0xf8, 0xff, 0xb7, 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, + 0x02, 0x40, 0x00, 0x10, 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, + 0x81, 0x61, 0x70, 0x47, 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0x00, 0x69, + 0x08, 0x40, 0x70, 0x47, 0xf0, 0xb5, 0x85, 0xb0, 0x01, 0x91, 0x03, 0x27, + 0x00, 0x21, 0x02, 0x92, 0x03, 0x93, 0x02, 0x68, 0xc3, 0x68, 0x03, 0x9c, + 0x01, 0x25, 0x0c, 0x41, 0x2c, 0x42, 0x0a, 0xd0, 0x3d, 0x00, 0x4c, 0x00, + 0xa5, 0x40, 0x01, 0x9e, 0xaa, 0x43, 0xab, 0x43, 0x02, 0x9d, 0xa6, 0x40, + 0xa5, 0x40, 0x32, 0x43, 0x2b, 0x43, 0x01, 0x31, 0x10, 0x29, 0xec, 0xd1, + 0x02, 0x60, 0xc3, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0xf7, 0xb5, 0x01, 0x92, + 0x01, 0x29, 0x16, 0xd1, 0x41, 0x68, 0x19, 0x43, 0x00, 0x24, 0x01, 0x26, + 0x03, 0x27, 0x41, 0x60, 0x81, 0x68, 0x1d, 0x00, 0x25, 0x41, 0x35, 0x42, + 0x06, 0xd0, 0x3a, 0x00, 0x65, 0x00, 0xaa, 0x40, 0x91, 0x43, 0x01, 0x9a, + 0xaa, 0x40, 0x11, 0x43, 0x01, 0x34, 0x10, 0x2c, 0xf1, 0xd1, 0x81, 0x60, + 0xf7, 0xbd, 0x41, 0x68, 0x99, 0x43, 0xe7, 0xe7, 0xf7, 0xb5, 0x00, 0x23, + 0x01, 0x26, 0x0f, 0x27, 0x04, 0x6a, 0x00, 0x91, 0x41, 0x6a, 0x01, 0x92, + 0x01, 0x9d, 0x1d, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x9d, 0x00, + 0xaa, 0x40, 0x94, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x14, 0x43, 0x01, 0x33, + 0x08, 0x2b, 0xf1, 0xd1, 0x01, 0x26, 0x0f, 0x27, 0x01, 0x9a, 0x1a, 0x41, + 0x32, 0x42, 0x07, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0x20, 0x3d, 0xaa, 0x40, + 0x91, 0x43, 0x00, 0x9a, 0xaa, 0x40, 0x11, 0x43, 0x01, 0x33, 0x10, 0x2b, + 0xf0, 0xd1, 0x04, 0x62, 0x41, 0x62, 0xf7, 0xbd, 0x00, 0x23, 0x00, 0xb5, + 0x06, 0x28, 0x0a, 0xd8, 0x01, 0x33, 0x00, 0xf0, 0xe1, 0xfb, 0x0a, 0x0e, + 0x10, 0x12, 0x18, 0x16, 0x04, 0x00, 0x0b, 0x4a, 0x10, 0x68, 0x40, 0x0c, + 0x03, 0x40, 0x18, 0x00, 0x00, 0xbd, 0x08, 0x4a, 0x10, 0x68, 0x40, 0x08, + 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf2, 0xe7, 0x05, 0x4a, + 0x10, 0x68, 0x40, 0x0e, 0xf0, 0xe7, 0x04, 0x4a, 0xf2, 0xe7, 0x04, 0x4a, + 0xf0, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, + 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x04, 0x00, + 0x20, 0x00, 0xff, 0xf7, 0xd1, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, + 0x00, 0xb5, 0x06, 0x28, 0x0b, 0xd8, 0x00, 0xf0, 0xb1, 0xfb, 0x0b, 0x0f, + 0x11, 0x17, 0x15, 0x13, 0x04, 0x00, 0x0c, 0x4a, 0x80, 0x23, 0x11, 0x68, + 0x5b, 0x02, 0x0b, 0x43, 0x13, 0x60, 0x00, 0xbd, 0x08, 0x4a, 0x01, 0x23, + 0x11, 0x68, 0xf8, 0xe7, 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf1, 0xe7, + 0x06, 0x4a, 0xf6, 0xe7, 0x06, 0x4a, 0xf4, 0xe7, 0x80, 0x23, 0x03, 0x4a, + 0x5b, 0x04, 0x11, 0x68, 0xeb, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, + 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, + 0x01, 0x38, 0x00, 0xb5, 0x05, 0x28, 0x12, 0xd8, 0x00, 0xf0, 0x86, 0xfb, + 0x03, 0x09, 0x12, 0x11, 0x11, 0x19, 0x03, 0x21, 0x0c, 0x4a, 0x13, 0x68, + 0x8b, 0x43, 0x13, 0x60, 0x07, 0xe0, 0x03, 0x22, 0x09, 0x49, 0x0b, 0x68, + 0x93, 0x43, 0x1a, 0x00, 0x01, 0x23, 0x13, 0x43, 0x0b, 0x60, 0x00, 0xbd, + 0x03, 0x22, 0x05, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x02, 0x23, + 0xf5, 0xe7, 0x03, 0x23, 0x01, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0xe8, 0xe7, + 0x04, 0x10, 0x02, 0x40, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xff, 0xc3, 0xff, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x00, 0x04, + 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xff, 0xfe, 0xff, 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0xff, 0xf8, 0xff, 0xff, 0xf0, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, + 0x10, 0xb5, 0x01, 0x20, 0xff, 0xf7, 0x7e, 0xff, 0x01, 0x20, 0xff, 0xf7, + 0x73, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xa2, 0xff, 0x00, 0x20, 0xff, 0xf7, + 0xe9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xda, 0xff, 0x00, 0xf0, 0x6c, 0xfa, + 0x01, 0x20, 0x00, 0xf0, 0x71, 0xfa, 0xa0, 0x20, 0x80, 0x03, 0xff, 0xf7, + 0xb9, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xc2, 0xff, 0x03, 0x20, 0xff, 0xf7, + 0x63, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x58, 0xff, 0x03, 0x20, 0xff, 0xf7, + 0x87, 0xff, 0x03, 0x4b, 0x03, 0x4a, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x60, + 0x10, 0xbd, 0xc0, 0x46, 0x00, 0x6c, 0xdc, 0x02, 0x0c, 0x00, 0x00, 0x20, + 0x08, 0x00, 0x00, 0x20, 0x05, 0x4b, 0x42, 0x09, 0xd2, 0x18, 0x1f, 0x23, + 0x18, 0x40, 0x1e, 0x3b, 0x83, 0x40, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x10, 0x02, 0x40, 0x06, 0x4a, 0x43, 0x09, + 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x19, 0x68, + 0x11, 0x43, 0x19, 0x60, 0x19, 0x68, 0x91, 0x43, 0x19, 0x60, 0x70, 0x47, + 0x00, 0x10, 0x02, 0x40, 0xc3, 0x68, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, + 0x00, 0x69, 0x08, 0x40, 0x41, 0x1e, 0x88, 0x41, 0xc0, 0xb2, 0x70, 0x47, + 0xc9, 0x43, 0x01, 0x61, 0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x04, 0x68, + 0x03, 0x4d, 0x1a, 0x43, 0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, + 0x30, 0xbd, 0xc0, 0x46, 0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0x01, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x81, 0x62, 0x70, 0x47, 0xc1, 0x62, 0x70, 0x47, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0xae, 0xfa, + 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, 0x02, 0x21, 0x8a, 0x43, + 0x1a, 0x62, 0x00, 0xbd, 0x20, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, + 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x08, 0x21, 0xf3, 0xe7, 0x80, 0x21, + 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfd, 0xff, 0xff, + 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x19, 0x6a, 0x00, 0xf0, 0x8a, 0xfa, + 0x04, 0x10, 0x08, 0x12, 0x0a, 0x14, 0x0d, 0x00, 0x01, 0x22, 0x0a, 0x43, + 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x22, 0xfa, 0xe7, 0x80, 0x22, 0x52, 0x00, + 0xf7, 0xe7, 0x80, 0x22, 0x52, 0x01, 0xf4, 0xe7, 0x04, 0x22, 0xf2, 0xe7, + 0x40, 0x22, 0xf0, 0xe7, 0x80, 0x22, 0xd2, 0x00, 0xed, 0xe7, 0x00, 0x00, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, + 0x00, 0xf0, 0x6a, 0xfa, 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, + 0x01, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x21, 0xfa, 0xe7, + 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x04, 0x21, + 0xf3, 0xe7, 0x40, 0x21, 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xfe, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, 0x06, 0xd8, 0x00, 0xf0, + 0x47, 0xfa, 0x04, 0x05, 0x06, 0x05, 0x08, 0x05, 0x0a, 0x00, 0x5a, 0x63, + 0x00, 0xbd, 0x9a, 0x63, 0xfc, 0xe7, 0xda, 0x63, 0xfa, 0xe7, 0x1a, 0x64, + 0xf8, 0xe7, 0x80, 0x23, 0x42, 0x6c, 0x1b, 0x02, 0x13, 0x43, 0x43, 0x64, + 0x70, 0x47, 0x40, 0x6a, 0x70, 0x47, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, + 0x29, 0xfa, 0x02, 0x0b, 0x12, 0x1b, 0xf0, 0x20, 0x99, 0x69, 0x12, 0x01, + 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, + 0x99, 0x69, 0x0b, 0x48, 0x12, 0x03, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, + 0xf5, 0xe7, 0xf0, 0x20, 0xd9, 0x69, 0x12, 0x01, 0x81, 0x43, 0xd9, 0x61, + 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, + 0x12, 0x03, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0x0f, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, + 0x0b, 0xd8, 0x00, 0xf0, 0xfd, 0xf9, 0x02, 0x0b, 0x12, 0x1b, 0x0c, 0x20, + 0x99, 0x69, 0x92, 0x00, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, 0x92, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x0c, 0x20, 0xd9, 0x69, 0x92, 0x00, + 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, + 0xd9, 0x69, 0x03, 0x48, 0x92, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0x03, 0x00, 0x08, 0x00, + 0x30, 0xb5, 0x03, 0x21, 0x02, 0x24, 0x05, 0x00, 0x0a, 0x40, 0xa5, 0x43, + 0x01, 0x2d, 0x03, 0xd1, 0x54, 0x1e, 0x01, 0x2c, 0x00, 0xd8, 0x4a, 0x40, + 0x03, 0x28, 0x0a, 0xd8, 0x00, 0xf0, 0xc6, 0xf9, 0x02, 0x0a, 0x11, 0x19, + 0x03, 0x20, 0x99, 0x69, 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, + 0x9a, 0x61, 0x30, 0xbd, 0x99, 0x69, 0x0a, 0x48, 0x12, 0x02, 0x01, 0x40, + 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, + 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xef, 0xe7, 0xd9, 0x69, + 0x02, 0x48, 0x12, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, + 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x02, 0x6a, + 0x13, 0x43, 0x03, 0x62, 0x70, 0x47, 0x07, 0x22, 0x83, 0x68, 0x93, 0x43, + 0x83, 0x60, 0x83, 0x68, 0x19, 0x43, 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, + 0x04, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x00, 0x48, 0x08, 0xc0, 0x18, + 0x00, 0xf0, 0x96, 0xf9, 0xe0, 0x60, 0x10, 0xbd, 0x0c, 0x00, 0x00, 0x20, + 0x08, 0x29, 0x04, 0xd1, 0x03, 0x68, 0x04, 0x4a, 0x13, 0x40, 0x03, 0x60, + 0x70, 0x47, 0x80, 0x23, 0x02, 0x68, 0x5b, 0x01, 0x13, 0x43, 0xf8, 0xe7, + 0xff, 0xef, 0xff, 0xff, 0x43, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x43, 0x60, 0x70, 0x47, 0xff, 0xcf, 0xff, 0xff, 0x03, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, 0xff, 0xf9, 0xff, 0xff, + 0x0c, 0x22, 0x03, 0x68, 0x93, 0x43, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x83, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x83, 0x60, 0x70, 0x47, + 0xff, 0xfc, 0xff, 0xff, 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0xc9, 0x05, 0xc9, 0x0d, 0x81, 0x62, 0x70, 0x47, 0x40, 0x6a, + 0xc0, 0x05, 0xc0, 0x0d, 0x70, 0x47, 0xfe, 0xe7, 0x70, 0x47, 0x00, 0x00, + 0x10, 0xb5, 0x16, 0x4b, 0x16, 0x4a, 0x17, 0x49, 0x8b, 0x42, 0x18, 0xd3, + 0x00, 0x21, 0x16, 0x4a, 0x93, 0x42, 0x17, 0xd3, 0x80, 0x23, 0x15, 0x4a, + 0x9b, 0x00, 0x11, 0x68, 0x14, 0x4c, 0x0b, 0x43, 0x13, 0x60, 0x14, 0x4b, + 0x9c, 0x42, 0x0f, 0xd3, 0x13, 0x4c, 0x14, 0x4b, 0x9c, 0x42, 0x0e, 0xd3, + 0xfe, 0xf7, 0x26, 0xff, 0x12, 0x4c, 0x13, 0x4b, 0x9c, 0x42, 0x0b, 0xd3, + 0x10, 0xbd, 0x01, 0xca, 0x01, 0xc3, 0xe1, 0xe7, 0x02, 0xc3, 0xe3, 0xe7, + 0x08, 0xcc, 0x98, 0x47, 0xe9, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xea, 0xe7, + 0x08, 0xcc, 0x98, 0x47, 0xed, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x20, + 0x64, 0x36, 0x00, 0x08, 0x10, 0x00, 0x00, 0x20, 0x7c, 0x02, 0x00, 0x20, + 0x14, 0xed, 0x00, 0xe0, 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, + 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, 0x64, 0x36, 0x00, 0x08, + 0x64, 0x36, 0x00, 0x08, 0x02, 0x4b, 0x00, 0x02, 0x00, 0x0a, 0x18, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x14, 0xe0, 0x00, 0xe0, 0x04, 0x21, 0x03, 0x4a, + 0x08, 0x40, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x02, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x01, 0x23, 0x02, 0x4a, + 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x04, 0x4a, 0x43, 0x09, 0x9b, 0x00, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, + 0x1e, 0x3a, 0x82, 0x40, 0x1a, 0x60, 0x70, 0x47, 0x00, 0xe1, 0x00, 0xe0, + 0x10, 0xb5, 0x1f, 0x28, 0x12, 0xd9, 0x0f, 0x23, 0x18, 0x40, 0x04, 0x38, + 0xc0, 0xb2, 0x83, 0x08, 0x08, 0x4a, 0x9b, 0x00, 0x18, 0x24, 0xc0, 0x00, + 0x20, 0x40, 0xe7, 0x34, 0x84, 0x40, 0x81, 0x40, 0x9b, 0x18, 0x1a, 0x68, + 0xa2, 0x43, 0x11, 0x43, 0x19, 0x60, 0x10, 0xbd, 0x83, 0x08, 0x02, 0x4a, + 0x9b, 0x00, 0xef, 0xe7, 0x18, 0xed, 0x00, 0xe0, 0x00, 0xe4, 0x00, 0xe0, + 0xfe, 0xe7, 0x00, 0x00, 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, + 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x20, 0x02, 0x40, 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, + 0x43, 0xd9, 0x0b, 0x00, 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, + 0x03, 0x00, 0x00, 0x2e, 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, + 0xac, 0x46, 0x2d, 0x01, 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, + 0x67, 0x68, 0x25, 0x68, 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, + 0x1f, 0x00, 0xa5, 0x68, 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, + 0xf1, 0xd1, 0x65, 0x46, 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, + 0x49, 0x19, 0x13, 0x40, 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, + 0xac, 0x51, 0x04, 0x36, 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, + 0x04, 0x3b, 0x9b, 0x08, 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, + 0xc9, 0x18, 0x56, 0x1e, 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, + 0x23, 0x00, 0xca, 0x5c, 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, + 0x04, 0xbc, 0x90, 0x46, 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, + 0xf0, 0xd1, 0xf7, 0xe7, 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, + 0xf6, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, + 0x54, 0x1e, 0x00, 0x2a, 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, + 0x02, 0xe0, 0x01, 0x35, 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, + 0x13, 0x42, 0xf8, 0xd1, 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, + 0x15, 0x02, 0x15, 0x43, 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, + 0x27, 0x00, 0x10, 0x3f, 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, + 0x1a, 0x00, 0x10, 0x36, 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, + 0xd5, 0x60, 0x10, 0x32, 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, + 0x01, 0x37, 0x3f, 0x01, 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, + 0x17, 0xd0, 0x3e, 0x1f, 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, + 0x1c, 0x1d, 0x64, 0x44, 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, + 0x01, 0x36, 0xb6, 0x00, 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, + 0xc9, 0xb2, 0x1c, 0x19, 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, + 0xf0, 0xbd, 0x34, 0x00, 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, + 0x27, 0x00, 0xe0, 0xe7, 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, + 0x09, 0x5c, 0x49, 0x00, 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x22, 0x43, 0x08, 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, + 0x5f, 0xd3, 0x03, 0x0a, 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, + 0x28, 0xd3, 0x03, 0x0c, 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, + 0x12, 0xba, 0x03, 0x0c, 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, + 0x65, 0xd0, 0x03, 0x0b, 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, + 0xc3, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0b, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, + 0xc3, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x83, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x43, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0x03, 0x0a, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, + 0xcd, 0xd2, 0xc3, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0x03, 0x09, 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, + 0x52, 0x41, 0xc3, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x83, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x43, 0x08, 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, + 0x52, 0x41, 0x41, 0x1a, 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, + 0x70, 0x47, 0xff, 0xe7, 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, + 0x02, 0xbd, 0xc0, 0x46, 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, + 0x70, 0x47, 0xc0, 0x46, 0x9e, 0x21, 0x10, 0xb5, 0xc9, 0x05, 0x04, 0x1c, + 0x01, 0xf0, 0xe0, 0xfb, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, + 0x19, 0xfc, 0x10, 0xbd, 0x9e, 0x21, 0x20, 0x1c, 0xc9, 0x05, 0x00, 0xf0, + 0x4b, 0xfa, 0x00, 0xf0, 0x11, 0xfc, 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, + 0x60, 0x44, 0xf2, 0xe7, 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, + 0x0d, 0x00, 0x01, 0xf0, 0x8d, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, + 0x29, 0x00, 0x01, 0xf0, 0xd5, 0xfa, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, + 0x20, 0x00, 0x29, 0x00, 0x00, 0xf0, 0x3c, 0xff, 0x01, 0xf0, 0xcc, 0xfa, + 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, + 0x00, 0x00, 0xe0, 0x41, 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, + 0x45, 0x02, 0xc0, 0xb5, 0x47, 0x00, 0x0c, 0x1c, 0x6d, 0x0a, 0x3f, 0x0e, + 0xc6, 0x0f, 0x00, 0x2f, 0x66, 0xd0, 0xff, 0x2f, 0x6c, 0xd0, 0x00, 0x23, + 0xea, 0x00, 0x80, 0x25, 0x99, 0x46, 0x9a, 0x46, 0xed, 0x04, 0x15, 0x43, + 0x7f, 0x3f, 0x60, 0x02, 0x61, 0x00, 0x43, 0x0a, 0x98, 0x46, 0x09, 0x0e, + 0xe4, 0x0f, 0x00, 0x29, 0x48, 0xd0, 0xff, 0x29, 0x10, 0xd0, 0x80, 0x22, + 0xd8, 0x00, 0xd2, 0x04, 0x02, 0x43, 0x90, 0x46, 0x00, 0x20, 0x7f, 0x39, + 0x4a, 0x46, 0x33, 0x00, 0x7f, 0x1a, 0x02, 0x43, 0x6c, 0x49, 0x92, 0x00, + 0x8a, 0x58, 0x63, 0x40, 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2b, 0x6d, 0xd1, + 0x02, 0x20, 0xff, 0x3f, 0x33, 0xe0, 0x00, 0x23, 0x98, 0x46, 0x26, 0x00, + 0x45, 0x46, 0x82, 0x46, 0x53, 0x46, 0x02, 0x2b, 0x00, 0xd1, 0x7f, 0xe0, + 0x03, 0x2b, 0x00, 0xd1, 0x94, 0xe0, 0x01, 0x2b, 0x17, 0xd0, 0x38, 0x00, + 0x7f, 0x30, 0x00, 0x28, 0x5f, 0xdd, 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, + 0x2b, 0x40, 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x35, 0x2b, 0x01, 0x03, 0xd5, + 0x38, 0x00, 0x5a, 0x4b, 0x80, 0x30, 0x1d, 0x40, 0xfe, 0x28, 0x67, 0xdc, + 0xad, 0x01, 0x6d, 0x0a, 0xc0, 0xb2, 0x02, 0xe0, 0x1e, 0x00, 0x00, 0x20, + 0x00, 0x25, 0xc0, 0x05, 0x28, 0x43, 0xf6, 0x07, 0x30, 0x43, 0x1c, 0xbc, + 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x00, 0x2b, 0x2b, 0xd1, + 0x01, 0x20, 0x4a, 0x46, 0x33, 0x00, 0x4e, 0x49, 0x02, 0x43, 0x92, 0x00, + 0x8a, 0x58, 0x63, 0x40, 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2d, 0x13, 0xd1, + 0x04, 0x23, 0x99, 0x46, 0x03, 0x3b, 0x00, 0x27, 0x9a, 0x46, 0x9a, 0xe7, + 0x00, 0x2d, 0x05, 0xd1, 0x08, 0x23, 0x99, 0x46, 0x06, 0x3b, 0xff, 0x27, + 0x9a, 0x46, 0x92, 0xe7, 0x0c, 0x23, 0x99, 0x46, 0x09, 0x3b, 0xff, 0x27, + 0x9a, 0x46, 0x8c, 0xe7, 0x28, 0x00, 0x01, 0xf0, 0x2d, 0xfb, 0x76, 0x27, + 0x43, 0x1f, 0x9d, 0x40, 0x00, 0x23, 0x7f, 0x42, 0x99, 0x46, 0x9a, 0x46, + 0x3f, 0x1a, 0x80, 0xe7, 0x18, 0x00, 0x01, 0xf0, 0x21, 0xfb, 0x42, 0x46, + 0x43, 0x1f, 0x76, 0x21, 0x9a, 0x40, 0x49, 0x42, 0x09, 0x1a, 0x90, 0x46, + 0x00, 0x20, 0x85, 0xe7, 0xff, 0x21, 0x03, 0x20, 0x82, 0xe7, 0x1e, 0x00, + 0xff, 0x20, 0x00, 0x25, 0xb5, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, + 0xaf, 0xdc, 0x9e, 0x37, 0x29, 0x00, 0xbd, 0x40, 0xd9, 0x40, 0x6a, 0x1e, + 0x95, 0x41, 0x0d, 0x43, 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x2b, 0x40, + 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x35, 0x6b, 0x01, 0x44, 0xd5, 0x01, 0x20, + 0x00, 0x25, 0x9e, 0xe7, 0xff, 0x20, 0x00, 0x25, 0x9b, 0xe7, 0x80, 0x25, + 0x00, 0x26, 0xff, 0x20, 0xed, 0x03, 0x96, 0xe7, 0x00, 0x23, 0x98, 0x46, + 0x80, 0x20, 0xc0, 0x03, 0x05, 0x42, 0x09, 0xd0, 0x43, 0x46, 0x03, 0x42, + 0x06, 0xd1, 0x45, 0x46, 0x05, 0x43, 0x6d, 0x02, 0x26, 0x00, 0xff, 0x20, + 0x6d, 0x0a, 0x86, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x05, 0x43, 0x6d, 0x02, + 0xff, 0x20, 0x6d, 0x0a, 0x7f, 0xe7, 0x41, 0x46, 0x6a, 0x01, 0x48, 0x01, + 0x82, 0x42, 0x19, 0xd2, 0x1b, 0x21, 0x00, 0x25, 0x01, 0x3f, 0x01, 0x26, + 0x14, 0x00, 0x6d, 0x00, 0x52, 0x00, 0x00, 0x2c, 0x01, 0xdb, 0x90, 0x42, + 0x01, 0xd8, 0x12, 0x1a, 0x35, 0x43, 0x01, 0x39, 0x00, 0x29, 0xf3, 0xd1, + 0x50, 0x1e, 0x82, 0x41, 0x38, 0x00, 0x7f, 0x30, 0x1e, 0x00, 0x15, 0x43, + 0x00, 0x28, 0x00, 0xdd, 0x4b, 0xe7, 0xaa, 0xe7, 0x1a, 0x21, 0x01, 0x25, + 0x12, 0x1a, 0xe4, 0xe7, 0xad, 0x01, 0x00, 0x20, 0x6d, 0x0a, 0x58, 0xe7, + 0x64, 0x35, 0x00, 0x08, 0xff, 0xff, 0xff, 0xf7, 0xa4, 0x35, 0x00, 0x08, + 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x44, 0x02, + 0xe0, 0xb5, 0x45, 0x00, 0x0f, 0x1c, 0x64, 0x0a, 0x2d, 0x0e, 0xc6, 0x0f, + 0x00, 0x2d, 0x47, 0xd0, 0xff, 0x2d, 0x4d, 0xd0, 0x00, 0x23, 0x80, 0x20, + 0x9a, 0x46, 0x9b, 0x46, 0xe4, 0x00, 0xc0, 0x04, 0x04, 0x43, 0x7f, 0x3d, + 0x78, 0x02, 0x43, 0x0a, 0x99, 0x46, 0x7a, 0x00, 0xfb, 0x0f, 0x98, 0x46, + 0x12, 0x0e, 0x4b, 0x46, 0x44, 0xd0, 0xff, 0x2a, 0x11, 0xd0, 0xd8, 0x00, + 0x80, 0x23, 0xdb, 0x04, 0x03, 0x43, 0x99, 0x46, 0x00, 0x20, 0x7f, 0x3a, + 0xad, 0x18, 0x47, 0x46, 0x53, 0x46, 0x77, 0x40, 0x69, 0x1c, 0x0f, 0x2b, + 0x3f, 0xd8, 0x72, 0x4a, 0x9b, 0x00, 0xd3, 0x58, 0x9f, 0x46, 0xff, 0x35, + 0x00, 0x2b, 0x00, 0xd0, 0x79, 0xe0, 0x52, 0x46, 0x02, 0x23, 0x1a, 0x43, + 0x92, 0x46, 0x02, 0x20, 0xeb, 0xe7, 0x47, 0x46, 0x4c, 0x46, 0x83, 0x46, + 0x5b, 0x46, 0x02, 0x2b, 0x28, 0xd0, 0x03, 0x2b, 0x00, 0xd1, 0xc6, 0xe0, + 0x01, 0x2b, 0x4f, 0xd1, 0x00, 0x20, 0x00, 0x24, 0xc0, 0x05, 0xff, 0x07, + 0x20, 0x43, 0x38, 0x43, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf8, 0xbd, 0x00, 0x2c, 0x71, 0xd1, 0x04, 0x23, 0x9a, 0x46, + 0x03, 0x3b, 0x00, 0x25, 0x9b, 0x46, 0xb9, 0xe7, 0x00, 0x2c, 0x63, 0xd1, + 0x08, 0x23, 0x9a, 0x46, 0x06, 0x3b, 0xff, 0x25, 0x9b, 0x46, 0xb1, 0xe7, + 0x00, 0x2b, 0x50, 0xd1, 0x52, 0x46, 0x01, 0x33, 0x1a, 0x43, 0x92, 0x46, + 0x01, 0x20, 0xbc, 0xe7, 0xff, 0x20, 0x00, 0x24, 0xda, 0xe7, 0x48, 0x46, + 0x26, 0x0c, 0x24, 0x04, 0x22, 0x0c, 0x04, 0x04, 0x24, 0x0c, 0x4b, 0x46, + 0x20, 0x00, 0x1b, 0x0c, 0x50, 0x43, 0x74, 0x43, 0x5a, 0x43, 0x5e, 0x43, + 0x12, 0x19, 0x03, 0x0c, 0x9b, 0x18, 0x9c, 0x42, 0x03, 0xd9, 0x80, 0x22, + 0x52, 0x02, 0x94, 0x46, 0x66, 0x44, 0x00, 0x04, 0x1a, 0x04, 0x00, 0x0c, + 0x12, 0x18, 0x94, 0x01, 0x60, 0x1e, 0x84, 0x41, 0x1b, 0x0c, 0x92, 0x0e, + 0x9b, 0x19, 0x14, 0x43, 0x9b, 0x01, 0x1c, 0x43, 0x1b, 0x01, 0x72, 0xd5, + 0x01, 0x20, 0x63, 0x08, 0x04, 0x40, 0x1c, 0x43, 0x08, 0x00, 0x7f, 0x30, + 0x00, 0x28, 0x3c, 0xdd, 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x23, 0x40, + 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x34, 0x23, 0x01, 0x03, 0xd5, 0x80, 0x31, + 0x08, 0x00, 0x37, 0x4b, 0x1c, 0x40, 0xfe, 0x28, 0xc0, 0xdc, 0xa4, 0x01, + 0x64, 0x0a, 0xc0, 0xb2, 0x9a, 0xe7, 0x37, 0x00, 0x8e, 0xe7, 0x52, 0x46, + 0x03, 0x23, 0x1a, 0x43, 0x92, 0x46, 0x03, 0x20, 0x71, 0xe7, 0x48, 0x46, + 0x01, 0xf0, 0xf2, 0xf9, 0x4a, 0x46, 0x43, 0x1f, 0x9a, 0x40, 0x2d, 0x1a, + 0x91, 0x46, 0x00, 0x20, 0x76, 0x3d, 0x66, 0xe7, 0x0c, 0x23, 0x9a, 0x46, + 0x09, 0x3b, 0xff, 0x25, 0x9b, 0x46, 0x4d, 0xe7, 0x20, 0x00, 0x01, 0xf0, + 0xe1, 0xf9, 0x76, 0x25, 0x43, 0x1f, 0x9c, 0x40, 0x00, 0x23, 0x6d, 0x42, + 0x9a, 0x46, 0x9b, 0x46, 0x2d, 0x1a, 0x41, 0xe7, 0x80, 0x24, 0x00, 0x27, + 0xff, 0x20, 0xe4, 0x03, 0x70, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, + 0x00, 0xdd, 0x69, 0xe7, 0x9e, 0x31, 0x20, 0x00, 0x8c, 0x40, 0xd8, 0x40, + 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x43, 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, + 0x23, 0x40, 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x34, 0x63, 0x01, 0x1a, 0xd5, + 0x01, 0x20, 0x00, 0x24, 0x58, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x42, + 0x09, 0xd0, 0x4b, 0x46, 0x03, 0x42, 0x06, 0xd1, 0x4c, 0x46, 0x04, 0x43, + 0x64, 0x02, 0x47, 0x46, 0xff, 0x20, 0x64, 0x0a, 0x4a, 0xe7, 0x80, 0x20, + 0xc0, 0x03, 0x04, 0x43, 0x64, 0x02, 0x37, 0x00, 0xff, 0x20, 0x64, 0x0a, + 0x42, 0xe7, 0x29, 0x00, 0x8e, 0xe7, 0xa4, 0x01, 0x00, 0x20, 0x64, 0x0a, + 0x3c, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x43, 0x64, 0x02, 0xff, 0x20, + 0x64, 0x0a, 0x35, 0xe7, 0xe4, 0x35, 0x00, 0x08, 0xff, 0xff, 0xff, 0xf7, + 0xf0, 0xb5, 0x46, 0x46, 0xd6, 0x46, 0x4f, 0x46, 0x43, 0x02, 0x5b, 0x0a, + 0xda, 0x00, 0x94, 0x46, 0x4a, 0x02, 0xc0, 0xb5, 0x44, 0x00, 0x56, 0x0a, + 0x05, 0x1c, 0xb0, 0x46, 0x24, 0x0e, 0x4e, 0x00, 0x92, 0x09, 0x1f, 0x00, + 0x20, 0x00, 0x92, 0x46, 0xed, 0x0f, 0x36, 0x0e, 0xc9, 0x0f, 0xff, 0x2e, + 0x00, 0xd1, 0x7f, 0xe0, 0x01, 0x22, 0x51, 0x40, 0x8d, 0x42, 0x51, 0xd0, + 0xa2, 0x1b, 0x91, 0x46, 0x00, 0x2a, 0x00, 0xdc, 0x7e, 0xe0, 0x00, 0x2e, + 0x00, 0xd1, 0x99, 0xe0, 0xff, 0x2c, 0x00, 0xd1, 0x8c, 0xe0, 0x80, 0x23, + 0x52, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x92, 0x46, 0x4a, 0x46, 0x01, 0x23, + 0x1b, 0x2a, 0x08, 0xdc, 0x53, 0x46, 0x20, 0x21, 0xd3, 0x40, 0x89, 0x1a, + 0x52, 0x46, 0x8a, 0x40, 0x51, 0x1e, 0x8a, 0x41, 0x13, 0x43, 0x62, 0x46, + 0xd3, 0x1a, 0x5a, 0x01, 0x00, 0xd4, 0xf3, 0xe0, 0x9b, 0x01, 0x9e, 0x09, + 0x30, 0x00, 0x01, 0xf0, 0x4f, 0xf9, 0x05, 0x38, 0x86, 0x40, 0x84, 0x42, + 0x00, 0xdd, 0xf7, 0xe0, 0x32, 0x00, 0x04, 0x1b, 0x20, 0x20, 0x01, 0x34, + 0xe2, 0x40, 0x04, 0x1b, 0xa6, 0x40, 0x33, 0x00, 0x5e, 0x1e, 0xb3, 0x41, + 0x00, 0x24, 0x13, 0x43, 0x5a, 0x07, 0x04, 0xd0, 0x0f, 0x22, 0x1a, 0x40, + 0x04, 0x2a, 0x00, 0xd0, 0x04, 0x33, 0x5a, 0x01, 0x00, 0xd4, 0xd6, 0xe0, + 0x62, 0x1c, 0xfe, 0x2c, 0x00, 0xd1, 0xda, 0xe0, 0x9b, 0x01, 0x5f, 0x0a, + 0xd0, 0xb2, 0xc0, 0x05, 0x38, 0x43, 0xed, 0x07, 0x28, 0x43, 0x1c, 0xbc, + 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0xa2, 0x1b, 0x91, 0x46, + 0x00, 0x2a, 0x63, 0xdd, 0x00, 0x2e, 0x00, 0xd1, 0x99, 0xe0, 0xff, 0x2c, + 0x3c, 0xd0, 0x80, 0x23, 0x52, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x92, 0x46, + 0x4a, 0x46, 0x01, 0x23, 0x1b, 0x2a, 0x08, 0xdc, 0x53, 0x46, 0x20, 0x21, + 0xd3, 0x40, 0x89, 0x1a, 0x52, 0x46, 0x8a, 0x40, 0x51, 0x1e, 0x8a, 0x41, + 0x13, 0x43, 0x63, 0x44, 0x5a, 0x01, 0x00, 0xd4, 0xa4, 0xe0, 0x01, 0x34, + 0xff, 0x2c, 0x00, 0xd1, 0xab, 0xe0, 0x01, 0x22, 0x97, 0x49, 0x1a, 0x40, + 0x5b, 0x08, 0x0b, 0x40, 0x13, 0x43, 0xbb, 0xe7, 0x00, 0x2a, 0x32, 0xd0, + 0x8d, 0x42, 0x35, 0xd0, 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, + 0x4a, 0x46, 0x00, 0x2a, 0x51, 0xd0, 0x30, 0x1b, 0x00, 0x2c, 0x00, 0xd0, + 0x9c, 0xe0, 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0xdf, 0xe0, 0x01, 0x38, + 0x00, 0x28, 0x00, 0xd1, 0xf7, 0xe0, 0xff, 0x2e, 0x00, 0xd0, 0x99, 0xe0, + 0x0d, 0x00, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x85, 0xe0, 0x80, 0x27, + 0xff, 0x03, 0x1f, 0x43, 0x7f, 0x02, 0xff, 0x20, 0x7f, 0x0a, 0xa6, 0xe7, + 0x52, 0x46, 0x00, 0x2a, 0x74, 0xd0, 0x01, 0x22, 0x52, 0x42, 0x90, 0x46, + 0xc1, 0x44, 0x4a, 0x46, 0x00, 0x2a, 0x00, 0xd1, 0xc8, 0xe0, 0xff, 0x2c, + 0x00, 0xd0, 0x5f, 0xe7, 0xe6, 0xe7, 0x01, 0x22, 0x51, 0x40, 0xa9, 0x42, + 0x00, 0xd0, 0x49, 0xe7, 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, + 0x4a, 0x46, 0x00, 0x2a, 0x43, 0xd0, 0x31, 0x1b, 0x00, 0x2c, 0x00, 0xd1, + 0x8c, 0xe0, 0xff, 0x2e, 0x00, 0xd1, 0x92, 0xe0, 0x80, 0x23, 0x62, 0x46, + 0xdb, 0x04, 0x1a, 0x43, 0x94, 0x46, 0x01, 0x23, 0x1b, 0x29, 0x09, 0xdc, + 0x20, 0x20, 0x63, 0x46, 0x62, 0x46, 0xcb, 0x40, 0x41, 0x1a, 0x8a, 0x40, + 0x11, 0x00, 0x48, 0x1e, 0x81, 0x41, 0x0b, 0x43, 0x34, 0x00, 0x53, 0x44, + 0x94, 0xe7, 0xfe, 0x22, 0x66, 0x1c, 0x32, 0x42, 0x64, 0xd1, 0x00, 0x2c, + 0x00, 0xd0, 0x82, 0xe0, 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0xab, 0xe0, + 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x60, 0xe7, 0x63, 0x46, 0x52, 0x46, + 0x9b, 0x1a, 0x5a, 0x01, 0x00, 0xd4, 0xaa, 0xe0, 0x63, 0x46, 0x52, 0x46, + 0x0d, 0x00, 0xd3, 0x1a, 0x44, 0xe7, 0x52, 0x46, 0x00, 0x2a, 0x23, 0xd0, + 0x01, 0x22, 0x52, 0x42, 0x90, 0x46, 0xc1, 0x44, 0x4a, 0x46, 0x00, 0x2a, + 0x75, 0xd0, 0xff, 0x2c, 0x00, 0xd0, 0x5f, 0xe7, 0x96, 0xe7, 0xfe, 0x26, + 0x01, 0x34, 0x26, 0x42, 0x53, 0xd1, 0x00, 0x28, 0x72, 0xd1, 0x63, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0x93, 0xe0, 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd1, + 0x39, 0xe7, 0x63, 0x44, 0x00, 0x24, 0x5a, 0x01, 0x02, 0xd5, 0x4a, 0x4a, + 0x01, 0x34, 0x13, 0x40, 0x5a, 0x07, 0x00, 0xd0, 0x20, 0xe7, 0xdb, 0x08, + 0xff, 0x2c, 0x00, 0xd1, 0x7a, 0xe7, 0x5b, 0x02, 0x5f, 0x0a, 0xe0, 0xb2, + 0x27, 0xe7, 0xff, 0x20, 0x00, 0x27, 0x24, 0xe7, 0x41, 0x4b, 0x24, 0x1a, + 0x33, 0x40, 0x0f, 0xe7, 0xff, 0x2e, 0x00, 0xd1, 0x6a, 0xe7, 0x80, 0x23, + 0x62, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x94, 0x46, 0x01, 0x23, 0x1b, 0x28, + 0x09, 0xdc, 0x20, 0x24, 0x63, 0x46, 0x62, 0x46, 0xc3, 0x40, 0x20, 0x1a, + 0x82, 0x40, 0x10, 0x00, 0x44, 0x1e, 0xa0, 0x41, 0x03, 0x43, 0x52, 0x46, + 0x0d, 0x00, 0x34, 0x00, 0xd3, 0x1a, 0xdc, 0xe6, 0x63, 0x46, 0x52, 0x46, + 0x9e, 0x1a, 0x73, 0x01, 0x17, 0xd4, 0x00, 0x2e, 0x00, 0xd0, 0xd9, 0xe6, + 0x00, 0x25, 0x00, 0x20, 0x00, 0x27, 0xfa, 0xe6, 0x63, 0x46, 0x00, 0x2b, + 0x44, 0xd0, 0x01, 0x39, 0x00, 0x29, 0x4c, 0xd0, 0xff, 0x2e, 0x00, 0xd0, + 0x71, 0xe7, 0x43, 0x46, 0x3e, 0xe7, 0xff, 0x2c, 0xc5, 0xd0, 0x52, 0x46, + 0x62, 0x44, 0x53, 0x08, 0xb6, 0xe7, 0x63, 0x46, 0x0d, 0x00, 0xd6, 0x1a, + 0xc0, 0xe6, 0x62, 0x46, 0x00, 0x2a, 0x16, 0xd1, 0x53, 0x46, 0x00, 0x2b, + 0x00, 0xd0, 0x2b, 0xe7, 0x80, 0x27, 0x00, 0x25, 0xff, 0x20, 0xff, 0x03, + 0xd9, 0xe6, 0x0d, 0x00, 0x43, 0x46, 0x34, 0x00, 0xa6, 0xe7, 0x53, 0x46, + 0x63, 0x44, 0xf7, 0xe6, 0x63, 0x46, 0x52, 0x46, 0x9b, 0x1a, 0xa4, 0xe6, + 0x62, 0x46, 0x00, 0x2a, 0xd9, 0xd0, 0x52, 0x46, 0x00, 0x2a, 0x00, 0xd1, + 0x16, 0xe7, 0x80, 0x22, 0xd2, 0x03, 0x13, 0x42, 0x00, 0xd1, 0x11, 0xe7, + 0x40, 0x46, 0x10, 0x42, 0x00, 0xd0, 0x0d, 0xe7, 0x0a, 0xe7, 0x52, 0x46, + 0x0d, 0x00, 0x34, 0x00, 0xd3, 0x1a, 0x8e, 0xe6, 0x53, 0x46, 0x00, 0x2b, + 0x08, 0xd0, 0x0d, 0x00, 0x47, 0x46, 0xb2, 0xe6, 0x43, 0x46, 0x34, 0x00, + 0x80, 0xe7, 0x00, 0x2b, 0x00, 0xd0, 0x79, 0xe7, 0x00, 0x25, 0x00, 0x27, + 0xa9, 0xe6, 0x47, 0x46, 0xa7, 0xe6, 0x53, 0x46, 0x34, 0x00, 0x63, 0x44, + 0xc8, 0xe6, 0xc0, 0x46, 0xff, 0xff, 0xff, 0x7d, 0xff, 0xff, 0xff, 0xfb, + 0x41, 0x02, 0x42, 0x00, 0xc3, 0x0f, 0x49, 0x0a, 0x00, 0x20, 0x12, 0x0e, + 0x7e, 0x2a, 0x03, 0xd9, 0x9d, 0x2a, 0x02, 0xd9, 0x09, 0x4a, 0x98, 0x18, + 0x70, 0x47, 0x80, 0x20, 0x00, 0x04, 0x01, 0x43, 0x95, 0x2a, 0x07, 0xdc, + 0x96, 0x20, 0x82, 0x1a, 0xd1, 0x40, 0x48, 0x42, 0x00, 0x2b, 0xf3, 0xd1, + 0x08, 0x00, 0xf1, 0xe7, 0x96, 0x3a, 0x91, 0x40, 0xf7, 0xe7, 0xc0, 0x46, + 0xff, 0xff, 0xff, 0x7f, 0x70, 0xb5, 0x05, 0x1e, 0x0e, 0xd0, 0x00, 0xf0, + 0xa7, 0xff, 0x9e, 0x23, 0x04, 0x00, 0x1b, 0x1a, 0x96, 0x2b, 0x0c, 0xdc, + 0x08, 0x28, 0x01, 0xdd, 0x08, 0x3c, 0xa5, 0x40, 0x6d, 0x02, 0x6d, 0x0a, + 0xd8, 0xb2, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x25, 0xc0, 0x05, 0x28, 0x43, + 0x70, 0xbd, 0x99, 0x2b, 0x09, 0xdd, 0x02, 0x00, 0x29, 0x00, 0x1b, 0x32, + 0x91, 0x40, 0x4a, 0x1e, 0x91, 0x41, 0x05, 0x22, 0x12, 0x1a, 0xd5, 0x40, + 0x0d, 0x43, 0x05, 0x2c, 0x01, 0xdd, 0x62, 0x1f, 0x95, 0x40, 0x29, 0x00, + 0x08, 0x4e, 0x31, 0x40, 0x6a, 0x07, 0x09, 0xd0, 0x0f, 0x20, 0x28, 0x40, + 0x04, 0x28, 0x05, 0xd0, 0x04, 0x31, 0x4a, 0x01, 0x02, 0xd5, 0x9f, 0x23, + 0x31, 0x40, 0x1b, 0x1b, 0x89, 0x01, 0x4d, 0x0a, 0xd8, 0xb2, 0xd9, 0xe7, + 0xff, 0xff, 0xff, 0xfb, 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, + 0xde, 0x46, 0xe0, 0xb5, 0x81, 0x46, 0x05, 0x00, 0x0c, 0x03, 0x48, 0x00, + 0x92, 0x46, 0x1f, 0x00, 0x85, 0xb0, 0x24, 0x0b, 0x40, 0x0d, 0xce, 0x0f, + 0x00, 0x28, 0x59, 0xd0, 0x87, 0x4b, 0x98, 0x42, 0x00, 0xd1, 0x98, 0xe0, + 0x6b, 0x0f, 0xe4, 0x00, 0x1c, 0x43, 0x80, 0x23, 0x1b, 0x04, 0x23, 0x43, + 0x98, 0x46, 0x83, 0x4b, 0xed, 0x00, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, + 0x83, 0x44, 0x00, 0x93, 0x3c, 0x03, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, + 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x67, 0xd0, 0x7a, 0x4a, 0x93, 0x42, + 0x18, 0xd0, 0x7a, 0x49, 0x42, 0x0f, 0x8c, 0x46, 0xe4, 0x00, 0x59, 0x46, + 0x14, 0x43, 0x80, 0x22, 0x63, 0x44, 0x12, 0x04, 0xcb, 0x1a, 0x14, 0x43, + 0x9b, 0x46, 0xc2, 0x00, 0x00, 0x20, 0x33, 0x00, 0x7b, 0x40, 0x9a, 0x46, + 0x4b, 0x46, 0x0f, 0x2b, 0x00, 0xd9, 0xef, 0xe0, 0x70, 0x49, 0x9b, 0x00, + 0xcb, 0x58, 0x9f, 0x46, 0x6f, 0x4b, 0x52, 0x46, 0x9c, 0x46, 0x22, 0x43, + 0xe3, 0x44, 0x00, 0x2a, 0x00, 0xd0, 0x95, 0xe0, 0x49, 0x46, 0x02, 0x23, + 0x19, 0x43, 0x89, 0x46, 0x00, 0x24, 0x02, 0x20, 0xe5, 0xe7, 0x00, 0x23, + 0x00, 0x24, 0x00, 0x25, 0x52, 0x46, 0x1b, 0x05, 0x23, 0x43, 0xd2, 0x07, + 0x13, 0x43, 0x28, 0x00, 0x19, 0x00, 0x05, 0xb0, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x24, 0x00, 0x25, + 0x5b, 0x4b, 0xed, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x00, 0xd1, + 0x89, 0xe0, 0x00, 0x2c, 0x00, 0xd1, 0xe0, 0xe1, 0x20, 0x00, 0x00, 0xf0, + 0xf9, 0xfe, 0x01, 0x00, 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x5b, 0x1a, + 0x49, 0x46, 0x10, 0x00, 0xd9, 0x40, 0x08, 0x38, 0x84, 0x40, 0x0b, 0x00, + 0x4d, 0x46, 0x23, 0x43, 0x98, 0x46, 0x85, 0x40, 0x51, 0x48, 0x3c, 0x03, + 0x83, 0x1a, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, 0x00, 0x93, 0x7b, 0x00, + 0x50, 0x46, 0x24, 0x0b, 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x97, 0xd1, + 0x52, 0x46, 0x22, 0x43, 0x55, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0xca, 0xe1, + 0x20, 0x00, 0x00, 0xf0, 0xd3, 0xfe, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, + 0x01, 0x00, 0x9b, 0x1a, 0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8c, 0x40, + 0x14, 0x43, 0x52, 0x46, 0x8a, 0x40, 0x41, 0x4b, 0x58, 0x44, 0x9b, 0x46, + 0x83, 0x44, 0x00, 0x20, 0x8d, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, + 0x40, 0xd1, 0x08, 0x23, 0x99, 0x46, 0x06, 0x3b, 0x00, 0x25, 0x83, 0x46, + 0x00, 0x93, 0x69, 0xe7, 0xb2, 0x46, 0x00, 0x9b, 0x02, 0x2b, 0xa9, 0xd0, + 0x03, 0x2b, 0x00, 0xd1, 0x11, 0xe2, 0x01, 0x2b, 0x93, 0xd0, 0x35, 0x4a, + 0x5a, 0x44, 0x00, 0x2a, 0x00, 0xdc, 0x3c, 0xe1, 0x6b, 0x07, 0x00, 0xd0, + 0xa7, 0xe1, 0xed, 0x08, 0x43, 0x46, 0xdb, 0x01, 0x06, 0xd5, 0x42, 0x46, + 0x2f, 0x4b, 0x1a, 0x40, 0x90, 0x46, 0x80, 0x22, 0xd2, 0x00, 0x5a, 0x44, + 0x2d, 0x4b, 0x9a, 0x42, 0x8e, 0xdc, 0x43, 0x46, 0x52, 0x05, 0x58, 0x07, + 0x5c, 0x02, 0x05, 0x43, 0x24, 0x0b, 0x53, 0x0d, 0x78, 0xe7, 0xba, 0x46, + 0xa0, 0x46, 0x15, 0x00, 0x00, 0x90, 0xd4, 0xe7, 0x4a, 0x46, 0x03, 0x23, + 0x1a, 0x43, 0x91, 0x46, 0x03, 0x20, 0x52, 0x46, 0x4f, 0xe7, 0x49, 0x46, + 0x01, 0x23, 0x19, 0x43, 0x89, 0x46, 0x00, 0x24, 0x01, 0x20, 0x48, 0xe7, + 0x0c, 0x23, 0x99, 0x46, 0x09, 0x3b, 0xa0, 0x46, 0x83, 0x46, 0x00, 0x93, + 0x28, 0xe7, 0x04, 0x23, 0x99, 0x46, 0x00, 0x23, 0x9b, 0x46, 0x01, 0x33, + 0x00, 0x25, 0x00, 0x93, 0x20, 0xe7, 0x00, 0x23, 0x80, 0x24, 0x9a, 0x46, + 0x00, 0x25, 0x0d, 0x4b, 0x24, 0x03, 0x4f, 0xe7, 0x80, 0x23, 0x41, 0x46, + 0x1b, 0x03, 0x19, 0x42, 0x08, 0xd0, 0x1c, 0x42, 0x06, 0xd1, 0x1c, 0x43, + 0x24, 0x03, 0xba, 0x46, 0x15, 0x00, 0x06, 0x4b, 0x24, 0x0b, 0x41, 0xe7, + 0x80, 0x24, 0x43, 0x46, 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0xb2, 0x46, + 0x01, 0x4b, 0x24, 0x0b, 0x38, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0x01, 0xfc, 0xff, 0xff, 0x24, 0x36, 0x00, 0x08, 0x01, 0xf8, 0xff, 0xff, + 0x0d, 0xfc, 0xff, 0xff, 0xf3, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xfe, 0xfe, 0x07, 0x00, 0x00, 0x44, 0x45, 0x00, 0xd2, + 0x16, 0xe1, 0x00, 0xd1, 0x11, 0xe1, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, + 0x2e, 0x00, 0x40, 0x46, 0x00, 0x25, 0xe3, 0x44, 0x23, 0x02, 0x14, 0x0e, + 0x1c, 0x43, 0x1b, 0x0c, 0x99, 0x46, 0x23, 0x04, 0x1f, 0x0c, 0x12, 0x02, + 0x49, 0x46, 0x00, 0x92, 0x01, 0x97, 0xff, 0xf7, 0x2d, 0xfa, 0x02, 0x00, + 0x7a, 0x43, 0x0b, 0x04, 0x31, 0x0c, 0x80, 0x46, 0x19, 0x43, 0x8a, 0x42, + 0x0b, 0xd9, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x09, 0x19, 0xe0, 0x44, + 0x8c, 0x42, 0x04, 0xd8, 0x8a, 0x42, 0x02, 0xd9, 0x83, 0x1e, 0x98, 0x46, + 0x09, 0x19, 0x88, 0x1a, 0x49, 0x46, 0xff, 0xf7, 0x15, 0xfa, 0x09, 0x04, + 0x8c, 0x46, 0x31, 0x04, 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, + 0x03, 0x00, 0x31, 0x43, 0x8a, 0x42, 0x04, 0xd9, 0x09, 0x19, 0x01, 0x3b, + 0x8c, 0x42, 0x00, 0xd8, 0x11, 0xe1, 0x89, 0x1a, 0x42, 0x46, 0x00, 0x9e, + 0x12, 0x04, 0x1a, 0x43, 0x33, 0x0c, 0x1f, 0x00, 0x10, 0x0c, 0x90, 0x46, + 0x02, 0x93, 0x13, 0x04, 0x32, 0x04, 0x16, 0x0c, 0x32, 0x00, 0x1b, 0x0c, + 0x5a, 0x43, 0x03, 0x96, 0x7b, 0x43, 0x46, 0x43, 0x78, 0x43, 0x17, 0x0c, + 0xbc, 0x46, 0x9b, 0x19, 0x63, 0x44, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, + 0x76, 0x02, 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x30, 0x18, 0x16, 0x04, + 0x1b, 0x04, 0x36, 0x0c, 0x9e, 0x19, 0x81, 0x42, 0x00, 0xd2, 0x9c, 0xe0, + 0x00, 0xd1, 0x97, 0xe0, 0xae, 0x1b, 0x09, 0x1a, 0xb5, 0x42, 0x80, 0x41, + 0x40, 0x42, 0x08, 0x1a, 0x84, 0x42, 0x00, 0xd1, 0x11, 0xe1, 0x49, 0x46, + 0xff, 0xf7, 0xd0, 0xf9, 0x01, 0x9a, 0x0b, 0x04, 0x42, 0x43, 0x31, 0x0c, + 0x05, 0x00, 0x19, 0x43, 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3d, + 0x8c, 0x42, 0x03, 0xd8, 0x8a, 0x42, 0x01, 0xd9, 0x85, 0x1e, 0x09, 0x19, + 0x88, 0x1a, 0x49, 0x46, 0xff, 0xf7, 0xbc, 0xf9, 0x09, 0x04, 0x8c, 0x46, + 0x31, 0x04, 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, + 0x31, 0x43, 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, + 0x03, 0xd8, 0x8a, 0x42, 0x01, 0xd9, 0x83, 0x1e, 0x09, 0x19, 0x03, 0x9e, + 0x89, 0x1a, 0x32, 0x00, 0x2d, 0x04, 0x1d, 0x43, 0x02, 0x9f, 0x2b, 0x04, + 0x1b, 0x0c, 0x5a, 0x43, 0x7b, 0x43, 0x9c, 0x46, 0x28, 0x0c, 0x46, 0x43, + 0x13, 0x0c, 0xb4, 0x44, 0x63, 0x44, 0x78, 0x43, 0x9e, 0x42, 0x03, 0xd9, + 0x80, 0x26, 0x76, 0x02, 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x12, 0x04, + 0x1b, 0x04, 0x12, 0x0c, 0x30, 0x18, 0x9b, 0x18, 0x81, 0x42, 0x06, 0xd3, + 0x02, 0xd0, 0x01, 0x23, 0x1d, 0x43, 0xce, 0xe6, 0x00, 0x2b, 0x00, 0xd1, + 0xcb, 0xe6, 0x61, 0x18, 0x6e, 0x1e, 0xa1, 0x42, 0x00, 0xd2, 0xa4, 0xe0, + 0x81, 0x42, 0x00, 0xd2, 0xc9, 0xe0, 0x00, 0xd1, 0xd9, 0xe0, 0x35, 0x00, + 0xed, 0xe7, 0x01, 0x25, 0x6d, 0x42, 0x01, 0x21, 0x89, 0x1a, 0x38, 0x29, + 0x00, 0xdd, 0x4c, 0xe6, 0x1f, 0x29, 0x00, 0xdc, 0x7f, 0xe0, 0x1f, 0x23, + 0x5b, 0x42, 0x9a, 0x1a, 0x43, 0x46, 0xd3, 0x40, 0x20, 0x29, 0x04, 0xd0, + 0x44, 0x46, 0x65, 0x4a, 0x5a, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, + 0x95, 0x41, 0x07, 0x22, 0x2b, 0x43, 0x15, 0x00, 0x00, 0x24, 0x1d, 0x40, + 0x1a, 0x42, 0x00, 0xd1, 0xa1, 0xe0, 0x0f, 0x22, 0x00, 0x24, 0x1a, 0x40, + 0x04, 0x2a, 0x00, 0xd1, 0x98, 0xe0, 0x1a, 0x1d, 0x9a, 0x42, 0x9b, 0x41, + 0x5b, 0x42, 0xe4, 0x18, 0x13, 0x00, 0x22, 0x02, 0x00, 0xd4, 0x8f, 0xe0, + 0x01, 0x23, 0x00, 0x24, 0x00, 0x25, 0x23, 0xe6, 0xb5, 0x42, 0x00, 0xd3, + 0x64, 0xe7, 0x43, 0x46, 0x5a, 0x1e, 0x00, 0x9b, 0x9c, 0x46, 0x65, 0x44, + 0x1f, 0x00, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, + 0x8c, 0x42, 0x3a, 0xd2, 0x88, 0x42, 0x63, 0xd8, 0x60, 0xd0, 0x90, 0x46, + 0x52, 0xe7, 0xaa, 0x42, 0x00, 0xd9, 0xea, 0xe6, 0x43, 0x46, 0xde, 0x07, + 0x58, 0x08, 0x6b, 0x08, 0x1e, 0x43, 0xed, 0x07, 0xea, 0xe6, 0x48, 0x46, + 0x00, 0xf0, 0x18, 0xfd, 0x01, 0x00, 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, + 0x1c, 0x29, 0x00, 0xdc, 0x1a, 0xe6, 0x4b, 0x46, 0x08, 0x38, 0x83, 0x40, + 0x00, 0x25, 0x98, 0x46, 0x20, 0xe6, 0x00, 0xf0, 0x09, 0xfd, 0x03, 0x00, + 0x1a, 0x00, 0x15, 0x32, 0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x30, 0xe6, + 0x54, 0x46, 0x08, 0x3b, 0x00, 0x22, 0x9c, 0x40, 0x35, 0xe6, 0x0f, 0x23, + 0x2b, 0x40, 0x04, 0x2b, 0x00, 0xd1, 0x52, 0xe6, 0x05, 0x23, 0x5b, 0x42, + 0xab, 0x42, 0x9b, 0x41, 0x04, 0x35, 0x5b, 0x42, 0xed, 0x08, 0x98, 0x44, + 0x4a, 0xe6, 0x8c, 0x42, 0xc5, 0xd1, 0xaf, 0x42, 0xc0, 0xd9, 0x90, 0x46, + 0x16, 0xe7, 0x8a, 0x42, 0x00, 0xd8, 0xea, 0xe6, 0x83, 0x1e, 0x09, 0x19, + 0xe7, 0xe6, 0x2a, 0x4a, 0x28, 0x00, 0x5a, 0x44, 0x43, 0x46, 0x95, 0x40, + 0x93, 0x40, 0xc8, 0x40, 0x6a, 0x1e, 0x95, 0x41, 0x44, 0x46, 0x03, 0x43, + 0x2b, 0x43, 0xcc, 0x40, 0x5a, 0x07, 0x92, 0xd0, 0x0f, 0x22, 0x1a, 0x40, + 0x04, 0x2a, 0x88, 0xd1, 0x8d, 0xe7, 0x35, 0x00, 0x81, 0x42, 0x00, 0xd0, + 0x4b, 0xe7, 0x00, 0x9a, 0x93, 0x42, 0x00, 0xd0, 0x47, 0xe7, 0x18, 0xe6, + 0xae, 0x42, 0x9c, 0xd9, 0x02, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x00, 0x9b, + 0xe0, 0x44, 0x9c, 0x46, 0x65, 0x44, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, + 0x1b, 0x19, 0xc9, 0x18, 0xe4, 0xe6, 0x15, 0x4a, 0x5a, 0x44, 0x00, 0x2a, + 0x00, 0xdc, 0x44, 0xe7, 0x01, 0x23, 0x00, 0x25, 0x98, 0x44, 0x09, 0xe6, + 0x65, 0x07, 0x64, 0x02, 0x24, 0x0b, 0xdb, 0x08, 0x1d, 0x43, 0x00, 0x23, + 0x90, 0xe5, 0x00, 0x9e, 0x02, 0x3d, 0x72, 0x00, 0xb2, 0x42, 0xbf, 0x41, + 0x7f, 0x42, 0x3c, 0x19, 0x09, 0x19, 0x00, 0x92, 0xce, 0xe7, 0x80, 0x24, + 0x43, 0x46, 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0x06, 0x4b, 0x24, 0x0b, + 0x7e, 0xe5, 0x00, 0x9a, 0x9a, 0x42, 0xea, 0xd3, 0x35, 0x00, 0xc4, 0xe7, + 0x3e, 0x04, 0x00, 0x00, 0x1e, 0x04, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, + 0xff, 0x07, 0x00, 0x00, 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, + 0xde, 0x46, 0x04, 0x00, 0xe0, 0xb5, 0x1f, 0x00, 0x10, 0x00, 0x0b, 0x03, + 0x62, 0x0f, 0x4e, 0x00, 0xcd, 0x0f, 0x5b, 0x0a, 0x39, 0x03, 0x13, 0x43, + 0x49, 0x0a, 0xe2, 0x00, 0x44, 0x0f, 0x21, 0x43, 0xc2, 0x4c, 0x91, 0x46, + 0x92, 0x46, 0xc0, 0x00, 0x7a, 0x00, 0x80, 0x46, 0x76, 0x0d, 0x52, 0x0d, + 0xff, 0x0f, 0xa2, 0x42, 0x00, 0xd1, 0xb4, 0xe0, 0x01, 0x24, 0x67, 0x40, + 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd1, 0x88, 0xe0, 0xb4, 0x1a, 0xa4, 0x46, + 0x00, 0x2c, 0x00, 0xdc, 0xb2, 0xe0, 0x00, 0x2a, 0x00, 0xd1, 0xc5, 0xe0, + 0xb5, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x8b, 0xe2, 0x80, 0x22, 0x12, 0x04, + 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, 0xa1, 0xe1, 0x1f, 0x2a, + 0x00, 0xdd, 0x16, 0xe2, 0x20, 0x27, 0x0c, 0x00, 0xbf, 0x1a, 0xbc, 0x40, + 0x02, 0x00, 0xa0, 0x46, 0x64, 0x46, 0xb8, 0x40, 0xe2, 0x40, 0x44, 0x46, + 0x14, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x60, 0x46, 0xc1, 0x40, + 0x22, 0x43, 0x5b, 0x1a, 0x49, 0x46, 0x8c, 0x1a, 0xa1, 0x45, 0x92, 0x41, + 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, + 0x17, 0xe1, 0x43, 0x46, 0x5b, 0x02, 0x5b, 0x0a, 0x98, 0x46, 0x43, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0x6c, 0xe1, 0x40, 0x46, 0x00, 0xf0, 0x24, 0xfc, + 0x02, 0x00, 0x08, 0x3a, 0x20, 0x21, 0x20, 0x00, 0x43, 0x46, 0x89, 0x1a, + 0x93, 0x40, 0xc8, 0x40, 0x94, 0x40, 0x03, 0x43, 0x96, 0x42, 0x00, 0xdd, + 0x57, 0xe1, 0x96, 0x1b, 0x71, 0x1c, 0x1f, 0x29, 0x00, 0xdd, 0xcb, 0xe1, + 0x20, 0x22, 0x18, 0x00, 0x26, 0x00, 0x52, 0x1a, 0x94, 0x40, 0x90, 0x40, + 0xce, 0x40, 0xcb, 0x40, 0x62, 0x1e, 0x94, 0x41, 0x30, 0x43, 0x98, 0x46, + 0x00, 0x26, 0x04, 0x43, 0x63, 0x07, 0x09, 0xd0, 0x0f, 0x23, 0x23, 0x40, + 0x04, 0x2b, 0x05, 0xd0, 0x23, 0x1d, 0xa3, 0x42, 0xa4, 0x41, 0x64, 0x42, + 0xa0, 0x44, 0x1c, 0x00, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0xdf, 0xe0, + 0x82, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd1, 0xfb, 0xe0, 0x42, 0x46, + 0x80, 0x4b, 0xe4, 0x08, 0x1a, 0x40, 0x13, 0x00, 0x71, 0x05, 0x52, 0x07, + 0x5b, 0x02, 0x22, 0x43, 0x1b, 0x0b, 0x49, 0x0d, 0x09, 0x05, 0xed, 0x07, + 0x19, 0x43, 0x29, 0x43, 0x10, 0x00, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, + 0xa2, 0x46, 0xab, 0x46, 0xf8, 0xbd, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, + 0x58, 0xdd, 0x00, 0x2a, 0x00, 0xd1, 0x9e, 0xe0, 0x71, 0x4a, 0x96, 0x42, + 0x00, 0xd1, 0x3b, 0xe1, 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, + 0x38, 0x2a, 0x00, 0xdd, 0xc1, 0xe0, 0x1f, 0x2a, 0x00, 0xdc, 0xbb, 0xe1, + 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, + 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, + 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x14, 0x43, 0xb1, 0xe0, 0x0c, 0x00, + 0x04, 0x43, 0x2a, 0xd0, 0xbb, 0x46, 0xbd, 0x42, 0x2d, 0xd0, 0x61, 0x4c, + 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, 0x5c, 0xd0, 0x94, 0x1b, + 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd0, 0x15, 0xe1, 0x4d, 0x46, 0x1d, 0x43, + 0x00, 0xd1, 0xc3, 0xe1, 0x65, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0x0c, 0xe2, + 0x55, 0x4e, 0xb4, 0x42, 0x00, 0xd1, 0xf8, 0xe1, 0xac, 0x46, 0x0e, 0xe1, + 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe1, 0x22, 0x00, 0x01, 0x3a, + 0x01, 0x2c, 0x00, 0xd1, 0xc6, 0xe1, 0x4e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, + 0xf4, 0xe0, 0x94, 0x46, 0x31, 0xe7, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, + 0xbd, 0x42, 0x00, 0xd0, 0x1c, 0xe7, 0x4a, 0x4c, 0xa4, 0x46, 0xb4, 0x44, + 0x64, 0x46, 0x00, 0x2c, 0x00, 0xd1, 0xcf, 0xe0, 0x94, 0x1b, 0xa4, 0x46, + 0x00, 0x2e, 0x00, 0xd1, 0x5c, 0xe1, 0x42, 0x4e, 0xb2, 0x42, 0x00, 0xd1, + 0xec, 0xe1, 0x80, 0x26, 0x36, 0x04, 0x33, 0x43, 0x64, 0x46, 0x38, 0x2c, + 0x00, 0xdd, 0xb3, 0xe1, 0x1f, 0x2c, 0x00, 0xdd, 0x38, 0xe2, 0x20, 0x26, + 0x36, 0x1b, 0x1c, 0x00, 0xb4, 0x40, 0x4f, 0x46, 0xa0, 0x46, 0x64, 0x46, + 0xe7, 0x40, 0x44, 0x46, 0x3c, 0x43, 0x4f, 0x46, 0xb7, 0x40, 0x3e, 0x00, + 0x77, 0x1e, 0xbe, 0x41, 0x34, 0x43, 0x66, 0x46, 0xf3, 0x40, 0xc9, 0x18, + 0x24, 0x18, 0x84, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x98, 0x46, 0x16, 0x00, + 0x88, 0x44, 0x4e, 0xe0, 0x30, 0x4a, 0x74, 0x1c, 0x14, 0x42, 0x00, 0xd0, + 0xd6, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, 0x00, 0xd0, 0x5b, 0xe1, + 0x00, 0x2a, 0x00, 0xd1, 0xa5, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, + 0xbb, 0xe1, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x27, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, 0x74, 0xe1, 0x22, 0x00, + 0x01, 0x3a, 0x01, 0x2c, 0x05, 0xd0, 0x1e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, + 0x94, 0xe0, 0x94, 0x46, 0x59, 0xe7, 0x48, 0x44, 0x48, 0x45, 0x92, 0x41, + 0x5b, 0x18, 0x98, 0x46, 0x04, 0x00, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, + 0x02, 0x26, 0x1b, 0x02, 0x00, 0xd5, 0xc4, 0xe0, 0x01, 0x3e, 0x63, 0x07, + 0x00, 0xd0, 0x11, 0xe7, 0x43, 0x46, 0xb4, 0x46, 0x59, 0x07, 0xe2, 0x08, + 0x0a, 0x43, 0xdb, 0x08, 0x0f, 0x49, 0x8c, 0x45, 0x40, 0xd0, 0x61, 0x46, + 0x1b, 0x03, 0x49, 0x05, 0x1b, 0x0b, 0x49, 0x0d, 0x20, 0xe7, 0x01, 0x43, + 0x0c, 0x00, 0x61, 0x1e, 0x8c, 0x41, 0x4c, 0x44, 0x4c, 0x45, 0x92, 0x41, + 0x52, 0x42, 0x90, 0x46, 0x98, 0x44, 0x43, 0x46, 0x1b, 0x02, 0xe0, 0xd5, + 0x04, 0x4b, 0x01, 0x36, 0x9e, 0x42, 0x00, 0xd0, 0x9f, 0xe0, 0x31, 0x00, + 0x00, 0x23, 0x00, 0x22, 0x0a, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0xff, 0x01, 0xf8, 0xff, 0xff, 0xfe, 0x07, 0x00, 0x00, + 0x00, 0x2a, 0x00, 0xd1, 0x60, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x4d, 0xd0, + 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, 0x22, 0x43, 0x80, 0x24, 0xdb, 0x08, + 0x24, 0x03, 0x23, 0x42, 0x07, 0xd0, 0xce, 0x08, 0x26, 0x42, 0x04, 0xd1, + 0x5d, 0x46, 0x33, 0x00, 0xc2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x51, 0x0f, + 0xd2, 0x00, 0xd2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x11, 0x00, 0x19, 0x43, + 0x00, 0xd1, 0xc8, 0xe1, 0x80, 0x21, 0x09, 0x03, 0x0b, 0x43, 0x1b, 0x03, + 0xd5, 0x49, 0x1b, 0x0b, 0xda, 0xe6, 0xd5, 0x49, 0xb6, 0x1a, 0x0b, 0x40, + 0x98, 0x46, 0xb5, 0xe6, 0x20, 0x00, 0x00, 0xf0, 0xb7, 0xfa, 0x02, 0x00, + 0x18, 0x32, 0x1f, 0x2a, 0x00, 0xdc, 0x8f, 0xe6, 0x23, 0x00, 0x08, 0x38, + 0x83, 0x40, 0x00, 0x24, 0x92, 0xe6, 0x08, 0x43, 0x02, 0x00, 0x50, 0x1e, + 0x82, 0x41, 0x6d, 0xe6, 0xca, 0x4c, 0x72, 0x1c, 0x22, 0x42, 0x00, 0xd0, + 0xad, 0xe0, 0x4a, 0x46, 0x1a, 0x43, 0x00, 0x2e, 0xb8, 0xd1, 0x00, 0x2a, + 0x00, 0xd1, 0x58, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0x59, 0xe1, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x86, 0xe7, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xc1, 0xe7, + 0xba, 0x4d, 0xaa, 0x42, 0x00, 0xd1, 0x1e, 0xe1, 0x80, 0x25, 0x2d, 0x04, + 0x2b, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x5d, 0xdc, 0x1f, 0x2c, 0x00, 0xdd, + 0xd0, 0xe0, 0x20, 0x25, 0x67, 0x46, 0x2d, 0x1b, 0x4e, 0x46, 0x1c, 0x00, + 0xfe, 0x40, 0xac, 0x40, 0x34, 0x43, 0x4e, 0x46, 0xae, 0x40, 0x35, 0x00, + 0xfb, 0x40, 0x6e, 0x1e, 0xb5, 0x41, 0xc9, 0x1a, 0x2c, 0x43, 0x4e, 0xe0, + 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, + 0x5f, 0x1a, 0x3a, 0x00, 0x47, 0x46, 0xd2, 0x1b, 0x90, 0x46, 0x12, 0x02, + 0x00, 0xd5, 0x8b, 0xe0, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd0, 0x30, 0xe6, + 0x00, 0x23, 0x00, 0x25, 0x4d, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, + 0x0a, 0x43, 0xdb, 0x08, 0x44, 0xe7, 0x42, 0x46, 0x9e, 0x4b, 0x61, 0x08, + 0x1a, 0x40, 0x13, 0x00, 0x01, 0x22, 0x14, 0x40, 0x0c, 0x43, 0xda, 0x07, + 0x5b, 0x08, 0x98, 0x46, 0x14, 0x43, 0x41, 0xe6, 0x1a, 0x00, 0x1f, 0x3e, + 0xf2, 0x40, 0x16, 0x00, 0x20, 0x29, 0x03, 0xd0, 0x40, 0x22, 0x51, 0x1a, + 0x8b, 0x40, 0x1c, 0x43, 0x62, 0x1e, 0x94, 0x41, 0x00, 0x23, 0x34, 0x43, + 0x98, 0x46, 0x00, 0x26, 0x1d, 0xe7, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, + 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, + 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, + 0x22, 0x43, 0xe9, 0xe5, 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, + 0x9c, 0x41, 0x04, 0x1b, 0xa0, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xcb, 0x1a, + 0x98, 0x46, 0x5d, 0x46, 0x16, 0x00, 0xe2, 0xe5, 0x4e, 0x46, 0x1e, 0x43, + 0x00, 0xd1, 0xae, 0xe0, 0x66, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0xfd, 0xe0, + 0x7b, 0x4f, 0xbc, 0x42, 0x00, 0xd1, 0x07, 0xe1, 0xb4, 0x46, 0x9b, 0xe6, + 0x64, 0x46, 0x20, 0x22, 0x12, 0x1b, 0x0c, 0x00, 0x94, 0x40, 0x07, 0x00, + 0x90, 0x40, 0xa0, 0x46, 0x64, 0x46, 0x42, 0x1e, 0x90, 0x41, 0x62, 0x46, + 0xe7, 0x40, 0x44, 0x46, 0xd1, 0x40, 0x3c, 0x43, 0x04, 0x43, 0x5b, 0x18, + 0xf3, 0xe6, 0x6f, 0x4c, 0xa2, 0x42, 0x00, 0xd1, 0xd5, 0xe0, 0x48, 0x44, + 0x5b, 0x18, 0x48, 0x45, 0x89, 0x41, 0x49, 0x42, 0x5b, 0x18, 0xdc, 0x07, + 0x40, 0x08, 0x5b, 0x08, 0x98, 0x46, 0x16, 0x00, 0x04, 0x43, 0xcc, 0xe6, + 0x00, 0x2a, 0x00, 0xd0, 0x82, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x40, 0xd1, + 0x80, 0x23, 0x00, 0x25, 0x1b, 0x03, 0x13, 0xe7, 0x4b, 0x07, 0xc2, 0x08, + 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xc5, 0xe6, 0x4a, 0x46, 0x84, 0x1a, + 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, + 0x5d, 0x46, 0x9e, 0xe5, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, + 0xdb, 0x08, 0xf9, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, + 0x5b, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x01, 0x26, 0x86, 0xe5, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xa5, 0xe6, + 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x5b, 0xe6, + 0x65, 0x46, 0x1e, 0x00, 0x20, 0x3d, 0xee, 0x40, 0x20, 0x2c, 0x05, 0xd0, + 0x40, 0x25, 0x2d, 0x1b, 0xab, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, + 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x34, 0x43, 0x7d, 0xe7, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, 0xcc, 0xe6, 0x0a, 0x00, + 0x02, 0x43, 0x00, 0xd1, 0x36, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0x81, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, + 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x01, 0x26, 0x4e, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, + 0xb2, 0xe6, 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5f, 0x1a, + 0x52, 0x42, 0xba, 0x1a, 0x90, 0x46, 0x12, 0x02, 0x6b, 0xd5, 0x4a, 0x46, + 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, + 0x98, 0x46, 0x5d, 0x46, 0x64, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0x98, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0xcb, 0x08, 0x4f, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x90, 0xd0, 0x4a, 0x46, + 0x5c, 0x07, 0xd2, 0x08, 0x14, 0x43, 0x80, 0x22, 0xdb, 0x08, 0x12, 0x03, + 0x13, 0x42, 0x08, 0xd0, 0xce, 0x08, 0x16, 0x42, 0x05, 0xd1, 0xc0, 0x08, + 0x49, 0x07, 0x08, 0x43, 0x04, 0x00, 0x5d, 0x46, 0x33, 0x00, 0x61, 0x0f, + 0xe2, 0x00, 0x49, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0x78, 0xe6, 0x4b, 0x07, + 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x48, 0x44, 0x5b, 0x18, + 0x48, 0x45, 0x92, 0x41, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, + 0x04, 0x00, 0x1b, 0x02, 0x00, 0xd4, 0x1a, 0xe6, 0x42, 0x46, 0x0e, 0x4b, + 0x01, 0x26, 0x1a, 0x40, 0x90, 0x46, 0x14, 0xe6, 0x66, 0x46, 0x1f, 0x00, + 0x20, 0x3e, 0xf7, 0x40, 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x26, 0x36, 0x1b, + 0xb3, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, + 0x9c, 0x41, 0x3c, 0x43, 0xc8, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x22, + 0x32, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, + 0xfe, 0x07, 0x00, 0x00, 0x4a, 0x46, 0x14, 0x18, 0x84, 0x42, 0x92, 0x41, + 0x5b, 0x18, 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0xe9, 0xe5, 0x42, 0x46, + 0x22, 0x43, 0x00, 0xd1, 0xa6, 0xe6, 0xea, 0xe5, 0x4b, 0x07, 0xc2, 0x08, + 0x1a, 0x43, 0xcb, 0x08, 0x32, 0xe6, 0x00, 0x22, 0x01, 0x49, 0x13, 0x00, + 0x14, 0xe5, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0x0a, 0x00, 0x30, 0xb5, + 0x13, 0x4c, 0x53, 0x00, 0x09, 0x03, 0x05, 0x00, 0x09, 0x0b, 0x00, 0x20, + 0x5b, 0x0d, 0xd2, 0x0f, 0xa3, 0x42, 0x04, 0xdd, 0x0f, 0x48, 0x83, 0x42, + 0x02, 0xdd, 0x0f, 0x4b, 0xd0, 0x18, 0x30, 0xbd, 0x80, 0x20, 0x40, 0x03, + 0x01, 0x43, 0x0d, 0x48, 0xc0, 0x1a, 0x1f, 0x28, 0x08, 0xdd, 0x0c, 0x48, + 0xc3, 0x1a, 0xd9, 0x40, 0x0b, 0x00, 0x58, 0x42, 0x00, 0x2a, 0xf0, 0xd1, + 0x18, 0x00, 0xee, 0xe7, 0x08, 0x4c, 0xc5, 0x40, 0xa4, 0x46, 0x63, 0x44, + 0x99, 0x40, 0x0b, 0x00, 0x2b, 0x43, 0xf2, 0xe7, 0xfe, 0x03, 0x00, 0x00, + 0x1d, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7f, 0x33, 0x04, 0x00, 0x00, + 0x13, 0x04, 0x00, 0x00, 0xed, 0xfb, 0xff, 0xff, 0x70, 0xb5, 0x43, 0x00, + 0x46, 0x02, 0xc4, 0x0f, 0xfe, 0x20, 0x1b, 0x0e, 0x59, 0x1c, 0x75, 0x0a, + 0x08, 0x42, 0x0c, 0xd0, 0xe0, 0x22, 0x92, 0x00, 0x94, 0x46, 0x6d, 0x07, + 0x36, 0x0b, 0x63, 0x44, 0x1b, 0x05, 0x33, 0x43, 0xe4, 0x07, 0x23, 0x43, + 0x28, 0x00, 0x19, 0x00, 0x70, 0xbd, 0x00, 0x2b, 0x14, 0xd1, 0x00, 0x2d, + 0x1b, 0xd0, 0x28, 0x00, 0x00, 0xf0, 0xa2, 0xf8, 0x0a, 0x28, 0x1c, 0xdc, + 0x0b, 0x23, 0x2a, 0x00, 0x1b, 0x1a, 0xda, 0x40, 0x03, 0x00, 0x15, 0x33, + 0x9d, 0x40, 0x0e, 0x4b, 0x12, 0x03, 0x1b, 0x1a, 0x5b, 0x05, 0x16, 0x0b, + 0x5b, 0x0d, 0xe1, 0xe7, 0x00, 0x2d, 0x09, 0xd0, 0x32, 0x0b, 0x80, 0x26, + 0x36, 0x03, 0x09, 0x4b, 0x6d, 0x07, 0x16, 0x43, 0xd8, 0xe7, 0x00, 0x23, + 0x00, 0x26, 0xd5, 0xe7, 0x00, 0x26, 0x05, 0x4b, 0xd2, 0xe7, 0x03, 0x00, + 0x2a, 0x00, 0x0b, 0x3b, 0x9a, 0x40, 0x00, 0x25, 0xe3, 0xe7, 0xc0, 0x46, + 0x89, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, 0x84, 0x46, 0x10, 0x1c, + 0x62, 0x46, 0x8c, 0x46, 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, + 0x1f, 0xb5, 0x00, 0xf0, 0xf7, 0xf9, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, + 0xc8, 0x42, 0x1f, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0x41, 0xf9, 0x40, 0x42, + 0x01, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x00, 0xf0, 0xe9, 0xf9, 0x00, 0x28, + 0x01, 0xdb, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0xdf, 0xf9, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0x63, 0xf9, 0x00, 0x28, 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x59, 0xf9, 0x00, 0x28, + 0x01, 0xda, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x84, 0x46, 0x08, 0x1c, 0x61, 0x46, 0xff, 0xe7, 0x1f, 0xb5, 0x00, 0xf0, + 0xc5, 0xf8, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0x49, 0xf8, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0xb7, 0xf8, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0xad, 0xf8, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x57, 0xf8, 0x00, 0x28, + 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x1c, 0x21, 0x01, 0x23, + 0x1b, 0x04, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a, + 0x98, 0x42, 0x01, 0xd3, 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42, + 0x01, 0xd3, 0x00, 0x09, 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xb5, 0x42, 0x00, + 0x4e, 0x02, 0x4c, 0x00, 0x45, 0x02, 0x6d, 0x0a, 0x12, 0x0e, 0xc3, 0x0f, + 0x76, 0x0a, 0x24, 0x0e, 0xc9, 0x0f, 0xff, 0x2a, 0x0f, 0xd0, 0xff, 0x2c, + 0x11, 0xd0, 0x01, 0x20, 0xa2, 0x42, 0x00, 0xd0, 0x70, 0xbd, 0xb5, 0x42, + 0xfc, 0xd1, 0x8b, 0x42, 0x0d, 0xd0, 0x00, 0x2a, 0xf8, 0xd1, 0x28, 0x00, + 0x45, 0x1e, 0xa8, 0x41, 0xf4, 0xe7, 0x01, 0x20, 0x00, 0x2d, 0xf1, 0xd1, + 0xeb, 0xe7, 0x01, 0x20, 0x00, 0x2e, 0xed, 0xd1, 0xe9, 0xe7, 0x00, 0x20, + 0xea, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x42, 0x00, 0x46, 0x02, 0x4d, 0x02, + 0x4c, 0x00, 0xc3, 0x0f, 0x76, 0x0a, 0x12, 0x0e, 0x6d, 0x0a, 0x24, 0x0e, + 0xc8, 0x0f, 0xff, 0x2a, 0x1f, 0xd0, 0xff, 0x2c, 0x10, 0xd0, 0x00, 0x2a, + 0x1f, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x2c, 0x01, 0xd1, 0x00, 0x2d, + 0x1e, 0xd0, 0x00, 0x29, 0x0e, 0xd1, 0x83, 0x42, 0x1e, 0xd0, 0x02, 0x21, + 0x58, 0x1e, 0x08, 0x40, 0x01, 0x38, 0xf0, 0xbd, 0x00, 0x2d, 0x26, 0xd1, + 0x00, 0x2a, 0xf4, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x29, 0xf0, 0xd0, + 0x00, 0x28, 0xf4, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf1, 0xe7, 0x00, 0x2e, + 0x19, 0xd1, 0xff, 0x2c, 0xee, 0xd0, 0x00, 0x2c, 0xe5, 0xd1, 0x00, 0x2d, + 0xe3, 0xd1, 0xe4, 0xe7, 0x00, 0x20, 0x00, 0x2e, 0xe5, 0xd0, 0xe0, 0xe7, + 0xa2, 0x42, 0x05, 0xdc, 0xea, 0xdb, 0xae, 0x42, 0x02, 0xd8, 0xe7, 0xd3, + 0x00, 0x20, 0xdc, 0xe7, 0x41, 0x42, 0x41, 0x41, 0x48, 0x42, 0x02, 0x21, + 0x08, 0x40, 0x01, 0x38, 0xd5, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xd2, 0xe7, + 0xf0, 0xb5, 0x42, 0x00, 0x46, 0x02, 0x4d, 0x02, 0x4c, 0x00, 0xc3, 0x0f, + 0x76, 0x0a, 0x12, 0x0e, 0x6d, 0x0a, 0x24, 0x0e, 0xc8, 0x0f, 0xff, 0x2a, + 0x0d, 0xd0, 0xff, 0x2c, 0x0f, 0xd0, 0x00, 0x2a, 0x23, 0xd1, 0x71, 0x42, + 0x71, 0x41, 0x00, 0x2c, 0x0f, 0xd1, 0x00, 0x2d, 0x0d, 0xd1, 0x00, 0x20, + 0x00, 0x2e, 0x14, 0xd0, 0x0d, 0xe0, 0x00, 0x2e, 0x10, 0xd1, 0xff, 0x2c, + 0x15, 0xd1, 0x00, 0x2d, 0x0c, 0xd1, 0x00, 0x2a, 0x03, 0xd1, 0x71, 0x42, + 0x71, 0x41, 0x00, 0x29, 0x08, 0xd1, 0x83, 0x42, 0x10, 0xd0, 0x02, 0x21, + 0x58, 0x1e, 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, 0xf0, 0xbd, + 0x00, 0x28, 0xfc, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf9, 0xe7, 0x00, 0x2c, + 0xef, 0xd1, 0x00, 0x2d, 0xed, 0xd1, 0xee, 0xe7, 0xa2, 0x42, 0x05, 0xdc, + 0xf2, 0xdb, 0xae, 0x42, 0x02, 0xd8, 0xef, 0xd3, 0x00, 0x20, 0xec, 0xe7, + 0x41, 0x42, 0x41, 0x41, 0x48, 0x42, 0x02, 0x21, 0x08, 0x40, 0x01, 0x38, + 0xe5, 0xe7, 0xc0, 0x46, 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, + 0x94, 0x46, 0x91, 0x46, 0x1a, 0x03, 0x12, 0x0b, 0x18, 0x4d, 0xc0, 0xb5, + 0x4c, 0x00, 0x0f, 0x03, 0x92, 0x46, 0x5a, 0x00, 0x06, 0x00, 0x80, 0x46, + 0x3f, 0x0b, 0x01, 0x20, 0x64, 0x0d, 0xc9, 0x0f, 0x52, 0x0d, 0xdb, 0x0f, + 0xac, 0x42, 0x0a, 0xd0, 0xaa, 0x42, 0x03, 0xd0, 0x94, 0x42, 0x01, 0xd1, + 0x57, 0x45, 0x0d, 0xd0, 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xf0, 0xbd, 0x3d, 0x00, 0x35, 0x43, 0xf7, 0xd1, 0xa2, 0x42, 0xf5, 0xd1, + 0x52, 0x46, 0x65, 0x46, 0x2a, 0x43, 0xf1, 0xd1, 0x01, 0x20, 0xc8, 0x45, + 0xee, 0xd1, 0x99, 0x42, 0x06, 0xd0, 0x00, 0x2c, 0xea, 0xd1, 0x3e, 0x43, + 0x30, 0x00, 0x46, 0x1e, 0xb0, 0x41, 0xe5, 0xe7, 0x00, 0x20, 0xe3, 0xe7, + 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, + 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, + 0x1b, 0x0b, 0x32, 0x4d, 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, + 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, + 0xc0, 0x0f, 0xaa, 0x42, 0x29, 0xd0, 0xab, 0x42, 0x18, 0xd0, 0x00, 0x2a, + 0x2a, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, + 0x02, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x27, 0xd0, 0x00, 0x2d, 0x15, 0xd1, + 0x81, 0x42, 0x28, 0xd0, 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, + 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, + 0x4d, 0x46, 0x2e, 0x43, 0x2f, 0xd1, 0x00, 0x2a, 0xee, 0xd1, 0x3c, 0x43, + 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0xe9, 0xd0, 0x00, 0x28, 0xed, 0xd1, + 0x01, 0x20, 0x40, 0x42, 0xea, 0xe7, 0x3d, 0x00, 0x25, 0x43, 0x20, 0xd1, + 0x93, 0x42, 0xeb, 0xd0, 0x00, 0x2b, 0xdd, 0xd1, 0x4c, 0x46, 0x26, 0x43, + 0xda, 0xd1, 0xdb, 0xe7, 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0xdb, 0xd0, + 0xd6, 0xe7, 0x9a, 0x42, 0x0a, 0xdc, 0xe7, 0xdb, 0x4f, 0x45, 0xd1, 0xd8, + 0x10, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xd1, 0xd2, 0x00, 0x29, 0xe1, 0xd0, + 0x08, 0x00, 0xcd, 0xe7, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, + 0x18, 0x40, 0x01, 0x38, 0xc6, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xc3, 0xe7, + 0xc4, 0x45, 0xbd, 0xd8, 0x00, 0x20, 0xc4, 0x45, 0xbe, 0xd2, 0xeb, 0xe7, + 0xff, 0x07, 0x00, 0x00, 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, + 0xde, 0x46, 0x04, 0x00, 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, + 0x1b, 0x0b, 0x31, 0x4d, 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, + 0xa4, 0x46, 0xb0, 0x46, 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, + 0xc0, 0x0f, 0xaa, 0x42, 0x11, 0xd0, 0xab, 0x42, 0x14, 0xd0, 0x00, 0x2a, + 0x2f, 0xd1, 0x3c, 0x43, 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, + 0x14, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0x11, 0xd1, 0x5b, 0x46, 0x00, 0x20, + 0x00, 0x2b, 0x17, 0xd0, 0x10, 0xe0, 0x3d, 0x00, 0x25, 0x43, 0x12, 0xd1, + 0x93, 0x42, 0x1c, 0xd1, 0x4d, 0x46, 0x2e, 0x43, 0x0d, 0xd1, 0x00, 0x2a, + 0x04, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0x0d, 0xd1, + 0x81, 0x42, 0x16, 0xd0, 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, + 0x00, 0xe0, 0x02, 0x20, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x28, 0xf7, 0xd1, 0x01, 0x20, 0x40, 0x42, + 0xf4, 0xe7, 0x00, 0x2b, 0xea, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xe7, 0xd1, + 0xe8, 0xe7, 0x9a, 0x42, 0x06, 0xdd, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, + 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, 0xe5, 0xe7, 0x9a, 0x42, 0xe9, 0xdb, + 0x4f, 0x45, 0xdb, 0xd8, 0x06, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xdd, 0xd2, + 0x00, 0x29, 0xe3, 0xd0, 0x08, 0x00, 0xd9, 0xe7, 0xc4, 0x45, 0xd1, 0xd8, + 0x00, 0x20, 0xc4, 0x45, 0xd4, 0xd2, 0xf5, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xba, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, + 0x6e, 0x1a, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, + 0xb4, 0x1a, 0x00, 0x08, 0x6e, 0x1a, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, + 0x46, 0x1b, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, 0x6e, 0x1a, 0x00, 0x08, + 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, + 0x90, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, + 0xb4, 0x1a, 0x00, 0x08, 0x6a, 0x1a, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, + 0x82, 0x1b, 0x00, 0x08, 0xb4, 0x1a, 0x00, 0x08, 0x6a, 0x1a, 0x00, 0x08, + 0x46, 0x1b, 0x00, 0x08, 0x46, 0x1b, 0x00, 0x08, 0x82, 0x1b, 0x00, 0x08, + 0x6a, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, 0x74, 0x1a, 0x00, 0x08, + 0x74, 0x1a, 0x00, 0x08, 0x8c, 0x1b, 0x00, 0x08, 0xf6, 0x1c, 0x00, 0x08, + 0x94, 0x1c, 0x00, 0x08, 0x94, 0x1c, 0x00, 0x08, 0x92, 0x1c, 0x00, 0x08, + 0x98, 0x1c, 0x00, 0x08, 0x98, 0x1c, 0x00, 0x08, 0xc0, 0x1d, 0x00, 0x08, + 0x92, 0x1c, 0x00, 0x08, 0x98, 0x1c, 0x00, 0x08, 0xc0, 0x1d, 0x00, 0x08, + 0x98, 0x1c, 0x00, 0x08, 0x92, 0x1c, 0x00, 0x08, 0x76, 0x1d, 0x00, 0x08, + 0x76, 0x1d, 0x00, 0x08, 0x76, 0x1d, 0x00, 0x08, 0xfa, 0x1d, 0x00, 0x08, + 0xf8, 0x24, 0x00, 0x08, 0x60, 0x23, 0x00, 0x08, 0x3e, 0x23, 0x00, 0x08, + 0x52, 0x24, 0x00, 0x08, 0x3e, 0x23, 0x00, 0x08, 0x96, 0x24, 0x00, 0x08, + 0x3e, 0x23, 0x00, 0x08, 0x52, 0x24, 0x00, 0x08, 0x60, 0x23, 0x00, 0x08, + 0x60, 0x23, 0x00, 0x08, 0x96, 0x24, 0x00, 0x08, 0x52, 0x24, 0x00, 0x08, + 0x04, 0x24, 0x00, 0x08, 0x04, 0x24, 0x00, 0x08, 0x04, 0x24, 0x00, 0x08, + 0xa4, 0x24, 0x00, 0x08, 0x03, 0x08, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, + 0x00, 0x12, 0x7a, 0x00, 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h new file mode 100644 index 000000000..438d58575 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h @@ -0,0 +1,1183 @@ +/* + * This file has been generated by the shelly-dimmer-stm32 project. + * https://github.com/jamesturton/shelly-dimmer-stm32 + * Copyright (c) 2020 James Turton. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +static const uint8_t SHD_FIRMWARE_MAJOR_VERSION = 51; +static const uint8_t SHD_FIRMWARE_MINOR_VERSION = 4; +const uint8_t stm_firmware[] PROGMEM = { + 0x00, 0x10, 0x00, 0x20, 0xb1, 0x15, 0x00, 0x08, 0xad, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x15, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x15, 0x00, 0x08, + 0x7d, 0x08, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xb5, 0x0a, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0x8d, 0x08, 0x00, 0x08, 0x15, 0x09, 0x00, 0x08, 0x25, 0x0a, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0x2d, 0x01, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, 0xab, 0x15, 0x00, 0x08, + 0x70, 0xb5, 0x12, 0x4d, 0x12, 0x4c, 0x2b, 0x68, 0x22, 0x68, 0x9b, 0x1a, + 0x11, 0x4a, 0x93, 0x42, 0x14, 0xd9, 0x11, 0x49, 0x0a, 0x78, 0x00, 0x2a, + 0x11, 0xd0, 0x00, 0x20, 0x0f, 0x4b, 0x18, 0x60, 0x01, 0x23, 0x53, 0x40, + 0x0b, 0x70, 0x80, 0x21, 0x0d, 0x48, 0x49, 0x00, 0x00, 0x2b, 0x09, 0xd0, + 0x00, 0xf0, 0x54, 0xff, 0x2b, 0x68, 0x0b, 0x4a, 0x23, 0x60, 0x13, 0x60, + 0x70, 0xbd, 0x0a, 0x4b, 0x1a, 0x60, 0xed, 0xe7, 0x00, 0xf0, 0x48, 0xff, + 0xf4, 0xe7, 0xc0, 0x46, 0x64, 0x02, 0x00, 0x20, 0x40, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, + 0x20, 0x23, 0xf0, 0xb5, 0xaa, 0x4a, 0xc7, 0xb0, 0x11, 0x68, 0x00, 0xaf, + 0x7a, 0x61, 0x19, 0x42, 0x33, 0xd0, 0xa8, 0x4a, 0x12, 0x68, 0x1a, 0x42, + 0x2f, 0xd0, 0x78, 0x69, 0x01, 0xf0, 0x2b, 0xfa, 0xa5, 0x4d, 0xa6, 0x49, + 0x2b, 0x78, 0x04, 0x00, 0xc0, 0xb2, 0xc8, 0x54, 0x00, 0x2b, 0x03, 0xd1, + 0x01, 0x28, 0x20, 0xd1, 0x01, 0x33, 0x1f, 0xe0, 0x03, 0x2b, 0xfb, 0xd9, + 0xca, 0x78, 0xf9, 0x2a, 0x19, 0xd8, 0x16, 0x1d, 0x9e, 0x42, 0xf5, 0xda, + 0x56, 0x1d, 0xb3, 0x42, 0x2c, 0xd1, 0x9c, 0x49, 0xe4, 0xb2, 0xc8, 0x5c, + 0x9b, 0x4e, 0x00, 0x02, 0x20, 0x43, 0x00, 0x24, 0xb4, 0x46, 0x21, 0x00, + 0x03, 0x32, 0x66, 0x46, 0x76, 0x5c, 0x01, 0x31, 0xa4, 0x19, 0xc9, 0xb2, + 0xa4, 0xb2, 0x8a, 0x42, 0xf7, 0xdc, 0xa0, 0x42, 0xde, 0xd0, 0x00, 0x23, + 0x2b, 0x70, 0x80, 0x22, 0x7b, 0x69, 0x1b, 0x68, 0x13, 0x42, 0x0e, 0xd0, + 0x8b, 0x4b, 0x1b, 0x68, 0x13, 0x42, 0x0a, 0xd0, 0x8e, 0x4c, 0xa3, 0x68, + 0xe1, 0x68, 0x8b, 0x42, 0x00, 0xd0, 0xfe, 0xe0, 0x7b, 0x69, 0x1b, 0x68, + 0x93, 0x43, 0x7a, 0x69, 0x13, 0x60, 0xbd, 0x46, 0x47, 0xb0, 0xf0, 0xbd, + 0x06, 0x32, 0x93, 0x42, 0xe3, 0xd1, 0x04, 0x28, 0xe1, 0xd1, 0x4b, 0x78, + 0x85, 0x4a, 0x13, 0x70, 0x8b, 0x78, 0x85, 0x4a, 0x13, 0x70, 0x01, 0x2b, + 0x08, 0xd0, 0x20, 0x2b, 0x0c, 0xd1, 0x8b, 0x79, 0x02, 0x3b, 0x5a, 0x1e, + 0x93, 0x41, 0x81, 0x4a, 0x13, 0x70, 0x05, 0xe0, 0x4a, 0x79, 0x0b, 0x79, + 0x12, 0x02, 0x13, 0x43, 0x7e, 0x4a, 0x13, 0x80, 0x00, 0x24, 0x1c, 0x23, + 0xfc, 0x22, 0xf8, 0x18, 0x21, 0x00, 0x2c, 0x70, 0xbc, 0x61, 0x01, 0xf0, + 0xc1, 0xfa, 0x7a, 0x4e, 0x33, 0x78, 0xa3, 0x42, 0x2d, 0xd1, 0xff, 0xf7, + 0x4b, 0xff, 0x78, 0x4b, 0x1c, 0x68, 0x33, 0x78, 0x00, 0x2b, 0x3d, 0xd1, + 0x76, 0x4b, 0x77, 0x4d, 0x1b, 0x68, 0x00, 0x2b, 0x35, 0xd1, 0x2b, 0x60, + 0x2d, 0x68, 0x36, 0x78, 0x00, 0x2e, 0x41, 0xd1, 0x73, 0x4b, 0x74, 0x4a, + 0x1b, 0x68, 0x12, 0x68, 0x73, 0x49, 0x9b, 0x1a, 0x6e, 0x4a, 0x8b, 0x42, + 0x00, 0xd9, 0x16, 0x60, 0x10, 0x68, 0x67, 0x4b, 0x1b, 0x78, 0x11, 0x2b, + 0x00, 0xd1, 0x98, 0xe0, 0x47, 0xd8, 0x01, 0x2b, 0x47, 0xd0, 0x10, 0x2b, + 0x00, 0xd1, 0x96, 0xe0, 0x7b, 0x69, 0x1a, 0x68, 0x80, 0x23, 0x13, 0x43, + 0x7a, 0x69, 0x13, 0x60, 0x91, 0xe7, 0x68, 0x4b, 0x1b, 0x88, 0x00, 0x2b, + 0xd1, 0xd0, 0x67, 0x4b, 0x18, 0x88, 0x01, 0xf0, 0xb5, 0xff, 0x02, 0xf0, + 0x9f, 0xfe, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x20, 0x63, 0x49, 0x01, 0xf0, + 0xe9, 0xff, 0x01, 0xf0, 0x7f, 0xfb, 0x04, 0x00, 0xc1, 0xe7, 0xff, 0xf7, + 0x09, 0xff, 0xc7, 0xe7, 0x00, 0x25, 0x5c, 0x4b, 0x5b, 0x88, 0xab, 0x42, + 0xc3, 0xd0, 0x5d, 0x4b, 0x5d, 0x48, 0x19, 0x68, 0x01, 0xf0, 0x8e, 0xfb, + 0x01, 0xf0, 0x56, 0xfb, 0x05, 0x00, 0xba, 0xe7, 0x55, 0x4b, 0x1a, 0x88, + 0x10, 0x1e, 0xc4, 0xd0, 0x00, 0x20, 0x5b, 0x88, 0x83, 0x42, 0xc0, 0xd0, + 0x52, 0x4b, 0x18, 0x88, 0x01, 0xf0, 0x8c, 0xff, 0x52, 0x4b, 0x19, 0x68, + 0x01, 0xf0, 0x86, 0xfc, 0x01, 0x1c, 0x52, 0x48, 0x01, 0xf0, 0x76, 0xfb, + 0x01, 0xf0, 0x3e, 0xfb, 0xb1, 0xe7, 0x20, 0x2b, 0xba, 0xd1, 0x01, 0x24, + 0x3c, 0x76, 0x6a, 0x46, 0x69, 0x46, 0xba, 0x60, 0xe2, 0x1d, 0x7a, 0x60, + 0x07, 0x32, 0xd2, 0x08, 0xd2, 0x00, 0x8a, 0x1a, 0x95, 0x46, 0x01, 0x22, + 0x6e, 0x46, 0x32, 0x70, 0x36, 0x4a, 0x01, 0xa8, 0x12, 0x78, 0xb3, 0x70, + 0x18, 0x23, 0x72, 0x70, 0xf9, 0x18, 0x22, 0x00, 0xf4, 0x70, 0x01, 0xf0, + 0xe3, 0xf9, 0x00, 0x22, 0x13, 0x00, 0x21, 0x1d, 0xe0, 0x1c, 0xf5, 0x18, + 0x6d, 0x78, 0x01, 0x33, 0x52, 0x19, 0xdb, 0xb2, 0x92, 0xb2, 0x98, 0x42, + 0xf7, 0xdc, 0x13, 0x0a, 0x73, 0x54, 0x63, 0x1d, 0xf2, 0x54, 0x04, 0x23, + 0x06, 0x34, 0x33, 0x55, 0x00, 0x24, 0x26, 0x4d, 0x33, 0x5d, 0x69, 0x68, + 0x3b, 0x60, 0xeb, 0x68, 0x3b, 0x61, 0x01, 0x33, 0x18, 0x00, 0xfb, 0x60, + 0x01, 0xf0, 0xfc, 0xfa, 0xab, 0x68, 0x99, 0x42, 0x0a, 0xd0, 0xfb, 0x68, + 0x3a, 0x69, 0xeb, 0x60, 0x39, 0x68, 0x2b, 0x68, 0x99, 0x54, 0xe8, 0x68, + 0x69, 0x68, 0x01, 0xf0, 0xef, 0xfa, 0xe9, 0x60, 0x7b, 0x68, 0x01, 0x34, + 0xa3, 0x42, 0xe3, 0xdc, 0xbb, 0x68, 0x9d, 0x46, 0x6c, 0xe7, 0x28, 0x4a, + 0x02, 0x24, 0x3a, 0x83, 0xaf, 0xe7, 0x00, 0x22, 0x28, 0x21, 0x7a, 0x76, + 0x16, 0x4a, 0x79, 0x18, 0x12, 0x88, 0x3c, 0x62, 0x7a, 0x83, 0x13, 0x4a, + 0x11, 0x24, 0x12, 0x78, 0x3e, 0x76, 0xf8, 0x61, 0x7d, 0x62, 0x0a, 0x70, + 0x9f, 0xe7, 0x22, 0x68, 0x58, 0x1c, 0xa0, 0x60, 0x61, 0x68, 0xd5, 0x5c, + 0x01, 0xf0, 0xcc, 0xfa, 0x02, 0x48, 0xa1, 0x60, 0xa9, 0xb2, 0x01, 0xf0, + 0xe0, 0xf8, 0xf8, 0xe6, 0x00, 0x38, 0x01, 0x40, 0x1c, 0x38, 0x01, 0x40, + 0x1a, 0x00, 0x00, 0x20, 0x64, 0x01, 0x00, 0x20, 0x63, 0x01, 0x00, 0x20, + 0x65, 0x01, 0x00, 0x20, 0x4c, 0x00, 0x00, 0x20, 0x3c, 0x00, 0x00, 0x20, + 0x20, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, + 0x02, 0x00, 0x00, 0x20, 0x74, 0x02, 0x00, 0x20, 0x60, 0x01, 0x00, 0x20, + 0x28, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, + 0x10, 0x27, 0x00, 0x00, 0x12, 0x00, 0x00, 0x20, 0x70, 0x02, 0x00, 0x20, + 0x8d, 0x90, 0x54, 0x41, 0x34, 0x00, 0x00, 0x20, 0x00, 0x8e, 0x44, 0x49, + 0xa2, 0x1c, 0xe2, 0x4f, 0x04, 0x33, 0x00, 0x00, 0x70, 0xb5, 0x00, 0xf0, + 0xc9, 0xfe, 0xf7, 0x48, 0x00, 0xf0, 0xf8, 0xfe, 0xf6, 0x48, 0x00, 0xf0, + 0xf5, 0xfe, 0xf6, 0x48, 0x00, 0xf0, 0xf2, 0xfe, 0xf5, 0x48, 0x00, 0xf0, + 0xef, 0xfe, 0xe0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xeb, 0xfe, 0xf3, 0x48, + 0x00, 0xf0, 0xe8, 0xfe, 0xc0, 0x20, 0x80, 0x00, 0x00, 0xf0, 0xe4, 0xfe, + 0xf0, 0x48, 0x00, 0xf0, 0xe1, 0xfe, 0xa0, 0x20, 0x80, 0x00, 0x00, 0xf0, + 0xdd, 0xfe, 0xc8, 0x23, 0x90, 0x20, 0x00, 0x22, 0x01, 0x21, 0x5b, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x8b, 0xfd, 0x02, 0x22, 0x90, 0x20, 0x03, 0x23, + 0x11, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x84, 0xfd, 0x80, 0x24, 0x90, 0x20, + 0x64, 0x00, 0x03, 0x22, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xba, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xe1, 0x48, 0x00, 0xf0, 0x76, 0xfd, + 0x23, 0x00, 0x00, 0x22, 0x01, 0x21, 0xde, 0x48, 0x00, 0xf0, 0x90, 0xfd, + 0x21, 0x00, 0xdc, 0x48, 0x00, 0xf0, 0x64, 0xfd, 0x00, 0x22, 0x04, 0x23, + 0x11, 0x00, 0xd9, 0x48, 0x00, 0xf0, 0x66, 0xfd, 0x90, 0x20, 0x08, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x5f, 0xfd, 0x01, 0x23, + 0x00, 0x22, 0x03, 0x21, 0xd2, 0x48, 0x00, 0xf0, 0x59, 0xfd, 0xd2, 0x48, + 0x00, 0xf0, 0x04, 0xfc, 0x01, 0x21, 0xd0, 0x48, 0x00, 0xf0, 0x6a, 0xfb, + 0xce, 0x48, 0x00, 0xf0, 0x15, 0xfc, 0xcd, 0x48, 0x00, 0xf0, 0x86, 0xfb, + 0xcb, 0x48, 0x00, 0xf0, 0x1d, 0xfc, 0x00, 0xf0, 0x25, 0xfc, 0x06, 0x21, + 0xc8, 0x48, 0x00, 0xf0, 0xba, 0xfb, 0xc8, 0x4a, 0x02, 0x21, 0xc6, 0x48, + 0x00, 0xf0, 0x80, 0xfb, 0x00, 0x21, 0xc4, 0x48, 0x00, 0xf0, 0x08, 0xfc, + 0xc2, 0x48, 0x00, 0xf0, 0xb3, 0xfb, 0xc1, 0x48, 0x00, 0xf0, 0xf2, 0xfb, + 0x01, 0x21, 0xc1, 0x48, 0x00, 0xf0, 0x1d, 0xfc, 0x00, 0x22, 0x01, 0x21, + 0xbe, 0x48, 0x00, 0xf0, 0x37, 0xfc, 0x80, 0x22, 0x01, 0x21, 0xbc, 0x48, + 0xd2, 0x00, 0x00, 0xf0, 0x41, 0xfc, 0x22, 0x00, 0x01, 0x21, 0xb9, 0x48, + 0x00, 0xf0, 0x4c, 0xfc, 0x01, 0x21, 0xb7, 0x48, 0x00, 0xf0, 0x58, 0xfc, + 0x01, 0x21, 0xb5, 0x48, 0x00, 0xf0, 0x5e, 0xfc, 0x01, 0x21, 0xb3, 0x48, + 0x00, 0xf0, 0x6a, 0xfc, 0x01, 0x21, 0xb2, 0x4a, 0xb0, 0x48, 0x00, 0xf0, + 0x79, 0xfc, 0x01, 0x21, 0xb0, 0x4a, 0xae, 0x48, 0x00, 0xf0, 0x7d, 0xfc, + 0x02, 0x22, 0x01, 0x21, 0xab, 0x48, 0x00, 0xf0, 0x81, 0xfc, 0x01, 0x21, + 0xa9, 0x48, 0x00, 0xf0, 0x61, 0xfc, 0xa6, 0x48, 0x00, 0xf0, 0xd7, 0xfb, + 0xa4, 0x48, 0x00, 0xf0, 0x84, 0xfb, 0xa3, 0x48, 0x00, 0xf0, 0xe0, 0xfb, + 0xa6, 0x4b, 0xa7, 0x4a, 0x5c, 0x60, 0x00, 0x24, 0x1a, 0x60, 0x9c, 0x60, + 0xdc, 0x60, 0x90, 0x20, 0xc0, 0x23, 0x22, 0x00, 0xdb, 0x00, 0x02, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0xe9, 0xfc, 0xc0, 0x22, 0x90, 0x20, 0xd2, 0x00, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x20, 0xfd, 0xff, 0x21, 0x1b, 0x20, + 0x01, 0xf0, 0x54, 0xf8, 0x1b, 0x20, 0x01, 0xf0, 0x45, 0xf8, 0xe1, 0x21, + 0x99, 0x4d, 0x49, 0x02, 0x28, 0x00, 0x00, 0xf0, 0x91, 0xff, 0x08, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0x99, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xab, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, 0x9f, 0xff, 0x0c, 0x21, + 0x28, 0x00, 0x00, 0xf0, 0xab, 0xff, 0x21, 0x00, 0x28, 0x00, 0x00, 0xf0, + 0xad, 0xff, 0x20, 0x23, 0x2a, 0x68, 0x28, 0x00, 0x13, 0x43, 0x2b, 0x60, + 0x00, 0xf0, 0xae, 0xff, 0x8a, 0x48, 0x00, 0xf0, 0x48, 0xfe, 0x8c, 0x20, + 0xff, 0x30, 0x00, 0xf0, 0x0b, 0xfe, 0x0e, 0x20, 0x01, 0xf0, 0x1a, 0xf8, + 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x84, 0x48, 0x00, 0xf0, 0x20, 0xfe, + 0xf0, 0x21, 0x82, 0x48, 0x49, 0x00, 0x00, 0xf0, 0x3b, 0xfe, 0x80, 0x48, + 0x00, 0xf0, 0xb7, 0xfe, 0x7e, 0x48, 0x00, 0xf0, 0x21, 0xfe, 0x7d, 0x48, + 0x00, 0xf0, 0x23, 0xfe, 0x7c, 0x49, 0x7b, 0x48, 0x00, 0xf0, 0x30, 0xfe, + 0x02, 0x21, 0x79, 0x48, 0x00, 0xf0, 0xfc, 0xfd, 0x77, 0x48, 0x00, 0xf0, + 0x1d, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0x1e, 0xfe, 0x80, 0x20, + 0x80, 0x00, 0x00, 0xf0, 0xe1, 0xfd, 0x0f, 0x20, 0x00, 0xf0, 0xf0, 0xff, + 0x80, 0x20, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xf5, 0xfd, 0x80, 0x20, 0x30, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x10, 0xfe, + 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, 0xf8, 0xfd, 0x80, 0x20, 0xc0, 0x05, + 0x00, 0xf0, 0xf9, 0xfd, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x20, 0xff, 0x80, 0x20, 0x01, 0x22, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xdf, 0xfe, 0x01, 0x22, 0x80, 0x20, 0x11, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0x81, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, + 0xa7, 0xfe, 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x34, 0xfe, + 0x80, 0x20, 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0xeb, 0xfd, 0x80, 0x20, + 0x21, 0x00, 0xc0, 0x05, 0x00, 0xf0, 0x0a, 0xfe, 0x80, 0x20, 0x21, 0x00, + 0xc0, 0x05, 0x00, 0xf0, 0xf3, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xaa, 0xfd, 0x80, 0x20, 0x02, 0x22, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0xb4, 0xfe, 0x80, 0x20, 0x01, 0x22, 0x02, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x56, 0xfe, 0x80, 0x20, 0x22, 0x00, 0x01, 0x21, 0xc0, 0x05, + 0x00, 0xf0, 0x7c, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, + 0x09, 0xfe, 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc0, 0xfd, + 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xdf, 0xfd, 0x80, 0x20, + 0x01, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xc8, 0xfe, 0x80, 0x20, 0x04, 0x21, + 0xc0, 0x05, 0x00, 0xf0, 0x7f, 0xfd, 0x01, 0x21, 0x80, 0x20, 0x49, 0x42, + 0xc0, 0x05, 0x00, 0xf0, 0x2e, 0xfe, 0x80, 0x20, 0xc0, 0x05, 0x00, 0xf0, + 0x99, 0xfd, 0x36, 0x48, 0x00, 0xf0, 0x9b, 0xfd, 0x35, 0x48, 0x00, 0xf0, + 0x5f, 0xfd, 0x10, 0x20, 0x00, 0xf0, 0x6e, 0xff, 0x23, 0x00, 0x22, 0x00, + 0x21, 0x00, 0x30, 0x48, 0x00, 0xf0, 0x74, 0xfd, 0xf0, 0x21, 0x2e, 0x48, + 0x49, 0x00, 0x00, 0xf0, 0x8f, 0xfd, 0x2c, 0x48, 0x00, 0xf0, 0x78, 0xfd, + 0x2a, 0x48, 0x00, 0xf0, 0x7a, 0xfd, 0x0a, 0x21, 0x28, 0x48, 0x00, 0xf0, + 0x87, 0xfd, 0x05, 0x22, 0x21, 0x00, 0x26, 0x48, 0x00, 0xf0, 0xec, 0xfd, + 0x02, 0x21, 0x24, 0x48, 0x00, 0xf0, 0x4e, 0xfd, 0x22, 0x48, 0x00, 0xf0, + 0x6f, 0xfd, 0x06, 0x20, 0x00, 0xf0, 0x4a, 0xff, 0x04, 0x20, 0x14, 0x49, + 0x00, 0xf0, 0x94, 0xfb, 0x02, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x5c, 0xfb, + 0x04, 0x20, 0x00, 0xf0, 0x79, 0xfb, 0x20, 0x00, 0x00, 0xf0, 0x22, 0xff, + 0x1a, 0x4b, 0x1b, 0x49, 0x1c, 0x60, 0x1b, 0x4b, 0x18, 0x68, 0x01, 0xf0, + 0x25, 0xf8, 0x00, 0xf0, 0x11, 0xff, 0x00, 0xf0, 0x21, 0xff, 0x00, 0xf0, + 0x27, 0xff, 0xc0, 0x46, 0xfd, 0xe7, 0xc0, 0x46, 0x91, 0x02, 0x00, 0x00, + 0x92, 0x02, 0x00, 0x00, 0x0e, 0x03, 0x00, 0x00, 0x0b, 0x03, 0x00, 0x00, + 0x81, 0x03, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x48, + 0x00, 0x24, 0x01, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x40, + 0x40, 0x24, 0x01, 0x40, 0x12, 0x00, 0x00, 0x20, 0x4c, 0x00, 0x00, 0x20, + 0x5c, 0x00, 0x00, 0x20, 0x00, 0x38, 0x01, 0x40, 0x00, 0x2c, 0x01, 0x40, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x01, 0x02, 0x00, 0x00, + 0x18, 0xe0, 0x00, 0xe0, 0x80, 0x38, 0x01, 0x00, 0x08, 0x00, 0x00, 0x20, + 0x02, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x64, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x1c, 0x48, 0x00, 0xf0, + 0xf5, 0xfc, 0x00, 0x28, 0x23, 0xd0, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0, + 0xf5, 0xfc, 0xfa, 0x23, 0x18, 0x4a, 0x9b, 0x00, 0x12, 0x88, 0x9a, 0x42, + 0x19, 0xd0, 0x17, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x42, + 0x53, 0x41, 0x15, 0x4a, 0x49, 0x00, 0x12, 0x78, 0xc0, 0x05, 0x9a, 0x42, + 0x0e, 0xd0, 0x00, 0xf0, 0x69, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x63, 0xfb, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, + 0xc0, 0x05, 0x00, 0xf0, 0x5d, 0xfb, 0x10, 0xbd, 0x00, 0xf0, 0x58, 0xfb, + 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x52, 0xfb, + 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x4c, 0xfb, + 0xef, 0xe7, 0xc0, 0x46, 0x00, 0x2c, 0x01, 0x40, 0x16, 0x00, 0x00, 0x20, + 0x02, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, 0x80, 0x20, 0xf8, 0xb5, + 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xb0, 0xfc, 0x00, 0x28, 0x3a, 0xd0, + 0x80, 0x20, 0x02, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0xaf, 0xfc, 0x00, 0x22, + 0x2b, 0x4b, 0x2c, 0x4f, 0x1a, 0x70, 0x2c, 0x4b, 0x2c, 0x4a, 0x1b, 0x68, + 0x11, 0x68, 0x2c, 0x4e, 0x13, 0x60, 0x2c, 0x4a, 0x30, 0x68, 0x15, 0x68, + 0x3a, 0x68, 0x2b, 0x4c, 0x90, 0x42, 0x09, 0xd0, 0x20, 0x68, 0x01, 0x28, + 0x06, 0xd9, 0x5b, 0x1a, 0x28, 0x49, 0x09, 0x78, 0x00, 0x29, 0x39, 0xd0, + 0x27, 0x49, 0x0b, 0x60, 0x23, 0x68, 0x27, 0x49, 0x01, 0x33, 0x23, 0x60, + 0xaa, 0x1a, 0x8a, 0x42, 0x03, 0xd8, 0xfa, 0x22, 0x92, 0x00, 0x93, 0x42, + 0x0e, 0xd9, 0x01, 0x23, 0x1f, 0x4a, 0x22, 0x48, 0x11, 0x78, 0x4b, 0x40, + 0x80, 0x21, 0x13, 0x70, 0x49, 0x00, 0x00, 0x2b, 0x24, 0xd0, 0x00, 0xf0, + 0x05, 0xfb, 0x00, 0x23, 0x3d, 0x60, 0x23, 0x60, 0x35, 0x60, 0x80, 0x20, + 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x6e, 0xfc, 0x00, 0x28, 0x14, 0xd0, + 0x80, 0x20, 0x04, 0x21, 0xc0, 0x05, 0x00, 0xf0, 0x6d, 0xfc, 0x16, 0x4b, + 0x16, 0x4a, 0x19, 0x68, 0x13, 0x68, 0x16, 0x48, 0x11, 0x60, 0x16, 0x4a, + 0xcb, 0x1a, 0x03, 0x60, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x0a, 0x4b, + 0x1a, 0x68, 0x13, 0x4b, 0x1a, 0x60, 0xf8, 0xbd, 0x12, 0x49, 0xc4, 0xe7, + 0x00, 0xf0, 0xde, 0xfa, 0xd9, 0xe7, 0xc0, 0x46, 0x02, 0x00, 0x00, 0x20, + 0x38, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x40, 0x68, 0x02, 0x00, 0x20, + 0x40, 0x00, 0x00, 0x20, 0x64, 0x02, 0x00, 0x20, 0x1c, 0x00, 0x00, 0x20, + 0x24, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x20, 0x10, 0x27, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x48, 0x38, 0x00, 0x00, 0x40, 0x6c, 0x02, 0x00, 0x20, + 0x60, 0x01, 0x00, 0x20, 0x5c, 0x01, 0x00, 0x20, 0x44, 0x00, 0x00, 0x20, + 0x74, 0x02, 0x00, 0x20, 0x10, 0xb5, 0x02, 0x21, 0x19, 0x48, 0x00, 0xf0, + 0x29, 0xfc, 0x00, 0x28, 0x2a, 0xd0, 0x02, 0x21, 0x16, 0x48, 0x00, 0xf0, + 0x29, 0xfc, 0x02, 0x22, 0x01, 0x21, 0x15, 0x48, 0x00, 0xf0, 0xb4, 0xf9, + 0x00, 0x28, 0x1f, 0xd0, 0x02, 0x22, 0x01, 0x21, 0x11, 0x48, 0x00, 0xf0, + 0xa8, 0xf9, 0x11, 0x49, 0x11, 0x4a, 0x08, 0x68, 0x13, 0x88, 0x1b, 0x18, + 0x0b, 0x60, 0x10, 0x49, 0x52, 0x88, 0x0b, 0x68, 0x9b, 0x18, 0x0b, 0x60, + 0x0e, 0x4b, 0x0f, 0x49, 0x1b, 0x88, 0x9a, 0x42, 0x0b, 0xd9, 0xd3, 0x1a, + 0x0a, 0x68, 0x0d, 0x48, 0x9b, 0x18, 0x0d, 0x4a, 0x0b, 0x60, 0x13, 0x88, + 0x01, 0x33, 0x13, 0x80, 0x00, 0xf0, 0x78, 0xf9, 0x10, 0xbd, 0x9b, 0x1a, + 0xf2, 0xe7, 0xc0, 0x46, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x02, 0x40, + 0x78, 0x02, 0x00, 0x20, 0x12, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, + 0x22, 0x00, 0x00, 0x20, 0x30, 0x00, 0x00, 0x20, 0x00, 0x24, 0x01, 0x40, + 0x10, 0x00, 0x00, 0x20, 0xf8, 0xb5, 0x04, 0x20, 0x00, 0xf0, 0x28, 0xfa, + 0x38, 0x48, 0x00, 0xf0, 0x8e, 0xfc, 0x38, 0x4e, 0x04, 0x21, 0x30, 0x60, + 0x37, 0x48, 0x00, 0xf0, 0x6a, 0xfa, 0x00, 0x28, 0x1e, 0xd0, 0x36, 0x4b, + 0x36, 0x4f, 0x1d, 0x88, 0x00, 0x24, 0x38, 0x68, 0x29, 0x00, 0x00, 0xf0, + 0xbd, 0xfe, 0x34, 0x4b, 0x3c, 0x60, 0x34, 0x4f, 0x18, 0x80, 0x29, 0x00, + 0x38, 0x68, 0x00, 0xf0, 0xb5, 0xfe, 0x01, 0xf0, 0x83, 0xfb, 0x31, 0x4b, + 0x3c, 0x60, 0x31, 0x4f, 0x18, 0x60, 0x29, 0x00, 0x38, 0x68, 0x00, 0xf0, + 0xab, 0xfe, 0x2f, 0x4b, 0x3c, 0x60, 0x18, 0x80, 0x27, 0x4b, 0x1c, 0x80, + 0x2d, 0x4b, 0x2e, 0x4c, 0x18, 0x88, 0x23, 0x78, 0x00, 0x2b, 0x03, 0xd0, + 0xfa, 0x23, 0x9b, 0x00, 0x18, 0x1a, 0x80, 0xb2, 0xfa, 0x21, 0x33, 0x68, + 0x29, 0x4d, 0x89, 0x00, 0x28, 0x80, 0x58, 0x43, 0x00, 0xf0, 0x94, 0xfe, + 0x00, 0x21, 0x02, 0x00, 0x19, 0x48, 0x00, 0xf0, 0x37, 0xfc, 0x00, 0x21, + 0x17, 0x48, 0x00, 0xf0, 0x4e, 0xfc, 0x2b, 0x88, 0x00, 0x2b, 0x18, 0xd0, + 0x21, 0x4b, 0x80, 0x21, 0x1b, 0x78, 0x90, 0x20, 0x5a, 0x42, 0x53, 0x41, + 0x22, 0x78, 0x49, 0x00, 0xc0, 0x05, 0x9a, 0x42, 0x0e, 0xd0, 0x00, 0xf0, + 0x19, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, + 0x13, 0xfa, 0x80, 0x21, 0x90, 0x20, 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, + 0x0d, 0xfa, 0xf8, 0xbd, 0x00, 0xf0, 0x0c, 0xfa, 0x80, 0x21, 0x90, 0x20, + 0x09, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x06, 0xfa, 0x80, 0x21, 0x90, 0x20, + 0x49, 0x01, 0xc0, 0x05, 0x00, 0xf0, 0x00, 0xfa, 0xef, 0xe7, 0xc0, 0x46, + 0x00, 0x2c, 0x01, 0x40, 0x04, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, + 0x10, 0x00, 0x00, 0x20, 0x2c, 0x00, 0x00, 0x20, 0x22, 0x00, 0x00, 0x20, + 0x30, 0x00, 0x00, 0x20, 0x34, 0x00, 0x00, 0x20, 0x78, 0x02, 0x00, 0x20, + 0x70, 0x02, 0x00, 0x20, 0x18, 0x00, 0x00, 0x20, 0x48, 0x00, 0x00, 0x20, + 0x16, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 0x01, 0x29, 0x0c, 0xd0, + 0x02, 0x29, 0x0f, 0xd0, 0x00, 0x29, 0x0c, 0xd1, 0xc3, 0x68, 0x0a, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x80, 0x23, 0xc2, 0x68, 0x5b, 0x02, 0x13, 0x43, + 0x02, 0xe0, 0xc3, 0x68, 0x06, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, + 0xc3, 0x68, 0x05, 0x4a, 0x13, 0x40, 0xc3, 0x60, 0x80, 0x23, 0xc2, 0x68, + 0x9b, 0x01, 0xf0, 0xe7, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xdf, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xc3, 0x68, 0x02, 0x4a, 0x13, 0x40, 0xc3, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0xf7, 0xb5, 0x00, 0x29, + 0x01, 0xd1, 0x81, 0x62, 0xf7, 0xbd, 0x01, 0x23, 0x1d, 0x00, 0x14, 0x78, + 0x00, 0x93, 0xa5, 0x40, 0x00, 0x24, 0x26, 0x00, 0x9b, 0x1a, 0x01, 0x93, + 0x01, 0x9b, 0x9b, 0x18, 0xdb, 0xb2, 0x99, 0x42, 0x06, 0xd8, 0x04, 0x23, + 0x00, 0x2e, 0x13, 0xd0, 0x00, 0x2c, 0x18, 0xd0, 0x00, 0xf0, 0x38, 0xfd, + 0x53, 0x78, 0x00, 0x9f, 0x9f, 0x40, 0x3d, 0x43, 0x17, 0x78, 0x01, 0x32, + 0xbc, 0x46, 0x9c, 0x45, 0xbf, 0x41, 0x63, 0x45, 0x9b, 0x41, 0x7f, 0x42, + 0x5b, 0x42, 0x3e, 0x43, 0x1c, 0x43, 0xe3, 0xe7, 0x00, 0x2c, 0x04, 0xd0, + 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x85, 0x62, 0xd2, 0xe7, 0xc2, 0x68, + 0x9a, 0x43, 0xc2, 0x60, 0xf9, 0xe7, 0x07, 0x23, 0x19, 0x40, 0x41, 0x61, + 0x70, 0x47, 0x00, 0x00, 0xc3, 0x68, 0x02, 0x4a, 0x13, 0x40, 0xc3, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0xff, 0xff, 0x7f, 0xff, 0x01, 0x23, 0x82, 0x68, + 0x13, 0x43, 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, + 0xf7, 0xff, 0x01, 0x23, 0x22, 0x68, 0x1a, 0x42, 0xfc, 0xd0, 0x10, 0xbd, + 0x83, 0x68, 0x01, 0x20, 0x98, 0x43, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x00, + 0xff, 0xf7, 0xf8, 0xff, 0x00, 0x28, 0x10, 0xd1, 0x21, 0x00, 0x04, 0x23, + 0xa2, 0x68, 0x08, 0x31, 0x1a, 0x42, 0x06, 0xd0, 0x10, 0x22, 0xa0, 0x68, + 0x02, 0x43, 0xa2, 0x60, 0x0a, 0x68, 0x1a, 0x42, 0xfc, 0xd1, 0x02, 0x23, + 0xa2, 0x68, 0x13, 0x43, 0xa3, 0x60, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x00, + 0xff, 0xf7, 0xe4, 0xff, 0x20, 0x00, 0xff, 0xf7, 0xdd, 0xff, 0x00, 0x28, + 0xfa, 0xd0, 0x10, 0xbd, 0x80, 0x23, 0x82, 0x68, 0x1b, 0x06, 0x13, 0x43, + 0x83, 0x60, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x00, 0xff, 0xf7, 0xf6, 0xff, + 0xa3, 0x68, 0x00, 0x2b, 0xfc, 0xdb, 0x10, 0xbd, 0xc3, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0xc3, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xdf, 0xff, 0xff, + 0x18, 0x22, 0xc3, 0x68, 0x93, 0x43, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, + 0x20, 0x22, 0xc3, 0x68, 0x93, 0x43, 0xc3, 0x60, 0x70, 0x47, 0x01, 0x23, + 0xc2, 0x68, 0x13, 0x43, 0xc3, 0x60, 0x70, 0x47, 0x80, 0x23, 0x03, 0x4a, + 0x1b, 0x04, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x08, 0x27, 0x01, 0x40, 0x04, 0x23, 0x82, 0x68, 0x13, 0x43, 0x83, 0x60, + 0x70, 0x47, 0x14, 0x23, 0x00, 0x22, 0x01, 0x39, 0x4b, 0x43, 0x1b, 0x18, + 0x9a, 0x60, 0xda, 0x60, 0x1a, 0x61, 0x5a, 0x61, 0x0f, 0x23, 0x89, 0x00, + 0x8b, 0x40, 0x42, 0x68, 0x13, 0x43, 0x43, 0x60, 0x70, 0x47, 0x01, 0x39, + 0x89, 0x00, 0x8a, 0x40, 0x42, 0x60, 0x70, 0x47, 0x01, 0x39, 0x89, 0x00, + 0x8a, 0x40, 0x00, 0x68, 0x10, 0x40, 0x42, 0x1e, 0x90, 0x41, 0xc0, 0xb2, + 0x70, 0x47, 0x00, 0x00, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, + 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, + 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, 0xff, 0xcf, 0xff, 0xff, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, + 0x03, 0x4b, 0x19, 0x40, 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0xff, 0xf3, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, + 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x01, 0x68, 0x03, 0x4b, 0x19, 0x40, + 0x01, 0x60, 0x03, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0xff, 0xfc, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x80, 0x23, + 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x20, 0x23, 0x08, 0x30, 0x08, 0x18, + 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x03, 0x68, 0x01, 0x4a, 0x13, 0x40, + 0x03, 0x60, 0x70, 0x47, 0xff, 0xbf, 0xff, 0xff, 0x4b, 0x1e, 0x14, 0x21, + 0x10, 0x22, 0x59, 0x43, 0x08, 0x30, 0x08, 0x18, 0x03, 0x68, 0x93, 0x43, + 0x03, 0x60, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x01, 0x23, + 0x08, 0x30, 0x08, 0x18, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x08, 0x18, 0x83, 0x68, 0xdb, 0x07, + 0x00, 0xd4, 0x02, 0x61, 0x70, 0x47, 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, + 0x08, 0x18, 0x83, 0x68, 0xdb, 0x07, 0x00, 0xd4, 0x42, 0x61, 0x70, 0x47, + 0x4b, 0x1e, 0x14, 0x21, 0x59, 0x43, 0x0c, 0x30, 0x09, 0x18, 0x0a, 0x60, + 0x70, 0x47, 0x00, 0x00, 0x01, 0x29, 0x0c, 0xd0, 0x02, 0x29, 0x13, 0xd0, + 0x00, 0x29, 0x07, 0xd1, 0x0a, 0x4a, 0x13, 0x68, 0x03, 0x43, 0x13, 0x60, + 0x09, 0x4a, 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x70, 0x47, 0x06, 0x4a, + 0x13, 0x68, 0x83, 0x43, 0x13, 0x60, 0x05, 0x4a, 0x13, 0x68, 0x18, 0x43, + 0x10, 0x60, 0xf5, 0xe7, 0x01, 0x4a, 0x13, 0x68, 0x03, 0x43, 0xf5, 0xe7, + 0x08, 0x04, 0x01, 0x40, 0x0c, 0x04, 0x01, 0x40, 0x04, 0x4a, 0x13, 0x68, + 0x03, 0x43, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x68, 0x18, 0x43, 0x10, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x00, 0x04, 0x01, 0x40, 0x04, 0x04, 0x01, 0x40, + 0x01, 0x4b, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x14, 0x04, 0x01, 0x40, + 0x19, 0x4b, 0xf7, 0xb5, 0xce, 0x18, 0x73, 0x42, 0x5e, 0x41, 0x00, 0x22, + 0x01, 0x90, 0x76, 0x00, 0x01, 0x24, 0x23, 0x00, 0x93, 0x40, 0x01, 0x98, + 0x18, 0x42, 0x17, 0xd0, 0x13, 0x4d, 0x03, 0x23, 0xa9, 0x42, 0x05, 0xd0, + 0x16, 0xd8, 0x12, 0x4d, 0x23, 0x00, 0xa9, 0x42, 0x00, 0xd0, 0x33, 0x00, + 0x10, 0x48, 0x03, 0x25, 0x94, 0x08, 0x24, 0x18, 0x0f, 0x20, 0x15, 0x40, + 0xad, 0x00, 0xa8, 0x40, 0xab, 0x40, 0xa4, 0x00, 0x27, 0x68, 0x87, 0x43, + 0x3b, 0x43, 0x23, 0x60, 0x01, 0x32, 0x10, 0x2a, 0xde, 0xd1, 0xf7, 0xbd, + 0x08, 0x4c, 0x04, 0x23, 0xa1, 0x42, 0xe9, 0xd0, 0x07, 0x4c, 0x00, 0x23, + 0xa1, 0x42, 0xe5, 0xd1, 0x05, 0x33, 0xe3, 0xe7, 0x00, 0xf8, 0xff, 0xb7, + 0x00, 0x0c, 0x00, 0x48, 0x00, 0x04, 0x00, 0x48, 0x02, 0x40, 0x00, 0x10, + 0x00, 0x10, 0x00, 0x48, 0x00, 0x14, 0x00, 0x48, 0x81, 0x61, 0x70, 0x47, + 0x09, 0x04, 0x81, 0x61, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, 0x70, 0x47, + 0xf0, 0xb5, 0x85, 0xb0, 0x01, 0x91, 0x03, 0x27, 0x00, 0x21, 0x02, 0x92, + 0x03, 0x93, 0x02, 0x68, 0xc3, 0x68, 0x03, 0x9c, 0x01, 0x25, 0x0c, 0x41, + 0x2c, 0x42, 0x0a, 0xd0, 0x3d, 0x00, 0x4c, 0x00, 0xa5, 0x40, 0x01, 0x9e, + 0xaa, 0x43, 0xab, 0x43, 0x02, 0x9d, 0xa6, 0x40, 0xa5, 0x40, 0x32, 0x43, + 0x2b, 0x43, 0x01, 0x31, 0x10, 0x29, 0xec, 0xd1, 0x02, 0x60, 0xc3, 0x60, + 0x05, 0xb0, 0xf0, 0xbd, 0xf7, 0xb5, 0x01, 0x92, 0x01, 0x29, 0x16, 0xd1, + 0x41, 0x68, 0x19, 0x43, 0x00, 0x24, 0x01, 0x26, 0x03, 0x27, 0x41, 0x60, + 0x81, 0x68, 0x1d, 0x00, 0x25, 0x41, 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, + 0x65, 0x00, 0xaa, 0x40, 0x91, 0x43, 0x01, 0x9a, 0xaa, 0x40, 0x11, 0x43, + 0x01, 0x34, 0x10, 0x2c, 0xf1, 0xd1, 0x81, 0x60, 0xf7, 0xbd, 0x41, 0x68, + 0x99, 0x43, 0xe7, 0xe7, 0xf7, 0xb5, 0x00, 0x23, 0x01, 0x26, 0x0f, 0x27, + 0x04, 0x6a, 0x00, 0x91, 0x41, 0x6a, 0x01, 0x92, 0x01, 0x9d, 0x1d, 0x41, + 0x35, 0x42, 0x06, 0xd0, 0x3a, 0x00, 0x9d, 0x00, 0xaa, 0x40, 0x94, 0x43, + 0x00, 0x9a, 0xaa, 0x40, 0x14, 0x43, 0x01, 0x33, 0x08, 0x2b, 0xf1, 0xd1, + 0x01, 0x26, 0x0f, 0x27, 0x01, 0x9a, 0x1a, 0x41, 0x32, 0x42, 0x07, 0xd0, + 0x3a, 0x00, 0x9d, 0x00, 0x20, 0x3d, 0xaa, 0x40, 0x91, 0x43, 0x00, 0x9a, + 0xaa, 0x40, 0x11, 0x43, 0x01, 0x33, 0x10, 0x2b, 0xf0, 0xd1, 0x04, 0x62, + 0x41, 0x62, 0xf7, 0xbd, 0x00, 0x23, 0x00, 0xb5, 0x06, 0x28, 0x0a, 0xd8, + 0x01, 0x33, 0x00, 0xf0, 0xe1, 0xfb, 0x0a, 0x0e, 0x10, 0x12, 0x18, 0x16, + 0x04, 0x00, 0x0b, 0x4a, 0x10, 0x68, 0x40, 0x0c, 0x03, 0x40, 0x18, 0x00, + 0x00, 0xbd, 0x08, 0x4a, 0x10, 0x68, 0x40, 0x08, 0xf8, 0xe7, 0x07, 0x4a, + 0xfa, 0xe7, 0x06, 0x4a, 0xf2, 0xe7, 0x05, 0x4a, 0x10, 0x68, 0x40, 0x0e, + 0xf0, 0xe7, 0x04, 0x4a, 0xf2, 0xe7, 0x04, 0x4a, 0xf0, 0xe7, 0xc0, 0x46, + 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, 0x20, 0x10, 0x02, 0x40, + 0x24, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x04, 0x00, 0x20, 0x00, 0xff, 0xf7, + 0xd1, 0xff, 0x00, 0x28, 0xfa, 0xd0, 0x10, 0xbd, 0x00, 0xb5, 0x06, 0x28, + 0x0b, 0xd8, 0x00, 0xf0, 0xb1, 0xfb, 0x0b, 0x0f, 0x11, 0x17, 0x15, 0x13, + 0x04, 0x00, 0x0c, 0x4a, 0x80, 0x23, 0x11, 0x68, 0x5b, 0x02, 0x0b, 0x43, + 0x13, 0x60, 0x00, 0xbd, 0x08, 0x4a, 0x01, 0x23, 0x11, 0x68, 0xf8, 0xe7, + 0x07, 0x4a, 0xfa, 0xe7, 0x06, 0x4a, 0xf1, 0xe7, 0x06, 0x4a, 0xf6, 0xe7, + 0x06, 0x4a, 0xf4, 0xe7, 0x80, 0x23, 0x03, 0x4a, 0x5b, 0x04, 0x11, 0x68, + 0xeb, 0xe7, 0xc0, 0x46, 0x34, 0x10, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, + 0x20, 0x10, 0x02, 0x40, 0x24, 0x10, 0x02, 0x40, 0x01, 0x38, 0x00, 0xb5, + 0x05, 0x28, 0x12, 0xd8, 0x00, 0xf0, 0x86, 0xfb, 0x03, 0x09, 0x12, 0x11, + 0x11, 0x19, 0x03, 0x21, 0x0c, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x13, 0x60, + 0x07, 0xe0, 0x03, 0x22, 0x09, 0x49, 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, + 0x01, 0x23, 0x13, 0x43, 0x0b, 0x60, 0x00, 0xbd, 0x03, 0x22, 0x05, 0x49, + 0x0b, 0x68, 0x93, 0x43, 0x1a, 0x00, 0x02, 0x23, 0xf5, 0xe7, 0x03, 0x23, + 0x01, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0xe8, 0xe7, 0x04, 0x10, 0x02, 0x40, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xc3, 0xff, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x00, 0x04, 0x0b, 0x40, 0x03, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x04, 0x10, 0x02, 0x40, 0xff, 0xff, 0xfe, 0xff, + 0x03, 0x4a, 0x04, 0x49, 0x13, 0x68, 0x0b, 0x40, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0xff, 0xf8, 0xff, 0xff, + 0xf0, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, + 0x70, 0x47, 0xc0, 0x46, 0x04, 0x10, 0x02, 0x40, 0x10, 0xb5, 0x01, 0x20, + 0xff, 0xf7, 0x7e, 0xff, 0x01, 0x20, 0xff, 0xf7, 0x73, 0xff, 0x01, 0x20, + 0xff, 0xf7, 0xa2, 0xff, 0x00, 0x20, 0xff, 0xf7, 0xe9, 0xff, 0x00, 0x20, + 0xff, 0xf7, 0xda, 0xff, 0x00, 0xf0, 0x6c, 0xfa, 0x01, 0x20, 0x00, 0xf0, + 0x71, 0xfa, 0xa0, 0x20, 0x80, 0x03, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x20, + 0xff, 0xf7, 0xc2, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x63, 0xff, 0x03, 0x20, + 0xff, 0xf7, 0x58, 0xff, 0x03, 0x20, 0xff, 0xf7, 0x87, 0xff, 0x03, 0x4b, + 0x03, 0x4a, 0x13, 0x60, 0x03, 0x4a, 0x13, 0x60, 0x10, 0xbd, 0xc0, 0x46, + 0x00, 0x6c, 0xdc, 0x02, 0x0c, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x20, + 0x05, 0x4b, 0x42, 0x09, 0xd2, 0x18, 0x1f, 0x23, 0x18, 0x40, 0x1e, 0x3b, + 0x83, 0x40, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x00, 0x10, 0x02, 0x40, 0x06, 0x4a, 0x43, 0x09, 0x9b, 0x18, 0x1f, 0x22, + 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, 0x19, 0x68, 0x11, 0x43, 0x19, 0x60, + 0x19, 0x68, 0x91, 0x43, 0x19, 0x60, 0x70, 0x47, 0x00, 0x10, 0x02, 0x40, + 0xc3, 0x68, 0x0b, 0x43, 0xc3, 0x60, 0x70, 0x47, 0x00, 0x69, 0x08, 0x40, + 0x41, 0x1e, 0x88, 0x41, 0xc0, 0xb2, 0x70, 0x47, 0xc9, 0x43, 0x01, 0x61, + 0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x04, 0x68, 0x03, 0x4d, 0x1a, 0x43, + 0x2c, 0x40, 0x0a, 0x43, 0x22, 0x43, 0x02, 0x60, 0x30, 0xbd, 0xc0, 0x46, + 0x8f, 0xfc, 0xff, 0xff, 0x80, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, + 0x70, 0x47, 0x08, 0x22, 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, + 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0x01, 0x22, + 0x03, 0x68, 0x93, 0x43, 0x03, 0x60, 0x70, 0x47, 0x81, 0x62, 0x70, 0x47, + 0xc1, 0x62, 0x70, 0x47, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0xae, 0xfa, 0x04, 0x0f, 0x08, 0x11, + 0x0a, 0x13, 0x0d, 0x00, 0x02, 0x21, 0x8a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x20, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, 0xf8, 0xe7, 0x05, 0x49, + 0xfb, 0xe7, 0x08, 0x21, 0xf3, 0xe7, 0x80, 0x21, 0xf1, 0xe7, 0x03, 0x49, + 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, + 0xff, 0xf7, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x06, 0x29, + 0x09, 0xd8, 0x19, 0x6a, 0x00, 0xf0, 0x8a, 0xfa, 0x04, 0x10, 0x08, 0x12, + 0x0a, 0x14, 0x0d, 0x00, 0x01, 0x22, 0x0a, 0x43, 0x1a, 0x62, 0x00, 0xbd, + 0x10, 0x22, 0xfa, 0xe7, 0x80, 0x22, 0x52, 0x00, 0xf7, 0xe7, 0x80, 0x22, + 0x52, 0x01, 0xf4, 0xe7, 0x04, 0x22, 0xf2, 0xe7, 0x40, 0x22, 0xf0, 0xe7, + 0x80, 0x22, 0xd2, 0x00, 0xed, 0xe7, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x09, 0xd8, 0x1a, 0x6a, 0x00, 0xf0, 0x6a, 0xfa, + 0x04, 0x0f, 0x08, 0x11, 0x0a, 0x13, 0x0d, 0x00, 0x01, 0x21, 0x8a, 0x43, + 0x1a, 0x62, 0x00, 0xbd, 0x10, 0x21, 0xfa, 0xe7, 0x05, 0x49, 0x0a, 0x40, + 0xf8, 0xe7, 0x05, 0x49, 0xfb, 0xe7, 0x04, 0x21, 0xf3, 0xe7, 0x40, 0x21, + 0xf1, 0xe7, 0x03, 0x49, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0xfe, 0xff, 0xff, + 0xff, 0xef, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x06, 0x29, 0x06, 0xd8, 0x00, 0xf0, 0x47, 0xfa, 0x04, 0x05, + 0x06, 0x05, 0x08, 0x05, 0x0a, 0x00, 0x5a, 0x63, 0x00, 0xbd, 0x9a, 0x63, + 0xfc, 0xe7, 0xda, 0x63, 0xfa, 0xe7, 0x1a, 0x64, 0xf8, 0xe7, 0x80, 0x23, + 0x42, 0x6c, 0x1b, 0x02, 0x13, 0x43, 0x43, 0x64, 0x70, 0x47, 0x40, 0x6a, + 0x70, 0x47, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb5, + 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, 0x29, 0xfa, 0x02, 0x0b, + 0x12, 0x1b, 0xf0, 0x20, 0x99, 0x69, 0x12, 0x01, 0x81, 0x43, 0x99, 0x61, + 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, 0x99, 0x69, 0x0b, 0x48, + 0x12, 0x03, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, 0xf5, 0xe7, 0xf0, 0x20, + 0xd9, 0x69, 0x12, 0x01, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, 0x0a, 0x43, + 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, 0x12, 0x03, 0x01, 0x40, + 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, 0xff, 0x0f, 0xff, 0xff, + 0x03, 0x00, 0x00, 0xb5, 0x08, 0x00, 0x03, 0x29, 0x0b, 0xd8, 0x00, 0xf0, + 0xfd, 0xf9, 0x02, 0x0b, 0x12, 0x1b, 0x0c, 0x20, 0x99, 0x69, 0x92, 0x00, + 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x00, 0xbd, + 0x99, 0x69, 0x0b, 0x48, 0x92, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, + 0xf5, 0xe7, 0x0c, 0x20, 0xd9, 0x69, 0x92, 0x00, 0x81, 0x43, 0xd9, 0x61, + 0xd9, 0x69, 0x0a, 0x43, 0xda, 0x61, 0xee, 0xe7, 0xd9, 0x69, 0x03, 0x48, + 0x92, 0x02, 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xc0, 0x46, + 0xff, 0xf3, 0xff, 0xff, 0x03, 0x00, 0x08, 0x00, 0x30, 0xb5, 0x03, 0x21, + 0x02, 0x24, 0x05, 0x00, 0x0a, 0x40, 0xa5, 0x43, 0x01, 0x2d, 0x03, 0xd1, + 0x54, 0x1e, 0x01, 0x2c, 0x00, 0xd8, 0x4a, 0x40, 0x03, 0x28, 0x0a, 0xd8, + 0x00, 0xf0, 0xc6, 0xf9, 0x02, 0x0a, 0x11, 0x19, 0x03, 0x20, 0x99, 0x69, + 0x81, 0x43, 0x99, 0x61, 0x99, 0x69, 0x0a, 0x43, 0x9a, 0x61, 0x30, 0xbd, + 0x99, 0x69, 0x0a, 0x48, 0x12, 0x02, 0x01, 0x40, 0x99, 0x61, 0x99, 0x69, + 0xf5, 0xe7, 0x03, 0x20, 0xd9, 0x69, 0x81, 0x43, 0xd9, 0x61, 0xd9, 0x69, + 0x0a, 0x43, 0xda, 0x61, 0xef, 0xe7, 0xd9, 0x69, 0x02, 0x48, 0x12, 0x02, + 0x01, 0x40, 0xd9, 0x61, 0xd9, 0x69, 0xf5, 0xe7, 0xff, 0xfc, 0xff, 0xff, + 0x01, 0x23, 0x89, 0x00, 0x8b, 0x40, 0x02, 0x6a, 0x13, 0x43, 0x03, 0x62, + 0x70, 0x47, 0x07, 0x22, 0x83, 0x68, 0x93, 0x43, 0x83, 0x60, 0x83, 0x68, + 0x19, 0x43, 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, + 0x1b, 0x68, 0x04, 0x00, 0x48, 0x08, 0xc0, 0x18, 0x00, 0xf0, 0x96, 0xf9, + 0xe0, 0x60, 0x10, 0xbd, 0x0c, 0x00, 0x00, 0x20, 0x08, 0x29, 0x04, 0xd1, + 0x03, 0x68, 0x04, 0x4a, 0x13, 0x40, 0x03, 0x60, 0x70, 0x47, 0x80, 0x23, + 0x02, 0x68, 0x5b, 0x01, 0x13, 0x43, 0xf8, 0xe7, 0xff, 0xef, 0xff, 0xff, + 0x43, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, 0x43, 0x60, 0x70, 0x47, + 0xff, 0xcf, 0xff, 0xff, 0x03, 0x68, 0x02, 0x4a, 0x13, 0x40, 0x0b, 0x43, + 0x03, 0x60, 0x70, 0x47, 0xff, 0xf9, 0xff, 0xff, 0x0c, 0x22, 0x03, 0x68, + 0x93, 0x43, 0x0b, 0x43, 0x03, 0x60, 0x70, 0x47, 0x83, 0x68, 0x02, 0x4a, + 0x13, 0x40, 0x0b, 0x43, 0x83, 0x60, 0x70, 0x47, 0xff, 0xfc, 0xff, 0xff, + 0x01, 0x23, 0x02, 0x68, 0x13, 0x43, 0x03, 0x60, 0x70, 0x47, 0xc9, 0x05, + 0xc9, 0x0d, 0x81, 0x62, 0x70, 0x47, 0x40, 0x6a, 0xc0, 0x05, 0xc0, 0x0d, + 0x70, 0x47, 0xfe, 0xe7, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x16, 0x4b, + 0x16, 0x4a, 0x17, 0x49, 0x8b, 0x42, 0x18, 0xd3, 0x00, 0x21, 0x16, 0x4a, + 0x93, 0x42, 0x17, 0xd3, 0x80, 0x23, 0x15, 0x4a, 0x9b, 0x00, 0x11, 0x68, + 0x14, 0x4c, 0x0b, 0x43, 0x13, 0x60, 0x14, 0x4b, 0x9c, 0x42, 0x0f, 0xd3, + 0x13, 0x4c, 0x14, 0x4b, 0x9c, 0x42, 0x0e, 0xd3, 0xfe, 0xf7, 0x2e, 0xff, + 0x12, 0x4c, 0x13, 0x4b, 0x9c, 0x42, 0x0b, 0xd3, 0x10, 0xbd, 0x01, 0xca, + 0x01, 0xc3, 0xe1, 0xe7, 0x02, 0xc3, 0xe3, 0xe7, 0x08, 0xcc, 0x98, 0x47, + 0xe9, 0xe7, 0x08, 0xcc, 0x98, 0x47, 0xea, 0xe7, 0x08, 0xcc, 0x98, 0x47, + 0xed, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0x00, 0x20, 0x48, 0x36, 0x00, 0x08, + 0x10, 0x00, 0x00, 0x20, 0x7c, 0x02, 0x00, 0x20, 0x14, 0xed, 0x00, 0xe0, + 0x48, 0x36, 0x00, 0x08, 0x48, 0x36, 0x00, 0x08, 0x48, 0x36, 0x00, 0x08, + 0x48, 0x36, 0x00, 0x08, 0x48, 0x36, 0x00, 0x08, 0x48, 0x36, 0x00, 0x08, + 0x02, 0x4b, 0x00, 0x02, 0x00, 0x0a, 0x18, 0x60, 0x70, 0x47, 0xc0, 0x46, + 0x14, 0xe0, 0x00, 0xe0, 0x04, 0x21, 0x03, 0x4a, 0x08, 0x40, 0x13, 0x68, + 0x8b, 0x43, 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, + 0x02, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x10, 0xe0, 0x00, 0xe0, 0x01, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, + 0x13, 0x60, 0x70, 0x47, 0x10, 0xe0, 0x00, 0xe0, 0x04, 0x4a, 0x43, 0x09, + 0x9b, 0x00, 0x9b, 0x18, 0x1f, 0x22, 0x10, 0x40, 0x1e, 0x3a, 0x82, 0x40, + 0x1a, 0x60, 0x70, 0x47, 0x00, 0xe1, 0x00, 0xe0, 0x10, 0xb5, 0x1f, 0x28, + 0x12, 0xd9, 0x0f, 0x23, 0x18, 0x40, 0x04, 0x38, 0xc0, 0xb2, 0x83, 0x08, + 0x08, 0x4a, 0x9b, 0x00, 0x18, 0x24, 0xc0, 0x00, 0x20, 0x40, 0xe7, 0x34, + 0x84, 0x40, 0x81, 0x40, 0x9b, 0x18, 0x1a, 0x68, 0xa2, 0x43, 0x11, 0x43, + 0x19, 0x60, 0x10, 0xbd, 0x83, 0x08, 0x02, 0x4a, 0x9b, 0x00, 0xef, 0xe7, + 0x18, 0xed, 0x00, 0xe0, 0x00, 0xe4, 0x00, 0xe0, 0xfe, 0xe7, 0x00, 0x00, + 0x10, 0x23, 0x02, 0x4a, 0x11, 0x68, 0x0b, 0x43, 0x13, 0x60, 0x70, 0x47, + 0x00, 0x20, 0x02, 0x40, 0x07, 0x21, 0x03, 0x4a, 0x13, 0x68, 0x8b, 0x43, + 0x03, 0x43, 0x13, 0x60, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x20, 0x02, 0x40, + 0xf0, 0xb5, 0xc6, 0x46, 0x00, 0xb5, 0x0f, 0x2a, 0x43, 0xd9, 0x0b, 0x00, + 0x03, 0x26, 0x03, 0x43, 0x1e, 0x40, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x2e, + 0x40, 0xd1, 0x15, 0x00, 0x10, 0x3d, 0x2d, 0x09, 0xac, 0x46, 0x2d, 0x01, + 0xa8, 0x46, 0x80, 0x44, 0x00, 0xe0, 0x3b, 0x00, 0x67, 0x68, 0x25, 0x68, + 0x5f, 0x60, 0xe7, 0x68, 0x1d, 0x60, 0xdf, 0x60, 0x1f, 0x00, 0xa5, 0x68, + 0x10, 0x37, 0x9d, 0x60, 0x10, 0x34, 0x43, 0x45, 0xf1, 0xd1, 0x65, 0x46, + 0x0f, 0x23, 0x0c, 0x24, 0x01, 0x35, 0x2d, 0x01, 0x49, 0x19, 0x13, 0x40, + 0x45, 0x19, 0x14, 0x42, 0x23, 0xd0, 0x8c, 0x59, 0xac, 0x51, 0x04, 0x36, + 0x9c, 0x1b, 0x03, 0x2c, 0xf9, 0xd8, 0x03, 0x24, 0x04, 0x3b, 0x9b, 0x08, + 0x01, 0x33, 0x9b, 0x00, 0x22, 0x40, 0xed, 0x18, 0xc9, 0x18, 0x56, 0x1e, + 0x00, 0x2a, 0x07, 0xd0, 0x00, 0x23, 0x00, 0xe0, 0x23, 0x00, 0xca, 0x5c, + 0x5c, 0x1c, 0xea, 0x54, 0x9e, 0x42, 0xf9, 0xd1, 0x04, 0xbc, 0x90, 0x46, + 0xf0, 0xbd, 0x05, 0x00, 0x56, 0x1e, 0x00, 0x2a, 0xf0, 0xd1, 0xf7, 0xe7, + 0x56, 0x1e, 0x05, 0x00, 0xec, 0xe7, 0x1a, 0x00, 0xf6, 0xe7, 0xc0, 0x46, + 0xf0, 0xb5, 0x05, 0x00, 0x83, 0x07, 0x4a, 0xd0, 0x54, 0x1e, 0x00, 0x2a, + 0x44, 0xd0, 0xce, 0xb2, 0x03, 0x00, 0x03, 0x22, 0x02, 0xe0, 0x01, 0x35, + 0x01, 0x3c, 0x3d, 0xd3, 0x01, 0x33, 0x2e, 0x70, 0x13, 0x42, 0xf8, 0xd1, + 0x03, 0x2c, 0x2f, 0xd9, 0xff, 0x22, 0x0a, 0x40, 0x15, 0x02, 0x15, 0x43, + 0x2a, 0x04, 0x15, 0x43, 0x0f, 0x2c, 0x35, 0xd9, 0x27, 0x00, 0x10, 0x3f, + 0x3f, 0x09, 0x3e, 0x01, 0xb4, 0x46, 0x1e, 0x00, 0x1a, 0x00, 0x10, 0x36, + 0x66, 0x44, 0x15, 0x60, 0x55, 0x60, 0x95, 0x60, 0xd5, 0x60, 0x10, 0x32, + 0xb2, 0x42, 0xf8, 0xd1, 0x0f, 0x26, 0x0c, 0x22, 0x01, 0x37, 0x3f, 0x01, + 0x26, 0x40, 0xdb, 0x19, 0x37, 0x00, 0x22, 0x42, 0x17, 0xd0, 0x3e, 0x1f, + 0xb6, 0x08, 0xb4, 0x00, 0xa4, 0x46, 0x1a, 0x00, 0x1c, 0x1d, 0x64, 0x44, + 0x20, 0xc2, 0xa2, 0x42, 0xfc, 0xd1, 0x03, 0x24, 0x01, 0x36, 0xb6, 0x00, + 0x9b, 0x19, 0x3c, 0x40, 0x00, 0x2c, 0x05, 0xd0, 0xc9, 0xb2, 0x1c, 0x19, + 0x19, 0x70, 0x01, 0x33, 0x9c, 0x42, 0xfb, 0xd1, 0xf0, 0xbd, 0x34, 0x00, + 0xf4, 0xe7, 0x14, 0x00, 0x03, 0x00, 0xbf, 0xe7, 0x27, 0x00, 0xe0, 0xe7, + 0x02, 0xb4, 0x71, 0x46, 0x49, 0x08, 0x49, 0x00, 0x09, 0x5c, 0x49, 0x00, + 0x8e, 0x44, 0x02, 0xbc, 0x70, 0x47, 0xc0, 0x46, 0x00, 0x22, 0x43, 0x08, + 0x8b, 0x42, 0x74, 0xd3, 0x03, 0x09, 0x8b, 0x42, 0x5f, 0xd3, 0x03, 0x0a, + 0x8b, 0x42, 0x44, 0xd3, 0x03, 0x0b, 0x8b, 0x42, 0x28, 0xd3, 0x03, 0x0c, + 0x8b, 0x42, 0x0d, 0xd3, 0xff, 0x22, 0x09, 0x02, 0x12, 0xba, 0x03, 0x0c, + 0x8b, 0x42, 0x02, 0xd3, 0x12, 0x12, 0x09, 0x02, 0x65, 0xd0, 0x03, 0x0b, + 0x8b, 0x42, 0x19, 0xd3, 0x00, 0xe0, 0x09, 0x0a, 0xc3, 0x0b, 0x8b, 0x42, + 0x01, 0xd3, 0xcb, 0x03, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0b, 0x8b, 0x42, + 0x01, 0xd3, 0x8b, 0x03, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0b, 0x8b, 0x42, + 0x01, 0xd3, 0x4b, 0x03, 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0b, 0x8b, 0x42, + 0x01, 0xd3, 0x0b, 0x03, 0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x0a, 0x8b, 0x42, + 0x01, 0xd3, 0xcb, 0x02, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x0a, 0x8b, 0x42, + 0x01, 0xd3, 0x8b, 0x02, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x0a, 0x8b, 0x42, + 0x01, 0xd3, 0x4b, 0x02, 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x0a, 0x8b, 0x42, + 0x01, 0xd3, 0x0b, 0x02, 0xc0, 0x1a, 0x52, 0x41, 0xcd, 0xd2, 0xc3, 0x09, + 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x09, + 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x09, + 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0x03, 0x09, + 0x8b, 0x42, 0x01, 0xd3, 0x0b, 0x01, 0xc0, 0x1a, 0x52, 0x41, 0xc3, 0x08, + 0x8b, 0x42, 0x01, 0xd3, 0xcb, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x83, 0x08, + 0x8b, 0x42, 0x01, 0xd3, 0x8b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x43, 0x08, + 0x8b, 0x42, 0x01, 0xd3, 0x4b, 0x00, 0xc0, 0x1a, 0x52, 0x41, 0x41, 0x1a, + 0x00, 0xd2, 0x01, 0x46, 0x52, 0x41, 0x10, 0x46, 0x70, 0x47, 0xff, 0xe7, + 0x01, 0xb5, 0x00, 0x20, 0x00, 0xf0, 0x06, 0xf8, 0x02, 0xbd, 0xc0, 0x46, + 0x00, 0x29, 0xf7, 0xd0, 0x76, 0xe7, 0x70, 0x47, 0x70, 0x47, 0xc0, 0x46, + 0x9e, 0x21, 0x10, 0xb5, 0xc9, 0x05, 0x04, 0x1c, 0x01, 0xf0, 0xe0, 0xfb, + 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xfc, 0x10, 0xbd, + 0x9e, 0x21, 0x20, 0x1c, 0xc9, 0x05, 0x00, 0xf0, 0x4b, 0xfa, 0x00, 0xf0, + 0x11, 0xfc, 0x80, 0x23, 0x1b, 0x06, 0x9c, 0x46, 0x60, 0x44, 0xf2, 0xe7, + 0x70, 0xb5, 0x00, 0x22, 0x0c, 0x4b, 0x04, 0x00, 0x0d, 0x00, 0x01, 0xf0, + 0x8d, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x20, 0x00, 0x29, 0x00, 0x01, 0xf0, + 0xd5, 0xfa, 0x70, 0xbd, 0x06, 0x4b, 0x00, 0x22, 0x20, 0x00, 0x29, 0x00, + 0x00, 0xf0, 0x3c, 0xff, 0x01, 0xf0, 0xcc, 0xfa, 0x80, 0x23, 0x1b, 0x06, + 0x9c, 0x46, 0x60, 0x44, 0xf1, 0xe7, 0xc0, 0x46, 0x00, 0x00, 0xe0, 0x41, + 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, 0x45, 0x02, 0xc0, 0xb5, + 0x47, 0x00, 0x0c, 0x1c, 0x6d, 0x0a, 0x3f, 0x0e, 0xc6, 0x0f, 0x00, 0x2f, + 0x66, 0xd0, 0xff, 0x2f, 0x6c, 0xd0, 0x00, 0x23, 0xea, 0x00, 0x80, 0x25, + 0x99, 0x46, 0x9a, 0x46, 0xed, 0x04, 0x15, 0x43, 0x7f, 0x3f, 0x60, 0x02, + 0x61, 0x00, 0x43, 0x0a, 0x98, 0x46, 0x09, 0x0e, 0xe4, 0x0f, 0x00, 0x29, + 0x48, 0xd0, 0xff, 0x29, 0x10, 0xd0, 0x80, 0x22, 0xd8, 0x00, 0xd2, 0x04, + 0x02, 0x43, 0x90, 0x46, 0x00, 0x20, 0x7f, 0x39, 0x4a, 0x46, 0x33, 0x00, + 0x7f, 0x1a, 0x02, 0x43, 0x6c, 0x49, 0x92, 0x00, 0x8a, 0x58, 0x63, 0x40, + 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2b, 0x6d, 0xd1, 0x02, 0x20, 0xff, 0x3f, + 0x33, 0xe0, 0x00, 0x23, 0x98, 0x46, 0x26, 0x00, 0x45, 0x46, 0x82, 0x46, + 0x53, 0x46, 0x02, 0x2b, 0x00, 0xd1, 0x7f, 0xe0, 0x03, 0x2b, 0x00, 0xd1, + 0x94, 0xe0, 0x01, 0x2b, 0x17, 0xd0, 0x38, 0x00, 0x7f, 0x30, 0x00, 0x28, + 0x5f, 0xdd, 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x2b, 0x40, 0x04, 0x2b, + 0x00, 0xd0, 0x04, 0x35, 0x2b, 0x01, 0x03, 0xd5, 0x38, 0x00, 0x5a, 0x4b, + 0x80, 0x30, 0x1d, 0x40, 0xfe, 0x28, 0x67, 0xdc, 0xad, 0x01, 0x6d, 0x0a, + 0xc0, 0xb2, 0x02, 0xe0, 0x1e, 0x00, 0x00, 0x20, 0x00, 0x25, 0xc0, 0x05, + 0x28, 0x43, 0xf6, 0x07, 0x30, 0x43, 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, + 0xa2, 0x46, 0xf0, 0xbd, 0x00, 0x2b, 0x2b, 0xd1, 0x01, 0x20, 0x4a, 0x46, + 0x33, 0x00, 0x4e, 0x49, 0x02, 0x43, 0x92, 0x00, 0x8a, 0x58, 0x63, 0x40, + 0xdb, 0xb2, 0x97, 0x46, 0x00, 0x2d, 0x13, 0xd1, 0x04, 0x23, 0x99, 0x46, + 0x03, 0x3b, 0x00, 0x27, 0x9a, 0x46, 0x9a, 0xe7, 0x00, 0x2d, 0x05, 0xd1, + 0x08, 0x23, 0x99, 0x46, 0x06, 0x3b, 0xff, 0x27, 0x9a, 0x46, 0x92, 0xe7, + 0x0c, 0x23, 0x99, 0x46, 0x09, 0x3b, 0xff, 0x27, 0x9a, 0x46, 0x8c, 0xe7, + 0x28, 0x00, 0x01, 0xf0, 0x2d, 0xfb, 0x76, 0x27, 0x43, 0x1f, 0x9d, 0x40, + 0x00, 0x23, 0x7f, 0x42, 0x99, 0x46, 0x9a, 0x46, 0x3f, 0x1a, 0x80, 0xe7, + 0x18, 0x00, 0x01, 0xf0, 0x21, 0xfb, 0x42, 0x46, 0x43, 0x1f, 0x76, 0x21, + 0x9a, 0x40, 0x49, 0x42, 0x09, 0x1a, 0x90, 0x46, 0x00, 0x20, 0x85, 0xe7, + 0xff, 0x21, 0x03, 0x20, 0x82, 0xe7, 0x1e, 0x00, 0xff, 0x20, 0x00, 0x25, + 0xb5, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, 0xaf, 0xdc, 0x9e, 0x37, + 0x29, 0x00, 0xbd, 0x40, 0xd9, 0x40, 0x6a, 0x1e, 0x95, 0x41, 0x0d, 0x43, + 0x6b, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x2b, 0x40, 0x04, 0x2b, 0x00, 0xd0, + 0x04, 0x35, 0x6b, 0x01, 0x44, 0xd5, 0x01, 0x20, 0x00, 0x25, 0x9e, 0xe7, + 0xff, 0x20, 0x00, 0x25, 0x9b, 0xe7, 0x80, 0x25, 0x00, 0x26, 0xff, 0x20, + 0xed, 0x03, 0x96, 0xe7, 0x00, 0x23, 0x98, 0x46, 0x80, 0x20, 0xc0, 0x03, + 0x05, 0x42, 0x09, 0xd0, 0x43, 0x46, 0x03, 0x42, 0x06, 0xd1, 0x45, 0x46, + 0x05, 0x43, 0x6d, 0x02, 0x26, 0x00, 0xff, 0x20, 0x6d, 0x0a, 0x86, 0xe7, + 0x80, 0x20, 0xc0, 0x03, 0x05, 0x43, 0x6d, 0x02, 0xff, 0x20, 0x6d, 0x0a, + 0x7f, 0xe7, 0x41, 0x46, 0x6a, 0x01, 0x48, 0x01, 0x82, 0x42, 0x19, 0xd2, + 0x1b, 0x21, 0x00, 0x25, 0x01, 0x3f, 0x01, 0x26, 0x14, 0x00, 0x6d, 0x00, + 0x52, 0x00, 0x00, 0x2c, 0x01, 0xdb, 0x90, 0x42, 0x01, 0xd8, 0x12, 0x1a, + 0x35, 0x43, 0x01, 0x39, 0x00, 0x29, 0xf3, 0xd1, 0x50, 0x1e, 0x82, 0x41, + 0x38, 0x00, 0x7f, 0x30, 0x1e, 0x00, 0x15, 0x43, 0x00, 0x28, 0x00, 0xdd, + 0x4b, 0xe7, 0xaa, 0xe7, 0x1a, 0x21, 0x01, 0x25, 0x12, 0x1a, 0xe4, 0xe7, + 0xad, 0x01, 0x00, 0x20, 0x6d, 0x0a, 0x58, 0xe7, 0x48, 0x35, 0x00, 0x08, + 0xff, 0xff, 0xff, 0xf7, 0x88, 0x35, 0x00, 0x08, 0xf8, 0xb5, 0x57, 0x46, + 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x44, 0x02, 0xe0, 0xb5, 0x45, 0x00, + 0x0f, 0x1c, 0x64, 0x0a, 0x2d, 0x0e, 0xc6, 0x0f, 0x00, 0x2d, 0x47, 0xd0, + 0xff, 0x2d, 0x4d, 0xd0, 0x00, 0x23, 0x80, 0x20, 0x9a, 0x46, 0x9b, 0x46, + 0xe4, 0x00, 0xc0, 0x04, 0x04, 0x43, 0x7f, 0x3d, 0x78, 0x02, 0x43, 0x0a, + 0x99, 0x46, 0x7a, 0x00, 0xfb, 0x0f, 0x98, 0x46, 0x12, 0x0e, 0x4b, 0x46, + 0x44, 0xd0, 0xff, 0x2a, 0x11, 0xd0, 0xd8, 0x00, 0x80, 0x23, 0xdb, 0x04, + 0x03, 0x43, 0x99, 0x46, 0x00, 0x20, 0x7f, 0x3a, 0xad, 0x18, 0x47, 0x46, + 0x53, 0x46, 0x77, 0x40, 0x69, 0x1c, 0x0f, 0x2b, 0x3f, 0xd8, 0x72, 0x4a, + 0x9b, 0x00, 0xd3, 0x58, 0x9f, 0x46, 0xff, 0x35, 0x00, 0x2b, 0x00, 0xd0, + 0x79, 0xe0, 0x52, 0x46, 0x02, 0x23, 0x1a, 0x43, 0x92, 0x46, 0x02, 0x20, + 0xeb, 0xe7, 0x47, 0x46, 0x4c, 0x46, 0x83, 0x46, 0x5b, 0x46, 0x02, 0x2b, + 0x28, 0xd0, 0x03, 0x2b, 0x00, 0xd1, 0xc6, 0xe0, 0x01, 0x2b, 0x4f, 0xd1, + 0x00, 0x20, 0x00, 0x24, 0xc0, 0x05, 0xff, 0x07, 0x20, 0x43, 0x38, 0x43, + 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf8, 0xbd, + 0x00, 0x2c, 0x71, 0xd1, 0x04, 0x23, 0x9a, 0x46, 0x03, 0x3b, 0x00, 0x25, + 0x9b, 0x46, 0xb9, 0xe7, 0x00, 0x2c, 0x63, 0xd1, 0x08, 0x23, 0x9a, 0x46, + 0x06, 0x3b, 0xff, 0x25, 0x9b, 0x46, 0xb1, 0xe7, 0x00, 0x2b, 0x50, 0xd1, + 0x52, 0x46, 0x01, 0x33, 0x1a, 0x43, 0x92, 0x46, 0x01, 0x20, 0xbc, 0xe7, + 0xff, 0x20, 0x00, 0x24, 0xda, 0xe7, 0x48, 0x46, 0x26, 0x0c, 0x24, 0x04, + 0x22, 0x0c, 0x04, 0x04, 0x24, 0x0c, 0x4b, 0x46, 0x20, 0x00, 0x1b, 0x0c, + 0x50, 0x43, 0x74, 0x43, 0x5a, 0x43, 0x5e, 0x43, 0x12, 0x19, 0x03, 0x0c, + 0x9b, 0x18, 0x9c, 0x42, 0x03, 0xd9, 0x80, 0x22, 0x52, 0x02, 0x94, 0x46, + 0x66, 0x44, 0x00, 0x04, 0x1a, 0x04, 0x00, 0x0c, 0x12, 0x18, 0x94, 0x01, + 0x60, 0x1e, 0x84, 0x41, 0x1b, 0x0c, 0x92, 0x0e, 0x9b, 0x19, 0x14, 0x43, + 0x9b, 0x01, 0x1c, 0x43, 0x1b, 0x01, 0x72, 0xd5, 0x01, 0x20, 0x63, 0x08, + 0x04, 0x40, 0x1c, 0x43, 0x08, 0x00, 0x7f, 0x30, 0x00, 0x28, 0x3c, 0xdd, + 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x00, 0xd0, + 0x04, 0x34, 0x23, 0x01, 0x03, 0xd5, 0x80, 0x31, 0x08, 0x00, 0x37, 0x4b, + 0x1c, 0x40, 0xfe, 0x28, 0xc0, 0xdc, 0xa4, 0x01, 0x64, 0x0a, 0xc0, 0xb2, + 0x9a, 0xe7, 0x37, 0x00, 0x8e, 0xe7, 0x52, 0x46, 0x03, 0x23, 0x1a, 0x43, + 0x92, 0x46, 0x03, 0x20, 0x71, 0xe7, 0x48, 0x46, 0x01, 0xf0, 0xf2, 0xf9, + 0x4a, 0x46, 0x43, 0x1f, 0x9a, 0x40, 0x2d, 0x1a, 0x91, 0x46, 0x00, 0x20, + 0x76, 0x3d, 0x66, 0xe7, 0x0c, 0x23, 0x9a, 0x46, 0x09, 0x3b, 0xff, 0x25, + 0x9b, 0x46, 0x4d, 0xe7, 0x20, 0x00, 0x01, 0xf0, 0xe1, 0xf9, 0x76, 0x25, + 0x43, 0x1f, 0x9c, 0x40, 0x00, 0x23, 0x6d, 0x42, 0x9a, 0x46, 0x9b, 0x46, + 0x2d, 0x1a, 0x41, 0xe7, 0x80, 0x24, 0x00, 0x27, 0xff, 0x20, 0xe4, 0x03, + 0x70, 0xe7, 0x01, 0x23, 0x1b, 0x1a, 0x1b, 0x2b, 0x00, 0xdd, 0x69, 0xe7, + 0x9e, 0x31, 0x20, 0x00, 0x8c, 0x40, 0xd8, 0x40, 0x63, 0x1e, 0x9c, 0x41, + 0x04, 0x43, 0x63, 0x07, 0x04, 0xd0, 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, + 0x00, 0xd0, 0x04, 0x34, 0x63, 0x01, 0x1a, 0xd5, 0x01, 0x20, 0x00, 0x24, + 0x58, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x42, 0x09, 0xd0, 0x4b, 0x46, + 0x03, 0x42, 0x06, 0xd1, 0x4c, 0x46, 0x04, 0x43, 0x64, 0x02, 0x47, 0x46, + 0xff, 0x20, 0x64, 0x0a, 0x4a, 0xe7, 0x80, 0x20, 0xc0, 0x03, 0x04, 0x43, + 0x64, 0x02, 0x37, 0x00, 0xff, 0x20, 0x64, 0x0a, 0x42, 0xe7, 0x29, 0x00, + 0x8e, 0xe7, 0xa4, 0x01, 0x00, 0x20, 0x64, 0x0a, 0x3c, 0xe7, 0x80, 0x20, + 0xc0, 0x03, 0x04, 0x43, 0x64, 0x02, 0xff, 0x20, 0x64, 0x0a, 0x35, 0xe7, + 0xc8, 0x35, 0x00, 0x08, 0xff, 0xff, 0xff, 0xf7, 0xf0, 0xb5, 0x46, 0x46, + 0xd6, 0x46, 0x4f, 0x46, 0x43, 0x02, 0x5b, 0x0a, 0xda, 0x00, 0x94, 0x46, + 0x4a, 0x02, 0xc0, 0xb5, 0x44, 0x00, 0x56, 0x0a, 0x05, 0x1c, 0xb0, 0x46, + 0x24, 0x0e, 0x4e, 0x00, 0x92, 0x09, 0x1f, 0x00, 0x20, 0x00, 0x92, 0x46, + 0xed, 0x0f, 0x36, 0x0e, 0xc9, 0x0f, 0xff, 0x2e, 0x00, 0xd1, 0x7f, 0xe0, + 0x01, 0x22, 0x51, 0x40, 0x8d, 0x42, 0x51, 0xd0, 0xa2, 0x1b, 0x91, 0x46, + 0x00, 0x2a, 0x00, 0xdc, 0x7e, 0xe0, 0x00, 0x2e, 0x00, 0xd1, 0x99, 0xe0, + 0xff, 0x2c, 0x00, 0xd1, 0x8c, 0xe0, 0x80, 0x23, 0x52, 0x46, 0xdb, 0x04, + 0x1a, 0x43, 0x92, 0x46, 0x4a, 0x46, 0x01, 0x23, 0x1b, 0x2a, 0x08, 0xdc, + 0x53, 0x46, 0x20, 0x21, 0xd3, 0x40, 0x89, 0x1a, 0x52, 0x46, 0x8a, 0x40, + 0x51, 0x1e, 0x8a, 0x41, 0x13, 0x43, 0x62, 0x46, 0xd3, 0x1a, 0x5a, 0x01, + 0x00, 0xd4, 0xf3, 0xe0, 0x9b, 0x01, 0x9e, 0x09, 0x30, 0x00, 0x01, 0xf0, + 0x4f, 0xf9, 0x05, 0x38, 0x86, 0x40, 0x84, 0x42, 0x00, 0xdd, 0xf7, 0xe0, + 0x32, 0x00, 0x04, 0x1b, 0x20, 0x20, 0x01, 0x34, 0xe2, 0x40, 0x04, 0x1b, + 0xa6, 0x40, 0x33, 0x00, 0x5e, 0x1e, 0xb3, 0x41, 0x00, 0x24, 0x13, 0x43, + 0x5a, 0x07, 0x04, 0xd0, 0x0f, 0x22, 0x1a, 0x40, 0x04, 0x2a, 0x00, 0xd0, + 0x04, 0x33, 0x5a, 0x01, 0x00, 0xd4, 0xd6, 0xe0, 0x62, 0x1c, 0xfe, 0x2c, + 0x00, 0xd1, 0xda, 0xe0, 0x9b, 0x01, 0x5f, 0x0a, 0xd0, 0xb2, 0xc0, 0x05, + 0x38, 0x43, 0xed, 0x07, 0x28, 0x43, 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, + 0xa2, 0x46, 0xf0, 0xbd, 0xa2, 0x1b, 0x91, 0x46, 0x00, 0x2a, 0x63, 0xdd, + 0x00, 0x2e, 0x00, 0xd1, 0x99, 0xe0, 0xff, 0x2c, 0x3c, 0xd0, 0x80, 0x23, + 0x52, 0x46, 0xdb, 0x04, 0x1a, 0x43, 0x92, 0x46, 0x4a, 0x46, 0x01, 0x23, + 0x1b, 0x2a, 0x08, 0xdc, 0x53, 0x46, 0x20, 0x21, 0xd3, 0x40, 0x89, 0x1a, + 0x52, 0x46, 0x8a, 0x40, 0x51, 0x1e, 0x8a, 0x41, 0x13, 0x43, 0x63, 0x44, + 0x5a, 0x01, 0x00, 0xd4, 0xa4, 0xe0, 0x01, 0x34, 0xff, 0x2c, 0x00, 0xd1, + 0xab, 0xe0, 0x01, 0x22, 0x97, 0x49, 0x1a, 0x40, 0x5b, 0x08, 0x0b, 0x40, + 0x13, 0x43, 0xbb, 0xe7, 0x00, 0x2a, 0x32, 0xd0, 0x8d, 0x42, 0x35, 0xd0, + 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, 0x4a, 0x46, 0x00, 0x2a, + 0x51, 0xd0, 0x30, 0x1b, 0x00, 0x2c, 0x00, 0xd0, 0x9c, 0xe0, 0x63, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0xdf, 0xe0, 0x01, 0x38, 0x00, 0x28, 0x00, 0xd1, + 0xf7, 0xe0, 0xff, 0x2e, 0x00, 0xd0, 0x99, 0xe0, 0x0d, 0x00, 0x43, 0x46, + 0x00, 0x2b, 0x00, 0xd1, 0x85, 0xe0, 0x80, 0x27, 0xff, 0x03, 0x1f, 0x43, + 0x7f, 0x02, 0xff, 0x20, 0x7f, 0x0a, 0xa6, 0xe7, 0x52, 0x46, 0x00, 0x2a, + 0x74, 0xd0, 0x01, 0x22, 0x52, 0x42, 0x90, 0x46, 0xc1, 0x44, 0x4a, 0x46, + 0x00, 0x2a, 0x00, 0xd1, 0xc8, 0xe0, 0xff, 0x2c, 0x00, 0xd0, 0x5f, 0xe7, + 0xe6, 0xe7, 0x01, 0x22, 0x51, 0x40, 0xa9, 0x42, 0x00, 0xd0, 0x49, 0xe7, + 0xff, 0x22, 0x52, 0x42, 0x91, 0x46, 0xa1, 0x44, 0x4a, 0x46, 0x00, 0x2a, + 0x43, 0xd0, 0x31, 0x1b, 0x00, 0x2c, 0x00, 0xd1, 0x8c, 0xe0, 0xff, 0x2e, + 0x00, 0xd1, 0x92, 0xe0, 0x80, 0x23, 0x62, 0x46, 0xdb, 0x04, 0x1a, 0x43, + 0x94, 0x46, 0x01, 0x23, 0x1b, 0x29, 0x09, 0xdc, 0x20, 0x20, 0x63, 0x46, + 0x62, 0x46, 0xcb, 0x40, 0x41, 0x1a, 0x8a, 0x40, 0x11, 0x00, 0x48, 0x1e, + 0x81, 0x41, 0x0b, 0x43, 0x34, 0x00, 0x53, 0x44, 0x94, 0xe7, 0xfe, 0x22, + 0x66, 0x1c, 0x32, 0x42, 0x64, 0xd1, 0x00, 0x2c, 0x00, 0xd0, 0x82, 0xe0, + 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0xab, 0xe0, 0x53, 0x46, 0x00, 0x2b, + 0x00, 0xd1, 0x60, 0xe7, 0x63, 0x46, 0x52, 0x46, 0x9b, 0x1a, 0x5a, 0x01, + 0x00, 0xd4, 0xaa, 0xe0, 0x63, 0x46, 0x52, 0x46, 0x0d, 0x00, 0xd3, 0x1a, + 0x44, 0xe7, 0x52, 0x46, 0x00, 0x2a, 0x23, 0xd0, 0x01, 0x22, 0x52, 0x42, + 0x90, 0x46, 0xc1, 0x44, 0x4a, 0x46, 0x00, 0x2a, 0x75, 0xd0, 0xff, 0x2c, + 0x00, 0xd0, 0x5f, 0xe7, 0x96, 0xe7, 0xfe, 0x26, 0x01, 0x34, 0x26, 0x42, + 0x53, 0xd1, 0x00, 0x28, 0x72, 0xd1, 0x63, 0x46, 0x00, 0x2b, 0x00, 0xd1, + 0x93, 0xe0, 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd1, 0x39, 0xe7, 0x63, 0x44, + 0x00, 0x24, 0x5a, 0x01, 0x02, 0xd5, 0x4a, 0x4a, 0x01, 0x34, 0x13, 0x40, + 0x5a, 0x07, 0x00, 0xd0, 0x20, 0xe7, 0xdb, 0x08, 0xff, 0x2c, 0x00, 0xd1, + 0x7a, 0xe7, 0x5b, 0x02, 0x5f, 0x0a, 0xe0, 0xb2, 0x27, 0xe7, 0xff, 0x20, + 0x00, 0x27, 0x24, 0xe7, 0x41, 0x4b, 0x24, 0x1a, 0x33, 0x40, 0x0f, 0xe7, + 0xff, 0x2e, 0x00, 0xd1, 0x6a, 0xe7, 0x80, 0x23, 0x62, 0x46, 0xdb, 0x04, + 0x1a, 0x43, 0x94, 0x46, 0x01, 0x23, 0x1b, 0x28, 0x09, 0xdc, 0x20, 0x24, + 0x63, 0x46, 0x62, 0x46, 0xc3, 0x40, 0x20, 0x1a, 0x82, 0x40, 0x10, 0x00, + 0x44, 0x1e, 0xa0, 0x41, 0x03, 0x43, 0x52, 0x46, 0x0d, 0x00, 0x34, 0x00, + 0xd3, 0x1a, 0xdc, 0xe6, 0x63, 0x46, 0x52, 0x46, 0x9e, 0x1a, 0x73, 0x01, + 0x17, 0xd4, 0x00, 0x2e, 0x00, 0xd0, 0xd9, 0xe6, 0x00, 0x25, 0x00, 0x20, + 0x00, 0x27, 0xfa, 0xe6, 0x63, 0x46, 0x00, 0x2b, 0x44, 0xd0, 0x01, 0x39, + 0x00, 0x29, 0x4c, 0xd0, 0xff, 0x2e, 0x00, 0xd0, 0x71, 0xe7, 0x43, 0x46, + 0x3e, 0xe7, 0xff, 0x2c, 0xc5, 0xd0, 0x52, 0x46, 0x62, 0x44, 0x53, 0x08, + 0xb6, 0xe7, 0x63, 0x46, 0x0d, 0x00, 0xd6, 0x1a, 0xc0, 0xe6, 0x62, 0x46, + 0x00, 0x2a, 0x16, 0xd1, 0x53, 0x46, 0x00, 0x2b, 0x00, 0xd0, 0x2b, 0xe7, + 0x80, 0x27, 0x00, 0x25, 0xff, 0x20, 0xff, 0x03, 0xd9, 0xe6, 0x0d, 0x00, + 0x43, 0x46, 0x34, 0x00, 0xa6, 0xe7, 0x53, 0x46, 0x63, 0x44, 0xf7, 0xe6, + 0x63, 0x46, 0x52, 0x46, 0x9b, 0x1a, 0xa4, 0xe6, 0x62, 0x46, 0x00, 0x2a, + 0xd9, 0xd0, 0x52, 0x46, 0x00, 0x2a, 0x00, 0xd1, 0x16, 0xe7, 0x80, 0x22, + 0xd2, 0x03, 0x13, 0x42, 0x00, 0xd1, 0x11, 0xe7, 0x40, 0x46, 0x10, 0x42, + 0x00, 0xd0, 0x0d, 0xe7, 0x0a, 0xe7, 0x52, 0x46, 0x0d, 0x00, 0x34, 0x00, + 0xd3, 0x1a, 0x8e, 0xe6, 0x53, 0x46, 0x00, 0x2b, 0x08, 0xd0, 0x0d, 0x00, + 0x47, 0x46, 0xb2, 0xe6, 0x43, 0x46, 0x34, 0x00, 0x80, 0xe7, 0x00, 0x2b, + 0x00, 0xd0, 0x79, 0xe7, 0x00, 0x25, 0x00, 0x27, 0xa9, 0xe6, 0x47, 0x46, + 0xa7, 0xe6, 0x53, 0x46, 0x34, 0x00, 0x63, 0x44, 0xc8, 0xe6, 0xc0, 0x46, + 0xff, 0xff, 0xff, 0x7d, 0xff, 0xff, 0xff, 0xfb, 0x41, 0x02, 0x42, 0x00, + 0xc3, 0x0f, 0x49, 0x0a, 0x00, 0x20, 0x12, 0x0e, 0x7e, 0x2a, 0x03, 0xd9, + 0x9d, 0x2a, 0x02, 0xd9, 0x09, 0x4a, 0x98, 0x18, 0x70, 0x47, 0x80, 0x20, + 0x00, 0x04, 0x01, 0x43, 0x95, 0x2a, 0x07, 0xdc, 0x96, 0x20, 0x82, 0x1a, + 0xd1, 0x40, 0x48, 0x42, 0x00, 0x2b, 0xf3, 0xd1, 0x08, 0x00, 0xf1, 0xe7, + 0x96, 0x3a, 0x91, 0x40, 0xf7, 0xe7, 0xc0, 0x46, 0xff, 0xff, 0xff, 0x7f, + 0x70, 0xb5, 0x05, 0x1e, 0x0e, 0xd0, 0x00, 0xf0, 0xa7, 0xff, 0x9e, 0x23, + 0x04, 0x00, 0x1b, 0x1a, 0x96, 0x2b, 0x0c, 0xdc, 0x08, 0x28, 0x01, 0xdd, + 0x08, 0x3c, 0xa5, 0x40, 0x6d, 0x02, 0x6d, 0x0a, 0xd8, 0xb2, 0x01, 0xe0, + 0x00, 0x20, 0x00, 0x25, 0xc0, 0x05, 0x28, 0x43, 0x70, 0xbd, 0x99, 0x2b, + 0x09, 0xdd, 0x02, 0x00, 0x29, 0x00, 0x1b, 0x32, 0x91, 0x40, 0x4a, 0x1e, + 0x91, 0x41, 0x05, 0x22, 0x12, 0x1a, 0xd5, 0x40, 0x0d, 0x43, 0x05, 0x2c, + 0x01, 0xdd, 0x62, 0x1f, 0x95, 0x40, 0x29, 0x00, 0x08, 0x4e, 0x31, 0x40, + 0x6a, 0x07, 0x09, 0xd0, 0x0f, 0x20, 0x28, 0x40, 0x04, 0x28, 0x05, 0xd0, + 0x04, 0x31, 0x4a, 0x01, 0x02, 0xd5, 0x9f, 0x23, 0x31, 0x40, 0x1b, 0x1b, + 0x89, 0x01, 0x4d, 0x0a, 0xd8, 0xb2, 0xd9, 0xe7, 0xff, 0xff, 0xff, 0xfb, + 0xf0, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0xe0, 0xb5, + 0x81, 0x46, 0x05, 0x00, 0x0c, 0x03, 0x48, 0x00, 0x92, 0x46, 0x1f, 0x00, + 0x85, 0xb0, 0x24, 0x0b, 0x40, 0x0d, 0xce, 0x0f, 0x00, 0x28, 0x59, 0xd0, + 0x87, 0x4b, 0x98, 0x42, 0x00, 0xd1, 0x98, 0xe0, 0x6b, 0x0f, 0xe4, 0x00, + 0x1c, 0x43, 0x80, 0x23, 0x1b, 0x04, 0x23, 0x43, 0x98, 0x46, 0x83, 0x4b, + 0xed, 0x00, 0x9b, 0x46, 0x00, 0x23, 0x99, 0x46, 0x83, 0x44, 0x00, 0x93, + 0x3c, 0x03, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, 0x5b, 0x0d, 0xff, 0x0f, + 0x00, 0x2b, 0x67, 0xd0, 0x7a, 0x4a, 0x93, 0x42, 0x18, 0xd0, 0x7a, 0x49, + 0x42, 0x0f, 0x8c, 0x46, 0xe4, 0x00, 0x59, 0x46, 0x14, 0x43, 0x80, 0x22, + 0x63, 0x44, 0x12, 0x04, 0xcb, 0x1a, 0x14, 0x43, 0x9b, 0x46, 0xc2, 0x00, + 0x00, 0x20, 0x33, 0x00, 0x7b, 0x40, 0x9a, 0x46, 0x4b, 0x46, 0x0f, 0x2b, + 0x00, 0xd9, 0xef, 0xe0, 0x70, 0x49, 0x9b, 0x00, 0xcb, 0x58, 0x9f, 0x46, + 0x6f, 0x4b, 0x52, 0x46, 0x9c, 0x46, 0x22, 0x43, 0xe3, 0x44, 0x00, 0x2a, + 0x00, 0xd0, 0x95, 0xe0, 0x49, 0x46, 0x02, 0x23, 0x19, 0x43, 0x89, 0x46, + 0x00, 0x24, 0x02, 0x20, 0xe5, 0xe7, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, + 0x52, 0x46, 0x1b, 0x05, 0x23, 0x43, 0xd2, 0x07, 0x13, 0x43, 0x28, 0x00, + 0x19, 0x00, 0x05, 0xb0, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, + 0xab, 0x46, 0xf0, 0xbd, 0x00, 0x24, 0x00, 0x25, 0x5b, 0x4b, 0xed, 0xe7, + 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x00, 0xd1, 0x89, 0xe0, 0x00, 0x2c, + 0x00, 0xd1, 0xe0, 0xe1, 0x20, 0x00, 0x00, 0xf0, 0xf9, 0xfe, 0x01, 0x00, + 0x02, 0x00, 0x0b, 0x39, 0x1d, 0x23, 0x5b, 0x1a, 0x49, 0x46, 0x10, 0x00, + 0xd9, 0x40, 0x08, 0x38, 0x84, 0x40, 0x0b, 0x00, 0x4d, 0x46, 0x23, 0x43, + 0x98, 0x46, 0x85, 0x40, 0x51, 0x48, 0x3c, 0x03, 0x83, 0x1a, 0x9b, 0x46, + 0x00, 0x23, 0x99, 0x46, 0x00, 0x93, 0x7b, 0x00, 0x50, 0x46, 0x24, 0x0b, + 0x5b, 0x0d, 0xff, 0x0f, 0x00, 0x2b, 0x97, 0xd1, 0x52, 0x46, 0x22, 0x43, + 0x55, 0xd0, 0x00, 0x2c, 0x00, 0xd1, 0xca, 0xe1, 0x20, 0x00, 0x00, 0xf0, + 0xd3, 0xfe, 0x02, 0x00, 0x0b, 0x3a, 0x1d, 0x23, 0x01, 0x00, 0x9b, 0x1a, + 0x52, 0x46, 0x08, 0x39, 0xda, 0x40, 0x8c, 0x40, 0x14, 0x43, 0x52, 0x46, + 0x8a, 0x40, 0x41, 0x4b, 0x58, 0x44, 0x9b, 0x46, 0x83, 0x44, 0x00, 0x20, + 0x8d, 0xe7, 0x4b, 0x46, 0x23, 0x43, 0x98, 0x46, 0x40, 0xd1, 0x08, 0x23, + 0x99, 0x46, 0x06, 0x3b, 0x00, 0x25, 0x83, 0x46, 0x00, 0x93, 0x69, 0xe7, + 0xb2, 0x46, 0x00, 0x9b, 0x02, 0x2b, 0xa9, 0xd0, 0x03, 0x2b, 0x00, 0xd1, + 0x11, 0xe2, 0x01, 0x2b, 0x93, 0xd0, 0x35, 0x4a, 0x5a, 0x44, 0x00, 0x2a, + 0x00, 0xdc, 0x3c, 0xe1, 0x6b, 0x07, 0x00, 0xd0, 0xa7, 0xe1, 0xed, 0x08, + 0x43, 0x46, 0xdb, 0x01, 0x06, 0xd5, 0x42, 0x46, 0x2f, 0x4b, 0x1a, 0x40, + 0x90, 0x46, 0x80, 0x22, 0xd2, 0x00, 0x5a, 0x44, 0x2d, 0x4b, 0x9a, 0x42, + 0x8e, 0xdc, 0x43, 0x46, 0x52, 0x05, 0x58, 0x07, 0x5c, 0x02, 0x05, 0x43, + 0x24, 0x0b, 0x53, 0x0d, 0x78, 0xe7, 0xba, 0x46, 0xa0, 0x46, 0x15, 0x00, + 0x00, 0x90, 0xd4, 0xe7, 0x4a, 0x46, 0x03, 0x23, 0x1a, 0x43, 0x91, 0x46, + 0x03, 0x20, 0x52, 0x46, 0x4f, 0xe7, 0x49, 0x46, 0x01, 0x23, 0x19, 0x43, + 0x89, 0x46, 0x00, 0x24, 0x01, 0x20, 0x48, 0xe7, 0x0c, 0x23, 0x99, 0x46, + 0x09, 0x3b, 0xa0, 0x46, 0x83, 0x46, 0x00, 0x93, 0x28, 0xe7, 0x04, 0x23, + 0x99, 0x46, 0x00, 0x23, 0x9b, 0x46, 0x01, 0x33, 0x00, 0x25, 0x00, 0x93, + 0x20, 0xe7, 0x00, 0x23, 0x80, 0x24, 0x9a, 0x46, 0x00, 0x25, 0x0d, 0x4b, + 0x24, 0x03, 0x4f, 0xe7, 0x80, 0x23, 0x41, 0x46, 0x1b, 0x03, 0x19, 0x42, + 0x08, 0xd0, 0x1c, 0x42, 0x06, 0xd1, 0x1c, 0x43, 0x24, 0x03, 0xba, 0x46, + 0x15, 0x00, 0x06, 0x4b, 0x24, 0x0b, 0x41, 0xe7, 0x80, 0x24, 0x43, 0x46, + 0x24, 0x03, 0x1c, 0x43, 0x24, 0x03, 0xb2, 0x46, 0x01, 0x4b, 0x24, 0x0b, + 0x38, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0x01, 0xfc, 0xff, 0xff, + 0x08, 0x36, 0x00, 0x08, 0x01, 0xf8, 0xff, 0xff, 0x0d, 0xfc, 0xff, 0xff, + 0xf3, 0x03, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, + 0xfe, 0x07, 0x00, 0x00, 0x44, 0x45, 0x00, 0xd2, 0x16, 0xe1, 0x00, 0xd1, + 0x11, 0xe1, 0x01, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x2e, 0x00, 0x40, 0x46, + 0x00, 0x25, 0xe3, 0x44, 0x23, 0x02, 0x14, 0x0e, 0x1c, 0x43, 0x1b, 0x0c, + 0x99, 0x46, 0x23, 0x04, 0x1f, 0x0c, 0x12, 0x02, 0x49, 0x46, 0x00, 0x92, + 0x01, 0x97, 0xff, 0xf7, 0x2d, 0xfa, 0x02, 0x00, 0x7a, 0x43, 0x0b, 0x04, + 0x31, 0x0c, 0x80, 0x46, 0x19, 0x43, 0x8a, 0x42, 0x0b, 0xd9, 0x01, 0x23, + 0x5b, 0x42, 0x9c, 0x46, 0x09, 0x19, 0xe0, 0x44, 0x8c, 0x42, 0x04, 0xd8, + 0x8a, 0x42, 0x02, 0xd9, 0x83, 0x1e, 0x98, 0x46, 0x09, 0x19, 0x88, 0x1a, + 0x49, 0x46, 0xff, 0xf7, 0x15, 0xfa, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04, + 0x66, 0x46, 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43, + 0x8a, 0x42, 0x04, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x00, 0xd8, + 0x11, 0xe1, 0x89, 0x1a, 0x42, 0x46, 0x00, 0x9e, 0x12, 0x04, 0x1a, 0x43, + 0x33, 0x0c, 0x1f, 0x00, 0x10, 0x0c, 0x90, 0x46, 0x02, 0x93, 0x13, 0x04, + 0x32, 0x04, 0x16, 0x0c, 0x32, 0x00, 0x1b, 0x0c, 0x5a, 0x43, 0x03, 0x96, + 0x7b, 0x43, 0x46, 0x43, 0x78, 0x43, 0x17, 0x0c, 0xbc, 0x46, 0x9b, 0x19, + 0x63, 0x44, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02, 0xb4, 0x46, + 0x60, 0x44, 0x1e, 0x0c, 0x30, 0x18, 0x16, 0x04, 0x1b, 0x04, 0x36, 0x0c, + 0x9e, 0x19, 0x81, 0x42, 0x00, 0xd2, 0x9c, 0xe0, 0x00, 0xd1, 0x97, 0xe0, + 0xae, 0x1b, 0x09, 0x1a, 0xb5, 0x42, 0x80, 0x41, 0x40, 0x42, 0x08, 0x1a, + 0x84, 0x42, 0x00, 0xd1, 0x11, 0xe1, 0x49, 0x46, 0xff, 0xf7, 0xd0, 0xf9, + 0x01, 0x9a, 0x0b, 0x04, 0x42, 0x43, 0x31, 0x0c, 0x05, 0x00, 0x19, 0x43, + 0x8a, 0x42, 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3d, 0x8c, 0x42, 0x03, 0xd8, + 0x8a, 0x42, 0x01, 0xd9, 0x85, 0x1e, 0x09, 0x19, 0x88, 0x1a, 0x49, 0x46, + 0xff, 0xf7, 0xbc, 0xf9, 0x09, 0x04, 0x8c, 0x46, 0x31, 0x04, 0x66, 0x46, + 0x01, 0x9a, 0x09, 0x0c, 0x42, 0x43, 0x03, 0x00, 0x31, 0x43, 0x8a, 0x42, + 0x07, 0xd9, 0x09, 0x19, 0x01, 0x3b, 0x8c, 0x42, 0x03, 0xd8, 0x8a, 0x42, + 0x01, 0xd9, 0x83, 0x1e, 0x09, 0x19, 0x03, 0x9e, 0x89, 0x1a, 0x32, 0x00, + 0x2d, 0x04, 0x1d, 0x43, 0x02, 0x9f, 0x2b, 0x04, 0x1b, 0x0c, 0x5a, 0x43, + 0x7b, 0x43, 0x9c, 0x46, 0x28, 0x0c, 0x46, 0x43, 0x13, 0x0c, 0xb4, 0x44, + 0x63, 0x44, 0x78, 0x43, 0x9e, 0x42, 0x03, 0xd9, 0x80, 0x26, 0x76, 0x02, + 0xb4, 0x46, 0x60, 0x44, 0x1e, 0x0c, 0x12, 0x04, 0x1b, 0x04, 0x12, 0x0c, + 0x30, 0x18, 0x9b, 0x18, 0x81, 0x42, 0x06, 0xd3, 0x02, 0xd0, 0x01, 0x23, + 0x1d, 0x43, 0xce, 0xe6, 0x00, 0x2b, 0x00, 0xd1, 0xcb, 0xe6, 0x61, 0x18, + 0x6e, 0x1e, 0xa1, 0x42, 0x00, 0xd2, 0xa4, 0xe0, 0x81, 0x42, 0x00, 0xd2, + 0xc9, 0xe0, 0x00, 0xd1, 0xd9, 0xe0, 0x35, 0x00, 0xed, 0xe7, 0x01, 0x25, + 0x6d, 0x42, 0x01, 0x21, 0x89, 0x1a, 0x38, 0x29, 0x00, 0xdd, 0x4c, 0xe6, + 0x1f, 0x29, 0x00, 0xdc, 0x7f, 0xe0, 0x1f, 0x23, 0x5b, 0x42, 0x9a, 0x1a, + 0x43, 0x46, 0xd3, 0x40, 0x20, 0x29, 0x04, 0xd0, 0x44, 0x46, 0x65, 0x4a, + 0x5a, 0x44, 0x94, 0x40, 0x25, 0x43, 0x6a, 0x1e, 0x95, 0x41, 0x07, 0x22, + 0x2b, 0x43, 0x15, 0x00, 0x00, 0x24, 0x1d, 0x40, 0x1a, 0x42, 0x00, 0xd1, + 0xa1, 0xe0, 0x0f, 0x22, 0x00, 0x24, 0x1a, 0x40, 0x04, 0x2a, 0x00, 0xd1, + 0x98, 0xe0, 0x1a, 0x1d, 0x9a, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xe4, 0x18, + 0x13, 0x00, 0x22, 0x02, 0x00, 0xd4, 0x8f, 0xe0, 0x01, 0x23, 0x00, 0x24, + 0x00, 0x25, 0x23, 0xe6, 0xb5, 0x42, 0x00, 0xd3, 0x64, 0xe7, 0x43, 0x46, + 0x5a, 0x1e, 0x00, 0x9b, 0x9c, 0x46, 0x65, 0x44, 0x1f, 0x00, 0x9d, 0x42, + 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, 0x8c, 0x42, 0x3a, 0xd2, + 0x88, 0x42, 0x63, 0xd8, 0x60, 0xd0, 0x90, 0x46, 0x52, 0xe7, 0xaa, 0x42, + 0x00, 0xd9, 0xea, 0xe6, 0x43, 0x46, 0xde, 0x07, 0x58, 0x08, 0x6b, 0x08, + 0x1e, 0x43, 0xed, 0x07, 0xea, 0xe6, 0x48, 0x46, 0x00, 0xf0, 0x18, 0xfd, + 0x01, 0x00, 0x02, 0x00, 0x15, 0x31, 0x20, 0x32, 0x1c, 0x29, 0x00, 0xdc, + 0x1a, 0xe6, 0x4b, 0x46, 0x08, 0x38, 0x83, 0x40, 0x00, 0x25, 0x98, 0x46, + 0x20, 0xe6, 0x00, 0xf0, 0x09, 0xfd, 0x03, 0x00, 0x1a, 0x00, 0x15, 0x32, + 0x20, 0x30, 0x1c, 0x2a, 0x00, 0xdc, 0x30, 0xe6, 0x54, 0x46, 0x08, 0x3b, + 0x00, 0x22, 0x9c, 0x40, 0x35, 0xe6, 0x0f, 0x23, 0x2b, 0x40, 0x04, 0x2b, + 0x00, 0xd1, 0x52, 0xe6, 0x05, 0x23, 0x5b, 0x42, 0xab, 0x42, 0x9b, 0x41, + 0x04, 0x35, 0x5b, 0x42, 0xed, 0x08, 0x98, 0x44, 0x4a, 0xe6, 0x8c, 0x42, + 0xc5, 0xd1, 0xaf, 0x42, 0xc0, 0xd9, 0x90, 0x46, 0x16, 0xe7, 0x8a, 0x42, + 0x00, 0xd8, 0xea, 0xe6, 0x83, 0x1e, 0x09, 0x19, 0xe7, 0xe6, 0x2a, 0x4a, + 0x28, 0x00, 0x5a, 0x44, 0x43, 0x46, 0x95, 0x40, 0x93, 0x40, 0xc8, 0x40, + 0x6a, 0x1e, 0x95, 0x41, 0x44, 0x46, 0x03, 0x43, 0x2b, 0x43, 0xcc, 0x40, + 0x5a, 0x07, 0x92, 0xd0, 0x0f, 0x22, 0x1a, 0x40, 0x04, 0x2a, 0x88, 0xd1, + 0x8d, 0xe7, 0x35, 0x00, 0x81, 0x42, 0x00, 0xd0, 0x4b, 0xe7, 0x00, 0x9a, + 0x93, 0x42, 0x00, 0xd0, 0x47, 0xe7, 0x18, 0xe6, 0xae, 0x42, 0x9c, 0xd9, + 0x02, 0x23, 0x5b, 0x42, 0x9c, 0x46, 0x00, 0x9b, 0xe0, 0x44, 0x9c, 0x46, + 0x65, 0x44, 0x9d, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0x1b, 0x19, 0xc9, 0x18, + 0xe4, 0xe6, 0x15, 0x4a, 0x5a, 0x44, 0x00, 0x2a, 0x00, 0xdc, 0x44, 0xe7, + 0x01, 0x23, 0x00, 0x25, 0x98, 0x44, 0x09, 0xe6, 0x65, 0x07, 0x64, 0x02, + 0x24, 0x0b, 0xdb, 0x08, 0x1d, 0x43, 0x00, 0x23, 0x90, 0xe5, 0x00, 0x9e, + 0x02, 0x3d, 0x72, 0x00, 0xb2, 0x42, 0xbf, 0x41, 0x7f, 0x42, 0x3c, 0x19, + 0x09, 0x19, 0x00, 0x92, 0xce, 0xe7, 0x80, 0x24, 0x43, 0x46, 0x24, 0x03, + 0x1c, 0x43, 0x24, 0x03, 0x06, 0x4b, 0x24, 0x0b, 0x7e, 0xe5, 0x00, 0x9a, + 0x9a, 0x42, 0xea, 0xd3, 0x35, 0x00, 0xc4, 0xe7, 0x3e, 0x04, 0x00, 0x00, + 0x1e, 0x04, 0x00, 0x00, 0xff, 0x03, 0x00, 0x00, 0xff, 0x07, 0x00, 0x00, + 0xf8, 0xb5, 0x57, 0x46, 0x4e, 0x46, 0x45, 0x46, 0xde, 0x46, 0x04, 0x00, + 0xe0, 0xb5, 0x1f, 0x00, 0x10, 0x00, 0x0b, 0x03, 0x62, 0x0f, 0x4e, 0x00, + 0xcd, 0x0f, 0x5b, 0x0a, 0x39, 0x03, 0x13, 0x43, 0x49, 0x0a, 0xe2, 0x00, + 0x44, 0x0f, 0x21, 0x43, 0xc2, 0x4c, 0x91, 0x46, 0x92, 0x46, 0xc0, 0x00, + 0x7a, 0x00, 0x80, 0x46, 0x76, 0x0d, 0x52, 0x0d, 0xff, 0x0f, 0xa2, 0x42, + 0x00, 0xd1, 0xb4, 0xe0, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, + 0x00, 0xd1, 0x88, 0xe0, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x00, 0xdc, + 0xb2, 0xe0, 0x00, 0x2a, 0x00, 0xd1, 0xc5, 0xe0, 0xb5, 0x4a, 0x96, 0x42, + 0x00, 0xd1, 0x8b, 0xe2, 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, + 0x38, 0x2a, 0x00, 0xdd, 0xa1, 0xe1, 0x1f, 0x2a, 0x00, 0xdd, 0x16, 0xe2, + 0x20, 0x27, 0x0c, 0x00, 0xbf, 0x1a, 0xbc, 0x40, 0x02, 0x00, 0xa0, 0x46, + 0x64, 0x46, 0xb8, 0x40, 0xe2, 0x40, 0x44, 0x46, 0x14, 0x43, 0x02, 0x00, + 0x50, 0x1e, 0x82, 0x41, 0x60, 0x46, 0xc1, 0x40, 0x22, 0x43, 0x5b, 0x1a, + 0x49, 0x46, 0x8c, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x9b, 0x1a, + 0x98, 0x46, 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0x17, 0xe1, 0x43, 0x46, + 0x5b, 0x02, 0x5b, 0x0a, 0x98, 0x46, 0x43, 0x46, 0x00, 0x2b, 0x00, 0xd1, + 0x6c, 0xe1, 0x40, 0x46, 0x00, 0xf0, 0x24, 0xfc, 0x02, 0x00, 0x08, 0x3a, + 0x20, 0x21, 0x20, 0x00, 0x43, 0x46, 0x89, 0x1a, 0x93, 0x40, 0xc8, 0x40, + 0x94, 0x40, 0x03, 0x43, 0x96, 0x42, 0x00, 0xdd, 0x57, 0xe1, 0x96, 0x1b, + 0x71, 0x1c, 0x1f, 0x29, 0x00, 0xdd, 0xcb, 0xe1, 0x20, 0x22, 0x18, 0x00, + 0x26, 0x00, 0x52, 0x1a, 0x94, 0x40, 0x90, 0x40, 0xce, 0x40, 0xcb, 0x40, + 0x62, 0x1e, 0x94, 0x41, 0x30, 0x43, 0x98, 0x46, 0x00, 0x26, 0x04, 0x43, + 0x63, 0x07, 0x09, 0xd0, 0x0f, 0x23, 0x23, 0x40, 0x04, 0x2b, 0x05, 0xd0, + 0x23, 0x1d, 0xa3, 0x42, 0xa4, 0x41, 0x64, 0x42, 0xa0, 0x44, 0x1c, 0x00, + 0x43, 0x46, 0x1b, 0x02, 0x00, 0xd4, 0xdf, 0xe0, 0x82, 0x4b, 0x01, 0x36, + 0x9e, 0x42, 0x00, 0xd1, 0xfb, 0xe0, 0x42, 0x46, 0x80, 0x4b, 0xe4, 0x08, + 0x1a, 0x40, 0x13, 0x00, 0x71, 0x05, 0x52, 0x07, 0x5b, 0x02, 0x22, 0x43, + 0x1b, 0x0b, 0x49, 0x0d, 0x09, 0x05, 0xed, 0x07, 0x19, 0x43, 0x29, 0x43, + 0x10, 0x00, 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, + 0xf8, 0xbd, 0xb4, 0x1a, 0xa4, 0x46, 0x00, 0x2c, 0x58, 0xdd, 0x00, 0x2a, + 0x00, 0xd1, 0x9e, 0xe0, 0x71, 0x4a, 0x96, 0x42, 0x00, 0xd1, 0x3b, 0xe1, + 0x80, 0x22, 0x12, 0x04, 0x11, 0x43, 0x62, 0x46, 0x38, 0x2a, 0x00, 0xdd, + 0xc1, 0xe0, 0x1f, 0x2a, 0x00, 0xdc, 0xbb, 0xe1, 0x0c, 0x00, 0x20, 0x3a, + 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, + 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, + 0x8c, 0x41, 0x14, 0x43, 0xb1, 0xe0, 0x0c, 0x00, 0x04, 0x43, 0x2a, 0xd0, + 0xbb, 0x46, 0xbd, 0x42, 0x2d, 0xd0, 0x61, 0x4c, 0xa4, 0x46, 0xb4, 0x44, + 0x64, 0x46, 0x00, 0x2c, 0x5c, 0xd0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, + 0x00, 0xd0, 0x15, 0xe1, 0x4d, 0x46, 0x1d, 0x43, 0x00, 0xd1, 0xc3, 0xe1, + 0x65, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0x0c, 0xe2, 0x55, 0x4e, 0xb4, 0x42, + 0x00, 0xd1, 0xf8, 0xe1, 0xac, 0x46, 0x0e, 0xe1, 0x0a, 0x00, 0x02, 0x43, + 0x00, 0xd1, 0x36, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, 0x00, 0xd1, + 0xc6, 0xe1, 0x4e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0xf4, 0xe0, 0x94, 0x46, + 0x31, 0xe7, 0x01, 0x24, 0x67, 0x40, 0xbb, 0x46, 0xbd, 0x42, 0x00, 0xd0, + 0x1c, 0xe7, 0x4a, 0x4c, 0xa4, 0x46, 0xb4, 0x44, 0x64, 0x46, 0x00, 0x2c, + 0x00, 0xd1, 0xcf, 0xe0, 0x94, 0x1b, 0xa4, 0x46, 0x00, 0x2e, 0x00, 0xd1, + 0x5c, 0xe1, 0x42, 0x4e, 0xb2, 0x42, 0x00, 0xd1, 0xec, 0xe1, 0x80, 0x26, + 0x36, 0x04, 0x33, 0x43, 0x64, 0x46, 0x38, 0x2c, 0x00, 0xdd, 0xb3, 0xe1, + 0x1f, 0x2c, 0x00, 0xdd, 0x38, 0xe2, 0x20, 0x26, 0x36, 0x1b, 0x1c, 0x00, + 0xb4, 0x40, 0x4f, 0x46, 0xa0, 0x46, 0x64, 0x46, 0xe7, 0x40, 0x44, 0x46, + 0x3c, 0x43, 0x4f, 0x46, 0xb7, 0x40, 0x3e, 0x00, 0x77, 0x1e, 0xbe, 0x41, + 0x34, 0x43, 0x66, 0x46, 0xf3, 0x40, 0xc9, 0x18, 0x24, 0x18, 0x84, 0x42, + 0x9b, 0x41, 0x5b, 0x42, 0x98, 0x46, 0x16, 0x00, 0x88, 0x44, 0x4e, 0xe0, + 0x30, 0x4a, 0x74, 0x1c, 0x14, 0x42, 0x00, 0xd0, 0xd6, 0xe0, 0x4a, 0x46, + 0x1a, 0x43, 0x00, 0x2e, 0x00, 0xd0, 0x5b, 0xe1, 0x00, 0x2a, 0x00, 0xd1, + 0xa5, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0xbb, 0xe1, 0x4a, 0x46, + 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x27, 0xe0, 0x0a, 0x00, + 0x02, 0x43, 0x00, 0xd1, 0x74, 0xe1, 0x22, 0x00, 0x01, 0x3a, 0x01, 0x2c, + 0x05, 0xd0, 0x1e, 0x4c, 0xa4, 0x45, 0x00, 0xd1, 0x94, 0xe0, 0x94, 0x46, + 0x59, 0xe7, 0x48, 0x44, 0x48, 0x45, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, + 0x04, 0x00, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x02, 0x26, 0x1b, 0x02, + 0x00, 0xd5, 0xc4, 0xe0, 0x01, 0x3e, 0x63, 0x07, 0x00, 0xd0, 0x11, 0xe7, + 0x43, 0x46, 0xb4, 0x46, 0x59, 0x07, 0xe2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x0f, 0x49, 0x8c, 0x45, 0x40, 0xd0, 0x61, 0x46, 0x1b, 0x03, 0x49, 0x05, + 0x1b, 0x0b, 0x49, 0x0d, 0x20, 0xe7, 0x01, 0x43, 0x0c, 0x00, 0x61, 0x1e, + 0x8c, 0x41, 0x4c, 0x44, 0x4c, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, + 0x98, 0x44, 0x43, 0x46, 0x1b, 0x02, 0xe0, 0xd5, 0x04, 0x4b, 0x01, 0x36, + 0x9e, 0x42, 0x00, 0xd0, 0x9f, 0xe0, 0x31, 0x00, 0x00, 0x23, 0x00, 0x22, + 0x0a, 0xe7, 0xc0, 0x46, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, + 0x01, 0xf8, 0xff, 0xff, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xd1, + 0x60, 0xe1, 0x0a, 0x00, 0x02, 0x43, 0x4d, 0xd0, 0x4a, 0x46, 0x5c, 0x07, + 0xd2, 0x08, 0x22, 0x43, 0x80, 0x24, 0xdb, 0x08, 0x24, 0x03, 0x23, 0x42, + 0x07, 0xd0, 0xce, 0x08, 0x26, 0x42, 0x04, 0xd1, 0x5d, 0x46, 0x33, 0x00, + 0xc2, 0x08, 0x49, 0x07, 0x0a, 0x43, 0x51, 0x0f, 0xd2, 0x00, 0xd2, 0x08, + 0x49, 0x07, 0x0a, 0x43, 0x11, 0x00, 0x19, 0x43, 0x00, 0xd1, 0xc8, 0xe1, + 0x80, 0x21, 0x09, 0x03, 0x0b, 0x43, 0x1b, 0x03, 0xd5, 0x49, 0x1b, 0x0b, + 0xda, 0xe6, 0xd5, 0x49, 0xb6, 0x1a, 0x0b, 0x40, 0x98, 0x46, 0xb5, 0xe6, + 0x20, 0x00, 0x00, 0xf0, 0xb7, 0xfa, 0x02, 0x00, 0x18, 0x32, 0x1f, 0x2a, + 0x00, 0xdc, 0x8f, 0xe6, 0x23, 0x00, 0x08, 0x38, 0x83, 0x40, 0x00, 0x24, + 0x92, 0xe6, 0x08, 0x43, 0x02, 0x00, 0x50, 0x1e, 0x82, 0x41, 0x6d, 0xe6, + 0xca, 0x4c, 0x72, 0x1c, 0x22, 0x42, 0x00, 0xd0, 0xad, 0xe0, 0x4a, 0x46, + 0x1a, 0x43, 0x00, 0x2e, 0xb8, 0xd1, 0x00, 0x2a, 0x00, 0xd1, 0x58, 0xe1, + 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd0, 0x59, 0xe1, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0x86, 0xe7, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xc1, 0xe7, 0xba, 0x4d, 0xaa, 0x42, + 0x00, 0xd1, 0x1e, 0xe1, 0x80, 0x25, 0x2d, 0x04, 0x2b, 0x43, 0x64, 0x46, + 0x38, 0x2c, 0x5d, 0xdc, 0x1f, 0x2c, 0x00, 0xdd, 0xd0, 0xe0, 0x20, 0x25, + 0x67, 0x46, 0x2d, 0x1b, 0x4e, 0x46, 0x1c, 0x00, 0xfe, 0x40, 0xac, 0x40, + 0x34, 0x43, 0x4e, 0x46, 0xae, 0x40, 0x35, 0x00, 0xfb, 0x40, 0x6e, 0x1e, + 0xb5, 0x41, 0xc9, 0x1a, 0x2c, 0x43, 0x4e, 0xe0, 0x4a, 0x46, 0x14, 0x1a, + 0xa1, 0x45, 0x92, 0x41, 0x52, 0x42, 0x90, 0x46, 0x5f, 0x1a, 0x3a, 0x00, + 0x47, 0x46, 0xd2, 0x1b, 0x90, 0x46, 0x12, 0x02, 0x00, 0xd5, 0x8b, 0xe0, + 0x42, 0x46, 0x22, 0x43, 0x00, 0xd0, 0x30, 0xe6, 0x00, 0x23, 0x00, 0x25, + 0x4d, 0xe7, 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, + 0x44, 0xe7, 0x42, 0x46, 0x9e, 0x4b, 0x61, 0x08, 0x1a, 0x40, 0x13, 0x00, + 0x01, 0x22, 0x14, 0x40, 0x0c, 0x43, 0xda, 0x07, 0x5b, 0x08, 0x98, 0x46, + 0x14, 0x43, 0x41, 0xe6, 0x1a, 0x00, 0x1f, 0x3e, 0xf2, 0x40, 0x16, 0x00, + 0x20, 0x29, 0x03, 0xd0, 0x40, 0x22, 0x51, 0x1a, 0x8b, 0x40, 0x1c, 0x43, + 0x62, 0x1e, 0x94, 0x41, 0x00, 0x23, 0x34, 0x43, 0x98, 0x46, 0x00, 0x26, + 0x1d, 0xe7, 0x0c, 0x00, 0x20, 0x3a, 0xd4, 0x40, 0x22, 0x00, 0x64, 0x46, + 0x20, 0x2c, 0x04, 0xd0, 0x40, 0x27, 0x3f, 0x1b, 0xb9, 0x40, 0x08, 0x43, + 0x80, 0x46, 0x44, 0x46, 0x61, 0x1e, 0x8c, 0x41, 0x22, 0x43, 0xe9, 0xe5, + 0x4c, 0x46, 0x23, 0x43, 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x04, 0x1b, + 0xa0, 0x42, 0x9b, 0x41, 0x5b, 0x42, 0xcb, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x16, 0x00, 0xe2, 0xe5, 0x4e, 0x46, 0x1e, 0x43, 0x00, 0xd1, 0xae, 0xe0, + 0x66, 0x1e, 0x01, 0x2c, 0x00, 0xd1, 0xfd, 0xe0, 0x7b, 0x4f, 0xbc, 0x42, + 0x00, 0xd1, 0x07, 0xe1, 0xb4, 0x46, 0x9b, 0xe6, 0x64, 0x46, 0x20, 0x22, + 0x12, 0x1b, 0x0c, 0x00, 0x94, 0x40, 0x07, 0x00, 0x90, 0x40, 0xa0, 0x46, + 0x64, 0x46, 0x42, 0x1e, 0x90, 0x41, 0x62, 0x46, 0xe7, 0x40, 0x44, 0x46, + 0xd1, 0x40, 0x3c, 0x43, 0x04, 0x43, 0x5b, 0x18, 0xf3, 0xe6, 0x6f, 0x4c, + 0xa2, 0x42, 0x00, 0xd1, 0xd5, 0xe0, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, + 0x89, 0x41, 0x49, 0x42, 0x5b, 0x18, 0xdc, 0x07, 0x40, 0x08, 0x5b, 0x08, + 0x98, 0x46, 0x16, 0x00, 0x04, 0x43, 0xcc, 0xe6, 0x00, 0x2a, 0x00, 0xd0, + 0x82, 0xe0, 0x0a, 0x00, 0x02, 0x43, 0x40, 0xd1, 0x80, 0x23, 0x00, 0x25, + 0x1b, 0x03, 0x13, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, + 0xcb, 0x08, 0xc5, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, + 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x9e, 0xe5, + 0x4a, 0x46, 0x59, 0x07, 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xf9, 0xe6, + 0x4a, 0x46, 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5b, 0x1a, 0x52, 0x42, + 0x9b, 0x1a, 0x98, 0x46, 0x01, 0x26, 0x86, 0xe5, 0x4a, 0x46, 0x59, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0xdb, 0x08, 0xa5, 0xe6, 0x4c, 0x46, 0x23, 0x43, + 0x1c, 0x00, 0x63, 0x1e, 0x9c, 0x41, 0x5b, 0xe6, 0x65, 0x46, 0x1e, 0x00, + 0x20, 0x3d, 0xee, 0x40, 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x25, 0x2d, 0x1b, + 0xab, 0x40, 0x4c, 0x46, 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, + 0x9c, 0x41, 0x34, 0x43, 0x7d, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0x5d, 0x46, 0xcb, 0x08, 0xcc, 0xe6, 0x0a, 0x00, 0x02, 0x43, 0x00, 0xd1, + 0x36, 0xe7, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, + 0x81, 0xe6, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, 0x92, 0x41, 0xcb, 0x1a, + 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, 0x01, 0x26, 0x4e, 0xe5, + 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0xb2, 0xe6, 0x4a, 0x46, + 0x14, 0x1a, 0xa1, 0x45, 0x92, 0x41, 0x5f, 0x1a, 0x52, 0x42, 0xba, 0x1a, + 0x90, 0x46, 0x12, 0x02, 0x6b, 0xd5, 0x4a, 0x46, 0x84, 0x1a, 0xa0, 0x42, + 0x92, 0x41, 0xcb, 0x1a, 0x52, 0x42, 0x9b, 0x1a, 0x98, 0x46, 0x5d, 0x46, + 0x64, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0x5d, 0x46, 0xcb, 0x08, + 0x98, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, 0x4f, 0xe6, + 0x0a, 0x00, 0x02, 0x43, 0x90, 0xd0, 0x4a, 0x46, 0x5c, 0x07, 0xd2, 0x08, + 0x14, 0x43, 0x80, 0x22, 0xdb, 0x08, 0x12, 0x03, 0x13, 0x42, 0x08, 0xd0, + 0xce, 0x08, 0x16, 0x42, 0x05, 0xd1, 0xc0, 0x08, 0x49, 0x07, 0x08, 0x43, + 0x04, 0x00, 0x5d, 0x46, 0x33, 0x00, 0x61, 0x0f, 0xe2, 0x00, 0x49, 0x07, + 0xd2, 0x08, 0x0a, 0x43, 0x78, 0xe6, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, + 0xcb, 0x08, 0x32, 0xe6, 0x48, 0x44, 0x5b, 0x18, 0x48, 0x45, 0x92, 0x41, + 0x98, 0x46, 0x52, 0x42, 0x90, 0x44, 0x43, 0x46, 0x04, 0x00, 0x1b, 0x02, + 0x00, 0xd4, 0x1a, 0xe6, 0x42, 0x46, 0x0e, 0x4b, 0x01, 0x26, 0x1a, 0x40, + 0x90, 0x46, 0x14, 0xe6, 0x66, 0x46, 0x1f, 0x00, 0x20, 0x3e, 0xf7, 0x40, + 0x20, 0x2c, 0x05, 0xd0, 0x40, 0x26, 0x36, 0x1b, 0xb3, 0x40, 0x4c, 0x46, + 0x1c, 0x43, 0xa2, 0x46, 0x54, 0x46, 0x63, 0x1e, 0x9c, 0x41, 0x3c, 0x43, + 0xc8, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x22, 0x32, 0xe5, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xff, 0xfe, 0x07, 0x00, 0x00, + 0x4a, 0x46, 0x14, 0x18, 0x84, 0x42, 0x92, 0x41, 0x5b, 0x18, 0x98, 0x46, + 0x52, 0x42, 0x90, 0x44, 0xe9, 0xe5, 0x42, 0x46, 0x22, 0x43, 0x00, 0xd1, + 0xa6, 0xe6, 0xea, 0xe5, 0x4b, 0x07, 0xc2, 0x08, 0x1a, 0x43, 0xcb, 0x08, + 0x32, 0xe6, 0x00, 0x22, 0x01, 0x49, 0x13, 0x00, 0x14, 0xe5, 0xc0, 0x46, + 0xff, 0x07, 0x00, 0x00, 0x0a, 0x00, 0x30, 0xb5, 0x13, 0x4c, 0x53, 0x00, + 0x09, 0x03, 0x05, 0x00, 0x09, 0x0b, 0x00, 0x20, 0x5b, 0x0d, 0xd2, 0x0f, + 0xa3, 0x42, 0x04, 0xdd, 0x0f, 0x48, 0x83, 0x42, 0x02, 0xdd, 0x0f, 0x4b, + 0xd0, 0x18, 0x30, 0xbd, 0x80, 0x20, 0x40, 0x03, 0x01, 0x43, 0x0d, 0x48, + 0xc0, 0x1a, 0x1f, 0x28, 0x08, 0xdd, 0x0c, 0x48, 0xc3, 0x1a, 0xd9, 0x40, + 0x0b, 0x00, 0x58, 0x42, 0x00, 0x2a, 0xf0, 0xd1, 0x18, 0x00, 0xee, 0xe7, + 0x08, 0x4c, 0xc5, 0x40, 0xa4, 0x46, 0x63, 0x44, 0x99, 0x40, 0x0b, 0x00, + 0x2b, 0x43, 0xf2, 0xe7, 0xfe, 0x03, 0x00, 0x00, 0x1d, 0x04, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x7f, 0x33, 0x04, 0x00, 0x00, 0x13, 0x04, 0x00, 0x00, + 0xed, 0xfb, 0xff, 0xff, 0x70, 0xb5, 0x43, 0x00, 0x46, 0x02, 0xc4, 0x0f, + 0xfe, 0x20, 0x1b, 0x0e, 0x59, 0x1c, 0x75, 0x0a, 0x08, 0x42, 0x0c, 0xd0, + 0xe0, 0x22, 0x92, 0x00, 0x94, 0x46, 0x6d, 0x07, 0x36, 0x0b, 0x63, 0x44, + 0x1b, 0x05, 0x33, 0x43, 0xe4, 0x07, 0x23, 0x43, 0x28, 0x00, 0x19, 0x00, + 0x70, 0xbd, 0x00, 0x2b, 0x14, 0xd1, 0x00, 0x2d, 0x1b, 0xd0, 0x28, 0x00, + 0x00, 0xf0, 0xa2, 0xf8, 0x0a, 0x28, 0x1c, 0xdc, 0x0b, 0x23, 0x2a, 0x00, + 0x1b, 0x1a, 0xda, 0x40, 0x03, 0x00, 0x15, 0x33, 0x9d, 0x40, 0x0e, 0x4b, + 0x12, 0x03, 0x1b, 0x1a, 0x5b, 0x05, 0x16, 0x0b, 0x5b, 0x0d, 0xe1, 0xe7, + 0x00, 0x2d, 0x09, 0xd0, 0x32, 0x0b, 0x80, 0x26, 0x36, 0x03, 0x09, 0x4b, + 0x6d, 0x07, 0x16, 0x43, 0xd8, 0xe7, 0x00, 0x23, 0x00, 0x26, 0xd5, 0xe7, + 0x00, 0x26, 0x05, 0x4b, 0xd2, 0xe7, 0x03, 0x00, 0x2a, 0x00, 0x0b, 0x3b, + 0x9a, 0x40, 0x00, 0x25, 0xe3, 0xe7, 0xc0, 0x46, 0x89, 0x03, 0x00, 0x00, + 0xff, 0x07, 0x00, 0x00, 0x84, 0x46, 0x10, 0x1c, 0x62, 0x46, 0x8c, 0x46, + 0x19, 0x1c, 0x63, 0x46, 0x00, 0xe0, 0xc0, 0x46, 0x1f, 0xb5, 0x00, 0xf0, + 0xf7, 0xf9, 0x00, 0x28, 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0x41, 0xf9, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd, + 0x10, 0xb5, 0x00, 0xf0, 0xe9, 0xf9, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0xdf, 0xf9, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0x63, 0xf9, 0x00, 0x28, + 0x01, 0xdc, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0x59, 0xf9, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x84, 0x46, 0x08, 0x1c, + 0x61, 0x46, 0xff, 0xe7, 0x1f, 0xb5, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0x28, + 0x01, 0xd4, 0x00, 0x21, 0xc8, 0x42, 0x1f, 0xbd, 0x10, 0xb5, 0x00, 0xf0, + 0x49, 0xf8, 0x40, 0x42, 0x01, 0x30, 0x10, 0xbd, 0x10, 0xb5, 0x00, 0xf0, + 0xb7, 0xf8, 0x00, 0x28, 0x01, 0xdb, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, 0xad, 0xf8, 0x00, 0x28, + 0x01, 0xdd, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, + 0x10, 0xb5, 0x00, 0xf0, 0x57, 0xf8, 0x00, 0x28, 0x01, 0xdc, 0x00, 0x20, + 0x10, 0xbd, 0x01, 0x20, 0x10, 0xbd, 0xc0, 0x46, 0x10, 0xb5, 0x00, 0xf0, + 0x4d, 0xf8, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x20, + 0x10, 0xbd, 0xc0, 0x46, 0x1c, 0x21, 0x01, 0x23, 0x1b, 0x04, 0x98, 0x42, + 0x01, 0xd3, 0x00, 0x0c, 0x10, 0x39, 0x1b, 0x0a, 0x98, 0x42, 0x01, 0xd3, + 0x00, 0x0a, 0x08, 0x39, 0x1b, 0x09, 0x98, 0x42, 0x01, 0xd3, 0x00, 0x09, + 0x04, 0x39, 0x02, 0xa2, 0x10, 0x5c, 0x40, 0x18, 0x70, 0x47, 0xc0, 0x46, + 0x04, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0xb5, 0x42, 0x00, 0x4e, 0x02, 0x4c, 0x00, + 0x45, 0x02, 0x6d, 0x0a, 0x12, 0x0e, 0xc3, 0x0f, 0x76, 0x0a, 0x24, 0x0e, + 0xc9, 0x0f, 0xff, 0x2a, 0x0f, 0xd0, 0xff, 0x2c, 0x11, 0xd0, 0x01, 0x20, + 0xa2, 0x42, 0x00, 0xd0, 0x70, 0xbd, 0xb5, 0x42, 0xfc, 0xd1, 0x8b, 0x42, + 0x0d, 0xd0, 0x00, 0x2a, 0xf8, 0xd1, 0x28, 0x00, 0x45, 0x1e, 0xa8, 0x41, + 0xf4, 0xe7, 0x01, 0x20, 0x00, 0x2d, 0xf1, 0xd1, 0xeb, 0xe7, 0x01, 0x20, + 0x00, 0x2e, 0xed, 0xd1, 0xe9, 0xe7, 0x00, 0x20, 0xea, 0xe7, 0xc0, 0x46, + 0xf0, 0xb5, 0x42, 0x00, 0x46, 0x02, 0x4d, 0x02, 0x4c, 0x00, 0xc3, 0x0f, + 0x76, 0x0a, 0x12, 0x0e, 0x6d, 0x0a, 0x24, 0x0e, 0xc8, 0x0f, 0xff, 0x2a, + 0x1f, 0xd0, 0xff, 0x2c, 0x10, 0xd0, 0x00, 0x2a, 0x1f, 0xd1, 0x71, 0x42, + 0x71, 0x41, 0x00, 0x2c, 0x01, 0xd1, 0x00, 0x2d, 0x1e, 0xd0, 0x00, 0x29, + 0x0e, 0xd1, 0x83, 0x42, 0x1e, 0xd0, 0x02, 0x21, 0x58, 0x1e, 0x08, 0x40, + 0x01, 0x38, 0xf0, 0xbd, 0x00, 0x2d, 0x26, 0xd1, 0x00, 0x2a, 0xf4, 0xd1, + 0x71, 0x42, 0x71, 0x41, 0x00, 0x29, 0xf0, 0xd0, 0x00, 0x28, 0xf4, 0xd1, + 0x01, 0x20, 0x40, 0x42, 0xf1, 0xe7, 0x00, 0x2e, 0x19, 0xd1, 0xff, 0x2c, + 0xee, 0xd0, 0x00, 0x2c, 0xe5, 0xd1, 0x00, 0x2d, 0xe3, 0xd1, 0xe4, 0xe7, + 0x00, 0x20, 0x00, 0x2e, 0xe5, 0xd0, 0xe0, 0xe7, 0xa2, 0x42, 0x05, 0xdc, + 0xea, 0xdb, 0xae, 0x42, 0x02, 0xd8, 0xe7, 0xd3, 0x00, 0x20, 0xdc, 0xe7, + 0x41, 0x42, 0x41, 0x41, 0x48, 0x42, 0x02, 0x21, 0x08, 0x40, 0x01, 0x38, + 0xd5, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xd2, 0xe7, 0xf0, 0xb5, 0x42, 0x00, + 0x46, 0x02, 0x4d, 0x02, 0x4c, 0x00, 0xc3, 0x0f, 0x76, 0x0a, 0x12, 0x0e, + 0x6d, 0x0a, 0x24, 0x0e, 0xc8, 0x0f, 0xff, 0x2a, 0x0d, 0xd0, 0xff, 0x2c, + 0x0f, 0xd0, 0x00, 0x2a, 0x23, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x2c, + 0x0f, 0xd1, 0x00, 0x2d, 0x0d, 0xd1, 0x00, 0x20, 0x00, 0x2e, 0x14, 0xd0, + 0x0d, 0xe0, 0x00, 0x2e, 0x10, 0xd1, 0xff, 0x2c, 0x15, 0xd1, 0x00, 0x2d, + 0x0c, 0xd1, 0x00, 0x2a, 0x03, 0xd1, 0x71, 0x42, 0x71, 0x41, 0x00, 0x29, + 0x08, 0xd1, 0x83, 0x42, 0x10, 0xd0, 0x02, 0x21, 0x58, 0x1e, 0x08, 0x40, + 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, 0xf0, 0xbd, 0x00, 0x28, 0xfc, 0xd1, + 0x01, 0x20, 0x40, 0x42, 0xf9, 0xe7, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x2d, + 0xed, 0xd1, 0xee, 0xe7, 0xa2, 0x42, 0x05, 0xdc, 0xf2, 0xdb, 0xae, 0x42, + 0x02, 0xd8, 0xef, 0xd3, 0x00, 0x20, 0xec, 0xe7, 0x41, 0x42, 0x41, 0x41, + 0x48, 0x42, 0x02, 0x21, 0x08, 0x40, 0x01, 0x38, 0xe5, 0xe7, 0xc0, 0x46, + 0xf0, 0xb5, 0x4f, 0x46, 0x46, 0x46, 0xd6, 0x46, 0x94, 0x46, 0x91, 0x46, + 0x1a, 0x03, 0x12, 0x0b, 0x18, 0x4d, 0xc0, 0xb5, 0x4c, 0x00, 0x0f, 0x03, + 0x92, 0x46, 0x5a, 0x00, 0x06, 0x00, 0x80, 0x46, 0x3f, 0x0b, 0x01, 0x20, + 0x64, 0x0d, 0xc9, 0x0f, 0x52, 0x0d, 0xdb, 0x0f, 0xac, 0x42, 0x0a, 0xd0, + 0xaa, 0x42, 0x03, 0xd0, 0x94, 0x42, 0x01, 0xd1, 0x57, 0x45, 0x0d, 0xd0, + 0x1c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xf0, 0xbd, 0x3d, 0x00, + 0x35, 0x43, 0xf7, 0xd1, 0xa2, 0x42, 0xf5, 0xd1, 0x52, 0x46, 0x65, 0x46, + 0x2a, 0x43, 0xf1, 0xd1, 0x01, 0x20, 0xc8, 0x45, 0xee, 0xd1, 0x99, 0x42, + 0x06, 0xd0, 0x00, 0x2c, 0xea, 0xd1, 0x3e, 0x43, 0x30, 0x00, 0x46, 0x1e, + 0xb0, 0x41, 0xe5, 0xe7, 0x00, 0x20, 0xe3, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, + 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x32, 0x4d, + 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, + 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, + 0x29, 0xd0, 0xab, 0x42, 0x18, 0xd0, 0x00, 0x2a, 0x2a, 0xd1, 0x3c, 0x43, + 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x02, 0xd1, 0x4c, 0x46, + 0x26, 0x43, 0x27, 0xd0, 0x00, 0x2d, 0x15, 0xd1, 0x81, 0x42, 0x28, 0xd0, + 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x3c, 0xbc, 0x90, 0x46, + 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, 0x4d, 0x46, 0x2e, 0x43, + 0x2f, 0xd1, 0x00, 0x2a, 0xee, 0xd1, 0x3c, 0x43, 0x65, 0x42, 0x65, 0x41, + 0x00, 0x2d, 0xe9, 0xd0, 0x00, 0x28, 0xed, 0xd1, 0x01, 0x20, 0x40, 0x42, + 0xea, 0xe7, 0x3d, 0x00, 0x25, 0x43, 0x20, 0xd1, 0x93, 0x42, 0xeb, 0xd0, + 0x00, 0x2b, 0xdd, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xda, 0xd1, 0xdb, 0xe7, + 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0xdb, 0xd0, 0xd6, 0xe7, 0x9a, 0x42, + 0x0a, 0xdc, 0xe7, 0xdb, 0x4f, 0x45, 0xd1, 0xd8, 0x10, 0xd0, 0x00, 0x20, + 0x4f, 0x45, 0xd1, 0xd2, 0x00, 0x29, 0xe1, 0xd0, 0x08, 0x00, 0xcd, 0xe7, + 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, 0x01, 0x38, + 0xc6, 0xe7, 0x02, 0x20, 0x40, 0x42, 0xc3, 0xe7, 0xc4, 0x45, 0xbd, 0xd8, + 0x00, 0x20, 0xc4, 0x45, 0xbe, 0xd2, 0xeb, 0xe7, 0xff, 0x07, 0x00, 0x00, + 0xf0, 0xb5, 0x4e, 0x46, 0x45, 0x46, 0x57, 0x46, 0xde, 0x46, 0x04, 0x00, + 0x18, 0x00, 0xe0, 0xb5, 0x16, 0x00, 0x1b, 0x03, 0x1b, 0x0b, 0x31, 0x4d, + 0x0f, 0x03, 0x4a, 0x00, 0x99, 0x46, 0x43, 0x00, 0xa4, 0x46, 0xb0, 0x46, + 0x3f, 0x0b, 0x52, 0x0d, 0xc9, 0x0f, 0x5b, 0x0d, 0xc0, 0x0f, 0xaa, 0x42, + 0x11, 0xd0, 0xab, 0x42, 0x14, 0xd0, 0x00, 0x2a, 0x2f, 0xd1, 0x3c, 0x43, + 0xa3, 0x46, 0x65, 0x42, 0x65, 0x41, 0x00, 0x2b, 0x14, 0xd1, 0x4c, 0x46, + 0x26, 0x43, 0x11, 0xd1, 0x5b, 0x46, 0x00, 0x20, 0x00, 0x2b, 0x17, 0xd0, + 0x10, 0xe0, 0x3d, 0x00, 0x25, 0x43, 0x12, 0xd1, 0x93, 0x42, 0x1c, 0xd1, + 0x4d, 0x46, 0x2e, 0x43, 0x0d, 0xd1, 0x00, 0x2a, 0x04, 0xd1, 0x3c, 0x43, + 0x65, 0x42, 0x65, 0x41, 0x00, 0x2d, 0x0d, 0xd1, 0x81, 0x42, 0x16, 0xd0, + 0x02, 0x20, 0x01, 0x39, 0x08, 0x40, 0x01, 0x38, 0x00, 0xe0, 0x02, 0x20, + 0x3c, 0xbc, 0x90, 0x46, 0x99, 0x46, 0xa2, 0x46, 0xab, 0x46, 0xf0, 0xbd, + 0x00, 0x28, 0xf7, 0xd1, 0x01, 0x20, 0x40, 0x42, 0xf4, 0xe7, 0x00, 0x2b, + 0xea, 0xd1, 0x4c, 0x46, 0x26, 0x43, 0xe7, 0xd1, 0xe8, 0xe7, 0x9a, 0x42, + 0x06, 0xdd, 0x43, 0x42, 0x58, 0x41, 0x02, 0x23, 0x40, 0x42, 0x18, 0x40, + 0x01, 0x38, 0xe5, 0xe7, 0x9a, 0x42, 0xe9, 0xdb, 0x4f, 0x45, 0xdb, 0xd8, + 0x06, 0xd0, 0x00, 0x20, 0x4f, 0x45, 0xdd, 0xd2, 0x00, 0x29, 0xe3, 0xd0, + 0x08, 0x00, 0xd9, 0xe7, 0xc4, 0x45, 0xd1, 0xd8, 0x00, 0x20, 0xc4, 0x45, + 0xd4, 0xd2, 0xf5, 0xe7, 0xff, 0x07, 0x00, 0x00, 0x9e, 0x1b, 0x00, 0x08, + 0x2a, 0x1b, 0x00, 0x08, 0x98, 0x1a, 0x00, 0x08, 0x52, 0x1a, 0x00, 0x08, + 0x98, 0x1a, 0x00, 0x08, 0x66, 0x1b, 0x00, 0x08, 0x98, 0x1a, 0x00, 0x08, + 0x52, 0x1a, 0x00, 0x08, 0x2a, 0x1b, 0x00, 0x08, 0x2a, 0x1b, 0x00, 0x08, + 0x66, 0x1b, 0x00, 0x08, 0x52, 0x1a, 0x00, 0x08, 0x58, 0x1a, 0x00, 0x08, + 0x58, 0x1a, 0x00, 0x08, 0x58, 0x1a, 0x00, 0x08, 0x74, 0x1b, 0x00, 0x08, + 0x2a, 0x1b, 0x00, 0x08, 0x2a, 0x1b, 0x00, 0x08, 0x98, 0x1a, 0x00, 0x08, + 0x4e, 0x1a, 0x00, 0x08, 0x98, 0x1a, 0x00, 0x08, 0x66, 0x1b, 0x00, 0x08, + 0x98, 0x1a, 0x00, 0x08, 0x4e, 0x1a, 0x00, 0x08, 0x2a, 0x1b, 0x00, 0x08, + 0x2a, 0x1b, 0x00, 0x08, 0x66, 0x1b, 0x00, 0x08, 0x4e, 0x1a, 0x00, 0x08, + 0x58, 0x1a, 0x00, 0x08, 0x58, 0x1a, 0x00, 0x08, 0x58, 0x1a, 0x00, 0x08, + 0x70, 0x1b, 0x00, 0x08, 0xda, 0x1c, 0x00, 0x08, 0x78, 0x1c, 0x00, 0x08, + 0x78, 0x1c, 0x00, 0x08, 0x76, 0x1c, 0x00, 0x08, 0x7c, 0x1c, 0x00, 0x08, + 0x7c, 0x1c, 0x00, 0x08, 0xa4, 0x1d, 0x00, 0x08, 0x76, 0x1c, 0x00, 0x08, + 0x7c, 0x1c, 0x00, 0x08, 0xa4, 0x1d, 0x00, 0x08, 0x7c, 0x1c, 0x00, 0x08, + 0x76, 0x1c, 0x00, 0x08, 0x5a, 0x1d, 0x00, 0x08, 0x5a, 0x1d, 0x00, 0x08, + 0x5a, 0x1d, 0x00, 0x08, 0xde, 0x1d, 0x00, 0x08, 0xdc, 0x24, 0x00, 0x08, + 0x44, 0x23, 0x00, 0x08, 0x22, 0x23, 0x00, 0x08, 0x36, 0x24, 0x00, 0x08, + 0x22, 0x23, 0x00, 0x08, 0x7a, 0x24, 0x00, 0x08, 0x22, 0x23, 0x00, 0x08, + 0x36, 0x24, 0x00, 0x08, 0x44, 0x23, 0x00, 0x08, 0x44, 0x23, 0x00, 0x08, + 0x7a, 0x24, 0x00, 0x08, 0x36, 0x24, 0x00, 0x08, 0xe8, 0x23, 0x00, 0x08, + 0xe8, 0x23, 0x00, 0x08, 0xe8, 0x23, 0x00, 0x08, 0x88, 0x24, 0x00, 0x08, + 0x03, 0x08, 0x01, 0x00, 0x10, 0x27, 0x00, 0x00, 0x00, 0x12, 0x7a, 0x00, + 0x00, 0x12, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h b/lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h new file mode 100644 index 000000000..5b76d2638 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h @@ -0,0 +1,12 @@ +#ifndef STM32_FLASH_DEBUG_H +#define STM32_FLASH_DEBUG_H + +#define STM32_FLASH_DEBUG 0 + +#if STM32_FLASH_DEBUG + #define DEBUG_MSG(...) AddLog_P2(LOG_LEVEL_DEBUG, __VA_ARGS__) +#else + #define DEBUG_MSG(...) +#endif + +#endif diff --git a/lib/lib_basic/stm32flash-1.0/stm32flash.cpp b/lib/lib_basic/stm32flash-1.0/stm32flash.cpp new file mode 100644 index 000000000..cc9da1917 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/stm32flash.cpp @@ -0,0 +1,1143 @@ + /* + stm32flash - Open Source ST STM32 flash program for Arduino + Copyright 2010 Geoffrey McRae + Copyright 2012-2014 Tormod Volden + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include +#include + +#include "stm32flash.h" +#include "stm32_flash_debug.h" + +#include "dev_table.h" + +#define STM32_ACK 0x79 +#define STM32_NACK 0x1F +#define STM32_BUSY 0x76 + +#define STM32_CMD_INIT 0x7F +#define STM32_CMD_GET 0x00 /* get the version and command supported */ +#define STM32_CMD_GVR 0x01 /* get version and read protection status */ +#define STM32_CMD_GID 0x02 /* get ID */ +#define STM32_CMD_RM 0x11 /* read memory */ +#define STM32_CMD_GO 0x21 /* go */ +#define STM32_CMD_WM 0x31 /* write memory */ +#define STM32_CMD_WM_NS 0x32 /* no-stretch write memory */ +#define STM32_CMD_ER 0x43 /* erase */ +#define STM32_CMD_EE 0x44 /* extended erase */ +#define STM32_CMD_EE_NS 0x45 /* extended erase no-stretch */ +#define STM32_CMD_WP 0x63 /* write protect */ +#define STM32_CMD_WP_NS 0x64 /* write protect no-stretch */ +#define STM32_CMD_UW 0x73 /* write unprotect */ +#define STM32_CMD_UW_NS 0x74 /* write unprotect no-stretch */ +#define STM32_CMD_RP 0x82 /* readout protect */ +#define STM32_CMD_RP_NS 0x83 /* readout protect no-stretch */ +#define STM32_CMD_UR 0x92 /* readout unprotect */ +#define STM32_CMD_UR_NS 0x93 /* readout unprotect no-stretch */ +#define STM32_CMD_CRC 0xA1 /* compute CRC */ +#define STM32_CMD_ERR 0xFF /* not a valid command */ + +#define STM32_RESYNC_TIMEOUT 35 * 1000 /* milliseconds */ +#define STM32_MASSERASE_TIMEOUT 35 * 1000 /* milliseconds */ +#define STM32_PAGEERASE_TIMEOUT 5 * 1000 /* milliseconds */ +#define STM32_BLKWRITE_TIMEOUT 1 * 1000 /* milliseconds */ +#define STM32_WUNPROT_TIMEOUT 1 * 1000 /* milliseconds */ +#define STM32_WPROT_TIMEOUT 1 * 1000 /* milliseconds */ +#define STM32_RPROT_TIMEOUT 1 * 1000 /* milliseconds */ + +#define STM32_CMD_GET_LENGTH 17 /* bytes in the reply */ + +struct stm32_cmd { + uint8_t get; + uint8_t gvr; + uint8_t gid; + uint8_t rm; + uint8_t go; + uint8_t wm; + uint8_t er; /* this may be extended erase */ + uint8_t wp; + uint8_t uw; + uint8_t rp; + uint8_t ur; + uint8_t crc; +}; + +/* Reset code for ARMv7-M (Cortex-M3) and ARMv6-M (Cortex-M0) + * see ARMv7-M or ARMv6-M Architecture Reference Manual (table B3-8) + * or "The definitive guide to the ARM Cortex-M3", section 14.4. + */ +static const uint8_t stm_reset_code[] = { + 0x01, 0x49, // ldr r1, [pc, #4] ; () + 0x02, 0x4A, // ldr r2, [pc, #8] ; () + 0x0A, 0x60, // str r2, [r1, #0] + 0xfe, 0xe7, // endless: b endless + 0x0c, 0xed, 0x00, 0xe0, // .word 0xe000ed0c = NVIC AIRCR register address + 0x04, 0x00, 0xfa, 0x05 // .word 0x05fa0004 = VECTKEY | SYSRESETREQ +}; + +static const uint32_t stm_reset_code_length = sizeof(stm_reset_code); + +/* RM0360, Empty check + * On STM32F070x6 and STM32F030xC devices only, internal empty check flag is + * implemented to allow easy programming of the virgin devices by the boot loader. This flag is + * used when BOOT0 pin is defining Main Flash memory as the target boot space. When the + * flag is set, the device is considered as empty and System memory (boot loader) is selected + * instead of the Main Flash as a boot space to allow user to program the Flash memory. + * This flag is updated only during Option bytes loading: it is set when the content of the + * address 0x08000 0000 is read as 0xFFFF FFFF, otherwise it is cleared. It means a power + * on or setting of OBL_LAUNCH bit in FLASH_CR register is needed to clear this flag after + * programming of a virgin device to execute user code after System reset. + */ +static const uint8_t stm_obl_launch_code[] = { + 0x01, 0x49, // ldr r1, [pc, #4] ; () + 0x02, 0x4A, // ldr r2, [pc, #8] ; () + 0x0A, 0x60, // str r2, [r1, #0] + 0xfe, 0xe7, // endless: b endless + 0x10, 0x20, 0x02, 0x40, // address: FLASH_CR = 40022010 + 0x00, 0x20, 0x00, 0x00 // value: OBL_LAUNCH = 00002000 +}; + +static const uint32_t stm_obl_launch_code_length = sizeof(stm_obl_launch_code); + +static struct varlen_cmd i2c_cmd_get_reply[] = { + {0x10, 11}, + {0x11, 17}, + {0x12, 18}, + { /* sentinel */ } +}; + +extern const stm32_dev_t devices[]; + +int flash_addr_to_page_ceil(const stm32_t *stm, uint32_t addr) +{ + int page; + uint32_t *psize; + + if (!(addr >= stm->dev->fl_start && addr <= stm->dev->fl_end)) + return 0; + + page = 0; + addr -= stm->dev->fl_start; + psize = stm->dev->fl_ps; + + while (addr >= psize[0]) { + addr -= psize[0]; + page++; + if (psize[1]) + psize++; + } + + return addr ? page + 1 : page; +} + +static void stm32_warn_stretching(const char *f) +{ + DEBUG_MSG("Attention !!!"); + DEBUG_MSG("\tThis %s error could be caused by your I2C", f); + DEBUG_MSG("\tcontroller not accepting \"clock stretching\""); + DEBUG_MSG("\tas required by bootloader."); + DEBUG_MSG("\tCheck \"I2C.txt\" in stm32flash source code."); +} + +static stm32_err_t stm32_get_ack_timeout(const stm32_t *stm, uint32_t timeout) +{ + Stream *stream = stm->stream; + uint8_t byte; + size_t ret; + uint32_t t0 = 0, t1; + + if (!(stm->flags & STREAM_OPT_RETRY)) + timeout = 0; + + if (timeout) { + stream->setTimeout(timeout); + t0 = millis(); + } + + do { + ret = stream->readBytes(&byte, 1); + if (ret == 0 && timeout) { + t1 = millis(); + if (t1 < t0 + timeout) + continue; + } + + if (ret != 1) { + DEBUG_MSG("Failed to read ACK byte"); + return STM32_ERR_UNKNOWN; + } + + if (byte == STM32_ACK) + return STM32_ERR_OK; + if (byte == STM32_NACK) + return STM32_ERR_NACK; + if (byte != STM32_BUSY) { + DEBUG_MSG("Got byte 0x%02x instead of ACK", + byte); + return STM32_ERR_UNKNOWN; + } + } while (1); +} + +static stm32_err_t stm32_get_ack(const stm32_t *stm) +{ + return stm32_get_ack_timeout(stm, 0); +} + +static stm32_err_t stm32_send_command_timeout(const stm32_t *stm, + const uint8_t cmd, + uint32_t timeout) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + size_t ret; + uint8_t buf[2]; + + buf[0] = cmd; + buf[1] = cmd ^ 0xFF; + ret = stream->write(buf, 2); + if (ret != 2) { + DEBUG_MSG("Failed to send command"); + return STM32_ERR_UNKNOWN; + } + s_err = stm32_get_ack_timeout(stm, timeout); + if (s_err == STM32_ERR_OK) + return STM32_ERR_OK; + if (s_err == STM32_ERR_NACK) + DEBUG_MSG("Got NACK from device on command 0x%02x", cmd); + else + DEBUG_MSG("Unexpected reply from device on command 0x%02x", cmd); + return STM32_ERR_UNKNOWN; +} + +static stm32_err_t stm32_send_command(const stm32_t *stm, const uint8_t cmd) +{ + return stm32_send_command_timeout(stm, cmd, 0); +} + +/* if we have lost sync, send a wrong command and expect a NACK */ +static stm32_err_t stm32_resync(const stm32_t *stm) +{ + Stream *stream = stm->stream; + size_t ret; + uint8_t buf[2], ack; + uint32_t t0, t1; + + t0 = millis(); + t1 = t0; + + buf[0] = STM32_CMD_ERR; + buf[1] = STM32_CMD_ERR ^ 0xFF; + while (t1 < t0 + STM32_RESYNC_TIMEOUT) { + ret = stream->write(buf, 2); + if (ret == 0) { + delay(500000); + t1 = millis(); + continue; + } + ret = stream->readBytes(&ack, 1); + if (ret == 0) { + t1 = millis(); + continue; + } + if (ack == STM32_NACK) + return STM32_ERR_OK; + t1 = millis(); + } + return STM32_ERR_UNKNOWN; +} + +/* + * some command receive reply frame with variable length, and length is + * embedded in reply frame itself. + * We can guess the length, but if we guess wrong the protocol gets out + * of sync. + * Use resync for frame oriented interfaces (e.g. I2C) and byte-by-byte + * read for byte oriented interfaces (e.g. UART). + * + * to run safely, data buffer should be allocated for 256+1 bytes + * + * len is value of the first byte in the frame. + */ +static stm32_err_t stm32_guess_len_cmd(const stm32_t *stm, uint8_t cmd, + uint8_t *data, unsigned int len) +{ + Stream *stream = stm->stream; + size_t ret; + + if (stm32_send_command(stm, cmd) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + if (stm->flags & STREAM_OPT_BYTE) { + /* interface is UART-like */ + ret = stream->readBytes(data, 1); + if (ret != 1) + return STM32_ERR_UNKNOWN; + len = data[0]; + ret = stream->readBytes(data + 1, len + 1); + if (ret != len + 1) + return STM32_ERR_UNKNOWN; + return STM32_ERR_OK; + } + + ret = stream->readBytes(data, len + 2); + if (ret == len + 2 && len == data[0]) + return STM32_ERR_OK; + if (ret == 0 || ret != len + 2) { + /* restart with only one byte */ + if (stm32_resync(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + if (stm32_send_command(stm, cmd) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + ret = stream->readBytes(data, 1); + if (ret != 1) + return STM32_ERR_UNKNOWN; + } + + DEBUG_MSG("Re sync (len = %d)", data[0]); + if (stm32_resync(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + len = data[0]; + if (stm32_send_command(stm, cmd) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + ret = stream->readBytes(data, len + 2); + if (ret != len + 2) + return STM32_ERR_UNKNOWN; + return STM32_ERR_OK; +} + +/* + * Some interface, e.g. UART, requires a specific init sequence to let STM32 + * autodetect the interface speed. + * The sequence is only required one time after reset. + * This function sends the init sequence and, in case of timeout, recovers + * the interface. + */ +static stm32_err_t stm32_send_init_seq(const stm32_t *stm) +{ + Stream *stream = stm->stream; + size_t ret; + uint8_t byte, cmd = STM32_CMD_INIT; + + ret = stream->write(&cmd, 1); + if (ret != 1) { + DEBUG_MSG("Failed to send init to device"); + return STM32_ERR_UNKNOWN; + } + ret = stream->readBytes(&byte, 1); + if (ret == 1 && byte == STM32_ACK) + return STM32_ERR_OK; + if (ret == 1 && byte == STM32_NACK) { + /* We could get error later, but let's continue, for now. */ + DEBUG_MSG("Warning: the interface was not closed properly."); + return STM32_ERR_OK; + } + if (ret != 1) { + DEBUG_MSG("Failed to init device."); + return STM32_ERR_UNKNOWN; + } + + /* + * Check if previous STM32_CMD_INIT was taken as first byte + * of a command. Send a new byte, we should get back a NACK. + */ + ret = stream->write(&cmd, 1); + if (ret != 1) { + DEBUG_MSG("Failed to send init to device"); + return STM32_ERR_UNKNOWN; + } + ret = stream->readBytes(&byte, 1); + if (ret == 1 && byte == STM32_NACK) + return STM32_ERR_OK; + DEBUG_MSG("Failed to init device."); + return STM32_ERR_UNKNOWN; +} + +/* find newer command by higher code */ +#define newer(prev, a) (((prev) == STM32_CMD_ERR) \ + ? (a) \ + : (((prev) > (a)) ? (prev) : (a))) + +stm32_t *stm32_init(Stream *stream, const uint8_t flags, const char init) +{ + uint8_t len, val, buf[257]; + stm32_t *stm; + int i, new_cmds; + + stm = (stm32_t *) calloc(sizeof(stm32_t), 1); + stm->cmd = (stm32_cmd_t *) malloc(sizeof(stm32_cmd_t)); + memset(stm->cmd, STM32_CMD_ERR, sizeof(stm32_cmd_t)); + stm->stream = stream; + stm->flags = flags; + if (stm->flags & STREAM_OPT_I2C) + stm->cmd_get_reply = i2c_cmd_get_reply; + + if ((stm->flags & STREAM_OPT_CMD_INIT) && init) + if (stm32_send_init_seq(stm) != STM32_ERR_OK) + return NULL; + + /* get the version and read protection status */ + if (stm32_send_command(stm, STM32_CMD_GVR) != STM32_ERR_OK) { + stm32_close(stm); + return NULL; + } + + /* From AN, only UART bootloader returns 3 bytes */ + len = (stm->flags & STREAM_OPT_GVR_ETX) ? 3 : 1; + if (stream->readBytes(buf, len) != len) + return NULL; + stm->version = buf[0]; + stm->option1 = (stm->flags & STREAM_OPT_GVR_ETX) ? buf[1] : 0; + stm->option2 = (stm->flags & STREAM_OPT_GVR_ETX) ? buf[2] : 0; + if (stm32_get_ack(stm) != STM32_ERR_OK) { + stm32_close(stm); + return NULL; + } + + /* get the bootloader information */ + len = STM32_CMD_GET_LENGTH; + if (stm->cmd_get_reply) + for (i = 0; stm->cmd_get_reply[i].length; i++) + if (stm->version == stm->cmd_get_reply[i].version) { + len = stm->cmd_get_reply[i].length; + break; + } + if (stm32_guess_len_cmd(stm, STM32_CMD_GET, buf, len) != STM32_ERR_OK) + return NULL; + len = buf[0] + 1; + stm->bl_version = buf[1]; + new_cmds = 0; + for (i = 1; i < len; i++) { + val = buf[i + 1]; + switch (val) { + case STM32_CMD_GET: + stm->cmd->get = val; break; + case STM32_CMD_GVR: + stm->cmd->gvr = val; break; + case STM32_CMD_GID: + stm->cmd->gid = val; break; + case STM32_CMD_RM: + stm->cmd->rm = val; break; + case STM32_CMD_GO: + stm->cmd->go = val; break; + case STM32_CMD_WM: + case STM32_CMD_WM_NS: + stm->cmd->wm = newer(stm->cmd->wm, val); + break; + case STM32_CMD_ER: + case STM32_CMD_EE: + case STM32_CMD_EE_NS: + stm->cmd->er = newer(stm->cmd->er, val); + break; + case STM32_CMD_WP: + case STM32_CMD_WP_NS: + stm->cmd->wp = newer(stm->cmd->wp, val); + break; + case STM32_CMD_UW: + case STM32_CMD_UW_NS: + stm->cmd->uw = newer(stm->cmd->uw, val); + break; + case STM32_CMD_RP: + case STM32_CMD_RP_NS: + stm->cmd->rp = newer(stm->cmd->rp, val); + break; + case STM32_CMD_UR: + case STM32_CMD_UR_NS: + stm->cmd->ur = newer(stm->cmd->ur, val); + break; + case STM32_CMD_CRC: + stm->cmd->crc = newer(stm->cmd->crc, val); + break; + default: + if (new_cmds++ == 0) + DEBUG_MSG("GET returns unknown commands (0x%2x", val); + else + DEBUG_MSG(", 0x%2x", val); + } + } + if (new_cmds) + DEBUG_MSG(")"); + if (stm32_get_ack(stm) != STM32_ERR_OK) { + stm32_close(stm); + return NULL; + } + + if (stm->cmd->get == STM32_CMD_ERR + || stm->cmd->gvr == STM32_CMD_ERR + || stm->cmd->gid == STM32_CMD_ERR) { + DEBUG_MSG("Error: bootloader did not returned correct information from GET command"); + return NULL; + } + + /* get the device ID */ + if (stm32_guess_len_cmd(stm, stm->cmd->gid, buf, 1) != STM32_ERR_OK) { + stm32_close(stm); + return NULL; + } + len = buf[0] + 1; + if (len < 2) { + stm32_close(stm); + DEBUG_MSG("Only %d bytes sent in the PID, unknown/unsupported device", len); + return NULL; + } + stm->pid = (buf[1] << 8) | buf[2]; + if (len > 2) { + DEBUG_MSG("This bootloader returns %d extra bytes in PID:", len); + for (i = 2; i <= len ; i++) + DEBUG_MSG(" %02x", buf[i]); + } + if (stm32_get_ack(stm) != STM32_ERR_OK) { + stm32_close(stm); + return NULL; + } + + stm->dev = devices; + while (stm->dev->id != 0x00 && stm->dev->id != stm->pid) + ++stm->dev; + + if (!stm->dev->id) { + DEBUG_MSG("Unknown/unsupported device (Device ID: 0x%03x)", stm->pid); + stm32_close(stm); + return NULL; + } + + return stm; +} + +void stm32_close(stm32_t *stm) +{ + if (stm) + free(stm->cmd); + free(stm); +} + +stm32_err_t stm32_read_memory(const stm32_t *stm, uint32_t address, + uint8_t data[], unsigned int len) +{ + Stream *stream = stm->stream; + uint8_t buf[5]; + + if (!len) + return STM32_ERR_OK; + + if (len > 256) { + DEBUG_MSG("Error: READ length limit at 256 bytes"); + return STM32_ERR_UNKNOWN; + } + + if (stm->cmd->rm == STM32_CMD_ERR) { + DEBUG_MSG("Error: READ command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->rm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + buf[0] = address >> 24; + buf[1] = (address >> 16) & 0xFF; + buf[2] = (address >> 8) & 0xFF; + buf[3] = address & 0xFF; + buf[4] = buf[0] ^ buf[1] ^ buf[2] ^ buf[3]; + if (stream->write(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + if (stm32_send_command(stm, len - 1) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + if (stream->readBytes(data, len) != len) + return STM32_ERR_UNKNOWN; + + return STM32_ERR_OK; +} + +stm32_err_t stm32_write_memory(const stm32_t *stm, uint32_t address, + const uint8_t data[], unsigned int len) +{ + Stream *stream = stm->stream; + uint8_t cs, buf[256 + 2]; + unsigned int i, aligned_len; + stm32_err_t s_err; + + if (!len) + return STM32_ERR_OK; + + if (len > 256) { + DEBUG_MSG("Error: READ length limit at 256 bytes"); + return STM32_ERR_UNKNOWN; + } + + /* must be 32bit aligned */ + if (address & 0x3) { + DEBUG_MSG("Error: WRITE address must be 4 byte aligned"); + return STM32_ERR_UNKNOWN; + } + + if (stm->cmd->wm == STM32_CMD_ERR) { + DEBUG_MSG("Error: WRITE command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + /* send the address and checksum */ + if (stm32_send_command(stm, stm->cmd->wm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + buf[0] = address >> 24; + buf[1] = (address >> 16) & 0xFF; + buf[2] = (address >> 8) & 0xFF; + buf[3] = address & 0xFF; + buf[4] = buf[0] ^ buf[1] ^ buf[2] ^ buf[3]; + if (stream->write(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + aligned_len = (len + 3) & ~3; + cs = aligned_len - 1; + buf[0] = aligned_len - 1; + for (i = 0; i < len; i++) { + cs ^= data[i]; + buf[i + 1] = data[i]; + } + /* padding data */ + for (i = len; i < aligned_len; i++) { + cs ^= 0xFF; + buf[i + 1] = 0xFF; + } + buf[aligned_len + 1] = cs; + if (stream->write(buf, aligned_len + 2) != aligned_len + 2) + return STM32_ERR_UNKNOWN; + + s_err = stm32_get_ack_timeout(stm, STM32_BLKWRITE_TIMEOUT); + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->wm != STM32_CMD_WM_NS) + stm32_warn_stretching("write"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +stm32_err_t stm32_wunprot_memory(const stm32_t *stm) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + + if (stm->cmd->uw == STM32_CMD_ERR) { + DEBUG_MSG("Error: WRITE UNPROTECT command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->uw) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + s_err = stm32_get_ack_timeout(stm, STM32_WUNPROT_TIMEOUT); + if (s_err == STM32_ERR_NACK) { + DEBUG_MSG("Error: Failed to WRITE UNPROTECT"); + return STM32_ERR_UNKNOWN; + } + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->uw != STM32_CMD_UW_NS) + stm32_warn_stretching("WRITE UNPROTECT"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +stm32_err_t stm32_wprot_memory(const stm32_t *stm) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + + if (stm->cmd->wp == STM32_CMD_ERR) { + DEBUG_MSG("Error: WRITE PROTECT command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->wp) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + s_err = stm32_get_ack_timeout(stm, STM32_WPROT_TIMEOUT); + if (s_err == STM32_ERR_NACK) { + DEBUG_MSG("Error: Failed to WRITE PROTECT"); + return STM32_ERR_UNKNOWN; + } + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->wp != STM32_CMD_WP_NS) + stm32_warn_stretching("WRITE PROTECT"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +stm32_err_t stm32_runprot_memory(const stm32_t *stm) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + + if (stm->cmd->ur == STM32_CMD_ERR) { + DEBUG_MSG("Error: READOUT UNPROTECT command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->ur) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + s_err = stm32_get_ack_timeout(stm, STM32_MASSERASE_TIMEOUT); + if (s_err == STM32_ERR_NACK) { + DEBUG_MSG("Error: Failed to READOUT UNPROTECT"); + return STM32_ERR_UNKNOWN; + } + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->ur != STM32_CMD_UR_NS) + stm32_warn_stretching("READOUT UNPROTECT"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +stm32_err_t stm32_readprot_memory(const stm32_t *stm) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + + if (stm->cmd->rp == STM32_CMD_ERR) { + DEBUG_MSG("Error: READOUT PROTECT command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->rp) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + s_err = stm32_get_ack_timeout(stm, STM32_RPROT_TIMEOUT); + if (s_err == STM32_ERR_NACK) { + DEBUG_MSG("Error: Failed to READOUT PROTECT"); + return STM32_ERR_UNKNOWN; + } + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->rp != STM32_CMD_RP_NS) + stm32_warn_stretching("READOUT PROTECT"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +static stm32_err_t stm32_mass_erase(const stm32_t *stm) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + uint8_t buf[3]; + + if (stm32_send_command(stm, stm->cmd->er) != STM32_ERR_OK) { + DEBUG_MSG("Can't initiate chip mass erase!"); + return STM32_ERR_UNKNOWN; + } + + /* regular erase (0x43) */ + if (stm->cmd->er == STM32_CMD_ER) { + s_err = stm32_send_command_timeout(stm, 0xFF, STM32_MASSERASE_TIMEOUT); + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W) + stm32_warn_stretching("mass erase"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; + } + + /* extended erase */ + buf[0] = 0xFF; /* 0xFFFF the magic number for mass erase */ + buf[1] = 0xFF; + buf[2] = 0x00; /* checksum */ + if (stream->write(buf, 3) != 3) { + DEBUG_MSG("Mass erase error."); + return STM32_ERR_UNKNOWN; + } + s_err = stm32_get_ack_timeout(stm, STM32_MASSERASE_TIMEOUT); + if (s_err != STM32_ERR_OK) { + DEBUG_MSG("Mass erase failed. Try specifying the number of pages to be erased."); + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->er != STM32_CMD_EE_NS) + stm32_warn_stretching("mass erase"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; +} + +static stm32_err_t stm32_pages_erase(const stm32_t *stm, uint32_t spage, uint32_t pages) +{ + Stream *stream = stm->stream; + stm32_err_t s_err; + size_t ret; + uint32_t pg_num; + uint8_t pg_byte; + uint8_t cs = 0; + uint8_t *buf; + int i = 0; + + /* The erase command reported by the bootloader is either 0x43, 0x44 or 0x45 */ + /* 0x44 is Extended Erase, a 2 byte based protocol and needs to be handled differently. */ + /* 0x45 is clock no-stretching version of Extended Erase for I2C port. */ + if (stm32_send_command(stm, stm->cmd->er) != STM32_ERR_OK) { + DEBUG_MSG("Can't initiate chip mass erase!"); + return STM32_ERR_UNKNOWN; + } + + /* regular erase (0x43) */ + if (stm->cmd->er == STM32_CMD_ER) { + buf = (uint8_t *) malloc(1 + pages + 1); + if (!buf) + return STM32_ERR_UNKNOWN; + + buf[i++] = pages - 1; + cs ^= (pages-1); + for (pg_num = spage; pg_num < (pages + spage); pg_num++) { + buf[i++] = pg_num; + cs ^= pg_num; + } + buf[i++] = cs; + ret = stream->write(buf, i); + free(buf); + if (ret != i) { + DEBUG_MSG("Erase failed."); + return STM32_ERR_UNKNOWN; + } + s_err = stm32_get_ack_timeout(stm, pages * STM32_PAGEERASE_TIMEOUT); + if (s_err != STM32_ERR_OK) { + if (stm->flags & STREAM_OPT_STRETCH_W) + stm32_warn_stretching("erase"); + return STM32_ERR_UNKNOWN; + } + return STM32_ERR_OK; + } + + /* extended erase */ + buf = (uint8_t *) malloc(2 + 2 * pages + 1); + if (!buf) + return STM32_ERR_UNKNOWN; + + /* Number of pages to be erased - 1, two bytes, MSB first */ + pg_byte = (pages - 1) >> 8; + buf[i++] = pg_byte; + cs ^= pg_byte; + pg_byte = (pages - 1) & 0xFF; + buf[i++] = pg_byte; + cs ^= pg_byte; + + for (pg_num = spage; pg_num < spage + pages; pg_num++) { + pg_byte = pg_num >> 8; + cs ^= pg_byte; + buf[i++] = pg_byte; + pg_byte = pg_num & 0xFF; + cs ^= pg_byte; + buf[i++] = pg_byte; + } + buf[i++] = cs; + ret = stream->write(buf, i); + free(buf); + if (ret != i) { + DEBUG_MSG("Page-by-page erase error."); + return STM32_ERR_UNKNOWN; + } + + s_err = stm32_get_ack_timeout(stm, pages * STM32_PAGEERASE_TIMEOUT); + if (s_err != STM32_ERR_OK) { + DEBUG_MSG("Page-by-page erase failed. Check the maximum pages your device supports."); + if (stm->flags & STREAM_OPT_STRETCH_W + && stm->cmd->er != STM32_CMD_EE_NS) + stm32_warn_stretching("erase"); + return STM32_ERR_UNKNOWN; + } + + return STM32_ERR_OK; +} + +stm32_err_t stm32_erase_memory(const stm32_t *stm, uint32_t spage, uint32_t pages) +{ + uint32_t n; + stm32_err_t s_err; + + if (!pages || spage > STM32_MAX_PAGES || + ((pages != STM32_MASS_ERASE) && ((spage + pages) > STM32_MAX_PAGES))) + return STM32_ERR_OK; + + if (stm->cmd->er == STM32_CMD_ERR) { + DEBUG_MSG("Error: ERASE command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (pages == STM32_MASS_ERASE) { + /* + * Not all chips support mass erase. + * Mass erase can be obtained executing a "readout protect" + * followed by "readout un-protect". This method is not + * suggested because can hang the target if a debug SWD/JTAG + * is connected. When the target enters in "readout + * protection" mode it will consider the debug connection as + * a tentative of intrusion and will hang. + * Erasing the flash page-by-page is the safer way to go. + */ + if (!(stm->dev->flags & F_NO_ME)) + return stm32_mass_erase(stm); + + pages = flash_addr_to_page_ceil(stm, stm->dev->fl_end); + } + + /* + * Some device, like STM32L152, cannot erase more than 512 pages in + * one command. Split the call. + */ + while (pages) { + n = (pages <= 512) ? pages : 512; + s_err = stm32_pages_erase(stm, spage, n); + if (s_err != STM32_ERR_OK) + return s_err; + spage += n; + pages -= n; + } + return STM32_ERR_OK; +} + +/* detect CPU endian */ +char cpu_le() { + const uint32_t cpu_le_test = 0x12345678; + return ((const unsigned char*)&cpu_le_test)[0] == 0x78; +} + +uint32_t le_u32(const uint32_t v) { + if (!cpu_le()) + return ((v & 0xFF000000) >> 24) | + ((v & 0x00FF0000) >> 8) | + ((v & 0x0000FF00) << 8) | + ((v & 0x000000FF) << 24); + return v; +} + +static stm32_err_t stm32_run_raw_code(const stm32_t *stm, + uint32_t target_address, + const uint8_t *code, uint32_t code_size) +{ + uint32_t stack_le = le_u32(0x20002000); + uint32_t code_address_le = le_u32(target_address + 8 + 1); // thumb mode address (!) + uint32_t length = code_size + 8; + uint8_t *mem, *pos; + uint32_t address, w; + + /* Must be 32-bit aligned */ + if (target_address & 0x3) { + DEBUG_MSG("Error: code address must be 4 byte aligned"); + return STM32_ERR_UNKNOWN; + } + + mem = (uint8_t *) malloc(length); + if (!mem) + return STM32_ERR_UNKNOWN; + + memcpy(mem, &stack_le, sizeof(uint32_t)); + memcpy(mem + 4, &code_address_le, sizeof(uint32_t)); + memcpy(mem + 8, code, code_size); + + pos = mem; + address = target_address; + while (length > 0) { + w = length > 256 ? 256 : length; + if (stm32_write_memory(stm, address, pos, w) != STM32_ERR_OK) { + free(mem); + return STM32_ERR_UNKNOWN; + } + + address += w; + pos += w; + length -= w; + } + + free(mem); + return stm32_go(stm, target_address); +} + +stm32_err_t stm32_go(const stm32_t *stm, uint32_t address) +{ + Stream *stream = stm->stream; + uint8_t buf[5]; + + if (stm->cmd->go == STM32_CMD_ERR) { + DEBUG_MSG("Error: GO command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->go) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + buf[0] = address >> 24; + buf[1] = (address >> 16) & 0xFF; + buf[2] = (address >> 8) & 0xFF; + buf[3] = address & 0xFF; + buf[4] = buf[0] ^ buf[1] ^ buf[2] ^ buf[3]; + if (stream->write(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + return STM32_ERR_OK; +} + +stm32_err_t stm32_reset_device(const stm32_t *stm) +{ + uint32_t target_address = stm->dev->ram_start; + + if (stm->dev->flags & F_OBLL) { + /* set the OBL_LAUNCH bit to reset device (see RM0360, 2.5) */ + return stm32_run_raw_code(stm, target_address, stm_obl_launch_code, stm_obl_launch_code_length); + } else { + return stm32_run_raw_code(stm, target_address, stm_reset_code, stm_reset_code_length); + } +} + +stm32_err_t stm32_crc_memory(const stm32_t *stm, uint32_t address, + uint32_t length, uint32_t *crc) +{ + Stream *stream = stm->stream; + uint8_t buf[5]; + + if (address & 0x3 || length & 0x3) { + DEBUG_MSG("Start and end addresses must be 4 byte aligned"); + return STM32_ERR_UNKNOWN; + } + + if (stm->cmd->crc == STM32_CMD_ERR) { + DEBUG_MSG("Error: CRC command not implemented in bootloader."); + return STM32_ERR_NO_CMD; + } + + if (stm32_send_command(stm, stm->cmd->crc) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + buf[0] = address >> 24; + buf[1] = (address >> 16) & 0xFF; + buf[2] = (address >> 8) & 0xFF; + buf[3] = address & 0xFF; + buf[4] = buf[0] ^ buf[1] ^ buf[2] ^ buf[3]; + if (stream->write(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + buf[0] = length >> 24; + buf[1] = (length >> 16) & 0xFF; + buf[2] = (length >> 8) & 0xFF; + buf[3] = length & 0xFF; + buf[4] = buf[0] ^ buf[1] ^ buf[2] ^ buf[3]; + if (stream->write(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + if (stm32_get_ack(stm) != STM32_ERR_OK) + return STM32_ERR_UNKNOWN; + + if (stream->readBytes(buf, 5) != 5) + return STM32_ERR_UNKNOWN; + + if (buf[4] != (buf[0] ^ buf[1] ^ buf[2] ^ buf[3])) + return STM32_ERR_UNKNOWN; + + *crc = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + return STM32_ERR_OK; +} + +/* + * CRC computed by STM32 is similar to the standard crc32_be() + * implemented, for example, in Linux kernel in ./lib/crc32.c + * But STM32 computes it on units of 32 bits word and swaps the + * bytes of the word before the computation. + * Due to byte swap, I cannot use any CRC available in existing + * libraries, so here is a simple not optimized implementation. + */ +#define CRCPOLY_BE 0x04c11db7 +#define CRC_MSBMASK 0x80000000 +#define CRC_INIT_VALUE 0xFFFFFFFF +uint32_t stm32_sw_crc(uint32_t crc, uint8_t *buf, unsigned int len) +{ + int i; + uint32_t data; + + if (len & 0x3) { + DEBUG_MSG("Buffer length must be multiple of 4 bytes"); + return 0; + } + + while (len) { + data = *buf++; + data |= *buf++ << 8; + data |= *buf++ << 16; + data |= *buf++ << 24; + len -= 4; + + crc ^= data; + + for (i = 0; i < 32; i++) + if (crc & CRC_MSBMASK) + crc = (crc << 1) ^ CRCPOLY_BE; + else + crc = (crc << 1); + } + return crc; +} + +stm32_err_t stm32_crc_wrapper(const stm32_t *stm, uint32_t address, + uint32_t length, uint32_t *crc) +{ + uint8_t buf[256]; + uint32_t start, total_len, len, current_crc; + + if (address & 0x3 || length & 0x3) { + DEBUG_MSG("Start and end addresses must be 4 byte aligned"); + return STM32_ERR_UNKNOWN; + } + + if (stm->cmd->crc != STM32_CMD_ERR) + return stm32_crc_memory(stm, address, length, crc); + + start = address; + total_len = length; + current_crc = CRC_INIT_VALUE; + while (length) { + len = length > 256 ? 256 : length; + if (stm32_read_memory(stm, address, buf, len) != STM32_ERR_OK) { + DEBUG_MSG("Failed to read memory at address 0x%08x, target write-protected?", address); + return STM32_ERR_UNKNOWN; + } + current_crc = stm32_sw_crc(current_crc, buf, len); + length -= len; + address += len; + + DEBUG_MSG("\rCRC address 0x%08x (%.2f%%) ", + address, + (100.0f / (float)total_len) * (float)(address - start) + ); + } + DEBUG_MSG("Done."); + *crc = current_crc; + return STM32_ERR_OK; +} diff --git a/lib/lib_basic/stm32flash-1.0/stm32flash.h b/lib/lib_basic/stm32flash-1.0/stm32flash.h new file mode 100644 index 000000000..7607eadf0 --- /dev/null +++ b/lib/lib_basic/stm32flash-1.0/stm32flash.h @@ -0,0 +1,117 @@ +/* + stm32flash - Open Source ST STM32 flash program for Arduino + Copyright (C) 2010 Geoffrey McRae + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + + +#ifndef STM32_FLASH_H +#define STM32_FLASH_H + +#include +#include + +/* flags */ +#define STREAM_OPT_BYTE (1 << 0) /* byte (not frame) oriented */ +#define STREAM_OPT_GVR_ETX (1 << 1) /* cmd GVR returns protection status */ +#define STREAM_OPT_CMD_INIT (1 << 2) /* use INIT cmd to autodetect speed */ +#define STREAM_OPT_RETRY (1 << 3) /* allowed read() retry after timeout */ +#define STREAM_OPT_I2C (1 << 4) /* i2c */ +#define STREAM_OPT_STRETCH_W (1 << 5) /* warning for no-stretching commands */ + +#define STREAM_SERIAL (STREAM_OPT_BYTE | STREAM_OPT_GVR_ETX | STREAM_OPT_CMD_INIT | STREAM_OPT_RETRY) +#define STREAM_I2C (STREAM_OPT_I2C | STREAM_OPT_STRETCH_W) + +#define STM32_MAX_RX_FRAME 256 /* cmd read memory */ +#define STM32_MAX_TX_FRAME (1 + 256 + 1) /* cmd write memory */ + +#define STM32_MAX_PAGES 0x0000ffff +#define STM32_MASS_ERASE 0x00100000 /* > 2 x max_pages */ + +typedef enum { + STM32_ERR_OK = 0, + STM32_ERR_UNKNOWN, /* Generic error */ + STM32_ERR_NACK, + STM32_ERR_NO_CMD, /* Command not available in bootloader */ +} stm32_err_t; + +typedef enum { + F_NO_ME = 1 << 0, /* Mass-Erase not supported */ + F_OBLL = 1 << 1, /* OBL_LAUNCH required */ +} flags_t; + +typedef struct stm32 stm32_t; +typedef struct stm32_cmd stm32_cmd_t; +typedef struct stm32_dev stm32_dev_t; + +/* + * Specify the length of reply for command GET + * This is helpful for frame-oriented protocols, e.g. i2c, to avoid time + * consuming try-fail-timeout-retry operation. + * On byte-oriented protocols, i.e. UART, this information would be skipped + * after read the first byte, so not needed. + */ +struct varlen_cmd { + uint8_t version; + uint8_t length; +}; + +struct stm32 { + Stream *stream; + uint8_t flags; + struct varlen_cmd *cmd_get_reply; + uint8_t bl_version; + uint8_t version; + uint8_t option1, option2; + uint16_t pid; + stm32_cmd_t *cmd; + const stm32_dev_t *dev; +}; + +struct stm32_dev { + uint16_t id; + const char *name; + uint32_t ram_start, ram_end; + uint32_t fl_start, fl_end; + uint16_t fl_pps; // pages per sector + uint32_t *fl_ps; // page size + uint32_t opt_start, opt_end; + uint32_t mem_start, mem_end; + uint32_t flags; +}; + +stm32_t *stm32_init(Stream *stream, const uint8_t flags, const char init); +void stm32_close(stm32_t *stm); +stm32_err_t stm32_read_memory(const stm32_t *stm, uint32_t address, + uint8_t data[], unsigned int len); +stm32_err_t stm32_write_memory(const stm32_t *stm, uint32_t address, + const uint8_t data[], unsigned int len); +stm32_err_t stm32_wunprot_memory(const stm32_t *stm); +stm32_err_t stm32_wprot_memory(const stm32_t *stm); +stm32_err_t stm32_erase_memory(const stm32_t *stm, uint32_t spage, + uint32_t pages); +stm32_err_t stm32_go(const stm32_t *stm, uint32_t address); +stm32_err_t stm32_reset_device(const stm32_t *stm); +stm32_err_t stm32_readprot_memory(const stm32_t *stm); +stm32_err_t stm32_runprot_memory(const stm32_t *stm); +stm32_err_t stm32_crc_memory(const stm32_t *stm, uint32_t address, + uint32_t length, uint32_t *crc); +stm32_err_t stm32_crc_wrapper(const stm32_t *stm, uint32_t address, + uint32_t length, uint32_t *crc); +uint32_t stm32_sw_crc(uint32_t crc, uint8_t *buf, unsigned int len); + +#endif + diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index b7823ca56..5c1fa49ff 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index cf2edd17d..709f124e3 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 4f74ff4d3..2da4aeeea 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 623b6b740..98542801c 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 580570d88..97bbbbf73 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 3eea5f1c9..5b6766be9 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index ac5ade26b..d67a0e10a 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -727,6 +727,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 2ad3700d3..a370dde84 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 6dbb44c9c..8fc5fbc58 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 0eb173bae..6234d8b2f 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 - RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC - TX" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC - RX" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 3fe15a1b2..9d5e1e479 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 4763c030f..cf7e2cf46 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 324de77fb..d10b3aecf 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 38f91e7ea..e9a70b25f 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index ae76b55ad..5f78f779f 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index c17f4d29f..1de2927f4 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index e9b453281..bbefa9b4e 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index b14d8b1bf..ea050d415 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 8112bdf4f..59588ca4b 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 290d468e4..d388abfb5 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index d0941916f..6f077b13a 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 7bd64ffb4..963a27e9a 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 85fbb2af5..81ff1421d 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "安" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index ed0467608..1ac516dff 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -731,6 +731,8 @@ #define D_SENSOR_IEM3000_RX "iEM3000 RX" #define D_SENSOR_MIEL_HVAC_TX "MiEl HVAC Tx" #define D_SENSOR_MIEL_HVAC_RX "MiEl HVAC Rx" +#define D_SENSOR_SHELLY_DIMMER_BOOT0 "SHD Boot 0" +#define D_SENSOR_SHELLY_DIMMER_RST_INV "SHD Reset" // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index e183a68fa..b35075f8a 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -473,6 +473,10 @@ #define USE_PWM_DIMMER_REMOTE // Add support for remote switches to PWM Dimmer (requires USE_DEVICE_GROUPS) (+0k6 code) //#define USE_KEELOQ // Add support for Jarolift rollers by Keeloq algorithm (+4k5 code) #define USE_SONOFF_D1 // Add support for Sonoff D1 Dimmer (+0k7 code) +//#define USE_SHELLY_DIMMER // Add support for Shelly Dimmer (+2k2 code) +// #define SHELLY_CMDS // Add command to send co-processor commands (+0k4 code) +// #define SHELLY_FW_UPGRADE // Add firmware upgrade option for co-processor (+30k code, +5k mem) +// #define SHELLY_VOLTAGE_MON // Add support for reading voltage and current measurment (+?? code) // -- Optional light modules ---------------------- #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // diff --git a/tasmota/settings.h b/tasmota/settings.h index 118c60bec..44a6947a4 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -635,8 +635,11 @@ struct { uint16_t energy_power_delta[3]; // F44 uint16_t shutter_pwmrange[2][MAX_SHUTTERS]; // F4A uint8_t dimmer_step; // F5A - - uint8_t free_f5b[88]; // F5B - Decrement if adding new Setting variables just above and below + uint8_t shd_leading_edge; // F5B + uint16_t shd_warmup_brightness; // F5C + uint8_t shd_warmup_time; // F5E + + uint8_t free_f5e[84]; // F5E - Decrement if adding new Setting variables just above and below // Only 32 bit boundary variables below SysBitfield5 flag5; // FB4 diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 6f90fe225..64155e324 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -662,7 +662,9 @@ void ResponseAppendFeatures(void) feature7 |= 0x00000800; // xsns_79_as608.ino #endif -// feature7 |= 0x00001000; +#if defined(USE_SHELLY_DIMMER) + feature7 |= 0x00001000; // xdrv_45_shelly_dimmer.ino +#endif // feature7 |= 0x00002000; // feature7 |= 0x00004000; // feature7 |= 0x00008000; diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 2a479c086..16d51192b 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -307,6 +307,7 @@ enum SettingsTextIndex { SET_OTAURL, SET_ADC_PARAM1, SET_ADC_PARAM2, SET_ADC_PARAM3, SET_ADC_PARAM4, SET_ADC_PARAM5, SET_ADC_PARAM6, SET_ADC_PARAM7, SET_ADC_PARAM8, // MAX_ADCS #endif SET_SWITCH_TXT1, SET_SWITCH_TXT2, SET_SWITCH_TXT3, SET_SWITCH_TXT4, SET_SWITCH_TXT5, SET_SWITCH_TXT6, SET_SWITCH_TXT7, SET_SWITCH_TXT8, // MAX_SWITCHES + SET_SHD_PARAM, SET_MAX }; enum DevGroupMessageType { DGR_MSGTYP_FULL_STATUS, DGR_MSGTYP_PARTIAL_UPDATE, DGR_MSGTYP_UPDATE, DGR_MSGTYP_UPDATE_MORE_TO_COME, DGR_MSGTYP_UPDATE_DIRECT, DGR_MSGTYPE_UPDATE_COMMAND, DGR_MSGTYPFLAG_WITH_LOCAL = 128 }; diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 7c2a35e15..7e97ea2b9 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -53,7 +53,8 @@ //#undef USE_DEVICE_GROUPS // Disable support for device groups (+5k6 code) #undef USE_PWM_DIMMER // Disable support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+4k5 code) #undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code) -#undef USE_SONOFF_D1 // DIsable support for Sonoff D1 Dimmer (+0k7 code) +#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) // -- Optional light modules ---------------------- #define USE_LIGHT // Add Dimmer/Light support @@ -270,6 +271,7 @@ #undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer #undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code) #undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) #undef USE_ENERGY_SENSOR // Disable energy sensors (-14k code) #undef USE_PZEM004T // Disable PZEM004T energy sensor @@ -363,6 +365,7 @@ #undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control #undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller #undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) #undef USE_COUNTER // Disable counters #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices @@ -506,6 +509,7 @@ #undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control #undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller #undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) #undef USE_COUNTER // Disable counters #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices @@ -578,6 +582,111 @@ #endif // SONOFF_ZIGBEEBRIDGE ****************************************************************** +/*********************************************************************************************\ + * [tasmota-shelly-dimmer.bin] + * Provide a dedicated Shelly Dimmer image allowing enough code and memory space +\*********************************************************************************************/ + +#ifdef FIRMWARE_SHELLY_DIMMER + +#undef CODE_IMAGE_STR +#define CODE_IMAGE_STR "shelly-dimmer" + +#define USE_SHELLY_DIMMER // Add support for Shelly Dimmer (+2k2 code) + #define SHELLY_CMDS // Add command to send co-processor commands (+0k4 code) + #define SHELLY_FW_UPGRADE // Add firmware upgrade option for co-processor (+30k code, +5k mem) + #define SHELLY_DIMMER_DEBUG + // #define SHELLY_VOLTAGE_MON // Add support for reading voltage and current measurment (+?? code) + +#define USE_LIGHT // Add Dimmer/Light support +#define USE_ENERGY_SENSOR // Add energy sensors (-14k code) + +// -- Optional modules ---------------------------- +#undef ROTARY_V1 // Disable support for MI Desk Lamp +#undef USE_SONOFF_RF // Disable support for Sonoff Rf Bridge (+3k2 code) + #undef USE_RF_FLASH // Disable support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB +#undef USE_SONOFF_SC // Disable support for Sonoff Sc (+1k1 code) +#undef USE_TUYA_MCU // Disable support for Tuya Serial MCU +#undef USE_ARMTRONIX_DIMMERS // Disable support for Armtronix Dimmers (+1k4 code) +#undef USE_PS_16_DZ // Disable support for PS-16-DZ Dimmer and Sonoff L1 (+2k code) +#undef USE_SONOFF_IFAN // Disable support for Sonoff iFan02 and iFan03 (+2k code) +#undef USE_ARILUX_RF // Disable support for Arilux RF remote controller +#undef USE_SHUTTER // Disable Shutter support for up to 4 shutter with different motortypes (+6k code) +#undef USE_EXS_DIMMER // Disable support for EX-Store WiFi Dimmer +#undef USE_PWM_DIMMER // Disable support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+4k5 code) +#undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer +#undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code) +#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code) + +// -- Optional light modules ---------------------- +#undef USE_WS2812 // Disable WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // +#undef USE_MY92X1 // Disable support for MY92X1 RGBCW led controller as used in Sonoff B1, Ailight and Lohas +#undef USE_SM16716 // Disable support for SM16716 RGB LED controller (+0k7 code) +#undef USE_SM2135 // Disable support for SM2135 RGBCW led control as used in Action LSC (+0k6 code) +#undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control +#undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller +#undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code) +#undef USE_DGR_LIGHT_SEQUENCE // Disable support for device group light sequencing (requires USE_DEVICE_GROUPS) (+0k2 code) + +#undef USE_I2C // Disable all I2C sensors and devices +#undef USE_SPI // Disable all SPI devices +#undef USE_DISPLAY // Disable Display support + +#undef USE_MHZ19 // Disable support for MH-Z19 CO2 sensor +#undef USE_SENSEAIR // Disable support for SenseAir K30, K70 and S8 CO2 sensor +#undef USE_PMS5003 // Disable support for PMS5003 and PMS7003 particle concentration sensor +#undef USE_NOVA_SDS // Disable support for SDS011 and SDS021 particle concentration sensor +#undef USE_HPMA // Disable support for Honeywell HPMA115S0 particle concentration sensor +#undef USE_SR04 // Disable support for HC-SR04 ultrasonic devices (+1k code) +#undef USE_DYP // Disable support for DYP ME-007 ultrasonic distance sensor, serial port version (+0k5 code) +#undef USE_MP3_PLAYER // Disable DFPlayer Mini MP3 Player RB-DFR-562 commands: play, volume and stop +#undef USE_AZ7798 // Disable support for AZ-Instrument 7798 CO2 datalogger +#undef USE_PN532_HSU // Disable support for PN532 using HSU (Serial) interface (+1k8 code, 140 bytes mem) +#undef USE_ZIGBEE // Disable serial communication with Zigbee CC2530 flashed with ZNP +#undef USE_RDM6300 // Disable support for RDM6300 125kHz RFID Reader (+0k8) +#undef USE_IBEACON // Disable support for bluetooth LE passive scan of ibeacon devices (uses HM17 module) +#undef USE_GPS // Disable support for GPS and NTP Server for becoming Stratus 1 Time Source (+ 3.1kb flash, +132 bytes RAM) +#undef USE_HM10 // (ESP8266 only) Disable support for HM-10 as a BLE-bridge for the LYWSD03 (+5k1 code) +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#undef USE_HRXL // Disable support for MaxBotix HRXL-MaxSonar ultrasonic range finders (+0k7) +#undef USE_TASMOTA_CLIENT // Disable support for Arduino Uno/Pro Mini via serial interface including flashing (+2k3 code, 44 mem) +#undef USE_OPENTHERM // Disable support for OpenTherm (+15k code) +#undef USE_MIEL_HVAC // Disable support for Mitsubishi Electric HVAC serial interface (+5k code) + +#undef USE_PZEM004T // Disable PZEM004T energy sensor +#undef USE_PZEM_AC // Disable PZEM014,016 Energy monitor +#undef USE_PZEM_DC // Disable PZEM003,017 Energy monitor +#undef USE_MCP39F501 // Disable MCP39F501 Energy monitor as used in Shelly 2 +#undef USE_SDM120 // Disable support for Eastron SDM120-Modbus energy meter +#undef USE_SDM630 // Disable support for Eastron SDM630-Modbus energy monitor (+0k6 code) +#undef USE_DDS2382 // Disable support for Hiking DDS2382 Modbus energy monitor (+0k6 code) +#undef USE_DDSU666 // Disable support for Chint DDSU666 Modbus energy monitor (+0k6 code) +#undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) +#undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) +#undef USE_BL0940 // Disable support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code) +#undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry +#undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) +#undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) + +#undef USE_DHT // Disable support for DHT11, AM2301 (DHT21, DHT22, AM2302, AM2321) and SI7021 Temperature and Humidity sensor +#undef USE_MAX31855 // Disable MAX31855 K-Type thermocouple sensor using softSPI +#undef USE_MAX31865 // Disable support for MAX31865 RTD sensors using softSPI +#undef USE_LMT01 // Disable support for TI LMT01 temperature sensor, count pulses on single GPIO (+0k5 code) +#undef USE_IR_REMOTE // Disable IR driver +#undef USE_TM1638 // Disable support for TM1638 switches copying Switch1 .. Switch8 +#undef USE_HX711 // Disable support for HX711 load cell +#undef USE_TX20_WIND_SENSOR // Disable support for La Crosse TX20 anemometer +#undef USE_TX23_WIND_SENSOR // Disable support for La Crosse TX23 anemometer +#undef USE_WINDMETER // Disable support for analog anemometer (+2k2 code) +#undef USE_RC_SWITCH // Disable support for RF transceiver using library RcSwitch +#undef USE_RF_SENSOR // Disable support for RF sensor receiver (434MHz or 868MHz) (+0k8 code) +#undef USE_HRE // Disable support for Badger HR-E Water Meter (+1k4 code) +#undef USE_A4988_STEPPER // Disable support for A4988_Stepper +#undef DEBUG_THEO // Disable debug code +#undef USE_DEBUG_DRIVER // Disable debug code + +#endif // FIRMWARE_SHELLY_DIMMER + /*********************************************************************************************\ * [tasmota-lite.bin] @@ -640,6 +749,7 @@ #undef USE_SONOFF_L1 // Disable support for Sonoff L1 led control #undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller #undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) #undef USE_COUNTER // Disable counters #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices @@ -772,6 +882,7 @@ #undef USE_ELECTRIQ_MOODL // Disable support for ElectriQ iQ-wifiMOODL RGBW LED controller #undef USE_LIGHT_PALETTE // Disable support for color palette (+0k9 code) #undef USE_DGR_LIGHT_SEQUENCE // Disable support for device group light sequencing (requires USE_DEVICE_GROUPS) (+0k2 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+2k4 code) #undef USE_COUNTER // Disable counters #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 15394ae96..4adfe3f38 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -32,6 +32,7 @@ #undef USE_SONOFF_IFAN #undef USE_SONOFF_L1 #undef USE_SONOFF_D1 +#undef USE_SHELLY_DIMMER #undef USE_RF_FLASH // Not ported (yet) @@ -149,6 +150,7 @@ enum UserSelectablePins { GPIO_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503 + GPIO_SHELLY_DIMMER_BOOT0, GPIO_SHELLY_DIMMER_RST_INV, GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -255,7 +257,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_DYP_RX "|" D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|" D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|" - D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX + D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX "|" + D_SENSOR_SHELLY_DIMMER_BOOT0 "|" D_SENSOR_SHELLY_DIMMER_RST_INV ; const char kSensorNamesFixed[] PROGMEM = @@ -383,6 +386,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { #ifdef USE_ELECTRIQ_MOODL AGPIO(GPIO_ELECTRIQ_MOODL_TX), #endif +#ifdef USE_SHELLY_DIMMER + AGPIO(GPIO_SHELLY_DIMMER_BOOT0), + AGPIO(GPIO_SHELLY_DIMMER_RST_INV), +#endif #endif // USE_LIGHT /*-------------------------------------------------------------------------------------------*\ diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino new file mode 100644 index 000000000..09dd73e60 --- /dev/null +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -0,0 +1,873 @@ +/* + xdrv_45_shelly_dimmer.ino - shelly dimmer support for Tasmota + + Copyright (C) 2020 James Turton + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_LIGHT +#ifdef USE_SHELLY_DIMMER +/*********************************************************************************************\ + * Shelly WiFi Dimmer v1 and v2 (ESP8266 w/ separate co-processor dimmer) + * https://shelly.cloud/wifi-smart-home-automation-shelly-dimmer/ + * https://shelly.cloud/products/shelly-dimmer-2-smart-home-light-controller/ +\*********************************************************************************************/ +// #define SHELLY_DIMMER_DEBUG +// #define SHELLY_HW_DIMMING + +#define XDRV_45 45 +#define XNRG_31 31 + +#define SHD_DRIVER_MAJOR_VERSION 1 +#define SHD_DRIVER_MINOR_VERSION 4 + +#define SHD_LOGNAME "SHD" + +#ifdef SHELLY_CMDS +#define D_PRFX_SHD "Shd" +#define D_CMND_LEADINGEDGE "LeadingEdge" +#define D_CMND_WARMUPBRIGHTNESS "WarmupBrightness" +#define D_CMND_WARMUPTIME "WarmupTime" +#endif // SHELLY_CMDS + +#define SHD_SWITCH_CMD 0x01 +#define SHD_SWITCH_FADE_CMD 0x02 +#define SHD_POLL_CMD 0x10 +#define SHD_VERSION_CMD 0x11 +#define SHD_SETTINGS_CMD 0x20 +#define SHD_WARMUP_CMD 0x21 +#define SHD_CALIBRATION1_CMD 0x30 +#define SHD_CALIBRATION2_CMD 0x31 + +#define SHD_SWITCH_SIZE 2 +#define SHD_SWITCH_FADE_SIZE 6 +#define SHD_SETTINGS_SIZE 10 +#define SHD_WARMUP_SIZE 4 +#define SHD_CALIBRATION_SIZE 200 + +#define SHD_START_BYTE 0x01 +#define SHD_END_BYTE 0x04 + +#define SHD_BUFFER_SIZE 256 +#define SHD_ACK_TIMEOUT 200 // 200 ms ACK timeout + +#ifdef SHELLY_FW_UPGRADE +#include +#include +#endif // SHELLY_FW_UPGRADE + +#include + +TasmotaSerial *ShdSerial = nullptr; + +typedef struct +{ + uint8_t version_major = 0; + uint8_t version_minor = 0; + + uint32_t brightness = 0; + uint32_t power = 0; + uint32_t fade_rate = 0; +} SHD_DIMMER; + +struct SHD +{ + uint8_t *buffer = nullptr; // Serial receive buffer + int byte_counter = 0; // Index in serial receive buffer + uint16_t req_brightness = 0; + bool req_on = false; + SHD_DIMMER dimmer; + uint32_t start_time = 0; + uint8_t counter = 1; // Packet counter + uint16_t req_fade_rate = 0; + uint16_t leading_edge = 2; // Leading edge = 2 Trailing edge = 1 + uint16_t warmup_brightness = 100; // 10% + uint16_t warmup_time = 20; // 20ms +#ifdef USE_ENERGY_SENSOR + uint32_t last_power_check = 0; // Time when last power was checked +#endif // USE_ENERGY_SENSOR + bool present = false; +} Shd; + +/*********************************************************************************************\ + * Helper Functions +\*********************************************************************************************/ + +uint16_t checksum(uint8_t *buf, int len) +{ + uint16_t chksm = 0; + for (uint8_t i = 0; i < len; i++) + chksm += buf[i]; + return chksm; +} + +int check_byte() +{ + uint8_t index = Shd.byte_counter; + uint8_t byte = Shd.buffer[index]; + + if (index == 0) + return byte == SHD_START_BYTE; + + if (index < 4) + return 1; + + uint8_t data_length = Shd.buffer[3]; + if ((4 + data_length + 3) > SHD_BUFFER_SIZE) + return 0; + + if (index < 4 + data_length + 1) + return 1; + + if (index == 4 + data_length + 1) + { + uint16_t chksm = (Shd.buffer[index - 1] << 8 | Shd.buffer[index]); + uint16_t chksm_calc = checksum(&Shd.buffer[1], 3 + data_length); + if (chksm != chksm_calc) + { +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" checksum: %x calculated: %x"), chksm, chksm_calc); +#endif // SHELLY_DIMMER_DEBUG + return 0; + } + + return 1; + } + + if (index == 4 + data_length + 2 && byte == SHD_END_BYTE) + return index; + + return 0; +} + +/*********************************************************************************************\ + * Internal Functions +\*********************************************************************************************/ + +bool ShdSerialSend(const uint8_t data[] = nullptr, uint16_t len = 0) +{ + int retries = 3; + +#ifdef SHELLY_DIMMER_DEBUG + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" Tx Packet:")); + for (uint32_t i = 0; i < len; i++) + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, data[i]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif // SHELLY_DIMMER_DEBUG + + while (retries--) + { + ShdSerial->write(data, len); + ShdSerial->flush(); + + // wait for any response + uint32_t snd_time = millis(); + while (TimePassedSince(snd_time) < SHD_ACK_TIMEOUT) + { + if (ShdSerialInput()) + return true; + + delay(1); + } + + // timeout + AddLog_P(LOG_LEVEL_ERROR, PSTR(SHD_LOGNAME" serial send timeout")); + } + return false; +} + +bool ShdSendCmd(uint8_t cmd, uint8_t *payload, uint8_t len) +{ + uint8_t data[4 + 72 + 3]; // maximum payload for 0x30 packet is 72 + uint16_t chksm; + uint8_t pos = 0; + + data[0] = SHD_START_BYTE; + data[1] = Shd.counter++; + data[2] = cmd; + data[3] = len; + + pos += 4; + + if (payload) + { + memcpy(data + 4, payload, len); + pos += len; + } + + // calculate checksum from id and onwards + chksm = checksum(data + 1, 3 + len); + data[pos++] = chksm >> 8; + data[pos++] = chksm & 0xff; + data[pos++] = SHD_END_BYTE; + + return ShdSerialSend(data, pos); +} + +void ShdSetBrightness() +{ + // Payload format: + // [0-1] Brightness (%) * 10 + + uint8_t payload[SHD_SWITCH_SIZE]; + + payload[0] = Shd.req_brightness & 0xff; + payload[1] = Shd.req_brightness >> 8; + + ShdSendCmd(SHD_SWITCH_CMD, payload, SHD_SWITCH_SIZE); +} + +void ShdSetBrightnessFade() +{ + uint16_t delta = 0; + if (Shd.req_brightness > Shd.dimmer.brightness) + delta = (Shd.req_brightness - Shd.dimmer.brightness) * 0.8; + else + delta = (Shd.dimmer.brightness - Shd.req_brightness) * 0.8; + + // Payload format: + // [0-1] Brightness (%) * 10 + // [2-3] Delta brightness (%) * 8 + // [4-5] 0?? ToDo(jamesturton): Find out what this word is! + + uint8_t payload[SHD_SWITCH_FADE_SIZE]; + + payload[0] = Shd.req_brightness & 0xff; + payload[1] = Shd.req_brightness >> 8; + + payload[2] = delta & 0xff; + payload[3] = delta >> 8; + + payload[4] = 0; + payload[5] = 0; + + ShdSendCmd(SHD_SWITCH_FADE_CMD, payload, SHD_SWITCH_FADE_SIZE); +} + +void ShdSendSettings() +{ + // as specified in STM32 assembly + uint16_t fade_rate = Shd.req_fade_rate; + if (fade_rate > 100) + fade_rate = 100; + + // Payload format: + // [0-1] Brightness (%) * 10 + // [2-3] Leading / trailing edge (1=leading, 2=trailing) ToDo(jamesturton): Are there any other values this can take? + // [4-5] Fade rate (units unknown) ToDo(jamesturton): Find fade rate units + // [6-7] Warm up brightness (%) * 10 + // [8-9] Warm up duration (ms) + + uint8_t payload[SHD_SETTINGS_SIZE]; + + payload[0] = Shd.req_brightness & 0xff; + payload[1] = Shd.req_brightness >> 8; + + payload[2] = Shd.leading_edge & 0xff; + payload[3] = Shd.leading_edge >> 8; + + payload[4] = fade_rate & 0xff; + payload[5] = fade_rate >> 8; + + payload[6] = Shd.warmup_brightness & 0xff; + payload[7] = Shd.warmup_brightness >> 8; + + payload[8] = Shd.warmup_time & 0xff; + payload[9] = Shd.warmup_time >> 8; + + ShdSendCmd(SHD_SETTINGS_CMD, payload, SHD_SETTINGS_SIZE); +} + +void ShdSendWarmup() +{ + // Payload format: + // [0-1] Warm up brightness (%) * 10 + // [2-3] Warm up duration (ms) + + uint8_t payload[SHD_WARMUP_SIZE]; + + payload[0] = Shd.warmup_brightness & 0xff; + payload[1] = Shd.warmup_brightness >> 8; + + payload[2] = Shd.warmup_time & 0xff; + payload[3] = Shd.warmup_time >> 8; + + ShdSendCmd(SHD_WARMUP_CMD, payload, SHD_WARMUP_SIZE); +} + +void ShdSendCalibration(uint16_t brightness, uint16_t func, uint16_t fade_rate) +{ + // Payload format: + // ??? ToDo(jamesturton): Find calibration payload format! + uint8_t payload[SHD_CALIBRATION_SIZE]; + + memset(payload, 0, sizeof(payload)); + + ShdSendCmd(SHD_CALIBRATION1_CMD, payload, SHD_CALIBRATION_SIZE); + ShdSendCmd(SHD_CALIBRATION2_CMD, payload, SHD_CALIBRATION_SIZE); +} + +bool ShdSyncState() +{ +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Serial %p"), ShdSerial); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set Brightness Want %d, Is %d"), Shd.req_brightness, Shd.dimmer.brightness); + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set Fade Want %d, Is %d"), Settings.light_speed, Shd.dimmer.fade_rate); +#endif // SHELLY_DIMMER_DEBUG + + if (!ShdSerial) + return false; + +#ifdef SHELLY_HW_DIMMING + // TODO(jamesturton): HW dimming seems to conflict with SW dimming. See how + // we can disbale SW dimming when using HW dimming. + if (Settings.light_speed != Shd.dimmer.fade_rate) + { + ShdSetBrightnessFade(); + ShdDebugState(); + } + else +#endif // SHELLY_HW_DIMMING + if (Shd.req_brightness != Shd.dimmer.brightness) + { + ShdSetBrightness(); + ShdDebugState(); + } + + return true; +} + +void ShdDebugState() +{ +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" MCU v%d.%d, Brightness:%d(%d%%), Power:%d, Fade:%d"), + Shd.dimmer.version_major, Shd.dimmer.version_minor, + Shd.dimmer.brightness, + changeUIntScale(Shd.dimmer.brightness, 0, 1000, 0, 100), + Shd.dimmer.power, + Shd.dimmer.fade_rate); +#endif // SHELLY_DIMMER_DEBUG +} + +bool ShdPacketProcess(void) +{ + uint8_t pos = 0; + uint8_t id, cmd, len; + bool ret = false; + + if (Shd.buffer[pos++] != SHD_START_BYTE) + return false; + + id = Shd.buffer[pos++]; + cmd = Shd.buffer[pos++]; + len = Shd.buffer[pos++]; + + switch (cmd) + { + case SHD_POLL_CMD: + { + // 1 when returning fade_rate, 0 when returning wattage, brightness? + uint16_t unknown_0 = Shd.buffer[pos + 1] << 8 | + Shd.buffer[pos + 0]; + + uint16_t brightness = Shd.buffer[pos + 3] << 8 | + Shd.buffer[pos + 2]; + + uint32_t wattage_raw = Shd.buffer[pos + 7] << 24 | + Shd.buffer[pos + 6] << 16 | + Shd.buffer[pos + 5] << 8 | + Shd.buffer[pos + 4]; + + uint32_t voltage_raw = Shd.buffer[pos + 11] << 24 | + Shd.buffer[pos + 10] << 16 | + Shd.buffer[pos + 9] << 8 | + Shd.buffer[pos + 8]; + + uint32_t current_raw = Shd.buffer[pos + 15] << 24 | + Shd.buffer[pos + 14] << 16 | + Shd.buffer[pos + 13] << 8 | + Shd.buffer[pos + 12]; + + uint32_t fade_rate = Shd.buffer[pos + 16]; + + float wattage = 0; + if (wattage_raw > 0) + wattage = 880373 / (float)wattage_raw; + + float voltage = 0; + if (voltage_raw > 0) + voltage = 347800 / (float)voltage_raw; + + float current = 0; + if (current_raw > 0) + current = 1448 / (float)current_raw; + +#ifdef USE_ENERGY_SENSOR + Energy.active_power[0] = wattage; + Energy.voltage[0] = voltage; + Energy.current[0] = current; + Energy.apparent_power[0] = voltage * current; + if ((voltage * current) > wattage) + Energy.reactive_power[0] = sqrt((voltage * current) * (voltage * current) - wattage * wattage); + else + Energy.reactive_power[0] = 0; + if (wattage > (voltage * current)) + Energy.power_factor[0] = 1; + else if ((voltage * current) == 0) + Energy.power_factor[0] = 0; + else + Energy.power_factor[0] = wattage / (voltage * current); + + if (Shd.last_power_check > 10 && Energy.active_power[0] > 0) + { + float kWhused = (float)Energy.active_power[0] * (Rtc.utc_time - Shd.last_power_check) / 36; +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Adding %i mWh to todays usage from %lu to %lu"), (int)(kWhused * 10), Shd.last_power_check, Rtc.utc_time); +#endif // USE_ENERGY_SENSOR + Energy.kWhtoday += kWhused; + EnergyUpdateToday(); + } + Shd.last_power_check = Rtc.utc_time; +#endif // USE_ENERGY_SENSOR + +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" ShdPacketProcess: Brightness:%d Power:%lu Voltage:%lu Current:%lu Fade:%d"), brightness, wattage_raw, voltage_raw, current_raw, fade_rate); +#endif // SHELLY_DIMMER_DEBUG + Shd.dimmer.brightness = brightness; + Shd.dimmer.power = wattage_raw; + Shd.dimmer.fade_rate = fade_rate; + } + break; + case SHD_VERSION_CMD: + { +#ifdef SHELLY_FW_UPGRADE + ret = Shd.buffer[pos] == SHD_FIRMWARE_MINOR_VERSION && + Shd.buffer[pos + 1] == SHD_FIRMWARE_MAJOR_VERSION; +#endif // SHELLY_FW_UPGRADE + + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" ShdPacketProcess: Version: %u.%u"), Shd.buffer[pos + 1], Shd.buffer[pos]); + Shd.dimmer.version_minor = Shd.buffer[pos]; + Shd.dimmer.version_major = Shd.buffer[pos + 1]; + } + break; + case SHD_SWITCH_CMD: + case SHD_SWITCH_FADE_CMD: + case SHD_SETTINGS_CMD: + case SHD_WARMUP_CMD: + case SHD_CALIBRATION1_CMD: + case SHD_CALIBRATION2_CMD: + { + ret = (Shd.buffer[pos] == 0x01); + } + break; + } + + return ret; +} + +void ShdResetToAppMode() +{ + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Request co-processor reset in app mode")); + + pinMode(Pin(GPIO_SHELLY_DIMMER_RST_INV), OUTPUT); + digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), LOW); + + pinMode(Pin(GPIO_SHELLY_DIMMER_BOOT0), OUTPUT); + digitalWrite(Pin(GPIO_SHELLY_DIMMER_BOOT0), LOW); + + delay(50); + + // clear in the receive buffer + while (Serial.available()) + Serial.read(); + + digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), HIGH); // pull out of reset + delay(50); // wait 50ms fot the co-processor to come online +} + +#ifdef SHELLY_FW_UPGRADE + +void ShdResetToDFUMode() +{ + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Request co-processor reset in dfu mode")); + + pinMode(Pin(GPIO_SHELLY_DIMMER_RST_INV), OUTPUT); + digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), LOW); + + pinMode(Pin(GPIO_SHELLY_DIMMER_BOOT0), OUTPUT); + digitalWrite(Pin(GPIO_SHELLY_DIMMER_BOOT0), HIGH); + + delay(50); + + // clear in the receive buffer + while (Serial.available()) + Serial.read(); + + digitalWrite(Pin(GPIO_SHELLY_DIMMER_RST_INV), HIGH); // pull out of reset + delay(50); // wait 50ms fot the co-processor to come online +} + +bool ShdUpdateFirmware(const uint8_t data[], unsigned int size) +{ + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Update firmware")); + bool ret = true; + stm32_t *stm = stm32_init(&Serial, STREAM_SERIAL, 1); + if (stm) + { + off_t offset = 0; + uint8_t buffer[256]; + unsigned int len; + const uint8_t *p_st = data; + uint32_t addr, start, end; + stm32_err_t s_err; + + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" STM32 erase memory")); + + stm32_erase_memory(stm, 0, STM32_MASS_ERASE); + + addr = stm->dev->fl_start; + end = addr + size; + while(addr < end && offset < size) + { + uint32_t left = end - addr; + len = sizeof(buffer) > left ? left : sizeof(buffer); + len = len > size - offset ? size - offset : len; + + if (len == 0) + { + break; + } + + memcpy(buffer, p_st, len); + p_st += len; + + s_err = stm32_write_memory(stm, addr, buffer, len); + if (s_err != STM32_ERR_OK) + { + ret = false; + break; + } + + addr += len; + offset += len; + } + stm32_close(stm); + } + return ret; +} + +#endif // SHELLY_FW_UPGRADE + +void ShdPoll(void) +{ +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Poll")); +#endif // SHELLY_DIMMER_DEBUG + + if (!ShdSerial) + return; + + ShdSendCmd(SHD_POLL_CMD, 0, 0); + ShdSyncState(); +} + +bool ShdSendVersion(void) +{ +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Sending version command")); +#endif // SHELLY_DIMMER_DEBUG + return ShdSendCmd(SHD_VERSION_CMD, 0, 0); +} + +void ShdGetSettings(void) +{ + char parameters[32]; + Shd.req_brightness = 0; + Shd.leading_edge = 0; + Shd.req_fade_rate = 0; + Shd.warmup_brightness = 0; + Shd.warmup_time = 0; + if (strstr(SettingsText(SET_SHD_PARAM), ",") != nullptr) + { +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Loading params: %s"), SettingsText(SET_SHD_PARAM)); +#endif // SHELLY_DIMMER_DEBUG + Shd.req_brightness = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 1)); + Shd.leading_edge = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 2)); + Shd.req_fade_rate = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 3)); + Shd.warmup_brightness = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 4)); + Shd.warmup_time = atoi(subStr(parameters, SettingsText(SET_SHD_PARAM), ",", 5)); + } +} + +void ShdSaveSettings(void) +{ + char parameters[32]; + snprintf_P(parameters, sizeof(parameters), PSTR("%d,%d,%d,%d,%d"), + Shd.req_brightness, Shd.leading_edge, Shd.req_fade_rate, Shd.warmup_brightness, Shd.warmup_time); + SettingsUpdateText(SET_SHD_PARAM, parameters); +} + +void ShdInit(void) +{ + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Shelly Dimmer Driver v%u.%u"), SHD_DRIVER_MAJOR_VERSION, SHD_DRIVER_MINOR_VERSION); +#ifdef SHELLY_DIMMER_DEBUG + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Starting Tx %d Rx %d"), Pin(GPIO_TXD), Pin(GPIO_RXD)); +#endif // SHELLY_DIMMER_DEBUG + + Shd.buffer = (uint8_t *)malloc(SHD_BUFFER_SIZE); + if (Shd.buffer != nullptr) + { + ShdSerial = new TasmotaSerial(Pin(GPIO_RXD), Pin(GPIO_TXD), 2, 0, SHD_BUFFER_SIZE); + if (ShdSerial->begin(115200)) + { + if (ShdSerial->hardwareSerial()) + ClaimSerial(); + + ShdSerial->flush(); + + ShdResetToAppMode(); + bool got_version = ShdSendVersion(); + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Shelly Dimmer Co-processor Version v%u.%u"), Shd.dimmer.version_major, Shd.dimmer.version_minor); +#ifdef SHELLY_FW_UPGRADE + if (!got_version || (got_version && + (Shd.dimmer.version_minor != SHD_FIRMWARE_MINOR_VERSION || + Shd.dimmer.version_major != SHD_FIRMWARE_MAJOR_VERSION))) + { + AddLog_P(LOG_LEVEL_INFO, PSTR(SHD_LOGNAME" Updating firmware from v%u.%u to v%u.%u with %u bytes"), Shd.dimmer.version_major, Shd.dimmer.version_minor, SHD_FIRMWARE_MAJOR_VERSION, SHD_FIRMWARE_MINOR_VERSION, sizeof(stm_firmware)); + + Serial.end(); + Serial.begin(115200, SERIAL_8E1); + ShdResetToDFUMode(); + ShdUpdateFirmware(stm_firmware, sizeof(stm_firmware)); + Serial.end(); + + ShdResetToAppMode(); + Serial.begin(115200, SERIAL_8N1); + + ShdSendVersion(); + } +#endif // SHELLY_FW_UPGRADE + ShdGetSettings(); + ShdSaveSettings(); + + ShdSendSettings(); + ShdSyncState(); + } + } +} + +bool ShdSerialInput(void) +{ + while (ShdSerial->available()) + { + yield(); + uint8_t serial_in_byte = ShdSerial->read(); + Shd.buffer[Shd.byte_counter] = serial_in_byte; + + int check = check_byte(); + + if (check > 1) + { + // finished +#ifdef SHELLY_DIMMER_DEBUG + Shd.byte_counter++; + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" RX Packet:")); + for (uint32_t i = 0; i < Shd.byte_counter; i++) + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, Shd.buffer[i]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif // SHELLY_DIMMER_DEBUG + Shd.byte_counter = 0; + + ShdPacketProcess(); + + return true; + } + else if (check == 0) + { + // wrong data + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Byte %i of received data frame is invalid"), Shd.byte_counter); + Shd.byte_counter++; + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" RX Packet:")); + for (uint32_t i = 0; i < Shd.byte_counter; i++) + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s %02x"), TasmotaGlobal.log_data, Shd.buffer[i]); + AddLog(LOG_LEVEL_DEBUG_MORE); + Shd.byte_counter = 0; + } + else + { + Shd.byte_counter++; + } + + } + return false; +} + +/*********************************************************************************************\ + * API Functions +\*********************************************************************************************/ + +bool ShdModuleSelected(void) { + if (PinUsed(GPIO_SHELLY_DIMMER_BOOT0) && PinUsed(GPIO_SHELLY_DIMMER_RST_INV)) { + TasmotaGlobal.devices_present++; + TasmotaGlobal.light_type = LT_SERIAL1; + + Shd.present = true; + } + return Shd.present; +} + +bool ShdSetChannels(void) +{ +#ifdef SHELLY_DIMMER_DEBUG + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR(SHD_LOGNAME" SetChannels: \"")); + for (int i = 0; i < XdrvMailbox.data_len; i++) + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s%02x"), TasmotaGlobal.log_data, ((uint8_t *)XdrvMailbox.data)[i]); + snprintf_P(TasmotaGlobal.log_data, sizeof(TasmotaGlobal.log_data), PSTR("%s\""), TasmotaGlobal.log_data); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif // SHELLY_DIMMER_DEBUG + + uint16_t brightness = ((uint32_t *)XdrvMailbox.data)[0]; + // Use dimmer_hw_min and dimmer_hw_max to constrain our values if the light should be on + if (brightness > 0) + brightness = changeUIntScale(brightness, 0, 255, Settings.dimmer_hw_min * 10, Settings.dimmer_hw_max * 10); + Shd.req_brightness = brightness; + + ShdDebugState(); + + return ShdSyncState(); +} + +bool ShdSetPower(void) +{ + AddLog_P(LOG_LEVEL_INFO, PSTR("EXS: Set Power, Power 0x%02x"), XdrvMailbox.index); + + Shd.req_on = (bool)XdrvMailbox.index; + return ShdSyncState(); +} + +/*********************************************************************************************\ + * Commands +\*********************************************************************************************/ + +#ifdef SHELLY_CMDS + +const char kShdCommands[] PROGMEM = D_PRFX_SHD "|" // Prefix + D_CMND_LEADINGEDGE "|" D_CMND_WARMUPBRIGHTNESS "|" D_CMND_WARMUPTIME; + +void (* const ShdCommand[])(void) PROGMEM = { + &CmndShdLeadingEdge, &CmndShdWarmupBrightness, &CmndShdWarmupTime }; + +void CmndShdLeadingEdge(void) +{ + if (XdrvMailbox.payload == 0 || XdrvMailbox.payload == 1) + { + Shd.leading_edge = 2 - XdrvMailbox.payload; + Settings.shd_leading_edge = XdrvMailbox.payload; + if (Shd.leading_edge == 1) + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set to trailing edge")); + else + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set to leading edge")); + ShdSendSettings(); + } + ShdSaveSettings(); + ResponseCmndNumber(Settings.shd_leading_edge); +} + +void CmndShdWarmupBrightness(void) +{ + if ((10 <= XdrvMailbox.payload) && (XdrvMailbox.payload <= 100)) + { + Shd.warmup_brightness = XdrvMailbox.payload * 10; + Settings.shd_warmup_brightness = XdrvMailbox.payload; + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set warmup brightness to %d%%"), XdrvMailbox.payload); + ShdSendSettings(); + } + ShdSaveSettings(); + ResponseCmndNumber(Settings.shd_warmup_brightness); +} + +void CmndShdWarmupTime(void) +{ + if ((20 <= XdrvMailbox.payload) && (XdrvMailbox.payload <= 200)) + { + Shd.warmup_time = XdrvMailbox.payload; + Settings.shd_warmup_time = XdrvMailbox.payload; + AddLog_P(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME" Set warmup time to %dms"), XdrvMailbox.payload); + ShdSendSettings(); + } + ShdSaveSettings(); + ResponseCmndNumber(Settings.shd_warmup_time); +} + +#endif // SHELLY_CMDS + +/*********************************************************************************************\ + * Energy Interface +\*********************************************************************************************/ + +#ifdef USE_ENERGY_SENSOR +bool Xnrg31(uint8_t function) +{ + bool result = false; + + if (function == FUNC_PRE_INIT) + { +#ifndef SHELLY_VOLTAGE_MON + Energy.current_available = false; + Energy.voltage_available = false; +#endif // SHELLY_VOLTAGE_MON + TasmotaGlobal.energy_driver = XNRG_31; + } + return result; +} +#endif // USE_ENERGY_SENSOR + +/*********************************************************************************************\ + * Driver Interface +\*********************************************************************************************/ + +bool Xdrv45(uint8_t function) { + bool result = false; + + if (FUNC_MODULE_INIT == function) { + result = ShdModuleSelected(); + } else if (Shd.present) { + switch (function) { + case FUNC_EVERY_SECOND: + ShdPoll(); + break; + case FUNC_INIT: + ShdInit(); + break; + case FUNC_SET_DEVICE_POWER: + result = ShdSetPower(); + break; + case FUNC_SET_CHANNELS: + result = ShdSetChannels(); + break; +#ifdef SHELLY_CMDS + case FUNC_COMMAND: + result = DecodeCommand(kShdCommands, ShdCommand); + break; +#endif // SHELLY_CMDS + } + } + + return result; +} + +#endif // USE_SHELLY_DIMMER +#endif // USE_LIGHT \ No newline at end of file diff --git a/tasmota/xnrg_interface.ino b/tasmota/xnrg_interface.ino index 5d59dc4d5..c227782b7 100644 --- a/tasmota/xnrg_interface.ino +++ b/tasmota/xnrg_interface.ino @@ -145,7 +145,7 @@ bool (* const xnrg_func_ptr[])(uint8_t) = { // Energy driver Function Pointers &Xnrg30, #endif -#ifdef XNRG_31 +#ifdef XNRG_31 // Reserved for use by xdrv_45_shelly_dimmer.ino &Xnrg31, #endif diff --git a/tools/decode-status.py b/tools/decode-status.py index 1c7a3ba7f..5d5580d5c 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -170,7 +170,8 @@ a_setoption = [[ ],[ "Detach Switches from Relays and enable MQTT action state for all the SwitchModes", "Enable ESP32 MI32 BLE", - "","", + "Disable auto-query of zigbee lights and devices", + "", "","","","", "","","","", "","","","", @@ -238,7 +239,7 @@ a_features = [[ "USE_EZOORP","USE_EZORTD","USE_EZOHUM","USE_EZOEC", "USE_EZOCO2","USE_EZOO2","USE_EZOPRS","USE_EZOFLO", "USE_EZODO","USE_EZORGB","USE_EZOPMP","USE_AS608", - "","","","", + "USE_SHELLY_DIMMER","","","", "","","","", "","","","", "","","","", @@ -270,7 +271,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20201113 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20201114 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From 5e044dbcc6f5caa5ee0a56f899feb60582b7ca5a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 14 Nov 2020 17:20:09 +0100 Subject: [PATCH 113/293] Move lib to div --- lib/{lib_basic => lib_div}/stm32flash-1.0/dev_table.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h | 0 .../stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h | 0 lib/{lib_basic => lib_div}/stm32flash-1.0/stm32_flash_debug.h | 0 lib/{lib_basic => lib_div}/stm32flash-1.0/stm32flash.cpp | 0 lib/{lib_basic => lib_div}/stm32flash-1.0/stm32flash.h | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename lib/{lib_basic => lib_div}/stm32flash-1.0/dev_table.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/stm32_flash_debug.h (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/stm32flash.cpp (100%) rename lib/{lib_basic => lib_div}/stm32flash-1.0/stm32flash.h (100%) diff --git a/lib/lib_basic/stm32flash-1.0/dev_table.h b/lib/lib_div/stm32flash-1.0/dev_table.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/dev_table.h rename to lib/lib_div/stm32flash-1.0/dev_table.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v50.1.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v50.2.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.0.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.1.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.2.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.3.h diff --git a/lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h b/lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h rename to lib/lib_div/stm32flash-1.0/fw/shelly/dimmer/stm_v51.4.h diff --git a/lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h b/lib/lib_div/stm32flash-1.0/stm32_flash_debug.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/stm32_flash_debug.h rename to lib/lib_div/stm32flash-1.0/stm32_flash_debug.h diff --git a/lib/lib_basic/stm32flash-1.0/stm32flash.cpp b/lib/lib_div/stm32flash-1.0/stm32flash.cpp similarity index 100% rename from lib/lib_basic/stm32flash-1.0/stm32flash.cpp rename to lib/lib_div/stm32flash-1.0/stm32flash.cpp diff --git a/lib/lib_basic/stm32flash-1.0/stm32flash.h b/lib/lib_div/stm32flash-1.0/stm32flash.h similarity index 100% rename from lib/lib_basic/stm32flash-1.0/stm32flash.h rename to lib/lib_div/stm32flash-1.0/stm32flash.h From 3e0b1c7d6ef2f1756911ef11bd2ee596d5499bb3 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 14 Nov 2020 19:19:45 +0100 Subject: [PATCH 114/293] Fix USE_4K_RSA define location --- platformio.ini | 2 ++ tasmota/my_user_config.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index ebd3179dd..b0b233d23 100644 --- a/platformio.ini +++ b/platformio.ini @@ -132,6 +132,8 @@ build_flags = ${esp_defaults.build_flags} -DPSTR_ALIGN=1 ; restrict to minimal mime-types -DMIMETYPE_MINIMAL + ; uncomment the following to enable TLS with 4096 RSA certificates + ;-DUSE_4K_RSA [irremoteesp_full] build_flags = -DUSE_IR_REMOTE_FULL diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index b35075f8a..5156edd63 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -398,7 +398,7 @@ // #define USE_MQTT_AWS_IOT // [Deprecated] Enable MQTT for AWS IoT - requires a private key (+11.9k code, +0.4k mem) // Note: you need to generate a private key + certificate per device and update 'tasmota/tasmota_aws_iot.cpp' // Full documentation here: https://github.com/arendst/Tasmota/wiki/AWS-IoT -// #define USE_4K_RSA // Support 4096 bits certificates, instead of 2048 +// for USE_4K_RSA (support for 4096 bits certificates, instead of 2048), you need to uncommend `-DUSE_4K_RSA` in `build_flags` from `platform.ini` or `platform_override.ini` // -- Telegram Protocol --------------------------- //#define USE_TELEGRAM // Support for Telegram protocol (+49k code, +7.0k mem and +4.8k additional during connection handshake) From e6acebf638decf91d0811b2d8f23f04f23eaafa2 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Sat, 14 Nov 2020 19:31:38 +0100 Subject: [PATCH 115/293] Fix switchmode 15 publish old switch state The forced MqttPublishSensor() was send an immediate SENSOR message with the switch's last_state. So the last_state must be updated before the SENSOR message is sent. --- tasmota/support_switch.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index ad68ba5bf..84755b54d 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -404,6 +404,7 @@ void SwitchHandler(uint32_t mode) { } break; case PUSH_IGNORE: + Switch.last_state[i] = button; // Update switch state before publishing MqttPublishSensor(); break; } From 8634a7a3879591035a75b0082028aa2dbe083daf Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 14 Nov 2020 19:31:50 +0100 Subject: [PATCH 116/293] IRremoteESP8266 library from v2.7.11 to v2.7.12 --- CHANGELOG.md | 1 + .../docs/doxygen/html/annotated.html | 151 - .../html/classIRAirwellAc__coll__graph.md5 | 1 - .../html/classIRAmcorAc__coll__graph.md5 | 1 - .../html/classIRArgoAC__coll__graph.md5 | 1 - .../html/classIRCarrierAc64__coll__graph.md5 | 1 - .../html/classIRCoronaAc__coll__graph.md5 | 1 - .../html/classIRDaikin128-members.html | 132 - .../html/classIRDaikin128__coll__graph.map | 4 - .../html/classIRDaikin128__coll__graph.md5 | 1 - .../html/classIRDaikin128__coll__graph.png | Bin 3291 -> 0 bytes .../html/classIRDaikin152__coll__graph.map | 4 - .../html/classIRDaikin152__coll__graph.md5 | 1 - .../html/classIRDaikin152__coll__graph.png | Bin 3202 -> 0 bytes .../html/classIRDaikin160__coll__graph.map | 4 - .../html/classIRDaikin160__coll__graph.md5 | 1 - .../html/classIRDaikin160__coll__graph.png | Bin 3302 -> 0 bytes .../html/classIRDaikin176__coll__graph.map | 4 - .../html/classIRDaikin176__coll__graph.md5 | 1 - .../html/classIRDaikin176__coll__graph.png | Bin 3228 -> 0 bytes .../html/classIRDaikin216__coll__graph.map | 4 - .../html/classIRDaikin216__coll__graph.md5 | 1 - .../html/classIRDaikin216__coll__graph.png | Bin 3277 -> 0 bytes .../html/classIRDaikin2__coll__graph.map | 4 - .../html/classIRDaikin2__coll__graph.md5 | 1 - .../html/classIRDaikin2__coll__graph.png | Bin 3012 -> 0 bytes .../html/classIRDaikin64__coll__graph.map | 4 - .../html/classIRDaikin64__coll__graph.md5 | 1 - .../html/classIRDaikin64__coll__graph.png | Bin 3190 -> 0 bytes .../html/classIRDaikinESP__coll__graph.map | 4 - .../html/classIRDaikinESP__coll__graph.md5 | 1 - .../html/classIRDaikinESP__coll__graph.png | Bin 3212 -> 0 bytes .../html/classIRDelonghiAc__coll__graph.md5 | 1 - .../html/classIRElectraAc__coll__graph.map | 4 - .../html/classIRElectraAc__coll__graph.md5 | 1 - .../html/classIRElectraAc__coll__graph.png | Bin 3217 -> 0 bytes .../classIRGoodweatherAc__coll__graph.map | 4 - .../classIRGoodweatherAc__coll__graph.md5 | 1 - .../classIRGoodweatherAc__coll__graph.png | Bin 4102 -> 0 bytes .../html/classIRGreeAC__coll__graph.md5 | 1 - .../html/classIRHaierACYRW02__coll__graph.md5 | 1 - .../html/classIRHaierAC__coll__graph.md5 | 1 - .../html/classIRHitachiAc1__coll__graph.map | 4 - .../html/classIRHitachiAc1__coll__graph.md5 | 1 - .../html/classIRHitachiAc1__coll__graph.png | Bin 3046 -> 0 bytes .../html/classIRHitachiAc344__coll__graph.map | 5 - .../html/classIRHitachiAc344__coll__graph.md5 | 1 - .../html/classIRHitachiAc344__coll__graph.png | Bin 5244 -> 0 bytes .../html/classIRHitachiAc424__coll__graph.map | 4 - .../html/classIRHitachiAc424__coll__graph.md5 | 1 - .../html/classIRHitachiAc424__coll__graph.png | Bin 3350 -> 0 bytes .../html/classIRHitachiAc__coll__graph.map | 4 - .../html/classIRHitachiAc__coll__graph.md5 | 1 - .../html/classIRHitachiAc__coll__graph.png | Bin 3005 -> 0 bytes .../html/classIRKelvinatorAC__coll__graph.map | 4 - .../html/classIRKelvinatorAC__coll__graph.md5 | 1 - .../html/classIRKelvinatorAC__coll__graph.png | Bin 3684 -> 0 bytes .../doxygen/html/classIRLgAc__coll__graph.md5 | 1 - .../doxygen/html/classIRLgAc__coll__graph.png | Bin 2873 -> 0 bytes .../html/classIRMideaAC__coll__graph.md5 | 1 - .../html/classIRTechnibelAc__coll__graph.md5 | 1 - .../html/classIRTranscoldAc__coll__graph.md5 | 1 - .../html/classIRVoltas__coll__graph.md5 | 1 - .../docs/doxygen/html/hierarchy.html | 152 - .../docs/doxygen/html/inherit_graph_0.md5 | 1 - .../docs/doxygen/html/inherit_graph_1.md5 | 1 - .../docs/doxygen/html/inherit_graph_10.md5 | 1 - .../docs/doxygen/html/inherit_graph_2.md5 | 1 - .../docs/doxygen/html/inherit_graph_3.md5 | 1 - .../docs/doxygen/html/inherit_graph_4.md5 | 1 - .../docs/doxygen/html/inherit_graph_5.md5 | 1 - .../docs/doxygen/html/inherit_graph_54.md5 | 1 - .../docs/doxygen/html/inherit_graph_58.md5 | 1 - .../docs/doxygen/html/inherit_graph_65.md5 | 1 - .../docs/doxygen/html/inherit_graph_68.md5 | 1 - .../docs/doxygen/html/inherit_graph_7.md5 | 1 - .../docs/doxygen/html/inherit_graph_8.md5 | 1 - .../docs/doxygen/html/inherit_graph_9.md5 | 1 - .../docs/doxygen/html/ir__LG_8cpp.html | 557 --- .../doxygen/html/ir__Midea_8h_source.html | 302 -- .../docs/doxygen/html/search/all_0.js | 76 - .../docs/doxygen/html/search/all_1.js | 26 - .../docs/doxygen/html/search/all_10.js | 17 - .../docs/doxygen/html/search/all_11.js | 4 - .../docs/doxygen/html/search/all_12.js | 30 - .../docs/doxygen/html/search/all_17.js | 9 - .../docs/doxygen/html/search/all_1a.js | 6 - .../docs/doxygen/html/search/all_1b.js | 4 - .../docs/doxygen/html/search/all_2.js | 15 - .../docs/doxygen/html/search/all_4.js | 122 - .../docs/doxygen/html/search/all_5.js | 35 - .../docs/doxygen/html/search/all_6.js | 18 - .../docs/doxygen/html/search/all_8.js | 30 - .../docs/doxygen/html/search/all_9.js | 192 - .../docs/doxygen/html/search/all_b.js | 2640 ------------- .../docs/doxygen/html/search/all_c.js | 17 - .../docs/doxygen/html/search/all_d.js | 42 - .../docs/doxygen/html/search/classes_0.js | 6 - .../docs/doxygen/html/search/classes_1.js | 6 - .../docs/doxygen/html/search/classes_2.js | 5 - .../docs/doxygen/html/search/classes_3.js | 4 - .../docs/doxygen/html/search/classes_4.js | 5 - .../docs/doxygen/html/search/classes_5.js | 56 - .../docs/doxygen/html/search/classes_6.js | 6 - .../docs/doxygen/html/search/classes_7.js | 4 - .../docs/doxygen/html/search/classes_8.js | 4 - .../docs/doxygen/html/search/classes_9.js | 4 - .../docs/doxygen/html/search/enums_5.js | 4 - .../docs/doxygen/html/search/enums_7.js | 5 - .../docs/doxygen/html/search/enumvalues_0.js | 13 - .../docs/doxygen/html/search/enumvalues_3.js | 5 - .../docs/doxygen/html/search/enumvalues_d.js | 7 - .../docs/doxygen/html/search/files_0.js | 7 - .../docs/doxygen/html/search/files_1.js | 8 - .../docs/doxygen/html/search/files_2.js | 4 - .../docs/doxygen/html/search/files_3.js | 113 - .../docs/doxygen/html/search/files_4.js | 4 - .../docs/doxygen/html/search/files_5.js | 4 - .../docs/doxygen/html/search/functions_0.js | 19 - .../docs/doxygen/html/search/functions_1.js | 15 - .../docs/doxygen/html/search/functions_15.js | 4 - .../docs/doxygen/html/search/functions_17.js | 4 - .../docs/doxygen/html/search/functions_4.js | 100 - .../docs/doxygen/html/search/functions_9.js | 71 - .../docs/doxygen/html/search/functions_a.js | 4 - .../docs/doxygen/html/search/functions_b.js | 7 - .../docs/doxygen/html/search/functions_d.js | 4 - .../docs/doxygen/html/search/functions_f.js | 4 - .../docs/doxygen/html/search/namespaces_0.js | 5 - .../docs/doxygen/html/search/namespaces_1.js | 4 - .../docs/doxygen/html/search/pages_0.js | 4 - .../docs/doxygen/html/search/pages_1.js | 5 - .../docs/doxygen/html/search/pages_2.js | 4 - .../docs/doxygen/html/search/variables_0.js | 60 - .../docs/doxygen/html/search/variables_1.js | 4 - .../docs/doxygen/html/search/variables_10.js | 13 - .../docs/doxygen/html/search/variables_11.js | 21 - .../docs/doxygen/html/search/variables_12.js | 14 - .../docs/doxygen/html/search/variables_13.js | 9 - .../docs/doxygen/html/search/variables_14.js | 5 - .../docs/doxygen/html/search/variables_15.js | 5 - .../docs/doxygen/html/search/variables_16.js | 4 - .../docs/doxygen/html/search/variables_2.js | 10 - .../docs/doxygen/html/search/variables_3.js | 13 - .../docs/doxygen/html/search/variables_4.js | 11 - .../docs/doxygen/html/search/variables_5.js | 4 - .../docs/doxygen/html/search/variables_6.js | 9 - .../docs/doxygen/html/search/variables_7.js | 7 - .../docs/doxygen/html/search/variables_9.js | 2606 ------------- .../docs/doxygen/html/search/variables_a.js | 8 - .../docs/doxygen/html/search/variables_b.js | 9 - .../docs/doxygen/html/search/variables_c.js | 5 - .../docs/doxygen/html/search/variables_d.js | 22 - .../docs/doxygen/html/search/variables_e.js | 12 - .../docs/doxygen/html/search/variables_f.js | 4 - .../html/unionCoronaProtocol__coll__graph.map | 4 - .../html/unionCoronaProtocol__coll__graph.md5 | 1 - .../.github/CONTRIBUTING.md | 0 .../.github/Contributors.md | 0 .../.github/issue_template.md | 0 .../.gitignore | 0 .../.gitmodules | 0 .../.style.yapf | 0 .../.travis.yml | 0 .../CPPLINT.cfg | 0 .../Doxyfile | 0 .../LICENSE.txt | 0 .../README.md | 4 +- .../IRremoteESP8266-2.7.12/README_de.md | 80 + .../README_fr.md | 4 +- .../ReleaseNotes.md | 31 + .../SupportedProtocols.md | 15 +- .../docs/README.md | 0 .../IRremoteESP8266-2.7.12/docs/README_de.md | 59 + .../docs/README_fr.md | 0 .../docs/_config.yml | 0 .../docs/doxygen/html/IRac_8cpp.html | 0 .../docs/doxygen/html/IRac_8h.html | 0 .../docs/doxygen/html/IRac_8h_source.html | 163 +- .../docs/doxygen/html/IRrecv_8cpp.html | 0 .../docs/doxygen/html/IRrecv_8h.html | 0 .../docs/doxygen/html/IRrecv_8h_source.html | 452 +-- .../docs/doxygen/html/IRremoteESP8266_8h.html | 109 +- .../html/IRremoteESP8266_8h_source.html | 1891 ++++----- .../docs/doxygen/html/IRsend_8cpp.html | 0 .../docs/doxygen/html/IRsend_8h.html | 25 + .../docs/doxygen/html/IRsend_8h_source.html | 1469 +++---- .../docs/doxygen/html/IRtext_8cpp.html | 57 + .../docs/doxygen/html/IRtext_8h.html | 57 + .../docs/doxygen/html/IRtext_8h_source.html | 198 +- .../docs/doxygen/html/IRtimer_8cpp.html | 0 .../docs/doxygen/html/IRtimer_8h.html | 0 .../docs/doxygen/html/IRtimer_8h_source.html | 0 .../docs/doxygen/html/IRutils_8cpp.html | 8 +- .../docs/doxygen/html/IRutils_8h.html | 8 +- .../docs/doxygen/html/IRutils_8h_source.html | 72 +- .../docs/doxygen/html/README_8md.html | 0 .../docs/doxygen/html/annotated.html | 166 + .../docs/doxygen/html/bc_s.png | Bin .../docs/doxygen/html/bdwn.png | Bin .../html/classIRAirwellAc-members.html | 0 .../docs/doxygen/html/classIRAirwellAc.html | 24 +- .../html/classIRAirwellAc__coll__graph.map | 2 +- .../html/classIRAirwellAc__coll__graph.md5 | 1 + .../html/classIRAirwellAc__coll__graph.png | Bin .../doxygen/html/classIRAmcorAc-members.html | 0 .../docs/doxygen/html/classIRAmcorAc.html | 24 +- .../html/classIRAmcorAc__coll__graph.map | 2 +- .../html/classIRAmcorAc__coll__graph.md5 | 1 + .../html/classIRAmcorAc__coll__graph.png | Bin .../doxygen/html/classIRArgoAC-members.html | 0 .../docs/doxygen/html/classIRArgoAC.html | 26 +- .../html/classIRArgoAC__coll__graph.map | 2 +- .../html/classIRArgoAC__coll__graph.md5 | 1 + .../html/classIRArgoAC__coll__graph.png | Bin .../html/classIRCarrierAc64-members.html | 0 .../docs/doxygen/html/classIRCarrierAc64.html | 10 +- .../html/classIRCarrierAc64__coll__graph.map | 2 +- .../html/classIRCarrierAc64__coll__graph.md5 | 1 + .../html/classIRCarrierAc64__coll__graph.png | Bin .../doxygen/html/classIRCoolixAC-members.html | 0 .../docs/doxygen/html/classIRCoolixAC.html | 8 +- .../html/classIRCoolixAC__coll__graph.map | 0 .../html/classIRCoolixAC__coll__graph.md5 | 0 .../html/classIRCoolixAC__coll__graph.png | Bin .../doxygen/html/classIRCoronaAc-members.html | 0 .../docs/doxygen/html/classIRCoronaAc.html | 4 +- .../html/classIRCoronaAc__coll__graph.map | 4 +- .../html/classIRCoronaAc__coll__graph.md5 | 1 + .../html/classIRCoronaAc__coll__graph.png | Bin .../html/classIRDaikin128-members.html | 128 + .../docs/doxygen/html/classIRDaikin128.html | 436 +-- .../html/classIRDaikin128__coll__graph.map | 5 + .../html/classIRDaikin128__coll__graph.md5 | 1 + .../html/classIRDaikin128__coll__graph.png | Bin 0 -> 6783 bytes .../html/classIRDaikin152-members.html | 48 +- .../docs/doxygen/html/classIRDaikin152.html | 253 +- .../html/classIRDaikin152__coll__graph.map | 5 + .../html/classIRDaikin152__coll__graph.md5 | 1 + .../html/classIRDaikin152__coll__graph.png | Bin 0 -> 6616 bytes .../html/classIRDaikin160-members.html | 40 +- .../docs/doxygen/html/classIRDaikin160.html | 195 +- .../html/classIRDaikin160__coll__graph.map | 5 + .../html/classIRDaikin160__coll__graph.md5 | 1 + .../html/classIRDaikin160__coll__graph.png | Bin 0 -> 6831 bytes .../html/classIRDaikin176-members.html | 42 +- .../docs/doxygen/html/classIRDaikin176.html | 208 +- .../html/classIRDaikin176__coll__graph.map | 5 + .../html/classIRDaikin176__coll__graph.md5 | 1 + .../html/classIRDaikin176__coll__graph.png | Bin 0 -> 6624 bytes .../doxygen/html/classIRDaikin2-members.html | 98 +- .../docs/doxygen/html/classIRDaikin2.html | 559 +-- .../html/classIRDaikin216-members.html | 44 +- .../docs/doxygen/html/classIRDaikin216.html | 229 +- .../html/classIRDaikin216__coll__graph.map | 5 + .../html/classIRDaikin216__coll__graph.md5 | 1 + .../html/classIRDaikin216__coll__graph.png | Bin 0 -> 6721 bytes .../html/classIRDaikin2__coll__graph.map | 5 + .../html/classIRDaikin2__coll__graph.md5 | 1 + .../html/classIRDaikin2__coll__graph.png | Bin 0 -> 6058 bytes .../doxygen/html/classIRDaikin64-members.html | 52 +- .../docs/doxygen/html/classIRDaikin64.html | 301 +- .../html/classIRDaikin64__coll__graph.map | 5 + .../html/classIRDaikin64__coll__graph.md5 | 1 + .../html/classIRDaikin64__coll__graph.png | Bin 0 -> 6496 bytes .../html/classIRDaikinESP-members.html | 72 +- .../docs/doxygen/html/classIRDaikinESP.html | 330 +- .../html/classIRDaikinESP__coll__graph.map | 5 + .../html/classIRDaikinESP__coll__graph.md5 | 1 + .../html/classIRDaikinESP__coll__graph.png | Bin 0 -> 6532 bytes .../html/classIRDelonghiAc-members.html | 0 .../docs/doxygen/html/classIRDelonghiAc.html | 24 +- .../html/classIRDelonghiAc__coll__graph.map | 2 +- .../html/classIRDelonghiAc__coll__graph.md5 | 1 + .../html/classIRDelonghiAc__coll__graph.png | Bin .../html/classIRElectraAc-members.html | 46 +- .../docs/doxygen/html/classIRElectraAc.html | 236 +- .../html/classIRElectraAc__coll__graph.map | 5 + .../html/classIRElectraAc__coll__graph.md5 | 1 + .../html/classIRElectraAc__coll__graph.png | Bin 0 -> 5826 bytes .../html/classIRFujitsuAC-members.html | 0 .../docs/doxygen/html/classIRFujitsuAC.html | 22 +- .../html/classIRFujitsuAC__coll__graph.map | 0 .../html/classIRFujitsuAC__coll__graph.md5 | 0 .../html/classIRFujitsuAC__coll__graph.png | Bin .../html/classIRGoodweatherAc-members.html | 44 +- .../doxygen/html/classIRGoodweatherAc.html | 254 +- .../classIRGoodweatherAc__coll__graph.map | 5 + .../classIRGoodweatherAc__coll__graph.md5 | 1 + .../classIRGoodweatherAc__coll__graph.png | Bin 0 -> 7130 bytes .../doxygen/html/classIRGreeAC-members.html | 0 .../docs/doxygen/html/classIRGreeAC.html | 28 +- .../html/classIRGreeAC__coll__graph.map | 2 +- .../html/classIRGreeAC__coll__graph.md5 | 1 + .../html/classIRGreeAC__coll__graph.png | Bin .../doxygen/html/classIRHaierAC-members.html | 0 .../docs/doxygen/html/classIRHaierAC.html | 28 +- .../html/classIRHaierACYRW02-members.html | 0 .../doxygen/html/classIRHaierACYRW02.html | 28 +- .../html/classIRHaierACYRW02__coll__graph.map | 2 +- .../html/classIRHaierACYRW02__coll__graph.md5 | 1 + .../html/classIRHaierACYRW02__coll__graph.png | Bin .../html/classIRHaierAC__coll__graph.map | 2 +- .../html/classIRHaierAC__coll__graph.md5 | 1 + .../html/classIRHaierAC__coll__graph.png | Bin .../html/classIRHitachiAc-members.html | 42 +- .../docs/doxygen/html/classIRHitachiAc.html | 200 +- .../html/classIRHitachiAc1-members.html | 52 +- .../docs/doxygen/html/classIRHitachiAc1.html | 274 +- .../html/classIRHitachiAc1__coll__graph.map | 5 + .../html/classIRHitachiAc1__coll__graph.md5 | 1 + .../html/classIRHitachiAc1__coll__graph.png | Bin 0 -> 5926 bytes .../html/classIRHitachiAc3-members.html | 0 .../docs/doxygen/html/classIRHitachiAc3.html | 0 .../html/classIRHitachiAc344-members.html | 54 +- .../doxygen/html/classIRHitachiAc344.html | 164 +- .../html/classIRHitachiAc344__coll__graph.map | 6 + .../html/classIRHitachiAc344__coll__graph.md5 | 1 + .../html/classIRHitachiAc344__coll__graph.png | Bin 0 -> 8528 bytes .../classIRHitachiAc344__inherit__graph.map | 0 .../classIRHitachiAc344__inherit__graph.md5 | 0 .../classIRHitachiAc344__inherit__graph.png | Bin .../html/classIRHitachiAc3__coll__graph.map | 0 .../html/classIRHitachiAc3__coll__graph.md5 | 0 .../html/classIRHitachiAc3__coll__graph.png | Bin .../html/classIRHitachiAc424-members.html | 42 +- .../doxygen/html/classIRHitachiAc424.html | 230 +- .../html/classIRHitachiAc424__coll__graph.map | 5 + .../html/classIRHitachiAc424__coll__graph.md5 | 1 + .../html/classIRHitachiAc424__coll__graph.png | Bin 0 -> 6450 bytes .../classIRHitachiAc424__inherit__graph.map | 0 .../classIRHitachiAc424__inherit__graph.md5 | 0 .../classIRHitachiAc424__inherit__graph.png | Bin .../html/classIRHitachiAc__coll__graph.map | 5 + .../html/classIRHitachiAc__coll__graph.md5 | 1 + .../html/classIRHitachiAc__coll__graph.png | Bin 0 -> 5726 bytes .../html/classIRKelvinatorAC-members.html | 50 +- .../doxygen/html/classIRKelvinatorAC.html | 252 +- .../html/classIRKelvinatorAC__coll__graph.map | 5 + .../html/classIRKelvinatorAC__coll__graph.md5 | 1 + .../html/classIRKelvinatorAC__coll__graph.png | Bin 0 -> 6816 bytes .../doxygen/html/classIRLgAc-members.html | 46 +- .../docs/doxygen/html/classIRLgAc.html | 191 +- .../doxygen/html/classIRLgAc__coll__graph.map | 3 +- .../doxygen/html/classIRLgAc__coll__graph.md5 | 1 + .../doxygen/html/classIRLgAc__coll__graph.png | Bin 0 -> 5431 bytes .../doxygen/html/classIRMideaAC-members.html | 60 +- .../docs/doxygen/html/classIRMideaAC.html | 667 +++- .../html/classIRMideaAC__coll__graph.map | 2 +- .../html/classIRMideaAC__coll__graph.md5 | 1 + .../html/classIRMideaAC__coll__graph.png | Bin .../html/classIRMitsubishi112-members.html | 0 .../doxygen/html/classIRMitsubishi112.html | 26 +- .../classIRMitsubishi112__coll__graph.map | 0 .../classIRMitsubishi112__coll__graph.md5 | 0 .../classIRMitsubishi112__coll__graph.png | Bin .../html/classIRMitsubishi136-members.html | 0 .../doxygen/html/classIRMitsubishi136.html | 24 +- .../classIRMitsubishi136__coll__graph.map | 0 .../classIRMitsubishi136__coll__graph.md5 | 0 .../classIRMitsubishi136__coll__graph.png | Bin .../html/classIRMitsubishiAC-members.html | 0 .../doxygen/html/classIRMitsubishiAC.html | 26 +- .../html/classIRMitsubishiAC__coll__graph.map | 0 .../html/classIRMitsubishiAC__coll__graph.md5 | 0 .../html/classIRMitsubishiAC__coll__graph.png | Bin .../classIRMitsubishiHeavy152Ac-members.html | 0 .../html/classIRMitsubishiHeavy152Ac.html | 26 +- ...assIRMitsubishiHeavy152Ac__coll__graph.map | 0 ...assIRMitsubishiHeavy152Ac__coll__graph.md5 | 0 ...assIRMitsubishiHeavy152Ac__coll__graph.png | Bin .../classIRMitsubishiHeavy88Ac-members.html | 0 .../html/classIRMitsubishiHeavy88Ac.html | 20 +- ...lassIRMitsubishiHeavy88Ac__coll__graph.map | 0 ...lassIRMitsubishiHeavy88Ac__coll__graph.md5 | 0 ...lassIRMitsubishiHeavy88Ac__coll__graph.png | Bin .../html/classIRNeoclimaAc-members.html | 0 .../docs/doxygen/html/classIRNeoclimaAc.html | 26 +- .../html/classIRNeoclimaAc__coll__graph.map | 0 .../html/classIRNeoclimaAc__coll__graph.md5 | 0 .../html/classIRNeoclimaAc__coll__graph.png | Bin .../html/classIRPanasonicAc-members.html | 0 .../docs/doxygen/html/classIRPanasonicAc.html | 28 +- .../html/classIRPanasonicAc__coll__graph.map | 0 .../html/classIRPanasonicAc__coll__graph.md5 | 0 .../html/classIRPanasonicAc__coll__graph.png | Bin .../html/classIRSamsungAc-members.html | 0 .../docs/doxygen/html/classIRSamsungAc.html | 22 +- .../html/classIRSamsungAc__coll__graph.map | 0 .../html/classIRSamsungAc__coll__graph.md5 | 0 .../html/classIRSamsungAc__coll__graph.png | Bin .../doxygen/html/classIRSanyoAc-members.html | 0 .../docs/doxygen/html/classIRSanyoAc.html | 24 +- .../html/classIRSanyoAc__coll__graph.map | 0 .../html/classIRSanyoAc__coll__graph.md5 | 0 .../html/classIRSanyoAc__coll__graph.png | Bin .../doxygen/html/classIRSharpAc-members.html | 103 +- .../docs/doxygen/html/classIRSharpAc.html | 262 +- .../html/classIRSharpAc__coll__graph.map | 0 .../html/classIRSharpAc__coll__graph.md5 | 0 .../html/classIRSharpAc__coll__graph.png | Bin .../doxygen/html/classIRTcl112Ac-members.html | 0 .../docs/doxygen/html/classIRTcl112Ac.html | 22 +- .../html/classIRTcl112Ac__coll__graph.map | 0 .../html/classIRTcl112Ac__coll__graph.md5 | 0 .../html/classIRTcl112Ac__coll__graph.png | Bin .../html/classIRTechnibelAc-members.html | 0 .../docs/doxygen/html/classIRTechnibelAc.html | 39 +- .../html/classIRTechnibelAc__coll__graph.map | 2 +- .../html/classIRTechnibelAc__coll__graph.md5 | 1 + .../html/classIRTechnibelAc__coll__graph.png | Bin .../doxygen/html/classIRTecoAc-members.html | 0 .../docs/doxygen/html/classIRTecoAc.html | 24 +- .../html/classIRTecoAc__coll__graph.map | 0 .../html/classIRTecoAc__coll__graph.md5 | 0 .../html/classIRTecoAc__coll__graph.png | Bin .../html/classIRToshibaAC-members.html | 0 .../docs/doxygen/html/classIRToshibaAC.html | 22 +- .../html/classIRToshibaAC__coll__graph.map | 0 .../html/classIRToshibaAC__coll__graph.md5 | 0 .../html/classIRToshibaAC__coll__graph.png | Bin .../html/classIRTranscoldAc-members.html | 0 .../docs/doxygen/html/classIRTranscoldAc.html | 17 +- .../html/classIRTranscoldAc__coll__graph.map | 2 +- .../html/classIRTranscoldAc__coll__graph.md5 | 1 + .../html/classIRTranscoldAc__coll__graph.png | Bin .../html/classIRTrotecESP-members.html | 0 .../docs/doxygen/html/classIRTrotecESP.html | 22 +- .../html/classIRTrotecESP__coll__graph.map | 0 .../html/classIRTrotecESP__coll__graph.md5 | 0 .../html/classIRTrotecESP__coll__graph.png | Bin .../doxygen/html/classIRVestelAc-members.html | 0 .../docs/doxygen/html/classIRVestelAc.html | 22 +- .../html/classIRVestelAc__coll__graph.map | 0 .../html/classIRVestelAc__coll__graph.md5 | 0 .../html/classIRVestelAc__coll__graph.png | Bin .../doxygen/html/classIRVoltas-members.html | 0 .../docs/doxygen/html/classIRVoltas.html | 24 +- .../html/classIRVoltas__coll__graph.map | 2 +- .../html/classIRVoltas__coll__graph.md5 | 1 + .../html/classIRVoltas__coll__graph.png | Bin .../html/classIRWhirlpoolAc-members.html | 0 .../docs/doxygen/html/classIRWhirlpoolAc.html | 22 +- .../html/classIRWhirlpoolAc__coll__graph.map | 0 .../html/classIRWhirlpoolAc__coll__graph.md5 | 0 .../html/classIRWhirlpoolAc__coll__graph.png | Bin .../docs/doxygen/html/classIRac-members.html | 4 +- .../docs/doxygen/html/classIRac.html | 84 +- .../doxygen/html/classIRac__coll__graph.map | 0 .../doxygen/html/classIRac__coll__graph.md5 | 0 .../doxygen/html/classIRac__coll__graph.png | Bin .../doxygen/html/classIRrecv-members.html | 145 +- .../docs/doxygen/html/classIRrecv.html | 196 +- .../doxygen/html/classIRrecv__coll__graph.map | 0 .../doxygen/html/classIRrecv__coll__graph.md5 | 0 .../doxygen/html/classIRrecv__coll__graph.png | Bin .../doxygen/html/classIRsend-members.html | 131 +- .../docs/doxygen/html/classIRsend.html | 154 +- .../doxygen/html/classIRtimer-members.html | 0 .../docs/doxygen/html/classIRtimer.html | 0 .../doxygen/html/classTimerMs-members.html | 0 .../docs/doxygen/html/classTimerMs.html | 0 .../html/classdecode__results-members.html | 0 .../doxygen/html/classdecode__results.html | 32 +- .../docs/doxygen/html/classes.html | 160 +- .../docs/doxygen/html/closed.png | Bin .../docs/doxygen/html/de-CH_8h.html | 0 .../docs/doxygen/html/de-CH_8h_source.html | 0 .../docs/doxygen/html/de-DE_8h.html | 0 .../docs/doxygen/html/de-DE_8h_source.html | 35 +- .../docs/doxygen/html/defaults_8h.html | 0 .../docs/doxygen/html/defaults_8h_source.html | 1053 ++--- .../docs/doxygen/html/deprecated.html | 0 .../dir_49e56c817e5e54854c35e136979f97ca.html | 0 .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 6 + .../dir_84fe998d1eb06414cc389ad334e77e63.html | 2 + .../docs/doxygen/html/doc.png | Bin .../docs/doxygen/html/doxygen.css | 0 .../docs/doxygen/html/doxygen.png | Bin .../docs/doxygen/html/doxygen__index_8md.html | 0 .../docs/doxygen/html/dynsections.js | 0 .../docs/doxygen/html/en-AU_8h.html | 0 .../docs/doxygen/html/en-AU_8h_source.html | 0 .../docs/doxygen/html/en-IE_8h.html | 0 .../docs/doxygen/html/en-IE_8h_source.html | 0 .../docs/doxygen/html/en-UK_8h.html | 0 .../docs/doxygen/html/en-UK_8h_source.html | 0 .../docs/doxygen/html/en-US_8h.html | 0 .../docs/doxygen/html/en-US_8h_source.html | 0 .../docs/doxygen/html/es-ES_8h.html | 0 .../docs/doxygen/html/es-ES_8h_source.html | 0 .../docs/doxygen/html/files.html | 177 +- .../docs/doxygen/html/folderclosed.png | Bin .../docs/doxygen/html/folderopen.png | Bin .../docs/doxygen/html/fr-FR_8h.html | 0 .../docs/doxygen/html/fr-FR_8h_source.html | 0 .../docs/doxygen/html/functions.html | 187 +- .../docs/doxygen/html/functions_a.html | 6 + .../docs/doxygen/html/functions_b.html | 24 +- .../docs/doxygen/html/functions_c.html | 51 +- .../docs/doxygen/html/functions_d.html | 18 +- .../docs/doxygen/html/functions_e.html | 10 + .../docs/doxygen/html/functions_f.html | 21 + .../docs/doxygen/html/functions_func.html | 8 +- .../docs/doxygen/html/functions_func_a.html | 0 .../docs/doxygen/html/functions_func_b.html | 14 +- .../docs/doxygen/html/functions_func_c.html | 20 +- .../docs/doxygen/html/functions_func_d.html | 15 +- .../docs/doxygen/html/functions_func_e.html | 0 .../docs/doxygen/html/functions_func_f.html | 0 .../docs/doxygen/html/functions_func_g.html | 353 +- .../docs/doxygen/html/functions_func_h.html | 0 .../docs/doxygen/html/functions_func_i.html | 17 +- .../docs/doxygen/html/functions_func_k.html | 0 .../docs/doxygen/html/functions_func_l.html | 0 .../docs/doxygen/html/functions_func_m.html | 2 +- .../docs/doxygen/html/functions_func_n.html | 0 .../docs/doxygen/html/functions_func_o.html | 4 +- .../docs/doxygen/html/functions_func_p.html | 0 .../docs/doxygen/html/functions_func_r.html | 0 .../docs/doxygen/html/functions_func_s.html | 52 +- .../docs/doxygen/html/functions_func_t.html | 64 +- .../docs/doxygen/html/functions_func_u.html | 0 .../docs/doxygen/html/functions_func_v.html | 0 .../docs/doxygen/html/functions_func_w.html | 0 .../docs/doxygen/html/functions_func_~.html | 0 .../docs/doxygen/html/functions_g.html | 353 +- .../docs/doxygen/html/functions_h.html | 3 + .../docs/doxygen/html/functions_i.html | 22 +- .../docs/doxygen/html/functions_k.html | 0 .../docs/doxygen/html/functions_l.html | 8 +- .../docs/doxygen/html/functions_m.html | 27 +- .../docs/doxygen/html/functions_n.html | 0 .../docs/doxygen/html/functions_o.html | 49 +- .../docs/doxygen/html/functions_p.html | 62 + .../docs/doxygen/html/functions_q.html | 6 + .../docs/doxygen/html/functions_r.html | 32 +- .../docs/doxygen/html/functions_rela.html | 0 .../docs/doxygen/html/functions_s.html | 125 +- .../docs/doxygen/html/functions_t.html | 87 +- .../docs/doxygen/html/functions_u.html | 0 .../docs/doxygen/html/functions_v.html | 3 + .../docs/doxygen/html/functions_vars.html | 177 +- .../docs/doxygen/html/functions_vars_a.html | 6 + .../docs/doxygen/html/functions_vars_b.html | 10 + .../docs/doxygen/html/functions_vars_c.html | 31 +- .../docs/doxygen/html/functions_vars_d.html | 3 + .../docs/doxygen/html/functions_vars_e.html | 10 + .../docs/doxygen/html/functions_vars_f.html | 21 + .../docs/doxygen/html/functions_vars_h.html | 3 + .../docs/doxygen/html/functions_vars_i.html | 3 + .../docs/doxygen/html/functions_vars_l.html | 8 +- .../docs/doxygen/html/functions_vars_m.html | 25 + .../docs/doxygen/html/functions_vars_n.html | 0 .../docs/doxygen/html/functions_vars_o.html | 45 +- .../docs/doxygen/html/functions_vars_p.html | 180 + .../docs/doxygen/html/functions_vars_q.html | 6 + .../docs/doxygen/html/functions_vars_r.html | 32 +- .../docs/doxygen/html/functions_vars_s.html | 73 +- .../docs/doxygen/html/functions_vars_t.html | 23 +- .../docs/doxygen/html/functions_vars_u.html | 0 .../docs/doxygen/html/functions_vars_v.html | 3 + .../docs/doxygen/html/functions_vars_w.html | 6 + .../docs/doxygen/html/functions_vars_x.html | 3 + .../docs/doxygen/html/functions_vars_z.html | 0 .../docs/doxygen/html/functions_w.html | 6 + .../docs/doxygen/html/functions_x.html | 3 + .../docs/doxygen/html/functions_z.html | 0 .../docs/doxygen/html/functions_~.html | 0 .../docs/doxygen/html/globals.html | 0 .../docs/doxygen/html/globals_a.html | 6 + .../docs/doxygen/html/globals_c.html | 0 .../docs/doxygen/html/globals_d.html | 0 .../docs/doxygen/html/globals_e.html | 3 + .../docs/doxygen/html/globals_enum.html | 3 + .../docs/doxygen/html/globals_eval.html | 15 + .../docs/doxygen/html/globals_f.html | 0 .../docs/doxygen/html/globals_func.html | 0 .../docs/doxygen/html/globals_g.html | 0 .../docs/doxygen/html/globals_h.html | 0 .../docs/doxygen/html/globals_i.html | 0 .../docs/doxygen/html/globals_j.html | 0 .../docs/doxygen/html/globals_k.html | 1118 +----- .../docs/doxygen/html/globals_l.html | 0 .../docs/doxygen/html/globals_m.html | 3 + .../docs/doxygen/html/globals_n.html | 0 .../docs/doxygen/html/globals_p.html | 3 + .../docs/doxygen/html/globals_r.html | 0 .../docs/doxygen/html/globals_s.html | 7 +- .../docs/doxygen/html/globals_t.html | 0 .../docs/doxygen/html/globals_type.html | 0 .../docs/doxygen/html/globals_u.html | 0 .../docs/doxygen/html/globals_v.html | 0 .../docs/doxygen/html/globals_vars.html | 0 .../docs/doxygen/html/globals_vars_i.html | 0 .../docs/doxygen/html/globals_vars_k.html | 1128 +----- .../docs/doxygen/html/globals_w.html | 0 .../docs/doxygen/html/globals_x.html | 0 .../docs/doxygen/html/globals_y.html | 0 .../docs/doxygen/html/globals_z.html | 0 .../docs/doxygen/html/graph_legend.html | 0 .../docs/doxygen/html/graph_legend.md5 | 0 .../docs/doxygen/html/graph_legend.png | Bin .../docs/doxygen/html/hierarchy.html | 167 + .../docs/doxygen/html/i18n_8h.html | 0 .../docs/doxygen/html/i18n_8h_source.html | 0 .../docs/doxygen/html/index.html | 0 .../docs/doxygen/html/inherit_graph_0.map | 2 +- .../docs/doxygen/html/inherit_graph_0.md5 | 1 + .../docs/doxygen/html/inherit_graph_0.png | Bin .../docs/doxygen/html/inherit_graph_1.map | 2 +- .../docs/doxygen/html/inherit_graph_1.md5 | 1 + .../docs/doxygen/html/inherit_graph_1.png | Bin .../docs/doxygen/html/inherit_graph_10.map | 3 + .../docs/doxygen/html/inherit_graph_10.md5 | 1 + .../docs/doxygen/html/inherit_graph_10.png | Bin 0 -> 1668 bytes .../docs/doxygen/html/inherit_graph_11.map | 3 + .../docs/doxygen/html/inherit_graph_11.md5 | 1 + .../docs/doxygen/html/inherit_graph_11.png | Bin 0 -> 1479 bytes .../docs/doxygen/html/inherit_graph_12.map | 3 + .../docs/doxygen/html/inherit_graph_12.md5 | 1 + .../docs/doxygen/html/inherit_graph_12.png | Bin 0 -> 1593 bytes .../docs/doxygen/html/inherit_graph_13.map | 3 + .../docs/doxygen/html/inherit_graph_13.md5 | 1 + .../docs/doxygen/html/inherit_graph_13.png | Bin 0 -> 1569 bytes .../docs/doxygen/html/inherit_graph_14.map} | 0 .../docs/doxygen/html/inherit_graph_14.md5} | 0 .../docs/doxygen/html/inherit_graph_14.png} | Bin .../docs/doxygen/html/inherit_graph_15.map} | 2 +- .../docs/doxygen/html/inherit_graph_15.md5 | 1 + .../docs/doxygen/html/inherit_graph_15.png} | Bin .../docs/doxygen/html/inherit_graph_16.map | 3 + .../docs/doxygen/html/inherit_graph_16.md5 | 1 + .../docs/doxygen/html/inherit_graph_16.png | Bin 0 -> 1331 bytes .../docs/doxygen/html/inherit_graph_17.map | 3 + .../docs/doxygen/html/inherit_graph_17.md5 | 1 + .../docs/doxygen/html/inherit_graph_17.png | Bin 0 -> 1777 bytes .../docs/doxygen/html/inherit_graph_18.map} | 2 +- .../docs/doxygen/html/inherit_graph_18.md5 | 1 + .../docs/doxygen/html/inherit_graph_18.png} | Bin .../docs/doxygen/html/inherit_graph_19.map} | 2 +- .../docs/doxygen/html/inherit_graph_19.md5 | 1 + .../docs/doxygen/html/inherit_graph_19.png} | Bin .../docs/doxygen/html/inherit_graph_2.map | 2 +- .../docs/doxygen/html/inherit_graph_2.md5 | 1 + .../docs/doxygen/html/inherit_graph_2.png | Bin .../docs/doxygen/html/inherit_graph_20.map} | 2 +- .../docs/doxygen/html/inherit_graph_20.md5 | 1 + .../docs/doxygen/html/inherit_graph_20.png} | Bin .../docs/doxygen/html/inherit_graph_21.map | 3 + .../docs/doxygen/html/inherit_graph_21.md5 | 1 + .../docs/doxygen/html/inherit_graph_21.png | Bin 0 -> 1197 bytes .../docs/doxygen/html/inherit_graph_22.map | 3 + .../docs/doxygen/html/inherit_graph_22.md5 | 1 + .../docs/doxygen/html/inherit_graph_22.png | Bin 0 -> 1417 bytes .../docs/doxygen/html/inherit_graph_23.map | 3 + .../docs/doxygen/html/inherit_graph_23.md5 | 1 + .../docs/doxygen/html/inherit_graph_23.png | Bin 0 -> 1140 bytes .../docs/doxygen/html/inherit_graph_24.map} | 0 .../docs/doxygen/html/inherit_graph_24.md5} | 0 .../docs/doxygen/html/inherit_graph_24.png} | Bin .../docs/doxygen/html/inherit_graph_25.map} | 0 .../docs/doxygen/html/inherit_graph_25.md5} | 0 .../docs/doxygen/html/inherit_graph_25.png} | Bin .../docs/doxygen/html/inherit_graph_26.map} | 0 .../docs/doxygen/html/inherit_graph_26.md5} | 0 .../docs/doxygen/html/inherit_graph_26.png} | Bin .../docs/doxygen/html/inherit_graph_27.map} | 0 .../docs/doxygen/html/inherit_graph_27.md5} | 0 .../docs/doxygen/html/inherit_graph_27.png} | Bin .../docs/doxygen/html/inherit_graph_28.map} | 0 .../docs/doxygen/html/inherit_graph_28.md5} | 0 .../docs/doxygen/html/inherit_graph_28.png} | Bin .../docs/doxygen/html/inherit_graph_29.map} | 0 .../docs/doxygen/html/inherit_graph_29.md5} | 0 .../docs/doxygen/html/inherit_graph_29.png} | Bin .../docs/doxygen/html/inherit_graph_3.map | 2 +- .../docs/doxygen/html/inherit_graph_3.md5 | 1 + .../docs/doxygen/html/inherit_graph_3.png | Bin .../docs/doxygen/html/inherit_graph_30.map} | 0 .../docs/doxygen/html/inherit_graph_30.md5} | 0 .../docs/doxygen/html/inherit_graph_30.png} | Bin .../docs/doxygen/html/inherit_graph_31.map} | 0 .../docs/doxygen/html/inherit_graph_31.md5} | 0 .../docs/doxygen/html/inherit_graph_31.png} | Bin .../docs/doxygen/html/inherit_graph_32.map} | 0 .../docs/doxygen/html/inherit_graph_32.md5} | 0 .../docs/doxygen/html/inherit_graph_32.png} | Bin .../docs/doxygen/html/inherit_graph_33.map} | 0 .../docs/doxygen/html/inherit_graph_33.md5} | 0 .../docs/doxygen/html/inherit_graph_33.png} | Bin .../docs/doxygen/html/inherit_graph_34.map} | 0 .../docs/doxygen/html/inherit_graph_34.md5} | 0 .../docs/doxygen/html/inherit_graph_34.png} | Bin .../docs/doxygen/html/inherit_graph_35.map} | 0 .../docs/doxygen/html/inherit_graph_35.md5} | 0 .../docs/doxygen/html/inherit_graph_35.png} | Bin .../docs/doxygen/html/inherit_graph_36.map} | 0 .../docs/doxygen/html/inherit_graph_36.md5} | 0 .../docs/doxygen/html/inherit_graph_36.png} | Bin .../docs/doxygen/html/inherit_graph_37.map} | 0 .../docs/doxygen/html/inherit_graph_37.md5} | 0 .../docs/doxygen/html/inherit_graph_37.png} | Bin .../docs/doxygen/html/inherit_graph_38.map} | 0 .../docs/doxygen/html/inherit_graph_38.md5} | 0 .../docs/doxygen/html/inherit_graph_38.png} | Bin .../docs/doxygen/html/inherit_graph_39.map} | 0 .../docs/doxygen/html/inherit_graph_39.md5} | 0 .../docs/doxygen/html/inherit_graph_39.png} | Bin .../docs/doxygen/html/inherit_graph_4.map | 2 +- .../docs/doxygen/html/inherit_graph_4.md5 | 1 + .../docs/doxygen/html/inherit_graph_4.png | Bin .../docs/doxygen/html/inherit_graph_40.map} | 0 .../docs/doxygen/html/inherit_graph_40.md5} | 0 .../docs/doxygen/html/inherit_graph_40.png} | Bin .../docs/doxygen/html/inherit_graph_41.map} | 0 .../docs/doxygen/html/inherit_graph_41.md5} | 0 .../docs/doxygen/html/inherit_graph_41.png} | Bin .../docs/doxygen/html/inherit_graph_42.map} | 0 .../docs/doxygen/html/inherit_graph_42.md5} | 0 .../docs/doxygen/html/inherit_graph_42.png} | Bin .../docs/doxygen/html/inherit_graph_43.map} | 0 .../docs/doxygen/html/inherit_graph_43.md5} | 0 .../docs/doxygen/html/inherit_graph_43.png} | Bin .../docs/doxygen/html/inherit_graph_44.map} | 0 .../docs/doxygen/html/inherit_graph_44.md5} | 0 .../docs/doxygen/html/inherit_graph_44.png} | Bin .../docs/doxygen/html/inherit_graph_45.map} | 0 .../docs/doxygen/html/inherit_graph_45.md5} | 0 .../docs/doxygen/html/inherit_graph_45.png} | Bin .../docs/doxygen/html/inherit_graph_46.map} | 0 .../docs/doxygen/html/inherit_graph_46.md5} | 0 .../docs/doxygen/html/inherit_graph_46.png} | Bin .../docs/doxygen/html/inherit_graph_47.map} | 0 .../docs/doxygen/html/inherit_graph_47.md5} | 0 .../docs/doxygen/html/inherit_graph_47.png} | Bin .../docs/doxygen/html/inherit_graph_48.map} | 0 .../docs/doxygen/html/inherit_graph_48.md5} | 0 .../docs/doxygen/html/inherit_graph_48.png} | Bin .../docs/doxygen/html/inherit_graph_49.map} | 0 .../docs/doxygen/html/inherit_graph_49.md5} | 0 .../docs/doxygen/html/inherit_graph_49.png} | Bin .../docs/doxygen/html/inherit_graph_5.map | 2 +- .../docs/doxygen/html/inherit_graph_5.md5 | 1 + .../docs/doxygen/html/inherit_graph_5.png | Bin .../docs/doxygen/html/inherit_graph_50.map} | 0 .../docs/doxygen/html/inherit_graph_50.md5} | 0 .../docs/doxygen/html/inherit_graph_50.png} | Bin .../docs/doxygen/html/inherit_graph_51.map} | 0 .../docs/doxygen/html/inherit_graph_51.md5} | 0 .../docs/doxygen/html/inherit_graph_51.png} | Bin .../docs/doxygen/html/inherit_graph_52.map} | 0 .../docs/doxygen/html/inherit_graph_52.md5} | 0 .../docs/doxygen/html/inherit_graph_52.png} | Bin .../docs/doxygen/html/inherit_graph_53.map} | 0 .../docs/doxygen/html/inherit_graph_53.md5} | 0 .../docs/doxygen/html/inherit_graph_53.png} | Bin .../docs/doxygen/html/inherit_graph_54.map} | 0 .../docs/doxygen/html/inherit_graph_54.md5} | 0 .../docs/doxygen/html/inherit_graph_54.png} | Bin .../docs/doxygen/html/inherit_graph_55.map} | 0 .../docs/doxygen/html/inherit_graph_55.md5} | 0 .../docs/doxygen/html/inherit_graph_55.png} | Bin .../docs/doxygen/html/inherit_graph_56.map} | 0 .../docs/doxygen/html/inherit_graph_56.md5} | 0 .../docs/doxygen/html/inherit_graph_56.png} | Bin .../docs/doxygen/html/inherit_graph_57.map} | 0 .../docs/doxygen/html/inherit_graph_57.md5} | 0 .../docs/doxygen/html/inherit_graph_57.png} | Bin .../docs/doxygen/html/inherit_graph_58.map} | 0 .../docs/doxygen/html/inherit_graph_58.md5} | 0 .../docs/doxygen/html/inherit_graph_58.png} | Bin .../docs/doxygen/html/inherit_graph_59.map} | 0 .../docs/doxygen/html/inherit_graph_59.md5} | 0 .../docs/doxygen/html/inherit_graph_59.png} | Bin .../docs/doxygen/html/inherit_graph_6.map | 3 + .../docs/doxygen/html/inherit_graph_6.md5 | 1 + .../docs/doxygen/html/inherit_graph_6.png | Bin 0 -> 1726 bytes .../docs/doxygen/html/inherit_graph_60.map} | 0 .../docs/doxygen/html/inherit_graph_60.md5} | 0 .../docs/doxygen/html/inherit_graph_60.png} | Bin .../docs/doxygen/html/inherit_graph_61.map} | 0 .../docs/doxygen/html/inherit_graph_61.md5} | 0 .../docs/doxygen/html/inherit_graph_61.png} | Bin .../docs/doxygen/html/inherit_graph_62.map} | 0 .../docs/doxygen/html/inherit_graph_62.md5} | 0 .../docs/doxygen/html/inherit_graph_62.png} | Bin .../docs/doxygen/html/inherit_graph_63.map} | 0 .../docs/doxygen/html/inherit_graph_63.md5} | 0 .../docs/doxygen/html/inherit_graph_63.png} | Bin .../docs/doxygen/html/inherit_graph_64.map} | 0 .../docs/doxygen/html/inherit_graph_64.md5} | 0 .../docs/doxygen/html/inherit_graph_64.png} | Bin .../docs/doxygen/html/inherit_graph_65.map} | 0 .../docs/doxygen/html/inherit_graph_65.md5} | 0 .../docs/doxygen/html/inherit_graph_65.png} | Bin .../docs/doxygen/html/inherit_graph_66.map} | 0 .../docs/doxygen/html/inherit_graph_66.md5} | 0 .../docs/doxygen/html/inherit_graph_66.png} | Bin .../docs/doxygen/html/inherit_graph_67.map} | 2 +- .../docs/doxygen/html/inherit_graph_67.md5 | 1 + .../docs/doxygen/html/inherit_graph_67.png} | Bin .../docs/doxygen/html/inherit_graph_68.map} | 0 .../docs/doxygen/html/inherit_graph_68.md5} | 0 .../docs/doxygen/html/inherit_graph_68.png} | Bin .../docs/doxygen/html/inherit_graph_69.map} | 0 .../docs/doxygen/html/inherit_graph_69.md5} | 0 .../docs/doxygen/html/inherit_graph_69.png} | Bin .../docs/doxygen/html/inherit_graph_7.map | 3 + .../docs/doxygen/html/inherit_graph_7.md5 | 1 + .../docs/doxygen/html/inherit_graph_7.png | Bin 0 -> 1647 bytes .../docs/doxygen/html/inherit_graph_70.map} | 0 .../docs/doxygen/html/inherit_graph_70.md5} | 0 .../docs/doxygen/html/inherit_graph_70.png} | Bin .../docs/doxygen/html/inherit_graph_71.map} | 2 +- .../docs/doxygen/html/inherit_graph_71.md5 | 1 + .../docs/doxygen/html/inherit_graph_71.png} | Bin .../docs/doxygen/html/inherit_graph_72.map} | 0 .../docs/doxygen/html/inherit_graph_72.md5} | 0 .../docs/doxygen/html/inherit_graph_72.png} | Bin .../docs/doxygen/html/inherit_graph_73.map} | 0 .../docs/doxygen/html/inherit_graph_73.md5} | 0 .../docs/doxygen/html/inherit_graph_73.png} | Bin .../docs/doxygen/html/inherit_graph_74.map} | 0 .../docs/doxygen/html/inherit_graph_74.md5} | 0 .../docs/doxygen/html/inherit_graph_74.png} | Bin .../docs/doxygen/html/inherit_graph_75.map} | 0 .../docs/doxygen/html/inherit_graph_75.md5} | 0 .../docs/doxygen/html/inherit_graph_75.png} | Bin .../docs/doxygen/html/inherit_graph_76.map | 3 + .../docs/doxygen/html/inherit_graph_76.md5 | 1 + .../docs/doxygen/html/inherit_graph_76.png | Bin 0 -> 1518 bytes .../docs/doxygen/html/inherit_graph_77.map | 3 + .../docs/doxygen/html/inherit_graph_77.md5 | 1 + .../docs/doxygen/html/inherit_graph_77.png | Bin 0 -> 1126 bytes .../docs/doxygen/html/inherit_graph_78.map} | 0 .../docs/doxygen/html/inherit_graph_78.md5} | 0 .../docs/doxygen/html/inherit_graph_78.png} | Bin .../docs/doxygen/html/inherit_graph_79.map} | 0 .../docs/doxygen/html/inherit_graph_79.md5} | 0 .../docs/doxygen/html/inherit_graph_79.png} | Bin .../docs/doxygen/html/inherit_graph_8.map | 3 + .../docs/doxygen/html/inherit_graph_8.md5 | 1 + .../docs/doxygen/html/inherit_graph_8.png | Bin 0 -> 1746 bytes .../docs/doxygen/html/inherit_graph_80.map} | 2 +- .../docs/doxygen/html/inherit_graph_80.md5 | 1 + .../docs/doxygen/html/inherit_graph_80.png} | Bin .../docs/doxygen/html/inherit_graph_81.map} | 0 .../docs/doxygen/html/inherit_graph_81.md5} | 0 .../docs/doxygen/html/inherit_graph_81.png} | Bin .../docs/doxygen/html/inherit_graph_82.map} | 0 .../docs/doxygen/html/inherit_graph_82.md5} | 0 .../docs/doxygen/html/inherit_graph_82.png} | Bin .../docs/doxygen/html/inherit_graph_83.map} | 2 +- .../docs/doxygen/html/inherit_graph_83.md5 | 1 + .../docs/doxygen/html/inherit_graph_83.png} | Bin .../docs/doxygen/html/inherit_graph_9.map | 3 + .../docs/doxygen/html/inherit_graph_9.md5 | 1 + .../docs/doxygen/html/inherit_graph_9.png | Bin 0 -> 1671 bytes .../docs/doxygen/html/inherits.html | 229 +- .../docs/doxygen/html/ir__Airwell_8cpp.html | 0 .../docs/doxygen/html/ir__Airwell_8h.html | 1 + .../doxygen/html/ir__Airwell_8h_source.html | 191 +- .../docs/doxygen/html/ir__Aiwa_8cpp.html | 0 .../docs/doxygen/html/ir__Amcor_8cpp.html | 0 .../docs/doxygen/html/ir__Amcor_8h.html | 1 + .../doxygen/html/ir__Amcor_8h_source.html | 282 +- .../docs/doxygen/html/ir__Argo_8cpp.html | 0 .../docs/doxygen/html/ir__Argo_8h.html | 1 + .../docs/doxygen/html/ir__Argo_8h_source.html | 448 +-- .../docs/doxygen/html/ir__Carrier_8cpp.html | 0 .../docs/doxygen/html/ir__Carrier_8h.html | 1 + .../doxygen/html/ir__Carrier_8h_source.html | 276 +- .../docs/doxygen/html/ir__Coolix_8cpp.html | 0 .../docs/doxygen/html/ir__Coolix_8h.html | 0 .../doxygen/html/ir__Coolix_8h_source.html | 446 +-- .../docs/doxygen/html/ir__Corona_8cpp.html | 0 .../docs/doxygen/html/ir__Corona_8h.html | 2 + .../doxygen/html/ir__Corona_8h_source.html | 354 +- .../docs/doxygen/html/ir__Daikin_8cpp.html | 0 .../docs/doxygen/html/ir__Daikin_8h.html | 2778 +------------- .../doxygen/html/ir__Daikin_8h_source.html | 3419 +++++++++-------- .../docs/doxygen/html/ir__Delonghi_8cpp.html | 0 .../docs/doxygen/html/ir__Delonghi_8h.html | 1 + .../doxygen/html/ir__Delonghi_8h_source.html | 296 +- .../docs/doxygen/html/ir__Denon_8cpp.html | 2 +- .../docs/doxygen/html/ir__Dish_8cpp.html | 0 .../docs/doxygen/html/ir__Doshisha_8cpp.html | 0 .../docs/doxygen/html/ir__Electra_8cpp.html | 0 .../docs/doxygen/html/ir__Electra_8h.html | 179 +- .../doxygen/html/ir__Electra_8h_source.html | 374 +- .../doxygen/html/ir__EliteScreens_8cpp.html | 143 + .../docs/doxygen/html/ir__Epson_8cpp.html | 0 .../docs/doxygen/html/ir__Fujitsu_8cpp.html | 0 .../docs/doxygen/html/ir__Fujitsu_8h.html | 0 .../doxygen/html/ir__Fujitsu_8h_source.html | 14 +- .../docs/doxygen/html/ir__GICable_8cpp.html | 2 +- .../doxygen/html/ir__GlobalCache_8cpp.html | 0 .../doxygen/html/ir__Goodweather_8cpp.html | 0 .../docs/doxygen/html/ir__Goodweather_8h.html | 259 +- .../html/ir__Goodweather_8h_source.html | 409 +- .../docs/doxygen/html/ir__Gree_8cpp.html | 0 .../docs/doxygen/html/ir__Gree_8h.html | 1 + .../docs/doxygen/html/ir__Gree_8h_source.html | 472 +-- .../docs/doxygen/html/ir__Haier_8cpp.html | 0 .../docs/doxygen/html/ir__Haier_8h.html | 2 + .../doxygen/html/ir__Haier_8h_source.html | 30 +- .../docs/doxygen/html/ir__Hitachi_8cpp.html | 0 .../docs/doxygen/html/ir__Hitachi_8h.html | 633 +-- .../doxygen/html/ir__Hitachi_8h_source.html | 1283 ++++--- .../docs/doxygen/html/ir__Inax_8cpp.html | 0 .../docs/doxygen/html/ir__JVC_8cpp.html | 2 +- .../doxygen/html/ir__Kelvinator_8cpp.html | 208 - .../docs/doxygen/html/ir__Kelvinator_8h.html | 3 + .../html/ir__Kelvinator_8h_source.html | 442 +-- .../docs/doxygen/html/ir__LG_8cpp.html | 359 ++ .../docs/doxygen/html/ir__LG_8h.html | 195 +- .../docs/doxygen/html/ir__LG_8h_source.html | 297 +- .../docs/doxygen/html/ir__Lasertag_8cpp.html | 0 .../docs/doxygen/html/ir__Lego_8cpp.html | 0 .../docs/doxygen/html/ir__Lutron_8cpp.html | 0 .../docs/doxygen/html/ir__MWM_8cpp.html | 0 .../docs/doxygen/html/ir__Magiquest_8cpp.html | 0 .../docs/doxygen/html/ir__Magiquest_8h.html | 0 .../doxygen/html/ir__Magiquest_8h_source.html | 4 +- .../docs/doxygen/html/ir__Metz_8cpp.html | 0 .../docs/doxygen/html/ir__Midea_8cpp.html | 0 .../docs/doxygen/html/ir__Midea_8h.html | 238 +- .../doxygen/html/ir__Midea_8h_source.html | 410 ++ .../docs/doxygen/html/ir__Mirage_8cpp.html | 226 ++ .../html/ir__MitsubishiHeavy_8cpp.html | 0 .../doxygen/html/ir__MitsubishiHeavy_8h.html | 0 .../html/ir__MitsubishiHeavy_8h_source.html | 22 +- .../doxygen/html/ir__Mitsubishi_8cpp.html | 0 .../docs/doxygen/html/ir__Mitsubishi_8h.html | 0 .../html/ir__Mitsubishi_8h_source.html | 34 +- .../doxygen/html/ir__Multibrackets_8cpp.html | 0 .../docs/doxygen/html/ir__NEC_8cpp.html | 0 .../docs/doxygen/html/ir__NEC_8h.html | 2 +- .../docs/doxygen/html/ir__NEC_8h_source.html | 2 +- .../docs/doxygen/html/ir__Neoclima_8cpp.html | 0 .../docs/doxygen/html/ir__Neoclima_8h.html | 0 .../doxygen/html/ir__Neoclima_8h_source.html | 16 +- .../docs/doxygen/html/ir__Nikai_8cpp.html | 0 .../docs/doxygen/html/ir__Panasonic_8cpp.html | 331 +- .../docs/doxygen/html/ir__Panasonic_8h.html | 0 .../doxygen/html/ir__Panasonic_8h_source.html | 516 +-- .../docs/doxygen/html/ir__Pioneer_8cpp.html | 0 .../docs/doxygen/html/ir__Pronto_8cpp.html | 0 .../docs/doxygen/html/ir__RC5__RC6_8cpp.html | 0 .../docs/doxygen/html/ir__RCMM_8cpp.html | 0 .../docs/doxygen/html/ir__Samsung_8cpp.html | 2 +- .../docs/doxygen/html/ir__Samsung_8h.html | 0 .../doxygen/html/ir__Samsung_8h_source.html | 16 +- .../docs/doxygen/html/ir__Sanyo_8cpp.html | 2 +- .../docs/doxygen/html/ir__Sanyo_8h.html | 0 .../doxygen/html/ir__Sanyo_8h_source.html | 14 +- .../docs/doxygen/html/ir__Sharp_8cpp.html | 4 +- .../docs/doxygen/html/ir__Sharp_8h.html | 64 + .../doxygen/html/ir__Sharp_8h_source.html | 576 +-- .../docs/doxygen/html/ir__Sherwood_8cpp.html | 0 .../docs/doxygen/html/ir__Sony_8cpp.html | 0 .../docs/doxygen/html/ir__Symphony_8cpp.html | 0 .../docs/doxygen/html/ir__Tcl_8cpp.html | 0 .../docs/doxygen/html/ir__Tcl_8h.html | 0 .../docs/doxygen/html/ir__Tcl_8h_source.html | 14 +- .../docs/doxygen/html/ir__Technibel_8cpp.html | 0 .../docs/doxygen/html/ir__Technibel_8h.html | 1 + .../doxygen/html/ir__Technibel_8h_source.html | 138 +- .../docs/doxygen/html/ir__Teco_8cpp.html | 0 .../docs/doxygen/html/ir__Teco_8h.html | 0 .../docs/doxygen/html/ir__Teco_8h_source.html | 12 +- .../docs/doxygen/html/ir__Toshiba_8cpp.html | 0 .../docs/doxygen/html/ir__Toshiba_8h.html | 0 .../doxygen/html/ir__Toshiba_8h_source.html | 18 +- .../docs/doxygen/html/ir__Transcold_8cpp.html | 0 .../docs/doxygen/html/ir__Transcold_8h.html | 1 + .../doxygen/html/ir__Transcold_8h_source.html | 136 +- .../docs/doxygen/html/ir__Trotec_8cpp.html | 0 .../docs/doxygen/html/ir__Trotec_8h.html | 0 .../doxygen/html/ir__Trotec_8h_source.html | 16 +- .../docs/doxygen/html/ir__Vestel_8cpp.html | 0 .../docs/doxygen/html/ir__Vestel_8h.html | 0 .../doxygen/html/ir__Vestel_8h_source.html | 12 +- .../docs/doxygen/html/ir__Voltas_8cpp.html | 0 .../docs/doxygen/html/ir__Voltas_8h.html | 1 + .../doxygen/html/ir__Voltas_8h_source.html | 19 +- .../docs/doxygen/html/ir__Whirlpool_8cpp.html | 0 .../docs/doxygen/html/ir__Whirlpool_8h.html | 0 .../doxygen/html/ir__Whirlpool_8h_source.html | 16 +- .../docs/doxygen/html/ir__Whynter_8cpp.html | 2 +- .../docs/doxygen/html/ir__Zepeal_8cpp.html | 0 .../docs/doxygen/html/it-IT_8h.html | 0 .../docs/doxygen/html/it-IT_8h_source.html | 0 .../docs/doxygen/html/jquery.js | 0 .../doxygen/html/md_src_locale_README.html | 0 .../docs/doxygen/html/menu.js | 0 .../docs/doxygen/html/menudata.js | 0 .../docs/doxygen/html/namespaceIRAcUtils.html | 0 .../docs/doxygen/html/namespaceirutils.html | 16 +- .../docs/doxygen/html/namespacemembers.html | 0 .../doxygen/html/namespacemembers_enum.html | 0 .../doxygen/html/namespacemembers_func.html | 0 .../docs/doxygen/html/namespaces.html | 0 .../docs/doxygen/html/namespacestdAc.html | 0 .../docs/doxygen/html/nav_f.png | Bin .../docs/doxygen/html/nav_g.png | Bin .../docs/doxygen/html/nav_h.png | Bin .../docs/doxygen/html/open.png | Bin .../docs/doxygen/html/pages.html | 0 .../docs/doxygen/html/pt-BR_8h.html} | 58 +- .../docs/doxygen/html/pt-BR_8h_source.html | 247 ++ .../docs/doxygen/html/search/all_0.html | 0 .../docs/doxygen/html/search/all_0.js | 89 + .../docs/doxygen/html/search/all_1.html | 0 .../docs/doxygen/html/search/all_1.js | 30 + .../docs/doxygen/html/search/all_10.html | 0 .../docs/doxygen/html/search/all_10.js | 27 + .../docs/doxygen/html/search/all_11.html | 0 .../docs/doxygen/html/search/all_11.js | 4 + .../docs/doxygen/html/search/all_12.html | 0 .../docs/doxygen/html/search/all_12.js | 30 + .../docs/doxygen/html/search/all_13.html | 0 .../docs/doxygen/html/search/all_13.js | 532 +-- .../docs/doxygen/html/search/all_14.html | 0 .../docs/doxygen/html/search/all_14.js | 73 +- .../docs/doxygen/html/search/all_15.html | 0 .../docs/doxygen/html/search/all_15.js | 20 +- .../docs/doxygen/html/search/all_16.html | 0 .../docs/doxygen/html/search/all_16.js | 19 +- .../docs/doxygen/html/search/all_17.html | 0 .../docs/doxygen/html/search/all_17.js | 11 + .../docs/doxygen/html/search/all_18.html | 0 .../docs/doxygen/html/search/all_18.js | 4 +- .../docs/doxygen/html/search/all_19.html | 0 .../docs/doxygen/html/search/all_19.js | 4 +- .../docs/doxygen/html/search/all_1a.html | 0 .../docs/doxygen/html/search/all_1a.js | 6 + .../docs/doxygen/html/search/all_1b.html | 0 .../docs/doxygen/html/search/all_1b.js | 4 + .../docs/doxygen/html/search/all_2.html | 0 .../docs/doxygen/html/search/all_2.js | 17 + .../docs/doxygen/html/search/all_3.html | 0 .../docs/doxygen/html/search/all_3.js | 104 +- .../docs/doxygen/html/search/all_4.html | 0 .../docs/doxygen/html/search/all_4.js | 134 + .../docs/doxygen/html/search/all_5.html | 0 .../docs/doxygen/html/search/all_5.js | 39 + .../docs/doxygen/html/search/all_6.html | 0 .../docs/doxygen/html/search/all_6.js | 20 + .../docs/doxygen/html/search/all_7.html | 0 .../docs/doxygen/html/search/all_7.js | 245 +- .../docs/doxygen/html/search/all_8.html | 0 .../docs/doxygen/html/search/all_8.js | 34 + .../docs/doxygen/html/search/all_9.html | 0 .../docs/doxygen/html/search/all_9.js | 198 + .../docs/doxygen/html/search/all_a.html | 0 .../docs/doxygen/html/search/all_a.js | 2 +- .../docs/doxygen/html/search/all_b.html | 0 .../docs/doxygen/html/search/all_b.js | 2400 ++++++++++++ .../docs/doxygen/html/search/all_c.html | 0 .../docs/doxygen/html/search/all_c.js | 19 + .../docs/doxygen/html/search/all_d.html | 0 .../docs/doxygen/html/search/all_d.js | 45 + .../docs/doxygen/html/search/all_e.html | 0 .../docs/doxygen/html/search/all_e.js | 12 +- .../docs/doxygen/html/search/all_f.html | 0 .../docs/doxygen/html/search/all_f.js | 54 +- .../docs/doxygen/html/search/classes_0.html | 0 .../docs/doxygen/html/search/classes_0.js | 6 + .../docs/doxygen/html/search/classes_1.html | 0 .../docs/doxygen/html/search/classes_1.js | 6 + .../docs/doxygen/html/search/classes_2.html | 0 .../docs/doxygen/html/search/classes_2.js | 13 + .../docs/doxygen/html/search/classes_3.html | 0 .../docs/doxygen/html/search/classes_3.js | 4 + .../docs/doxygen/html/search/classes_4.html | 0 .../docs/doxygen/html/search/classes_4.js | 5 + .../docs/doxygen/html/search/classes_5.html | 0 .../docs/doxygen/html/search/classes_5.js | 8 + .../docs/doxygen/html/search/classes_6.html | 0 .../docs/doxygen/html/search/classes_6.js | 56 + .../docs/doxygen/html/search/classes_7.html | 0 .../docs/doxygen/html/search/classes_7.js | 4 + .../docs/doxygen/html/search/classes_8.html | 0 .../docs/doxygen/html/search/classes_8.js | 4 + .../docs/doxygen/html/search/classes_9.html | 0 .../docs/doxygen/html/search/classes_9.js | 6 + .../docs/doxygen/html/search/classes_a.html | 30 + .../docs/doxygen/html/search/classes_a.js | 4 + .../docs/doxygen/html/search/classes_b.html | 30 + .../docs/doxygen/html/search/classes_b.js | 4 + .../docs/doxygen/html/search/classes_c.html | 30 + .../docs/doxygen/html/search/classes_c.js | 4 + .../docs/doxygen/html/search/close.png | Bin .../docs/doxygen/html/search/enums_0.html | 0 .../docs/doxygen/html/search/enums_0.js | 2 +- .../docs/doxygen/html/search/enums_1.html | 0 .../docs/doxygen/html/search/enums_1.js | 4 +- .../docs/doxygen/html/search/enums_2.html | 0 .../docs/doxygen/html/search/enums_2.js | 2 +- .../docs/doxygen/html/search/enums_3.html | 0 .../docs/doxygen/html/search/enums_3.js | 2 +- .../docs/doxygen/html/search/enums_4.html | 0 .../docs/doxygen/html/search/enums_4.js | 2 +- .../docs/doxygen/html/search/enums_5.html | 0 .../docs/doxygen/html/search/enums_5.js | 4 + .../docs/doxygen/html/search/enums_6.html | 0 .../docs/doxygen/html/search/enums_6.js | 2 +- .../docs/doxygen/html/search/enums_7.html | 0 .../docs/doxygen/html/search/enums_7.js | 6 + .../docs/doxygen/html/search/enums_8.html | 0 .../docs/doxygen/html/search/enums_8.js | 2 +- .../docs/doxygen/html/search/enums_9.html | 0 .../docs/doxygen/html/search/enums_9.js | 2 +- .../doxygen/html/search/enumvalues_0.html | 0 .../docs/doxygen/html/search/enumvalues_0.js | 15 + .../doxygen/html/search/enumvalues_1.html | 0 .../docs/doxygen/html/search/enumvalues_1.js | 10 +- .../doxygen/html/search/enumvalues_10.html | 0 .../docs/doxygen/html/search/enumvalues_10.js | 12 +- .../doxygen/html/search/enumvalues_11.html | 0 .../docs/doxygen/html/search/enumvalues_11.js | 4 +- .../doxygen/html/search/enumvalues_12.html | 0 .../docs/doxygen/html/search/enumvalues_12.js | 4 +- .../doxygen/html/search/enumvalues_13.html | 0 .../docs/doxygen/html/search/enumvalues_13.js | 4 +- .../doxygen/html/search/enumvalues_14.html | 0 .../docs/doxygen/html/search/enumvalues_14.js | 4 +- .../doxygen/html/search/enumvalues_15.html | 0 .../docs/doxygen/html/search/enumvalues_15.js | 2 +- .../doxygen/html/search/enumvalues_2.html | 0 .../docs/doxygen/html/search/enumvalues_2.js | 28 +- .../doxygen/html/search/enumvalues_3.html | 0 .../docs/doxygen/html/search/enumvalues_3.js | 6 + .../doxygen/html/search/enumvalues_4.html | 0 .../docs/doxygen/html/search/enumvalues_4.js | 2 +- .../doxygen/html/search/enumvalues_5.html | 0 .../docs/doxygen/html/search/enumvalues_5.js | 10 +- .../doxygen/html/search/enumvalues_6.html | 0 .../docs/doxygen/html/search/enumvalues_6.js | 16 +- .../doxygen/html/search/enumvalues_7.html | 0 .../docs/doxygen/html/search/enumvalues_7.js | 2 +- .../doxygen/html/search/enumvalues_8.html | 0 .../docs/doxygen/html/search/enumvalues_8.js | 2 +- .../doxygen/html/search/enumvalues_9.html | 0 .../docs/doxygen/html/search/enumvalues_9.js | 68 +- .../doxygen/html/search/enumvalues_a.html | 0 .../docs/doxygen/html/search/enumvalues_a.js | 10 +- .../doxygen/html/search/enumvalues_b.html | 0 .../docs/doxygen/html/search/enumvalues_b.js | 27 +- .../doxygen/html/search/enumvalues_c.html | 0 .../docs/doxygen/html/search/enumvalues_c.js | 8 +- .../doxygen/html/search/enumvalues_d.html | 0 .../docs/doxygen/html/search/enumvalues_d.js | 8 + .../doxygen/html/search/enumvalues_e.html | 0 .../docs/doxygen/html/search/enumvalues_e.js | 14 +- .../doxygen/html/search/enumvalues_f.html | 0 .../docs/doxygen/html/search/enumvalues_f.js | 24 +- .../docs/doxygen/html/search/files_0.html | 0 .../docs/doxygen/html/search/files_0.js | 7 + .../docs/doxygen/html/search/files_1.html | 0 .../docs/doxygen/html/search/files_1.js | 8 + .../docs/doxygen/html/search/files_2.html | 0 .../docs/doxygen/html/search/files_2.js | 4 + .../docs/doxygen/html/search/files_3.html | 0 .../docs/doxygen/html/search/files_3.js | 115 + .../docs/doxygen/html/search/files_4.html | 0 .../docs/doxygen/html/search/files_4.js | 4 + .../docs/doxygen/html/search/files_5.html | 0 .../docs/doxygen/html/search/files_5.js | 4 + .../docs/doxygen/html/search/files_6.html | 30 + .../docs/doxygen/html/search/files_6.js | 4 + .../docs/doxygen/html/search/functions_0.html | 0 .../docs/doxygen/html/search/functions_0.js | 21 + .../docs/doxygen/html/search/functions_1.html | 0 .../docs/doxygen/html/search/functions_1.js | 15 + .../doxygen/html/search/functions_10.html | 0 .../docs/doxygen/html/search/functions_10.js | 20 +- .../doxygen/html/search/functions_11.html | 0 .../docs/doxygen/html/search/functions_11.js | 459 +-- .../doxygen/html/search/functions_12.html | 0 .../docs/doxygen/html/search/functions_12.js | 42 +- .../doxygen/html/search/functions_13.html | 0 .../docs/doxygen/html/search/functions_13.js | 6 +- .../doxygen/html/search/functions_14.html | 0 .../docs/doxygen/html/search/functions_14.js | 8 +- .../doxygen/html/search/functions_15.html | 0 .../docs/doxygen/html/search/functions_15.js | 4 + .../doxygen/html/search/functions_16.html | 0 .../docs/doxygen/html/search/functions_16.js | 2 +- .../doxygen/html/search/functions_17.html | 0 .../docs/doxygen/html/search/functions_17.js | 4 + .../docs/doxygen/html/search/functions_2.html | 0 .../docs/doxygen/html/search/functions_2.js | 10 +- .../docs/doxygen/html/search/functions_3.html | 0 .../docs/doxygen/html/search/functions_3.js | 66 +- .../docs/doxygen/html/search/functions_4.html | 0 .../docs/doxygen/html/search/functions_4.js | 103 + .../docs/doxygen/html/search/functions_5.html | 0 .../docs/doxygen/html/search/functions_5.js | 48 +- .../docs/doxygen/html/search/functions_6.html | 0 .../docs/doxygen/html/search/functions_6.js | 10 +- .../docs/doxygen/html/search/functions_7.html | 0 .../docs/doxygen/html/search/functions_7.js | 234 +- .../docs/doxygen/html/search/functions_8.html | 0 .../docs/doxygen/html/search/functions_8.js | 24 +- .../docs/doxygen/html/search/functions_9.html | 0 .../docs/doxygen/html/search/functions_9.js | 74 + .../docs/doxygen/html/search/functions_a.html | 0 .../docs/doxygen/html/search/functions_a.js | 4 + .../docs/doxygen/html/search/functions_b.html | 0 .../docs/doxygen/html/search/functions_b.js | 7 + .../docs/doxygen/html/search/functions_c.html | 0 .../docs/doxygen/html/search/functions_c.js | 44 +- .../docs/doxygen/html/search/functions_d.html | 0 .../docs/doxygen/html/search/functions_d.js | 4 + .../docs/doxygen/html/search/functions_e.html | 0 .../docs/doxygen/html/search/functions_e.js | 6 +- .../docs/doxygen/html/search/functions_f.html | 0 .../docs/doxygen/html/search/functions_f.js | 4 + .../docs/doxygen/html/search/mag_sel.png | Bin .../doxygen/html/search/namespaces_0.html | 0 .../docs/doxygen/html/search/namespaces_0.js | 5 + .../doxygen/html/search/namespaces_1.html | 0 .../docs/doxygen/html/search/namespaces_1.js | 4 + .../docs/doxygen/html/search/nomatches.html | 0 .../docs/doxygen/html/search/pages_0.html | 0 .../docs/doxygen/html/search/pages_0.js | 4 + .../docs/doxygen/html/search/pages_1.html | 0 .../docs/doxygen/html/search/pages_1.js | 5 + .../docs/doxygen/html/search/pages_2.html | 0 .../docs/doxygen/html/search/pages_2.js | 4 + .../docs/doxygen/html/search/related_0.html | 0 .../docs/doxygen/html/search/related_0.js | 2 +- .../docs/doxygen/html/search/search.css | 0 .../docs/doxygen/html/search/search.js | 0 .../docs/doxygen/html/search/search_l.png | Bin .../docs/doxygen/html/search/search_m.png | Bin .../docs/doxygen/html/search/search_r.png | Bin .../docs/doxygen/html/search/searchdata.js | 4 +- .../docs/doxygen/html/search/typedefs_0.html | 0 .../docs/doxygen/html/search/typedefs_0.js | 2 +- .../docs/doxygen/html/search/variables_0.html | 0 .../docs/doxygen/html/search/variables_0.js | 71 + .../docs/doxygen/html/search/variables_1.html | 0 .../docs/doxygen/html/search/variables_1.js | 6 + .../doxygen/html/search/variables_10.html | 0 .../docs/doxygen/html/search/variables_10.js | 13 + .../doxygen/html/search/variables_11.html | 0 .../docs/doxygen/html/search/variables_11.js | 29 + .../doxygen/html/search/variables_12.html | 0 .../docs/doxygen/html/search/variables_12.js | 15 + .../doxygen/html/search/variables_13.html | 0 .../docs/doxygen/html/search/variables_13.js | 9 + .../doxygen/html/search/variables_14.html | 0 .../docs/doxygen/html/search/variables_14.js | 6 + .../doxygen/html/search/variables_15.html | 0 .../docs/doxygen/html/search/variables_15.js | 7 + .../doxygen/html/search/variables_16.html | 0 .../docs/doxygen/html/search/variables_16.js | 4 + .../doxygen/html/search/variables_17.html | 0 .../docs/doxygen/html/search/variables_17.js | 2 +- .../docs/doxygen/html/search/variables_2.html | 0 .../docs/doxygen/html/search/variables_2.js | 12 + .../docs/doxygen/html/search/variables_3.html | 0 .../docs/doxygen/html/search/variables_3.js | 19 + .../docs/doxygen/html/search/variables_4.html | 0 .../docs/doxygen/html/search/variables_4.js | 12 + .../docs/doxygen/html/search/variables_5.html | 0 .../docs/doxygen/html/search/variables_5.js | 6 + .../docs/doxygen/html/search/variables_6.html | 0 .../docs/doxygen/html/search/variables_6.js | 11 + .../docs/doxygen/html/search/variables_7.html | 0 .../docs/doxygen/html/search/variables_7.js | 8 + .../docs/doxygen/html/search/variables_8.html | 0 .../docs/doxygen/html/search/variables_8.js | 11 +- .../docs/doxygen/html/search/variables_9.html | 0 .../docs/doxygen/html/search/variables_9.js | 2365 ++++++++++++ .../docs/doxygen/html/search/variables_a.html | 0 .../docs/doxygen/html/search/variables_a.js | 9 + .../docs/doxygen/html/search/variables_b.html | 0 .../docs/doxygen/html/search/variables_b.js | 11 + .../docs/doxygen/html/search/variables_c.html | 0 .../docs/doxygen/html/search/variables_c.js | 5 + .../docs/doxygen/html/search/variables_d.html | 0 .../docs/doxygen/html/search/variables_d.js | 30 + .../docs/doxygen/html/search/variables_e.html | 0 .../docs/doxygen/html/search/variables_e.js | 20 + .../docs/doxygen/html/search/variables_f.html | 0 .../docs/doxygen/html/search/variables_f.js | 4 + .../docs/doxygen/html/splitbar.png | Bin .../html/structCoronaSection-members.html | 0 .../doxygen/html/structCoronaSection.html | 7 +- .../html/structirparams__t-members.html | 0 .../docs/doxygen/html/structirparams__t.html | 0 .../html/structmatch__result__t-members.html | 0 .../doxygen/html/structmatch__result__t.html | 0 .../html/structstdAc_1_1state__t-members.html | 0 .../doxygen/html/structstdAc_1_1state__t.html | 0 .../docs/doxygen/html/sync_off.png | Bin .../docs/doxygen/html/sync_on.png | Bin .../docs/doxygen/html/tab_a.png | Bin .../docs/doxygen/html/tab_b.png | Bin .../docs/doxygen/html/tab_h.png | Bin .../docs/doxygen/html/tab_s.png | Bin .../docs/doxygen/html/tabs.css | 0 .../docs/doxygen/html/todo.html | 0 .../html/unionAirwellProtocol-members.html | 0 .../doxygen/html/unionAirwellProtocol.html | 7 +- .../html/unionAmcorProtocol-members.html | 0 .../docs/doxygen/html/unionAmcorProtocol.html | 7 +- .../html/unionArgoProtocol-members.html | 0 .../docs/doxygen/html/unionArgoProtocol.html | 7 +- .../html/unionCarrierProtocol-members.html | 0 .../doxygen/html/unionCarrierProtocol.html | 7 +- .../html/unionCoronaProtocol-members.html | 0 .../doxygen/html/unionCoronaProtocol.html | 11 +- .../html/unionCoronaProtocol__coll__graph.map | 4 + .../html/unionCoronaProtocol__coll__graph.md5 | 1 + .../html/unionCoronaProtocol__coll__graph.png | Bin .../html/unionDaikin128Protocol-members.html | 105 + .../doxygen/html/unionDaikin128Protocol.html | 530 +++ .../html/unionDaikin152Protocol-members.html | 103 + .../doxygen/html/unionDaikin152Protocol.html | 498 +++ .../html/unionDaikin160Protocol-members.html | 97 + .../doxygen/html/unionDaikin160Protocol.html | 402 ++ .../html/unionDaikin176Protocol-members.html | 99 + .../doxygen/html/unionDaikin176Protocol.html | 434 +++ .../html/unionDaikin216Protocol-members.html | 100 + .../doxygen/html/unionDaikin216Protocol.html | 450 +++ .../html/unionDaikin2Protocol-members.html | 133 + .../doxygen/html/unionDaikin2Protocol.html | 996 +++++ .../html/unionDaikin64Protocol-members.html | 97 + .../doxygen/html/unionDaikin64Protocol.html | 402 ++ .../html/unionDaikinESPProtocol-members.html | 120 + .../doxygen/html/unionDaikinESPProtocol.html | 770 ++++ .../html/unionDelonghiProtocol-members.html | 0 .../doxygen/html/unionDelonghiProtocol.html | 97 +- .../html/unionElectraProtocol-members.html | 103 + .../doxygen/html/unionElectraProtocol.html | 498 +++ .../unionGoodweatherProtocol-members.html | 97 + .../html/unionGoodweatherProtocol.html | 402 ++ .../html/unionGreeProtocol-members.html | 0 .../docs/doxygen/html/unionGreeProtocol.html | 129 +- .../html/unionHaierProtocol-members.html | 0 .../docs/doxygen/html/unionHaierProtocol.html | 97 +- .../html/unionHaierYRW02Protocol-members.html | 0 .../doxygen/html/unionHaierYRW02Protocol.html | 113 +- .../html/unionHitachi1Protocol-members.html | 100 + .../doxygen/html/unionHitachi1Protocol.html | 450 +++ .../html/unionHitachi424Protocol-members.html | 97 + .../doxygen/html/unionHitachi424Protocol.html | 402 ++ .../html/unionHitachiProtocol-members.html | 94 + .../doxygen/html/unionHitachiProtocol.html | 354 ++ .../html/unionKelvinatorProtocol-members.html | 114 + .../doxygen/html/unionKelvinatorProtocol.html | 674 ++++ .../doxygen/html/unionLGProtocol-members.html | 88 + .../docs/doxygen/html/unionLGProtocol.html | 258 ++ .../html/unionMideaProtocol-members.html | 16 +- .../docs/doxygen/html/unionMideaProtocol.html | 156 +- .../html/unionVoltasProtocol-members.html | 0 .../doxygen/html/unionVoltasProtocol.html | 133 +- .../doxygen/html/unionmagiquest-members.html | 2 +- .../docs/doxygen/html/unionmagiquest.html | 26 +- .../docs/doxygen/html/zh-CN_8h.html | 0 .../docs/doxygen/html/zh-CN_8h_source.html | 0 .../docs/doxygen_index.md | 0 .../examples/BlynkIrRemote/BlynkIrRemote.ino | 392 +- .../examples/BlynkIrRemote/platformio.ini | 0 .../CommonAcControl/CommonAcControl.ino | 0 .../examples/CommonAcControl/platformio.ini | 0 .../ControlSamsungAC/ControlSamsungAC.ino | 0 .../examples/ControlSamsungAC/platformio.ini | 0 .../DumbIRRepeater/DumbIRRepeater.ino | 0 .../examples/DumbIRRepeater/platformio.ini | 0 .../examples/IRGCSendDemo/IRGCSendDemo.ino | 0 .../examples/IRGCSendDemo/platformio.ini | 0 .../examples/IRGCTCPServer/IRGCTCPServer.ino | 0 .../examples/IRGCTCPServer/platformio.ini | 0 .../examples/IRMQTTServer/IRMQTTServer.h | 0 .../examples/IRMQTTServer/IRMQTTServer.ino | 2 +- .../examples/IRMQTTServer/platformio.ini | 0 .../examples/IRServer/IRServer.ino | 0 .../examples/IRServer/platformio.ini | 0 .../examples/IRrecvDemo/IRrecvDemo.ino | 0 .../examples/IRrecvDemo/platformio.ini | 0 .../examples/IRrecvDump/IRrecvDump.ino | 0 .../examples/IRrecvDump/platformio.ini | 0 .../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 16 + .../examples/IRrecvDumpV2/platformio.ini | 3 + .../examples/IRrecvDumpV3/BaseOTA.h | 0 .../examples/IRrecvDumpV3/IRrecvDumpV3.ino | 16 + .../examples/IRrecvDumpV3/platformio.ini | 0 .../examples/IRsendDemo/IRsendDemo.ino | 0 .../examples/IRsendDemo/platformio.ini | 0 .../IRsendProntoDemo/IRsendProntoDemo.ino | 0 .../examples/IRsendProntoDemo/platformio.ini | 0 .../JVCPanasonicSendDemo.ino | 0 .../JVCPanasonicSendDemo/platformio.ini | 0 .../examples/LGACSend/LGACSend.ino | 0 .../examples/LGACSend/platformio.ini | 0 .../SmartIRRepeater/SmartIRRepeater.ino | 0 .../examples/SmartIRRepeater/platformio.ini | 0 .../examples/TurnOnArgoAC/TurnOnArgoAC.ino | 0 .../examples/TurnOnArgoAC/platformio.ini | 0 .../TurnOnDaikinAC/TurnOnDaikinAC.ino | 0 .../examples/TurnOnDaikinAC/platformio.ini | 0 .../TurnOnFujitsuAC/TurnOnFujitsuAC.ino | 0 .../examples/TurnOnFujitsuAC/platformio.ini | 0 .../examples/TurnOnGreeAC/TurnOnGreeAC.ino | 154 +- .../examples/TurnOnGreeAC/platformio.ini | 0 .../TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino | 0 .../TurnOnKelvinatorAC/platformio.ini | 0 .../TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino | 0 .../TurnOnMitsubishiAC/platformio.ini | 0 .../TurnOnMitsubishiHeavyAc.ino | 0 .../TurnOnMitsubishiHeavyAc/platformio.ini | 0 .../TurnOnPanasonicAC/TurnOnPanasonicAC.ino | 0 .../examples/TurnOnPanasonicAC/platformio.ini | 0 .../TurnOnToshibaAC/TurnOnToshibaAC.ino | 0 .../examples/TurnOnToshibaAC/platformio.ini | 0 .../TurnOnTrotecAC/TurnOnTrotecAC.ino | 0 .../examples/TurnOnTrotecAC/platformio.ini | 0 .../examples/Web-AC-control/README.md | 0 .../examples/Web-AC-control/Web-AC-control.h | 0 .../Web-AC-control/Web-AC-control.ino | 0 .../examples/Web-AC-control/data/favicon.ico | Bin .../Web-AC-control/data/level_1_off.svg | 0 .../Web-AC-control/data/level_1_on.svg | 0 .../Web-AC-control/data/level_2_off.svg | 0 .../Web-AC-control/data/level_2_on.svg | 0 .../Web-AC-control/data/level_3_off.svg | 0 .../Web-AC-control/data/level_3_on.svg | 0 .../Web-AC-control/data/level_4_off.svg | 0 .../Web-AC-control/data/level_4_on.svg | 0 .../examples/Web-AC-control/data/ui.html | 0 .../examples/Web-AC-control/data/ui.js | 0 .../examples/Web-AC-control/platformio.ini | 0 .../examples/Web-AC-control/printscreen.png | Bin .../keywords.txt | 358 +- .../library.json | 2 +- .../library.properties | 2 +- .../platformio.ini | 0 .../pylintrc | 0 .../src/CPPLINT.cfg | 0 .../src/IRac.cpp | 66 +- .../src/IRac.h | 10 +- .../src/IRrecv.cpp | 23 +- .../src/IRrecv.h | 38 +- .../src/IRremoteESP8266.h | 36 +- .../src/IRsend.cpp | 24 +- .../src/IRsend.h | 23 +- .../src/IRtext.cpp | 6 + .../src/IRtext.h | 3 + .../src/IRtimer.cpp | 0 .../src/IRtimer.h | 0 .../src/IRutils.cpp | 18 +- .../src/IRutils.h | 0 .../src/i18n.h | 0 .../src/ir_Airwell.cpp | 16 +- .../src/ir_Airwell.h | 2 + .../src/ir_Aiwa.cpp | 0 .../src/ir_Amcor.cpp | 16 +- .../src/ir_Amcor.h | 1 + .../src/ir_Argo.cpp | 18 +- .../src/ir_Argo.h | 3 +- .../src/ir_Carrier.cpp | 6 +- .../src/ir_Carrier.h | 1 + .../src/ir_Coolix.cpp | 6 +- .../src/ir_Coolix.h | 2 + .../src/ir_Corona.cpp | 0 .../src/ir_Corona.h | 2 + .../src/ir_Daikin.cpp | 1577 ++++---- .../src/ir_Daikin.h | 945 +++-- .../src/ir_Delonghi.cpp | 16 +- .../src/ir_Delonghi.h | 1 + .../src/ir_Denon.cpp | 0 .../src/ir_Dish.cpp | 0 .../src/ir_Doshisha.cpp | 0 .../src/ir_Electra.cpp | 133 +- .../src/ir_Electra.h | 98 +- .../src/ir_EliteScreens.cpp | 81 + .../src/ir_Epson.cpp | 0 .../src/ir_Fujitsu.cpp | 16 +- .../src/ir_Fujitsu.h | 0 .../src/ir_GICable.cpp | 0 .../src/ir_GlobalCache.cpp | 0 .../src/ir_Goodweather.cpp | 155 +- .../src/ir_Goodweather.h | 76 +- .../src/ir_Gree.cpp | 20 +- .../src/ir_Gree.h | 1 + .../src/ir_Haier.cpp | 40 +- .../src/ir_Haier.h | 4 +- .../src/ir_Hitachi.cpp | 527 ++- .../src/ir_Hitachi.h | 260 +- .../src/ir_Inax.cpp | 0 .../src/ir_JVC.cpp | 0 .../src/ir_Kelvinator.cpp | 204 +- .../src/ir_Kelvinator.h | 170 +- .../src/ir_LG.cpp | 256 +- .../src/ir_LG.h | 49 +- .../src/ir_Lasertag.cpp | 0 .../src/ir_Lego.cpp | 0 .../src/ir_Lutron.cpp | 0 .../src/ir_MWM.cpp | 0 .../src/ir_Magiquest.cpp | 0 .../src/ir_Magiquest.h | 0 .../src/ir_Metz.cpp | 0 .../src/ir_Midea.cpp | 264 +- .../src/ir_Midea.h | 99 +- .../IRremoteESP8266-2.7.12/src/ir_Mirage.cpp | 70 + .../src/ir_Mitsubishi.cpp | 60 +- .../src/ir_Mitsubishi.h | 0 .../src/ir_MitsubishiHeavy.cpp | 36 +- .../src/ir_MitsubishiHeavy.h | 0 .../src/ir_Multibrackets.cpp | 0 .../src/ir_NEC.cpp | 0 .../src/ir_NEC.h | 0 .../src/ir_Neoclima.cpp | 18 +- .../src/ir_Neoclima.h | 0 .../src/ir_Nikai.cpp | 0 .../src/ir_Panasonic.cpp | 243 +- .../src/ir_Panasonic.h | 2 + .../src/ir_Pioneer.cpp | 0 .../src/ir_Pronto.cpp | 0 .../src/ir_RC5_RC6.cpp | 0 .../src/ir_RCMM.cpp | 0 .../src/ir_Samsung.cpp | 16 +- .../src/ir_Samsung.h | 0 .../src/ir_Sanyo.cpp | 18 +- .../src/ir_Sanyo.h | 0 .../src/ir_Sharp.cpp | 208 +- .../src/ir_Sharp.h | 30 +- .../src/ir_Sherwood.cpp | 2 +- .../src/ir_Sony.cpp | 0 .../src/ir_Symphony.cpp | 0 .../src/ir_Tcl.cpp | 16 +- .../src/ir_Tcl.h | 0 .../src/ir_Technibel.cpp | 22 +- .../src/ir_Technibel.h | 1 + .../src/ir_Teco.cpp | 18 +- .../src/ir_Teco.h | 0 .../src/ir_Toshiba.cpp | 16 +- .../src/ir_Toshiba.h | 2 +- .../src/ir_Transcold.cpp | 6 +- .../src/ir_Transcold.h | 1 + .../src/ir_Trotec.cpp | 16 +- .../src/ir_Trotec.h | 2 +- .../src/ir_Vestel.cpp | 16 +- .../src/ir_Vestel.h | 0 .../src/ir_Voltas.cpp | 16 +- .../src/ir_Voltas.h | 2 +- .../src/ir_Whirlpool.cpp | 16 +- .../src/ir_Whirlpool.h | 0 .../src/ir_Whynter.cpp | 0 .../src/ir_Zepeal.cpp | 0 .../src/locale/README.md | 0 .../src/locale/de-CH.h | 0 .../src/locale/de-DE.h | 9 + .../src/locale/defaults.h | 21 + .../src/locale/en-AU.h | 0 .../src/locale/en-IE.h | 0 .../src/locale/en-UK.h | 0 .../src/locale/en-US.h | 0 .../src/locale/es-ES.h | 0 .../src/locale/fr-FR.h | 0 .../src/locale/it-IT.h | 0 .../IRremoteESP8266-2.7.12/src/locale/pt-BR.h | 167 + .../src/locale/zh-CN.h | 0 .../test/IRac_test.cpp | 30 +- .../test/IRrecv_test.cpp | 0 .../test/IRrecv_test.h | 0 .../test/IRsend_test.cpp | 0 .../test/IRsend_test.h | 0 .../test/IRutils_test.cpp | 0 .../test/Makefile | 0 .../test/ir_Airwell_test.cpp | 0 .../test/ir_Aiwa_test.cpp | 0 .../test/ir_Amcor_test.cpp | 0 .../test/ir_Argo_test.cpp | 0 .../test/ir_Carrier_test.cpp | 0 .../test/ir_Coolix_test.cpp | 0 .../test/ir_Corona_test.cpp | 0 .../test/ir_Daikin_test.cpp | 0 .../test/ir_Delonghi_test.cpp | 0 .../test/ir_Denon_test.cpp | 0 .../test/ir_Dish_test.cpp | 0 .../test/ir_Doshisha_test.cpp | 0 .../test/ir_Electra_test.cpp | 0 .../test/ir_EliteScreens_test.cpp | 140 + .../test/ir_Epson_test.cpp | 0 .../test/ir_Fujitsu_test.cpp | 0 .../test/ir_GICable_test.cpp | 0 .../test/ir_GlobalCache_test.cpp | 0 .../test/ir_Goodweather_test.cpp | 0 .../test/ir_Gree_test.cpp | 0 .../test/ir_Haier_test.cpp | 0 .../test/ir_Hitachi_test.cpp | 0 .../test/ir_Inax_test.cpp | 0 .../test/ir_JVC_test.cpp | 0 .../test/ir_Kelvinator_test.cpp | 0 .../test/ir_LG_test.cpp | 89 +- .../test/ir_Lasertag_test.cpp | 0 .../test/ir_Lego_test.cpp | 0 .../test/ir_Lutron_test.cpp | 0 .../test/ir_MWM_test.cpp | 0 .../test/ir_Magiquest_test.cpp | 0 .../test/ir_Metz_test.cpp | 0 .../test/ir_Midea_test.cpp | 411 +- .../test/ir_Mirage_test.cpp | 124 + .../test/ir_MitsubishiHeavy_test.cpp | 0 .../test/ir_Mitsubishi_test.cpp | 0 .../test/ir_Multibrackets_test.cpp | 0 .../test/ir_NEC_test.cpp | 0 .../test/ir_Neoclima_test.cpp | 0 .../test/ir_Nikai_test.cpp | 0 .../test/ir_Panasonic_test.cpp | 247 +- .../test/ir_Pioneer_test.cpp | 0 .../test/ir_Pronto_test.cpp | 0 .../test/ir_RC5_RC6_test.cpp | 0 .../test/ir_RCMM_test.cpp | 0 .../test/ir_Samsung_test.cpp | 0 .../test/ir_Sanyo_test.cpp | 0 .../test/ir_Sharp_test.cpp | 266 +- .../test/ir_Sherwood_test.cpp | 0 .../test/ir_Sony_test.cpp | 0 .../test/ir_Symphony_test.cpp | 0 .../test/ir_Tcl_test.cpp | 0 .../test/ir_Technibel_test.cpp | 0 .../test/ir_Teco_test.cpp | 0 .../test/ir_Toshiba_test.cpp | 0 .../test/ir_Transcold_test.cpp | 0 .../test/ir_Trotec_test.cpp | 0 .../test/ir_Vestel_test.cpp | 0 .../test/ir_Voltas_test.cpp | 0 .../test/ir_Whirlpool_test.cpp | 0 .../test/ir_Whynter_test.cpp | 0 .../test/ir_Zepeal_test.cpp | 0 .../tools/Makefile | 0 .../tools/RawToGlobalCache.sh | 0 .../tools/auto_analyse_raw_data.py | 0 .../tools/auto_analyse_raw_data_test.py | 0 .../tools/gc_decode.cpp | 0 .../tools/generate_irtext_h.sh | 0 .../tools/mkkeywords | 0 .../tools/mode2_decode.cpp | 0 .../tools/raw_to_pronto_code.py | 0 .../tools/raw_to_pronto_code_test.py | 0 .../tools/scrape_supported_devices.py | 0 1650 files changed, 40621 insertions(+), 31003 deletions(-) delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/annotated.html delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRVoltas__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/hierarchy.html delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_0.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__LG_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Midea_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_17.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1a.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1b.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_17.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_13.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_14.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_16.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.github/CONTRIBUTING.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.github/Contributors.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.github/issue_template.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.gitignore (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.gitmodules (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.style.yapf (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/.travis.yml (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/CPPLINT.cfg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/Doxyfile (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/LICENSE.txt (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/README.md (98%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/README_de.md rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/README_fr.md (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/ReleaseNotes.md (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/SupportedProtocols.md (90%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/README.md (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_de.md rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/README_fr.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/_config.yml (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRac_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRac_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRac_8h_source.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRrecv_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRrecv_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRrecv_8h_source.html (92%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRremoteESP8266_8h.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRremoteESP8266_8h_source.html (82%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRsend_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRsend_8h.html (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRsend_8h_source.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtext_8cpp.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtext_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtext_8h_source.html (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtimer_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtimer_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRtimer_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRutils_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRutils_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/IRutils_8h_source.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/README_8md.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/annotated.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/bc_s.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/bdwn.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAirwellAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAirwellAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAirwellAc__coll__graph.map (80%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAirwellAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAmcorAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAmcorAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAmcorAc__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRAmcorAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRArgoAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRArgoAC.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRArgoAC__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRArgoAC__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRArgoAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCarrierAc64-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCarrierAc64.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCarrierAc64__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCarrierAc64__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoolixAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoolixAC.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoolixAC__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoolixAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoronaAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoronaAc.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoronaAc__coll__graph.map (70%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRCoronaAc__coll__graph.png (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin128-members.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin128.html (78%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin128__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin128__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin128__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin152-members.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin152.html (82%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin152__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin152__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin152__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin160-members.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin160.html (84%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin160__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin160__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin160__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin176-members.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin176.html (85%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin176__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin176__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin176__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin2-members.html (66%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin2.html (77%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin216-members.html (66%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin216.html (83%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin216__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin216__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin216__coll__graph.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin2__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin2__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin2__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin64-members.html (70%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikin64.html (82%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin64__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin64__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikin64__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikinESP-members.html (68%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDaikinESP.html (84%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikinESP__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDaikinESP__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDelonghiAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDelonghiAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDelonghiAc__coll__graph.map (80%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRDelonghiAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRElectraAc-members.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRElectraAc.html (86%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRElectraAc__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRElectraAc__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRElectraAc__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRFujitsuAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRFujitsuAC.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRFujitsuAC__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRFujitsuAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGoodweatherAc-members.html (64%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGoodweatherAc.html (84%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGreeAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGreeAC.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGreeAC__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRGreeAC__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRGreeAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierAC.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierACYRW02-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierACYRW02.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map (80%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierAC__coll__graph.map (78%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHaierAC__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHaierAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc-members.html (66%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc1-members.html (68%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc1.html (85%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc1__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc1__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc3-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc3.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc344-members.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc344.html (79%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc344__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc344__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc3__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc3__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc424-members.html (68%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc424.html (85%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc424__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc424__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRHitachiAc__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRKelvinatorAC-members.html (66%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRKelvinatorAC.html (86%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRLgAc-members.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRLgAc.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRLgAc__coll__graph.map (55%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRLgAc__coll__graph.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRLgAc__coll__graph.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMideaAC-members.html (54%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMideaAC.html (66%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMideaAC__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRMideaAC__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMideaAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi112-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi112.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi112__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi112__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi136-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi136.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi136__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishi136__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiAC.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRNeoclimaAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRNeoclimaAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRPanasonicAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRPanasonicAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRPanasonicAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRPanasonicAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSamsungAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSamsungAc.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSamsungAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSamsungAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSanyoAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSanyoAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSanyoAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSanyoAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSharpAc-members.html (53%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSharpAc.html (86%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSharpAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSharpAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRSharpAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTcl112Ac-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTcl112Ac.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTcl112Ac__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTcl112Ac__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTechnibelAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTechnibelAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTechnibelAc__coll__graph.map (60%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTechnibelAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTecoAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTecoAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTecoAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTecoAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTecoAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRToshibaAC-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRToshibaAC.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRToshibaAC__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRToshibaAC__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTranscoldAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTranscoldAc.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTranscoldAc__coll__graph.map (60%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTranscoldAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTrotecESP-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTrotecESP.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTrotecESP__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRTrotecESP__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVestelAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVestelAc.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVestelAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVestelAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVestelAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVoltas-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVoltas.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVoltas__coll__graph.map (81%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/classIRVoltas__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRVoltas__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRWhirlpoolAc-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRWhirlpoolAc.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRac-members.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRac.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRac__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRac__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRac__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRrecv-members.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRrecv.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRrecv__coll__graph.map (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRrecv__coll__graph.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRrecv__coll__graph.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRsend-members.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRsend.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRtimer-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classIRtimer.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classTimerMs-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classTimerMs.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classdecode__results-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classdecode__results.html (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/classes.html (74%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/closed.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/de-CH_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/de-CH_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/de-DE_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/de-DE_8h_source.html (90%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/defaults_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/defaults_8h_source.html (72%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/deprecated.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/doc.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/doxygen.css (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/doxygen.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/doxygen__index_8md.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/dynsections.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-AU_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-AU_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-IE_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-IE_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-UK_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-UK_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-US_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/en-US_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/es-ES_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/es-ES_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/files.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/folderclosed.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/folderopen.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/fr-FR_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/fr-FR_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions.html (59%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_a.html (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_b.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_c.html (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_d.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_e.html (90%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_f.html (73%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func.html (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_a.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_b.html (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_c.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_d.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_e.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_f.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_g.html (71%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_i.html (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_k.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_l.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_m.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_n.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_o.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_p.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_r.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_s.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_t.html (86%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_u.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_v.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_w.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_func_~.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_g.html (71%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_h.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_i.html (92%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_k.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_l.html (88%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_m.html (76%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_n.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_o.html (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_p.html (50%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_q.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_r.html (82%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_rela.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_s.html (90%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_t.html (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_u.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_v.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars.html (57%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_a.html (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_b.html (88%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_c.html (70%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_d.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_e.html (82%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_f.html (71%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_h.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_i.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_l.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_m.html (69%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_n.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_o.html (67%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/functions_vars_p.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_q.html (86%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_r.html (80%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_s.html (55%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_t.html (72%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_u.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_v.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_w.html (92%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_x.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_vars_z.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_w.html (92%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_x.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_z.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/functions_~.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_a.html (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_c.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_d.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_e.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_enum.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_eval.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_f.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_func.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_g.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_i.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_j.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_k.html (88%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_l.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_m.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_n.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_p.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_r.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_s.html (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_t.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_type.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_u.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_v.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_vars.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_vars_i.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_vars_k.html (88%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_w.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_x.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_y.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/globals_z.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/graph_legend.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/graph_legend.md5 (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/graph_legend.png (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/hierarchy.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/i18n_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/i18n_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/index.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_0.map (62%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_0.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_0.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_1.map (63%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_1.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_1.png (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_10.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_10.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_10.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_11.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_11.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_11.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_12.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_12.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_12.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_13.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_13.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_13.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_14.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_14.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_6.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_14.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_15.map} (61%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_15.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_15.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_16.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_16.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_16.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_17.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_17.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_17.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_18.map} (64%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_18.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_18.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_19.map} (59%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_19.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_19.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_2.map (64%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_2.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_2.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_20.map} (60%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_20.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_20.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_21.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_21.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_21.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_22.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_22.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_22.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_23.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_23.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_23.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_24.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_24.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_11.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_24.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_25.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_25.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_12.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_25.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_26.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_26.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_13.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_26.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_27.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_27.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_14.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_27.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_28.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_28.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_15.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_28.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_29.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_29.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_16.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_29.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_3.map (62%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_3.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_3.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_30.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_30.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_17.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_30.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_31.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_31.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_18.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_31.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_32.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_32.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_19.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_32.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_33.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_33.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_20.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_33.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_34.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_34.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_21.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_34.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_35.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_35.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_22.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_35.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_36.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_36.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_23.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_36.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_37.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_37.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_24.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_37.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_38.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_38.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_25.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_38.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_39.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_39.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_26.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_39.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_4.map (62%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_4.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_4.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_40.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_40.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_27.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_40.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_41.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_41.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_28.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_41.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_42.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_42.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_29.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_42.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_43.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_43.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_30.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_43.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_44.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_44.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_31.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_44.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_45.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_45.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_32.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_45.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_46.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_46.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_33.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_46.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_47.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_47.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_34.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_47.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_48.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_48.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_35.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_48.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_49.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_49.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_36.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_49.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_5.map (59%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_5.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherit_graph_5.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_50.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_50.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_37.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_50.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_51.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_51.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_38.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_51.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_52.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_52.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_39.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_52.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_53.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_53.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_40.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_53.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_54.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_54.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_41.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_54.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_55.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_55.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_42.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_55.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_56.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_56.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_43.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_56.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_57.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_57.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_44.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_57.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_58.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_58.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_45.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_58.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_59.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_59.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_46.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_59.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_6.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_6.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_6.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_60.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_60.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_47.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_60.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_61.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_61.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_48.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_61.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_62.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_62.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_49.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_62.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_63.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_63.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_50.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_63.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_64.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_64.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_51.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_64.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_65.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_65.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_52.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_65.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_66.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_66.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_53.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_66.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_67.map} (61%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_67.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_67.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_68.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_68.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_55.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_68.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_69.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_69.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_56.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_69.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_7.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_7.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_7.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_70.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_70.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_57.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_70.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_71.map} (61%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_71.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_71.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_72.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_72.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_59.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_72.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_73.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_73.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_60.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_73.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_74.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_74.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_61.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_74.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_75.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_75.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_62.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_75.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_76.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_76.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_76.png create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_77.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_77.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_77.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_78.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_78.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_63.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_78.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_79.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_79.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_64.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_79.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_8.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_8.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_8.png rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_80.map} (63%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_80.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_80.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_81.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_81.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_66.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_81.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_82.map} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.md5 => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_82.md5} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_67.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_82.png} (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.map => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_83.map} (62%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_83.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.png => IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_83.png} (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_9.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_9.md5 create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/inherit_graph_9.png rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/inherits.html (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Airwell_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Airwell_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Airwell_8h_source.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Aiwa_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Amcor_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Amcor_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Amcor_8h_source.html (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Argo_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Argo_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Argo_8h_source.html (82%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Carrier_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Carrier_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Carrier_8h_source.html (84%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Coolix_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Coolix_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Coolix_8h_source.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Corona_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Corona_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Corona_8h_source.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Daikin_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Daikin_8h.html (51%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Daikin_8h_source.html (53%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Delonghi_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Delonghi_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Delonghi_8h_source.html (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Denon_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Dish_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Doshisha_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Electra_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Electra_8h.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Electra_8h_source.html (58%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/ir__EliteScreens_8cpp.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Epson_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Fujitsu_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Fujitsu_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Fujitsu_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__GICable_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__GlobalCache_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Goodweather_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Goodweather_8h.html (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Goodweather_8h_source.html (63%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Gree_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Gree_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Gree_8h_source.html (84%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Haier_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Haier_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Haier_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Hitachi_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Hitachi_8h.html (69%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Hitachi_8h_source.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Inax_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__JVC_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Kelvinator_8cpp.html (65%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Kelvinator_8h.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Kelvinator_8h_source.html (54%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/ir__LG_8cpp.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__LG_8h.html (64%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__LG_8h_source.html (65%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Lasertag_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Lego_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Lutron_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__MWM_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Magiquest_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Magiquest_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Magiquest_8h_source.html (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Metz_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Midea_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Midea_8h.html (58%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/ir__Midea_8h_source.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/ir__Mirage_8cpp.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__MitsubishiHeavy_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Mitsubishi_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Mitsubishi_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Mitsubishi_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Multibrackets_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__NEC_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__NEC_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__NEC_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Neoclima_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Neoclima_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Neoclima_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Nikai_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Panasonic_8cpp.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Panasonic_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Panasonic_8h_source.html (84%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Pioneer_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Pronto_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__RC5__RC6_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__RCMM_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Samsung_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Samsung_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Samsung_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sanyo_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sanyo_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sanyo_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sharp_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sharp_8h.html (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sharp_8h_source.html (74%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sherwood_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Sony_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Symphony_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Tcl_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Tcl_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Tcl_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Technibel_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Technibel_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Technibel_8h_source.html (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Teco_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Teco_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Teco_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Toshiba_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Toshiba_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Toshiba_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Transcold_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Transcold_8h.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Transcold_8h_source.html (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Trotec_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Trotec_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Trotec_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Vestel_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Vestel_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Vestel_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Voltas_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Voltas_8h.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Voltas_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Whirlpool_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Whirlpool_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Whirlpool_8h_source.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Whynter_8cpp.html (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/ir__Zepeal_8cpp.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/it-IT_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/it-IT_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/jquery.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/md_src_locale_README.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/menu.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/menudata.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespaceIRAcUtils.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespaceirutils.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespacemembers.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespacemembers_enum.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespacemembers_func.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespaces.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/namespacestdAc.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/nav_f.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/nav_g.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/nav_h.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/open.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/pages.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11/docs/doxygen/html/functions_vars_p.html => IRremoteESP8266-2.7.12/docs/doxygen/html/pt-BR_8h.html} (53%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/pt-BR_8h_source.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_10.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_10.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_11.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_11.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_12.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_12.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_13.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_13.js (69%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_14.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_14.js (69%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_15.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_15.js (54%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_16.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_16.js (85%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_17.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_17.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_18.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_18.js (52%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_19.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_19.js (54%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_1a.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_1a.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_1b.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_1b.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_2.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_2.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_3.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_3.js (70%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_4.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_4.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_5.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_5.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_6.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_6.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_7.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_7.js (55%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_8.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_8.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_9.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_9.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_a.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_a.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_b.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_b.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_c.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_c.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_d.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/all_d.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_e.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_e.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_f.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/all_f.js (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_2.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_2.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_3.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_3.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_4.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_4.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_5.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_5.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_6.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_6.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_7.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_7.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_8.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_8.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/classes_9.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_9.js create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_a.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_a.js create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_b.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_b.js create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_c.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/classes_c.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/close.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_0.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_0.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_1.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_1.js (53%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_2.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_2.js (59%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_3.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_3.js (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_4.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_4.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_5.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/enums_5.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_6.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_6.js (62%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_7.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/enums_7.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_8.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_8.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_9.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enums_9.js (62%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/enumvalues_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_1.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_1.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_10.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_10.js (59%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_11.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_11.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_12.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_12.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_13.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_13.js (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_14.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_14.js (54%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_15.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_15.js (62%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_2.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_2.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_3.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/enumvalues_3.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_4.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_4.js (64%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_5.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_5.js (59%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_6.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_6.js (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_7.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_7.js (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_8.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_8.js (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_9.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_9.js (62%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_a.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_a.js (57%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_b.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_b.js (56%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_c.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_c.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_d.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/enumvalues_d.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_e.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_e.js (57%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_f.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/enumvalues_f.js (58%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_2.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_2.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_3.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_3.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_4.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_4.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/files_5.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_5.js create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_6.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/files_6.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_10.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_10.js (75%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_11.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_11.js (76%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_12.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_12.js (79%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_13.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_13.js (71%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_14.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_14.js (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_15.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_15.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_16.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_16.js (82%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_17.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_17.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_2.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_2.js (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_3.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_3.js (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_4.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_4.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_5.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_5.js (52%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_6.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_6.js (62%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_7.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_7.js (55%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_8.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_8.js (52%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_9.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_9.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_a.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_a.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_b.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_b.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_c.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_c.js (57%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_d.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_d.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_e.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_e.js (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/functions_f.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/functions_f.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/mag_sel.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/namespaces_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/namespaces_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/namespaces_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/namespaces_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/nomatches.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/pages_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/pages_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/pages_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/pages_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/pages_2.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/pages_2.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/related_0.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/related_0.js (57%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/search.css (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/search.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/search_l.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/search_m.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/search_r.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/searchdata.js (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/typedefs_0.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/typedefs_0.js (53%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_0.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_0.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_1.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_1.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_10.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_10.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_11.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_11.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_12.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_12.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_13.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_13.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_14.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_14.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_15.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_15.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_16.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_16.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_17.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_17.js (55%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_2.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_2.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_3.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_3.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_4.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_4.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_5.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_5.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_6.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_6.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_7.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_7.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_8.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_8.js (50%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_9.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_9.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_a.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_a.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_b.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_b.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_c.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_c.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_d.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_d.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_e.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_e.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/search/variables_f.html (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/search/variables_f.js rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/splitbar.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structCoronaSection-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structCoronaSection.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structirparams__t-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structirparams__t.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structmatch__result__t-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structmatch__result__t.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structstdAc_1_1state__t-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/structstdAc_1_1state__t.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/sync_off.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/sync_on.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/tab_a.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/tab_b.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/tab_h.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/tab_s.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/tabs.css (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/todo.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionAirwellProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionAirwellProtocol.html (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionAmcorProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionAmcorProtocol.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionArgoProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionArgoProtocol.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionCarrierProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionCarrierProtocol.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionCoronaProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionCoronaProtocol.html (96%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionCoronaProtocol__coll__graph.map create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionCoronaProtocol__coll__graph.png (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin128Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin128Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin152Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin152Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin160Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin160Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin176Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin176Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin216Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin216Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin2Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin2Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin64Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikin64Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikinESPProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionDaikinESPProtocol.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionDelonghiProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionDelonghiProtocol.html (83%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionElectraProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionElectraProtocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionGoodweatherProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionGoodweatherProtocol.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionGreeProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionGreeProtocol.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionHaierProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionHaierProtocol.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionHaierYRW02Protocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionHaierYRW02Protocol.html (84%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachi1Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachi1Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachi424Protocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachi424Protocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachiProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionHitachiProtocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionKelvinatorProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionKelvinatorProtocol.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionLGProtocol-members.html create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/unionLGProtocol.html rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionMideaProtocol-members.html (76%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionMideaProtocol.html (60%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionVoltasProtocol-members.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionVoltasProtocol.html (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionmagiquest-members.html (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/unionmagiquest.html (90%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/zh-CN_8h.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen/html/zh-CN_8h_source.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/docs/doxygen_index.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/BlynkIrRemote/BlynkIrRemote.ino (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/BlynkIrRemote/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/CommonAcControl/CommonAcControl.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/CommonAcControl/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/ControlSamsungAC/ControlSamsungAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/ControlSamsungAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/DumbIRRepeater/DumbIRRepeater.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/DumbIRRepeater/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRGCSendDemo/IRGCSendDemo.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRGCSendDemo/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRGCTCPServer/IRGCTCPServer.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRGCTCPServer/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRMQTTServer/IRMQTTServer.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRMQTTServer/IRMQTTServer.ino (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRMQTTServer/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRServer/IRServer.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRServer/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDemo/IRrecvDemo.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDemo/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDump/IRrecvDump.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDump/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDumpV2/IRrecvDumpV2.ino (87%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDumpV2/platformio.ini (94%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDumpV3/BaseOTA.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDumpV3/IRrecvDumpV3.ino (88%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRrecvDumpV3/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRsendDemo/IRsendDemo.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRsendDemo/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRsendProntoDemo/IRsendProntoDemo.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/IRsendProntoDemo/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/JVCPanasonicSendDemo/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/LGACSend/LGACSend.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/LGACSend/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/SmartIRRepeater/SmartIRRepeater.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/SmartIRRepeater/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnArgoAC/TurnOnArgoAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnArgoAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnDaikinAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnFujitsuAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnGreeAC/TurnOnGreeAC.ino (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnGreeAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnKelvinatorAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnMitsubishiAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnMitsubishiHeavyAc/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnPanasonicAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnToshibaAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/TurnOnTrotecAC/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/README.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/Web-AC-control.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/Web-AC-control.ino (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/favicon.ico (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_1_off.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_1_on.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_2_off.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_2_on.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_3_off.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_3_on.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_4_off.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/level_4_on.svg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/ui.html (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/data/ui.js (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/examples/Web-AC-control/printscreen.png (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/keywords.txt (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/library.json (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/library.properties (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/platformio.ini (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/pylintrc (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/CPPLINT.cfg (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRac.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRac.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRrecv.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRrecv.h (95%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRremoteESP8266.h (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRsend.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRsend.h (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRtext.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRtext.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRtimer.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRtimer.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRutils.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/IRutils.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/i18n.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Airwell.cpp (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Airwell.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Aiwa.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Amcor.cpp (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Amcor.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Argo.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Argo.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Carrier.cpp (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Carrier.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Coolix.cpp (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Coolix.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Corona.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Corona.h (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Daikin.cpp (72%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Daikin.h (61%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Delonghi.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Delonghi.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Denon.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Dish.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Doshisha.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Electra.cpp (77%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Electra.h (71%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/src/ir_EliteScreens.cpp rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Epson.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Fujitsu.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Fujitsu.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_GICable.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_GlobalCache.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Goodweather.cpp (77%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Goodweather.h (70%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Gree.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Gree.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Haier.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Haier.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Hitachi.cpp (79%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Hitachi.h (75%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Inax.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_JVC.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Kelvinator.cpp (71%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Kelvinator.h (55%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_LG.cpp (67%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_LG.h (75%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Lasertag.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Lego.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Lutron.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_MWM.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Magiquest.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Magiquest.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Metz.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Midea.cpp (69%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Midea.h (57%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/src/ir_Mirage.cpp rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Mitsubishi.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Mitsubishi.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_MitsubishiHeavy.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_MitsubishiHeavy.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Multibrackets.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_NEC.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_NEC.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Neoclima.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Neoclima.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Nikai.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Panasonic.cpp (79%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Panasonic.h (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Pioneer.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Pronto.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_RC5_RC6.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_RCMM.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Samsung.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Samsung.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sanyo.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sanyo.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sharp.cpp (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sharp.h (86%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sherwood.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Sony.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Symphony.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Tcl.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Tcl.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Technibel.cpp (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Technibel.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Teco.cpp (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Teco.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Toshiba.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Toshiba.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Transcold.cpp (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Transcold.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Trotec.cpp (96%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Trotec.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Vestel.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Vestel.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Voltas.cpp (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Voltas.h (99%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Whirlpool.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Whirlpool.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Whynter.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/ir_Zepeal.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/README.md (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/de-CH.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/de-DE.h (91%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/defaults.h (97%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/en-AU.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/en-IE.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/en-UK.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/en-US.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/es-ES.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/fr-FR.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/it-IT.h (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/src/locale/pt-BR.h rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/src/locale/zh-CN.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRac_test.cpp (98%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRrecv_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRrecv_test.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRsend_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRsend_test.h (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/IRutils_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/Makefile (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Airwell_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Aiwa_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Amcor_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Argo_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Carrier_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Coolix_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Corona_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Daikin_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Delonghi_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Denon_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Dish_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Doshisha_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Electra_test.cpp (100%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/test/ir_EliteScreens_test.cpp rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Epson_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Fujitsu_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_GICable_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_GlobalCache_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Goodweather_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Gree_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Haier_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Hitachi_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Inax_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_JVC_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Kelvinator_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_LG_test.cpp (93%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Lasertag_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Lego_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Lutron_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_MWM_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Magiquest_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Metz_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Midea_test.cpp (68%) create mode 100644 lib/lib_basic/IRremoteESP8266-2.7.12/test/ir_Mirage_test.cpp rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_MitsubishiHeavy_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Mitsubishi_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Multibrackets_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_NEC_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Neoclima_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Nikai_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Panasonic_test.cpp (83%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Pioneer_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Pronto_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_RC5_RC6_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_RCMM_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Samsung_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Sanyo_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Sharp_test.cpp (81%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Sherwood_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Sony_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Symphony_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Tcl_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Technibel_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Teco_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Toshiba_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Transcold_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Trotec_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Vestel_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Voltas_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Whirlpool_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Whynter_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/test/ir_Zepeal_test.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/Makefile (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/RawToGlobalCache.sh (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/auto_analyse_raw_data.py (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/auto_analyse_raw_data_test.py (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/gc_decode.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/generate_irtext_h.sh (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/mkkeywords (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/mode2_decode.cpp (100%) rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/raw_to_pronto_code.py (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/raw_to_pronto_code_test.py (100%) mode change 100644 => 100755 rename lib/lib_basic/{IRremoteESP8266-2.7.11 => IRremoteESP8266-2.7.12}/tools/scrape_supported_devices.py (100%) mode change 100644 => 100755 diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a560c5b0..46631d90f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. - Zigbee command ``ZbLeave`` to unpair a device - Command ``SetOption116 1`` to disable auto-query of zigbee light devices (avoids network storms with large groups) - Support for Shelly Dimmer 1 and 2 by James Turton (#9854) +- IRremoteESP8266 library from v2.7.11 to v2.7.12 ### Changed - Core library from v2.7.4.5 to v2.7.4.7 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/annotated.html b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/annotated.html deleted file mode 100644 index fba45bca3..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/annotated.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -IRremoteESP8266: Class List - - - - - - - - - -
      -
      - - - - - - -
      -
      IRremoteESP8266 -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      - -
      - -
      -
      -
      Class List
      -
      -
      -
      Here are the classes, structs, unions and interfaces with brief descriptions:
      -
      [detail level 12]
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       NstdAcEnumerators and Structures for the Common A/C API
       Cstate_tStructure to hold a common A/C state
       CAirwellProtocol
       CAmcorProtocol
       CArgoProtocol
       CCarrierProtocol
       CCoronaProtocol
       CCoronaSection
       Cdecode_resultsResults returned from the decoder
       CDelonghiProtocol
       CGreeProtocol
       CHaierProtocol
       CHaierYRW02Protocol
       CIRacA universal/common/generic interface for controling supported A/Cs
       CIRAirwellAcClass for handling detailed Airwell A/C messages
       CIRAmcorAcClass for handling detailed Amcor A/C messages
       CIRArgoACClass for handling detailed Argo A/C messages
       CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
       CIRCoolixACClass for handling detailed Coolix A/C messages
       CIRCoronaAcClass for handling detailed Corona A/C messages
       CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages
       CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
       CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
       CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
       CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages
       CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
       CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
       CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
       CIRDelonghiAcClass for handling detailed Delonghi A/C messages
       CIRElectraAcClass for handling detailed Electra A/C messages
       CIRFujitsuACClass for handling detailed Fujitsu A/C messages
       CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
       CIRGreeACClass for handling detailed Gree A/C messages
       CIRHaierACClass for handling detailed Haier A/C messages
       CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
       CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
       CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
       CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
       CIRHitachiAc344Class for handling detailed Hitachi 344-bit A/C messages
       CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
       CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
       CIRLgAcClass for handling detailed LG A/C messages
       CIRMideaACClass for handling detailed Midea A/C messages
       CIRMitsubishi112Class for handling detailed Mitsubishi 122-bit A/C messages
       CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
       CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages
       CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
       CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
       CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
       CIRPanasonicAcClass for handling detailed Panasonic A/C messages
       Cirparams_tInformation for the interrupt handler
       CIRrecvClass for receiving IR messages
       CIRSamsungAcClass for handling detailed Samsung A/C messages
       CIRSanyoAcClass for handling detailed Sanyo A/C messages
       CIRsendClass for sending all basic IR protocols
       CIRSharpAcClass for handling detailed Sharp A/C messages
       CIRTcl112AcClass for handling detailed TCL A/C messages
       CIRTechnibelAc
       CIRTecoAcClass for handling detailed Teco A/C messages
       CIRtimerThis class offers a simple counter in micro-seconds since instantiated
       CIRToshibaACClass for handling detailed Toshiba A/C messages
       CIRTranscoldAc
       CIRTrotecESPClass for handling detailed Trotec A/C messages
       CIRVestelAcClass for handling detailed Vestel A/C messages
       CIRVoltasClass for handling detailed Voltas A/C messages
       CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
       CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
       Cmatch_result_tResults from a data match
       CMideaProtocol
       CTimerMsThis class offers a simple counter in milli-seconds since instantiated
       CVoltasProtocol
      -
      -
      - -
      - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 deleted file mode 100644 index d2ad47075..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -03d57403f5e261a4d149af6d97df8c4e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 deleted file mode 100644 index 3953b1330..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -73bc4a9080b6c0dadd1f4f79902d0d9d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.md5 deleted file mode 100644 index 174cba999..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRArgoAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1673306d74a0dede07612dd53392cdb8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 deleted file mode 100644 index 8f52d4d95..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -75315ade61231ea1889aa45e155a131b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 deleted file mode 100644 index 812ddc8d8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d6b86a8011e5a02b46d1cabb7178436f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128-members.html b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128-members.html deleted file mode 100644 index a77e405ef..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128-members.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      IRremoteESP8266 -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - -
      -
      -
      -
      IRDaikin128 Member List
      -
      -
      - -

      This is the complete list of members for IRDaikin128, including all inherited members.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      _irsendIRDaikin128private
      begin()IRDaikin128
      calcFirstChecksum(const uint8_t state[])IRDaikin128privatestatic
      calcSecondChecksum(const uint8_t state[])IRDaikin128privatestatic
      calibrate(void)IRDaikin128inline
      checksum(void)IRDaikin128private
      clearOnTimerFlag(void)IRDaikin128private
      clearSleepTimerFlag(void)IRDaikin128private
      convertFan(const stdAc::fanspeed_t speed)IRDaikin128static
      convertMode(const stdAc::opmode_t mode)IRDaikin128static
      getClock(void)IRDaikin128
      getEcono(void)IRDaikin128
      getFan(void)IRDaikin128
      getLightToggle(void)IRDaikin128
      getMode(void)IRDaikin128
      getOffTimer(void)IRDaikin128
      getOffTimerEnabled(void)IRDaikin128
      getOnTimer(void)IRDaikin128
      getOnTimerEnabled(void)IRDaikin128
      getPowerful(void)IRDaikin128
      getPowerToggle(void)IRDaikin128
      getQuiet(void)IRDaikin128
      getRaw(void)IRDaikin128
      getSleep(void)IRDaikin128
      getSwingVertical()IRDaikin128
      getTemp(void)IRDaikin128
      getTimer(const uint8_t *ptr)IRDaikin128privatestatic
      IRDaikin128(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin128explicit
      remote_stateIRDaikin128private
      send(const uint16_t repeat=kDaikin128DefaultRepeat)IRDaikin128
      setClock(const uint16_t mins_since_midnight)IRDaikin128
      setEcono(const bool on)IRDaikin128
      setFan(const uint8_t fan)IRDaikin128
      setLightToggle(const uint8_t unit_type)IRDaikin128
      setMode(const uint8_t mode)IRDaikin128
      setOffTimer(const uint16_t mins_since_midnight)IRDaikin128
      setOffTimerEnabled(const bool on)IRDaikin128
      setOnTimer(const uint16_t mins_since_midnight)IRDaikin128
      setOnTimerEnabled(const bool on)IRDaikin128
      setPowerful(const bool on)IRDaikin128
      setPowerToggle(const bool toggle)IRDaikin128
      setQuiet(const bool on)IRDaikin128
      setRaw(const uint8_t new_code[])IRDaikin128
      setSleep(const bool on)IRDaikin128
      setSwingVertical(const bool on)IRDaikin128
      setTemp(const uint8_t temp)IRDaikin128
      setTimer(uint8_t *ptr, const uint16_t mins_since_midnight)IRDaikin128privatestatic
      stateReset(void)IRDaikin128private
      toCommon(const stdAc::state_t *prev=NULL)IRDaikin128
      toCommonFanSpeed(const uint8_t speed)IRDaikin128static
      toCommonMode(const uint8_t mode)IRDaikin128static
      toString(void)IRDaikin128
      validChecksum(uint8_t state[])IRDaikin128static
      - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.map deleted file mode 100644 index e003674e2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.md5 deleted file mode 100644 index bd3c54882..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a05c0f73a95b804c11a7e31c5e3a1d8a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin128__coll__graph.png deleted file mode 100644 index aeb1a1b31d451748e867ddc96af558811b0b77a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3291 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 Q{H=g=Q3hI7n)Z+X1z)*qQ2+n{ diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.map deleted file mode 100644 index e246fb533..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.md5 deleted file mode 100644 index 193be7839..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3bbfb60d234bb57df5106a32f8aecca3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin152__coll__graph.png deleted file mode 100644 index cf4e791ca999ab9af56e4d802b6433bf9edebeb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3202 zcmY+H2{=@38^>qJ8e*~=q==L?46*~QG*5OnnCENCF5gFqZGxS^g6hOm|!W@S4x6_L+*nw`0WwH>aX zYC|MYgwE!gb4*#vx=si4^0OMxrX z@rj8q>gw=}EL=Y8Uo{vQ8RK!dR@aKlqUeWvE-9CPhS zFNnm)+96xtJEikE?&q?^Gz9Yq-bv|AlQJ_jH8oA~zl>^67Cqm%vmm0~P+E$pA(IoQ zv3qM(?^b9urc`R(kS`7MhL$*9qb8|~b)m2sOmsM0$;_!H3aGY6|{PObr z{5%7Vz|V?*vg8#PkS3`YikQ4 z=!6MJbf!zw1dKm_{`|hW+IOKxs3BBbT>RkY?~OU|(#p#7!a{Ih;I`N@7!2MjT}QbZ zn$^cwSHpsWf+)koKW1aaS0<8-&H$e*r+c)25lEC{EG)Oxazk8?b7`AEa;o(t( zJkoa=GDXq*g{P*#Q{whho585kI@zjXq`;cyjI zRivF=$74>B$Ay{UNysxir!+K#D#m&`#KU`@UrAIHtV znR_m!sQBdVTgA}OP!j~=td5SDo!tm{t^1BLdUM4Vm_9Bp?v%Xz=RDiJkWt#5#9&^j zM^*xA3E=1diU`Q_0-!^IJeXu~sNSa^AA9g!@nfMu?COos4>!yF4F;WhR4Q6r1e2#f zmPW^l_UaN{LEmSyN1#x)08uSZSbQ>Z51+LEMfOodO~M#XNP(VhFpkgN8{vBs&gwbB zwAlE8y5zH(@E-DdyQ)CLeWnQ6P}bHzJIZ%X%6_~=1-kOlm5=px!J!jN=9ZUn>|I#V zQ%oIInR*mEP{5{cE#aLm`&a8q+OQZ+?bwji54BeVa1|J8aUfiir%Lyh-^2_xymVj; zGl`BI<5`v*UjKj_b|@jJBC=3oTbRd;%aYf!-v82KKRV&eN7yA+W_jbVMQNi`PKEO} z0u2Eu)_WT63thE`ET&0nMQPV7%J`%g8_9cwj(e2Mu0WM8sq&)DWJ|d>lTj;W8Ld2K z-JSBKlK0*7j0 zto#B46Vs(F*#!gyHd;>T#sMjeUiu=Dnwd#lOu^xJot>SZ15&?P`|wKr{*P{#^{=(f z9+fNeJ3Bk^`Pf~!UqC#sHmvjTx*0! z{5*|jxU*ZQ7e<1`3keDB?wSw;tyD>jAN%?&kF+4t%rUqyoYsg1EaISeV^~T@X9^v8Xi?;apz{~$Kt)vO=Hm)hSFgHM@4twY z5DKir9t7|2@0*yK4veHgH5ejZzdjGd*LA)tLu=<-x^|=Q#lF$<+Z#WAPys(YtEq_x zXv2k>o~U{tV)G`tH$OeSWqpzi_Idb_N~Sl`QV-Y3^mhQH#3mpoPsS%FGZz#WCqzXt zAPDMBfbRzFZ*;&-Og{GZKCnW6Wh0BmBauj(YuA1Z*`avE#1O8oM4i6wk|2N|n7y@X z;Jv4nlv3#*#5G`x00)65)3US2-16>rXCiOhc%=YiV)(YWSmDyf&VKxOXIIyA;B5o~ zK_aPtz4sNcmekbLd-&l+!iC%IxYIKL8XC)5R4}Cv20dC65#wMYn@-*YT zU0QyA8L25Z$2hUAxjjiFXg|&3aw| zf%N=*%YXniV0}jgUF#>vFcNcgq(5yKeYhV4%r)VC2#~hEp_OF zl9CdTVS|&CVGhB8fw0ZZ&Cu^nEI=I62m~C_{rUy|N8CVVGe@O1(?1*`00aE6=Nk~P zP&wk*GCiG7q1cR%kFO%-Kxz-h4gLL9`4eMSRy-d1`ewtt^RT=N^Ya^pI}d?$9;@~i2du3IJ#|4=wz;j1NkKsY*y$@?UZq&Diu-_MUie|qz~JEW z(vnjUj`)Ne~d!r>?Gn5pNxf(S{IMUS8g# z*w~*_A#|jJLt>MYQ&SYvZmZF)Teo<5c|qJFBCoS%snmhnRkI(uA4JCnu8m(YH^&9@ zsx||90jlG2m$rn70i&?$9DVpxhW|s<-<_q3js?UVlwlK=3OF!%}^xsQ&;RS}P9# diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.map deleted file mode 100644 index 0a46ed86a..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.md5 deleted file mode 100644 index dadb00bba..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fbc66f5a6991bf58f0872d9bbb55a5da \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin160__coll__graph.png deleted file mode 100644 index 4646db8e9ce3904ada8b7ffab6b72aa73ecf3fbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3302 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 - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.md5 deleted file mode 100644 index 46c8fe910..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e1b4fd7ddfe8c5ab5d5bb1cf9d344bc4 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin176__coll__graph.png deleted file mode 100644 index 44469aecec9969597121cfc80b7b6396e9dce0ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3228 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 VUg(G0!0!ggK-Wm8Ow0Dqe*w_}U8w*7 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.map deleted file mode 100644 index a2be3b0a2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.md5 deleted file mode 100644 index 8b015e855..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -376e63c140c9b990fbd05013138184b0 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin216__coll__graph.png deleted file mode 100644 index 40e2871efc17ef7d50bf67a62b4657900be91d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3277 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 JTGRgFKLBqsI{E+r diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.map deleted file mode 100644 index 8ea4cae8d..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.md5 deleted file mode 100644 index ae40479d2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -36c4ca8dee2a48c9012eb53961c84d46 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin2__coll__graph.png deleted file mode 100644 index a8a2b148e774f7449fb4f4e2ac0b56dc9dec73ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3012 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 - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.md5 deleted file mode 100644 index 40836ffaa..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b2bb54fe62558d21dee90dc29baf242d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikin64__coll__graph.png deleted file mode 100644 index b66057e113bef90d50a81d4da26c623cae284898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3190 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 - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 deleted file mode 100644 index 108e7de33..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -68cef74e6daf013f3d7f49c1a7c4d7f5 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDaikinESP__coll__graph.png deleted file mode 100644 index b2c21d84a3d16acdd9f876a6bd0f5045c3c04743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3212 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 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 deleted file mode 100644 index 91935a47d..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -001913f5717c67cc96fc144a190bfb18 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.map deleted file mode 100644 index 2ca5c6051..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.md5 deleted file mode 100644 index ec7416486..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b6e5f96f14e5e22330cef83a09e5f30d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRElectraAc__coll__graph.png deleted file mode 100644 index e49f5d0ec77f1592c5866ed19cd0939087f865f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3217 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 BVk!Ut diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map deleted file mode 100644 index 660cc0842..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 deleted file mode 100644 index 960e5d2a0..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bce379f76240220988c09046a0d5f283 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png deleted file mode 100644 index b9f6e66cbcbaa16378d20cb12863238be65e269d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4102 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 M_q3HO6m5e41NUhA00000 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 deleted file mode 100644 index 20f43e790..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRGreeAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -223397f2019d344aca6bcc75d6a4b8e1 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 deleted file mode 100644 index 809db6346..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bbe7ca08b7bf97faaab60524b2e2b117 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 deleted file mode 100644 index 587e7cb5d..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHaierAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7589ca81430e305874791fbe16c1741f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map deleted file mode 100644 index 09fed2d72..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 deleted file mode 100644 index 74b080a45..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -887e1bb9117f6436abfa2cfbb296e5b6 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc1__coll__graph.png deleted file mode 100644 index 5fa4b63449446dea973d1bb5b232765499b6ca87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3046 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 - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 deleted file mode 100644 index 0f6757465..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bc686b22e4ddf734f61a87c2609dac47 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc344__coll__graph.png deleted file mode 100644 index 2ba11bc4899b99824a53dc0e9d2191e99fba6556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5244 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 - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 deleted file mode 100644 index 1ac39cb1f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e27758fabb1539bba026d03c86a2d75d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc424__coll__graph.png deleted file mode 100644 index 3bb4db79f7cf88a57187fa918a7b8b9560601024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3350 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 - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 deleted file mode 100644 index 16865578f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -aeb4ec71968654b70565a578d510a768 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRHitachiAc__coll__graph.png deleted file mode 100644 index 3f092bb9a7e947787625a7b3fed71304a58484a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3005 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 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map deleted file mode 100644 index 40f1acb8c..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 deleted file mode 100644 index 5fe2723e9..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bb0276d1879b23e51b948f404eb3a682 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png deleted file mode 100644 index e06512959fbeb287bc910895091ed10d6fdbb38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3684 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 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 deleted file mode 100644 index 0626aca74..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -56fb7c83360ef1487cea622f026510d6 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRLgAc__coll__graph.png deleted file mode 100644 index 3fabc33867e7704974b05da754ddbc8f565ffaa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2873 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 diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 deleted file mode 100644 index cf0a7d523..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRMideaAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -331e64d477510c44f468a1a2430d510d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 deleted file mode 100644 index 8b6a349ab..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6b02c0091fdf80527c5f55505345ba00 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 deleted file mode 100644 index 5220daafc..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -58ec13aaee4c91bc1c2d7f8dba6722ef \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRVoltas__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRVoltas__coll__graph.md5 deleted file mode 100644 index 42cf8d306..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/classIRVoltas__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -53fa1f7a656a8aea1c43d73b92ba5ce7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/hierarchy.html b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/hierarchy.html deleted file mode 100644 index d5251df73..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/hierarchy.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Hierarchy - - - - - - - - - -
      -
      - - - - - - -
      -
      IRremoteESP8266 -
      -
      -
      - - - - - - - -
      - -
      -
      - - -
      - -
      - -
      -
      -
      Class Hierarchy
      -
      -
      -
      -

      Go to the graphical class hierarchy

      -This inheritance list is sorted roughly, but not completely, alphabetically:
      -
      [detail level 12]
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       CAirwellProtocol
       CAmcorProtocol
       CArgoProtocol
       CCarrierProtocol
       CCoronaProtocol
       CCoronaSection
       Cdecode_resultsResults returned from the decoder
       CDelonghiProtocol
       CGreeProtocol
       CHaierProtocol
       CHaierYRW02Protocol
       CIRacA universal/common/generic interface for controling supported A/Cs
       CIRAirwellAcClass for handling detailed Airwell A/C messages
       CIRAmcorAcClass for handling detailed Amcor A/C messages
       CIRArgoACClass for handling detailed Argo A/C messages
       CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
       CIRCoolixACClass for handling detailed Coolix A/C messages
       CIRCoronaAcClass for handling detailed Corona A/C messages
       CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages
       CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
       CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
       CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
       CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages
       CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
       CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
       CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
       CIRDelonghiAcClass for handling detailed Delonghi A/C messages
       CIRElectraAcClass for handling detailed Electra A/C messages
       CIRFujitsuACClass for handling detailed Fujitsu A/C messages
       CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
       CIRGreeACClass for handling detailed Gree A/C messages
       CIRHaierACClass for handling detailed Haier A/C messages
       CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
       CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
       CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
       CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
       CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
       CIRHitachiAc344Class for handling detailed Hitachi 344-bit A/C messages
       CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
       CIRLgAcClass for handling detailed LG A/C messages
       CIRMideaACClass for handling detailed Midea A/C messages
       CIRMitsubishi112Class for handling detailed Mitsubishi 122-bit A/C messages
       CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
       CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages
       CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
       CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
       CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
       CIRPanasonicAcClass for handling detailed Panasonic A/C messages
       Cirparams_tInformation for the interrupt handler
       CIRrecvClass for receiving IR messages
       CIRSamsungAcClass for handling detailed Samsung A/C messages
       CIRSanyoAcClass for handling detailed Sanyo A/C messages
       CIRsendClass for sending all basic IR protocols
       CIRSharpAcClass for handling detailed Sharp A/C messages
       CIRTcl112AcClass for handling detailed TCL A/C messages
       CIRTechnibelAc
       CIRTecoAcClass for handling detailed Teco A/C messages
       CIRtimerThis class offers a simple counter in micro-seconds since instantiated
       CIRToshibaACClass for handling detailed Toshiba A/C messages
       CIRTranscoldAc
       CIRTrotecESPClass for handling detailed Trotec A/C messages
       CIRVestelAcClass for handling detailed Vestel A/C messages
       CIRVoltasClass for handling detailed Voltas A/C messages
       CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
       CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
       Cmatch_result_tResults from a data match
       CMideaProtocol
       CstdAc::state_tStructure to hold a common A/C state
       CTimerMsThis class offers a simple counter in milli-seconds since instantiated
       CVoltasProtocol
      -
      -
      - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_0.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_0.md5 deleted file mode 100644 index a7e367c5e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -313c58c1dac65d31e999693f00c85f41 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.md5 deleted file mode 100644 index 5cb35f2df..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -53cee0f4a8a2c60dcf9533babf9408de \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.md5 deleted file mode 100644 index 89df38d8e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -3690b67e7e582816654288cc9e8c5c12 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.md5 deleted file mode 100644 index b17f9865a..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -6f838a3ea64de1198023ecc67d62042d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.md5 deleted file mode 100644 index f1a499ed4..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -0e48608bb89237c8cd431d786e9febe3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.md5 deleted file mode 100644 index 89ffd7084..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -94d5c18b2e12e555c465b1d8ce11b163 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.md5 deleted file mode 100644 index 8ee7f8b08..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -d2430eee62526868482e09e3aa8f5f3d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.md5 deleted file mode 100644 index f7503247f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_54.md5 +++ /dev/null @@ -1 +0,0 @@ -70070c03ee11fc3c0d3e80894100ed9b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.md5 deleted file mode 100644 index a80d4205e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_58.md5 +++ /dev/null @@ -1 +0,0 @@ -a8f0a40eab840bfeb4c88386065528b2 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.md5 deleted file mode 100644 index baa70e878..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_65.md5 +++ /dev/null @@ -1 +0,0 @@ -7bb220231cd331dbe7541c4dc5393dc8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.md5 deleted file mode 100644 index 0b9c5dd5e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_68.md5 +++ /dev/null @@ -1 +0,0 @@ -b685f5c041badc4c79146f98ecfd2d45 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.md5 deleted file mode 100644 index c86ab4666..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -6d396c29929ef82bc3697f936de707a6 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.md5 deleted file mode 100644 index ecd2a1889..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -9161ff251366d33d3ca48d53fad5348b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.md5 deleted file mode 100644 index 8b2bc55f9..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -a9adb06cbbb8bf64b6c10e2efb433807 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__LG_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__LG_8cpp.html deleted file mode 100644 index 3613112d7..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__LG_8cpp.html +++ /dev/null @@ -1,557 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_LG.cpp File Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      IRremoteESP8266 -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      ir_LG.cpp File Reference
      -
      -
      - -

      Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin. -More...

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Variables

      const uint16_t kLgTick = 50
       
      const uint16_t kLgHdrMarkTicks = 170
       
      const uint16_t kLgHdrMark = kLgHdrMarkTicks * kLgTick
       
      const uint16_t kLgHdrSpaceTicks = 85
       
      const uint16_t kLgHdrSpace = kLgHdrSpaceTicks * kLgTick
       
      const uint16_t kLgBitMarkTicks = 11
       
      const uint16_t kLgBitMark = kLgBitMarkTicks * kLgTick
       
      const uint16_t kLgOneSpaceTicks = 32
       
      const uint16_t kLgOneSpace = kLgOneSpaceTicks * kLgTick
       
      const uint16_t kLgZeroSpaceTicks = 11
       
      const uint16_t kLgZeroSpace = kLgZeroSpaceTicks * kLgTick
       
      const uint16_t kLgRptSpaceTicks = 45
       
      const uint16_t kLgRptSpace = kLgRptSpaceTicks * kLgTick
       
      const uint16_t kLgMinGapTicks = 795
       
      const uint16_t kLgMinGap = kLgMinGapTicks * kLgTick
       
      const uint16_t kLgMinMessageLengthTicks = 2161
       
      const uint32_t kLgMinMessageLength = kLgMinMessageLengthTicks * kLgTick
       
      const uint16_t kLg32HdrMarkTicks = 90
       
      const uint16_t kLg32HdrMark = kLg32HdrMarkTicks * kLgTick
       
      const uint16_t kLg32HdrSpaceTicks = 89
       
      const uint16_t kLg32HdrSpace = kLg32HdrSpaceTicks * kLgTick
       
      const uint16_t kLg32RptHdrMarkTicks = 179
       
      const uint16_t kLg32RptHdrMark = kLg32RptHdrMarkTicks * kLgTick
       
      const uint16_t kLg2HdrMarkTicks = 64
       
      const uint16_t kLg2HdrMark = kLg2HdrMarkTicks * kLgTick
       
      const uint16_t kLg2HdrSpaceTicks = 197
       
      const uint16_t kLg2HdrSpace = kLg2HdrSpaceTicks * kLgTick
       
      const uint16_t kLg2BitMarkTicks = 10
       
      const uint16_t kLg2BitMark = kLg2BitMarkTicks * kLgTick
       
      -

      Detailed Description

      -

      Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin.

      -
      See also
      https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438
      -

      Variable Documentation

      - -

      ◆ kLg2BitMark

      - -
      -
      - - - - -
      const uint16_t kLg2BitMark = kLg2BitMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg2BitMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLg2BitMarkTicks = 10
      -
      - -
      -
      - -

      ◆ kLg2HdrMark

      - -
      -
      - - - - -
      const uint16_t kLg2HdrMark = kLg2HdrMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg2HdrMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLg2HdrMarkTicks = 64
      -
      - -
      -
      - -

      ◆ kLg2HdrSpace

      - -
      -
      - - - - -
      const uint16_t kLg2HdrSpace = kLg2HdrSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg2HdrSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLg2HdrSpaceTicks = 197
      -
      - -
      -
      - -

      ◆ kLg32HdrMark

      - -
      -
      - - - - -
      const uint16_t kLg32HdrMark = kLg32HdrMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg32HdrMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLg32HdrMarkTicks = 90
      -
      - -
      -
      - -

      ◆ kLg32HdrSpace

      - -
      -
      - - - - -
      const uint16_t kLg32HdrSpace = kLg32HdrSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg32HdrSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLg32HdrSpaceTicks = 89
      -
      - -
      -
      - -

      ◆ kLg32RptHdrMark

      - -
      -
      - - - - -
      const uint16_t kLg32RptHdrMark = kLg32RptHdrMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLg32RptHdrMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLg32RptHdrMarkTicks = 179
      -
      - -
      -
      - -

      ◆ kLgBitMark

      - -
      -
      - - - - -
      const uint16_t kLgBitMark = kLgBitMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgBitMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLgBitMarkTicks = 11
      -
      - -
      -
      - -

      ◆ kLgHdrMark

      - -
      -
      - - - - -
      const uint16_t kLgHdrMark = kLgHdrMarkTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgHdrMarkTicks

      - -
      -
      - - - - -
      const uint16_t kLgHdrMarkTicks = 170
      -
      - -
      -
      - -

      ◆ kLgHdrSpace

      - -
      -
      - - - - -
      const uint16_t kLgHdrSpace = kLgHdrSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgHdrSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLgHdrSpaceTicks = 85
      -
      - -
      -
      - -

      ◆ kLgMinGap

      - -
      -
      - - - - -
      const uint16_t kLgMinGap = kLgMinGapTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgMinGapTicks

      - -
      -
      - - - - -
      const uint16_t kLgMinGapTicks = 795
      -
      - -
      -
      - -

      ◆ kLgMinMessageLength

      - -
      -
      - - - - -
      const uint32_t kLgMinMessageLength = kLgMinMessageLengthTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgMinMessageLengthTicks

      - -
      -
      - - - - -
      const uint16_t kLgMinMessageLengthTicks = 2161
      -
      - -
      -
      - -

      ◆ kLgOneSpace

      - -
      -
      - - - - -
      const uint16_t kLgOneSpace = kLgOneSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgOneSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLgOneSpaceTicks = 32
      -
      - -
      -
      - -

      ◆ kLgRptSpace

      - -
      -
      - - - - -
      const uint16_t kLgRptSpace = kLgRptSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgRptSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLgRptSpaceTicks = 45
      -
      - -
      -
      - -

      ◆ kLgTick

      - -
      -
      - - - - -
      const uint16_t kLgTick = 50
      -
      - -
      -
      - -

      ◆ kLgZeroSpace

      - -
      -
      - - - - -
      const uint16_t kLgZeroSpace = kLgZeroSpaceTicks * kLgTick
      -
      - -
      -
      - -

      ◆ kLgZeroSpaceTicks

      - -
      -
      - - - - -
      const uint16_t kLgZeroSpaceTicks = 11
      -
      - -
      -
      -
      - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Midea_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Midea_8h_source.html deleted file mode 100644 index 57e34daf0..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/ir__Midea_8h_source.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Midea.h Source File - - - - - - - - - -
      -
      - - - - - - -
      -
      IRremoteESP8266 -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      ir_Midea.h
      -
      -
      -Go to the documentation of this file.
      1 // Copyright 2017 David Conran
      -
      2 
      -
      7 
      -
      8 // Supports:
      -
      9 // Brand: Pioneer System, Model: RYBO12GMFILCAD A/C (12K BTU) (MIDEA)
      -
      10 // Brand: Pioneer System, Model: RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
      -
      11 // Brand: Comfee, Model: MPD1-12CRN7 A/C (MIDEA)
      -
      12 // Brand: Keystone, Model: RG57H4(B)BGEF remote (MIDEA)
      -
      13 // Brand: Midea, Model: FS40-7AR Stand Fan (MIDEA24)
      -
      14 // Brand: Danby, Model: DAC080BGUWDB (MIDEA)
      -
      15 // Brand: Danby, Model: DAC100BGUWDB (MIDEA)
      -
      16 // Brand: Danby, Model: DAC120BGUWDB (MIDEA)
      -
      17 // Brand: Danby, Model: R09C/BCGE remote (MIDEA)
      -
      18 
      -
      19 #ifndef IR_MIDEA_H_
      -
      20 #define IR_MIDEA_H_
      -
      21 
      -
      22 #define __STDC_LIMIT_MACROS
      -
      23 #include <stdint.h>
      -
      24 #ifdef ARDUINO
      -
      25 #include <Arduino.h>
      -
      26 #endif
      -
      27 #include "IRremoteESP8266.h"
      -
      28 #include "IRsend.h"
      -
      29 #ifdef UNIT_TEST
      -
      30 #include "IRsend_test.h"
      -
      31 #endif
      -
      32 
      -
      33 #if DANBY_DAC
      - -
      35 #endif
      - -
      37  uint64_t remote_state;
      -
      38  // only use 48bits
      -
      39  struct {
      -
      40  // Byte 0
      -
      41  uint8_t Sum;
      -
      42  // Byte 1
      -
      43  uint8_t :8; // value=0xFF
      -
      44  // Byte 2
      -
      45  uint8_t :8; // value=0xFF
      -
      46  // Byte 3
      -
      47  uint8_t Temp:5;
      -
      48  uint8_t useFahrenheit:1;
      -
      49  uint8_t :0;
      -
      50  // Byte 4
      -
      51  uint8_t Mode:3;
      -
      52  uint8_t Fan:2;
      -
      53  uint8_t :1;
      -
      54  uint8_t Sleep:1;
      -
      55  uint8_t Power:1;
      -
      56  // Byte 5
      -
      57  uint8_t :0;
      -
      58  };
      -
      59 };
      -
      60 // Constants
      -
      61 const uint8_t kMideaACMinTempF = 62; // Fahrenheit
      -
      62 const uint8_t kMideaACMaxTempF = 86; // Fahrenheit
      -
      63 const uint8_t kMideaACMinTempC = 17; // Celsius
      -
      64 const uint8_t kMideaACMaxTempC = 30; // Celsius
      -
      65 const uint8_t kMideaACCool = 0; // 0b000
      -
      66 const uint8_t kMideaACDry = 1; // 0b001
      -
      67 const uint8_t kMideaACAuto = 2; // 0b010
      -
      68 const uint8_t kMideaACHeat = 3; // 0b011
      -
      69 const uint8_t kMideaACFan = 4; // 0b100
      -
      70 const uint8_t kMideaACFanAuto = 0; // 0b00
      -
      71 const uint8_t kMideaACFanLow = 1; // 0b01
      -
      72 const uint8_t kMideaACFanMed = 2; // 0b10
      -
      73 const uint8_t kMideaACFanHigh = 3; // 0b11
      -
      74 const uint64_t kMideaACToggleSwingV = 0x0000A201FFFFFF7C;
      -
      75 // For Danby DAC unit, the Ionizer toggle is the same as ToggleSwingV
      -
      76 // const uint64_t kMideaACToggleIonizer = 0x0000A201FFFFFF7C;
      -
      77 const uint64_t kMideaACToggleEcono = 0x0000A202FFFFFF7E;
      -
      78 
      -
      79 // Legacy defines. (Deprecated)
      -
      80 #define MIDEA_AC_COOL kMideaACCool
      -
      81 #define MIDEA_AC_DRY kMideaACDry
      -
      82 #define MIDEA_AC_AUTO kMideaACAuto
      -
      83 #define MIDEA_AC_HEAT kMideaACHeat
      -
      84 #define MIDEA_AC_FAN kMideaACFan
      -
      85 #define MIDEA_AC_FAN_AUTO kMideaACFanAuto
      -
      86 #define MIDEA_AC_FAN_LOW kMideaACFanLow
      -
      87 #define MIDEA_AC_FAN_MED kMideaACFanMed
      -
      88 #define MIDEA_AC_FAN_HI kMideaACFanHigh
      -
      89 #define MIDEA_AC_POWER kMideaACPower
      -
      90 #define MIDEA_AC_SLEEP kMideaACSleep
      -
      91 #define MIDEA_AC_MIN_TEMP_F kMideaACMinTempF
      -
      92 #define MIDEA_AC_MAX_TEMP_F kMideaACMaxTempF
      -
      93 #define MIDEA_AC_MIN_TEMP_C kMideaACMinTempC
      -
      94 #define MIDEA_AC_MAX_TEMP_C kMideaACMaxTempC
      -
      95 
      -
      96 // Classes
      -
      99 class IRMideaAC {
      -
      100  public:
      -
      101  explicit IRMideaAC(const uint16_t pin, const bool inverted = false,
      -
      102  const bool use_modulation = true);
      -
      103  void stateReset(void);
      -
      104 #if SEND_MIDEA
      -
      105  void send(const uint16_t repeat = kMideaMinRepeat);
      -
      110  int8_t calibrate(void) { return _irsend.calibrate(); }
      -
      111 #endif // SEND_MIDEA
      -
      112  void begin(void);
      -
      113  void on(void);
      -
      114  void off(void);
      -
      115  void setPower(const bool on);
      -
      116  bool getPower(void) const;
      -
      117  bool getUseCelsius(void) const;
      -
      118  void setUseCelsius(const bool celsius);
      -
      119  void setTemp(const uint8_t temp, const bool useCelsius = false);
      -
      120  uint8_t getTemp(const bool useCelsius = false) const;
      -
      121  void setFan(const uint8_t fan);
      -
      122  uint8_t getFan(void) const;
      -
      123  void setMode(const uint8_t mode);
      -
      124  uint8_t getMode(void) const;
      -
      125  void setRaw(const uint64_t newState);
      -
      126  uint64_t getRaw(void);
      -
      127  static bool validChecksum(const uint64_t state);
      -
      128  void setSleep(const bool on);
      -
      129  bool getSleep(void) const;
      -
      130  bool isSwingVToggle(void) const;
      -
      131  void setSwingVToggle(const bool on);
      -
      132  bool getSwingVToggle(void);
      -
      133  bool isEconoToggle(void) const;
      -
      134  void setEconoToggle(const bool on);
      -
      135  bool getEconoToggle(void);
      -
      136  static uint8_t convertMode(const stdAc::opmode_t mode);
      -
      137  static uint8_t convertFan(const stdAc::fanspeed_t speed);
      -
      138  static stdAc::opmode_t toCommonMode(const uint8_t mode);
      -
      139  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
      -
      140  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
      -
      141  String toString(void);
      -
      142 #ifndef UNIT_TEST
      -
      143 
      -
      144  private:
      - -
      146 #else // UNIT_TEST
      -
      147  IRsendTest _irsend;
      -
      149 #endif // UNIT_TEST
      - - - -
      154  void checksum(void);
      -
      155  static uint8_t calcChecksum(const uint64_t state);
      -
      156 };
      -
      157 
      -
      158 #endif // IR_MIDEA_H_
      -
      -
      uint8_t Sum
      Definition: ir_Midea.h:41
      -
      const uint8_t kMideaACMinTempF
      Definition: ir_Midea.h:61
      -
      void begin(void)
      Set up hardware to be able to send a message.
      Definition: ir_Midea.cpp:106
      -
      static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
      Convert a native fan speed into its stdAc equivilant.
      Definition: ir_Midea.cpp:358
      -
      void setSleep(const bool on)
      Set the Sleep setting of the A/C.
      Definition: ir_Midea.cpp:240
      -
      void on(void)
      Set the requested power state of the A/C to on.
      Definition: ir_Midea.cpp:136
      -
      void setUseCelsius(const bool celsius)
      Set the A/C unit to use Celsius natively.
      Definition: ir_Midea.cpp:161
      -
      const uint16_t kMideaMinRepeat
      Definition: IRremoteESP8266.h:968
      -
      bool _EconoToggle
      Definition: ir_Midea.h:153
      -
      MideaProtocol _
      Definition: ir_Midea.h:151
      -
      void setTemp(const uint8_t temp, const bool useCelsius=false)
      Set the temperature.
      Definition: ir_Midea.cpp:172
      -
      bool getPower(void) const
      Get the value of the current power setting.
      Definition: ir_Midea.cpp:149
      -
      int8_t calibrate(void)
      Run the calibration to calculate uSec timing offsets for this platform.
      Definition: ir_Midea.h:110
      -
      void setEconoToggle(const bool on)
      Set the A/C to toggle the Econo (energy saver) mode for the next send.
      Definition: ir_Midea.cpp:272
      -
      fanspeed_t
      Common A/C settings for Fan Speeds.
      Definition: IRsend.h:58
      -
      bool _SwingVToggle
      Definition: ir_Midea.h:152
      -
      const uint8_t kMideaACAuto
      Definition: ir_Midea.h:67
      -
      void checksum(void)
      Calculate & set the checksum for the current internal state of the remote.
      Definition: ir_Midea.cpp:310
      -
      IRMideaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
      Class constructor.
      Definition: ir_Midea.cpp:93
      -
      const uint8_t kMideaACFan
      Definition: ir_Midea.h:69
      -
      void send(const uint16_t repeat=kMideaMinRepeat)
      Send the current internal state as an IR message.
      Definition: ir_Midea.cpp:111
      -
      uint8_t useFahrenheit
      Definition: ir_Midea.h:48
      - -
      const uint8_t kMideaACMaxTempF
      Definition: ir_Midea.h:62
      -
      Class for sending all basic IR protocols.
      Definition: IRsend.h:176
      -
      uint8_t Power
      Definition: ir_Midea.h:55
      -
      int8_t calibrate(uint16_t hz=38000U)
      Calculate & set any offsets to account for execution times during sending.
      Definition: IRsend.cpp:207
      -
      void setSwingVToggle(const bool on)
      Set the A/C to toggle the vertical swing toggle for the next send.
      Definition: ir_Midea.cpp:253
      -
      bool isSwingVToggle(void) const
      Is the current state a vertical swing toggle message?
      Definition: ir_Midea.cpp:258
      -
      std::string String
      Definition: IRremoteESP8266.h:1148
      -
      kSwingVToggleStr
      Definition: ir_Midea.h:34
      -
      bool getSwingVToggle(void)
      Definition: ir_Midea.cpp:265
      -
      uint8_t Fan
      Definition: ir_Midea.h:52
      -
      uint8_t Mode
      Definition: ir_Midea.h:51
      -
      uint8_t getFan(void) const
      Get the current fan speed setting.
      Definition: ir_Midea.cpp:212
      -
      void off(void)
      Set the requested power state of the A/C to off.
      Definition: ir_Midea.cpp:139
      - -
      const uint8_t kMideaACHeat
      Definition: ir_Midea.h:68
      -
      bool getUseCelsius(void) const
      Is the device currently using Celsius or the Fahrenheit temp scale?
      Definition: ir_Midea.cpp:155
      -
      static stdAc::opmode_t toCommonMode(const uint8_t mode)
      Convert a native mode into its stdAc equivilant.
      Definition: ir_Midea.cpp:345
      -
      const uint8_t kMideaACFanAuto
      Definition: ir_Midea.h:70
      -
      const uint64_t kMideaACToggleSwingV
      Definition: ir_Midea.h:74
      -
      IRsend _irsend
      Instance of the IR send class.
      Definition: ir_Midea.h:145
      -
      uint64_t remote_state
      The state in native IR code form.
      Definition: ir_Midea.h:37
      -
      Class for handling detailed Midea A/C messages.
      Definition: ir_Midea.h:99
      -
      void setRaw(const uint64_t newState)
      Set the internal state from a valid code for this protocol.
      Definition: ir_Midea.cpp:133
      -
      void setMode(const uint8_t mode)
      Set the operating mode of the A/C.
      Definition: ir_Midea.cpp:224
      -
      static uint8_t calcChecksum(const uint64_t state)
      Calculate the checksum for a given state.
      Definition: ir_Midea.cpp:290
      -
      const PROGMEM char * kIonStr
      "Ion"
      Definition: IRtext.cpp:55
      -
      bool getSleep(void) const
      Get the Sleep setting of the A/C.
      Definition: ir_Midea.cpp:246
      -
      uint8_t getMode(void) const
      Get the operating mode setting of the A/C.
      Definition: ir_Midea.cpp:218
      -
      const uint64_t kMideaACToggleEcono
      Definition: ir_Midea.h:77
      -
      static uint8_t convertFan(const stdAc::fanspeed_t speed)
      Convert a stdAc::fanspeed_t enum into it's native speed.
      Definition: ir_Midea.cpp:331
      -
      uint8_t Sleep
      Definition: ir_Midea.h:54
      -
      const uint8_t kMideaACFanMed
      Definition: ir_Midea.h:72
      -
      uint64_t getRaw(void)
      Get a copy of the internal state/code for this protocol.
      Definition: ir_Midea.cpp:126
      -
      const uint8_t kMideaACMinTempC
      Definition: ir_Midea.h:63
      -
      static uint8_t convertMode(const stdAc::opmode_t mode)
      Convert a stdAc::opmode_t enum into its native mode.
      Definition: ir_Midea.cpp:318
      -
      const uint8_t kMideaACFanHigh
      Definition: ir_Midea.h:73
      -
      bool getEconoToggle(void)
      Definition: ir_Midea.cpp:282
      -
      const uint8_t kMideaACMaxTempC
      Definition: ir_Midea.h:64
      -
      stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
      Convert the current internal state into its stdAc::state_t equivilant.
      Definition: ir_Midea.cpp:370
      -
      const uint8_t kMideaACDry
      Definition: ir_Midea.h:66
      -
      String toString(void)
      Convert the current internal state into a human readable string.
      Definition: ir_Midea.cpp:407
      -
      static bool validChecksum(const uint64_t state)
      Verify the checksum is valid for a given state.
      Definition: ir_Midea.cpp:305
      -
      const uint8_t kMideaACCool
      Definition: ir_Midea.h:65
      -
      Definition: ir_Midea.h:36
      -
      void setPower(const bool on)
      Change the power setting.
      Definition: ir_Midea.cpp:143
      -
      void stateReset(void)
      Reset the state of the remote to a known good state/sequence.
      Definition: ir_Midea.cpp:98
      -
      Structure to hold a common A/C state.
      Definition: IRsend.h:97
      -
      const uint8_t kMideaACFanLow
      Definition: ir_Midea.h:71
      -
      uint8_t getTemp(const bool useCelsius=false) const
      Get the current temperature setting.
      Definition: ir_Midea.cpp:193
      -
      uint8_t Temp
      Definition: ir_Midea.h:47
      -
      void setFan(const uint8_t fan)
      Set the speed of the fan.
      Definition: ir_Midea.cpp:206
      -
      bool isEconoToggle(void) const
      Is the current state an Econo (energy saver) toggle message?
      Definition: ir_Midea.cpp:276
      -
      opmode_t
      Common A/C settings for A/C operating modes.
      Definition: IRsend.h:46
      - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_0.js deleted file mode 100644 index d16c97b69..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_0.js +++ /dev/null @@ -1,76 +0,0 @@ -var searchData= -[ - ['_5f_0',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRAmcorAc.html#a57bd1149a63a8c2373eeced414ed0a80',1,'IRAmcorAc::_()'],['../classIRArgoAC.html#a748a4828682df0f98226754123fe2142',1,'IRArgoAC::_()'],['../classIRCarrierAc64.html#a79ddb0fb877232a581d0142949a7c356',1,'IRCarrierAc64::_()'],['../classIRCoronaAc.html#aa6e07135d66fda5c609c0d6a317bb0de',1,'IRCoronaAc::_()'],['../classIRDelonghiAc.html#a85f522b680c0fb5974d741c8f399e691',1,'IRDelonghiAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()']]], - ['_5f_5fpad0_5f_5f_1',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionAmcorProtocol.html#a8678a5bf4a4d917d8b02d854114b2cc0',1,'AmcorProtocol::__pad0__()'],['../unionArgoProtocol.html#a2b15de65bd2368c53c07850b32c240f1',1,'ArgoProtocol::__pad0__()'],['../unionCarrierProtocol.html#a8187ddda3722f75d7260b9a20147b2d3',1,'CarrierProtocol::__pad0__()'],['../unionCoronaProtocol.html#a06ac994ce787d3f1c65529e99d87d146',1,'CoronaProtocol::__pad0__()'],['../unionDelonghiProtocol.html#add514a227f6b9dcbaa41eaa5c81d6be2',1,'DelonghiProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_2',['__pad10__',['../unionArgoProtocol.html#aa2c0eb524c5870ea14aac018834c203f',1,'ArgoProtocol::__pad10__()'],['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol::__pad10__()']]], - ['_5f_5fpad11_5f_5f_3',['__pad11__',['../unionArgoProtocol.html#a6ccde46c9c033ca08161da12a2657187',1,'ArgoProtocol::__pad11__()'],['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol::__pad11__()']]], - ['_5f_5fpad12_5f_5f_4',['__pad12__',['../unionArgoProtocol.html#a338bbbc882a3409af4ff510a9b7c001b',1,'ArgoProtocol::__pad12__()'],['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol::__pad12__()']]], - ['_5f_5fpad13_5f_5f_5',['__pad13__',['../unionArgoProtocol.html#a093e716979933669e589fb5ead32a3a5',1,'ArgoProtocol']]], - ['_5f_5fpad14_5f_5f_6',['__pad14__',['../unionArgoProtocol.html#ab35dfc5963cfdcf5a776c78d3ea5f423',1,'ArgoProtocol']]], - ['_5f_5fpad15_5f_5f_7',['__pad15__',['../unionArgoProtocol.html#a1a3263d128339d19b1dfa2857da3475b',1,'ArgoProtocol']]], - ['_5f_5fpad16_5f_5f_8',['__pad16__',['../unionArgoProtocol.html#a0e901bceaaa0cc966eabb937ad4b549a',1,'ArgoProtocol']]], - ['_5f_5fpad1_5f_5f_9',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionAmcorProtocol.html#a9603d27ed81d3efc3b1fff2d6a877f6f',1,'AmcorProtocol::__pad1__()'],['../unionArgoProtocol.html#a87ef29a274368f72fe0e8aee0d09c241',1,'ArgoProtocol::__pad1__()'],['../unionCarrierProtocol.html#a344e5a62f7624bdc8d6b53c89d53ff01',1,'CarrierProtocol::__pad1__()'],['../unionCoronaProtocol.html#a562183bf52e393fb07ca57f5f8341bfd',1,'CoronaProtocol::__pad1__()'],['../unionDelonghiProtocol.html#a26a942f261b6d45e3d3a9734b8535c8d',1,'DelonghiProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()']]], - ['_5f_5fpad2_5f_5f_10',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionAmcorProtocol.html#afefa908f10f814fadde57efdc4dce76c',1,'AmcorProtocol::__pad2__()'],['../unionArgoProtocol.html#a44dff1537c390a45ee43c57f2b80050d',1,'ArgoProtocol::__pad2__()'],['../unionCarrierProtocol.html#aac511fa89b32f24a01d179c37fffc2fa',1,'CarrierProtocol::__pad2__()'],['../unionCoronaProtocol.html#a53c510747a6970ea6f0172a39194369d',1,'CoronaProtocol::__pad2__()'],['../unionDelonghiProtocol.html#a78b2654018ed1c8c9a762ee6b1241bdc',1,'DelonghiProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_11',['__pad3__',['../unionAmcorProtocol.html#a25002ba50158c3ee26d20d94d3507a9b',1,'AmcorProtocol::__pad3__()'],['../unionArgoProtocol.html#a6b383394993c83f6ed098826e5c02a4a',1,'ArgoProtocol::__pad3__()'],['../unionCarrierProtocol.html#a50193ce74f535d6dad154a96f54adb48',1,'CarrierProtocol::__pad3__()'],['../unionCoronaProtocol.html#a5f0dd8e7b0d0b5673088416e2f88df6e',1,'CoronaProtocol::__pad3__()'],['../unionDelonghiProtocol.html#a98b1173e0d07b4a29506f5df0f396e72',1,'DelonghiProtocol::__pad3__()'],['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionMideaProtocol.html#ac0d1346479086522065ec71ea0b87ad2',1,'MideaProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_12',['__pad4__',['../unionAmcorProtocol.html#a4375506f729c9d45a1269aea9d968889',1,'AmcorProtocol::__pad4__()'],['../unionArgoProtocol.html#a2c425c7f223a53cdb33a783d133f5a77',1,'ArgoProtocol::__pad4__()'],['../unionCarrierProtocol.html#ade0f53c0cd05eaad14f0a3f0121e7b5e',1,'CarrierProtocol::__pad4__()'],['../unionCoronaProtocol.html#a58df374f27d3733fc63d3cc040478293',1,'CoronaProtocol::__pad4__()'],['../unionDelonghiProtocol.html#a4cc4153806e037068b52d1f356bca2ef',1,'DelonghiProtocol::__pad4__()'],['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionMideaProtocol.html#addde95b2535612df3ef2183998cf7ca6',1,'MideaProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_13',['__pad5__',['../unionAmcorProtocol.html#aa2fa57304833e2067f438d74f898dfc8',1,'AmcorProtocol::__pad5__()'],['../unionArgoProtocol.html#aa3990245fbd608c4a4e7fef690532656',1,'ArgoProtocol::__pad5__()'],['../unionCarrierProtocol.html#a635772a0e49e2a82b7e665b1f8d42148',1,'CarrierProtocol::__pad5__()'],['../unionCoronaProtocol.html#a8a34423073c0a91ace50605fc8337bc0',1,'CoronaProtocol::__pad5__()'],['../unionDelonghiProtocol.html#a09090f4876d843dc6c4425e2f2e9b285',1,'DelonghiProtocol::__pad5__()'],['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_14',['__pad6__',['../unionAmcorProtocol.html#ac7c9258f0465028a4d95468e9289a95e',1,'AmcorProtocol::__pad6__()'],['../unionArgoProtocol.html#a644f13f404fc89ac769437a1cf6ef5cc',1,'ArgoProtocol::__pad6__()'],['../unionCarrierProtocol.html#a683b70f292ffed7253b8956225a71a51',1,'CarrierProtocol::__pad6__()'],['../unionCoronaProtocol.html#aabdd6e87ab321b893f07461f755094c0',1,'CoronaProtocol::__pad6__()'],['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_15',['__pad7__',['../unionAmcorProtocol.html#a06dbf04a6bb3326c3277308bee61e375',1,'AmcorProtocol::__pad7__()'],['../unionArgoProtocol.html#a981cc0905966560692835630b870bc96',1,'ArgoProtocol::__pad7__()'],['../unionCarrierProtocol.html#a21fe681b7a9b1a507d03b6eef716f57d',1,'CarrierProtocol::__pad7__()'],['../unionCoronaProtocol.html#aa833c2aa87c8b67ded46784d9d9fd506',1,'CoronaProtocol::__pad7__()'],['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol::__pad7__()']]], - ['_5f_5fpad8_5f_5f_16',['__pad8__',['../unionAmcorProtocol.html#a7a602c91754a62acb96b65fad3ed5009',1,'AmcorProtocol::__pad8__()'],['../unionArgoProtocol.html#aada1e2f63bf852c820d3313d6bf55e2e',1,'ArgoProtocol::__pad8__()'],['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol::__pad8__()']]], - ['_5f_5fpad9_5f_5f_17',['__pad9__',['../unionArgoProtocol.html#a38bc056c18e086e4ff91d86e33b0bc08',1,'ArgoProtocol::__pad9__()'],['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol::__pad9__()']]], - ['_5fbackupstate_18',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]], - ['_5fcancelofftimer_19',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], - ['_5fcancelontimer_20',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], - ['_5fclean_21',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], - ['_5fcmd_22',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdelaymicroseconds_23',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], - ['_5fdesiredtemp_24',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_25',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_26',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_27',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5ffanspeed_28',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], - ['_5ffilter_29',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], - ['_5fforcepower_30',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_31',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5fgettemp_32',['_getTemp',['../classIRSanyoAc.html#a958a4d66a2e17dccefaedad45787355e',1,'IRSanyoAc']]], - ['_5fgettime_33',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], - ['_5fgettimer_34',['_getTimer',['../classIRCoronaAc.html#a352fedb1c80549d2b580e538d8ba7901',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]], - ['_5finverted_35',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firsend_36',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTechnibelAc.html#adb30f91c384028cc53aaae6edaacf3b0',1,'IRTechnibelAc::_irsend()'],['../classIRTechnibelAc.html#a9db7b15e279e0c17e0eafd8201d5c7dc',1,'IRTechnibelAc::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTranscoldAc.html#a3f7136d98c100a67b97f4f8afb750fc4',1,'IRTranscoldAc::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_37',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastsentpowerstate_38',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5fmatchgeneric_39',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], - ['_5fmode_40',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], - ['_5fmodel_41',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_42',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5fofftimer_43',['_offtimer',['../classIRFujitsuAC.html#a5a87060bf88c48da5e16cd01114f7223',1,'IRFujitsuAC']]], - ['_5fontimer_44',['_ontimer',['../classIRFujitsuAC.html#a4f55c0b4a6768e1392778d8a23485ebb',1,'IRFujitsuAC']]], - ['_5foutsidequiet_45',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], - ['_5fpin_46',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_47',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprevioustemp_48',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], - ['_5fprotocol_49',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5frestorestate_50',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]], - ['_5fsaved_5ftemp_51',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()'],['../classIRTechnibelAc.html#a0b98069ac7367419f736fa0e639e4847',1,'IRTechnibelAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_52',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc::_saved_temp_units()'],['../classIRTechnibelAc.html#a8d5a8e132e1d5884564f3212d396d160',1,'IRTechnibelAc::_saved_temp_units()']]], - ['_5fsend_5fswing_53',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fsendsony_54',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], - ['_5fsetmode_55',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], - ['_5fsettemp_56',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRSanyoAc.html#a4c8c0606f6bb82b0c55b179c9f4a7bda',1,'IRSanyoAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], - ['_5fsettime_57',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], - ['_5fsettimer_58',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]], - ['_5fstate_5flength_59',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_60',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_61',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_62',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingmode_63',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], - ['_5fswingvtoggle_64',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_65',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_66',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_67',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftimertype_68',['_timertype',['../classIRFujitsuAC.html#a4400fcecb4d0689ec735601835a941d5',1,'IRFujitsuAC']]], - ['_5ftolerance_69',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5ftostring_70',['_toString',['../classIRHitachiAc424.html#af7ab654c4eecf770a70399f6b9959db3',1,'IRHitachiAc424']]], - ['_5funknown_5fthreshold_71',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]], - ['_5fvalidtolerance_72',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1.js deleted file mode 100644 index 3c1ea5faa..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['add_73',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_74',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_75',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_76',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], - ['addinttostring_77',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_78',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_79',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_80',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['address_81',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], - ['addtemptostring_82',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['airwell_83',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac::airwell()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'AIRWELL(): IRremoteESP8266.h']]], - ['airwellprotocol_84',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]], - ['aiwa_5frc_5ft501_85',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], - ['akb75215403_86',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], - ['amcor_87',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac::amcor()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'AMCOR(): IRremoteESP8266.h']]], - ['amcorprotocol_88',['AmcorProtocol',['../unionAmcorProtocol.html',1,'']]], - ['ardb1_89',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], - ['argo_90',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac::argo()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'ARGO(): IRremoteESP8266.h']]], - ['argoprotocol_91',['ArgoProtocol',['../unionArgoProtocol.html',1,'']]], - ['arjw2_92',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], - ['arrah2e_93',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], - ['arreb1e_94',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], - ['arry4_95',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_10.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_10.js deleted file mode 100644 index 5ea0364a6..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_10.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['padding_3379',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['panasonic_3380',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac::panasonic()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'PANASONIC(): IRremoteESP8266.h']]], - ['panasonic_5fac_3381',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], - ['panasonic_5fac_5fremote_5fmodel_5ft_3382',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]], - ['periodoffset_3383',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['pioneer_3384',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], - ['power_3385',['Power',['../unionAmcorProtocol.html#ab6d6b470c8e3c80ee37eb31a048919db',1,'AmcorProtocol::Power()'],['../unionArgoProtocol.html#a72c5dbd39ccbac31d5cfc39beaa87d92',1,'ArgoProtocol::Power()'],['../unionCarrierProtocol.html#a9f039bf33bbe868118f14c28d6731718',1,'CarrierProtocol::Power()'],['../unionCoronaProtocol.html#a7da68dc07f9ef4ab0545e9156f9408c4',1,'CoronaProtocol::Power()'],['../unionDelonghiProtocol.html#a5dccd7aa1927571e12d4244e1c179578',1,'DelonghiProtocol::Power()'],['../unionGreeProtocol.html#ab04d1d5bdaf8fb0b7129e210de14a772',1,'GreeProtocol::Power()'],['../unionHaierYRW02Protocol.html#ae87a93806911792662391a671607a760',1,'HaierYRW02Protocol::Power()'],['../unionMideaProtocol.html#a6b534bb5845c3c184ee43b87995cff32',1,'MideaProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()'],['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t::power()']]], - ['powerbutton_3386',['PowerButton',['../unionCoronaProtocol.html#abceccc1306d3a78be6177758f3056a5a',1,'CoronaProtocol']]], - ['powerflag_3387',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC::powerFlag()'],['../classIRTranscoldAc.html#a07e96c352827f011a1a2440f35d78d14',1,'IRTranscoldAc::powerFlag()']]], - ['powertoggle_3388',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol']]], - ['prefix_3389',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['prev_5fmode_3390',['prev_mode',['../classIRToshibaAC.html#ac251884741fb8ad8280b55e99c23211e',1,'IRToshibaAC']]], - ['pronto_3391',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]], - ['protocol_3392',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_11.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_11.js deleted file mode 100644 index 69dd8f61e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['quiet_3393',['quiet',['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_12.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_12.js deleted file mode 100644 index 8d56bc6bb..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_12.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['r_5flt0541_5fhta_5fa_3394',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], - ['r_5flt0541_5fhta_5fb_3395',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], - ['raw_3396',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionAmcorProtocol.html#a2044da7ab12175f20657f18f4b76728b',1,'AmcorProtocol::raw()'],['../unionArgoProtocol.html#a845151d1f5062ab0116f3a413e23da8f',1,'ArgoProtocol::raw()'],['../unionCarrierProtocol.html#a1a09f5c8340a2e7e074a332bf4906dfd',1,'CarrierProtocol::raw()'],['../unionCoronaProtocol.html#a16cbcc7f8542e9367a815efa4491c71b',1,'CoronaProtocol::raw()'],['../unionDelonghiProtocol.html#a5e82aa5e22fdbdb64b5232766b9ac7c2',1,'DelonghiProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'RAW(): IRremoteESP8266.h']]], - ['rawbuf_3397',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_3398',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rc5_3399',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], - ['rc5x_3400',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], - ['rc6_3401',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], - ['rcmm_3402',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]], - ['rcvstate_3403',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['readme_2emd_3404',['README.md',['../README_8md.html',1,'']]], - ['recoversavedstate_3405',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC::recoverSavedState()'],['../classIRTranscoldAc.html#a808334bf04be2cc46a4c74d4bd33f5dd',1,'IRTranscoldAc::recoverSavedState()']]], - ['recvpin_3406',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_3407',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], - ['remote_5fstate_3408',['remote_state',['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRSanyoAc.html#a157b54dba73a31d1945ed3ca7c676c37',1,'IRSanyoAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTechnibelAc.html#a83f2c5b6b4494299bee1bcfa6f3a4a31',1,'IRTechnibelAc::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#ab6c99091be13e159d88a07a9222c9a7c',1,'IRToshibaAC::remote_state()'],['../classIRTranscoldAc.html#a42205803cde54eea1886adfc578523eb',1,'IRTranscoldAc::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], - ['remote_5ftime_5fstate_3409',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], - ['repeat_3410',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], - ['reset_3411',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], - ['resultactostring_3412',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], - ['resulttohexidecimal_3413',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], - ['resulttohumanreadablebasic_3414',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], - ['resulttorawarray_3415',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], - ['resulttosourcecode_3416',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], - ['resulttotiminginfo_3417',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], - ['resume_3418',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], - ['reversebits_3419',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]], - ['roomtemp_3420',['RoomTemp',['../unionArgoProtocol.html#a35f91863997bb886da9fc6a303e62c65',1,'ArgoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_17.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_17.js deleted file mode 100644 index faa07a8ac..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_17.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['wand_5fid_3734',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]], - ['whirlpool_3735',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]], - ['whirlpool_5fac_3736',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]], - ['whirlpool_5fac_5fremote_5fmodel_5ft_3737',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]], - ['whynter_3738',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]], - ['wifi_3739',['Wifi',['../unionVoltasProtocol.html#aae1406825a156f159c5ad4b28d20364c',1,'VoltasProtocol::Wifi()'],['../unionGreeProtocol.html#a6cf8e0a6c54a5d2b6f14074c6f3dcc92',1,'GreeProtocol::WiFi()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1a.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1a.js deleted file mode 100644 index 7a2b6bff6..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1a.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['zepeal_3744',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]], - ['zh_2dcn_2eh_3745',['zh-CN.h',['../zh-CN_8h.html',1,'']]], - ['zonefollowflag_3746',['zoneFollowFlag',['../classIRCoolixAC.html#a9cb37ed201fcf842c153f0414d9bfd9f',1,'IRCoolixAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1b.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1b.js deleted file mode 100644 index 4747427df..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_1b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_3747',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_2.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_2.js deleted file mode 100644 index 1ece698d2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_2.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['backup_96',['backup',['../classIRToshibaAC.html#adc8d8c6918cd110f524f6bedf6f2bb6e',1,'IRToshibaAC']]], - ['bcdtouint8_97',['bcdToUint8',['../namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7',1,'irutils']]], - ['beep_98',['beep',['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t']]], - ['begin_99',['begin',['../classIRAirwellAc.html#a09a142457af5e012405da80ddaef1dc0',1,'IRAirwellAc::begin()'],['../classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654',1,'IRAmcorAc::begin()'],['../classIRArgoAC.html#aca61a63c37797699540c180354809bd8',1,'IRArgoAC::begin()'],['../classIRCarrierAc64.html#a7d9800edffad8a529971535ada5c00ad',1,'IRCarrierAc64::begin()'],['../classIRCoolixAC.html#a506a5ab28865d0243d75ebb7fe62e4ea',1,'IRCoolixAC::begin()'],['../classIRCoronaAc.html#a7db1a8eb9c3c7f76091b2707458e54a9',1,'IRCoronaAc::begin()'],['../classIRDaikinESP.html#accd087c48f246a71898cc6fd7afc2cc7',1,'IRDaikinESP::begin()'],['../classIRDaikin2.html#a6a7b5c28feec523ee81e99a9c32da26e',1,'IRDaikin2::begin()'],['../classIRDaikin216.html#a95be01fb6e672ebd12f2ebca0406ba15',1,'IRDaikin216::begin()'],['../classIRDaikin160.html#a62bb5f66cd99711e388eaa1be9faf617',1,'IRDaikin160::begin()'],['../classIRDaikin176.html#aa742f7d9ae3c9e57cae0e471d7fe59d1',1,'IRDaikin176::begin()'],['../classIRDaikin128.html#af86dba9e085b771c8c3caaebb9f8ee84',1,'IRDaikin128::begin()'],['../classIRDaikin152.html#a2746854350ca7d3a71699439f9843381',1,'IRDaikin152::begin()'],['../classIRDaikin64.html#a291d5f702b4ce763507c731db08b48f2',1,'IRDaikin64::begin()'],['../classIRDelonghiAc.html#af3e6d5f445b5968fc69792a1c06f6d5b',1,'IRDelonghiAc::begin()'],['../classIRElectraAc.html#afff519ff9e81ec4aa03ff337f8efef13',1,'IRElectraAc::begin()'],['../classIRFujitsuAC.html#af0dc3fffdafae5970bc367f31029464b',1,'IRFujitsuAC::begin()'],['../classIRGoodweatherAc.html#abace3c8b25d4737a83fe33f94fc741d9',1,'IRGoodweatherAc::begin()'],['../classIRGreeAC.html#a44cf8f0e09248741094af4b35321ab1c',1,'IRGreeAC::begin()'],['../classIRHaierAC.html#ab92fd48ccb5707cb6d14e9d46ce42e17',1,'IRHaierAC::begin()'],['../classIRHaierACYRW02.html#addc01e60e8c4045fab6f22c852eb620f',1,'IRHaierACYRW02::begin()'],['../classIRHitachiAc.html#a62817c840f352bb01a394c37fc95f0f0',1,'IRHitachiAc::begin()'],['../classIRHitachiAc1.html#a28d5d351003d3e0bc1506b06cac8b3d6',1,'IRHitachiAc1::begin()'],['../classIRHitachiAc424.html#a11866bba49e9b976eb22b1039787ecae',1,'IRHitachiAc424::begin()'],['../classIRHitachiAc3.html#a6d79ac7b8ce977e8059019349d6991a7',1,'IRHitachiAc3::begin()'],['../classIRKelvinatorAC.html#a4591bf4e8131aa2a228cbc611156e7f4',1,'IRKelvinatorAC::begin()'],['../classIRLgAc.html#ac08ada1c67ace5ee2ebe4d325aa8c25d',1,'IRLgAc::begin()'],['../classIRMideaAC.html#ac36b6aa76b6b98ab186cd1d5ad9246b4',1,'IRMideaAC::begin()'],['../classIRMitsubishiAC.html#aa6e58080fd811f5b6d0f90c4ef5917df',1,'IRMitsubishiAC::begin()'],['../classIRMitsubishi136.html#abbcd8307862beee2899d2b9900537520',1,'IRMitsubishi136::begin()'],['../classIRMitsubishi112.html#a1d00958556872286b1818d0dbf02e112',1,'IRMitsubishi112::begin()'],['../classIRMitsubishiHeavy152Ac.html#afd649a53d9f7d9b31b7a5732d6cd0857',1,'IRMitsubishiHeavy152Ac::begin()'],['../classIRMitsubishiHeavy88Ac.html#a9bcf18c942ad4df4856bd319215a2002',1,'IRMitsubishiHeavy88Ac::begin()'],['../classIRNeoclimaAc.html#a8f82159b94d86cc4e3d4719441bfa96e',1,'IRNeoclimaAc::begin()'],['../classIRPanasonicAc.html#af48075dc4eb84fcc7f718375d4b0e00a',1,'IRPanasonicAc::begin()'],['../classIRSamsungAc.html#a89f1f902042cd6c6ba9d0f0c6d2cc581',1,'IRSamsungAc::begin()'],['../classIRSanyoAc.html#af4859c4049a35b7f82cf91d326c9a957',1,'IRSanyoAc::begin()'],['../classIRSharpAc.html#ab87e5b599b7e8fc387fff25b5e13e34f',1,'IRSharpAc::begin()'],['../classIRTcl112Ac.html#a5b9983ab4027951679f0dc31b33cbadf',1,'IRTcl112Ac::begin()'],['../classIRTechnibelAc.html#ad35c2c0c75109d70519b641ca3052bd2',1,'IRTechnibelAc::begin()'],['../classIRTecoAc.html#a3b23a8556686c83b146101fc31b0dff3',1,'IRTecoAc::begin()'],['../classIRToshibaAC.html#a41e847f399e42c91b0f4aa2ef5d36cba',1,'IRToshibaAC::begin()'],['../classIRTranscoldAc.html#a2a20a540647efb1f1e03689e42debd2e',1,'IRTranscoldAc::begin()'],['../classIRTrotecESP.html#a093b874287adb8ef2cc60c832765ff58',1,'IRTrotecESP::begin()'],['../classIRVestelAc.html#a794808d49eb6ce1521ff800b2b15a580',1,'IRVestelAc::begin()'],['../classIRVoltas.html#a1b895fa945ce8c6f81444d9306a59d65',1,'IRVoltas::begin()'],['../classIRWhirlpoolAc.html#a21db8b31504d416efb2511a33bdc2209',1,'IRWhirlpoolAc::begin()'],['../classIRsend.html#a386f026bf739b0718efde4cffa6ce129',1,'IRsend::begin()']]], - ['bits_100',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], - ['booltostring_101',['boolToString',['../classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf',1,'IRac']]], - ['boost_102',['Boost',['../unionDelonghiProtocol.html#ad3347e0739d5c00f3fb5cba7c9f53bcd',1,'DelonghiProtocol']]], - ['bufsize_103',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], - ['buildfromstate_104',['buildFromState',['../classIRFujitsuAC.html#a6fc8d7d0f649185e0858974394636a8d',1,'IRFujitsuAC']]], - ['buildstate_105',['buildState',['../classIRFujitsuAC.html#ac885c7952253fcee9bf5b4a889b54da9',1,'IRFujitsuAC']]], - ['button_106',['Button',['../unionHaierYRW02Protocol.html#ab5b13626ecf6214cc1be52d47909915d',1,'HaierYRW02Protocol']]], - ['byte_107',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_4.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_4.js deleted file mode 100644 index 0883819a8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_4.js +++ /dev/null @@ -1,122 +0,0 @@ -var searchData= -[ - ['daikin_157',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac::daikin()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'DAIKIN(): IRremoteESP8266.h']]], - ['daikin128_158',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac::daikin128()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'DAIKIN128(): IRremoteESP8266.h']]], - ['daikin152_159',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac::daikin152()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'DAIKIN152(): IRremoteESP8266.h']]], - ['daikin160_160',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac::daikin160()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'DAIKIN160(): IRremoteESP8266.h']]], - ['daikin176_161',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac::daikin176()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'DAIKIN176(): IRremoteESP8266.h']]], - ['daikin2_162',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac::daikin2()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'DAIKIN2(): IRremoteESP8266.h']]], - ['daikin216_163',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac::daikin216()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'DAIKIN216(): IRremoteESP8266.h']]], - ['daikin64_164',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac::daikin64()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'DAIKIN64(): IRremoteESP8266.h']]], - ['data_165',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['data0_166',['Data0',['../structCoronaSection.html#a975b14d8bc30807013714158ef7474ea',1,'CoronaSection']]], - ['data0inv_167',['Data0Inv',['../structCoronaSection.html#ab05024b8314929dcd8ccdda9b497be8c',1,'CoronaSection']]], - ['data1_168',['Data1',['../structCoronaSection.html#a59d97a1bc0a1be50b6f96c4d70673425',1,'CoronaSection']]], - ['data1inv_169',['Data1Inv',['../structCoronaSection.html#ada247bbfb60f24cd9e9a612c9621cbb4',1,'CoronaSection']]], - ['de_2dch_2eh_170',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_171',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['decode_172',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decode_5fresults_173',['decode_results',['../classdecode__results.html',1,'']]], - ['decode_5ftype_174',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['decode_5ftype_5ft_175',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]], - ['decodeairwell_176',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_177',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_178',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_179',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_180',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_181',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_182',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_183',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_184',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_185',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_186',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_187',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_188',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_189',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_190',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_191',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_192',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_193',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_194',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_195',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_196',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeelectraac_197',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeepson_198',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_199',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_200',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_201',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_202',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_203',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaieracyrw02_204',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_205',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_206',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_207',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_208',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_209',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_210',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_211',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelvinator_212',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_213',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_214',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_215',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_216',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_217',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_218',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_219',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_220',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemitsubishi_221',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_222',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_223',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_224',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_225',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_226',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_227',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_228',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_229',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_230',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_231',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_232',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_233',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepioneer_234',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_235',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_236',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_237',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_238',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_239',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_240',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_241',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_242',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_243',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_244',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_245',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_246',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodetechnibelac_247',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]], - ['decodeteco_248',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodetoshibaac_249',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_250',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetranscold_251',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]], - ['decodetrotec_252',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodevestelac_253',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_254',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_255',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_256',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodezepeal_257',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_258',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['defaults_2eh_259',['defaults.h',['../defaults_8h.html',1,'']]], - ['degrees_260',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['delonghi_5fac_261',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], - ['delonghiac_262',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['delonghiprotocol_263',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]], - ['denon_264',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], - ['deprecated_20list_265',['Deprecated List',['../deprecated.html',1,'']]], - ['dg11j13a_266',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], - ['dg11j191_267',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], - ['disableirin_268',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_269',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], - ['disableontimer_270',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], - ['disablesleeptimer_271',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]], - ['dish_272',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], - ['displaytemp_273',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]], - ['doshisha_274',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]], - ['doxygen_5findex_2emd_275',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_5.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_5.js deleted file mode 100644 index 2166aa86b..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_5.js +++ /dev/null @@ -1,35 +0,0 @@ -var searchData= -[ - ['econo_276',['Econo',['../unionCoronaProtocol.html#a1076afecc4292c370fed27ce380a1ed5',1,'CoronaProtocol::Econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()'],['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()']]], - ['elapsed_277',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], - ['electra_278',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], - ['electra_5fac_279',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], - ['en_2dau_2eh_280',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_281',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_282',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_283',['en-US.h',['../en-US_8h.html',1,'']]], - ['enableirin_284',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], - ['enableirout_285',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], - ['enableofftimer_286',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], - ['enableontimer_287',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], - ['enablesleeptimer_288',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], - ['enabletimer_289',['enableTimer',['../classIRWhirlpoolAc.html#ad07804318721bc5dd60f7322e02c9696',1,'IRWhirlpoolAc']]], - ['encodedoshisha_290',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], - ['encodejvc_291',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], - ['encodelg_292',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], - ['encodemagiquest_293',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], - ['encodemetz_294',['encodeMetz',['../classIRsend.html#a99c88ec9f8426003738a9a1682595b9a',1,'IRsend']]], - ['encodenec_295',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], - ['encodepanasonic_296',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], - ['encodepioneer_297',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], - ['encoderc5_298',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], - ['encoderc5x_299',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], - ['encoderc6_300',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], - ['encodesamsung_301',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], - ['encodesanyolc7461_302',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], - ['encodesharp_303',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], - ['encodesony_304',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], - ['encodetime_305',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]], - ['epson_306',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]], - ['es_2des_2eh_307',['es-ES.h',['../es-ES_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_6.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_6.js deleted file mode 100644 index db538a9d4..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_6.js +++ /dev/null @@ -1,18 +0,0 @@ -var searchData= -[ - ['fahrenheit_308',['Fahrenheit',['../unionDelonghiProtocol.html#a8fe11756b36ba6f55eaccf553cc0dea3',1,'DelonghiProtocol']]], - ['fahrenheittocelsius_309',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], - ['fan_310',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionAmcorProtocol.html#a208edfb233f0747b5abe8911fe55bfb3',1,'AmcorProtocol::Fan()'],['../unionArgoProtocol.html#a9247f87997f4fda42940ca204b8363d6',1,'ArgoProtocol::Fan()'],['../unionCarrierProtocol.html#ab7e563e2015627a65259b0190908034b',1,'CarrierProtocol::Fan()'],['../unionCoronaProtocol.html#a981185f964fcaa1dc657a7ad770c446d',1,'CoronaProtocol::Fan()'],['../unionDelonghiProtocol.html#ab3a1bc23e8349851f7d813b117426518',1,'DelonghiProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()']]], - ['fanspeed_311',['FanSpeed',['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()'],['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()']]], - ['fanspeed_5ft_312',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], - ['fanspeedtostring_313',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], - ['filter_314',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], - ['fixchecksum_315',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], - ['fixup_316',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], - ['flap_317',['Flap',['../unionArgoProtocol.html#ab7d5a6a5d6849160b5980de7615dd5d1',1,'ArgoProtocol']]], - ['flap_5fmode_318',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]], - ['fr_2dfr_2eh_319',['fr-FR.h',['../fr-FR_8h.html',1,'']]], - ['fujitsu_320',['fujitsu',['../classIRac.html#a8060ea615d929e3f400e68693c22320d',1,'IRac']]], - ['fujitsu_5fac_321',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]], - ['fujitsu_5fac_5fremote_5fmodel_5ft_322',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_8.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_8.js deleted file mode 100644 index 2ba22b64f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_8.js +++ /dev/null @@ -1,30 +0,0 @@ -var searchData= -[ - ['haier_443',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], - ['haier_5fac_444',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], - ['haier_5fac_5fyrw02_445',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], - ['haierprotocol_446',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_447',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]], - ['haieryrwo2_448',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], - ['handlespecialstate_449',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC::handleSpecialState()'],['../classIRTranscoldAc.html#a01a3e3f8f92b8fb3b6d023e595f3ce17',1,'IRTranscoldAc::handleSpecialState()']]], - ['handletoggles_450',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], - ['hasacstate_451',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], - ['hasinvertedstates_452',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], - ['hasstatechanged_453',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], - ['header0_454',['Header0',['../structCoronaSection.html#a3b3c0a1a42da65bb4b481e59b42f26a6',1,'CoronaSection']]], - ['header1_455',['Header1',['../structCoronaSection.html#a3d6d6c1e31f82a76cd88f81bcdb83a3a',1,'CoronaSection']]], - ['health_456',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()']]], - ['heat_5fmode_457',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]], - ['hitachi_458',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], - ['hitachi1_459',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], - ['hitachi344_460',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], - ['hitachi424_461',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], - ['hitachi_5fac_462',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_463',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_5fremote_5fmodel_5ft_464',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]], - ['hitachi_5fac2_465',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], - ['hitachi_5fac3_466',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], - ['hitachi_5fac344_467',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], - ['hitachi_5fac424_468',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]], - ['htmlescape_469',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_9.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_9.js deleted file mode 100644 index 84cecebf0..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_9.js +++ /dev/null @@ -1,192 +0,0 @@ -var searchData= -[ - ['i18n_2eh_470',['i18n.h',['../i18n_8h.html',1,'']]], - ['ifeel_471',['iFeel',['../unionArgoProtocol.html#a9d51b32b8e2b2ff08339be238a775097',1,'ArgoProtocol::iFeel()'],['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol::IFeel()']]], - ['inax_472',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]], - ['irremoteesp8266_20library_20api_20documentation_473',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['initstate_474',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]], - ['invertbits_475',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], - ['invertbytepairs_476',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]], - ['ir_5fairwell_2ecpp_477',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_478',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_479',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_480',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_481',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_482',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_483',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_484',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_485',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_486',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_487',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_488',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_489',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_490',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_491',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_492',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_493',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_494',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_495',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_496',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5felectra_2ecpp_497',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_498',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5fepson_2ecpp_499',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_500',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_501',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_502',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_503',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_504',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_505',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_506',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_507',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_508',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_509',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_510',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_511',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_512',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_513',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelvinator_2ecpp_514',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_515',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_516',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_517',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_518',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_519',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_520',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_521',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_522',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_523',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_524',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_525',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_526',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_527',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_528',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_529',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_530',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_531',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_532',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_533',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_534',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_535',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_536',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_537',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_538',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_539',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_540',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_541',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_542',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_543',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_544',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_545',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_546',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_547',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_548',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_549',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_550',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_551',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_552',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_553',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5ftechnibel_2ecpp_554',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]], - ['ir_5ftechnibel_2eh_555',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]], - ['ir_5fteco_2ecpp_556',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_557',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5ftoshiba_2ecpp_558',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_559',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftranscold_2ecpp_560',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]], - ['ir_5ftranscold_2eh_561',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_562',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_563',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_564',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_565',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_566',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_567',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_568',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_569',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_570',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_571',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_572',['IRac',['../classIRac.html',1,'IRac'],['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac::IRac()']]], - ['irac_2ecpp_573',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_574',['IRac.h',['../IRac_8h.html',1,'']]], - ['iracutils_575',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irairwellac_576',['IRAirwellAc',['../classIRAirwellAc.html',1,'IRAirwellAc'],['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc::IRAirwellAc()']]], - ['iramcorac_577',['IRAmcorAc',['../classIRAmcorAc.html',1,'IRAmcorAc'],['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc::IRAmcorAc()']]], - ['irargoac_578',['IRArgoAC',['../classIRArgoAC.html',1,'IRArgoAC'],['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC::IRArgoAC()']]], - ['ircarrierac64_579',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'IRCarrierAc64'],['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64::IRCarrierAc64()']]], - ['ircoolixac_580',['IRCoolixAC',['../classIRCoolixAC.html',1,'IRCoolixAC'],['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC::IRCoolixAC()']]], - ['ircoronaac_581',['IRCoronaAc',['../classIRCoronaAc.html',1,'IRCoronaAc'],['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc::IRCoronaAc()']]], - ['irdaikin128_582',['IRDaikin128',['../classIRDaikin128.html',1,'IRDaikin128'],['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128::IRDaikin128()']]], - ['irdaikin152_583',['IRDaikin152',['../classIRDaikin152.html',1,'IRDaikin152'],['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152::IRDaikin152()']]], - ['irdaikin160_584',['IRDaikin160',['../classIRDaikin160.html',1,'IRDaikin160'],['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160::IRDaikin160()']]], - ['irdaikin176_585',['IRDaikin176',['../classIRDaikin176.html',1,'IRDaikin176'],['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176::IRDaikin176()']]], - ['irdaikin2_586',['IRDaikin2',['../classIRDaikin2.html',1,'IRDaikin2'],['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2::IRDaikin2()']]], - ['irdaikin216_587',['IRDaikin216',['../classIRDaikin216.html',1,'IRDaikin216'],['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216::IRDaikin216()']]], - ['irdaikin64_588',['IRDaikin64',['../classIRDaikin64.html',1,'IRDaikin64'],['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64::IRDaikin64()']]], - ['irdaikinesp_589',['IRDaikinESP',['../classIRDaikinESP.html',1,'IRDaikinESP'],['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP::IRDaikinESP()']]], - ['irdelonghiac_590',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'IRDelonghiAc'],['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc::IRDelonghiAc()']]], - ['irelectraac_591',['IRElectraAc',['../classIRElectraAc.html',1,'IRElectraAc'],['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc::IRElectraAc()']]], - ['irfujitsuac_592',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'IRFujitsuAC'],['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC::IRFujitsuAC()']]], - ['irgoodweatherac_593',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'IRGoodweatherAc'],['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc::IRGoodweatherAc()']]], - ['irgreeac_594',['IRGreeAC',['../classIRGreeAC.html',1,'IRGreeAC'],['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC::IRGreeAC()']]], - ['irhaierac_595',['IRHaierAC',['../classIRHaierAC.html',1,'IRHaierAC'],['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC::IRHaierAC()']]], - ['irhaieracyrw02_596',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'IRHaierACYRW02'],['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02::IRHaierACYRW02()']]], - ['irhitachiac_597',['IRHitachiAc',['../classIRHitachiAc.html',1,'IRHitachiAc'],['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc::IRHitachiAc()']]], - ['irhitachiac1_598',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'IRHitachiAc1'],['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1::IRHitachiAc1()']]], - ['irhitachiac3_599',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'IRHitachiAc3'],['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3::IRHitachiAc3()']]], - ['irhitachiac344_600',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'IRHitachiAc344'],['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424::IRHitachiAc344()'],['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344::IRHitachiAc344()']]], - ['irhitachiac424_601',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'IRHitachiAc424'],['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424::IRHitachiAc424()']]], - ['irkelvinatorac_602',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'IRKelvinatorAC'],['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC::IRKelvinatorAC()']]], - ['irlgac_603',['IRLgAc',['../classIRLgAc.html',1,'IRLgAc'],['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc::IRLgAc()']]], - ['irmideaac_604',['IRMideaAC',['../classIRMideaAC.html',1,'IRMideaAC'],['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC::IRMideaAC()']]], - ['irmitsubishi112_605',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'IRMitsubishi112'],['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112::IRMitsubishi112()']]], - ['irmitsubishi136_606',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'IRMitsubishi136'],['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136::IRMitsubishi136()']]], - ['irmitsubishiac_607',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'IRMitsubishiAC'],['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC::IRMitsubishiAC()']]], - ['irmitsubishiheavy152ac_608',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'IRMitsubishiHeavy152Ac'],['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac()']]], - ['irmitsubishiheavy88ac_609',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'IRMitsubishiHeavy88Ac'],['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac()']]], - ['irneoclimaac_610',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'IRNeoclimaAc'],['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc::IRNeoclimaAc()']]], - ['irpanasonicac_611',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'IRPanasonicAc'],['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc::IRPanasonicAc()']]], - ['irparams_612',['irparams',['../IRrecv_8cpp.html#a5620be27a7445f25d43dbe3432ed6fd1',1,'IRrecv.cpp']]], - ['irparams_5fsave_613',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv::irparams_save()'],['../IRrecv_8cpp.html#a96e84ae171529ee954c53e2e938dd998',1,'irparams_save(): IRrecv.cpp']]], - ['irparams_5ft_614',['irparams_t',['../structirparams__t.html',1,'']]], - ['irpin_615',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], - ['irrecv_616',['IRrecv',['../classIRrecv.html',1,'IRrecv'],['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]], - ['irrecv_2ecpp_617',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_618',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremote_5fmux_619',['irremote_mux',['../IRrecv_8cpp.html#ad2612f65707186ef7df0179d3636b4ea',1,'IRrecv.cpp']]], - ['irremoteesp8266_2eh_620',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsamsungac_621',['IRSamsungAc',['../classIRSamsungAc.html',1,'IRSamsungAc'],['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc::IRSamsungAc()']]], - ['irsanyoac_622',['IRSanyoAc',['../classIRSanyoAc.html',1,'IRSanyoAc'],['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc::IRSanyoAc()']]], - ['irsend_623',['IRsend',['../classIRsend.html',1,'IRsend'],['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend::IRsend()']]], - ['irsend_2ecpp_624',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_625',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irsharpac_626',['IRSharpAc',['../classIRSharpAc.html',1,'IRSharpAc'],['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc::IRSharpAc()']]], - ['irtcl112ac_627',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'IRTcl112Ac'],['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac::IRTcl112Ac()']]], - ['irtechnibelac_628',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'IRTechnibelAc'],['../classIRTechnibelAc.html#a799407de348870d5765acf163ab92a75',1,'IRTechnibelAc::IRTechnibelAc()']]], - ['irtecoac_629',['IRTecoAc',['../classIRTecoAc.html',1,'IRTecoAc'],['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc::IRTecoAc()']]], - ['irtext_2ecpp_630',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_631',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_632',['IRtimer',['../classIRtimer.html',1,'IRtimer'],['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer::IRtimer()']]], - ['irtimer_2ecpp_633',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_634',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irtoshibaac_635',['IRToshibaAC',['../classIRToshibaAC.html',1,'IRToshibaAC'],['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC::IRToshibaAC()']]], - ['irtranscoldac_636',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'IRTranscoldAc'],['../classIRTranscoldAc.html#a155278b9e5803aacf69a1ae20ed5b652',1,'IRTranscoldAc::IRTranscoldAc()']]], - ['irtrotecesp_637',['IRTrotecESP',['../classIRTrotecESP.html',1,'IRTrotecESP'],['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP::IRTrotecESP()']]], - ['irutils_638',['irutils',['../namespaceirutils.html',1,'']]], - ['irutils_2ecpp_639',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_640',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['irvestelac_641',['IRVestelAc',['../classIRVestelAc.html',1,'IRVestelAc'],['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc::IRVestelAc()']]], - ['irvoltas_642',['IRVoltas',['../classIRVoltas.html',1,'IRVoltas'],['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas::IRVoltas()']]], - ['irwhirlpoolac_643',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'IRWhirlpoolAc'],['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc::IRWhirlpoolAc()']]], - ['iseconotoggle_644',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]], - ['isofftimeractive_645',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]], - ['isofftimerenabled_646',['isOffTimerEnabled',['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], - ['isontimeractive_647',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]], - ['isontimerenabled_648',['isOnTimerEnabled',['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], - ['ispowerspecial_649',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]], - ['isprotocolsupported_650',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], - ['isspecialstate_651',['isSpecialState',['../classIRCoolixAC.html#a51bde954328ca5887a8353ba5562b3db',1,'IRCoolixAC::isSpecialState()'],['../classIRTranscoldAc.html#aed8c20db75d4070e66445fb2b092e2de',1,'IRTranscoldAc::isSpecialState()']]], - ['isswingvtoggle_652',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]], - ['istimecommand_653',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]], - ['istimeractive_654',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]], - ['istimerenabled_655',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]], - ['isvalidlgac_656',['isValidLgAc',['../classIRLgAc.html#a5984041eb12603ac1a277c28b355322a',1,'IRLgAc']]], - ['it_2dit_2eh_657',['it-IT.h',['../it-IT_8h.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_658',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_b.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_b.js deleted file mode 100644 index 2e26a3c3f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_b.js +++ /dev/null @@ -1,2640 +0,0 @@ -var searchData= -[ - ['k3dstr_660',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], - ['k6thsensestr_661',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], - ['k8cheatstr_662',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], - ['kairflowstr_663',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], - ['kairwellauto_664',['kAirwellAuto',['../ir__Airwell_8h.html#a5f3dbadb46874c672e093c5bbb59a97e',1,'ir_Airwell.h']]], - ['kairwellbits_665',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], - ['kairwellcool_666',['kAirwellCool',['../ir__Airwell_8h.html#ab82c81efca876184ab30f24347dfa6af',1,'ir_Airwell.h']]], - ['kairwelldry_667',['kAirwellDry',['../ir__Airwell_8h.html#a1274093143c10ea0208fdfe7b4ebdb02',1,'ir_Airwell.h']]], - ['kairwellfan_668',['kAirwellFan',['../ir__Airwell_8h.html#abcdf6dac387c3fa5bb2eeb0327250ac7',1,'ir_Airwell.h']]], - ['kairwellfanauto_669',['kAirwellFanAuto',['../ir__Airwell_8h.html#a40c8e262e6e6084c1d069bebb6a0fcb1',1,'ir_Airwell.h']]], - ['kairwellfanhigh_670',['kAirwellFanHigh',['../ir__Airwell_8h.html#ab269b3942bee5458ec89a917d2ab0288',1,'ir_Airwell.h']]], - ['kairwellfanlow_671',['kAirwellFanLow',['../ir__Airwell_8h.html#ab105d4d9a63166f9fbf2dfb47a58a3b7',1,'ir_Airwell.h']]], - ['kairwellfanmedium_672',['kAirwellFanMedium',['../ir__Airwell_8h.html#ac755543eac2fad7bbd1f2727e11aee21',1,'ir_Airwell.h']]], - ['kairwellfootermark_673',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], - ['kairwellhalfclockperiod_674',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], - ['kairwellhdrmark_675',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], - ['kairwellhdrspace_676',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], - ['kairwellheat_677',['kAirwellHeat',['../ir__Airwell_8h.html#a0f6e36670946f015d4599ad626300ef7',1,'ir_Airwell.h']]], - ['kairwellknowngoodstate_678',['kAirwellKnownGoodState',['../ir__Airwell_8h.html#ae907f815fab982317d7865525b0294d5',1,'ir_Airwell.h']]], - ['kairwellmaxtemp_679',['kAirwellMaxTemp',['../ir__Airwell_8h.html#adccc14f29d12b3c1e38a2e6a7b820b5f',1,'ir_Airwell.h']]], - ['kairwellminrepeats_680',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], - ['kairwellmintemp_681',['kAirwellMinTemp',['../ir__Airwell_8h.html#ad8eef8b76485134c1c5278cae460e028',1,'ir_Airwell.h']]], - ['kairwelloverhead_682',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], - ['kaiwarct501bits_683',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], - ['kaiwarct501minrepeats_684',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], - ['kaiwarct501postbits_685',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], - ['kaiwarct501postdata_686',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], - ['kaiwarct501prebits_687',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], - ['kaiwarct501predata_688',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], - ['kallprotocolnamesstr_689',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], - ['kalokabits_690',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], - ['kalokaledblue_691',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], - ['kalokaledgreen_692',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], - ['kalokaledlightgreen_693',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], - ['kalokaledmidblue_694',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], - ['kalokaledorange_695',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], - ['kalokaledpink_696',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], - ['kalokaledpinkred_697',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], - ['kalokaledrainbow_698',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], - ['kalokaledred_699',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], - ['kalokaledtreegrow_700',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], - ['kalokaledwhite_701',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], - ['kalokaledyellow_702',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], - ['kalokanightfade_703',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], - ['kalokanighttimer_704',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], - ['kalokapower_705',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], - ['kamcorauto_706',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], - ['kamcorbits_707',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], - ['kamcorcool_708',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], - ['kamcordefaultrepeat_709',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], - ['kamcordry_710',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], - ['kamcorfan_711',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], - ['kamcorfanauto_712',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], - ['kamcorfanmax_713',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], - ['kamcorfanmed_714',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], - ['kamcorfanmin_715',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], - ['kamcorfootermark_716',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], - ['kamcorgap_717',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], - ['kamcorhdrmark_718',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], - ['kamcorhdrspace_719',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], - ['kamcorheat_720',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], - ['kamcormax_721',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], - ['kamcormaxtemp_722',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], - ['kamcormintemp_723',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], - ['kamcoronemark_724',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], - ['kamcoronespace_725',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], - ['kamcorpoweroff_726',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], - ['kamcorpoweron_727',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], - ['kamcorstatelength_728',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], - ['kamcortolerance_729',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], - ['kamcorventon_730',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], - ['kamcorzeromark_731',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], - ['kamcorzerospace_732',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], - ['kargoauto_733',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], - ['kargobitmark_734',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], - ['kargobits_735',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], - ['kargocool_736',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], - ['kargodefaultrepeat_737',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], - ['kargodry_738',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], - ['kargofan1_739',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], - ['kargofan2_740',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], - ['kargofan3_741',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], - ['kargofanauto_742',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], - ['kargoflap1_743',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], - ['kargoflap2_744',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], - ['kargoflap3_745',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], - ['kargoflap4_746',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], - ['kargoflap5_747',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], - ['kargoflap6_748',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], - ['kargoflapauto_749',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], - ['kargoflapfull_750',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], - ['kargogap_751',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], - ['kargohdrmark_752',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], - ['kargohdrspace_753',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], - ['kargoheat_754',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], - ['kargoheatauto_755',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], - ['kargoheatbit_756',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], - ['kargoheatblink_757',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], - ['kargomaxroomtemp_758',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], - ['kargomaxtemp_759',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], - ['kargomintemp_760',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], - ['kargooff_761',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], - ['kargoonespace_762',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], - ['kargostatelength_763',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], - ['kargotempdelta_764',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], - ['kargozerospace_765',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], - ['kauto_766',['kAuto',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()']]], - ['kautomaticstr_767',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], - ['kautostr_768',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], - ['kbeepstr_769',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], - ['kbitsstr_770',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], - ['kbottomstr_771',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], - ['kbreezestr_772',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], - ['kbuttonstr_773',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], - ['kcancelstr_774',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], - ['kcarrierac40bitmark_775',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], - ['kcarrierac40bits_776',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], - ['kcarrierac40gap_777',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrmark_778',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrspace_779',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], - ['kcarrierac40minrepeat_780',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], - ['kcarrierac40onespace_781',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], - ['kcarrierac40zerospace_782',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], - ['kcarrierac64bitmark_783',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], - ['kcarrierac64bits_784',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], - ['kcarrierac64checksumoffset_785',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], - ['kcarrierac64checksumsize_786',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], - ['kcarrierac64cool_787',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], - ['kcarrierac64fan_788',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], - ['kcarrierac64fanauto_789',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], - ['kcarrierac64fanhigh_790',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], - ['kcarrierac64fanlow_791',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], - ['kcarrierac64fanmedium_792',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], - ['kcarrierac64gap_793',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrmark_794',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrspace_795',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], - ['kcarrierac64heat_796',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], - ['kcarrierac64maxtemp_797',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], - ['kcarrierac64minrepeat_798',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], - ['kcarrierac64mintemp_799',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], - ['kcarrierac64onespace_800',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], - ['kcarrierac64timermax_801',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], - ['kcarrierac64timermin_802',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], - ['kcarrierac64zerospace_803',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], - ['kcarrieracbitmark_804',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], - ['kcarrieracbits_805',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], - ['kcarrieracfreq_806',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], - ['kcarrieracgap_807',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], - ['kcarrierachdrmark_808',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], - ['kcarrierachdrspace_809',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], - ['kcarrieracminrepeat_810',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], - ['kcarrieraconespace_811',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], - ['kcarrieraczerospace_812',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], - ['kceilingstr_813',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], - ['kcelsiusfahrenheitstr_814',['kCelsiusFahrenheitStr',['../IRtext_8cpp.html#ab24f542059d0c1c1352686469c9fde7d',1,'kCelsiusFahrenheitStr(): IRtext.cpp'],['../IRtext_8h.html#a9bd25ef522ae667d9869b6f6ea937f5d',1,'kCelsiusFahrenheitStr(): IRtext.cpp']]], - ['kcelsiusstr_815',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], - ['kcentrestr_816',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], - ['kchangestr_817',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], - ['kcirculatestr_818',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], - ['kcleanstr_819',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], - ['kclockstr_820',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], - ['kcodestr_821',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], - ['kcolonspacestr_822',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], - ['kcomfortstr_823',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], - ['kcommandstr_824',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], - ['kcommaspacestr_825',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], - ['kcool_826',['kCool',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2',1,'stdAc']]], - ['kcoolixauto_827',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], - ['kcoolixbitmark_828',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], - ['kcoolixbitmarkticks_829',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], - ['kcoolixbits_830',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], - ['kcoolixclean_831',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], - ['kcoolixcmdfan_832',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], - ['kcoolixcool_833',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], - ['kcoolixdefaultrepeat_834',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], - ['kcoolixdefaultstate_835',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], - ['kcoolixdry_836',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], - ['kcoolixfan_837',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], - ['kcoolixfanauto_838',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], - ['kcoolixfanauto0_839',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], - ['kcoolixfanfixed_840',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], - ['kcoolixfanmax_841',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], - ['kcoolixfanmed_842',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], - ['kcoolixfanmin_843',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], - ['kcoolixfanoffset_844',['kCoolixFanOffset',['../ir__Coolix_8h.html#a1656f488974bd12db4049dfa8ff43a4e',1,'ir_Coolix.h']]], - ['kcoolixfansize_845',['kCoolixFanSize',['../ir__Coolix_8h.html#a5f4649b5b73766245bc82191cdc0e596',1,'ir_Coolix.h']]], - ['kcoolixfantempcode_846',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], - ['kcoolixfanzonefollow_847',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], - ['kcoolixhdrmark_848',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], - ['kcoolixhdrmarkticks_849',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspace_850',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspaceticks_851',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], - ['kcoolixheat_852',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], - ['kcoolixled_853',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], - ['kcoolixmingap_854',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], - ['kcoolixmingapticks_855',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], - ['kcoolixmodeoffset_856',['kCoolixModeOffset',['../ir__Coolix_8h.html#acd17067177e1cc6776b7932afd9fbdb2',1,'ir_Coolix.h']]], - ['kcoolixmodesize_857',['kCoolixModeSize',['../ir__Coolix_8h.html#a69e5ee4c5eb95ca3346d9d9186a688a8',1,'ir_Coolix.h']]], - ['kcoolixoff_858',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], - ['kcoolixonespace_859',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], - ['kcoolixonespaceticks_860',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], - ['kcoolixprefix_861',['kCoolixPrefix',['../ir__Coolix_8h.html#a1b88ef6651189ba330d8e2847528964b',1,'ir_Coolix.h']]], - ['kcoolixsensortempignorecode_862',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], - ['kcoolixsensortempmax_863',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], - ['kcoolixsensortempmin_864',['kCoolixSensorTempMin',['../ir__Coolix_8h.html#a48f3f3ad79a53e0758270647db0b089c',1,'ir_Coolix.h']]], - ['kcoolixsensortempoffset_865',['kCoolixSensorTempOffset',['../ir__Coolix_8h.html#a03edec58ad078d7de7436929c463898a',1,'ir_Coolix.h']]], - ['kcoolixsensortempsize_866',['kCoolixSensorTempSize',['../ir__Coolix_8h.html#a979d1d4f84432afc29ac3fcc78353d6c',1,'ir_Coolix.h']]], - ['kcoolixsleep_867',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], - ['kcoolixswing_868',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], - ['kcoolixswingh_869',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], - ['kcoolixswingv_870',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], - ['kcoolixtempmap_871',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], - ['kcoolixtempmax_872',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], - ['kcoolixtempmin_873',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], - ['kcoolixtempoffset_874',['kCoolixTempOffset',['../ir__Coolix_8h.html#ac49173b671af51026e378d65c7bc696b',1,'ir_Coolix.h']]], - ['kcoolixtemprange_875',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], - ['kcoolixtempsize_876',['kCoolixTempSize',['../ir__Coolix_8h.html#a7a22c5c9bdd23ef80ffe9d6760c0650e',1,'ir_Coolix.h']]], - ['kcoolixtick_877',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], - ['kcoolixturbo_878',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], - ['kcoolixunknown_879',['kCoolixUnknown',['../ir__Coolix_8h.html#a2913e31a9dc5b89cbcae940cd5d59497',1,'ir_Coolix.h']]], - ['kcoolixzerospace_880',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], - ['kcoolixzerospaceticks_881',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], - ['kcoolixzonefollowmaskoffset_882',['kCoolixZoneFollowMaskOffset',['../ir__Coolix_8h.html#ae5da4da07b9d1bb715102cafd4a0105e',1,'ir_Coolix.h']]], - ['kcoolstr_883',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], - ['kcoronaacbitmark_884',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], - ['kcoronaacbits_885',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], - ['kcoronaacbitsshort_886',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], - ['kcoronaacfanauto_887',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], - ['kcoronaacfanhigh_888',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], - ['kcoronaacfanlow_889',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], - ['kcoronaacfanmedium_890',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], - ['kcoronaacfreq_891',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], - ['kcoronaachdrmark_892',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], - ['kcoronaachdrspace_893',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], - ['kcoronaacmaxtemp_894',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], - ['kcoronaacmintemp_895',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], - ['kcoronaacmodecool_896',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], - ['kcoronaacmodedry_897',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], - ['kcoronaacmodefan_898',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], - ['kcoronaacmodeheat_899',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], - ['kcoronaacofftimersection_900',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], - ['kcoronaaconespace_901',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], - ['kcoronaacontimersection_902',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], - ['kcoronaacoverhead_903',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], - ['kcoronaacoverheadshort_904',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], - ['kcoronaacsectionbytes_905',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], - ['kcoronaacsectiondata0base_906',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], - ['kcoronaacsectionheader0_907',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], - ['kcoronaacsectionheader1_908',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], - ['kcoronaacsectionlabelbase_909',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], - ['kcoronaacsections_910',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], - ['kcoronaacsettingssection_911',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], - ['kcoronaacspacegap_912',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], - ['kcoronaacstatelength_913',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], - ['kcoronaacstatelengthshort_914',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], - ['kcoronaactimermax_915',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], - ['kcoronaactimeroff_916',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], - ['kcoronaactimerunitspermin_917',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], - ['kcoronaaczerospace_918',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], - ['kcoronatolerance_919',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], - ['kdaikin128auto_920',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], - ['kdaikin128bitceiling_921',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], - ['kdaikin128bitecono_922',['kDaikin128BitEcono',['../ir__Daikin_8h.html#a34add42c4df4db799ddf52e8e5587dee',1,'ir_Daikin.h']]], - ['kdaikin128biteconooffset_923',['kDaikin128BitEconoOffset',['../ir__Daikin_8h.html#af822203d873d9b847c3a7b08d236f82b',1,'ir_Daikin.h']]], - ['kdaikin128bithalfhour_924',['kDaikin128BitHalfHour',['../ir__Daikin_8h.html#abf955f8f24fd37bbe21222ca160b3299',1,'ir_Daikin.h']]], - ['kdaikin128bitmark_925',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], - ['kdaikin128bitpowertoggle_926',['kDaikin128BitPowerToggle',['../ir__Daikin_8h.html#a813506d8d3f8b6933379bcfc097e4b29',1,'ir_Daikin.h']]], - ['kdaikin128bitpowertoggleoffset_927',['kDaikin128BitPowerToggleOffset',['../ir__Daikin_8h.html#a05e33573c5050b1e54721a1716d652b5',1,'ir_Daikin.h']]], - ['kdaikin128bits_928',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], - ['kdaikin128bitsleep_929',['kDaikin128BitSleep',['../ir__Daikin_8h.html#a0cb96f1803fab5bfac8ef79a311308de',1,'ir_Daikin.h']]], - ['kdaikin128bitsleepoffset_930',['kDaikin128BitSleepOffset',['../ir__Daikin_8h.html#a7b4aa1ef19f1c23ef74b45eb90734c6f',1,'ir_Daikin.h']]], - ['kdaikin128bitswing_931',['kDaikin128BitSwing',['../ir__Daikin_8h.html#a8f6ab5b7f9871f08364abf3337ae48b4',1,'ir_Daikin.h']]], - ['kdaikin128bitswingoffset_932',['kDaikin128BitSwingOffset',['../ir__Daikin_8h.html#a7f98cf3863ab58b147dc31c497bc07bc',1,'ir_Daikin.h']]], - ['kdaikin128bittimerenabled_933',['kDaikin128BitTimerEnabled',['../ir__Daikin_8h.html#a1197dadb35f318b000ff6ee7ad3ca8b0',1,'ir_Daikin.h']]], - ['kdaikin128bittimerenabledoffset_934',['kDaikin128BitTimerEnabledOffset',['../ir__Daikin_8h.html#af913ee51e5b90ad12f87dbed9ce349d6',1,'ir_Daikin.h']]], - ['kdaikin128bitwall_935',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], - ['kdaikin128byteclockhours_936',['kDaikin128ByteClockHours',['../ir__Daikin_8h.html#a0d705309d30881fd2fe806e5bf8ae27d',1,'ir_Daikin.h']]], - ['kdaikin128byteclockmins_937',['kDaikin128ByteClockMins',['../ir__Daikin_8h.html#ab8c9af42d68548e1e711a0b38976342b',1,'ir_Daikin.h']]], - ['kdaikin128byteeconolight_938',['kDaikin128ByteEconoLight',['../ir__Daikin_8h.html#a75a3c1f1790006f0005666a023218c79',1,'ir_Daikin.h']]], - ['kdaikin128bytemodefan_939',['kDaikin128ByteModeFan',['../ir__Daikin_8h.html#a8433ab362f79a6bb3570d310a05f1141',1,'ir_Daikin.h']]], - ['kdaikin128byteofftimer_940',['kDaikin128ByteOffTimer',['../ir__Daikin_8h.html#a66e243db1131f58d0840980ca64c0282',1,'ir_Daikin.h']]], - ['kdaikin128byteontimer_941',['kDaikin128ByteOnTimer',['../ir__Daikin_8h.html#af27f1f25a52dc4c182111acd2abc554d',1,'ir_Daikin.h']]], - ['kdaikin128bytepowerswingsleep_942',['kDaikin128BytePowerSwingSleep',['../ir__Daikin_8h.html#a0f5a9f1ac68c516744220ad230805c15',1,'ir_Daikin.h']]], - ['kdaikin128bytetemp_943',['kDaikin128ByteTemp',['../ir__Daikin_8h.html#a4d3d5683aaee8e76138750a0f6ff1465',1,'ir_Daikin.h']]], - ['kdaikin128cool_944',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], - ['kdaikin128defaultrepeat_945',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], - ['kdaikin128dry_946',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], - ['kdaikin128fan_947',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], - ['kdaikin128fanauto_948',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], - ['kdaikin128fanhigh_949',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], - ['kdaikin128fanlow_950',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], - ['kdaikin128fanmed_951',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], - ['kdaikin128fanpowerful_952',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], - ['kdaikin128fanquiet_953',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], - ['kdaikin128footermark_954',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], - ['kdaikin128freq_955',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], - ['kdaikin128gap_956',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], - ['kdaikin128halfhouroffset_957',['kDaikin128HalfHourOffset',['../ir__Daikin_8h.html#a8fddd8a5dbad2fd49445eaa2104f7da3',1,'ir_Daikin.h']]], - ['kdaikin128hdrmark_958',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], - ['kdaikin128hdrspace_959',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], - ['kdaikin128heat_960',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], - ['kdaikin128hoursoffset_961',['kDaikin128HoursOffset',['../ir__Daikin_8h.html#ace543fba33c68e3df4aa4d250ed1e792',1,'ir_Daikin.h']]], - ['kdaikin128hourssize_962',['kDaikin128HoursSize',['../ir__Daikin_8h.html#ac5441402c0ee486f3c752a91f09375ff',1,'ir_Daikin.h']]], - ['kdaikin128leadermark_963',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], - ['kdaikin128leaderspace_964',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], - ['kdaikin128maskfan_965',['kDaikin128MaskFan',['../ir__Daikin_8h.html#ae58228f3b9eae0ec171527ced89e509f',1,'ir_Daikin.h']]], - ['kdaikin128masklight_966',['kDaikin128MaskLight',['../ir__Daikin_8h.html#a8d3d4325f91cbdd8ce0cec25fc0d2022',1,'ir_Daikin.h']]], - ['kdaikin128maxtemp_967',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], - ['kdaikin128mintemp_968',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], - ['kdaikin128modesize_969',['kDaikin128ModeSize',['../ir__Daikin_8h.html#a32a97adddfa791cc0e48d9bd847a3a4c',1,'ir_Daikin.h']]], - ['kdaikin128onespace_970',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], - ['kdaikin128sectionlength_971',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], - ['kdaikin128sections_972',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], - ['kdaikin128statelength_973',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], - ['kdaikin128timeroffset_974',['kDaikin128TimerOffset',['../ir__Daikin_8h.html#aabde7c45424ae82a812485e8ceb58dbd',1,'ir_Daikin.h']]], - ['kdaikin128timersize_975',['kDaikin128TimerSize',['../ir__Daikin_8h.html#a6f4022c5e4a092eb039c53ea72f51188',1,'ir_Daikin.h']]], - ['kdaikin128zerospace_976',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], - ['kdaikin152bitmark_977',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], - ['kdaikin152bits_978',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], - ['kdaikin152comfortbyte_979',['kDaikin152ComfortByte',['../ir__Daikin_8h.html#a414b7acd5259122af5b496979fe068dc',1,'ir_Daikin.h']]], - ['kdaikin152comfortoffset_980',['kDaikin152ComfortOffset',['../ir__Daikin_8h.html#a9cc7bb09fb66aa0cf7d0b751505fd3e6',1,'ir_Daikin.h']]], - ['kdaikin152defaultrepeat_981',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], - ['kdaikin152drytemp_982',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], - ['kdaikin152econobyte_983',['kDaikin152EconoByte',['../ir__Daikin_8h.html#a988782fd6bcf25b098d7c07e38679a78',1,'ir_Daikin.h']]], - ['kdaikin152fanbyte_984',['kDaikin152FanByte',['../ir__Daikin_8h.html#a1972e59df2902335e37b2d66d16048a8',1,'ir_Daikin.h']]], - ['kdaikin152fantemp_985',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], - ['kdaikin152freq_986',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], - ['kdaikin152gap_987',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], - ['kdaikin152hdrmark_988',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], - ['kdaikin152hdrspace_989',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], - ['kdaikin152leaderbits_990',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], - ['kdaikin152modebyte_991',['kDaikin152ModeByte',['../ir__Daikin_8h.html#a1aaa767f722926e9aaf02dbcd8029003',1,'ir_Daikin.h']]], - ['kdaikin152onespace_992',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], - ['kdaikin152powerbyte_993',['kDaikin152PowerByte',['../ir__Daikin_8h.html#a67ff6fbdc004d3a29b1d31c5bc47f572',1,'ir_Daikin.h']]], - ['kdaikin152powerfulbyte_994',['kDaikin152PowerfulByte',['../ir__Daikin_8h.html#a720a3019f7bb2f8c458a7b79fbadd08f',1,'ir_Daikin.h']]], - ['kdaikin152quietbyte_995',['kDaikin152QuietByte',['../ir__Daikin_8h.html#ad534758115c401368a428d887faa8768',1,'ir_Daikin.h']]], - ['kdaikin152sensorbyte_996',['kDaikin152SensorByte',['../ir__Daikin_8h.html#a33187d50e8414f943d050a0b1c312168',1,'ir_Daikin.h']]], - ['kdaikin152sensoroffset_997',['kDaikin152SensorOffset',['../ir__Daikin_8h.html#a01ef92b6eb478b1897fdfdcea03d7116',1,'ir_Daikin.h']]], - ['kdaikin152statelength_998',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], - ['kdaikin152swingvbyte_999',['kDaikin152SwingVByte',['../ir__Daikin_8h.html#a9ed39bcce7d0bc73060fba843dfd2b28',1,'ir_Daikin.h']]], - ['kdaikin152tempbyte_1000',['kDaikin152TempByte',['../ir__Daikin_8h.html#a5e232b17db30a7e0ba159e2413df8b14',1,'ir_Daikin.h']]], - ['kdaikin152tempsize_1001',['kDaikin152TempSize',['../ir__Daikin_8h.html#ad22ee842100e70d95f1ebcdcaf3f2099',1,'ir_Daikin.h']]], - ['kdaikin152zerospace_1002',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], - ['kdaikin160bitmark_1003',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], - ['kdaikin160bits_1004',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], - ['kdaikin160bytefan_1005',['kDaikin160ByteFan',['../ir__Daikin_8h.html#a980ae6010c956c92348d3ac88c084247',1,'ir_Daikin.h']]], - ['kdaikin160bytemode_1006',['kDaikin160ByteMode',['../ir__Daikin_8h.html#a6c5bcb2c4447dafc53c26775539886e6',1,'ir_Daikin.h']]], - ['kdaikin160bytepower_1007',['kDaikin160BytePower',['../ir__Daikin_8h.html#a8e79923cf8aa346ea52791887b54ffbe',1,'ir_Daikin.h']]], - ['kdaikin160byteswingv_1008',['kDaikin160ByteSwingV',['../ir__Daikin_8h.html#a35032831d79e96a98527896cd5d52efe',1,'ir_Daikin.h']]], - ['kdaikin160bytetemp_1009',['kDaikin160ByteTemp',['../ir__Daikin_8h.html#a1b9eed515f9cfc3508cce7d53fb7a84a',1,'ir_Daikin.h']]], - ['kdaikin160defaultrepeat_1010',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], - ['kdaikin160freq_1011',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], - ['kdaikin160gap_1012',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], - ['kdaikin160hdrmark_1013',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], - ['kdaikin160hdrspace_1014',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], - ['kdaikin160maskfan_1015',['kDaikin160MaskFan',['../ir__Daikin_8h.html#a623f586183436960361a85f8480c87c6',1,'ir_Daikin.h']]], - ['kdaikin160maskswingv_1016',['kDaikin160MaskSwingV',['../ir__Daikin_8h.html#abfaa078f7dfdd1c0bb14ad15fee26604',1,'ir_Daikin.h']]], - ['kdaikin160onespace_1017',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], - ['kdaikin160section1length_1018',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], - ['kdaikin160section2length_1019',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], - ['kdaikin160sections_1020',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], - ['kdaikin160statelength_1021',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], - ['kdaikin160swingvauto_1022',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], - ['kdaikin160swingvhigh_1023',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], - ['kdaikin160swingvhighest_1024',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], - ['kdaikin160swingvlow_1025',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], - ['kdaikin160swingvlowest_1026',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], - ['kdaikin160swingvmiddle_1027',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], - ['kdaikin160tempoffset_1028',['kDaikin160TempOffset',['../ir__Daikin_8h.html#aa2f7050929bab65dbdb8af5b493dafe2',1,'ir_Daikin.h']]], - ['kdaikin160tempsize_1029',['kDaikin160TempSize',['../ir__Daikin_8h.html#adfecac727480010fae8e419ac3f13e73',1,'ir_Daikin.h']]], - ['kdaikin160zerospace_1030',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], - ['kdaikin176auto_1031',['kDaikin176Auto',['../ir__Daikin_8h.html#a692292ea29754f646f3611326899a3c4',1,'ir_Daikin.h']]], - ['kdaikin176bitmark_1032',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], - ['kdaikin176bits_1033',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], - ['kdaikin176bytealtmode_1034',['kDaikin176ByteAltMode',['../ir__Daikin_8h.html#aae15cbe2aa60bc8acfce2e6a91075a50',1,'ir_Daikin.h']]], - ['kdaikin176bytefan_1035',['kDaikin176ByteFan',['../ir__Daikin_8h.html#a21e4b1854d3f87757ba0f0c10074226c',1,'ir_Daikin.h']]], - ['kdaikin176bytemodebutton_1036',['kDaikin176ByteModeButton',['../ir__Daikin_8h.html#aacda7563a2aaa9a56c77ce550f24a237',1,'ir_Daikin.h']]], - ['kdaikin176bytemodepower_1037',['kDaikin176ByteModePower',['../ir__Daikin_8h.html#a8e72de68ec911d951d22233c6b6cd83c',1,'ir_Daikin.h']]], - ['kdaikin176byteswingh_1038',['kDaikin176ByteSwingH',['../ir__Daikin_8h.html#a4566642e6aaa0d64c531fafe0309dccc',1,'ir_Daikin.h']]], - ['kdaikin176bytetemp_1039',['kDaikin176ByteTemp',['../ir__Daikin_8h.html#afab294c7e8c65e5bf58e85bee4901752',1,'ir_Daikin.h']]], - ['kdaikin176cool_1040',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], - ['kdaikin176defaultrepeat_1041',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], - ['kdaikin176dry_1042',['kDaikin176Dry',['../ir__Daikin_8h.html#a23bf5f3e572d11fb38476a5118382b35',1,'ir_Daikin.h']]], - ['kdaikin176dryfantemp_1043',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], - ['kdaikin176fan_1044',['kDaikin176Fan',['../ir__Daikin_8h.html#ace1184864858e862a66be779cbe698b1',1,'ir_Daikin.h']]], - ['kdaikin176fanmax_1045',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], - ['kdaikin176freq_1046',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], - ['kdaikin176gap_1047',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], - ['kdaikin176hdrmark_1048',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], - ['kdaikin176hdrspace_1049',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], - ['kdaikin176heat_1050',['kDaikin176Heat',['../ir__Daikin_8h.html#a16500da7848870fdda27209906d56ead',1,'ir_Daikin.h']]], - ['kdaikin176maskfan_1051',['kDaikin176MaskFan',['../ir__Daikin_8h.html#ae7410031c68ae8426caa61bc97909cdf',1,'ir_Daikin.h']]], - ['kdaikin176maskmode_1052',['kDaikin176MaskMode',['../ir__Daikin_8h.html#a65b76b7a85d70a4ed1af359b2babffa1',1,'ir_Daikin.h']]], - ['kdaikin176modebutton_1053',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], - ['kdaikin176onespace_1054',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], - ['kdaikin176section1length_1055',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], - ['kdaikin176section2length_1056',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], - ['kdaikin176sections_1057',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], - ['kdaikin176statelength_1058',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], - ['kdaikin176swinghauto_1059',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], - ['kdaikin176swinghoff_1060',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], - ['kdaikin176tempoffset_1061',['kDaikin176TempOffset',['../ir__Daikin_8h.html#aa5f6cc15ca424e4bf9cc4357d9db79c9',1,'ir_Daikin.h']]], - ['kdaikin176tempsize_1062',['kDaikin176TempSize',['../ir__Daikin_8h.html#a3ef1914f2caf650a90d8412f2c1e2b74',1,'ir_Daikin.h']]], - ['kdaikin176zerospace_1063',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], - ['kdaikin216bitmark_1064',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], - ['kdaikin216bits_1065',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], - ['kdaikin216bytefan_1066',['kDaikin216ByteFan',['../ir__Daikin_8h.html#a832e7a349293058ebc50c17b904fb8f7',1,'ir_Daikin.h']]], - ['kdaikin216bytemode_1067',['kDaikin216ByteMode',['../ir__Daikin_8h.html#a48974eb3ceb40f2f580bd266a60f0392',1,'ir_Daikin.h']]], - ['kdaikin216bytepower_1068',['kDaikin216BytePower',['../ir__Daikin_8h.html#a740c2db81aebd8cb9e18b3f8c6c5b8be',1,'ir_Daikin.h']]], - ['kdaikin216bytepowerful_1069',['kDaikin216BytePowerful',['../ir__Daikin_8h.html#a9a428d988d705beae3ff1f7c0f01cb8d',1,'ir_Daikin.h']]], - ['kdaikin216byteswingh_1070',['kDaikin216ByteSwingH',['../ir__Daikin_8h.html#a20239baacdf9fb981eb0fb84b0ef536a',1,'ir_Daikin.h']]], - ['kdaikin216byteswingv_1071',['kDaikin216ByteSwingV',['../ir__Daikin_8h.html#a9fd16b0fb0d67a7058816d4b4f1659fc',1,'ir_Daikin.h']]], - ['kdaikin216bytetemp_1072',['kDaikin216ByteTemp',['../ir__Daikin_8h.html#a5828687e12d2b7fe1d793235d91750bd',1,'ir_Daikin.h']]], - ['kdaikin216defaultrepeat_1073',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], - ['kdaikin216freq_1074',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], - ['kdaikin216gap_1075',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], - ['kdaikin216hdrmark_1076',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], - ['kdaikin216hdrspace_1077',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], - ['kdaikin216maskfan_1078',['kDaikin216MaskFan',['../ir__Daikin_8h.html#a88f67ea1fe03ef40b81c5226ff5c72d5',1,'ir_Daikin.h']]], - ['kdaikin216onespace_1079',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], - ['kdaikin216section1length_1080',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], - ['kdaikin216section2length_1081',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], - ['kdaikin216sections_1082',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], - ['kdaikin216statelength_1083',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], - ['kdaikin216swingoff_1084',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], - ['kdaikin216swingon_1085',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], - ['kdaikin216swingsize_1086',['kDaikin216SwingSize',['../ir__Daikin_8h.html#a90d9e740067051fe294f1b408f7e020b',1,'ir_Daikin.h']]], - ['kdaikin216tempoffset_1087',['kDaikin216TempOffset',['../ir__Daikin_8h.html#a8e497623bb05ff10287ca06ac6ec15f6',1,'ir_Daikin.h']]], - ['kdaikin216tempsize_1088',['kDaikin216TempSize',['../ir__Daikin_8h.html#a3ef59f8474b38d1b0311f1018dbd6225',1,'ir_Daikin.h']]], - ['kdaikin216zerospace_1089',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], - ['kdaikin2beepoffset_1090',['kDaikin2BeepOffset',['../ir__Daikin_8h.html#ad7f6110b5e3bf8c3b72ca07b745bae7c',1,'ir_Daikin.h']]], - ['kdaikin2beepsize_1091',['kDaikin2BeepSize',['../ir__Daikin_8h.html#a3a42f10a3427bff7af3c745592fe58fe',1,'ir_Daikin.h']]], - ['kdaikin2bitclean_1092',['kDaikin2BitClean',['../ir__Daikin_8h.html#a6672ff35e765c9ecb14107e7732b0bb2',1,'ir_Daikin.h']]], - ['kdaikin2bitcleanoffset_1093',['kDaikin2BitCleanOffset',['../ir__Daikin_8h.html#a4fa7ed25fb3f2371c3b5c7cf4906a3f3',1,'ir_Daikin.h']]], - ['kdaikin2biteye_1094',['kDaikin2BitEye',['../ir__Daikin_8h.html#a8adb3f3e8508adf8adc530365fceb96b',1,'ir_Daikin.h']]], - ['kdaikin2biteyeauto_1095',['kDaikin2BitEyeAuto',['../ir__Daikin_8h.html#a6a24519db9870520a645e4ad31857e39',1,'ir_Daikin.h']]], - ['kdaikin2biteyeautooffset_1096',['kDaikin2BitEyeAutoOffset',['../ir__Daikin_8h.html#a73db209ad074eeaef1a5317cbee8ab35',1,'ir_Daikin.h']]], - ['kdaikin2biteyeoffset_1097',['kDaikin2BitEyeOffset',['../ir__Daikin_8h.html#a7a4c6e131d9a0e441de549bd5f93074f',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshair_1098',['kDaikin2BitFreshAir',['../ir__Daikin_8h.html#a9ab2c4b0f415ce0042b848e44850b7b8',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairhigh_1099',['kDaikin2BitFreshAirHigh',['../ir__Daikin_8h.html#a21a3f3c0f39827057d8f459283a72980',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairhighoffset_1100',['kDaikin2BitFreshAirHighOffset',['../ir__Daikin_8h.html#afd4f5946e5fa5d8f48af32b8934b0f93',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairoffset_1101',['kDaikin2BitFreshAirOffset',['../ir__Daikin_8h.html#a15e49a577737bdca28c28aeeb4260e57',1,'ir_Daikin.h']]], - ['kdaikin2bitmark_1102',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], - ['kdaikin2bitmold_1103',['kDaikin2BitMold',['../ir__Daikin_8h.html#aa452116afeb7d246cee672d2717e0ff7',1,'ir_Daikin.h']]], - ['kdaikin2bitmoldoffset_1104',['kDaikin2BitMoldOffset',['../ir__Daikin_8h.html#a0e58caeb44ebc6b7c6d06e91fee33795',1,'ir_Daikin.h']]], - ['kdaikin2bitpower_1105',['kDaikin2BitPower',['../ir__Daikin_8h.html#ac7b549d7b68bc245521d7f4e6a4643ab',1,'ir_Daikin.h']]], - ['kdaikin2bitpoweroffset_1106',['kDaikin2BitPowerOffset',['../ir__Daikin_8h.html#a617d14e811cb26b86fef3048151ffc45',1,'ir_Daikin.h']]], - ['kdaikin2bitpurify_1107',['kDaikin2BitPurify',['../ir__Daikin_8h.html#a9c4d6aa579adbfe454aa19f9f604f21c',1,'ir_Daikin.h']]], - ['kdaikin2bitpurifyoffset_1108',['kDaikin2BitPurifyOffset',['../ir__Daikin_8h.html#a847a9646dc86c26da931e5bf6640ddab',1,'ir_Daikin.h']]], - ['kdaikin2bits_1109',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], - ['kdaikin2bitsleeptimer_1110',['kDaikin2BitSleepTimer',['../ir__Daikin_8h.html#a928ae056887b123fdf6b1e2072d03564',1,'ir_Daikin.h']]], - ['kdaikin2bitsleeptimeroffset_1111',['kDaikin2BitSleepTimerOffset',['../ir__Daikin_8h.html#abf7cfde40fd00c3500ed08831434b80f',1,'ir_Daikin.h']]], - ['kdaikin2defaultrepeat_1112',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], - ['kdaikin2fanbyte_1113',['kDaikin2FanByte',['../ir__Daikin_8h.html#a88608f735885e11734ae83a0cc69dc8d',1,'ir_Daikin.h']]], - ['kdaikin2freq_1114',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], - ['kdaikin2gap_1115',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], - ['kdaikin2hdrmark_1116',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], - ['kdaikin2hdrspace_1117',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], - ['kdaikin2leadermark_1118',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], - ['kdaikin2leaderspace_1119',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], - ['kdaikin2lightoffset_1120',['kDaikin2LightOffset',['../ir__Daikin_8h.html#a0f40d38db7c625df9504798938ba24eb',1,'ir_Daikin.h']]], - ['kdaikin2lightsize_1121',['kDaikin2LightSize',['../ir__Daikin_8h.html#a4dc46fabef2c96a263a504a5f9012e1f',1,'ir_Daikin.h']]], - ['kdaikin2mincooltemp_1122',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], - ['kdaikin2onespace_1123',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], - ['kdaikin2section1length_1124',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], - ['kdaikin2section2length_1125',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], - ['kdaikin2sections_1126',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], - ['kdaikin2statelength_1127',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], - ['kdaikin2swinghauto_1128',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], - ['kdaikin2swinghleft_1129',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], - ['kdaikin2swinghleftmax_1130',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], - ['kdaikin2swinghmiddle_1131',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], - ['kdaikin2swinghright_1132',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], - ['kdaikin2swinghrightmax_1133',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], - ['kdaikin2swinghswing_1134',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], - ['kdaikin2swinghwide_1135',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], - ['kdaikin2swingvauto_1136',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], - ['kdaikin2swingvbreeze_1137',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], - ['kdaikin2swingvcirculate_1138',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], - ['kdaikin2swingvhigh_1139',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], - ['kdaikin2swingvlow_1140',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], - ['kdaikin2swingvswing_1141',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], - ['kdaikin2tolerance_1142',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], - ['kdaikin2zerospace_1143',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], - ['kdaikin64bitmark_1144',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], - ['kdaikin64bits_1145',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], - ['kdaikin64checksumoffset_1146',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], - ['kdaikin64checksumsize_1147',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], - ['kdaikin64clockhourssize_1148',['kDaikin64ClockHoursSize',['../ir__Daikin_8h.html#ae6d8f59a9707bc807a209167231d4399',1,'ir_Daikin.h']]], - ['kdaikin64clockminssize_1149',['kDaikin64ClockMinsSize',['../ir__Daikin_8h.html#a3ab23d9db994fb6dd52208f5f69b4531',1,'ir_Daikin.h']]], - ['kdaikin64clockoffset_1150',['kDaikin64ClockOffset',['../ir__Daikin_8h.html#af204ccf4e6bd33439cec240445785e9c',1,'ir_Daikin.h']]], - ['kdaikin64clocksize_1151',['kDaikin64ClockSize',['../ir__Daikin_8h.html#a110f42ae8aa2651b195c67eef15c4d79',1,'ir_Daikin.h']]], - ['kdaikin64cool_1152',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], - ['kdaikin64defaultrepeat_1153',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], - ['kdaikin64dry_1154',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], - ['kdaikin64fan_1155',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], - ['kdaikin64fanauto_1156',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], - ['kdaikin64fanhigh_1157',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], - ['kdaikin64fanlow_1158',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], - ['kdaikin64fanmed_1159',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], - ['kdaikin64fanoffset_1160',['kDaikin64FanOffset',['../ir__Daikin_8h.html#a5523d6df96b83aa152adc1cbdac6534f',1,'ir_Daikin.h']]], - ['kdaikin64fanquiet_1161',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], - ['kdaikin64fansize_1162',['kDaikin64FanSize',['../ir__Daikin_8h.html#ac907b8f8d46eb7983a1289f23bc02401',1,'ir_Daikin.h']]], - ['kdaikin64fanturbo_1163',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], - ['kdaikin64freq_1164',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], - ['kdaikin64gap_1165',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], - ['kdaikin64hdrmark_1166',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], - ['kdaikin64hdrspace_1167',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], - ['kdaikin64knowngoodstate_1168',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], - ['kdaikin64ldrmark_1169',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], - ['kdaikin64ldrspace_1170',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], - ['kdaikin64maxtemp_1171',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], - ['kdaikin64mintemp_1172',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], - ['kdaikin64modeoffset_1173',['kDaikin64ModeOffset',['../ir__Daikin_8h.html#ac32a0c805d01b5a9fa4d4aeb5546b8e3',1,'ir_Daikin.h']]], - ['kdaikin64modesize_1174',['kDaikin64ModeSize',['../ir__Daikin_8h.html#a451465916f9ae0586cf915005be33315',1,'ir_Daikin.h']]], - ['kdaikin64offtimeenablebit_1175',['kDaikin64OffTimeEnableBit',['../ir__Daikin_8h.html#a5d5c1380e6dd22cef44a76f74049a813',1,'ir_Daikin.h']]], - ['kdaikin64offtimehalfhourbit_1176',['kDaikin64OffTimeHalfHourBit',['../ir__Daikin_8h.html#a766df1d3c0fce7576a3e694b6e0d9242',1,'ir_Daikin.h']]], - ['kdaikin64offtimeoffset_1177',['kDaikin64OffTimeOffset',['../ir__Daikin_8h.html#a3aecddae0a4c0a3123b296dd6b0fb38e',1,'ir_Daikin.h']]], - ['kdaikin64offtimesize_1178',['kDaikin64OffTimeSize',['../ir__Daikin_8h.html#a70e8ae340d5f1ca35b2d6a46020b9dcc',1,'ir_Daikin.h']]], - ['kdaikin64onespace_1179',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], - ['kdaikin64ontimeenablebit_1180',['kDaikin64OnTimeEnableBit',['../ir__Daikin_8h.html#ae264ee33d051149cecc08e3a026feba7',1,'ir_Daikin.h']]], - ['kdaikin64ontimehalfhourbit_1181',['kDaikin64OnTimeHalfHourBit',['../ir__Daikin_8h.html#a0d37e6624946b26dd30c3ed25181cc37',1,'ir_Daikin.h']]], - ['kdaikin64ontimeoffset_1182',['kDaikin64OnTimeOffset',['../ir__Daikin_8h.html#a6b4af969e8b114502f067b039b0a9467',1,'ir_Daikin.h']]], - ['kdaikin64ontimesize_1183',['kDaikin64OnTimeSize',['../ir__Daikin_8h.html#a46c5e1db123959992db9e746e2b3c58a',1,'ir_Daikin.h']]], - ['kdaikin64overhead_1184',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], - ['kdaikin64powertogglebit_1185',['kDaikin64PowerToggleBit',['../ir__Daikin_8h.html#a55ca8803d859f0ffaac3c3547d6b532c',1,'ir_Daikin.h']]], - ['kdaikin64sleepbit_1186',['kDaikin64SleepBit',['../ir__Daikin_8h.html#addbe01f4a4766469fe5fd1cf9972f437',1,'ir_Daikin.h']]], - ['kdaikin64swingvbit_1187',['kDaikin64SwingVBit',['../ir__Daikin_8h.html#a9c7cbb529c760cead772fe03f7f90b1a',1,'ir_Daikin.h']]], - ['kdaikin64tempoffset_1188',['kDaikin64TempOffset',['../ir__Daikin_8h.html#a4b66ea40f97deafc22df18bd0942b5f1',1,'ir_Daikin.h']]], - ['kdaikin64tempsize_1189',['kDaikin64TempSize',['../ir__Daikin_8h.html#acc21945b46b307068e8669c83fbe5837',1,'ir_Daikin.h']]], - ['kdaikin64tolerancedelta_1190',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], - ['kdaikin64zerospace_1191',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], - ['kdaikinauto_1192',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], - ['kdaikinbeeploud_1193',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], - ['kdaikinbeepoff_1194',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], - ['kdaikinbeepquiet_1195',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], - ['kdaikinbitcomfort_1196',['kDaikinBitComfort',['../ir__Daikin_8h.html#aede9991f88965161d3f7cf1dba7fdeb7',1,'ir_Daikin.h']]], - ['kdaikinbitcomfortoffset_1197',['kDaikinBitComfortOffset',['../ir__Daikin_8h.html#a2e218dda2eb4ab3a97ea8018192c5f85',1,'ir_Daikin.h']]], - ['kdaikinbitecono_1198',['kDaikinBitEcono',['../ir__Daikin_8h.html#ab579939e749517944e6e497d5e44e922',1,'ir_Daikin.h']]], - ['kdaikinbiteconooffset_1199',['kDaikinBitEconoOffset',['../ir__Daikin_8h.html#aa99539b36ab708397bd1adbd4fd4f378',1,'ir_Daikin.h']]], - ['kdaikinbiteye_1200',['kDaikinBitEye',['../ir__Daikin_8h.html#a98bbaae1b0f16cf6f2428dcf326eda51',1,'ir_Daikin.h']]], - ['kdaikinbitmark_1201',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], - ['kdaikinbitmold_1202',['kDaikinBitMold',['../ir__Daikin_8h.html#a916ad89ccf3c0225a4ca1b36d74c67b2',1,'ir_Daikin.h']]], - ['kdaikinbitmoldoffset_1203',['kDaikinBitMoldOffset',['../ir__Daikin_8h.html#ad794d6ff5b5d05642e2668378d3a1100',1,'ir_Daikin.h']]], - ['kdaikinbitofftimer_1204',['kDaikinBitOffTimer',['../ir__Daikin_8h.html#a5d68046ada1892be65f14d06c2a25b2b',1,'ir_Daikin.h']]], - ['kdaikinbitofftimeroffset_1205',['kDaikinBitOffTimerOffset',['../ir__Daikin_8h.html#a7156bec80ef23aa0e4e212e11d63bdef',1,'ir_Daikin.h']]], - ['kdaikinbitontimer_1206',['kDaikinBitOnTimer',['../ir__Daikin_8h.html#a421a745ce85313d326e00b996b5afd80',1,'ir_Daikin.h']]], - ['kdaikinbitontimeroffset_1207',['kDaikinBitOnTimerOffset',['../ir__Daikin_8h.html#a7a6b740034320cc25fb6d33d36845ca0',1,'ir_Daikin.h']]], - ['kdaikinbitpower_1208',['kDaikinBitPower',['../ir__Daikin_8h.html#ab0d91673bcd73cbbbf5f18d6d73b699e',1,'ir_Daikin.h']]], - ['kdaikinbitpowerful_1209',['kDaikinBitPowerful',['../ir__Daikin_8h.html#a4d03bc31a28d866c3bf855f6482209e8',1,'ir_Daikin.h']]], - ['kdaikinbitpowerfuloffset_1210',['kDaikinBitPowerfulOffset',['../ir__Daikin_8h.html#a772bca7454e28bd3f61cdd24f58b98c8',1,'ir_Daikin.h']]], - ['kdaikinbitpoweroffset_1211',['kDaikinBitPowerOffset',['../ir__Daikin_8h.html#ad3672753b2b06b52cd8afeca3f564af4',1,'ir_Daikin.h']]], - ['kdaikinbits_1212',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], - ['kdaikinbitsensor_1213',['kDaikinBitSensor',['../ir__Daikin_8h.html#a37c7e26d1af184f844ef2c46064137ad',1,'ir_Daikin.h']]], - ['kdaikinbitsensoroffset_1214',['kDaikinBitSensorOffset',['../ir__Daikin_8h.html#a1ccb2c358aef3bf55005cf6b391e9e9b',1,'ir_Daikin.h']]], - ['kdaikinbitsilent_1215',['kDaikinBitSilent',['../ir__Daikin_8h.html#a85249d39c34b1a8b3bb8de4da32bb502',1,'ir_Daikin.h']]], - ['kdaikinbitsilentoffset_1216',['kDaikinBitSilentOffset',['../ir__Daikin_8h.html#a3fb5172c458084319937aa4ec2d6383b',1,'ir_Daikin.h']]], - ['kdaikinbitsshort_1217',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], - ['kdaikinbitweeklytimer_1218',['kDaikinBitWeeklyTimer',['../ir__Daikin_8h.html#a7d58b7c351394a43117e4710acd35cec',1,'ir_Daikin.h']]], - ['kdaikinbitweeklytimeroffset_1219',['kDaikinBitWeeklyTimerOffset',['../ir__Daikin_8h.html#a8ff2c05701327b6f26bee66361e39365',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum1_1220',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum2_1221',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum3_1222',['kDaikinByteChecksum3',['../ir__Daikin_8h.html#a7277c453d4deed6abf0a7577b5b4454f',1,'ir_Daikin.h']]], - ['kdaikinbyteclockminshigh_1223',['kDaikinByteClockMinsHigh',['../ir__Daikin_8h.html#ade7d506fd7da26ae1713602c1620f716',1,'ir_Daikin.h']]], - ['kdaikinbyteclockminslow_1224',['kDaikinByteClockMinsLow',['../ir__Daikin_8h.html#a3c096c2f33eca6c6f7f57f0f684a4b43',1,'ir_Daikin.h']]], - ['kdaikinbytecomfort_1225',['kDaikinByteComfort',['../ir__Daikin_8h.html#a3b209715b7ac4e8ef4f15043654e646b',1,'ir_Daikin.h']]], - ['kdaikinbyteecono_1226',['kDaikinByteEcono',['../ir__Daikin_8h.html#ae08470f2e453a2a5b60bdb478fc8c6d7',1,'ir_Daikin.h']]], - ['kdaikinbyteeye_1227',['kDaikinByteEye',['../ir__Daikin_8h.html#ad3e2bb2f17d599c708e64cf08c042331',1,'ir_Daikin.h']]], - ['kdaikinbytefan_1228',['kDaikinByteFan',['../ir__Daikin_8h.html#a9078ad5b6b9afe43ffa0e646c35f3db6',1,'ir_Daikin.h']]], - ['kdaikinbytemold_1229',['kDaikinByteMold',['../ir__Daikin_8h.html#a81e098798e6aa7c0882703dced8ab039',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimer_1230',['kDaikinByteOffTimer',['../ir__Daikin_8h.html#ad7fce891883a25e260cd8c0890d46f59',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimerminshigh_1231',['kDaikinByteOffTimerMinsHigh',['../ir__Daikin_8h.html#a0294c99254e3eef7e7fa2cd169e0e5a9',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimerminslow_1232',['kDaikinByteOffTimerMinsLow',['../ir__Daikin_8h.html#a45855767cf37f1562a7726dbf6419c87',1,'ir_Daikin.h']]], - ['kdaikinbyteontimer_1233',['kDaikinByteOnTimer',['../ir__Daikin_8h.html#a0a685bb92d8e3df4c9bd96b71c48f352',1,'ir_Daikin.h']]], - ['kdaikinbyteontimerminshigh_1234',['kDaikinByteOnTimerMinsHigh',['../ir__Daikin_8h.html#a77ce46689e1a353237edd45e7170bff6',1,'ir_Daikin.h']]], - ['kdaikinbyteontimerminslow_1235',['kDaikinByteOnTimerMinsLow',['../ir__Daikin_8h.html#a7c434f5c6a3febddf3da44e1c2b97872',1,'ir_Daikin.h']]], - ['kdaikinbytepower_1236',['kDaikinBytePower',['../ir__Daikin_8h.html#aa99cac4871f7ef1cdff2f41496989218',1,'ir_Daikin.h']]], - ['kdaikinbytepowerful_1237',['kDaikinBytePowerful',['../ir__Daikin_8h.html#a79b3d4cd40f839a3708fa33abb4b74c4',1,'ir_Daikin.h']]], - ['kdaikinbytesensor_1238',['kDaikinByteSensor',['../ir__Daikin_8h.html#afd18e8b5b4c9c6572659ea46df01a6df',1,'ir_Daikin.h']]], - ['kdaikinbytesilent_1239',['kDaikinByteSilent',['../ir__Daikin_8h.html#aac58a7371777f682cac3189d9905b968',1,'ir_Daikin.h']]], - ['kdaikinbyteswingh_1240',['kDaikinByteSwingH',['../ir__Daikin_8h.html#a58b88a2679bd57d723aa33afca4f2427',1,'ir_Daikin.h']]], - ['kdaikinbytetemp_1241',['kDaikinByteTemp',['../ir__Daikin_8h.html#acd14c2ebc40a8375343595ed8f0109f8',1,'ir_Daikin.h']]], - ['kdaikinbyteweeklytimer_1242',['kDaikinByteWeeklyTimer',['../ir__Daikin_8h.html#ad4eba59910311bdc8b489b27b4b59751',1,'ir_Daikin.h']]], - ['kdaikinclockminshighoffset_1243',['kDaikinClockMinsHighOffset',['../ir__Daikin_8h.html#a1b28496ffacf558f7919029f029c2dc6',1,'ir_Daikin.h']]], - ['kdaikinclockminshighsize_1244',['kDaikinClockMinsHighSize',['../ir__Daikin_8h.html#a1e018d153b13c65e411b3b090efc6d27',1,'ir_Daikin.h']]], - ['kdaikincool_1245',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], - ['kdaikincurbit_1246',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], - ['kdaikincurindex_1247',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], - ['kdaikindefaultrepeat_1248',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], - ['kdaikindowoffset_1249',['kDaikinDoWOffset',['../ir__Daikin_8h.html#a07793a4b1ea8e9aabb77730ccbdf7e15',1,'ir_Daikin.h']]], - ['kdaikindowsize_1250',['kDaikinDoWSize',['../ir__Daikin_8h.html#a7bb34e2fc2c1926167b79889a5036ba0',1,'ir_Daikin.h']]], - ['kdaikindry_1251',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], - ['kdaikinfan_1252',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], - ['kdaikinfanauto_1253',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], - ['kdaikinfanmax_1254',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], - ['kdaikinfanmed_1255',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], - ['kdaikinfanmin_1256',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], - ['kdaikinfanoffset_1257',['kDaikinFanOffset',['../ir__Daikin_8h.html#a48d0d0cb1174069d5b6ee2882761cb88',1,'ir_Daikin.h']]], - ['kdaikinfanquiet_1258',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], - ['kdaikinfansize_1259',['kDaikinFanSize',['../ir__Daikin_8h.html#a1e490e414ff3f5f55b4cca443661cd1a',1,'ir_Daikin.h']]], - ['kdaikinfirstheader64_1260',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], - ['kdaikingap_1261',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], - ['kdaikinhdrmark_1262',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], - ['kdaikinhdrspace_1263',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], - ['kdaikinheaderlength_1264',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], - ['kdaikinheat_1265',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], - ['kdaikinlightbright_1266',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], - ['kdaikinlightdim_1267',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], - ['kdaikinlightoff_1268',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], - ['kdaikinmarkexcess_1269',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], - ['kdaikinmaxtemp_1270',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], - ['kdaikinmintemp_1271',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], - ['kdaikinmodeoffset_1272',['kDaikinModeOffset',['../ir__Daikin_8h.html#a9a3aa5ee98496b468c5ba86faa3eeeae',1,'ir_Daikin.h']]], - ['kdaikinmodesize_1273',['kDaikinModeSize',['../ir__Daikin_8h.html#a00fc390085520e5382dbce2633b7142e',1,'ir_Daikin.h']]], - ['kdaikinonespace_1274',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], - ['kdaikinontimerminshighoffset_1275',['kDaikinOnTimerMinsHighOffset',['../ir__Daikin_8h.html#a2a4a4254fc853901686982c1410c77c8',1,'ir_Daikin.h']]], - ['kdaikinontimerminshighsize_1276',['kDaikinOnTimerMinsHighSize',['../ir__Daikin_8h.html#a2fc9c203378e49ea1d49557d776de620',1,'ir_Daikin.h']]], - ['kdaikinsection1length_1277',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], - ['kdaikinsection2length_1278',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], - ['kdaikinsection3length_1279',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], - ['kdaikinsections_1280',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], - ['kdaikinstatelength_1281',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], - ['kdaikinstatelengthshort_1282',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], - ['kdaikinswingoff_1283',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], - ['kdaikinswingoffset_1284',['kDaikinSwingOffset',['../ir__Daikin_8h.html#abeac0c8df9be90fc5b28db4b2284ed10',1,'ir_Daikin.h']]], - ['kdaikinswingon_1285',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], - ['kdaikinswingsize_1286',['kDaikinSwingSize',['../ir__Daikin_8h.html#a0f7daf6ef2652bc0be591caa2fa0fad6',1,'ir_Daikin.h']]], - ['kdaikintempoffset_1287',['kDaikinTempOffset',['../ir__Daikin_8h.html#a1a38843bdf0f65f29c21b301f6f45ba5',1,'ir_Daikin.h']]], - ['kdaikintempsize_1288',['kDaikinTempSize',['../ir__Daikin_8h.html#aa2eef2bb403846d88df5387912af0a00',1,'ir_Daikin.h']]], - ['kdaikintolerance_1289',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], - ['kdaikinunusedtime_1290',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], - ['kdaikinzerospace_1291',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], - ['kdaysstr_1292',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], - ['kdaystr_1293',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], - ['kdefaultesp32timer_1294',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], - ['kdefaultmessagegap_1295',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], - ['kdelonghiacauto_1296',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], - ['kdelonghiacbitmark_1297',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], - ['kdelonghiacbits_1298',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], - ['kdelonghiacchecksumoffset_1299',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], - ['kdelonghiaccool_1300',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], - ['kdelonghiacdefaultrepeat_1301',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], - ['kdelonghiacdry_1302',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], - ['kdelonghiacfan_1303',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], - ['kdelonghiacfanauto_1304',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanhigh_1305',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], - ['kdelonghiacfanlow_1306',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanmedium_1307',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], - ['kdelonghiacfreq_1308',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], - ['kdelonghiacgap_1309',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrmark_1310',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrspace_1311',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], - ['kdelonghiaconespace_1312',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], - ['kdelonghiacoverhead_1313',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], - ['kdelonghiactempautodrymode_1314',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], - ['kdelonghiactempfanmode_1315',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxc_1316',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxf_1317',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], - ['kdelonghiactempminc_1318',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], - ['kdelonghiactempminf_1319',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], - ['kdelonghiactimermax_1320',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], - ['kdelonghiaczerospace_1321',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], - ['kdenon48bits_1322',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], - ['kdenonbitmark_1323',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], - ['kdenonbitmarkticks_1324',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], - ['kdenonbits_1325',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], - ['kdenonhdrmark_1326',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], - ['kdenonhdrmarkticks_1327',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], - ['kdenonhdrspace_1328',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], - ['kdenonhdrspaceticks_1329',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], - ['kdenonlegacybits_1330',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], - ['kdenonmanufacturer_1331',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], - ['kdenonmincommandlengthticks_1332',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], - ['kdenonmingap_1333',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], - ['kdenonmingapticks_1334',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], - ['kdenononespace_1335',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], - ['kdenononespaceticks_1336',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], - ['kdenontick_1337',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], - ['kdenonzerospace_1338',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], - ['kdenonzerospaceticks_1339',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], - ['kdishbitmark_1340',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], - ['kdishbitmarkticks_1341',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], - ['kdishbits_1342',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], - ['kdishhdrmark_1343',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], - ['kdishhdrmarkticks_1344',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], - ['kdishhdrspace_1345',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], - ['kdishhdrspaceticks_1346',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], - ['kdishminrepeat_1347',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], - ['kdishonespace_1348',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], - ['kdishonespaceticks_1349',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], - ['kdishrptspace_1350',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], - ['kdishrptspaceticks_1351',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], - ['kdishtick_1352',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], - ['kdishzerospace_1353',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], - ['kdishzerospaceticks_1354',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], - ['kdisplaytempstr_1355',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], - ['kdoshishabitmark_1356',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], - ['kdoshishabits_1357',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], - ['kdoshishahdrmark_1358',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], - ['kdoshishahdrspace_1359',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], - ['kdoshishaonespace_1360',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], - ['kdoshishazerospace_1361',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], - ['kdownstr_1362',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], - ['kdry_1363',['kDry',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f',1,'stdAc']]], - ['kdrystr_1364',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], - ['kdutydefault_1365',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], - ['kdutymax_1366',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], - ['keconostr_1367',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], - ['keconotogglestr_1368',['kEconoToggleStr',['../IRtext_8cpp.html#abd6fd4c918a7911bfa223cd87e6f3d32',1,'kEconoToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a03bbafdddd086cacd34dca1a32d540f6',1,'kEconoToggleStr(): IRtext.cpp']]], - ['kelectraacauto_1369',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], - ['kelectraacbitmark_1370',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], - ['kelectraacbits_1371',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], - ['kelectraaccleanoffset_1372',['kElectraAcCleanOffset',['../ir__Electra_8h.html#a466b5c998c1e2736214f816f1bab8239',1,'ir_Electra.h']]], - ['kelectraaccool_1373',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], - ['kelectraacdry_1374',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], - ['kelectraacfan_1375',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], - ['kelectraacfanauto_1376',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], - ['kelectraacfanhigh_1377',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], - ['kelectraacfanlow_1378',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], - ['kelectraacfanmed_1379',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], - ['kelectraacfanoffset_1380',['kElectraAcFanOffset',['../ir__Electra_8h.html#a0efe73807b12370aa7c57ff831e56192',1,'ir_Electra.h']]], - ['kelectraacfansize_1381',['kElectraAcFanSize',['../ir__Electra_8h.html#aeb9bddbd47459ae51c1207baac9e6219',1,'ir_Electra.h']]], - ['kelectraachdrmark_1382',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], - ['kelectraachdrspace_1383',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], - ['kelectraacheat_1384',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], - ['kelectraaclighttogglemask_1385',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], - ['kelectraaclighttoggleoff_1386',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], - ['kelectraaclighttoggleon_1387',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], - ['kelectraacmaxtemp_1388',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], - ['kelectraacmessagegap_1389',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], - ['kelectraacminrepeat_1390',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], - ['kelectraacmintemp_1391',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], - ['kelectraacmodeoffset_1392',['kElectraAcModeOffset',['../ir__Electra_8h.html#a79ea9dfa776115e5ec4ee816c4eef559',1,'ir_Electra.h']]], - ['kelectraaconespace_1393',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], - ['kelectraacpoweroffset_1394',['kElectraAcPowerOffset',['../ir__Electra_8h.html#a54012f7683397fada44f13c3e57d9ee0',1,'ir_Electra.h']]], - ['kelectraacstatelength_1395',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], - ['kelectraacswinghoffset_1396',['kElectraAcSwingHOffset',['../ir__Electra_8h.html#ac39219316f9b49ead4183cd206b4a3fb',1,'ir_Electra.h']]], - ['kelectraacswingoff_1397',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], - ['kelectraacswingon_1398',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], - ['kelectraacswingsize_1399',['kElectraAcSwingSize',['../ir__Electra_8h.html#a67c58c049b50d04d4fadd93eee0231cf',1,'ir_Electra.h']]], - ['kelectraacswingvoffset_1400',['kElectraAcSwingVOffset',['../ir__Electra_8h.html#a4a5737e41994fe6c0cd566be354a70fb',1,'ir_Electra.h']]], - ['kelectraactempdelta_1401',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], - ['kelectraactempoffset_1402',['kElectraAcTempOffset',['../ir__Electra_8h.html#a928ee72169f9ab56a4209606aa7e5e43',1,'ir_Electra.h']]], - ['kelectraactempsize_1403',['kElectraAcTempSize',['../ir__Electra_8h.html#aeeb469144f4fd02ddd8a802f5cf7c308',1,'ir_Electra.h']]], - ['kelectraacturbooffset_1404',['kElectraAcTurboOffset',['../ir__Electra_8h.html#afbbd997ef8ddf5a4adfd0a37404d6782',1,'ir_Electra.h']]], - ['kelectraaczerospace_1405',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], - ['kelvinator_1406',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac::kelvinator()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab3a52797572065c912c34c976c08c542',1,'KELVINATOR(): IRremoteESP8266.h']]], - ['kepsonbits_1407',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], - ['kepsonminrepeat_1408',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], - ['keyeautostr_1409',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], - ['keyestr_1410',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], - ['kfalsestr_1411',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], - ['kfan_1412',['kFan',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b',1,'stdAc']]], - ['kfanonlystr_1413',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], - ['kfanstr_1414',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], - ['kfaststr_1415',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], - ['kfilterstr_1416',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], - ['kfixedstr_1417',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], - ['kfnvbasis32_1418',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], - ['kfnvprime32_1419',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], - ['kfollowstr_1420',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], - ['kfooter_1421',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], - ['kfreshstr_1422',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], - ['kfujitsuacbitmark_1423',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacbits_1424',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], - ['kfujitsuaccleanoffset_1425',['kFujitsuAcCleanOffset',['../ir__Fujitsu_8h.html#ae7e7dc770ef9712296d2beeb085d2c1f',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdecono_1426',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdpowerful_1427',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstayon_1428',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstephoriz_1429',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstepvert_1430',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswinghoriz_1431',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswingvert_1432',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnoff_1433',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnon_1434',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanauto_1435',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanhigh_1436',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanlow_1437',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanmed_1438',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanquiet_1439',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], - ['kfujitsuacfansize_1440',['kFujitsuAcFanSize',['../ir__Fujitsu_8h.html#a797e68082ceebea788a215ecbfc279d9',1,'ir_Fujitsu.h']]], - ['kfujitsuacfilteroffset_1441',['kFujitsuAcFilterOffset',['../ir__Fujitsu_8h.html#a3c6349b24651bffb33f2633d3c65144c',1,'ir_Fujitsu.h']]], - ['kfujitsuachdrmark_1442',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], - ['kfujitsuachdrspace_1443',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacmaxtemp_1444',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ad817f46441ac1284e3bbe8417e4f4388',1,'ir_Fujitsu.h']]], - ['kfujitsuacminbits_1445',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], - ['kfujitsuacmingap_1446',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacminrepeat_1447',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], - ['kfujitsuacmintemp_1448',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#a35ec9572b356a7bcfb75947d03b198f7',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeauto_1449',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodecool_1450',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodedry_1451',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodefan_1452',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeheat_1453',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], - ['kfujitsuacofftimer_1454',['kFujitsuAcOffTimer',['../ir__Fujitsu_8h.html#ad2f217a98a0062d488ffd0586dc0d011',1,'ir_Fujitsu.h']]], - ['kfujitsuaconespace_1455',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacontimer_1456',['kFujitsuAcOnTimer',['../ir__Fujitsu_8h.html#abad3816a098ecc96bde57d1ff820552c',1,'ir_Fujitsu.h']]], - ['kfujitsuacoutsidequietoffset_1457',['kFujitsuAcOutsideQuietOffset',['../ir__Fujitsu_8h.html#a38522dc07bb7be2dd1ec654d4e60eb4f',1,'ir_Fujitsu.h']]], - ['kfujitsuacsleeptimer_1458',['kFujitsuAcSleepTimer',['../ir__Fujitsu_8h.html#a53c550f5e4d63c54b6962f47d281bec6',1,'ir_Fujitsu.h']]], - ['kfujitsuacstatelength_1459',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], - ['kfujitsuacstatelengthshort_1460',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], - ['kfujitsuacstoptimers_1461',['kFujitsuAcStopTimers',['../ir__Fujitsu_8h.html#a0f416a0f84e4100a702528664c9df177',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingboth_1462',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], - ['kfujitsuacswinghoriz_1463',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingoff_1464',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingsize_1465',['kFujitsuAcSwingSize',['../ir__Fujitsu_8h.html#a1eb20884dc6c9bccbe899f779c4b5ad4',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingvert_1466',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], - ['kfujitsuactimermax_1467',['kFujitsuAcTimerMax',['../ir__Fujitsu_8h.html#adaec1744905feeb18af4ebe9ea2f6aae',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypebyte_1468',['kFujitsuAcTimerTypeByte',['../ir__Fujitsu_8h.html#ae1a159fc53d84d007405c2b3c3ab61a3',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypeoffset_1469',['kFujitsuAcTimerTypeOffset',['../ir__Fujitsu_8h.html#ac3cc304a03e10f2e5464dbb0aaf89a1c',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypesize_1470',['kFujitsuAcTimerTypeSize',['../ir__Fujitsu_8h.html#a437d51d970e77170a0a1776308cd5e92',1,'ir_Fujitsu.h']]], - ['kfujitsuaczerospace_1471',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], - ['kgicablebitmark_1472',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], - ['kgicablebits_1473',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], - ['kgicablehdrmark_1474',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], - ['kgicablehdrspace_1475',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], - ['kgicablemincommandlength_1476',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], - ['kgicablemingap_1477',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], - ['kgicableminrepeat_1478',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], - ['kgicableonespace_1479',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], - ['kgicablerptspace_1480',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], - ['kgicablezerospace_1481',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], - ['kglobalcachefreqindex_1482',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], - ['kglobalcachemaxrepeat_1483',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], - ['kglobalcacheminusec_1484',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptindex_1485',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptstartindex_1486',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], - ['kglobalcachestartindex_1487',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], - ['kgoodweatherauto_1488',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], - ['kgoodweatherbitairflow_1489',['kGoodweatherBitAirFlow',['../ir__Goodweather_8h.html#ad86cdbc34a6a82c7595cace56d040d64',1,'ir_Goodweather.h']]], - ['kgoodweatherbitcommand_1490',['kGoodweatherBitCommand',['../ir__Goodweather_8h.html#ad6973bf4ac7801097077938e133b1718',1,'ir_Goodweather.h']]], - ['kgoodweatherbiteof_1491',['kGoodweatherBitEOF',['../ir__Goodweather_8h.html#a239d4d1fee77e0d220efb0bc0b3c779a',1,'ir_Goodweather.h']]], - ['kgoodweatherbitfan_1492',['kGoodweatherBitFan',['../ir__Goodweather_8h.html#aa3d5f146109dd671e4d7d86c1dbccba7',1,'ir_Goodweather.h']]], - ['kgoodweatherbitlight_1493',['kGoodweatherBitLight',['../ir__Goodweather_8h.html#a976dc2b37d1fcec4bbc0958861b5a9b0',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmark_1494',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmode_1495',['kGoodweatherBitMode',['../ir__Goodweather_8h.html#a3795b45c06f6d2db23cc45478bfeeca9',1,'ir_Goodweather.h']]], - ['kgoodweatherbitpower_1496',['kGoodweatherBitPower',['../ir__Goodweather_8h.html#a652b820b22c8381a6035fea7b1ae1b8d',1,'ir_Goodweather.h']]], - ['kgoodweatherbits_1497',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], - ['kgoodweatherbitsleep_1498',['kGoodweatherBitSleep',['../ir__Goodweather_8h.html#a763e8033483516c093ad12a378e0c8f8',1,'ir_Goodweather.h']]], - ['kgoodweatherbitswing_1499',['kGoodweatherBitSwing',['../ir__Goodweather_8h.html#a0a3fc264b6a77157174c207688ac2cda',1,'ir_Goodweather.h']]], - ['kgoodweatherbittemp_1500',['kGoodweatherBitTemp',['../ir__Goodweather_8h.html#a692faf9976f90d67d183ff99ed06ee51',1,'ir_Goodweather.h']]], - ['kgoodweatherbitturbo_1501',['kGoodweatherBitTurbo',['../ir__Goodweather_8h.html#afe2ad22bc8ba5ab9cad025e9adaf4d56',1,'ir_Goodweather.h']]], - ['kgoodweathercmdairflow_1502',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], - ['kgoodweathercmddowntemp_1503',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], - ['kgoodweathercmdfan_1504',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdhold_1505',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], - ['kgoodweathercmdlight_1506',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], - ['kgoodweathercmdmode_1507',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], - ['kgoodweathercmdpower_1508',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], - ['kgoodweathercmdsleep_1509',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], - ['kgoodweathercmdswing_1510',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdtimer_1511',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], - ['kgoodweathercmdturbo_1512',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], - ['kgoodweathercmduptemp_1513',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], - ['kgoodweathercommandsize_1514',['kGoodweatherCommandSize',['../ir__Goodweather_8h.html#aa5ae9f1b5f6458a25b31b0d2c7feb508',1,'ir_Goodweather.h']]], - ['kgoodweathercool_1515',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], - ['kgoodweatherdry_1516',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], - ['kgoodweathereofmask_1517',['kGoodweatherEOFMask',['../ir__Goodweather_8h.html#a3d86da1a2bab92a9f70cc88e2628f266',1,'ir_Goodweather.h']]], - ['kgoodweatherextratolerance_1518',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], - ['kgoodweatherfan_1519',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanauto_1520',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], - ['kgoodweatherfanhigh_1521',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], - ['kgoodweatherfanlow_1522',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanmed_1523',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], - ['kgoodweatherfansize_1524',['kGoodweatherFanSize',['../ir__Goodweather_8h.html#a687ae6502d8fe6b4a5bd11468106481e',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrmark_1525',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrspace_1526',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], - ['kgoodweatherheat_1527',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], - ['kgoodweatherminrepeat_1528',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], - ['kgoodweatheronespace_1529',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], - ['kgoodweatherstateinit_1530',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], - ['kgoodweatherswingfast_1531',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], - ['kgoodweatherswingoff_1532',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], - ['kgoodweatherswingsize_1533',['kGoodweatherSwingSize',['../ir__Goodweather_8h.html#a208e47dc4f9e6a85464b4ce3ecaf5c3e',1,'ir_Goodweather.h']]], - ['kgoodweatherswingslow_1534',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], - ['kgoodweathertempmax_1535',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], - ['kgoodweathertempmin_1536',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], - ['kgoodweathertempsize_1537',['kGoodweatherTempSize',['../ir__Goodweather_8h.html#a2ef3336be36de4f34940de28cfe195a8',1,'ir_Goodweather.h']]], - ['kgoodweatherzerospace_1538',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], - ['kgpiounused_1539',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], - ['kgreeauto_1540',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], - ['kgreebitmark_1541',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], - ['kgreebits_1542',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], - ['kgreeblockfooter_1543',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], - ['kgreeblockfooterbits_1544',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], - ['kgreecool_1545',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], - ['kgreedefaultrepeat_1546',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], - ['kgreedisplaytempinside_1547',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], - ['kgreedisplaytempoff_1548',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], - ['kgreedisplaytempoutside_1549',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], - ['kgreedisplaytempset_1550',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], - ['kgreedry_1551',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], - ['kgreefan_1552',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], - ['kgreefanauto_1553',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], - ['kgreefanmax_1554',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], - ['kgreefanmed_1555',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], - ['kgreefanmin_1556',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], - ['kgreehdrmark_1557',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], - ['kgreehdrspace_1558',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], - ['kgreeheat_1559',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], - ['kgreemaxtempc_1560',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], - ['kgreemaxtempf_1561',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], - ['kgreemintempc_1562',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], - ['kgreemintempf_1563',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], - ['kgreemsgspace_1564',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], - ['kgreeonespace_1565',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], - ['kgreestatelength_1566',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], - ['kgreeswingauto_1567',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], - ['kgreeswingdown_1568',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], - ['kgreeswingdownauto_1569',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], - ['kgreeswinglastpos_1570',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], - ['kgreeswingmiddle_1571',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], - ['kgreeswingmiddleauto_1572',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], - ['kgreeswingmiddledown_1573',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], - ['kgreeswingmiddleup_1574',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], - ['kgreeswingup_1575',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], - ['kgreeswingupauto_1576',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], - ['kgreetimermax_1577',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], - ['kgreezerospace_1578',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], - ['khaieracauto_1579',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], - ['khaieracbitmark_1580',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], - ['khaieracbits_1581',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], - ['khaieraccmdfan_1582',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], - ['khaieraccmdhealth_1583',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], - ['khaieraccmdmode_1584',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], - ['khaieraccmdoff_1585',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], - ['khaieraccmdon_1586',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], - ['khaieraccmdsleep_1587',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], - ['khaieraccmdswing_1588',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], - ['khaieraccmdtempdown_1589',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], - ['khaieraccmdtempup_1590',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], - ['khaieraccmdtimercancel_1591',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], - ['khaieraccmdtimerset_1592',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], - ['khaieraccool_1593',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], - ['khaieracdefaultrepeat_1594',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], - ['khaieracdeftemp_1595',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], - ['khaieracdry_1596',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], - ['khaieracfan_1597',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], - ['khaieracfanauto_1598',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], - ['khaieracfanhigh_1599',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], - ['khaieracfanlow_1600',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], - ['khaieracfanmed_1601',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], - ['khaierachdr_1602',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], - ['khaierachdrgap_1603',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], - ['khaieracheat_1604',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], - ['khaieracmaxtemp_1605',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], - ['khaieracmaxtime_1606',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], - ['khaieracmingap_1607',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], - ['khaieracmintemp_1608',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], - ['khaieraconespace_1609',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], - ['khaieracprefix_1610',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], - ['khaieracsleepbit_1611',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], - ['khaieracstatelength_1612',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], - ['khaieracswingchg_1613',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], - ['khaieracswingdown_1614',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], - ['khaieracswingoff_1615',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], - ['khaieracswingup_1616',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], - ['khaieracyrw02auto_1617',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], - ['khaieracyrw02bits_1618',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], - ['khaieracyrw02buttonfan_1619',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonhealth_1620',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], - ['khaieracyrw02buttonmode_1621',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], - ['khaieracyrw02buttonpower_1622',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonsleep_1623',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], - ['khaieracyrw02buttonswing_1624',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempdown_1625',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempup_1626',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], - ['khaieracyrw02buttonturbo_1627',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], - ['khaieracyrw02cool_1628',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], - ['khaieracyrw02defaultrepeat_1629',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], - ['khaieracyrw02dry_1630',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], - ['khaieracyrw02fan_1631',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], - ['khaieracyrw02fanauto_1632',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], - ['khaieracyrw02fanhigh_1633',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], - ['khaieracyrw02fanlow_1634',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], - ['khaieracyrw02fanmed_1635',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], - ['khaieracyrw02heat_1636',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], - ['khaieracyrw02prefix_1637',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], - ['khaieracyrw02statelength_1638',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], - ['khaieracyrw02swingauto_1639',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], - ['khaieracyrw02swingbottom_1640',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], - ['khaieracyrw02swingdown_1641',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], - ['khaieracyrw02swingmiddle_1642',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], - ['khaieracyrw02swingoff_1643',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], - ['khaieracyrw02swingtop_1644',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], - ['khaieracyrw02turbohigh_1645',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], - ['khaieracyrw02turbolow_1646',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], - ['khaieracyrw02turbooff_1647',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], - ['khaieraczerospace_1648',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], - ['kheader_1649',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], - ['khealthstr_1650',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], - ['kheat_1651',['kHeat',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e',1,'stdAc']]], - ['kheatstr_1652',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], - ['khigh_1653',['kHigh',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()']]], - ['khighest_1654',['kHighest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d',1,'stdAc']]], - ['khigheststr_1655',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], - ['khighnibble_1656',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], - ['khighstr_1657',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], - ['khistr_1658',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], - ['khitachiac1auto_1659',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], - ['khitachiac1bits_1660',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], - ['khitachiac1checksumstartbyte_1661',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], - ['khitachiac1cool_1662',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], - ['khitachiac1dry_1663',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], - ['khitachiac1fan_1664',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], - ['khitachiac1fanauto_1665',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], - ['khitachiac1fanbyte_1666',['kHitachiAc1FanByte',['../ir__Hitachi_8h.html#afe6b5951ba3b4e7ad5400f30228d106e',1,'ir_Hitachi.h']]], - ['khitachiac1fanhigh_1667',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], - ['khitachiac1fanlow_1668',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], - ['khitachiac1fanmed_1669',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], - ['khitachiac1fanoffset_1670',['kHitachiAc1FanOffset',['../ir__Hitachi_8h.html#af533c283666d80c0b9348f706909f4c4',1,'ir_Hitachi.h']]], - ['khitachiac1fansize_1671',['kHitachiAc1FanSize',['../ir__Hitachi_8h.html#a2b2a24680efaf1eeaf76dacaabef5c1d',1,'ir_Hitachi.h']]], - ['khitachiac1hdrmark_1672',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], - ['khitachiac1hdrspace_1673',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], - ['khitachiac1heat_1674',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], - ['khitachiac1modebyte_1675',['kHitachiAc1ModeByte',['../ir__Hitachi_8h.html#a57e27b66ff6d471c0dd335b610bc6e24',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fa_1676',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fb_1677',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], - ['khitachiac1modelbyte_1678',['kHitachiAc1ModelByte',['../ir__Hitachi_8h.html#a2e2a76b8b7decef99cfb7b197e8fb7f7',1,'ir_Hitachi.h']]], - ['khitachiac1modeloffset_1679',['kHitachiAc1ModelOffset',['../ir__Hitachi_8h.html#a8a440a64e6e164511e0976dc5b6585ff',1,'ir_Hitachi.h']]], - ['khitachiac1modelsize_1680',['kHitachiAc1ModelSize',['../ir__Hitachi_8h.html#ab74bbcb475b7eaf33f70dbfdb853d8c3',1,'ir_Hitachi.h']]], - ['khitachiac1modeoffset_1681',['kHitachiAc1ModeOffset',['../ir__Hitachi_8h.html#a3f010fa5ae43ee36771be18659d8bc80',1,'ir_Hitachi.h']]], - ['khitachiac1modesize_1682',['kHitachiAc1ModeSize',['../ir__Hitachi_8h.html#a38b456d96602e83e7832e2a7af75f321',1,'ir_Hitachi.h']]], - ['khitachiac1offtimerhighbyte_1683',['kHitachiAc1OffTimerHighByte',['../ir__Hitachi_8h.html#a36e6b7fc328ee247c11f5779487119b6',1,'ir_Hitachi.h']]], - ['khitachiac1offtimerlowbyte_1684',['kHitachiAc1OffTimerLowByte',['../ir__Hitachi_8h.html#ac8eaedd191009b2ddaf1e047ac6ecf11',1,'ir_Hitachi.h']]], - ['khitachiac1ontimerhighbyte_1685',['kHitachiAc1OnTimerHighByte',['../ir__Hitachi_8h.html#aff6907e9999561abceac42e4cce1dc3b',1,'ir_Hitachi.h']]], - ['khitachiac1ontimerlowbyte_1686',['kHitachiAc1OnTimerLowByte',['../ir__Hitachi_8h.html#a95fef3be6809026b714847c709ba655b',1,'ir_Hitachi.h']]], - ['khitachiac1powerbyte_1687',['kHitachiAc1PowerByte',['../ir__Hitachi_8h.html#acda489ff6137ab3ebfb1795a32e1ec8e',1,'ir_Hitachi.h']]], - ['khitachiac1poweroffset_1688',['kHitachiAc1PowerOffset',['../ir__Hitachi_8h.html#a3fdcd0375b85ac2641d9d5cc6e4770f8',1,'ir_Hitachi.h']]], - ['khitachiac1powertoggleoffset_1689',['kHitachiAc1PowerToggleOffset',['../ir__Hitachi_8h.html#aac994777ce070ad69550229824800ee0',1,'ir_Hitachi.h']]], - ['khitachiac1sleep1_1690',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], - ['khitachiac1sleep2_1691',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], - ['khitachiac1sleep3_1692',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], - ['khitachiac1sleep4_1693',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], - ['khitachiac1sleepbyte_1694',['kHitachiAc1SleepByte',['../ir__Hitachi_8h.html#ac693a15878e7cdc8e1f575502ea82843',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoff_1695',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoffset_1696',['kHitachiAc1SleepOffset',['../ir__Hitachi_8h.html#a277ca55dbfd35258ea40059bdff62488',1,'ir_Hitachi.h']]], - ['khitachiac1sleepsize_1697',['kHitachiAc1SleepSize',['../ir__Hitachi_8h.html#a199cedd7120057f735ffc640f93a9a1a',1,'ir_Hitachi.h']]], - ['khitachiac1statelength_1698',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], - ['khitachiac1swingbyte_1699',['kHitachiAc1SwingByte',['../ir__Hitachi_8h.html#a5a283583007b26c1b45d8d7afcd55408',1,'ir_Hitachi.h']]], - ['khitachiac1swinghoffset_1700',['kHitachiAc1SwingHOffset',['../ir__Hitachi_8h.html#ab35d4bb6c17fc5bbcb5385a642476238',1,'ir_Hitachi.h']]], - ['khitachiac1swingtoggleoffset_1701',['kHitachiAc1SwingToggleOffset',['../ir__Hitachi_8h.html#a08eac3b64687e83229648c8664d75dc4',1,'ir_Hitachi.h']]], - ['khitachiac1swingvoffset_1702',['kHitachiAc1SwingVOffset',['../ir__Hitachi_8h.html#af4e410f10812d49175cd419ed678535b',1,'ir_Hitachi.h']]], - ['khitachiac1tempauto_1703',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], - ['khitachiac1tempbyte_1704',['kHitachiAc1TempByte',['../ir__Hitachi_8h.html#a03185c3b2ddb62d12267da014796da56',1,'ir_Hitachi.h']]], - ['khitachiac1tempdelta_1705',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], - ['khitachiac1tempoffset_1706',['kHitachiAc1TempOffset',['../ir__Hitachi_8h.html#a8a92aa41be23301229ecec1486714b9a',1,'ir_Hitachi.h']]], - ['khitachiac1tempsize_1707',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], - ['khitachiac1timersize_1708',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], - ['khitachiac2bits_1709',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], - ['khitachiac2statelength_1710',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], - ['khitachiac344bits_1711',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], - ['khitachiac344buttonfan_1712',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], - ['khitachiac344buttonpowermode_1713',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingh_1714',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingv_1715',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempdown_1716',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempup_1717',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], - ['khitachiac344cool_1718',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], - ['khitachiac344dry_1719',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], - ['khitachiac344fan_1720',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], - ['khitachiac344fanauto_1721',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], - ['khitachiac344fanhigh_1722',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], - ['khitachiac344fanlow_1723',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], - ['khitachiac344fanmax_1724',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], - ['khitachiac344fanmedium_1725',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], - ['khitachiac344fanmin_1726',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], - ['khitachiac344heat_1727',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], - ['khitachiac344maxtemp_1728',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], - ['khitachiac344mintemp_1729',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], - ['khitachiac344statelength_1730',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], - ['khitachiac344swinghauto_1731',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], - ['khitachiac344swinghbyte_1732',['kHitachiAc344SwingHByte',['../ir__Hitachi_8h.html#a132b64e007043ade4f209b0416fd5f4d',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleft_1733',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleftmax_1734',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], - ['khitachiac344swinghmiddle_1735',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], - ['khitachiac344swinghoffset_1736',['kHitachiAc344SwingHOffset',['../ir__Hitachi_8h.html#a7e8e57b0b37f20a502eb66f13980989c',1,'ir_Hitachi.h']]], - ['khitachiac344swinghright_1737',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], - ['khitachiac344swinghrightmax_1738',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], - ['khitachiac344swinghsize_1739',['kHitachiAc344SwingHSize',['../ir__Hitachi_8h.html#aadd389cd818207920c1e8efef53fde91',1,'ir_Hitachi.h']]], - ['khitachiac344swingvbyte_1740',['kHitachiAc344SwingVByte',['../ir__Hitachi_8h.html#ae40211be39e522ebf9b580b3481f49f3',1,'ir_Hitachi.h']]], - ['khitachiac344swingvoffset_1741',['kHitachiAc344SwingVOffset',['../ir__Hitachi_8h.html#a8b38ef096697f70bdba8f4bd2799e148',1,'ir_Hitachi.h']]], - ['khitachiac3bitmark_1742',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], - ['khitachiac3bits_1743',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], - ['khitachiac3hdrmark_1744',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], - ['khitachiac3hdrspace_1745',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], - ['khitachiac3minbits_1746',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], - ['khitachiac3minstatelength_1747',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], - ['khitachiac3onespace_1748',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], - ['khitachiac3statelength_1749',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], - ['khitachiac3zerospace_1750',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], - ['khitachiac424bitmark_1751',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], - ['khitachiac424bits_1752',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], - ['khitachiac424buttonbyte_1753',['kHitachiAc424ButtonByte',['../ir__Hitachi_8h.html#a057159edca95f9a000c80c7059919e83',1,'ir_Hitachi.h']]], - ['khitachiac424buttonfan_1754',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], - ['khitachiac424buttonpowermode_1755',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingh_1756',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingv_1757',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempdown_1758',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempup_1759',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], - ['khitachiac424cool_1760',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], - ['khitachiac424dry_1761',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], - ['khitachiac424fan_1762',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], - ['khitachiac424fanauto_1763',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], - ['khitachiac424fanbyte_1764',['kHitachiAc424FanByte',['../ir__Hitachi_8h.html#aa4758708fe16d13cf6f50b7aa9e12bf6',1,'ir_Hitachi.h']]], - ['khitachiac424fanhigh_1765',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], - ['khitachiac424fanlow_1766',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], - ['khitachiac424fanmax_1767',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], - ['khitachiac424fanmaxdry_1768',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], - ['khitachiac424fanmedium_1769',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], - ['khitachiac424fanmin_1770',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], - ['khitachiac424fantemp_1771',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], - ['khitachiac424hdrmark_1772',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], - ['khitachiac424hdrspace_1773',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], - ['khitachiac424heat_1774',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], - ['khitachiac424ldrmark_1775',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], - ['khitachiac424ldrspace_1776',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], - ['khitachiac424maxtemp_1777',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], - ['khitachiac424mintemp_1778',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], - ['khitachiac424modebyte_1779',['kHitachiAc424ModeByte',['../ir__Hitachi_8h.html#a3c6e0d27a95d94142360efa19a342c99',1,'ir_Hitachi.h']]], - ['khitachiac424onespace_1780',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], - ['khitachiac424powerbyte_1781',['kHitachiAc424PowerByte',['../ir__Hitachi_8h.html#a815e6761376ca4eae649ec837d55dc25',1,'ir_Hitachi.h']]], - ['khitachiac424poweroff_1782',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], - ['khitachiac424poweron_1783',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], - ['khitachiac424statelength_1784',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], - ['khitachiac424tempbyte_1785',['kHitachiAc424TempByte',['../ir__Hitachi_8h.html#a5de1ae606d6a34e24420b08a73542b94',1,'ir_Hitachi.h']]], - ['khitachiac424tempoffset_1786',['kHitachiAc424TempOffset',['../ir__Hitachi_8h.html#a3adb47220c4c72a62d9296092047900f',1,'ir_Hitachi.h']]], - ['khitachiac424tempsize_1787',['kHitachiAc424TempSize',['../ir__Hitachi_8h.html#ae6738f4a4476e5f34efbeb52e8c413de',1,'ir_Hitachi.h']]], - ['khitachiac424zerospace_1788',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], - ['khitachiacauto_1789',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], - ['khitachiacautotemp_1790',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], - ['khitachiacbitmark_1791',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], - ['khitachiacbits_1792',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], - ['khitachiaccool_1793',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], - ['khitachiacdefaultrepeat_1794',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], - ['khitachiacdry_1795',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], - ['khitachiacfan_1796',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], - ['khitachiacfanauto_1797',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], - ['khitachiacfanhigh_1798',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], - ['khitachiacfanlow_1799',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], - ['khitachiacfanmed_1800',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], - ['khitachiacfreq_1801',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], - ['khitachiachdrmark_1802',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], - ['khitachiachdrspace_1803',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], - ['khitachiacheat_1804',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], - ['khitachiacmaxtemp_1805',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], - ['khitachiacmingap_1806',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], - ['khitachiacmintemp_1807',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], - ['khitachiaconespace_1808',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], - ['khitachiacpoweroffset_1809',['kHitachiAcPowerOffset',['../ir__Hitachi_8h.html#a30062f0646ac63c3612d13f98211e36b',1,'ir_Hitachi.h']]], - ['khitachiacstatelength_1810',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], - ['khitachiacswingoffset_1811',['kHitachiAcSwingOffset',['../ir__Hitachi_8h.html#aac1fcff513a4eca2aeb4f13c739165e2',1,'ir_Hitachi.h']]], - ['khitachiaczerospace_1812',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], - ['kholdstr_1813',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], - ['khoursstr_1814',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], - ['khourstr_1815',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], - ['khumidstr_1816',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], - ['kidlestate_1817',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], - ['kifeelstr_1818',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], - ['kinaxbitmark_1819',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], - ['kinaxbits_1820',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], - ['kinaxhdrmark_1821',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], - ['kinaxhdrspace_1822',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], - ['kinaxmingap_1823',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], - ['kinaxminrepeat_1824',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], - ['kinaxonespace_1825',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], - ['kinaxtick_1826',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], - ['kinaxzerospace_1827',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], - ['kinsidestr_1828',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], - ['kionstr_1829',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], - ['kjvcbitmark_1830',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], - ['kjvcbitmarkticks_1831',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], - ['kjvcbits_1832',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], - ['kjvchdrmark_1833',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], - ['kjvchdrmarkticks_1834',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], - ['kjvchdrspace_1835',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], - ['kjvchdrspaceticks_1836',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], - ['kjvcmingap_1837',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], - ['kjvcmingapticks_1838',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], - ['kjvconespace_1839',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], - ['kjvconespaceticks_1840',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], - ['kjvcrptlength_1841',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], - ['kjvcrptlengthticks_1842',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], - ['kjvctick_1843',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], - ['kjvczerospace_1844',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], - ['kjvczerospaceticks_1845',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], - ['kkelvinatorauto_1846',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], - ['kkelvinatorautotemp_1847',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfanmax_1848',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfansize_1849',['kKelvinatorBasicFanSize',['../ir__Kelvinator_8cpp.html#a35ffe10c5c1b834703fe44c5eeeb4c8f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmark_1850',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmarkticks_1851',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbits_1852',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], - ['kkelvinatorchecksumstart_1853',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooter_1854',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooterbits_1855',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcool_1856',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], - ['kkelvinatordefaultrepeat_1857',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], - ['kkelvinatordry_1858',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], - ['kkelvinatorfan_1859',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanauto_1860',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmax_1861',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmin_1862',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanoffset_1863',['kKelvinatorFanOffset',['../ir__Kelvinator_8cpp.html#a4988bb98a4f8798c0b927e981667cfbd',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorfansize_1864',['kKelvinatorFanSize',['../ir__Kelvinator_8cpp.html#a286636ba83aceab9c8518878a6d7209e',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspace_1865',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspaceticks_1866',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmark_1867',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmarkticks_1868',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspace_1869',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspaceticks_1870',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorheat_1871',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], - ['kkelvinatorionfilteroffset_1872',['kKelvinatorIonFilterOffset',['../ir__Kelvinator_8cpp.html#a5cbdc907f0cb6a47d0c548148933067b',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorlightoffset_1873',['kKelvinatorLightOffset',['../ir__Kelvinator_8cpp.html#a7e757add18951b8e36c2065c5dbefc24',1,'ir_Kelvinator.cpp']]], - ['kkelvinatormaxtemp_1874',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], - ['kkelvinatormintemp_1875',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], - ['kkelvinatormodeoffset_1876',['kKelvinatorModeOffset',['../ir__Kelvinator_8cpp.html#a6a52d11326d5f83653c510393bb2a518',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespace_1877',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespaceticks_1878',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorpoweroffset_1879',['kKelvinatorPowerOffset',['../ir__Kelvinator_8cpp.html#a5a9591e2dd98f68ad6f562e199b1a304',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorquietoffset_1880',['kKelvinatorQuietOffset',['../ir__Kelvinator_8cpp.html#ad354be321ea41c51ead876fd30674546',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorstatelength_1881',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], - ['kkelvinatortick_1882',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorturbooffset_1883',['kKelvinatorTurboOffset',['../ir__Kelvinator_8cpp.html#a21987b6f00c7f2e9bba94c59bc5b804b',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswinghoffset_1884',['kKelvinatorVentSwingHOffset',['../ir__Kelvinator_8cpp.html#a551df2c1e21764f12030f6bfa6d5942d',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswingoffset_1885',['kKelvinatorVentSwingOffset',['../ir__Kelvinator_8cpp.html#a38012bf9daa0c362a9007107183391ef',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswingvoffset_1886',['kKelvinatorVentSwingVOffset',['../ir__Kelvinator_8cpp.html#a64d3767b464d4fe2543560cf5a2a5b21',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorxfanoffset_1887',['kKelvinatorXfanOffset',['../ir__Kelvinator_8cpp.html#a4417448475405306f10166fc9cd98054',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospace_1888',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospaceticks_1889',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], - ['klasertagbits_1890',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], - ['klasertagdelta_1891',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], - ['klasertagexcess_1892',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], - ['klasertagmingap_1893',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], - ['klasertagminrepeat_1894',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], - ['klasertagminsamples_1895',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], - ['klasertagtick_1896',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], - ['klasertagtolerance_1897',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], - ['klastdecodetype_1898',['kLastDecodeType',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab09881b84bf9d61af99e62a85cce0b59',1,'IRremoteESP8266.h']]], - ['klastfanspeedenum_1899',['kLastFanspeedEnum',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad',1,'stdAc']]], - ['klastopmodeenum_1900',['kLastOpmodeEnum',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f',1,'stdAc']]], - ['klaststr_1901',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], - ['klastswinghenum_1902',['kLastSwinghEnum',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4',1,'stdAc']]], - ['klastswingvenum_1903',['kLastSwingvEnum',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30',1,'stdAc']]], - ['kleft_1904',['kLeft',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28',1,'stdAc']]], - ['kleftmax_1905',['kLeftMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d',1,'stdAc']]], - ['kleftmaxstr_1906',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], - ['kleftstr_1907',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], - ['klegopfbitmark_1908',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], - ['klegopfbits_1909',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], - ['klegopfhdrspace_1910',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], - ['klegopfmincommandlength_1911',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], - ['klegopfminrepeat_1912',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], - ['klegopfonespace_1913',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], - ['klegopfzerospace_1914',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], - ['klg2bitmark_1915',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], - ['klg2bitmarkticks_1916',['kLg2BitMarkTicks',['../ir__LG_8cpp.html#aae477dcb68b9c5f1b12adf832eb388a1',1,'ir_LG.cpp']]], - ['klg2hdrmark_1917',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], - ['klg2hdrmarkticks_1918',['kLg2HdrMarkTicks',['../ir__LG_8cpp.html#adb636fb6b634c651364ae954d31b5692',1,'ir_LG.cpp']]], - ['klg2hdrspace_1919',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], - ['klg2hdrspaceticks_1920',['kLg2HdrSpaceTicks',['../ir__LG_8cpp.html#abd2f843416070a93587d07e4d32f1eb5',1,'ir_LG.cpp']]], - ['klg32bits_1921',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], - ['klg32hdrmark_1922',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], - ['klg32hdrmarkticks_1923',['kLg32HdrMarkTicks',['../ir__LG_8cpp.html#aded50973c0a938d455c1537cb240d5e9',1,'ir_LG.cpp']]], - ['klg32hdrspace_1924',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], - ['klg32hdrspaceticks_1925',['kLg32HdrSpaceTicks',['../ir__LG_8cpp.html#aa029c2c83a96f1ff02610eddd6b946fa',1,'ir_LG.cpp']]], - ['klg32rpthdrmark_1926',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], - ['klg32rpthdrmarkticks_1927',['kLg32RptHdrMarkTicks',['../ir__LG_8cpp.html#a5c79f7072eee35fc1df10ecd18e2a3d2',1,'ir_LG.cpp']]], - ['klgacauto_1928',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], - ['klgacchecksumoffset_1929',['kLgAcChecksumOffset',['../ir__LG_8h.html#aa0b9abe43a870097d886efcd0fd3bb96',1,'ir_LG.h']]], - ['klgacchecksumsize_1930',['kLgAcChecksumSize',['../ir__LG_8h.html#a177d205346380d47ae47b52079e5ffaf',1,'ir_LG.h']]], - ['klgaccool_1931',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], - ['klgacdry_1932',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], - ['klgacfan_1933',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], - ['klgacfanauto_1934',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], - ['klgacfanhigh_1935',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], - ['klgacfanlow_1936',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], - ['klgacfanlowest_1937',['kLgAcFanLowest',['../ir__LG_8h.html#a6b89a2e6a5bee761e1754fe520459d49',1,'ir_LG.h']]], - ['klgacfanmedium_1938',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], - ['klgacfanoffset_1939',['kLgAcFanOffset',['../ir__LG_8h.html#a428d348215682243f7e5fe03c7580665',1,'ir_LG.h']]], - ['klgacfansize_1940',['kLgAcFanSize',['../ir__LG_8h.html#a4baf7484fee55fdd5cdbf13d11d7f1b9',1,'ir_LG.h']]], - ['klgacheat_1941',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], - ['klgacmaxtemp_1942',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], - ['klgacmintemp_1943',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], - ['klgacmodeoffset_1944',['kLgAcModeOffset',['../ir__LG_8h.html#abbc65ef461fd214d9ef41ebf62693467',1,'ir_LG.h']]], - ['klgacmodesize_1945',['kLgAcModeSize',['../ir__LG_8h.html#ae9927832fbb45c310666d8de1ebe5f0f',1,'ir_LG.h']]], - ['klgacoffcommand_1946',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], - ['klgacpoweroff_1947',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], - ['klgacpoweroffset_1948',['kLgAcPowerOffset',['../ir__LG_8h.html#a7cce14305909efe3b904d68f902d42de',1,'ir_LG.h']]], - ['klgacpoweron_1949',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], - ['klgacpowersize_1950',['kLgAcPowerSize',['../ir__LG_8h.html#a624eee0bc9084e4d9d801f8cbdc28d1e',1,'ir_LG.h']]], - ['klgacsignature_1951',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], - ['klgacsignatureoffset_1952',['kLgAcSignatureOffset',['../ir__LG_8h.html#a406dff4b4ffa5b809b8ea87ddfd3bf8b',1,'ir_LG.h']]], - ['klgacsignaturesize_1953',['kLgAcSignatureSize',['../ir__LG_8h.html#a7420d729a5dca26d95be3b9907eb477e',1,'ir_LG.h']]], - ['klgactempadjust_1954',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], - ['klgactempoffset_1955',['kLgAcTempOffset',['../ir__LG_8h.html#aca5ae781e03e4a88a83303cb0cae0609',1,'ir_LG.h']]], - ['klgactempsize_1956',['kLgAcTempSize',['../ir__LG_8h.html#ad0235a6c5bebb086b75dc65433b3c9e1',1,'ir_LG.h']]], - ['klgbitmark_1957',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], - ['klgbitmarkticks_1958',['kLgBitMarkTicks',['../ir__LG_8cpp.html#a80b2d221b207c8c0faa74f1f39e9920b',1,'ir_LG.cpp']]], - ['klgbits_1959',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], - ['klgdefaultrepeat_1960',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], - ['klghdrmark_1961',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], - ['klghdrmarkticks_1962',['kLgHdrMarkTicks',['../ir__LG_8cpp.html#a6f1f88f3cefe49b9796a10a9109e560e',1,'ir_LG.cpp']]], - ['klghdrspace_1963',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], - ['klghdrspaceticks_1964',['kLgHdrSpaceTicks',['../ir__LG_8cpp.html#a22d8775d4c8985970b47e449232b45de',1,'ir_LG.cpp']]], - ['klgmingap_1965',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], - ['klgmingapticks_1966',['kLgMinGapTicks',['../ir__LG_8cpp.html#aa56fd5b4fe946992aa1b9bdf61b1518b',1,'ir_LG.cpp']]], - ['klgminmessagelength_1967',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], - ['klgminmessagelengthticks_1968',['kLgMinMessageLengthTicks',['../ir__LG_8cpp.html#ab000fc974bdd0723e8bcb4872f33dd72',1,'ir_LG.cpp']]], - ['klgonespace_1969',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], - ['klgonespaceticks_1970',['kLgOneSpaceTicks',['../ir__LG_8cpp.html#a535b089cd72bd027cbc34eb917d71ae5',1,'ir_LG.cpp']]], - ['klgrptspace_1971',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], - ['klgrptspaceticks_1972',['kLgRptSpaceTicks',['../ir__LG_8cpp.html#abc43b327c2c752dc5ed2794f08e2eba8',1,'ir_LG.cpp']]], - ['klgtick_1973',['kLgTick',['../ir__LG_8cpp.html#ab8ab28ebf1fae94aa900a3199a6fc191',1,'ir_LG.cpp']]], - ['klgzerospace_1974',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], - ['klgzerospaceticks_1975',['kLgZeroSpaceTicks',['../ir__LG_8cpp.html#af932345e15db822da67d7796cd5b6584',1,'ir_LG.cpp']]], - ['klightstr_1976',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], - ['klighttogglestr_1977',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], - ['klostr_1978',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], - ['kloudstr_1979',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], - ['klow_1980',['kLow',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()']]], - ['klowerstr_1981',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], - ['klowest_1982',['kLowest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314',1,'stdAc']]], - ['kloweststr_1983',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], - ['klownibble_1984',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], - ['klowstr_1985',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], - ['klutronbits_1986',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], - ['klutrondelta_1987',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], - ['klutrongap_1988',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], - ['klutrontick_1989',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], - ['kmagiquestbits_1990',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], - ['kmagiquestgap_1991',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], - ['kmagiquestmarkone_1992',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], - ['kmagiquestmarkzero_1993',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], - ['kmagiquestoneratio_1994',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], - ['kmagiquestspaceone_1995',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], - ['kmagiquestspacezero_1996',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], - ['kmagiquesttotalusec_1997',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], - ['kmagiquestzeroratio_1998',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], - ['kmanualstr_1999',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], - ['kmark_2000',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], - ['kmarkexcess_2001',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], - ['kmarkstate_2002',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], - ['kmax_2003',['kMax',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b',1,'stdAc']]], - ['kmaxaccurateusecdelay_2004',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], - ['kmaximumstr_2005',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], - ['kmaxleftstr_2006',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], - ['kmaxrightstr_2007',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], - ['kmaxstr_2008',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], - ['kmaxtimeoutms_2009',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], - ['kmedium_2010',['kMedium',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9',1,'stdAc']]], - ['kmediumstr_2011',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], - ['kmedstr_2012',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], - ['kmetzaddressbits_2013',['kMetzAddressBits',['../ir__Metz_8cpp.html#accbe5b6fed5bd637faff4b6e04bd1ced',1,'ir_Metz.cpp']]], - ['kmetzbitmark_2014',['kMetzBitMark',['../ir__Metz_8cpp.html#a6aa8842178b5c67d709bca787a285301',1,'ir_Metz.cpp']]], - ['kmetzbits_2015',['kMetzBits',['../IRremoteESP8266_8h.html#ad07971b39dd912f9e01ab5912c0667e6',1,'IRremoteESP8266.h']]], - ['kmetzcommandbits_2016',['kMetzCommandBits',['../ir__Metz_8cpp.html#a71d1a54f579541d040640f468dbbd47f',1,'ir_Metz.cpp']]], - ['kmetzfreq_2017',['kMetzFreq',['../ir__Metz_8cpp.html#a4970bcdab10f7ccfc6d619f417c312ab',1,'ir_Metz.cpp']]], - ['kmetzhdrmark_2018',['kMetzHdrMark',['../ir__Metz_8cpp.html#a37d8db3081bb8155738a8e0ca3fb0f69',1,'ir_Metz.cpp']]], - ['kmetzhdrspace_2019',['kMetzHdrSpace',['../ir__Metz_8cpp.html#a0692936979b5453e9a3baf867ec8ed0e',1,'ir_Metz.cpp']]], - ['kmetzminrepeat_2020',['kMetzMinRepeat',['../IRremoteESP8266_8h.html#a06aa5d85cd9b325024d79ec9af9e30e4',1,'IRremoteESP8266.h']]], - ['kmetzonespace_2021',['kMetzOneSpace',['../ir__Metz_8cpp.html#a397415b944f0be2a3b87c6c8eaeddda0',1,'ir_Metz.cpp']]], - ['kmetzzerospace_2022',['kMetzZeroSpace',['../ir__Metz_8cpp.html#ac5eb86e56a2df05a02e1581d0f8595c5',1,'ir_Metz.cpp']]], - ['kmiddle_2023',['kMiddle',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()']]], - ['kmiddlestr_2024',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], - ['kmidea24bits_2025',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], - ['kmidea24mingap_2026',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], - ['kmidea24minrepeat_2027',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], - ['kmideaacauto_2028',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], - ['kmideaaccool_2029',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], - ['kmideaacdry_2030',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], - ['kmideaacfan_2031',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], - ['kmideaacfanauto_2032',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], - ['kmideaacfanhigh_2033',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], - ['kmideaacfanlow_2034',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], - ['kmideaacfanmed_2035',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], - ['kmideaacheat_2036',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], - ['kmideaacmaxtempc_2037',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], - ['kmideaacmaxtempf_2038',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], - ['kmideaacmintempc_2039',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], - ['kmideaacmintempf_2040',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], - ['kmideaactoggleecono_2041',['kMideaACToggleEcono',['../ir__Midea_8h.html#afae5d72469e092300eb740d696b27c2b',1,'ir_Midea.h']]], - ['kmideaactoggleswingv_2042',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], - ['kmideabitmark_2043',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], - ['kmideabitmarkticks_2044',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], - ['kmideabits_2045',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], - ['kmideahdrmark_2046',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], - ['kmideahdrmarkticks_2047',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], - ['kmideahdrspace_2048',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], - ['kmideahdrspaceticks_2049',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], - ['kmideamingap_2050',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], - ['kmideamingapticks_2051',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], - ['kmideaminrepeat_2052',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], - ['kmideaonespace_2053',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], - ['kmideaonespaceticks_2054',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], - ['kmideatick_2055',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], - ['kmideatolerance_2056',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], - ['kmideazerospace_2057',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], - ['kmideazerospaceticks_2058',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], - ['kmidstr_2059',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], - ['kmin_2060',['kMin',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48',1,'stdAc']]], - ['kminimumstr_2061',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], - ['kminstr_2062',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], - ['kminutesstr_2063',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], - ['kminutestr_2064',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], - ['kmitsubishi112auto_2065',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112bitmark_2066',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112bits_2067',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], - ['kmitsubishi112cool_2068',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112dry_2069',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanbyte_2070',['kMitsubishi112FanByte',['../ir__Mitsubishi_8h.html#a4312828eb864a67f8cc67a90c1324d3a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanlow_2071',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmax_2072',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmed_2073',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmin_2074',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanoffset_2075',['kMitsubishi112FanOffset',['../ir__Mitsubishi_8h.html#ac000e0d3a59314c115e516f37c29983d',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanquiet_2076',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fansize_2077',['kMitsubishi112FanSize',['../ir__Mitsubishi_8h.html#ab102138f689d66c2c4c97445931f2dec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112gap_2078',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmark_2079',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmarktolerance_2080',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrspace_2081',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112heat_2082',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112maxtemp_2083',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112minrepeat_2084',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], - ['kmitsubishi112mintemp_2085',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112modebyte_2086',['kMitsubishi112ModeByte',['../ir__Mitsubishi_8h.html#a7e7663483fa89b4283baafba744d707a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112modeoffset_2087',['kMitsubishi112ModeOffset',['../ir__Mitsubishi_8h.html#a39c8631bfd414738f1934eb28e74b97b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112onespace_2088',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112powerbyte_2089',['kMitsubishi112PowerByte',['../ir__Mitsubishi_8h.html#ab09f78fee2a242dfdb0318a4caf7a2d6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112poweroffset_2090',['kMitsubishi112PowerOffset',['../ir__Mitsubishi_8h.html#afd78de91190fa6ec8ffcc9132e3a8b35',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112statelength_2091',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], - ['kmitsubishi112swinghauto_2092',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghbyte_2093',['kMitsubishi112SwingHByte',['../ir__Mitsubishi_8h.html#ac149161c62c9ceee1c3a37d73930a7e8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleft_2094',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleftmax_2095',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghmiddle_2096',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghoffset_2097',['kMitsubishi112SwingHOffset',['../ir__Mitsubishi_8h.html#a42f92264157e170d68046b9970a057ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghright_2098',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghrightmax_2099',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghsize_2100',['kMitsubishi112SwingHSize',['../ir__Mitsubishi_8h.html#a9ab977dbab987789d40fae38212f07ba',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghwide_2101',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvauto_2102',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvbyte_2103',['kMitsubishi112SwingVByte',['../ir__Mitsubishi_8h.html#afbcd99e59a029ccc6276c87a46d560dd',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhigh_2104',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhighest_2105',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlow_2106',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlowest_2107',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvmiddle_2108',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvoffset_2109',['kMitsubishi112SwingVOffset',['../ir__Mitsubishi_8h.html#ae4f3919271bb464d90a42066e8052c64',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvsize_2110',['kMitsubishi112SwingVSize',['../ir__Mitsubishi_8h.html#ae4f466b64691d8aa20e66a982d65ceea',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112tempbyte_2111',['kMitsubishi112TempByte',['../ir__Mitsubishi_8h.html#a4099370512a63ae3414221ab45f05034',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112tempsize_2112',['kMitsubishi112TempSize',['../ir__Mitsubishi_8h.html#a30d0ece1b7db3558ecc03214843c9fec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112zerospace_2113',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136auto_2114',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136bitmark_2115',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136bits_2116',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], - ['kmitsubishi136cool_2117',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136dry_2118',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fan_2119',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanbyte_2120',['kMitsubishi136FanByte',['../ir__Mitsubishi_8h.html#a62166a745fdf0bbbd4b0eb114073b03e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanlow_2121',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmax_2122',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmed_2123',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmin_2124',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanoffset_2125',['kMitsubishi136FanOffset',['../ir__Mitsubishi_8h.html#aaa194e1e4394d3805477f4b2b78d3a81',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanquiet_2126',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fansize_2127',['kMitsubishi136FanSize',['../ir__Mitsubishi_8h.html#a3fa7836f102aa9c78d7dd287a038baee',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136gap_2128',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrmark_2129',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrspace_2130',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136heat_2131',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136maxtemp_2132',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136minrepeat_2133',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], - ['kmitsubishi136mintemp_2134',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136modebyte_2135',['kMitsubishi136ModeByte',['../ir__Mitsubishi_8h.html#a98fbde8559e82a1875235019913e859c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136modeoffset_2136',['kMitsubishi136ModeOffset',['../ir__Mitsubishi_8h.html#a061d59096df59826d951e83594728893',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136onespace_2137',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136powerbit_2138',['kMitsubishi136PowerBit',['../ir__Mitsubishi_8h.html#abbe2f7821db2a6f4696cf7f9138c509d',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136powerbyte_2139',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136poweroffset_2140',['kMitsubishi136PowerOffset',['../ir__Mitsubishi_8h.html#ad235f31bc4b42548373c15e18f29e8b1',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136statelength_2141',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], - ['kmitsubishi136swingvauto_2142',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvbyte_2143',['kMitsubishi136SwingVByte',['../ir__Mitsubishi_8h.html#ab31414515f89e94ec8b63028e215b5ad',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhigh_2144',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhighest_2145',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlow_2146',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlowest_2147',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136tempbyte_2148',['kMitsubishi136TempByte',['../ir__Mitsubishi_8h.html#a22bf24adb745489a75fb877fa5cc249a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136zerospace_2149',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2bitmark_2150',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrmark_2151',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrspace_2152',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2mingap_2153',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2onespace_2154',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2zerospace_2155',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacauto_2156',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacbitmark_2157',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacbits_2158',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], - ['kmitsubishiaccool_2159',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacdry_2160',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacextratolerance_2161',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacfanauto_2162',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanautooffset_2163',['kMitsubishiAcFanAutoOffset',['../ir__Mitsubishi_8h.html#ab8696268b90bf45314d712c212d68a10',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanmax_2164',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanoffset_2165',['kMitsubishiAcFanOffset',['../ir__Mitsubishi_8h.html#ac16a5f7fe9800006de4511fd4ac89d64',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanquiet_2166',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanrealmax_2167',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansilent_2168',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansize_2169',['kMitsubishiAcFanSize',['../ir__Mitsubishi_8h.html#a565c641228d28357282b211048f1bd1c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiachdrmark_2170',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiachdrspace_2171',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacheat_2172',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmaxtemp_2173',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#a8ba3fba3eb9dd63f5ade3cb3bd11269b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacminrepeat_2174',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], - ['kmitsubishiacmintemp_2175',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#a2d6d53ccf446fcb03331f4e9757f4169',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmodeoffset_2176',['kMitsubishiAcModeOffset',['../ir__Mitsubishi_8h.html#ac0037c13e3f90b7bde5a8328faaa3b9b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacnotimer_2177',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaconespace_2178',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacpower_2179',['kMitsubishiAcPower',['../ir__Mitsubishi_8h.html#a864c4d936663d68f65ed4525072bd3eb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacpoweroffset_2180',['kMitsubishiAcPowerOffset',['../ir__Mitsubishi_8h.html#a78749519549fb76a920ca447a4504e72',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacrptmark_2181',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptspace_2182',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacstartstoptimer_2183',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstarttimer_2184',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstatelength_2185',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], - ['kmitsubishiacstoptimer_2186',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneauto_2187',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneautomove_2188',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanebitoffset_2189',['kMitsubishiAcVaneBitOffset',['../ir__Mitsubishi_8h.html#a0766870a9709320cfff03d0147f8e414',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneoffset_2190',['kMitsubishiAcVaneOffset',['../ir__Mitsubishi_8h.html#a2e928c1f814b71a1c346b3e987d7b857',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanesize_2191',['kMitsubishiAcVaneSize',['../ir__Mitsubishi_8h.html#a27d52c41a9309a89e3a2c45b87c501ff',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneauto_2192',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaczerospace_2193',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmark_2194',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmarkticks_2195',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibits_2196',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152bits_2197',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152fanauto_2198',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanecono_2199',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanhigh_2200',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanlow_2201',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmax_2202',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmed_2203',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanturbo_2204',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152minrepeat_2205',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152statelength_2206',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152swinghauto_2207',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleft_2208',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftmax_2209',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftright_2210',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghmiddle_2211',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghoff_2212',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghright_2213',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightleft_2214',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightmax_2215',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvauto_2216',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhigh_2217',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhighest_2218',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlow_2219',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlowest_2220',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvmiddle_2221',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoff_2222',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoffset_2223',['kMitsubishiHeavy152SwingVOffset',['../ir__MitsubishiHeavy_8h.html#ae46f3549243667bbc38d6dc058772699',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvsize_2224',['kMitsubishiHeavy152SwingVSize',['../ir__MitsubishiHeavy_8h.html#a9cf7566686359cd5d553881b5eb96131',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy3dmask_2225',['kMitsubishiHeavy3DMask',['../ir__MitsubishiHeavy_8h.html#a16dcde537c9a2b1e8ddab4d6e08abb39',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88bits_2226',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88cleanoffset_2227',['kMitsubishiHeavy88CleanOffset',['../ir__MitsubishiHeavy_8h.html#ac0a4108b9ce94b3a85c2cb9680c98f4e',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanauto_2228',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanecono_2229',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanhigh_2230',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanlow_2231',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanmed_2232',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanoffset_2233',['kMitsubishiHeavy88FanOffset',['../ir__MitsubishiHeavy_8h.html#a477fe23b5b186f4386e5d0cbded98710',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fansize_2234',['kMitsubishiHeavy88FanSize',['../ir__MitsubishiHeavy_8h.html#a68ffc738a040b3c95a839362e069fe8a',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanturbo_2235',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88minrepeat_2236',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88statelength_2237',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88swingh3d_2238',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghauto_2239',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleft_2240',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftmax_2241',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftright_2242',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghmiddle_2243',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoff_2244',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoffset1_2245',['kMitsubishiHeavy88SwingHOffset1',['../ir__MitsubishiHeavy_8h.html#aeefa28e96d259e4ad5b63b86abf46f39',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoffset2_2246',['kMitsubishiHeavy88SwingHOffset2',['../ir__MitsubishiHeavy_8h.html#a9efbee563f821dad4006e8c56de9131d',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghright_2247',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightleft_2248',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightmax_2249',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghsize_2250',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvauto_2251',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5offset_2252',['kMitsubishiHeavy88SwingVByte5Offset',['../ir__MitsubishiHeavy_8h.html#adab63d1b0145cbea0953a9fdd34fd3cf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5size_2253',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte7offset_2254',['kMitsubishiHeavy88SwingVByte7Offset',['../ir__MitsubishiHeavy_8h.html#a8e864258ce7f01edb3b8d4672bba6312',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte7size_2255',['kMitsubishiHeavy88SwingVByte7Size',['../ir__MitsubishiHeavy_8h.html#a2e0d599b002366cc73d07f876d4fc0f7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhigh_2256',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhighest_2257',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlow_2258',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlowest_2259',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvmiddle_2260',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvoff_2261',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyauto_2262',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavybitmark_2263',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavycleanoffset_2264',['kMitsubishiHeavyCleanOffset',['../ir__MitsubishiHeavy_8h.html#acbcff6b22bf5dee4eeb1dbccc323409a',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavycool_2265',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavydry_2266',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfan_2267',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfilteroffset_2268',['kMitsubishiHeavyFilterOffset',['../ir__MitsubishiHeavy_8h.html#a32232c193503a4a6bab8f783fdebeddf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavygap_2269',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrmark_2270',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrspace_2271',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyheat_2272',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymaxtemp_2273',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymintemp_2274',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymodeoffset_2275',['kMitsubishiHeavyModeOffset',['../ir__MitsubishiHeavy_8h.html#a2ac27d9659d3a203c8cc360bda901d10',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavynightoffset_2276',['kMitsubishiHeavyNightOffset',['../ir__MitsubishiHeavy_8h.html#a01b341211034e272bf5d4be00b88cc78',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyonespace_2277',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavypoweroffset_2278',['kMitsubishiHeavyPowerOffset',['../ir__MitsubishiHeavy_8h.html#a51d81b3a7d97e423858e00aecd9719c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavysiglength_2279',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavysilentoffset_2280',['kMitsubishiHeavySilentOffset',['../ir__MitsubishiHeavy_8h.html#a9b7eb89d7a3f08e84339317d1f21ca6f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzerospace_2281',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyzjssig_2282',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzmssig_2283',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishimincommandlength_2284',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimincommandlengthticks_2285',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingap_2286',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingapticks_2287',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiminrepeat_2288',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], - ['kmitsubishionespace_2289',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishionespaceticks_2290',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishitick_2291',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospace_2292',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospaceticks_2293',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], - ['kmodebitssize_2294',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], - ['kmodelstr_2295',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], - ['kmodestr_2296',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], - ['kmouldstr_2297',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], - ['kmovestr_2298',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], - ['kmultibracketsbits_2299',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], - ['kmultibracketsdefaultrepeat_2300',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], - ['kmultibracketsfooterspace_2301',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketsfreq_2302',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketshdrmark_2303',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstick_2304',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstolerance_2305',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], - ['kmwmdelta_2306',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], - ['kmwmexcess_2307',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], - ['kmwmmaxwidth_2308',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], - ['kmwmmingap_2309',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], - ['kmwmminsamples_2310',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], - ['kmwmtick_2311',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], - ['kmwmtolerance_2312',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], - ['knastr_2313',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], - ['knecbitmark_2314',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], - ['knecbitmarkticks_2315',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], - ['knecbits_2316',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], - ['knechdrmark_2317',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], - ['knechdrmarkticks_2318',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], - ['knechdrspace_2319',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], - ['knechdrspaceticks_2320',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], - ['knecmincommandlength_2321',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], - ['knecmincommandlengthticks_2322',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], - ['knecmingap_2323',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], - ['knecmingapticks_2324',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], - ['kneconespace_2325',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], - ['kneconespaceticks_2326',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], - ['knecrptlength_2327',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], - ['knecrptspace_2328',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], - ['knecrptspaceticks_2329',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], - ['knectick_2330',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], - ['kneczerospace_2331',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], - ['kneczerospaceticks_2332',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], - ['kneoclima8cheatoffset_2333',['kNeoclima8CHeatOffset',['../ir__Neoclima_8h.html#a4e9654ac35708a22912448eef3eb2b35',1,'ir_Neoclima.h']]], - ['kneoclimaauto_2334',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], - ['kneoclimabitmark_2335',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], - ['kneoclimabits_2336',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], - ['kneoclimabutton8cheat_2337',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], - ['kneoclimabuttonairflow_2338',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonecono_2339',['kNeoclimaButtonEcono',['../ir__Neoclima_8h.html#a3bf5508439a8af4543f95468fd32a8bb',1,'ir_Neoclima.h']]], - ['kneoclimabuttoneye_2340',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfanspeed_2341',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfollow_2342',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfresh_2343',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonhold_2344',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], - ['kneoclimabuttonion_2345',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], - ['kneoclimabuttonlight_2346',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], - ['kneoclimabuttonmode_2347',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], - ['kneoclimabuttonoffset_2348',['kNeoclimaButtonOffset',['../ir__Neoclima_8h.html#a08ae86c15defd78ecac0f322f84190d3',1,'ir_Neoclima.h']]], - ['kneoclimabuttonpower_2349',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsize_2350',['kNeoclimaButtonSize',['../ir__Neoclima_8h.html#aac90dbf9fe499df2edf64df44f449e57',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsleep_2351',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], - ['kneoclimabuttonswing_2352',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempdown_2353',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempunit_2354',['kNeoclimaButtonTempUnit',['../ir__Neoclima_8h.html#ad552c7576d7f6c89b3530bcddf15d00c',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempup_2355',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], - ['kneoclimabuttonturbo_2356',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], - ['kneoclimacool_2357',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], - ['kneoclimadry_2358',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], - ['kneoclimaeconooffset_2359',['kNeoclimaEconoOffset',['../ir__Neoclima_8h.html#a7833bc084607139740fc4e01f984b3be',1,'ir_Neoclima.h']]], - ['kneoclimaeyeoffset_2360',['kNeoclimaEyeOffset',['../ir__Neoclima_8h.html#ad7baeea22b87a69150c65b2c049ee0b2',1,'ir_Neoclima.h']]], - ['kneoclimafan_2361',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], - ['kneoclimafanauto_2362',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], - ['kneoclimafanhigh_2363',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], - ['kneoclimafanlow_2364',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], - ['kneoclimafanmed_2365',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], - ['kneoclimafanoffest_2366',['kNeoclimaFanOffest',['../ir__Neoclima_8h.html#a32f614475b5f00f8ccdf12498c519713',1,'ir_Neoclima.h']]], - ['kneoclimafansize_2367',['kNeoclimaFanSize',['../ir__Neoclima_8h.html#a888cbc3f0a38137cb909188b6fff91b1',1,'ir_Neoclima.h']]], - ['kneoclimafollowme_2368',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], - ['kneoclimafreshoffset_2369',['kNeoclimaFreshOffset',['../ir__Neoclima_8h.html#af19f0f77ece049bdef26930be1b0309f',1,'ir_Neoclima.h']]], - ['kneoclimahdrmark_2370',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], - ['kneoclimahdrspace_2371',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], - ['kneoclimaheat_2372',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], - ['kneoclimaholdoffset_2373',['kNeoclimaHoldOffset',['../ir__Neoclima_8h.html#a3a91e7504c7820223021dcc2cbbf9f2a',1,'ir_Neoclima.h']]], - ['kneoclimaionoffset_2374',['kNeoclimaIonOffset',['../ir__Neoclima_8h.html#ad420932425fbe261368938e604dfb0c1',1,'ir_Neoclima.h']]], - ['kneoclimalightoffset_2375',['kNeoclimaLightOffset',['../ir__Neoclima_8h.html#af58a863257c5d436b299ac8cbcb57686',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempc_2376',['kNeoclimaMaxTempC',['../ir__Neoclima_8h.html#a9333b62cef8e22e05a2fbfb566830bb6',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempf_2377',['kNeoclimaMaxTempF',['../ir__Neoclima_8h.html#a7e1b67f87fbf56b52c4ad39c4865212d',1,'ir_Neoclima.h']]], - ['kneoclimamingap_2378',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], - ['kneoclimaminrepeat_2379',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], - ['kneoclimamintempc_2380',['kNeoclimaMinTempC',['../ir__Neoclima_8h.html#a39d700251ad835e4b36ec6e9db667703',1,'ir_Neoclima.h']]], - ['kneoclimamintempf_2381',['kNeoclimaMinTempF',['../ir__Neoclima_8h.html#ac6159ea9bbc08e115c45b4611190fe9f',1,'ir_Neoclima.h']]], - ['kneoclimamodeoffset_2382',['kNeoclimaModeOffset',['../ir__Neoclima_8h.html#a823a960610ef3387099d2a2103dd0b56',1,'ir_Neoclima.h']]], - ['kneoclimaonespace_2383',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], - ['kneoclimapoweroffset_2384',['kNeoclimaPowerOffset',['../ir__Neoclima_8h.html#a9b881e5400fe9bcd3b1422aeb355cf7c',1,'ir_Neoclima.h']]], - ['kneoclimasleepoffset_2385',['kNeoclimaSleepOffset',['../ir__Neoclima_8h.html#ac0c978cdc30827c7390b93a9a4f05d24',1,'ir_Neoclima.h']]], - ['kneoclimastatelength_2386',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], - ['kneoclimaswinghoffset_2387',['kNeoclimaSwingHOffset',['../ir__Neoclima_8h.html#a5f2e8ccaa590386b0947b0f291ebcb09',1,'ir_Neoclima.h']]], - ['kneoclimaswingvoff_2388',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], - ['kneoclimaswingvoffset_2389',['kNeoclimaSwingVOffset',['../ir__Neoclima_8h.html#a91b63c4712093684625a16c76bcc6784',1,'ir_Neoclima.h']]], - ['kneoclimaswingvon_2390',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], - ['kneoclimaswingvsize_2391',['kNeoclimaSwingVSize',['../ir__Neoclima_8h.html#ab4b49ec2c326d0e94eba23e7a93b6fc6',1,'ir_Neoclima.h']]], - ['kneoclimatempoffset_2392',['kNeoclimaTempOffset',['../ir__Neoclima_8h.html#a5c3470f6c773b4c557e6996f8c29a573',1,'ir_Neoclima.h']]], - ['kneoclimatempsize_2393',['kNeoclimaTempSize',['../ir__Neoclima_8h.html#af848fc3f4ce46c8786fd2b3e129b1e48',1,'ir_Neoclima.h']]], - ['kneoclimaturbooffset_2394',['kNeoclimaTurboOffset',['../ir__Neoclima_8h.html#ae23c6faf5f54ff12d592360b42d69971',1,'ir_Neoclima.h']]], - ['kneoclimausefahrenheitoffset_2395',['kNeoclimaUseFahrenheitOffset',['../ir__Neoclima_8h.html#a227df61ea908e0c80eeda8358bc7e4e8',1,'ir_Neoclima.h']]], - ['kneoclimazerospace_2396',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], - ['knibblesize_2397',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], - ['knightstr_2398',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], - ['knikaibitmark_2399',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], - ['knikaibitmarkticks_2400',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], - ['knikaibits_2401',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], - ['knikaihdrmark_2402',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], - ['knikaihdrmarkticks_2403',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], - ['knikaihdrspace_2404',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], - ['knikaihdrspaceticks_2405',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], - ['knikaimingap_2406',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], - ['knikaimingapticks_2407',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], - ['knikaionespace_2408',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], - ['knikaionespaceticks_2409',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], - ['knikaitick_2410',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], - ['knikaizerospace_2411',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], - ['knikaizerospaceticks_2412',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], - ['knorepeat_2413',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], - ['knostr_2414',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], - ['knowstr_2415',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], - ['koff_2416',['kOff',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()']]], - ['koffstr_2417',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], - ['kofftimerstr_2418',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], - ['konstr_2419',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], - ['kontimerstr_2420',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], - ['koutsidequietstr_2421',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], - ['koutsidestr_2422',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], - ['kpanasonicacauto_2423',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], - ['kpanasonicacbits_2424',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], - ['kpanasonicacchecksuminit_2425',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], - ['kpanasonicaccool_2426',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], - ['kpanasonicacdefaultrepeat_2427',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], - ['kpanasonicacdry_2428',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], - ['kpanasonicacexcess_2429',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], - ['kpanasonicacfan_2430',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], - ['kpanasonicacfanauto_2431',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], - ['kpanasonicacfandelta_2432',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmax_2433',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmed_2434',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmin_2435',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmodetemp_2436',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], - ['kpanasonicacheat_2437',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilterbyte_2438',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilteroffset_2439',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], - ['kpanasonicacmaxtemp_2440',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], - ['kpanasonicacmessagegap_2441',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], - ['kpanasonicacmintemp_2442',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], - ['kpanasonicacofftimeroffset_2443',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], - ['kpanasonicacontimeroffset_2444',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfulckpoffset_2445',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfuloffset_2446',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], - ['kpanasonicacpoweroffset_2447',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], - ['kpanasonicacquietckpoffset_2448',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], - ['kpanasonicacquietoffset_2449',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], - ['kpanasonicacsection1length_2450',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], - ['kpanasonicacsectiongap_2451',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], - ['kpanasonicacshortbits_2452',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], - ['kpanasonicacstatelength_2453',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], - ['kpanasonicacstateshortlength_2454',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], - ['kpanasonicacswinghauto_2455',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullleft_2456',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullright_2457',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghleft_2458',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghmiddle_2459',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghright_2460',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvauto_2461',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhigh_2462',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhighest_2463',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlow_2464',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlowest_2465',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvmiddle_2466',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], - ['kpanasonicactempoffset_2467',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], - ['kpanasonicactempsize_2468',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], - ['kpanasonicactimemax_2469',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], - ['kpanasonicactimeoverflowsize_2470',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], - ['kpanasonicactimesize_2471',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], - ['kpanasonicactimespecial_2472',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], - ['kpanasonicactolerance_2473',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], - ['kpanasonicbitmark_2474',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], - ['kpanasonicbitmarkticks_2475',['kPanasonicBitMarkTicks',['../ir__Panasonic_8cpp.html#aa0b259da4bc3dbf6c8b2ca31de759f55',1,'ir_Panasonic.cpp']]], - ['kpanasonicbits_2476',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], - ['kpanasonicckp_2477',['kPanasonicCkp',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0',1,'IRsend.h']]], - ['kpanasonicdke_2478',['kPanasonicDke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd',1,'IRsend.h']]], - ['kpanasonicendgap_2479',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], - ['kpanasonicfreq_2480',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], - ['kpanasonichdrmark_2481',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrmarkticks_2482',['kPanasonicHdrMarkTicks',['../ir__Panasonic_8cpp.html#a0f2d448b87f30840ee38c27032cd10bd',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspace_2483',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspaceticks_2484',['kPanasonicHdrSpaceTicks',['../ir__Panasonic_8cpp.html#a5fa430a5612bd21eb859356cc9c62a3c',1,'ir_Panasonic.cpp']]], - ['kpanasonicjke_2485',['kPanasonicJke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4',1,'IRsend.h']]], - ['kpanasonicknowngoodstate_2486',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], - ['kpanasoniclke_2487',['kPanasonicLke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6',1,'IRsend.h']]], - ['kpanasonicmanufacturer_2488',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], - ['kpanasonicmincommandlength_2489',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], - ['kpanasonicmincommandlengthticks_2490',['kPanasonicMinCommandLengthTicks',['../ir__Panasonic_8cpp.html#aba420f9aa4c3e6f261e422962362ce31',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingap_2491',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingapticks_2492',['kPanasonicMinGapTicks',['../ir__Panasonic_8cpp.html#aa605847e951b22f1f31b82e6b04c4bab',1,'ir_Panasonic.cpp']]], - ['kpanasonicnke_2493',['kPanasonicNke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790',1,'IRsend.h']]], - ['kpanasoniconespace_2494',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], - ['kpanasoniconespaceticks_2495',['kPanasonicOneSpaceTicks',['../ir__Panasonic_8cpp.html#aa7a8cb818a098bb8ec395af7f5dbc6d7',1,'ir_Panasonic.cpp']]], - ['kpanasonicrkr_2496',['kPanasonicRkr',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db',1,'IRsend.h']]], - ['kpanasonictick_2497',['kPanasonicTick',['../ir__Panasonic_8cpp.html#ab2fddd81fb53066257aeaa60069527a8',1,'ir_Panasonic.cpp']]], - ['kpanasonicunknown_2498',['kPanasonicUnknown',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4',1,'IRsend.h']]], - ['kpanasoniczerospace_2499',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], - ['kpanasoniczerospaceticks_2500',['kPanasonicZeroSpaceTicks',['../ir__Panasonic_8cpp.html#a58fef1468dbd4c3963be58754f38b125',1,'ir_Panasonic.cpp']]], - ['kperiodoffset_2501',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], - ['kpioneerbitmark_2502',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], - ['kpioneerbits_2503',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], - ['kpioneerhdrmark_2504',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], - ['kpioneerhdrspace_2505',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], - ['kpioneermincommandlength_2506',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], - ['kpioneermingap_2507',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], - ['kpioneeronespace_2508',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], - ['kpioneertick_2509',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], - ['kpioneerzerospace_2510',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], - ['kpowerbuttonstr_2511',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], - ['kpowerfulstr_2512',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], - ['kpowerstr_2513',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], - ['kpowertogglestr_2514',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], - ['kpreviouspowerstr_2515',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], - ['kprontodataoffset_2516',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], - ['kprontofreqfactor_2517',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], - ['kprontofreqoffset_2518',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], - ['kprontominlength_2519',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], - ['kprontoseq1lenoffset_2520',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], - ['kprontoseq2lenoffset_2521',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], - ['kprontotypeoffset_2522',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], - ['kprotocolstr_2523',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], - ['kpurifystr_2524',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], - ['kquietstr_2525',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], - ['krawbuf_2526',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], - ['krawtick_2527',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], - ['krc5bits_2528',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], - ['krc5mincommandlength_2529',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], - ['krc5mingap_2530',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], - ['krc5rawbits_2531',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], - ['krc5samplesmin_2532',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], - ['krc5t1_2533',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], - ['krc5togglemask_2534',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], - ['krc5xbits_2535',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], - ['krc6_5f36bits_2536',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], - ['krc6_5f36togglemask_2537',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmark_2538',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmarkticks_2539',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspace_2540',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspaceticks_2541',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], - ['krc6mode0bits_2542',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], - ['krc6rptlength_2543',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], - ['krc6rptlengthticks_2544',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], - ['krc6tick_2545',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], - ['krc6togglemask_2546',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], - ['krcmmbitmark_2547',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], - ['krcmmbitmarkticks_2548',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], - ['krcmmbits_2549',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], - ['krcmmbitspace0_2550',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace0ticks_2551',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1_2552',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1ticks_2553',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2_2554',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2ticks_2555',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3_2556',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3ticks_2557',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], - ['krcmmexcess_2558',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], - ['krcmmhdrmark_2559',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], - ['krcmmhdrmarkticks_2560',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], - ['krcmmhdrspace_2561',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], - ['krcmmhdrspaceticks_2562',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], - ['krcmmmingap_2563',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], - ['krcmmmingapticks_2564',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], - ['krcmmrptlength_2565',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], - ['krcmmrptlengthticks_2566',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], - ['krcmmtick_2567',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], - ['krcmmtolerance_2568',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], - ['krcz01channelmask_2569',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel1_2570',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel2_2571',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel3_2572',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel4_2573',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], - ['krcz01commandleveldown_2574',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevelup_2575',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], - ['krcz01commandmask_2576',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], - ['krcz01commandnightlight_2577',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], - ['krcz01commandoff_2578',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], - ['krcz01commandon_2579',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], - ['krcz01commandswitchchannel_2580',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer30_2581',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer60_2582',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], - ['krcz01signature_2583',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], - ['krcz01signaturemask_2584',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], - ['krepeat_2585',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], - ['krepeatstr_2586',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], - ['kright_2587',['kRight',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9',1,'stdAc']]], - ['krightmax_2588',['kRightMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32',1,'stdAc']]], - ['krightmaxstr_2589',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], - ['krightstr_2590',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], - ['kroomstr_2591',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], - ['ksamsung36bitmark_2592',['kSamsung36BitMark',['../ir__Samsung_8cpp.html#a2e9bc50c6320d7a1244713b4a1647e71',1,'ir_Samsung.cpp']]], - ['ksamsung36bits_2593',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], - ['ksamsung36hdrmark_2594',['kSamsung36HdrMark',['../ir__Samsung_8cpp.html#a47c0e69d6e21597ea15dc613c58861b6',1,'ir_Samsung.cpp']]], - ['ksamsung36hdrspace_2595',['kSamsung36HdrSpace',['../ir__Samsung_8cpp.html#a4761b62640c0a56ee641c9077fd800dd',1,'ir_Samsung.cpp']]], - ['ksamsung36onespace_2596',['kSamsung36OneSpace',['../ir__Samsung_8cpp.html#a3a913fe500926cf448d7408303e3698c',1,'ir_Samsung.cpp']]], - ['ksamsung36zerospace_2597',['kSamsung36ZeroSpace',['../ir__Samsung_8cpp.html#ac24972846bc1a2240537b212f5aa55d6',1,'ir_Samsung.cpp']]], - ['ksamsungacauto_2598',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], - ['ksamsungacautotemp_2599',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], - ['ksamsungacbeepoffset_2600',['kSamsungAcBeepOffset',['../ir__Samsung_8h.html#a12ae1e43d05d39c39d335c97223e003e',1,'ir_Samsung.h']]], - ['ksamsungacbitmark_2601',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], - ['ksamsungacbits_2602',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], - ['ksamsungacbreezeoffset_2603',['kSamsungAcBreezeOffset',['../ir__Samsung_8h.html#a31d5463b3819fe41ce078b085c395a40',1,'ir_Samsung.h']]], - ['ksamsungacbreezeon_2604',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], - ['ksamsungacbreezesize_2605',['kSamsungAcBreezeSize',['../ir__Samsung_8h.html#a1f6ec492aa58cb704147213e3b6f9f24',1,'ir_Samsung.h']]], - ['ksamsungacclean10offset_2606',['kSamsungAcClean10Offset',['../ir__Samsung_8h.html#a0982038a8c3e27972e69b83c350a0ff3',1,'ir_Samsung.h']]], - ['ksamsungacclean11offset_2607',['kSamsungAcClean11Offset',['../ir__Samsung_8h.html#a87666330f9a410ced00bf15c5f22daf2',1,'ir_Samsung.h']]], - ['ksamsungaccool_2608',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], - ['ksamsungacdefaultrepeat_2609',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], - ['ksamsungacdisplayoffset_2610',['kSamsungAcDisplayOffset',['../ir__Samsung_8h.html#af47c9229cbe569b93ad5f4986c4484ab',1,'ir_Samsung.h']]], - ['ksamsungacdry_2611',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], - ['ksamsungacextendedbits_2612',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], - ['ksamsungacextendedstatelength_2613',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], - ['ksamsungacfan_2614',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], - ['ksamsungacfanauto_2615',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], - ['ksamsungacfanauto2_2616',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], - ['ksamsungacfanhigh_2617',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], - ['ksamsungacfanlow_2618',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], - ['ksamsungacfanmed_2619',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], - ['ksamsungacfanoffest_2620',['kSamsungAcFanOffest',['../ir__Samsung_8h.html#a1dd4a351c1a036972f741fbdafb05a7e',1,'ir_Samsung.h']]], - ['ksamsungacfansize_2621',['kSamsungAcFanSize',['../ir__Samsung_8h.html#a5b055e9951e23ba44bf1fdeed805b332',1,'ir_Samsung.h']]], - ['ksamsungacfanturbo_2622',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], - ['ksamsungachdrmark_2623',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], - ['ksamsungachdrspace_2624',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], - ['ksamsungacheat_2625',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], - ['ksamsungacionoffset_2626',['kSamsungAcIonOffset',['../ir__Samsung_8h.html#aa7bbd222553072c092158421d1b9977f',1,'ir_Samsung.h']]], - ['ksamsungacmaxtemp_2627',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], - ['ksamsungacmintemp_2628',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], - ['ksamsungacmodeoffset_2629',['kSamsungAcModeOffset',['../ir__Samsung_8h.html#a64b2aceb5c0d4dbea2d4697efe65aef2',1,'ir_Samsung.h']]], - ['ksamsungaconespace_2630',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], - ['ksamsungacpower1offset_2631',['kSamsungAcPower1Offset',['../ir__Samsung_8h.html#aa6a4ff05acfabf24e4dfc126e583c46c',1,'ir_Samsung.h']]], - ['ksamsungacpower6offset_2632',['kSamsungAcPower6Offset',['../ir__Samsung_8h.html#a90591c7d6069d81493f894328d595187',1,'ir_Samsung.h']]], - ['ksamsungacpower6size_2633',['kSamsungAcPower6Size',['../ir__Samsung_8h.html#ace0a7a2cfedbb77d05de53abc5906992',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10offset_2634',['kSamsungAcPowerful10Offset',['../ir__Samsung_8h.html#a7f92d734af799e058723e898d3ebdd30',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10on_2635',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10size_2636',['kSamsungAcPowerful10Size',['../ir__Samsung_8h.html#a19ede17e420f68ea552497461e69006a',1,'ir_Samsung.h']]], - ['ksamsungacpowerfulmask8_2637',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], - ['ksamsungacpowersection_2638',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], - ['ksamsungacquiet1offset_2639',['kSamsungAcQuiet1Offset',['../ir__Samsung_8h.html#ab029485b433f7eef6413d8194790c566',1,'ir_Samsung.h']]], - ['ksamsungacquiet5offset_2640',['kSamsungAcQuiet5Offset',['../ir__Samsung_8h.html#ae10abd66772da9bab4ba266f29e7ec75',1,'ir_Samsung.h']]], - ['ksamsungacsectiongap_2641',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionlength_2642',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], - ['ksamsungacsectionmark_2643',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], - ['ksamsungacsections_2644',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionspace_2645',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], - ['ksamsungacstatelength_2646',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], - ['ksamsungacswingmove_2647',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], - ['ksamsungacswingoffset_2648',['kSamsungAcSwingOffset',['../ir__Samsung_8h.html#ab71772d77c56cf4d01f3ce4ab751a55c',1,'ir_Samsung.h']]], - ['ksamsungacswingsize_2649',['kSamsungAcSwingSize',['../ir__Samsung_8h.html#a1b50618058108826f9103f46bf7677ee',1,'ir_Samsung.h']]], - ['ksamsungacswingstop_2650',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], - ['ksamsungaczerospace_2651',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], - ['ksamsungbitmark_2652',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], - ['ksamsungbitmarkticks_2653',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], - ['ksamsungbits_2654',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], - ['ksamsunghdrmark_2655',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], - ['ksamsunghdrmarkticks_2656',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspace_2657',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspaceticks_2658',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], - ['ksamsungmingap_2659',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], - ['ksamsungmingapticks_2660',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelength_2661',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelengthticks_2662',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], - ['ksamsungonespace_2663',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], - ['ksamsungonespaceticks_2664',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], - ['ksamsungrptspace_2665',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], - ['ksamsungrptspaceticks_2666',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], - ['ksamsungtick_2667',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], - ['ksamsungzerospace_2668',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], - ['ksamsungzerospaceticks_2669',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], - ['ksanyoacauto_2670',['kSanyoAcAuto',['../ir__Sanyo_8h.html#a80d3d83c1b85f8c44dd93cc44b30accb',1,'ir_Sanyo.h']]], - ['ksanyoacbeepbit_2671',['kSanyoAcBeepBit',['../ir__Sanyo_8h.html#a4f56a563d852b45c754a190c2ac5e428',1,'ir_Sanyo.h']]], - ['ksanyoacbitmark_2672',['kSanyoAcBitMark',['../ir__Sanyo_8cpp.html#af738984c8164ff32f3bd91b9263f55c2',1,'ir_Sanyo.cpp']]], - ['ksanyoacbits_2673',['kSanyoAcBits',['../IRremoteESP8266_8h.html#ad3931645167deda3fd0ec72ba33a4034',1,'IRremoteESP8266.h']]], - ['ksanyoaccool_2674',['kSanyoAcCool',['../ir__Sanyo_8h.html#ad6a49260b9097a821cf29fe87796456d',1,'ir_Sanyo.h']]], - ['ksanyoacdry_2675',['kSanyoAcDry',['../ir__Sanyo_8h.html#a5e0645e5f69dc627d130e4bca1751b5c',1,'ir_Sanyo.h']]], - ['ksanyoacfanauto_2676',['kSanyoAcFanAuto',['../ir__Sanyo_8h.html#a7bc8d0e04bdf32a3d7147a8ee4f0fc9c',1,'ir_Sanyo.h']]], - ['ksanyoacfanhigh_2677',['kSanyoAcFanHigh',['../ir__Sanyo_8h.html#a34a75f871c7b2648641830bf8210be0b',1,'ir_Sanyo.h']]], - ['ksanyoacfanlow_2678',['kSanyoAcFanLow',['../ir__Sanyo_8h.html#a3a0bfc84856de44bc2bce7cb63f61414',1,'ir_Sanyo.h']]], - ['ksanyoacfanmedium_2679',['kSanyoAcFanMedium',['../ir__Sanyo_8h.html#a54189bf27e6cbcbe03b9898985a3486f',1,'ir_Sanyo.h']]], - ['ksanyoacfanoffset_2680',['kSanyoAcFanOffset',['../ir__Sanyo_8h.html#a5dcb4309b7d4178326c4e4658e210a73',1,'ir_Sanyo.h']]], - ['ksanyoacfansize_2681',['kSanyoAcFanSize',['../ir__Sanyo_8h.html#a6e54dd7ae41c812df4796ecf375c2c71',1,'ir_Sanyo.h']]], - ['ksanyoacfreq_2682',['kSanyoAcFreq',['../ir__Sanyo_8cpp.html#a85397f4fba50f4409467435ae22a003c',1,'ir_Sanyo.cpp']]], - ['ksanyoacgap_2683',['kSanyoAcGap',['../ir__Sanyo_8cpp.html#a20213c79f423cb292a55be3618ff1f2f',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrmark_2684',['kSanyoAcHdrMark',['../ir__Sanyo_8cpp.html#a0b1b08bcc921bbbe6686c699c1aaad2e',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrspace_2685',['kSanyoAcHdrSpace',['../ir__Sanyo_8cpp.html#a8c09cce29f3791eb80c1546be5e5535c',1,'ir_Sanyo.cpp']]], - ['ksanyoacheat_2686',['kSanyoAcHeat',['../ir__Sanyo_8h.html#aacdcd75fdf538881354662454c95e8b5',1,'ir_Sanyo.h']]], - ['ksanyoachourmax_2687',['kSanyoAcHourMax',['../ir__Sanyo_8h.html#aeaa1ba34ec4f7bb2e66e1c63e78ad864',1,'ir_Sanyo.h']]], - ['ksanyoacmodebyte_2688',['kSanyoAcModeByte',['../ir__Sanyo_8h.html#a2b8bfab823ffa803882f82488beedb6e',1,'ir_Sanyo.h']]], - ['ksanyoacmodeoffset_2689',['kSanyoAcModeOffset',['../ir__Sanyo_8h.html#af68ceb9c03c1f16721a78282f991c01f',1,'ir_Sanyo.h']]], - ['ksanyoacmodesize_2690',['kSanyoAcModeSize',['../ir__Sanyo_8h.html#a31431aea23e2ef7fa5068106fecf2e71',1,'ir_Sanyo.h']]], - ['ksanyoacoffhourbyte_2691',['kSanyoAcOffHourByte',['../ir__Sanyo_8h.html#aa122a05c7ff4d48a6ff39e6c96df2bf7',1,'ir_Sanyo.h']]], - ['ksanyoacoffhouroffset_2692',['kSanyoAcOffHourOffset',['../ir__Sanyo_8h.html#a1d71c55542cbe93780e4ab79ea7496f5',1,'ir_Sanyo.h']]], - ['ksanyoacoffhoursize_2693',['kSanyoAcOffHourSize',['../ir__Sanyo_8h.html#ade4bd179d3e1267c209e4f00e99d2a42',1,'ir_Sanyo.h']]], - ['ksanyoacofftimerenablebit_2694',['kSanyoAcOffTimerEnableBit',['../ir__Sanyo_8h.html#aff3ac8c772b93abda345c949ef9dc0c4',1,'ir_Sanyo.h']]], - ['ksanyoaconespace_2695',['kSanyoAcOneSpace',['../ir__Sanyo_8cpp.html#ac9e641f6e3e07a8938ed28a656281122',1,'ir_Sanyo.cpp']]], - ['ksanyoacpowerbyte_2696',['kSanyoAcPowerByte',['../ir__Sanyo_8h.html#abd4216fae2d979b5ae96c6356d524e73',1,'ir_Sanyo.h']]], - ['ksanyoacpoweroff_2697',['kSanyoAcPowerOff',['../ir__Sanyo_8h.html#a1777504e5870f0e29846cda7a17bb3fd',1,'ir_Sanyo.h']]], - ['ksanyoacpoweroffset_2698',['kSanyoAcPowerOffset',['../ir__Sanyo_8h.html#a7d91d3056aa632167afa097387343e82',1,'ir_Sanyo.h']]], - ['ksanyoacpoweron_2699',['kSanyoAcPowerOn',['../ir__Sanyo_8h.html#a6e3da0779d665696d36a03b445ca82ea',1,'ir_Sanyo.h']]], - ['ksanyoacpowersize_2700',['kSanyoAcPowerSize',['../ir__Sanyo_8h.html#a7ca17d7117f58272a70107f9561aba3b',1,'ir_Sanyo.h']]], - ['ksanyoacsensorbit_2701',['kSanyoAcSensorBit',['../ir__Sanyo_8h.html#abcba48158aa47836c1267b36496b36ef',1,'ir_Sanyo.h']]], - ['ksanyoacsensorbyte_2702',['kSanyoAcSensorByte',['../ir__Sanyo_8h.html#a1b7ac42c4cda06c4ea7f3864baeda82f',1,'ir_Sanyo.h']]], - ['ksanyoacsleepbit_2703',['kSanyoAcSleepBit',['../ir__Sanyo_8h.html#a99f8c1e7171ef1c3cff03aaf9297c72f',1,'ir_Sanyo.h']]], - ['ksanyoacsleepbyte_2704',['kSanyoAcSleepByte',['../ir__Sanyo_8h.html#a96e589d89b00b9b6c8fe23908ee81b5c',1,'ir_Sanyo.h']]], - ['ksanyoacstatelength_2705',['kSanyoAcStateLength',['../IRremoteESP8266_8h.html#ae3128c987a1571fb6b021ffe30079663',1,'IRremoteESP8266.h']]], - ['ksanyoacswingvauto_2706',['kSanyoAcSwingVAuto',['../ir__Sanyo_8h.html#afce45a19ba8cdff528dac0ee8b13bb66',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhigh_2707',['kSanyoAcSwingVHigh',['../ir__Sanyo_8h.html#a4cdea5c3718a4a869d1e914a7a8ee2af',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhighest_2708',['kSanyoAcSwingVHighest',['../ir__Sanyo_8h.html#a64b28da09adf0416c49640264ccb760b',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlow_2709',['kSanyoAcSwingVLow',['../ir__Sanyo_8h.html#aaef1fa9d1ef8f92f59525b09175f6048',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowermiddle_2710',['kSanyoAcSwingVLowerMiddle',['../ir__Sanyo_8h.html#a11141a0d31bca64561eed3be5698a5a6',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowest_2711',['kSanyoAcSwingVLowest',['../ir__Sanyo_8h.html#a3d97c9b2da1c26ba5943996f76aa4f3f',1,'ir_Sanyo.h']]], - ['ksanyoacswingvoffset_2712',['kSanyoAcSwingVOffset',['../ir__Sanyo_8h.html#ab77e7e538ea741ec74b1a32ec9310adc',1,'ir_Sanyo.h']]], - ['ksanyoacswingvsize_2713',['kSanyoAcSwingVSize',['../ir__Sanyo_8h.html#a58a723fb5b3131be518f2df68f791e2e',1,'ir_Sanyo.h']]], - ['ksanyoacswingvuppermiddle_2714',['kSanyoAcSwingVUpperMiddle',['../ir__Sanyo_8h.html#a314f05625e1985042dc6e2a4866c51df',1,'ir_Sanyo.h']]], - ['ksanyoactempbyte_2715',['kSanyoAcTempByte',['../ir__Sanyo_8h.html#a10009a12f71c74498ff4b75f92f6840d',1,'ir_Sanyo.h']]], - ['ksanyoactempdelta_2716',['kSanyoAcTempDelta',['../ir__Sanyo_8h.html#ac0991e0a826fae8228e1064d5d803edc',1,'ir_Sanyo.h']]], - ['ksanyoactempmax_2717',['kSanyoAcTempMax',['../ir__Sanyo_8h.html#aa4222421c4571c9e34d39f01a2c71394',1,'ir_Sanyo.h']]], - ['ksanyoactempmin_2718',['kSanyoAcTempMin',['../ir__Sanyo_8h.html#a59fb387ec5657ba8ff301b9198703b9a',1,'ir_Sanyo.h']]], - ['ksanyoactempoffset_2719',['kSanyoAcTempOffset',['../ir__Sanyo_8h.html#ad4115b1184d2f163d9c333dbe2f7b84b',1,'ir_Sanyo.h']]], - ['ksanyoactempsize_2720',['kSanyoAcTempSize',['../ir__Sanyo_8h.html#a454c5e61ae57c009507501d0ca94faae',1,'ir_Sanyo.h']]], - ['ksanyoaczerospace_2721',['kSanyoAcZeroSpace',['../ir__Sanyo_8cpp.html#a9a600476008e4462df534ee98c732c1b',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461addressbits_2722',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], - ['ksanyolc7461addressmask_2723',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bitmark_2724',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bits_2725',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandbits_2726',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandmask_2727',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrmark_2728',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrspace_2729',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mincommandlength_2730',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mingap_2731',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461onespace_2732',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461zerospace_2733',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bbits_2734',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], - ['ksanyosa8650bdoublespaceusecs_2735',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrmark_2736',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrspace_2737',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bonemark_2738',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650brptlength_2739',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bzeromark_2740',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], - ['ksavestr_2741',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], - ['ksecondsstr_2742',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], - ['ksecondstr_2743',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], - ['ksensorstr_2744',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], - ['ksensortempstr_2745',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], - ['ksetstr_2746',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], - ['ksharpacauto_2747',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], - ['ksharpacbitcleanoffset_2748',['kSharpAcBitCleanOffset',['../ir__Sharp_8h.html#a3460827972f31d05070c638a57782286',1,'ir_Sharp.h']]], - ['ksharpacbitionoffset_2749',['kSharpAcBitIonOffset',['../ir__Sharp_8h.html#a73f967e9950d04941ed9f6815815fb23',1,'ir_Sharp.h']]], - ['ksharpacbitmark_2750',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], - ['ksharpacbits_2751',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], - ['ksharpacbittimerenabled_2752',['kSharpAcBitTimerEnabled',['../ir__Sharp_8h.html#a083863299df4ff081be0add9d5082700',1,'ir_Sharp.h']]], - ['ksharpacbittimertype_2753',['kSharpAcBitTimerType',['../ir__Sharp_8h.html#ad47cf2f20c4589b9cbe6b583d62b4675',1,'ir_Sharp.h']]], - ['ksharpacbyteclean_2754',['kSharpAcByteClean',['../ir__Sharp_8h.html#a2f4a4ddf407413a52d45c955ebd5bcd5',1,'ir_Sharp.h']]], - ['ksharpacbytefan_2755',['kSharpAcByteFan',['../ir__Sharp_8h.html#a24139aa535ca54dcf45558da5ee2ac56',1,'ir_Sharp.h']]], - ['ksharpacbyteion_2756',['kSharpAcByteIon',['../ir__Sharp_8h.html#aaceee11c539050ba5ac368b9612131a4',1,'ir_Sharp.h']]], - ['ksharpacbytemode_2757',['kSharpAcByteMode',['../ir__Sharp_8h.html#af7d8a2ab79ae4f2ad48e569576fd34e8',1,'ir_Sharp.h']]], - ['ksharpacbytepowerspecial_2758',['kSharpAcBytePowerSpecial',['../ir__Sharp_8h.html#a44d180bd3babec15143ba8ea8aa18906',1,'ir_Sharp.h']]], - ['ksharpacbytespecial_2759',['kSharpAcByteSpecial',['../ir__Sharp_8h.html#a78ba1ef4993661f9dfaad776dff1b43e',1,'ir_Sharp.h']]], - ['ksharpacbyteswing_2760',['kSharpAcByteSwing',['../ir__Sharp_8h.html#aee580a3c6cfd75f75f46852d0f3df0db',1,'ir_Sharp.h']]], - ['ksharpacbytetemp_2761',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], - ['ksharpacbytetimer_2762',['kSharpAcByteTimer',['../ir__Sharp_8h.html#af2fc9b6abae8ca6ca0d01b8c924386be',1,'ir_Sharp.h']]], - ['ksharpaccool_2763',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], - ['ksharpacdefaultrepeat_2764',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], - ['ksharpacdry_2765',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], - ['ksharpacfanauto_2766',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], - ['ksharpacfanhigh_2767',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], - ['ksharpacfanmax_2768',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], - ['ksharpacfanmed_2769',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], - ['ksharpacfanmin_2770',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], - ['ksharpacfanoffset_2771',['kSharpAcFanOffset',['../ir__Sharp_8h.html#ae95f02db8d9799ce726f5f467922a36c',1,'ir_Sharp.h']]], - ['ksharpacfansize_2772',['kSharpAcFanSize',['../ir__Sharp_8h.html#a2640f5c4eb0b4e62b9e2124a1fbfb6d2',1,'ir_Sharp.h']]], - ['ksharpacgap_2773',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], - ['ksharpachdrmark_2774',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], - ['ksharpachdrspace_2775',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], - ['ksharpacheat_2776',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], - ['ksharpacmaxtemp_2777',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], - ['ksharpacmintemp_2778',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], - ['ksharpacmodesize_2779',['kSharpAcModeSize',['../ir__Sharp_8h.html#a7dfcf91a08bc37884cc4882c60004736',1,'ir_Sharp.h']]], - ['ksharpacofftimertype_2780',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], - ['ksharpaconespace_2781',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], - ['ksharpacontimertype_2782',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], - ['ksharpacpoweroff_2783',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], - ['ksharpacpoweron_2784',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], - ['ksharpacpoweronfromoff_2785',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoff_2786',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoffset_2787',['kSharpAcPowerSetSpecialOffset',['../ir__Sharp_8h.html#a0603455573e1dd203a5f6718efc12085',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialon_2788',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], - ['ksharpacpowerspecialsize_2789',['kSharpAcPowerSpecialSize',['../ir__Sharp_8h.html#a233d545e942de27ec9e96d0d5e7afdb3',1,'ir_Sharp.h']]], - ['ksharpacpowertimersetting_2790',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], - ['ksharpacpowerunknown_2791',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], - ['ksharpacspecialfan_2792',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], - ['ksharpacspecialpower_2793',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], - ['ksharpacspecialswing_2794',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], - ['ksharpacspecialtempecono_2795',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], - ['ksharpacspecialtimer_2796',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], - ['ksharpacspecialtimerhalfhour_2797',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], - ['ksharpacspecialturbo_2798',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], - ['ksharpacstatelength_2799',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], - ['ksharpacswingnotoggle_2800',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], - ['ksharpacswingoffset_2801',['kSharpAcSwingOffset',['../ir__Sharp_8h.html#a61c5356e645867fa2eeda02c83e5b9ae',1,'ir_Sharp.h']]], - ['ksharpacswingsize_2802',['kSharpAcSwingSize',['../ir__Sharp_8h.html#aafec87d2ddea0fd56d176f1b5f80a6fa',1,'ir_Sharp.h']]], - ['ksharpacswingtoggle_2803',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], - ['ksharpactimerhoursmax_2804',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoff_2805',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoffset_2806',['kSharpAcTimerHoursOffset',['../ir__Sharp_8h.html#aeb8d6ca49ba029bdb3663ff6b9c2cc4d',1,'ir_Sharp.h']]], - ['ksharpactimerhourssize_2807',['kSharpAcTimerHoursSize',['../ir__Sharp_8h.html#a965ed2ef8ba32a325ec41a351d88c17d',1,'ir_Sharp.h']]], - ['ksharpactimerincrement_2808',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], - ['ksharpaczerospace_2809',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], - ['ksharpaddressbits_2810',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], - ['ksharpaddressmask_2811',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], - ['ksharpbitmark_2812',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], - ['ksharpbitmarkticks_2813',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], - ['ksharpbits_2814',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], - ['ksharpcommandbits_2815',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], - ['ksharpcommandmask_2816',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], - ['ksharpgap_2817',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], - ['ksharpgapticks_2818',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], - ['ksharponespace_2819',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], - ['ksharponespaceticks_2820',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], - ['ksharptick_2821',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], - ['ksharptogglemask_2822',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], - ['ksharpzerospace_2823',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], - ['ksharpzerospaceticks_2824',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], - ['ksherwoodbits_2825',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], - ['ksherwoodminrepeat_2826',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], - ['ksilentstr_2827',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], - ['ksinglerepeat_2828',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], - ['ksleepstr_2829',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], - ['ksleeptimerstr_2830',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], - ['kslowstr_2831',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], - ['ksony12bits_2832',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], - ['ksony15bits_2833',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], - ['ksony20bits_2834',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], - ['ksonyaltfreq_2835',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], - ['ksonyhdrmark_2836',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], - ['ksonyhdrmarkticks_2837',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], - ['ksonyminbits_2838',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], - ['ksonymingap_2839',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], - ['ksonymingapticks_2840',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], - ['ksonyminrepeat_2841',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], - ['ksonyonemark_2842',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], - ['ksonyonemarkticks_2843',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], - ['ksonyrptlength_2844',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], - ['ksonyrptlengthticks_2845',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], - ['ksonyspace_2846',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], - ['ksonyspaceticks_2847',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], - ['ksonystdfreq_2848',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], - ['ksonytick_2849',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], - ['ksonyzeromark_2850',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], - ['ksonyzeromarkticks_2851',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], - ['kspace_2852',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], - ['kspacelbracestr_2853',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], - ['kspacestate_2854',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], - ['kstartoffset_2855',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], - ['kstartstr_2856',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], - ['kstatesizemax_2857',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], - ['kstepstr_2858',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], - ['kstopstate_2859',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], - ['kstopstr_2860',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], - ['ksuperstr_2861',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], - ['kswinghstr_2862',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], - ['kswingstr_2863',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], - ['kswingvmodestr_2864',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], - ['kswingvstr_2865',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], - ['kswingvtogglestr_2866',['kSwingVToggleStr',['../ir__Midea_8h.html#acb6aaab538b7aeb884e9c0fdb46cea90',1,'kSwingVToggleStr(): ir_Midea.h'],['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): ir_Midea.h']]], - ['ksymphonybits_2867',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], - ['ksymphonydefaultrepeat_2868',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], - ['ksymphonyfootergap_2869',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], - ['ksymphonyonemark_2870',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], - ['ksymphonyonespace_2871',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], - ['ksymphonyzeromark_2872',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], - ['ksymphonyzerospace_2873',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], - ['ktcl112acauto_2874',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], - ['ktcl112acbiteconooffset_2875',['kTcl112AcBitEconoOffset',['../ir__Tcl_8h.html#a97c8948de72d702b859a7abccfbc423e',1,'ir_Tcl.h']]], - ['ktcl112acbithealthoffset_2876',['kTcl112AcBitHealthOffset',['../ir__Tcl_8h.html#a2acb2c5cd2f8b729047f9eecf93f96af',1,'ir_Tcl.h']]], - ['ktcl112acbitlightoffset_2877',['kTcl112AcBitLightOffset',['../ir__Tcl_8h.html#ad87c878f7a30a05418a5babfc52c0e9e',1,'ir_Tcl.h']]], - ['ktcl112acbitmark_2878',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], - ['ktcl112acbits_2879',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], - ['ktcl112acbitswinghoffset_2880',['kTcl112AcBitSwingHOffset',['../ir__Tcl_8h.html#ad807894f92249e44d1725f18de013369',1,'ir_Tcl.h']]], - ['ktcl112acbitturbooffset_2881',['kTcl112AcBitTurboOffset',['../ir__Tcl_8h.html#a7a6e09c1b4620e96820b3b3c54fb0e18',1,'ir_Tcl.h']]], - ['ktcl112accool_2882',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], - ['ktcl112acdefaultrepeat_2883',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], - ['ktcl112acdry_2884',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], - ['ktcl112acfan_2885',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], - ['ktcl112acfanauto_2886',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], - ['ktcl112acfanhigh_2887',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], - ['ktcl112acfanlow_2888',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], - ['ktcl112acfanmed_2889',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], - ['ktcl112acfansize_2890',['kTcl112AcFanSize',['../ir__Tcl_8h.html#a802bbb6258edf6dcdd05a383db28e9d3',1,'ir_Tcl.h']]], - ['ktcl112acgap_2891',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], - ['ktcl112achalfdegreeoffset_2892',['kTcl112AcHalfDegreeOffset',['../ir__Tcl_8h.html#a1ba7d7fa8df2243330eafce097209651',1,'ir_Tcl.h']]], - ['ktcl112achdrmark_2893',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], - ['ktcl112achdrmarktolerance_2894',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], - ['ktcl112achdrspace_2895',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], - ['ktcl112acheat_2896',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], - ['ktcl112acmodesize_2897',['kTcl112AcModeSize',['../ir__Tcl_8h.html#a07e49881d14cb1c84cfbf3695ae64580',1,'ir_Tcl.h']]], - ['ktcl112aconespace_2898',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], - ['ktcl112acpoweroffset_2899',['kTcl112AcPowerOffset',['../ir__Tcl_8h.html#ad36204b310ec8a069f631322d806aa7f',1,'ir_Tcl.h']]], - ['ktcl112acstatelength_2900',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], - ['ktcl112acswingvoff_2901',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], - ['ktcl112acswingvoffset_2902',['kTcl112AcSwingVOffset',['../ir__Tcl_8h.html#ab0412b0d865eaf788a5672300575b1d8',1,'ir_Tcl.h']]], - ['ktcl112acswingvon_2903',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], - ['ktcl112acswingvsize_2904',['kTcl112AcSwingVSize',['../ir__Tcl_8h.html#a7bacb40b18b280da13b2d1b781c825e5',1,'ir_Tcl.h']]], - ['ktcl112actempmax_2905',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], - ['ktcl112actempmin_2906',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], - ['ktcl112actolerance_2907',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], - ['ktcl112aczerospace_2908',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], - ['ktechnibelacbitmark_2909',['kTechnibelAcBitMark',['../ir__Technibel_8cpp.html#a82529fd6c6fd51f036b1930613ed5e9b',1,'ir_Technibel.cpp']]], - ['ktechnibelacbits_2910',['kTechnibelAcBits',['../IRremoteESP8266_8h.html#a0c4bc77a2443037598940b955c83eb82',1,'IRremoteESP8266.h']]], - ['ktechnibelacchecksumoffset_2911',['kTechnibelAcChecksumOffset',['../ir__Technibel_8h.html#a9b8300844129b440eb827d7bb9c23011',1,'ir_Technibel.h']]], - ['ktechnibelacchecksumsize_2912',['kTechnibelAcChecksumSize',['../ir__Technibel_8h.html#a37be9b31a3b56a6fab83d7e101b788dc',1,'ir_Technibel.h']]], - ['ktechnibelaccool_2913',['kTechnibelAcCool',['../ir__Technibel_8h.html#aa0a74f362c3d9160660763d89195b387',1,'ir_Technibel.h']]], - ['ktechnibelacdefaultrepeat_2914',['kTechnibelAcDefaultRepeat',['../IRremoteESP8266_8h.html#a0e797e69cca806e73c902f5d9dfe1bf1',1,'IRremoteESP8266.h']]], - ['ktechnibelacdry_2915',['kTechnibelAcDry',['../ir__Technibel_8h.html#afb6b5b6b2e88fb06f1706c57e03672d8',1,'ir_Technibel.h']]], - ['ktechnibelacfan_2916',['kTechnibelAcFan',['../ir__Technibel_8h.html#a9b9c7971f9f76dbb8b742727f48408d6',1,'ir_Technibel.h']]], - ['ktechnibelacfanchangebit_2917',['kTechnibelAcFanChangeBit',['../ir__Technibel_8h.html#a50269bdab460a8fef93aecf331e8fef1',1,'ir_Technibel.h']]], - ['ktechnibelacfanhigh_2918',['kTechnibelAcFanHigh',['../ir__Technibel_8h.html#a7ec8f7e2911b0a8db8714aa06377a017',1,'ir_Technibel.h']]], - ['ktechnibelacfanlow_2919',['kTechnibelAcFanLow',['../ir__Technibel_8h.html#a3be4c4dbdfe0ef1ab7f7f2308ee5f906',1,'ir_Technibel.h']]], - ['ktechnibelacfanmedium_2920',['kTechnibelAcFanMedium',['../ir__Technibel_8h.html#ae390f138de9e24940a066a75f960ce67',1,'ir_Technibel.h']]], - ['ktechnibelacfanoffset_2921',['kTechnibelAcFanOffset',['../ir__Technibel_8h.html#a737d597c15c66400f8175422d538a7a9',1,'ir_Technibel.h']]], - ['ktechnibelacfansize_2922',['kTechnibelAcFanSize',['../ir__Technibel_8h.html#a29d3d827bd0486f4f1c6c8090bfae7b3',1,'ir_Technibel.h']]], - ['ktechnibelacfooteroffset_2923',['kTechnibelAcFooterOffset',['../ir__Technibel_8h.html#a99ec40b7785d37b9e2b1a44dd4f07aaa',1,'ir_Technibel.h']]], - ['ktechnibelacfootersize_2924',['kTechnibelAcFooterSize',['../ir__Technibel_8h.html#a8f2d29928978641a19b262a05aa7adbb',1,'ir_Technibel.h']]], - ['ktechnibelacfreq_2925',['kTechnibelAcFreq',['../ir__Technibel_8cpp.html#ab5e0c7c1bd254eb3dff6e81153cdce95',1,'ir_Technibel.cpp']]], - ['ktechnibelacgap_2926',['kTechnibelAcGap',['../ir__Technibel_8cpp.html#a9e400dd55fa32e3c91880a55a87e1e5e',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrmark_2927',['kTechnibelAcHdrMark',['../ir__Technibel_8cpp.html#af72f1210a259c1dde24fc39e6b026521',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrspace_2928',['kTechnibelAcHdrSpace',['../ir__Technibel_8cpp.html#a1703e3c4105c858b4534b0e40302cfae',1,'ir_Technibel.cpp']]], - ['ktechnibelacheader_2929',['kTechnibelAcHeader',['../ir__Technibel_8h.html#a11b2a3eaded5d7890c65f8eaa7c445a6',1,'ir_Technibel.h']]], - ['ktechnibelacheaderoffset_2930',['kTechnibelAcHeaderOffset',['../ir__Technibel_8h.html#a750df711adeb31d902ca20b572c6f541',1,'ir_Technibel.h']]], - ['ktechnibelacheadersize_2931',['kTechnibelAcHeaderSize',['../ir__Technibel_8h.html#a8024c7db1c3883b6d3a0aea1c03a365f',1,'ir_Technibel.h']]], - ['ktechnibelacheat_2932',['kTechnibelAcHeat',['../ir__Technibel_8h.html#a517fa48501655e8d4f0f86146a8761d3',1,'ir_Technibel.h']]], - ['ktechnibelachourssize_2933',['kTechnibelAcHoursSize',['../ir__Technibel_8h.html#a9f4657bf4664a1fdcb4c009a663b03b5',1,'ir_Technibel.h']]], - ['ktechnibelacmodeoffset_2934',['kTechnibelAcModeOffset',['../ir__Technibel_8h.html#a1ee37af3cf79f33b6e2278823711432b',1,'ir_Technibel.h']]], - ['ktechnibelacmodesize_2935',['kTechnibelAcModeSize',['../ir__Technibel_8h.html#ad693a1007876dca52ae3bb8394517fc1',1,'ir_Technibel.h']]], - ['ktechnibelaconespace_2936',['kTechnibelAcOneSpace',['../ir__Technibel_8cpp.html#ae70ce0b82874c4bc0797f510353e2cc3',1,'ir_Technibel.cpp']]], - ['ktechnibelacpowerbit_2937',['kTechnibelAcPowerBit',['../ir__Technibel_8h.html#ab3582b78d197a55b5d85c219c95d0d2d',1,'ir_Technibel.h']]], - ['ktechnibelacresetstate_2938',['kTechnibelAcResetState',['../ir__Technibel_8h.html#a1c526f7f53f689c095c70687d6bd20ee',1,'ir_Technibel.h']]], - ['ktechnibelacsleepbit_2939',['kTechnibelAcSleepBit',['../ir__Technibel_8h.html#a76ba7668a44d61a98b46f993dc4b3df9',1,'ir_Technibel.h']]], - ['ktechnibelacswingbit_2940',['kTechnibelAcSwingBit',['../ir__Technibel_8h.html#a483bc46b705db0606c05c4e6d898284b',1,'ir_Technibel.h']]], - ['ktechnibelactempchangebit_2941',['kTechnibelAcTempChangeBit',['../ir__Technibel_8h.html#a1790aed6a7ac25672503a7d08390712c',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxc_2942',['kTechnibelAcTempMaxC',['../ir__Technibel_8h.html#a141efb22c7ac16c9218ecfde9577b132',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxf_2943',['kTechnibelAcTempMaxF',['../ir__Technibel_8h.html#a048b6c574309291de654ee0340ffbe3c',1,'ir_Technibel.h']]], - ['ktechnibelactempminc_2944',['kTechnibelAcTempMinC',['../ir__Technibel_8h.html#a82962d65e7835dc589bd2a9ace171de7',1,'ir_Technibel.h']]], - ['ktechnibelactempminf_2945',['kTechnibelAcTempMinF',['../ir__Technibel_8h.html#acbe3d2e41a0c2bf1b8857ab97cbb7b3c',1,'ir_Technibel.h']]], - ['ktechnibelactempoffset_2946',['kTechnibelAcTempOffset',['../ir__Technibel_8h.html#aec6f8354390ab069325df2b9faf9a07e',1,'ir_Technibel.h']]], - ['ktechnibelactempsize_2947',['kTechnibelAcTempSize',['../ir__Technibel_8h.html#a1762c9688b2295f792021026f630921b',1,'ir_Technibel.h']]], - ['ktechnibelactempunitbit_2948',['kTechnibelAcTempUnitBit',['../ir__Technibel_8h.html#a06f844beb86350bb6f68031d275bddb7',1,'ir_Technibel.h']]], - ['ktechnibelactimerchangebit_2949',['kTechnibelAcTimerChangeBit',['../ir__Technibel_8h.html#af1ccda6403e9afda03e4c18d99fbae55',1,'ir_Technibel.h']]], - ['ktechnibelactimerenablebit_2950',['kTechnibelAcTimerEnableBit',['../ir__Technibel_8h.html#a5d68f5b246870a37d173eba04e510f7a',1,'ir_Technibel.h']]], - ['ktechnibelactimerhoursoffset_2951',['kTechnibelAcTimerHoursOffset',['../ir__Technibel_8h.html#a6f4c74a83e3734474d84dc305f975cd1',1,'ir_Technibel.h']]], - ['ktechnibelactimermax_2952',['kTechnibelAcTimerMax',['../ir__Technibel_8h.html#af689f2686034aa45b19be75077a0baa6',1,'ir_Technibel.h']]], - ['ktechnibelaczerospace_2953',['kTechnibelAcZeroSpace',['../ir__Technibel_8cpp.html#a28f5833aa7529badc4785fac661974b4',1,'ir_Technibel.cpp']]], - ['ktecoauto_2954',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], - ['ktecobitmark_2955',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], - ['ktecobits_2956',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], - ['ktecocool_2957',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], - ['ktecodefaultrepeat_2958',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], - ['ktecodry_2959',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], - ['ktecofan_2960',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], - ['ktecofanauto_2961',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], - ['ktecofanhigh_2962',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], - ['ktecofanlow_2963',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], - ['ktecofanmed_2964',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], - ['ktecofanoffset_2965',['kTecoFanOffset',['../ir__Teco_8h.html#ae70841ad987ac89abaaf99b11655eaae',1,'ir_Teco.h']]], - ['ktecofansize_2966',['kTecoFanSize',['../ir__Teco_8h.html#a45734d2be952e3faa796d86245eaf241',1,'ir_Teco.h']]], - ['ktecogap_2967',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], - ['ktecohdrmark_2968',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], - ['ktecohdrspace_2969',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], - ['ktecoheat_2970',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], - ['ktecohumidoffset_2971',['kTecoHumidOffset',['../ir__Teco_8h.html#ad95126f6815d24b5d1b38e44677f3d7e',1,'ir_Teco.h']]], - ['ktecolightoffset_2972',['kTecoLightOffset',['../ir__Teco_8h.html#a5dc2cb366974b2baa9f7cbfb26d90415',1,'ir_Teco.h']]], - ['ktecomaxtemp_2973',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], - ['ktecomintemp_2974',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], - ['ktecomodeoffset_2975',['kTecoModeOffset',['../ir__Teco_8h.html#a1aca7a8a2822cd1494dabeda5b11b9be',1,'ir_Teco.h']]], - ['ktecoonespace_2976',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], - ['ktecopoweroffset_2977',['kTecoPowerOffset',['../ir__Teco_8h.html#a4eec88582ed29e424549497deb9eceef',1,'ir_Teco.h']]], - ['ktecoreset_2978',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], - ['ktecosaveoffset_2979',['kTecoSaveOffset',['../ir__Teco_8h.html#a63d5efa7cfc84ee22d3575cc713d1f62',1,'ir_Teco.h']]], - ['ktecosleepoffset_2980',['kTecoSleepOffset',['../ir__Teco_8h.html#ae7da65034a8a84e79ebb1497e56e38fe',1,'ir_Teco.h']]], - ['ktecoswingoffset_2981',['kTecoSwingOffset',['../ir__Teco_8h.html#aaa821eb3ad9a5edadba2b83b6d2094b6',1,'ir_Teco.h']]], - ['ktecotempoffset_2982',['kTecoTempOffset',['../ir__Teco_8h.html#ae887d9c5702d63e4b4fa5250ed5bf0d9',1,'ir_Teco.h']]], - ['ktecotempsize_2983',['kTecoTempSize',['../ir__Teco_8h.html#a635db8dbba35e4326958fca6dfe67603',1,'ir_Teco.h']]], - ['ktecotimerhalfhouroffset_2984',['kTecoTimerHalfHourOffset',['../ir__Teco_8h.html#a2692a59900c10b6da6662fac5a312e04',1,'ir_Teco.h']]], - ['ktecotimeronoffset_2985',['kTecoTimerOnOffset',['../ir__Teco_8h.html#a7bcf79fa5e5280ad35c9a9512b2fdc7f',1,'ir_Teco.h']]], - ['ktecotimertenshoursoffset_2986',['kTecoTimerTensHoursOffset',['../ir__Teco_8h.html#adaa73601e31fa7217d371645d835f0ca',1,'ir_Teco.h']]], - ['ktecotimertenshourssize_2987',['kTecoTimerTensHoursSize',['../ir__Teco_8h.html#a57bf1b777b9b56aad4f224b6bba1218c',1,'ir_Teco.h']]], - ['ktecotimerunithoursoffset_2988',['kTecoTimerUnitHoursOffset',['../ir__Teco_8h.html#ac47fc38319e7e1d90d42c789b806cdbd',1,'ir_Teco.h']]], - ['ktecotimerunithourssize_2989',['kTecoTimerUnitHoursSize',['../ir__Teco_8h.html#a54ac664e32ce0d8b4d8d4d4d459dbc46',1,'ir_Teco.h']]], - ['ktecozerospace_2990',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], - ['ktempdownstr_2991',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], - ['ktempstr_2992',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], - ['ktempupstr_2993',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], - ['kthreeletterdayofweekstr_2994',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], - ['ktimeoutms_2995',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], - ['ktimerstr_2996',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], - ['ktimesep_2997',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], - ['ktogglestr_2998',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], - ['ktolerance_2999',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], - ['ktopstr_3000',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], - ['ktoshibaacauto_3001',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], - ['ktoshibaacbitmark_3002',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], - ['ktoshibaacbits_3003',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitslong_3004',['kToshibaACBitsLong',['../IRremoteESP8266_8h.html#aaf9e746cb8ee9e246f435ba4416a5428',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitsshort_3005',['kToshibaACBitsShort',['../IRremoteESP8266_8h.html#a7483cfe84003b0e24bfa846c240afc4c',1,'IRremoteESP8266.h']]], - ['ktoshibaaccool_3006',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], - ['ktoshibaacdry_3007',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], - ['ktoshibaaceconoon_3008',['kToshibaAcEconoOn',['../ir__Toshiba_8h.html#ab95da2ea12790cd327519615dbb48efe',1,'ir_Toshiba.h']]], - ['ktoshibaacecoturbooffset_3009',['kToshibaAcEcoTurboOffset',['../ir__Toshiba_8h.html#a31ba075cf39642d9b35f8db89a724d85',1,'ir_Toshiba.h']]], - ['ktoshibaacecoturbosize_3010',['kToshibaAcEcoTurboSize',['../ir__Toshiba_8h.html#a9750fd2b80ab2e42c1a1cf08dffa559e',1,'ir_Toshiba.h']]], - ['ktoshibaacfan_3011',['kToshibaAcFan',['../ir__Toshiba_8h.html#a4ecdbe268368c9d22a690bc5e394586f',1,'ir_Toshiba.h']]], - ['ktoshibaacfanauto_3012',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmax_3013',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmed_3014',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmin_3015',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], - ['ktoshibaacfanoffset_3016',['kToshibaAcFanOffset',['../ir__Toshiba_8h.html#a8276d25876329968bbf36eac3598972c',1,'ir_Toshiba.h']]], - ['ktoshibaacfansize_3017',['kToshibaAcFanSize',['../ir__Toshiba_8h.html#a5a91c19e799721560a5a9ef77a245888',1,'ir_Toshiba.h']]], - ['ktoshibaachdrmark_3018',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], - ['ktoshibaachdrspace_3019',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], - ['ktoshibaacheat_3020',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], - ['ktoshibaacinvertedlength_3021',['kToshibaAcInvertedLength',['../ir__Toshiba_8h.html#adfc646265ec1e4a03646d7f3b867d65b',1,'ir_Toshiba.h']]], - ['ktoshibaaclengthbyte_3022',['kToshibaAcLengthByte',['../ir__Toshiba_8h.html#a4e3f39edb4cc3a8c7b94ff9cce0e01d0',1,'ir_Toshiba.h']]], - ['ktoshibaaclongmsgbit_3023',['kToshibaAcLongMsgBit',['../ir__Toshiba_8h.html#a71d6e9aef12ec2e176b0035e48d9631e',1,'ir_Toshiba.h']]], - ['ktoshibaacmaxtemp_3024',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], - ['ktoshibaacmingap_3025',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], - ['ktoshibaacminlength_3026',['kToshibaAcMinLength',['../ir__Toshiba_8h.html#a105b24e11afdd102097c81bf050a0f3a',1,'ir_Toshiba.h']]], - ['ktoshibaacminrepeat_3027',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], - ['ktoshibaacmintemp_3028',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], - ['ktoshibaacmodeoffset_3029',['kToshibaAcModeOffset',['../ir__Toshiba_8h.html#a4e097e34b0f2dd9eaacf94d043f726d0',1,'ir_Toshiba.h']]], - ['ktoshibaacmodesize_3030',['kToshibaAcModeSize',['../ir__Toshiba_8h.html#a920d55af8e499a7c2293a7d8180104da',1,'ir_Toshiba.h']]], - ['ktoshibaacoff_3031',['kToshibaAcOff',['../ir__Toshiba_8h.html#a58b75ee3ddd1325bd4da71902d840c1d',1,'ir_Toshiba.h']]], - ['ktoshibaaconespace_3032',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], - ['ktoshibaacshortmsgbit_3033',['kToshibaAcShortMsgBit',['../ir__Toshiba_8h.html#a1b48bb6e1615d2717cb0a5f838d6626b',1,'ir_Toshiba.h']]], - ['ktoshibaacstatelength_3034',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthlong_3035',['kToshibaACStateLengthLong',['../IRremoteESP8266_8h.html#a3c0ebc01f8a61422c26b84e78fcec8f7',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthshort_3036',['kToshibaACStateLengthShort',['../IRremoteESP8266_8h.html#a5fa111fa9d560834605eff2941c0cacc',1,'IRremoteESP8266.h']]], - ['ktoshibaacswingoff_3037',['kToshibaAcSwingOff',['../ir__Toshiba_8h.html#ab556d401c0f8d822a7ef9db5c89d9c87',1,'ir_Toshiba.h']]], - ['ktoshibaacswingoffset_3038',['kToshibaAcSwingOffset',['../ir__Toshiba_8h.html#a3d1ed1acc700aadbb1ecf0d440ecd288',1,'ir_Toshiba.h']]], - ['ktoshibaacswingon_3039',['kToshibaAcSwingOn',['../ir__Toshiba_8h.html#ac5815fcd06c734de58253e64f0b4fb7f',1,'ir_Toshiba.h']]], - ['ktoshibaacswingsize_3040',['kToshibaAcSwingSize',['../ir__Toshiba_8h.html#a249fdb7a8592828208dc308fcef161cf',1,'ir_Toshiba.h']]], - ['ktoshibaacswingstep_3041',['kToshibaAcSwingStep',['../ir__Toshiba_8h.html#aff168c247bc0ea425f805f595cb14012',1,'ir_Toshiba.h']]], - ['ktoshibaactempoffset_3042',['kToshibaAcTempOffset',['../ir__Toshiba_8h.html#a68be75c21288e249d7b44fe9648de91f',1,'ir_Toshiba.h']]], - ['ktoshibaactempsize_3043',['kToshibaAcTempSize',['../ir__Toshiba_8h.html#a89ec8108586e0d5b9f58a160f4db37c8',1,'ir_Toshiba.h']]], - ['ktoshibaacturboon_3044',['kToshibaAcTurboOn',['../ir__Toshiba_8h.html#a8f84e028f12a8fac27366893b65faba7',1,'ir_Toshiba.h']]], - ['ktoshibaaczerospace_3045',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], - ['ktranscoldauto_3046',['kTranscoldAuto',['../ir__Transcold_8h.html#ad764a143afb464fe25fe5d670241ef87',1,'ir_Transcold.h']]], - ['ktranscoldbitmark_3047',['kTranscoldBitMark',['../ir__Transcold_8cpp.html#acc3092436f39e583e4a2e51851543fec',1,'ir_Transcold.cpp']]], - ['ktranscoldbits_3048',['kTranscoldBits',['../IRremoteESP8266_8h.html#abe50a182c1f65378337705d2784e2fdb',1,'IRremoteESP8266.h']]], - ['ktranscoldcmdfan_3049',['kTranscoldCmdFan',['../ir__Transcold_8h.html#a97b418d9a169e5e79f1ee08fd433c62f',1,'ir_Transcold.h']]], - ['ktranscoldcool_3050',['kTranscoldCool',['../ir__Transcold_8h.html#ad1fcfe19e632b7dc8489cee494d48436',1,'ir_Transcold.h']]], - ['ktranscolddefaultrepeat_3051',['kTranscoldDefaultRepeat',['../IRremoteESP8266_8h.html#a17cef98fbfae6a84c0a3e009fb3c31d0',1,'IRremoteESP8266.h']]], - ['ktranscolddry_3052',['kTranscoldDry',['../ir__Transcold_8h.html#a2f185d4fb3a103c15b537557e24aff09',1,'ir_Transcold.h']]], - ['ktranscoldfan_3053',['kTranscoldFan',['../ir__Transcold_8h.html#a7710625ad8497f1baa6a6d4de2ca8be1',1,'ir_Transcold.h']]], - ['ktranscoldfanauto_3054',['kTranscoldFanAuto',['../ir__Transcold_8h.html#a89f832806c8b3d7311070a285fc757ec',1,'ir_Transcold.h']]], - ['ktranscoldfanauto0_3055',['kTranscoldFanAuto0',['../ir__Transcold_8h.html#a813d31eace1b1a6c4d7b2efb5eddb9af',1,'ir_Transcold.h']]], - ['ktranscoldfanfixed_3056',['kTranscoldFanFixed',['../ir__Transcold_8h.html#ac3afe530635393f2d642cecd7e77b131',1,'ir_Transcold.h']]], - ['ktranscoldfanmax_3057',['kTranscoldFanMax',['../ir__Transcold_8h.html#aa5b9f6cd6aa930a856b26e7714575e85',1,'ir_Transcold.h']]], - ['ktranscoldfanmed_3058',['kTranscoldFanMed',['../ir__Transcold_8h.html#ad37f4a57666b991be80e647de6b4ca65',1,'ir_Transcold.h']]], - ['ktranscoldfanmin_3059',['kTranscoldFanMin',['../ir__Transcold_8h.html#a4ddaefba3d91ee7aa25b603f1034af9c',1,'ir_Transcold.h']]], - ['ktranscoldfanoffset_3060',['kTranscoldFanOffset',['../ir__Transcold_8h.html#a421f144fa30a56e32df17cdc06789e5b',1,'ir_Transcold.h']]], - ['ktranscoldfansize_3061',['kTranscoldFanSize',['../ir__Transcold_8h.html#ad64c46058cdb31a0c3dc7d16c542fb7c',1,'ir_Transcold.h']]], - ['ktranscoldfantempcode_3062',['kTranscoldFanTempCode',['../ir__Transcold_8h.html#a57eef64332f604b0c71557270ae255ad',1,'ir_Transcold.h']]], - ['ktranscoldfanzonefollow_3063',['kTranscoldFanZoneFollow',['../ir__Transcold_8h.html#aa78ff958ca560d1db1e69e3bd2bcd5e3',1,'ir_Transcold.h']]], - ['ktranscoldhdrmark_3064',['kTranscoldHdrMark',['../ir__Transcold_8cpp.html#aa999da00de9866212cacc740bb66d5f6',1,'ir_Transcold.cpp']]], - ['ktranscoldhdrspace_3065',['kTranscoldHdrSpace',['../ir__Transcold_8cpp.html#a0568fcecce190a29828771add3386b6a',1,'ir_Transcold.cpp']]], - ['ktranscoldheat_3066',['kTranscoldHeat',['../ir__Transcold_8h.html#ad109eb1c3cb044994179fafdbfc107e2',1,'ir_Transcold.h']]], - ['ktranscoldknowngoodstate_3067',['kTranscoldKnownGoodState',['../ir__Transcold_8h.html#a385409f55006ad7fedca2d335b69bf39',1,'ir_Transcold.h']]], - ['ktranscoldmodeoffset_3068',['kTranscoldModeOffset',['../ir__Transcold_8h.html#a8522221c94daaa3c3a233e94f57027d3',1,'ir_Transcold.h']]], - ['ktranscoldmodesize_3069',['kTranscoldModeSize',['../ir__Transcold_8h.html#a4a4db7a00edaa8ebeee86a0f3e3d6810',1,'ir_Transcold.h']]], - ['ktranscoldoff_3070',['kTranscoldOff',['../ir__Transcold_8h.html#a55d930cdd8e4246de18832bbd88a7d99',1,'ir_Transcold.h']]], - ['ktranscoldonespace_3071',['kTranscoldOneSpace',['../ir__Transcold_8cpp.html#aadd9575e345b8c57b4e2c65bcdb3123d',1,'ir_Transcold.cpp']]], - ['ktranscoldprefix_3072',['kTranscoldPrefix',['../ir__Transcold_8h.html#aaef68d4ab70d54b64486b7ba27a15822',1,'ir_Transcold.h']]], - ['ktranscoldswing_3073',['kTranscoldSwing',['../ir__Transcold_8h.html#af467e8cfb7f71abb609f4b9673908937',1,'ir_Transcold.h']]], - ['ktranscoldswingh_3074',['kTranscoldSwingH',['../ir__Transcold_8h.html#a300cfff72391f0c7c0caa97d49a73918',1,'ir_Transcold.h']]], - ['ktranscoldswingv_3075',['kTranscoldSwingV',['../ir__Transcold_8h.html#acfb0faab9bcf147c5dab61bee2cd93c9',1,'ir_Transcold.h']]], - ['ktranscoldtempmax_3076',['kTranscoldTempMax',['../ir__Transcold_8h.html#a5c9be5911208f2f7062a966b3deda0cd',1,'ir_Transcold.h']]], - ['ktranscoldtempmin_3077',['kTranscoldTempMin',['../ir__Transcold_8h.html#a52ff579c8e54611aed6be38d9907af57',1,'ir_Transcold.h']]], - ['ktranscoldtempoffset_3078',['kTranscoldTempOffset',['../ir__Transcold_8h.html#ada8c8a30c3d1ec93c9a7bb4fd6cc8a37',1,'ir_Transcold.h']]], - ['ktranscoldtempsize_3079',['kTranscoldTempSize',['../ir__Transcold_8h.html#adeffd84ae91146e1ac5b27735193ba55',1,'ir_Transcold.h']]], - ['ktranscoldunknown_3080',['kTranscoldUnknown',['../ir__Transcold_8h.html#af52672df48539c826ccf8ffc1e3f9927',1,'ir_Transcold.h']]], - ['ktranscoldzerospace_3081',['kTranscoldZeroSpace',['../ir__Transcold_8cpp.html#af932911d55d7eee66ee217cb8ad5d4d4',1,'ir_Transcold.cpp']]], - ['ktrotecauto_3082',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], - ['ktrotecbitmark_3083',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], - ['ktrotecbits_3084',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], - ['ktroteccool_3085',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], - ['ktrotecdefaultrepeat_3086',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], - ['ktrotecdeftemp_3087',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], - ['ktrotecdry_3088',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], - ['ktrotecfan_3089',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], - ['ktrotecfanhigh_3090',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], - ['ktrotecfanlow_3091',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], - ['ktrotecfanmed_3092',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], - ['ktrotecfanoffset_3093',['kTrotecFanOffset',['../ir__Trotec_8h.html#a3b9034b96268707f7b6fc45a16499479',1,'ir_Trotec.h']]], - ['ktrotecfansize_3094',['kTrotecFanSize',['../ir__Trotec_8h.html#a89d7de622d0f53f800c1a5a2887a81e4',1,'ir_Trotec.h']]], - ['ktrotecgap_3095',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], - ['ktrotecgapend_3096',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], - ['ktrotechdrmark_3097',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], - ['ktrotechdrspace_3098',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], - ['ktrotecintro1_3099',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], - ['ktrotecintro2_3100',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], - ['ktrotecmaxtemp_3101',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], - ['ktrotecmaxtimer_3102',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], - ['ktrotecmintemp_3103',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], - ['ktrotecmodeoffset_3104',['kTrotecModeOffset',['../ir__Trotec_8h.html#aa0d48802845d5cf0410550bb98e4cbb5',1,'ir_Trotec.h']]], - ['ktrotecmodesize_3105',['kTrotecModeSize',['../ir__Trotec_8h.html#ae45ea2f0f8b5d09568c0322e1735ca85',1,'ir_Trotec.h']]], - ['ktroteconespace_3106',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], - ['ktrotecpowerbitoffset_3107',['kTrotecPowerBitOffset',['../ir__Trotec_8h.html#a11fcdfe886385de6363d06371cdcff43',1,'ir_Trotec.h']]], - ['ktrotecsleepbitoffset_3108',['kTrotecSleepBitOffset',['../ir__Trotec_8h.html#af81754a025119a3dc9924df5508b18c0',1,'ir_Trotec.h']]], - ['ktrotecstatelength_3109',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], - ['ktrotectempoffset_3110',['kTrotecTempOffset',['../ir__Trotec_8h.html#a08a844aefec8d0440365c9204a01034c',1,'ir_Trotec.h']]], - ['ktrotectempsize_3111',['kTrotecTempSize',['../ir__Trotec_8h.html#a1141680a808f41513548a8747c37f975',1,'ir_Trotec.h']]], - ['ktrotectimerbitoffset_3112',['kTrotecTimerBitOffset',['../ir__Trotec_8h.html#aad59f1284ec04736a3c6629c3cd87731',1,'ir_Trotec.h']]], - ['ktroteczerospace_3113',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], - ['ktruestr_3114',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], - ['kturbostr_3115',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], - ['kunknownstr_3116',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], - ['kunknownthreshold_3117',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], - ['kupperstr_3118',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], - ['kupstr_3119',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], - ['kusedeftol_3120',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], - ['kvestelacauto_3121',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], - ['kvestelacbitmark_3122',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], - ['kvestelacbits_3123',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], - ['kvestelacchecksumoffset_3124',['kVestelAcChecksumOffset',['../ir__Vestel_8h.html#ac3fa10d1dba540a82b77cc88b01f9a7e',1,'ir_Vestel.h']]], - ['kvestelacchecksumsize_3125',['kVestelAcChecksumSize',['../ir__Vestel_8h.html#a61979a3b944ce7309c5b3f5b24b0a14c',1,'ir_Vestel.h']]], - ['kvestelaccool_3126',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], - ['kvestelacdry_3127',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], - ['kvestelacfan_3128',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], - ['kvestelacfanauto_3129',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], - ['kvestelacfanautocool_3130',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], - ['kvestelacfanautohot_3131',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], - ['kvestelacfanhigh_3132',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], - ['kvestelacfanlow_3133',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], - ['kvestelacfanmed_3134',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], - ['kvestelacfanoffset_3135',['kVestelAcFanOffset',['../ir__Vestel_8h.html#af0f1c1989322f256b7b1b5dba613feba',1,'ir_Vestel.h']]], - ['kvestelacfansize_3136',['kVestelAcFanSize',['../ir__Vestel_8h.html#ae61e23edfb71206e736497ab479c08ad',1,'ir_Vestel.h']]], - ['kvestelachdrmark_3137',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], - ['kvestelachdrspace_3138',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], - ['kvestelacheat_3139',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], - ['kvestelachouroffset_3140',['kVestelAcHourOffset',['../ir__Vestel_8h.html#af4c3729a4b9df092e01d74109f539cca',1,'ir_Vestel.h']]], - ['kvestelachoursize_3141',['kVestelAcHourSize',['../ir__Vestel_8h.html#a2c0fd442d92620ca062637d01258bacf',1,'ir_Vestel.h']]], - ['kvestelacion_3142',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], - ['kvestelacionoffset_3143',['kVestelAcIonOffset',['../ir__Vestel_8h.html#a9b1cd19c4b0037714f1c47ba031edd0b',1,'ir_Vestel.h']]], - ['kvestelacmaxtemp_3144',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], - ['kvestelacmintempc_3145',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], - ['kvestelacmintemph_3146',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], - ['kvestelacminuteoffset_3147',['kVestelAcMinuteOffset',['../ir__Vestel_8h.html#a7c5f318a30e86394af19265e73b68034',1,'ir_Vestel.h']]], - ['kvestelacminutesize_3148',['kVestelAcMinuteSize',['../ir__Vestel_8h.html#a8abd51cd0d0404ae8bb139690bf55eb0',1,'ir_Vestel.h']]], - ['kvestelacmodeoffset_3149',['kVestelAcModeOffset',['../ir__Vestel_8h.html#a5334689cb0fbeaee67133f1f86bdce58',1,'ir_Vestel.h']]], - ['kvestelacnormal_3150',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], - ['kvestelacofftimeoffset_3151',['kVestelAcOffTimeOffset',['../ir__Vestel_8h.html#a64ce11367a28d6481801ac3ac641df4b',1,'ir_Vestel.h']]], - ['kvestelacofftimerflagoffset_3152',['kVestelAcOffTimerFlagOffset',['../ir__Vestel_8h.html#ab36bed197f2c2b65599667b4cdf8225b',1,'ir_Vestel.h']]], - ['kvestelaconespace_3153',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], - ['kvestelacontimeoffset_3154',['kVestelAcOnTimeOffset',['../ir__Vestel_8h.html#a51e257abca02cb1c97de4a5418fb7e61',1,'ir_Vestel.h']]], - ['kvestelacontimerflagoffset_3155',['kVestelAcOnTimerFlagOffset',['../ir__Vestel_8h.html#a8aa66163683538129fbdaf21746a9144',1,'ir_Vestel.h']]], - ['kvestelacpoweroffset_3156',['kVestelAcPowerOffset',['../ir__Vestel_8h.html#ab1c5709fa37fc711929688bd72c300be',1,'ir_Vestel.h']]], - ['kvestelacpowersize_3157',['kVestelAcPowerSize',['../ir__Vestel_8h.html#a884236b7213902c5e7d79327effc8f97',1,'ir_Vestel.h']]], - ['kvestelacsleep_3158',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], - ['kvestelacstatedefault_3159',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], - ['kvestelacswing_3160',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], - ['kvestelacswingoffset_3161',['kVestelAcSwingOffset',['../ir__Vestel_8h.html#ad3249b7c42070013c7c81d3feb0b1a43',1,'ir_Vestel.h']]], - ['kvestelactempoffset_3162',['kVestelAcTempOffset',['../ir__Vestel_8h.html#a9cf24276d722ee54a17c8beaf2b415cd',1,'ir_Vestel.h']]], - ['kvestelactimerflagoffset_3163',['kVestelAcTimerFlagOffset',['../ir__Vestel_8h.html#a0e53cb471d133b13cfa8fd3204d70776',1,'ir_Vestel.h']]], - ['kvestelactimerhoursize_3164',['kVestelAcTimerHourSize',['../ir__Vestel_8h.html#ad52ad7c6b1efb7eee74a276dbca330e3',1,'ir_Vestel.h']]], - ['kvestelactimerminssize_3165',['kVestelAcTimerMinsSize',['../ir__Vestel_8h.html#a7696fac000df0fd5136b7cbd96393b9e',1,'ir_Vestel.h']]], - ['kvestelactimersize_3166',['kVestelAcTimerSize',['../ir__Vestel_8h.html#a43f134a4db94790c671380be29fb8e2c',1,'ir_Vestel.h']]], - ['kvestelactimestatedefault_3167',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], - ['kvestelactolerance_3168',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], - ['kvestelacturbo_3169',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], - ['kvestelacturbosleepoffset_3170',['kVestelAcTurboSleepOffset',['../ir__Vestel_8h.html#a97c21dc060558aa4f543f2d05385f674',1,'ir_Vestel.h']]], - ['kvestelaczerospace_3171',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], - ['kvoltas122lzf_3172',['kVoltas122LZF',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2a8de4d20c3d39f984be46ee9ead3b2a59',1,'IRsend.h']]], - ['kvoltasbitmark_3173',['kVoltasBitMark',['../ir__Voltas_8cpp.html#aff3e77a8712c4b9132a36b1909727906',1,'ir_Voltas.cpp']]], - ['kvoltasbits_3174',['kVoltasBits',['../IRremoteESP8266_8h.html#ad13056674d7d5fc530123ee1bb754409',1,'IRremoteESP8266.h']]], - ['kvoltascool_3175',['kVoltasCool',['../ir__Voltas_8h.html#a60ce895195221d1344db3b6bfded5422',1,'ir_Voltas.h']]], - ['kvoltasdry_3176',['kVoltasDry',['../ir__Voltas_8h.html#a3a89e1bb4d6f9b0371cb2b1a77f95aa0',1,'ir_Voltas.h']]], - ['kvoltasdrytemp_3177',['kVoltasDryTemp',['../ir__Voltas_8h.html#abb138aeb435b0583c09042f01d7eb42b',1,'ir_Voltas.h']]], - ['kvoltasfan_3178',['kVoltasFan',['../ir__Voltas_8h.html#a5a32539c5a10fb63d4df009968a1cc90',1,'ir_Voltas.h']]], - ['kvoltasfanauto_3179',['kVoltasFanAuto',['../ir__Voltas_8h.html#a68fc7bebcc711e8ca00c664e09f0aff9',1,'ir_Voltas.h']]], - ['kvoltasfanhigh_3180',['kVoltasFanHigh',['../ir__Voltas_8h.html#a6d217a662dd1c9353f3899b2be2dc269',1,'ir_Voltas.h']]], - ['kvoltasfanlow_3181',['kVoltasFanLow',['../ir__Voltas_8h.html#a3b84c9d78f23e694b25edddf5e5ac94a',1,'ir_Voltas.h']]], - ['kvoltasfanmed_3182',['kVoltasFanMed',['../ir__Voltas_8h.html#a0bf9ee213cf9266ea29b6813dc79e165',1,'ir_Voltas.h']]], - ['kvoltasfreq_3183',['kVoltasFreq',['../ir__Voltas_8cpp.html#abf1ddb4b962572b4a4aae323f02d91f1',1,'ir_Voltas.cpp']]], - ['kvoltasheat_3184',['kVoltasHeat',['../ir__Voltas_8h.html#a9f131121d8bff4112de9878be5ce0330',1,'ir_Voltas.h']]], - ['kvoltasmaxtemp_3185',['kVoltasMaxTemp',['../ir__Voltas_8h.html#a21a7e03f17b6daacd82037b892177724',1,'ir_Voltas.h']]], - ['kvoltasmintemp_3186',['kVoltasMinTemp',['../ir__Voltas_8h.html#a85f2d29327aa19177ea026a049c0fe52',1,'ir_Voltas.h']]], - ['kvoltasonespace_3187',['kVoltasOneSpace',['../ir__Voltas_8cpp.html#a5ad53f57f302eb44dfb773304c872018',1,'ir_Voltas.cpp']]], - ['kvoltasstatelength_3188',['kVoltasStateLength',['../IRremoteESP8266_8h.html#a336bd721135fc8b869941cd3aa73646e',1,'IRremoteESP8266.h']]], - ['kvoltasswinghchange_3189',['kVoltasSwingHChange',['../ir__Voltas_8h.html#a92242c38b240f5134e1a6c2200b6d0de',1,'ir_Voltas.h']]], - ['kvoltasswinghnochange_3190',['kVoltasSwingHNoChange',['../ir__Voltas_8h.html#acb66394dca0f3606066f61077444b0d3',1,'ir_Voltas.h']]], - ['kvoltasunknown_3191',['kVoltasUnknown',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2aa804f5b34349056dea270669f8b67229',1,'IRsend.h']]], - ['kvoltaszerospace_3192',['kVoltasZeroSpace',['../ir__Voltas_8cpp.html#abcfc7887357e19c6d74b5befddfa7eb4',1,'ir_Voltas.cpp']]], - ['kwallstr_3193',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], - ['kweeklytimerstr_3194',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], - ['kwhirlpoolacalttempoffset_3195',['kWhirlpoolAcAltTempOffset',['../ir__Whirlpool_8h.html#a5cdc8be18d6489572d7c16dbbcc0c838',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacalttemppos_3196',['kWhirlpoolAcAltTempPos',['../ir__Whirlpool_8h.html#a019206ce06ef164cc3abb586183d0789',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacauto_3197',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacautotemp_3198',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacbitmark_3199',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacbits_3200',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacchecksumbyte1_3201',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacchecksumbyte2_3202',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacclockpos_3203',['kWhirlpoolAcClockPos',['../ir__Whirlpool_8h.html#ad624453fc485adaaa156bfde374208a4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommand6thsense_3204',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandfanspeed_3205',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandifeel_3206',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandlight_3207',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandmode_3208',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandofftimer_3209',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandontimer_3210',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpos_3211',['kWhirlpoolAcCommandPos',['../ir__Whirlpool_8h.html#a1a3bc2210991ccfd418a5137dc7e0aa8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpower_3212',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsleep_3213',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsuper_3214',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandswing_3215',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandtemp_3216',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccool_3217',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacdefaultrepeat_3218',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacdry_3219',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfan_3220',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanauto_3221',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanhigh_3222',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanlow_3223',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanmedium_3224',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanoffset_3225',['kWhirlpoolAcFanOffset',['../ir__Whirlpool_8h.html#a2cbca4b466aab8816efa70d1653bc895',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanpos_3226',['kWhirlpoolAcFanPos',['../ir__Whirlpool_8h.html#a02d5f4fe0837c9f9738cfb46f83c2ed9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfansize_3227',['kWhirlpoolAcFanSize',['../ir__Whirlpool_8h.html#ae26fab46c0f06c04f4d51b61e623873c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacgap_3228',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrmark_3229',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrspace_3230',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacheat_3231',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolachouroffset_3232',['kWhirlpoolAcHourOffset',['../ir__Whirlpool_8h.html#a8940e79b0e5b9f4bcf2a3e518cc59432',1,'ir_Whirlpool.h']]], - ['kwhirlpoolachoursize_3233',['kWhirlpoolAcHourSize',['../ir__Whirlpool_8h.html#ac50066e7e496cb7af6ecdb21cee7f2c9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaclightoffset_3234',['kWhirlpoolAcLightOffset',['../ir__Whirlpool_8h.html#a5a5fbcfa7f383fb72f96c414adea8966',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmaxtemp_3235',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmingap_3236',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacmintemp_3237',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacminuteoffset_3238',['kWhirlpoolAcMinuteOffset',['../ir__Whirlpool_8h.html#ae22595d5d1ffdc4c6b02080cd38d14d7',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacminutesize_3239',['kWhirlpoolAcMinuteSize',['../ir__Whirlpool_8h.html#a3a5cecc4480a1cb3da19f246902ab1d9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmodeoffset_3240',['kWhirlpoolAcModeOffset',['../ir__Whirlpool_8h.html#a662d0ab4b5f2b40bc2427e2b8d18351e',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmodepos_3241',['kWhirlpoolAcModePos',['../ir__Whirlpool_8h.html#a6a7e8449c00a260c1ef740ebc4a08d50',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacofftimerpos_3242',['kWhirlpoolAcOffTimerPos',['../ir__Whirlpool_8h.html#a48a18046ded6bae11cd87d41d615d05f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaconespace_3243',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacontimerpos_3244',['kWhirlpoolAcOnTimerPos',['../ir__Whirlpool_8h.html#ad10d9924f4d57547f7dc8ea085e1666f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacpowertoggleoffset_3245',['kWhirlpoolAcPowerToggleOffset',['../ir__Whirlpool_8h.html#a1db76f65f3f10e73a0fdee65850934a2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacpowertogglepos_3246',['kWhirlpoolAcPowerTogglePos',['../ir__Whirlpool_8h.html#a353f4f6101a152fdcfe7f13b8f8764d8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsections_3247',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacsleepoffset_3248',['kWhirlpoolAcSleepOffset',['../ir__Whirlpool_8h.html#a83961870cfae146cbb519560ff609fc3',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsleeppos_3249',['kWhirlpoolAcSleepPos',['../ir__Whirlpool_8h.html#a739f14122bce3a130d441bb0a47b4666',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacstatelength_3250',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacsupermask_3251',['kWhirlpoolAcSuperMask',['../ir__Whirlpool_8h.html#a1946501e50abd9e1c0a3e07007a98c24',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsuperpos_3252',['kWhirlpoolAcSuperPos',['../ir__Whirlpool_8h.html#a68e051a102449fc6712f709b166a99b9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacswing1offset_3253',['kWhirlpoolAcSwing1Offset',['../ir__Whirlpool_8h.html#adeba9b215f8044e64df2bf805eecaa3b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacswing2offset_3254',['kWhirlpoolAcSwing2Offset',['../ir__Whirlpool_8h.html#a3290f0b70f3eafdd885d4a08c6d5d5a3',1,'ir_Whirlpool.h']]], - ['kwhirlpoolactemppos_3255',['kWhirlpoolAcTempPos',['../ir__Whirlpool_8h.html#a15a3ef7abed2fca2881d4f5ccc969522',1,'ir_Whirlpool.h']]], - ['kwhirlpoolactimerenableoffset_3256',['kWhirlpoolAcTimerEnableOffset',['../ir__Whirlpool_8h.html#ab4694ec5e153e41f6cf56920e2291970',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaczerospace_3257',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], - ['kwhynterbitmark_3258',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], - ['kwhynterbitmarkticks_3259',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], - ['kwhynterbits_3260',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], - ['kwhynterhdrmark_3261',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], - ['kwhynterhdrmarkticks_3262',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspace_3263',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspaceticks_3264',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlength_3265',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlengthticks_3266',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], - ['kwhyntermingap_3267',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], - ['kwhyntermingapticks_3268',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], - ['kwhynteronespace_3269',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], - ['kwhynteronespaceticks_3270',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], - ['kwhyntertick_3271',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], - ['kwhynterzerospace_3272',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], - ['kwhynterzerospaceticks_3273',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], - ['kwide_3274',['kWide',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd',1,'stdAc']]], - ['kwidestr_3275',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], - ['kwifistr_3276',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], - ['kxfanstr_3277',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], - ['kyesstr_3278',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], - ['kzepealbits_3279',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], - ['kzepealcommandoffon_3280',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], - ['kzepealcommandofftimer_3281',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], - ['kzepealcommandontimer_3282',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], - ['kzepealcommandrhythm_3283',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], - ['kzepealcommandspeed_3284',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], - ['kzepealfootermark_3285',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], - ['kzepealgap_3286',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], - ['kzepealhdrmark_3287',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], - ['kzepealhdrspace_3288',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], - ['kzepealminrepeat_3289',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], - ['kzepealonemark_3290',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], - ['kzepealonespace_3291',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], - ['kzepealsignature_3292',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], - ['kzepealtolerance_3293',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], - ['kzepealzeromark_3294',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], - ['kzepealzerospace_3295',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], - ['kzonefollowstr_3296',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_c.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_c.js deleted file mode 100644 index 69db34600..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_c.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['label_3297',['Label',['../structCoronaSection.html#abc6d0caa713c73244c4bf2f602074d48',1,'CoronaSection']]], - ['lasertag_3298',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], - ['ledflag_3299',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['ledoff_3300',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_3301',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['legopf_3302',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], - ['lg_3303',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac::lg()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'LG(): IRremoteESP8266.h']]], - ['lg2_3304',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], - ['lg_5fac_5fremote_5fmodel_5ft_3305',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]], - ['light_3306',['Light',['../unionGreeProtocol.html#a72092768725667d3bce381a6e2900c66',1,'GreeProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()'],['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()']]], - ['llword_3307',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['lowlevelsanitycheck_3308',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]], - ['lutron_3309',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]], - ['lword_3310',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_d.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_d.js deleted file mode 100644 index 7e6dbc4a6..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/all_d.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['magiquest_3311',['magiquest',['../unionmagiquest.html',1,'magiquest'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'MAGIQUEST(): IRremoteESP8266.h']]], - ['magnitude_3312',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], - ['mark_3313',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]], - ['markassent_3314',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]], - ['match_3315',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]], - ['match_5fresult_5ft_3316',['match_result_t',['../structmatch__result__t.html',1,'']]], - ['matchatleast_3317',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]], - ['matchbytes_3318',['matchBytes',['../classIRrecv.html#adc2c9bc4c4e5741cfac7468126bf8ca6',1,'IRrecv']]], - ['matchdata_3319',['matchData',['../classIRrecv.html#a5361439cb69b1069553544e486502d2e',1,'IRrecv']]], - ['matchgeneric_3320',['matchGeneric',['../classIRrecv.html#ab783f52acc2ff4052313d6947563e4fd',1,'IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)'],['../classIRrecv.html#a4448c1658383962d735353352987c9aa',1,'IRrecv::matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)']]], - ['matchgenericconstbittime_3321',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]], - ['matchmanchester_3322',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]], - ['matchmanchesterdata_3323',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]], - ['matchmark_3324',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]], - ['matchspace_3325',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]], - ['max_3326',['Max',['../unionAmcorProtocol.html#a9e0ea99322601af4b09784da2cf21d7e',1,'AmcorProtocol::Max()'],['../unionArgoProtocol.html#ac3edf881406da0b9a253a7536ba3e810',1,'ArgoProtocol::Max()']]], - ['metz_3327',['METZ',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa77ca3ee98846eee35bd2995bf2ae25b',1,'IRremoteESP8266.h']]], - ['midea_3328',['midea',['../classIRac.html#a0b09ee99957a92d81e615676508b465a',1,'IRac::midea()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'MIDEA(): IRremoteESP8266.h']]], - ['midea24_3329',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]], - ['mideaprotocol_3330',['MideaProtocol',['../unionMideaProtocol.html',1,'']]], - ['minrepeats_3331',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]], - ['minstostring_3332',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]], - ['mitsubishi_3333',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac::mitsubishi()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'MITSUBISHI(): IRremoteESP8266.h']]], - ['mitsubishi112_3334',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac::mitsubishi112()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'MITSUBISHI112(): IRremoteESP8266.h']]], - ['mitsubishi136_3335',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac::mitsubishi136()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'MITSUBISHI136(): IRremoteESP8266.h']]], - ['mitsubishi2_3336',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fac_3337',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f152_3338',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f88_3339',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]], - ['mitsubishiheavy152_3340',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]], - ['mitsubishiheavy88_3341',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]], - ['mode_3342',['Mode',['../unionAirwellProtocol.html#a4a12b674ee9dcdbca592a1c5f3deb43e',1,'AirwellProtocol::Mode()'],['../unionAmcorProtocol.html#a5eca17db0b0ac0a2a46d72eaa4b098f8',1,'AmcorProtocol::Mode()'],['../unionArgoProtocol.html#afac4337c33e8a2b8e12b84890121e00c',1,'ArgoProtocol::Mode()'],['../unionCarrierProtocol.html#a5fed7d2b743b55fb9a95293f026a9c24',1,'CarrierProtocol::Mode()'],['../unionCoronaProtocol.html#aad77fd87c02ef022da013116123d3531',1,'CoronaProtocol::Mode()'],['../unionDelonghiProtocol.html#a41b3aa93923059ec0bc099a592318ff0',1,'DelonghiProtocol::Mode()'],['../unionGreeProtocol.html#aacd25e508a37e0012295a87e712987ce',1,'GreeProtocol::Mode()'],['../unionHaierProtocol.html#aab10d402084329d472e08385cc9645ec',1,'HaierProtocol::Mode()'],['../unionHaierYRW02Protocol.html#a8b9060ce2e0b1e9192191e6ae68277dd',1,'HaierYRW02Protocol::Mode()'],['../unionMideaProtocol.html#aa0255e9e1351d594b2e2c8c6f9698e1a',1,'MideaProtocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()'],['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t::mode()']]], - ['model_3343',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t']]], - ['modela_3344',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]], - ['modeltostr_3345',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]], - ['modulation_3346',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]], - ['mstostring_3347',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]], - ['multibrackets_3348',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]], - ['mwm_3349',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_0.js deleted file mode 100644 index cdc5dfff5..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['airwellprotocol_3748',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]], - ['amcorprotocol_3749',['AmcorProtocol',['../unionAmcorProtocol.html',1,'']]], - ['argoprotocol_3750',['ArgoProtocol',['../unionArgoProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_1.js deleted file mode 100644 index 2a134f7fb..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['carrierprotocol_3751',['CarrierProtocol',['../unionCarrierProtocol.html',1,'']]], - ['coronaprotocol_3752',['CoronaProtocol',['../unionCoronaProtocol.html',1,'']]], - ['coronasection_3753',['CoronaSection',['../structCoronaSection.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_2.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_2.js deleted file mode 100644 index 14217bcc6..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['decode_5fresults_3754',['decode_results',['../classdecode__results.html',1,'']]], - ['delonghiprotocol_3755',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_3.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_3.js deleted file mode 100644 index 28b22aea8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['greeprotocol_3756',['GreeProtocol',['../unionGreeProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_4.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_4.js deleted file mode 100644 index 23fe738f6..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_4.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['haierprotocol_3757',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_3758',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_5.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_5.js deleted file mode 100644 index 2e009bc15..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_5.js +++ /dev/null @@ -1,56 +0,0 @@ -var searchData= -[ - ['irac_3759',['IRac',['../classIRac.html',1,'']]], - ['irairwellac_3760',['IRAirwellAc',['../classIRAirwellAc.html',1,'']]], - ['iramcorac_3761',['IRAmcorAc',['../classIRAmcorAc.html',1,'']]], - ['irargoac_3762',['IRArgoAC',['../classIRArgoAC.html',1,'']]], - ['ircarrierac64_3763',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'']]], - ['ircoolixac_3764',['IRCoolixAC',['../classIRCoolixAC.html',1,'']]], - ['ircoronaac_3765',['IRCoronaAc',['../classIRCoronaAc.html',1,'']]], - ['irdaikin128_3766',['IRDaikin128',['../classIRDaikin128.html',1,'']]], - ['irdaikin152_3767',['IRDaikin152',['../classIRDaikin152.html',1,'']]], - ['irdaikin160_3768',['IRDaikin160',['../classIRDaikin160.html',1,'']]], - ['irdaikin176_3769',['IRDaikin176',['../classIRDaikin176.html',1,'']]], - ['irdaikin2_3770',['IRDaikin2',['../classIRDaikin2.html',1,'']]], - ['irdaikin216_3771',['IRDaikin216',['../classIRDaikin216.html',1,'']]], - ['irdaikin64_3772',['IRDaikin64',['../classIRDaikin64.html',1,'']]], - ['irdaikinesp_3773',['IRDaikinESP',['../classIRDaikinESP.html',1,'']]], - ['irdelonghiac_3774',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'']]], - ['irelectraac_3775',['IRElectraAc',['../classIRElectraAc.html',1,'']]], - ['irfujitsuac_3776',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'']]], - ['irgoodweatherac_3777',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'']]], - ['irgreeac_3778',['IRGreeAC',['../classIRGreeAC.html',1,'']]], - ['irhaierac_3779',['IRHaierAC',['../classIRHaierAC.html',1,'']]], - ['irhaieracyrw02_3780',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'']]], - ['irhitachiac_3781',['IRHitachiAc',['../classIRHitachiAc.html',1,'']]], - ['irhitachiac1_3782',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'']]], - ['irhitachiac3_3783',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'']]], - ['irhitachiac344_3784',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'']]], - ['irhitachiac424_3785',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'']]], - ['irkelvinatorac_3786',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'']]], - ['irlgac_3787',['IRLgAc',['../classIRLgAc.html',1,'']]], - ['irmideaac_3788',['IRMideaAC',['../classIRMideaAC.html',1,'']]], - ['irmitsubishi112_3789',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'']]], - ['irmitsubishi136_3790',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'']]], - ['irmitsubishiac_3791',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'']]], - ['irmitsubishiheavy152ac_3792',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'']]], - ['irmitsubishiheavy88ac_3793',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'']]], - ['irneoclimaac_3794',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'']]], - ['irpanasonicac_3795',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'']]], - ['irparams_5ft_3796',['irparams_t',['../structirparams__t.html',1,'']]], - ['irrecv_3797',['IRrecv',['../classIRrecv.html',1,'']]], - ['irsamsungac_3798',['IRSamsungAc',['../classIRSamsungAc.html',1,'']]], - ['irsanyoac_3799',['IRSanyoAc',['../classIRSanyoAc.html',1,'']]], - ['irsend_3800',['IRsend',['../classIRsend.html',1,'']]], - ['irsharpac_3801',['IRSharpAc',['../classIRSharpAc.html',1,'']]], - ['irtcl112ac_3802',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'']]], - ['irtechnibelac_3803',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'']]], - ['irtecoac_3804',['IRTecoAc',['../classIRTecoAc.html',1,'']]], - ['irtimer_3805',['IRtimer',['../classIRtimer.html',1,'']]], - ['irtoshibaac_3806',['IRToshibaAC',['../classIRToshibaAC.html',1,'']]], - ['irtranscoldac_3807',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'']]], - ['irtrotecesp_3808',['IRTrotecESP',['../classIRTrotecESP.html',1,'']]], - ['irvestelac_3809',['IRVestelAc',['../classIRVestelAc.html',1,'']]], - ['irvoltas_3810',['IRVoltas',['../classIRVoltas.html',1,'']]], - ['irwhirlpoolac_3811',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_6.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_6.js deleted file mode 100644 index 1002012a7..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['magiquest_3812',['magiquest',['../unionmagiquest.html',1,'']]], - ['match_5fresult_5ft_3813',['match_result_t',['../structmatch__result__t.html',1,'']]], - ['mideaprotocol_3814',['MideaProtocol',['../unionMideaProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_7.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_7.js deleted file mode 100644 index aafadbc20..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['state_5ft_3815',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_8.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_8.js deleted file mode 100644 index 3ae49b823..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['timerms_3816',['TimerMs',['../classTimerMs.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.js deleted file mode 100644 index d0b09734d..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/classes_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['voltasprotocol_3817',['VoltasProtocol',['../unionVoltasProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_5.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_5.js deleted file mode 100644 index 7bc237e32..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['opmode_5ft_7431',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_7.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_7.js deleted file mode 100644 index dd9098509..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enums_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['swingh_5ft_7433',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], - ['swingv_5ft_7434',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_0.js deleted file mode 100644 index 970899ca8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_0.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['airwell_7437',['AIRWELL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'IRremoteESP8266.h']]], - ['aiwa_5frc_5ft501_7438',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], - ['akb75215403_7439',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], - ['amcor_7440',['AMCOR',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'IRremoteESP8266.h']]], - ['ardb1_7441',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], - ['argo_7442',['ARGO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'IRremoteESP8266.h']]], - ['arjw2_7443',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], - ['arrah2e_7444',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], - ['arreb1e_7445',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], - ['arry4_7446',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_3.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_3.js deleted file mode 100644 index adbd680c2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['electra_5fac_7466',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], - ['epson_7467',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_d.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_d.js deleted file mode 100644 index 47bb84a16..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/enumvalues_d.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['panasonic_7540',['PANASONIC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'IRremoteESP8266.h']]], - ['panasonic_5fac_7541',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], - ['pioneer_7542',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], - ['pronto_7543',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_0.js deleted file mode 100644 index b4234291c..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['de_2dch_2eh_3821',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_3822',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['defaults_2eh_3823',['defaults.h',['../defaults_8h.html',1,'']]], - ['doxygen_5findex_2emd_3824',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_1.js deleted file mode 100644 index 6f7d7dcc7..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['en_2dau_2eh_3825',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_3826',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_3827',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_3828',['en-US.h',['../en-US_8h.html',1,'']]], - ['es_2des_2eh_3829',['es-ES.h',['../es-ES_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_2.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_2.js deleted file mode 100644 index 988707a59..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fr_2dfr_2eh_3830',['fr-FR.h',['../fr-FR_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_3.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_3.js deleted file mode 100644 index 6096a0533..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_3.js +++ /dev/null @@ -1,113 +0,0 @@ -var searchData= -[ - ['i18n_2eh_3831',['i18n.h',['../i18n_8h.html',1,'']]], - ['ir_5fairwell_2ecpp_3832',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_3833',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_3834',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_3835',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_3836',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_3837',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_3838',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_3839',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_3840',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_3841',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_3842',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_3843',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_3844',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_3845',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_3846',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_3847',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_3848',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_3849',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_3850',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_3851',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5felectra_2ecpp_3852',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_3853',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5fepson_2ecpp_3854',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_3855',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_3856',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_3857',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_3858',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_3859',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_3860',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_3861',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_3862',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_3863',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_3864',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_3865',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_3866',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_3867',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_3868',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelvinator_2ecpp_3869',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_3870',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_3871',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_3872',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_3873',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_3874',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_3875',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_3876',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_3877',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_3878',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_3879',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_3880',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_3881',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_3882',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_3883',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_3884',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_3885',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_3886',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_3887',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_3888',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_3889',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_3890',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_3891',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_3892',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_3893',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_3894',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_3895',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_3896',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_3897',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_3898',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_3899',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_3900',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_3901',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_3902',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_3903',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_3904',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_3905',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_3906',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_3907',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_3908',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5ftechnibel_2ecpp_3909',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]], - ['ir_5ftechnibel_2eh_3910',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]], - ['ir_5fteco_2ecpp_3911',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_3912',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5ftoshiba_2ecpp_3913',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_3914',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftranscold_2ecpp_3915',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]], - ['ir_5ftranscold_2eh_3916',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_3917',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_3918',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_3919',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_3920',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_3921',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_3922',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_3923',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_3924',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_3925',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_3926',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_2ecpp_3927',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_3928',['IRac.h',['../IRac_8h.html',1,'']]], - ['irrecv_2ecpp_3929',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_3930',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremoteesp8266_2eh_3931',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsend_2ecpp_3932',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_3933',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irtext_2ecpp_3934',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_3935',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_2ecpp_3936',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_3937',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irutils_2ecpp_3938',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_3939',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['it_2dit_2eh_3940',['it-IT.h',['../it-IT_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_4.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_4.js deleted file mode 100644 index 35bf477c5..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_2emd_3941',['README.md',['../README_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_5.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_5.js deleted file mode 100644 index 652375e4e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zh_2dcn_2eh_3942',['zh-CN.h',['../zh-CN_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_0.js deleted file mode 100644 index b70d4a917..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_0.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['_5fbackupstate_3943',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]], - ['_5fcancelofftimer_3944',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], - ['_5fcancelontimer_3945',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], - ['_5fdelaymicroseconds_3946',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], - ['_5fgettemp_3947',['_getTemp',['../classIRSanyoAc.html#a958a4d66a2e17dccefaedad45787355e',1,'IRSanyoAc']]], - ['_5fgettime_3948',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], - ['_5fgettimer_3949',['_getTimer',['../classIRCoronaAc.html#a352fedb1c80549d2b580e538d8ba7901',1,'IRCoronaAc::_getTimer()'],['../classIRVestelAc.html#ad3f095d248ad3c84a777ed9f2d3b001e',1,'IRVestelAc::_getTimer()']]], - ['_5fmatchgeneric_3950',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], - ['_5frestorestate_3951',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]], - ['_5fsendsony_3952',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], - ['_5fsetmode_3953',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], - ['_5fsettemp_3954',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRSanyoAc.html#a4c8c0606f6bb82b0c55b179c9f4a7bda',1,'IRSanyoAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], - ['_5fsettime_3955',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], - ['_5fsettimer_3956',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc::_setTimer()'],['../classIRVestelAc.html#a726178a16458c84d031aec07355d0dd2',1,'IRVestelAc::_setTimer()']]], - ['_5ftostring_3957',['_toString',['../classIRHitachiAc424.html#af7ab654c4eecf770a70399f6b9959db3',1,'IRHitachiAc424']]], - ['_5fvalidtolerance_3958',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_1.js deleted file mode 100644 index 0823f6ae5..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_1.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['add_3959',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_3960',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_3961',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_3962',['addFanToString',['../namespaceirutils.html#ae023bbabc452173d348c14eac7d86ab4',1,'irutils']]], - ['addinttostring_3963',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_3964',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_3965',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_3966',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['addtemptostring_3967',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['airwell_3968',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac']]], - ['amcor_3969',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac']]], - ['argo_3970',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_15.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_15.js deleted file mode 100644 index e56adf9e2..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['whirlpool_4626',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_17.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_17.js deleted file mode 100644 index b5c02fb97..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_4628',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_4.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_4.js deleted file mode 100644 index 1d734357a..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_4.js +++ /dev/null @@ -1,100 +0,0 @@ -var searchData= -[ - ['daikin_4009',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac']]], - ['daikin128_4010',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac']]], - ['daikin152_4011',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac']]], - ['daikin160_4012',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac']]], - ['daikin176_4013',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac']]], - ['daikin2_4014',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac']]], - ['daikin216_4015',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac']]], - ['daikin64_4016',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac']]], - ['decode_4017',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decodeairwell_4018',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_4019',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_4020',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_4021',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_4022',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_4023',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_4024',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_4025',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_4026',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_4027',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_4028',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_4029',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_4030',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_4031',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_4032',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_4033',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_4034',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_4035',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_4036',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_4037',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_4038',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeelectraac_4039',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeepson_4040',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_4041',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_4042',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_4043',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_4044',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_4045',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaieracyrw02_4046',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_4047',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_4048',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_4049',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_4050',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_4051',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_4052',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_4053',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelvinator_4054',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_4055',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_4056',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_4057',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_4058',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_4059',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_4060',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_4061',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_4062',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemitsubishi_4063',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_4064',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_4065',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_4066',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_4067',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_4068',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_4069',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_4070',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_4071',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_4072',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_4073',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_4074',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_4075',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepioneer_4076',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_4077',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_4078',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_4079',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_4080',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_4081',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_4082',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_4083',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_4084',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_4085',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_4086',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_4087',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_4088',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodetechnibelac_4089',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]], - ['decodeteco_4090',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodetoshibaac_4091',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_4092',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetranscold_4093',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]], - ['decodetrotec_4094',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodevestelac_4095',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_4096',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_4097',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_4098',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodezepeal_4099',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_4100',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['delonghiac_4101',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['disableirin_4102',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_4103',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a6c8ad4c34713d61942c80b6052e6283a',1,'IRDaikin2::disableOffTimer()']]], - ['disableontimer_4104',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#ab0e77969a86af9637cb9aa4b4befd4aa',1,'IRDaikin2::disableOnTimer()']]], - ['disablesleeptimer_4105',['disableSleepTimer',['../classIRDaikin2.html#a5461cf51967d3fe67489384c82daac47',1,'IRDaikin2']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_9.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_9.js deleted file mode 100644 index b1178b7aa..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_9.js +++ /dev/null @@ -1,71 +0,0 @@ -var searchData= -[ - ['initstate_4262',['initState',['../classIRac.html#af1c4ae70e61298c0be8d350d67e7c342',1,'IRac::initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)'],['../classIRac.html#a165b7fdb9b3a02b1fb5ff2c2c3747958',1,'IRac::initState(stdAc::state_t *state)']]], - ['invertbits_4263',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], - ['invertbytepairs_4264',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]], - ['irac_4265',['IRac',['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac']]], - ['irairwellac_4266',['IRAirwellAc',['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc']]], - ['iramcorac_4267',['IRAmcorAc',['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc']]], - ['irargoac_4268',['IRArgoAC',['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC']]], - ['ircarrierac64_4269',['IRCarrierAc64',['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64']]], - ['ircoolixac_4270',['IRCoolixAC',['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC']]], - ['ircoronaac_4271',['IRCoronaAc',['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc']]], - ['irdaikin128_4272',['IRDaikin128',['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128']]], - ['irdaikin152_4273',['IRDaikin152',['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152']]], - ['irdaikin160_4274',['IRDaikin160',['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160']]], - ['irdaikin176_4275',['IRDaikin176',['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176']]], - ['irdaikin2_4276',['IRDaikin2',['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2']]], - ['irdaikin216_4277',['IRDaikin216',['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216']]], - ['irdaikin64_4278',['IRDaikin64',['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64']]], - ['irdaikinesp_4279',['IRDaikinESP',['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP']]], - ['irdelonghiac_4280',['IRDelonghiAc',['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc']]], - ['irelectraac_4281',['IRElectraAc',['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc']]], - ['irfujitsuac_4282',['IRFujitsuAC',['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC']]], - ['irgoodweatherac_4283',['IRGoodweatherAc',['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc']]], - ['irgreeac_4284',['IRGreeAC',['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC']]], - ['irhaierac_4285',['IRHaierAC',['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC']]], - ['irhaieracyrw02_4286',['IRHaierACYRW02',['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02']]], - ['irhitachiac_4287',['IRHitachiAc',['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc']]], - ['irhitachiac1_4288',['IRHitachiAc1',['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1']]], - ['irhitachiac3_4289',['IRHitachiAc3',['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3']]], - ['irhitachiac344_4290',['IRHitachiAc344',['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344']]], - ['irhitachiac424_4291',['IRHitachiAc424',['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424']]], - ['irkelvinatorac_4292',['IRKelvinatorAC',['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC']]], - ['irlgac_4293',['IRLgAc',['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc']]], - ['irmideaac_4294',['IRMideaAC',['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC']]], - ['irmitsubishi112_4295',['IRMitsubishi112',['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112']]], - ['irmitsubishi136_4296',['IRMitsubishi136',['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136']]], - ['irmitsubishiac_4297',['IRMitsubishiAC',['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC']]], - ['irmitsubishiheavy152ac_4298',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac']]], - ['irmitsubishiheavy88ac_4299',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac']]], - ['irneoclimaac_4300',['IRNeoclimaAc',['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc']]], - ['irpanasonicac_4301',['IRPanasonicAc',['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc']]], - ['irrecv_4302',['IRrecv',['../classIRrecv.html#a8fe4d26ef1f863db1db9994fed5fc209',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)'],['../classIRrecv.html#a3bb1bcc1c1a3184294dd35c8f6f758b1',1,'IRrecv::IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)']]], - ['irsamsungac_4303',['IRSamsungAc',['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc']]], - ['irsanyoac_4304',['IRSanyoAc',['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc']]], - ['irsend_4305',['IRsend',['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend']]], - ['irsharpac_4306',['IRSharpAc',['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc']]], - ['irtcl112ac_4307',['IRTcl112Ac',['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac']]], - ['irtechnibelac_4308',['IRTechnibelAc',['../classIRTechnibelAc.html#a799407de348870d5765acf163ab92a75',1,'IRTechnibelAc']]], - ['irtecoac_4309',['IRTecoAc',['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc']]], - ['irtimer_4310',['IRtimer',['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer']]], - ['irtoshibaac_4311',['IRToshibaAC',['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC']]], - ['irtranscoldac_4312',['IRTranscoldAc',['../classIRTranscoldAc.html#a155278b9e5803aacf69a1ae20ed5b652',1,'IRTranscoldAc']]], - ['irtrotecesp_4313',['IRTrotecESP',['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP']]], - ['irvestelac_4314',['IRVestelAc',['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc']]], - ['irvoltas_4315',['IRVoltas',['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas']]], - ['irwhirlpoolac_4316',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc']]], - ['iseconotoggle_4317',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]], - ['isofftimeractive_4318',['isOffTimerActive',['../classIRVestelAc.html#aa756171e82ed1b43593b81aa3a63b812',1,'IRVestelAc']]], - ['isofftimerenabled_4319',['isOffTimerEnabled',['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a1bc1366524cf3c7fb426e908a166801f',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], - ['isontimeractive_4320',['isOnTimerActive',['../classIRVestelAc.html#a67f0e970af50fcf6e01e4cac85c5862a',1,'IRVestelAc']]], - ['isontimerenabled_4321',['isOnTimerEnabled',['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#aff1b8c2d063b376725a5a77745f6be3a',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], - ['ispowerspecial_4322',['isPowerSpecial',['../classIRSharpAc.html#a57072f2458897ffb9184769aca10b944',1,'IRSharpAc']]], - ['isprotocolsupported_4323',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], - ['isspecialstate_4324',['isSpecialState',['../classIRCoolixAC.html#a51bde954328ca5887a8353ba5562b3db',1,'IRCoolixAC::isSpecialState()'],['../classIRTranscoldAc.html#aed8c20db75d4070e66445fb2b092e2de',1,'IRTranscoldAc::isSpecialState()']]], - ['isswingvtoggle_4325',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]], - ['istimecommand_4326',['isTimeCommand',['../classIRVestelAc.html#ae811a07c1a8d82e7068c39b9ca73aaf1',1,'IRVestelAc']]], - ['istimeractive_4327',['isTimerActive',['../classIRVestelAc.html#a160b73df8e1eda984f9bfbff3df7fa63',1,'IRVestelAc']]], - ['istimerenabled_4328',['isTimerEnabled',['../classIRWhirlpoolAc.html#a5a713ffed99ab3450257d83e2d6e15ee',1,'IRWhirlpoolAc']]], - ['isvalidlgac_4329',['isValidLgAc',['../classIRLgAc.html#a5984041eb12603ac1a277c28b355322a',1,'IRLgAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_a.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_a.js deleted file mode 100644 index 07212046f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['kelvinator_4330',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_b.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_b.js deleted file mode 100644 index bfd83dab1..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_b.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ledoff_4331',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_4332',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['lg_4333',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac']]], - ['lowlevelsanitycheck_4334',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_d.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_d.js deleted file mode 100644 index 7275cc77f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['neoclima_4357',['neoclima',['../classIRac.html#a777da4b0552ee3b64d656c4592687f47',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_f.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_f.js deleted file mode 100644 index 6f890dfee..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/functions_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['panasonic_4361',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_0.js deleted file mode 100644 index 1fbba88d1..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['iracutils_3818',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irutils_3819',['irutils',['../namespaceirutils.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_1.js deleted file mode 100644 index f1c707aaa..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/namespaces_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stdac_3820',['stdAc',['../namespacestdAc.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_0.js deleted file mode 100644 index 519505527..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deprecated_20list_7579',['Deprecated List',['../deprecated.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_1.js deleted file mode 100644 index 918470c02..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['irremoteesp8266_20library_20api_20documentation_7580',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_7581',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_2.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_2.js deleted file mode 100644 index 08123ac92..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['todo_20list_7582',['Todo List',['../todo.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_0.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_0.js deleted file mode 100644 index b5e25f73c..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_0.js +++ /dev/null @@ -1,60 +0,0 @@ -var searchData= -[ - ['_5f_4629',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRAmcorAc.html#a57bd1149a63a8c2373eeced414ed0a80',1,'IRAmcorAc::_()'],['../classIRArgoAC.html#a748a4828682df0f98226754123fe2142',1,'IRArgoAC::_()'],['../classIRCarrierAc64.html#a79ddb0fb877232a581d0142949a7c356',1,'IRCarrierAc64::_()'],['../classIRCoronaAc.html#aa6e07135d66fda5c609c0d6a317bb0de',1,'IRCoronaAc::_()'],['../classIRDelonghiAc.html#a85f522b680c0fb5974d741c8f399e691',1,'IRDelonghiAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()']]], - ['_5f_5fpad0_5f_5f_4630',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionAmcorProtocol.html#a8678a5bf4a4d917d8b02d854114b2cc0',1,'AmcorProtocol::__pad0__()'],['../unionArgoProtocol.html#a2b15de65bd2368c53c07850b32c240f1',1,'ArgoProtocol::__pad0__()'],['../unionCarrierProtocol.html#a8187ddda3722f75d7260b9a20147b2d3',1,'CarrierProtocol::__pad0__()'],['../unionCoronaProtocol.html#a06ac994ce787d3f1c65529e99d87d146',1,'CoronaProtocol::__pad0__()'],['../unionDelonghiProtocol.html#add514a227f6b9dcbaa41eaa5c81d6be2',1,'DelonghiProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_4631',['__pad10__',['../unionArgoProtocol.html#aa2c0eb524c5870ea14aac018834c203f',1,'ArgoProtocol::__pad10__()'],['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol::__pad10__()']]], - ['_5f_5fpad11_5f_5f_4632',['__pad11__',['../unionArgoProtocol.html#a6ccde46c9c033ca08161da12a2657187',1,'ArgoProtocol::__pad11__()'],['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol::__pad11__()']]], - ['_5f_5fpad12_5f_5f_4633',['__pad12__',['../unionArgoProtocol.html#a338bbbc882a3409af4ff510a9b7c001b',1,'ArgoProtocol::__pad12__()'],['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol::__pad12__()']]], - ['_5f_5fpad13_5f_5f_4634',['__pad13__',['../unionArgoProtocol.html#a093e716979933669e589fb5ead32a3a5',1,'ArgoProtocol']]], - ['_5f_5fpad14_5f_5f_4635',['__pad14__',['../unionArgoProtocol.html#ab35dfc5963cfdcf5a776c78d3ea5f423',1,'ArgoProtocol']]], - ['_5f_5fpad15_5f_5f_4636',['__pad15__',['../unionArgoProtocol.html#a1a3263d128339d19b1dfa2857da3475b',1,'ArgoProtocol']]], - ['_5f_5fpad16_5f_5f_4637',['__pad16__',['../unionArgoProtocol.html#a0e901bceaaa0cc966eabb937ad4b549a',1,'ArgoProtocol']]], - ['_5f_5fpad1_5f_5f_4638',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionAmcorProtocol.html#a9603d27ed81d3efc3b1fff2d6a877f6f',1,'AmcorProtocol::__pad1__()'],['../unionArgoProtocol.html#a87ef29a274368f72fe0e8aee0d09c241',1,'ArgoProtocol::__pad1__()'],['../unionCarrierProtocol.html#a344e5a62f7624bdc8d6b53c89d53ff01',1,'CarrierProtocol::__pad1__()'],['../unionCoronaProtocol.html#a562183bf52e393fb07ca57f5f8341bfd',1,'CoronaProtocol::__pad1__()'],['../unionDelonghiProtocol.html#a26a942f261b6d45e3d3a9734b8535c8d',1,'DelonghiProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()']]], - ['_5f_5fpad2_5f_5f_4639',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionAmcorProtocol.html#afefa908f10f814fadde57efdc4dce76c',1,'AmcorProtocol::__pad2__()'],['../unionArgoProtocol.html#a44dff1537c390a45ee43c57f2b80050d',1,'ArgoProtocol::__pad2__()'],['../unionCarrierProtocol.html#aac511fa89b32f24a01d179c37fffc2fa',1,'CarrierProtocol::__pad2__()'],['../unionCoronaProtocol.html#a53c510747a6970ea6f0172a39194369d',1,'CoronaProtocol::__pad2__()'],['../unionDelonghiProtocol.html#a78b2654018ed1c8c9a762ee6b1241bdc',1,'DelonghiProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_4640',['__pad3__',['../unionAmcorProtocol.html#a25002ba50158c3ee26d20d94d3507a9b',1,'AmcorProtocol::__pad3__()'],['../unionArgoProtocol.html#a6b383394993c83f6ed098826e5c02a4a',1,'ArgoProtocol::__pad3__()'],['../unionCarrierProtocol.html#a50193ce74f535d6dad154a96f54adb48',1,'CarrierProtocol::__pad3__()'],['../unionCoronaProtocol.html#a5f0dd8e7b0d0b5673088416e2f88df6e',1,'CoronaProtocol::__pad3__()'],['../unionDelonghiProtocol.html#a98b1173e0d07b4a29506f5df0f396e72',1,'DelonghiProtocol::__pad3__()'],['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionMideaProtocol.html#ac0d1346479086522065ec71ea0b87ad2',1,'MideaProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_4641',['__pad4__',['../unionAmcorProtocol.html#a4375506f729c9d45a1269aea9d968889',1,'AmcorProtocol::__pad4__()'],['../unionArgoProtocol.html#a2c425c7f223a53cdb33a783d133f5a77',1,'ArgoProtocol::__pad4__()'],['../unionCarrierProtocol.html#ade0f53c0cd05eaad14f0a3f0121e7b5e',1,'CarrierProtocol::__pad4__()'],['../unionCoronaProtocol.html#a58df374f27d3733fc63d3cc040478293',1,'CoronaProtocol::__pad4__()'],['../unionDelonghiProtocol.html#a4cc4153806e037068b52d1f356bca2ef',1,'DelonghiProtocol::__pad4__()'],['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionMideaProtocol.html#addde95b2535612df3ef2183998cf7ca6',1,'MideaProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_4642',['__pad5__',['../unionAmcorProtocol.html#aa2fa57304833e2067f438d74f898dfc8',1,'AmcorProtocol::__pad5__()'],['../unionArgoProtocol.html#aa3990245fbd608c4a4e7fef690532656',1,'ArgoProtocol::__pad5__()'],['../unionCarrierProtocol.html#a635772a0e49e2a82b7e665b1f8d42148',1,'CarrierProtocol::__pad5__()'],['../unionCoronaProtocol.html#a8a34423073c0a91ace50605fc8337bc0',1,'CoronaProtocol::__pad5__()'],['../unionDelonghiProtocol.html#a09090f4876d843dc6c4425e2f2e9b285',1,'DelonghiProtocol::__pad5__()'],['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_4643',['__pad6__',['../unionAmcorProtocol.html#ac7c9258f0465028a4d95468e9289a95e',1,'AmcorProtocol::__pad6__()'],['../unionArgoProtocol.html#a644f13f404fc89ac769437a1cf6ef5cc',1,'ArgoProtocol::__pad6__()'],['../unionCarrierProtocol.html#a683b70f292ffed7253b8956225a71a51',1,'CarrierProtocol::__pad6__()'],['../unionCoronaProtocol.html#aabdd6e87ab321b893f07461f755094c0',1,'CoronaProtocol::__pad6__()'],['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_4644',['__pad7__',['../unionAmcorProtocol.html#a06dbf04a6bb3326c3277308bee61e375',1,'AmcorProtocol::__pad7__()'],['../unionArgoProtocol.html#a981cc0905966560692835630b870bc96',1,'ArgoProtocol::__pad7__()'],['../unionCarrierProtocol.html#a21fe681b7a9b1a507d03b6eef716f57d',1,'CarrierProtocol::__pad7__()'],['../unionCoronaProtocol.html#aa833c2aa87c8b67ded46784d9d9fd506',1,'CoronaProtocol::__pad7__()'],['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol::__pad7__()']]], - ['_5f_5fpad8_5f_5f_4645',['__pad8__',['../unionAmcorProtocol.html#a7a602c91754a62acb96b65fad3ed5009',1,'AmcorProtocol::__pad8__()'],['../unionArgoProtocol.html#aada1e2f63bf852c820d3313d6bf55e2e',1,'ArgoProtocol::__pad8__()'],['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol::__pad8__()']]], - ['_5f_5fpad9_5f_5f_4646',['__pad9__',['../unionArgoProtocol.html#a38bc056c18e086e4ff91d86e33b0bc08',1,'ArgoProtocol::__pad9__()'],['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol::__pad9__()']]], - ['_5fclean_4647',['_clean',['../classIRFujitsuAC.html#acf7808cfeb6e15cea1d5ee8196075e04',1,'IRFujitsuAC']]], - ['_5fcmd_4648',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdesiredtemp_4649',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_4650',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_4651',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_4652',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5ffanspeed_4653',['_fanSpeed',['../classIRFujitsuAC.html#a537f02328039c044f7152bf0a61a05c9',1,'IRFujitsuAC']]], - ['_5ffilter_4654',['_filter',['../classIRFujitsuAC.html#a4a2f96f4f1cd6650d48ebc3b13fd561c',1,'IRFujitsuAC']]], - ['_5fforcepower_4655',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_4656',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5finverted_4657',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firsend_4658',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTechnibelAc.html#adb30f91c384028cc53aaae6edaacf3b0',1,'IRTechnibelAc::_irsend()'],['../classIRTechnibelAc.html#a9db7b15e279e0c17e0eafd8201d5c7dc',1,'IRTechnibelAc::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTranscoldAc.html#a3f7136d98c100a67b97f4f8afb750fc4',1,'IRTranscoldAc::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_4659',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastsentpowerstate_4660',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5fmode_4661',['_mode',['../classIRFujitsuAC.html#a1b22f3bb3dc43e370aabad5b6efd7ca5',1,'IRFujitsuAC::_mode()'],['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc::_mode()']]], - ['_5fmodel_4662',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_4663',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5fofftimer_4664',['_offtimer',['../classIRFujitsuAC.html#a5a87060bf88c48da5e16cd01114f7223',1,'IRFujitsuAC']]], - ['_5fontimer_4665',['_ontimer',['../classIRFujitsuAC.html#a4f55c0b4a6768e1392778d8a23485ebb',1,'IRFujitsuAC']]], - ['_5foutsidequiet_4666',['_outsideQuiet',['../classIRFujitsuAC.html#a20a794245e0bc44607faf7927a285672',1,'IRFujitsuAC']]], - ['_5fpin_4667',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_4668',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprevioustemp_4669',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()']]], - ['_5fprotocol_4670',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5fsaved_5ftemp_4671',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()'],['../classIRTechnibelAc.html#a0b98069ac7367419f736fa0e639e4847',1,'IRTechnibelAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_4672',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc::_saved_temp_units()'],['../classIRTechnibelAc.html#a8d5a8e132e1d5884564f3212d396d160',1,'IRTechnibelAc::_saved_temp_units()']]], - ['_5fsend_5fswing_4673',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fstate_5flength_4674',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_4675',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_4676',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_4677',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingmode_4678',['_swingMode',['../classIRFujitsuAC.html#a74a00fbba55b457b68f61481ce9ffbaa',1,'IRFujitsuAC']]], - ['_5fswingvtoggle_4679',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_4680',['_temp',['../classIRFujitsuAC.html#afcff35df74885c63651134ba85359694',1,'IRFujitsuAC::_temp()'],['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_4681',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_4682',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftimertype_4683',['_timertype',['../classIRFujitsuAC.html#a4400fcecb4d0689ec735601835a941d5',1,'IRFujitsuAC']]], - ['_5ftolerance_4684',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5funknown_5fthreshold_4685',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_1.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_1.js deleted file mode 100644 index bf46b0232..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['address_4686',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_10.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_10.js deleted file mode 100644 index 254c8bd43..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_10.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['raw_7373',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionAmcorProtocol.html#a2044da7ab12175f20657f18f4b76728b',1,'AmcorProtocol::raw()'],['../unionArgoProtocol.html#a845151d1f5062ab0116f3a413e23da8f',1,'ArgoProtocol::raw()'],['../unionCarrierProtocol.html#a1a09f5c8340a2e7e074a332bf4906dfd',1,'CarrierProtocol::raw()'],['../unionCoronaProtocol.html#a16cbcc7f8542e9367a815efa4491c71b',1,'CoronaProtocol::raw()'],['../unionDelonghiProtocol.html#a5e82aa5e22fdbdb64b5232766b9ac7c2',1,'DelonghiProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()']]], - ['rawbuf_7374',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_7375',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rcvstate_7376',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['recvpin_7377',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_7378',['remote',['../classIRDaikinESP.html#ac24751c23f6b27cb26dcd51e91c63c9b',1,'IRDaikinESP::remote()'],['../classIRGoodweatherAc.html#af511a0703a4cbc77f5b8a520abf11f2f',1,'IRGoodweatherAc::remote()'],['../classIRSharpAc.html#a411a4db0579ed84b54533dcde153d5da',1,'IRSharpAc::remote()']]], - ['remote_5fstate_7379',['remote_state',['../classIRCoolixAC.html#a03bf575961d4d924275cb16a45edaa46',1,'IRCoolixAC::remote_state()'],['../classIRDaikin2.html#a0b28396956687a4009cab7c860b9ce4b',1,'IRDaikin2::remote_state()'],['../classIRDaikin216.html#abf9bab0a52f9227d54f583488b024a85',1,'IRDaikin216::remote_state()'],['../classIRDaikin160.html#a17fb5726060e8872735559654a72cb22',1,'IRDaikin160::remote_state()'],['../classIRDaikin176.html#adb6863da11f0569524f0beb31681d0b5',1,'IRDaikin176::remote_state()'],['../classIRDaikin128.html#af1b36cc2f51cd145da3bfe7ec3d9134a',1,'IRDaikin128::remote_state()'],['../classIRDaikin152.html#aa16c89c0cb6d83aef83d293466dab197',1,'IRDaikin152::remote_state()'],['../classIRDaikin64.html#aa279d6df0d130e727c3a1500b283eda0',1,'IRDaikin64::remote_state()'],['../classIRElectraAc.html#a3f423f5d896e4bfc2f3a0ce04b596289',1,'IRElectraAc::remote_state()'],['../classIRFujitsuAC.html#a851b9192e1f18f6a4b2f1726d49ef33b',1,'IRFujitsuAC::remote_state()'],['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc.html#a44b3d360b2a8044782b73f7f4a533a99',1,'IRHitachiAc::remote_state()'],['../classIRHitachiAc1.html#a13340cba808d457d6093f1c9efffc419',1,'IRHitachiAc1::remote_state()'],['../classIRHitachiAc424.html#a58bac4ef7f46ef1e9f38c1a144e2ca41',1,'IRHitachiAc424::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../classIRKelvinatorAC.html#a70f75821274e53cc5ed64ac53a6e32b4',1,'IRKelvinatorAC::remote_state()'],['../classIRLgAc.html#a481133671657b13ecce1bd08f710089d',1,'IRLgAc::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRMitsubishiAC.html#ac0a149b9705371e59c45ece162bc1aab',1,'IRMitsubishiAC::remote_state()'],['../classIRMitsubishi136.html#ad1e80d693d3558f0bed4c0f7995bddd5',1,'IRMitsubishi136::remote_state()'],['../classIRMitsubishi112.html#a64a40e57208d08b5cd6ef87a7c8d6671',1,'IRMitsubishi112::remote_state()'],['../classIRMitsubishiHeavy152Ac.html#a6d333f238bf1b42e39919d4897080aa8',1,'IRMitsubishiHeavy152Ac::remote_state()'],['../classIRMitsubishiHeavy88Ac.html#a46be0e755530f59fad7d3f9050ecc107',1,'IRMitsubishiHeavy88Ac::remote_state()'],['../classIRNeoclimaAc.html#a336507e0635ede3b9ebf53881ece50bb',1,'IRNeoclimaAc::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()'],['../classIRSamsungAc.html#a5966a3b665ce034de807de1955396e10',1,'IRSamsungAc::remote_state()'],['../classIRSanyoAc.html#a157b54dba73a31d1945ed3ca7c676c37',1,'IRSanyoAc::remote_state()'],['../classIRTcl112Ac.html#a6eda1148a977a3ccf0c6c30239fca4c8',1,'IRTcl112Ac::remote_state()'],['../classIRTechnibelAc.html#a83f2c5b6b4494299bee1bcfa6f3a4a31',1,'IRTechnibelAc::remote_state()'],['../classIRTecoAc.html#a3c2ad7587ed4f5589deb20d8dc16b1e4',1,'IRTecoAc::remote_state()'],['../classIRToshibaAC.html#ab6c99091be13e159d88a07a9222c9a7c',1,'IRToshibaAC::remote_state()'],['../classIRTranscoldAc.html#a42205803cde54eea1886adfc578523eb',1,'IRTranscoldAc::remote_state()'],['../classIRTrotecESP.html#afccba55e2c3d42c716591c10bc9afa18',1,'IRTrotecESP::remote_state()'],['../classIRVestelAc.html#a74d889a0db2fa63a2e38aaa15819568c',1,'IRVestelAc::remote_state()'],['../classIRWhirlpoolAc.html#a65333985c39773896071081ebcca4821',1,'IRWhirlpoolAc::remote_state()']]], - ['remote_5ftime_5fstate_7380',['remote_time_state',['../classIRVestelAc.html#a9b10e4a0c1f71aecbeb385666d1a53bd',1,'IRVestelAc']]], - ['repeat_7381',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], - ['roomtemp_7382',['RoomTemp',['../unionArgoProtocol.html#a35f91863997bb886da9fc6a303e62c65',1,'ArgoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_11.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_11.js deleted file mode 100644 index 782f4992e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_11.js +++ /dev/null @@ -1,21 +0,0 @@ -var searchData= -[ - ['saved_5fstate_7383',['saved_state',['../classIRCoolixAC.html#aec0bce8019d7d49a30915394bee56b9a',1,'IRCoolixAC::saved_state()'],['../classIRTranscoldAc.html#a3f5f493caff4eaff466b050fd6f5c9e1',1,'IRTranscoldAc::saved_state()']]], - ['scrap_7384',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], - ['sections_7385',['sections',['../unionCoronaProtocol.html#ae7cdfa7315fae2be9aa64f57b10b325a',1,'CoronaProtocol']]], - ['sleep_7386',['Sleep',['../unionCarrierProtocol.html#a957ac027dec4e1942d88ac8f7bcbc767',1,'CarrierProtocol::Sleep()'],['../unionDelonghiProtocol.html#a8ae7e6b8982693fc0cff79dcc5352cc5',1,'DelonghiProtocol::Sleep()'],['../unionGreeProtocol.html#a1ea579a0c99eb1dc8fd72867519ab258',1,'GreeProtocol::Sleep()'],['../unionHaierProtocol.html#a88942d48d868ff5697040d5a89f93099',1,'HaierProtocol::Sleep()'],['../unionHaierYRW02Protocol.html#a0b0ad77222892e9fccf122fcee95d87d',1,'HaierYRW02Protocol::Sleep()'],['../unionMideaProtocol.html#aeea5e2520e4cd1773c1eddc8a84af2d3',1,'MideaProtocol::Sleep()'],['../unionVoltasProtocol.html#a1a47a7e57717d28e610e97b40e86b1ca',1,'VoltasProtocol::Sleep()'],['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t::sleep()']]], - ['sleepflag_7387',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], - ['start_7388',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], - ['state_7389',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], - ['success_7390',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], - ['sum_7391',['Sum',['../unionAmcorProtocol.html#a108cf161abbbdd7ae4178f70066e8ae6',1,'AmcorProtocol::Sum()'],['../unionArgoProtocol.html#ab0ec3039d81a3a2a6c8b44f5c64d2fae',1,'ArgoProtocol::Sum()'],['../unionCarrierProtocol.html#acbbf207e7a0e79d74713e6f8598c16c2',1,'CarrierProtocol::Sum()'],['../unionDelonghiProtocol.html#a9f7a2ecd94db83a8673e8929b373a036',1,'DelonghiProtocol::Sum()'],['../unionGreeProtocol.html#a7502111538873c23d70129b77a26019e',1,'GreeProtocol::Sum()'],['../unionHaierProtocol.html#a5842a170e3cdd0ad823cf244c7b8dd51',1,'HaierProtocol::Sum()'],['../unionHaierYRW02Protocol.html#a656449e6901b3333ca0efe4a2e662fc7',1,'HaierYRW02Protocol::Sum()'],['../unionMideaProtocol.html#a3d4afe5411a769c48e8bfaa3a9e8e84c',1,'MideaProtocol::Sum()']]], - ['swing_7392',['Swing',['../unionGreeProtocol.html#a6ee1b2c7459fcd5ed839a7730a2c5931',1,'GreeProtocol::Swing()'],['../unionHaierProtocol.html#afc7ba334ae13911868d90c2fe37813b9',1,'HaierProtocol::Swing()'],['../unionHaierYRW02Protocol.html#a671ff83501bd3e6f6e5c2b08bb6d26d1',1,'HaierYRW02Protocol::Swing()']]], - ['swingauto_7393',['SwingAuto',['../unionGreeProtocol.html#a866257731360d655ffa24ba3fbdfa3cc',1,'GreeProtocol']]], - ['swingflag_7394',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC::swingFlag()'],['../classIRTranscoldAc.html#acaaa6c7fc022b3a259692bfd61258f49',1,'IRTranscoldAc::swingFlag()']]], - ['swingh_7395',['SwingH',['../unionVoltasProtocol.html#a55094a8796bf95e81eb7dd9a91d7a127',1,'VoltasProtocol::SwingH()'],['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t::swingh()']]], - ['swinghchange_7396',['SwingHChange',['../unionVoltasProtocol.html#a32c53808a0f8b6574025f2b3c721ae47',1,'VoltasProtocol']]], - ['swinghflag_7397',['swingHFlag',['../classIRCoolixAC.html#a1c5fb27fb58d4d1a1fd8c9931eba58c4',1,'IRCoolixAC::swingHFlag()'],['../classIRTranscoldAc.html#a15da6840a234b2ff739a86d19f15c58d',1,'IRTranscoldAc::swingHFlag()']]], - ['swingv_7398',['swingv',['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t::swingv()'],['../unionCarrierProtocol.html#a9d08c75d7f8357139cd3d844cf29ca22',1,'CarrierProtocol::SwingV()'],['../unionVoltasProtocol.html#ac2a240ab6b19af0e472c3134331a6e68',1,'VoltasProtocol::SwingV()']]], - ['swingvflag_7399',['swingVFlag',['../classIRCoolixAC.html#adf18ad8494466f6301176ce10aa3a075',1,'IRCoolixAC::swingVFlag()'],['../classIRTranscoldAc.html#ae2aa4d5a19dd9056606ca20d03c893df',1,'IRTranscoldAc::swingVFlag()']]], - ['swingvtoggle_7400',['SwingVToggle',['../unionCoronaProtocol.html#a3b21dc7f46b2153be56daeca1b0b40e8',1,'CoronaProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_12.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_12.js deleted file mode 100644 index 4fc94246e..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_12.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['temp_7401',['Temp',['../unionAirwellProtocol.html#a5a6bd2772f3b9b5898ea84cf272cdf87',1,'AirwellProtocol::Temp()'],['../unionAmcorProtocol.html#a93dac8f8fa9796452fc67be02ac154cd',1,'AmcorProtocol::Temp()'],['../unionArgoProtocol.html#a928a356c79acc2b56ffeea8e536d9e98',1,'ArgoProtocol::Temp()'],['../unionCarrierProtocol.html#a43fb183022e8b4aef36bee0cb0cd9aaa',1,'CarrierProtocol::Temp()'],['../unionCoronaProtocol.html#a18002c42df09d30705af1ebd4c5cd2e3',1,'CoronaProtocol::Temp()'],['../unionDelonghiProtocol.html#a39bdc64b05d4cc3c55c9b33779a2b673',1,'DelonghiProtocol::Temp()'],['../unionGreeProtocol.html#a46075a9f5fbd0d3829a84cca3d4a9d4f',1,'GreeProtocol::Temp()'],['../unionHaierProtocol.html#affb6ef60b50ae3351393e3f168ae8f2f',1,'HaierProtocol::Temp()'],['../unionHaierYRW02Protocol.html#a19211a1af7d11da6034b87cb7a042fcd',1,'HaierYRW02Protocol::Temp()'],['../unionMideaProtocol.html#a4206c02c5cafe996c05d92beb7a7e8d6',1,'MideaProtocol::Temp()'],['../unionVoltasProtocol.html#a23efaf01747b58d1e77c101f99bc2b4c',1,'VoltasProtocol::Temp()']]], - ['tempextradegreef_7402',['TempExtraDegreeF',['../unionGreeProtocol.html#ae093878b66b84bbc4f5c5df5e59fd639',1,'GreeProtocol']]], - ['tempset_7403',['TempSet',['../unionVoltasProtocol.html#a16ae188cb58127b21fb905f3b1d8653c',1,'VoltasProtocol']]], - ['timeout_7404',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], - ['timer_7405',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t']]], - ['timerenabled_7406',['TimerEnabled',['../unionGreeProtocol.html#a603b0bde826287c2ddddb4d17cf9acd0',1,'GreeProtocol']]], - ['timerhalfhr_7407',['TimerHalfHr',['../unionGreeProtocol.html#a3e9fe2455001daec79f687797842239c',1,'GreeProtocol']]], - ['timerhours_7408',['TimerHours',['../unionGreeProtocol.html#a7cc95f9868755876049dbe2b3ce4c730',1,'GreeProtocol']]], - ['timertenshr_7409',['TimerTensHr',['../unionGreeProtocol.html#a21cc20bf1a214a17c735e5997f236ee9',1,'GreeProtocol']]], - ['turbo_7410',['Turbo',['../unionGreeProtocol.html#a36add055a70df62e09bca1e031314a4d',1,'GreeProtocol::Turbo()'],['../unionHaierYRW02Protocol.html#a1cea874c8398b49e704ba0943284c64a',1,'HaierYRW02Protocol::Turbo()'],['../unionVoltasProtocol.html#aa0bfed2718430a9cffdfdc02b345971b',1,'VoltasProtocol::Turbo()'],['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t::turbo()']]], - ['turboflag_7411',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_13.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_13.js deleted file mode 100644 index c09465b93..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_13.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['unknown_7412',['unknown',['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol']]], - ['unknown1_7413',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]], - ['unknown2_7414',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]], - ['use_5ftime_5fstate_7415',['use_time_state',['../classIRVestelAc.html#af1b622c50a4952fb3edaf483e1bf9328',1,'IRVestelAc']]], - ['used_7416',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]], - ['usefahrenheit_7417',['useFahrenheit',['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()'],['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_14.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_14.js deleted file mode 100644 index f09cefbd8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_14.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['value_7418',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]], - ['vent_7419',['Vent',['../unionAmcorProtocol.html#a289bcba64f01cd2c847845f41978d400',1,'AmcorProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_15.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_15.js deleted file mode 100644 index 3e130a7ed..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_15.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['wand_5fid_7420',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]], - ['wifi_7421',['Wifi',['../unionVoltasProtocol.html#aae1406825a156f159c5ad4b28d20364c',1,'VoltasProtocol::Wifi()'],['../unionGreeProtocol.html#a6cf8e0a6c54a5d2b6f14074c6f3dcc92',1,'GreeProtocol::WiFi()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_16.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_16.js deleted file mode 100644 index 795352453..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xfan_7422',['Xfan',['../unionGreeProtocol.html#a3fbf66dfc2043710c5e00f8230eddb48',1,'GreeProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_2.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_2.js deleted file mode 100644 index 8f6b4677b..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['backup_4687',['backup',['../classIRToshibaAC.html#adc8d8c6918cd110f524f6bedf6f2bb6e',1,'IRToshibaAC']]], - ['beep_4688',['beep',['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t']]], - ['bits_4689',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], - ['boost_4690',['Boost',['../unionDelonghiProtocol.html#ad3347e0739d5c00f3fb5cba7c9f53bcd',1,'DelonghiProtocol']]], - ['bufsize_4691',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], - ['button_4692',['Button',['../unionHaierYRW02Protocol.html#ab5b13626ecf6214cc1be52d47909915d',1,'HaierYRW02Protocol']]], - ['byte_4693',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_3.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_3.js deleted file mode 100644 index e55f08a5d..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_3.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['celsius_4694',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], - ['checksum_4695',['Checksum',['../unionVoltasProtocol.html#a4349ae4488d2d9c9dd5606502d486b19',1,'VoltasProtocol']]], - ['clean_4696',['clean',['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t']]], - ['cleanflag_4697',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], - ['clock_4698',['clock',['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t']]], - ['cmd_4699',['cmd',['../unionmagiquest.html#ac72906a43b7ceb18940a01487d1f3981',1,'magiquest']]], - ['command_4700',['command',['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results::command()'],['../unionHaierProtocol.html#aeb39971e74e12fb0c7463006d6c644bd',1,'HaierProtocol::Command()']]], - ['cool_5fmode_4701',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]], - ['currhours_4702',['CurrHours',['../unionHaierProtocol.html#a093d2441856e448462551ac7bc1b8d9b',1,'HaierProtocol']]], - ['currmins_4703',['CurrMins',['../unionHaierProtocol.html#a70abde8bccafd39cf1a1506f63481893',1,'HaierProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_4.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_4.js deleted file mode 100644 index a0f5d3b7a..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_4.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['data_4704',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['data0_4705',['Data0',['../structCoronaSection.html#a975b14d8bc30807013714158ef7474ea',1,'CoronaSection']]], - ['data0inv_4706',['Data0Inv',['../structCoronaSection.html#ab05024b8314929dcd8ccdda9b497be8c',1,'CoronaSection']]], - ['data1_4707',['Data1',['../structCoronaSection.html#a59d97a1bc0a1be50b6f96c4d70673425',1,'CoronaSection']]], - ['data1inv_4708',['Data1Inv',['../structCoronaSection.html#ada247bbfb60f24cd9e9a612c9621cbb4',1,'CoronaSection']]], - ['decode_5ftype_4709',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['degrees_4710',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['displaytemp_4711',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_5.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_5.js deleted file mode 100644 index 5f33fc8d8..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['econo_4712',['Econo',['../unionCoronaProtocol.html#a1076afecc4292c370fed27ce380a1ed5',1,'CoronaProtocol::Econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()'],['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_6.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_6.js deleted file mode 100644 index a05cdc643..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_6.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['fahrenheit_4713',['Fahrenheit',['../unionDelonghiProtocol.html#a8fe11756b36ba6f55eaccf553cc0dea3',1,'DelonghiProtocol']]], - ['fan_4714',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionAmcorProtocol.html#a208edfb233f0747b5abe8911fe55bfb3',1,'AmcorProtocol::Fan()'],['../unionArgoProtocol.html#a9247f87997f4fda42940ca204b8363d6',1,'ArgoProtocol::Fan()'],['../unionCarrierProtocol.html#ab7e563e2015627a65259b0190908034b',1,'CarrierProtocol::Fan()'],['../unionCoronaProtocol.html#a981185f964fcaa1dc657a7ad770c446d',1,'CoronaProtocol::Fan()'],['../unionDelonghiProtocol.html#ab3a1bc23e8349851f7d813b117426518',1,'DelonghiProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()']]], - ['fanspeed_4715',['FanSpeed',['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()'],['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()']]], - ['filter_4716',['filter',['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t']]], - ['flap_4717',['Flap',['../unionArgoProtocol.html#ab7d5a6a5d6849160b5980de7615dd5d1',1,'ArgoProtocol']]], - ['flap_5fmode_4718',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_7.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_7.js deleted file mode 100644 index 87c138581..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_7.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['header0_4719',['Header0',['../structCoronaSection.html#a3b3c0a1a42da65bb4b481e59b42f26a6',1,'CoronaSection']]], - ['header1_4720',['Header1',['../structCoronaSection.html#a3d6d6c1e31f82a76cd88f81bcdb83a3a',1,'CoronaSection']]], - ['health_4721',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()']]], - ['heat_5fmode_4722',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_9.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_9.js deleted file mode 100644 index 9e2255b88..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_9.js +++ /dev/null @@ -1,2606 +0,0 @@ -var searchData= -[ - ['k3dstr_4728',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], - ['k6thsensestr_4729',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], - ['k8cheatstr_4730',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], - ['kairflowstr_4731',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], - ['kairwellauto_4732',['kAirwellAuto',['../ir__Airwell_8h.html#a5f3dbadb46874c672e093c5bbb59a97e',1,'ir_Airwell.h']]], - ['kairwellbits_4733',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], - ['kairwellcool_4734',['kAirwellCool',['../ir__Airwell_8h.html#ab82c81efca876184ab30f24347dfa6af',1,'ir_Airwell.h']]], - ['kairwelldry_4735',['kAirwellDry',['../ir__Airwell_8h.html#a1274093143c10ea0208fdfe7b4ebdb02',1,'ir_Airwell.h']]], - ['kairwellfan_4736',['kAirwellFan',['../ir__Airwell_8h.html#abcdf6dac387c3fa5bb2eeb0327250ac7',1,'ir_Airwell.h']]], - ['kairwellfanauto_4737',['kAirwellFanAuto',['../ir__Airwell_8h.html#a40c8e262e6e6084c1d069bebb6a0fcb1',1,'ir_Airwell.h']]], - ['kairwellfanhigh_4738',['kAirwellFanHigh',['../ir__Airwell_8h.html#ab269b3942bee5458ec89a917d2ab0288',1,'ir_Airwell.h']]], - ['kairwellfanlow_4739',['kAirwellFanLow',['../ir__Airwell_8h.html#ab105d4d9a63166f9fbf2dfb47a58a3b7',1,'ir_Airwell.h']]], - ['kairwellfanmedium_4740',['kAirwellFanMedium',['../ir__Airwell_8h.html#ac755543eac2fad7bbd1f2727e11aee21',1,'ir_Airwell.h']]], - ['kairwellfootermark_4741',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], - ['kairwellhalfclockperiod_4742',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], - ['kairwellhdrmark_4743',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], - ['kairwellhdrspace_4744',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], - ['kairwellheat_4745',['kAirwellHeat',['../ir__Airwell_8h.html#a0f6e36670946f015d4599ad626300ef7',1,'ir_Airwell.h']]], - ['kairwellknowngoodstate_4746',['kAirwellKnownGoodState',['../ir__Airwell_8h.html#ae907f815fab982317d7865525b0294d5',1,'ir_Airwell.h']]], - ['kairwellmaxtemp_4747',['kAirwellMaxTemp',['../ir__Airwell_8h.html#adccc14f29d12b3c1e38a2e6a7b820b5f',1,'ir_Airwell.h']]], - ['kairwellminrepeats_4748',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], - ['kairwellmintemp_4749',['kAirwellMinTemp',['../ir__Airwell_8h.html#ad8eef8b76485134c1c5278cae460e028',1,'ir_Airwell.h']]], - ['kairwelloverhead_4750',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], - ['kaiwarct501bits_4751',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], - ['kaiwarct501minrepeats_4752',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], - ['kaiwarct501postbits_4753',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], - ['kaiwarct501postdata_4754',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], - ['kaiwarct501prebits_4755',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], - ['kaiwarct501predata_4756',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], - ['kallprotocolnamesstr_4757',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], - ['kalokabits_4758',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], - ['kalokaledblue_4759',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], - ['kalokaledgreen_4760',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], - ['kalokaledlightgreen_4761',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], - ['kalokaledmidblue_4762',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], - ['kalokaledorange_4763',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], - ['kalokaledpink_4764',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], - ['kalokaledpinkred_4765',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], - ['kalokaledrainbow_4766',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], - ['kalokaledred_4767',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], - ['kalokaledtreegrow_4768',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], - ['kalokaledwhite_4769',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], - ['kalokaledyellow_4770',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], - ['kalokanightfade_4771',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], - ['kalokanighttimer_4772',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], - ['kalokapower_4773',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], - ['kamcorauto_4774',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], - ['kamcorbits_4775',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], - ['kamcorcool_4776',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], - ['kamcordefaultrepeat_4777',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], - ['kamcordry_4778',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], - ['kamcorfan_4779',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], - ['kamcorfanauto_4780',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], - ['kamcorfanmax_4781',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], - ['kamcorfanmed_4782',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], - ['kamcorfanmin_4783',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], - ['kamcorfootermark_4784',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], - ['kamcorgap_4785',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], - ['kamcorhdrmark_4786',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], - ['kamcorhdrspace_4787',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], - ['kamcorheat_4788',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], - ['kamcormax_4789',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], - ['kamcormaxtemp_4790',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], - ['kamcormintemp_4791',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], - ['kamcoronemark_4792',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], - ['kamcoronespace_4793',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], - ['kamcorpoweroff_4794',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], - ['kamcorpoweron_4795',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], - ['kamcorstatelength_4796',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], - ['kamcortolerance_4797',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], - ['kamcorventon_4798',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], - ['kamcorzeromark_4799',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], - ['kamcorzerospace_4800',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], - ['kargoauto_4801',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], - ['kargobitmark_4802',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], - ['kargobits_4803',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], - ['kargocool_4804',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], - ['kargodefaultrepeat_4805',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], - ['kargodry_4806',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], - ['kargofan1_4807',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], - ['kargofan2_4808',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], - ['kargofan3_4809',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], - ['kargofanauto_4810',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], - ['kargoflap1_4811',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], - ['kargoflap2_4812',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], - ['kargoflap3_4813',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], - ['kargoflap4_4814',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], - ['kargoflap5_4815',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], - ['kargoflap6_4816',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], - ['kargoflapauto_4817',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], - ['kargoflapfull_4818',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], - ['kargogap_4819',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], - ['kargohdrmark_4820',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], - ['kargohdrspace_4821',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], - ['kargoheat_4822',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], - ['kargoheatauto_4823',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], - ['kargoheatbit_4824',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], - ['kargoheatblink_4825',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], - ['kargomaxroomtemp_4826',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], - ['kargomaxtemp_4827',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], - ['kargomintemp_4828',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], - ['kargooff_4829',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], - ['kargoonespace_4830',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], - ['kargostatelength_4831',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], - ['kargotempdelta_4832',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], - ['kargozerospace_4833',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], - ['kautomaticstr_4834',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], - ['kautostr_4835',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], - ['kbeepstr_4836',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], - ['kbitsstr_4837',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], - ['kbottomstr_4838',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], - ['kbreezestr_4839',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], - ['kbuttonstr_4840',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], - ['kcancelstr_4841',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], - ['kcarrierac40bitmark_4842',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], - ['kcarrierac40bits_4843',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], - ['kcarrierac40gap_4844',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrmark_4845',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrspace_4846',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], - ['kcarrierac40minrepeat_4847',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], - ['kcarrierac40onespace_4848',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], - ['kcarrierac40zerospace_4849',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], - ['kcarrierac64bitmark_4850',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], - ['kcarrierac64bits_4851',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], - ['kcarrierac64checksumoffset_4852',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], - ['kcarrierac64checksumsize_4853',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], - ['kcarrierac64cool_4854',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], - ['kcarrierac64fan_4855',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], - ['kcarrierac64fanauto_4856',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], - ['kcarrierac64fanhigh_4857',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], - ['kcarrierac64fanlow_4858',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], - ['kcarrierac64fanmedium_4859',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], - ['kcarrierac64gap_4860',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrmark_4861',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrspace_4862',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], - ['kcarrierac64heat_4863',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], - ['kcarrierac64maxtemp_4864',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], - ['kcarrierac64minrepeat_4865',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], - ['kcarrierac64mintemp_4866',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], - ['kcarrierac64onespace_4867',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], - ['kcarrierac64timermax_4868',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], - ['kcarrierac64timermin_4869',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], - ['kcarrierac64zerospace_4870',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], - ['kcarrieracbitmark_4871',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], - ['kcarrieracbits_4872',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], - ['kcarrieracfreq_4873',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], - ['kcarrieracgap_4874',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], - ['kcarrierachdrmark_4875',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], - ['kcarrierachdrspace_4876',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], - ['kcarrieracminrepeat_4877',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], - ['kcarrieraconespace_4878',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], - ['kcarrieraczerospace_4879',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], - ['kceilingstr_4880',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], - ['kcelsiusfahrenheitstr_4881',['kCelsiusFahrenheitStr',['../IRtext_8cpp.html#ab24f542059d0c1c1352686469c9fde7d',1,'kCelsiusFahrenheitStr(): IRtext.cpp'],['../IRtext_8h.html#a9bd25ef522ae667d9869b6f6ea937f5d',1,'kCelsiusFahrenheitStr(): IRtext.cpp']]], - ['kcelsiusstr_4882',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], - ['kcentrestr_4883',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], - ['kchangestr_4884',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], - ['kcirculatestr_4885',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], - ['kcleanstr_4886',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], - ['kclockstr_4887',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], - ['kcodestr_4888',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], - ['kcolonspacestr_4889',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], - ['kcomfortstr_4890',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], - ['kcommandstr_4891',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], - ['kcommaspacestr_4892',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], - ['kcoolixauto_4893',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], - ['kcoolixbitmark_4894',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], - ['kcoolixbitmarkticks_4895',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], - ['kcoolixbits_4896',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], - ['kcoolixclean_4897',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], - ['kcoolixcmdfan_4898',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], - ['kcoolixcool_4899',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], - ['kcoolixdefaultrepeat_4900',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], - ['kcoolixdefaultstate_4901',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], - ['kcoolixdry_4902',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], - ['kcoolixfan_4903',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], - ['kcoolixfanauto_4904',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], - ['kcoolixfanauto0_4905',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], - ['kcoolixfanfixed_4906',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], - ['kcoolixfanmax_4907',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], - ['kcoolixfanmed_4908',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], - ['kcoolixfanmin_4909',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], - ['kcoolixfanoffset_4910',['kCoolixFanOffset',['../ir__Coolix_8h.html#a1656f488974bd12db4049dfa8ff43a4e',1,'ir_Coolix.h']]], - ['kcoolixfansize_4911',['kCoolixFanSize',['../ir__Coolix_8h.html#a5f4649b5b73766245bc82191cdc0e596',1,'ir_Coolix.h']]], - ['kcoolixfantempcode_4912',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], - ['kcoolixfanzonefollow_4913',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], - ['kcoolixhdrmark_4914',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], - ['kcoolixhdrmarkticks_4915',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspace_4916',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspaceticks_4917',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], - ['kcoolixheat_4918',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], - ['kcoolixled_4919',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], - ['kcoolixmingap_4920',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], - ['kcoolixmingapticks_4921',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], - ['kcoolixmodeoffset_4922',['kCoolixModeOffset',['../ir__Coolix_8h.html#acd17067177e1cc6776b7932afd9fbdb2',1,'ir_Coolix.h']]], - ['kcoolixmodesize_4923',['kCoolixModeSize',['../ir__Coolix_8h.html#a69e5ee4c5eb95ca3346d9d9186a688a8',1,'ir_Coolix.h']]], - ['kcoolixoff_4924',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], - ['kcoolixonespace_4925',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], - ['kcoolixonespaceticks_4926',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], - ['kcoolixprefix_4927',['kCoolixPrefix',['../ir__Coolix_8h.html#a1b88ef6651189ba330d8e2847528964b',1,'ir_Coolix.h']]], - ['kcoolixsensortempignorecode_4928',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], - ['kcoolixsensortempmax_4929',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], - ['kcoolixsensortempmin_4930',['kCoolixSensorTempMin',['../ir__Coolix_8h.html#a48f3f3ad79a53e0758270647db0b089c',1,'ir_Coolix.h']]], - ['kcoolixsensortempoffset_4931',['kCoolixSensorTempOffset',['../ir__Coolix_8h.html#a03edec58ad078d7de7436929c463898a',1,'ir_Coolix.h']]], - ['kcoolixsensortempsize_4932',['kCoolixSensorTempSize',['../ir__Coolix_8h.html#a979d1d4f84432afc29ac3fcc78353d6c',1,'ir_Coolix.h']]], - ['kcoolixsleep_4933',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], - ['kcoolixswing_4934',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], - ['kcoolixswingh_4935',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], - ['kcoolixswingv_4936',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], - ['kcoolixtempmap_4937',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], - ['kcoolixtempmax_4938',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], - ['kcoolixtempmin_4939',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], - ['kcoolixtempoffset_4940',['kCoolixTempOffset',['../ir__Coolix_8h.html#ac49173b671af51026e378d65c7bc696b',1,'ir_Coolix.h']]], - ['kcoolixtemprange_4941',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], - ['kcoolixtempsize_4942',['kCoolixTempSize',['../ir__Coolix_8h.html#a7a22c5c9bdd23ef80ffe9d6760c0650e',1,'ir_Coolix.h']]], - ['kcoolixtick_4943',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], - ['kcoolixturbo_4944',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], - ['kcoolixunknown_4945',['kCoolixUnknown',['../ir__Coolix_8h.html#a2913e31a9dc5b89cbcae940cd5d59497',1,'ir_Coolix.h']]], - ['kcoolixzerospace_4946',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], - ['kcoolixzerospaceticks_4947',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], - ['kcoolixzonefollowmaskoffset_4948',['kCoolixZoneFollowMaskOffset',['../ir__Coolix_8h.html#ae5da4da07b9d1bb715102cafd4a0105e',1,'ir_Coolix.h']]], - ['kcoolstr_4949',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], - ['kcoronaacbitmark_4950',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], - ['kcoronaacbits_4951',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], - ['kcoronaacbitsshort_4952',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], - ['kcoronaacfanauto_4953',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], - ['kcoronaacfanhigh_4954',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], - ['kcoronaacfanlow_4955',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], - ['kcoronaacfanmedium_4956',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], - ['kcoronaacfreq_4957',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], - ['kcoronaachdrmark_4958',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], - ['kcoronaachdrspace_4959',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], - ['kcoronaacmaxtemp_4960',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], - ['kcoronaacmintemp_4961',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], - ['kcoronaacmodecool_4962',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], - ['kcoronaacmodedry_4963',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], - ['kcoronaacmodefan_4964',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], - ['kcoronaacmodeheat_4965',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], - ['kcoronaacofftimersection_4966',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], - ['kcoronaaconespace_4967',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], - ['kcoronaacontimersection_4968',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], - ['kcoronaacoverhead_4969',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], - ['kcoronaacoverheadshort_4970',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], - ['kcoronaacsectionbytes_4971',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], - ['kcoronaacsectiondata0base_4972',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], - ['kcoronaacsectionheader0_4973',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], - ['kcoronaacsectionheader1_4974',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], - ['kcoronaacsectionlabelbase_4975',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], - ['kcoronaacsections_4976',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], - ['kcoronaacsettingssection_4977',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], - ['kcoronaacspacegap_4978',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], - ['kcoronaacstatelength_4979',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], - ['kcoronaacstatelengthshort_4980',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], - ['kcoronaactimermax_4981',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], - ['kcoronaactimeroff_4982',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], - ['kcoronaactimerunitspermin_4983',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], - ['kcoronaaczerospace_4984',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], - ['kcoronatolerance_4985',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], - ['kdaikin128auto_4986',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], - ['kdaikin128bitceiling_4987',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], - ['kdaikin128bitecono_4988',['kDaikin128BitEcono',['../ir__Daikin_8h.html#a34add42c4df4db799ddf52e8e5587dee',1,'ir_Daikin.h']]], - ['kdaikin128biteconooffset_4989',['kDaikin128BitEconoOffset',['../ir__Daikin_8h.html#af822203d873d9b847c3a7b08d236f82b',1,'ir_Daikin.h']]], - ['kdaikin128bithalfhour_4990',['kDaikin128BitHalfHour',['../ir__Daikin_8h.html#abf955f8f24fd37bbe21222ca160b3299',1,'ir_Daikin.h']]], - ['kdaikin128bitmark_4991',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], - ['kdaikin128bitpowertoggle_4992',['kDaikin128BitPowerToggle',['../ir__Daikin_8h.html#a813506d8d3f8b6933379bcfc097e4b29',1,'ir_Daikin.h']]], - ['kdaikin128bitpowertoggleoffset_4993',['kDaikin128BitPowerToggleOffset',['../ir__Daikin_8h.html#a05e33573c5050b1e54721a1716d652b5',1,'ir_Daikin.h']]], - ['kdaikin128bits_4994',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], - ['kdaikin128bitsleep_4995',['kDaikin128BitSleep',['../ir__Daikin_8h.html#a0cb96f1803fab5bfac8ef79a311308de',1,'ir_Daikin.h']]], - ['kdaikin128bitsleepoffset_4996',['kDaikin128BitSleepOffset',['../ir__Daikin_8h.html#a7b4aa1ef19f1c23ef74b45eb90734c6f',1,'ir_Daikin.h']]], - ['kdaikin128bitswing_4997',['kDaikin128BitSwing',['../ir__Daikin_8h.html#a8f6ab5b7f9871f08364abf3337ae48b4',1,'ir_Daikin.h']]], - ['kdaikin128bitswingoffset_4998',['kDaikin128BitSwingOffset',['../ir__Daikin_8h.html#a7f98cf3863ab58b147dc31c497bc07bc',1,'ir_Daikin.h']]], - ['kdaikin128bittimerenabled_4999',['kDaikin128BitTimerEnabled',['../ir__Daikin_8h.html#a1197dadb35f318b000ff6ee7ad3ca8b0',1,'ir_Daikin.h']]], - ['kdaikin128bittimerenabledoffset_5000',['kDaikin128BitTimerEnabledOffset',['../ir__Daikin_8h.html#af913ee51e5b90ad12f87dbed9ce349d6',1,'ir_Daikin.h']]], - ['kdaikin128bitwall_5001',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], - ['kdaikin128byteclockhours_5002',['kDaikin128ByteClockHours',['../ir__Daikin_8h.html#a0d705309d30881fd2fe806e5bf8ae27d',1,'ir_Daikin.h']]], - ['kdaikin128byteclockmins_5003',['kDaikin128ByteClockMins',['../ir__Daikin_8h.html#ab8c9af42d68548e1e711a0b38976342b',1,'ir_Daikin.h']]], - ['kdaikin128byteeconolight_5004',['kDaikin128ByteEconoLight',['../ir__Daikin_8h.html#a75a3c1f1790006f0005666a023218c79',1,'ir_Daikin.h']]], - ['kdaikin128bytemodefan_5005',['kDaikin128ByteModeFan',['../ir__Daikin_8h.html#a8433ab362f79a6bb3570d310a05f1141',1,'ir_Daikin.h']]], - ['kdaikin128byteofftimer_5006',['kDaikin128ByteOffTimer',['../ir__Daikin_8h.html#a66e243db1131f58d0840980ca64c0282',1,'ir_Daikin.h']]], - ['kdaikin128byteontimer_5007',['kDaikin128ByteOnTimer',['../ir__Daikin_8h.html#af27f1f25a52dc4c182111acd2abc554d',1,'ir_Daikin.h']]], - ['kdaikin128bytepowerswingsleep_5008',['kDaikin128BytePowerSwingSleep',['../ir__Daikin_8h.html#a0f5a9f1ac68c516744220ad230805c15',1,'ir_Daikin.h']]], - ['kdaikin128bytetemp_5009',['kDaikin128ByteTemp',['../ir__Daikin_8h.html#a4d3d5683aaee8e76138750a0f6ff1465',1,'ir_Daikin.h']]], - ['kdaikin128cool_5010',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], - ['kdaikin128defaultrepeat_5011',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], - ['kdaikin128dry_5012',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], - ['kdaikin128fan_5013',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], - ['kdaikin128fanauto_5014',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], - ['kdaikin128fanhigh_5015',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], - ['kdaikin128fanlow_5016',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], - ['kdaikin128fanmed_5017',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], - ['kdaikin128fanpowerful_5018',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], - ['kdaikin128fanquiet_5019',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], - ['kdaikin128footermark_5020',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], - ['kdaikin128freq_5021',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], - ['kdaikin128gap_5022',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], - ['kdaikin128halfhouroffset_5023',['kDaikin128HalfHourOffset',['../ir__Daikin_8h.html#a8fddd8a5dbad2fd49445eaa2104f7da3',1,'ir_Daikin.h']]], - ['kdaikin128hdrmark_5024',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], - ['kdaikin128hdrspace_5025',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], - ['kdaikin128heat_5026',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], - ['kdaikin128hoursoffset_5027',['kDaikin128HoursOffset',['../ir__Daikin_8h.html#ace543fba33c68e3df4aa4d250ed1e792',1,'ir_Daikin.h']]], - ['kdaikin128hourssize_5028',['kDaikin128HoursSize',['../ir__Daikin_8h.html#ac5441402c0ee486f3c752a91f09375ff',1,'ir_Daikin.h']]], - ['kdaikin128leadermark_5029',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], - ['kdaikin128leaderspace_5030',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], - ['kdaikin128maskfan_5031',['kDaikin128MaskFan',['../ir__Daikin_8h.html#ae58228f3b9eae0ec171527ced89e509f',1,'ir_Daikin.h']]], - ['kdaikin128masklight_5032',['kDaikin128MaskLight',['../ir__Daikin_8h.html#a8d3d4325f91cbdd8ce0cec25fc0d2022',1,'ir_Daikin.h']]], - ['kdaikin128maxtemp_5033',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], - ['kdaikin128mintemp_5034',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], - ['kdaikin128modesize_5035',['kDaikin128ModeSize',['../ir__Daikin_8h.html#a32a97adddfa791cc0e48d9bd847a3a4c',1,'ir_Daikin.h']]], - ['kdaikin128onespace_5036',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], - ['kdaikin128sectionlength_5037',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], - ['kdaikin128sections_5038',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], - ['kdaikin128statelength_5039',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], - ['kdaikin128timeroffset_5040',['kDaikin128TimerOffset',['../ir__Daikin_8h.html#aabde7c45424ae82a812485e8ceb58dbd',1,'ir_Daikin.h']]], - ['kdaikin128timersize_5041',['kDaikin128TimerSize',['../ir__Daikin_8h.html#a6f4022c5e4a092eb039c53ea72f51188',1,'ir_Daikin.h']]], - ['kdaikin128zerospace_5042',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], - ['kdaikin152bitmark_5043',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], - ['kdaikin152bits_5044',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], - ['kdaikin152comfortbyte_5045',['kDaikin152ComfortByte',['../ir__Daikin_8h.html#a414b7acd5259122af5b496979fe068dc',1,'ir_Daikin.h']]], - ['kdaikin152comfortoffset_5046',['kDaikin152ComfortOffset',['../ir__Daikin_8h.html#a9cc7bb09fb66aa0cf7d0b751505fd3e6',1,'ir_Daikin.h']]], - ['kdaikin152defaultrepeat_5047',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], - ['kdaikin152drytemp_5048',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], - ['kdaikin152econobyte_5049',['kDaikin152EconoByte',['../ir__Daikin_8h.html#a988782fd6bcf25b098d7c07e38679a78',1,'ir_Daikin.h']]], - ['kdaikin152fanbyte_5050',['kDaikin152FanByte',['../ir__Daikin_8h.html#a1972e59df2902335e37b2d66d16048a8',1,'ir_Daikin.h']]], - ['kdaikin152fantemp_5051',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], - ['kdaikin152freq_5052',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], - ['kdaikin152gap_5053',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], - ['kdaikin152hdrmark_5054',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], - ['kdaikin152hdrspace_5055',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], - ['kdaikin152leaderbits_5056',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], - ['kdaikin152modebyte_5057',['kDaikin152ModeByte',['../ir__Daikin_8h.html#a1aaa767f722926e9aaf02dbcd8029003',1,'ir_Daikin.h']]], - ['kdaikin152onespace_5058',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], - ['kdaikin152powerbyte_5059',['kDaikin152PowerByte',['../ir__Daikin_8h.html#a67ff6fbdc004d3a29b1d31c5bc47f572',1,'ir_Daikin.h']]], - ['kdaikin152powerfulbyte_5060',['kDaikin152PowerfulByte',['../ir__Daikin_8h.html#a720a3019f7bb2f8c458a7b79fbadd08f',1,'ir_Daikin.h']]], - ['kdaikin152quietbyte_5061',['kDaikin152QuietByte',['../ir__Daikin_8h.html#ad534758115c401368a428d887faa8768',1,'ir_Daikin.h']]], - ['kdaikin152sensorbyte_5062',['kDaikin152SensorByte',['../ir__Daikin_8h.html#a33187d50e8414f943d050a0b1c312168',1,'ir_Daikin.h']]], - ['kdaikin152sensoroffset_5063',['kDaikin152SensorOffset',['../ir__Daikin_8h.html#a01ef92b6eb478b1897fdfdcea03d7116',1,'ir_Daikin.h']]], - ['kdaikin152statelength_5064',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], - ['kdaikin152swingvbyte_5065',['kDaikin152SwingVByte',['../ir__Daikin_8h.html#a9ed39bcce7d0bc73060fba843dfd2b28',1,'ir_Daikin.h']]], - ['kdaikin152tempbyte_5066',['kDaikin152TempByte',['../ir__Daikin_8h.html#a5e232b17db30a7e0ba159e2413df8b14',1,'ir_Daikin.h']]], - ['kdaikin152tempsize_5067',['kDaikin152TempSize',['../ir__Daikin_8h.html#ad22ee842100e70d95f1ebcdcaf3f2099',1,'ir_Daikin.h']]], - ['kdaikin152zerospace_5068',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], - ['kdaikin160bitmark_5069',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], - ['kdaikin160bits_5070',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], - ['kdaikin160bytefan_5071',['kDaikin160ByteFan',['../ir__Daikin_8h.html#a980ae6010c956c92348d3ac88c084247',1,'ir_Daikin.h']]], - ['kdaikin160bytemode_5072',['kDaikin160ByteMode',['../ir__Daikin_8h.html#a6c5bcb2c4447dafc53c26775539886e6',1,'ir_Daikin.h']]], - ['kdaikin160bytepower_5073',['kDaikin160BytePower',['../ir__Daikin_8h.html#a8e79923cf8aa346ea52791887b54ffbe',1,'ir_Daikin.h']]], - ['kdaikin160byteswingv_5074',['kDaikin160ByteSwingV',['../ir__Daikin_8h.html#a35032831d79e96a98527896cd5d52efe',1,'ir_Daikin.h']]], - ['kdaikin160bytetemp_5075',['kDaikin160ByteTemp',['../ir__Daikin_8h.html#a1b9eed515f9cfc3508cce7d53fb7a84a',1,'ir_Daikin.h']]], - ['kdaikin160defaultrepeat_5076',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], - ['kdaikin160freq_5077',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], - ['kdaikin160gap_5078',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], - ['kdaikin160hdrmark_5079',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], - ['kdaikin160hdrspace_5080',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], - ['kdaikin160maskfan_5081',['kDaikin160MaskFan',['../ir__Daikin_8h.html#a623f586183436960361a85f8480c87c6',1,'ir_Daikin.h']]], - ['kdaikin160maskswingv_5082',['kDaikin160MaskSwingV',['../ir__Daikin_8h.html#abfaa078f7dfdd1c0bb14ad15fee26604',1,'ir_Daikin.h']]], - ['kdaikin160onespace_5083',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], - ['kdaikin160section1length_5084',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], - ['kdaikin160section2length_5085',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], - ['kdaikin160sections_5086',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], - ['kdaikin160statelength_5087',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], - ['kdaikin160swingvauto_5088',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], - ['kdaikin160swingvhigh_5089',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], - ['kdaikin160swingvhighest_5090',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], - ['kdaikin160swingvlow_5091',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], - ['kdaikin160swingvlowest_5092',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], - ['kdaikin160swingvmiddle_5093',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], - ['kdaikin160tempoffset_5094',['kDaikin160TempOffset',['../ir__Daikin_8h.html#aa2f7050929bab65dbdb8af5b493dafe2',1,'ir_Daikin.h']]], - ['kdaikin160tempsize_5095',['kDaikin160TempSize',['../ir__Daikin_8h.html#adfecac727480010fae8e419ac3f13e73',1,'ir_Daikin.h']]], - ['kdaikin160zerospace_5096',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], - ['kdaikin176auto_5097',['kDaikin176Auto',['../ir__Daikin_8h.html#a692292ea29754f646f3611326899a3c4',1,'ir_Daikin.h']]], - ['kdaikin176bitmark_5098',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], - ['kdaikin176bits_5099',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], - ['kdaikin176bytealtmode_5100',['kDaikin176ByteAltMode',['../ir__Daikin_8h.html#aae15cbe2aa60bc8acfce2e6a91075a50',1,'ir_Daikin.h']]], - ['kdaikin176bytefan_5101',['kDaikin176ByteFan',['../ir__Daikin_8h.html#a21e4b1854d3f87757ba0f0c10074226c',1,'ir_Daikin.h']]], - ['kdaikin176bytemodebutton_5102',['kDaikin176ByteModeButton',['../ir__Daikin_8h.html#aacda7563a2aaa9a56c77ce550f24a237',1,'ir_Daikin.h']]], - ['kdaikin176bytemodepower_5103',['kDaikin176ByteModePower',['../ir__Daikin_8h.html#a8e72de68ec911d951d22233c6b6cd83c',1,'ir_Daikin.h']]], - ['kdaikin176byteswingh_5104',['kDaikin176ByteSwingH',['../ir__Daikin_8h.html#a4566642e6aaa0d64c531fafe0309dccc',1,'ir_Daikin.h']]], - ['kdaikin176bytetemp_5105',['kDaikin176ByteTemp',['../ir__Daikin_8h.html#afab294c7e8c65e5bf58e85bee4901752',1,'ir_Daikin.h']]], - ['kdaikin176cool_5106',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], - ['kdaikin176defaultrepeat_5107',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], - ['kdaikin176dry_5108',['kDaikin176Dry',['../ir__Daikin_8h.html#a23bf5f3e572d11fb38476a5118382b35',1,'ir_Daikin.h']]], - ['kdaikin176dryfantemp_5109',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], - ['kdaikin176fan_5110',['kDaikin176Fan',['../ir__Daikin_8h.html#ace1184864858e862a66be779cbe698b1',1,'ir_Daikin.h']]], - ['kdaikin176fanmax_5111',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], - ['kdaikin176freq_5112',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], - ['kdaikin176gap_5113',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], - ['kdaikin176hdrmark_5114',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], - ['kdaikin176hdrspace_5115',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], - ['kdaikin176heat_5116',['kDaikin176Heat',['../ir__Daikin_8h.html#a16500da7848870fdda27209906d56ead',1,'ir_Daikin.h']]], - ['kdaikin176maskfan_5117',['kDaikin176MaskFan',['../ir__Daikin_8h.html#ae7410031c68ae8426caa61bc97909cdf',1,'ir_Daikin.h']]], - ['kdaikin176maskmode_5118',['kDaikin176MaskMode',['../ir__Daikin_8h.html#a65b76b7a85d70a4ed1af359b2babffa1',1,'ir_Daikin.h']]], - ['kdaikin176modebutton_5119',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], - ['kdaikin176onespace_5120',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], - ['kdaikin176section1length_5121',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], - ['kdaikin176section2length_5122',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], - ['kdaikin176sections_5123',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], - ['kdaikin176statelength_5124',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], - ['kdaikin176swinghauto_5125',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], - ['kdaikin176swinghoff_5126',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], - ['kdaikin176tempoffset_5127',['kDaikin176TempOffset',['../ir__Daikin_8h.html#aa5f6cc15ca424e4bf9cc4357d9db79c9',1,'ir_Daikin.h']]], - ['kdaikin176tempsize_5128',['kDaikin176TempSize',['../ir__Daikin_8h.html#a3ef1914f2caf650a90d8412f2c1e2b74',1,'ir_Daikin.h']]], - ['kdaikin176zerospace_5129',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], - ['kdaikin216bitmark_5130',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], - ['kdaikin216bits_5131',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], - ['kdaikin216bytefan_5132',['kDaikin216ByteFan',['../ir__Daikin_8h.html#a832e7a349293058ebc50c17b904fb8f7',1,'ir_Daikin.h']]], - ['kdaikin216bytemode_5133',['kDaikin216ByteMode',['../ir__Daikin_8h.html#a48974eb3ceb40f2f580bd266a60f0392',1,'ir_Daikin.h']]], - ['kdaikin216bytepower_5134',['kDaikin216BytePower',['../ir__Daikin_8h.html#a740c2db81aebd8cb9e18b3f8c6c5b8be',1,'ir_Daikin.h']]], - ['kdaikin216bytepowerful_5135',['kDaikin216BytePowerful',['../ir__Daikin_8h.html#a9a428d988d705beae3ff1f7c0f01cb8d',1,'ir_Daikin.h']]], - ['kdaikin216byteswingh_5136',['kDaikin216ByteSwingH',['../ir__Daikin_8h.html#a20239baacdf9fb981eb0fb84b0ef536a',1,'ir_Daikin.h']]], - ['kdaikin216byteswingv_5137',['kDaikin216ByteSwingV',['../ir__Daikin_8h.html#a9fd16b0fb0d67a7058816d4b4f1659fc',1,'ir_Daikin.h']]], - ['kdaikin216bytetemp_5138',['kDaikin216ByteTemp',['../ir__Daikin_8h.html#a5828687e12d2b7fe1d793235d91750bd',1,'ir_Daikin.h']]], - ['kdaikin216defaultrepeat_5139',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], - ['kdaikin216freq_5140',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], - ['kdaikin216gap_5141',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], - ['kdaikin216hdrmark_5142',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], - ['kdaikin216hdrspace_5143',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], - ['kdaikin216maskfan_5144',['kDaikin216MaskFan',['../ir__Daikin_8h.html#a88f67ea1fe03ef40b81c5226ff5c72d5',1,'ir_Daikin.h']]], - ['kdaikin216onespace_5145',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], - ['kdaikin216section1length_5146',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], - ['kdaikin216section2length_5147',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], - ['kdaikin216sections_5148',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], - ['kdaikin216statelength_5149',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], - ['kdaikin216swingoff_5150',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], - ['kdaikin216swingon_5151',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], - ['kdaikin216swingsize_5152',['kDaikin216SwingSize',['../ir__Daikin_8h.html#a90d9e740067051fe294f1b408f7e020b',1,'ir_Daikin.h']]], - ['kdaikin216tempoffset_5153',['kDaikin216TempOffset',['../ir__Daikin_8h.html#a8e497623bb05ff10287ca06ac6ec15f6',1,'ir_Daikin.h']]], - ['kdaikin216tempsize_5154',['kDaikin216TempSize',['../ir__Daikin_8h.html#a3ef59f8474b38d1b0311f1018dbd6225',1,'ir_Daikin.h']]], - ['kdaikin216zerospace_5155',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], - ['kdaikin2beepoffset_5156',['kDaikin2BeepOffset',['../ir__Daikin_8h.html#ad7f6110b5e3bf8c3b72ca07b745bae7c',1,'ir_Daikin.h']]], - ['kdaikin2beepsize_5157',['kDaikin2BeepSize',['../ir__Daikin_8h.html#a3a42f10a3427bff7af3c745592fe58fe',1,'ir_Daikin.h']]], - ['kdaikin2bitclean_5158',['kDaikin2BitClean',['../ir__Daikin_8h.html#a6672ff35e765c9ecb14107e7732b0bb2',1,'ir_Daikin.h']]], - ['kdaikin2bitcleanoffset_5159',['kDaikin2BitCleanOffset',['../ir__Daikin_8h.html#a4fa7ed25fb3f2371c3b5c7cf4906a3f3',1,'ir_Daikin.h']]], - ['kdaikin2biteye_5160',['kDaikin2BitEye',['../ir__Daikin_8h.html#a8adb3f3e8508adf8adc530365fceb96b',1,'ir_Daikin.h']]], - ['kdaikin2biteyeauto_5161',['kDaikin2BitEyeAuto',['../ir__Daikin_8h.html#a6a24519db9870520a645e4ad31857e39',1,'ir_Daikin.h']]], - ['kdaikin2biteyeautooffset_5162',['kDaikin2BitEyeAutoOffset',['../ir__Daikin_8h.html#a73db209ad074eeaef1a5317cbee8ab35',1,'ir_Daikin.h']]], - ['kdaikin2biteyeoffset_5163',['kDaikin2BitEyeOffset',['../ir__Daikin_8h.html#a7a4c6e131d9a0e441de549bd5f93074f',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshair_5164',['kDaikin2BitFreshAir',['../ir__Daikin_8h.html#a9ab2c4b0f415ce0042b848e44850b7b8',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairhigh_5165',['kDaikin2BitFreshAirHigh',['../ir__Daikin_8h.html#a21a3f3c0f39827057d8f459283a72980',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairhighoffset_5166',['kDaikin2BitFreshAirHighOffset',['../ir__Daikin_8h.html#afd4f5946e5fa5d8f48af32b8934b0f93',1,'ir_Daikin.h']]], - ['kdaikin2bitfreshairoffset_5167',['kDaikin2BitFreshAirOffset',['../ir__Daikin_8h.html#a15e49a577737bdca28c28aeeb4260e57',1,'ir_Daikin.h']]], - ['kdaikin2bitmark_5168',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], - ['kdaikin2bitmold_5169',['kDaikin2BitMold',['../ir__Daikin_8h.html#aa452116afeb7d246cee672d2717e0ff7',1,'ir_Daikin.h']]], - ['kdaikin2bitmoldoffset_5170',['kDaikin2BitMoldOffset',['../ir__Daikin_8h.html#a0e58caeb44ebc6b7c6d06e91fee33795',1,'ir_Daikin.h']]], - ['kdaikin2bitpower_5171',['kDaikin2BitPower',['../ir__Daikin_8h.html#ac7b549d7b68bc245521d7f4e6a4643ab',1,'ir_Daikin.h']]], - ['kdaikin2bitpoweroffset_5172',['kDaikin2BitPowerOffset',['../ir__Daikin_8h.html#a617d14e811cb26b86fef3048151ffc45',1,'ir_Daikin.h']]], - ['kdaikin2bitpurify_5173',['kDaikin2BitPurify',['../ir__Daikin_8h.html#a9c4d6aa579adbfe454aa19f9f604f21c',1,'ir_Daikin.h']]], - ['kdaikin2bitpurifyoffset_5174',['kDaikin2BitPurifyOffset',['../ir__Daikin_8h.html#a847a9646dc86c26da931e5bf6640ddab',1,'ir_Daikin.h']]], - ['kdaikin2bits_5175',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], - ['kdaikin2bitsleeptimer_5176',['kDaikin2BitSleepTimer',['../ir__Daikin_8h.html#a928ae056887b123fdf6b1e2072d03564',1,'ir_Daikin.h']]], - ['kdaikin2bitsleeptimeroffset_5177',['kDaikin2BitSleepTimerOffset',['../ir__Daikin_8h.html#abf7cfde40fd00c3500ed08831434b80f',1,'ir_Daikin.h']]], - ['kdaikin2defaultrepeat_5178',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], - ['kdaikin2fanbyte_5179',['kDaikin2FanByte',['../ir__Daikin_8h.html#a88608f735885e11734ae83a0cc69dc8d',1,'ir_Daikin.h']]], - ['kdaikin2freq_5180',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], - ['kdaikin2gap_5181',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], - ['kdaikin2hdrmark_5182',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], - ['kdaikin2hdrspace_5183',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], - ['kdaikin2leadermark_5184',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], - ['kdaikin2leaderspace_5185',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], - ['kdaikin2lightoffset_5186',['kDaikin2LightOffset',['../ir__Daikin_8h.html#a0f40d38db7c625df9504798938ba24eb',1,'ir_Daikin.h']]], - ['kdaikin2lightsize_5187',['kDaikin2LightSize',['../ir__Daikin_8h.html#a4dc46fabef2c96a263a504a5f9012e1f',1,'ir_Daikin.h']]], - ['kdaikin2mincooltemp_5188',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], - ['kdaikin2onespace_5189',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], - ['kdaikin2section1length_5190',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], - ['kdaikin2section2length_5191',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], - ['kdaikin2sections_5192',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], - ['kdaikin2statelength_5193',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], - ['kdaikin2swinghauto_5194',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], - ['kdaikin2swinghleft_5195',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], - ['kdaikin2swinghleftmax_5196',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], - ['kdaikin2swinghmiddle_5197',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], - ['kdaikin2swinghright_5198',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], - ['kdaikin2swinghrightmax_5199',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], - ['kdaikin2swinghswing_5200',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], - ['kdaikin2swinghwide_5201',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], - ['kdaikin2swingvauto_5202',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], - ['kdaikin2swingvbreeze_5203',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], - ['kdaikin2swingvcirculate_5204',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], - ['kdaikin2swingvhigh_5205',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], - ['kdaikin2swingvlow_5206',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], - ['kdaikin2swingvswing_5207',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], - ['kdaikin2tolerance_5208',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], - ['kdaikin2zerospace_5209',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], - ['kdaikin64bitmark_5210',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], - ['kdaikin64bits_5211',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], - ['kdaikin64checksumoffset_5212',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], - ['kdaikin64checksumsize_5213',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], - ['kdaikin64clockhourssize_5214',['kDaikin64ClockHoursSize',['../ir__Daikin_8h.html#ae6d8f59a9707bc807a209167231d4399',1,'ir_Daikin.h']]], - ['kdaikin64clockminssize_5215',['kDaikin64ClockMinsSize',['../ir__Daikin_8h.html#a3ab23d9db994fb6dd52208f5f69b4531',1,'ir_Daikin.h']]], - ['kdaikin64clockoffset_5216',['kDaikin64ClockOffset',['../ir__Daikin_8h.html#af204ccf4e6bd33439cec240445785e9c',1,'ir_Daikin.h']]], - ['kdaikin64clocksize_5217',['kDaikin64ClockSize',['../ir__Daikin_8h.html#a110f42ae8aa2651b195c67eef15c4d79',1,'ir_Daikin.h']]], - ['kdaikin64cool_5218',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], - ['kdaikin64defaultrepeat_5219',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], - ['kdaikin64dry_5220',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], - ['kdaikin64fan_5221',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], - ['kdaikin64fanauto_5222',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], - ['kdaikin64fanhigh_5223',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], - ['kdaikin64fanlow_5224',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], - ['kdaikin64fanmed_5225',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], - ['kdaikin64fanoffset_5226',['kDaikin64FanOffset',['../ir__Daikin_8h.html#a5523d6df96b83aa152adc1cbdac6534f',1,'ir_Daikin.h']]], - ['kdaikin64fanquiet_5227',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], - ['kdaikin64fansize_5228',['kDaikin64FanSize',['../ir__Daikin_8h.html#ac907b8f8d46eb7983a1289f23bc02401',1,'ir_Daikin.h']]], - ['kdaikin64fanturbo_5229',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], - ['kdaikin64freq_5230',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], - ['kdaikin64gap_5231',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], - ['kdaikin64hdrmark_5232',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], - ['kdaikin64hdrspace_5233',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], - ['kdaikin64knowngoodstate_5234',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], - ['kdaikin64ldrmark_5235',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], - ['kdaikin64ldrspace_5236',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], - ['kdaikin64maxtemp_5237',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], - ['kdaikin64mintemp_5238',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], - ['kdaikin64modeoffset_5239',['kDaikin64ModeOffset',['../ir__Daikin_8h.html#ac32a0c805d01b5a9fa4d4aeb5546b8e3',1,'ir_Daikin.h']]], - ['kdaikin64modesize_5240',['kDaikin64ModeSize',['../ir__Daikin_8h.html#a451465916f9ae0586cf915005be33315',1,'ir_Daikin.h']]], - ['kdaikin64offtimeenablebit_5241',['kDaikin64OffTimeEnableBit',['../ir__Daikin_8h.html#a5d5c1380e6dd22cef44a76f74049a813',1,'ir_Daikin.h']]], - ['kdaikin64offtimehalfhourbit_5242',['kDaikin64OffTimeHalfHourBit',['../ir__Daikin_8h.html#a766df1d3c0fce7576a3e694b6e0d9242',1,'ir_Daikin.h']]], - ['kdaikin64offtimeoffset_5243',['kDaikin64OffTimeOffset',['../ir__Daikin_8h.html#a3aecddae0a4c0a3123b296dd6b0fb38e',1,'ir_Daikin.h']]], - ['kdaikin64offtimesize_5244',['kDaikin64OffTimeSize',['../ir__Daikin_8h.html#a70e8ae340d5f1ca35b2d6a46020b9dcc',1,'ir_Daikin.h']]], - ['kdaikin64onespace_5245',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], - ['kdaikin64ontimeenablebit_5246',['kDaikin64OnTimeEnableBit',['../ir__Daikin_8h.html#ae264ee33d051149cecc08e3a026feba7',1,'ir_Daikin.h']]], - ['kdaikin64ontimehalfhourbit_5247',['kDaikin64OnTimeHalfHourBit',['../ir__Daikin_8h.html#a0d37e6624946b26dd30c3ed25181cc37',1,'ir_Daikin.h']]], - ['kdaikin64ontimeoffset_5248',['kDaikin64OnTimeOffset',['../ir__Daikin_8h.html#a6b4af969e8b114502f067b039b0a9467',1,'ir_Daikin.h']]], - ['kdaikin64ontimesize_5249',['kDaikin64OnTimeSize',['../ir__Daikin_8h.html#a46c5e1db123959992db9e746e2b3c58a',1,'ir_Daikin.h']]], - ['kdaikin64overhead_5250',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], - ['kdaikin64powertogglebit_5251',['kDaikin64PowerToggleBit',['../ir__Daikin_8h.html#a55ca8803d859f0ffaac3c3547d6b532c',1,'ir_Daikin.h']]], - ['kdaikin64sleepbit_5252',['kDaikin64SleepBit',['../ir__Daikin_8h.html#addbe01f4a4766469fe5fd1cf9972f437',1,'ir_Daikin.h']]], - ['kdaikin64swingvbit_5253',['kDaikin64SwingVBit',['../ir__Daikin_8h.html#a9c7cbb529c760cead772fe03f7f90b1a',1,'ir_Daikin.h']]], - ['kdaikin64tempoffset_5254',['kDaikin64TempOffset',['../ir__Daikin_8h.html#a4b66ea40f97deafc22df18bd0942b5f1',1,'ir_Daikin.h']]], - ['kdaikin64tempsize_5255',['kDaikin64TempSize',['../ir__Daikin_8h.html#acc21945b46b307068e8669c83fbe5837',1,'ir_Daikin.h']]], - ['kdaikin64tolerancedelta_5256',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], - ['kdaikin64zerospace_5257',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], - ['kdaikinauto_5258',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], - ['kdaikinbeeploud_5259',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], - ['kdaikinbeepoff_5260',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], - ['kdaikinbeepquiet_5261',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], - ['kdaikinbitcomfort_5262',['kDaikinBitComfort',['../ir__Daikin_8h.html#aede9991f88965161d3f7cf1dba7fdeb7',1,'ir_Daikin.h']]], - ['kdaikinbitcomfortoffset_5263',['kDaikinBitComfortOffset',['../ir__Daikin_8h.html#a2e218dda2eb4ab3a97ea8018192c5f85',1,'ir_Daikin.h']]], - ['kdaikinbitecono_5264',['kDaikinBitEcono',['../ir__Daikin_8h.html#ab579939e749517944e6e497d5e44e922',1,'ir_Daikin.h']]], - ['kdaikinbiteconooffset_5265',['kDaikinBitEconoOffset',['../ir__Daikin_8h.html#aa99539b36ab708397bd1adbd4fd4f378',1,'ir_Daikin.h']]], - ['kdaikinbiteye_5266',['kDaikinBitEye',['../ir__Daikin_8h.html#a98bbaae1b0f16cf6f2428dcf326eda51',1,'ir_Daikin.h']]], - ['kdaikinbitmark_5267',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], - ['kdaikinbitmold_5268',['kDaikinBitMold',['../ir__Daikin_8h.html#a916ad89ccf3c0225a4ca1b36d74c67b2',1,'ir_Daikin.h']]], - ['kdaikinbitmoldoffset_5269',['kDaikinBitMoldOffset',['../ir__Daikin_8h.html#ad794d6ff5b5d05642e2668378d3a1100',1,'ir_Daikin.h']]], - ['kdaikinbitofftimer_5270',['kDaikinBitOffTimer',['../ir__Daikin_8h.html#a5d68046ada1892be65f14d06c2a25b2b',1,'ir_Daikin.h']]], - ['kdaikinbitofftimeroffset_5271',['kDaikinBitOffTimerOffset',['../ir__Daikin_8h.html#a7156bec80ef23aa0e4e212e11d63bdef',1,'ir_Daikin.h']]], - ['kdaikinbitontimer_5272',['kDaikinBitOnTimer',['../ir__Daikin_8h.html#a421a745ce85313d326e00b996b5afd80',1,'ir_Daikin.h']]], - ['kdaikinbitontimeroffset_5273',['kDaikinBitOnTimerOffset',['../ir__Daikin_8h.html#a7a6b740034320cc25fb6d33d36845ca0',1,'ir_Daikin.h']]], - ['kdaikinbitpower_5274',['kDaikinBitPower',['../ir__Daikin_8h.html#ab0d91673bcd73cbbbf5f18d6d73b699e',1,'ir_Daikin.h']]], - ['kdaikinbitpowerful_5275',['kDaikinBitPowerful',['../ir__Daikin_8h.html#a4d03bc31a28d866c3bf855f6482209e8',1,'ir_Daikin.h']]], - ['kdaikinbitpowerfuloffset_5276',['kDaikinBitPowerfulOffset',['../ir__Daikin_8h.html#a772bca7454e28bd3f61cdd24f58b98c8',1,'ir_Daikin.h']]], - ['kdaikinbitpoweroffset_5277',['kDaikinBitPowerOffset',['../ir__Daikin_8h.html#ad3672753b2b06b52cd8afeca3f564af4',1,'ir_Daikin.h']]], - ['kdaikinbits_5278',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], - ['kdaikinbitsensor_5279',['kDaikinBitSensor',['../ir__Daikin_8h.html#a37c7e26d1af184f844ef2c46064137ad',1,'ir_Daikin.h']]], - ['kdaikinbitsensoroffset_5280',['kDaikinBitSensorOffset',['../ir__Daikin_8h.html#a1ccb2c358aef3bf55005cf6b391e9e9b',1,'ir_Daikin.h']]], - ['kdaikinbitsilent_5281',['kDaikinBitSilent',['../ir__Daikin_8h.html#a85249d39c34b1a8b3bb8de4da32bb502',1,'ir_Daikin.h']]], - ['kdaikinbitsilentoffset_5282',['kDaikinBitSilentOffset',['../ir__Daikin_8h.html#a3fb5172c458084319937aa4ec2d6383b',1,'ir_Daikin.h']]], - ['kdaikinbitsshort_5283',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], - ['kdaikinbitweeklytimer_5284',['kDaikinBitWeeklyTimer',['../ir__Daikin_8h.html#a7d58b7c351394a43117e4710acd35cec',1,'ir_Daikin.h']]], - ['kdaikinbitweeklytimeroffset_5285',['kDaikinBitWeeklyTimerOffset',['../ir__Daikin_8h.html#a8ff2c05701327b6f26bee66361e39365',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum1_5286',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum2_5287',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum3_5288',['kDaikinByteChecksum3',['../ir__Daikin_8h.html#a7277c453d4deed6abf0a7577b5b4454f',1,'ir_Daikin.h']]], - ['kdaikinbyteclockminshigh_5289',['kDaikinByteClockMinsHigh',['../ir__Daikin_8h.html#ade7d506fd7da26ae1713602c1620f716',1,'ir_Daikin.h']]], - ['kdaikinbyteclockminslow_5290',['kDaikinByteClockMinsLow',['../ir__Daikin_8h.html#a3c096c2f33eca6c6f7f57f0f684a4b43',1,'ir_Daikin.h']]], - ['kdaikinbytecomfort_5291',['kDaikinByteComfort',['../ir__Daikin_8h.html#a3b209715b7ac4e8ef4f15043654e646b',1,'ir_Daikin.h']]], - ['kdaikinbyteecono_5292',['kDaikinByteEcono',['../ir__Daikin_8h.html#ae08470f2e453a2a5b60bdb478fc8c6d7',1,'ir_Daikin.h']]], - ['kdaikinbyteeye_5293',['kDaikinByteEye',['../ir__Daikin_8h.html#ad3e2bb2f17d599c708e64cf08c042331',1,'ir_Daikin.h']]], - ['kdaikinbytefan_5294',['kDaikinByteFan',['../ir__Daikin_8h.html#a9078ad5b6b9afe43ffa0e646c35f3db6',1,'ir_Daikin.h']]], - ['kdaikinbytemold_5295',['kDaikinByteMold',['../ir__Daikin_8h.html#a81e098798e6aa7c0882703dced8ab039',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimer_5296',['kDaikinByteOffTimer',['../ir__Daikin_8h.html#ad7fce891883a25e260cd8c0890d46f59',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimerminshigh_5297',['kDaikinByteOffTimerMinsHigh',['../ir__Daikin_8h.html#a0294c99254e3eef7e7fa2cd169e0e5a9',1,'ir_Daikin.h']]], - ['kdaikinbyteofftimerminslow_5298',['kDaikinByteOffTimerMinsLow',['../ir__Daikin_8h.html#a45855767cf37f1562a7726dbf6419c87',1,'ir_Daikin.h']]], - ['kdaikinbyteontimer_5299',['kDaikinByteOnTimer',['../ir__Daikin_8h.html#a0a685bb92d8e3df4c9bd96b71c48f352',1,'ir_Daikin.h']]], - ['kdaikinbyteontimerminshigh_5300',['kDaikinByteOnTimerMinsHigh',['../ir__Daikin_8h.html#a77ce46689e1a353237edd45e7170bff6',1,'ir_Daikin.h']]], - ['kdaikinbyteontimerminslow_5301',['kDaikinByteOnTimerMinsLow',['../ir__Daikin_8h.html#a7c434f5c6a3febddf3da44e1c2b97872',1,'ir_Daikin.h']]], - ['kdaikinbytepower_5302',['kDaikinBytePower',['../ir__Daikin_8h.html#aa99cac4871f7ef1cdff2f41496989218',1,'ir_Daikin.h']]], - ['kdaikinbytepowerful_5303',['kDaikinBytePowerful',['../ir__Daikin_8h.html#a79b3d4cd40f839a3708fa33abb4b74c4',1,'ir_Daikin.h']]], - ['kdaikinbytesensor_5304',['kDaikinByteSensor',['../ir__Daikin_8h.html#afd18e8b5b4c9c6572659ea46df01a6df',1,'ir_Daikin.h']]], - ['kdaikinbytesilent_5305',['kDaikinByteSilent',['../ir__Daikin_8h.html#aac58a7371777f682cac3189d9905b968',1,'ir_Daikin.h']]], - ['kdaikinbyteswingh_5306',['kDaikinByteSwingH',['../ir__Daikin_8h.html#a58b88a2679bd57d723aa33afca4f2427',1,'ir_Daikin.h']]], - ['kdaikinbytetemp_5307',['kDaikinByteTemp',['../ir__Daikin_8h.html#acd14c2ebc40a8375343595ed8f0109f8',1,'ir_Daikin.h']]], - ['kdaikinbyteweeklytimer_5308',['kDaikinByteWeeklyTimer',['../ir__Daikin_8h.html#ad4eba59910311bdc8b489b27b4b59751',1,'ir_Daikin.h']]], - ['kdaikinclockminshighoffset_5309',['kDaikinClockMinsHighOffset',['../ir__Daikin_8h.html#a1b28496ffacf558f7919029f029c2dc6',1,'ir_Daikin.h']]], - ['kdaikinclockminshighsize_5310',['kDaikinClockMinsHighSize',['../ir__Daikin_8h.html#a1e018d153b13c65e411b3b090efc6d27',1,'ir_Daikin.h']]], - ['kdaikincool_5311',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], - ['kdaikincurbit_5312',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], - ['kdaikincurindex_5313',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], - ['kdaikindefaultrepeat_5314',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], - ['kdaikindowoffset_5315',['kDaikinDoWOffset',['../ir__Daikin_8h.html#a07793a4b1ea8e9aabb77730ccbdf7e15',1,'ir_Daikin.h']]], - ['kdaikindowsize_5316',['kDaikinDoWSize',['../ir__Daikin_8h.html#a7bb34e2fc2c1926167b79889a5036ba0',1,'ir_Daikin.h']]], - ['kdaikindry_5317',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], - ['kdaikinfan_5318',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], - ['kdaikinfanauto_5319',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], - ['kdaikinfanmax_5320',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], - ['kdaikinfanmed_5321',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], - ['kdaikinfanmin_5322',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], - ['kdaikinfanoffset_5323',['kDaikinFanOffset',['../ir__Daikin_8h.html#a48d0d0cb1174069d5b6ee2882761cb88',1,'ir_Daikin.h']]], - ['kdaikinfanquiet_5324',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], - ['kdaikinfansize_5325',['kDaikinFanSize',['../ir__Daikin_8h.html#a1e490e414ff3f5f55b4cca443661cd1a',1,'ir_Daikin.h']]], - ['kdaikinfirstheader64_5326',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], - ['kdaikingap_5327',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], - ['kdaikinhdrmark_5328',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], - ['kdaikinhdrspace_5329',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], - ['kdaikinheaderlength_5330',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], - ['kdaikinheat_5331',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], - ['kdaikinlightbright_5332',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], - ['kdaikinlightdim_5333',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], - ['kdaikinlightoff_5334',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], - ['kdaikinmarkexcess_5335',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], - ['kdaikinmaxtemp_5336',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], - ['kdaikinmintemp_5337',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], - ['kdaikinmodeoffset_5338',['kDaikinModeOffset',['../ir__Daikin_8h.html#a9a3aa5ee98496b468c5ba86faa3eeeae',1,'ir_Daikin.h']]], - ['kdaikinmodesize_5339',['kDaikinModeSize',['../ir__Daikin_8h.html#a00fc390085520e5382dbce2633b7142e',1,'ir_Daikin.h']]], - ['kdaikinonespace_5340',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], - ['kdaikinontimerminshighoffset_5341',['kDaikinOnTimerMinsHighOffset',['../ir__Daikin_8h.html#a2a4a4254fc853901686982c1410c77c8',1,'ir_Daikin.h']]], - ['kdaikinontimerminshighsize_5342',['kDaikinOnTimerMinsHighSize',['../ir__Daikin_8h.html#a2fc9c203378e49ea1d49557d776de620',1,'ir_Daikin.h']]], - ['kdaikinsection1length_5343',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], - ['kdaikinsection2length_5344',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], - ['kdaikinsection3length_5345',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], - ['kdaikinsections_5346',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], - ['kdaikinstatelength_5347',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], - ['kdaikinstatelengthshort_5348',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], - ['kdaikinswingoff_5349',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], - ['kdaikinswingoffset_5350',['kDaikinSwingOffset',['../ir__Daikin_8h.html#abeac0c8df9be90fc5b28db4b2284ed10',1,'ir_Daikin.h']]], - ['kdaikinswingon_5351',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], - ['kdaikinswingsize_5352',['kDaikinSwingSize',['../ir__Daikin_8h.html#a0f7daf6ef2652bc0be591caa2fa0fad6',1,'ir_Daikin.h']]], - ['kdaikintempoffset_5353',['kDaikinTempOffset',['../ir__Daikin_8h.html#a1a38843bdf0f65f29c21b301f6f45ba5',1,'ir_Daikin.h']]], - ['kdaikintempsize_5354',['kDaikinTempSize',['../ir__Daikin_8h.html#aa2eef2bb403846d88df5387912af0a00',1,'ir_Daikin.h']]], - ['kdaikintolerance_5355',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], - ['kdaikinunusedtime_5356',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], - ['kdaikinzerospace_5357',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], - ['kdaysstr_5358',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], - ['kdaystr_5359',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], - ['kdefaultesp32timer_5360',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], - ['kdefaultmessagegap_5361',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], - ['kdelonghiacauto_5362',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], - ['kdelonghiacbitmark_5363',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], - ['kdelonghiacbits_5364',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], - ['kdelonghiacchecksumoffset_5365',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], - ['kdelonghiaccool_5366',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], - ['kdelonghiacdefaultrepeat_5367',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], - ['kdelonghiacdry_5368',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], - ['kdelonghiacfan_5369',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], - ['kdelonghiacfanauto_5370',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanhigh_5371',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], - ['kdelonghiacfanlow_5372',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanmedium_5373',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], - ['kdelonghiacfreq_5374',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], - ['kdelonghiacgap_5375',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrmark_5376',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrspace_5377',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], - ['kdelonghiaconespace_5378',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], - ['kdelonghiacoverhead_5379',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], - ['kdelonghiactempautodrymode_5380',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], - ['kdelonghiactempfanmode_5381',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxc_5382',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxf_5383',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], - ['kdelonghiactempminc_5384',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], - ['kdelonghiactempminf_5385',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], - ['kdelonghiactimermax_5386',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], - ['kdelonghiaczerospace_5387',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], - ['kdenon48bits_5388',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], - ['kdenonbitmark_5389',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], - ['kdenonbitmarkticks_5390',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], - ['kdenonbits_5391',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], - ['kdenonhdrmark_5392',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], - ['kdenonhdrmarkticks_5393',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], - ['kdenonhdrspace_5394',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], - ['kdenonhdrspaceticks_5395',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], - ['kdenonlegacybits_5396',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], - ['kdenonmanufacturer_5397',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], - ['kdenonmincommandlengthticks_5398',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], - ['kdenonmingap_5399',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], - ['kdenonmingapticks_5400',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], - ['kdenononespace_5401',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], - ['kdenononespaceticks_5402',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], - ['kdenontick_5403',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], - ['kdenonzerospace_5404',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], - ['kdenonzerospaceticks_5405',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], - ['kdishbitmark_5406',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], - ['kdishbitmarkticks_5407',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], - ['kdishbits_5408',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], - ['kdishhdrmark_5409',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], - ['kdishhdrmarkticks_5410',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], - ['kdishhdrspace_5411',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], - ['kdishhdrspaceticks_5412',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], - ['kdishminrepeat_5413',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], - ['kdishonespace_5414',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], - ['kdishonespaceticks_5415',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], - ['kdishrptspace_5416',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], - ['kdishrptspaceticks_5417',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], - ['kdishtick_5418',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], - ['kdishzerospace_5419',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], - ['kdishzerospaceticks_5420',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], - ['kdisplaytempstr_5421',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], - ['kdoshishabitmark_5422',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], - ['kdoshishabits_5423',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], - ['kdoshishahdrmark_5424',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], - ['kdoshishahdrspace_5425',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], - ['kdoshishaonespace_5426',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], - ['kdoshishazerospace_5427',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], - ['kdownstr_5428',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], - ['kdrystr_5429',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], - ['kdutydefault_5430',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], - ['kdutymax_5431',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], - ['keconostr_5432',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], - ['keconotogglestr_5433',['kEconoToggleStr',['../IRtext_8cpp.html#abd6fd4c918a7911bfa223cd87e6f3d32',1,'kEconoToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a03bbafdddd086cacd34dca1a32d540f6',1,'kEconoToggleStr(): IRtext.cpp']]], - ['kelectraacauto_5434',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], - ['kelectraacbitmark_5435',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], - ['kelectraacbits_5436',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], - ['kelectraaccleanoffset_5437',['kElectraAcCleanOffset',['../ir__Electra_8h.html#a466b5c998c1e2736214f816f1bab8239',1,'ir_Electra.h']]], - ['kelectraaccool_5438',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], - ['kelectraacdry_5439',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], - ['kelectraacfan_5440',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], - ['kelectraacfanauto_5441',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], - ['kelectraacfanhigh_5442',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], - ['kelectraacfanlow_5443',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], - ['kelectraacfanmed_5444',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], - ['kelectraacfanoffset_5445',['kElectraAcFanOffset',['../ir__Electra_8h.html#a0efe73807b12370aa7c57ff831e56192',1,'ir_Electra.h']]], - ['kelectraacfansize_5446',['kElectraAcFanSize',['../ir__Electra_8h.html#aeb9bddbd47459ae51c1207baac9e6219',1,'ir_Electra.h']]], - ['kelectraachdrmark_5447',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], - ['kelectraachdrspace_5448',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], - ['kelectraacheat_5449',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], - ['kelectraaclighttogglemask_5450',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], - ['kelectraaclighttoggleoff_5451',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], - ['kelectraaclighttoggleon_5452',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], - ['kelectraacmaxtemp_5453',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], - ['kelectraacmessagegap_5454',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], - ['kelectraacminrepeat_5455',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], - ['kelectraacmintemp_5456',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], - ['kelectraacmodeoffset_5457',['kElectraAcModeOffset',['../ir__Electra_8h.html#a79ea9dfa776115e5ec4ee816c4eef559',1,'ir_Electra.h']]], - ['kelectraaconespace_5458',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], - ['kelectraacpoweroffset_5459',['kElectraAcPowerOffset',['../ir__Electra_8h.html#a54012f7683397fada44f13c3e57d9ee0',1,'ir_Electra.h']]], - ['kelectraacstatelength_5460',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], - ['kelectraacswinghoffset_5461',['kElectraAcSwingHOffset',['../ir__Electra_8h.html#ac39219316f9b49ead4183cd206b4a3fb',1,'ir_Electra.h']]], - ['kelectraacswingoff_5462',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], - ['kelectraacswingon_5463',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], - ['kelectraacswingsize_5464',['kElectraAcSwingSize',['../ir__Electra_8h.html#a67c58c049b50d04d4fadd93eee0231cf',1,'ir_Electra.h']]], - ['kelectraacswingvoffset_5465',['kElectraAcSwingVOffset',['../ir__Electra_8h.html#a4a5737e41994fe6c0cd566be354a70fb',1,'ir_Electra.h']]], - ['kelectraactempdelta_5466',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], - ['kelectraactempoffset_5467',['kElectraAcTempOffset',['../ir__Electra_8h.html#a928ee72169f9ab56a4209606aa7e5e43',1,'ir_Electra.h']]], - ['kelectraactempsize_5468',['kElectraAcTempSize',['../ir__Electra_8h.html#aeeb469144f4fd02ddd8a802f5cf7c308',1,'ir_Electra.h']]], - ['kelectraacturbooffset_5469',['kElectraAcTurboOffset',['../ir__Electra_8h.html#afbbd997ef8ddf5a4adfd0a37404d6782',1,'ir_Electra.h']]], - ['kelectraaczerospace_5470',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], - ['kepsonbits_5471',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], - ['kepsonminrepeat_5472',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], - ['keyeautostr_5473',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], - ['keyestr_5474',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], - ['kfalsestr_5475',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], - ['kfanonlystr_5476',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], - ['kfanstr_5477',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], - ['kfaststr_5478',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], - ['kfilterstr_5479',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], - ['kfixedstr_5480',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], - ['kfnvbasis32_5481',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], - ['kfnvprime32_5482',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], - ['kfollowstr_5483',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], - ['kfooter_5484',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], - ['kfreshstr_5485',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], - ['kfujitsuacbitmark_5486',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacbits_5487',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], - ['kfujitsuaccleanoffset_5488',['kFujitsuAcCleanOffset',['../ir__Fujitsu_8h.html#ae7e7dc770ef9712296d2beeb085d2c1f',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdecono_5489',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdpowerful_5490',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstayon_5491',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstephoriz_5492',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstepvert_5493',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswinghoriz_5494',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswingvert_5495',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnoff_5496',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnon_5497',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanauto_5498',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanhigh_5499',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanlow_5500',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanmed_5501',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanquiet_5502',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], - ['kfujitsuacfansize_5503',['kFujitsuAcFanSize',['../ir__Fujitsu_8h.html#a797e68082ceebea788a215ecbfc279d9',1,'ir_Fujitsu.h']]], - ['kfujitsuacfilteroffset_5504',['kFujitsuAcFilterOffset',['../ir__Fujitsu_8h.html#a3c6349b24651bffb33f2633d3c65144c',1,'ir_Fujitsu.h']]], - ['kfujitsuachdrmark_5505',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], - ['kfujitsuachdrspace_5506',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacmaxtemp_5507',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ad817f46441ac1284e3bbe8417e4f4388',1,'ir_Fujitsu.h']]], - ['kfujitsuacminbits_5508',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], - ['kfujitsuacmingap_5509',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacminrepeat_5510',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], - ['kfujitsuacmintemp_5511',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#a35ec9572b356a7bcfb75947d03b198f7',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeauto_5512',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodecool_5513',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodedry_5514',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodefan_5515',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeheat_5516',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], - ['kfujitsuacofftimer_5517',['kFujitsuAcOffTimer',['../ir__Fujitsu_8h.html#ad2f217a98a0062d488ffd0586dc0d011',1,'ir_Fujitsu.h']]], - ['kfujitsuaconespace_5518',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacontimer_5519',['kFujitsuAcOnTimer',['../ir__Fujitsu_8h.html#abad3816a098ecc96bde57d1ff820552c',1,'ir_Fujitsu.h']]], - ['kfujitsuacoutsidequietoffset_5520',['kFujitsuAcOutsideQuietOffset',['../ir__Fujitsu_8h.html#a38522dc07bb7be2dd1ec654d4e60eb4f',1,'ir_Fujitsu.h']]], - ['kfujitsuacsleeptimer_5521',['kFujitsuAcSleepTimer',['../ir__Fujitsu_8h.html#a53c550f5e4d63c54b6962f47d281bec6',1,'ir_Fujitsu.h']]], - ['kfujitsuacstatelength_5522',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], - ['kfujitsuacstatelengthshort_5523',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], - ['kfujitsuacstoptimers_5524',['kFujitsuAcStopTimers',['../ir__Fujitsu_8h.html#a0f416a0f84e4100a702528664c9df177',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingboth_5525',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], - ['kfujitsuacswinghoriz_5526',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingoff_5527',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingsize_5528',['kFujitsuAcSwingSize',['../ir__Fujitsu_8h.html#a1eb20884dc6c9bccbe899f779c4b5ad4',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingvert_5529',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], - ['kfujitsuactimermax_5530',['kFujitsuAcTimerMax',['../ir__Fujitsu_8h.html#adaec1744905feeb18af4ebe9ea2f6aae',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypebyte_5531',['kFujitsuAcTimerTypeByte',['../ir__Fujitsu_8h.html#ae1a159fc53d84d007405c2b3c3ab61a3',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypeoffset_5532',['kFujitsuAcTimerTypeOffset',['../ir__Fujitsu_8h.html#ac3cc304a03e10f2e5464dbb0aaf89a1c',1,'ir_Fujitsu.h']]], - ['kfujitsuactimertypesize_5533',['kFujitsuAcTimerTypeSize',['../ir__Fujitsu_8h.html#a437d51d970e77170a0a1776308cd5e92',1,'ir_Fujitsu.h']]], - ['kfujitsuaczerospace_5534',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], - ['kgicablebitmark_5535',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], - ['kgicablebits_5536',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], - ['kgicablehdrmark_5537',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], - ['kgicablehdrspace_5538',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], - ['kgicablemincommandlength_5539',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], - ['kgicablemingap_5540',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], - ['kgicableminrepeat_5541',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], - ['kgicableonespace_5542',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], - ['kgicablerptspace_5543',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], - ['kgicablezerospace_5544',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], - ['kglobalcachefreqindex_5545',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], - ['kglobalcachemaxrepeat_5546',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], - ['kglobalcacheminusec_5547',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptindex_5548',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptstartindex_5549',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], - ['kglobalcachestartindex_5550',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], - ['kgoodweatherauto_5551',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], - ['kgoodweatherbitairflow_5552',['kGoodweatherBitAirFlow',['../ir__Goodweather_8h.html#ad86cdbc34a6a82c7595cace56d040d64',1,'ir_Goodweather.h']]], - ['kgoodweatherbitcommand_5553',['kGoodweatherBitCommand',['../ir__Goodweather_8h.html#ad6973bf4ac7801097077938e133b1718',1,'ir_Goodweather.h']]], - ['kgoodweatherbiteof_5554',['kGoodweatherBitEOF',['../ir__Goodweather_8h.html#a239d4d1fee77e0d220efb0bc0b3c779a',1,'ir_Goodweather.h']]], - ['kgoodweatherbitfan_5555',['kGoodweatherBitFan',['../ir__Goodweather_8h.html#aa3d5f146109dd671e4d7d86c1dbccba7',1,'ir_Goodweather.h']]], - ['kgoodweatherbitlight_5556',['kGoodweatherBitLight',['../ir__Goodweather_8h.html#a976dc2b37d1fcec4bbc0958861b5a9b0',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmark_5557',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmode_5558',['kGoodweatherBitMode',['../ir__Goodweather_8h.html#a3795b45c06f6d2db23cc45478bfeeca9',1,'ir_Goodweather.h']]], - ['kgoodweatherbitpower_5559',['kGoodweatherBitPower',['../ir__Goodweather_8h.html#a652b820b22c8381a6035fea7b1ae1b8d',1,'ir_Goodweather.h']]], - ['kgoodweatherbits_5560',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], - ['kgoodweatherbitsleep_5561',['kGoodweatherBitSleep',['../ir__Goodweather_8h.html#a763e8033483516c093ad12a378e0c8f8',1,'ir_Goodweather.h']]], - ['kgoodweatherbitswing_5562',['kGoodweatherBitSwing',['../ir__Goodweather_8h.html#a0a3fc264b6a77157174c207688ac2cda',1,'ir_Goodweather.h']]], - ['kgoodweatherbittemp_5563',['kGoodweatherBitTemp',['../ir__Goodweather_8h.html#a692faf9976f90d67d183ff99ed06ee51',1,'ir_Goodweather.h']]], - ['kgoodweatherbitturbo_5564',['kGoodweatherBitTurbo',['../ir__Goodweather_8h.html#afe2ad22bc8ba5ab9cad025e9adaf4d56',1,'ir_Goodweather.h']]], - ['kgoodweathercmdairflow_5565',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], - ['kgoodweathercmddowntemp_5566',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], - ['kgoodweathercmdfan_5567',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdhold_5568',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], - ['kgoodweathercmdlight_5569',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], - ['kgoodweathercmdmode_5570',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], - ['kgoodweathercmdpower_5571',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], - ['kgoodweathercmdsleep_5572',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], - ['kgoodweathercmdswing_5573',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdtimer_5574',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], - ['kgoodweathercmdturbo_5575',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], - ['kgoodweathercmduptemp_5576',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], - ['kgoodweathercommandsize_5577',['kGoodweatherCommandSize',['../ir__Goodweather_8h.html#aa5ae9f1b5f6458a25b31b0d2c7feb508',1,'ir_Goodweather.h']]], - ['kgoodweathercool_5578',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], - ['kgoodweatherdry_5579',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], - ['kgoodweathereofmask_5580',['kGoodweatherEOFMask',['../ir__Goodweather_8h.html#a3d86da1a2bab92a9f70cc88e2628f266',1,'ir_Goodweather.h']]], - ['kgoodweatherextratolerance_5581',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], - ['kgoodweatherfan_5582',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanauto_5583',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], - ['kgoodweatherfanhigh_5584',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], - ['kgoodweatherfanlow_5585',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanmed_5586',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], - ['kgoodweatherfansize_5587',['kGoodweatherFanSize',['../ir__Goodweather_8h.html#a687ae6502d8fe6b4a5bd11468106481e',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrmark_5588',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrspace_5589',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], - ['kgoodweatherheat_5590',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], - ['kgoodweatherminrepeat_5591',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], - ['kgoodweatheronespace_5592',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], - ['kgoodweatherstateinit_5593',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], - ['kgoodweatherswingfast_5594',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], - ['kgoodweatherswingoff_5595',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], - ['kgoodweatherswingsize_5596',['kGoodweatherSwingSize',['../ir__Goodweather_8h.html#a208e47dc4f9e6a85464b4ce3ecaf5c3e',1,'ir_Goodweather.h']]], - ['kgoodweatherswingslow_5597',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], - ['kgoodweathertempmax_5598',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], - ['kgoodweathertempmin_5599',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], - ['kgoodweathertempsize_5600',['kGoodweatherTempSize',['../ir__Goodweather_8h.html#a2ef3336be36de4f34940de28cfe195a8',1,'ir_Goodweather.h']]], - ['kgoodweatherzerospace_5601',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], - ['kgpiounused_5602',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], - ['kgreeauto_5603',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], - ['kgreebitmark_5604',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], - ['kgreebits_5605',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], - ['kgreeblockfooter_5606',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], - ['kgreeblockfooterbits_5607',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], - ['kgreecool_5608',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], - ['kgreedefaultrepeat_5609',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], - ['kgreedisplaytempinside_5610',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], - ['kgreedisplaytempoff_5611',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], - ['kgreedisplaytempoutside_5612',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], - ['kgreedisplaytempset_5613',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], - ['kgreedry_5614',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], - ['kgreefan_5615',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], - ['kgreefanauto_5616',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], - ['kgreefanmax_5617',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], - ['kgreefanmed_5618',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], - ['kgreefanmin_5619',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], - ['kgreehdrmark_5620',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], - ['kgreehdrspace_5621',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], - ['kgreeheat_5622',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], - ['kgreemaxtempc_5623',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], - ['kgreemaxtempf_5624',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], - ['kgreemintempc_5625',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], - ['kgreemintempf_5626',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], - ['kgreemsgspace_5627',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], - ['kgreeonespace_5628',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], - ['kgreestatelength_5629',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], - ['kgreeswingauto_5630',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], - ['kgreeswingdown_5631',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], - ['kgreeswingdownauto_5632',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], - ['kgreeswinglastpos_5633',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], - ['kgreeswingmiddle_5634',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], - ['kgreeswingmiddleauto_5635',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], - ['kgreeswingmiddledown_5636',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], - ['kgreeswingmiddleup_5637',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], - ['kgreeswingup_5638',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], - ['kgreeswingupauto_5639',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], - ['kgreetimermax_5640',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], - ['kgreezerospace_5641',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], - ['khaieracauto_5642',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], - ['khaieracbitmark_5643',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], - ['khaieracbits_5644',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], - ['khaieraccmdfan_5645',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], - ['khaieraccmdhealth_5646',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], - ['khaieraccmdmode_5647',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], - ['khaieraccmdoff_5648',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], - ['khaieraccmdon_5649',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], - ['khaieraccmdsleep_5650',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], - ['khaieraccmdswing_5651',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], - ['khaieraccmdtempdown_5652',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], - ['khaieraccmdtempup_5653',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], - ['khaieraccmdtimercancel_5654',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], - ['khaieraccmdtimerset_5655',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], - ['khaieraccool_5656',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], - ['khaieracdefaultrepeat_5657',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], - ['khaieracdeftemp_5658',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], - ['khaieracdry_5659',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], - ['khaieracfan_5660',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], - ['khaieracfanauto_5661',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], - ['khaieracfanhigh_5662',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], - ['khaieracfanlow_5663',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], - ['khaieracfanmed_5664',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], - ['khaierachdr_5665',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], - ['khaierachdrgap_5666',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], - ['khaieracheat_5667',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], - ['khaieracmaxtemp_5668',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], - ['khaieracmaxtime_5669',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], - ['khaieracmingap_5670',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], - ['khaieracmintemp_5671',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], - ['khaieraconespace_5672',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], - ['khaieracprefix_5673',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], - ['khaieracsleepbit_5674',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], - ['khaieracstatelength_5675',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], - ['khaieracswingchg_5676',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], - ['khaieracswingdown_5677',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], - ['khaieracswingoff_5678',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], - ['khaieracswingup_5679',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], - ['khaieracyrw02auto_5680',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], - ['khaieracyrw02bits_5681',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], - ['khaieracyrw02buttonfan_5682',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonhealth_5683',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], - ['khaieracyrw02buttonmode_5684',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], - ['khaieracyrw02buttonpower_5685',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonsleep_5686',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], - ['khaieracyrw02buttonswing_5687',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempdown_5688',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempup_5689',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], - ['khaieracyrw02buttonturbo_5690',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], - ['khaieracyrw02cool_5691',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], - ['khaieracyrw02defaultrepeat_5692',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], - ['khaieracyrw02dry_5693',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], - ['khaieracyrw02fan_5694',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], - ['khaieracyrw02fanauto_5695',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], - ['khaieracyrw02fanhigh_5696',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], - ['khaieracyrw02fanlow_5697',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], - ['khaieracyrw02fanmed_5698',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], - ['khaieracyrw02heat_5699',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], - ['khaieracyrw02prefix_5700',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], - ['khaieracyrw02statelength_5701',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], - ['khaieracyrw02swingauto_5702',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], - ['khaieracyrw02swingbottom_5703',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], - ['khaieracyrw02swingdown_5704',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], - ['khaieracyrw02swingmiddle_5705',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], - ['khaieracyrw02swingoff_5706',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], - ['khaieracyrw02swingtop_5707',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], - ['khaieracyrw02turbohigh_5708',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], - ['khaieracyrw02turbolow_5709',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], - ['khaieracyrw02turbooff_5710',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], - ['khaieraczerospace_5711',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], - ['kheader_5712',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], - ['khealthstr_5713',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], - ['kheatstr_5714',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], - ['khigheststr_5715',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], - ['khighnibble_5716',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], - ['khighstr_5717',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], - ['khistr_5718',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], - ['khitachiac1auto_5719',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], - ['khitachiac1bits_5720',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], - ['khitachiac1checksumstartbyte_5721',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], - ['khitachiac1cool_5722',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], - ['khitachiac1dry_5723',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], - ['khitachiac1fan_5724',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], - ['khitachiac1fanauto_5725',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], - ['khitachiac1fanbyte_5726',['kHitachiAc1FanByte',['../ir__Hitachi_8h.html#afe6b5951ba3b4e7ad5400f30228d106e',1,'ir_Hitachi.h']]], - ['khitachiac1fanhigh_5727',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], - ['khitachiac1fanlow_5728',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], - ['khitachiac1fanmed_5729',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], - ['khitachiac1fanoffset_5730',['kHitachiAc1FanOffset',['../ir__Hitachi_8h.html#af533c283666d80c0b9348f706909f4c4',1,'ir_Hitachi.h']]], - ['khitachiac1fansize_5731',['kHitachiAc1FanSize',['../ir__Hitachi_8h.html#a2b2a24680efaf1eeaf76dacaabef5c1d',1,'ir_Hitachi.h']]], - ['khitachiac1hdrmark_5732',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], - ['khitachiac1hdrspace_5733',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], - ['khitachiac1heat_5734',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], - ['khitachiac1modebyte_5735',['kHitachiAc1ModeByte',['../ir__Hitachi_8h.html#a57e27b66ff6d471c0dd335b610bc6e24',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fa_5736',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fb_5737',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], - ['khitachiac1modelbyte_5738',['kHitachiAc1ModelByte',['../ir__Hitachi_8h.html#a2e2a76b8b7decef99cfb7b197e8fb7f7',1,'ir_Hitachi.h']]], - ['khitachiac1modeloffset_5739',['kHitachiAc1ModelOffset',['../ir__Hitachi_8h.html#a8a440a64e6e164511e0976dc5b6585ff',1,'ir_Hitachi.h']]], - ['khitachiac1modelsize_5740',['kHitachiAc1ModelSize',['../ir__Hitachi_8h.html#ab74bbcb475b7eaf33f70dbfdb853d8c3',1,'ir_Hitachi.h']]], - ['khitachiac1modeoffset_5741',['kHitachiAc1ModeOffset',['../ir__Hitachi_8h.html#a3f010fa5ae43ee36771be18659d8bc80',1,'ir_Hitachi.h']]], - ['khitachiac1modesize_5742',['kHitachiAc1ModeSize',['../ir__Hitachi_8h.html#a38b456d96602e83e7832e2a7af75f321',1,'ir_Hitachi.h']]], - ['khitachiac1offtimerhighbyte_5743',['kHitachiAc1OffTimerHighByte',['../ir__Hitachi_8h.html#a36e6b7fc328ee247c11f5779487119b6',1,'ir_Hitachi.h']]], - ['khitachiac1offtimerlowbyte_5744',['kHitachiAc1OffTimerLowByte',['../ir__Hitachi_8h.html#ac8eaedd191009b2ddaf1e047ac6ecf11',1,'ir_Hitachi.h']]], - ['khitachiac1ontimerhighbyte_5745',['kHitachiAc1OnTimerHighByte',['../ir__Hitachi_8h.html#aff6907e9999561abceac42e4cce1dc3b',1,'ir_Hitachi.h']]], - ['khitachiac1ontimerlowbyte_5746',['kHitachiAc1OnTimerLowByte',['../ir__Hitachi_8h.html#a95fef3be6809026b714847c709ba655b',1,'ir_Hitachi.h']]], - ['khitachiac1powerbyte_5747',['kHitachiAc1PowerByte',['../ir__Hitachi_8h.html#acda489ff6137ab3ebfb1795a32e1ec8e',1,'ir_Hitachi.h']]], - ['khitachiac1poweroffset_5748',['kHitachiAc1PowerOffset',['../ir__Hitachi_8h.html#a3fdcd0375b85ac2641d9d5cc6e4770f8',1,'ir_Hitachi.h']]], - ['khitachiac1powertoggleoffset_5749',['kHitachiAc1PowerToggleOffset',['../ir__Hitachi_8h.html#aac994777ce070ad69550229824800ee0',1,'ir_Hitachi.h']]], - ['khitachiac1sleep1_5750',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], - ['khitachiac1sleep2_5751',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], - ['khitachiac1sleep3_5752',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], - ['khitachiac1sleep4_5753',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], - ['khitachiac1sleepbyte_5754',['kHitachiAc1SleepByte',['../ir__Hitachi_8h.html#ac693a15878e7cdc8e1f575502ea82843',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoff_5755',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoffset_5756',['kHitachiAc1SleepOffset',['../ir__Hitachi_8h.html#a277ca55dbfd35258ea40059bdff62488',1,'ir_Hitachi.h']]], - ['khitachiac1sleepsize_5757',['kHitachiAc1SleepSize',['../ir__Hitachi_8h.html#a199cedd7120057f735ffc640f93a9a1a',1,'ir_Hitachi.h']]], - ['khitachiac1statelength_5758',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], - ['khitachiac1swingbyte_5759',['kHitachiAc1SwingByte',['../ir__Hitachi_8h.html#a5a283583007b26c1b45d8d7afcd55408',1,'ir_Hitachi.h']]], - ['khitachiac1swinghoffset_5760',['kHitachiAc1SwingHOffset',['../ir__Hitachi_8h.html#ab35d4bb6c17fc5bbcb5385a642476238',1,'ir_Hitachi.h']]], - ['khitachiac1swingtoggleoffset_5761',['kHitachiAc1SwingToggleOffset',['../ir__Hitachi_8h.html#a08eac3b64687e83229648c8664d75dc4',1,'ir_Hitachi.h']]], - ['khitachiac1swingvoffset_5762',['kHitachiAc1SwingVOffset',['../ir__Hitachi_8h.html#af4e410f10812d49175cd419ed678535b',1,'ir_Hitachi.h']]], - ['khitachiac1tempauto_5763',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], - ['khitachiac1tempbyte_5764',['kHitachiAc1TempByte',['../ir__Hitachi_8h.html#a03185c3b2ddb62d12267da014796da56',1,'ir_Hitachi.h']]], - ['khitachiac1tempdelta_5765',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], - ['khitachiac1tempoffset_5766',['kHitachiAc1TempOffset',['../ir__Hitachi_8h.html#a8a92aa41be23301229ecec1486714b9a',1,'ir_Hitachi.h']]], - ['khitachiac1tempsize_5767',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], - ['khitachiac1timersize_5768',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], - ['khitachiac2bits_5769',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], - ['khitachiac2statelength_5770',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], - ['khitachiac344bits_5771',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], - ['khitachiac344buttonfan_5772',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], - ['khitachiac344buttonpowermode_5773',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingh_5774',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingv_5775',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempdown_5776',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempup_5777',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], - ['khitachiac344cool_5778',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], - ['khitachiac344dry_5779',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], - ['khitachiac344fan_5780',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], - ['khitachiac344fanauto_5781',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], - ['khitachiac344fanhigh_5782',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], - ['khitachiac344fanlow_5783',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], - ['khitachiac344fanmax_5784',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], - ['khitachiac344fanmedium_5785',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], - ['khitachiac344fanmin_5786',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], - ['khitachiac344heat_5787',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], - ['khitachiac344maxtemp_5788',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], - ['khitachiac344mintemp_5789',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], - ['khitachiac344statelength_5790',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], - ['khitachiac344swinghauto_5791',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], - ['khitachiac344swinghbyte_5792',['kHitachiAc344SwingHByte',['../ir__Hitachi_8h.html#a132b64e007043ade4f209b0416fd5f4d',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleft_5793',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleftmax_5794',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], - ['khitachiac344swinghmiddle_5795',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], - ['khitachiac344swinghoffset_5796',['kHitachiAc344SwingHOffset',['../ir__Hitachi_8h.html#a7e8e57b0b37f20a502eb66f13980989c',1,'ir_Hitachi.h']]], - ['khitachiac344swinghright_5797',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], - ['khitachiac344swinghrightmax_5798',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], - ['khitachiac344swinghsize_5799',['kHitachiAc344SwingHSize',['../ir__Hitachi_8h.html#aadd389cd818207920c1e8efef53fde91',1,'ir_Hitachi.h']]], - ['khitachiac344swingvbyte_5800',['kHitachiAc344SwingVByte',['../ir__Hitachi_8h.html#ae40211be39e522ebf9b580b3481f49f3',1,'ir_Hitachi.h']]], - ['khitachiac344swingvoffset_5801',['kHitachiAc344SwingVOffset',['../ir__Hitachi_8h.html#a8b38ef096697f70bdba8f4bd2799e148',1,'ir_Hitachi.h']]], - ['khitachiac3bitmark_5802',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], - ['khitachiac3bits_5803',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], - ['khitachiac3hdrmark_5804',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], - ['khitachiac3hdrspace_5805',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], - ['khitachiac3minbits_5806',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], - ['khitachiac3minstatelength_5807',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], - ['khitachiac3onespace_5808',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], - ['khitachiac3statelength_5809',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], - ['khitachiac3zerospace_5810',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], - ['khitachiac424bitmark_5811',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], - ['khitachiac424bits_5812',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], - ['khitachiac424buttonbyte_5813',['kHitachiAc424ButtonByte',['../ir__Hitachi_8h.html#a057159edca95f9a000c80c7059919e83',1,'ir_Hitachi.h']]], - ['khitachiac424buttonfan_5814',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], - ['khitachiac424buttonpowermode_5815',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingh_5816',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingv_5817',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempdown_5818',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempup_5819',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], - ['khitachiac424cool_5820',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], - ['khitachiac424dry_5821',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], - ['khitachiac424fan_5822',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], - ['khitachiac424fanauto_5823',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], - ['khitachiac424fanbyte_5824',['kHitachiAc424FanByte',['../ir__Hitachi_8h.html#aa4758708fe16d13cf6f50b7aa9e12bf6',1,'ir_Hitachi.h']]], - ['khitachiac424fanhigh_5825',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], - ['khitachiac424fanlow_5826',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], - ['khitachiac424fanmax_5827',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], - ['khitachiac424fanmaxdry_5828',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], - ['khitachiac424fanmedium_5829',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], - ['khitachiac424fanmin_5830',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], - ['khitachiac424fantemp_5831',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], - ['khitachiac424hdrmark_5832',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], - ['khitachiac424hdrspace_5833',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], - ['khitachiac424heat_5834',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], - ['khitachiac424ldrmark_5835',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], - ['khitachiac424ldrspace_5836',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], - ['khitachiac424maxtemp_5837',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], - ['khitachiac424mintemp_5838',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], - ['khitachiac424modebyte_5839',['kHitachiAc424ModeByte',['../ir__Hitachi_8h.html#a3c6e0d27a95d94142360efa19a342c99',1,'ir_Hitachi.h']]], - ['khitachiac424onespace_5840',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], - ['khitachiac424powerbyte_5841',['kHitachiAc424PowerByte',['../ir__Hitachi_8h.html#a815e6761376ca4eae649ec837d55dc25',1,'ir_Hitachi.h']]], - ['khitachiac424poweroff_5842',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], - ['khitachiac424poweron_5843',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], - ['khitachiac424statelength_5844',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], - ['khitachiac424tempbyte_5845',['kHitachiAc424TempByte',['../ir__Hitachi_8h.html#a5de1ae606d6a34e24420b08a73542b94',1,'ir_Hitachi.h']]], - ['khitachiac424tempoffset_5846',['kHitachiAc424TempOffset',['../ir__Hitachi_8h.html#a3adb47220c4c72a62d9296092047900f',1,'ir_Hitachi.h']]], - ['khitachiac424tempsize_5847',['kHitachiAc424TempSize',['../ir__Hitachi_8h.html#ae6738f4a4476e5f34efbeb52e8c413de',1,'ir_Hitachi.h']]], - ['khitachiac424zerospace_5848',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], - ['khitachiacauto_5849',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], - ['khitachiacautotemp_5850',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], - ['khitachiacbitmark_5851',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], - ['khitachiacbits_5852',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], - ['khitachiaccool_5853',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], - ['khitachiacdefaultrepeat_5854',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], - ['khitachiacdry_5855',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], - ['khitachiacfan_5856',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], - ['khitachiacfanauto_5857',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], - ['khitachiacfanhigh_5858',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], - ['khitachiacfanlow_5859',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], - ['khitachiacfanmed_5860',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], - ['khitachiacfreq_5861',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], - ['khitachiachdrmark_5862',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], - ['khitachiachdrspace_5863',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], - ['khitachiacheat_5864',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], - ['khitachiacmaxtemp_5865',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], - ['khitachiacmingap_5866',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], - ['khitachiacmintemp_5867',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], - ['khitachiaconespace_5868',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], - ['khitachiacpoweroffset_5869',['kHitachiAcPowerOffset',['../ir__Hitachi_8h.html#a30062f0646ac63c3612d13f98211e36b',1,'ir_Hitachi.h']]], - ['khitachiacstatelength_5870',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], - ['khitachiacswingoffset_5871',['kHitachiAcSwingOffset',['../ir__Hitachi_8h.html#aac1fcff513a4eca2aeb4f13c739165e2',1,'ir_Hitachi.h']]], - ['khitachiaczerospace_5872',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], - ['kholdstr_5873',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], - ['khoursstr_5874',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], - ['khourstr_5875',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], - ['khumidstr_5876',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], - ['kidlestate_5877',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], - ['kifeelstr_5878',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], - ['kinaxbitmark_5879',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], - ['kinaxbits_5880',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], - ['kinaxhdrmark_5881',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], - ['kinaxhdrspace_5882',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], - ['kinaxmingap_5883',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], - ['kinaxminrepeat_5884',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], - ['kinaxonespace_5885',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], - ['kinaxtick_5886',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], - ['kinaxzerospace_5887',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], - ['kinsidestr_5888',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], - ['kionstr_5889',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], - ['kjvcbitmark_5890',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], - ['kjvcbitmarkticks_5891',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], - ['kjvcbits_5892',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], - ['kjvchdrmark_5893',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], - ['kjvchdrmarkticks_5894',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], - ['kjvchdrspace_5895',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], - ['kjvchdrspaceticks_5896',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], - ['kjvcmingap_5897',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], - ['kjvcmingapticks_5898',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], - ['kjvconespace_5899',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], - ['kjvconespaceticks_5900',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], - ['kjvcrptlength_5901',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], - ['kjvcrptlengthticks_5902',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], - ['kjvctick_5903',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], - ['kjvczerospace_5904',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], - ['kjvczerospaceticks_5905',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], - ['kkelvinatorauto_5906',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], - ['kkelvinatorautotemp_5907',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfanmax_5908',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfansize_5909',['kKelvinatorBasicFanSize',['../ir__Kelvinator_8cpp.html#a35ffe10c5c1b834703fe44c5eeeb4c8f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmark_5910',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmarkticks_5911',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbits_5912',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], - ['kkelvinatorchecksumstart_5913',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooter_5914',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooterbits_5915',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcool_5916',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], - ['kkelvinatordefaultrepeat_5917',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], - ['kkelvinatordry_5918',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], - ['kkelvinatorfan_5919',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanauto_5920',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmax_5921',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmin_5922',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanoffset_5923',['kKelvinatorFanOffset',['../ir__Kelvinator_8cpp.html#a4988bb98a4f8798c0b927e981667cfbd',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorfansize_5924',['kKelvinatorFanSize',['../ir__Kelvinator_8cpp.html#a286636ba83aceab9c8518878a6d7209e',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspace_5925',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspaceticks_5926',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmark_5927',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmarkticks_5928',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspace_5929',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspaceticks_5930',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorheat_5931',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], - ['kkelvinatorionfilteroffset_5932',['kKelvinatorIonFilterOffset',['../ir__Kelvinator_8cpp.html#a5cbdc907f0cb6a47d0c548148933067b',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorlightoffset_5933',['kKelvinatorLightOffset',['../ir__Kelvinator_8cpp.html#a7e757add18951b8e36c2065c5dbefc24',1,'ir_Kelvinator.cpp']]], - ['kkelvinatormaxtemp_5934',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], - ['kkelvinatormintemp_5935',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], - ['kkelvinatormodeoffset_5936',['kKelvinatorModeOffset',['../ir__Kelvinator_8cpp.html#a6a52d11326d5f83653c510393bb2a518',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespace_5937',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespaceticks_5938',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorpoweroffset_5939',['kKelvinatorPowerOffset',['../ir__Kelvinator_8cpp.html#a5a9591e2dd98f68ad6f562e199b1a304',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorquietoffset_5940',['kKelvinatorQuietOffset',['../ir__Kelvinator_8cpp.html#ad354be321ea41c51ead876fd30674546',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorstatelength_5941',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], - ['kkelvinatortick_5942',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorturbooffset_5943',['kKelvinatorTurboOffset',['../ir__Kelvinator_8cpp.html#a21987b6f00c7f2e9bba94c59bc5b804b',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswinghoffset_5944',['kKelvinatorVentSwingHOffset',['../ir__Kelvinator_8cpp.html#a551df2c1e21764f12030f6bfa6d5942d',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswingoffset_5945',['kKelvinatorVentSwingOffset',['../ir__Kelvinator_8cpp.html#a38012bf9daa0c362a9007107183391ef',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorventswingvoffset_5946',['kKelvinatorVentSwingVOffset',['../ir__Kelvinator_8cpp.html#a64d3767b464d4fe2543560cf5a2a5b21',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorxfanoffset_5947',['kKelvinatorXfanOffset',['../ir__Kelvinator_8cpp.html#a4417448475405306f10166fc9cd98054',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospace_5948',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospaceticks_5949',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], - ['klasertagbits_5950',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], - ['klasertagdelta_5951',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], - ['klasertagexcess_5952',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], - ['klasertagmingap_5953',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], - ['klasertagminrepeat_5954',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], - ['klasertagminsamples_5955',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], - ['klasertagtick_5956',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], - ['klasertagtolerance_5957',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], - ['klaststr_5958',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], - ['kleftmaxstr_5959',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], - ['kleftstr_5960',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], - ['klegopfbitmark_5961',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], - ['klegopfbits_5962',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], - ['klegopfhdrspace_5963',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], - ['klegopfmincommandlength_5964',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], - ['klegopfminrepeat_5965',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], - ['klegopfonespace_5966',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], - ['klegopfzerospace_5967',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], - ['klg2bitmark_5968',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], - ['klg2bitmarkticks_5969',['kLg2BitMarkTicks',['../ir__LG_8cpp.html#aae477dcb68b9c5f1b12adf832eb388a1',1,'ir_LG.cpp']]], - ['klg2hdrmark_5970',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], - ['klg2hdrmarkticks_5971',['kLg2HdrMarkTicks',['../ir__LG_8cpp.html#adb636fb6b634c651364ae954d31b5692',1,'ir_LG.cpp']]], - ['klg2hdrspace_5972',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], - ['klg2hdrspaceticks_5973',['kLg2HdrSpaceTicks',['../ir__LG_8cpp.html#abd2f843416070a93587d07e4d32f1eb5',1,'ir_LG.cpp']]], - ['klg32bits_5974',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], - ['klg32hdrmark_5975',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], - ['klg32hdrmarkticks_5976',['kLg32HdrMarkTicks',['../ir__LG_8cpp.html#aded50973c0a938d455c1537cb240d5e9',1,'ir_LG.cpp']]], - ['klg32hdrspace_5977',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], - ['klg32hdrspaceticks_5978',['kLg32HdrSpaceTicks',['../ir__LG_8cpp.html#aa029c2c83a96f1ff02610eddd6b946fa',1,'ir_LG.cpp']]], - ['klg32rpthdrmark_5979',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], - ['klg32rpthdrmarkticks_5980',['kLg32RptHdrMarkTicks',['../ir__LG_8cpp.html#a5c79f7072eee35fc1df10ecd18e2a3d2',1,'ir_LG.cpp']]], - ['klgacauto_5981',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], - ['klgacchecksumoffset_5982',['kLgAcChecksumOffset',['../ir__LG_8h.html#aa0b9abe43a870097d886efcd0fd3bb96',1,'ir_LG.h']]], - ['klgacchecksumsize_5983',['kLgAcChecksumSize',['../ir__LG_8h.html#a177d205346380d47ae47b52079e5ffaf',1,'ir_LG.h']]], - ['klgaccool_5984',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], - ['klgacdry_5985',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], - ['klgacfan_5986',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], - ['klgacfanauto_5987',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], - ['klgacfanhigh_5988',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], - ['klgacfanlow_5989',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], - ['klgacfanlowest_5990',['kLgAcFanLowest',['../ir__LG_8h.html#a6b89a2e6a5bee761e1754fe520459d49',1,'ir_LG.h']]], - ['klgacfanmedium_5991',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], - ['klgacfanoffset_5992',['kLgAcFanOffset',['../ir__LG_8h.html#a428d348215682243f7e5fe03c7580665',1,'ir_LG.h']]], - ['klgacfansize_5993',['kLgAcFanSize',['../ir__LG_8h.html#a4baf7484fee55fdd5cdbf13d11d7f1b9',1,'ir_LG.h']]], - ['klgacheat_5994',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], - ['klgacmaxtemp_5995',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], - ['klgacmintemp_5996',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], - ['klgacmodeoffset_5997',['kLgAcModeOffset',['../ir__LG_8h.html#abbc65ef461fd214d9ef41ebf62693467',1,'ir_LG.h']]], - ['klgacmodesize_5998',['kLgAcModeSize',['../ir__LG_8h.html#ae9927832fbb45c310666d8de1ebe5f0f',1,'ir_LG.h']]], - ['klgacoffcommand_5999',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], - ['klgacpoweroff_6000',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], - ['klgacpoweroffset_6001',['kLgAcPowerOffset',['../ir__LG_8h.html#a7cce14305909efe3b904d68f902d42de',1,'ir_LG.h']]], - ['klgacpoweron_6002',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], - ['klgacpowersize_6003',['kLgAcPowerSize',['../ir__LG_8h.html#a624eee0bc9084e4d9d801f8cbdc28d1e',1,'ir_LG.h']]], - ['klgacsignature_6004',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], - ['klgacsignatureoffset_6005',['kLgAcSignatureOffset',['../ir__LG_8h.html#a406dff4b4ffa5b809b8ea87ddfd3bf8b',1,'ir_LG.h']]], - ['klgacsignaturesize_6006',['kLgAcSignatureSize',['../ir__LG_8h.html#a7420d729a5dca26d95be3b9907eb477e',1,'ir_LG.h']]], - ['klgactempadjust_6007',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], - ['klgactempoffset_6008',['kLgAcTempOffset',['../ir__LG_8h.html#aca5ae781e03e4a88a83303cb0cae0609',1,'ir_LG.h']]], - ['klgactempsize_6009',['kLgAcTempSize',['../ir__LG_8h.html#ad0235a6c5bebb086b75dc65433b3c9e1',1,'ir_LG.h']]], - ['klgbitmark_6010',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], - ['klgbitmarkticks_6011',['kLgBitMarkTicks',['../ir__LG_8cpp.html#a80b2d221b207c8c0faa74f1f39e9920b',1,'ir_LG.cpp']]], - ['klgbits_6012',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], - ['klgdefaultrepeat_6013',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], - ['klghdrmark_6014',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], - ['klghdrmarkticks_6015',['kLgHdrMarkTicks',['../ir__LG_8cpp.html#a6f1f88f3cefe49b9796a10a9109e560e',1,'ir_LG.cpp']]], - ['klghdrspace_6016',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], - ['klghdrspaceticks_6017',['kLgHdrSpaceTicks',['../ir__LG_8cpp.html#a22d8775d4c8985970b47e449232b45de',1,'ir_LG.cpp']]], - ['klgmingap_6018',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], - ['klgmingapticks_6019',['kLgMinGapTicks',['../ir__LG_8cpp.html#aa56fd5b4fe946992aa1b9bdf61b1518b',1,'ir_LG.cpp']]], - ['klgminmessagelength_6020',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], - ['klgminmessagelengthticks_6021',['kLgMinMessageLengthTicks',['../ir__LG_8cpp.html#ab000fc974bdd0723e8bcb4872f33dd72',1,'ir_LG.cpp']]], - ['klgonespace_6022',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], - ['klgonespaceticks_6023',['kLgOneSpaceTicks',['../ir__LG_8cpp.html#a535b089cd72bd027cbc34eb917d71ae5',1,'ir_LG.cpp']]], - ['klgrptspace_6024',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], - ['klgrptspaceticks_6025',['kLgRptSpaceTicks',['../ir__LG_8cpp.html#abc43b327c2c752dc5ed2794f08e2eba8',1,'ir_LG.cpp']]], - ['klgtick_6026',['kLgTick',['../ir__LG_8cpp.html#ab8ab28ebf1fae94aa900a3199a6fc191',1,'ir_LG.cpp']]], - ['klgzerospace_6027',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], - ['klgzerospaceticks_6028',['kLgZeroSpaceTicks',['../ir__LG_8cpp.html#af932345e15db822da67d7796cd5b6584',1,'ir_LG.cpp']]], - ['klightstr_6029',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], - ['klighttogglestr_6030',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], - ['klostr_6031',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], - ['kloudstr_6032',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], - ['klowerstr_6033',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], - ['kloweststr_6034',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], - ['klownibble_6035',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], - ['klowstr_6036',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], - ['klutronbits_6037',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], - ['klutrondelta_6038',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], - ['klutrongap_6039',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], - ['klutrontick_6040',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], - ['kmagiquestbits_6041',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], - ['kmagiquestgap_6042',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], - ['kmagiquestmarkone_6043',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], - ['kmagiquestmarkzero_6044',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], - ['kmagiquestoneratio_6045',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], - ['kmagiquestspaceone_6046',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], - ['kmagiquestspacezero_6047',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], - ['kmagiquesttotalusec_6048',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], - ['kmagiquestzeroratio_6049',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], - ['kmanualstr_6050',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], - ['kmark_6051',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], - ['kmarkexcess_6052',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], - ['kmarkstate_6053',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], - ['kmaxaccurateusecdelay_6054',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], - ['kmaximumstr_6055',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], - ['kmaxleftstr_6056',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], - ['kmaxrightstr_6057',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], - ['kmaxstr_6058',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], - ['kmaxtimeoutms_6059',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], - ['kmediumstr_6060',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], - ['kmedstr_6061',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], - ['kmetzaddressbits_6062',['kMetzAddressBits',['../ir__Metz_8cpp.html#accbe5b6fed5bd637faff4b6e04bd1ced',1,'ir_Metz.cpp']]], - ['kmetzbitmark_6063',['kMetzBitMark',['../ir__Metz_8cpp.html#a6aa8842178b5c67d709bca787a285301',1,'ir_Metz.cpp']]], - ['kmetzbits_6064',['kMetzBits',['../IRremoteESP8266_8h.html#ad07971b39dd912f9e01ab5912c0667e6',1,'IRremoteESP8266.h']]], - ['kmetzcommandbits_6065',['kMetzCommandBits',['../ir__Metz_8cpp.html#a71d1a54f579541d040640f468dbbd47f',1,'ir_Metz.cpp']]], - ['kmetzfreq_6066',['kMetzFreq',['../ir__Metz_8cpp.html#a4970bcdab10f7ccfc6d619f417c312ab',1,'ir_Metz.cpp']]], - ['kmetzhdrmark_6067',['kMetzHdrMark',['../ir__Metz_8cpp.html#a37d8db3081bb8155738a8e0ca3fb0f69',1,'ir_Metz.cpp']]], - ['kmetzhdrspace_6068',['kMetzHdrSpace',['../ir__Metz_8cpp.html#a0692936979b5453e9a3baf867ec8ed0e',1,'ir_Metz.cpp']]], - ['kmetzminrepeat_6069',['kMetzMinRepeat',['../IRremoteESP8266_8h.html#a06aa5d85cd9b325024d79ec9af9e30e4',1,'IRremoteESP8266.h']]], - ['kmetzonespace_6070',['kMetzOneSpace',['../ir__Metz_8cpp.html#a397415b944f0be2a3b87c6c8eaeddda0',1,'ir_Metz.cpp']]], - ['kmetzzerospace_6071',['kMetzZeroSpace',['../ir__Metz_8cpp.html#ac5eb86e56a2df05a02e1581d0f8595c5',1,'ir_Metz.cpp']]], - ['kmiddlestr_6072',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], - ['kmidea24bits_6073',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], - ['kmidea24mingap_6074',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], - ['kmidea24minrepeat_6075',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], - ['kmideaacauto_6076',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], - ['kmideaaccool_6077',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], - ['kmideaacdry_6078',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], - ['kmideaacfan_6079',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], - ['kmideaacfanauto_6080',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], - ['kmideaacfanhigh_6081',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], - ['kmideaacfanlow_6082',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], - ['kmideaacfanmed_6083',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], - ['kmideaacheat_6084',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], - ['kmideaacmaxtempc_6085',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], - ['kmideaacmaxtempf_6086',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], - ['kmideaacmintempc_6087',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], - ['kmideaacmintempf_6088',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], - ['kmideaactoggleecono_6089',['kMideaACToggleEcono',['../ir__Midea_8h.html#afae5d72469e092300eb740d696b27c2b',1,'ir_Midea.h']]], - ['kmideaactoggleswingv_6090',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], - ['kmideabitmark_6091',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], - ['kmideabitmarkticks_6092',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], - ['kmideabits_6093',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], - ['kmideahdrmark_6094',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], - ['kmideahdrmarkticks_6095',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], - ['kmideahdrspace_6096',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], - ['kmideahdrspaceticks_6097',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], - ['kmideamingap_6098',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], - ['kmideamingapticks_6099',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], - ['kmideaminrepeat_6100',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], - ['kmideaonespace_6101',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], - ['kmideaonespaceticks_6102',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], - ['kmideatick_6103',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], - ['kmideatolerance_6104',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], - ['kmideazerospace_6105',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], - ['kmideazerospaceticks_6106',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], - ['kmidstr_6107',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], - ['kminimumstr_6108',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], - ['kminstr_6109',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], - ['kminutesstr_6110',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], - ['kminutestr_6111',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], - ['kmitsubishi112auto_6112',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112bitmark_6113',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112bits_6114',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], - ['kmitsubishi112cool_6115',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112dry_6116',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanbyte_6117',['kMitsubishi112FanByte',['../ir__Mitsubishi_8h.html#a4312828eb864a67f8cc67a90c1324d3a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanlow_6118',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmax_6119',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmed_6120',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmin_6121',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanoffset_6122',['kMitsubishi112FanOffset',['../ir__Mitsubishi_8h.html#ac000e0d3a59314c115e516f37c29983d',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanquiet_6123',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fansize_6124',['kMitsubishi112FanSize',['../ir__Mitsubishi_8h.html#ab102138f689d66c2c4c97445931f2dec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112gap_6125',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmark_6126',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmarktolerance_6127',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrspace_6128',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112heat_6129',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112maxtemp_6130',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112minrepeat_6131',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], - ['kmitsubishi112mintemp_6132',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112modebyte_6133',['kMitsubishi112ModeByte',['../ir__Mitsubishi_8h.html#a7e7663483fa89b4283baafba744d707a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112modeoffset_6134',['kMitsubishi112ModeOffset',['../ir__Mitsubishi_8h.html#a39c8631bfd414738f1934eb28e74b97b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112onespace_6135',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112powerbyte_6136',['kMitsubishi112PowerByte',['../ir__Mitsubishi_8h.html#ab09f78fee2a242dfdb0318a4caf7a2d6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112poweroffset_6137',['kMitsubishi112PowerOffset',['../ir__Mitsubishi_8h.html#afd78de91190fa6ec8ffcc9132e3a8b35',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112statelength_6138',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], - ['kmitsubishi112swinghauto_6139',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghbyte_6140',['kMitsubishi112SwingHByte',['../ir__Mitsubishi_8h.html#ac149161c62c9ceee1c3a37d73930a7e8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleft_6141',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleftmax_6142',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghmiddle_6143',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghoffset_6144',['kMitsubishi112SwingHOffset',['../ir__Mitsubishi_8h.html#a42f92264157e170d68046b9970a057ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghright_6145',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghrightmax_6146',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghsize_6147',['kMitsubishi112SwingHSize',['../ir__Mitsubishi_8h.html#a9ab977dbab987789d40fae38212f07ba',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghwide_6148',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvauto_6149',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvbyte_6150',['kMitsubishi112SwingVByte',['../ir__Mitsubishi_8h.html#afbcd99e59a029ccc6276c87a46d560dd',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhigh_6151',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhighest_6152',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlow_6153',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlowest_6154',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvmiddle_6155',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvoffset_6156',['kMitsubishi112SwingVOffset',['../ir__Mitsubishi_8h.html#ae4f3919271bb464d90a42066e8052c64',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvsize_6157',['kMitsubishi112SwingVSize',['../ir__Mitsubishi_8h.html#ae4f466b64691d8aa20e66a982d65ceea',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112tempbyte_6158',['kMitsubishi112TempByte',['../ir__Mitsubishi_8h.html#a4099370512a63ae3414221ab45f05034',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112tempsize_6159',['kMitsubishi112TempSize',['../ir__Mitsubishi_8h.html#a30d0ece1b7db3558ecc03214843c9fec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112zerospace_6160',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136auto_6161',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136bitmark_6162',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136bits_6163',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], - ['kmitsubishi136cool_6164',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136dry_6165',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fan_6166',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanbyte_6167',['kMitsubishi136FanByte',['../ir__Mitsubishi_8h.html#a62166a745fdf0bbbd4b0eb114073b03e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanlow_6168',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmax_6169',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmed_6170',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmin_6171',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanoffset_6172',['kMitsubishi136FanOffset',['../ir__Mitsubishi_8h.html#aaa194e1e4394d3805477f4b2b78d3a81',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanquiet_6173',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fansize_6174',['kMitsubishi136FanSize',['../ir__Mitsubishi_8h.html#a3fa7836f102aa9c78d7dd287a038baee',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136gap_6175',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrmark_6176',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrspace_6177',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136heat_6178',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136maxtemp_6179',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136minrepeat_6180',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], - ['kmitsubishi136mintemp_6181',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136modebyte_6182',['kMitsubishi136ModeByte',['../ir__Mitsubishi_8h.html#a98fbde8559e82a1875235019913e859c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136modeoffset_6183',['kMitsubishi136ModeOffset',['../ir__Mitsubishi_8h.html#a061d59096df59826d951e83594728893',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136onespace_6184',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136powerbit_6185',['kMitsubishi136PowerBit',['../ir__Mitsubishi_8h.html#abbe2f7821db2a6f4696cf7f9138c509d',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136powerbyte_6186',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136poweroffset_6187',['kMitsubishi136PowerOffset',['../ir__Mitsubishi_8h.html#ad235f31bc4b42548373c15e18f29e8b1',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136statelength_6188',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], - ['kmitsubishi136swingvauto_6189',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvbyte_6190',['kMitsubishi136SwingVByte',['../ir__Mitsubishi_8h.html#ab31414515f89e94ec8b63028e215b5ad',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhigh_6191',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhighest_6192',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlow_6193',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlowest_6194',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136tempbyte_6195',['kMitsubishi136TempByte',['../ir__Mitsubishi_8h.html#a22bf24adb745489a75fb877fa5cc249a',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136zerospace_6196',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2bitmark_6197',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrmark_6198',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrspace_6199',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2mingap_6200',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2onespace_6201',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2zerospace_6202',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacauto_6203',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacbitmark_6204',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacbits_6205',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], - ['kmitsubishiaccool_6206',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacdry_6207',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacextratolerance_6208',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacfanauto_6209',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanautooffset_6210',['kMitsubishiAcFanAutoOffset',['../ir__Mitsubishi_8h.html#ab8696268b90bf45314d712c212d68a10',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanmax_6211',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanoffset_6212',['kMitsubishiAcFanOffset',['../ir__Mitsubishi_8h.html#ac16a5f7fe9800006de4511fd4ac89d64',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanquiet_6213',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanrealmax_6214',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansilent_6215',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansize_6216',['kMitsubishiAcFanSize',['../ir__Mitsubishi_8h.html#a565c641228d28357282b211048f1bd1c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiachdrmark_6217',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiachdrspace_6218',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacheat_6219',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmaxtemp_6220',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#a8ba3fba3eb9dd63f5ade3cb3bd11269b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacminrepeat_6221',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], - ['kmitsubishiacmintemp_6222',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#a2d6d53ccf446fcb03331f4e9757f4169',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmodeoffset_6223',['kMitsubishiAcModeOffset',['../ir__Mitsubishi_8h.html#ac0037c13e3f90b7bde5a8328faaa3b9b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacnotimer_6224',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaconespace_6225',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacpower_6226',['kMitsubishiAcPower',['../ir__Mitsubishi_8h.html#a864c4d936663d68f65ed4525072bd3eb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacpoweroffset_6227',['kMitsubishiAcPowerOffset',['../ir__Mitsubishi_8h.html#a78749519549fb76a920ca447a4504e72',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacrptmark_6228',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptspace_6229',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacstartstoptimer_6230',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstarttimer_6231',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstatelength_6232',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], - ['kmitsubishiacstoptimer_6233',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneauto_6234',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneautomove_6235',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanebitoffset_6236',['kMitsubishiAcVaneBitOffset',['../ir__Mitsubishi_8h.html#a0766870a9709320cfff03d0147f8e414',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneoffset_6237',['kMitsubishiAcVaneOffset',['../ir__Mitsubishi_8h.html#a2e928c1f814b71a1c346b3e987d7b857',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanesize_6238',['kMitsubishiAcVaneSize',['../ir__Mitsubishi_8h.html#a27d52c41a9309a89e3a2c45b87c501ff',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneauto_6239',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaczerospace_6240',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmark_6241',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmarkticks_6242',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibits_6243',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152bits_6244',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152fanauto_6245',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanecono_6246',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanhigh_6247',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanlow_6248',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmax_6249',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmed_6250',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanturbo_6251',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152minrepeat_6252',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152statelength_6253',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152swinghauto_6254',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleft_6255',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftmax_6256',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftright_6257',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghmiddle_6258',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghoff_6259',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghright_6260',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightleft_6261',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightmax_6262',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvauto_6263',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhigh_6264',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhighest_6265',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlow_6266',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlowest_6267',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvmiddle_6268',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoff_6269',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoffset_6270',['kMitsubishiHeavy152SwingVOffset',['../ir__MitsubishiHeavy_8h.html#ae46f3549243667bbc38d6dc058772699',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvsize_6271',['kMitsubishiHeavy152SwingVSize',['../ir__MitsubishiHeavy_8h.html#a9cf7566686359cd5d553881b5eb96131',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy3dmask_6272',['kMitsubishiHeavy3DMask',['../ir__MitsubishiHeavy_8h.html#a16dcde537c9a2b1e8ddab4d6e08abb39',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88bits_6273',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88cleanoffset_6274',['kMitsubishiHeavy88CleanOffset',['../ir__MitsubishiHeavy_8h.html#ac0a4108b9ce94b3a85c2cb9680c98f4e',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanauto_6275',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanecono_6276',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanhigh_6277',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanlow_6278',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanmed_6279',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanoffset_6280',['kMitsubishiHeavy88FanOffset',['../ir__MitsubishiHeavy_8h.html#a477fe23b5b186f4386e5d0cbded98710',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fansize_6281',['kMitsubishiHeavy88FanSize',['../ir__MitsubishiHeavy_8h.html#a68ffc738a040b3c95a839362e069fe8a',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanturbo_6282',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88minrepeat_6283',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88statelength_6284',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88swingh3d_6285',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghauto_6286',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleft_6287',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftmax_6288',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftright_6289',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghmiddle_6290',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoff_6291',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoffset1_6292',['kMitsubishiHeavy88SwingHOffset1',['../ir__MitsubishiHeavy_8h.html#aeefa28e96d259e4ad5b63b86abf46f39',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoffset2_6293',['kMitsubishiHeavy88SwingHOffset2',['../ir__MitsubishiHeavy_8h.html#a9efbee563f821dad4006e8c56de9131d',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghright_6294',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightleft_6295',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightmax_6296',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghsize_6297',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvauto_6298',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5offset_6299',['kMitsubishiHeavy88SwingVByte5Offset',['../ir__MitsubishiHeavy_8h.html#adab63d1b0145cbea0953a9fdd34fd3cf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5size_6300',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte7offset_6301',['kMitsubishiHeavy88SwingVByte7Offset',['../ir__MitsubishiHeavy_8h.html#a8e864258ce7f01edb3b8d4672bba6312',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte7size_6302',['kMitsubishiHeavy88SwingVByte7Size',['../ir__MitsubishiHeavy_8h.html#a2e0d599b002366cc73d07f876d4fc0f7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhigh_6303',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhighest_6304',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlow_6305',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlowest_6306',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvmiddle_6307',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvoff_6308',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyauto_6309',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavybitmark_6310',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavycleanoffset_6311',['kMitsubishiHeavyCleanOffset',['../ir__MitsubishiHeavy_8h.html#acbcff6b22bf5dee4eeb1dbccc323409a',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavycool_6312',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavydry_6313',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfan_6314',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfilteroffset_6315',['kMitsubishiHeavyFilterOffset',['../ir__MitsubishiHeavy_8h.html#a32232c193503a4a6bab8f783fdebeddf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavygap_6316',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrmark_6317',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrspace_6318',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyheat_6319',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymaxtemp_6320',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymintemp_6321',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymodeoffset_6322',['kMitsubishiHeavyModeOffset',['../ir__MitsubishiHeavy_8h.html#a2ac27d9659d3a203c8cc360bda901d10',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavynightoffset_6323',['kMitsubishiHeavyNightOffset',['../ir__MitsubishiHeavy_8h.html#a01b341211034e272bf5d4be00b88cc78',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyonespace_6324',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavypoweroffset_6325',['kMitsubishiHeavyPowerOffset',['../ir__MitsubishiHeavy_8h.html#a51d81b3a7d97e423858e00aecd9719c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavysiglength_6326',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavysilentoffset_6327',['kMitsubishiHeavySilentOffset',['../ir__MitsubishiHeavy_8h.html#a9b7eb89d7a3f08e84339317d1f21ca6f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzerospace_6328',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyzjssig_6329',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzmssig_6330',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishimincommandlength_6331',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimincommandlengthticks_6332',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingap_6333',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingapticks_6334',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiminrepeat_6335',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], - ['kmitsubishionespace_6336',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishionespaceticks_6337',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishitick_6338',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospace_6339',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospaceticks_6340',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], - ['kmodebitssize_6341',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], - ['kmodelstr_6342',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], - ['kmodestr_6343',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], - ['kmouldstr_6344',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], - ['kmovestr_6345',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], - ['kmultibracketsbits_6346',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], - ['kmultibracketsdefaultrepeat_6347',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], - ['kmultibracketsfooterspace_6348',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketsfreq_6349',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketshdrmark_6350',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstick_6351',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstolerance_6352',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], - ['kmwmdelta_6353',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], - ['kmwmexcess_6354',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], - ['kmwmmaxwidth_6355',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], - ['kmwmmingap_6356',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], - ['kmwmminsamples_6357',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], - ['kmwmtick_6358',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], - ['kmwmtolerance_6359',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], - ['knastr_6360',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], - ['knecbitmark_6361',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], - ['knecbitmarkticks_6362',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], - ['knecbits_6363',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], - ['knechdrmark_6364',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], - ['knechdrmarkticks_6365',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], - ['knechdrspace_6366',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], - ['knechdrspaceticks_6367',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], - ['knecmincommandlength_6368',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], - ['knecmincommandlengthticks_6369',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], - ['knecmingap_6370',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], - ['knecmingapticks_6371',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], - ['kneconespace_6372',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], - ['kneconespaceticks_6373',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], - ['knecrptlength_6374',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], - ['knecrptspace_6375',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], - ['knecrptspaceticks_6376',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], - ['knectick_6377',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], - ['kneczerospace_6378',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], - ['kneczerospaceticks_6379',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], - ['kneoclima8cheatoffset_6380',['kNeoclima8CHeatOffset',['../ir__Neoclima_8h.html#a4e9654ac35708a22912448eef3eb2b35',1,'ir_Neoclima.h']]], - ['kneoclimaauto_6381',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], - ['kneoclimabitmark_6382',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], - ['kneoclimabits_6383',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], - ['kneoclimabutton8cheat_6384',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], - ['kneoclimabuttonairflow_6385',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonecono_6386',['kNeoclimaButtonEcono',['../ir__Neoclima_8h.html#a3bf5508439a8af4543f95468fd32a8bb',1,'ir_Neoclima.h']]], - ['kneoclimabuttoneye_6387',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfanspeed_6388',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfollow_6389',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfresh_6390',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonhold_6391',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], - ['kneoclimabuttonion_6392',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], - ['kneoclimabuttonlight_6393',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], - ['kneoclimabuttonmode_6394',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], - ['kneoclimabuttonoffset_6395',['kNeoclimaButtonOffset',['../ir__Neoclima_8h.html#a08ae86c15defd78ecac0f322f84190d3',1,'ir_Neoclima.h']]], - ['kneoclimabuttonpower_6396',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsize_6397',['kNeoclimaButtonSize',['../ir__Neoclima_8h.html#aac90dbf9fe499df2edf64df44f449e57',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsleep_6398',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], - ['kneoclimabuttonswing_6399',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempdown_6400',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempunit_6401',['kNeoclimaButtonTempUnit',['../ir__Neoclima_8h.html#ad552c7576d7f6c89b3530bcddf15d00c',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempup_6402',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], - ['kneoclimabuttonturbo_6403',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], - ['kneoclimacool_6404',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], - ['kneoclimadry_6405',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], - ['kneoclimaeconooffset_6406',['kNeoclimaEconoOffset',['../ir__Neoclima_8h.html#a7833bc084607139740fc4e01f984b3be',1,'ir_Neoclima.h']]], - ['kneoclimaeyeoffset_6407',['kNeoclimaEyeOffset',['../ir__Neoclima_8h.html#ad7baeea22b87a69150c65b2c049ee0b2',1,'ir_Neoclima.h']]], - ['kneoclimafan_6408',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], - ['kneoclimafanauto_6409',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], - ['kneoclimafanhigh_6410',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], - ['kneoclimafanlow_6411',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], - ['kneoclimafanmed_6412',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], - ['kneoclimafanoffest_6413',['kNeoclimaFanOffest',['../ir__Neoclima_8h.html#a32f614475b5f00f8ccdf12498c519713',1,'ir_Neoclima.h']]], - ['kneoclimafansize_6414',['kNeoclimaFanSize',['../ir__Neoclima_8h.html#a888cbc3f0a38137cb909188b6fff91b1',1,'ir_Neoclima.h']]], - ['kneoclimafollowme_6415',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], - ['kneoclimafreshoffset_6416',['kNeoclimaFreshOffset',['../ir__Neoclima_8h.html#af19f0f77ece049bdef26930be1b0309f',1,'ir_Neoclima.h']]], - ['kneoclimahdrmark_6417',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], - ['kneoclimahdrspace_6418',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], - ['kneoclimaheat_6419',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], - ['kneoclimaholdoffset_6420',['kNeoclimaHoldOffset',['../ir__Neoclima_8h.html#a3a91e7504c7820223021dcc2cbbf9f2a',1,'ir_Neoclima.h']]], - ['kneoclimaionoffset_6421',['kNeoclimaIonOffset',['../ir__Neoclima_8h.html#ad420932425fbe261368938e604dfb0c1',1,'ir_Neoclima.h']]], - ['kneoclimalightoffset_6422',['kNeoclimaLightOffset',['../ir__Neoclima_8h.html#af58a863257c5d436b299ac8cbcb57686',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempc_6423',['kNeoclimaMaxTempC',['../ir__Neoclima_8h.html#a9333b62cef8e22e05a2fbfb566830bb6',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempf_6424',['kNeoclimaMaxTempF',['../ir__Neoclima_8h.html#a7e1b67f87fbf56b52c4ad39c4865212d',1,'ir_Neoclima.h']]], - ['kneoclimamingap_6425',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], - ['kneoclimaminrepeat_6426',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], - ['kneoclimamintempc_6427',['kNeoclimaMinTempC',['../ir__Neoclima_8h.html#a39d700251ad835e4b36ec6e9db667703',1,'ir_Neoclima.h']]], - ['kneoclimamintempf_6428',['kNeoclimaMinTempF',['../ir__Neoclima_8h.html#ac6159ea9bbc08e115c45b4611190fe9f',1,'ir_Neoclima.h']]], - ['kneoclimamodeoffset_6429',['kNeoclimaModeOffset',['../ir__Neoclima_8h.html#a823a960610ef3387099d2a2103dd0b56',1,'ir_Neoclima.h']]], - ['kneoclimaonespace_6430',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], - ['kneoclimapoweroffset_6431',['kNeoclimaPowerOffset',['../ir__Neoclima_8h.html#a9b881e5400fe9bcd3b1422aeb355cf7c',1,'ir_Neoclima.h']]], - ['kneoclimasleepoffset_6432',['kNeoclimaSleepOffset',['../ir__Neoclima_8h.html#ac0c978cdc30827c7390b93a9a4f05d24',1,'ir_Neoclima.h']]], - ['kneoclimastatelength_6433',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], - ['kneoclimaswinghoffset_6434',['kNeoclimaSwingHOffset',['../ir__Neoclima_8h.html#a5f2e8ccaa590386b0947b0f291ebcb09',1,'ir_Neoclima.h']]], - ['kneoclimaswingvoff_6435',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], - ['kneoclimaswingvoffset_6436',['kNeoclimaSwingVOffset',['../ir__Neoclima_8h.html#a91b63c4712093684625a16c76bcc6784',1,'ir_Neoclima.h']]], - ['kneoclimaswingvon_6437',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], - ['kneoclimaswingvsize_6438',['kNeoclimaSwingVSize',['../ir__Neoclima_8h.html#ab4b49ec2c326d0e94eba23e7a93b6fc6',1,'ir_Neoclima.h']]], - ['kneoclimatempoffset_6439',['kNeoclimaTempOffset',['../ir__Neoclima_8h.html#a5c3470f6c773b4c557e6996f8c29a573',1,'ir_Neoclima.h']]], - ['kneoclimatempsize_6440',['kNeoclimaTempSize',['../ir__Neoclima_8h.html#af848fc3f4ce46c8786fd2b3e129b1e48',1,'ir_Neoclima.h']]], - ['kneoclimaturbooffset_6441',['kNeoclimaTurboOffset',['../ir__Neoclima_8h.html#ae23c6faf5f54ff12d592360b42d69971',1,'ir_Neoclima.h']]], - ['kneoclimausefahrenheitoffset_6442',['kNeoclimaUseFahrenheitOffset',['../ir__Neoclima_8h.html#a227df61ea908e0c80eeda8358bc7e4e8',1,'ir_Neoclima.h']]], - ['kneoclimazerospace_6443',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], - ['knibblesize_6444',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], - ['knightstr_6445',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], - ['knikaibitmark_6446',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], - ['knikaibitmarkticks_6447',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], - ['knikaibits_6448',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], - ['knikaihdrmark_6449',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], - ['knikaihdrmarkticks_6450',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], - ['knikaihdrspace_6451',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], - ['knikaihdrspaceticks_6452',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], - ['knikaimingap_6453',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], - ['knikaimingapticks_6454',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], - ['knikaionespace_6455',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], - ['knikaionespaceticks_6456',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], - ['knikaitick_6457',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], - ['knikaizerospace_6458',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], - ['knikaizerospaceticks_6459',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], - ['knorepeat_6460',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], - ['knostr_6461',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], - ['knowstr_6462',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], - ['koffstr_6463',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], - ['kofftimerstr_6464',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], - ['konstr_6465',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], - ['kontimerstr_6466',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], - ['koutsidequietstr_6467',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], - ['koutsidestr_6468',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], - ['kpanasonicacauto_6469',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], - ['kpanasonicacbits_6470',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], - ['kpanasonicacchecksuminit_6471',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], - ['kpanasonicaccool_6472',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], - ['kpanasonicacdefaultrepeat_6473',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], - ['kpanasonicacdry_6474',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], - ['kpanasonicacexcess_6475',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], - ['kpanasonicacfan_6476',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], - ['kpanasonicacfanauto_6477',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], - ['kpanasonicacfandelta_6478',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmax_6479',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmed_6480',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmin_6481',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmodetemp_6482',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], - ['kpanasonicacheat_6483',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilterbyte_6484',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilteroffset_6485',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], - ['kpanasonicacmaxtemp_6486',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], - ['kpanasonicacmessagegap_6487',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], - ['kpanasonicacmintemp_6488',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], - ['kpanasonicacofftimeroffset_6489',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], - ['kpanasonicacontimeroffset_6490',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfulckpoffset_6491',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfuloffset_6492',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], - ['kpanasonicacpoweroffset_6493',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], - ['kpanasonicacquietckpoffset_6494',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], - ['kpanasonicacquietoffset_6495',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], - ['kpanasonicacsection1length_6496',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], - ['kpanasonicacsectiongap_6497',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], - ['kpanasonicacshortbits_6498',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], - ['kpanasonicacstatelength_6499',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], - ['kpanasonicacstateshortlength_6500',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], - ['kpanasonicacswinghauto_6501',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullleft_6502',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullright_6503',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghleft_6504',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghmiddle_6505',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghright_6506',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvauto_6507',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhigh_6508',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhighest_6509',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlow_6510',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlowest_6511',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvmiddle_6512',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], - ['kpanasonicactempoffset_6513',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], - ['kpanasonicactempsize_6514',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], - ['kpanasonicactimemax_6515',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], - ['kpanasonicactimeoverflowsize_6516',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], - ['kpanasonicactimesize_6517',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], - ['kpanasonicactimespecial_6518',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], - ['kpanasonicactolerance_6519',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], - ['kpanasonicbitmark_6520',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], - ['kpanasonicbitmarkticks_6521',['kPanasonicBitMarkTicks',['../ir__Panasonic_8cpp.html#aa0b259da4bc3dbf6c8b2ca31de759f55',1,'ir_Panasonic.cpp']]], - ['kpanasonicbits_6522',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], - ['kpanasonicendgap_6523',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], - ['kpanasonicfreq_6524',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], - ['kpanasonichdrmark_6525',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrmarkticks_6526',['kPanasonicHdrMarkTicks',['../ir__Panasonic_8cpp.html#a0f2d448b87f30840ee38c27032cd10bd',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspace_6527',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspaceticks_6528',['kPanasonicHdrSpaceTicks',['../ir__Panasonic_8cpp.html#a5fa430a5612bd21eb859356cc9c62a3c',1,'ir_Panasonic.cpp']]], - ['kpanasonicknowngoodstate_6529',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], - ['kpanasonicmanufacturer_6530',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], - ['kpanasonicmincommandlength_6531',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], - ['kpanasonicmincommandlengthticks_6532',['kPanasonicMinCommandLengthTicks',['../ir__Panasonic_8cpp.html#aba420f9aa4c3e6f261e422962362ce31',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingap_6533',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingapticks_6534',['kPanasonicMinGapTicks',['../ir__Panasonic_8cpp.html#aa605847e951b22f1f31b82e6b04c4bab',1,'ir_Panasonic.cpp']]], - ['kpanasoniconespace_6535',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], - ['kpanasoniconespaceticks_6536',['kPanasonicOneSpaceTicks',['../ir__Panasonic_8cpp.html#aa7a8cb818a098bb8ec395af7f5dbc6d7',1,'ir_Panasonic.cpp']]], - ['kpanasonictick_6537',['kPanasonicTick',['../ir__Panasonic_8cpp.html#ab2fddd81fb53066257aeaa60069527a8',1,'ir_Panasonic.cpp']]], - ['kpanasoniczerospace_6538',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], - ['kpanasoniczerospaceticks_6539',['kPanasonicZeroSpaceTicks',['../ir__Panasonic_8cpp.html#a58fef1468dbd4c3963be58754f38b125',1,'ir_Panasonic.cpp']]], - ['kperiodoffset_6540',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], - ['kpioneerbitmark_6541',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], - ['kpioneerbits_6542',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], - ['kpioneerhdrmark_6543',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], - ['kpioneerhdrspace_6544',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], - ['kpioneermincommandlength_6545',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], - ['kpioneermingap_6546',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], - ['kpioneeronespace_6547',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], - ['kpioneertick_6548',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], - ['kpioneerzerospace_6549',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], - ['kpowerbuttonstr_6550',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], - ['kpowerfulstr_6551',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], - ['kpowerstr_6552',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], - ['kpowertogglestr_6553',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], - ['kpreviouspowerstr_6554',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], - ['kprontodataoffset_6555',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], - ['kprontofreqfactor_6556',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], - ['kprontofreqoffset_6557',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], - ['kprontominlength_6558',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], - ['kprontoseq1lenoffset_6559',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], - ['kprontoseq2lenoffset_6560',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], - ['kprontotypeoffset_6561',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], - ['kprotocolstr_6562',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], - ['kpurifystr_6563',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], - ['kquietstr_6564',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], - ['krawbuf_6565',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], - ['krawtick_6566',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], - ['krc5bits_6567',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], - ['krc5mincommandlength_6568',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], - ['krc5mingap_6569',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], - ['krc5rawbits_6570',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], - ['krc5samplesmin_6571',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], - ['krc5t1_6572',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], - ['krc5togglemask_6573',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], - ['krc5xbits_6574',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], - ['krc6_5f36bits_6575',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], - ['krc6_5f36togglemask_6576',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmark_6577',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmarkticks_6578',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspace_6579',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspaceticks_6580',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], - ['krc6mode0bits_6581',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], - ['krc6rptlength_6582',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], - ['krc6rptlengthticks_6583',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], - ['krc6tick_6584',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], - ['krc6togglemask_6585',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], - ['krcmmbitmark_6586',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], - ['krcmmbitmarkticks_6587',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], - ['krcmmbits_6588',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], - ['krcmmbitspace0_6589',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace0ticks_6590',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1_6591',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1ticks_6592',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2_6593',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2ticks_6594',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3_6595',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3ticks_6596',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], - ['krcmmexcess_6597',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], - ['krcmmhdrmark_6598',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], - ['krcmmhdrmarkticks_6599',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], - ['krcmmhdrspace_6600',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], - ['krcmmhdrspaceticks_6601',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], - ['krcmmmingap_6602',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], - ['krcmmmingapticks_6603',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], - ['krcmmrptlength_6604',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], - ['krcmmrptlengthticks_6605',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], - ['krcmmtick_6606',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], - ['krcmmtolerance_6607',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], - ['krcz01channelmask_6608',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel1_6609',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel2_6610',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel3_6611',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel4_6612',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], - ['krcz01commandleveldown_6613',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevelup_6614',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], - ['krcz01commandmask_6615',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], - ['krcz01commandnightlight_6616',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], - ['krcz01commandoff_6617',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], - ['krcz01commandon_6618',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], - ['krcz01commandswitchchannel_6619',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer30_6620',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer60_6621',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], - ['krcz01signature_6622',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], - ['krcz01signaturemask_6623',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], - ['krepeat_6624',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], - ['krepeatstr_6625',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], - ['krightmaxstr_6626',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], - ['krightstr_6627',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], - ['kroomstr_6628',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], - ['ksamsung36bitmark_6629',['kSamsung36BitMark',['../ir__Samsung_8cpp.html#a2e9bc50c6320d7a1244713b4a1647e71',1,'ir_Samsung.cpp']]], - ['ksamsung36bits_6630',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], - ['ksamsung36hdrmark_6631',['kSamsung36HdrMark',['../ir__Samsung_8cpp.html#a47c0e69d6e21597ea15dc613c58861b6',1,'ir_Samsung.cpp']]], - ['ksamsung36hdrspace_6632',['kSamsung36HdrSpace',['../ir__Samsung_8cpp.html#a4761b62640c0a56ee641c9077fd800dd',1,'ir_Samsung.cpp']]], - ['ksamsung36onespace_6633',['kSamsung36OneSpace',['../ir__Samsung_8cpp.html#a3a913fe500926cf448d7408303e3698c',1,'ir_Samsung.cpp']]], - ['ksamsung36zerospace_6634',['kSamsung36ZeroSpace',['../ir__Samsung_8cpp.html#ac24972846bc1a2240537b212f5aa55d6',1,'ir_Samsung.cpp']]], - ['ksamsungacauto_6635',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], - ['ksamsungacautotemp_6636',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], - ['ksamsungacbeepoffset_6637',['kSamsungAcBeepOffset',['../ir__Samsung_8h.html#a12ae1e43d05d39c39d335c97223e003e',1,'ir_Samsung.h']]], - ['ksamsungacbitmark_6638',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], - ['ksamsungacbits_6639',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], - ['ksamsungacbreezeoffset_6640',['kSamsungAcBreezeOffset',['../ir__Samsung_8h.html#a31d5463b3819fe41ce078b085c395a40',1,'ir_Samsung.h']]], - ['ksamsungacbreezeon_6641',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], - ['ksamsungacbreezesize_6642',['kSamsungAcBreezeSize',['../ir__Samsung_8h.html#a1f6ec492aa58cb704147213e3b6f9f24',1,'ir_Samsung.h']]], - ['ksamsungacclean10offset_6643',['kSamsungAcClean10Offset',['../ir__Samsung_8h.html#a0982038a8c3e27972e69b83c350a0ff3',1,'ir_Samsung.h']]], - ['ksamsungacclean11offset_6644',['kSamsungAcClean11Offset',['../ir__Samsung_8h.html#a87666330f9a410ced00bf15c5f22daf2',1,'ir_Samsung.h']]], - ['ksamsungaccool_6645',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], - ['ksamsungacdefaultrepeat_6646',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], - ['ksamsungacdisplayoffset_6647',['kSamsungAcDisplayOffset',['../ir__Samsung_8h.html#af47c9229cbe569b93ad5f4986c4484ab',1,'ir_Samsung.h']]], - ['ksamsungacdry_6648',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], - ['ksamsungacextendedbits_6649',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], - ['ksamsungacextendedstatelength_6650',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], - ['ksamsungacfan_6651',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], - ['ksamsungacfanauto_6652',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], - ['ksamsungacfanauto2_6653',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], - ['ksamsungacfanhigh_6654',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], - ['ksamsungacfanlow_6655',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], - ['ksamsungacfanmed_6656',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], - ['ksamsungacfanoffest_6657',['kSamsungAcFanOffest',['../ir__Samsung_8h.html#a1dd4a351c1a036972f741fbdafb05a7e',1,'ir_Samsung.h']]], - ['ksamsungacfansize_6658',['kSamsungAcFanSize',['../ir__Samsung_8h.html#a5b055e9951e23ba44bf1fdeed805b332',1,'ir_Samsung.h']]], - ['ksamsungacfanturbo_6659',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], - ['ksamsungachdrmark_6660',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], - ['ksamsungachdrspace_6661',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], - ['ksamsungacheat_6662',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], - ['ksamsungacionoffset_6663',['kSamsungAcIonOffset',['../ir__Samsung_8h.html#aa7bbd222553072c092158421d1b9977f',1,'ir_Samsung.h']]], - ['ksamsungacmaxtemp_6664',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], - ['ksamsungacmintemp_6665',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], - ['ksamsungacmodeoffset_6666',['kSamsungAcModeOffset',['../ir__Samsung_8h.html#a64b2aceb5c0d4dbea2d4697efe65aef2',1,'ir_Samsung.h']]], - ['ksamsungaconespace_6667',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], - ['ksamsungacpower1offset_6668',['kSamsungAcPower1Offset',['../ir__Samsung_8h.html#aa6a4ff05acfabf24e4dfc126e583c46c',1,'ir_Samsung.h']]], - ['ksamsungacpower6offset_6669',['kSamsungAcPower6Offset',['../ir__Samsung_8h.html#a90591c7d6069d81493f894328d595187',1,'ir_Samsung.h']]], - ['ksamsungacpower6size_6670',['kSamsungAcPower6Size',['../ir__Samsung_8h.html#ace0a7a2cfedbb77d05de53abc5906992',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10offset_6671',['kSamsungAcPowerful10Offset',['../ir__Samsung_8h.html#a7f92d734af799e058723e898d3ebdd30',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10on_6672',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], - ['ksamsungacpowerful10size_6673',['kSamsungAcPowerful10Size',['../ir__Samsung_8h.html#a19ede17e420f68ea552497461e69006a',1,'ir_Samsung.h']]], - ['ksamsungacpowerfulmask8_6674',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], - ['ksamsungacpowersection_6675',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], - ['ksamsungacquiet1offset_6676',['kSamsungAcQuiet1Offset',['../ir__Samsung_8h.html#ab029485b433f7eef6413d8194790c566',1,'ir_Samsung.h']]], - ['ksamsungacquiet5offset_6677',['kSamsungAcQuiet5Offset',['../ir__Samsung_8h.html#ae10abd66772da9bab4ba266f29e7ec75',1,'ir_Samsung.h']]], - ['ksamsungacsectiongap_6678',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionlength_6679',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], - ['ksamsungacsectionmark_6680',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], - ['ksamsungacsections_6681',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionspace_6682',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], - ['ksamsungacstatelength_6683',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], - ['ksamsungacswingmove_6684',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], - ['ksamsungacswingoffset_6685',['kSamsungAcSwingOffset',['../ir__Samsung_8h.html#ab71772d77c56cf4d01f3ce4ab751a55c',1,'ir_Samsung.h']]], - ['ksamsungacswingsize_6686',['kSamsungAcSwingSize',['../ir__Samsung_8h.html#a1b50618058108826f9103f46bf7677ee',1,'ir_Samsung.h']]], - ['ksamsungacswingstop_6687',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], - ['ksamsungaczerospace_6688',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], - ['ksamsungbitmark_6689',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], - ['ksamsungbitmarkticks_6690',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], - ['ksamsungbits_6691',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], - ['ksamsunghdrmark_6692',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], - ['ksamsunghdrmarkticks_6693',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspace_6694',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspaceticks_6695',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], - ['ksamsungmingap_6696',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], - ['ksamsungmingapticks_6697',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelength_6698',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelengthticks_6699',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], - ['ksamsungonespace_6700',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], - ['ksamsungonespaceticks_6701',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], - ['ksamsungrptspace_6702',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], - ['ksamsungrptspaceticks_6703',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], - ['ksamsungtick_6704',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], - ['ksamsungzerospace_6705',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], - ['ksamsungzerospaceticks_6706',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], - ['ksanyoacauto_6707',['kSanyoAcAuto',['../ir__Sanyo_8h.html#a80d3d83c1b85f8c44dd93cc44b30accb',1,'ir_Sanyo.h']]], - ['ksanyoacbeepbit_6708',['kSanyoAcBeepBit',['../ir__Sanyo_8h.html#a4f56a563d852b45c754a190c2ac5e428',1,'ir_Sanyo.h']]], - ['ksanyoacbitmark_6709',['kSanyoAcBitMark',['../ir__Sanyo_8cpp.html#af738984c8164ff32f3bd91b9263f55c2',1,'ir_Sanyo.cpp']]], - ['ksanyoacbits_6710',['kSanyoAcBits',['../IRremoteESP8266_8h.html#ad3931645167deda3fd0ec72ba33a4034',1,'IRremoteESP8266.h']]], - ['ksanyoaccool_6711',['kSanyoAcCool',['../ir__Sanyo_8h.html#ad6a49260b9097a821cf29fe87796456d',1,'ir_Sanyo.h']]], - ['ksanyoacdry_6712',['kSanyoAcDry',['../ir__Sanyo_8h.html#a5e0645e5f69dc627d130e4bca1751b5c',1,'ir_Sanyo.h']]], - ['ksanyoacfanauto_6713',['kSanyoAcFanAuto',['../ir__Sanyo_8h.html#a7bc8d0e04bdf32a3d7147a8ee4f0fc9c',1,'ir_Sanyo.h']]], - ['ksanyoacfanhigh_6714',['kSanyoAcFanHigh',['../ir__Sanyo_8h.html#a34a75f871c7b2648641830bf8210be0b',1,'ir_Sanyo.h']]], - ['ksanyoacfanlow_6715',['kSanyoAcFanLow',['../ir__Sanyo_8h.html#a3a0bfc84856de44bc2bce7cb63f61414',1,'ir_Sanyo.h']]], - ['ksanyoacfanmedium_6716',['kSanyoAcFanMedium',['../ir__Sanyo_8h.html#a54189bf27e6cbcbe03b9898985a3486f',1,'ir_Sanyo.h']]], - ['ksanyoacfanoffset_6717',['kSanyoAcFanOffset',['../ir__Sanyo_8h.html#a5dcb4309b7d4178326c4e4658e210a73',1,'ir_Sanyo.h']]], - ['ksanyoacfansize_6718',['kSanyoAcFanSize',['../ir__Sanyo_8h.html#a6e54dd7ae41c812df4796ecf375c2c71',1,'ir_Sanyo.h']]], - ['ksanyoacfreq_6719',['kSanyoAcFreq',['../ir__Sanyo_8cpp.html#a85397f4fba50f4409467435ae22a003c',1,'ir_Sanyo.cpp']]], - ['ksanyoacgap_6720',['kSanyoAcGap',['../ir__Sanyo_8cpp.html#a20213c79f423cb292a55be3618ff1f2f',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrmark_6721',['kSanyoAcHdrMark',['../ir__Sanyo_8cpp.html#a0b1b08bcc921bbbe6686c699c1aaad2e',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrspace_6722',['kSanyoAcHdrSpace',['../ir__Sanyo_8cpp.html#a8c09cce29f3791eb80c1546be5e5535c',1,'ir_Sanyo.cpp']]], - ['ksanyoacheat_6723',['kSanyoAcHeat',['../ir__Sanyo_8h.html#aacdcd75fdf538881354662454c95e8b5',1,'ir_Sanyo.h']]], - ['ksanyoachourmax_6724',['kSanyoAcHourMax',['../ir__Sanyo_8h.html#aeaa1ba34ec4f7bb2e66e1c63e78ad864',1,'ir_Sanyo.h']]], - ['ksanyoacmodebyte_6725',['kSanyoAcModeByte',['../ir__Sanyo_8h.html#a2b8bfab823ffa803882f82488beedb6e',1,'ir_Sanyo.h']]], - ['ksanyoacmodeoffset_6726',['kSanyoAcModeOffset',['../ir__Sanyo_8h.html#af68ceb9c03c1f16721a78282f991c01f',1,'ir_Sanyo.h']]], - ['ksanyoacmodesize_6727',['kSanyoAcModeSize',['../ir__Sanyo_8h.html#a31431aea23e2ef7fa5068106fecf2e71',1,'ir_Sanyo.h']]], - ['ksanyoacoffhourbyte_6728',['kSanyoAcOffHourByte',['../ir__Sanyo_8h.html#aa122a05c7ff4d48a6ff39e6c96df2bf7',1,'ir_Sanyo.h']]], - ['ksanyoacoffhouroffset_6729',['kSanyoAcOffHourOffset',['../ir__Sanyo_8h.html#a1d71c55542cbe93780e4ab79ea7496f5',1,'ir_Sanyo.h']]], - ['ksanyoacoffhoursize_6730',['kSanyoAcOffHourSize',['../ir__Sanyo_8h.html#ade4bd179d3e1267c209e4f00e99d2a42',1,'ir_Sanyo.h']]], - ['ksanyoacofftimerenablebit_6731',['kSanyoAcOffTimerEnableBit',['../ir__Sanyo_8h.html#aff3ac8c772b93abda345c949ef9dc0c4',1,'ir_Sanyo.h']]], - ['ksanyoaconespace_6732',['kSanyoAcOneSpace',['../ir__Sanyo_8cpp.html#ac9e641f6e3e07a8938ed28a656281122',1,'ir_Sanyo.cpp']]], - ['ksanyoacpowerbyte_6733',['kSanyoAcPowerByte',['../ir__Sanyo_8h.html#abd4216fae2d979b5ae96c6356d524e73',1,'ir_Sanyo.h']]], - ['ksanyoacpoweroff_6734',['kSanyoAcPowerOff',['../ir__Sanyo_8h.html#a1777504e5870f0e29846cda7a17bb3fd',1,'ir_Sanyo.h']]], - ['ksanyoacpoweroffset_6735',['kSanyoAcPowerOffset',['../ir__Sanyo_8h.html#a7d91d3056aa632167afa097387343e82',1,'ir_Sanyo.h']]], - ['ksanyoacpoweron_6736',['kSanyoAcPowerOn',['../ir__Sanyo_8h.html#a6e3da0779d665696d36a03b445ca82ea',1,'ir_Sanyo.h']]], - ['ksanyoacpowersize_6737',['kSanyoAcPowerSize',['../ir__Sanyo_8h.html#a7ca17d7117f58272a70107f9561aba3b',1,'ir_Sanyo.h']]], - ['ksanyoacsensorbit_6738',['kSanyoAcSensorBit',['../ir__Sanyo_8h.html#abcba48158aa47836c1267b36496b36ef',1,'ir_Sanyo.h']]], - ['ksanyoacsensorbyte_6739',['kSanyoAcSensorByte',['../ir__Sanyo_8h.html#a1b7ac42c4cda06c4ea7f3864baeda82f',1,'ir_Sanyo.h']]], - ['ksanyoacsleepbit_6740',['kSanyoAcSleepBit',['../ir__Sanyo_8h.html#a99f8c1e7171ef1c3cff03aaf9297c72f',1,'ir_Sanyo.h']]], - ['ksanyoacsleepbyte_6741',['kSanyoAcSleepByte',['../ir__Sanyo_8h.html#a96e589d89b00b9b6c8fe23908ee81b5c',1,'ir_Sanyo.h']]], - ['ksanyoacstatelength_6742',['kSanyoAcStateLength',['../IRremoteESP8266_8h.html#ae3128c987a1571fb6b021ffe30079663',1,'IRremoteESP8266.h']]], - ['ksanyoacswingvauto_6743',['kSanyoAcSwingVAuto',['../ir__Sanyo_8h.html#afce45a19ba8cdff528dac0ee8b13bb66',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhigh_6744',['kSanyoAcSwingVHigh',['../ir__Sanyo_8h.html#a4cdea5c3718a4a869d1e914a7a8ee2af',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhighest_6745',['kSanyoAcSwingVHighest',['../ir__Sanyo_8h.html#a64b28da09adf0416c49640264ccb760b',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlow_6746',['kSanyoAcSwingVLow',['../ir__Sanyo_8h.html#aaef1fa9d1ef8f92f59525b09175f6048',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowermiddle_6747',['kSanyoAcSwingVLowerMiddle',['../ir__Sanyo_8h.html#a11141a0d31bca64561eed3be5698a5a6',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowest_6748',['kSanyoAcSwingVLowest',['../ir__Sanyo_8h.html#a3d97c9b2da1c26ba5943996f76aa4f3f',1,'ir_Sanyo.h']]], - ['ksanyoacswingvoffset_6749',['kSanyoAcSwingVOffset',['../ir__Sanyo_8h.html#ab77e7e538ea741ec74b1a32ec9310adc',1,'ir_Sanyo.h']]], - ['ksanyoacswingvsize_6750',['kSanyoAcSwingVSize',['../ir__Sanyo_8h.html#a58a723fb5b3131be518f2df68f791e2e',1,'ir_Sanyo.h']]], - ['ksanyoacswingvuppermiddle_6751',['kSanyoAcSwingVUpperMiddle',['../ir__Sanyo_8h.html#a314f05625e1985042dc6e2a4866c51df',1,'ir_Sanyo.h']]], - ['ksanyoactempbyte_6752',['kSanyoAcTempByte',['../ir__Sanyo_8h.html#a10009a12f71c74498ff4b75f92f6840d',1,'ir_Sanyo.h']]], - ['ksanyoactempdelta_6753',['kSanyoAcTempDelta',['../ir__Sanyo_8h.html#ac0991e0a826fae8228e1064d5d803edc',1,'ir_Sanyo.h']]], - ['ksanyoactempmax_6754',['kSanyoAcTempMax',['../ir__Sanyo_8h.html#aa4222421c4571c9e34d39f01a2c71394',1,'ir_Sanyo.h']]], - ['ksanyoactempmin_6755',['kSanyoAcTempMin',['../ir__Sanyo_8h.html#a59fb387ec5657ba8ff301b9198703b9a',1,'ir_Sanyo.h']]], - ['ksanyoactempoffset_6756',['kSanyoAcTempOffset',['../ir__Sanyo_8h.html#ad4115b1184d2f163d9c333dbe2f7b84b',1,'ir_Sanyo.h']]], - ['ksanyoactempsize_6757',['kSanyoAcTempSize',['../ir__Sanyo_8h.html#a454c5e61ae57c009507501d0ca94faae',1,'ir_Sanyo.h']]], - ['ksanyoaczerospace_6758',['kSanyoAcZeroSpace',['../ir__Sanyo_8cpp.html#a9a600476008e4462df534ee98c732c1b',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461addressbits_6759',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], - ['ksanyolc7461addressmask_6760',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bitmark_6761',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bits_6762',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandbits_6763',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandmask_6764',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrmark_6765',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrspace_6766',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mincommandlength_6767',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mingap_6768',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461onespace_6769',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461zerospace_6770',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bbits_6771',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], - ['ksanyosa8650bdoublespaceusecs_6772',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrmark_6773',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrspace_6774',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bonemark_6775',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650brptlength_6776',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bzeromark_6777',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], - ['ksavestr_6778',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], - ['ksecondsstr_6779',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], - ['ksecondstr_6780',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], - ['ksensorstr_6781',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], - ['ksensortempstr_6782',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], - ['ksetstr_6783',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], - ['ksharpacauto_6784',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], - ['ksharpacbitcleanoffset_6785',['kSharpAcBitCleanOffset',['../ir__Sharp_8h.html#a3460827972f31d05070c638a57782286',1,'ir_Sharp.h']]], - ['ksharpacbitionoffset_6786',['kSharpAcBitIonOffset',['../ir__Sharp_8h.html#a73f967e9950d04941ed9f6815815fb23',1,'ir_Sharp.h']]], - ['ksharpacbitmark_6787',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], - ['ksharpacbits_6788',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], - ['ksharpacbittimerenabled_6789',['kSharpAcBitTimerEnabled',['../ir__Sharp_8h.html#a083863299df4ff081be0add9d5082700',1,'ir_Sharp.h']]], - ['ksharpacbittimertype_6790',['kSharpAcBitTimerType',['../ir__Sharp_8h.html#ad47cf2f20c4589b9cbe6b583d62b4675',1,'ir_Sharp.h']]], - ['ksharpacbyteclean_6791',['kSharpAcByteClean',['../ir__Sharp_8h.html#a2f4a4ddf407413a52d45c955ebd5bcd5',1,'ir_Sharp.h']]], - ['ksharpacbytefan_6792',['kSharpAcByteFan',['../ir__Sharp_8h.html#a24139aa535ca54dcf45558da5ee2ac56',1,'ir_Sharp.h']]], - ['ksharpacbyteion_6793',['kSharpAcByteIon',['../ir__Sharp_8h.html#aaceee11c539050ba5ac368b9612131a4',1,'ir_Sharp.h']]], - ['ksharpacbytemode_6794',['kSharpAcByteMode',['../ir__Sharp_8h.html#af7d8a2ab79ae4f2ad48e569576fd34e8',1,'ir_Sharp.h']]], - ['ksharpacbytepowerspecial_6795',['kSharpAcBytePowerSpecial',['../ir__Sharp_8h.html#a44d180bd3babec15143ba8ea8aa18906',1,'ir_Sharp.h']]], - ['ksharpacbytespecial_6796',['kSharpAcByteSpecial',['../ir__Sharp_8h.html#a78ba1ef4993661f9dfaad776dff1b43e',1,'ir_Sharp.h']]], - ['ksharpacbyteswing_6797',['kSharpAcByteSwing',['../ir__Sharp_8h.html#aee580a3c6cfd75f75f46852d0f3df0db',1,'ir_Sharp.h']]], - ['ksharpacbytetemp_6798',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], - ['ksharpacbytetimer_6799',['kSharpAcByteTimer',['../ir__Sharp_8h.html#af2fc9b6abae8ca6ca0d01b8c924386be',1,'ir_Sharp.h']]], - ['ksharpaccool_6800',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], - ['ksharpacdefaultrepeat_6801',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], - ['ksharpacdry_6802',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], - ['ksharpacfanauto_6803',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], - ['ksharpacfanhigh_6804',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], - ['ksharpacfanmax_6805',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], - ['ksharpacfanmed_6806',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], - ['ksharpacfanmin_6807',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], - ['ksharpacfanoffset_6808',['kSharpAcFanOffset',['../ir__Sharp_8h.html#ae95f02db8d9799ce726f5f467922a36c',1,'ir_Sharp.h']]], - ['ksharpacfansize_6809',['kSharpAcFanSize',['../ir__Sharp_8h.html#a2640f5c4eb0b4e62b9e2124a1fbfb6d2',1,'ir_Sharp.h']]], - ['ksharpacgap_6810',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], - ['ksharpachdrmark_6811',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], - ['ksharpachdrspace_6812',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], - ['ksharpacheat_6813',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], - ['ksharpacmaxtemp_6814',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], - ['ksharpacmintemp_6815',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], - ['ksharpacmodesize_6816',['kSharpAcModeSize',['../ir__Sharp_8h.html#a7dfcf91a08bc37884cc4882c60004736',1,'ir_Sharp.h']]], - ['ksharpacofftimertype_6817',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], - ['ksharpaconespace_6818',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], - ['ksharpacontimertype_6819',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], - ['ksharpacpoweroff_6820',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], - ['ksharpacpoweron_6821',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], - ['ksharpacpoweronfromoff_6822',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoff_6823',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoffset_6824',['kSharpAcPowerSetSpecialOffset',['../ir__Sharp_8h.html#a0603455573e1dd203a5f6718efc12085',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialon_6825',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], - ['ksharpacpowerspecialsize_6826',['kSharpAcPowerSpecialSize',['../ir__Sharp_8h.html#a233d545e942de27ec9e96d0d5e7afdb3',1,'ir_Sharp.h']]], - ['ksharpacpowertimersetting_6827',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], - ['ksharpacpowerunknown_6828',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], - ['ksharpacspecialfan_6829',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], - ['ksharpacspecialpower_6830',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], - ['ksharpacspecialswing_6831',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], - ['ksharpacspecialtempecono_6832',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], - ['ksharpacspecialtimer_6833',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], - ['ksharpacspecialtimerhalfhour_6834',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], - ['ksharpacspecialturbo_6835',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], - ['ksharpacstatelength_6836',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], - ['ksharpacswingnotoggle_6837',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], - ['ksharpacswingoffset_6838',['kSharpAcSwingOffset',['../ir__Sharp_8h.html#a61c5356e645867fa2eeda02c83e5b9ae',1,'ir_Sharp.h']]], - ['ksharpacswingsize_6839',['kSharpAcSwingSize',['../ir__Sharp_8h.html#aafec87d2ddea0fd56d176f1b5f80a6fa',1,'ir_Sharp.h']]], - ['ksharpacswingtoggle_6840',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], - ['ksharpactimerhoursmax_6841',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoff_6842',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoffset_6843',['kSharpAcTimerHoursOffset',['../ir__Sharp_8h.html#aeb8d6ca49ba029bdb3663ff6b9c2cc4d',1,'ir_Sharp.h']]], - ['ksharpactimerhourssize_6844',['kSharpAcTimerHoursSize',['../ir__Sharp_8h.html#a965ed2ef8ba32a325ec41a351d88c17d',1,'ir_Sharp.h']]], - ['ksharpactimerincrement_6845',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], - ['ksharpaczerospace_6846',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], - ['ksharpaddressbits_6847',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], - ['ksharpaddressmask_6848',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], - ['ksharpbitmark_6849',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], - ['ksharpbitmarkticks_6850',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], - ['ksharpbits_6851',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], - ['ksharpcommandbits_6852',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], - ['ksharpcommandmask_6853',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], - ['ksharpgap_6854',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], - ['ksharpgapticks_6855',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], - ['ksharponespace_6856',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], - ['ksharponespaceticks_6857',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], - ['ksharptick_6858',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], - ['ksharptogglemask_6859',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], - ['ksharpzerospace_6860',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], - ['ksharpzerospaceticks_6861',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], - ['ksherwoodbits_6862',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], - ['ksherwoodminrepeat_6863',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], - ['ksilentstr_6864',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], - ['ksinglerepeat_6865',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], - ['ksleepstr_6866',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], - ['ksleeptimerstr_6867',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], - ['kslowstr_6868',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], - ['ksony12bits_6869',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], - ['ksony15bits_6870',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], - ['ksony20bits_6871',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], - ['ksonyaltfreq_6872',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], - ['ksonyhdrmark_6873',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], - ['ksonyhdrmarkticks_6874',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], - ['ksonyminbits_6875',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], - ['ksonymingap_6876',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], - ['ksonymingapticks_6877',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], - ['ksonyminrepeat_6878',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], - ['ksonyonemark_6879',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], - ['ksonyonemarkticks_6880',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], - ['ksonyrptlength_6881',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], - ['ksonyrptlengthticks_6882',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], - ['ksonyspace_6883',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], - ['ksonyspaceticks_6884',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], - ['ksonystdfreq_6885',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], - ['ksonytick_6886',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], - ['ksonyzeromark_6887',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], - ['ksonyzeromarkticks_6888',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], - ['kspace_6889',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], - ['kspacelbracestr_6890',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], - ['kspacestate_6891',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], - ['kstartoffset_6892',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], - ['kstartstr_6893',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], - ['kstatesizemax_6894',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], - ['kstepstr_6895',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], - ['kstopstate_6896',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], - ['kstopstr_6897',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], - ['ksuperstr_6898',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], - ['kswinghstr_6899',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], - ['kswingstr_6900',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], - ['kswingvmodestr_6901',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], - ['kswingvstr_6902',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], - ['kswingvtogglestr_6903',['kSwingVToggleStr',['../ir__Midea_8h.html#acb6aaab538b7aeb884e9c0fdb46cea90',1,'kSwingVToggleStr(): ir_Midea.h'],['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): ir_Midea.h']]], - ['ksymphonybits_6904',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], - ['ksymphonydefaultrepeat_6905',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], - ['ksymphonyfootergap_6906',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], - ['ksymphonyonemark_6907',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], - ['ksymphonyonespace_6908',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], - ['ksymphonyzeromark_6909',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], - ['ksymphonyzerospace_6910',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], - ['ktcl112acauto_6911',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], - ['ktcl112acbiteconooffset_6912',['kTcl112AcBitEconoOffset',['../ir__Tcl_8h.html#a97c8948de72d702b859a7abccfbc423e',1,'ir_Tcl.h']]], - ['ktcl112acbithealthoffset_6913',['kTcl112AcBitHealthOffset',['../ir__Tcl_8h.html#a2acb2c5cd2f8b729047f9eecf93f96af',1,'ir_Tcl.h']]], - ['ktcl112acbitlightoffset_6914',['kTcl112AcBitLightOffset',['../ir__Tcl_8h.html#ad87c878f7a30a05418a5babfc52c0e9e',1,'ir_Tcl.h']]], - ['ktcl112acbitmark_6915',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], - ['ktcl112acbits_6916',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], - ['ktcl112acbitswinghoffset_6917',['kTcl112AcBitSwingHOffset',['../ir__Tcl_8h.html#ad807894f92249e44d1725f18de013369',1,'ir_Tcl.h']]], - ['ktcl112acbitturbooffset_6918',['kTcl112AcBitTurboOffset',['../ir__Tcl_8h.html#a7a6e09c1b4620e96820b3b3c54fb0e18',1,'ir_Tcl.h']]], - ['ktcl112accool_6919',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], - ['ktcl112acdefaultrepeat_6920',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], - ['ktcl112acdry_6921',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], - ['ktcl112acfan_6922',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], - ['ktcl112acfanauto_6923',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], - ['ktcl112acfanhigh_6924',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], - ['ktcl112acfanlow_6925',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], - ['ktcl112acfanmed_6926',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], - ['ktcl112acfansize_6927',['kTcl112AcFanSize',['../ir__Tcl_8h.html#a802bbb6258edf6dcdd05a383db28e9d3',1,'ir_Tcl.h']]], - ['ktcl112acgap_6928',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], - ['ktcl112achalfdegreeoffset_6929',['kTcl112AcHalfDegreeOffset',['../ir__Tcl_8h.html#a1ba7d7fa8df2243330eafce097209651',1,'ir_Tcl.h']]], - ['ktcl112achdrmark_6930',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], - ['ktcl112achdrmarktolerance_6931',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], - ['ktcl112achdrspace_6932',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], - ['ktcl112acheat_6933',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], - ['ktcl112acmodesize_6934',['kTcl112AcModeSize',['../ir__Tcl_8h.html#a07e49881d14cb1c84cfbf3695ae64580',1,'ir_Tcl.h']]], - ['ktcl112aconespace_6935',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], - ['ktcl112acpoweroffset_6936',['kTcl112AcPowerOffset',['../ir__Tcl_8h.html#ad36204b310ec8a069f631322d806aa7f',1,'ir_Tcl.h']]], - ['ktcl112acstatelength_6937',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], - ['ktcl112acswingvoff_6938',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], - ['ktcl112acswingvoffset_6939',['kTcl112AcSwingVOffset',['../ir__Tcl_8h.html#ab0412b0d865eaf788a5672300575b1d8',1,'ir_Tcl.h']]], - ['ktcl112acswingvon_6940',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], - ['ktcl112acswingvsize_6941',['kTcl112AcSwingVSize',['../ir__Tcl_8h.html#a7bacb40b18b280da13b2d1b781c825e5',1,'ir_Tcl.h']]], - ['ktcl112actempmax_6942',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], - ['ktcl112actempmin_6943',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], - ['ktcl112actolerance_6944',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], - ['ktcl112aczerospace_6945',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], - ['ktechnibelacbitmark_6946',['kTechnibelAcBitMark',['../ir__Technibel_8cpp.html#a82529fd6c6fd51f036b1930613ed5e9b',1,'ir_Technibel.cpp']]], - ['ktechnibelacbits_6947',['kTechnibelAcBits',['../IRremoteESP8266_8h.html#a0c4bc77a2443037598940b955c83eb82',1,'IRremoteESP8266.h']]], - ['ktechnibelacchecksumoffset_6948',['kTechnibelAcChecksumOffset',['../ir__Technibel_8h.html#a9b8300844129b440eb827d7bb9c23011',1,'ir_Technibel.h']]], - ['ktechnibelacchecksumsize_6949',['kTechnibelAcChecksumSize',['../ir__Technibel_8h.html#a37be9b31a3b56a6fab83d7e101b788dc',1,'ir_Technibel.h']]], - ['ktechnibelaccool_6950',['kTechnibelAcCool',['../ir__Technibel_8h.html#aa0a74f362c3d9160660763d89195b387',1,'ir_Technibel.h']]], - ['ktechnibelacdefaultrepeat_6951',['kTechnibelAcDefaultRepeat',['../IRremoteESP8266_8h.html#a0e797e69cca806e73c902f5d9dfe1bf1',1,'IRremoteESP8266.h']]], - ['ktechnibelacdry_6952',['kTechnibelAcDry',['../ir__Technibel_8h.html#afb6b5b6b2e88fb06f1706c57e03672d8',1,'ir_Technibel.h']]], - ['ktechnibelacfan_6953',['kTechnibelAcFan',['../ir__Technibel_8h.html#a9b9c7971f9f76dbb8b742727f48408d6',1,'ir_Technibel.h']]], - ['ktechnibelacfanchangebit_6954',['kTechnibelAcFanChangeBit',['../ir__Technibel_8h.html#a50269bdab460a8fef93aecf331e8fef1',1,'ir_Technibel.h']]], - ['ktechnibelacfanhigh_6955',['kTechnibelAcFanHigh',['../ir__Technibel_8h.html#a7ec8f7e2911b0a8db8714aa06377a017',1,'ir_Technibel.h']]], - ['ktechnibelacfanlow_6956',['kTechnibelAcFanLow',['../ir__Technibel_8h.html#a3be4c4dbdfe0ef1ab7f7f2308ee5f906',1,'ir_Technibel.h']]], - ['ktechnibelacfanmedium_6957',['kTechnibelAcFanMedium',['../ir__Technibel_8h.html#ae390f138de9e24940a066a75f960ce67',1,'ir_Technibel.h']]], - ['ktechnibelacfanoffset_6958',['kTechnibelAcFanOffset',['../ir__Technibel_8h.html#a737d597c15c66400f8175422d538a7a9',1,'ir_Technibel.h']]], - ['ktechnibelacfansize_6959',['kTechnibelAcFanSize',['../ir__Technibel_8h.html#a29d3d827bd0486f4f1c6c8090bfae7b3',1,'ir_Technibel.h']]], - ['ktechnibelacfooteroffset_6960',['kTechnibelAcFooterOffset',['../ir__Technibel_8h.html#a99ec40b7785d37b9e2b1a44dd4f07aaa',1,'ir_Technibel.h']]], - ['ktechnibelacfootersize_6961',['kTechnibelAcFooterSize',['../ir__Technibel_8h.html#a8f2d29928978641a19b262a05aa7adbb',1,'ir_Technibel.h']]], - ['ktechnibelacfreq_6962',['kTechnibelAcFreq',['../ir__Technibel_8cpp.html#ab5e0c7c1bd254eb3dff6e81153cdce95',1,'ir_Technibel.cpp']]], - ['ktechnibelacgap_6963',['kTechnibelAcGap',['../ir__Technibel_8cpp.html#a9e400dd55fa32e3c91880a55a87e1e5e',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrmark_6964',['kTechnibelAcHdrMark',['../ir__Technibel_8cpp.html#af72f1210a259c1dde24fc39e6b026521',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrspace_6965',['kTechnibelAcHdrSpace',['../ir__Technibel_8cpp.html#a1703e3c4105c858b4534b0e40302cfae',1,'ir_Technibel.cpp']]], - ['ktechnibelacheader_6966',['kTechnibelAcHeader',['../ir__Technibel_8h.html#a11b2a3eaded5d7890c65f8eaa7c445a6',1,'ir_Technibel.h']]], - ['ktechnibelacheaderoffset_6967',['kTechnibelAcHeaderOffset',['../ir__Technibel_8h.html#a750df711adeb31d902ca20b572c6f541',1,'ir_Technibel.h']]], - ['ktechnibelacheadersize_6968',['kTechnibelAcHeaderSize',['../ir__Technibel_8h.html#a8024c7db1c3883b6d3a0aea1c03a365f',1,'ir_Technibel.h']]], - ['ktechnibelacheat_6969',['kTechnibelAcHeat',['../ir__Technibel_8h.html#a517fa48501655e8d4f0f86146a8761d3',1,'ir_Technibel.h']]], - ['ktechnibelachourssize_6970',['kTechnibelAcHoursSize',['../ir__Technibel_8h.html#a9f4657bf4664a1fdcb4c009a663b03b5',1,'ir_Technibel.h']]], - ['ktechnibelacmodeoffset_6971',['kTechnibelAcModeOffset',['../ir__Technibel_8h.html#a1ee37af3cf79f33b6e2278823711432b',1,'ir_Technibel.h']]], - ['ktechnibelacmodesize_6972',['kTechnibelAcModeSize',['../ir__Technibel_8h.html#ad693a1007876dca52ae3bb8394517fc1',1,'ir_Technibel.h']]], - ['ktechnibelaconespace_6973',['kTechnibelAcOneSpace',['../ir__Technibel_8cpp.html#ae70ce0b82874c4bc0797f510353e2cc3',1,'ir_Technibel.cpp']]], - ['ktechnibelacpowerbit_6974',['kTechnibelAcPowerBit',['../ir__Technibel_8h.html#ab3582b78d197a55b5d85c219c95d0d2d',1,'ir_Technibel.h']]], - ['ktechnibelacresetstate_6975',['kTechnibelAcResetState',['../ir__Technibel_8h.html#a1c526f7f53f689c095c70687d6bd20ee',1,'ir_Technibel.h']]], - ['ktechnibelacsleepbit_6976',['kTechnibelAcSleepBit',['../ir__Technibel_8h.html#a76ba7668a44d61a98b46f993dc4b3df9',1,'ir_Technibel.h']]], - ['ktechnibelacswingbit_6977',['kTechnibelAcSwingBit',['../ir__Technibel_8h.html#a483bc46b705db0606c05c4e6d898284b',1,'ir_Technibel.h']]], - ['ktechnibelactempchangebit_6978',['kTechnibelAcTempChangeBit',['../ir__Technibel_8h.html#a1790aed6a7ac25672503a7d08390712c',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxc_6979',['kTechnibelAcTempMaxC',['../ir__Technibel_8h.html#a141efb22c7ac16c9218ecfde9577b132',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxf_6980',['kTechnibelAcTempMaxF',['../ir__Technibel_8h.html#a048b6c574309291de654ee0340ffbe3c',1,'ir_Technibel.h']]], - ['ktechnibelactempminc_6981',['kTechnibelAcTempMinC',['../ir__Technibel_8h.html#a82962d65e7835dc589bd2a9ace171de7',1,'ir_Technibel.h']]], - ['ktechnibelactempminf_6982',['kTechnibelAcTempMinF',['../ir__Technibel_8h.html#acbe3d2e41a0c2bf1b8857ab97cbb7b3c',1,'ir_Technibel.h']]], - ['ktechnibelactempoffset_6983',['kTechnibelAcTempOffset',['../ir__Technibel_8h.html#aec6f8354390ab069325df2b9faf9a07e',1,'ir_Technibel.h']]], - ['ktechnibelactempsize_6984',['kTechnibelAcTempSize',['../ir__Technibel_8h.html#a1762c9688b2295f792021026f630921b',1,'ir_Technibel.h']]], - ['ktechnibelactempunitbit_6985',['kTechnibelAcTempUnitBit',['../ir__Technibel_8h.html#a06f844beb86350bb6f68031d275bddb7',1,'ir_Technibel.h']]], - ['ktechnibelactimerchangebit_6986',['kTechnibelAcTimerChangeBit',['../ir__Technibel_8h.html#af1ccda6403e9afda03e4c18d99fbae55',1,'ir_Technibel.h']]], - ['ktechnibelactimerenablebit_6987',['kTechnibelAcTimerEnableBit',['../ir__Technibel_8h.html#a5d68f5b246870a37d173eba04e510f7a',1,'ir_Technibel.h']]], - ['ktechnibelactimerhoursoffset_6988',['kTechnibelAcTimerHoursOffset',['../ir__Technibel_8h.html#a6f4c74a83e3734474d84dc305f975cd1',1,'ir_Technibel.h']]], - ['ktechnibelactimermax_6989',['kTechnibelAcTimerMax',['../ir__Technibel_8h.html#af689f2686034aa45b19be75077a0baa6',1,'ir_Technibel.h']]], - ['ktechnibelaczerospace_6990',['kTechnibelAcZeroSpace',['../ir__Technibel_8cpp.html#a28f5833aa7529badc4785fac661974b4',1,'ir_Technibel.cpp']]], - ['ktecoauto_6991',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], - ['ktecobitmark_6992',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], - ['ktecobits_6993',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], - ['ktecocool_6994',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], - ['ktecodefaultrepeat_6995',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], - ['ktecodry_6996',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], - ['ktecofan_6997',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], - ['ktecofanauto_6998',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], - ['ktecofanhigh_6999',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], - ['ktecofanlow_7000',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], - ['ktecofanmed_7001',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], - ['ktecofanoffset_7002',['kTecoFanOffset',['../ir__Teco_8h.html#ae70841ad987ac89abaaf99b11655eaae',1,'ir_Teco.h']]], - ['ktecofansize_7003',['kTecoFanSize',['../ir__Teco_8h.html#a45734d2be952e3faa796d86245eaf241',1,'ir_Teco.h']]], - ['ktecogap_7004',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], - ['ktecohdrmark_7005',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], - ['ktecohdrspace_7006',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], - ['ktecoheat_7007',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], - ['ktecohumidoffset_7008',['kTecoHumidOffset',['../ir__Teco_8h.html#ad95126f6815d24b5d1b38e44677f3d7e',1,'ir_Teco.h']]], - ['ktecolightoffset_7009',['kTecoLightOffset',['../ir__Teco_8h.html#a5dc2cb366974b2baa9f7cbfb26d90415',1,'ir_Teco.h']]], - ['ktecomaxtemp_7010',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], - ['ktecomintemp_7011',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], - ['ktecomodeoffset_7012',['kTecoModeOffset',['../ir__Teco_8h.html#a1aca7a8a2822cd1494dabeda5b11b9be',1,'ir_Teco.h']]], - ['ktecoonespace_7013',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], - ['ktecopoweroffset_7014',['kTecoPowerOffset',['../ir__Teco_8h.html#a4eec88582ed29e424549497deb9eceef',1,'ir_Teco.h']]], - ['ktecoreset_7015',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], - ['ktecosaveoffset_7016',['kTecoSaveOffset',['../ir__Teco_8h.html#a63d5efa7cfc84ee22d3575cc713d1f62',1,'ir_Teco.h']]], - ['ktecosleepoffset_7017',['kTecoSleepOffset',['../ir__Teco_8h.html#ae7da65034a8a84e79ebb1497e56e38fe',1,'ir_Teco.h']]], - ['ktecoswingoffset_7018',['kTecoSwingOffset',['../ir__Teco_8h.html#aaa821eb3ad9a5edadba2b83b6d2094b6',1,'ir_Teco.h']]], - ['ktecotempoffset_7019',['kTecoTempOffset',['../ir__Teco_8h.html#ae887d9c5702d63e4b4fa5250ed5bf0d9',1,'ir_Teco.h']]], - ['ktecotempsize_7020',['kTecoTempSize',['../ir__Teco_8h.html#a635db8dbba35e4326958fca6dfe67603',1,'ir_Teco.h']]], - ['ktecotimerhalfhouroffset_7021',['kTecoTimerHalfHourOffset',['../ir__Teco_8h.html#a2692a59900c10b6da6662fac5a312e04',1,'ir_Teco.h']]], - ['ktecotimeronoffset_7022',['kTecoTimerOnOffset',['../ir__Teco_8h.html#a7bcf79fa5e5280ad35c9a9512b2fdc7f',1,'ir_Teco.h']]], - ['ktecotimertenshoursoffset_7023',['kTecoTimerTensHoursOffset',['../ir__Teco_8h.html#adaa73601e31fa7217d371645d835f0ca',1,'ir_Teco.h']]], - ['ktecotimertenshourssize_7024',['kTecoTimerTensHoursSize',['../ir__Teco_8h.html#a57bf1b777b9b56aad4f224b6bba1218c',1,'ir_Teco.h']]], - ['ktecotimerunithoursoffset_7025',['kTecoTimerUnitHoursOffset',['../ir__Teco_8h.html#ac47fc38319e7e1d90d42c789b806cdbd',1,'ir_Teco.h']]], - ['ktecotimerunithourssize_7026',['kTecoTimerUnitHoursSize',['../ir__Teco_8h.html#a54ac664e32ce0d8b4d8d4d4d459dbc46',1,'ir_Teco.h']]], - ['ktecozerospace_7027',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], - ['ktempdownstr_7028',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], - ['ktempstr_7029',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], - ['ktempupstr_7030',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], - ['kthreeletterdayofweekstr_7031',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], - ['ktimeoutms_7032',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], - ['ktimerstr_7033',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], - ['ktimesep_7034',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], - ['ktogglestr_7035',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], - ['ktolerance_7036',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], - ['ktopstr_7037',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], - ['ktoshibaacauto_7038',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], - ['ktoshibaacbitmark_7039',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], - ['ktoshibaacbits_7040',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitslong_7041',['kToshibaACBitsLong',['../IRremoteESP8266_8h.html#aaf9e746cb8ee9e246f435ba4416a5428',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitsshort_7042',['kToshibaACBitsShort',['../IRremoteESP8266_8h.html#a7483cfe84003b0e24bfa846c240afc4c',1,'IRremoteESP8266.h']]], - ['ktoshibaaccool_7043',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], - ['ktoshibaacdry_7044',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], - ['ktoshibaaceconoon_7045',['kToshibaAcEconoOn',['../ir__Toshiba_8h.html#ab95da2ea12790cd327519615dbb48efe',1,'ir_Toshiba.h']]], - ['ktoshibaacecoturbooffset_7046',['kToshibaAcEcoTurboOffset',['../ir__Toshiba_8h.html#a31ba075cf39642d9b35f8db89a724d85',1,'ir_Toshiba.h']]], - ['ktoshibaacecoturbosize_7047',['kToshibaAcEcoTurboSize',['../ir__Toshiba_8h.html#a9750fd2b80ab2e42c1a1cf08dffa559e',1,'ir_Toshiba.h']]], - ['ktoshibaacfan_7048',['kToshibaAcFan',['../ir__Toshiba_8h.html#a4ecdbe268368c9d22a690bc5e394586f',1,'ir_Toshiba.h']]], - ['ktoshibaacfanauto_7049',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmax_7050',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmed_7051',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmin_7052',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], - ['ktoshibaacfanoffset_7053',['kToshibaAcFanOffset',['../ir__Toshiba_8h.html#a8276d25876329968bbf36eac3598972c',1,'ir_Toshiba.h']]], - ['ktoshibaacfansize_7054',['kToshibaAcFanSize',['../ir__Toshiba_8h.html#a5a91c19e799721560a5a9ef77a245888',1,'ir_Toshiba.h']]], - ['ktoshibaachdrmark_7055',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], - ['ktoshibaachdrspace_7056',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], - ['ktoshibaacheat_7057',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], - ['ktoshibaacinvertedlength_7058',['kToshibaAcInvertedLength',['../ir__Toshiba_8h.html#adfc646265ec1e4a03646d7f3b867d65b',1,'ir_Toshiba.h']]], - ['ktoshibaaclengthbyte_7059',['kToshibaAcLengthByte',['../ir__Toshiba_8h.html#a4e3f39edb4cc3a8c7b94ff9cce0e01d0',1,'ir_Toshiba.h']]], - ['ktoshibaaclongmsgbit_7060',['kToshibaAcLongMsgBit',['../ir__Toshiba_8h.html#a71d6e9aef12ec2e176b0035e48d9631e',1,'ir_Toshiba.h']]], - ['ktoshibaacmaxtemp_7061',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], - ['ktoshibaacmingap_7062',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], - ['ktoshibaacminlength_7063',['kToshibaAcMinLength',['../ir__Toshiba_8h.html#a105b24e11afdd102097c81bf050a0f3a',1,'ir_Toshiba.h']]], - ['ktoshibaacminrepeat_7064',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], - ['ktoshibaacmintemp_7065',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], - ['ktoshibaacmodeoffset_7066',['kToshibaAcModeOffset',['../ir__Toshiba_8h.html#a4e097e34b0f2dd9eaacf94d043f726d0',1,'ir_Toshiba.h']]], - ['ktoshibaacmodesize_7067',['kToshibaAcModeSize',['../ir__Toshiba_8h.html#a920d55af8e499a7c2293a7d8180104da',1,'ir_Toshiba.h']]], - ['ktoshibaacoff_7068',['kToshibaAcOff',['../ir__Toshiba_8h.html#a58b75ee3ddd1325bd4da71902d840c1d',1,'ir_Toshiba.h']]], - ['ktoshibaaconespace_7069',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], - ['ktoshibaacshortmsgbit_7070',['kToshibaAcShortMsgBit',['../ir__Toshiba_8h.html#a1b48bb6e1615d2717cb0a5f838d6626b',1,'ir_Toshiba.h']]], - ['ktoshibaacstatelength_7071',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthlong_7072',['kToshibaACStateLengthLong',['../IRremoteESP8266_8h.html#a3c0ebc01f8a61422c26b84e78fcec8f7',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthshort_7073',['kToshibaACStateLengthShort',['../IRremoteESP8266_8h.html#a5fa111fa9d560834605eff2941c0cacc',1,'IRremoteESP8266.h']]], - ['ktoshibaacswingoff_7074',['kToshibaAcSwingOff',['../ir__Toshiba_8h.html#ab556d401c0f8d822a7ef9db5c89d9c87',1,'ir_Toshiba.h']]], - ['ktoshibaacswingoffset_7075',['kToshibaAcSwingOffset',['../ir__Toshiba_8h.html#a3d1ed1acc700aadbb1ecf0d440ecd288',1,'ir_Toshiba.h']]], - ['ktoshibaacswingon_7076',['kToshibaAcSwingOn',['../ir__Toshiba_8h.html#ac5815fcd06c734de58253e64f0b4fb7f',1,'ir_Toshiba.h']]], - ['ktoshibaacswingsize_7077',['kToshibaAcSwingSize',['../ir__Toshiba_8h.html#a249fdb7a8592828208dc308fcef161cf',1,'ir_Toshiba.h']]], - ['ktoshibaacswingstep_7078',['kToshibaAcSwingStep',['../ir__Toshiba_8h.html#aff168c247bc0ea425f805f595cb14012',1,'ir_Toshiba.h']]], - ['ktoshibaactempoffset_7079',['kToshibaAcTempOffset',['../ir__Toshiba_8h.html#a68be75c21288e249d7b44fe9648de91f',1,'ir_Toshiba.h']]], - ['ktoshibaactempsize_7080',['kToshibaAcTempSize',['../ir__Toshiba_8h.html#a89ec8108586e0d5b9f58a160f4db37c8',1,'ir_Toshiba.h']]], - ['ktoshibaacturboon_7081',['kToshibaAcTurboOn',['../ir__Toshiba_8h.html#a8f84e028f12a8fac27366893b65faba7',1,'ir_Toshiba.h']]], - ['ktoshibaaczerospace_7082',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], - ['ktranscoldauto_7083',['kTranscoldAuto',['../ir__Transcold_8h.html#ad764a143afb464fe25fe5d670241ef87',1,'ir_Transcold.h']]], - ['ktranscoldbitmark_7084',['kTranscoldBitMark',['../ir__Transcold_8cpp.html#acc3092436f39e583e4a2e51851543fec',1,'ir_Transcold.cpp']]], - ['ktranscoldbits_7085',['kTranscoldBits',['../IRremoteESP8266_8h.html#abe50a182c1f65378337705d2784e2fdb',1,'IRremoteESP8266.h']]], - ['ktranscoldcmdfan_7086',['kTranscoldCmdFan',['../ir__Transcold_8h.html#a97b418d9a169e5e79f1ee08fd433c62f',1,'ir_Transcold.h']]], - ['ktranscoldcool_7087',['kTranscoldCool',['../ir__Transcold_8h.html#ad1fcfe19e632b7dc8489cee494d48436',1,'ir_Transcold.h']]], - ['ktranscolddefaultrepeat_7088',['kTranscoldDefaultRepeat',['../IRremoteESP8266_8h.html#a17cef98fbfae6a84c0a3e009fb3c31d0',1,'IRremoteESP8266.h']]], - ['ktranscolddry_7089',['kTranscoldDry',['../ir__Transcold_8h.html#a2f185d4fb3a103c15b537557e24aff09',1,'ir_Transcold.h']]], - ['ktranscoldfan_7090',['kTranscoldFan',['../ir__Transcold_8h.html#a7710625ad8497f1baa6a6d4de2ca8be1',1,'ir_Transcold.h']]], - ['ktranscoldfanauto_7091',['kTranscoldFanAuto',['../ir__Transcold_8h.html#a89f832806c8b3d7311070a285fc757ec',1,'ir_Transcold.h']]], - ['ktranscoldfanauto0_7092',['kTranscoldFanAuto0',['../ir__Transcold_8h.html#a813d31eace1b1a6c4d7b2efb5eddb9af',1,'ir_Transcold.h']]], - ['ktranscoldfanfixed_7093',['kTranscoldFanFixed',['../ir__Transcold_8h.html#ac3afe530635393f2d642cecd7e77b131',1,'ir_Transcold.h']]], - ['ktranscoldfanmax_7094',['kTranscoldFanMax',['../ir__Transcold_8h.html#aa5b9f6cd6aa930a856b26e7714575e85',1,'ir_Transcold.h']]], - ['ktranscoldfanmed_7095',['kTranscoldFanMed',['../ir__Transcold_8h.html#ad37f4a57666b991be80e647de6b4ca65',1,'ir_Transcold.h']]], - ['ktranscoldfanmin_7096',['kTranscoldFanMin',['../ir__Transcold_8h.html#a4ddaefba3d91ee7aa25b603f1034af9c',1,'ir_Transcold.h']]], - ['ktranscoldfanoffset_7097',['kTranscoldFanOffset',['../ir__Transcold_8h.html#a421f144fa30a56e32df17cdc06789e5b',1,'ir_Transcold.h']]], - ['ktranscoldfansize_7098',['kTranscoldFanSize',['../ir__Transcold_8h.html#ad64c46058cdb31a0c3dc7d16c542fb7c',1,'ir_Transcold.h']]], - ['ktranscoldfantempcode_7099',['kTranscoldFanTempCode',['../ir__Transcold_8h.html#a57eef64332f604b0c71557270ae255ad',1,'ir_Transcold.h']]], - ['ktranscoldfanzonefollow_7100',['kTranscoldFanZoneFollow',['../ir__Transcold_8h.html#aa78ff958ca560d1db1e69e3bd2bcd5e3',1,'ir_Transcold.h']]], - ['ktranscoldhdrmark_7101',['kTranscoldHdrMark',['../ir__Transcold_8cpp.html#aa999da00de9866212cacc740bb66d5f6',1,'ir_Transcold.cpp']]], - ['ktranscoldhdrspace_7102',['kTranscoldHdrSpace',['../ir__Transcold_8cpp.html#a0568fcecce190a29828771add3386b6a',1,'ir_Transcold.cpp']]], - ['ktranscoldheat_7103',['kTranscoldHeat',['../ir__Transcold_8h.html#ad109eb1c3cb044994179fafdbfc107e2',1,'ir_Transcold.h']]], - ['ktranscoldknowngoodstate_7104',['kTranscoldKnownGoodState',['../ir__Transcold_8h.html#a385409f55006ad7fedca2d335b69bf39',1,'ir_Transcold.h']]], - ['ktranscoldmodeoffset_7105',['kTranscoldModeOffset',['../ir__Transcold_8h.html#a8522221c94daaa3c3a233e94f57027d3',1,'ir_Transcold.h']]], - ['ktranscoldmodesize_7106',['kTranscoldModeSize',['../ir__Transcold_8h.html#a4a4db7a00edaa8ebeee86a0f3e3d6810',1,'ir_Transcold.h']]], - ['ktranscoldoff_7107',['kTranscoldOff',['../ir__Transcold_8h.html#a55d930cdd8e4246de18832bbd88a7d99',1,'ir_Transcold.h']]], - ['ktranscoldonespace_7108',['kTranscoldOneSpace',['../ir__Transcold_8cpp.html#aadd9575e345b8c57b4e2c65bcdb3123d',1,'ir_Transcold.cpp']]], - ['ktranscoldprefix_7109',['kTranscoldPrefix',['../ir__Transcold_8h.html#aaef68d4ab70d54b64486b7ba27a15822',1,'ir_Transcold.h']]], - ['ktranscoldswing_7110',['kTranscoldSwing',['../ir__Transcold_8h.html#af467e8cfb7f71abb609f4b9673908937',1,'ir_Transcold.h']]], - ['ktranscoldswingh_7111',['kTranscoldSwingH',['../ir__Transcold_8h.html#a300cfff72391f0c7c0caa97d49a73918',1,'ir_Transcold.h']]], - ['ktranscoldswingv_7112',['kTranscoldSwingV',['../ir__Transcold_8h.html#acfb0faab9bcf147c5dab61bee2cd93c9',1,'ir_Transcold.h']]], - ['ktranscoldtempmax_7113',['kTranscoldTempMax',['../ir__Transcold_8h.html#a5c9be5911208f2f7062a966b3deda0cd',1,'ir_Transcold.h']]], - ['ktranscoldtempmin_7114',['kTranscoldTempMin',['../ir__Transcold_8h.html#a52ff579c8e54611aed6be38d9907af57',1,'ir_Transcold.h']]], - ['ktranscoldtempoffset_7115',['kTranscoldTempOffset',['../ir__Transcold_8h.html#ada8c8a30c3d1ec93c9a7bb4fd6cc8a37',1,'ir_Transcold.h']]], - ['ktranscoldtempsize_7116',['kTranscoldTempSize',['../ir__Transcold_8h.html#adeffd84ae91146e1ac5b27735193ba55',1,'ir_Transcold.h']]], - ['ktranscoldunknown_7117',['kTranscoldUnknown',['../ir__Transcold_8h.html#af52672df48539c826ccf8ffc1e3f9927',1,'ir_Transcold.h']]], - ['ktranscoldzerospace_7118',['kTranscoldZeroSpace',['../ir__Transcold_8cpp.html#af932911d55d7eee66ee217cb8ad5d4d4',1,'ir_Transcold.cpp']]], - ['ktrotecauto_7119',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], - ['ktrotecbitmark_7120',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], - ['ktrotecbits_7121',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], - ['ktroteccool_7122',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], - ['ktrotecdefaultrepeat_7123',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], - ['ktrotecdeftemp_7124',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], - ['ktrotecdry_7125',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], - ['ktrotecfan_7126',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], - ['ktrotecfanhigh_7127',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], - ['ktrotecfanlow_7128',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], - ['ktrotecfanmed_7129',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], - ['ktrotecfanoffset_7130',['kTrotecFanOffset',['../ir__Trotec_8h.html#a3b9034b96268707f7b6fc45a16499479',1,'ir_Trotec.h']]], - ['ktrotecfansize_7131',['kTrotecFanSize',['../ir__Trotec_8h.html#a89d7de622d0f53f800c1a5a2887a81e4',1,'ir_Trotec.h']]], - ['ktrotecgap_7132',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], - ['ktrotecgapend_7133',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], - ['ktrotechdrmark_7134',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], - ['ktrotechdrspace_7135',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], - ['ktrotecintro1_7136',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], - ['ktrotecintro2_7137',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], - ['ktrotecmaxtemp_7138',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], - ['ktrotecmaxtimer_7139',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], - ['ktrotecmintemp_7140',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], - ['ktrotecmodeoffset_7141',['kTrotecModeOffset',['../ir__Trotec_8h.html#aa0d48802845d5cf0410550bb98e4cbb5',1,'ir_Trotec.h']]], - ['ktrotecmodesize_7142',['kTrotecModeSize',['../ir__Trotec_8h.html#ae45ea2f0f8b5d09568c0322e1735ca85',1,'ir_Trotec.h']]], - ['ktroteconespace_7143',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], - ['ktrotecpowerbitoffset_7144',['kTrotecPowerBitOffset',['../ir__Trotec_8h.html#a11fcdfe886385de6363d06371cdcff43',1,'ir_Trotec.h']]], - ['ktrotecsleepbitoffset_7145',['kTrotecSleepBitOffset',['../ir__Trotec_8h.html#af81754a025119a3dc9924df5508b18c0',1,'ir_Trotec.h']]], - ['ktrotecstatelength_7146',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], - ['ktrotectempoffset_7147',['kTrotecTempOffset',['../ir__Trotec_8h.html#a08a844aefec8d0440365c9204a01034c',1,'ir_Trotec.h']]], - ['ktrotectempsize_7148',['kTrotecTempSize',['../ir__Trotec_8h.html#a1141680a808f41513548a8747c37f975',1,'ir_Trotec.h']]], - ['ktrotectimerbitoffset_7149',['kTrotecTimerBitOffset',['../ir__Trotec_8h.html#aad59f1284ec04736a3c6629c3cd87731',1,'ir_Trotec.h']]], - ['ktroteczerospace_7150',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], - ['ktruestr_7151',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], - ['kturbostr_7152',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], - ['kunknownstr_7153',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], - ['kunknownthreshold_7154',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], - ['kupperstr_7155',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], - ['kupstr_7156',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], - ['kusedeftol_7157',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], - ['kvestelacauto_7158',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], - ['kvestelacbitmark_7159',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], - ['kvestelacbits_7160',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], - ['kvestelacchecksumoffset_7161',['kVestelAcChecksumOffset',['../ir__Vestel_8h.html#ac3fa10d1dba540a82b77cc88b01f9a7e',1,'ir_Vestel.h']]], - ['kvestelacchecksumsize_7162',['kVestelAcChecksumSize',['../ir__Vestel_8h.html#a61979a3b944ce7309c5b3f5b24b0a14c',1,'ir_Vestel.h']]], - ['kvestelaccool_7163',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], - ['kvestelacdry_7164',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], - ['kvestelacfan_7165',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], - ['kvestelacfanauto_7166',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], - ['kvestelacfanautocool_7167',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], - ['kvestelacfanautohot_7168',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], - ['kvestelacfanhigh_7169',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], - ['kvestelacfanlow_7170',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], - ['kvestelacfanmed_7171',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], - ['kvestelacfanoffset_7172',['kVestelAcFanOffset',['../ir__Vestel_8h.html#af0f1c1989322f256b7b1b5dba613feba',1,'ir_Vestel.h']]], - ['kvestelacfansize_7173',['kVestelAcFanSize',['../ir__Vestel_8h.html#ae61e23edfb71206e736497ab479c08ad',1,'ir_Vestel.h']]], - ['kvestelachdrmark_7174',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], - ['kvestelachdrspace_7175',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], - ['kvestelacheat_7176',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], - ['kvestelachouroffset_7177',['kVestelAcHourOffset',['../ir__Vestel_8h.html#af4c3729a4b9df092e01d74109f539cca',1,'ir_Vestel.h']]], - ['kvestelachoursize_7178',['kVestelAcHourSize',['../ir__Vestel_8h.html#a2c0fd442d92620ca062637d01258bacf',1,'ir_Vestel.h']]], - ['kvestelacion_7179',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], - ['kvestelacionoffset_7180',['kVestelAcIonOffset',['../ir__Vestel_8h.html#a9b1cd19c4b0037714f1c47ba031edd0b',1,'ir_Vestel.h']]], - ['kvestelacmaxtemp_7181',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], - ['kvestelacmintempc_7182',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], - ['kvestelacmintemph_7183',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], - ['kvestelacminuteoffset_7184',['kVestelAcMinuteOffset',['../ir__Vestel_8h.html#a7c5f318a30e86394af19265e73b68034',1,'ir_Vestel.h']]], - ['kvestelacminutesize_7185',['kVestelAcMinuteSize',['../ir__Vestel_8h.html#a8abd51cd0d0404ae8bb139690bf55eb0',1,'ir_Vestel.h']]], - ['kvestelacmodeoffset_7186',['kVestelAcModeOffset',['../ir__Vestel_8h.html#a5334689cb0fbeaee67133f1f86bdce58',1,'ir_Vestel.h']]], - ['kvestelacnormal_7187',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], - ['kvestelacofftimeoffset_7188',['kVestelAcOffTimeOffset',['../ir__Vestel_8h.html#a64ce11367a28d6481801ac3ac641df4b',1,'ir_Vestel.h']]], - ['kvestelacofftimerflagoffset_7189',['kVestelAcOffTimerFlagOffset',['../ir__Vestel_8h.html#ab36bed197f2c2b65599667b4cdf8225b',1,'ir_Vestel.h']]], - ['kvestelaconespace_7190',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], - ['kvestelacontimeoffset_7191',['kVestelAcOnTimeOffset',['../ir__Vestel_8h.html#a51e257abca02cb1c97de4a5418fb7e61',1,'ir_Vestel.h']]], - ['kvestelacontimerflagoffset_7192',['kVestelAcOnTimerFlagOffset',['../ir__Vestel_8h.html#a8aa66163683538129fbdaf21746a9144',1,'ir_Vestel.h']]], - ['kvestelacpoweroffset_7193',['kVestelAcPowerOffset',['../ir__Vestel_8h.html#ab1c5709fa37fc711929688bd72c300be',1,'ir_Vestel.h']]], - ['kvestelacpowersize_7194',['kVestelAcPowerSize',['../ir__Vestel_8h.html#a884236b7213902c5e7d79327effc8f97',1,'ir_Vestel.h']]], - ['kvestelacsleep_7195',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], - ['kvestelacstatedefault_7196',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], - ['kvestelacswing_7197',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], - ['kvestelacswingoffset_7198',['kVestelAcSwingOffset',['../ir__Vestel_8h.html#ad3249b7c42070013c7c81d3feb0b1a43',1,'ir_Vestel.h']]], - ['kvestelactempoffset_7199',['kVestelAcTempOffset',['../ir__Vestel_8h.html#a9cf24276d722ee54a17c8beaf2b415cd',1,'ir_Vestel.h']]], - ['kvestelactimerflagoffset_7200',['kVestelAcTimerFlagOffset',['../ir__Vestel_8h.html#a0e53cb471d133b13cfa8fd3204d70776',1,'ir_Vestel.h']]], - ['kvestelactimerhoursize_7201',['kVestelAcTimerHourSize',['../ir__Vestel_8h.html#ad52ad7c6b1efb7eee74a276dbca330e3',1,'ir_Vestel.h']]], - ['kvestelactimerminssize_7202',['kVestelAcTimerMinsSize',['../ir__Vestel_8h.html#a7696fac000df0fd5136b7cbd96393b9e',1,'ir_Vestel.h']]], - ['kvestelactimersize_7203',['kVestelAcTimerSize',['../ir__Vestel_8h.html#a43f134a4db94790c671380be29fb8e2c',1,'ir_Vestel.h']]], - ['kvestelactimestatedefault_7204',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], - ['kvestelactolerance_7205',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], - ['kvestelacturbo_7206',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], - ['kvestelacturbosleepoffset_7207',['kVestelAcTurboSleepOffset',['../ir__Vestel_8h.html#a97c21dc060558aa4f543f2d05385f674',1,'ir_Vestel.h']]], - ['kvestelaczerospace_7208',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], - ['kvoltasbitmark_7209',['kVoltasBitMark',['../ir__Voltas_8cpp.html#aff3e77a8712c4b9132a36b1909727906',1,'ir_Voltas.cpp']]], - ['kvoltasbits_7210',['kVoltasBits',['../IRremoteESP8266_8h.html#ad13056674d7d5fc530123ee1bb754409',1,'IRremoteESP8266.h']]], - ['kvoltascool_7211',['kVoltasCool',['../ir__Voltas_8h.html#a60ce895195221d1344db3b6bfded5422',1,'ir_Voltas.h']]], - ['kvoltasdry_7212',['kVoltasDry',['../ir__Voltas_8h.html#a3a89e1bb4d6f9b0371cb2b1a77f95aa0',1,'ir_Voltas.h']]], - ['kvoltasdrytemp_7213',['kVoltasDryTemp',['../ir__Voltas_8h.html#abb138aeb435b0583c09042f01d7eb42b',1,'ir_Voltas.h']]], - ['kvoltasfan_7214',['kVoltasFan',['../ir__Voltas_8h.html#a5a32539c5a10fb63d4df009968a1cc90',1,'ir_Voltas.h']]], - ['kvoltasfanauto_7215',['kVoltasFanAuto',['../ir__Voltas_8h.html#a68fc7bebcc711e8ca00c664e09f0aff9',1,'ir_Voltas.h']]], - ['kvoltasfanhigh_7216',['kVoltasFanHigh',['../ir__Voltas_8h.html#a6d217a662dd1c9353f3899b2be2dc269',1,'ir_Voltas.h']]], - ['kvoltasfanlow_7217',['kVoltasFanLow',['../ir__Voltas_8h.html#a3b84c9d78f23e694b25edddf5e5ac94a',1,'ir_Voltas.h']]], - ['kvoltasfanmed_7218',['kVoltasFanMed',['../ir__Voltas_8h.html#a0bf9ee213cf9266ea29b6813dc79e165',1,'ir_Voltas.h']]], - ['kvoltasfreq_7219',['kVoltasFreq',['../ir__Voltas_8cpp.html#abf1ddb4b962572b4a4aae323f02d91f1',1,'ir_Voltas.cpp']]], - ['kvoltasheat_7220',['kVoltasHeat',['../ir__Voltas_8h.html#a9f131121d8bff4112de9878be5ce0330',1,'ir_Voltas.h']]], - ['kvoltasmaxtemp_7221',['kVoltasMaxTemp',['../ir__Voltas_8h.html#a21a7e03f17b6daacd82037b892177724',1,'ir_Voltas.h']]], - ['kvoltasmintemp_7222',['kVoltasMinTemp',['../ir__Voltas_8h.html#a85f2d29327aa19177ea026a049c0fe52',1,'ir_Voltas.h']]], - ['kvoltasonespace_7223',['kVoltasOneSpace',['../ir__Voltas_8cpp.html#a5ad53f57f302eb44dfb773304c872018',1,'ir_Voltas.cpp']]], - ['kvoltasstatelength_7224',['kVoltasStateLength',['../IRremoteESP8266_8h.html#a336bd721135fc8b869941cd3aa73646e',1,'IRremoteESP8266.h']]], - ['kvoltasswinghchange_7225',['kVoltasSwingHChange',['../ir__Voltas_8h.html#a92242c38b240f5134e1a6c2200b6d0de',1,'ir_Voltas.h']]], - ['kvoltasswinghnochange_7226',['kVoltasSwingHNoChange',['../ir__Voltas_8h.html#acb66394dca0f3606066f61077444b0d3',1,'ir_Voltas.h']]], - ['kvoltaszerospace_7227',['kVoltasZeroSpace',['../ir__Voltas_8cpp.html#abcfc7887357e19c6d74b5befddfa7eb4',1,'ir_Voltas.cpp']]], - ['kwallstr_7228',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], - ['kweeklytimerstr_7229',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], - ['kwhirlpoolacalttempoffset_7230',['kWhirlpoolAcAltTempOffset',['../ir__Whirlpool_8h.html#a5cdc8be18d6489572d7c16dbbcc0c838',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacalttemppos_7231',['kWhirlpoolAcAltTempPos',['../ir__Whirlpool_8h.html#a019206ce06ef164cc3abb586183d0789',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacauto_7232',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacautotemp_7233',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacbitmark_7234',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacbits_7235',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacchecksumbyte1_7236',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacchecksumbyte2_7237',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacclockpos_7238',['kWhirlpoolAcClockPos',['../ir__Whirlpool_8h.html#ad624453fc485adaaa156bfde374208a4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommand6thsense_7239',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandfanspeed_7240',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandifeel_7241',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandlight_7242',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandmode_7243',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandofftimer_7244',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandontimer_7245',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpos_7246',['kWhirlpoolAcCommandPos',['../ir__Whirlpool_8h.html#a1a3bc2210991ccfd418a5137dc7e0aa8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpower_7247',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsleep_7248',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsuper_7249',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandswing_7250',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandtemp_7251',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccool_7252',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacdefaultrepeat_7253',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacdry_7254',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfan_7255',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanauto_7256',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanhigh_7257',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanlow_7258',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanmedium_7259',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanoffset_7260',['kWhirlpoolAcFanOffset',['../ir__Whirlpool_8h.html#a2cbca4b466aab8816efa70d1653bc895',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanpos_7261',['kWhirlpoolAcFanPos',['../ir__Whirlpool_8h.html#a02d5f4fe0837c9f9738cfb46f83c2ed9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfansize_7262',['kWhirlpoolAcFanSize',['../ir__Whirlpool_8h.html#ae26fab46c0f06c04f4d51b61e623873c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacgap_7263',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrmark_7264',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrspace_7265',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacheat_7266',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolachouroffset_7267',['kWhirlpoolAcHourOffset',['../ir__Whirlpool_8h.html#a8940e79b0e5b9f4bcf2a3e518cc59432',1,'ir_Whirlpool.h']]], - ['kwhirlpoolachoursize_7268',['kWhirlpoolAcHourSize',['../ir__Whirlpool_8h.html#ac50066e7e496cb7af6ecdb21cee7f2c9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaclightoffset_7269',['kWhirlpoolAcLightOffset',['../ir__Whirlpool_8h.html#a5a5fbcfa7f383fb72f96c414adea8966',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmaxtemp_7270',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmingap_7271',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacmintemp_7272',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacminuteoffset_7273',['kWhirlpoolAcMinuteOffset',['../ir__Whirlpool_8h.html#ae22595d5d1ffdc4c6b02080cd38d14d7',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacminutesize_7274',['kWhirlpoolAcMinuteSize',['../ir__Whirlpool_8h.html#a3a5cecc4480a1cb3da19f246902ab1d9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmodeoffset_7275',['kWhirlpoolAcModeOffset',['../ir__Whirlpool_8h.html#a662d0ab4b5f2b40bc2427e2b8d18351e',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmodepos_7276',['kWhirlpoolAcModePos',['../ir__Whirlpool_8h.html#a6a7e8449c00a260c1ef740ebc4a08d50',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacofftimerpos_7277',['kWhirlpoolAcOffTimerPos',['../ir__Whirlpool_8h.html#a48a18046ded6bae11cd87d41d615d05f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaconespace_7278',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacontimerpos_7279',['kWhirlpoolAcOnTimerPos',['../ir__Whirlpool_8h.html#ad10d9924f4d57547f7dc8ea085e1666f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacpowertoggleoffset_7280',['kWhirlpoolAcPowerToggleOffset',['../ir__Whirlpool_8h.html#a1db76f65f3f10e73a0fdee65850934a2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacpowertogglepos_7281',['kWhirlpoolAcPowerTogglePos',['../ir__Whirlpool_8h.html#a353f4f6101a152fdcfe7f13b8f8764d8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsections_7282',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacsleepoffset_7283',['kWhirlpoolAcSleepOffset',['../ir__Whirlpool_8h.html#a83961870cfae146cbb519560ff609fc3',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsleeppos_7284',['kWhirlpoolAcSleepPos',['../ir__Whirlpool_8h.html#a739f14122bce3a130d441bb0a47b4666',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacstatelength_7285',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacsupermask_7286',['kWhirlpoolAcSuperMask',['../ir__Whirlpool_8h.html#a1946501e50abd9e1c0a3e07007a98c24',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacsuperpos_7287',['kWhirlpoolAcSuperPos',['../ir__Whirlpool_8h.html#a68e051a102449fc6712f709b166a99b9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacswing1offset_7288',['kWhirlpoolAcSwing1Offset',['../ir__Whirlpool_8h.html#adeba9b215f8044e64df2bf805eecaa3b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacswing2offset_7289',['kWhirlpoolAcSwing2Offset',['../ir__Whirlpool_8h.html#a3290f0b70f3eafdd885d4a08c6d5d5a3',1,'ir_Whirlpool.h']]], - ['kwhirlpoolactemppos_7290',['kWhirlpoolAcTempPos',['../ir__Whirlpool_8h.html#a15a3ef7abed2fca2881d4f5ccc969522',1,'ir_Whirlpool.h']]], - ['kwhirlpoolactimerenableoffset_7291',['kWhirlpoolAcTimerEnableOffset',['../ir__Whirlpool_8h.html#ab4694ec5e153e41f6cf56920e2291970',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaczerospace_7292',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], - ['kwhynterbitmark_7293',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], - ['kwhynterbitmarkticks_7294',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], - ['kwhynterbits_7295',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], - ['kwhynterhdrmark_7296',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], - ['kwhynterhdrmarkticks_7297',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspace_7298',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspaceticks_7299',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlength_7300',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlengthticks_7301',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], - ['kwhyntermingap_7302',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], - ['kwhyntermingapticks_7303',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], - ['kwhynteronespace_7304',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], - ['kwhynteronespaceticks_7305',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], - ['kwhyntertick_7306',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], - ['kwhynterzerospace_7307',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], - ['kwhynterzerospaceticks_7308',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], - ['kwidestr_7309',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], - ['kwifistr_7310',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], - ['kxfanstr_7311',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], - ['kyesstr_7312',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], - ['kzepealbits_7313',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], - ['kzepealcommandoffon_7314',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], - ['kzepealcommandofftimer_7315',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], - ['kzepealcommandontimer_7316',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], - ['kzepealcommandrhythm_7317',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], - ['kzepealcommandspeed_7318',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], - ['kzepealfootermark_7319',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], - ['kzepealgap_7320',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], - ['kzepealhdrmark_7321',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], - ['kzepealhdrspace_7322',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], - ['kzepealminrepeat_7323',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], - ['kzepealonemark_7324',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], - ['kzepealonespace_7325',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], - ['kzepealsignature_7326',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], - ['kzepealtolerance_7327',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], - ['kzepealzeromark_7328',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], - ['kzepealzerospace_7329',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], - ['kzonefollowstr_7330',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_a.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_a.js deleted file mode 100644 index 8363bf06f..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_a.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['label_7331',['Label',['../structCoronaSection.html#abc6d0caa713c73244c4bf2f602074d48',1,'CoronaSection']]], - ['ledflag_7332',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['light_7333',['Light',['../unionGreeProtocol.html#a72092768725667d3bce381a6e2900c66',1,'GreeProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()'],['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()']]], - ['llword_7334',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['lword_7335',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_b.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_b.js deleted file mode 100644 index 7a05180f1..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_b.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['magnitude_7336',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], - ['max_7337',['Max',['../unionAmcorProtocol.html#a9e0ea99322601af4b09784da2cf21d7e',1,'AmcorProtocol::Max()'],['../unionArgoProtocol.html#ac3edf881406da0b9a253a7536ba3e810',1,'ArgoProtocol::Max()']]], - ['mode_7338',['Mode',['../unionAirwellProtocol.html#a4a12b674ee9dcdbca592a1c5f3deb43e',1,'AirwellProtocol::Mode()'],['../unionAmcorProtocol.html#a5eca17db0b0ac0a2a46d72eaa4b098f8',1,'AmcorProtocol::Mode()'],['../unionArgoProtocol.html#afac4337c33e8a2b8e12b84890121e00c',1,'ArgoProtocol::Mode()'],['../unionCarrierProtocol.html#a5fed7d2b743b55fb9a95293f026a9c24',1,'CarrierProtocol::Mode()'],['../unionCoronaProtocol.html#aad77fd87c02ef022da013116123d3531',1,'CoronaProtocol::Mode()'],['../unionDelonghiProtocol.html#a41b3aa93923059ec0bc099a592318ff0',1,'DelonghiProtocol::Mode()'],['../unionGreeProtocol.html#aacd25e508a37e0012295a87e712987ce',1,'GreeProtocol::Mode()'],['../unionHaierProtocol.html#aab10d402084329d472e08385cc9645ec',1,'HaierProtocol::Mode()'],['../unionHaierYRW02Protocol.html#a8b9060ce2e0b1e9192191e6ae68277dd',1,'HaierYRW02Protocol::Mode()'],['../unionMideaProtocol.html#aa0255e9e1351d594b2e2c8c6f9698e1a',1,'MideaProtocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()'],['../structstdAc_1_1state__t.html#ae5e4b17fac2ea36300f796670337d7a7',1,'stdAc::state_t::mode()']]], - ['model_7339',['model',['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t']]], - ['modela_7340',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]], - ['modulation_7341',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_c.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_c.js deleted file mode 100644 index 8704b7904..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_c.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['next_7342',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]], - ['night_7343',['Night',['../unionArgoProtocol.html#a6dbfb2137f0e64a65e3aa45a50485fbe',1,'ArgoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_d.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_d.js deleted file mode 100644 index fae43e519..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_d.js +++ /dev/null @@ -1,22 +0,0 @@ -var searchData= -[ - ['offhours_7344',['OffHours',['../unionDelonghiProtocol.html#ae699f25608c0f66aafaf7cb50e9c0258',1,'DelonghiProtocol::OffHours()'],['../unionHaierProtocol.html#aecaad31185de1e7843047a9b9194d55b',1,'HaierProtocol::OffHours()']]], - ['offmins_7345',['OffMins',['../unionDelonghiProtocol.html#a0d0acd3e8c1ccd190076db4287251096',1,'DelonghiProtocol::OffMins()'],['../unionHaierProtocol.html#a6eec6ff574e93f327ca567251b37e33b',1,'HaierProtocol::OffMins()']]], - ['offtimeperiod_7346',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], - ['offtimer_7347',['OffTimer',['../unionCarrierProtocol.html#a42fcd3b5c796076fa372985b3b1cd473',1,'CarrierProtocol::OffTimer()'],['../unionDelonghiProtocol.html#a0f27d98df3895d7cf8fef26602a2ea1d',1,'DelonghiProtocol::OffTimer()'],['../unionHaierProtocol.html#a6f3893711bffc1d59d8e3d76e7a954a2',1,'HaierProtocol::OffTimer()']]], - ['offtimer12hr_7348',['OffTimer12Hr',['../unionVoltasProtocol.html#a6d55446514c9a0209209504de336a0b5',1,'VoltasProtocol']]], - ['offtimerenable_7349',['OffTimerEnable',['../unionCarrierProtocol.html#a15e27c0710c706b2f1e8227a962fc722',1,'CarrierProtocol::OffTimerEnable()'],['../unionVoltasProtocol.html#a415a13e7722786f41b33c1db78771c8e',1,'VoltasProtocol::OffTimerEnable()']]], - ['offtimerhrs_7350',['OffTimerHrs',['../unionVoltasProtocol.html#aeef99d8c93860c34eb08f1c591d1da9f',1,'VoltasProtocol']]], - ['offtimermins_7351',['OffTimerMins',['../unionVoltasProtocol.html#a243f1a105ba96c4830d0b4ce66a75a4e',1,'VoltasProtocol']]], - ['onhours_7352',['OnHours',['../unionDelonghiProtocol.html#af5cd29dcc62aa712c9754b9729e528bb',1,'DelonghiProtocol::OnHours()'],['../unionHaierProtocol.html#af08311ee6680b3a6951bd200e2b8f310',1,'HaierProtocol::OnHours()']]], - ['onmins_7353',['OnMins',['../unionDelonghiProtocol.html#ace54d8cccf1885084f8c641d234b15fe',1,'DelonghiProtocol::OnMins()'],['../unionHaierProtocol.html#a65fe65bdfb819fec434eba573daccc34',1,'HaierProtocol::OnMins()']]], - ['ontimeperiod_7354',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], - ['ontimer_7355',['OnTimer',['../unionCarrierProtocol.html#a8b66fd8c444395f14d663000ea5a27ee',1,'CarrierProtocol::OnTimer()'],['../unionDelonghiProtocol.html#a742d638f420f489e67f03c98fab3cd9d',1,'DelonghiProtocol::OnTimer()'],['../unionHaierProtocol.html#ae5c9fd1397bcf3c6737c38d8e76682b1',1,'HaierProtocol::OnTimer()']]], - ['ontimer12hr_7356',['OnTimer12Hr',['../unionVoltasProtocol.html#a600e00d4c64841f9ce11490197bfbc0d',1,'VoltasProtocol']]], - ['ontimerenable_7357',['OnTimerEnable',['../unionCarrierProtocol.html#aadf3236a9a5883fc7f263516be951e0c',1,'CarrierProtocol::OnTimerEnable()'],['../unionVoltasProtocol.html#a26f169f663b7cbac7e6235b7320929da',1,'VoltasProtocol::OnTimerEnable()']]], - ['ontimerhrs_7358',['OnTimerHrs',['../unionVoltasProtocol.html#ad38a8a291f71ccb4c34363c4662994d6',1,'VoltasProtocol']]], - ['ontimermins_7359',['OnTimerMins',['../unionVoltasProtocol.html#a38cb13bbd23b5680bcdbfcf5b2223a71',1,'VoltasProtocol']]], - ['outputoff_7360',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], - ['outputon_7361',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], - ['overflow_7362',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_e.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_e.js deleted file mode 100644 index bfaa2c218..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_e.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['padding_7363',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['periodoffset_7364',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['power_7365',['Power',['../unionAmcorProtocol.html#ab6d6b470c8e3c80ee37eb31a048919db',1,'AmcorProtocol::Power()'],['../unionArgoProtocol.html#a72c5dbd39ccbac31d5cfc39beaa87d92',1,'ArgoProtocol::Power()'],['../unionCarrierProtocol.html#a9f039bf33bbe868118f14c28d6731718',1,'CarrierProtocol::Power()'],['../unionCoronaProtocol.html#a7da68dc07f9ef4ab0545e9156f9408c4',1,'CoronaProtocol::Power()'],['../unionDelonghiProtocol.html#a5dccd7aa1927571e12d4244e1c179578',1,'DelonghiProtocol::Power()'],['../unionGreeProtocol.html#ab04d1d5bdaf8fb0b7129e210de14a772',1,'GreeProtocol::Power()'],['../unionHaierYRW02Protocol.html#ae87a93806911792662391a671607a760',1,'HaierYRW02Protocol::Power()'],['../unionMideaProtocol.html#a6b534bb5845c3c184ee43b87995cff32',1,'MideaProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()'],['../structstdAc_1_1state__t.html#ab85d37cc99bbbc4915331369c4ea622e',1,'stdAc::state_t::power()']]], - ['powerbutton_7366',['PowerButton',['../unionCoronaProtocol.html#abceccc1306d3a78be6177758f3056a5a',1,'CoronaProtocol']]], - ['powerflag_7367',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC::powerFlag()'],['../classIRTranscoldAc.html#a07e96c352827f011a1a2440f35d78d14',1,'IRTranscoldAc::powerFlag()']]], - ['powertoggle_7368',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol']]], - ['prefix_7369',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['prev_5fmode_7370',['prev_mode',['../classIRToshibaAC.html#ac251884741fb8ad8280b55e99c23211e',1,'IRToshibaAC']]], - ['protocol_7371',['protocol',['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_f.js b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_f.js deleted file mode 100644 index 27c100998..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/search/variables_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['quiet_7372',['quiet',['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.map b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.map deleted file mode 100644 index d30169309..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 deleted file mode 100644 index 422448560..000000000 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c338a3dd4214c4a8908a197a3e7df51b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.github/CONTRIBUTING.md b/lib/lib_basic/IRremoteESP8266-2.7.12/.github/CONTRIBUTING.md similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.github/CONTRIBUTING.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/.github/CONTRIBUTING.md diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.github/Contributors.md b/lib/lib_basic/IRremoteESP8266-2.7.12/.github/Contributors.md similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.github/Contributors.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/.github/Contributors.md diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.github/issue_template.md b/lib/lib_basic/IRremoteESP8266-2.7.12/.github/issue_template.md similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.github/issue_template.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/.github/issue_template.md diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.gitignore b/lib/lib_basic/IRremoteESP8266-2.7.12/.gitignore similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.gitignore rename to lib/lib_basic/IRremoteESP8266-2.7.12/.gitignore diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.gitmodules b/lib/lib_basic/IRremoteESP8266-2.7.12/.gitmodules similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.gitmodules rename to lib/lib_basic/IRremoteESP8266-2.7.12/.gitmodules diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.style.yapf b/lib/lib_basic/IRremoteESP8266-2.7.12/.style.yapf similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.style.yapf rename to lib/lib_basic/IRremoteESP8266-2.7.12/.style.yapf diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/.travis.yml b/lib/lib_basic/IRremoteESP8266-2.7.12/.travis.yml similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/.travis.yml rename to lib/lib_basic/IRremoteESP8266-2.7.12/.travis.yml diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/CPPLINT.cfg b/lib/lib_basic/IRremoteESP8266-2.7.12/CPPLINT.cfg similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/CPPLINT.cfg rename to lib/lib_basic/IRremoteESP8266-2.7.12/CPPLINT.cfg diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/Doxyfile b/lib/lib_basic/IRremoteESP8266-2.7.12/Doxyfile similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/Doxyfile rename to lib/lib_basic/IRremoteESP8266-2.7.12/Doxyfile diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/LICENSE.txt b/lib/lib_basic/IRremoteESP8266-2.7.12/LICENSE.txt similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/LICENSE.txt rename to lib/lib_basic/IRremoteESP8266-2.7.12/LICENSE.txt diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/README.md b/lib/lib_basic/IRremoteESP8266-2.7.12/README.md similarity index 98% rename from lib/lib_basic/IRremoteESP8266-2.7.11/README.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/README.md index bfcb48d98..cccb4aba9 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/README.md +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/README.md @@ -9,8 +9,8 @@ This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an [ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc. -## v2.7.11 Now Available -Version 2.7.11 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. +## v2.7.12 Now Available +Version 2.7.12 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. #### Upgrading from pre-v2.0 Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/lib_basic/IRremoteESP8266-2.7.12/README_de.md b/lib/lib_basic/IRremoteESP8266-2.7.12/README_de.md new file mode 100644 index 000000000..deac7b630 --- /dev/null +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/README_de.md @@ -0,0 +1,80 @@ +# IRremoteESP8266 Library + +[![Build-Status](https://travis-ci.org/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.org/crankyoldgit/IRremoteESP8266) +[![Arduino-Bibliothek-Abzeichen](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) +[![Durchschnittliche Zeit bis zur Problemlösung](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Resolution Time") +[![Prozentsatz der offenen Probleme](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Open issues") +[![Git-Lizenz](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) + +Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarotsignalen mit [ESP8266](https://github.com/esp8266/Arduino)- und +[ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs undIR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren. + +## v2.7.12 jetzt verfügbar +Version 2.7.12 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen. + +#### Hinweis für Nutzer von Versionen vor v2.0 +Die Benutzung der Bibliothek hat sich mit Version 2.0 leicht geändert. Einige Anpassungen im aufrufenden Code werden nötig sein, um mit Version ab 2.0 korrekt zu funktionieren. Mehr zu den Anpassungen finden sich auf unserer [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0)-Seite. + +#### Hinweis für Nutzer von Versionen vor v2.5 +Die Bibliothek benutzt zur Konstantendefinition nun statt `#define` den [const](https://google.github.io/styleguide/cppguide.html#Constant_Names)-Ansatz mit der Benennung in Einklang mit dem [C++-Style-Guide](https://google.github.io/styleguide/cppguide.html). +Dies kann eventuell dazu führen, daß sich ältere Programme nicht mehr kompilieren lassen. +Die mutmaßlich am häufigsten extern verwendeten `#define`s wurden daher ge_aliased_, um eine gewisse Rückwärts-Kompatibilität zu gewährleisten. In künftigen Protokollimplementationen wird nur noch der neue `kConstantName`-Stil unterstützt werden. + +Falls die Änderungen dazu geführt haben, daß der aufrufende Code nicht mehr funktioniert, wurde vermutlich etwas referenziert, was nicht referenziert werden sollte. Den neuen Kontanten-Namen herauszufinden sollte nach der Form `CONSTANT_NAME` nach `kConstantName` leicht möglich sein. +Etwas gesunder Menschenverstand oder ein Blick in den Bibliotheksquellcode helfen, falls aufrufender Code betroffen ist. + +## Unterstützte Protokolle +Details zu den unterstützten Protokollen und Geräten befinden sich [hier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). + +## Fehlersuche +Bitte erst den [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) lesen, bevor Probleme gemeldet werden oder um Hilfe gebeten wird. + +## FAQ - häufige Fragen +Einige Antworten zu häufig gestellten Fragen sind auf unserer [F.A.Q. Wiki-Seite](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions) hinterlegt. + +## Library API-Dokumentation +Diese Bibliothek benutzt [Doxygen](https://www.doxygen.nl/index.html) zur [automatischen Dokumentation](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) der [API](https://en.wikipedia.org/wiki/Application_programming_interface) dieser [Bibliothek](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). +Sie ist [hier](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) zu finden. + +## Installation +##### Installation von offiziellen Releases über die Arduino-IDE v1.8+ (Windows & Linux) +1. Das Untermenü _"Sketch"_ -> _"Bibliothek einbinden"_ -> _"Bibliotheken verwalten..."_ aufrufen. +1. In das Suchfeld oben rechts (_"Grenzen Sie Ihre Suche ein..."_) `IRremoteESP8266` eintragen. +1. Bei den Suchergebnissen IRremoteESP8266 auswählen. +1. Die Version markieren, die installiert werden soll, und dann _"Installieren"_ klicken. + +##### Manuelle Installation (Windows) +1. Auf der Website auf den grünen _"Code"_-Knopf klicken, dann _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ auswählen. +1. Die heruntergeladene Zip-Datei entpacken. +1. Den entpackten Dateiordner in _"IRremoteESP8266"_ umbenennen. +1. Diesen Ordner anschließend in den Bibliotheken-Pfad verschieben. (Unter Windows: `C:\Users\BENUTZER\Dokumente\Arduino\libraries\`) +1. Die Arduino-IDE neu starten. +1. Unter den Beispielen finden sich neue Einträge. + +##### Benutzung von Git für die Installation der Bibliothek (Linux) +``` +cd ~/Arduino/libraries +git clone https://github.com/crankyoldgit/IRremoteESP8266.git +``` +###### Um die neueste Version der Bibliothek zu beziehen +``` +cd ~/Arduino/libraries/IRremoteESP8266 && git pull +``` + +## Mithelfen +Anregungen für die [Mithilfe](.github/CONTRIBUTING.md#how-can-i-contribute) am Projekt: +- Das [Melden](.github/CONTRIBUTING.md#reporting-bugs) von Bugs und Fehlern +- Das Einreichen von Verbesserungs- und Erweiterungsvorschlägen +- Das Erstellen und Verbessern der Dokumentation +- Das [Melden von Problemen](.github/CONTRIBUTING.md#reporting-bugs) und Einreichen von [Pull-Requests](.github/CONTRIBUTING.md#pull-requests) +- Anderen Leuten von dieser Bibliothek erzählen + +## Beitragende +Die Beitragenden sind [hier](.github/Contributors.md) aufgelistet. + +## Historie der Bibliothek +Diese Bibliothek basiert auf Ken Shirriff's Vorarbeit (https://github.com/shirriff/Arduino-IRremote/). + +[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) programmierte die IRsend-Klassen auf ESP8266 und [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) war verantwortlich für die Empfangs- und Dekodier-Teile (IRrecv-Klassen). + +Die Bibliothek wurde ab Version v2.0 fast komplett neu geschrieben, um besser auf die ESP8266-Ressourcen Rücksicht zu nehmen. diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/README_fr.md b/lib/lib_basic/IRremoteESP8266-2.7.12/README_fr.md similarity index 98% rename from lib/lib_basic/IRremoteESP8266-2.7.11/README_fr.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/README_fr.md index 69ea67b9f..a9d5e96ba 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/README_fr.md +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/README_fr.md @@ -9,8 +9,8 @@ Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole [ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc. -## v2.7.11 disponible -Version 2.7.11 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. +## v2.7.12 disponible +Version 2.7.12 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. #### mise à jour depuis pre-v2.0 L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/ReleaseNotes.md b/lib/lib_basic/IRremoteESP8266-2.7.12/ReleaseNotes.md similarity index 96% rename from lib/lib_basic/IRremoteESP8266-2.7.11/ReleaseNotes.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/ReleaseNotes.md index 012f16527..5daf951be 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/ReleaseNotes.md +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/ReleaseNotes.md @@ -1,5 +1,36 @@ # Release Notes +## _v2.7.12 (20201113)_ + +**[Bug Fixes]** +- `defaultBits()` returned incorrect result for `PANASONIC_AC` (#1307 #1314) +- Fix LG2 timings and refactor `decodeLG()` (#1298 #1304) + +**[Features]** +- Midea: Add support for "Follow Me"/Sensor, Turbo, Light, & Timers (#1318 #1327) +- SharpAc: Add model support for A705 (#1309 #1313) +- Add basic support for Panasonic A/C 32bit/16bit protocol. (#1307 #1316) +- Add support for Elite Screens protocol. (#1306 #1310) +- IRrecvDumpV2+: Add tolerance setting. (#1292) +- Add basic support for the Mirage Protocol. (#1289 #1291) +- Internationalisation Support + - pt-BR: Add Portuguese/Brazilian support. (#1303) + - de-DE: Backfill missing strings (#1294) + - de-DE: update for recent addition of 'tolerance' (#1293) + - de-DE: Translate root README.md into German (#1297) + +**[Misc]** +- refactor ir_LG (#1325) +- refactor ir_Kelvinator (#1317) +- refactor ir_Hitachi (#1308) +- refactor ir_Goodweather (#1295) +- refactor ir_Electra (#1290) +- refactor ir_Daikin (#1288) +- Update Kaysun supported models. (#1322) +- fix typos/spelling mistakes (#1301) +- Add some missing Doxygen class/data-type descriptions. (#1287) + + ## _v2.7.11 (20201002)_ **[Features]** diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/SupportedProtocols.md b/lib/lib_basic/IRremoteESP8266-2.7.12/SupportedProtocols.md similarity index 90% rename from lib/lib_basic/IRremoteESP8266-2.7.11/SupportedProtocols.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/SupportedProtocols.md index e8bf0cd49..7f0cb7d23 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/SupportedProtocols.md +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/SupportedProtocols.md @@ -1,6 +1,6 @@ + Last generated: Fri 13 Nov 2020 09:17:37 +0000 ---> # IR Protocols supported by this library | Protocol | Brand | Model | A/C Model | Detailed A/C Support | @@ -12,6 +12,8 @@ | [Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.cpp) | **[Carrier/Surrey](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.h)** | 42QG5A55970 remote
      53NGK009/012 Inverter
      619EGX0090E0 A/C
      619EGX0120E0 A/C
      619EGX0180E0 A/C
      619EGX0220E0 A/C | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RC08B remote | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C
      RG57K7(B)/BGEF Remote | | Yes | +| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Kastron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RG57A7/BGEF Inverter remote | | Yes | +| [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Kaysun](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | Casual CF A/C | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | MS12FU-10HRDN1-QRD0GW(B) A/C
      MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
      RG52D/BGE Remote | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Tokio](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | Yes | | [Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.cpp) | **[Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.h)** | AR-01 remote
      CSH-N2211 A/C
      CSH-N2511 A/C
      CSH-N2811 A/C
      CSH-N4011 A/C | | Yes | @@ -22,6 +24,7 @@ | [Doshisha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Doshisha.cpp) | **Doshisha** | CZ-S32D LED Light
      CZ-S38D LED Light
      CZ-S50D LED Light
      RCZ01 remote | | - | | [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[AUX](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | KFR-35GW/BpNFW=3 A/C
      YKR-T/011 remote | | Yes | | [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Classic INV 17 / AXW12DCS A/C
      YKR-M/003E remote | | Yes | +| [EliteScreens](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_EliteScreens.cpp) | **Elite Screens** | CineTension2 / CineTension3 series
      Home2 / Home3 series
      Spectrum series
      VMAX Plus4 series
      VMAX2 / VMAX2 Plus series
      ZSP-IR-B / ZSP-IR-W remote | | - | | [Epson](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Epson.cpp) | **Epson** | EN-TW9100W Projector | | - | | [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AGTV14LAC A/C (ARRAH2E)
      AR-DB1 remote (ARDB1)
      AR-DL10 remote (ARDB1)
      AR-RAC1E remote (ARRAH2E)
      AR-RAE1E remote (ARRAH2E)
      AR-RAH2E remote (ARRAH2E)
      AR-REB1E remote (ARREB1E)
      AR-RY4 remote (ARRY4)
      AST9RSGCW A/C (ARDB1)
      ASTB09LBC A/C (ARRY4)
      ASU30C1 A/C (ARDB1)
      ASYG30LFCA A/C (ARRAH2E)
      ASYG7LMCA A/C (ARREB1E) | ARDB1
      ARJW2
      ARRAH2E
      ARREB1E
      ARRY4 | Yes | | [Fujitsu](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.cpp) | **[Fujitsu General](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Fujitsu.h)** | AOHG09LLC A/C (ARRAH2E)
      AR-JW2 remote (ARJW2)
      AR-RCE1E remote (ARRAH2E)
      ASHG09LLCA A/C (ARRAH2E) | ARDB1
      ARJW2
      ARRAH2E
      ARREB1E
      ARRY4 | Yes | @@ -49,9 +52,12 @@ | [Metz](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Metz.cpp) | **Metz** | CH610 TV
      RM16 remote
      RM17 remote
      RM19 remote | | - | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Comfee](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | MPD1-12CRN7 A/C (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Danby](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | DAC080BGUWDB (MIDEA)
      DAC100BGUWDB (MIDEA)
      DAC120BGUWDB (MIDEA)
      R09C/BCGE remote (MIDEA) | | Yes | +| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Kaysun](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | Casual CF A/C (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Keystone](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57H4(B)BGEF remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | FS40-7AR Stand Fan (MIDEA24) | | Yes | +| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[MrCool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57A6/BGEFU1 remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
      RYBO12GMFILCAD A/C (12K BTU) (MIDEA) | | Yes | +| [Mirage](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.cpp) | **Mirage** | VLU series A/C | | - | | [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector (MITSUBISHI2)
      KM14A 0179213 remote
      MS-GK24VA A/C
      TV (MITSUBISHI) | | Yes | | [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
      KPOA remote (MITSUBISHI112)
      MSH-A24WV A/C (MITSUBISHI112)
      MUH-A24WV A/C (MITSUBISHI112)
      PEAD-RP71JAA Ducted A/C (MITSUBISHI136) | | Yes | | [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote (88 bit)
      RLA502A700B remote (152 bit)
      SRKxxZJ-S A/C (88 bit)
      SRKxxZM-S A/C (152 bit)
      SRKxxZMXA-S A/C (152 bit) | | Yes | @@ -64,14 +70,14 @@ | [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C
      ZH/TY-01 remote | | Yes | | [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Soleus Air](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | TTWM1-10-01 A/C
      ZCF/TL-05 remote | | Yes | | [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Nikai** | Unknown LCD TV | | - | -| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2311 remote (PANASONIC_AC CKP/5)
      A75C2616-1 remote (PANASONIC_AC DKE/3)
      A75C3704 remote (PANASONIC_AC DKE/3)
      A75C3747 remote (PANASONIC_AC JKE/4)
      CKP series A/C (PANASONIC_AC CKP/5)
      CS-E7PKR A/C (PANASONIC_AC DKE/2)
      CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
      CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
      CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
      CS-YW9MKD A/C (PANASONIC_AC JKE/4)
      CS-Z9RKR A/C (PANASONIC_AC RKR/6)
      DKE series A/C (PANASONIC_AC DKE/3)
      DKW series A/C (PANASONIC_AC DKE/3)
      JKE series A/C (PANASONIC_AC JKE/4)
      NKE series A/C (PANASONIC_AC NKE/2)
      PKR series A/C (PANASONIC_AC DKE/3)
      RKR series A/C (PANASONIC_AC RKR/6)
      TV (PANASONIC) | CKP
      DKE
      JKE
      LKE
      NKE
      RKR | Yes | +| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2295 remote (PANASONIC_AC32)
      A75C2311 remote (PANASONIC_AC CKP/5)
      A75C2616-1 remote (PANASONIC_AC DKE/3)
      A75C3704 remote (PANASONIC_AC DKE/3)
      A75C3747 remote (PANASONIC_AC JKE/4)
      CKP series A/C (PANASONIC_AC CKP/5)
      CS-E7PKR A/C (PANASONIC_AC DKE/2)
      CS-E9CKP series A/C (PANASONIC_AC32)
      CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
      CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
      CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
      CS-YW9MKD A/C (PANASONIC_AC JKE/4)
      CS-Z9RKR A/C (PANASONIC_AC RKR/6)
      DKE series A/C (PANASONIC_AC DKE/3)
      DKW series A/C (PANASONIC_AC DKE/3)
      JKE series A/C (PANASONIC_AC JKE/4)
      NKE series A/C (PANASONIC_AC NKE/2)
      PKR series A/C (PANASONIC_AC DKE/3)
      RKR series A/C (PANASONIC_AC RKR/6)
      TV (PANASONIC) | CKP
      DKE
      JKE
      LKE
      NKE
      RKR | Yes | | [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Pioneer** | AV Receivers
      AXD7690 Remote
      VSX-324 AV Receiver | | - | | [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Pronto** | Pronto Hex | | - | | [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Philips** | RC-5X (RC5X)
      Standard RC-5 (RC5)
      Standard RC-6 (RC6) | | - | | [RCMM](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RCMM.cpp) | **Microsoft** | XBOX 360 | | - | | [Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.cpp) | **[Samsung](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Samsung.h)** | AH59-02692E Soundbar remote (SAMSUNG36)
      AK59-00167A Bluray remote (SAMSUNG36)
      AR09FSSDAWKNFA A/C (SAMSUNG_AC)
      AR12HSSDBWKNEU A/C (SAMSUNG_AC)
      AR12KSFPEWQNET A/C (SAMSUNG_AC)
      AR12NXCXAWKXEU A/C (SAMSUNG_AC)
      BN59-01178B TV remote (SAMSUNG)
      DB63-03556X003 remote
      DB93-16761C remote
      HW-J551 Soundbar (SAMSUNG36)
      IEC-R03 remote
      UA55H6300 TV (SAMSUNG) | | Yes | | [Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.cpp) | **[Sanyo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sanyo.h)** | LC7461 transmitter IC (SANYO_LC7461)
      RCS-2HS4E remote (SANYO_AC)
      RCS-2S4E remote (SANYO_AC)
      SA 8650B - disabled
      SAP-K121AHA A/C (SANYO_AC)
      SAP-K242AH A/C (SANYO_AC) | | Yes | -| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C
      AH-XP10NRY A/C
      AY-ZP40KR A/C
      CRMC-820JBEZ remote
      CRMC-A907 JBEZ remote
      LC-52D62U TV | | Yes | +| [Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sharp.h)** | AH-AxSAY A/C (A907)
      AH-XP10NRY A/C (A907)
      AY-ZP40KR A/C (A907)
      CRMC-820 JBEZ remote (A907)
      CRMC-A705 JBEZ remote (A705)
      CRMC-A907 JBEZ remote (A907)
      LC-52D62U TV | A705
      A907 | Yes | | [Sherwood](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sherwood.cpp) | **Sherwood** | RC-138 remote
      RD6505(B) Receiver | | - | | [Sony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Sony.cpp) | **Sony** | HT-CT380 Soundbar (Uses 38kHz & 3 repeats) | | - | | [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Blyss** | Owen-SW-5 3 Fan
      WP-YK8 090218 remote | | - | @@ -127,6 +133,7 @@ - DISH - DOSHISHA - ELECTRA_AC +- ELITESCREENS - EPSON - FUJITSU_AC - GICABLE @@ -152,6 +159,7 @@ - METZ - MIDEA - MIDEA24 +- MIRAGE - MITSUBISHI - MITSUBISHI112 - MITSUBISHI136 @@ -167,6 +175,7 @@ - NIKAI - PANASONIC - PANASONIC_AC +- PANASONIC_AC32 - PIONEER - RC5 - RC5X diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/README.md b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/README.md similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/README.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/README.md diff --git a/lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_de.md b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_de.md new file mode 100644 index 000000000..4ef3bccc5 --- /dev/null +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_de.md @@ -0,0 +1,59 @@ +# IRremoteESP8266 Library + +Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarot-Signalen mit [ESP8266](https://github.com/esp8266/Arduino)- oder [ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs und IR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren. + +## Unterstützte Protokolle +Details zu den unterstützten Protokollen und Geräten befinden sich [hier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). + +## Fehlersuche +Bitte erst den [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) lesen, bevor Probleme gemeldet werden oder um Hilfe gebeten wird. + +## FAQ - häufige Fragen +Einige Antworten zu häufig gestellten Fragen sind auf unserer [F.A.Q. Wiki-Seite](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions) hinterlegt. + +## Library API-Dokumentation +Diese Bibliothek benutzt [Doxygen](https://www.doxygen.nl/index.html) zur [automatischen Dokumentation](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) der [API](https://en.wikipedia.org/wiki/Application_programming_interface) dieser [Bibliothek](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). +Sie ist [hier](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) zu finden. + +## Installation +##### Installation von offiziellen Releases über die Arduino-IDE v1.8+ (Windows & Linux) +1. Das Untermenü _"Sketch"_ -> _"Bibliothek einbinden"_ -> _"Bibliotheken verwalten..."_ aufrufen. +1. In das Suchfeld oben rechts (_"Grenzen Sie Ihre Suche ein..."_) `IRremoteESP8266` eintragen. +1. Bei den Suchergebnissen IRremoteESP8266 auswählen. +1. Die Version markieren, die installiert werden soll, und dann _"Installieren"_ klicken. + +##### Manuelle Installation (Windows) +1. Auf der Website auf den grünen _"Code"_-Knopf klicken, dann _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ auswählen. +1. Die heruntergeladene Zip-Datei entpacken. +1. Den entpackten Dateiordner in _"IRremoteESP8266"_ umbenennen. +1. Diesen Ordner anschließend in den Bibliotheken-Pfad verschieben. (Unter Windows: `C:\Users\BENUTZER\Dokumente\Arduino\libraries\`) +1. Die Arduino-IDE neu starten. +1. Unter den Beispielen finden sich neue Einträge. + +##### Benutzung von Git für die Installation der Bibliothek (Linux) +``` +cd ~/Arduino/libraries +git clone https://github.com/crankyoldgit/IRremoteESP8266.git +``` +###### Um die neueste Version der Bibliothek zu beziehen +``` +cd ~/Arduino/libraries/IRremoteESP8266 && git pull +``` + +## Mithelfen +Anregungen für die [Mithilfe](.github/CONTRIBUTING.md#how-can-i-contribute) am Projekt: +- Das [Melden](.github/CONTRIBUTING.md#reporting-bugs) von Bugs und Fehlern +- Das Einreichen von Verbesserungs- und Erweiterungsvorschlägen +- Das Erstellen und Verbessern der Dokumentation +- Das [Melden von Problemen](.github/CONTRIBUTING.md#reporting-bugs) und Einreichen von [Pull-Requests](.github/CONTRIBUTING.md#pull-requests) +- Anderen Leuten von dieser Bibliothek erzählen + +## Beitragende +Die Beitragenden sind [hier](.github/Contributors.md) aufgelistet. + +## Historie der Bibliothek +Diese Bibliothek basiert auf Ken Shirriff's Vorarbeit (https://github.com/shirriff/Arduino-IRremote/). + +[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) programmierte die IRsend-Klassen auf ESP8266 und [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) war verantwortlich für die Empfangs- und Dekodier-Teile (IRrecv-Klassen). + +Die Bibliothek wurde ab Version v2.0 fast komplett neu geschrieben, um besser auf die ESP8266-Ressourcen Rücksicht zu nehmen. diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/README_fr.md b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_fr.md similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/README_fr.md rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/README_fr.md diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/_config.yml b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/_config.yml similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/_config.yml rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/_config.yml diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8cpp.html similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8cpp.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8cpp.html diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8h.html similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8h.html diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8h_source.html similarity index 96% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8h_source.html index a7b1ad1a7..8d6a4beb0 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRac_8h_source.html +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRac_8h_source.html @@ -364,11 +364,11 @@ $(function() {
      294  const float degrees, const stdAc::fanspeed_t fan);
      295 #endif // SEND_LG
      296 #if SEND_MIDEA
      -
      297  void midea(IRMideaAC *ac,
      +
      297  void midea(IRMideaAC *ac,
      298  const bool on, const stdAc::opmode_t mode, const bool celsius,
      299  const float degrees, const stdAc::fanspeed_t fan,
      -
      300  const stdAc::swingv_t swingv, const bool econo,
      -
      301  const int16_t sleep = -1);
      +
      300  const stdAc::swingv_t swingv, const bool turbo, const bool econo,
      +
      301  const bool light, const int16_t sleep = -1);
      302 #endif // SEND_MIDEA
      303 #if SEND_MITSUBISHI_AC
      304  void mitsubishi(IRMitsubishiAC *ac,
      @@ -440,11 +440,11 @@ $(function() {
      370  const bool beep, const int16_t sleep = -1);
      371 #endif // SEND_SANYO_AC
      372 #if SEND_SHARP_AC
      -
      373  void sharp(IRSharpAc *ac,
      +
      373  void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
      374  const bool on, const bool prev_power, const stdAc::opmode_t mode,
      375  const float degrees, const stdAc::fanspeed_t fan,
      -
      376  const stdAc::swingv_t swingv, const bool turbo, const bool filter,
      -
      377  const bool clean);
      +
      376  const stdAc::swingv_t swingv, const bool turbo, const bool light,
      +
      377  const bool filter, const bool clean);
      378 #endif // SEND_SHARP_AC
      379 #if SEND_TCL112AC
      380  void tcl112(IRTcl112Ac *ac,
      @@ -518,151 +518,153 @@ $(function() {
      449 } // namespace IRAcUtils
      450 #endif // IRAC_H_

    U2Kr5~mpliOQ9g=|ds0u@Rm6 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

  • bhG;=;?fy4BdB@qZ)!#oH6tf$Qk}b+R2SsC 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%0D))|?~k1VWFo^Nh}66NKH{DJrwp{Ok&_s<%22tm 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 z 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�}olo3X`_sseQUXptJvHP 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

    -
    Class for handling detailed Panasonic A/C messages.
    Definition: ir_Panasonic.h:98
    +
    Class for handling detailed Panasonic A/C messages.
    Definition: ir_Panasonic.h:100
    void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
    Send an Airwell A/C message with the supplied settings.
    Definition: IRac.cpp:299
    Support for Kelvinator A/C protocols.
    Class for handling detailed Samsung A/C messages.
    Definition: ir_Samsung.h:97
    void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
    Send a Hitachi A/C message with the supplied settings.
    Definition: IRac.cpp:1070
    Class for handling detailed Toshiba A/C messages.
    Definition: ir_Toshiba.h:100
    -
    decode_type_t
    Enumerator for defining and numbering of supported IR protocol.
    Definition: IRremoteESP8266.h:750
    +
    decode_type_t
    Enumerator for defining and numbering of supported IR protocol.
    Definition: IRremoteESP8266.h:771
    stdAc::state_t getStatePrev(void)
    Get the previous internal A/C climate state that should have already been sent to the device....
    Definition: IRac.cpp:133
    stdAc::state_t getState(void)
    Get the current internal A/C climate state.
    Definition: IRac.cpp:128
    Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
    Definition: ir_MitsubishiHeavy.h:133
    -
    static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2772
    +
    static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2788
    +
    void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool filter, const bool clean)
    Send a Sharp A/C message with the supplied settings.
    Definition: IRac.cpp:1688
    void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
    Send a Hitachi 344-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1146
    Support for Electra A/C protocols.
    -
    void markAsSent(void)
    Update the previous state to the current one.
    Definition: IRac.cpp:2635
    +
    void markAsSent(void)
    Update the previous state to the current one.
    Definition: IRac.cpp:2651
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
    void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Daikin2 A/C message with the supplied settings.
    Definition: IRac.cpp:688
    Support for Trotec protocols.
    -
    void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
    Send a Toshiba A/C message with the supplied settings.
    Definition: IRac.cpp:1642
    -
    Class for handling detailed Daikin 280-bit A/C messages.
    Definition: ir_Daikin.h:526
    +
    void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
    Send a Toshiba A/C message with the supplied settings.
    Definition: IRac.cpp:1644
    +
    Class for handling detailed Daikin 280-bit A/C messages.
    Definition: ir_Daikin.h:651
    void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
    Send a LG A/C message with the supplied settings.
    Definition: IRac.cpp:1252
    -
    Class for handling detailed Delonghi A/C messages.
    Definition: ir_Delonghi.h:72
    -
    Class for handling detailed Corona A/C messages.
    Definition: ir_Corona.h:105
    +
    Class for handling detailed Delonghi A/C messages.
    Definition: ir_Delonghi.h:73
    +
    Class for handling detailed Corona A/C messages.
    Definition: ir_Corona.h:107
    void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
    Send a Kelvinator A/C message with the supplied settings.
    Definition: IRac.cpp:1218
    -
    Class for handling detailed Daikin 312-bit A/C messages.
    Definition: ir_Daikin.h:608
    +
    Class for handling detailed Daikin 312-bit A/C messages.
    Definition: ir_Daikin.h:733
    Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
    -
    Class for handling detailed Daikin 128-bit A/C messages.
    Definition: ir_Daikin.h:869
    +
    Class for handling detailed Daikin 128-bit A/C messages.
    Definition: ir_Daikin.h:994
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    Support for Sharp protocols.
    -
    static String fanspeedToString(const stdAc::fanspeed_t speed)
    Convert the supplied fan speed enum into the appropriate String.
    Definition: IRac.cpp:2922
    -
    whirlpool_ac_remote_model_t
    Whirlpool A/C model numbers.
    Definition: IRsend.h:158
    +
    static String fanspeedToString(const stdAc::fanspeed_t speed)
    Convert the supplied fan speed enum into the appropriate String.
    Definition: IRac.cpp:2938
    +
    whirlpool_ac_remote_model_t
    Whirlpool A/C model numbers.
    Definition: IRsend.h:164
    Carrier A/C.
    -
    void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Whirlpool A/C message with the supplied settings.
    Definition: IRac.cpp:1994
    +
    void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Whirlpool A/C message with the supplied settings.
    Definition: IRac.cpp:1999
    Results returned from the decoder.
    Definition: IRrecv.h:92
    void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Daikin 64-bit A/C message with the supplied settings.
    Definition: IRac.cpp:757
    -
    void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
    Send a Voltas A/C message with the supplied settings.
    Definition: IRac.cpp:1953
    -
    void tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
    Send a TCL 112-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1736
    -
    void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
    Send a Transcold A/C message with the supplied settings.
    Definition: IRac.cpp:2031
    -
    bool sendAc(void)
    Send an A/C message based soley on our internal state.
    Definition: IRac.cpp:2641
    -
    static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
    Compare two AirCon states.
    Definition: IRac.cpp:2652
    +
    void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
    Send a Voltas A/C message with the supplied settings.
    Definition: IRac.cpp:1958
    +
    void tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
    Send a TCL 112-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1741
    +
    void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
    Send a Transcold A/C message with the supplied settings.
    Definition: IRac.cpp:2036
    +
    bool sendAc(void)
    Send an A/C message based soley on our internal state.
    Definition: IRac.cpp:2657
    +
    static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
    Compare two AirCon states.
    Definition: IRac.cpp:2668
    Support for Midea protocols. Midea added by crankyoldgit & bwze.
    Support for Daikin A/C protocols.
    gree_ac_remote_model_t
    Gree A/C model numbers.
    Definition: IRsend.h:129
    -
    Class for handling detailed Daikin 64-bit A/C messages.
    Definition: ir_Daikin.h:1003
    +
    Class for handling detailed Daikin 64-bit A/C messages.
    Definition: ir_Daikin.h:1124
    -
    void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
    Send a Vestel A/C message with the supplied settings.
    Definition: IRac.cpp:1911
    -
    Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
    Definition: ir_Hitachi.h:313
    +
    void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
    Send a Vestel A/C message with the supplied settings.
    Definition: IRac.cpp:1916
    +
    Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
    Definition: ir_Hitachi.h:371
    void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
    Send a Daikin A/C message with the supplied settings.
    Definition: IRac.cpp:524
    IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: IRac.cpp:54
    -
    Class for handling detailed Daikin 216-bit A/C messages.
    Definition: ir_Daikin.h:704
    +
    Class for handling detailed Daikin 216-bit A/C messages.
    Definition: ir_Daikin.h:829
    Class for handling detailed Voltas A/C messages.
    Definition: ir_Voltas.h:90
    hitachi_ac1_remote_model_t
    HITACHI_AC1 A/C model numbers.
    Definition: IRsend.h:135
    -
    void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
    Send a Samsung A/C message with the supplied settings.
    Definition: IRac.cpp:1601
    +
    void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
    Send a Samsung A/C message with the supplied settings.
    Definition: IRac.cpp:1603
    void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Daikin 128-bit A/C message with the supplied settings.
    Definition: IRac.cpp:564
    -
    Class for handling detailed Hitachi 224-bit A/C messages.
    Definition: ir_Hitachi.h:188
    +
    Class for handling detailed Hitachi 224-bit A/C messages.
    Definition: ir_Hitachi.h:246
    const int8_t kGpioUnused
    A placeholder for not using an actual GPIO.
    Definition: IRac.h:45
    -
    Common functions for use with all A/Cs supported by the IRac class.
    Definition: IRac.cpp:2991
    +
    Common functions for use with all A/Cs supported by the IRac class.
    Definition: IRac.cpp:3007
    Class for handling detailed Sanyo A/C messages.
    Definition: ir_Sanyo.h:98
    void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
    Send a Haier A/C message with the supplied settings.
    Definition: IRac.cpp:1001
    Class for handling detailed Whirlpool A/C messages.
    Definition: ir_Whirlpool.h:91
    -
    Class for handling detailed Hitachi 344-bit A/C messages.
    Definition: ir_Hitachi.h:401
    -
    static String boolToString(const bool value)
    Convert the supplied boolean into the appropriate String.
    Definition: IRac.cpp:2893
    +
    Class for handling detailed Hitachi 344-bit A/C messages.
    Definition: ir_Hitachi.h:459
    +
    static String boolToString(const bool value)
    Convert the supplied boolean into the appropriate String.
    Definition: IRac.cpp:2909
    stdAc::state_t next
    The state we want the device to be in after we send.
    Definition: IRac.h:97
    -
    std::string String
    Definition: IRremoteESP8266.h:1148
    +
    std::string String
    Definition: IRremoteESP8266.h:1178
    Class for handling detailed Mitsubishi 144-bit A/C messages.
    Definition: ir_Mitsubishi.h:168
    -
    void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
    Send a Trotec A/C message with the supplied settings.
    Definition: IRac.cpp:1874
    -
    static int16_t strToModel(const char *str, const int16_t def=-1)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2812
    -
    Class for handling detailed Amcor A/C messages.
    Definition: ir_Amcor.h:89
    +
    void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
    Send a Trotec A/C message with the supplied settings.
    Definition: IRac.cpp:1879
    +
    static int16_t strToModel(const char *str, const int16_t def=-1)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2828
    +
    Class for handling detailed Amcor A/C messages.
    Definition: ir_Amcor.h:90
    Class for handling detailed Mitsubishi 122-bit A/C messages.
    Definition: ir_Mitsubishi.h:286
    Class for handling detailed TCL A/C messages.
    Definition: ir_Tcl.h:63
    void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
    Send a Daikin 176-bit A/C message with the supplied settings.
    Definition: IRac.cpp:656
    -
    Class for handling detailed Electra A/C messages.
    Definition: ir_Electra.h:80
    +
    Class for handling detailed Electra A/C messages.
    Definition: ir_Electra.h:98
    Support for TCL protocols.
    -
    bool hasStateChanged(void)
    Check if the internal state has changed from what was previously sent.
    Definition: IRac.cpp:2664
    +
    bool hasStateChanged(void)
    Check if the internal state has changed from what was previously sent.
    Definition: IRac.cpp:2680
    void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)
    Send a Haier YRWO2 A/C message with the supplied settings.
    Definition: IRac.cpp:1038
    void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
    Send a Daikin 216-bit A/C message with the supplied settings.
    Definition: IRac.cpp:727
    Support for Transcold A/C protocols.
    Support for Hitachi A/C protocols.
    Support for Panasonic protocols.
    -
    static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
    Create a new state base on desired & previous states but handle any state changes for options that ne...
    Definition: IRac.cpp:2080
    +
    static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
    Create a new state base on desired & previous states but handle any state changes for options that ne...
    Definition: IRac.cpp:2085
    Class for handling detailed Mitsubishi 136-bit A/C messages.
    Definition: ir_Mitsubishi.h:232
    panasonic_ac_remote_model_t
    Panasonic A/C model numbers.
    Definition: IRsend.h:141
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
    Send a Mitsubishi 112-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1360
    -
    bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
    Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
    Definition: IRac.cpp:3350
    -
    Class for handling detailed Hitachi 104-bit A/C messages.
    Definition: ir_Hitachi.h:245
    +
    void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
    Send a Mitsubishi 112-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1362
    +
    bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
    Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
    Definition: IRac.cpp:3366
    +
    Class for handling detailed Hitachi 104-bit A/C messages.
    Definition: ir_Hitachi.h:303
    void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
    Send a Hitachi 424-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1180
    Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
    -
    String resultAcToString(const decode_results *const result)
    Display the human readable state of an A/C message if we can.
    Definition: IRac.cpp:2997
    +
    String resultAcToString(const decode_results *const result)
    Display the human readable state of an A/C message if we can.
    Definition: IRac.cpp:3013
    void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
    Send a Daikin 152-bit A/C message with the supplied settings.
    Definition: IRac.cpp:601
    fujitsu_ac_remote_model_t
    Fujitsu A/C model numbers.
    Definition: IRsend.h:120
    Support for Gree A/C protocols.
    -
    Class for handling detailed Carrier 64 bit A/C messages.
    Definition: ir_Carrier.h:83
    -
    Class for handling detailed Midea A/C messages.
    Definition: ir_Midea.h:99
    -
    Class for handling detailed Kelvinator A/C messages.
    Definition: ir_Kelvinator.h:137
    +
    Class for handling detailed Carrier 64 bit A/C messages.
    Definition: ir_Carrier.h:84
    +
    Class for handling detailed Midea A/C messages.
    Definition: ir_Midea.h:138
    +
    Class for handling detailed Kelvinator A/C messages.
    Definition: ir_Kelvinator.h:119
    bool _inverted
    IR LED is lit when GPIO is LOW (true) or HIGH (false)?
    Definition: IRac.h:103
    Class for handling detailed Fujitsu A/C messages.
    Definition: ir_Fujitsu.h:113
    Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
    -
    Class for handling detailed Coolix A/C messages.
    Definition: ir_Coolix.h:105
    -
    void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
    Send a Panasonic A/C message with the supplied settings.
    Definition: IRac.cpp:1557
    -
    static String swingvToString(const stdAc::swingv_t swingv)
    Convert the supplied enum into the appropriate String.
    Definition: IRac.cpp:2944
    +
    Class for handling detailed Coolix A/C messages.
    Definition: ir_Coolix.h:107
    +
    void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
    Send a Midea A/C message with the supplied settings.
    Definition: IRac.cpp:1289
    +
    void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
    Send a Panasonic A/C message with the supplied settings.
    Definition: IRac.cpp:1559
    +
    static String swingvToString(const stdAc::swingv_t swingv)
    Convert the supplied enum into the appropriate String.
    Definition: IRac.cpp:2960
    Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
    A universal/common/generic interface for controling supported A/Cs.
    Definition: IRac.h:49
    Support for Teco protocols.
    void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
    Send a Gree A/C message with the supplied settings.
    Definition: IRac.cpp:963
    Delonghi A/C.
    void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
    Send an Electra A/C message with the supplied settings.
    Definition: IRac.cpp:814
    -
    static stdAc::state_t cleanState(const stdAc::state_t state)
    Create a new state base on the provided state that has been suitably fixed.
    Definition: IRac.cpp:2067
    +
    static stdAc::state_t cleanState(const stdAc::state_t state)
    Create a new state base on the provided state that has been suitably fixed.
    Definition: IRac.cpp:2072
    Support for Argo Ulisse 13 DCI Mobile Split ACs.
    -
    void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
    Send a Mitsubishi A/C message with the supplied settings.
    Definition: IRac.cpp:1325
    +
    void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
    Send a Mitsubishi A/C message with the supplied settings.
    Definition: IRac.cpp:1327
    void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
    Send an Amcor A/C message with the supplied settings.
    Definition: IRac.cpp:327
    -
    Definition: ir_Technibel.h:107
    -
    Class for handling detailed Airwell A/C messages.
    Definition: ir_Airwell.h:58
    +
    Class for handling detailed Technibel A/C messages.
    Definition: ir_Technibel.h:108
    +
    Class for handling detailed Airwell A/C messages.
    Definition: ir_Airwell.h:60
    Support for Voltas A/C protocol.
    -
    Class for handling detailed Daikin 152-bit A/C messages.
    Definition: ir_Daikin.h:943
    -
    Class for handling detailed LG A/C messages.
    Definition: ir_LG.h:64
    +
    Class for handling detailed Daikin 152-bit A/C messages.
    Definition: ir_Daikin.h:1064
    +
    Class for handling detailed LG A/C messages.
    Definition: ir_LG.h:67
    Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
    Class for handling detailed Haier A/C messages.
    Definition: ir_Haier.h:244
    -
    void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
    Send a Neoclima A/C message with the supplied settings.
    Definition: IRac.cpp:1516
    -
    Class for handling detailed Daikin 160-bit A/C messages.
    Definition: ir_Daikin.h:760
    -
    static String opmodeToString(const stdAc::opmode_t mode)
    Convert the supplied operation mode into the appropriate String.
    Definition: IRac.cpp:2900
    -
    Class for handling detailed Sharp A/C messages.
    Definition: ir_Sharp.h:108
    -
    void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
    Send a Toshiba A/C message with the supplied settings.
    Definition: IRac.cpp:1838
    +
    void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
    Send a Neoclima A/C message with the supplied settings.
    Definition: IRac.cpp:1518
    +
    Class for handling detailed Daikin 160-bit A/C messages.
    Definition: ir_Daikin.h:885
    +
    static String opmodeToString(const stdAc::opmode_t mode)
    Convert the supplied operation mode into the appropriate String.
    Definition: IRac.cpp:2916
    +
    Class for handling detailed Sharp A/C messages.
    Definition: ir_Sharp.h:113
    +
    void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
    Send a Toshiba A/C message with the supplied settings.
    Definition: IRac.cpp:1843
    Support for Goodweather compatible HVAC protocols.
    void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
    Send an Argo A/C message with the supplied settings.
    Definition: IRac.cpp:359
    -
    lg_ac_remote_model_t
    LG A/C model numbers.
    Definition: IRsend.h:164
    -
    void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
    Send a Mitsubishi 136-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1396
    +
    lg_ac_remote_model_t
    LG A/C model numbers.
    Definition: IRsend.h:170
    +
    void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
    Send a Mitsubishi 136-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1398
    bool _modulation
    Is frequency modulation to be used?
    Definition: IRac.h:104
    -
    void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
    Send a Teco A/C message with the supplied settings.
    Definition: IRac.cpp:1805
    -
    static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2670
    +
    void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
    Send a Teco A/C message with the supplied settings.
    Definition: IRac.cpp:1810
    +
    static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2686
    Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
    void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
    Send a Hitachi1 A/C message with the supplied settings.
    Definition: IRac.cpp:1107
    -
    Definition: ir_Transcold.h:110
    +
    Class for handling detailed Transcold A/C messages.
    Definition: ir_Transcold.h:111
    Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
    -
    static bool strToBool(const char *str, const bool def=false)
    Convert the supplied str into the appropriate boolean value.
    Definition: IRac.cpp:2875
    -
    void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
    Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1431
    -
    static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2731
    +
    static bool strToBool(const char *str, const bool def=false)
    Convert the supplied str into the appropriate boolean value.
    Definition: IRac.cpp:2891
    +
    void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
    Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1433
    +
    static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2747
    Class for handling detailed Vestel A/C messages.
    Definition: ir_Vestel.h:116
    Class for handling detailed Trotec A/C messages.
    Definition: ir_Trotec.h:76
    Class for handling detailed Teco A/C messages.
    Definition: ir_Teco.h:107
    -
    static String swinghToString(const stdAc::swingh_t swingh)
    Convert the supplied enum into the appropriate String.
    Definition: IRac.cpp:2968
    +
    static String swinghToString(const stdAc::swingh_t swingh)
    Convert the supplied enum into the appropriate String.
    Definition: IRac.cpp:2984
    void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
    Send a Fujitsu A/C message with the supplied settings.
    Definition: IRac.cpp:857
    Support for Technibel protocol.
    void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
    Send a Delonghi A/C message with the supplied settings.
    Definition: IRac.cpp:787
    @@ -670,30 +672,29 @@ $(function() {
    Class for handling detailed Haier ACYRW02 A/C messages.
    Definition: ir_Haier.h:314
    void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
    Send a Daikin 160-bit A/C message with the supplied settings.
    Definition: IRac.cpp:634
    void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
    Send a Corona A/C message with the supplied settings.
    Definition: IRac.cpp:489
    -
    static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
    Initialse the given state with the supplied settings.
    Definition: IRac.cpp:85
    -
    void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
    Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1472
    +
    static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
    Initialise the given state with the supplied settings.
    Definition: IRac.cpp:85
    +
    void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
    Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
    Definition: IRac.cpp:1474
    Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
    Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
    Definition: ir_MitsubishiHeavy.h:220
    -
    Class for handling detailed Gree A/C messages.
    Definition: ir_Gree.h:130
    +
    Class for handling detailed Gree A/C messages.
    Definition: ir_Gree.h:131
    void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
    Send a Coolix A/C message with the supplied settings.
    Definition: IRac.cpp:428
    -
    static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2700
    -
    void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo, const int16_t sleep=-1)
    Send a Midea A/C message with the supplied settings.
    Definition: IRac.cpp:1287
    +
    static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
    Convert the supplied str into the appropriate enum.
    Definition: IRac.cpp:2716
    Support for Toshiba protocols.
    -
    void sharp(IRSharpAc *ac, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const bool clean)
    Send a Sharp A/C message with the supplied settings.
    Definition: IRac.cpp:1684
    void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
    Send a Goodweather A/C message with the supplied settings.
    Definition: IRac.cpp:921
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    Class for handling detailed Goodweather A/C messages.
    Definition: ir_Goodweather.h:90
    +
    Class for handling detailed Goodweather A/C messages.
    Definition: ir_Goodweather.h:100
    Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
    -
    Class for handling detailed Argo A/C messages.
    Definition: ir_Argo.h:126
    +
    Class for handling detailed Argo A/C messages.
    Definition: ir_Argo.h:127
    Class for handling detailed Neoclima A/C messages.
    Definition: ir_Neoclima.h:94
    static bool isProtocolSupported(const decode_type_t protocol)
    Is the given protocol supported by the IRac class?
    Definition: IRac.cpp:138
    -
    Class for handling detailed Daikin 176-bit A/C messages.
    Definition: ir_Daikin.h:812
    +
    Class for handling detailed Daikin 176-bit A/C messages.
    Definition: ir_Daikin.h:937
    Amcor A/C protocol.
    uint16_t _pin
    The GPIO to use to transmit messages from.
    Definition: IRac.h:102
    -
    void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
    Send a Technibel A/C message with the supplied settings.
    Definition: IRac.cpp:1772
    -
    voltas_ac_remote_model_t
    Voltas A/C model numbers.
    Definition: IRsend.h:152
    +
    void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
    Send a Technibel A/C message with the supplied settings.
    Definition: IRac.cpp:1777
    +
    voltas_ac_remote_model_t
    Voltas A/C model numbers.
    Definition: IRsend.h:158
    +
    sharp_ac_remote_model_t
    Sharp A/C model numbers.
    Definition: IRsend.h:152
    Support for LG protocols.
    void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
    Send a Carrier 64-bit A/C message with the supplied settings.
    Definition: IRac.cpp:391
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8cpp.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8cpp.html similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8cpp.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8cpp.html diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8h.html similarity index 100% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8h.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8h.html diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8h_source.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8h_source.html similarity index 92% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8h_source.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8h_source.html index 63de416ec..90913da48 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRrecv_8h_source.html +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRrecv_8h_source.html @@ -663,136 +663,155 @@ $(function() {
    596  uint16_t offset = kStartOffset,
    597  const uint16_t nbits = kPanasonicAcBits,
    598  const bool strict = true);
    -
    599 #endif
    -
    600 #if DECODE_PIONEER
    -
    601  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
    -
    602  const uint16_t nbits = kPioneerBits,
    -
    603  const bool strict = true);
    -
    604 #endif
    -
    605 #if DECODE_MWM
    -
    606  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
    -
    607  const uint16_t nbits = 24,
    -
    608  const bool strict = true);
    -
    609 #endif
    -
    610 #if DECODE_VESTEL_AC
    -
    611  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
    -
    612  const uint16_t nbits = kVestelAcBits,
    -
    613  const bool strict = true);
    -
    614 #endif
    -
    615 #if DECODE_TECO
    -
    616  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
    -
    617  const uint16_t nbits = kTecoBits,
    -
    618  const bool strict = false);
    -
    619 #endif
    -
    620 #if DECODE_LEGOPF
    -
    621  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
    -
    622  const uint16_t nbits = kLegoPfBits,
    -
    623  const bool strict = true);
    -
    624 #endif
    -
    625 #if DECODE_NEOCLIMA
    -
    626  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
    -
    627  const uint16_t nbits = kNeoclimaBits,
    -
    628  const bool strict = true);
    -
    629 #endif // DECODE_NEOCLIMA
    -
    630 #if DECODE_AMCOR
    -
    631  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
    -
    632  const uint16_t nbits = kAmcorBits,
    -
    633  const bool strict = true);
    -
    634 #endif // DECODE_AMCOR
    -
    635 #if DECODE_EPSON
    -
    636  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
    -
    637  const uint16_t nbits = kEpsonBits,
    -
    638  const bool strict = true);
    -
    639 #endif // DECODE_EPSON
    -
    640 #if DECODE_SYMPHONY
    -
    641  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
    -
    642  const uint16_t nbits = kSymphonyBits,
    -
    643  const bool strict = true);
    -
    644 #endif // DECODE_SYMPHONY
    -
    645 #if DECODE_AIRWELL
    -
    646  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
    -
    647  const uint16_t nbits = kAirwellBits,
    -
    648  const bool strict = true);
    -
    649 #endif // DECODE_AIRWELL
    -
    650 #if DECODE_DELONGHI_AC
    -
    651  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
    -
    652  const uint16_t nbits = kDelonghiAcBits,
    -
    653  const bool strict = true);
    -
    654 #endif // DECODE_DELONGHI_AC
    -
    655 #if DECODE_DOSHISHA
    -
    656  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
    -
    657  const uint16_t nbits = kDoshishaBits,
    -
    658  const bool strict = true);
    -
    659 #endif // DECODE_DOSHISHA
    -
    660 #if DECODE_MULTIBRACKETS
    -
    661  bool decodeMultibrackets(decode_results *results,
    -
    662  uint16_t offset = kStartOffset,
    -
    663  const uint16_t nbits = kMultibracketsBits,
    -
    664  const bool strict = true);
    -
    665 #endif // DECODE_MULTIBRACKETS
    -
    666 #if DECODE_TECHNIBEL_AC
    -
    667  bool decodeTechnibelAc(decode_results *results,
    -
    668  uint16_t offset = kStartOffset,
    -
    669  const uint16_t nbits = kTechnibelAcBits,
    -
    670  const bool strict = true);
    -
    671 #endif // DECODE_TECHNIBEL_AC
    -
    672 #if DECODE_CORONA_AC
    -
    673  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
    -
    674  const uint16_t nbits = kCoronaAcBitsShort,
    -
    675  const bool strict = true);
    -
    676 #endif // DECODE_CORONA_AC
    -
    677 #if DECODE_ZEPEAL
    -
    678 bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
    -
    679  const uint16_t nbits = kZepealBits,
    -
    680  const bool strict = true);
    -
    681 #endif // DECODE_ZEPEAL
    -
    682 #if DECODE_METZ
    -
    683 bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
    -
    684  const uint16_t nbits = kMetzBits,
    -
    685  const bool strict = true);
    -
    686 #endif // DECODE_METZ
    -
    687 #if DECODE_TRANSCOLD
    -
    688 bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
    -
    689  const uint16_t nbits = kTranscoldBits,
    -
    690  const bool strict = true);
    -
    691 #endif // DECODE_TRANSCOLD
    -
    692 };
    -
    693 
    -
    694 #endif // IRRECV_H_
    +
    599 #endif // DECODE_PANASONIC_AC
    +
    600 #if DECODE_PANASONIC_AC32
    +
    601  bool decodePanasonicAC32(decode_results *results,
    +
    602  uint16_t offset = kStartOffset,
    +
    603  const uint16_t nbits = kPanasonicAc32Bits,
    +
    604  const bool strict = true);
    +
    605 #endif // DECODE_PANASONIC_AC32
    +
    606 #if DECODE_PIONEER
    +
    607  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
    +
    608  const uint16_t nbits = kPioneerBits,
    +
    609  const bool strict = true);
    +
    610 #endif
    +
    611 #if DECODE_MWM
    +
    612  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
    +
    613  const uint16_t nbits = 24,
    +
    614  const bool strict = true);
    +
    615 #endif
    +
    616 #if DECODE_VESTEL_AC
    +
    617  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
    +
    618  const uint16_t nbits = kVestelAcBits,
    +
    619  const bool strict = true);
    +
    620 #endif
    +
    621 #if DECODE_TECO
    +
    622  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
    +
    623  const uint16_t nbits = kTecoBits,
    +
    624  const bool strict = false);
    +
    625 #endif
    +
    626 #if DECODE_LEGOPF
    +
    627  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
    +
    628  const uint16_t nbits = kLegoPfBits,
    +
    629  const bool strict = true);
    +
    630 #endif
    +
    631 #if DECODE_NEOCLIMA
    +
    632  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
    +
    633  const uint16_t nbits = kNeoclimaBits,
    +
    634  const bool strict = true);
    +
    635 #endif // DECODE_NEOCLIMA
    +
    636 #if DECODE_AMCOR
    +
    637  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
    +
    638  const uint16_t nbits = kAmcorBits,
    +
    639  const bool strict = true);
    +
    640 #endif // DECODE_AMCOR
    +
    641 #if DECODE_EPSON
    +
    642  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
    +
    643  const uint16_t nbits = kEpsonBits,
    +
    644  const bool strict = true);
    +
    645 #endif // DECODE_EPSON
    +
    646 #if DECODE_SYMPHONY
    +
    647  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
    +
    648  const uint16_t nbits = kSymphonyBits,
    +
    649  const bool strict = true);
    +
    650 #endif // DECODE_SYMPHONY
    +
    651 #if DECODE_AIRWELL
    +
    652  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
    +
    653  const uint16_t nbits = kAirwellBits,
    +
    654  const bool strict = true);
    +
    655 #endif // DECODE_AIRWELL
    +
    656 #if DECODE_DELONGHI_AC
    +
    657  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
    +
    658  const uint16_t nbits = kDelonghiAcBits,
    +
    659  const bool strict = true);
    +
    660 #endif // DECODE_DELONGHI_AC
    +
    661 #if DECODE_DOSHISHA
    +
    662  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
    +
    663  const uint16_t nbits = kDoshishaBits,
    +
    664  const bool strict = true);
    +
    665 #endif // DECODE_DOSHISHA
    +
    666 #if DECODE_MULTIBRACKETS
    +
    667  bool decodeMultibrackets(decode_results *results,
    +
    668  uint16_t offset = kStartOffset,
    +
    669  const uint16_t nbits = kMultibracketsBits,
    +
    670  const bool strict = true);
    +
    671 #endif // DECODE_MULTIBRACKETS
    +
    672 #if DECODE_TECHNIBEL_AC
    +
    673  bool decodeTechnibelAc(decode_results *results,
    +
    674  uint16_t offset = kStartOffset,
    +
    675  const uint16_t nbits = kTechnibelAcBits,
    +
    676  const bool strict = true);
    +
    677 #endif // DECODE_TECHNIBEL_AC
    +
    678 #if DECODE_CORONA_AC
    +
    679  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
    +
    680  const uint16_t nbits = kCoronaAcBitsShort,
    +
    681  const bool strict = true);
    +
    682 #endif // DECODE_CORONA_AC
    +
    683 #if DECODE_ZEPEAL
    +
    684  bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
    +
    685  const uint16_t nbits = kZepealBits,
    +
    686  const bool strict = true);
    +
    687 #endif // DECODE_ZEPEAL
    +
    688 #if DECODE_METZ
    +
    689  bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
    +
    690  const uint16_t nbits = kMetzBits,
    +
    691  const bool strict = true);
    +
    692 #endif // DECODE_METZ
    +
    693 #if DECODE_TRANSCOLD
    +
    694  bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
    +
    695  const uint16_t nbits = kTranscoldBits,
    +
    696  const bool strict = true);
    +
    697 #endif // DECODE_TRANSCOLD
    +
    698 #if DECODE_MIRAGE
    +
    699  bool decodeMirage(decode_results *results,
    +
    700  uint16_t offset = kStartOffset,
    +
    701  const uint16_t nbits = kMirageBits,
    +
    702  const bool strict = true);
    +
    703 #endif // DECODE_MIRAGE
    +
    704 #if DECODE_ELITESCREENS
    +
    705  bool decodeElitescreens(decode_results *results,
    +
    706  uint16_t offset = kStartOffset,
    +
    707  const uint16_t nbits = kEliteScreensBits,
    +
    708  const bool strict = true);
    +
    709 #endif // DECODE_ELITESCREENS
    +
    710 };
    +
    711 
    +
    712 #endif // IRRECV_H_
    bool decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)
    Decode the Multibrackets message. Status: BETA / Appears to be working.
    Definition: ir_Multibrackets.cpp:59
    -
    const uint16_t kDelonghiAcBits
    Definition: IRremoteESP8266.h:902
    +
    const uint16_t kDelonghiAcBits
    Definition: IRremoteESP8266.h:926
    bool decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
    Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.
    Definition: ir_Mitsubishi.cpp:123
    +
    const uint16_t kMirageBits
    Definition: IRremoteESP8266.h:998
    bool decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)
    Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.
    Definition: ir_Haier.cpp:974
    bool decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)
    Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.
    Definition: ir_NEC.cpp:81
    const uint32_t kFnvPrime32
    Definition: IRrecv.h:52
    bool overflow
    Definition: IRrecv.h:109
    -
    bool decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)
    Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.
    Definition: ir_Daikin.cpp:3119
    -
    const uint16_t kGicableBits
    Definition: IRremoteESP8266.h:922
    -
    uint16_t matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.
    Definition: IRrecv.cpp:1292
    -
    decode_type_t
    Enumerator for defining and numbering of supported IR protocol.
    Definition: IRremoteESP8266.h:750
    -
    const uint16_t kCarrierAcBits
    Definition: IRremoteESP8266.h:867
    +
    bool decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)
    Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.
    Definition: ir_Daikin.cpp:3029
    +
    const uint16_t kGicableBits
    Definition: IRremoteESP8266.h:948
    +
    uint16_t matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.
    Definition: IRrecv.cpp:1307
    +
    decode_type_t
    Enumerator for defining and numbering of supported IR protocol.
    Definition: IRremoteESP8266.h:771
    +
    const uint16_t kCarrierAcBits
    Definition: IRremoteESP8266.h:891
    bool decodeTranscold(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTranscoldBits, const bool strict=true)
    Decode the supplied Transcold A/C message. Status: STABLE / Known Working.
    Definition: ir_Transcold.cpp:482
    int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)
    Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is b...
    Definition: ir_RC5_RC6.cpp:243
    -
    const uint16_t kMultibracketsBits
    Definition: IRremoteESP8266.h:990
    -
    const uint16_t kSharpAcBits
    Definition: IRremoteESP8266.h:1030
    -
    const uint16_t kWhynterBits
    Definition: IRremoteESP8266.h:1061
    +
    const uint16_t kMultibracketsBits
    Definition: IRremoteESP8266.h:1019
    +
    const uint16_t kSharpAcBits
    Definition: IRremoteESP8266.h:1060
    +
    const uint16_t kWhynterBits
    Definition: IRremoteESP8266.h:1091
    bool decodeSanyoAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAcBits, const bool strict=true)
    Decode the supplied SanyoAc message. Status: STABLE / Reported as working.
    Definition: ir_Sanyo.cpp:274
    uint8_t overflow
    Definition: IRrecv.h:78
    bool decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
    Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.
    Definition: ir_Mitsubishi.cpp:188
    bool decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)
    Decode the supplied Gree HVAC message. Status: STABLE / Working.
    Definition: ir_Gree.cpp:659
    -
    const uint16_t kAirwellBits
    Definition: IRremoteESP8266.h:854
    +
    const uint16_t kAirwellBits
    Definition: IRremoteESP8266.h:878
    irparams_t * irparams_save
    Definition: IRrecv.h:151
    -
    const uint16_t kMitsubishiACBits
    Definition: IRremoteESP8266.h:976
    +
    const uint16_t kMitsubishiACBits
    Definition: IRremoteESP8266.h:1005
    bool decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)
    Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.
    Definition: ir_Fujitsu.cpp:892
    -
    const uint16_t kTechnibelAcBits
    Definition: IRremoteESP8266.h:904
    +
    const uint16_t kTechnibelAcBits
    Definition: IRremoteESP8266.h:928
    bool decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)
    Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.
    Definition: ir_Trotec.cpp:313
    bool decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)
    Decode the supplied Neoclima message. Status: STABLE / Known working.
    Definition: ir_Neoclima.cpp:578
    -
    const uint16_t kVoltasBits
    Definition: IRremoteESP8266.h:1065
    +
    const uint16_t kVoltasBits
    Definition: IRremoteESP8266.h:1095
    bool decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)
    Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Re...
    Definition: ir_Mitsubishi.cpp:1216
    bool decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)
    Decode the supplied Samsung A/C message. Status: Stable / Known to be working.
    Definition: ir_Samsung.cpp:789
    bool decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)
    Decode the supplied Airwell "Manchester code" message.
    Definition: ir_Airwell.cpp:53
    -
    const uint16_t kRC5XBits
    Definition: IRremoteESP8266.h:1008
    +
    const uint16_t kRC5XBits
    Definition: IRremoteESP8266.h:1038
    bool decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)
    Decode the supplied MagiQuest message. Status: Beta / Should work.
    Definition: ir_Magiquest.cpp:69
    uint16_t rawlen
    Definition: IRrecv.h:77
    const uint8_t kUseDefTol
    Definition: IRrecv.h:36
    @@ -800,204 +819,209 @@ $(function() {
    Class for receiving IR messages.
    Definition: IRrecv.h:114
    uint16_t bufsize
    Definition: IRrecv.h:73
    Results returned from the decoder.
    Definition: IRrecv.h:92
    -
    uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_...
    Definition: IRrecv.cpp:1386
    +
    uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_...
    Definition: IRrecv.cpp:1401
    bool decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)
    Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.
    Definition: ir_Carrier.cpp:195
    -
    const uint16_t kCoolixBits
    Definition: IRremoteESP8266.h:865
    +
    const uint16_t kCoolixBits
    Definition: IRremoteESP8266.h:889
    bool decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)
    Decode the supplied Argo message. Status: BETA / Probably works.
    Definition: ir_Argo.cpp:445
    -
    const uint16_t kCoronaAcBitsShort
    Definition: IRremoteESP8266.h:875
    +
    const uint16_t kCoronaAcBitsShort
    Definition: IRremoteESP8266.h:899
    uint64_t data
    Definition: IRrecv.h:85
    -
    const uint16_t kSamsung36Bits
    Definition: IRremoteESP8266.h:1013
    -
    const uint16_t kMagiquestBits
    Definition: IRremoteESP8266.h:964
    +
    const uint16_t kSamsung36Bits
    Definition: IRremoteESP8266.h:1043
    +
    const uint16_t kMagiquestBits
    Definition: IRremoteESP8266.h:990
    uint16_t * rawbuf
    Definition: IRrecv.h:74
    Information for the interrupt handler.
    Definition: IRrecv.h:69
    uint16_t getBufSize(void)
    Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
    Definition: IRrecv.cpp:319
    -
    const uint16_t kSanyoLC7461Bits
    Definition: IRremoteESP8266.h:1024
    +
    const uint16_t kSanyoLC7461Bits
    Definition: IRremoteESP8266.h:1054
    bool repeat
    Definition: IRrecv.h:110
    -
    bool decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)
    Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.
    Definition: ir_Hitachi.cpp:870
    -
    const uint16_t kTrotecBits
    Definition: IRremoteESP8266.h:1056
    +
    bool decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)
    Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.
    Definition: ir_Hitachi.cpp:846
    +
    const uint16_t kTrotecBits
    Definition: IRremoteESP8266.h:1086
    bool decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)
    Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.
    Definition: ir_Vestel.cpp:572
    const uint8_t kIdleState
    Definition: IRrecv.h:31
    bool decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)
    Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.
    Definition: ir_Amcor.cpp:58
    -
    bool decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)
    Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.
    Definition: ir_Daikin.cpp:619
    +
    bool decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)
    Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.
    Definition: ir_Daikin.cpp:595
    +
    const uint16_t kEliteScreensBits
    Definition: IRremoteESP8266.h:941
    uint8_t recvpin
    Definition: IRrecv.h:70
    uint16_t timer
    Definition: IRrecv.h:72
    -
    bool decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)
    Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.
    Definition: ir_Daikin.cpp:3601
    +
    bool decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)
    Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.
    Definition: ir_Daikin.cpp:3501
    bool decodeMetz(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMetzBits, const bool strict=true)
    Decode the supplied Metz message. Status: BETA / Probably works.
    Definition: ir_Metz.cpp:67
    bool success
    Definition: IRrecv.h:84
    -
    bool decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)
    Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.
    Definition: ir_Daikin.cpp:1415
    -
    const uint16_t kElectraAcBits
    Definition: IRremoteESP8266.h:915
    -
    bool matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
    Check if we match a space signal(measured) with the desired within +/-tolerance percent,...
    Definition: IRrecv.cpp:1024
    -
    const uint16_t kSonyMinBits
    Definition: IRremoteESP8266.h:1037
    +
    bool decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)
    Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.
    Definition: ir_Daikin.cpp:1379
    +
    const uint16_t kElectraAcBits
    Definition: IRremoteESP8266.h:939
    +
    bool matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
    Check if we match a space signal(measured) with the desired within +/-tolerance percent,...
    Definition: IRrecv.cpp:1039
    +
    const uint16_t kSonyMinBits
    Definition: IRremoteESP8266.h:1067
    const uint8_t kStopState
    Definition: IRrecv.h:34
    uint16_t rawlen
    Definition: IRrecv.h:108
    const uint16_t kMaxTimeoutMs
    Definition: IRrecv.h:49
    -
    const uint16_t kDaikin2Bits
    Definition: IRremoteESP8266.h:883
    -
    bool decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)
    Decode the supplied Panasonic message. Status: STABLE / Should be working.
    Definition: ir_Panasonic.cpp:130
    -
    const uint16_t kHitachiAc1Bits
    Definition: IRremoteESP8266.h:939
    -
    bool decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)
    Decode the supplied Electra A/C message. Status: STABLE / Known working.
    Definition: ir_Electra.cpp:377
    -
    bool decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)
    Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.
    Definition: ir_Daikin.cpp:1789
    -
    bool decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)
    Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.
    Definition: ir_Daikin.cpp:3208
    +
    bool decodePanasonicAC32(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAc32Bits, const bool strict=true)
    Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working.
    Definition: ir_Panasonic.cpp:1004
    +
    const uint16_t kDaikin2Bits
    Definition: IRremoteESP8266.h:907
    +
    bool decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)
    Decode the supplied Panasonic message. Status: STABLE / Should be working.
    Definition: ir_Panasonic.cpp:126
    +
    const uint16_t kHitachiAc1Bits
    Definition: IRremoteESP8266.h:965
    +
    bool decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)
    Decode the supplied Electra A/C message. Status: STABLE / Known working.
    Definition: ir_Electra.cpp:370
    +
    bool decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)
    Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.
    Definition: ir_Daikin.cpp:1742
    +
    bool decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)
    Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.
    Definition: ir_Daikin.cpp:3118
    +
    bool decodeElitescreens(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEliteScreensBits, const bool strict=true)
    Decode the supplied Elite Screens message. Status: STABLE / Confirmed working.
    Definition: ir_EliteScreens.cpp:55
    bool decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)
    Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.
    Definition: ir_Denon.cpp:70
    -
    const uint16_t kPanasonicBits
    Definition: IRremoteESP8266.h:997
    +
    const uint16_t kPanasonicBits
    Definition: IRremoteESP8266.h:1026
    decode_type_t decode_type
    Definition: IRrecv.h:94
    -
    const uint16_t kPanasonicAcBits
    Definition: IRremoteESP8266.h:1001
    +
    const uint16_t kPanasonicAcBits
    Definition: IRremoteESP8266.h:1030
    bool decodeTechnibelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTechnibelAcBits, const bool strict=true)
    Status: STABLE / Reported as working on a real device.
    Definition: ir_Technibel.cpp:56
    const uint64_t kRepeat
    Definition: IRrecv.h:26
    void setTolerance(const uint8_t percent=kTolerance)
    Set the base tolerance percentage for matching incoming IR messages.
    Definition: IRrecv.cpp:332
    -
    bool decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)
    Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.
    Definition: ir_Midea.cpp:440
    +
    bool decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)
    Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.
    Definition: ir_Midea.cpp:666
    bool decodeVoltas(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVoltasBits, const bool strict=true)
    Decode the supplied Voltas message. Status: STABLE / Working on real device.
    Definition: ir_Voltas.cpp:61
    -
    const uint16_t kDaikin160Bits
    Definition: IRremoteESP8266.h:888
    +
    const uint16_t kDaikin160Bits
    Definition: IRremoteESP8266.h:912
    void copyIrParams(volatile irparams_t *src, irparams_t *dst)
    Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile,...
    Definition: IRrecv.cpp:295
    -
    bool decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)
    Decode the supplied Kelvinator message. Status: STABLE / Known working.
    Definition: ir_Kelvinator.cpp:489
    -
    const uint16_t kGoodweatherBits
    Definition: IRremoteESP8266.h:924
    +
    bool decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)
    Decode the supplied Kelvinator message. Status: STABLE / Known working.
    Definition: ir_Kelvinator.cpp:459
    +
    const uint16_t kGoodweatherBits
    Definition: IRremoteESP8266.h:950
    bool decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)
    Decode the supplied MWM message. Status: Implemented.
    Definition: ir_MWM.cpp:81
    void enableIRIn(const bool pullup=false)
    Set up and (re)start the IR capture mechanism.
    Definition: IRrecv.cpp:228
    -
    const uint16_t kDaikin152Bits
    Definition: IRremoteESP8266.h:894
    -
    bool decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)
    Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).
    Definition: ir_Panasonic.cpp:879
    +
    const uint16_t kDaikin152Bits
    Definition: IRremoteESP8266.h:918
    +
    bool decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)
    Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).
    Definition: ir_Panasonic.cpp:875
    bool decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)
    Decode the supplied Doshisha message. Status: STABLE / Works on real device.
    Definition: ir_Doshisha.cpp:85
    bool decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)
    Decode the supplied Zepeal message. Status: STABLE / Works on real device.
    Definition: ir_Zepeal.cpp:67
    -
    bool decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)
    Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.
    Definition: ir_Daikin.cpp:2162
    +
    bool decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)
    Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.
    Definition: ir_Daikin.cpp:2107
    bool decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
    Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.
    Definition: ir_Lasertag.cpp:70
    const uint8_t kTimeoutMs
    Definition: IRrecv.h:47
    -
    uint16_t _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_pt...
    Definition: IRrecv.cpp:1192
    +
    uint16_t _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_pt...
    Definition: IRrecv.cpp:1207
    const uint8_t kMarkState
    Definition: IRrecv.h:32
    void setUnknownThreshold(const uint16_t length)
    Set the minimum length we will consider for reporting UNKNOWN message types.
    Definition: IRrecv.cpp:324
    -
    const uint16_t kSymphonyBits
    Definition: IRremoteESP8266.h:1039
    -
    const uint16_t kRC6Mode0Bits
    Definition: IRremoteESP8266.h:1009
    +
    const uint16_t kSymphonyBits
    Definition: IRremoteESP8266.h:1069
    +
    bool decodeMirage(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMirageBits, const bool strict=true)
    Decode the supplied Mirage message. Status: STABLE / Reported as working.
    Definition: ir_Mirage.cpp:50
    +
    const uint16_t kRC6Mode0Bits
    Definition: IRremoteESP8266.h:1039
    const uint16_t kStateSizeMax
    Definition: IRrecv.h:60
    Results from a data match.
    Definition: IRrecv.h:83
    uint8_t rcvstate
    Definition: IRrecv.h:71
    -
    const uint16_t kMetzBits
    Definition: IRremoteESP8266.h:965
    +
    const uint16_t kMetzBits
    Definition: IRremoteESP8266.h:991
    bool decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
    Decode the supplied RC6 message. Status: Stable.
    Definition: ir_RC5_RC6.cpp:383
    bool decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
    Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)
    Definition: ir_RC5_RC6.cpp:309
    ~IRrecv(void)
    Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...
    Definition: IRrecv.cpp:213
    -
    bool decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)
    Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.
    Definition: ir_Hitachi.cpp:1454
    +
    bool decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)
    Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.
    Definition: ir_Hitachi.cpp:1425
    bool decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)
    Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.
    Definition: ir_Whynter.cpp:74
    bool decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)
    Decode the supplied Carrier HVAC message.
    Definition: ir_Carrier.cpp:82
    -
    match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode the typical data section of an IR message. The data value is stored in the least signi...
    Definition: IRrecv.cpp:1100
    -
    const uint16_t kMitsubishiHeavy152Bits
    Definition: IRremoteESP8266.h:988
    -
    const uint16_t kDoshishaBits
    Definition: IRremoteESP8266.h:911
    -
    const uint16_t kCarrierAc40Bits
    Definition: IRremoteESP8266.h:869
    +
    match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode the typical data section of an IR message. The data value is stored in the least signi...
    Definition: IRrecv.cpp:1115
    +
    const uint16_t kMitsubishiHeavy152Bits
    Definition: IRremoteESP8266.h:1017
    +
    const uint16_t kDoshishaBits
    Definition: IRremoteESP8266.h:935
    +
    const uint16_t kCarrierAc40Bits
    Definition: IRremoteESP8266.h:893
    const uint16_t kStartOffset
    Definition: IRrecv.h:20
    -
    const uint16_t kAmcorBits
    Definition: IRremoteESP8266.h:860
    +
    const uint16_t kAmcorBits
    Definition: IRremoteESP8266.h:884
    bool decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)
    Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working.
    Definition: ir_RCMM.cpp:96
    IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)
    Class constructor Args:
    Definition: IRrecv.cpp:152
    bool decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)
    Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as work...
    Definition: ir_Mitsubishi.cpp:835
    volatile uint16_t * rawbuf
    Definition: IRrecv.h:107
    const uint8_t kTolerance
    Definition: IRrecv.h:35
    -
    bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
    Decode the supplied Sharp message. Status: STABLE / Working fine.
    Definition: ir_Sharp.cpp:156
    +
    bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
    Decode the supplied Sharp message. Status: STABLE / Working fine.
    Definition: ir_Sharp.cpp:157
    uint16_t used
    Definition: IRrecv.h:86
    -
    const uint32_t kPanasonicManufacturer
    Definition: IRremoteESP8266.h:998
    +
    const uint32_t kPanasonicManufacturer
    Definition: IRremoteESP8266.h:1027
    uint32_t address
    Definition: IRrecv.h:101
    bool decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)
    Decode the supplied Nikai message. Status: STABLE / Working.
    Definition: ir_Nikai.cpp:52
    -
    const uint16_t kMitsubishiBits
    Definition: IRremoteESP8266.h:971
    -
    bool match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed d...
    Definition: IRrecv.cpp:932
    +
    const uint16_t kMitsubishiBits
    Definition: IRremoteESP8266.h:1000
    +
    bool match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed d...
    Definition: IRrecv.cpp:947
    bool decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)
    Decode the supplied Symphony packet/message. Status: STABLE / Should be working.
    Definition: ir_Symphony.cpp:60
    -
    const uint16_t kSamsungAcBits
    Definition: IRremoteESP8266.h:1015
    +
    const uint16_t kSamsungAcBits
    Definition: IRremoteESP8266.h:1045
    const uint16_t kUnknownThreshold
    Definition: IRrecv.h:28
    -
    const uint16_t kMideaBits
    Definition: IRremoteESP8266.h:967
    +
    const uint16_t kMideaBits
    Definition: IRremoteESP8266.h:993
    bool decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)
    Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.
    Definition: ir_Aiwa.cpp:61
    -
    const uint16_t kKelvinatorBits
    Definition: IRremoteESP8266.h:954
    +
    const uint16_t kKelvinatorBits
    Definition: IRremoteESP8266.h:980
    bool decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)
    Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.
    Definition: ir_GICable.cpp:63
    bool decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)
    Decode the supplied Teco message. Status: STABLE / Tested.
    Definition: ir_Teco.cpp:365
    bool decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, const bool strict=true)
    Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.
    Definition: ir_Sanyo.cpp:137
    bool decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)
    Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits,...
    Definition: ir_Carrier.cpp:147
    -
    const uint16_t kNECBits
    Definition: IRremoteESP8266.h:993
    -
    const uint16_t kDenonBits
    Definition: IRremoteESP8266.h:906
    -
    const uint16_t kHaierACBits
    Definition: IRremoteESP8266.h:930
    -
    bool matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta...
    Definition: IRrecv.cpp:963
    -
    const uint16_t kZepealBits
    Definition: IRremoteESP8266.h:1063
    -
    const uint16_t kMidea24Bits
    Definition: IRremoteESP8266.h:969
    -
    bool decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)
    Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.
    Definition: ir_Daikin.cpp:2563
    -
    const uint16_t kNeoclimaBits
    Definition: IRremoteESP8266.h:995
    -
    const uint16_t kWhirlpoolAcBits
    Definition: IRremoteESP8266.h:1059
    -
    bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
    Decode the supplied Sharp A/C message. Status: STABLE / Known working.
    Definition: ir_Sharp.cpp:723
    +
    const uint16_t kNECBits
    Definition: IRremoteESP8266.h:1022
    +
    const uint16_t kDenonBits
    Definition: IRremoteESP8266.h:930
    +
    const uint16_t kHaierACBits
    Definition: IRremoteESP8266.h:956
    +
    bool matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta...
    Definition: IRrecv.cpp:978
    +
    const uint16_t kZepealBits
    Definition: IRremoteESP8266.h:1093
    +
    const uint16_t kMidea24Bits
    Definition: IRremoteESP8266.h:995
    +
    bool decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)
    Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.
    Definition: ir_Daikin.cpp:2500
    +
    const uint16_t kNeoclimaBits
    Definition: IRremoteESP8266.h:1024
    +
    const uint16_t kWhirlpoolAcBits
    Definition: IRremoteESP8266.h:1089
    +
    bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
    Decode the supplied Sharp A/C message. Status: STABLE / Known working.
    Definition: ir_Sharp.cpp:837
    bool decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)
    Decode the supplied JVC message. Status: Stable / Known working.
    Definition: ir_JVC.cpp:94
    bool decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)
    Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.
    Definition: ir_Mitsubishi.cpp:254
    -
    const uint16_t kCarrierAc64Bits
    Definition: IRremoteESP8266.h:871
    -
    const uint16_t kPioneerBits
    Definition: IRremoteESP8266.h:1004
    +
    const uint16_t kCarrierAc64Bits
    Definition: IRremoteESP8266.h:895
    +
    const uint16_t kPioneerBits
    Definition: IRremoteESP8266.h:1034
    uint16_t bits
    Definition: IRrecv.h:106
    -
    const uint16_t kGreeBits
    Definition: IRremoteESP8266.h:927
    -
    const uint16_t kJvcBits
    Definition: IRremoteESP8266.h:952
    -
    const uint16_t kLasertagBits
    Definition: IRremoteESP8266.h:956
    -
    const uint16_t kDaikin128Bits
    Definition: IRremoteESP8266.h:891
    -
    const uint16_t kAiwaRcT501Bits
    Definition: IRremoteESP8266.h:856
    -
    uint32_t ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Calculate the lower bound of the nr. of ticks.
    Definition: IRrecv.cpp:906
    -
    const uint16_t kTecoBits
    Definition: IRremoteESP8266.h:1044
    +
    const uint16_t kGreeBits
    Definition: IRremoteESP8266.h:953
    +
    const uint16_t kJvcBits
    Definition: IRremoteESP8266.h:978
    +
    const uint16_t kLasertagBits
    Definition: IRremoteESP8266.h:982
    +
    const uint16_t kDaikin128Bits
    Definition: IRremoteESP8266.h:915
    +
    const uint16_t kAiwaRcT501Bits
    Definition: IRremoteESP8266.h:880
    +
    uint32_t ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Calculate the lower bound of the nr. of ticks.
    Definition: IRrecv.cpp:921
    +
    const uint16_t kTecoBits
    Definition: IRremoteESP8266.h:1074
    bool decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)
    Decode the supplied Epson message. Status: Beta / Probably works.
    Definition: ir_Epson.cpp:45
    -
    const uint16_t kToshibaACBits
    Definition: IRremoteESP8266.h:1047
    +
    const uint16_t kToshibaACBits
    Definition: IRremoteESP8266.h:1077
    bool decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)
    Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Unt...
    Definition: ir_Sony.cpp:121
    -
    const uint16_t kDaikinBits
    Definition: IRremoteESP8266.h:878
    -
    bool matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
    Check if we match a mark signal(measured) with the desired within +/-tolerance percent,...
    Definition: IRrecv.cpp:1005
    -
    const uint16_t kHitachiAcBits
    Definition: IRremoteESP8266.h:936
    -
    const uint16_t kHitachiAc3Bits
    Definition: IRremoteESP8266.h:943
    +
    const uint16_t kDaikinBits
    Definition: IRremoteESP8266.h:902
    +
    bool matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
    Check if we match a mark signal(measured) with the desired within +/-tolerance percent,...
    Definition: IRrecv.cpp:1020
    +
    const uint16_t kHitachiAcBits
    Definition: IRremoteESP8266.h:962
    +
    const uint16_t kHitachiAc3Bits
    Definition: IRremoteESP8266.h:969
    const uint16_t kRawBuf
    Definition: IRrecv.h:25
    bool decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)
    Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting ...
    Definition: IRrecv.cpp:409
    bool decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)
    Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real example...
    Definition: ir_Pioneer.cpp:92
    uint8_t getTolerance(void)
    Get the base tolerance percentage for matching incoming IR messages.
    Definition: IRrecv.cpp:338
    -
    const uint16_t kDishBits
    Definition: IRremoteESP8266.h:909
    -
    uint16_t compare(const uint16_t oldval, const uint16_t newval)
    Compare two tick values.
    Definition: IRrecv.cpp:1042
    +
    const uint16_t kDishBits
    Definition: IRremoteESP8266.h:933
    +
    uint16_t compare(const uint16_t oldval, const uint16_t newval)
    Compare two tick values.
    Definition: IRrecv.cpp:1057
    uint32_t command
    Definition: IRrecv.h:102
    -
    const uint16_t kFujitsuAcBits
    Definition: IRremoteESP8266.h:920
    +
    const uint16_t kFujitsuAcBits
    Definition: IRremoteESP8266.h:946
    uint64_t value
    Definition: IRrecv.h:100
    -
    const uint16_t kArgoBits
    Definition: IRremoteESP8266.h:863
    -
    const uint16_t kHitachiAc2StateLength
    Definition: IRremoteESP8266.h:940
    +
    const uint16_t kArgoBits
    Definition: IRremoteESP8266.h:887
    +
    const uint16_t kHitachiAc2StateLength
    Definition: IRremoteESP8266.h:966
    bool decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
    Decode the supplied Samsung36 message. Status: STABLE / Expected to work.
    Definition: ir_Samsung.cpp:194
    const uint16_t kFooter
    Definition: IRrecv.h:19
    -
    const uint16_t kNikaiBits
    Definition: IRremoteESP8266.h:992
    -
    const uint16_t kLutronBits
    Definition: IRremoteESP8266.h:963
    +
    const uint16_t kNikaiBits
    Definition: IRremoteESP8266.h:1021
    +
    const uint16_t kLutronBits
    Definition: IRremoteESP8266.h:989
    uint8_t timeout
    Definition: IRrecv.h:79
    bool decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)
    Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.
    Definition: ir_Corona.cpp:88
    bool decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)
    Decode the supplied Lutron message. Status: STABLE / Working.
    Definition: ir_Lutron.cpp:65
    bool decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)
    Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed....
    Definition: ir_Dish.cpp:77
    const uint16_t kRawTick
    Definition: IRrecv.h:37
    -
    uint16_t matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
    Match & decode a Manchester Code data (<= 64bits.
    Definition: IRrecv.cpp:1580
    +
    uint16_t matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
    Match & decode a Manchester Code data (<= 64bits.
    Definition: IRrecv.cpp:1595
    void resume(void)
    Resume collection of received IR data.
    Definition: IRrecv.cpp:280
    -
    const uint16_t kHaierACYRW02Bits
    Definition: IRremoteESP8266.h:933
    -
    const uint16_t kHitachiAc424Bits
    Definition: IRremoteESP8266.h:949
    +
    const uint16_t kHaierACYRW02Bits
    Definition: IRremoteESP8266.h:959
    +
    const uint16_t kHitachiAc424Bits
    Definition: IRremoteESP8266.h:975
    bool decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)
    Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.
    Definition: ir_Whirlpool.cpp:652
    const uint16_t kMarkExcess
    Definition: IRrecv.h:24
    bool decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)
    Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.
    Definition: ir_Haier.cpp:1020
    -
    bool decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)
    Decode the supplied LG message. Status: STABLE / Working.
    Definition: ir_LG.cpp:154
    +
    bool decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)
    Decode the supplied LG message. Status: STABLE / Working.
    Definition: ir_LG.cpp:139
    bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
    Decode the supplied Coolix A/C message. Status: STABLE / Known Working.
    Definition: ir_Coolix.cpp:650
    -
    const uint16_t kLegoPfBits
    Definition: IRremoteESP8266.h:958
    -
    const uint16_t kSharpBits
    Definition: IRremoteESP8266.h:1028
    -
    bool decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)
    Decode the supplied Goodweather message. Status: BETA / Probably works.
    Definition: ir_Goodweather.cpp:429
    +
    const uint16_t kLegoPfBits
    Definition: IRremoteESP8266.h:984
    +
    const uint16_t kSharpBits
    Definition: IRremoteESP8266.h:1058
    +
    bool decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)
    Decode the supplied Goodweather message. Status: BETA / Probably works.
    Definition: ir_Goodweather.cpp:424
    uint8_t _tolerance
    Definition: IRrecv.h:152
    const uint8_t kDefaultESP32Timer
    Definition: IRrecv.h:56
    -
    uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
    Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.
    Definition: IRrecv.cpp:1473
    +
    uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
    Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.
    Definition: IRrecv.cpp:1488
    bool decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)
    Decode the supplied Inax Toilet message. Status: Stable / Known working.
    Definition: ir_Inax.cpp:51
    void crudeNoiseFilter(decode_results *results, const uint16_t floor=0)
    Remove or merge pulses in the capture buffer that are too short.
    Definition: IRrecv.cpp:345
    bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
    bool decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)
    Decode the supplied Samsung 32-bit message. Status: STABLE.
    Definition: ir_Samsung.cpp:120
    bool decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)
    Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.
    Definition: ir_Lego.cpp:71
    -
    const uint16_t kRCMMBits
    Definition: IRremoteESP8266.h:1011
    -
    const uint8_t kVestelAcBits
    Definition: IRremoteESP8266.h:1062
    -
    const uint16_t kTranscoldBits
    Definition: IRremoteESP8266.h:1053
    -
    const uint16_t kInaxBits
    Definition: IRremoteESP8266.h:950
    +
    const uint16_t kRCMMBits
    Definition: IRremoteESP8266.h:1041
    +
    const uint8_t kVestelAcBits
    Definition: IRremoteESP8266.h:1092
    +
    const uint16_t kTranscoldBits
    Definition: IRremoteESP8266.h:1083
    +
    const uint16_t kInaxBits
    Definition: IRremoteESP8266.h:976
    bool decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)
    Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working....
    Definition: ir_MitsubishiHeavy.cpp:1113
    uint16_t _unknown_threshold
    Definition: IRrecv.h:157
    -
    const uint16_t kDaikin176Bits
    Definition: IRremoteESP8266.h:897
    -
    bool decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)
    Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.
    Definition: ir_Midea.cpp:531
    +
    const uint16_t kDaikin176Bits
    Definition: IRremoteESP8266.h:921
    +
    bool decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)
    Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.
    Definition: ir_Midea.cpp:759
    void disableIRIn(void)
    Stop collection of any received IR data. Disable any timers and interrupts.
    Definition: IRrecv.cpp:264
    -
    bool decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)
    Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.
    Definition: ir_Hitachi.cpp:983
    +
    bool decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)
    Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.
    Definition: ir_Hitachi.cpp:959
    bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)
    Decode the supplied Toshiba A/C message. Status: STABLE / Working.
    Definition: ir_Toshiba.cpp:472
    -
    uint32_t ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Calculate the upper bound of the nr. of ticks.
    Definition: IRrecv.cpp:919
    -
    const uint16_t kSamsungBits
    Definition: IRremoteESP8266.h:1012
    +
    uint32_t ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
    Calculate the upper bound of the nr. of ticks.
    Definition: IRrecv.cpp:934
    +
    const uint16_t kSamsungBits
    Definition: IRremoteESP8266.h:1042
    uint8_t _timer_num
    Definition: IRrecv.h:154
    -
    const uint16_t kDaikin64Bits
    Definition: IRremoteESP8266.h:885
    -
    const uint16_t kDaikin216Bits
    Definition: IRremoteESP8266.h:900
    -
    const uint16_t kMitsubishi136Bits
    Definition: IRremoteESP8266.h:979
    -
    uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode the typical data section of an IR message. The bytes are stored at result_ptr....
    Definition: IRrecv.cpp:1142
    -
    const uint16_t kSanyoAcBits
    Definition: IRremoteESP8266.h:1020
    -
    const uint16_t kMitsubishi112Bits
    Definition: IRremoteESP8266.h:982
    -
    const uint16_t kEpsonBits
    Definition: IRremoteESP8266.h:912
    +
    const uint16_t kDaikin64Bits
    Definition: IRremoteESP8266.h:909
    +
    const uint16_t kPanasonicAc32Bits
    Definition: IRremoteESP8266.h:1033
    +
    const uint16_t kDaikin216Bits
    Definition: IRremoteESP8266.h:924
    +
    const uint16_t kMitsubishi136Bits
    Definition: IRremoteESP8266.h:1008
    +
    uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
    Match & decode the typical data section of an IR message. The bytes are stored at result_ptr....
    Definition: IRrecv.cpp:1157
    +
    const uint16_t kSanyoAcBits
    Definition: IRremoteESP8266.h:1050
    +
    const uint16_t kMitsubishi112Bits
    Definition: IRremoteESP8266.h:1011
    +
    const uint16_t kEpsonBits
    Definition: IRremoteESP8266.h:936
    uint8_t state[kStateSizeMax]
    Definition: IRrecv.h:104
    -
    bool decodeHash(decode_results *results)
    Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encodi...
    Definition: IRrecv.cpp:1063
    +
    bool decodeHash(decode_results *results)
    Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encodi...
    Definition: IRrecv.cpp:1078
    const uint8_t kSpaceState
    Definition: IRrecv.h:33
    -
    const uint16_t kLgBits
    Definition: IRremoteESP8266.h:960
    -
    uint8_t _validTolerance(const uint8_t percentage)
    Convert the tolerance percentage into something valid.
    Definition: IRrecv.cpp:897
    +
    const uint16_t kLgBits
    Definition: IRremoteESP8266.h:986
    +
    uint8_t _validTolerance(const uint8_t percentage)
    Convert the tolerance percentage into something valid.
    Definition: IRrecv.cpp:912
    const uint16_t kHeader
    Definition: IRrecv.h:18
    const uint32_t kFnvBasis32
    Definition: IRrecv.h:53
    diff --git a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRremoteESP8266_8h.html b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRremoteESP8266_8h.html similarity index 97% rename from lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRremoteESP8266_8h.html rename to lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRremoteESP8266_8h.html index 89889d0dc..bc9e49713 100644 --- a/lib/lib_basic/IRremoteESP8266-2.7.11/docs/doxygen/html/IRremoteESP8266_8h.html +++ b/lib/lib_basic/IRremoteESP8266-2.7.12/docs/doxygen/html/IRremoteESP8266_8h.html @@ -202,7 +202,11 @@ Enumerations   METZ, TRANSCOLD, TECHNIBEL_AC, -kLastDecodeType = TECHNIBEL_AC +MIRAGE, +
    +  ELITESCREENS, +PANASONIC_AC32, +kLastDecodeType = PANASONIC_AC32
    }  Enumerator for defining and numbering of supported IR protocol. More...
    @@ -340,6 +344,10 @@ Variables   const uint16_t kElectraAcMinRepeat = kNoRepeat   +const uint16_t kEliteScreensBits = 32 +  +const uint16_t kEliteScreensDefaultRepeat = kSingleRepeat +  const uint16_t kFujitsuAcMinRepeat = kNoRepeat   const uint16_t kFujitsuAcStateLength = 16 @@ -448,6 +456,12 @@ Variables   const uint16_t kMidea24MinRepeat = kSingleRepeat   +const uint16_t kMirageStateLength = 15 +  +const uint16_t kMirageBits = kMirageStateLength * 8 +  +const uint16_t kMirageMinRepeat = kNoRepeat +  const uint16_t kMitsubishiBits = 16   const uint16_t kMitsubishiMinRepeat = kSingleRepeat @@ -510,6 +524,8 @@ Variables   const uint16_t kPanasonicAcDefaultRepeat = kNoRepeat   +const uint16_t kPanasonicAc32Bits = 32 +  const uint16_t kPioneerBits = 64   const uint16_t kProntoMinLength = 6 @@ -761,6 +777,9 @@ Variables METZ  TRANSCOLD  TECHNIBEL_AC  +MIRAGE  +ELITESCREENS  +PANASONIC_AC32  kLastDecodeType  @@ -1591,6 +1610,34 @@ Variables
    +
    + + +

    ◆ kEliteScreensBits

    + +
    +
    + + + + +
    const uint16_t kEliteScreensBits = 32
    +
    + +
    +
    + +

    ◆ kEliteScreensDefaultRepeat

    + +
    +
    + + + + +
    const uint16_t kEliteScreensDefaultRepeat = kSingleRepeat
    +
    +
    @@ -2375,6 +2422,48 @@ Variables
    +
    + + +

    ◆ kMirageBits

    + +
    +
    + + + + +
    const uint16_t kMirageBits = kMirageStateLength * 8
    +
    + +
    +
    + +

    ◆ kMirageMinRepeat

    + +
    +
    + + + + +
    const uint16_t kMirageMinRepeat = kNoRepeat
    +
    + +
    +
    + +

    ◆ kMirageStateLength

    + +
    +
    + + + + +
    const uint16_t kMirageStateLength = 15
    +
    +
    @@ -2725,6 +2814,20 @@ Variables
    +
    + + +

    ◆ kPanasonicAc32Bits

    + +
    +
    + + + + +
    const uint16_t kPanasonicAc32Bits = 32
    +
    +
    @@ -3738,8 +3841,8 @@ Variables -
    const uint16_t kSanyoLC7461CommandBits
    Definition: IRremoteESP8266.h:1023
    -
    const uint16_t kSanyoLC7461AddressBits
    Definition: IRremoteESP8266.h:1022
    +
    const uint16_t kSanyoLC7461CommandBits
    Definition: IRremoteESP8266.h:1053
    +
    const uint16_t kSanyoLC7461AddressBits
    Definition: IRremoteESP8266.h:1052