From e651c01832b3b6215f0fd46120972d9b56fdab03 Mon Sep 17 00:00:00 2001 From: peteGSX <97784652+peteGSX@users.noreply.github.com> Date: Tue, 4 Feb 2025 01:38:10 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20DCC-EX/C?= =?UTF-8?q?ommandStation-EX@9fbeb361092dfc22c545f62a515138a34c2cdb0a=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildinfo | 4 + .nojekyll | 0 EXRAIL2MacroReset_8h.html | 5699 ----------------- EXRAIL2MacroReset_8h_source.html | 459 -- _sources/index.rst.txt | 18 + .../_sphinx_javascript_frameworks_compat.js | 123 + _static/basic.css | 914 +++ _static/css/badge_only.css | 1 + _static/css/dccex_theme.css | 884 +++ _static/css/fonts/Roboto-Slab-Bold.woff | Bin 0 -> 87624 bytes _static/css/fonts/Roboto-Slab-Bold.woff2 | Bin 0 -> 67312 bytes _static/css/fonts/Roboto-Slab-Regular.woff | Bin 0 -> 86288 bytes _static/css/fonts/Roboto-Slab-Regular.woff2 | Bin 0 -> 66444 bytes _static/css/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes _static/css/fonts/fontawesome-webfont.svg | 2671 ++++++++ _static/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes _static/css/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes _static/css/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes _static/css/fonts/lato-bold-italic.woff | Bin 0 -> 323344 bytes _static/css/fonts/lato-bold-italic.woff2 | Bin 0 -> 193308 bytes _static/css/fonts/lato-bold.woff | Bin 0 -> 309728 bytes _static/css/fonts/lato-bold.woff2 | Bin 0 -> 184912 bytes _static/css/fonts/lato-normal-italic.woff | Bin 0 -> 328412 bytes _static/css/fonts/lato-normal-italic.woff2 | Bin 0 -> 195704 bytes _static/css/fonts/lato-normal.woff | Bin 0 -> 309192 bytes _static/css/fonts/lato-normal.woff2 | Bin 0 -> 182708 bytes _static/css/sphinx_design_overrides.css | 9 + _static/css/theme.css | 4 + _static/dark_mode_css/custom.css | 77 + _static/dark_mode_css/dark.css | 520 ++ _static/dark_mode_css/general.css | 68 + _static/dark_mode_js/default_dark.js | 13 + _static/dark_mode_js/default_light.js | 13 + _static/dark_mode_js/theme_switcher.js | 39 + _static/doctools.js | 149 + _static/documentation_options.js | 13 + _static/favicon.ico | Bin 0 -> 641670 bytes _static/file.png | Bin 0 -> 286 bytes _static/fonts/Lato/lato-bold.eot | Bin 0 -> 256056 bytes _static/fonts/Lato/lato-bold.ttf | Bin 0 -> 600856 bytes _static/fonts/Lato/lato-bold.woff | Bin 0 -> 309728 bytes _static/fonts/Lato/lato-bold.woff2 | Bin 0 -> 184912 bytes _static/fonts/Lato/lato-bolditalic.eot | Bin 0 -> 266158 bytes _static/fonts/Lato/lato-bolditalic.ttf | Bin 0 -> 622572 bytes _static/fonts/Lato/lato-bolditalic.woff | Bin 0 -> 323344 bytes _static/fonts/Lato/lato-bolditalic.woff2 | Bin 0 -> 193308 bytes _static/fonts/Lato/lato-italic.eot | Bin 0 -> 268604 bytes _static/fonts/Lato/lato-italic.ttf | Bin 0 -> 639388 bytes _static/fonts/Lato/lato-italic.woff | Bin 0 -> 328412 bytes _static/fonts/Lato/lato-italic.woff2 | Bin 0 -> 195704 bytes _static/fonts/Lato/lato-regular.eot | Bin 0 -> 253461 bytes _static/fonts/Lato/lato-regular.ttf | Bin 0 -> 607720 bytes _static/fonts/Lato/lato-regular.woff | Bin 0 -> 309192 bytes _static/fonts/Lato/lato-regular.woff2 | Bin 0 -> 182708 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.eot | Bin 0 -> 79520 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.ttf | Bin 0 -> 170616 bytes .../fonts/RobotoSlab/roboto-slab-v7-bold.woff | Bin 0 -> 87624 bytes .../RobotoSlab/roboto-slab-v7-bold.woff2 | Bin 0 -> 67312 bytes .../RobotoSlab/roboto-slab-v7-regular.eot | Bin 0 -> 78331 bytes .../RobotoSlab/roboto-slab-v7-regular.ttf | Bin 0 -> 169064 bytes .../RobotoSlab/roboto-slab-v7-regular.woff | Bin 0 -> 86288 bytes .../RobotoSlab/roboto-slab-v7-regular.woff2 | Bin 0 -> 66444 bytes _static/images/favicon.ico | Bin 0 -> 641670 bytes _static/images/logo.png | Bin 0 -> 26344 bytes _static/images/product-logo-ex-rail.png | Bin 0 -> 20829 bytes jquery.js => _static/jquery.js | 32 - _static/js/badge_only.js | 1 + _static/js/theme.js | 1 + _static/js/versions.js | 228 + _static/language_data.js | 192 + _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/product-logo-ex-rail.png | Bin 0 -> 20829 bytes _static/pygments.css | 75 + _static/searchtools.js | 632 ++ _static/sphinx_highlight.js | 154 + bc_s.png | Bin 676 -> 0 bytes bc_sd.png | Bin 635 -> 0 bytes closed.png | Bin 132 -> 0 bytes doc.svg | 12 - docd.svg | 12 - doxygen.css | 2045 ------ doxygen.svg | 28 - dynsections.js | 192 - files.html | 87 - folderclosed.svg | 11 - folderclosedd.svg | 11 - folderopen.svg | 17 - folderopend.svg | 12 - genindex.html | 660 ++ globals.html | 338 - globals_defs.html | 338 - index.html | 2487 ++++++- menu.js | 136 - menudata.js | 77 - minus.svg | 8 - minusd.svg | 8 - nav_f.png | Bin 153 -> 0 bytes nav_fd.png | Bin 169 -> 0 bytes nav_g.png | Bin 95 -> 0 bytes nav_h.png | Bin 98 -> 0 bytes nav_hd.png | Bin 114 -> 0 bytes objects.inv | Bin 0 -> 4757 bytes open.png | Bin 123 -> 0 bytes plus.svg | 9 - plusd.svg | 9 - robots.txt | 3 + search.html | 137 + search/all_0.js | 19 - search/all_1.js | 5 - search/all_10.js | 20 - search/all_11.js | 30 - search/all_12.js | 8 - search/all_13.js | 5 - search/all_14.js | 5 - search/all_15.js | 6 - search/all_16.js | 8 - search/all_2.js | 8 - search/all_3.js | 13 - search/all_4.js | 12 - search/all_5.js | 11 - search/all_6.js | 4 - search/all_7.js | 5 - search/all_8.js | 20 - search/all_9.js | 5 - search/all_a.js | 4 - search/all_b.js | 9 - search/all_c.js | 5 - search/all_d.js | 5 - search/all_e.js | 23 - search/all_f.js | 11 - search/close.svg | 18 - search/defines_0.js | 19 - search/defines_1.js | 5 - search/defines_10.js | 19 - search/defines_11.js | 30 - search/defines_12.js | 8 - search/defines_13.js | 5 - search/defines_14.js | 5 - search/defines_15.js | 6 - search/defines_16.js | 8 - search/defines_2.js | 8 - search/defines_3.js | 13 - search/defines_4.js | 10 - search/defines_5.js | 11 - search/defines_6.js | 4 - search/defines_7.js | 5 - search/defines_8.js | 19 - search/defines_9.js | 5 - search/defines_a.js | 4 - search/defines_b.js | 8 - search/defines_c.js | 5 - search/defines_d.js | 5 - search/defines_e.js | 23 - search/defines_f.js | 11 - search/files_0.js | 4 - search/mag.svg | 24 - search/mag_d.svg | 24 - search/mag_sel.svg | 31 - search/mag_seld.svg | 31 - search/pages_0.js | 4 - search/pages_1.js | 4 - search/pages_2.js | 4 - search/search.css | 291 - search/search.js | 840 --- search/searchdata.js | 24 - searchindex.js | 1 + sitemap.xml | 2 + splitbar.png | Bin 314 -> 0 bytes splitbard.png | Bin 282 -> 0 bytes sync_off.png | Bin 853 -> 0 bytes sync_on.png | Bin 845 -> 0 bytes tab_a.png | Bin 142 -> 0 bytes tab_ad.png | Bin 135 -> 0 bytes tab_b.png | Bin 169 -> 0 bytes tab_bd.png | Bin 173 -> 0 bytes tab_h.png | Bin 177 -> 0 bytes tab_hd.png | Bin 180 -> 0 bytes tab_s.png | Bin 184 -> 0 bytes tab_sd.png | Bin 188 -> 0 bytes tabs.css | 1 - 181 files changed, 10010 insertions(+), 11400 deletions(-) create mode 100644 .buildinfo create mode 100644 .nojekyll delete mode 100644 EXRAIL2MacroReset_8h.html delete mode 100644 EXRAIL2MacroReset_8h_source.html create mode 100644 _sources/index.rst.txt create mode 100644 _static/_sphinx_javascript_frameworks_compat.js create mode 100644 _static/basic.css create mode 100644 _static/css/badge_only.css create mode 100644 _static/css/dccex_theme.css create mode 100644 _static/css/fonts/Roboto-Slab-Bold.woff create mode 100644 _static/css/fonts/Roboto-Slab-Bold.woff2 create mode 100644 _static/css/fonts/Roboto-Slab-Regular.woff create mode 100644 _static/css/fonts/Roboto-Slab-Regular.woff2 create mode 100644 _static/css/fonts/fontawesome-webfont.eot create mode 100644 _static/css/fonts/fontawesome-webfont.svg create mode 100644 _static/css/fonts/fontawesome-webfont.ttf create mode 100644 _static/css/fonts/fontawesome-webfont.woff create mode 100644 _static/css/fonts/fontawesome-webfont.woff2 create mode 100644 _static/css/fonts/lato-bold-italic.woff create mode 100644 _static/css/fonts/lato-bold-italic.woff2 create mode 100644 _static/css/fonts/lato-bold.woff create mode 100644 _static/css/fonts/lato-bold.woff2 create mode 100644 _static/css/fonts/lato-normal-italic.woff create mode 100644 _static/css/fonts/lato-normal-italic.woff2 create mode 100644 _static/css/fonts/lato-normal.woff create mode 100644 _static/css/fonts/lato-normal.woff2 create mode 100644 _static/css/sphinx_design_overrides.css create mode 100644 _static/css/theme.css create mode 100644 _static/dark_mode_css/custom.css create mode 100644 _static/dark_mode_css/dark.css create mode 100644 _static/dark_mode_css/general.css create mode 100644 _static/dark_mode_js/default_dark.js create mode 100644 _static/dark_mode_js/default_light.js create mode 100644 _static/dark_mode_js/theme_switcher.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/favicon.ico create mode 100644 _static/file.png create mode 100644 _static/fonts/Lato/lato-bold.eot create mode 100644 _static/fonts/Lato/lato-bold.ttf create mode 100644 _static/fonts/Lato/lato-bold.woff create mode 100644 _static/fonts/Lato/lato-bold.woff2 create mode 100644 _static/fonts/Lato/lato-bolditalic.eot create mode 100644 _static/fonts/Lato/lato-bolditalic.ttf create mode 100644 _static/fonts/Lato/lato-bolditalic.woff create mode 100644 _static/fonts/Lato/lato-bolditalic.woff2 create mode 100644 _static/fonts/Lato/lato-italic.eot create mode 100644 _static/fonts/Lato/lato-italic.ttf create mode 100644 _static/fonts/Lato/lato-italic.woff create mode 100644 _static/fonts/Lato/lato-italic.woff2 create mode 100644 _static/fonts/Lato/lato-regular.eot create mode 100644 _static/fonts/Lato/lato-regular.ttf create mode 100644 _static/fonts/Lato/lato-regular.woff create mode 100644 _static/fonts/Lato/lato-regular.woff2 create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-bold.eot create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-bold.woff create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-regular.eot create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-regular.woff create mode 100644 _static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 create mode 100644 _static/images/favicon.ico create mode 100644 _static/images/logo.png create mode 100644 _static/images/product-logo-ex-rail.png rename jquery.js => _static/jquery.js (50%) create mode 100644 _static/js/badge_only.js create mode 100644 _static/js/theme.js create mode 100644 _static/js/versions.js create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/product-logo-ex-rail.png create mode 100644 _static/pygments.css create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx_highlight.js delete mode 100644 bc_s.png delete mode 100644 bc_sd.png delete mode 100644 closed.png delete mode 100644 doc.svg delete mode 100644 docd.svg delete mode 100644 doxygen.css delete mode 100644 doxygen.svg delete mode 100644 dynsections.js delete mode 100644 files.html delete mode 100644 folderclosed.svg delete mode 100644 folderclosedd.svg delete mode 100644 folderopen.svg delete mode 100644 folderopend.svg create mode 100644 genindex.html delete mode 100644 globals.html delete mode 100644 globals_defs.html delete mode 100644 menu.js delete mode 100644 menudata.js delete mode 100644 minus.svg delete mode 100644 minusd.svg delete mode 100644 nav_f.png delete mode 100644 nav_fd.png delete mode 100644 nav_g.png delete mode 100644 nav_h.png delete mode 100644 nav_hd.png create mode 100644 objects.inv delete mode 100644 open.png delete mode 100644 plus.svg delete mode 100644 plusd.svg create mode 100644 robots.txt create mode 100644 search.html delete mode 100644 search/all_0.js delete mode 100644 search/all_1.js delete mode 100644 search/all_10.js delete mode 100644 search/all_11.js delete mode 100644 search/all_12.js delete mode 100644 search/all_13.js delete mode 100644 search/all_14.js delete mode 100644 search/all_15.js delete mode 100644 search/all_16.js delete mode 100644 search/all_2.js delete mode 100644 search/all_3.js delete mode 100644 search/all_4.js delete mode 100644 search/all_5.js delete mode 100644 search/all_6.js delete mode 100644 search/all_7.js delete mode 100644 search/all_8.js delete mode 100644 search/all_9.js delete mode 100644 search/all_a.js delete mode 100644 search/all_b.js delete mode 100644 search/all_c.js delete mode 100644 search/all_d.js delete mode 100644 search/all_e.js delete mode 100644 search/all_f.js delete mode 100644 search/close.svg delete mode 100644 search/defines_0.js delete mode 100644 search/defines_1.js delete mode 100644 search/defines_10.js delete mode 100644 search/defines_11.js delete mode 100644 search/defines_12.js delete mode 100644 search/defines_13.js delete mode 100644 search/defines_14.js delete mode 100644 search/defines_15.js delete mode 100644 search/defines_16.js delete mode 100644 search/defines_2.js delete mode 100644 search/defines_3.js delete mode 100644 search/defines_4.js delete mode 100644 search/defines_5.js delete mode 100644 search/defines_6.js delete mode 100644 search/defines_7.js delete mode 100644 search/defines_8.js delete mode 100644 search/defines_9.js delete mode 100644 search/defines_a.js delete mode 100644 search/defines_b.js delete mode 100644 search/defines_c.js delete mode 100644 search/defines_d.js delete mode 100644 search/defines_e.js delete mode 100644 search/defines_f.js delete mode 100644 search/files_0.js delete mode 100644 search/mag.svg delete mode 100644 search/mag_d.svg delete mode 100644 search/mag_sel.svg delete mode 100644 search/mag_seld.svg delete mode 100644 search/pages_0.js delete mode 100644 search/pages_1.js delete mode 100644 search/pages_2.js delete mode 100644 search/search.css delete mode 100644 search/search.js delete mode 100644 search/searchdata.js create mode 100644 searchindex.js create mode 100644 sitemap.xml delete mode 100644 splitbar.png delete mode 100644 splitbard.png delete mode 100644 sync_off.png delete mode 100644 sync_on.png delete mode 100644 tab_a.png delete mode 100644 tab_ad.png delete mode 100644 tab_b.png delete mode 100644 tab_bd.png delete mode 100644 tab_h.png delete mode 100644 tab_hd.png delete mode 100644 tab_s.png delete mode 100644 tab_sd.png delete mode 100644 tabs.css diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..1c5b8fa --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: da113a45a6751a0204a6cf33cb5991eb +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/EXRAIL2MacroReset_8h.html b/EXRAIL2MacroReset_8h.html deleted file mode 100644 index ec3b75b..0000000 --- a/EXRAIL2MacroReset_8h.html +++ /dev/null @@ -1,5699 +0,0 @@ - - -
- - - - -
- EX-CommandStation EXRAIL Documentation
-
- EXRAIL Language
- |
-
Go to the source code of this file.
--Macros | |
#define | ACTIVATE(addr, subaddr) |
Send DCC Accessory Activate packet (gate on then off) | |
#define | ACTIVATEL(longaddr) |
Send DCC Accessory Activate packet (gate on then off) | |
#define | AFTER(sensor_id, timer...) |
Wait for sensor activated, then decativated for given time. | |
#define | AFTEROVERLOAD(track_id) |
Wait for overload to be resolved. | |
#define | ALIAS(name, value...) |
defines a named numeric value. | |
#define | AMBER(signal_id) |
Sets a signal to amber state. | |
#define | ANOUT(vpin, value, param1, param2) |
Writes to the HAL analog output interface of a device driver. Values and meanings of extra parameters depend on driver. | |
#define | AT(sensor_id) |
wait intil a sensor becomes active | |
#define | ASPECT(address, value) |
Sends a DCC aspect value to an accessory address. May also change status of a signal defined using this aspect. | |
#define | ATGTE(sensor_id, value) |
Wait for analog sensor to be greater than given value. | |
#define | ATLT(sensor_id, value) |
Wait for analog sensor value to be less than given value. | |
#define | ATTIMEOUT(sensor_id, timeout_ms) |
Wait for sensor active, with timeout. Use IFTIMEOUT to determine whether the AT was satisfied. | |
#define | AUTOMATION(id, description) |
Defies starting point of a sequence that will be shown as an Automation by the throttles. Automations are started by the throttle handing over a loco id to be driven. | |
#define | AUTOSTART |
A new task will be created starting from this point at Command Station startup - | |
#define | BLINK(vpin, onDuty, offDuty) |
Starts a blinking process for a vpin (typically a LED) Stop blink with SET or RESET. | |
#define | BROADCAST(msg) |
Send raw message text to all throttles using the DCC-EX protocol. | |
#define | CALL(route) |
transfer control to another sequence with expectation to return | |
#define | CLEAR_STASH(id) |
Clears loco stash value - | |
#define | CLEAR_ALL_STASH(id) |
??????????????????????????????????????? | |
#define | CLOSE(id) |
Close turnout by id. | |
#define | CONFIGURE_SERVO(vpin, pos1, pos2, profile) |
setup servo movement parameters for non-turnout | |
#define | DCC_SIGNAL(id, add, subaddr) |
Define a DCC accessory signal with short address. | |
#define | DCCX_SIGNAL(id, redAspect, amberAspect, greenAspect) |
DEfine advanced DCC accessory signal with aspects. | |
#define | DCC_TURNTABLE(id, home, description...) |
?????????????????????????????????? | |
#define | DEACTIVATE(addr, subaddr) |
Sends DCC Deactivate packet (gate on, gate off) to short address. | |
#define | DEACTIVATEL(addr) |
Sends DCC Deactivate packet (gate on, gate off) to long address. | |
#define | DELAY(mindelay) |
Waits for given milliseconds delay (This is not blocking) | |
#define | DELAYMINS(mindelay) |
Waits for given minutes delay (This is not blocking) | |
#define | DELAYRANDOM(mindelay, maxdelay) |
Waits for random delay between min and max milliseconds (This is not blocking) | |
#define | DONE |
Stops task loco (if any) and terminates current task. | |
#define | DRIVE(analogpin) |
RESERVED do not use. | |
#define | ELSE |
introduces alternate processing path after any kind of IF | |
#define | ENDEXRAIL |
Obsolete, has no effect. | |
#define | ENDIF |
determines end of IF(any type) block. IF something ENDIF, or - IF something ELSE something ENDIF - | |
#define | ENDTASK |
same as DONE | |
#define | ESTOP |
Performs emergency stop on current task loco. | |
#define | EXRAIL |
OBSOLETE ignored. | |
#define | EXTT_TURNTABLE(id, vpin, home, description...) |
?????????????????????? | |
#define | FADE(pin, value, ms) |
Modifies analog value slowly taking a given time. | |
#define | FOFF(func) |
Turns off loco function for current loco. | |
#define | FOLLOW(route) |
Task processing follows given route or sequence (Effectively a GoTo) | |
#define | FON(func) |
Turn on current loc finction. | |
#define | FORGET |
Removes current loco from task and DCC reminders table. | |
#define | FREE(blockid) |
Frees logical token for given block. | |
#define | FTOGGLE(func) |
Toggles function for current loco. | |
#define | FWD(speed) |
Instructs current loco to set DCC speed. | |
#define | GREEN(signal_id) |
Sets signal to green state. | |
#define | HAL(haltype, params...) |
Defines VPIN mapping for specific hardware drivers. | |
#define | HAL_IGNORE_DEFAULTS |
System will ignore default HAL settings. | |
#define | IF(sensor_id) |
Checks sensor state, If false jumps to matching nested ELSE or ENDIF. | |
#define | IFAMBER(signal_id) |
Checks if signal is in AMBER state. | |
#define | IFCLOSED(turnout_id) |
Checks if given turnout is in close state. | |
#define | IFGREEN(signal_id) |
Checks if given signal is in GREEN state. | |
#define | IFGTE(sensor_id, value) |
Checks if analog sensor >= value. | |
#define | IFLOCO(loco_id) |
Checks if current task loco = loco_id. | |
#define | IFLT(sensor_id, value) |
Checks if analog sensor < value. | |
#define | IFNOT(sensor_id) |
Inverse of IF. | |
#define | IFRANDOM(percent) |
randomly satisfield IF at given percent probability | |
#define | IFRED(signal_id) |
Checks if given signal is in RED state. | |
#define | IFTHROWN(turnout_id) |
Checks if given turnout is in THROWN state. | |
#define | IFRESERVE(block) |
Agttempts to reserve block token and if satisfiled the block remains reserved. | |
#define | IFTIMEOUT |
Checks TIMEOUT state after an AT/AFTER request with timeout value. | |
#define | IFTTPOSITION(turntable_id, position) |
Checks if GTurntable is in given position. | |
#define | IFRE(sensor_id, value) |
???????????????????????????????????????? | |
#define | INVERT_DIRECTION |
Marks current task so that FWD and REV commands are inverted. | |
#define | JMRI_SENSOR(vpin, count...) |
DEfines multiple JMRI | |
#define | JOIN |
Switches PROG track to receive MAIN track DCC packets. (Drive on PROG track) | |
#define | KILLALL |
Tertminates all running EXRAIL tasks. | |
#define | LATCH(sensor_id) |
Make all AT/AFTER/IF see sensor active without checking hardware. | |
#define | LCC(eventid) |
Issue event to LCC. | |
#define | LCCX(senderid, eventid) |
Issue LCC event while impersonating another sender. | |
#define | LCD(row, msg) |
Write message on row of default configured LCD/OLED. | |
#define | SCREEN(display, row, msg) |
Send message to external display hadlers. | |
#define | LCN(msg) |
?????? | |
#define | MESSAGE(msg) |
Send a human readable message to all throttle users. | |
#define | MOVETT(id, steps, activity) |
??????????????????? | |
#define | NEOPIXEL(id, r, g, b, count...) |
Set a NEOPIXEL vpin to a given red/green/blue colour. | |
#define | NEOPIXEL_SIGNAL(sigid, redcolour, ambercolour, greencolour) |
Define a signal that uses a single multi colour pixel. | |
#define | ACON(eventid) |
Send MERG CBUS ACON to Adapter. | |
#define | ACOF(eventid) |
Send MERG CBUS ACOF to Adapter. | |
#define | ONACON(eventid) |
Start task here when ACON for event receied from MERG CBUS. | |
#define | ONACOF(eventid) |
Start task here when ACOF for event receied from MERG CBUS. | |
#define | ONACTIVATE(addr, subaddr) |
Start task here when DCC Activate sent for short address. | |
#define | ONACTIVATEL(linear) |
Start task here when DCC Activate sent for long address. | |
#define | ONAMBER(signal_id) |
Start task here when signal set to AMBER state. | |
#define | ONTIME(value) |
Start task here when fastclock mins in day=value. | |
#define | ONCLOCKTIME(hours, mins) |
Start task here when fastclock matches time. | |
#define | ONCLOCKMINS(mins) |
Start task here hourly when fastclock minutes matches. | |
#define | ONOVERLOAD(track_id) |
Start task here when given track goes into overload. | |
#define | ONDEACTIVATE(addr, subaddr) |
Start task here when DCC deactivate packet sent. | |
#define | ONDEACTIVATEL(linear) |
Start task here when DCC deactivate sent to linear address. | |
#define | ONCLOSE(turnout_id) |
Start task here when turnout closed. | |
#define | ONLCC(sender, event) |
?????????????????? | |
#define | ONGREEN(signal_id) |
Start task here when signal set to GREEN state. | |
#define | ONRED(signal_id) |
Start task here when signal set to RED state. | |
#define | ONROTATE(turntable_id) |
Start task here when turntable is rotated. | |
#define | ONTHROW(turnout_id) |
Start task here when turnout is Thrown. | |
#define | ONCHANGE(sensor_id) |
??????????????????? | |
#define | ONSENSOR(sensor_id) |
Start task here when sensor changes state (debounced) | |
#define | ONBUTTON(sensor_id) |
Start task here when sensor changes HIGH to LOW. | |
#define | PAUSE |
Pauses all EXRAIL tasks except the curremnt one. Other tasks ESTOP their locos until RESUME issued. | |
#define | PIN_TURNOUT(id, pin, description...) |
Defines a tirnout which operates on a signle pin. | |
#define | PRINT(msg) |
prints diagnostic message on USB serial | |
#define | PARSE(msg) |
Executes <> command as if entered from serial. | |
#define | PICKUP_STASH(id) |
Loads stashed value into current task loco. | |
#define | POM(cv, value) |
Write value to cv on current tasks loco (Program on Main) | |
#define | POWEROFF |
Powers off all tracks. | |
#define | POWERON |
Powers ON all tracks. | |
#define | READ_LOCO |
Reads loco Id from prog traqck and sets currenmt task loco id. | |
#define | RED(signal_id) |
sets signal to RED state | |
#define | RESERVE(blockid) |
Waits for token for block. If not available immediately, current task loco is stopped. | |
#define | RESET(pin, count...) |
Sets output puin LOW. | |
#define | RESUME |
Resumes PAUSEd tasks. | |
#define | RETURN |
Returns to CALL. | |
#define | REV(speed) |
Issues DCC speed packet for current loco in reverse. | |
#define | ROTATE(turntable_id, position, activity) |
???? | |
#define | ROTATE_DCC(turntable_id, position) |
???? | |
#define | ROSTER(cab, name, funcmap...) |
Describes a loco roster entry visible to throttles. | |
#define | ROUTE(id, description) |
DEfines starting point of a sequence that will appear as a route on throttle buttons. | |
#define | ROUTE_ACTIVE(id) |
Tells throttle to display the route button as active. | |
#define | ROUTE_INACTIVE(id) |
Tells throttle to display the route button as inactive. | |
#define | ROUTE_HIDDEN(id) |
Tells throttle to hide the route button. | |
#define | ROUTE_DISABLED(id) |
Tells throttle to display the route button as disabled. | |
#define | ROUTE_CAPTION(id, caption) |
Tells throttle to change thr route button caption. | |
#define | SENDLOCO(cab, route) |
Start a new task to drive the loco. | |
#define | SEQUENCE(id) |
Provides a unique label than can be used to call, follow or start. | |
#define | SERIAL(msg) |
Write direct to Serial output. | |
#define | SERIAL1(msg) |
Write direct to Serial1 output. | |
#define | SERIAL2(msg) |
Write direct to Serial2 output. | |
#define | SERIAL3(msg) |
Write direct to Serial3 output. | |
#define | SERIAL4(msg) |
Write direct to Serial4 output. | |
#define | SERIAL5(msg) |
Write direct to Serial5 output. | |
#define | SERIAL6(msg) |
Write direct to Serial6 output. | |
#define | SERVO(id, position, profile) |
Move servo to given position. | |
#define | SERVO2(id, position, duration) |
Move servo to given position taking time. | |
#define | SERVO_SIGNAL(vpin, redpos, amberpos, greenpos) |
Dedfine a servo based signal with 3 servo positions. | |
#define | SERVO_TURNOUT(id, pin, activeAngle, inactiveAngle, profile, description...) |
Define a servo driven turnout. | |
#define | SET(pin, count...) |
Set VPIN HIGH - | |
#define | SET_TRACK(track, mode) |
Set output track type. | |
#define | SET_POWER(track, onoff) |
Set track power mode. | |
#define | SETLOCO(loco) |
Sets the loco being handled by the current task. | |
#define | SETFREQ(freq) |
Sets the DC track PWM frequency. | |
#define | SIGNAL(redpin, amberpin, greenpin) |
Define a Signal with LOW=on leds (is that common annode???) | |
#define | SIGNALH(redpin, amberpin, greenpin) |
define a signal with HIGH=ON leds | |
#define | SPEED(speed) |
Changes current tasks loco speed without changing direction. | |
#define | START(route) |
Starts a new task at the given route/animation/sequence. | |
#define | STASH(id) |
saves cuttent tasks loco id in the stash array | |
#define | STEALTH(code...) |
Allows for embedding raw C++ code in context of current task. | |
#define | STEALTH_GLOBAL(code...) |
Allows for embedding raw c++ code out of context. | |
#define | STOP |
Same as SPEED(0) | |
#define | THROW(id) |
Throws given turnout. | |
#define | TOGGLE_TURNOUT(id) |
Toggles given turnout. | |
#define | TT_ADDPOSITION(turntable_id, position, value, angle, description...) |
Defines a turntable track position. | |
#define | TURNOUT(id, addr, subaddr, description...) |
Defines a DCC accessory turnout with legacy address. | |
#define | TURNOUTL(id, addr, description...) |
Defines a DCC accessory turnout with inear address. | |
#define | UNJOIN |
Disconnects PROG track from MAIN. | |
#define | UNLATCH(sensor_id) |
removes latched on flag | |
#define | VIRTUAL_SIGNAL(id) |
Defines a virtual (no hardware) signal. | |
#define | VIRTUAL_TURNOUT(id, description...) |
Defines a virtual (no hardware) turnout. | |
#define | WAITFOR(pin) |
??????????????????? | |
#define | WAITFORTT(turntable_id) |
#define | WITHROTTLE(msg) |
Broadcasts a string in Withrottle protocol format to all throttles using this protocol. | |
#define | XFOFF(cab, func) |
Turns function off for given loco. | |
#define | XFON(cab, func) |
Turns function ON for given loco. | |
#define | XFTOGGLE(cab, func) |
Toggles function state for given loco. | |
#define | XFWD(cab, speed) |
Sends DCC speed to loco in forward direction. | |
#define | XREV(cab, speed) |
Sends DCC speed to loco in reverse direction. | |
#define ACOF | -( | -- | eventid | ) | -- |
Send MERG CBUS ACOF to Adapter.
-eventid |
#define ACON | -( | -- | eventid | ) | -- |
Send MERG CBUS ACON to Adapter.
-eventid |
#define ACTIVATE | -( | -- | addr, | -
- | - | - | subaddr | -
- | ) | -- |
Send DCC Accessory Activate packet (gate on then off)
-addr | |
subaddr |
#define ACTIVATEL | -( | -- | longaddr | ) | -- |
Send DCC Accessory Activate packet (gate on then off)
-longaddr |
#define AFTER | -( | -- | sensor_id, | -
- | - | - | timer... | -
- | ) | -- |
Wait for sensor activated, then decativated for given time.
-sensor_id | |
timer... | optional wait in mS, default 500 |
#define AFTEROVERLOAD | -( | -- | track_id | ) | -- |
Wait for overload to be resolved.
-track_id | A..H |
#define ALIAS | -( | -- | name, | -
- | - | - | value... | -
- | ) | -- |
defines a named numeric value.
-name | |
value... | if omitted, a large negative value is created automatically |
#define AMBER | -( | -- | signal_id | ) | -- |
Sets a signal to amber state.
-signal_id |
#define ANOUT | -( | -- | vpin, | -
- | - | - | value, | -
- | - | - | param1, | -
- | - | - | param2 | -
- | ) | -- |
Writes to the HAL analog output interface of a device driver. Values and meanings of extra parameters depend on driver.
-vpin | Virtual pin number of device |
value | basic analog value |
param1 | device dependent |
param2 | device dependent |
#define ASPECT | -( | -- | address, | -
- | - | - | value | -
- | ) | -- |
Sends a DCC aspect value to an accessory address. May also change status of a signal defined using this aspect.
-address | |
value |
#define AT | -( | -- | sensor_id | ) | -- |
wait intil a sensor becomes active
-sensor_id | Use negative value for sensors that are HIGH when activated |
#define ATGTE | -( | -- | sensor_id, | -
- | - | - | value | -
- | ) | -- |
Wait for analog sensor to be greater than given value.
-sensor_id | |
value |
#define ATLT | -( | -- | sensor_id, | -
- | - | - | value | -
- | ) | -- |
Wait for analog sensor value to be less than given value.
-sensor_id | |
value |
#define ATTIMEOUT | -( | -- | sensor_id, | -
- | - | - | timeout_ms | -
- | ) | -- |
Wait for sensor active, with timeout. Use IFTIMEOUT to determine whether the AT was satisfied.
-sensor_id | |
timeout_ms |
#define AUTOMATION | -( | -- | id, | -
- | - | - | description | -
- | ) | -- |
Defies starting point of a sequence that will be shown as an Automation by the throttles. Automations are started by the throttle handing over a loco id to be driven.
-id | Unique sequence/route/automation id |
description | (Quoted text) will be shown on throttle button |
#define AUTOSTART | -
A new task will be created starting from this point at Command Station startup
-
#define BLINK | -( | -- | vpin, | -
- | - | - | onDuty, | -
- | - | - | offDuty | -
- | ) | -- |
Starts a blinking process for a vpin (typically a LED) Stop blink with SET or RESET.
-vpin | |
onDuty | Milliseconds with LED ON |
offDuty | Milliseconds with LED off |
#define BROADCAST | -( | -- | msg | ) | -- |
Send raw message text to all throttles using the DCC-EX protocol.
-msg | Quoted message - |
#define CALL | -( | -- | route | ) | -- |
transfer control to another sequence with expectation to return
-route | Sequence id, sequence must terminate of RETURN |
#define CLEAR_ALL_STASH | -( | -- | id | ) | -- |
???????????????????????????????????????
-id |
#define CLEAR_STASH | -( | -- | id | ) | -- |
Clears loco stash value
-
id | which stash to clear. |
#define CLOSE | -( | -- | id | ) | -- |
#define CONFIGURE_SERVO | -( | -- | vpin, | -
- | - | - | pos1, | -
- | - | - | pos2, | -
- | - | - | profile | -
- | ) | -- |
setup servo movement parameters for non-turnout
-vpin | must refer to a servo capable pin |
pos1 | SET position of servo |
pos2 | RESET position of servo |
profile | Movement profile (????????) |
#define DCC_SIGNAL | -( | -- | id, | -
- | - | - | add, | -
- | - | - | subaddr | -
- | ) | -- |
Define a DCC accessory signal with short address.
-id | Signal id used for all signal manipulation commands |
add | DCC address |
subaddr | DCC subaddress |
#define DCC_TURNTABLE | -( | -- | id, | -
- | - | - | home, | -
- | - | - | description... | -
- | ) | -- |
??????????????????????????????????
-id | |
home | |
description... |
#define DCCX_SIGNAL | -( | -- | id, | -
- | - | - | redAspect, | -
- | - | - | amberAspect, | -
- | - | - | greenAspect | -
- | ) | -- |
DEfine advanced DCC accessory signal with aspects.
-id | Signal id used for all signal manipulation commands |
redAspect | |
amberAspect | |
greenAspect |
#define DEACTIVATE | -( | -- | addr, | -
- | - | - | subaddr | -
- | ) | -- |
Sends DCC Deactivate packet (gate on, gate off) to short address.
-addr | |
subaddr |
#define DEACTIVATEL | -( | -- | addr | ) | -- |
Sends DCC Deactivate packet (gate on, gate off) to long address.
-addr |
#define DELAY | -( | -- | mindelay | ) | -- |
Waits for given milliseconds delay (This is not blocking)
-mindelay | mS |
#define DELAYMINS | -( | -- | mindelay | ) | -- |
Waits for given minutes delay (This is not blocking)
-mindelay |
#define DELAYRANDOM | -( | -- | mindelay, | -
- | - | - | maxdelay | -
- | ) | -- |
Waits for random delay between min and max milliseconds (This is not blocking)
-mindelay | mS |
maxdelay | mS |
#define DONE | -
Stops task loco (if any) and terminates current task.
- -#define DRIVE | -( | -- | analogpin | ) | -- |
RESERVED do not use.
-analogpin |
#define ELSE | -
introduces alternate processing path after any kind of IF
- -#define ENDEXRAIL | -
Obsolete, has no effect.
- -#define ENDIF | -
determines end of IF(any type) block. IF something ENDIF, or
- IF something ELSE something ENDIF
-
#define ENDTASK | -
same as DONE
-#define ESTOP | -
Performs emergency stop on current task loco.
- -#define EXRAIL | -
OBSOLETE ignored.
- -#define EXTT_TURNTABLE | -( | -- | id, | -
- | - | - | vpin, | -
- | - | - | home, | -
- | - | - | description... | -
- | ) | -- |
??????????????????????
-id | |
vpin | |
home | |
description... |
#define FADE | -( | -- | pin, | -
- | - | - | value, | -
- | - | - | ms | -
- | ) | -- |
Modifies analog value slowly taking a given time.
-pin | |
value | new target value |
ms | time to reach value |
#define FOFF | -( | -- | func | ) | -- |
#define FOLLOW | -( | -- | route | ) | -- |
Task processing follows given route or sequence (Effectively a GoTo)
-route |
#define FON | -( | -- | func | ) | -- |
#define FORGET | -
Removes current loco from task and DCC reminders table.
- -#define FREE | -( | -- | blockid | ) | -- |
#define FTOGGLE | -( | -- | func | ) | -- |
Toggles function for current loco.
-func |
#define FWD | -( | -- | speed | ) | -- |
Instructs current loco to set DCC speed.
-speed | 0..127 (1=ESTOP) |
#define GREEN | -( | -- | signal_id | ) | -- |
Sets signal to green state.
-signal_id |
#define HAL | -( | -- | haltype, | -
- | - | - | params... | -
- | ) | -- |
Defines VPIN mapping for specific hardware drivers.
-haltype | driver name, normally device type |
params... | depend on driver |
#define HAL_IGNORE_DEFAULTS | -
System will ignore default HAL settings.
- -#define IF | -( | -- | sensor_id | ) | -- |
Checks sensor state, If false jumps to matching nested ELSE or ENDIF.
-sensor_id | VPIN of sensor. Negative VPIM will invert sensor state. |
#define IFAMBER | -( | -- | signal_id | ) | -- |
#define IFCLOSED | -( | -- | turnout_id | ) | -- |
#define IFGREEN | -( | -- | signal_id | ) | -- |
#define IFGTE | -( | -- | sensor_id, | -
- | - | - | value | -
- | ) | -- |
#define IFLOCO | -( | -- | loco_id | ) | -- |
#define IFLT | -( | -- | sensor_id, | -
- | - | - | value | -
- | ) | -- |
#define IFNOT | -( | -- | sensor_id | ) | -- |
#define IFRANDOM | -( | -- | percent | ) | -- |
randomly satisfield IF at given percent probability
-percent |
#define IFRE | -( | -- | sensor_id, | -
- | - | - | value | -
- | ) | -- |
????????????????????????????????????????
-sensor_id | |
value |
#define IFRED | -( | -- | signal_id | ) | -- |
#define IFRESERVE | -( | -- | block | ) | -- |
Agttempts to reserve block token and if satisfiled the block remains reserved.
-block |
#define IFTHROWN | -( | -- | turnout_id | ) | -- |
#define IFTIMEOUT | -
Checks TIMEOUT state after an AT/AFTER request with timeout value.
-#define IFTTPOSITION | -( | -- | turntable_id, | -
- | - | - | position | -
- | ) | -- |
Checks if GTurntable is in given position.
-turntable_id | |
position |
#define INVERT_DIRECTION | -
Marks current task so that FWD and REV commands are inverted.
- -#define JMRI_SENSOR | -( | -- | vpin, | -
- | - | - | count... | -
- | ) | -- |
DEfines multiple JMRI type sensor feedback definitions each with id matching vpin.
vpin | |
count... | Number of consecutine VPINS for which to create JMRI sensor feedbacks. Default 1. |
#define JOIN | -
Switches PROG track to receive MAIN track DCC packets. (Drive on PROG track)
- -#define KILLALL | -
Tertminates all running EXRAIL tasks.
- -#define LATCH | -( | -- | sensor_id | ) | -- |
Make all AT/AFTER/IF see sensor active without checking hardware.
-sensor_id | Must only be for VPINS 0..255 |
#define LCC | -( | -- | eventid | ) | -- |
Issue event to LCC.
-eventid |
#define LCCX | -( | -- | senderid, | -
- | - | - | eventid | -
- | ) | -- |
Issue LCC event while impersonating another sender.
-senderid | |
eventid |
#define LCD | -( | -- | row, | -
- | - | - | msg | -
- | ) | -- |
Write message on row of default configured LCD/OLED.
-row | |
msg | Quoted text |
#define LCN | -( | -- | msg | ) | -- |
??????
-msg |
#define MESSAGE | -( | -- | msg | ) | -- |
Send a human readable message to all throttle users.
-msg | Quoted text |
#define MOVETT | -( | -- | id, | -
- | - | - | steps, | -
- | - | - | activity | -
- | ) | -- |
???????????????????
-id | |
steps | |
activity |
#define NEOPIXEL | -( | -- | id, | -
- | - | - | r, | -
- | - | - | g, | -
- | - | - | b, | -
- | - | - | count... | -
- | ) | -- |
Set a NEOPIXEL vpin to a given red/green/blue colour.
-id | VPIN of a pixel |
r | red component 0-255 |
g | green component 0-255 |
b | blue component 0-255 |
count... | Number of consecutive pixels to set, Default 1. |
#define NEOPIXEL_SIGNAL | -( | -- | sigid, | -
- | - | - | redcolour, | -
- | - | - | ambercolour, | -
- | - | - | greencolour | -
- | ) | -- |
Define a signal that uses a single multi colour pixel.
-sigid | unique signal id |
redcolour | RGB colour |
ambercolour | |
greencolour | Use NeoRGB(red,green,blue) to create values for redcolour etc above. |
#define ONACOF | -( | -- | eventid | ) | -- |
Start task here when ACOF for event receied from MERG CBUS.
-eventid |
#define ONACON | -( | -- | eventid | ) | -- |
Start task here when ACON for event receied from MERG CBUS.
-eventid |
#define ONACTIVATE | -( | -- | addr, | -
- | - | - | subaddr | -
- | ) | -- |
Start task here when DCC Activate sent for short address.
-addr | |
subaddr |
#define ONACTIVATEL | -( | -- | linear | ) | -- |
Start task here when DCC Activate sent for long address.
-linear |
#define ONAMBER | -( | -- | signal_id | ) | -- |
Start task here when signal set to AMBER state.
-signal_id |
#define ONBUTTON | -( | -- | sensor_id | ) | -- |
Start task here when sensor changes HIGH to LOW.
-sensor_id |
#define ONCHANGE | -( | -- | sensor_id | ) | -- |
???????????????????
-sensor_id |
#define ONCLOCKMINS | -( | -- | mins | ) | -- |
Start task here hourly when fastclock minutes matches.
-mins |
#define ONCLOCKTIME | -( | -- | hours, | -
- | - | - | mins | -
- | ) | -- |
Start task here when fastclock matches time.
-hours | |
mins |
#define ONCLOSE | -( | -- | turnout_id | ) | -- |
Start task here when turnout closed.
-turnout_id |
#define ONDEACTIVATE | -( | -- | addr, | -
- | - | - | subaddr | -
- | ) | -- |
Start task here when DCC deactivate packet sent.
-addr | |
subaddr |
#define ONDEACTIVATEL | -( | -- | linear | ) | -- |
Start task here when DCC deactivate sent to linear address.
-linear |
#define ONGREEN | -( | -- | signal_id | ) | -- |
Start task here when signal set to GREEN state.
-signal_id |
#define ONLCC | -( | -- | sender, | -
- | - | - | event | -
- | ) | -- |
??????????????????
-sender | |
event |
#define ONOVERLOAD | -( | -- | track_id | ) | -- |
Start task here when given track goes into overload.
-track_id | A..H |
#define ONRED | -( | -- | signal_id | ) | -- |
Start task here when signal set to RED state.
-signal_id |
#define ONROTATE | -( | -- | turntable_id | ) | -- |
Start task here when turntable is rotated.
-turntable_id |
#define ONSENSOR | -( | -- | sensor_id | ) | -- |
Start task here when sensor changes state (debounced)
-sensor_id |
#define ONTHROW | -( | -- | turnout_id | ) | -- |
Start task here when turnout is Thrown.
-turnout_id |
#define ONTIME | -( | -- | value | ) | -- |
Start task here when fastclock mins in day=value.
-value |
#define PARSE | -( | -- | msg | ) | -- |
Executes <> command as if entered from serial.
-msg | Quoted text, preferably including <> |
#define PAUSE | -
Pauses all EXRAIL tasks except the curremnt one. Other tasks ESTOP their locos until RESUME issued.
- -#define PICKUP_STASH | -( | -- | id | ) | -- |
Loads stashed value into current task loco.
-id | position in stash where a loco id was previously saved. |
#define PIN_TURNOUT | -( | -- | id, | -
- | - | - | pin, | -
- | - | - | description... | -
- | ) | -- |
Defines a tirnout which operates on a signle pin.
-id | |
pin | |
description... | Quoted text (shown to throttles) or HIDDEN |
#define POM | -( | -- | cv, | -
- | - | - | value | -
- | ) | -- |
Write value to cv on current tasks loco (Program on Main)
-cv | |
value |
#define POWEROFF | -
Powers off all tracks.
- -#define POWERON | -
Powers ON all tracks.
- -#define PRINT | -( | -- | msg | ) | -- |
prints diagnostic message on USB serial
-msg | Quoted text |
#define READ_LOCO | -
Reads loco Id from prog traqck and sets currenmt task loco id.
- -#define RED | -( | -- | signal_id | ) | -- |
sets signal to RED state
-signal_id |
#define RESERVE | -( | -- | blockid | ) | -- |
Waits for token for block. If not available immediately, current task loco is stopped.
-blockid |
#define RESET | -( | -- | pin, | -
- | - | - | count... | -
- | ) | -- |
Sets output puin LOW.
-pin | |
count... | Number of consecutive pins, default 1 |
#define RESUME | -
Resumes PAUSEd tasks.
-#define RETURN | -
Returns to CALL.
-#define REV | -( | -- | speed | ) | -- |
Issues DCC speed packet for current loco in reverse.
-speed | (0..127, 1=ESTOP) |
#define ROSTER | -( | -- | cab, | -
- | - | - | name, | -
- | - | - | funcmap... | -
- | ) | -- |
Describes a loco roster entry visible to throttles.
-cab | loco DCC address or 0 for default entry |
name | Quoted text |
funcmap... | Quoted text, optional list of function names separated by / character with momentary fuinctin names prefixed with an *. |
#define ROTATE | -( | -- | turntable_id, | -
- | - | - | position, | -
- | - | - | activity | -
- | ) | -- |
????
-turntable_id | |
position | |
activity |
#define ROTATE_DCC | -( | -- | turntable_id, | -
- | - | - | position | -
- | ) | -- |
????
-turntable_id | |
position |
#define ROUTE | -( | -- | id, | -
- | - | - | description | -
- | ) | -- |
DEfines starting point of a sequence that will appear as a route on throttle buttons.
-id | |
description | Quoted text, throttle button capotion. |
#define ROUTE_ACTIVE | -( | -- | id | ) | -- |
Tells throttle to display the route button as active.
-id |
#define ROUTE_CAPTION | -( | -- | id, | -
- | - | - | caption | -
- | ) | -- |
Tells throttle to change thr route button caption.
-id | |
caption |
#define ROUTE_DISABLED | -( | -- | id | ) | -- |
Tells throttle to display the route button as disabled.
-id |
#define ROUTE_HIDDEN | -( | -- | id | ) | -- |
Tells throttle to hide the route button.
-id |
#define ROUTE_INACTIVE | -( | -- | id | ) | -- |
Tells throttle to display the route button as inactive.
-id |
#define SCREEN | -( | -- | display, | -
- | - | - | row, | -
- | - | - | msg | -
- | ) | -- |
Send message to external display hadlers.
-display | number, 0=local display, others are handled by external displays which may have different display numbers on different devices. |
row | |
msg | Quoted text |
#define SENDLOCO | -( | -- | cab, | -
- | - | - | route | -
- | ) | -- |
Start a new task to drive the loco.
-cab | loco to be driven |
route | id of route/automation or sequence to drive |
#define SEQUENCE | -( | -- | id | ) | -- |
#define SERIAL | -( | -- | msg | ) | -- |
Write direct to Serial output.
-msg | Quoted text |
#define SERIAL1 | -( | -- | msg | ) | -- |
Write direct to Serial1 output.
-msg | Quoted text |
#define SERIAL2 | -( | -- | msg | ) | -- |
Write direct to Serial2 output.
-msg | Quoted text |
#define SERIAL3 | -( | -- | msg | ) | -- |
Write direct to Serial3 output.
-msg | Quoted text |
#define SERIAL4 | -( | -- | msg | ) | -- |
Write direct to Serial4 output.
-msg | Quoted text |
#define SERIAL5 | -( | -- | msg | ) | -- |
Write direct to Serial5 output.
-msg | Quoted text |
#define SERIAL6 | -( | -- | msg | ) | -- |
Write direct to Serial6 output.
-msg | Quoted text |
#define SERVO | -( | -- | id, | -
- | - | - | position, | -
- | - | - | profile | -
- | ) | -- |
Move servo to given position.
-id | VPIN of servo |
position | |
profile | ?????????? names ??????????? |
#define SERVO2 | -( | -- | id, | -
- | - | - | position, | -
- | - | - | duration | -
- | ) | -- |
Move servo to given position taking time.
-id | |
position | |
duration | mS |
#define SERVO_SIGNAL | -( | -- | vpin, | -
- | - | - | redpos, | -
- | - | - | amberpos, | -
- | - | - | greenpos | -
- | ) | -- |
Dedfine a servo based signal with 3 servo positions.
-vpin | |
redpos | |
amberpos | |
greenpos |
#define SERVO_TURNOUT | -( | -- | id, | -
- | - | - | pin, | -
- | - | - | activeAngle, | -
- | - | - | inactiveAngle, | -
- | - | - | profile, | -
- | - | - | description... | -
- | ) | -- |
Define a servo driven turnout.
-id | used by THROW/CLOSE |
pin | VPIN for servo |
activeAngle | |
inactiveAngle | |
profile | ?????? |
description... | Quoted text shown to throttles or HIDDEN keyword to hide turnout button |
#define SET | -( | -- | pin, | -
- | - | - | count... | -
- | ) | -- |
Set VPIN HIGH
-
pin | |
count... | Number of sequential vpins to set. Default 1. |
#define SET_POWER | -( | -- | track, | -
- | - | - | onoff | -
- | ) | -- |
Set track power mode.
-track | A..H |
onoff | ??? values ??? |
#define SET_TRACK | -( | -- | track, | -
- | - | - | mode | -
- | ) | -- |
Set output track type.
-track | A..H |
mode | ???names??? |
#define SETFREQ | -( | -- | freq | ) | -- |
Sets the DC track PWM frequency.
-freq | ??????????? values ?????? |
#define SETLOCO | -( | -- | loco | ) | -- |
Sets the loco being handled by the current task.
-loco |
#define SIGNAL | -( | -- | redpin, | -
- | - | - | amberpin, | -
- | - | - | greenpin | -
- | ) | -- |
Define a Signal with LOW=on leds (is that common annode???)
-redpin | |
amberpin | |
greenpin |
#define SIGNALH | -( | -- | redpin, | -
- | - | - | amberpin, | -
- | - | - | greenpin | -
- | ) | -- |
define a signal with HIGH=ON leds
-redpin | |
amberpin | |
greenpin |
#define SPEED | -( | -- | speed | ) | -- |
Changes current tasks loco speed without changing direction.
-speed | 0..127 (1=ESTOP) |
#define START | -( | -- | route | ) | -- |
Starts a new task at the given route/animation/sequence.
-route |
#define STASH | -( | -- | id | ) | -- |
saves cuttent tasks loco id in the stash array
-id |
#define STEALTH | -( | -- | code... | ) | -- |
Allows for embedding raw C++ code in context of current task.
-code... |
#define STEALTH_GLOBAL | -( | -- | code... | ) | -- |
Allows for embedding raw c++ code out of context.
-code... |
#define STOP | -
Same as SPEED(0)
- -#define THROW | -( | -- | id | ) | -- |
Throws given turnout.
-id |
#define TOGGLE_TURNOUT | -( | -- | id | ) | -- |
Toggles given turnout.
-id |
#define TT_ADDPOSITION | -( | -- | turntable_id, | -
- | - | - | position, | -
- | - | - | value, | -
- | - | - | angle, | -
- | - | - | description... | -
- | ) | -- |
Defines a turntable track position.
-turntable_id | |
position | ?????????? |
value | |
angle | |
description... |
#define TURNOUT | -( | -- | id, | -
- | - | - | addr, | -
- | - | - | subaddr, | -
- | - | - | description... | -
- | ) | -- |
Defines a DCC accessory turnout with legacy address.
-id | |
addr | |
subaddr | |
description... | Quoted text or HIDDEN, appears on throttle buttons |
#define TURNOUTL | -( | -- | id, | -
- | - | - | addr, | -
- | - | - | description... | -
- | ) | -- |
Defines a DCC accessory turnout with inear address.
-param id
addr | |
description... |
#define UNJOIN | -
Disconnects PROG track from MAIN.
-#define UNLATCH | -( | -- | sensor_id | ) | -- |
#define VIRTUAL_SIGNAL | -( | -- | id | ) | -- |
Defines a virtual (no hardware) signal.
-id |
#define VIRTUAL_TURNOUT | -( | -- | id, | -
- | - | - | description... | -
- | ) | -- |
Defines a virtual (no hardware) turnout.
-id | |
description... |
#define WAITFOR | -( | -- | pin | ) | -- |
???????????????????
-pin |
#define WAITFORTT | -( | -- | turntable_id | ) | -- |
turntable_id |
#define WITHROTTLE | -( | -- | msg | ) | -- |
Broadcasts a string in Withrottle protocol format to all throttles using this protocol.
-msg |
#define XFOFF | -( | -- | cab, | -
- | - | - | func | -
- | ) | -- |
Turns function off for given loco.
-cab | |
func |
#define XFON | -( | -- | cab, | -
- | - | - | func | -
- | ) | -- |
Turns function ON for given loco.
-cab | |
func |
#define XFTOGGLE | -( | -- | cab, | -
- | - | - | func | -
- | ) | -- |
Toggles function state for given loco.
-cab | |
func |
#define XFWD | -( | -- | cab, | -
- | - | - | speed | -
- | ) | -- |
Sends DCC speed to loco in forward direction.
-cab | |
speed | (0..127, 1=ESTOP) |
#define XREV | -( | -- | cab, | -
- | - | - | speed | -
- | ) | -- |
Sends DCC speed to loco in reverse direction.
-cab | |
speed | (0..127, 1=ESTOP) |
- EX-CommandStation EXRAIL Documentation
-
- EXRAIL Language
- |
-
tGG4%&_iLczGz6w1nll2SSXj#* z z_@*<=79RX~WbRz5~U&Xag~W+>Nu6>I!&FRKnE0Z1!Zy31?xTO0*} zAjYbQ)8o&RK4Pl&pvzMl(1+r&hH+DBrd}gHBpj1IJcs0t%_2f@UgGKP_{*$^2Tq!G z`;FRO)GzM7n*wib$xbU&YtFF3Y z%=NPLXlQ%=JSNS(=H|uX)P>i@DNZnR?xd-+Zo2+4dijhiCrqoW(6*jFe&C9&-3y+X zec+>Gd$h}ETwiz7bmc(E1z;nLT(?8lP=QS+z~bXLV+6?n{#!;emRJTxQP*vDyP1-b zEI8$k2TOw yy>Km`Fs dSWs~s6#!7Bq0uloH)6p_%d;{Oyq-*dmfvZ&CdFxx zff;eu0xU{(S@I09t`gZW %TuSt7q`xAxKSKEiXg;IH8s~?Ut4oSPVK1C z)e|d6)v&HJHg_w0Vb*IWPP{hz`ND3SXY6|S-IizSXV0#`>ZY0G{DkS(Osttc9b{XP z__L$?J}flYjdG=kEDZr&NP!KoAOjT(HNbhaPN}{BciWzvcxl^xisC6MM1sXeIoDNj z&-0h2rrISp3dYuiKg?QJcw5CApQ7`fGngt~|8B&?<({%di-ykVaDCl`>!!T^?6ax; z`eVXpr?5aA5*NiD@sZfq-u-sE3*Rd3y78eWo|<>dMgVASg&F`{#Ck#w%aoUSka7~x z0x7L0Y0qfyF?QZs*0#UNALcGF-k&9V?n3kZSpa_d&J&6fL-Ki0b5DF6A^m^=nI2 sY5pkkhmTDAjnIc4 zp)GCf%T|U?)XCG47wOe4_mNEPFeZuh7sMTyY}#)RK;Ja>-wl02J(JNOdk7S;PD9Fp z@`g4YigQ*8j3u#h05y}z_hoo(`4(FNswx$$ORDgj }r%v ziXuIFw)L*-`{ogG67%rERm*C7{jq9N >uX(c622{-oP)%iAsSP|GfD-V?YnOaQ2e2Ct zq4{)iNziVTH*I(PmtR!enAUmugw^-h)4$v@bJbYN1C~y?H?53I5l6&Maa7!6wc%ha z8vA_zys{%x#7t48+wdgbipz0hvuM{d)T1UBJG;82T{n~9NwH_bs4-){+#|54xP(P^ zPab^oNvy|}Vw|{NJRlnK-GA!T4Zp>waVtTQ8EIa;JUEEN5&YT`w-X3-1mO4ZFj&D3 zMWJp iN@hT@Oj&3JF*;^E@x5#*wLoiN{2SALL$`t!2s$W zvoZQ&{DN#p#17LNmM<5dM gxn4X#hlHFm@>T zF<#{J+I?PwWO)55Oo$wVZ7OagY15btCOO;4&|)rj?u5HwdG)qKZ@e;Yt>1lOg7|8S zcwel*ndskwDb;lEu7V=*`RTxEaj~dimpI#SGv1At6=Gk!cm7l}mzA$O8$B-#dW3?B z34}tsc!ESRAk}@?KYQ0|MX;t>UAB}sS>`ZFQ=SFgDKSNz%JtZ^PWEF0P83gwA0jsx zp4|DsGtWH0!(yxW;T!S2c*^wOxfcDMt>0~V2T R6 z5J1(DEday<)rwA5ngk7zjsZ%OsH)FCRs0mO^yrG~MuB;BuU|euKNNO+FX?pi5{Zdk zIGZH8;umCzsQat9(F7!J_^VhC5XG}y;?b3NC{bEYG6LgFB0@q5)&T{@(W-$Es071V z1{=4lHsMe?p=?J@J3VSn=&@k~`#)*cheD8zk;i{Cdfhp3y_^~ly2<$Y%FrPCh595R zMJZ=d#sPsTmQ6V&yb(B~oHYQYF}}bUTyF9OrwXGSY2Np{n9=_!rh*b0`)aWG`lvV| z*5C}x+lrZ!k9W*pK6d*%NB2ya(f%m@@W`MWa3%IB!ohg|j9T&j?wpR|;}45Zi=W(% zpHdD*{iMZ7KV>UFWhW=aSr~;lgsjXom&2Z7jibtA3O%xk#E2=5#%|f|&VXH)K acWm}Xuen0rA z0Ai~*iZ9-h^DHNrb!~0s4I6Pgm+)HNe*34>$F-ZTSvZ4safi*l;P*+4S zC_a7k&WM@OYE$OpJ&ECPrpSrxOmAvR#K*-98QHO%T5R-~;!t6`ct#lkf<~6d(i J@{5`_!VfCT_9NcB1G(Kzv-0VIaZ*fcF}qc|0LPKyG{B_p(GtTemnJJ|AT3`$F9 zq+Es!5H*wV>Ho9l;xP+~y73j0OXb8C YI=&E*IgX%3r=bPhVEXljH6)#bgv`35gF_%D7%k2v$|k1_ZBIB(&?c|Xdg)Oz$y zA^sk7PNe^>S6_3x=^Gn=K>EfG9_Sd#Qw`jdg8Ka@H{~lgIf#W@e3JhCXJ_3$A4?94 zNByJx|H)e@?tk#x1nIXND1ZT>ejVBqgSIhuc1C(KH%ODo+uCrZ7<)q~ z=;-sxN}Z}(AqPDc<-ZtLQilvKr&8gi_x%6Xq5FQujM+CXy& zZ{E$bkMQt?1J^!Ml=t-VVcmnAhwq j8Of!u99Mp*goyv8NU9=jE**Gk5vzo4@%* z9RKzy@sHZ`?K|I7J9punyF^6%h@CHNM#p4&=0IBR)X~GP2$p^D?B9-GdnI;1lH09* z%;gPTh97?R>2tJUEFk0q@Lonu3xv8GZH9o%T?8Zub;{AaQpt3&h>aCA$r7YchXy+^ zU8}SN-s^0l_ SNU h$O7ggbi#I0Mq z<__|++qnKgI;Y(a>Yk~Y1Mm$-&gO@FR@rV4G=&6=#gj(0`q;W 9xc$PgIF_#F)9n!NJjT&*%y|-4PC_G^enyQ%sxL0G7Lrn%Ozj(dm#S z0yL!3CQ_gXjne;d2ljQuDG ^k- zLnA=`?FLD)#b#`fJrKndjZ0&bhR->#ou5to3&c#tkHq}>#Lqz&Ie1zRhaC}zIAn0J z0pye;tS}4%kU1TOB Ffdlm6($lJ?F4{(36NA zNS!##!@s<(UY{Vs`1eb80Vn}l4Fr*l1VXS *+J>K<$F<%j z{x0MM9k0$H)L9fzRQMYS0$gLBo!DZ~F@Rp`_gc{L2^PGA1)n?~r&-7eaxBsjAIQl8 zK$z4zh+YKvFXua4X+#%WZlr5odBwCJVy}`ud>=5i?wEch*KLz8S5`} }qN6D(n` zBGZg{a+s{){aFQgp(~6Ejc_4he$*^Elz^$aAfea@2o?=3HL )t1(Rg80`%>24!*xnaJ z|Mbp|#HQUn3mzZexAZaq(t1&@Ypj;0IDq0Mazv&i2^r1IAe?CkT#4NzS@k4C=5&=A zeHJlF3A}cDjv?L}s*%NOjD&``t$WOc=w^#zV~@Xa#j5VkmJPVA+w!r8kBd{a*OyPu z%)DaY4HL2TTXA~S@LTyX**2T{4-yAO 1tF F)qozmIbZd^creYjSF(f#1%2&dZ(d0^X z6Dw&AtgJq8>h!_NWrcE3$XzAoh%s0EAvD?TuI)Fy{+8htnESO80ecPZkGHtPzdrA7 z!qzp978l~{#XYy(cL_87nT?W|+bfP`M@k$Bl*EMlY6~(J!>ah8W@1fqsX5ryKCQhj zOK+S8shBGDC~i8{CC@jU9*f$2LoKB0*u$faHwIo5pJM!(_rHzIBXNsoT)AY#sIqq- zsGOWYv0=OuJAab@4fa6s^SMph^cDV2&jp9jWecYAjN0qW{Ot`u6SXdo3BgcNB2to` zhQKsXM4B4RDYcBF%4>#*R;6|(X;Qb4@{_E&spi3EKqcFy0~x0?;50bksMQZY{MI(# z$gb&WUEG6*9y_)=va88W9y&Dlg}n*wPB5)v=-fk*IyvzXs1(Clj*Q7{C{R(Up$5KO z!ZjB%o}yGeB$N-3*3En|QpXg-%3?s%iOeCDML80e-P~(A`Z-wifFSVO*@5SGJ70O` zV9km`rx4$LHs+;@l0mB~rcdj>?DG9*Ft_dxWwlvZwf(10Ar7_mmBVjq{`kGtF8)Jq z@3NVL`-af>)tW~OyWx96d}7h40S$0K?D#@L0+1UV6KfsJ9>ZdY zv_Vgaw7p|hWH&x7KEPbLlbhst_$PN0@B2Qe`gcYQ$Iqn=9h}fT)Ww=?p-7YsBbW>g zP8uP^Fk H z6C0VKd~crisM2YAUSTl(ZI7x;dd$!cnJem(Rh3bn6yvjFWR3(>H4Mb7@&`qQUAuJl z<$5|~sWm1m1x+&!CkPU?ofb}v (cI2Dcqeu6y&Q_kFE5d6l#!jjoUw`VnxXcK{-Sg{8 z3+ X_5u;HF7TP9@5jkecTmOBcxc*b3tlEHElS&?} zf9xfhDGMi5_nOpxcI2cPwHvA?9sWRcG$6e hHIwXcw-~+e~Ur!#&^!|#UTuQ zf9JE${mHrRg%{SDIoeUwvAd*g7x>_^P;VCn%AmcQaF&9E%V|Mpl*kZfEanm5-0aM% zoanUNmnS9NXb`(h=HN8hM2w*Sjz@IF&B@*WSbgyH>HTAG>9#tudo}q>!!-kHGc#+; zr%jQ&xoFS`v9A@JUyBd=^%eWoWXCQOoA29JQY7-ac7I}x+4CgsjS{yLyecv^ |ja zHXVUeLIxxvgn*Ds9yYVb>%CMCW64AP(MTI>L|We5QLcdAes1XU)K!r^W|%#A`D6 2IT7sN;SU<1>5OyK72EP8_%N;I8IF3*W4y zZ{%l8EUd1bylDIGvqu)43z2>Qm)2omabf@T{0+CQe|c#6cdJvKq0;VyGX3}6a@*eW zpy{*Dt)G#@ybN4Qk5xPY2Ut)8Z5l&0B5>1LgqRykO%2jz&;&hBLe>>0FgMa=@^i%- zbo_GLw&Kq2E?Mb?bv^ERbkinYCVn~;Inl3#Yj0bvPdrER4`DnYcw}C_#(F`fn&lmK zTbzXxS=fPs+%u}Ei7A#dlTJyyMpyBfwoJ-rn!iN t%nS;5bDh5vNuw)75 zE*A@LA2H_rPjI_zr#H;Lx=SZA*lcou&>n!@z gb7}?axmW6taUsFE_7{Bsb8#v?q_Xo9u-(8r27jJ6NUfc7AHgzUmq$`qJ zZXvfs7SILB;c%+Z$@7t+__fk6VzqjO#Pi?v3+sQ 0qjTNQgnumBe9*fo~eYfQJLs0pN)UQEz8G0hm$V>G6}sTz%GrkY-q9lkmD-Ypnn z-tVtJV9_mS`k8Z{=Q$@ES5qeb2tUOppOOH(J#^1jSa`4gc^ R!K>gq9fztDMf-zxd1 z?`W~B_{Rs2PMP=W+-XN2JX?HA`fW>(*6wcGe)sgFOK(dz=Eh~>XDGn<#|3c!0~U&4 z;DUw*@w562#y+IY J2Y=@rQFm_yH5B3;4t$8tjX5ST~ zwhikzq)n#*uRe5D`Od-lL-Gm+(cgD}+_PVsoaz0O?|8pY@3x-Wfp~6i5Ld&!yaX{i zE#im}u #nb2OiS9}a^{p)J>zOwR~ctAP9EaJ+tEl#9^5K+ zPrq{bz~R|@x;4AuZ+j= |A;1ZN8Y?IW7zBk^5{pGGC#o9Phe5MAU>3=8WoFvtA%iLP2noJPkn_S=O9gWB zc;s=Tk5!Nwk>GSt#=CWflX8Wngtc$a@2s=@bmaZ-ITfFc>(_ro7)+%@Mh)B6MJ~Ei z5qDQk{`9@Ke?0lPT2sAr_IrqLretK(7fLDrNk{2 _AkeaJPmXGZE|xwS#mz-sIfsbXLF#gN%z6;h=y*?_;F(# z)O?(v 5{LVjr?X}kkVHh)3-cw%0vz`=^G2V(OpbQW=96-8+feCf-FELJt%1JfRG#$35 z1Iw)y#A+_nhzl<>L%wAzw**zV!es_Qk7MEyV{8;Iqeo3NvD;t}=yU>RBy08W zd?4j}Z@K;8!P{@y$LS4KRTHL8olsTji-s}3{R(5m{lES$9#{dlLJoM~Hc=x!lIics zv_jo^%exJiKJ?ygH>wjxUA=JGqN~blHi jRu1&Ye>3e(#H3i@LT8AB)yBI=D`lUkbTB*f!(=4Ix|*JotQ zsJT^keG5@@hsTp02%3k6%m-P*m~;NHOE=tq$5mas^d4|Gs1ICw`7IGq;);Sfwkrpf zm(b@O?UUPgUomU`vVtDHI<=2fCvVttxp=u?Z0?3`t{L8Td2JCF%gJIknO%>#SiYEK z!;%k9fCfuoO4AASW@H#t;h=li4D@US)9)G-Fdt!$wa4lJTOgOfQnsJDi9)&?e2IA7 ziI{j{Iwi&H&{-uH{(I%4asskgbW?Ep?LX|>#QMNe;1A+n!UJ 79_Y^Wl=tC52j8ot5_)a_g1-Cl8ynfqvM0 zUO~4D=G{Z0fsMR!P05(_w7G*ix9;VLag^m2^)J1=Tjv2K1juzt1e>eu`v-pyyK%11 zO+Qv5?l$)0S?n%)x$+YBVKA-|;KpGf4iLU>#8pfJ9HM4JPP }pr2Emak;VK^+!nV;gQf|S(j8+Pywa4X@$97V*jN51m$%R}iB0X9#)E{|}kkcUZ zrVzIG=-Rn+LFdC%-Fx}Yef_)lAN JZ4f7&Vt}@F#-UxtbujSccf4%Q3jzg3oM2;{g{1|f zUE%~H3oEOJOih(B_|0N!X`8l=cri$ckg }TCB#?iy+y&vP~@~IsEy<8N+2Sg>&7}o%x3_&T3 zAo>_dIi^=)!cpRE@o1wt{2s#-DTblp-qDZWrxkSb4og?NgpV9Cd)@BVxvibb7Gr)+ zr#Hdla{VhL(cFd2^g5LT>)(EnBL|Pay%x&oO?2sP351fl^bwY6V$M<|auV-nFeb2l zFf$l?QKInNr*FOW;M2F sD3Ibj5EE5@j>upvRD8tQI;q<+!| 8MDB_~k?qH?Bz z!c{qKG^P<&YXPQ$fhYF&A+BPj%m5YJ(A{>(FRRPopG+r2*<*aRe2AaAlxQ7sE`B-p`a-MOjCMCf(E?^(ob;r;7Btg)y+Pcl^J1D+}rT8Etz@v zxdRDNtCUypa|i053y z1x+M-YO;Do8UD%Dmo*NP|{W`WuNepAYTOs7>O#NuwY8uV5vk0fKxX5cfN|M zb5o2hMBbgb;Z-4rg~ b`pp~1m0U5h zs&@1!_0ZANFRcDxaNCKa;MViTxkj{m l_0H~trM zpC${f`7 `=^OlpP~z%?g5Q2xw0gbbL#zFfwf6MaHokmAcUVo43{x?EgGX7h&>il zofKz=iZ@PWoF0qdwAz>lxMDFzn-<>+NugPqnNdT`v_ogta+jX?1e ibt}a zz!+~F%VzL8*PZJ|@5req^GvRnBaS$lWrsV-)6wsdz?Y&|9nh2ezn=wpUw%0BMt4!x z>~2Fwi+AS@?>A(Eq*<>!{rjQ4b6zOzEWWt*;L~ZzC*z$%di96MEmemH_aAe`5`8`m zZ2DHcj}Ig5NEgzZEcDJx1*XIUXWfDFj(Kio(b_OdEQ&N7TTv6CZ_^g4RY!+Y#*}gu zFkcg8r4|b*he!jY)U~8Tdmue~l=SY}yRe{rmkwQ8d$L>^X~{Ar9UBuFt|_D)w2MKY zM+-MFw @Z3AvAf9}B|&TK{UFZbz?q_AT+t{*i;q#v%K;>D}q~b?tuVly`sj zEv0 V_nG__al?%mb1)>6Eq65MmfrclveJ)<+eRthgT2o9II}7y0}xP zV)5tcTh#@da#}ypVc_fCbN7zz*|jfybmdGXb;5jO?sb!SnN`a7B!jfY(@}aD6r6z5 zE(4=KD6B%lz)OH2cE36V0*!d$tZXhFl6cuR{la6yhl;a}7#NN>#=e+8+l6D#cFbEQ zUi$V2@h(JsHTcSoJZ@OwSHqrh4RntiRbTq%(6gEA$1dM=)g?==Qs@%#(!n7TtoaZm zy?GjJZ9IJNhQf6VXWG*vKXUZTU%b#)kkjeb_499j|6YSrb{Fr)AJbzL;h5tfh7(kY z+rNVBNriJ|sCf)1JXC$5(CIcgl)T&dM$W}{^sw-YcK__5uh0MRwXtsvX w5^FRD;esDi7C$`z!4vDrG{g_wAkU?MQl?lDj ii}cxF_|_q zUmY2K)vE)3+JQOinCP7+27JBU(PMU&?`x~|(d&!Hr32+$l__jWGDQvFq9$Vg8sicP zgyQ+k;ldQQVj>^>K&XqRv2FjJ#?FL8?Kh12hb*?lQ26$F`(BvFR#O{~G)rR>O0o%2 zB*ve}-3rgwOeX^45izYHJ4xq)P(A*M#86flVWr5j4_7GqeioI6U=#>xo#V-t?<6sO zGX9C*A`=l L^tg0LD}ygkTpYmTe|mqSN1T?hLo-cdvCYu|&&`QmBuCBkZq47wQi zl@6@=LCj8QfR`k!CWIU0KwIpw6097h;BAUT0E MAW4MK*@$&Q z9e`+41jeu;%FvvFC{qa_Nzb|!8*HH9$H9l!U56lswQJ?6%C5?PAzx_vXx^0jLN0Zh zxcO2sSdGJ2JR(9|I3*=R4dd1koY;Z!SU^NsGKL%g2r**sIwY>bfW#%r3zAKV!vO{( z_bm-+cA6G~-?CD8mJU`Wp8rtYkw;tic1I=Tr*!f9_N#RUf^Jn2Iy(-0uj%I-zP+ zBXih$(D %-|4| z&v=Qwcp$3q)=76hA%SA05-8R&wWLQ`nRjwV0EMxutoq&0e7(@(Q;IfvBz WV}4O#ewU72 z-0m!it&{;vROKQqyCr_M`-O0*fR8dx9zTl?^zrVSBN401C1Q2nq;-Qw^nP#Sl7oGE zA6VQBEXD4VFjfjP#^|Te(0=`ggu+;d3>YvZ6ha04Ojs+BHiXbKYFlE*wP^v6;Zz_7 zIn0b^NT<_;l4Y@2oNCSRt2nXRT&p8j6H{BK_8(H`+b{jdFA%l*zM_^5Y)rv@sOft# zm}zQT1ND>)s$vC7EPzBRznWRRo~Gnwi298V#DS9l0V)WN(c_LT)@*vW1gND)-hd;I z=Jd&mc63bX()0G)-#+9X+#xBUeXITh-(YhaX9w0JyD=1AtDkHAr4N3;nu+H!#-flZ z90#0H13TTE8SLk$wboIYp*%i)zzYkE$lnDdwfUipz6~cwx6gTD^w`eb{*l)=c0|gC z+UsBGFz%C;7tqwu-eJ >CP5GdPDlQS} !%;z$|UPY&Tf@*+> z&?&2+2Io)Ds=HinSG+@K*Z8{?*N3NNU==S{d*wd3;bw`WvR{a<;w7sfeEO_=A948Z zN^58VW<`uO1?O~(RhHKoiXgraH!SBTi){fl4Ch{bw6(cTyfRLkbLe&d%D6%A4=VS> z@3@VR@MHAjfDt^G@H2?QsZwbI^Kp&^;Q9{uCyYKAAW#o744lRKibWwc)T8k@F<}<{ z4J3*`J~{Cdy&N(6lh+NBJKn7$#z!zwH=2(S?|hZ>i#Q6P$=z+%H94&xEgaamdgXK_ zdBQw>{HkQ`w401|SdinRGQ5@OP%BDi;|ivwv9UIcpUUXGCL^c?tlNimH@^$X_w(}! z*Ik$VqaOQ}@6ki~HTWK;9t+GycP)ze-=ny|p}3&10G_|>PjTk3`06jE_F7vLkQfs) z!>?wE$YI3s(STB%@)Ub@tP#)#Gfpg_7)mTARGZ}pn2jn2ZoN(B170p2*uPZStFGO> zd#zeBWU$F+x{4o#r 5`RIW0x-< zTfJgY=iJtvI(0MD lk^c>ND!i4_)#*OdW%HwI3;qmBWFpNJ0Pb*(yuMgg9mC?QM5ZTETBlR0| zVa_9^*|RDuA2AVWtN@ 7wZ$4DyGYlQJtH}LL+Cf+GYScG(6>KQh~-}^z*Tv|C< ;K7FV;ECl+RBuVBv2JvriQzwfXu+`); zY4hFc0V5uR8jC0{M7UDf3_TJI!brbKkze>m?Cu|a@E!Z%hoz9T_j(;f0^#C7Q _r5nbOUJWRjq2BYr5@Va^HwFU9we%^L3spv97 za<;33YA##1A!QrKCxQ^=0ODf;OjL}L))K$4&Pe^P9)!w(oI>ED<&a0apDTmQ>0RPc zRoQ!P#3{Cv;0lpvey#G7d}Jf(nAZ!$uuSq{TxdiIFI|B^mU0p82DVyU2CLxPizqlu zJGJazH5`Drr8RfqIfAwY6{P%=zcy4k3U#BnJw!JOT=>(y8Xkf?cxbinkICX&ReU|g z_eVnv|LJ^mOhbd6J={3bj+lFf5~utD`B@q&R-tAPX3s1NM=>cY0I4AsVkH(U>Z)pG zVW4Tvq=GCKj4@cEEz$C3hXa6+je-RIUWcT71nOeOr02 bwJCcIRY_!HaVoDV*bzW1sH~( VgKX`iqcS=V`eOfFP5JfgA6+cIE^Xe0H82t>P?#xqrndk)ea>@zBI;$ zliLsu1!Hm>ylY!Oc{KOq_LC8E@Mp@YaVX;CF4~uN+bNqa(?ue3tF8^oP;W<(0W6YC zT%--&Nh2dH8VA}sCnKG!8tTt*g)l_@SO7V| m78nw(?4iw&|bltr9Ybh1& zD6BBFgjCGY Ndo$(zoW_L#EEOK1=qU8s{FB6A!)vAAo{U8;Dl7y`AIa2Bgy~4 zNg%UH#bAMGx#zfUeLR-Z#pc~$2qF9zxlgzdiycKMHDZJ27Qq2QQi>_y7N2cP$VRk8 zQLK5B!fgRfb(%@B41$4L4fCAuPhY%!!@8|YW(f `sMdJcc`6S!y^> zO7D_gy)L7}RpSnS^2w2k_3h)ul!>#ujY@^oijrBAc^6;C;BJ(@6&+qyKBB@;4<6co zt?%WncX!IS*rVXSPMsy~h>|s8E?*}5IgaFFrd IEKWg|?&zwHfmMxfGqrCL~qmy>$=RLLYjW68UqFA~8xj%e6W= 7kz`u%E#j3+*x*vP-q}q%mUXg98f>!h7YI~?~CK#MC9dIlUYJib=J&^^xa`< z LO0ko~-wVs{kZjqa4g8 zqCWx*IIH!Cm7+pJ64=O=o)q8gNf&<;Y-oI&JUtX+Zx#|lU~jBHx`B5LdGWLdf*c o};-Bq!ATQ@hhqI`y zdw_GK`25YdAHQ1& e2I86C=~;bj^E${FcQ8tDK7SuLT}nkkxIBryPJXKb;& z^B1ziV%OYpk~vU+C2SviL%ViR&|}d4yDq!t81*$Odv}Xb>kqA|92K9~Zt{W=FLa%o zKQ_bFA;#W*-;SFg@qwR}Q+i)F2{DP6qfP^2+T@N$Kz2AmG@E~?!%(dmK({fpF^#0T z>~hD$^VtlOdzx{5o&MnYJreqsn3R^iqI=DywxU}n-SxOQK5|5_$r&uXZI+_G9G6;F zURL$yS5lg+aPgG(d5z!eXZIy?KOU^(vEog?(f}2p@AP+>E0^6A7;LV=4o-8F!D;SN zd~kCeb}<)K*u`A99u?VJQezi?RG<<&v>k@B?D{x5BuB9!7&}rKN=pOr$Bqbr3L}tX z#Ezgj9T8(k|83L0Rc2;d`- oF#LaCsuxv~Kk1!nt$jE#A5HmOD4jpLF9^*f#dY4sC%J^vL?-hx+ShE(G@R zgewN|ryMaOdJm{LvtjMjg-P+QS(lVO-)&yUQCZn-qr&oEc>CJt+Gk%mVehfTBvb!b z))wKsD@j4M*)UWO*8v79HxjQJ^>a_l6~Ns^zY^N fYSI zO@S8@M4X~*YpBQo0zm!03$8~J6nJrH1%8Q_(&Mj;+SoxHhw#t8I4_P*o;h(mK+3q% z*^{72=CQk%_yqg(TgVizh^CtlJ#h^*5hIf=yF_xsgr4&m v3WmEH&-a%biw6EZov8A0NdNh>k-K9h+eoo`xt_-9VVA7jhs zPr7u|eU~Yl$L?z1wo|9CKLM2wJ9$VQHSe)&(>7e`X+Lps*$ds~7nEmt+D3N$ )bx4=*udad<%t)5SZD zOpan?asWc4_3gxt(@nL@v%z`cWGiO(h@+vi>;vE>Cw*TA=U4nm<8xzW`>Xj-LqRYF z7(j2oq7w&zAnee%vFiyBv(?$u | z#I)>{-7i@UyBAJ7zI83ojkUselQ=J)`sfpwXYT)tml8@UMW*sG?@yA6+t3Z6l%ym^ z5sr7%;G`k?oN+mmlk7HmL@HTCo`u*48eUy6y_P}bU@11Ip7t;mcO(){{JwJfVQ(M0 z{A%^F4Zt8-{34DcY(~9$HC;F*(-GlQUZ>ZHQq;)Uc7$E&l{)wzWo>RNSf#X?`A>{M7`L?%`LCsKpS>X zlR2$Xvj1|>-$(~ef>L>!8laf-3NtZGh A!N>~wI{FOzkBPWzI$lKlP5kr=<~_t^db!SOCo-K{dOIqKb2o%p)kBx?>=55{>6V* z4igvZ?j@-dh%L&%fGI#hF~kH6W$idKSuHO-afUNh6mk>LuRrj&>kljJzH>uHM@JHK zMYuc1iqmpcow0Y$ipXLKaUGo-cXYckR<-j-Zdzpt{{(oaJYS7)!FP0fUMCKpgj<&G z5^JlfjC;@+IWJDgc@a `aNsSYa6-(RHESMDh|#wUc-7Z9^wtr>Zyk2qYgg?!c5KI0ujxA3Kk2cy zEHcpBkAp(fk`ftLS|vv@#4TA&0ZudfSFHhnwTzfVR#vVWPDPfC@;S0%<6Jg9+=M}0 z>~1dCsN3Vg*&ZsG<3jen5+=jFpY>hd`A^7fBH{-HwoQX|OZ!~fZJqDgx);Jv@{f7X zZDMmw?AOQTG0y0*4Ko(3i3k^ijKG~<3 9wTE?odxJg7XV%&4QUP;{RX zrcj2Y0KFiAp3v9H(he21(4_q)-oSJ_6P!ABqea>HXLQ;4`(KS=)aE A* zrF{G+`_ bX`k+?kq6 zNNQH9l<1eQO?J9$S+1}+U7A$hAn@ErFHRckDwOuy^f s0vckUeIh!4*BPKz}% z4EAka&W^eDeEPW+n>MXL t;}(o z+pjbAa))>a+F}fuYzre9=~$mc bY}x-@&K!dX?Q-S0ax?7` zWnEy83rq0FaDzhT!A6-O-5}_?SDg<1D?^ply1H}cWxL)#=j&hRYmkv%rPH~Umt7XX zUyB)Vlm7FN5XW8@jS@^&C#Iz}&}T)~)zhb3g*68VQ6EG+8IA@AuFG5}AiB|t2n#K^ z7Eo)bS_J@08L?Ob;@{G ;%7SqBJ*Y>Zg0+uUJg zX9SczCFlP^oc{-{;otoHI~xA`=6T^(kr|x*Myy=y!u4xl4-rEe83Dw?nZz$pPE1_L zY_v~bv1FuQ3B~R<)b#-^GPr#P!rkn8r)rZ?^T)- 74B zp@HosM9Gl0#F7;3K|LD;gz^vu2Gc+f<~8G7=pm3uj=78!dva!$Q(9(eru%O~?t>%m zHS h?6=Vja_ub`hJz%`jcuO#Af#CnUm^sd|^uRVT#JS?sK#Q$mQPkMa!ZK}LB; zdeT}YB}S`2+iTRyx_9f+SrT&;3Sq>`u%tvpIJFXHt Cv^M zxG3JO#}~47Xe~2B{TBoR3;e@fU=KYsgUW8^RHZ*1@9g_%J5)WH-!C`b8JFj(E}V1O zfYUoAf~3BF=O=wHo7<@>TVjmj^7^%Z3P$eqy;Jf5uE2U)A*P2nG&pEE Xr20tw|)B@4GrONvskVJJ+IK~fPTx@O5Y_9`y~Q^U05fL z)cOmhS>R%o(g4L!Gv&sVjG8?1d3lf*O5N1tVl297)wDudvt+?#n?`Sx`}`<~x#v&F zST=LnI&tK$kHxcCP~e)mE4Qs#y^mGQnKWu%LGFIAPhIuF;i>nu&wFUqtDnDjOdYj& zN%f-HAM5#3LR1IF)X-x xg=*Vv%8plxpg5;U1080hWDRU{~1dP+-L+c>4G|NKkA#4QOn9JuEjCJQ{ zB*e8FR{S|!f0OS}x%lzH=5-OSS}{RR8%>eZ=CJROF4}w(P8+nlgS7iu|9)tTkt>|* zL@ )+gx}{Wt6&HD2sxNJfwr^46c0t*8tCz *r*o_CDGK#7wmM45fD=Tv$VTeo&*w9aqcp-ryGosr|r!Gk|5GeTz0BxxrD zX)ewJ|I~IEH)E%cg}0jlH=EOc2vA$SCeiN?z! 1sXwUgH2-~#@9#
ZT&D6v>A(b83ntL^brxJA_u~bryN@Acc9Gr z2mwEey-;88ccJ>#i}m3r*=F63LX*WK=tALMwiOomxamo8++(#Fh)>aPE;*R(@?_&C zE3pcMCMDv6Q2{L{R%tR($AxLk!cBAnRB+=+bGz{# Yk znm%kaNhGPr)JjQ?jNpVKMuB0AG~kTzaTY~odV?5)3d2)ON{WdgBq=p1H6}48!EQ6! zVr`) HCOveh @0r>zjP#k2Y1IWcG1bjWxvuj7d)l+((SpLEQ74*hU@(>K}% &tGK-W zo=bM_fYkHwm(RXx*?<4Ld?mE4SNzl8C0<;#IyvFErsVhesmqHy-#;S?7p#W&m!E&2 zA?=ucXR4Gw_-NHZQb{f{IqX2FuDpQGlwMMhuxh_>zdwbT)(Yzfw#rS*jkQ@+A`u~) zi3B%O60xM%kMCFY8np>QAt@AYU+_6l@zdEK#ZLfnCnt?R&G=KN7HqQf;_HhR*48eP zTm&Y>S0^1`ic^sN WLEe&@WD^h#;;ua#e2Rg-3k9{=%D^1zS=i*z{v95 zykysoAxqN}H&xzLZ;-NlSAEf?bLVc)K&OJP#RNz 5>)4}@M~K%k(7@)%OY+7#-x8eEIL`UvY3|eeCmC~hVOE86O|QU1f#TiR ze1FxVFaW=(1tG~YLV`IS%qnJEB~89aPEP;5k{K6flzotPY@OPV)0@~+_4T*Ji64C% z#Mva;!BW~8CLKRr`|4A->FkWfzT>EFN3-GE-M@^b3y4u0NVD_7qzguxJV-o^Q7LP0 zp@bI~<*PUk2}7|d#D#NGWdY20YKjhh3b#^y0P!AO&=KoM$Xl_lxQ7lWll@|Eo@q|- zGfoSNn_XBmJ9 #)DE2OPivaRIGX&p!8 z M64 z`$e%nz5#ALtaCYgH+{!G@Z(7?rd#y4+i!w?`>oJ#zyB^= 02zffp5z=$!hAcj-(yfW5&5zZ6}a(6hunCR {s<>T94*;{&aue?k^g21ECg}l%m%umISYCL3;(nlLa!zI9u9g|e8BrK< zfC8xLn4q+HyNwRqZf$tGwIRv;;xh$}tfr-#rry#0@~It1c=FStz{1 A^!DjB-^%muoiE|8(@i)tvG0h# zzto#}iBY>jiqJ=@ib?=$Q|jFB&}vAEo{!~>>VB!)Az6?{$@gXh$XqP6@*Z2PLOjgF zVSHzvdj7@V)cL-*aj%>S74*x%C_WCpm2^3XQTUrNn8v*7%uD|F+L_TU*Uoe}o5xh- zzZnLOqTScP)YYqvThR-vMg1Dz3&zl$IfMOVSoi+>=BNed`oCkCqyGmC^C;=qej$72 zg*D g4h``PUk1(f?RO%@q=z=DSZtJc+@h{jwB$iP(Cb?-Kpv zwp?e#o*5Y=YLq%Pkz|ujq&KPdj?HpWqGSS9Nw==;+Hy^GL{ZQM0yqVwcNi#2lv$~W z>kKjrXc}fUf>2IEygf>aJ9fxxE#DRs`G)pnbEN|_p#HbYHO-|Dnrq{;4Xyfmo_YJN zgPy+Wcmk%CWGJE@ zI$qLvx9=463e1
3WIvC_5-tSgq*O5cbns>#O#BN+4G$elOoO5+qx0Yaut z21%Fe+Ku6|(4YcN+u+a`Q3pDA^@IiPf!S+lk9sV~=N_7QR`_H_ftNI-T`_y4#R3Jv z$$Yg%d+qHja5@`nNb8H|1!9|$Ftwp@T-Ug&gK>rE=5Ym=bVQuSiZ;3k|27Ncjlwtw zcpwWrddQ>xuNYj**gveQ@gD3WG$**0M~Xw*2-J4R{Us@}#dwgRGv7RnfNJxFezo}) z2G6ui>s|kV9KCaHee?pR(Q0-z`a>s!0~j>WU$;iNnU`R`1+%xRLODpcmgzTds&Y(K zVa$N4)kxJe%IBMeTXXv(1XC{Yaq>N4vt-wy-YI6LbeSW+QyUByK&;eRpI?9U_+RHf z_AQaO)uUBo$5gYiTVTQ7w5>1Qb>C~aABq2n|CaSGtssQsxuJ#Wdr}g~B-y0QJItMx zBsW5pP#nj9h!jLOixjwA$;pJcvR&E9naR#pDHzLX7AXjIzmn1ItmBSe zwNPnLW^GE2-2qX3MvB+Yru`^hKXI2jq}t%+tJ`H8l86Um1hNH$Vs>A@Srf`sqg;`S zF#=8V`)AVbV2r?pF#?%MObFIr%;PW+ys1?B z<97ikK!& #N32Mvrzbhm^4dntl?4Io4Zhi*uuO4%I9aIG`MPD+Ps!m||2Dvm&{O zfJUl_#nN1lsJSRf+cr|aM^`2>pdXHltCEC@`V`Q+Uy$Xx?tjjZCrLo{hRU(s#-*+H zy>socWAco6fp0l6NY?H0jW#tLD$D7fH8b-(zDIF^vgfYpn^xbX@6j?&q3CmdtalXF z?MnfbX8>pl5a1~EuPR)v#TF4jp;ry$y9EpRS(+8{lf97|Qp^wM{Y8uU`QajT&_5LP zn^&t)aEX&tt7)mQ-xgd7v)2+zx)Y*)qWiMhq`$XR&tNGuHN~vGAcqB*R*jetTBc7N z)sKb3AW~WyA!*rZZf80wcW1fWP6HUC-vA1NH-Hv5ciQpYv+a0#)z~`rT3y}IkItR@ z$hV{p+()a%jHzN{zZEZvH$Hpzh<-7sf9a09Uefpao#O1Up4|ozLiO{y8!!1kU_zq* z9TU>rK@T>-^wI;ZkiK$=xBlA4f5}!{Z+Psy|7+M3|7rTpJNW&U7xk8W_gz{8ob|T_ znwpGSb%t6O))J>tpea(W2N`%ktg5DS@VLI9tBeSkrUf=pT|ZgJf=EhWtQF-W{nH++ z{W$)yg5AM`(kD4_qJ=7U?6$f-a_c!;_jJpZ?0}4x_=c{i(`jHqFcYJx7ADVGg>&O{ z0x~ itWXDclvqrxPiF5=vG;=S5mqs9Kq<#?A zBF{j5Lrt&xt*Lk~GypTC!l>?PIFuQPSIBZ9Skf#@sQZvXz+~`&W)VMqJpYj{UH8xX zNc;ls8PzqjA$#`t3AM`JM%(FMM+_S_; Xw-t7A$_j-ow$UAg!F{8Ot}kZ zIVJoq!9eu~)< 9>;o7OU(Z-Ve55-$qE^T+ms;ILR7l&9tEpu7iPjbiYPuv5#c z4+lYcXT+A6Eq(w*ef{<%m; }2WU#JyA@Nl*4fmes#te{FvO>5imGZg9Ldy*Ms)cUkevXa zhv+O7VPLU1ET!$+%90i?SFE0q$<#Zcpy+}lMh+`>M(`B!xI!TxbejXLp9fByS+yGd z<4>wgn(jZ6P6`pX72RHRB JEBS)Kuspp2x3-D7LzB zV^jltbKsIo2qiW`EKWlY5$`maP6|96@SHP3VqrR>9px^ K zyHE@fO$>@5+MIvuHH=j|LxvnXk Q1ME{B_tU`AFYMQbXt4a{ zpYDyPK#w_6tmmfLWIv~oEX WkNnTI2f^ z>_>!*NyFml8?Qmzule~y3NI$e`uL)&<)d$mf7>`+Tq{+B2f$^9UKt^3PhNtVMy&KA zf$yEC0wcTTc8RJ~C|)rh8&T5h4}^}=+bX{OKUUlu^}a$D!1=59)IOtiv@ z2RtUz6kFp+$Sx{odJ~zXa~2n38?l9EV~Y#yF1mZ_STT8}s=WN{ZTt8gdvAaIS+1@W zlPV`i$QG{IuCDUImYS81G^EASBd^6mtlqru9mif`wzP&vR@OX+t$gk~;KsbmA;kKD z9J9`(E293Q!qJ0N!$}u_@S?)@?ecP^x#>6)fy8h{cfzb1H8h;V!%3NuEDp1%O!prhl~K6U1e5>8Y)8aQ%l! zDZJ3)xQ32?zr`KIHG!cflq3*h*(JxilkAPr-tq`5W8s7Xgrl}-$NV;O@Gx5urx)mq z!3w@%02Y;EoIBVV(S59%!gN=mbFp*)3gnSucO~0x!OpNbFEYy56Z!+34Ti5R$2}Xb z%Jj&sEsVLtoDueTftP1xg`5NCy*U@6TONOXhG>vi+wK*4TU`NMKYN6iXKO35t_*q| zU5W~rMKf@qs+{05_{)0|i^enytF>Z)fM~Q5HzAB91#)3J=p>j6!wG>>_jx(3{AkdQ z&@tSf5A&F4(4uB&P=n)%`5lyz3gpG?0Y$Js7S5SDXTXw-#P^1Lf8Ez$TQ+ag7V+Je zUAh)kbQ^iweem@CJ!h@D_KGWB^DBq3>e{g*XDI1OyFnd2;nioB-rF|!!Bs~-D`?wo zQ1XLWhc<7!e)i~j3%+JI_!Y(wzdVc`Qha)UO!3xSv_G16gFio{m7%(Q)c>JJ3X7W6 zHu?7+d2(E3^@I-9NlCBwKDzporU|3xF7dsa->3WF!jT*AfroDHJblTfm&~g3_XnLj zq-RlYNU>f2XaAu$-&nEQ?Oax|>wdjEZpl5cdgG?jE`3V(F>ZE;p>zMOvcS)`M$frb zGF5n-jZ&kgJYrUZHRa>_s1PhHmzWS8W$4w}W254u<0T5lmIuw$eL# ~D0vfjeo_ik&r}P+&xKPj$VI;n9zkOa&p8uBHzdocW&wQiXKMeWe ze3)TBdRJ!s!AifO%{BH~wz+wwW$>HI{KgM!R&7~Ko?)SIJGIW7STn;)#UyIEu<$Ze zUol5f=3L>MuyLNE%-cx(7 53gd$b znw&BIGOwMcHpZ&9cM2caoFj##x<`w>;=f|-Y8r`f)mzJk(XaO02j6)+pTC2jwe2 ypgHo`Frv%6MK(2NT!;JCODb3*&y39O9&tu|Ek0dA z!`Rghkv4WLEWP7SOZW+3UGsdLt%yNW2q%4-mMOE<)~H9N*L5!OqOuKB3Gy2>Hi1yi z=|n^2*wi}JO9}ax90tpR-e`ece!<0brMkTMB7NZn+TovtrT7$h`LE&dCT#jwc`4og zP29^L_1lkl4}#Ndf?h-gTcN7h3Pqt4(QHGZ0-I7Ho8nL|YygvA?u!)srdxOJRCny~ zJ@pTTzt6*y=iY*skN FM?+*dSV^R{nnXoK^+C{;0r{5B9VkkGjMu(>-_rKp_C0$b*P@_f2Xq!< z9a%CYB0bjPBJOA&kLZ+@kbtFC{}uv}jkP=EQ}hGVrIRIj0eFf%a!cguyAUaU{&3E| zlCFDaVbmhxziM@DEk-WlXHBZAt*x4uuwJ~>I=^Vs@&)~%(|qA7D}l$9`zUYxO7Js{ zg9i;7+;|2WziQ<4!wnk*-?)DHYB>kCuU@`>BQ$Q<0N-4`te_y)J$KGBQC>Xf`t^Fh zjgouh&&qpdzs>c|D(xlvtxxaJev_c$uqbP-zyCt|Ei5deoJ2g>+uRg`L;0??pOK zx>liq6WJ-)c|ow3)Bm8w&Qmn(J)Wh$+I050>g)46URU+}58{YAqH0j@zQe&WtY5Fe z)x(b^tP?M`?oh0ET;Y82+^r+K!ehKQW8Z&t?BgE>^zT35hmVha^gUxAE?#_W$>K#z z?!SM@qQy&&EnW=21^Vop$BO4}GW;$*Zl!5NBRLqybb^J09y^;Aj%a xmqG)^FZF*ow9X`EzTcD3O?YnAM|j!oMTjF zOF`_|PcN^XFn+f9Xm(BY4Dm5Uel%}?*DjCD{}`gxoeLJMUHes|ZT0dMtJvA#&rg5D z@Yk=Wb#4(g;$6zVi?v0evy8Sx|6keyEwu&5)F1kXuUKbQG(1XEhYlJsTzous mMMpSQF>uZ#9tU2TX<<`j4T*8GwWoD>-b|jmwB}}EJ8=VA;ZnkyKF@$ zLt0*KbIoS6RIsUlnH+eMS$od^TvnQL@pnMAA&EFO%hTDiX(8&hWRQUF12(#VRfrSs z{0W@|P)Oxee7=0+hHJ0g@U*xNCOe_@2XI0-j1<1_)y-GFeV;gS|2w*Fkl4<-ezsLM zZx>2Zq#9P$_>D?v)~uk>E&l(7He=eNnN|hbY!xS-eFL=bU;af}{Cm~#1vNDb4~p$D zB?GeGN&6m(K7UFrUm(>fwmxENF%ZH#D?NxEwFFTA&rtZ+R5U!sFZ4XiRQQiW%}Ygd zGr2PqEBaRflfP2}&H>`Y{)SJ*$^PIzB0d=it|#|=4(=i16g; t|*z(}I2ch=C z4G%&;G5f)_59ptNHNS(6SA0Z64Rc)ybfPIDW775_5SeIBRUJL%DRz1i9ME+i&`j8; zWUPT7=D=}$uMJ89TctXP4XYvg`w-uXQllPT1m=Tcq9Vg}wFDd3Bp=@15k*~apTd6R z((m215V{RqxcbVH4te6>hD7C-Wpn1bV+#tFU5+|4N)k*^XA*_jyjYEaa9uxXk_}=c zOrbza&}KXXC1uL-&9}`hB|zrN=T8khpMwASc6`2mo*a@p+(9L&bnb1NQMFjSsO?u8 zblsKq@~OjRf6OOq$=BX5H9!TMvIHAf)ESdJPHqjmbYXEmkBsWyi`rt9-WiPQ;)cA| zEpK+3qNo;CvD9X#BxQyx*06{$Yea39T|U(|I}Ug}U>2=95iH3dM?9=L6(Z6=^46lN z<-p6C5F04o9MQ*<-pUoNM9M#<3*?*{F~aNZ&> }q7S+tJnLl^- z%-U&FMob(raeQ^<*iq%);ojjx2M-+3w@-(j9eQ@}iYH4(`;7K&^IFTzC?-8das^}r zz-~$@=g1NEWH&2Hd*Sc)i~s+>|NbxU$6~0mU{cLOPHXc!c5Dw{Qe|OH%_W@9>`>6L zT^atS|EK(|y?DFXuf8$OUg{eq|2O!n__EoPyEl7Z{);+%#*E==UP(!w_*NZOD<8M% zA|G3Wk9~iI{QKwXi0RWu$j4pUD9QfU{`2#RKDVZ5 ~b;O;ZDxfJIH}kM!J0#dO#?!-B)buNfkl$!pBn%bzoL?L%9)T)WPoY<- zTQoKPLdCOvAv@1@L$8-vjqS$XFLjF&55XjUM-+^d;80t{s>%Jk;x~9W=BCnweT`de zH}ySCKc~>IulR4{XH*>M4|#?k&<3?p)pGrIw#XY1nwK$-lPsbVqE2WjNfXS^q hYjNW8=9 zfFUf4V-(*YjLae?u-@O%4!a>}jFd-zw>nwFC%*Xzq^oEBwG3awdC`ow+l3HzMoA!1 zGGZ8od^ctQLBa1&Bp4+P^v}Wr(~s&)@y7d&X#O9Sx=45wiL@JsX>q7I1yrQGA!3YF z11~utdLbA!fU~B4?gHkIkV&kmRAB)=F5wDQc#R5%79AiS!vr&13_ydKJkS*toK9Q; zeoX)erqL4=S79;TA$slFWs)1-eOFRo ^0^+!jlb# zqNc_IS6EP^fT$Wu6rh|o9}}Wfpx1@8OPLd0pdcYspa98JsC7~({a&2&%`~m=gm~yH z&dDu$#|*fA*PWpn*J6oyM|^fpT1H=geb*CDiFrmYzl(T{FUI@};xlFT1r&^VbF54f z5sq=bfEESvyfDhAmpF|!37~F!p3_L_V^^UFMLg9^S@h7XA^ZNZ2yv_w2o%w0A6qeX z`u6pu#$d8Uda&;O^WSa~KX*IWZsVjim%SN^xkjGc2g)-fj|}q;b|B$XQAjJ$pmk0< zsu5d^$UJBk(5iGw4L7zBi^WVrgc%@-yj)MV4e|7HoU`;gn*mvZ!U9K2(gfg=j+frU zdeOzro6GNY9_xGMyiQeF`3`4Xo4)xEK(95jV}I&$Z~125BSGePV`D&apkRRb#CNB? zfmWP2;pdK55TZ=ugAMe`zqW}Ii%Kn(fwuj7iyYXZmbn7hA{>?qL|80cI%h@Z>P}Zr zFDP>(V<4k@(&9JPiN$xfTQO&;@2D{d^=YT~?D=tgO-kZX3(sl&vREG{c>}w49Z##n zwzvq *Zy!@SoZIW}(eJc8}PWKgnl@zz9# zw8l-`cH4!m`4<8Q &y_MJt6m=bhJM;McN1|13bE7ZIZFT z6>4GzY6u|;Cpzr}P{0wuud09zkiaf8QEc*(o&G&2NEirW0 zvrF7EC7EQP3Jg?oFJ!6 Em8fS$=Bs&3$S>X}->2lGfn<{+IZVxxbrzO#R2UfiFL!Ar{|_ z+VeV+fGHX227ASVC%5z!sIIt62_XI3q;UibDw_C#JeQ`+Km|8^!)(Xjr-o8omkVLw zrO)nPIb{aaUy~c4m*D3AF!uKA=f1lfcmKAV 0q@kuUkF6n~jdlWG0 zNupe1K(Oqg#yHb>tpyM;s_0dQRXvnw!mP665 PvRAy_4=#N7 z!Ma=O2_+Mn&T!NY%`vLQN#dwNyR@dN;!dDk#TN74M4>8GbW{vg`E+K;c89dMsIXnz z9C
VI{>~`e 18SFE zS1(ZVJ086GwwL?$at+HBuNJmeb33(ftF|pjOioTrg04S~KL!z;eyVMlF>&)=D=WHv z{Ed%(FV4NZb?V+yO@qbTt1jhyPWes!m*u&Z_9sA6#cr(|)*?Uzh*5`tNrzdbG^h)w zP-Tz?=re{{sUe9$sXCJACm|tN`&&l>VZI DrZ)zuP$N*N&cTVsz(6o=F $&ia@QSn!sW#{TTX$LbNu)(>^ AZ3F}dpV(m({ZL`7w)8nsi?1_KSizm$LCafttkB=qwiY0 zkz4v71VGx}d+*qbXn=r={@S?f;zA(09-NXX$AOV7vL4%udPb@u+ZzcKl0l({|4O)d z4{;G-6y0s2aK#W9Bvct^h-n&LtZZ@?K8pdZz1Y(#y-}R=Ebfw=q->d$l9xQpO8qM{ zsqx->*Zu=J=`7Wt^xybNh0>_6mA!rr6$P#rz9G7xlg_9Ds&l9)5L%7mL;iv#CWp%5 z_H(E%q7;XgZma8kw--g?@DyLa8HWd*bdX9%4QZl2%Kr7w#>i}*YmX8g@F92TH9Yg0 zzLxo)7ZFd6H9Vc+R0R%9m9vng7(13q7*|=P1%hSXaYp&;E#Rh=o(9AvrBl p|}rC5@H5)95@i7%F^CK% Zhqi{LGuTDCsvn zMQGD6GH1uY2J}7DE`Qz<{Yqz*(} Wyltjwkci>!e?NF22^5tbAM^DCeJ+H9J>e1-nV>h79lX-& rlTpQGDI*RKsQBnjCtedcU1(N4Y9jC#%HliEP23w4wOJu>BjLacL&KET?v}>z^ zecH!g3Mxs*5@2yxEk0DMsKsi*fr>-8i(*A;`BPRVHMuR`W(A1Q`@W!DFx?~;_-(Hc zgOws)^8aUh^uOEg_r44MZhPSVDXZm7xfb@-)tR>EOJ0t+MLM=-ubZUj#yJ5}4!rih zc@Fe#`bNo8Uc#6u@>lfwk&%?*si&~N7m QKAW60L1>Xt zYC_)qW$F#70}0TwssiZMv3MSc8x9^5AAbLacn_5XmrR;3bB0&I2qw0o|MR$*k^apg zT|;p6q9xT^H#`P2)PVkHSFwZ-z&Mf4QvpKLEK~&>C`Qq7RVO=fqH<|02DGLVLd*b+ zNq)lUD4J@s;Ra$D<@_g`>04A>D>