From a5d9cd320e9ed83e36de2b5326f1201ea16b697f Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani <3fb650a9-b47e-4604-a282-1dd91953b2ee@anonaddy.me> Date: Mon, 26 Oct 2020 13:07:58 -0400 Subject: [PATCH] first push --- .gitmodules | 3 + AUTHORS | 28 + CMakeLists.txt | 79 + COPYING | 23 + ChangeLog | 50 + INSTALL | 131 + LICENSE | 23 + NEWS | 43 + README.md | 2 + cmake.h | 60 + cmake.h.in | 60 + cmake/CXXSniffer.cmake | 51 + cmake/Modules/FindReadline.cmake | 81 + commit.h | 4 + commit.h.in | 4 + doc/CMakeLists.txt | 12 + doc/man/tasksh.1 | 175 ++ doc/man/tasksh.1.in | 175 ++ src/CMakeLists.txt | 34 + src/diag.cpp | 163 ++ src/help.cpp | 48 + src/liblibshared.a | Bin 0 -> 1028696 bytes src/libshared/AUTHORS | 21 + src/libshared/CMakeLists.txt | 28 + src/libshared/ChangeLog | 89 + src/libshared/LICENSE | 23 + src/libshared/cmake.h.in | 36 + src/libshared/cmake/CXXSniffer.cmake | 51 + src/libshared/src/Args.cpp | 246 ++ src/libshared/src/Args.h | 68 + src/libshared/src/CMakeLists.txt | 65 + src/libshared/src/Color.cpp | 682 +++++ src/libshared/src/Color.h | 78 + src/libshared/src/Composite.cpp | 148 + src/libshared/src/Composite.h | 47 + src/libshared/src/Configuration.cpp | 323 +++ src/libshared/src/Configuration.h | 66 + src/libshared/src/Datetime.cpp | 3787 ++++++++++++++++++++++++++ src/libshared/src/Datetime.h | 215 ++ src/libshared/src/Duration.cpp | 552 ++++ src/libshared/src/Duration.h | 81 + src/libshared/src/FS.cpp | 1025 +++++++ src/libshared/src/FS.h | 149 + src/libshared/src/JSON.cpp | 490 ++++ src/libshared/src/JSON.h | 183 ++ src/libshared/src/Lexer.cpp | 943 +++++++ src/libshared/src/Lexer.h | 119 + src/libshared/src/Log.cpp | 123 + src/libshared/src/Log.h | 56 + src/libshared/src/Msg.cpp | 115 + src/libshared/src/Msg.h | 54 + src/libshared/src/PEG.cpp | 436 +++ src/libshared/src/PEG.h | 89 + src/libshared/src/Packrat.cpp | 770 ++++++ src/libshared/src/Packrat.h | 70 + src/libshared/src/Palette.cpp | 82 + src/libshared/src/Palette.h | 51 + src/libshared/src/Pig.cpp | 668 +++++ src/libshared/src/Pig.h | 81 + src/libshared/src/README | 16 + src/libshared/src/RX.cpp | 159 ++ src/libshared/src/RX.h | 58 + src/libshared/src/SAX.cpp | 579 ++++ src/libshared/src/Table.cpp | 374 +++ src/libshared/src/Table.h | 100 + src/libshared/src/Timer.cpp | 94 + src/libshared/src/Timer.h | 53 + src/libshared/src/Tree.cpp | 275 ++ src/libshared/src/Tree.h | 76 + src/libshared/src/format.cpp | 353 +++ src/libshared/src/format.h | 87 + src/libshared/src/ip.cpp | 237 ++ src/libshared/src/lex.cpp | 20 + src/libshared/src/shared.cpp | 861 ++++++ src/libshared/src/shared.h | 95 + src/libshared/src/unicode.cpp | 133 + src/libshared/src/unicode.h | 39 + src/libshared/src/utf8.cpp | 295 ++ src/libshared/src/utf8.h | 44 + src/libshared/src/wcwidth6.cpp | 211 ++ src/libtasksh.a | Bin 0 -> 177472 bytes src/main.cpp | 192 ++ src/prompt.cpp | 103 + src/review.cpp | 320 +++ src/shell.cpp | 46 + 85 files changed, 18179 insertions(+) create mode 100644 .gitmodules create mode 100644 AUTHORS create mode 100644 CMakeLists.txt create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 LICENSE create mode 100644 NEWS create mode 100644 README.md create mode 100644 cmake.h create mode 100644 cmake.h.in create mode 100644 cmake/CXXSniffer.cmake create mode 100644 cmake/Modules/FindReadline.cmake create mode 100644 commit.h create mode 100644 commit.h.in create mode 100644 doc/CMakeLists.txt create mode 100644 doc/man/tasksh.1 create mode 100644 doc/man/tasksh.1.in create mode 100644 src/CMakeLists.txt create mode 100644 src/diag.cpp create mode 100644 src/help.cpp create mode 100644 src/liblibshared.a create mode 100644 src/libshared/AUTHORS create mode 100644 src/libshared/CMakeLists.txt create mode 100644 src/libshared/ChangeLog create mode 100644 src/libshared/LICENSE create mode 100644 src/libshared/cmake.h.in create mode 100644 src/libshared/cmake/CXXSniffer.cmake create mode 100644 src/libshared/src/Args.cpp create mode 100644 src/libshared/src/Args.h create mode 100644 src/libshared/src/CMakeLists.txt create mode 100644 src/libshared/src/Color.cpp create mode 100644 src/libshared/src/Color.h create mode 100644 src/libshared/src/Composite.cpp create mode 100644 src/libshared/src/Composite.h create mode 100644 src/libshared/src/Configuration.cpp create mode 100644 src/libshared/src/Configuration.h create mode 100644 src/libshared/src/Datetime.cpp create mode 100644 src/libshared/src/Datetime.h create mode 100644 src/libshared/src/Duration.cpp create mode 100644 src/libshared/src/Duration.h create mode 100644 src/libshared/src/FS.cpp create mode 100644 src/libshared/src/FS.h create mode 100644 src/libshared/src/JSON.cpp create mode 100644 src/libshared/src/JSON.h create mode 100644 src/libshared/src/Lexer.cpp create mode 100644 src/libshared/src/Lexer.h create mode 100644 src/libshared/src/Log.cpp create mode 100644 src/libshared/src/Log.h create mode 100644 src/libshared/src/Msg.cpp create mode 100644 src/libshared/src/Msg.h create mode 100644 src/libshared/src/PEG.cpp create mode 100644 src/libshared/src/PEG.h create mode 100644 src/libshared/src/Packrat.cpp create mode 100644 src/libshared/src/Packrat.h create mode 100644 src/libshared/src/Palette.cpp create mode 100644 src/libshared/src/Palette.h create mode 100644 src/libshared/src/Pig.cpp create mode 100644 src/libshared/src/Pig.h create mode 100644 src/libshared/src/README create mode 100644 src/libshared/src/RX.cpp create mode 100644 src/libshared/src/RX.h create mode 100644 src/libshared/src/SAX.cpp create mode 100644 src/libshared/src/Table.cpp create mode 100644 src/libshared/src/Table.h create mode 100644 src/libshared/src/Timer.cpp create mode 100644 src/libshared/src/Timer.h create mode 100644 src/libshared/src/Tree.cpp create mode 100644 src/libshared/src/Tree.h create mode 100644 src/libshared/src/format.cpp create mode 100644 src/libshared/src/format.h create mode 100644 src/libshared/src/ip.cpp create mode 100644 src/libshared/src/lex.cpp create mode 100644 src/libshared/src/shared.cpp create mode 100644 src/libshared/src/shared.h create mode 100644 src/libshared/src/unicode.cpp create mode 100644 src/libshared/src/unicode.h create mode 100644 src/libshared/src/utf8.cpp create mode 100644 src/libshared/src/utf8.h create mode 100644 src/libshared/src/wcwidth6.cpp create mode 100644 src/libtasksh.a create mode 100644 src/main.cpp create mode 100644 src/prompt.cpp create mode 100644 src/review.cpp create mode 100644 src/shell.cpp diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..675b3d4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/libshared"] + path = src/libshared + url = https://git.tasktools.org/TM/libshared.git diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..9617cca --- /dev/null +++ b/AUTHORS @@ -0,0 +1,28 @@ +The development of tasksh was made possible by the significant contributions of +the following people: + + Paul Beckingham (Principal Author) + Federico Hernandez (Principal Author) + Dirk Deimeke (Technical Advisor & Evangelist) + +The following submitted code, packages or analysis, and deserve special thanks: + + Jörg Krause + Ben Boeckel + ilove zfs + Paul Fenwick + +Thanks to the following, who submitted detailed bug reports and excellent +suggestions: + + Kevin Gunn + Fidel Mato + David Stahl + David Patrick + jonbobbly + hosaka + Lars Kumbier + Iain R. Learmonth + Eric Hymowitz + bjonnh + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..205cf7b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required (VERSION 2.8) +set (CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required +set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") +set (HAVE_CMAKE true) + +project (tasksh) +include (CXXSniffer) + +set (PROJECT_VERSION "1.2.0") + +include (CheckFunctionExists) +include (CheckStructHasMember) +include (CheckCXXCompilerFlag) + +message ("-- Looking for SHA1 references") +if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) + set (HAVE_COMMIT true) + execute_process (COMMAND git log -1 --pretty=format:%h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE COMMIT) + configure_file ( ${CMAKE_SOURCE_DIR}/commit.h.in + ${CMAKE_SOURCE_DIR}/commit.h) + message ("-- Found SHA1 reference: ${COMMIT}") +endif (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) + +set (PACKAGE "${PROJECT_NAME}") +set (VERSION "${PROJECT_VERSION}") +set (PACKAGE_BUGREPORT "support@taskwarrior.org") +set (PACKAGE_NAME "${PACKAGE}") +set (PACKAGE_TARNAME "${PACKAGE}") +set (PACKAGE_VERSION "${VERSION}") +set (PACKAGE_STRING "${PACKAGE} ${VERSION}") + +if (FREEBSD) +SET (TASKSH_MAN1DIR man/man1 CACHE STRING "Installation directory for man pages, section 1") +else (FREEBSD) +SET (TASKSH_MAN1DIR share/man/man1 CACHE STRING "Installation directory for man pages, section 1") +endif (FREEBSD) +SET (TASKSH_DOCDIR share/doc/tasksh CACHE STRING "Installation directory for doc files") +SET (TASKSH_RCDIR "${TASKSH_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files") +SET (TASKSH_BINDIR bin CACHE STRING "Installation directory for the binary") + +# include the readline library finder module +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules") + +# find readline +message ("-- Looking for GNU Readline") +find_package (Readline REQUIRED) +if (READLINE_FOUND) + set (HAVE_READLINE true) + set (TASKSH_INCLUDE_DIRS ${TASKSH_INCLUDE_DIRS} ${READLINE_INCLUDE_DIR}) + set (TASKSH_LIBRARIES ${TASKSH_LIBRARIES} ${READLINE_LIBRARIES}) +endif (READLINE_FOUND) + +message ("-- Configuring cmake.h") +configure_file ( + ${CMAKE_SOURCE_DIR}/cmake.h.in + ${CMAKE_SOURCE_DIR}/cmake.h) + +add_subdirectory (src) +add_subdirectory (doc) +if (EXISTS ${CMAKE_SOURCE_DIR}/test) + add_subdirectory (test EXCLUDE_FROM_ALL) +endif (EXISTS ${CMAKE_SOURCE_DIR}/test) + +set (doc_FILES NEWS ChangeLog INSTALL AUTHORS COPYING) +foreach (doc_FILE ${doc_FILES}) + install (FILES ${doc_FILE} DESTINATION ${TASKSH_DOCDIR}) +endforeach (doc_FILE) + +# --- + +set (CPACK_SOURCE_GENERATOR "TGZ") +set (CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION}) +set (CPACK_SOURCE_IGNORE_FILES "CMakeCache" "CMakeFiles" "CPackConfig" "CPackSourceConfig" + "_CPack_Packages" "cmake_install" "install_manifest" "Makefile$" + "test" "package-config" "misc/*" "src/tasksh$" "README.md" + "/\\\\.gitignore" "/\\\\.git/" "swp$") +include (CPack) diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..9295662 --- /dev/null +++ b/COPYING @@ -0,0 +1,23 @@ +tasksh - a shell/frontend for the command line task list manager taskwarrior. + +Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +http://www.opensource.org/licenses/mit-license.php diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..733d5fa --- /dev/null +++ b/ChangeLog @@ -0,0 +1,50 @@ +1.2.0 (2017-05-10) - + +- TS-29 tasksh hangs trying to read task from stdin + (thanks to ilove zfs). +- TS-32 control-d to exit + (thanks to Eric Hymowitz, Paul Fenwick). +- TS-34 Tasksh throw a warning at the end of a review command + (thanks to bjonnh). +- Review report now defaults to 6 days instead of 1 weeķ, which is more + convenient for those who review weekly + (thanks to Dirk Deimeke). + +------ current release --------------------------- + +1.1.0 (2016-09-06) 464f5ae19f853911e739c2489897aef64345c388 + +- TD-120 Missing cmakedefine for HAVE_GET_CURRENT_DIR_NAME + (Thanks to Jörg Krause, Ben Boeckel). +- TW-1845 Cygwin build fails, missing get_current_dir_name + (thanks to hosaka). +- TS-11 Autoclear in the Task Shell + (thanks to Lars Kumbier). +- TS-24 add review option (m)odify + (thanks to David Patrick). +- TS-28 Please add a (m)odify feature for review + (thanks to Iain R. Learmonth). +- Implemented 'review' command. +- Implemented 'diag' command. +- Added 'review N' option, to specify the number of tasks you would like to + review. +- Integrated libshared.git. + +------ old releases ------------------------------ + +1.0.0 (2014-12-21) 5934dfcefac6d037a359bc733a8382e42e32552e + +- TS-1 Apostrophe inside tasksh 'log' causes segmentation fault + (thanks to David Stahl). +- TS-2 tasksh segfaults if quotes not closed + (thanks to Fidel Mato). +- TS-5 tasksh segfaults + (thanks to David Patrick). +- TS-13 Quotes included when using task shell + (thanks to Kevin Gunn). +- libreadline support added for line editing and command history. + +------ start ----------------------------------- + +Project started 2014-06-08 + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..95f9120 --- /dev/null +++ b/INSTALL @@ -0,0 +1,131 @@ +Installation Instructions +------------------------- + +Please follow the instructions below to build and install tasksh from source. + + +Dependencies +------------ + +You will need the CMake build system installed in order to build tasksh from +source. Information on cmake can be obtained at http://cmake.org + +Additionally, you will need: + + libreadline + + +Basic Installation +------------------ + +Briefly, these shell commands will unpack, build and install Tasksh: + + $ tar xzf tasksh-X.Y.Z.tar.gz [1] + $ cd tasksh-X.Y.Z [2] + $ cmake -DCMAKE_BUILD_TYPE=release . [3] + $ make [4] + $ sudo make install [5] + $ cd .. ; rm -r tasksh-X.Y.Z [6] + +These commands are explained below: + + 1. Unpacks the source tarball. This creates the directory tasksh-X.Y.Z, + containing all the code. + + 2. Change directory to the root of the distribution. + + 3. Invokes CMake to scan for dependencies and machine-specific details, then + generate the makefiles. Requests an optimized build, which will run faster + and be more compact. This may take a minute. + + 4. Builds tasksh. This may take a minute. + + 5. Installs the program, documentation and other data files. + + 6. Removes the temporary directory. + + +Build and configurations options +-------------------------------- + +You can customize the configuration run with cmake variables. This will modify +the installation process: + +To change the installation directory you use the following configuration +variable: + + $ cmake -DCMAKE_INSTALL_PREFIX= . + +cmake configuration variables are applied with the -D option and consist of a + and a : + + $ cmake -D= . + +Four more variables can customize the installation process. The following table +lists them and their defaults plus the CMAKE_INSTALL_PREFIX: + + CMAKE_INSTALL_PREFIX /usr/local + TASKSH_BINDIR bin + TASKSH_DOCDIR share/doc/tasksh + TASKSH_MAN1DIR share/man/man1 + +The corresponding TASKSH_* variables will be combined with CMAKE_INSTALL_PREFIX to +get absolute installation directories: + + CMAKE_INSTALL_PREFIX/TASKSH_BINDIR /usr/local/bin + CMAKE_INSTALL_PREFIX/TASKSH_DOCDIR /usr/local/share/doc/tasksh + CMAKE_INSTALL_PREFIX/TASKSH_MAN1DIR /usr/local/share/man/man1 + + +Uninstallation +-------------- + +There is no uninstall option in CMake makefiles. This is a manual process. + +To uninstall Tasksh, remove the files listed in the install_manifest.txt file +that was generated when you built Tasksh. + + +Tasksh Build Notes +----------------------- + +Tasksh has dependencies that are detected by CMake in almost all cases, but +there are situations and operating systems that mean you will need to offer a +little help. + +If Tasksh will not build on your system, first take a look at the Operating +System notes below. If this doesn't help, then go to the Troubleshooting +section, which includes instructions on how to contact us for help. + + +Operating System Notes +---------------------- + +Cygwin + If 'make install' fails when writing to the /usr/local/share/ directory, + this may be because your current login doesn't have permission to write + to the Windows directory containing your Cygwin installation. Either + login to Windows as an Administrator and try the 'make install' process + again, or reinstall Cygwin under your normal Windows login. + + +Troubleshooting +--------------- + +If you've recently made changes to dependencies (by reinstalling them, for +example) be sure to rerun 'cmake .' before trying to execute 'make' again. + +CMake will run and locate all the necessary pieces for the build, and create +a Makefile. There may be errors and warnings when running CMake, or there +may be compiler errors and warnings when running 'make'. Sometimes you will run +CMake with no reported problems, and the build will fail later. This is +almost always because CMake is mistaken about some assumption. + +If a build does not succeed, please send the contents of the 'CMakeCache.txt' +and 'CMakeFiles/CMakeOutput.log' files to support@taskwarrior.org. + +If CMake runs but tasksh does not build, please send the contents of the above +files as well as a transcript from the build, which is not written to a file +and must be captured from the terminal. + +--- diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f9ab300 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +tasksh - a shell/frontend for ithe command line task list manager taskwarrior. + +Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +http://www.opensource.org/licenses/mit-license.php diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..4f9546e --- /dev/null +++ b/NEWS @@ -0,0 +1,43 @@ + +New Features in tasksh 1.2.0 + + - Responds to Ctrl-D by exiting. + +New commands in tasksh 1.2.0 + + - + +New configuration options in tasksh 1.2.0 + + - + +Known Issues + + - + +Tasksh has been built and tested on the following configurations: + + * macOS + * Fedora + * Ubuntu + * Debian + * Arch + * FreeBSD + * Cygwin + +--- + +While Tasksh has undergone testing, bugs are sure to remain. If you +encounter a bug, please enter a new issue at: + + http://bug.tasktools.org + +Or you can also report the issue in the forums at: + + http://answers.tasktools.org + +Or just send a message to: + + support@taskwarrior.org + +Thank you. diff --git a/README.md b/README.md new file mode 100644 index 0000000..953d7c7 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# gen-shell +A work in progress generic shell forked form [taskshell](https://github.com/GothenburgBitFactory/taskshell) diff --git a/cmake.h b/cmake.h new file mode 100644 index 0000000..6a8947b --- /dev/null +++ b/cmake.h @@ -0,0 +1,60 @@ +/* cmake.h.in. Creates cmake.h during a cmake run */ + +/* Product identification */ +#define PRODUCT_TASKSH 1 + +/* Package information */ +#define PACKAGE "tasksh" +#define VERSION "1.2.0" +#define PACKAGE_BUGREPORT "support@taskwarrior.org" +#define PACKAGE_NAME "tasksh" +#define PACKAGE_TARNAME "tasksh" +#define PACKAGE_VERSION "1.2.0" +#define PACKAGE_STRING "tasksh 1.2.0" + +#define CMAKE_BUILD_TYPE "" + +/* Localization */ +#define PACKAGE_LANGUAGE +#define LANGUAGE_ENG_USA + +/* git information */ +#define HAVE_COMMIT + +/* cmake information */ +#define HAVE_CMAKE +#define CMAKE_VERSION "3.8.1" + +/* Compiling platform */ +/* #undef LINUX */ +#define DARWIN +/* #undef CYGWIN */ +/* #undef FREEBSD */ +/* #undef OPENBSD */ +/* #undef NETBSD */ +/* #undef HAIKU */ +/* #undef SOLARIS */ +/* #undef KFREEBSD */ +/* #undef GNUHURD */ +/* #undef UNKNOWN */ + +/* Found the Readline library */ +#define HAVE_READLINE + +/* Found the pthread library */ +/* #undef HAVE_LIBPTHREAD */ + +/* Found wordexp.h */ +/* #undef HAVE_WORDEXP */ + +/* Found tm.tm_gmtoff struct member */ +/* #undef HAVE_TM_GMTOFF */ + +/* Found st.st_birthtime struct member */ +/* #undef HAVE_ST_BIRTHTIME */ + +/* Functions */ +/* #undef HAVE_GET_CURRENT_DIR_NAME */ +/* #undef HAVE_TIMEGM */ +/* #undef HAVE_UUID_UNPARSE_LOWER */ + diff --git a/cmake.h.in b/cmake.h.in new file mode 100644 index 0000000..e905598 --- /dev/null +++ b/cmake.h.in @@ -0,0 +1,60 @@ +/* cmake.h.in. Creates cmake.h during a cmake run */ + +/* Product identification */ +#define PRODUCT_TASKSH 1 + +/* Package information */ +#define PACKAGE "${PACKAGE}" +#define VERSION "${VERSION}" +#define PACKAGE_BUGREPORT "${PACKAGE_BUGREPORT}" +#define PACKAGE_NAME "${PACKAGE_NAME}" +#define PACKAGE_TARNAME "${PACKAGE_TARNAME}" +#define PACKAGE_VERSION "${PACKAGE_VERSION}" +#define PACKAGE_STRING "${PACKAGE_STRING}" + +#define CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" + +/* Localization */ +#define PACKAGE_LANGUAGE ${PACKAGE_LANGUAGE} +#define LANGUAGE_ENG_USA ${LANGUAGE_ENG_USA} + +/* git information */ +#cmakedefine HAVE_COMMIT + +/* cmake information */ +#cmakedefine HAVE_CMAKE +#define CMAKE_VERSION "${CMAKE_VERSION}" + +/* Compiling platform */ +#cmakedefine LINUX +#cmakedefine DARWIN +#cmakedefine CYGWIN +#cmakedefine FREEBSD +#cmakedefine OPENBSD +#cmakedefine NETBSD +#cmakedefine HAIKU +#cmakedefine SOLARIS +#cmakedefine KFREEBSD +#cmakedefine GNUHURD +#cmakedefine UNKNOWN + +/* Found the Readline library */ +#cmakedefine HAVE_READLINE + +/* Found the pthread library */ +#cmakedefine HAVE_LIBPTHREAD + +/* Found wordexp.h */ +#cmakedefine HAVE_WORDEXP + +/* Found tm.tm_gmtoff struct member */ +#cmakedefine HAVE_TM_GMTOFF + +/* Found st.st_birthtime struct member */ +#cmakedefine HAVE_ST_BIRTHTIME + +/* Functions */ +#cmakedefine HAVE_GET_CURRENT_DIR_NAME +#cmakedefine HAVE_TIMEGM +#cmakedefine HAVE_UUID_UNPARSE_LOWER + diff --git a/cmake/CXXSniffer.cmake b/cmake/CXXSniffer.cmake new file mode 100644 index 0000000..9606226 --- /dev/null +++ b/cmake/CXXSniffer.cmake @@ -0,0 +1,51 @@ +message ("-- Configuring C++11") +message ("-- System: ${CMAKE_SYSTEM_NAME}") + +include (CheckCXXCompilerFlag) + +# NOTE: Phase out -std=gnu++0x and --std=c++0x as soon as realistically possible. +CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11) +CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X) +CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X) + +if (_HAS_CXX11) + set (_CXX11_FLAGS "-std=c++11") +elseif (_HAS_CXX0X) + message (WARNING "Enabling -std=c++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") + set (_CXX11_FLAGS "-std=c++0x") +elseif (_HAS_GNU0X) + message (WARNING "Enabling -std=gnu++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") + set (_CXX11_FLAGS "-std=gnu++0x") +else (_HAS_CXX11) + message (FATAL_ERROR "C++11 support missing. Try upgrading your C++ compiler. If you have a good reason for using an outdated compiler, please let us know at support@taskwarrior.org.") +endif (_HAS_CXX11) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set (LINUX true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set (DARWIN true) + set (_CXX11_FLAGS "${_CXX11_FLAGS} -stdlib=libc++") +elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD") + set (KFREEBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + set (FREEBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + set (OPENBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") + set (NETBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") + set (SOLARIS true) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU") + set (GNUHURD true) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN") + set (CYGWIN true) + # NOTE: Not setting -std=gnu++0x leads to compile errors even with + # GCC 4.8.3, and debugging those leads to insanity. Adding this + # workaround instead of fixing Cygwin. + set (_CXX11_FLAGS "-std=gnu++0x") +else (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set (UNKNOWN true) +endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +set (CMAKE_CXX_FLAGS "${_CXX11_FLAGS} ${CMAKE_CXX_FLAGS}") +set (CMAKE_CXX_FLAGS "-Wall -Wextra -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}") diff --git a/cmake/Modules/FindReadline.cmake b/cmake/Modules/FindReadline.cmake new file mode 100644 index 0000000..8fdaec1 --- /dev/null +++ b/cmake/Modules/FindReadline.cmake @@ -0,0 +1,81 @@ +# - Find the readline library +# This module defines +# READLINE_INCLUDE_DIR, path to readline/readline.h, etc. +# READLINE_LIBRARIES, the libraries required to use READLINE. +# READLINE_FOUND, If false, do not try to use READLINE. +# also defined, but not for general use are +# READLINE_readline_LIBRARY, where to find the READLINE library. +# READLINE_ncurses_LIBRARY, where to find the ncurses library [might not be defined] + +# Apple readline does not support readline hooks +# So we look for another one by default +IF (APPLE OR FREEBSD) + FIND_PATH (READLINE_INCLUDE_DIR NAMES readline/readline.h PATHS + /usr/include/ + /sw/include + /opt/local/include + /opt/include + /usr/local/include + NO_DEFAULT_PATH + ) +ENDIF (APPLE OR FREEBSD) +FIND_PATH (READLINE_INCLUDE_DIR NAMES readline/readline.h) + + +# Apple readline does not support readline hooks +# So we look for another one by default +IF (APPLE OR FREEBSD) + FIND_LIBRARY (READLINE_readline_LIBRARY NAMES readline PATHS + /usr/lib + /sw/lib + /opt/local/lib + /opt/lib + /usr/local/lib + NO_DEFAULT_PATH + ) +ENDIF (APPLE OR FREEBSD) +FIND_LIBRARY (READLINE_readline_LIBRARY NAMES readline) + +# Sometimes readline really needs ncurses +IF (APPLE OR FREEBSD) + FIND_LIBRARY (READLINE_ncurses_LIBRARY NAMES ncurses PATHS + /usr/lib + /sw/lib + /opt/local/lib + /opt/lib + /usr/local/lib + /usr/lib + NO_DEFAULT_PATH + ) +ENDIF (APPLE OR FREEBSD) +FIND_LIBRARY (READLINE_ncurses_LIBRARY NAMES ncurses) + +MARK_AS_ADVANCED ( + READLINE_INCLUDE_DIR + READLINE_readline_LIBRARY + READLINE_ncurses_LIBRARY + ) + +SET (READLINE_FOUND "NO" ) +IF (READLINE_INCLUDE_DIR) + IF (READLINE_readline_LIBRARY) + SET (READLINE_FOUND "YES" ) + SET (READLINE_LIBRARIES + ${READLINE_readline_LIBRARY} + ) + + # some readline libraries depend on ncurses + IF (READLINE_ncurses_LIBRARY) + SET (READLINE_LIBRARIES ${READLINE_LIBRARIES} ${READLINE_ncurses_LIBRARY}) + ENDIF (READLINE_ncurses_LIBRARY) + + ENDIF (READLINE_readline_LIBRARY) +ENDIF (READLINE_INCLUDE_DIR) + +IF (READLINE_FOUND) + MESSAGE (STATUS "Found readline library") +ELSE (READLINE_FOUND) + IF (READLINE_FIND_REQUIRED) + MESSAGE (FATAL_ERROR "Could not find readline -- please give some paths to CMake") + ENDIF (READLINE_FIND_REQUIRED) +ENDIF (READLINE_FOUND) diff --git a/commit.h b/commit.h new file mode 100644 index 0000000..a968aef --- /dev/null +++ b/commit.h @@ -0,0 +1,4 @@ +/* commit.h.in. Creates commit.h during a cmake run */ + +/* git information */ +#define COMMIT "e6d0532" diff --git a/commit.h.in b/commit.h.in new file mode 100644 index 0000000..3a6fe82 --- /dev/null +++ b/commit.h.in @@ -0,0 +1,4 @@ +/* commit.h.in. Creates commit.h during a cmake run */ + +/* git information */ +#define COMMIT "${COMMIT}" diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..180543d --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required (VERSION 2.8) +message ("-- Configuring man pages") +set (man_FILES tasksh.1) +foreach (man_FILE ${man_FILES}) + configure_file ( + man/${man_FILE}.in + man/${man_FILE}) +endforeach (man_FILE) + +install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man/ DESTINATION ${TASKSH_MAN1DIR} + FILES_MATCHING PATTERN "*.1") + diff --git a/doc/man/tasksh.1 b/doc/man/tasksh.1 new file mode 100644 index 0000000..ec53447 --- /dev/null +++ b/doc/man/tasksh.1 @@ -0,0 +1,175 @@ +.TH tasksh 1 2017-05-10 "tasksh 1.2.0" "User Manuals" + +.SH NAME +tasksh \- Interactive taskwarrior shell + +.SH SYNOPSIS +.B tasksh +.br +.B tasksh --version + +.SH DESCRIPTION +Tasksh can be used to create a more immersive taskwarrior environment. +Any task command you run outside the shell can also be run inside +the shell, without the need to prefix every command with "task". + +When built with libreadline, tasksh provides command editing and history. + +Tasksh has an integrated 'review' command that leads you through an interactive +review session. + +Tasksh supports all recent versions of Taskwarrior. + +.SH COMMANDS +Tasksh supports the following commands. All other commands are passed intact to +Taskwarrior. + +.TP +.B diagnostics +Displays settings pertinent to tasksh, for diagnosing problems. + +.TP +.B exec +This command allows you to run shell commands from within Tasksh. This is ideal +for accessing man pages such as this. The '!' command can be used in place of +the 'exec' keyword. Once the command is run, control returns to Tasksh. + +.TP +.B exit/quit +These commands cause tasksh to terminate, returning you to your system shell. + +.TP +.B help +Shows a summary of commands, and how to obtain help. + +.TP +.B review [N] +Begins an interactive review session, where you can mark tasks as reviewed, +edit them using your text editor, provide modification commands, or skip them. +You can terminate a review session at any time, and the next review session +will resume at the right place. + +To find tasks needing review, the '_reviewed' custom report is created and run, +which filters tasks that have a missing 'reviewed' UDA date, or have not been +reviewed for a week. + +This means that if you run a review session to completion, there will be no +need to review again for a week, and the review command will simply do nothing +until then. + +The one week review cycle is defined by the '_reviewed' custom report, which +can be modified if you prefer a monthly review cycle. + +If 'N' is provided, the session is limited to reviewing only N tasks. + +Note: requires Taskwarrior 2.5.0 or later. +For full details, see: + + +.SH USAGE +Here is an example tasksh session. + +$ tasksh +.br +task> projects +.br + +.br +Project Tasks Pri:None Pri:L Pri:M Pri:H +.br +------- ----- -------- ----- ----- ----- +.br + 7 7 0 0 0 +.br +home 2 2 0 0 0 +.br +party 6 3 0 0 3 +.br + +.br +3 projects (15 tasks) +.br +task> tags +.br + +.br +Tag Count +.br +mall 2 +.br + +.br +1 tag (15 tasks) +.br +task> list +.br + +.br +ID Project Pri Due Active Age Description +.br +--------------------------------------------------------------------- +.br + 2 party H 10/17/2015 2 hrs Select and book a venue +.br + 5 party H 10/22/2015 2 hrs Design invitations +.br + 9 home 10/31/2015 1 hr Pay rent +.br + 3 party 2 hrs Mail invitations +.br + 4 party 2 hrs Select a caterer +.br + 6 party 2 hrs Print invitations +.br + +.br + 8 tasks +.br + task> quit +.br + $ +.br + +.SH CONFIGURATION +Tasksh piggybacks on Taskwarrior's .taskrc configuration file, and refers +to settings there. If you use a non-standard location for your .task database +, and .taskrc file, Tasksh will not find them unless you set the TASKDATA and +TASKRC environment variables. See 'man taskrc' for more details. + +The review command storeѕ a UDA ('reviewed') and report definition ('_reviewed'). + +.TP +.B tasksh.autoclear=1 +If set to "1", causes each tasksh command to be preceded by a 'clear screen' and +cursor reset. Default is "0". + +.SH "CREDITS & COPYRIGHTS" +Copyright (C) 2006 \- 2017 P. Beckingham, F. Hernandez. + +This man page was originally written by Federico Hernandez. + +Tasksh is distributed under the MIT license. See +http://www.opensource.org/licenses/mit-license.php for more information. + +.SH SEE ALSO +.BR task(1), + +For more information regarding tasksh, see the following: + +.TP +The official site at + + +.TP +The official code repository at + + +.TP +You can contact the project by emailing + + +.SH REPORTING BUGS +.TP +Bugs in tasksh may be reported to the issue-tracker at + + diff --git a/doc/man/tasksh.1.in b/doc/man/tasksh.1.in new file mode 100644 index 0000000..0b0354c --- /dev/null +++ b/doc/man/tasksh.1.in @@ -0,0 +1,175 @@ +.TH tasksh 1 2017-05-10 "${PACKAGE_STRING}" "User Manuals" + +.SH NAME +tasksh \- Interactive taskwarrior shell + +.SH SYNOPSIS +.B tasksh +.br +.B tasksh --version + +.SH DESCRIPTION +Tasksh can be used to create a more immersive taskwarrior environment. +Any task command you run outside the shell can also be run inside +the shell, without the need to prefix every command with "task". + +When built with libreadline, tasksh provides command editing and history. + +Tasksh has an integrated 'review' command that leads you through an interactive +review session. + +Tasksh supports all recent versions of Taskwarrior. + +.SH COMMANDS +Tasksh supports the following commands. All other commands are passed intact to +Taskwarrior. + +.TP +.B diagnostics +Displays settings pertinent to tasksh, for diagnosing problems. + +.TP +.B exec +This command allows you to run shell commands from within Tasksh. This is ideal +for accessing man pages such as this. The '!' command can be used in place of +the 'exec' keyword. Once the command is run, control returns to Tasksh. + +.TP +.B exit/quit +These commands cause tasksh to terminate, returning you to your system shell. + +.TP +.B help +Shows a summary of commands, and how to obtain help. + +.TP +.B review [N] +Begins an interactive review session, where you can mark tasks as reviewed, +edit them using your text editor, provide modification commands, or skip them. +You can terminate a review session at any time, and the next review session +will resume at the right place. + +To find tasks needing review, the '_reviewed' custom report is created and run, +which filters tasks that have a missing 'reviewed' UDA date, or have not been +reviewed for a week. + +This means that if you run a review session to completion, there will be no +need to review again for a week, and the review command will simply do nothing +until then. + +The one week review cycle is defined by the '_reviewed' custom report, which +can be modified if you prefer a monthly review cycle. + +If 'N' is provided, the session is limited to reviewing only N tasks. + +Note: requires Taskwarrior 2.5.0 or later. +For full details, see: + + +.SH USAGE +Here is an example tasksh session. + +$ tasksh +.br +task> projects +.br + +.br +Project Tasks Pri:None Pri:L Pri:M Pri:H +.br +------- ----- -------- ----- ----- ----- +.br + 7 7 0 0 0 +.br +home 2 2 0 0 0 +.br +party 6 3 0 0 3 +.br + +.br +3 projects (15 tasks) +.br +task> tags +.br + +.br +Tag Count +.br +mall 2 +.br + +.br +1 tag (15 tasks) +.br +task> list +.br + +.br +ID Project Pri Due Active Age Description +.br +--------------------------------------------------------------------- +.br + 2 party H 10/17/2015 2 hrs Select and book a venue +.br + 5 party H 10/22/2015 2 hrs Design invitations +.br + 9 home 10/31/2015 1 hr Pay rent +.br + 3 party 2 hrs Mail invitations +.br + 4 party 2 hrs Select a caterer +.br + 6 party 2 hrs Print invitations +.br + +.br + 8 tasks +.br + task> quit +.br + $ +.br + +.SH CONFIGURATION +Tasksh piggybacks on Taskwarrior's .taskrc configuration file, and refers +to settings there. If you use a non-standard location for your .task database +, and .taskrc file, Tasksh will not find them unless you set the TASKDATA and +TASKRC environment variables. See 'man taskrc' for more details. + +The review command storeѕ a UDA ('reviewed') and report definition ('_reviewed'). + +.TP +.B tasksh.autoclear=1 +If set to "1", causes each tasksh command to be preceded by a 'clear screen' and +cursor reset. Default is "0". + +.SH "CREDITS & COPYRIGHTS" +Copyright (C) 2006 \- 2017 P. Beckingham, F. Hernandez. + +This man page was originally written by Federico Hernandez. + +Tasksh is distributed under the MIT license. See +http://www.opensource.org/licenses/mit-license.php for more information. + +.SH SEE ALSO +.BR task(1), + +For more information regarding tasksh, see the following: + +.TP +The official site at + + +.TP +The official code repository at + + +.TP +You can contact the project by emailing + + +.SH REPORTING BUGS +.TP +Bugs in tasksh may be reported to the issue-tracker at + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..787640d --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required (VERSION 2.8) +include_directories (${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/src/libshared/src + ${TASKSH_INCLUDE_DIRS}) + +set (tasksh_SRCS diag.cpp + help.cpp + prompt.cpp + review.cpp + shell.cpp) + +set (libshared_SRCS libshared/src/Color.cpp libshared/src/Color.h + libshared/src/Datetime.cpp libshared/src/Datetime.h + libshared/src/Duration.cpp libshared/src/Duration.h + libshared/src/FS.cpp libshared/src/FS.h + libshared/src/Lexer.cpp libshared/src/Lexer.h + libshared/src/Pig.cpp libshared/src/Pig.h + libshared/src/shared.cpp libshared/src/shared.h + libshared/src/format.cpp libshared/src/format.h + libshared/src/unicode.cpp libshared/src/unicode.h + libshared/src/utf8.cpp libshared/src/utf8.h + libshared/src/wcwidth6.cpp) + +add_library (tasksh STATIC ${tasksh_SRCS}) +add_library (libshared STATIC ${libshared_SRCS}) +add_executable (tasksh_executable main.cpp) + +target_link_libraries (tasksh_executable tasksh libshared ${TASKSH_LIBRARIES}) + +set_property (TARGET tasksh_executable PROPERTY OUTPUT_NAME "tasksh") + +install (TARGETS tasksh_executable DESTINATION ${TASKSH_BINDIR}) + diff --git a/src/diag.cpp b/src/diag.cpp new file mode 100644 index 0000000..8478fba --- /dev/null +++ b/src/diag.cpp @@ -0,0 +1,163 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_READLINE +#include +#include +#endif + +//////////////////////////////////////////////////////////////////////////////// +int cmdDiagnostics () +{ + Color bold ("bold"); + + std::cout << "\n" + << bold.colorize (PACKAGE_STRING) + << "\n" + << " " << "Platform: " << osName () + << "\n\n"; + + // Compiler. + std::cout << bold.colorize ("Compiler") + << "\n" +#ifdef __VERSION__ + << " " << "Version: " + << __VERSION__ << "\n" +#endif + << " " << "Caps:" +#ifdef __STDC__ + << " +stdc" +#endif +#ifdef __STDC_HOSTED__ + << " +stdc_hosted" +#endif +#ifdef __STDC_VERSION__ + << " +" << __STDC_VERSION__ +#endif +#ifdef _POSIX_VERSION + << " +" << _POSIX_VERSION +#endif +#ifdef _POSIX2_C_VERSION + << " +" << _POSIX2_C_VERSION +#endif +#ifdef _ILP32 + << " +ILP32" +#endif +#ifdef _LP64 + << " +LP64" +#endif + << " +c" << 8 * sizeof (char) + << " +i" << 8 * sizeof (int) + << " +l" << 8 * sizeof (long) + << " +vp" << 8 * sizeof (void*) + << " +time_t" << 8 * sizeof (time_t) + << "\n"; + + // Compiler compliance level. + std::cout << " Compliance: " + << cppCompliance () + << "\n\n"; + + std::cout << bold.colorize ("Build Features") + << "\n" + + // Build date. + << " " << "Built: " << __DATE__ << " " << __TIME__ << "\n" +#ifdef HAVE_COMMIT + << " " << "Commit: " << COMMIT << "\n" +#endif + << " CMake: " << CMAKE_VERSION << "\n"; + + std::cout << "libreadline: " +#ifdef HAVE_READLINE +#ifdef RL_VERSION_MAJOR + << RL_VERSION_MAJOR << "." << RL_VERSION_MINOR +#elif defined RL_READLINE_VERSION + << "0x" << std::hex << RL_READLINE_VERSION +#endif +#else + << "n/a" +#endif + << "\n"; + + std::cout << " Build type: " +#ifdef CMAKE_BUILD_TYPE + << CMAKE_BUILD_TYPE +#else + << "-" +#endif + << "\n\n"; + + std::cout << bold.colorize ("Configuration") + << "\n"; + + auto env = getenv ("TASKRC"); + std::cout << " TASKRC: " + << (env ? env : "") + << "\n"; + + env = getenv ("TASKDATA"); + std::cout << " TASKDATA: " + << (env ? env : "") + << "\n"; + + // Taskwarrior version + location + std::string path (getenv ("PATH")); + std::cout << " PATH: " << path << "\n"; + + for (const auto& i : split (path, ':')) + { + File task (i + "/task"); + if (task.exists ()) + { + std::string input; + std::string output; + execute ("task", {"--version"}, input, output); + + std::cout << "Taskwarrior: " + << i + << "/task " + << output; // Still has \n + } + } + + std::cout << "\n"; + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/help.cpp b/src/help.cpp new file mode 100644 index 0000000..2af1a01 --- /dev/null +++ b/src/help.cpp @@ -0,0 +1,48 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include + +//////////////////////////////////////////////////////////////////////////////// +int cmdHelp () +{ + std::cout << '\n' + << " Commands:\n" + << " tasksh> list Or any other Taskwarrior command\n" + << " tasksh> review [N] Task review session, with optional cutoff after N tasks\n" + << " tasksh> exec ls -al Any shell command. May also use '!ls -al'\n" + << " tasksh> help Tasksh help\n" + << " tasksh> diagnostics Tasksh diagnostics\n" + << " tasksh> quit End of session. May also use 'exit'\n" + << '\n' + << "Run 'man tasksh' from your shell prompt.\n" + << "Run '! man tasksh' from inside tasksh.\n" + << '\n'; + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/liblibshared.a b/src/liblibshared.a new file mode 100644 index 0000000000000000000000000000000000000000..fe9bdc806de506694984b28eb6b136c2133b0825 GIT binary patch literal 1028696 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

>6{V`Lj**TN^kgw|*Hh1})f93|)D7gUH~QY2!! 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

LAj7>AxCnRw5J_HG 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%0Dn^YuPwG!v0>iT4Q!j5-bjrd} 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

0UP*Ae|Wv^Ur-B*2c%b z_))qD`$DrfHk(M+P;0g5p-xp+QAdoBA^8_qHd|~n&3Im*GVG&?>bNT6DFe{rXTtDP z(=G&8hNj-<)v0yAol!sQw{Bc(BPl6NX^_n(BKzJwT>BsSegl9pOd zDZi+BNHbaIgQd&^Old|lNDfUa<=-9BNjwUmc9^+%P1U9l{X7m?Q}42xeVaD79IIMZ zT5<^?d0a*8^^Oo5JeK8>-f~}8*xls<@=bt(-$OEMIhFiS2upN#m)`ot%CdxjZjS(8 zZD$?Xg0x#>ocWZvP`3UIv)K(zsG&@KT(gK~V3(04$WT2pR7AO~K-q$IviJKcQdh52 zP9*3#{V|dA6!mCPaK}+-V>Hl0KCGeaQaH5BN~aHwS5{3*BcT(!4dP*Xy{4&lyR@Pq z0E4)XR66=Pc^;Lj6@zqFk9e8(>$`h3{OmK*a5$_fqPfeV>PT3YvAl906^nf#l0zQK z?%#_vifyi9$QdTHQ;Op|YG?yXTZxCIPg(p{WXiH#Va&HfI(^G_a7A3gmTi;XHDKy7 z5T_OaCYRn;)A?jB_h991{}3I4pkkd<>zdYx7_dZS-Yc*~WZ_j{i>FZvWG|xxqFZA7 z2}EYFD+GE^7^?!u1&mT)_Q5Cv+8U52__3m6n#gTMEday!3w6WC)Q+H5VmTG?!r4BYN$6vsD;EBvQHbEE>4RO&yTO zFtnV`5Sw>dLs!G+*|BpE(sYLF#x9eeHW_cD+&;=IJX!jhqV7Xnnimprlv1b3E^Vcc z!~2v@7DkE@cb!O3>HF%~BkxqZ|D&{fx;swRh(B-r;bCeXUNifF*a(ztn@+Vox1w!2 z@8%J`L56Nm#y-J(uzeqnMHcmrg_cNPMz-2bX1WobQ_m;kPfv39d@L1zj@MND=`g1q z!ZTIc{paqA=ey&7%e%LY3y8P=ZTa6KK4;Azo8QDD@7@vXj?I~0E~Ha9Eh8)K>t^ma zS!a7+ZSXV`A9!cQkMRM8F|3Q&wji3Ee$A8qF>1N}b5IQo?2^x6Gf_zDN+9jfh!`e! z^eO1q*f1PZ&dbRu=O<2oHo@RdS4voP42>HLgUVx)#V{;BZsVwG)N9vYh}B0EM7juvi4b9ei zqF=ZppKAbjPUa+*kL7*9Yf3fa^ddo-9Ff4XfGEP!)^u^(lg7%LEUqFW>T2RE*;Fm+ zwXc@>Dz~pF+X|VlFQe>xxGdqF{!n7)vxg?W^`$S`lgRrjLwIXF(mR@QZfWUXwdSf^kw~kh zGW<*Eva-z(M|x!X3F|Q2VRR(3{d$emItEWNXl8h+18up{N4l!gy_J=&b(9EO1D@5x zRPXFQV0}#wNtj6Ast`19gd<^PEJO)mSD{6~8h6-f+=C+oG=%r8@);?c`&54Q+k zE9-lVU70#CmDwc7ob{z`dt%J>QRMOo0C^`@fc+&(QE-Q1Az+xwJ4OY@qhQ}ODKrxW zuFN&cV23(li81w7(zsXU>lPimJkQ%zZ{f(a>efE9y+X52-u9ncb6=@eY2#oFv6FO~ z-SXPahWbIjaLJ){N9Wz@VPDA3>hkz!vuF2wdb`zY1NL(ZMJue(+oN{j3lM6^`kL7d zs+~`;ca5o`&vyHCyLS-n0z~daQU?ZJVTG=$S6{wW(rY^JzlM)7>^2{!O^N}l@cH_Q z6#2-Z4o{>lw+fR{qm~?luuNgA6%0qsPQiBCjCRR~CaHy3ZIidm-Vh;lZ-~~8nQQmN zSoem=i|q}ezo4O$`^ibb+{t4hLzSDhIw;LoJJT%AF_6TPl}X7pvV)7|I^Bg8-TPLN zieU_MT(-xtsvc)mJ;vht1pAt3+b9R}f4(r3CF#;zj_e%GMZO6h$%k(c*8}iUOUQ;< z`9Gi6eqIN_F_3=|Gbmz`vJNl*%Z%adO!<(BJpOG{Ko9RdF!zD{?+_0uZC2?SbdDBa zVpW(ya%%@dsm5$RDtyP)sUfS99hSkRRWKLuqGYHB0k)qg5IWy!c{cs>8Z~n`9wu|b zrZFp+sWrJ6S{TJp%Wl{cHB_Rmqt`0feF~;f@70jC%$0q)W!nQ%zeM*xi>{}M-u(Mb zI`@<$(#+YWZ7DBpVYMysWy9Vqa8>sXi=IKYKJj9HeQqTQ__tK0d5}c6rfuhcOUtR6 zO|Bc$MnWg$*3m%7tSfUMI(aB_AacXKPYucnzO;(89nvI9PmYFVTsj^oYw|@#H`f-0r89cs5wTCUdimogwTxp>T7DE!gA$0D3ys|%=k+c&DByc*IOZ`oQ>pnBG6*D%e`tO2(isdp74B+D?mrx1c6 znMUJd8sn=g#>M>vDeg_6)nVG*=Cs95JkLc?m_3qr`WpEvJ13FKNnEXpE=X`THMx>J zwGzL@RJ=D+SvFYL&tMv#)(!AZO(B!8($zSG!GxrxC=^vaN$!1^shaz-qt0Z@-au?z9kJJwl8)Qz3Pnbc{$EIes8n zd8_P}7^%oydgGZnvttRT)TEUtr7VXep#s%a5RpLY@Xv}0)p0j_o_fF@u&+F|uCI(8 zuI0&f{k->s?8;s@P?0)bwnWhnq+@`@^3d6r@Oej7r*^DdST;^RNE0D-V7biDXiv91 zxsxzSmbc!|wg*J*+Jl zNdeWwr>2bem0zt}DGJJSs1ogK;+*NRW}`fLUs-Y_sCOi&cj5l46h_+EU0LJDQmOC4 z24LF<%*P_6ne7a3BJ&Abcaz=|n4_q+>6tcv+XIs5 z^NwfOZ%Th5M3b#x>W_^TI2o;!%qP^y8}+7ujk_DnM1c;0Q3~W-q3o;)j@s33f%$}f zWwqTitZ6GH^9i|T9s?}TGn*wwJ``P{RAxRw*yheBn5j>~4h<^L(6CA|;5&Cp**u8F zYs^d(l6J1ik2lFB##!?T-OB8HRP4+})_j5n+BO1(`2;ORX&+_#^sb%Wu=#`z5$gAh zXZGFfR-Zf@+BP3Px}=7_>Bp$qrIWJ(maVNkQUbLN*3MJ7%|m_DsoXH1Fg;_0zHP3T zI>RQN(>n^W4mpO46f_LhpS2DA)T4#?I@5w>nl4%t6&+5-g-PBbHT81>;kZDh8qPj0 z;QcdStoF{88Tzs_7wl^lVtp*@RT1=dHJrWwIP8OKRux$8+sD9%zxQ#n`k zKo5We+Rjq@Yg;SZg~KdIW`;wGsr=7B6l5VWDP1o9Ia&x(a(#OzrFS&`IQ34fbL-;_ z_D8z5-|_Wh!lRE zDiK4SDk+ec^obcBj<OgdlR#zZz`xcds zBS|Gmp%w96eC6Iu;j5Us@i>0R^6q^$@806)$20o?B#a?(CYM6ErV*htq4BZFJ7)Bc zcV;>@*`e7Jr}%L)MlrM&)f!*owI_*&2;}9|~a#OxPNwz}-Dc**C3O1vW~7CSTVH z6ryW1gD_>*XoSG)B4bscBWRQY6HG=Kl;zV=9Kcanqj3Sb#-u=p!YBoXTSh6^8cm^@ zD6pbql!6H-w&Di?OQ@Yg+LR(E*wVwgKw`jhs8aSVS-#L|lmcJqG)f@4{NAq~==a7m z+UPS+r_{y1enhrMw6Rh%S@>F+Ed=>mk9|G%g+3xHQi!%eS_7y3b&YZ|QALG66MO0~ ztH-21qi*xzRMt=`8ryD*Z3mE9j~9Z{G=U5$Z`5RwO$R#Rm2QVcKm9|{oP8KJh9)w2 zMk_I*Nk9vB$;q%_JH%?oOYb3_L{^(A%9h!BRjKrvv5X{~_ZF##!gXW#tbc0a} zEDe}G6f&E(EL~G?BZ-GBnTE6{&bUc~?kAYNBkzkUzA@UqGa{X7CZaS%l?5{WWUqzj zegqjQ*>tCSskVQYH8MB#-Rgt13YaKR2PqY1RY#0c;2I>O1fumx6+UE2kPsBx-NvfG zHAqG&ghNbWgEP%Ux)MjB1i655bD|I?a-)acNr4Fq$IfSS5_K|s6)8kSfoo@tlIVLx zOI4)Jko)Ypud&!_mn5pN%$^%3(JUwe(P$@-oQbv&M7zgW6?~rC7h!ybKV@G!wyai) zqmb2HK!XWTV7I+d3O?P=R#Y*xtkz-n3ckyLHD58L)|L>lk;eiypq$q4JJfY!`A+s_ z%El%C8lkl~xyG*G8+kKd&5>RNSxkX$qEP~of|xEbZ;ODu?W?UI3W1ImsS8`ipS^xh z!((;^VYkyF+-2={QX`~FR+e}6HF1E11T=qbk1X9>t;cuRT6*MD=pNTuHBpJx`3h*y zCzekC58+P6#mYF-jnkIs5~e=@`CdbRz`1DX`!va0b#Sg>c%$51puP zP9)VF|EPTopw+$k!rfhH4hZfhEWPsQwT>l3U>Mis>oPIB(%ES zFWqh)DxhAadKEZ8W|Ts*x5p@fs5a#5E0ovWKt>xvpp8LwkyfC`W0Znz03$LZYRJS2 z<4YWcTGR#fnG*$SAfpuMXBj0xwU((xMG6r$NNeDX=<6grbGgZtJL*1oxeSlYl1W1|50VKXB11BhSYC*CVSVaOeIoIBqAHd ztPjtQcRJw<%!hQ?{Ft`hzSNUhkx|36&ZS3(RN>5)Htsexdt+{Q`be778@uE;GpM*( zHshwlv0d}S7DPgyz*qkLWR=h4dw(GGMjE7@_HRSV(SZf}C5u?@LzC9&@g)!pIB+V{ zi?a9@A4s*62Xu!(a>vtDqp2?Wea#@1Wao5YUKbyEklIpZ9BRkVteFmT1!@yo?$Cf6 zd)Nb^(d64`scZ51kA%n!-YmB$By!l9+D7M)|Je($^uVQBXV)WOV@tc!CiS%*0_DdQ zGn$oAGXWK5>6|_of1(hfENpEZk0zB&u*=|E4#ZL6`k6=DH>jE8#`qJGcn?@*hG;{ zz%m~rsx%#1Z^Oz#I?U_#h%8&4A-scxaWElspj}Ux&z4}3ywfup|FG<(g0lw~{iE?u zIoU5?QhVrdR6A!w$D|x;(n*Fw0?jvb`PET^n)MR~R|jmI*b>c<6k?vRGDi^ArCt!> zSwgq^gm(*Pp5<}*;AA(BXOiF9tSGScOeaNM6_G;yGYK6Dr?XfV%o!QRZaa+BR5(YI zX}O3+X*Q#6mk5OQrwM#n-A#e>$z7Xr^y7bAAc#9w{RRL&naVF~b&~2R-zVsVA~2GK zlmBX?d~p8s^}4sbOgWjx~W9CW^@loovnf$jb>Mxyqc{+~w)ANGD8_ zx{}J*f_ay?z&EVYtYoO4qFVwhz%4vn?H%%H2w5s@;E+T^uq_n$Hx7NbgXF0isstOl z__$=0gG4Jd?eezkDdElLslri%fOa- zS96QFgpXdJg0B6-sfG*>H0-(-1E(z#%pS$zDjwRniuS^X@t_+?VYeessz;Gk8yE{ADVP z(YKy9VDueE-afv7B@Eu3y&v{|*apA>kQ#!2?F=!fpEa=et+PH}l34=FT48se?DUcu zPnkE6SSjG>}{w>4dm)M#0Wvgu%Un!LobUqHt-dJ?Fq?<3uPEC z%ti_&GB){o;ahl**yJj>j9v3xWIG%uM-d`t(oX~Pw#zK7289nVV4!Ex3)SWiVsiw7 zLP!TOCMsH%Ua$~Zi3^1&*YZzHp?6vZdHo#<= zXO;%3Ol;d^%I^+J6yPdSB%#K|@wNw~;?v9h8lbIeoO9p8rCfM2MuD{p6#BHAJS3nK zoHF-7U~0tJZYiKUPzjZ{{VfQ`D!x6>QrEpwgHZmZZ7NURTB@KuDcWVVvpJ&jl-eayw@N)klhAJNq~5??1CU7GDzyvl z%r4$Rz&Z#Z>-#dFw^diADNKWuuMtEf2tlZ9wEpq$w5E1sY$kV#`c0EM;bW&P--do8 zit){_x*UdjI-=^)rCXF$M9@%DzALGm3!OEv3f%TpNDM`xWu5no<3O0P5^9cLQpu zlUYPW3MrgpYUeAjJ9e4j1VFD#!DguNy)>d`ksxk4WEo7%!gjcMT=)oPkjAz5)iOgjINpIA-^bQ^AF zRlHQJ!WgGh7w=Eb>+D9^6nG1(HP@l*?>9JjvtskXJD=op+mBMgO4-Dn!mO>UrQJo= zCt%c&*@MI?ryQB|r83^>ZiF39x)pu$<5q>6vSj^i>lC4rPVdb5#1djKDeWr)!U`Lm z23b@a;VQccdJVq6)j+26!nADYg6yJ$vWoytfD_j7kj{slHqdif6?CIyM-iy^wE0f< z(YTDY@LJbO2B=pDEUz=!Aev>nkV4R*Rnb0x_kDc6)z3%nKAiW3X9Jyuw<{!6S$k|ZG4$crSjI1l zPuyg%8&Z@X7iZ#czxvx3^>>bM8ird*mPs4==o)qNyz^mtAH=Nn``sw^X#7S)@n21z zsG*R>dpiK3X^KTE{wq7ml(k=A+n#=0gxw?TR3s%ka4gtE3FH5K5}3%#zG3#I%YM(4 zZ1to3$#&2E-s;yb*)Z(A^e)u=Tm8zfuIR8Wcx}3Gi~U+*>lXeG(!(312gn7c$5)*G zBgywjE>G^t2rrYpeZEs#cJE2O!0tV|oWfa=919s=R3S~(toect3{?ZF5ZPpgQdCjw z!)ojBa)-i}KbZHyV}x06-VL{R$t}E^86;!m^N!y554k;6fiNRsO|oFZuH3CXY+#+n-EM4T^Dus~NjtiESUCMQKRM_} zP$i3H?+2ZdD5S$KLapa~^EAB&Ni(m@Y|E((1vy76=DyQM?rlwKCtK=tb>N4n3~Wyl zc2*;@w~UWi>$YQ8rO!l!*-G`36FDNO^FiY4)%2{rLt)3NRp```aOZ9Rf<(nS=OlKG z2J$G>(xJ+uL#m;Z)bJKYQbtDB?9L^J4}yazehhn3Xq}|c81^HW4@2()cVRz;{ch+9 z)Qk45ev`T~L`eOyy+Ha(W3OS!C7BB349F@W`8We$Znixj$)GhrcKQ_3q3Rx&@t0KK zjK6?xt-#6JYL?dhes@#9T9s}!WZE`&%{nhDv*NGE{f%Ano0+?P4HXi46Uj5ph_*i{ z-wZnhGUv~@hom=t^s$(A#g;>^0P+JY8aj7sE=u;Bs{$b$$MWUEbjz{&V ziM)DS=>4GF%-Vu)Gw?#~1MVUT)TL1M+*3Z;m`lh^eoydiH0VTYG1 z>CwvJV|5N&!>{?2iOr92HPmtN=7Hita%7VOmmup@(#+0(#VRbu}lq?m zH@V|5ew96?uh~b4e zBF<*oWQ~e~C-WzEu*W)7MM$$CDsy+&85rECzj~RC_OjF}Q@FITf0uTCc2vThckhrm zn(=m~5{{QR7FW#zG%gjBw0mh+{FU*Sl(VzK9MIsMSr5y03| zsjcOamv;U~$ZfGZ_*tjM{5*flx3|R(y-OM2$GU?)@*J!2~9y|0BxoB7xEANodo`E3AUn4?@)Lj1c zxd0Q9^A54Om2mw4yi>yW9>Tc_)aUtI_E+Wrvc89mdqrl;Y?=4O4qYnZ*NB}w@**1e z8JKg%Q3M>~G#NEq2Jw1}A66JhKKm+Z^twaf75AIO%?pYFiX zOP?XS;;2>}{RQHq*|H^UvqT>W>z~ApJb!b4){$Rxj^IZo>-CxKj~MMF()!4Y2-qYk zANagnT`u~UM_!HvrJ%&>`ME|+<$3-V3%k6x;H5tDA{zUP1SCslUkI(dh#nFWl7E4a zi_i4Ql9q43FL(x1QOv)e@Yr*b}l*`XLdAqqPju6KbOh5MT* z?pSQTCAt1YqAmLoejvn3h)v+PL>JHV^DJy?b2PycwwRQ-A_yrLCkk;6!IQ9FEMYx@ zf+;gg>gLA~;<@_sB*Z=0`EBfwL%*YDAFN5c$Hcv?uM)}Fu zEFnH(vr6=L3O^DBeLe^wHlLLEY~rWa%t`Sh&E^Ct5R(vFgUtp^#Laa?GFHJ)D~X}c zPU0*!k5H$^2Kf1+h8(GK`FSwJ=Xq)-vB{Sz_cv&89MtD7OvGmNW&GUA z&mYV@7W*(&?kb2sgRzJCxh~jT$il6-xmhepU*%JQ?2q6f1e;MFMlQ1ZHYB?>5cLZLh;dve*V}5B~|CO48gQ#P1;_ zyb`KI@8;*$U~@UvH$dp~LkJP@V(~*fJm1V?v6o>Y5kFh-mHfOm*buv|S@F~8h`qc> zpgse}F5~AOV(4DfIa{#OIKsZaz<- zBwY82&hOwS6E5?q@TjAYp+sF@-xAy06f0cB%bPYgon9D=Z`snc<($G*O>G<37jAB9 zExf9}wJ_1tbai2Udt+;1OKWXwTgxkBt82Gh*SI;h>Wnj%m%ORyOnE6T*59T2dp2S> zFRp9a)V#5=c5`d&=%dRvx7Kgj($?Hszy6%UOPUJn8frIRRo_y$sdjz+8$%I^U2RCfTes9Uwzibj#p9SQuidz@sjjxQX^R-d z<8)2T{gUG9>ZpWjLb9o8b6NS7#meR?%kUSMM7i;`zIM~!;cG@*@W1%1sJtuNHtd%$ z#7YereX?n>3wbBX*AXT5^4{!rQ_{2MS%|g6te+3K5T8_F@?>MFn$DO9y1~sCqC4FF zh2UVvBlx$k{s+AT4DPcrgfrVbo9=Oa2h6q)^nCdt*!}+jUnqPzR9ZYMLs(C|)N*sa zna6%AEmg$6)a|EUWiEa}Ya6vc%zH@_XPCV-n>=%i$Q#V!*V1%E&=9YQ~jD#bOO^AA5(Hd{Wwi zNcacbzJG(+e>hA2<8EK%eVk*m+#hzC`Codyx&NraobXS)fPIIzowpsS0y5!W?eYsh zV1gf&7Bv$7jcy_BR{MabH?tMvr8*FNNIU$@9Mu|(qh{^H%N{ul$eA49B zIG^{6W4X7?@1MpWJrw@fQ&a zcgJ#nzcBxL_zPo}UA!M2%l+m2{Gyj%N%)U3e(zV!tG{EA+x`N4qK{v}H|2cZPmkq( zW`6&L|3vD7niI``@3$|QKP0?2BR~HXQHIf2;BPxFMFCw{W=E!aq`N{O1x6 zeX_!F8iwzMZ4PEAAjt%UVAV6!%5>`sD71j-VWcO^W74PU?W`8Z-;zL(Jm^*Nu9SLWqg4PTJAH@=PV4eW!zH}9jodm{4oroUfB$|IFc& zdS*LgpYcx`pO1rLxnKH?8O)P!4uik4->iLHG)J!F!#BWJ;(R_nnwM`ae1*>E{k(bk z-V0xW^Of%+jPMc|MMsm+xgP_XK&Fg@!DDMc+@u zSLFWsxGI)g_v;1q-3ourXUuwU;rtYQRnF(*t$D-w0DR5P=i{z<`S!p!{CV?tZ{_7g zB0K1OvAxtc=fc-LVDfxCHm|?y;Vb>3@%gxHUcL{*H}ECn^YPideBXd?;tu26TmE_+ zzFp4elcYW*+&9$@6hrEcfAGnn6~2Oa5C5|M=IX~IpNj#!#Do0@$D@=?|^U2`Fwmhue={i_t9QeJ;-@_ZZ_%RT=| zGYEQge~zUfyq`7qzpcrMb%49UhrkhVP}br(+t&j=%eD{Nw#83?^raSm9TdI+kUX_G z1%4NND_9C%0Imj409S&4yCf%ut`=Y7*v2@QO$&=(2VM#OPkBy^KGNb>fpuUvu6CKiA9^*OPd#h!Vb{{-&^MgP};zX2;i3GYhq67c1Y$AI|398=_zO_{|2io7;6hNsar;RYjvGJ;$Jdx&To1kiTn!!riari; z`r{|$#LA$r0VUqAcf35`(x)60ccq}@*UA^0-adSc<@3jw-&K21C#3Lkz$8JUg7A zmpER+y!Qjpaqx2R6z~h+i$Te!zh_?kdh*E+!7AvlfbRsm9N!I!`*q+I;2RwecYNYG z`iPj1fg=B(z^{W_K+)4>pt!&LFXrFBJ0240W5Kd`H90P_!lH$cAx zTn+u~|Hfip1+N5EJ}CCD0RJ642D}@*jmf1Xd`a*kuniP{P6H2PkI!HJhq@X15m5N< z0flb>6u!$r;VX9g|Ks*KZvVkQntcr@?%x86`yx=>4?Sh}H-Tb*Jt+3opxFOv%IrHq zv2Ovz{z_2nPj>seSoiu7^w&U1j}Gw1#BVeBJ?KlphryNL$1y(#Yz9vUMed=X$Zh&> zox5DT4*VhX`QRw{YVem}J}C13_rFZuFF}#_I4JVI2a3GUf+Ft>Q1tUsP~`l4kGa1e zd>Hy`pt%1cDDM9m)Odp8{)yjPc)kNlc)kjXoPPm-3%(EB1-=JNfv*F<2Oa~8{AYh> z^8W`E`A>o({~l1}F9LrJ9t(>6=}D9S82Ah5A@C&d7Et`TVYkVz21R}aDB-^l6!~X? zNzC&=k^fHwQsmcyBL8A=6fC7O7W%aytc(BpEAwX(l<@xtDDv+CMg9;d@^1%4{`%{}%8`@B>6b^2t$-cSC#_`eWc>cqy0mNW5%qq`-va(j z-1GAt@Rpw%-$y_RXA3CdtOX^U?*Jv7WuS!f)u4p)COnaFwt*7PYEZ)Y77&)jXM_AL zemy@THxCrKespvZdw z6nS@nBJUPZ!j}X;j+_sGBJUbdUaDSFX`8AXGI+P{yj~AtZ&wj!9dIv23T@Q-82FI13kHwZj zzv^@5-xHsW#i#-ne;<_mItU8?ZI0ugQU3F`+-Cgeg2Gn_3SXXM>8-kR`Mf9ljPEv( zDq-^deB?jI>*LKMG1Xmw<6_ON*ud z6`-X51>h6l=oZT#UjT*wOi=g>HkrI{kQpW4{3|H#ZUn{Ma_}(9#fw34_enCbxa-_t z?v8W3t=`-xL2=&%iu8=y&>Pkn z|5Ix%J$?d8dW^i)^soh#^o@g8fNuiN0ry;D<*XMJ^G2utQepl)4w5AokAnT+?I5Z= zuM8whE;r4l7#2I99)fk4)|5DvCQP3 z4T}A1K@c>?$;@NSeT<{tq` zvc+eB68>XAk^3hCBk}w(C~~g{zW}`n6uw%=m7v7)8z@=gcjpC$D?o|oYrz4`?_Fu} zr~q-YxEPdp{&T6xzY3Iit^*~Wt3Zk8FV44k`~vl(C6=$+z;|H&c91Ba zxBX1bw=b^;-;enpmRLSL<&9>3#$r92u(%Ku|4sqN;5!zi2|n*g@G#6{An`fx4{xyY z@m)~L$7LY)CnXGDUIP9A^D{w_ce3H8r_Nvv9`hf79pFw-^z~WC4p8(};}{1ezWJc& z>m#RId=CLdU$?)`_}}fg3KafhLE(S(YmEPsry2hVU?=9kewF$EUQqly@|C8SKNea$ z{9%wRxcKo?4WD_1xo-o7f0g6ejyW$k_j_Ju?mq~M`$zwe;h#=n4G;QZP{REpP~?2# zWOKI-yb1dMfa31zml$@PWc*(^(fF61VEm_o!vC$~jqfPOS088m=j9v!*s;ccCn)?C zpvb@V#fINJ#`x=wvU<4?lyH6NNOSiIP}~)P;;!QeLpk6j@%R~u{sHi>hnPNhgW~=% z#{sYgdMkJ(xDos)xI4$vB>|%1#eFd=kK@?i#c`)GunimmhrvPcQc&c54(tc1GLP*8 zKLhrFRH?^ygP#REz|Vv2;J<;*;2N+2d>dE;-VRoQp9U+z%fJM9Iamr_0~Ucp;3Du^ zun?5+6o4aOKDZOi1-}7K5ubknC4RSn6QG!nf%k$V;J3kH@J_HF`~=tseiH0)^Jefq z=mzk9um+THh`#OtOTisriJKRK{|e1CSL`;B=_ci$Mz1$OPdV-eH$zW2?gE>jDdUQi zc{%oV?1&?ARsKOx~>z>;V4>YzN;9HoJKh_)h3b@Cq>D=8M1<=mM}6 z%m=>(=7QIOKKXoyka|Y_ck^jH7jvm^#C!sj@QgV2J4(GGd{VCnUx%BwySdaeVqW9sRc>DC=A~|4 z;^sweUg+ipZl3SvF*l!}{PKFlh~qFQ;gEVn{Ofn~J~!`i^A0z!ag_Q)+)4c*?n>Rf z#LbJ`ywJ@H+&tgS0S(6qMprCff)E6T^EJOOHaeWAxzp)zex`_;=vdM`|9WD>^PjYv zLQjhVdD@&moR>M->2N;g`vg$^^YbR#oDSz#-sj;7=T-8Z4(C&Lh4A=!iYuKC=SL26 zI-D2zmdg+4JN_ENU4L1zVTOu@X(o;=S5D3b4~Yp_`*4+ zpSu6LF&F+E_b;3i`w9Kkyqu0$I9Gx?HGHutkxn1p!`ne)FVCwNn|(NE)ADNPA2<7N zkv~LUI7jrL)8X9DzqtR#O&`PMg>ywaoGzu)B9GKFA}{RA{>bqz-}kvE4>3CIi~n=5 zFT)|vYfm-%uXmmKY zaIVwg9KkgG6X6f%5|+FBu+RUF*ID?&zWN_&`51|Xb1s*venw*9T+4?vzax)zNqJtR z;Uzq|M(@T<{0rw?&Z9mMI-IK+^zejpI#1Dli+wnk^T28J|Iu&Qr{C}T4Cey=c#QFv z{#Ct?Nk2^eOBnq*mlw`4-Eo}Qcf`WEfamj!4*TGLq4~Qb7S4@a;pHKmbNEw8U)Fc! zDOPzSv2af1u6*-9oGUpc=u;X(p0Cr;XnuN&(eI`|s_|v~D$i}69^u^9^s9_N?8DE0 zrP1Nsz>1Kc9ya%@w0@v`Txj&q7r}o7>G5v!?|7$+oNjkIR&DlQmiq1p^7Ffle!tW| z&{J;zC&DRorPG&DK?q&s{41q?IlLoQc!jwy5%Bhet<92uMOOIUO#Kv<|Gq5$ zKcB^aT$a46$d6I?H)hE@gYp-(Z_T2wro2V%pQQee(*H(ziqfZ$9#Q%t(j!WjP`;z| zCv1F?(TCj46t(}!k+bPXsgI)ezdLa@EqmFb_E%=PUrv1ywSPD(JwBe5USH12AN5)O zy)KLXOcuQ*OMZ1$e4DbuvoXv6C$jXFLwyqs|07xQTC>7il|`RT{T_9HRF?lVKeOz= z`uf@QKV{JuX3@XQqT^ZdnaYaKOSA0Xn?;|TCGYN|XNPBZR{S5&O8=v?^51*1?EA9v z$1_>-Ps_5e%+k+vR(U%*i++R(CaUi~+Q%sUCF-XreQy@MC(FHjoi@sUbXNKQ-z@jS z8|6PMi~pu9`LA9woByP&{Jbj5eSenwFJ;l6%L?y*XNB*}^xvc5yDQ86=d;|ON`EEF z-0Lwe0~K?Nn=xs+yPU+v~hD|YkYpYGr4T0rM?xu^;b5wR@ZJ`&rLC#TN>BbZ>io= zuYrq4g+}gm;f9z6?{$fv)wW?{({&3u$^AAS zG#9nk>vEP9Ra-JuZ>-;ZRck{v*Z4GL3xMa^`Z_M+QI*fSZfCFVJt|pu`?g?gqN#(xug9moBU3{-2Ufwe8g{jW^W)1N|sIyPE981xjS!>h<*->sy0w z7UhE)p(RVJtJkb7E2}QsT*uW#E%htS=cX;os;k#GZJzD*zGmX(Ee%cAZK~aTecfz5 zWlGjE?uO$2CAXcEEB9JLmbP5KdA7^tc4ZR9cK*wf;;Wa;_GxLx!Cvlbn&WDw)a*5U z*`6K11yR|eWNmG;xqfx=tcRkok|q=^vO;N{=tXaOG^_p18^eB3ujv(w~2%Ju>Ybr3`bRUSl9 z`_*!0D|)}Hui2%f_#ae#&GzNsR$n2p_oqY`Ssjs`*Y~kLaMvME{C%#n{oJ?0ndRl* zw*F`sUWgrp+Q;hPoTJ)Xy@-Edwfv+2-pu2^^5B&fZerys@^fKE7#F z<;8UeE{}nOjhln8FzVc|gj~9zar64P1#5F{G;{~Gf-WvW)r{X;x3twUns2SH-@Lx8 z@?stJ$-ugPbM2KI>#G|#lvTBCkwI@`OZA4PE!Ro@Z)CPXZ<1Zh5b>;QYd5wrYKkvy zy}r3Ve(CCJ{{CUXUU>LMuXN4DmzMm0;&t&{uO*<(ZLQUE6K`!D3ZuAR(^kK^u6}_b zTbz+ab#YeHv9@|`5jwu~>}rx`>8!YAU-Eml+#p=Lr9MuczVu9EEneEzx}l_cbA7u7 zUnfX(&S#s7g`Mduq@8n`z3YWK~@<@;4`sa0C)w_HoD5~-jL zs)|ZNg{fXpq1M)2P5!#NdP8mF#)zl;I*wb`-omWJ=6Ge@ez~UkVl=(KuG?EE9r%5* zc;3=@)#ln+fygQc^WJJ5-`Enz5w+6Q5_<~7#-^6~_~xdzs~Qe8r&HqIV?rrAQh>`F zH`h}_59G>is;9H68?RiWf`h32?UkI}QeS^{(}oT4cB+lcG?SXHZ`=}(`jN3ct8Qa` z?QFY9UitfGSk$NHrWUzdeCY;W%8F?uHeD&Vp4V5m#w`SAd(WUzbP1t-10~9fms+Y< zbGiBYjrCj9G-xGjlC!wD{uLEy ziv#OQhOXbHx&s$Q`yun}vqfbk%aZzQ;&rq9%3@en+akp(zNT)?#ZkVEEjneG#Vwh8 zo?b_t^y}yeQaK-Zv^+prva$lQ%+^b!IZz)Ds0SVG2_1y+Gn}DA9zu2?Ex_{Tww4A~ zed?}`&r)obGKz~SR+-vPISoT^>XUS@?_AK$#B&z zjL@r_Yg-%2RHyOywQpTp9Vs3EuXwGa%i!@cI&Pb4Tgx`a7oPbjn(tdCMRPu8;xYM0 zj7!c$iqR{=z{obIIRr*(3_IntZ0SLiRa{JAu4^dQjSmMYvR&pfdyW!A(uwW&g@{#JM5hs-`Y#1p*#qJq)9rcf;N%u zDU#6`Qo}XZGKWrIy{WC0Nr3rNRXjc56} zPa~|^&2luzS^YDcp{26fwC2(!v*JdDB(t~tY-wq&ZrV`IY@bw0ORBAcqG}2?6IB#7 zQ*qS!(mE6p7mwFoc1bbYgzDPcYp-m)wpg|WwKOs^qA#sOEqaF=n&#!CwYqlGKC#NW z#C#IH%$-@+xHecl=EMs+hY4&Cb>k+T}v0#;A%BAI;AU!`9X+HBhhu)M9Mp6RT* z`c@g36jd*2TyJa^gtO{o0)P*gWtkt`&I>uT<+|Et$)449ja%y4Hu5nw+c;vwrR)Zd zlw3nujz@#K-xDjk5A&yhvKc;yEj%cw})|dr*AQEgf^F zwxv`YOkXT6*&XnVC$28W!TVUL&O0&=RS%7bHCPoJ&=HRyn^!cL;6_T85LzMTrQGIqb{Q|5P zty<+WYjoBecO`R;&Yo+uWUf*1 zT%)CPq%WCkbmp0{>h*2SOXl*_cg1sz_?R&38&|crS5rH;G_jD{*m`~S zwMBCn=bD^7*XXPwmSb6OscSv0xCkOUsf#(S$rq$~US0gAB}IiZPw~>_OV3=kY`W zBC_Fe?j4qcMTf;Y%*KAveO+CofMm;C?Q-ss2=T1FU+=3hVxHgXY7&qQHXE0kWwt!I z^i&>>t?85h-P!W8Rg{reV*J_ia$TOBTa%{%c~KdzPP61UBacETPqw@omshB^+zWxc zs0@xn&3YJyGRUWPchhWn9WHOZ+xH+Z`WzA^c$e*Vt+g|T)zzz4u3b4pPr1B-;P4>} z-{9}Kv}}eg^G5h&pHzgNonQLL%<5y#G5G!2@y$5&7m>$K9d=!{*^*^-`RXW7iN~*o zbBppMeqia*w@2@t5~C1uc_+U04eXfXyqA)5(xdNTGavB`Gw>smSNR7kXB>BIFb?}Y z4ak?*W30rS?sOIWB0@aph+3=$`cq)xpSdrXGxErh`}6eSh;&T;-^{<5mGl4iKI;<6 zUne^En z|AQd(c@WxgymcJo9yi$9kF=gd@;;^UIp-Pv^SX}G5N{m_LGL5z%>-Sa+2P-|r;@Tq z6p}*;K9812r;GjyB-1reqg_|h}UBWy$ff&XI!hWRATxlqa{TgUina>pD;o z#ueQa$%o21?-OIxw5}hkzC>!>KzV9ie?{u0<;j;;q}JqCq~5vvlH`dmO^jZUD}u^X z$78&^Jm(Sk`fxLh+dvmm8O zN`yK{xn$RSHT`;pAT@{8>>Fk#L?ZbZ#=B=ly7-x4$q~u>5-ARnO1keP96N+5k<3eU zj*^l)(Oh?Xr6IFry=lM;Rk_HNeLGpU;CogKYAk<)RQ7e*G zqv#ESLakAPps*Sg^dJcG{Ae90L6C1SieP$Zqyue2VLG7zKEtUQo=CSKD7G3UKtnZ3 z5EPq0P3AY_mnrQV=Tocz5>f!UN(!K}6u<{5AXgYo3u{f^T|C@^U$`7cz3eWaP*&$jTU#@nd==b5aNP~AWJM%^cfqf5i>0rzK;g%WpBf*vjVZIl_Ef4nnDMI+>eGQ*aRAV0zcKo}BWu?5*hC_kr&Wwpd97UxsqqI}4d9Xvu4fAzhHfhkrY zt>#1Fbo@rFbnz^sOqlaX9~J!_8vA)lQqY4w690pqsE<6bkUMy^m&pwtF}dn8GcTcA ziv8u~xq}aOTZi+r%(L`CF``&I<)I#VR#aRJeKf!y?%fOl|6$>xCU|1_fv( z#2rPo_a-a4pefM?ZVsMmPaT_sfJs9q)3`aItd{? zi*(r%{KKZcd*Q!jaC30=0J|x4QG=Vqs|PlPzqKi-K_8UPp&!~3yr^c=WMi6I*b>rt zZcEh+`1-96yLt%WhGFJt>e0$K2mgekU>iZCG<~SXv~`<)1wYPyh^c*?eu!m@oOA+${4V^$f{{RnGc31H zm>UV}hbGE0U9!Su{ScW-{m_VH6a+zG%qT&i&IuNmeH7Hp&Iyztu+GW)D6_va3>u8H zU6>hW)AY7e;4_M7LE?)7>uaLUB(TmY?xW_wIhp?fiHrTv za6$omhEq;*ivsIwpnxVi2G%*neN-bHC-WEJ*A&2~SOFxY0CJTSKxZj{4^cmq$hWnJ zxF70e<_j9&6voNsrKK{Ap5rP7o5uj51qkv(k23Vf@LTGK8YS@p{FeHm1Rrw}<{1Q< zrh9omq|kYWhBwzRP9#*h=w1rK1RHr#~%Ybw`Ps8hJ?9IW3g!p-Hv9LD45yF$=Gt~&GPiJxVv z3k_h)ymBgY)7{7}98UZj+=-icrA&F|rayz@PvJNQ$DhK$vv-}$KZ^8o78mMiy^@$I zaE?aaTgCep@kU{cQ>D$o^Y^eOSccVqv11Dg&%m#h`iGU6E0v0$W+GWvPRRFXnJXuL znt7W?a3!)~Jr4x3*Fz>0&gw*v?`MRN$4=LJBh38@qt@HYL|dF>i8@{KS@=+PJ9qF1 zyScZb*A0C_p;F{<2jZiyl@qeE`BX9=m@`@X=m|c?Ln1p!+fUN4Agh{!uO~^pE{a#ut|MkFu3+f8+j< z*7R}uM+;}BHtru~f3aY9jQ$b5nYz&(>L5Rd{IY-h;t0McgdUQ{Jag0S?)pi%(!?(! z?O2k)ul108TAybkOFiU!#QPTUMq#jC0Z#Rhe298TCS5&bnh%8&qJC-qW{X#;U=PW7 zRm$ucNksh(dc|6VLdwN!H6h6NG7`vOuV{UcdPPkeZT+KUdZJ#Dd|s1m8k6i5nLvzf zSaz__0-t~<=8Kpvw%T-&$!oSQkn?1;rfyJ^`7ZqW6p;?46-o~0Fz)1dsZ`N0qB-^o zB~}K^?$_H>M=tnmFLS+Qg>pEW2lpLKV+u8t(=y}%EJJ38YSgcZumutNEaXO~tep9W{FP<{n`BM38%uo%K^#ZXQI70rT1SvZ@yF6@Jo zqLqf095H_9h^tf*(dc7o&!>tKtx!^?_k0ZRJs*aBSgQ`VVmLS|=aqUs1wYQ7kH!8t zJs*n{Gs8hZkiS*sS0sVboR-^H&5eZ34CBhInzusFN2XHGHzOGZK~R`AN)Tw#5p$q9 zI6|WfgwPX(PMlj|DkKPsoLhksU|eUEz}71#^Ur`A z+gjf^pW=xT2~CVNbBk9f=`2IQhb1$^5u_9|L*+j1`KUpg8FE4gdn^bF4Mquq0_R`I zxgf}MS_euH-@O%x}l9 zWt~rP)=4Pq8z~tA(|5=a%?Rj?(>G3?Epyz1Z)+IB5W(ofx110M?K zCRpj>`GqxOwv)4`iusc|c5RaN%uQy0cmkrI%+BHi!>L@@GZ$Wz4zdqmVHRwQLG~d` zZ5PArLwyU6owgwzY)FUMAD)(-eLA= zeg9I`_e-QN-(hlE>3nE|rHKT*773xYv=CE@`i)k`trB`&3^$>>EHs0Ao*NrTstcGl z0Rmf@gn$_dFU*>spzm-M1k9O>0E=Ws2~0TTG7cn6Jy|qfD?~X^`iiZp2E`6hqk>?x z(7&Xx(;l&&v)&vQ74Jt%I5EO=t5@3DHD1%LGt&IpY@2YeG zy~ZR63jIb2g2I4Ngv?#fI{b^OTpL=Rq#(-_2CWS$A%zj+6`;6{5@4NDR8fH9HcEj0 z&?rK(@Ec5O9U#s!31m5C#zqhn(r$WWQwr5a8L04ABT!WME?`Dc76j-xjS`@!jS^Vl zFPMt}yQoG9umQ#tVR6wCR-?%C2899n6-_Ji_Bfu&3-U)V@K%E37-4QT5JV2b_=5kNj8;4`wb8gYWlpr}|^nHtvJm&sSAevO6o zK;k}gip9y4lbOBBWKehr!lTZIeqiZjy80GT6V9Yb_c=&dkb79{RkHnrL$ou|tzs<- z0^2qZM|iGv{H^l3JWqkWowV=nN^_A3-yilHa(q$S>3w9m3>? zT`aK}*jO5V3npbzeg#3ajc>d8Xkn0lNDIhaMtb0*$ErfwL4B2(uAs*Ony4dR#E%QsWE+PDRQ4XERBHH9PJ0vkIc zDNPCxDT?D~un4fTDa!WpD>v~qinhUY!sr)CuBn);{(SC`>Vj3I7B8*o7&W zy7H~;3A*5DgFM_{V~cnosTeY*mp$xF=bb0&rq`h*&2 zCtk>}7LiYz#!{k+i@zX8VF6H@N}yE4wRAay&hbJ%1Nm|W#n^I2F(sojy2un@Cswv+ zRQ@ZiYe>#r&S^vZG);ds)k^Di8i0FrJiu|3es&_KNBSe4Vlldq7CE;i-MqNV*rD| zM=l09-2u+Y{44MaOM`U{KE;!J5}MqTt2DW%vnKa^ShB7$t&EN<_wl+0HE8P^O%w$i zOTawCC;>)yppaJqW=cj0(9Vq_m>#<6pmmMugaY^sxdZTo0t7*E&?rGr95PCPbx2T? z`9t_M1@I|W00}98TqOn2Sqk7ow7QYVw>6A-bz_Q|*V!q|w#nuL9+hGAOnv#YCext> zz=8ri5E{Rw)s22hJcQrU>PCW(Il;**ssbmk1ka@#+8zhV3Y}+Yc(Z+!ujtFAa&?1Y zVC~1441SoZEGLEWPDsIk3rv;=4425MNDKK^#gR|5X%|LizYF6Ha1^t+B38O$(_6+G z6Hgff1FWkWCBT6QQRQ zBYG@QP)GCcb(R718#EX)7&aIoOg3@=j>(3de9BFdN?|dXax!-pDJWXYDJvW$tWZ!H z**P6n33B6Pn!rz%>hvfkGt+RC?085zBeqd`AkY-SPM3n3HEPcM1kuRU&hTKOD!*k$ zrqFBO532fpfgXQ+Kt(#*FUa=-;?gF82H^XxK(O4o z9SEo)i;X~Qjay*nOX2V1Q3_|dTEcSTw39lqdVD-8zzoWS*?6>I<52@lh|Q0XxvM@} zb1HV4@D4ycMk9eSng)*;Y?Y5ht(LcfWq!S?M&8(U(hh0wWIT5K4wQzaJ|0chZ-z(K z46Ia8$K>cqIviPxW=3VTFwbYCYzV_Y{4dt1HDII0#-|vY9^e=i<53*u4}m(=e*j}s z{(ns_SeFam1v7VJIu~AFoeQq31{bz^Y&;2^1Dza}&P-yl zGqK6f-cNgp&U2f zT%apz)Sz(=05=r(lY$8TNRZ@`BNnK#O*4_3uow8X?FZJLp&k|4j9reRnf{I?_3c+&;O225&y4X(!jCAlwo$w*Oa#K%sZp*>v~vf}MU zZ5^hIc0zkW^pizui(j9A z)1fr~X05?&n3eK>Wd2>F_Le+K&Wev1+2%G|=ZzLf$I|?}PAs>tHcs~Dn5@V#l;d&E zzZEd>-P_w6OiUwyLl=yoHGcG}Kz$gJGqecmAsd`ecd#SyS^IUX1{UpIwYYW=(xdJ+C`pJhS^Y2b*NcIT)pa+2s>_LsuF|gzKb}HZWFeP`MIL{>%z-Ktk zDi&L##*1o339zPOlprY1fSSzTk6%*&pJD}&kOIgRTP|@+0rZdN--&!%)rjZcHIz~~ zl_D^%0>~daVi`uyag~C3XMoTGpq+vV)(*d=`8Vx9P8{I3H2+TUF(+Z3K~N>=o+~?D zpwM}ShBw`l7Ia1+*Edle7HDmQ!c}k%^@|$Y z0U{{yKnAi-A~Yfx=Kww^beRu{P(+ZyP8%ID?nAtIFNtX_XjL>6VQ(9tg3=!g#Qo@a zd$B{`p9||S`o;6vc48GUMYuCc%8M-Vu-G3*^ciEZqkgv-Bd%-o&*(Z)bdxv&Q!#?y!ZFX5=bL|CQ4 zrY$^tHekBP`((Mo=oHfx%9vYKWQB0P@ez1>rL)s@2am9)RPCG4AyJ*ow@06V3bPJ z8@y%4k*PS&vb8u{V9UW7BR-TDdKK*WuUzryqdcXwr zD{w(nsP{sV+96{ZG(V&Ktjsbie-Jh%PQj*N(Wfn(k3>qwE{93e6$n^NB#UIQe75k6)ZD;}>I21~RCXza(k2FQ@el)< z!|5EX_2HL)llj^BX$DWy5{~@hk=6i!x8o&0U9O1;j~A{SrlO5+$aIw z*)WO_?*a$;TTEy#AZ|G%IJZ)Of&klsMhVc4j55#xt!@O0Hi2D0jWG#ut&C9uZ2K8S zNN$o*3MvU9I2;z4x^-X46vo(l;8hp;wiRXwSec>-ELTaAQ~3^~1UM#Plpx4=iz*0U zvW*g8jmjuO!m#8!5ml@g5{P%qSOwVkHA(K85ku%7cHtFz+pn81gJ1Z5t15hMZ~d2NkF3=#wx(>hEW3Ssv2b=jW#1t zq)`{pXiNf_b)y7W+%!sH8f`Wg0mcAE2~e9%F9Iw!%g>>Z29>${)O6o3UYW@!mC42| z`)1nJVjL^!JXgDt1C|L&M<=2^Ndq(tqXcLeqQ(W-Ycxs_j5ioXu>QP}4#*6jS}Dj3{ZGSAHTFcxNHee@scA6Ejf~_wB$%<<&qCta>VT*NCZmu ztq;m1o3Q1$ZgJC;=L$Q3f(o zjR+K(DHkwkOae4OqXbycGm4NjQi5rV^g^Ho9N0X&9z{;rp8&)o8Hu1m%?i$1hj z+LSJ6ZyIL-Y>T>sfL3f24-ZjgMs-N&uT> zl!01U9Rfuy%moY>lK?i$C;?Pvl)!D4xeOCvvy2kJN-#xOva^Iu%g@equhQ;5QoGt% z2sh)(siHNTVk=rxf1yQ7ep=Db+&xN4RbTC|^kZewH-SAAs(!vT>aoW_1%=Pk?Nhjm zaWX%GN2~c{Ol5BQ4i9uy7F;J|g~3(i(P>-FjnP}l&vvG8L5orS;?(Ifgc~qQ;BQvh zTQ$jot3~{A!I6L}Z1L1C46|F+FcO$n6!tEYztUu9b7~MMDmWLQg;KxiC0d|f?)5Dz zxG_to0QJNu0jw5NgzW%J*sT2Qh3QrP9#_8FSO}TB8&obq{u!X$I`UCnQ3H2FD|Otf zp<$uhMwCY7`;8Ldjv1o_$NgedQpYJKEt(>bfQ~uofmQ{_dRNGFy!f9b9lHRHnDH7M zosEPr_35ja%(M^pTR;3T4$`-g0d`db3E`(T0^%`4o&kk|?nK zVo+&1;=H2#>~h1vUMpVi?P8pu#{qgfKR<_D#l=GcVr+(F?;)ULlTZV6-bNY7cFiJC z)C63>YGV>qzVeWq9$N7<8n>W)iio)%VOs419mH2$(EID)cng!rGtU6cPiaXM|3L0=54m|)QgE0 zHlMhkwEXNZ*)pb>;^>VG5(qSnDdUot5b(|d4w4lnn5S1W6Jg%jZBkeE#srRYNUc1X z##3rM&cUM{3XYJJf{5n0^MpFysjTG3=!(r&K(dZ=lH6bT7VBX+P6BnDR7D*xX|A#t zs6jtI|KoJY_FzmRX$BaR7$v~l9HMOh8aCW0fuGH?(^yF@jv&c#1tx(CJZ1p}$hc90 zXywEgP&7grMxbbf;sS;&h+w&0Y8bB(upk}r`zVCg@Ri+fmd~&mk9TEL^QP3jz#gjUptKG=x;eN+JOzH5;p-{E%_wn~kh|g9sG0au-l% z0tA?S7$qn_fNZTiXa0i90}vDr-3c&+6{o=}oxwqB2aJV~te~B+)cu9MGU?+aP(ev8 zS3xW5W-H>E%-?~MDI1Nf$9>mG%pA=`+~OB(05E5Luu=ZPw1M5Qfp96N1qG-i`OEu$ zWlVHQSB?1*l7-Zdyv2n?0%CH;DuC9E62LGUWgrXDi$GB!xqw<@5}6*5JbrdYz7yixfXqXbyv zFiL#vQ3BKkrU-TQH;tD8YRHmuu%fMVkoL0 zz{Jrg0mjuv5t41Fj(LmP5D8>^&R7LlF*Qnnp3Nu&71C7_l2A zutJ(K7Xb!|MhRf!m?B&sUhoA(j^8Mt*nwqf?l5Hpj-~Pg5iwrSN0%bs|q6}6Z z?TjIeeB&jkqxny>e}M@ZV1I(CyGa+|6uD6XoFWIs^KS$UVvG{t{F_k(KmUd&ELhhd z4>$*?BqA1)h-H?ZVNrndZ$=5w5RDSx{2M5of5WeJf_#b>qe$5KH$0RUqv$LX!UsS9 z=ELfIj+|&B1k5Ci62NqcDhOcfj1pkPVH6=**Q$}9xUP|a(0*eTV325(0K*ic3^ck+ zBTzKDa{-;kB*1#7Q3CXGMiG#Xcyvc8$QHpzcb}m79Oo}qFh0n(=u?Zf0v(agS*{M_ z9u!+7HYz`7lmPvisDc0u#V7%`7Az%%q()LmLaY%Ih^fw41u%+63DBPzWuVr#_)w|! zxq!4W31AeB5}-dbN?@(8)?5T=Z$=4_2MC9v1n9GvBV^MY321M4FH#CBHo+HtmU2B# zf_)ZXx%L+3rEo4U@nQZT25;IBDlIRe(NeI5rg^o-SM{*kAijUW733rn4!m(P=xxWg zfDRtv#*q%gCH%%2i}-d7MBf7$2YUu5-gU`(=tUFRK&K}&@8P|-xx#tR+-BDUj<=HRna!*|<=c4tS>|0^2X|zy zxo-y?{t*s4GFRdGonOa2ebbrM_l#622|@lUOz7tSiLwyS*ef%sSTZH@;=#89U2-oT z%Ot-W4l7A+rsQ|0O!7Zt1Q$!*g;13I^Ojih%PS?HaSX{o87$j^TL(6JDZCegmIRPj2wH4mYF`5#ByT zlLdr)vkUK3>;5vdR$GNAHXub-rZ~ZXXYAY4Dc+XH0cUf~MT|-s65i{$Ksi&mEd83d*X;)Di z3IHLu+{&Pt)raHS^-iQ}evsAL_^imRo;@;6KZ};=Z^L znXCEBJ$&zJ&q8>9y$R88^yt44hxh0$<*%5IWpq)-(;^vfs)CG{nT(U-q`zY8tua5B zIOe}W4y3snpMA>Qa*pwT2XT$j1)ZE%x!gx`kNkW?fOp64i3RMUfcG;L$ko=)wmJ5Ds#&j7WYoi=aPD^E9;&wCbWXWd08-8r9cl#S@5#cyvsesBM&u< zum_E#2Mt44d*}{IJmV8L*|?G5UP@d>nVkYo0jGh}8ewdi@%IZ5r&mh6CKUFdz362P zcN@3WLVJHB@Dm7jXGJbVwS>`IH=s+Gmw*==jOrKV zZ|sf^7$pcs2aO^mFYKwMGuBw?9F2uZz>-W6{Ka<+UX2o9FkqB{dgE%iL}OtWFl0=E zvK=wlrxEiLSZ_RLE&?oe86`kZE=sctBy83w1KS0~OM-GNpQVj1&@u2^FbweCpXNJ) zq$bkhEv5jmCP*McO`AfSL}8#{bE#z}a`wJ2CkW9<%>}GHS;M%*#1WDsHA>+CL{R8p zLPFb)#r;zliqIXo78E&Uu+@ucuiokg!N2+cV#V!~l+x8(iUCV3V4DB7*K9naqM46h zy(Rg&ddm~YDENX$^6D+kq}c2E)mx+^HE_-qse#YXS%pt)ai+cM(L545wjR{71w1FIx2_4DQhuz9Ap0-;A>Md4N>aH zqSViS2O`w9HbMwqpixCA@y=g~;eh3{aN_)%la^$_BJU?m=6eB%iI&7Y2I&zN1-Q<` zC;>iEB5G6+jE)#32u8<@A|%_-h?HC$2E^@$1oA(p5Cs8d)kX<0&^F3ImSl)|_gS?I zm@pyf^@eH9-QJXjFu@I9I+ZhgDJYGtiu`AAurE;sTDf>ZX-HoLGdM zq$QygWZA&?{)@d*4lPNqQf9|x@LnXSs1kNCdapBz(up8y@%A=^! zZuyN<1}sS@C|D9Y!jdptY)K^KEZYlTuMP6pk_>_`X-O!hWJweQ_HyAES&{)f!;+Yf zTN25aCFzx~y^~pCNm`Z6k|iM>si7IqksA06opo3|21UiXs;Gz(mLyKSTM`c>Zdnqg zycP;}%W*{%snbmnjnX48A}(1H4Oj6wE!u;^DL=VhIIrKmxm z$Wpj~oG}TGvE`Dq6qJH28`xQousB2=Y0Ocrl<71Z3}XsZ)I=5+OHIV`lpnF^JZnml!02pHe&dt@OECZnmV%D36bu(z3JE#OZna&n6CJUo7z1C@Qcz0CQYZ$j zM8Yw$6rMcuaZ4fjvJ^w$L{U;o<(OkZ$t+n4(vceG5^CTxim_jk{Oa7IVqH~KLY?6_0p9r#Y~j?GE4Et;4fKwz%u>{tivZgxMhP%iVTy1f!4lRezq~=ga^NqK z6m8eI*d&%wLE!Iu7zCrO=0`|sVobt|BY;>FB%q02g^1oH={HJHe)Pa*C&LI7Sqc}> zVL=2iE=CEks%#V?X(=cLSvJr$ix^2xun=V_hLkc}#m0;KprR(y&*;6*Se~MnKRnEo zA}kI{LUBUWC?&vBjENej3|NX0P_Ptqgr#7(*iuNyS$2M6y~yA2YjcxXa3YSs zrFUP?G}^YW+08%?i}RneV2G5r<63)0yll+8+6*@ZRZI=46?3T>la6we#&eV#J|hOo z!T+rbxm8=|a%{R~$+FdRaV_N7Vv(d;B*~lS36XH8QxUD@_m#*0soY9!mAi0C;{01M zkhAqjY$b77vb2>{2g>q<4QI|Muzi%)!alYQB0qgzz5IKAT<^sCMPvU$F8FzWelHZi zV=~Wm=2Yrtk^Q2M=HE^?80~H#4rY@DRh9Lc(?WvQ@%6P7)V!^zb^44sDlIldCST{9 z9`>>G+$3J>;Wy8@ccO(`TjFI)$BuKO32y*+rpEaUi()>uxQh!a3QX{ZzQd1f45l{p z&7Z)U3zv;S;T3?)doShUeBs1DC-`00ZKw99biorn)#Y(C|ng+rs_2b1IY zQsv=JM>uSaQt8QjLm})8N{X`Df=bFtQ>vt~qL5dXG%G1IhTSLI#gYE4ko{0Dbq=pK71m`ZD+?P&sGuxh+^yZZrDl zwqU83d~VCn_7&663Yt<1V3iZuWT976TTAc9qH}yd7Q_1eSPbu<+k%NW0Q(NZ_&A^2 zQt;!v7ONKWALm*u7Aan|=12*9?kw|AUtos$;iv?!d6*jsyB3Sf0i{frcB0BY#B6H@ znOxr_N>bYq8EKL7)v^_{rYcr?@8bF9HXPuWy`B@u?URIu%1RRXP?W%7}aVN!Sv7}cV3Id6`e={ zTHVnVsr;lC?nw%HR}wmlkR67;xP?#VA*f}SPjPlhD7)QwC}o$<$}S)L5YVWN>Xl2Y z2=OIYW6Wyd^DJPTx&V06R{X>k1B4b}`A=+hOJWy(OP65HAkY3OF6QJIpV(4peI*cT zXKT;|?3*Ck#J%EMZuSi3IeG(|LC${|fMWl=HO~ zj;2{1W&SY&RwjQk2n&sVgXu=UL8EL8wV6CSpXHM>5+!Bcw%?W9 zySu?3C3ZOGfTQnO{~s!`V4sb_APyZ#2V#Y?Rs$5U)S)3>X2rzWCG_aL{Oe%x*JxNC zC>?>Hgsc31a<1>eY7Vvv2OjxL6kH133qJMLpM4~Uj@QKN>`vU@^*vZi4wzn;-2;nY z1D>1^w^N9#K<>xsrk#X<~|)eXVjyZF8% zwO8Mpd|w^uQ+yl;^i3`#k`$jeiv4-0=(V|37cr&;W9B7?sAb)M$^4f1dt4qeaXkFL z=J?B^+?Yt89}>WQaiyd}#ZbTmx&|mb${xQ{7d@+(mfk1)tLFFMgS9+@uJZ;1tbcYB ze^59CVk6du=;jyrhx?j01^1yV9E2k-=Ok=ee_b6+K_}U8wVgoUBFpr>7-fL!$hON_ ziY6doV;#(lIc;dhA$oZB&DOBt=idT;^c1~-0Na_iWX7kYk3iq}-&hmt+vo0FrO--GH=>=dgRD{^ z4IvQzCkn|wi4$&God{H9TD)Y#T(i~FyoM8){;{ZR9t0j6Rrp;f(Wt^Y`Jw=#utgXS zA6N$o(F<4HN6shl~@yxK`ykos3=s1X#|SO&;{7A%0F)4 zudex}KX%tQ-cY6hE5jMdTK*HZ6pl;_Y)lO*C9T^&Axd(+N-|Sep(uMP9xW2UKNKZh zP?U5*Q4WxbUgZ;IMVUg>iK6T$H*QXmip*fWj3zlMwL=%9)XG~r4FZzesvu>riS>2Y zz>=^rGU()kbA)iu_cftfQW@ut3((0j4=l;G8^sr|hx@BxhDq z{S|Zn9;P`)@15t+f#)E@UI-6z4N=vCg+*X}N_&bAqemoNmtBQUAaL6^b5&TB%GD*! zo$18~1mnY&h#`g7mqSscqU@!06zPchjR7_VIDm;UqNb}+k(z&Tj$>TwUy;mC20D0z zLm2zs7{+@TuVOI0r8-+b!BK0l^+60=7dD5_#A*ioa12vlKl?y06uU9p`ryXka5k96 z2xWEyzVFMA-)d0m=i3iHNIrD^F!B6<5sLWdkb+(k|JQGT?t1z&eYWJogT%aFivQV% zqB{yUG=uIBbFF>fPvcGV%%Q`SXKzN20P(-ER;=qcG-vv3ixGls{oE7FI;e^2f~|jC zR)ai&hZPP3Ar6vs$!^ayB+el$XjU(-P_u6F=ywjWD1lQz{O8Dk3DjE91hP__>8mZJ zZ46xa-&hmBy_NmgJSRkIL@Jda`>`pZJ7H-D6sLC?xSMOI32^@1D!H`Vl4McU_Ty}mY@s65Jg zs9#i}38Y$|lU}kv(5v~$ct4tYFv`I+`X&;g5xAR3KJh29!*M<)3YcG4LfMiH_HdA3 z$3v_Q_&~Gl>&9hcLhD`oXZ7@dfM2T__!pr?u_{@I+6NHlV zX_IaM={TZbE}rr+bsqjsf8%QS*P6ev+2V~x_A-l}BLi2aUWx3E)&}_;+RQc3g-}irs?tmkX`R71~V|*(BOL6W5B87BmK=K$GhQDl% z3a{h+J!AD>#|d94UU^uO5#RB_wMsNs(T1~2P1zRGhr z67QgrKuXY%wxH4YgevMmSktVdvsWW<=Ze_v^_UeVAj$cUhPrHT_#e%IqH}BhI=XjB zcylOGw8)Sso3Y}p9#VZr8?mInpo(UIlQp8o1^8I8vTuM3*^MILbEGGiK0<4^^Z2*V z@fmLANoV}xIe{%x`K&Se3Rj&3+NL}XvS&OYzJq={dRe9RInz&%weG`CqBn&;U`Xoa(b z5f-+~Tf;8ZcO+m0;S)y3n!$xIs@4n&_VK!ceXBbDR^^BiU{k&DvO08kcu^|)W~J4Y zdtg}Xcn|hr#qNiF{A195dx?JqI{FqzFFAc;iPO}g{97D(Q6bv0eQIibRi=;49r}nu zAuscIO^HtZF38j~EMQP24#TeSO|5-Dz>Rqra=jM=fk?$#Q?tu7U^1vKO#hVn@+(J{ zJIRIWB~C%Iy$>PwxMGulP)&A@@u3qM5lNE;7(}3Gvg-nBEiM7}Y>X0=A6N5JBj(>g zz^M_V1X!<=a-t)^t@5*J9xR_~jP;J#cM)ZuD2*pK(x^>t7Njuyj=dkx3&v+mg#0kO z7mFr0v-VhntcpitP(>ALeX*YnWCTq8#XC&~34E5KF1Nn30e%D2YyLG>;3RTk8Y7F2 z%-!P(fEWDXXf@rw^AH?GWORJ&z99caNYe_}&3TjWx1qfW?e?26cBsM2NuHv zkFGzkn7MW0^s3BV6Bzcy{#>uN7iqERuIR83o*2t$uo@2|`W7AwvJcIl!~|v^#bcO# z2(y=JMrhxE!dic0|IhokJl3E6CGK~^CQ8pQ*ZndPbH)3V7B_N{xtr-)vc3#|POAEP z9>sDJX9EZEgw~b0A)3A1pm4U`g@n~c3!;jhj zf2nHB-1SXN(ZcM59$m%wFR`9&#q8O0ed7E`En>pTfW53SYA*Um_%n4SJUu(`_BXpcfM+{0}(4+B%ZVZNGB1>{r@nF@&4N5N-}w8U)+; zu$y`F8_#+rf^%~YaDBcT-EL;1!D;wS!*2#S!%mt(ur6sK7cm#W|3p5L<0P=JhRuS% zAUdFErvxgG2WY$;Y9T+F%T7g9=m2C6MISDe+v9(@RFhP!$b&tq+myo&)siJR)-g=0 z+pWeehz>Rcb;o0?%7teE_$s6MI;3u7ZpzhY3Ih=dFqZ~9GxP1RT_ zNHgM~sRoZJd#nZD1fnd>1P^@~Hrri&_rwNVI%-TCWYt@MW@VJ1?BcehJ!wV^aSI{= zF>@ABu-vHm?HnY>*(QN(4;ZT;I&xM1^->#nTH|U&ps1?3fDRKN zIL3i?-)HDGZUIIlMhRfGnIcRqEn&m*vy3_EUJx#zXa5;d5W7eISP3GlX~D4im~EVaof0p5Wy zijcYMdGSQN))G2D7JyhAbBx<& z&`9tI17gIZ@CLRZ0lx`3%8JfX8$J$k0fQDqfH|*G0*teaA|$OSr68jQ1tm`75UbF3 z4K(^16<4u?GGHN1RHtCn9OESlc?Q=tFtG>~-q_mrqg8#_6+YBp4Oq&=Z4L0$!bLO0 z1jQ>PEKeeIB9~aWur&niz+ezwIbUe9Rvw&ix*l|Xhu_1S!e*fzI2lwi>isz;MUw!*^BCQc(_1Xbu6 z+Ke?21j30Hvfz{}?f~J**iEbP=~+5$39oG4)OSzgW*(r$@+J@`QScwD{lGaOHkgXd z3axJ|?nc*Yo$SCMR)KrA_=z-_C&@)6p5AmMoIGk=)sH%%sXrEq&p*$0m1*aZ~E zrvXq;FLM^DN2_z7>X0TVsoIrVrrglq(b*c%gSrhE+bBp>fOL_YIZLZNCMiRxx+ zN`>(SsT51PN?31ixnUYc)U9kvdwWYnXB|nH1M_iw)){ zut5qA6T^*T1{@~FQ+&FX1eWwe8_LAr*rl@_CdPwK*G8-NvJwZ6(3;?zotc-|c|Y7Y zMoZxz$_hq15e!{m2O%tW3(V0^r3Usr`oKPQg;#dP;vc>m9a3=nMpgX9Dmk8s9f{<- zmWX7;f(pt$fraEun4cgRXH|o41%ZE{%Ilb)1UEookaJQM7Hx!qhUwDxAJw^aNP)h^ zoVh7uCcKee@d3f{R*=un^!1x3DOf?{DWoYZKKLTa=PQSQP}SJ~P57~G!cYjJ6G@uy zH1=ctjCKc`*L;128^zHU6UqwDQ*fICP6II!)fLP0A2JiJbnyGEeLV|EUHN_vYs&mf zlwfj5*dm1REF_M~&n`fiY7=(1m>&)|qiKUrDR4kgvtCT5lM`xKas}Wz_LhFk&3ob9 zkNJ5o=poR9IPW)rm|+}gTX|ZpXV~hxWdOQpF4Liz=;$pxQ8u5`G#Q zSH7VlTz#*d=PjKrUbq=&iVrOIpH#6P+Nu3?zQl*#7v;jsxh7CXsAHhd#K{x%;(a}1 z*fHmVBr3}+YTn}fb5-3`8)mh$$)gtdzdk#bDL5x&g7e=H3`>_VKHS^Kn>2ktuF9SH zlUx;+r?(Efejs&yb~uj1LVngFWO8P2einYGGk5yq zLnWe=4#5NY$_@ety~+Iw4m7Dqa zlpm!=?{!!MijHJPZ?jqj_iOq6rPgTms6)Y_@5}JsB`QFn+vExKc83litj+~#EasFo zEI4e^%bI>rC+tqcjxVBm2ICLmH_Y?*j1efiZ?QI$f1$K)jdPW^87-?s+fb$;UulUJ zT;#aQ_b>f`>)G}p?w=w>(rx&fT=;Gz1y-CdZ{a@^$0>qRu*KdC z*t(btnfeCo9y}6^e^Gwl+K5dOJ&m%%+sKU<^?;9ky+3~^T;|VWDp5MwsbI^II31|A zQz2*!;K77XYm+s@Iv1rBn>BFD+>HjV9x`}8^9!TKyoLQF`oGd&ybTmMSe0(hlfe6! z2;%$Iwrz{GUwB~HGYv2u+UihLann|D1}F<>_DJc>0PI9x11!q-EM_aPMBN#f%-+IQ zh1?7v#L#5+V@?i*O|^YrIT5N2>?ImSWj`N42yNEZBBG%1BK&GqS8fS)fDI=;sTmXn z-7ykht+Z*SHqZ-MUL|y5IC{2pW~`3$J?j1_-%5b9MK3?HrC)uot0K{;zs=O4;MAE| zG8M9v6X=~;kSjTHiy7aN6OGNRL(D)l9-Boh8~ZUD@ZpZV8|BA`agQIuap(%@&wmQP zIQYtfhVp&ymlP7iBAovt+m&IUsFv!`%Ag!&*8Wt`M45=%&B-uDN_rNnys35#MeJwkAeiqO`I zL+`0sr&>{K4A{72MpvpZxDXUfXpyP;-z8r`-xXG4?|=smklgt{6F9S9(G@=$)2Y`TPfcPJ$paGMJje85&VrQp4@1!wQYaT3pnK(pG;`g5shC z*=9@_H6r;%SAraWBiaZwNb5l;6nH1b>g8 zjpoiYKMDEuk^B$4{MS+b-;~RzPI!+obuz@1o#7eyJc)BbJS7sd7B0-dCG@!xYS;;! zr%vuI*U86wdsC}k_)0jQ2G6^IRd2%2ml%$Jhz@^`-S)5K>saTp{}a8h_Sk<)Vi$e z@}5VL+d(XvdsJ7RNXj07dU>1lIwUIfZ2YwR&&u>X{V>WCAK1Hooq4LlPa;qELfspf zoHizoe|&fdhq^*Ky!m;l)Y~ID_q-sLf|67J3QSGn=MRDUi}m=!NV9xk(Y%5+;+3b*QWNFmwQlXwSy zVzviR(qudE4ETH(g9oy;llTOFVz!ge(8>14)$lnPKV*A9iLc?O#DxM=^m?HF9=pxj-A(ZQ8eGlv9`;0O(+cC12Ce*>OqEva{q_%{$NLxx`USNOR-@_947-vL5@_ko~*Q<$*tf_SaD zr&2G13ln%g@um2AdE|pM^+f6Ly89}G)E^(1s6U~@@8Rc*#!1g!$X?jMC!oi3dZWln zy7B#T?>+QN@wflo-&wet|8)Kr8BSmCbP9iUugCu^pGtpp;~(75cxC;L+KYC+&K|Zz z4;S-cd#yX)m^!0=d+qMMbh_c~{N2u<4*u-s&;Hb!)G4W}_NAVdx@r$pchwH){Hm_h z(^FSnZ&CSgZyB{R(dk|b=$ZMq5@)Y@KNjIie35&NKU894g?mJIxcf?Uulqk9{7>cQ zc;k=s6X8nfjncW2f8;*kdXF%2uS8g&|J8qwm%d9b?>eWYrM|x5nr-`cwzcf<+P8Dh zwfJq{wtG|CC6~jetz+B1macu)N}I4%xD{7s)#>DesyC zJD!j*Xx7b7$(*>h>m0e5h`%NN3+A3$Z6?(02;4S)$vkS=Z{lyA!IJQ;?*ANMRjMiu zKj`6md7v79Pp$A@bpL_pn*U2H;%}ZX_le&!yux5f{IxGKk7|yF(1RG2O5HJGPj#-C z=b+n6rtg0DZ>l%Gt7zd9;Wr*O_Yrnq_`9wm{hjV#cj5B>N22f>&Hv{W@@wuf_mNG8 zZ)3-sjNkpMx0`>hL6t%2x6b{yq7TF0hREj@4?nQOT)t}lOTxGAH2?3TyT@M~e$2x+ zz03SL@lX1H;$Cx49W?xWMfpv;|HOOE{}l#H;$LuoPsS4e)_x24k`==Dy8r4G{6`+g zfA(?YrvekalKeXN_iDN%{Y~!g9qkhTp~sOw?f%ngrDJLM4_f*zSt0)m?q6pimxQmq z)dIeLh5FI?Ve`Mk;@@Bt26IR3srHWz-F_~SU+4Z@^1|N||3>$>>c7;#)%`cG5Prn{ zPhY`**8QKof`4krJhrXi-|7A;hEJpJ>~VMm^m=Mjo@o?KJSN?@VOaBJWZPw)5*7;fMC^8 ze6$~obIRp-f0ar<{XZ-L%f$Od@~<^-@4uGBOS$jF|5@i_KgPfG$rW;QeJUaHvq+~e zG`Z~8_?JF^W&Q`?KeEyIy`M{^udU#h6w6~5^gHrK9-}}c@`nC#w6O*F+BTP@5@w30=U-}O#_!IIU z0)GQ{rqbV8o}YE=LCXJt@z=VX z<@A0B_U%$mDuIylg!@0esCLHa_oO(;2->qd3%4IO22t|e(K{<@UQ;7@iV;sD&&&y^b;_HbiSR=R;f4gZ3bVr z^S$I4d|U|YbUyEQm*|V~K9-PoEWRV)>phNmA3RQZr@~f7^1NSIHhmX>FUs%hkCET) z;2S!Q{Bl!p*!g@suxz}a2Vc{;m79+XmgReZ>2p3GA1upv0*ra@-6qe+2}}6Y{+YfB z)2$@BhlS-$(hx8Qu6 zk5MjJBt*doDA7?BZ?`H5t^0pmAUKjXUUEZ=I!H_RQf~9^S|axsnnZNsWm6wok~IHYyNfIupNVgX3!S{ zF~nVS8pc7F0-pmU|9}5wDuto*njZqM1>WoQUjqLC^v8f701mkSIlvy!hsQKmUb7we z4$!Z2{N@+1XASymz#CJk3;zoEd!Ro6{2gEq@GM~FE-Y69Ux#rW^19}+&l&#bU!+n4 zp#K~LD2xf#JQd?cru)o0wX?D&10;RVXN(>Ol3ssDD)nyQ*+8au^KdG474XYL*f;uM`ul%`HVgcy<0Jx8PhSKw+z62IObl8)kN%-H z2-aK#ls^(hxqkvA{YJ+Z0?!2f(PAp~yTCsHlD-tkc>n%Z3wIBY;ZAYBWcmMMpW#Lz^Z6>^ z4e+0Q4>tEe{~nO~el_r&z>gnv`9S)=4TvOMxETo17yh8v@^uur4g5u58*mr!O5jz% zlTxYYp6m4KPCxo?^M4RX|07O+-s#(cl();>uX6Wi0N)Jvhp7boyAVjdz7$CQ1vJX5 zf!_sE?q2~f1^wraTY#?xT@OUPyYSu2B>rtf<0bz_;MMeZ`sqN1|1UIR;!Qw?|9zms zQ|b73{`D6Ag+PWs+3D{euyFS|UIk?MMj*p)?XvKv?6dF-*LnJZOwSj9jQ3NHX9F4j zc|e9gtJA{&^KRq+I*@w!B#`O&kh|{&QqI+mbGuB=SAmrC{kNN(kL)x#9|X3-sTqi- zw`MJ{2)1PS3CUzrysr6{J#Sv|6e=( zX{SS{_X5#{J@;C7zsTKR1zZL9-*NYo-F;z)@y`J%_s@V#_s8A+AdvZaC-6etzKiO~=nV z?gzHO|C1I>36@)@Iv5AL4OII2Hju%R-^BFi_y=8GU)z)wi@0EB!B%CM&AKr zMfy}EhI}u;fRyo^z1iIVbd#m?BS5BekK<=@sT87EbK@IK-)%tZdlQi1@5@@gzX)sw z{c#}Of4DJ~x*T{rkooTg(!O5d_!{8LL7xglRbO-a>nz@P0bw%MV7p89`VBxN;lh90 zV0QF-K&I~>96tx79ep{F@t)CW_?g$59UTPT0QWlJ8zJYe*O(psD3B)RI~SV#PXg(G zEAS@Zdw_Z1Zv&Zrb{0(k{TCSC4P^Rn1v34=4Ns=)m#?<;^K8*x&_{tx|J#8yNi9I~ zUG8`ekm>*AI!pJTHW;n}q6jXm0W$p~=Ue*L0@)9|5Xkhub*;&NIgsf;70C2I1<3Rd zpJ(a+7?AN^=QwgM_P!bZY%8}7zz>7|qk1d1*8-XEmjRjY=K&f1X^wXx(RBZFAl?7S z@w=}wxi_McG{gM?B$j%*6R2_qlK)*ml{1ifdIM1945QZ#`g=g~{e$D@fYj5=flTKa zXBvKHwU;xHda47y5&6FBcf6c|)YEs62+IE?kp8yJzrO-9f0qK8o(q5%0M7z4J*NVh??+Cue0|mNF5t`IehY9H@H8OP zdjgPh{^LZ;*H?j*a~+W7)(#}!TO8K`nXfybEavOeP?GWo+=Os11~OlFJ;lV0%X3o0B-`W2j+qQkh1u`2z)d6?*OjBzuSO}2hAYW3LJvGzEtX&gTOZc z2Y`owy})yT-M|CDPT;vfo&eehYz3YNYzB4#n}F8?bHGkuBM>I=nGL{tU>$Hja5eBc zU@dShum*TOuo}1#m;$~BxQKjQ1Y7_zJ#)YiI19W5I0HNgoB(zJ$ACM5Bkn#33_uS6 zZwB@Qdx4$6?Z6ITJFwN=8-WGT4Z!yS>wrv04e-6dYG6Mw?d}WE-)_)zz&*fOAo-_& zD351OIF12d2YSSD82Eb7Lyl-W+`M?^fMY+9{JlWRfi8LY=$ReBOMtDwEHDSW7}yBh z3~X@sTHvcevwYDWpIPnhJWBKw3@w^~A7VHlvT{;`yVtpUt-EvZMgLjUQ{sf*caUdL9)M#oyml;bQS zQ+UTA$3YJv`i;q<$mzTfGuNAeFFf1lIQ zxrnQsKH~ljPDke+&WOU_W8uH!@}qMLcR3xML->Hx(Yb>!dHCp@LCWc9U-}NGqkYa! zr{jIiXW%d*3M@Jw@sp<-9i6B69{PLwN9RKxKE?fCZt18m#t?ZE}u z`qj_3_y?SSR^>gBiq2ECD!&t{p%0q84yAu06`gnB_%2g5k&4bo`~}!ZN9QR%sQQBN z=sfv1iGG0o(Rq+p!j6)T&VStd+*Il%&{wqIevyZd&ZnI3;cHJedH;;ItN7k)^u;6As{Ydv>AI1D{ra$N*ryIo&eY*TVCqLp_^zaX3ornrb^4@{^ zmZaZ<`jw>XEBrrI5q=N!o#cNT^qr*7NBv9EpRsX6ta0w?B>lO!nxy}`qC9p~&|g6N zOY#R5@@}kbeJ7Zc{MT3HpJxP;{@IH9 zGhe~~nu_$itb*PMdzF;;h6?#GCuRP(pnWCzn=9zkD(Hy{`uYleO;pei!CoZgXDZ6) zv5NfFSJbDMR@A32RfNB@qI@r|@Lyly4|7wNo_~cxlIg3js9zf^=nrFjkmP?#MS1^o z1^>4zZxj2gM=j6@xB4A-(Rv9wa9r?_xi7T}sQZCh#06 z(R1aZ&aQ8vs^TNuP{Qurd-rVGd`*2edv;w*i!{-)t9{S4T^%j$`}XaP1b9*^&Uv5H zzIVqH(%ZWI9eZ!sy=~8pZRH7!3v=zY?OixN{)B{|yZ^>LdE} znM)76^O(9{A;#kiR9+@erq-@dP`?I|kt%dG9LX3}7wU>|a_yYa<+QSM3^<*k>MaF)OqMmS7 zR+4tN@5Vq(13U~fIG)>c!)`)-{f@o+c5mx?-Hl!C`{lB(rDf;-wyqmH+jokNYT^@W zkmv7f@7%Smtv$PYchkjfPhQ^IoqP7T@9WC`nxrAC8omBnlD4h0vwhF@Y(+lNBerxN z=xX7sdfVDCrpAc)x&!Td+S->lYT4{%uxs@djqr+=E9zRZ*~`ywX}b9Gb6c$F&OOkz zqoHL_d$&oy?BXX?RN2cY6;pt1ZEr_v-`=ug+s<98B6U_puGqP|T@Fz+r7C&M;mX?X z{TNp6$u_k;q0p$e7|uV@(B1o?e8he6N|FC+BewJRx3|B2?~WbWZWK~HY?kZxo%^!C zPkp(1V&C)HcC~LS_e)H4o#V?X?cF<> zp!0X`-@fzOon0d8&)&E5+K#R_9@yWtbH|N4&8>b{`;H2ywMn)s+xP7?*0m;jM;W!< zsHk34Ojqjb+pj}A>uRA*$(FO0s?e{dhlah^`=m`7h+?j2HOsyvo87fPTNdbvreR&@ zHE1eqCFSxevVZ=byA0-}>6Q}=VdSvC6R$0I?MSuk+l#3-Fm550MsCI8VxX3`UEB6t3!%GqwZtnE zaNoM;hMkD)viAK4cDIAx*uG=ifn8mf9oW;pS#ujk=(Tn`<&+HEwFkECgOk!lu3xnl zQCuA833ZQay#w0a_T)wFYu~@~9q4E!YMqq6?V4TfWs)mu-P!HeW!sVryY_El=TpIk z*T|RaliIFekF>TWDWEdw+HL#y@4R+T_OiCiE*77c1nlvX&T;wJ;z^5(l3J0p3SF$V zRT_3EPddhRod@=JU}dQ7?b$M66;amL!#2eBvyAfzRl04Lmq+)6gm}%})a2I=wC`bM zYuUMDQ}h0PT=3etzXe^z4QOF4JJDWsBLOSSdDm~-b)Y?aefC^+2bZsF!9S|9zQM*u#xx7K*T~Y&AB)9Er>)6!vhHKi|SdJJ^WwRJw zk@vioE9zTNr?0>=M$6f2_hHF$@9vguZEfxQ_s98Y>DqQ}wp?ue6G|XTLP>nmHR<*B zO9i2XI=5}tqU+uRT^I$eG~Q&3U$@s5Ffh`Jv$-i6bgs2QCvuE`v;^_cCJWsq6MtO& zudhTg&6l5};8*$xPle@PSRxsb zj1kvLMux`0cytr)IYt-hk6oT7r$^nR-7;+`BdNG09Y<8$I!4>9tFuXWX+^b3N2!^{ zwqV(@_VYZ?dxsYo(7(j~(Q|eVUVP?x-}k=vo$r0_z3<$)Gp~2cTyAP=+|&_65BAoEp~-FfnlTffezaA`0{+S&J_=4!qgfb&1!K z*HXOMzsPW5CADY1;q~gga!!#sC=EnMAzOFw)=#h~T>XWO7kF0Et9ye!0^2t%>XRzw6zH z4>JDV{SK}LT#_bl@TG-Ay0q}#y>}hjb153VFebeet@V%e-}d1&*6-Ww!VdGTy%k-z zuYUW@y!F;wXLrx-+I@g`${I}F)LNf2F_<+uSZOfp#=%O1SvL$+x_&Tg%Rr@x4YIBu zsCC^y&ctBW4HJX4CUE%d-E(uZ2X^0gP(#AKhkkMP7sdxF-Y}ST-C)+lI3IzxUNiCf z>&C|}JSMi>wB`C6Z@g)8%h=cr;}aC5cw&6~#x3MsfBpDmYVWx6@V>pf_TRPpb-NB6 zc-?+A#^aOE{rT5)s{pqj`15sc6KEaN2km1d9^B^8(!HG*drWhmf*vcSPOWLPrKEQC z;Dcgz$UKjJ$JF+BT+sEikE;Vb)SjM>a^DWO9!a!?`oV~6|GfveC^>sLZ=z>!zpXA4 z{cEeRUHWyD`+3xt1GLAj3VLuy$c4x3?Cw3Y@4jy*@5B9=on6~M-QTRoYH4qb*ImCh z<ztuF=ez5i7u7lXIm}~2 ztn0Em=h;@txxCK#Pj$|V>zsdI=Uh?eoT_tPQs?}$I%l}f`A2omOY59oopWWK^NV%P z%j%rF>zu3VoIC5BtLvOw>zvouITLlxY@PG!I%h|n!~IL1&zHTP8G;F7y}3M7#Os>B z>t1iKD;?^ebyIAwms$SpT3%(jwU$>~_IuJH-#PuBTsu~BN>9EIJKP3W-8@V@s+179-K#bxkYo`$1}yTmrV5y{5$bHvnJ24w&dXl|0eycJ=`qtbR%`a z7G_xP$E&vYgDhEo2cP~f>xgoZ^~e3UjC_E5W@G)IR%kx>y~v4^3#W+f&V_ByjeJ16 zHsXCFe~%6H+=r%~Ypk|0&$O0Fo8x*7^htx{X3UeyT-YA0n+4}T+n(pQ`}^~7Yqb|1H|6Qjg`7OwS~7k! zB?IN>OU^H)-axs&f1$_s1_R|sOZnJE%1@T^?H4H@D<_GIEx)ytzwIK+A1UQOc#-mx zrTngolDx#TmwIJ8 zZCLLf>S;n$J<9glu-=EMw@~Vp?Y3dP$EbIt)EncuAM1V}Mg4o4RJT{Q9_rc5g6=%N3_jY&{-}}224x?|xZ`^vhSp!D0HlM}+FN2?i91i`xLY2S2 z(F5e_wVxp*VPM5@4s*F`}XfUwDX>y+Qa4VgN(9wr$)V^pX4@%y?mOr zuDrj>i{-m3x7>4J&(3u5y3&;kS(AGYzSkfB_#;0nb<>KEf_EO=wbviQ&fdH8;Ct@l zb28#F_^BDe`84nkIL(Z zjyD^a*LQI-8F-}@zCEZ2YErFN7!&gq!vGVm=u%6x5eKfqY2d*Ud+3U<2l5BaY~ zn4n1+7jYe&3odA^nH9tn%k#2!+e`|Mjm{9Ua|xWonfIf znZ#$?S$G~z@^sj9RH^3=D%ID`5u~{bNtr)rh3Cxwx9v&zq$WGk8kq4nD_W(Oq;2hy z|MQi@^UvKm(s?t!>A$*6fOERj;`}Q=QIL6ZEg(9DihHJAWB%E&Cntm1$(9hN;TRL>G#8ko!?29w`L8JRwr2BwvnS;A*hZq%~{ zW(q1+t{(L|#@gvNnP{Bl61^W7c~FCd3(@oJL#I1!Cg_PnJn0rM?TDuE=>^>~MOe`F zymj=<^Rh92w`&HO&5W{RWHzI>qZvI3R&gc^8r{m13H5@^GfXp?bI8%#-iTglAk!md zE+r-+Pjg1*GNyqil$q#xQlegElov#4MvX=pc+aXb@LrUG_o9Sm^k$mTlaTjP)nM~S8F()$aP+1d(JKv1 zrjmj8qKwQKM)anYS-h9>86i_KQ@%Y)jq_>^yyuz)RST8q9Ukd?X>&7r3xCC8cn|3G zL<`Qrdn&+t0^W-<@Sas=;JqjV??nmC=xuFAPeR^HRRixu8F()$aP%e{(JKusr;>s9 zq71wjWfbovXGOq!Q3f;7C3*(lb6G*vMkRXVBM&{WX3rf~MZ5<}^qhnD(t^RP#Zd;{ zv#Jcd7iHkRD4`j>@n-ZS4B;@V>z{Zf zWWZE4FkqB{0iyzku%*uHA_KiD4NRtzfdQio3>ak;114uiz<^Okw^HM@YhXZ^6;v%$ z47hXTp$FIOzPk1y1A^Ls%E5pF28>#YGBBW3WnjQ40|Q10&FHN@*@&Km44A4028=Q= zU{v7fooAssdZhtfXyNd0V8AE?14bFefXP`AFkqCy>eM6V7EH%hUDgSzHY(A3_sFlk zWzFt8tcrLK)ZSAL-V^X%)M%7}_pB-d??oASFG^@e?=1c5drv~%OH~8!MHzT6Dsc49 zuuvVn(!gXY8F(+szU9jf=dyyTg>v*hdgc7*c6Jy4L>>8K z-o~*&*@G9JV{tqPY7Z(04+?lNYAMRVgI1M+2crx;7$r2LxWcOYQIwDeQ`NwOQ3j@n z3LM2J)cLXpmj;$o$-skA1|EzuiU*UkBH+O&gWBp5Q&^^Bt1jyVRT~u#-m-oV9#%y> z2x<>12M-E(Flsc)z=Kwmfd``uJQyW3qj!>i^`j>t52mVt2crx;7!^2r%Pdq!uQV{3 zN(LT`GVoxOQ9PKO837MQ8Qn^a^J)z|=(2*Ug-Z0^vVIR<_%e&(Jy3g3Ie1UNdr?bK z2Hvx(47?X*;JqlJ8NFl8=t;&_?GVCZ>l3#a~hjq;#mv5W$XEAx1;^L=l|V~&elEuKXv9R z4%FG-t6?>dV}UN`P~ed>a)w@<&*x_HAikGL;N`8)e|zD5Ll`IWq#jjWU?zT0O#N z>DZjhIziP!#kT{)?uAtr!?z$Y>^KMCs(|(c-n2v+M8v8x*yd3NzKs%^zFl~-5j_d{ zHdPIL8)e|zsKC){vrrwq(!g>m8TdBJz_(FG@ojQe1biE1bSpK^t2OYg%L=MCD$yGl zb`Pr}4g@87&f%Du77X6BL>U}2ttx|KW|YA(GfHSiZ|=!P^d#iHR5kEkl!5o60!Qxv z3)Rsp4NRtzf%l>eyccB@?6P6fj`aQj~!KtttZpMj03|N@#{~2dnPyz7jHEsu~zD%D{k8fkU`moi8Wt(!g>m z85l6iz<^OkF<^351PmBu5K#4qD>muas>?b-)kejD1Hm zCFH?WHSl1Rfd``kM{!J@FMDulU^0~qJQ!u*swks)FgY^<9*i;=Sg1$6j=@3DWd&6W z6%P&!yBEI5Vt5eL9#jq<6!2iwQj~!QtttZ#Mj3c8N@zxJv>81Kc`#KCJQ!u*!KlE| z+ti3&X<#{(3_KWR;K3-PcrZCD0v?Pq7_udL1}9*b6;y3hqBk(?9#%!X2Wsyr2k!}Z zFKRT(zeycZ=jqc_})o`k%Yss`SRGVoqh;OMm)(JKv1rjmj8q71wjWfbov zXGXw#Q3e-n5%@{J-1L*}CWdr_KyB z>PEiw)O2q#!|%m~FVGX53-swR1zI*@rR>~?(t($!pNgn z%%2(J_Afqgq+iqB#q*%Q_e;pXUZ67YZt(*Qzq`Z{(jDUZm3}Tt+8Ti*_1yu`` z=nV|N7yi=GYl9L!=Wy&)0mn{(H!o2J$4;xt;Mf^uaO{i{n$cTnMo&WCOI3r-A7$XZ zsKC*Cq7l8)z;Y@XcrVJpdr?O5UUF6h;uU33JJB=np34fVHpcWGcU zl?)6RWnjQ4qZlwbGXe&TGT89yQLkfQK$jI%EmRCRF#KNlFD%9(5Yz@#4h9r3VAN8S zfdQ>50|Q1G^dm}WM(^Qf^dw}!R5dVQlz{=G0!Qy?BYLHQYBb8gdsdZ!_o58E7bP^Kx73WD zguIuk2HuM@@Lp8l=pAW9uQV{3N(SDGGVorMQM{L&83FG_8CiD7IO3e-D=^@zJ{(y>*Sb%LsmiU$XV-@~ei z2SM#Y<={a94@Qkf8FOnz@E)kWryRT|;Jv7& zCJb-j(y>*Sb%Lsm>hHk}zu%#bTwR9W78!o)X}6>OyXXJij?UIS|37u+ z@}9@R&Efa3R)cfFi!=OoPIqyW*B^8jN284H;+WNOqkH_?D5HCPJW6N`zh~$L!|!R( z-vScyuNSBcEEHwn->AS_U@HsNTc9*BnMwx!jWY0Wlu`VfoEd?bM;R=u9`!l~$559Q zR4r8eJ23oSV4`RF7bJ!q=ipxz;9r3OWR!t_tttcmMj7}wN@)6bvKc)I`8QP!{2OK9 z->AUR8*fCfG_agX2L6pQ@Nbk+{F|H=0slrB9J3NVgY&n`3aU0L(Hj_k533>$1SNXT z;nN&}OrWMIH30|Q1G#em6~5inqs!4(o3=hYe*&}9Wx z3zg^%48IrtoW<}SsJ*8gyeHtjsHG?a?^#s_-itEuUX;*`-g&y$_nw5jm#PNdi!$(D zRN&~HZA7m$u$)Q;-itEuUX)S1mz)&=??oA`Jkc}op34fVHpBW&}JKWppbw&Z{->pvwxX7AhVb7=AA>gSb2hY7Z(04+?lNYAMRV zgI1M+2crx;7$r2L_e3*#67pcG8rUGpz=KhNqj$0qz0$yPDj9e%%D{tBM)6>BRs=j4 zWw30bXW&7X6;y3hqBk)79#%!X2Wsyr2k!}ZFKRT(zeycZ=jqqp3Qo`k%Y zss`SRGVoqh;OHG|M6Wb3nMwxUi!$(Dlu^8woEZV{MHy`KM9;u`E-R>7sQwHIbTh=eB`0O*u3Trv_GSJ z*cqr}*vT*g4AJr9}zN4RVxz_74UUvU92$*g49;&QXCk$Px?H z2ZPeUaw-{EGRnZtQAV+Ia#jTF9A$8;jC$1T7}(im1yvgrI}eP;hgA_fgAzUGVCS@8 zFrJJuu(MTVVCN_UJ4Xr4=pAWBPeOK1RRcRm8Q3{0aP$@$(JKv1rjmi3qYUgEWfVIn zXGXxzQAW2?<8n?qHs`WVP_+Uer>Qf%mK`1Mfu{crQw5 zMz2l3`rea}_fplsdr=17iwYdQITotDR~lGOB?Iq88F(+sDBerXih%c`46XyIM_dO= z$5vg|392^A(bH)Bkb1FpG(N1_7!cG3R1O9dIG#q0Mj05;sxmNOlz{=Ggk}i$u6P6fj`aQj~!KtttZpMj03|N@zxJdoy|xGGMA27%? zH`9n-X<#{(3=9}$V8AG&7%(|20tSpSx|JH|)fyc9TvkxEQHkEbXna@|@gAtXryRT| z;Jv8PC7s6=mIG`{dz z+QNIF_MUR^o`CnFmZA*2XH^+^FUr7sQ9?6%o0`#+koQv6zwE2!G2{vOO|{Bm{VYNDlEz%3NHo}YF*+P{1L z-|gsZ-Shvow}7j891HS|)oNHd+)pHM3wYFMl)(i%t3`ubz@rRq0gnq`TZsbt{WCVRQ^~-$Q3k$^GKz1Lvm)TzD1$E_sYiVIC>>jMStqF4 zs6=mI*gdR@I1rTRIfr9rS}=Ii5@m4Aw5kk_nNbGE%qXE5y(j5cKY9}KUaA^+FUr7s zQGuhk!a{ZQN&}OrWZ=Ch1Mfu{#e2z_5%6A=!Sx^Yi0eP;*qqBcLDfPzdKz~B8}(xC zuzTS@IfQLc8&EkIP{4puOHl>}w5kjY7-e9>;+se5*s9AqLDfdZfCIzsVO7L{pf;d# zFrdImJ8Cq_z<^ejfdQio3>YOeqj!vc^`j>t1E#8h0iz5I7!^2r53^7mz0$yBDj66s z%D{k8MloP=W&{ivW#9nysMj$#X}heTYM~OnfnoQ;(=5ip57gdM4&D>+Uer>Qf%mK` zgEdDPcrQw5M(=1ddJ^(psv3AN%D{V3fupz7h+b)6Ih72&7iHkRD5H2UIV%F*i!!)k zljs?ov|UzEwNZ{<8FqhI9a%f<9@YYQ5Y!%24jvTnVAN=ofd{QB0}n>Ji@}O2_70 z)(NT>Djpmdb}#%Xi{U{~dr&!eP{4yxOHl?Mw5kj|7-itWD4`j>Ir`O)o`gJ@ssh3e>)1}0Ou`|lx*cl}>qc={!`q7h+_fplsdr=17 ziwYdQYgwp{UTI)Cl?=QWW#GLiqj)blD+1n&GH`%;#08&pY}I9*plYKWJq^FFQ7_gG zzlT*D1A^Ls%E5pF28V60%WWZE4FkqB{0iyzkaFaS; zPTr+~$y72hV3dIYql{v}dFv{SHfqKNNO~>Y3)(NT>Dh3=FelMJ1F$@T511bjt z3K%eIDaycrR+WJPqYMlfB{ZWqOuzcklaK*Z)xdyJ1_q1@9K99`)zK>rET@uz0iz5I z7-bX#CTB&!fKdkDKvIwR*_d=})n%QaYNHapf#LVCD&jp*drvudPhe|AjYb)G&#E%; zUX+3NqJ(DjR{y9GJqdX)RSmosW#GN2z|lL;LUr^?1Cyy_;JqjV??oBKd&!v*@LrU` z#!`>Ca+8kDxvUdZEtI2IhTqSqBWs7>3;!>R<3Uh+P&s%|z=KgsQ3f8gsti0BW#GXm zp&7+9th(<(33)J84LlfS@Uo%;NAXE@zU;xJf#p;(@L-gI2cwMQ!Q`w6creO9sYktz z!2r@_1yvgr4-O2!hgA^|g4%=1!Gi)Gj2ewH@Ss&?;K3*Z4@L>i=&dxPCm|1}s(}Zi z3_KVWIC@VsqE{N2OeF&kMj3c8$|xR8&WwNuqYPr5=ot(kT~<)FP>J5a@O$C^p)I@z zYVRor?+JJ>YAMRVdsdZ!_o58E7bP^Kcd{8h33)G74ZIg+;Jv88(OYgruQafnN(SDG zGKfc%QM{L&6#=(J8C<+c^bEY`vVy9O>hHk}zkgdDxw;I$Ei(Mp({4xmchCR39i6Rv z{_k7Bw-up`flc{9j-zWqBMj6Gw$(a%GZVRQ^~-;Q3n2vGKznbvm)T%D1$E{sYkrpbZpgSouF!?61{=p z_pmDBKu~}GS~(m$1&*CjqfrLOPOHk`*coMT?2Hnc(OaNj{pd-^d#P&Ry(k0kMFoyt zn}zD=l?EnL$-sM22HuM@iuaN;BjCL#g9|_E5f^^au{oD@f~tjb^fdf_zk0ED_`UEa zEQU=qQ zmj;$o$-sb71_q2WiUE_eB4EHMgYBmt@eQPOY}I9*plYLHz=7fSuqt9eP#aJ=7*N1~ zQKL}?2DGXS3>al#z$l>^y&d$cA3X^fFjWm+K$L+2qXI{7I}6p(D-BGhl7RuE3=9}$ z6ayw_M!e zycZ=jqc=mp`q7h+_fplsdr=17iwYdQX%?!ZR~lGOB?Iq88F(+sDBerXih%c`3}USw zapfi*TXk6{sM;t;uMEF$Q%BYgzlXH|9t5=qm4gQbJQy_^W#B=p%D{tB1|EzOno*o& z)%_?+$b+eB;K3*Z4@L!!;q+tJy&m;co< zp7(D7&jPv|eENZpX}$(cyybcCrXP6bsD4(sd%{2b*FElE1MD5o&j6l?x_P>LeBsM_ z87JC8uc+fkqKxkGr6{9&{HWClgIOS=jP8kJQNqZhFUc>bu#WB0_5CUmvb?KS29}R9 zuzXbDjW$D0eZVLUET@uz<)aKNA7vEFCuc>#@=*qNN?LUcEFTqI__4_6S|gni;(faF zekv&N=l&iVYad8sdyJQQVufg$w5L%qq zV01MhL_I0Qn}$8}S+{eSYV4|v-lAXSWmisjube-jtf7(4kMVKWU>N4l4Y8GnpLe`l z!hfw9Bqr%b-(3qB1 z(y>*Sl^G^3OfB)$t4}?3#YRE2H`8n@iw;{|ni(c0%1^c~zAC-j1p1+rkVC!N%D|yf z1`dr19Lix9szX^Cm`o)DhejDVG|DIrP0oyfL!%7tlvIz{JJYc_mkrD_@zl+|<9azm zpXwgBS(lh1EoQxJr1O`Y^f!w0Wisnud7W+Hzt&t7Eqd0Eu!PL&6;=jjjWRH6RNx4& zu3m_6X<#{(49ps3VAd$3m^C>o0%naexM7pVdF=*g7?%yqMe)?gsi*i=;q~W}`E%Oi zhtq5;i$-0VDJlA9{en8lq)VV5N(u6I3h0Mag0-LVYAXYGMj5y>DsV`jV4*ssrGe#CGH_>lnDxWdpNSX#dyCxv>8;6=L@P%SSqI;d`GO#rbkx>2TKBO1n{)dNPZX^sFCY37Ix8 z(!jJ)2BwV)9N}dasv}$)m`o)D(?%JXHp(cbP0oyfX`>9T%Bx4*Qkjm;xoluEi>F?4 z>Z$M8D2P6Ye#OnU1n>lJOh|ND@d=38lE*y@r_ zbkRNj57WydpdV5Rxznqy4BQ!I;LfPPAzfghI;5q6$y73MXOw|Eqm1It$1D8e_#ihwv5pZdg!4_1HIF+Ykt1cUu`$C6Qy`26bb?WQA zlgesZX=>Q&QcsDohtBkaDj}bGg_VI%qYPeURN$cQV4*swrGd#*GVp1Xfls51;?v~J z2>3M0;MPL*i0^}@V{R% zll&j)XwJ;jQ(x7`$LFT_$9v(|o`*kthJXEHUEVsUsdiPo3V&F2`o;SFv2(0dE$Kec z-qcr12iDJ1eqg%0I`Id;t6xmGy_)(+_wZxW-TNQDy?eU*hnhXoZ@(Y7|FJgZBlEgW z)SG&2;nc#mkDU9@2ud`G@yPu5r{uLKS?Q^>S6qD(?P^q?KXdcd?V^{@{d1maF(wEd znZFr9jn}s5{i(B8U45oh`-n16a%DqpwM*vmy0(7j+)hf|)+=c1ZzJ4R>s2iF9ak$L zbr)E{WnMwMWU8%!75vV+75wfwYPT-@oA}c5C>h<4PFLGLGTpoXVM6r;b6cL&e3!TP zrcP>}%iFtCn)8ymF1MW_?+p4ZJPXgm^V_IKDEMH1De1QdX*#9?F#rVXYu7d)#SqM&;w7MB>#cu+WgPOK<;#;Z2lzIYxTr_O-u79 zhxq9Z<^5y+r5?v4d1k}o(e(T?V|aS?^wbxq(qd}a*snTFK<;0)=uSP&FHw&?_!=to z?ti-EoteM?3?6x@GN;a5HuZ(>)ECZuOe>xG0?r-#ncpk(`D)$&zhD2G_Uq%FSF>Tc z20bchi~Ct^+fS17C07|5dGJPU?p-c#czFJ~dq+AtJ(Z@`JNV#5miq3I&Ug2h8d|^9 zxb9$}o_MDMd-`2|K8)biaeCk=wv^wE@{e5Pd3SXLfmbm

F58dK24p^jy3Y?Hr49STaM8l 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 Tx{1-+yLe-}?{3=FxcL7AL@46% literal 0 HcmV?d00001 diff --git a/src/libshared/AUTHORS b/src/libshared/AUTHORS new file mode 100644 index 0000000..8aab4e2 --- /dev/null +++ b/src/libshared/AUTHORS @@ -0,0 +1,21 @@ +The development of libshared was made possible by the significant contributions +of the following people: + + Paul Beckingham (Principal Author) + Federico Hernandez (Principal Author) + +The following submitted code, packages or analysis, and deserve special thanks: + + Lynoure Braakman + Jörg Krause + Ben Boeckel + Iain R. Learmonth + Toyam Cox + +Thanks to the following, who submitted detailed bug reports and excellent +suggestions: + + Sunil Joshi + Ellington Santos + Yury Vidineev + hosaka diff --git a/src/libshared/CMakeLists.txt b/src/libshared/CMakeLists.txt new file mode 100644 index 0000000..c1fccb2 --- /dev/null +++ b/src/libshared/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required (VERSION 2.8) +set (CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required +set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") +set (HAVE_CMAKE true) + +project (shared) +include (CXXSniffer) + +set (PROJECT_VERSION "1.0.0") + +set (PACKAGE "${PROJECT_NAME}") +set (VERSION "${PROJECT_VERSION}") +set (PACKAGE_BUGREPORT "support@taskwarrior.org") +set (PACKAGE_NAME "${PACKAGE}") +set (PACKAGE_TARNAME "${PACKAGE}") +set (PACKAGE_VERSION "${VERSION}") +set (PACKAGE_STRING "${PACKAGE} ${VERSION}") + +message ("-- Configuring cmake.h") +configure_file ( + ${CMAKE_SOURCE_DIR}/cmake.h.in + ${CMAKE_SOURCE_DIR}/cmake.h) + +add_subdirectory (src) +if (EXISTS ${CMAKE_SOURCE_DIR}/test) + add_subdirectory (test EXCLUDE_FROM_ALL) +endif (EXISTS ${CMAKE_SOURCE_DIR}/test) + diff --git a/src/libshared/ChangeLog b/src/libshared/ChangeLog new file mode 100644 index 0000000..12ab900 --- /dev/null +++ b/src/libshared/ChangeLog @@ -0,0 +1,89 @@ +master/HEAD + +- TI-53 Fix musl-libc compatibility + (thanks to Toyam Cox). +- Define PATH_MAX if it's not defined + (thanks to Iain R. Learmonth). +- Removed 'std::' from stdtoimax call. + (thanks to fornwall). +- When Lexer::noOperator () is called, prevent ::isWord boundaries from being + comprised of operators. +- Added Pig::getCharacter, which was oddly missing. +- Added 'Tree' class. +- Added FS error handling for POSIX call failure. +- Updated Timer class to use std::chrono. +- Args now tolerates undeclared option queries. +- Added case (in)sentitive find functions. +- Pig no longer makes a copy of the input string. +- Fixed bug where Pig::getUntil included the terminator if it was the last + character. +- Table now uses the correct include latch. +- Migrated obfuscateText from Taskwarrior. +- Added unicodeHorizontalWhitespace and unicodeVerticalWhitespace. +- Added unicodePunctuation. +- Added unicodeAlpha. +- Added osName. +- Duration::formatVague can now pad all values to the same length. +- Combined JSON.h, JSON2.h, eliminated duplicate encode/decode implementations. +- Table::addRow{,Odd,Even} allows a user-specified notion of 'odd' row. +- Added isIPv4Address and isIPv6Address. +- Added PEG parser. +- Added Packrat parser. +- Datetime/Duration can now parse dates from an embedded string, with negative + lookahead. +- Table supports unwrapped columns. +- Table supports colored columns. + +tasksh-1.1.0 (2016-09-05) +anomaly-1.1.0 (2016-09-04) + +- TD-120 Missing cmakedefine for HAVE_GET_CURRENT_DIR_NAME + (Thanks to Jörg Krause, Ben Boeckel). +- TW-1845 Cygwin build fails, missing get_current_dir_name + (thanks to hosaka). +- Lexer can now disable individual token types. +- Pig is more careful about string bounds in ::peek. +- Pig can extract substrings. +- FS now has strict error handling, requiring that file existence is checked before + readability. + +timew-1.0.0 (2016-08-17) + +- TI-30 10:00am isn't recognized as date + (thanks to Yurї Videneev). +- Datetime::weekStart set to 1 (Monday), per ISO-8601. +- Datetime no longer users 23:59:59 as EOD, but 24:00:00. All date ranges should + therefore be [...) instead of [...]. +- Datetime now uses whole days, not 86400 seconds for calculating date offsets. +- Datetime now properly calculates day names when looking backwards. +- Datetime considerѕ forwards/backwards when calculating informal time. + +clog-1.3.0 (2016-06-27) + +- TW-1741 Warning "ignoring return value of ‘int ftruncate" while doing make on + xubuntu15.10 + (thanks to Sunil Joshi). +- TW-1807 dateformat lacks a flag to display day of week + (thanks to Ellington Santos). +- Bug '12pm' was getting 12 hours added because of the 'pm', which is wrong. +- Added 'juhannus' as a synonym for 'midsommarafton' + (thanks to Lynoure Braakman). +- Added 'join' function. +- Added 'str_replace' function. +- Added Datetime support for informal time, '8am', '2:30p'. +- Added 'JSON2' SAX parser. +- Introduced the new shared submodule. +- Added Datetime support for 'socq', 'eocq', 'socy', 'eocy'. +- Added Composite object. +- Added Palette object. +- Added Lexer object. +- Added Msg::set overload. + +Design completed 2015-12-XX +Project started 2015-11-29 + +------ current release --------------------------- + +Note: There are no releases. There are tags applied when a project is released. + +------ start ----------------------------------- diff --git a/src/libshared/LICENSE b/src/libshared/LICENSE new file mode 100644 index 0000000..4cd3104 --- /dev/null +++ b/src/libshared/LICENSE @@ -0,0 +1,23 @@ +libshared + +Copyright 2015 - 2017, Paul Beckingham, Federico Hernandez. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +http://www.opensource.org/licenses/mit-license.php diff --git a/src/libshared/cmake.h.in b/src/libshared/cmake.h.in new file mode 100644 index 0000000..92d4b9b --- /dev/null +++ b/src/libshared/cmake.h.in @@ -0,0 +1,36 @@ +/* cmake.h.in. Creates cmake.h during a cmake run */ + +/* Package information */ +#define PACKAGE "${PACKAGE}" +#define VERSION "${VERSION}" +#define PACKAGE_BUGREPORT "${PACKAGE_BUGREPORT}" +#define PACKAGE_NAME "${PACKAGE_NAME}" +#define PACKAGE_TARNAME "${PACKAGE_TARNAME}" +#define PACKAGE_VERSION "${PACKAGE_VERSION}" +#define PACKAGE_STRING "${PACKAGE_STRING}" + +#define CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" + +/* Compiling platform */ +#cmakedefine LINUX +#cmakedefine DARWIN +#cmakedefine CYGWIN +#cmakedefine FREEBSD +#cmakedefine OPENBSD +#cmakedefine NETBSD +#cmakedefine SOLARIS +#cmakedefine KFREEBSD +#cmakedefine GNUHURD +#cmakedefine UNKNOWN + +/* Found tm.tm_gmtoff struct member */ +#cmakedefine HAVE_TM_GMTOFF + +/* Found st.st_birthtime struct member */ +#cmakedefine HAVE_ST_BIRTHTIME + +/* Functions */ +#cmakedefine HAVE_GET_CURRENT_DIR_NAME +#cmakedefine HAVE_TIMEGM +#cmakedefine HAVE_UUID_UNPARSE_LOWER + diff --git a/src/libshared/cmake/CXXSniffer.cmake b/src/libshared/cmake/CXXSniffer.cmake new file mode 100644 index 0000000..9606226 --- /dev/null +++ b/src/libshared/cmake/CXXSniffer.cmake @@ -0,0 +1,51 @@ +message ("-- Configuring C++11") +message ("-- System: ${CMAKE_SYSTEM_NAME}") + +include (CheckCXXCompilerFlag) + +# NOTE: Phase out -std=gnu++0x and --std=c++0x as soon as realistically possible. +CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11) +CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X) +CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X) + +if (_HAS_CXX11) + set (_CXX11_FLAGS "-std=c++11") +elseif (_HAS_CXX0X) + message (WARNING "Enabling -std=c++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") + set (_CXX11_FLAGS "-std=c++0x") +elseif (_HAS_GNU0X) + message (WARNING "Enabling -std=gnu++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.") + set (_CXX11_FLAGS "-std=gnu++0x") +else (_HAS_CXX11) + message (FATAL_ERROR "C++11 support missing. Try upgrading your C++ compiler. If you have a good reason for using an outdated compiler, please let us know at support@taskwarrior.org.") +endif (_HAS_CXX11) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set (LINUX true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set (DARWIN true) + set (_CXX11_FLAGS "${_CXX11_FLAGS} -stdlib=libc++") +elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD") + set (KFREEBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + set (FREEBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") + set (OPENBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") + set (NETBSD true) +elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") + set (SOLARIS true) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU") + set (GNUHURD true) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN") + set (CYGWIN true) + # NOTE: Not setting -std=gnu++0x leads to compile errors even with + # GCC 4.8.3, and debugging those leads to insanity. Adding this + # workaround instead of fixing Cygwin. + set (_CXX11_FLAGS "-std=gnu++0x") +else (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set (UNKNOWN true) +endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +set (CMAKE_CXX_FLAGS "${_CXX11_FLAGS} ${CMAKE_CXX_FLAGS}") +set (CMAKE_CXX_FLAGS "-Wall -Wextra -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}") diff --git a/src/libshared/src/Args.cpp b/src/libshared/src/Args.cpp new file mode 100644 index 0000000..0c396f0 --- /dev/null +++ b/src/libshared/src/Args.cpp @@ -0,0 +1,246 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2012 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////// +void Args::addOption (const std::string& name, bool defaultValue) +{ + _options[name] = defaultValue; + _optionCount[name] = 0; +} + +//////////////////////////////////////////////////////////////////////////////// +void Args::addNamed (const std::string& name, const std::string& defaultValue) +{ + _named[name] = defaultValue; +} + +//////////////////////////////////////////////////////////////////////////////// +void Args::limitPositionals (int limit) +{ + _limit = limit; +} + +//////////////////////////////////////////////////////////////////////////////// +void Args::enableNegatives () +{ + _negatives = true; +} + +//////////////////////////////////////////////////////////////////////////////// +void Args::scan (int argc, const char** argv) +{ + for (int i = 1; i < argc; ++i) + { + // Is an option or named arg. + if (argv[i][0] == '-' && strlen (argv[i]) > 1) + { + auto name = ltrim (argv[i], "-"); + + std::string canonical; + if (canonicalizeOption (name, canonical)) + { + bool negated = _negatives && name.find ("no") == 0; + _options[canonical] = ! negated; + _optionCount[canonical]++; + } + + else if (canonicalizeNamed (name, canonical)) + { + if (i >= argc) + throw std::string ("Argument '" + canonical + "' has no value."); + + ++i; + _named[canonical] = argv[i]; + } + + else + throw std::string ("Unrecognized argument '" + name + "'."); + } + + // Or a positional. + else + { + _positionals.push_back (argv[i]); + if (_limit != -1 && + static_cast (_positionals.size ()) > _limit) + throw std::string ("Too many positional arguments."); + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +bool Args::getOption (const std::string& name) const +{ + if (_options.find (name) == _options.end ()) + return false; + + return _options.at (name); +} + +//////////////////////////////////////////////////////////////////////////////// +int Args::getOptionCount (const std::string& name) const +{ + if (_optionCount.find (name) == _optionCount.end ()) + return false; + + return _optionCount.at (name); +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Args::getNamed (const std::string& name) const +{ + if (_named.find (name) == _named.end ()) + return ""; + + return _named.at (name); +} + +//////////////////////////////////////////////////////////////////////////////// +int Args::getPositionalCount () const +{ + return static_cast (_positionals.size ()); +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Args::getPositional (int n) const +{ + return _positionals.at (n); +} + +//////////////////////////////////////////////////////////////////////////////// +// Assuming "abc" is a declared option, support the following canonicalization: +// +// abc --> abc (exact match always canonicalizes) +// ab --> abc (if unique) +// a --> abc (if unique) +// noabc --> abc (exact negation match always canonicalizes) +// noab --> abc (if unique) +// noa --> abc (if unique) +// +bool Args::canonicalizeOption (const std::string& partial, std::string& canonical) const +{ + bool negated = _negatives && partial.find ("no") == 0; + + // Look for exact positive or negative matches first, which should succeed + // regardless of any longer partial matches. + if (_options.find (partial) != _options.end ()) + { + canonical = partial; + return true; + } + + if (negated && + _options.find (partial.substr (2)) != _options.end ()) + { + canonical = partial.substr (2); + return true; + } + + // Iterate over all options, and look for partial matches. If there is only + // one, we have canonicalization. + std::vector candidates; + for (const auto& option : _options) + { + if (option.first.find (partial) == 0 || + (negated && option.first.find (partial, 2) == 2)) + { + candidates.push_back (option.first); + } + } + + if (candidates.size () == 1) + { + canonical = candidates[0]; + return true; + } + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// Assuming "abc" is a declared name, support the following canonicalization: +// +// abc --> abc (exact match always canonicalizes) +// ab --> abc (if unique) +// a --> abc (if unique) +// +bool Args::canonicalizeNamed (const std::string& partial, std::string& canonical) const +{ + // Look for exact positive or negative matches first, which should succeed + // regardless of longer partial matches. + if (_named.find (partial) != _named.end ()) + { + canonical = partial; + return true; + } + + // Iterate over all options, and look for partial matches. If there is only + // one, we have canonicalization. + std::vector candidates; + for (const auto& name : _named) + if (name.first.find (partial) == 0) + candidates.push_back (name.first); + + if (candidates.size () == 1) + { + canonical = candidates[0]; + return true; + } + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Args::dump () const +{ + std::stringstream out; + out << "Args\n" + << " Options\n"; + for (const auto& arg : _options) + out << " " << arg.first << " = " << arg.second << " (" << _optionCount.at (arg.first) << ")\n"; + + out << " Named\n"; + for (const auto& arg : _named) + out << " " << arg.first << " = " << arg.second << '\n'; + + out << " Positionals\n" + << " limit = " << _limit << '\n'; + for (const auto& arg : _positionals) + out << " " << arg << '\n'; + + out << " Negatives\n" + << " enabled = " << _negatives << '\n'; + + return out.str (); +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/libshared/src/Args.h b/src/libshared/src/Args.h new file mode 100644 index 0000000..84a0070 --- /dev/null +++ b/src/libshared/src/Args.h @@ -0,0 +1,68 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2012 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDED_ARGS +#define INCLUDED_ARGS + +#include +#include +#include + +class Args +{ +public: + Args () = default; + + void addOption (const std::string&, bool defaultValue = true); + void addNamed (const std::string&, const std::string& defaultValue = ""); + void limitPositionals (int); + void enableNegatives (); + + void scan (int, const char**); + + bool getOption (const std::string&) const; + int getOptionCount (const std::string&) const; + std::string getNamed (const std::string&) const; + int getPositionalCount () const; + std::string getPositional (int) const; + + std::string dump () const; + +private: + bool canonicalizeOption (const std::string&, std::string&) const; + bool canonicalizeNamed (const std::string&, std::string&) const; + +private: + std::map _options {}; + std::map _optionCount {}; + std::map _named {}; + std::vector _positionals {}; + int _limit {-1}; + bool _negatives {false}; +}; + +#endif + diff --git a/src/libshared/src/CMakeLists.txt b/src/libshared/src/CMakeLists.txt new file mode 100644 index 0000000..8b3ec70 --- /dev/null +++ b/src/libshared/src/CMakeLists.txt @@ -0,0 +1,65 @@ +cmake_minimum_required (VERSION 2.8) +include_directories (${CMAKE_SOURCE_DIR} + ${CMAKE_SOURCE_DIR}/src) + +set (shared_HEADERS Args.h + Color.h + Composite.h + Configuration.h + Datetime.h + Duration.h + FS.h + JSON.h + Lexer.h + Log.h + Msg.h + Packrat.h + Palette.h + PEG.h + Pig.h + RX.h + Table.h + Timer.h + Tree.h + shared.h + format.h + unicode.h + utf8.h) + +set (shared_SRCS Args.cpp + Color.cpp + Composite.cpp + Configuration.cpp + Datetime.cpp + Duration.cpp + FS.cpp + JSON.cpp + Lexer.cpp + Log.cpp + Msg.cpp + Packrat.cpp + Palette.cpp + PEG.cpp + Pig.cpp + RX.cpp + SAX.cpp + Table.cpp + Timer.cpp + Tree.cpp + format.cpp + ip.cpp + shared.cpp + unicode.cpp + utf8.cpp + wcwidth6.cpp + ${shared_HEADERS}) + +add_library (shared STATIC ${shared_SRCS}) + +set (CMAKE_INSTALL_LIBDIR lib CACHE PATH "Output directory for libraries") +install (TARGETS shared DESTINATION lib) +install (FILES ${shared_HEADERS} DESTINATION include) + +add_executable (lex_executable lex.cpp) +target_link_libraries (lex_executable shared) +set_property (TARGET lex_executable PROPERTY OUTPUT_NAME "lex") diff --git a/src/libshared/src/Color.cpp b/src/libshared/src/Color.cpp new file mode 100644 index 0000000..0673d81 --- /dev/null +++ b/src/libshared/src/Color.cpp @@ -0,0 +1,682 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include + +// uint to string lookup table for Color::_colorize() +// _colorize() gets called _a lot_, having this lookup table is a cheap +// performance optimization. +const char *colorstring[] = { + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", + "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", + "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", + "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", + "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", + "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", + "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", + "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", + "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", + "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", + "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", + "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", + "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", + "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", + "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", + "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", + "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", + "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", + "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", + "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", + "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", + "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", + "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", + "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", + "250", "251", "252", "253", "254", "255" +}; + +//////////////////////////////////////////////////////////////////////////////// +static struct +{ + Color::color_id id; + std::string english_name; + int index; // offset red=3 (therefore fg=33, bg=43) +} allColors[] = +{ + // Color.h enum English Index + { Color::nocolor, "none", 0}, + { Color::black, "black", 1}, // fg 29+0 bg 39+0 + { Color::red, "red", 2}, + { Color::green, "green", 3}, + { Color::yellow, "yellow", 4}, + { Color::blue, "blue", 5}, + { Color::magenta, "magenta", 6}, + { Color::cyan, "cyan", 7}, + { Color::white, "white", 8}, + +}; + +#define NUM_COLORS (sizeof (allColors) / sizeof (allColors[0])) + +//////////////////////////////////////////////////////////////////////////////// +Color::Color () +: _value (0) +{ +} + +//////////////////////////////////////////////////////////////////////////////// +Color::Color (const Color& other) +{ + _value = other._value; +} + +//////////////////////////////////////////////////////////////////////////////// +Color::Color (unsigned int c) +: _value (0) +{ + if (!(c & _COLOR_HASFG)) _value &= ~_COLOR_FG; + if (!(c & _COLOR_HASBG)) _value &= ~_COLOR_BG; + + _value = c & (_COLOR_256 | _COLOR_HASBG | _COLOR_HASFG |_COLOR_UNDERLINE | + _COLOR_INVERSE | _COLOR_BOLD | _COLOR_BRIGHT | _COLOR_BG | + _COLOR_FG); +} + +//////////////////////////////////////////////////////////////////////////////// +// Supports the following constructs: +// [bright] [color] [on color] [bright] [underline] +// +// Where [color] is one of: +// black +// red +// ... +// grayN 0 <= N <= 23 fg 38;5;232 + N bg 48;5;232 + N +// greyN 0 <= N <= 23 fg 38;5;232 + N bg 48;5;232 + N +// colorN 0 <= N <= 255 fg 38;5;N bg 48;5;N +// rgbRGB 0 <= R,G,B <= 5 fg 38;5;16 + R*36 + G*6 + B bg 48;5;16 + R*36 + G*6 + B +Color::Color (const std::string& spec) +: _value (0) +{ + // Split spec into words. + auto words = split (spec, ' '); + + // Construct the color as two separate colors, then blend them later. This + // make it possible to declare a color such as "color1 on black", and have + // the upgrade work properly. + unsigned int fg_value = 0; + unsigned int bg_value = 0; + + bool bg = false; + int index; + for (auto& word : words) + { + word = lowerCase (trim (word)); + + if (word == "bold") fg_value |= _COLOR_BOLD; + else if (word == "bright") bg_value |= _COLOR_BRIGHT; + else if (word == "underline") fg_value |= _COLOR_UNDERLINE; + else if (word == "inverse") fg_value |= _COLOR_INVERSE; + else if (word == "on") bg = true; + + // X where X is one of black, red, blue ... + else if ((index = find (word)) != -1) + { + if (index) + { + if (bg) + { + bg_value |= _COLOR_HASBG; + bg_value |= index << 8; + } + else + { + fg_value |= _COLOR_HASFG; + fg_value |= index; + } + } + } + + // greyN/grayN, where 0 <= N <= 23. + else if (! word.compare (0, 4, "grey", 4) || + ! word.compare (0, 4, "gray", 4)) + { + index = strtol (word.substr (4).c_str (), nullptr, 10); + if (index < 0 || index > 23) + throw format ("The color '{1}' is not recognized.", word); + + if (bg) + { + bg_value |= _COLOR_HASBG; + bg_value |= (index + 232) << 8; + bg_value |= _COLOR_256; + } + else + { + fg_value |= _COLOR_HASFG; + fg_value |= index + 232; + fg_value |= _COLOR_256; + } + } + + // rgbRGB, where 0 <= R,G,B <= 5. + else if (! word.compare (0, 3, "rgb", 3)) + { + index = strtol (word.substr (3).c_str (), nullptr, 10); + if (word.length () != 6 || + index < 0 || index > 555) + throw format ("The color '{1}' is not recognized.", word); + + int r = strtol (word.substr (3, 1).c_str (), nullptr, 10); + int g = strtol (word.substr (4, 1).c_str (), nullptr, 10); + int b = strtol (word.substr (5, 1).c_str (), nullptr, 10); + if (r < 0 || r > 5 || + g < 0 || g > 5 || + b < 0 || b > 5) + throw format ("The color '{1}' is not recognized.", word); + + index = 16 + r*36 + g*6 + b; + + if (bg) + { + bg_value |= _COLOR_HASBG; + bg_value |= index << 8; + bg_value |= _COLOR_256; + } + else + { + fg_value |= _COLOR_HASFG; + fg_value |= index; + fg_value |= _COLOR_256; + } + } + + // colorN, where 0 <= N <= 255. + else if (! word.compare (0, 5, "color", 5)) + { + index = strtol (word.substr (5).c_str (), nullptr, 10); + if (index < 0 || index > 255) + throw format ("The color '{1}' is not recognized.", word); + + upgrade (); + + if (bg) + { + bg_value |= _COLOR_HASBG; + bg_value |= index << 8; + bg_value |= _COLOR_256; + } + else + { + fg_value |= _COLOR_HASFG; + fg_value |= index; + fg_value |= _COLOR_256; + } + } + else if (word != "") + throw format ("The color '{1}' is not recognized.", word); + } + + // Now combine the fg and bg into a single color. + _value = fg_value; + blend (Color (bg_value)); +} + +//////////////////////////////////////////////////////////////////////////////// +Color::Color (color_id fg) +: _value (0) +{ + if (fg != Color::nocolor) + { + _value |= _COLOR_HASFG; + _value |= fg; + } +} + +//////////////////////////////////////////////////////////////////////////////// +Color::Color (color_id fg, color_id bg, bool underline, bool bold, bool bright) +: _value (0) +{ + _value |= ((underline ? 1 : 0) << 18) + | ((bold ? 1 : 0) << 17) + | ((bright ? 1 : 0) << 16); + + if (bg != Color::nocolor) + { + _value |= _COLOR_HASBG; + _value |= (bg << 8); + } + + if (fg != Color::nocolor) + { + _value |= _COLOR_HASFG; + _value |= fg; + } +} + +//////////////////////////////////////////////////////////////////////////////// +Color::operator std::string () const +{ + std::string description; + if (_value & _COLOR_BOLD) description += "bold"; + + if (_value & _COLOR_UNDERLINE) + description += std::string (description.length () ? " " : "") + "underline"; + + if (_value & _COLOR_INVERSE) + description += std::string (description.length () ? " " : "") + "inverse"; + + if (_value & _COLOR_HASFG) + description += std::string (description.length () ? " " : "") + fg (); + + if (_value & _COLOR_HASBG) + { + description += std::string (description.length () ? " " : "") + "on"; + + if (_value & _COLOR_BRIGHT) + description += std::string (description.length () ? " " : "") + "bright"; + + description += " " + bg (); + } + + return description; +} + +//////////////////////////////////////////////////////////////////////////////// +Color::operator int () const +{ + return (int) _value; +} + +//////////////////////////////////////////////////////////////////////////////// +// If 'other' has styles that are compatible, merge them into this. Colors in +// other take precedence. +void Color::blend (const Color& other) +{ + if (!other.nontrivial ()) + return; + + Color c (other); + _value |= (c._value & _COLOR_UNDERLINE); // Always inherit underline. + _value |= (c._value & _COLOR_INVERSE); // Always inherit inverse. + + // 16 <-- 16. + if (!(_value & _COLOR_256) && + !(c._value & _COLOR_256)) + { + _value |= (c._value & _COLOR_BOLD); // Inherit bold. + _value |= (c._value & _COLOR_BRIGHT); // Inherit bright. + + if (c._value & _COLOR_HASFG) + { + _value |= _COLOR_HASFG; // There is now a color. + _value &= ~_COLOR_FG; // Remove previous color. + _value |= (c._value & _COLOR_FG); // Apply other color. + } + + if (c._value & _COLOR_HASBG) + { + _value |= _COLOR_HASBG; // There is now a color. + _value &= ~_COLOR_BG; // Remove previous color. + _value |= (c._value & _COLOR_BG); // Apply other color. + } + + return; + } + else + { + // Upgrade either color, if necessary. + if (!(_value & _COLOR_256)) upgrade (); + if (!(c._value & _COLOR_256)) c.upgrade (); + + // 256 <-- 256. + if (c._value & _COLOR_HASFG) + { + _value |= _COLOR_HASFG; // There is now a color. + _value &= ~_COLOR_FG; // Remove previous color. + _value |= (c._value & _COLOR_FG); // Apply other color. + } + + if (c._value & _COLOR_HASBG) + { + _value |= _COLOR_HASBG; // There is now a color. + _value &= ~_COLOR_BG; // Remove previous color. + _value |= (c._value & _COLOR_BG); // Apply other color. + } + } +} + +//////////////////////////////////////////////////////////////////////////////// +void Color::upgrade () +{ + if (!(_value & _COLOR_256)) + { + if (_value & _COLOR_HASFG) + { + bool bold = _value & _COLOR_BOLD; + unsigned int fg = _value & _COLOR_FG; + _value &= ~_COLOR_FG; + _value &= ~_COLOR_BOLD; + _value |= (bold ? fg + 7 : fg - 1); + } + + if (_value & _COLOR_HASBG) + { + bool bright = _value & _COLOR_BRIGHT; + unsigned int bg = (_value & _COLOR_BG) >> 8; + _value &= ~_COLOR_BG; + _value &= ~_COLOR_BRIGHT; + _value |= (bright ? bg + 7 : bg - 1) << 8; + } + + _value |= _COLOR_256; + } +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::colorize (const std::string& input) const +{ + std::string result; + _colorize (result, input); + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +// Sample color codes: +// red \033[31m +// bold red \033[91m +// underline red \033[4;31m +// bold underline red \033[1;4;31m +// +// on red \033[41m +// on bright red \033[101m +// +// 256 fg \033[38;5;Nm +// 256 bg \033[48;5;Nm +void Color::_colorize (std::string &result, const std::string& input) const +{ + if (!nontrivial ()) + { + result += input; + return; + } + + int count = 0; + + // 256 color + if (_value & _COLOR_256) + { + if (_value & _COLOR_UNDERLINE) + result += "\033[4m"; + + if (_value & _COLOR_INVERSE) + result += "\033[7m"; + + if (_value & _COLOR_HASFG) + { + result += "\033[38;5;"; + result += colorstring[(_value & _COLOR_FG)]; + result += 'm'; + } + + if (_value & _COLOR_HASBG) + { + result += "\033[48;5;"; + result += colorstring[((_value & _COLOR_BG) >> 8)]; + result += 'm'; + } + + result += input; + result += "\033[0m"; + } + + // 16 color + else + { + result += "\033["; + + if (_value & _COLOR_BOLD) + { + if (count++) result += ';'; + result += '1'; + } + + if (_value & _COLOR_UNDERLINE) + { + if (count++) result += ';'; + result += '4'; + } + + if (_value & _COLOR_INVERSE) + { + if (count++) result += ';'; + result += '7'; + } + + if (_value & _COLOR_HASFG) + { + if (count++) result += ';'; + result += colorstring[(29 + (_value & _COLOR_FG))]; + } + + if (_value & _COLOR_HASBG) + { + if (count++) result += ';'; + result += colorstring[((_value & _COLOR_BRIGHT ? 99 : 39) + ((_value & _COLOR_BG) >> 8))]; + } + + result += 'm'; + result += input; + result += "\033[0m"; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// Remove color codes from a string. +std::string Color::strip (const std::string& input) +{ + int length = input.length (); + bool inside = false; + std::string output; + for (int i = 0; i < length; ++i) + { + if (inside) + { + if (input[i] == 'm') + inside = false; + } + else + { + if (input[i] == 033) + inside = true; + else + output += input[i]; + } + } + + return output; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::colorize (const std::string& input, const std::string& spec) +{ + Color c (spec); + return c.colorize (input); +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::code () const +{ + if (! nontrivial ()) + return ""; + + std::string result; + + // 256 color + if (_value & _COLOR_256) + { + if (_value & _COLOR_UNDERLINE) + result += "\033[4m"; + + if (_value & _COLOR_INVERSE) + result += "\033[7m"; + + if (_value & _COLOR_HASFG) + { + result += "\033[38;5;"; + result += colorstring[(_value & _COLOR_FG)]; + result += 'm'; + } + + if (_value & _COLOR_HASBG) + { + result += "\033[48;5;"; + result += colorstring[((_value & _COLOR_BG) >> 8)]; + result += 'm'; + } + } + + // 16 color + else + { + int count = 0; + result += "\033["; + + if (_value & _COLOR_BOLD) + { + if (count++) result += ';'; + result += '1'; + } + + if (_value & _COLOR_UNDERLINE) + { + if (count++) result += ';'; + result += '4'; + } + + if (_value & _COLOR_INVERSE) + { + if (count++) result += ';'; + result += '7'; + } + + if (_value & _COLOR_HASFG) + { + if (count++) result += ';'; + result += colorstring[(29 + (_value & _COLOR_FG))]; + } + + if (_value & _COLOR_HASBG) + { + if (count++) result += ';'; + result += colorstring[((_value & _COLOR_BRIGHT ? 99 : 39) + ((_value & _COLOR_BG) >> 8))]; + } + + result += 'm'; + } + + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::end () const +{ + if (nontrivial ()) + return "\033[0m"; + + return ""; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Color::nontrivial () const +{ + return _value != 0 ? true : false; +} + +//////////////////////////////////////////////////////////////////////////////// +int Color::find (const std::string& input) +{ + for (unsigned int i = 0; i < NUM_COLORS; ++i) + if (allColors[i].english_name == input) + return (int) i; + + return -1; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::fg () const +{ + int index = _value & _COLOR_FG; + + if (_value & _COLOR_256) + { + if (_value & _COLOR_HASFG) + { + std::stringstream s; + s << "color" << (_value & _COLOR_FG); + return s.str (); + } + } + else + { + for (unsigned int i = 0; i < NUM_COLORS; ++i) + if (allColors[i].index == index) + return allColors[i].english_name; + } + + return ""; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Color::bg () const +{ + int index = (_value & _COLOR_BG) >> 8; + + if (_value & _COLOR_256) + { + if (_value & _COLOR_HASBG) + { + std::stringstream s; + s << "color" << ((_value & _COLOR_BG) >> 8); + return s.str (); + } + } + else + { + for (unsigned int i = 0; i < NUM_COLORS; ++i) + if (allColors[i].index == index) + return allColors[i].english_name; + } + + return ""; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/libshared/src/Color.h b/src/libshared/src/Color.h new file mode 100644 index 0000000..d8393c2 --- /dev/null +++ b/src/libshared/src/Color.h @@ -0,0 +1,78 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDED_COLOR +#define INCLUDED_COLOR + +#include + +#define _COLOR_INVERSE 0x00400000 // Inverse attribute. +#define _COLOR_256 0x00200000 // 256-color mode. +#define _COLOR_HASBG 0x00100000 // Has background color (all values taken). +#define _COLOR_HASFG 0x00080000 // Has foreground color (all values taken). +#define _COLOR_UNDERLINE 0x00040000 // General underline attribute. +#define _COLOR_BOLD 0x00020000 // 16-color bold attribute. +#define _COLOR_BRIGHT 0x00010000 // 16-color bright background attribute. +#define _COLOR_BG 0x0000FF00 // 8-bit background color index. +#define _COLOR_FG 0x000000FF // 8-bit foreground color index. + +class Color +{ +public: + enum color_id {nocolor = 0, black, red, green, yellow, blue, magenta, cyan, white}; + + Color (); + Color (const Color&); + Color (unsigned int); // 256 | INVERSE | UNDERLINE | BOLD | BRIGHT | (BG << 8) | FG + Color (const std::string&); // "red on bright black" + Color (color_id); // fg. + Color (color_id, color_id, bool, bool, bool); // fg, bg, underline, bold, bright + operator std::string () const; + operator int () const; + + void upgrade (); + void blend (const Color&); + + std::string colorize (const std::string&) const; + static std::string colorize (const std::string&, const std::string&); + void _colorize (std::string&, const std::string&) const; + static std::string strip (const std::string&); + + std::string code () const; + std::string end () const; + + bool nontrivial () const; + +private: + int find (const std::string&); + std::string fg () const; + std::string bg () const; + +private: + unsigned int _value; +}; + +#endif diff --git a/src/libshared/src/Composite.cpp b/src/libshared/src/Composite.cpp new file mode 100644 index 0000000..98bd49c --- /dev/null +++ b/src/libshared/src/Composite.cpp @@ -0,0 +1,148 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////// +// Initially assume no text, but infinite virtual space. +// +// Ållow overlay placement of arbitrary text at any offset, real or virtual, and +// using a specific color. +// +// For example: +// Composite c; +// c.add ("aaaaaaaaaa", 2, Color ("...")); // Layer 1 +// c.add ("bbbbb", 5, Color ("...")); // Layer 2 +// c.add ("c", 15, Color ("...")); // Layer 3 +// +// _layers = { std::make_tuple ("aaaaaaaaaa", 2, Color ("...")), +// std::make_tuple ("bbbbb", 5, Color ("...")), +// std::make_tuple ("c", 15, Color ("..."))}; +// +void Composite::add ( + const std::string& text, + std::string::size_type offset, + const Color& color) +{ + _layers.push_back (std::make_tuple (text, offset, color)); +} + +//////////////////////////////////////////////////////////////////////////////// +// Merge the layers of text and color into one string. +// +// For example: +// Composite c; +// c.add ("aaaaaaaaaa", 2, Color ("...")); // Layer 1 +// c.add ("bbbbb", 5, Color ("...")); // Layer 2 +// c.add ("c", 15, Color ("...")); // Layer 3 +// +// _layers = { std::make_tuple ("aaaaaaaaaa", 2, Color ("...")), +// std::make_tuple ("bbbbb", 5, Color ("...")), +// std::make_tuple ("c", 15, Color ("..."))}; +// +// Arrange strings conceptually: +// 111111 +// 0123456789012345 // Position +// +// aaaaaaaaaa // Layer 1 +// bbbbb // Layer 2 +// c // Layer 3 +// +// Walk all strings left to right, selecting the character and color from the +// highest numbered layer. Emit color codes only on edge detection. +// +std::string Composite::str () const +{ + // The strings are broken into a vector of int, for UTF8 support. + std::vector characters; + std::vector colors; + for (unsigned int layer = 0; layer < _layers.size (); ++layer) + { + auto text = std::get <0> (_layers[layer]); + auto offset = std::get <1> (_layers[layer]); + auto len = utf8_text_length (text); + + // Make sure the vectors are large enough to support a write operator[]. + if (characters.size () < offset + len) + { + characters.resize (offset + len, 32); + colors.resize (offset + len, 0); + } + + // Copy in the layer characters and color indexes. + std::string::size_type cursor = 0; + int character; + int count = 0; + while ((character = utf8_next_char (text, cursor))) + { + characters[offset + count] = character; + colors [offset + count] = layer + 1; + ++count; + } + } + + // Now walk the character and color vector, emitting every character and + // every detected color change. + std::stringstream out; + int prev_color = 0; + for (unsigned int i = 0; i < characters.size (); ++i) + { + // A change in color triggers a code emit. + if (prev_color != colors[i]) + { + if (prev_color) + out << std::get <2> (_layers[prev_color - 1]).end (); + + if (colors[i]) + out << std::get <2> (_layers[colors[i] - 1]).code (); + else + out << std::get <2> (_layers[prev_color - 1]).end (); + + prev_color = colors[i]; + } + + out << utf8_character (characters[i]); + } + + // Terminate the color codes, if necessary. + if (prev_color) + out << std::get <2> (_layers[prev_color - 1]).end (); + + return out.str (); +} + +//////////////////////////////////////////////////////////////////////////////// +// So the same instance can be reused. +void Composite::clear () +{ + _layers.clear (); +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/libshared/src/Composite.h b/src/libshared/src/Composite.h new file mode 100644 index 0000000..7309c51 --- /dev/null +++ b/src/libshared/src/Composite.h @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2015 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDED_COMPOSITE +#define INCLUDED_COMPOSITE + +#include +#include +#include +#include + +class Composite +{ +public: + Composite () = default; + void add (const std::string&, std::string::size_type, const Color&); + std::string str () const; + void clear (); + +private: + std::vector > _layers; +}; + +#endif diff --git a/src/libshared/src/Configuration.cpp b/src/libshared/src/Configuration.cpp new file mode 100644 index 0000000..fc9331c --- /dev/null +++ b/src/libshared/src/Configuration.cpp @@ -0,0 +1,323 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////// +bool setVariableInFile ( + const std::string& file, + const std::string& name, + const std::string& value) +{ + // Read the file contents. + std::vector contents; + File::read (file, contents); + + bool found = false; + bool change = false; + + for (auto& line : contents) + { + // If there is a comment on the line, it must follow the pattern. + auto comment = line.find ('#'); + auto pos = line.find (name + '='); + + if (pos != std::string::npos && + (comment == std::string::npos || + comment > pos)) + { + found = true; + if (comment != std::string::npos) + line = name + '=' + value + ' ' + line.substr (comment); + else + line = name + '=' + value; + + change = true; + } + } + + // Not found, so append instead. + if (! found) + { + contents.push_back (name + '=' + value); + change = true; + } + + if (change) + File::write (file, contents); + + return change; +} + +//////////////////////////////////////////////////////////////////////////////// +bool unsetVariableInFile ( + const std::string& file, + const std::string& name) +{ + // Read configuration file. + std::vector contents; + File::read (file, contents); + + bool change = false; + + for (auto line = contents.begin (); line != contents.end (); ) + { + bool lineDeleted = false; + + // If there is a comment on the line, it must follow the pattern. + auto comment = line->find ('#'); + auto pos = line->find (name + '='); + + if (pos != std::string::npos && + (comment == std::string::npos || + comment > pos)) + { + // vector::erase method returns a valid iterator to the next object + line = contents.erase (line); + lineDeleted = true; + change = true; + } + + if (! lineDeleted) + line++; + } + + if (change) + File::write (file, contents); + + return change; +} + +//////////////////////////////////////////////////////////////////////////////// +// Read the Configuration file and populate the *this map. The file format is +// simply lines with name=value pairs. Whitespace between name, = and value is +// not tolerated, but blank lines and comments starting with # are allowed. +// +// Nested files are now supported, with the following construct: +// include /absolute/path/to/file +// +void Configuration::load (const std::string& file, int nest /* = 1 */) +{ + if (nest > 10) + throw std::string ("Configuration files may only be nested to 10 levels."); + + // Read the file, then parse the contents. + File config (file); + + if (nest == 1) + _original_file = config; + + if (config.exists () && + config.readable ()) + { + std::string contents; + if (File::read (file, contents) && contents.length ()) + parse (contents, nest); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// Write the Configuration file. +void Configuration::save () +{ + std::string contents; + for (const auto& i : *this) + contents += i.first + "=" + i.second + '\n'; + + File::write (_original_file, contents); + _dirty = false; +} + +//////////////////////////////////////////////////////////////////////////////// +void Configuration::parse (const std::string& input, int nest /* = 1 */) +{ + // Shortcut case for default constructor. + if (input.length () == 0) + return; + + // Parse each line. + for (auto& line : split (input, '\n')) + { + // Remove comments. + auto pound = line.find ('#'); + if (pound != std::string::npos) + line = line.substr (0, pound); + + // Skip empty lines. + line = trim (line); + if (line.length () > 0) + { + auto equal = line.find ('='); + if (equal != std::string::npos) + { + std::string key = trim (line.substr (0, equal)); + std::string value = trim (line.substr (equal+1, line.length () - equal)); + + (*this)[key] = json::decode (value); + } + else + { + auto include = line.find ("include"); + if (include != std::string::npos) + { + Path included (trim (line.substr (include + 7))); + if (included.is_absolute ()) + { + if (included.readable ()) + load (included, nest + 1); + else + throw format ("Could not read include file '{1}'.", included._data); + } + else + throw format ("Can only include files with absolute paths, not '{1}'", included._data); + } + else + throw format ("Malformed entry '{1}' in config file.", line); + } + } + } + + _dirty = true; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Configuration::has (const std::string& key) const +{ + return (*this).find (key) != (*this).end (); +} + +//////////////////////////////////////////////////////////////////////////////// +// Return the configuration value given the specified key. +std::string Configuration::get (const std::string& key) const +{ + auto found = find (key); + if (found != end ()) + return found->second; + + return ""; +} + +//////////////////////////////////////////////////////////////////////////////// +int Configuration::getInteger (const std::string& key) const +{ + auto found = find (key); + if (found != end ()) + return strtoimax (found->second.c_str (), nullptr, 10); + + return 0; +} + +//////////////////////////////////////////////////////////////////////////////// +double Configuration::getReal (const std::string& key) const +{ + auto found = find (key); + if (found != end ()) + return strtod (found->second.c_str (), nullptr); + + return 0.0; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Configuration::getBoolean (const std::string& key) const +{ + auto found = find (key); + if (found != end ()) + { + auto value = lowerCase (found->second); + if (value == "true" || + value == "1" || + value == "y" || + value == "yes" || + value == "on") + return true; + } + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +void Configuration::set (const std::string& key, const int value) +{ + (*this)[key] = format (value); + _dirty = true; +} + +//////////////////////////////////////////////////////////////////////////////// +void Configuration::set (const std::string& key, const double value) +{ + (*this)[key] = format (value, 1, 8); + _dirty = true; +} + +//////////////////////////////////////////////////////////////////////////////// +void Configuration::set (const std::string& key, const std::string& value) +{ + (*this)[key] = value; + _dirty = true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Autovivification is ok here. +void Configuration::setIfBlank (const std::string& key, const std::string& value) +{ + if ((*this)[key] == "") + { + (*this)[key] = value; + _dirty = true; + } +} + +//////////////////////////////////////////////////////////////////////////////// +// Provide a vector of all configuration keys. +std::vector Configuration::all () const +{ + std::vector items; + for (const auto& it : *this) + items.push_back (it.first); + + return items; +} + +//////////////////////////////////////////////////////////////////////////////// +std::string Configuration::file () const +{ + return _original_file._data; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Configuration::dirty () +{ + return _dirty; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/libshared/src/Configuration.h b/src/libshared/src/Configuration.h new file mode 100644 index 0000000..067affe --- /dev/null +++ b/src/libshared/src/Configuration.h @@ -0,0 +1,66 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDED_CONFIGURATION +#define INCLUDED_CONFIGURATION + +#include +#include +#include +#include + +bool setVariableInFile (const std::string&, const std::string&, const std::string&); +bool unsetVariableInFile (const std::string&, const std::string&); + +class Configuration : public std::map +{ +public: + void load (const std::string&, int nest = 1); + void save (); + void parse (const std::string&, int nest = 1); + + bool has (const std::string&) const; + std::string get (const std::string&) const; + int getInteger (const std::string&) const; + double getReal (const std::string&) const; + bool getBoolean (const std::string&) const; + + void set (const std::string&, const int); + void set (const std::string&, const double); + void set (const std::string&, const std::string&); + void setIfBlank (const std::string&, const std::string&); + std::vector all () const; + + std::string file () const; + + bool dirty (); + +private: + File _original_file {}; + bool _dirty {false}; +}; + +#endif diff --git a/src/libshared/src/Datetime.cpp b/src/libshared/src/Datetime.cpp new file mode 100644 index 0000000..726d9dc --- /dev/null +++ b/src/libshared/src/Datetime.cpp @@ -0,0 +1,3787 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// http://www.opensource.org/licenses/mit-license.php +// +//////////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static std::vector dayNames { + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday"}; + +static std::vector monthNames { + "january", + "february", + "march", + "april", + "may", + "june", + "july", + "august", + "september", + "october", + "november", + "december"}; + +int Datetime::weekstart = 1; // Monday, per ISO-8601. +int Datetime::minimumMatchLength = 3; +bool Datetime::isoEnabled = true; +bool Datetime::standaloneDateEnabled = true; +bool Datetime::standaloneTimeEnabled = true; + +//////////////////////////////////////////////////////////////////////////////// +Datetime::Datetime () +{ + clear (); + _date = time (nullptr); +} + +//////////////////////////////////////////////////////////////////////////////// +Datetime::Datetime (const std::string& input, const std::string& format) +{ + clear (); + std::string::size_type start = 0; + if (! parse (input, start, format)) + throw ::format ("'{1}' is not a valid date in the '{2}' format.", input, format); +} + +//////////////////////////////////////////////////////////////////////////////// +Datetime::Datetime (const time_t t) +{ + clear (); + _date = t; +} + +//////////////////////////////////////////////////////////////////////////////// +Datetime::Datetime (const int y, const int m, const int d) +{ + // Protect against arguments being passed in the wrong order. + assert (y >= 1969 && y < 2100); + assert (m >= 1 && m <= 12); + assert (d >= 1 && d <= 31); + + clear (); + + // Error if not valid. + struct tm t {}; + t.tm_isdst = -1; // Requests that mktime determine summer time effect. + t.tm_mday = d; + t.tm_mon = m - 1; + t.tm_year = y - 1900; + + _date = mktime (&t); +} + +//////////////////////////////////////////////////////////////////////////////// +Datetime::Datetime (const int y, const int m, const int d, + const int hr, const int mi, const int se) +{ + // Protect against arguments being passed in the wrong order. + assert (y >= 1969 && y < 2100); + assert (m >= 1 && m <= 12); + assert (d >= 1 && d <= 31); + assert (hr >= 0 && hr <= 24); + assert (mi >= 0 && mi < 60); + assert (se >= 0 && se < 60); + + clear (); + + // Error if not valid. + struct tm t {}; + t.tm_isdst = -1; // Requests that mktime determine summer time effect. + t.tm_mday = d; + t.tm_mon = m - 1; + t.tm_year = y - 1900; + t.tm_hour = hr; + t.tm_min = mi; + t.tm_sec = se; + + _date = mktime (&t); +} + +//////////////////////////////////////////////////////////////////////////////// +bool Datetime::parse ( + const std::string& input, + std::string::size_type& start, + const std::string& format) +{ + auto i = start; + Pig pig (input); + if (i) + pig.skipN (static_cast (i)); + + auto checkpoint = pig.cursor (); + + // Parse epoch first, as it's the most common scenario. + if (parse_epoch (pig)) + { + // ::validate and ::resolve are not needed in this case. + start = pig.cursor (); + return true; + } + + if (parse_formatted (pig, format)) + { + // Check the values and determine time_t. + if (validate ()) + { + start = pig.cursor (); + resolve (); + return true; + } + } + + // Allow parse_date_time and parse_date_time_ext regardless of + // Datetime::isoEnabled setting, because these formats are relied upon by + // the 'import' command, JSON parser and hook system. + if (parse_date_time_ext (pig) || // Strictest first. + parse_date_time (pig) || + (Datetime::isoEnabled && + ( parse_date_ext (pig) || + (Datetime::standaloneDateEnabled && parse_date (pig)) || + parse_time_utc_ext (pig) || + parse_time_utc (pig) || + parse_time_off_ext (pig) || + parse_time_off (pig) || + parse_time_ext (pig) || + (Datetime::standaloneTimeEnabled && parse_time (pig)) // Time last, as it is the most permissive. + ) + ) + ) + { + // Check the values and determine time_t. + if (validate ()) + { + start = pig.cursor (); + resolve (); + return true; + } + } + + pig.restoreTo (checkpoint); + + if (parse_named (pig)) + { + // ::validate and ::resolve are not needed in this case. + start = pig.cursor (); + return true; + } + + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +void Datetime::clear () +{ + _year = 0; + _month = 0; + _week = 0; + _weekday = 0; + _julian = 0; + _day = 0; + _seconds = 0; + _offset = 0; + _utc = false; + _date = 0; +} + +//////////////////////////////////////////////////////////////////////////////// +bool Datetime::parse_formatted (Pig& pig, const std::string& format) +{ + // Short-circuit on missing format. + if (format == "") + return false; + + auto checkpoint = pig.cursor (); + + int month {-1}; // So we can check later. + int day {-1}; + int year {-1}; + int hour {-1}; + int minute {-1}; + int second {-1}; + + // For parsing, unused. + int wday {-1}; + int week {-1}; + + for (unsigned int f = 0; f < format.length (); ++f) + { + switch (format[f]) + { + case 'm': + if (pig.getDigit (month)) + { + if (month == 0) + pig.getDigit (month); + + if (month == 1) + if (pig.getDigit (month)) + month += 10; + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'M': + if (! pig.getDigit2 (month)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'd': + if (pig.getDigit (day)) + { + if (day == 0) + pig.getDigit (day); + + if (day == 1 || day == 2 || day == 3) + { + int tens = day; + if (pig.getDigit (day)) + day += 10 * tens; + } + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'D': + if (! pig.getDigit2 (day)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'y': + if (! pig.getDigit2 (year)) + { + pig.restoreTo (checkpoint); + return false; + } + year += 2000; + break; + + case 'Y': + if (! pig.getDigit4 (year)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'h': + if (pig.getDigit (hour)) + { + if (hour == 0) + pig.getDigit (hour); + + if (hour == 1 || hour == 2) + { + int tens = hour; + if (pig.getDigit (hour)) + hour += 10 * tens; + } + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'H': + if (! pig.getDigit2 (hour)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'n': + if (pig.getDigit (minute)) + { + if (minute == 0) + pig.getDigit (minute); + + if (minute < 6) + { + int tens = minute; + if (pig.getDigit (minute)) + minute += 10 * tens; + } + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'N': + if (! pig.getDigit2 (minute)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 's': + if (pig.getDigit (second)) + { + if (second == 0) + pig.getDigit (second); + + if (second < 6) + { + int tens = second; + if (pig.getDigit (second)) + second += 10 * tens; + } + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'S': + if (! pig.getDigit2 (second)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'v': + if (pig.getDigit (week)) + { + if (week == 0) + pig.getDigit (week); + + if (week < 6) + { + int tens = week; + if (pig.getDigit (week)) + week += 10 * tens; + } + } + else + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'V': + if (! pig.getDigit2 (week)) + { + pig.restoreTo (checkpoint); + return false; + } + break; + + case 'a': + wday = Datetime::dayOfWeek (pig.str ().substr (0, 3)); + if (wday == -1) + { + pig.restoreTo (checkpoint); + return false; + } + + pig.skipN (3); + break; + + case 'A': + { + std::string dayName; + if (pig.getUntil (format[f + 1], dayName)) + { + wday = Datetime::dayOfWeek (dayName); + if (wday == -1) + { + pig.restoreTo (checkpoint); + return false; + } + } + } + break; + + case 'b': + month = Datetime::monthOfYear (pig.str ().substr (0, 3)); + if (month == -1) + { + pig.restoreTo (checkpoint); + return false; + } + + pig.skipN (3); + break; + + case 'B': + { + std::string monthName; + if (pig.getUntil (format[f + 1], monthName)) + { + month = Datetime::monthOfYear (monthName); + if (month == -1) + { + pig.restoreTo (checkpoint); + return false; + } + } + } + break; + + default: + if (! pig.skip (format[f])) + { + pig.restoreTo (checkpoint); + return false; + } + break; + } + } + + // It is possible that the format='Y-M-D', and the input is Y-M-DTH:N:SZ, and + // this should not be considered a match. + if (! pig.eos () && ! unicodeWhitespace (pig.peek ())) + { + pig.restoreTo (checkpoint); + return false; + } + + // Missing values are filled in from the current date. + if (year == -1) + { + Datetime now; + year = now.year (); + if (month == -1) + { + month = now.month (); + if (day == -1) + { + day = now.day (); + if (hour == -1) + { + hour = now.hour (); + if (minute == -1) + { + minute = now.minute (); + if (second == -1) + second = now.second (); + } + } + } + } + } + + // Any remaining undefined values are assigned defaults. + if (month == -1) month = 1; + if (day == -1) day = 1; + if (hour == -1) hour = 0; + if (minute == -1) minute = 0; + if (second == -1) second = 0; + + _year = year; + _month = month; + _day = day; + _seconds = (hour * 3600) + (minute * 60) + second; + + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +// Note how these are all single words. +// +// Examples and descriptions, assuming now == 2017-03-05T12:34:56. +// +// Example Notes +// ------------------- ------------------ +// now 2017-03-05T12:34:56 Unaffected +// yesterday 2017-03-04T00:00:00 Unaffected +// today 2017-03-05T00:00:00 Unaffected +// tomorrow 2017-03-06T00:00:00 Unaffected +// 12th 2017-03-12T00:00:00 +// monday 2017-03-06T00:00:00 +// april 2017-04-01T00:00:00 +// later 2038-01-18T00:00:00 Unaffected +// someday 2038-01-18T00:00:00 Unaffected +// sopd 2017-03-04T00:00:00 Unaffected +// sod 2017-03-05T00:00:00 Unaffected +// sond 2017-03-06T00:00:00 Unaffected +// eopd 2017-03-05T00:00:00 Unaffected +// eod 2017-03-06T00:00:00 Unaffected +// eond 2017-03-07T00:00:00 Unaffected +// sopw 2017-02-26T00:00:00 Unaffected +// sow 2017-03-05T00:00:00 Unaffected +// sonw 2017-03-12T00:00:00 Unaffected +// eopw 2017-03-05T00:00:00 Unaffected +// eow 2017-03-12T00:00:00 Unaffected +// eonw 2017-03-19T00:00:00 Unaffected +// sopww 2017-02-27T00:00:00 Unaffected +// soww 2017-03-06T00:00:00 +// sonww 2017-03-06T00:00:00 Unaffected +// eopww 2017-03-03T00:00:00 Unaffected +// eoww 2017-03-10T00:00:00 +// eonww 2017-03-17T00:00:00 Unaffected +// sopm 2017-02-01T00:00:00 Unaffected +// som 2017-03-01T00:00:00 Unaffected +// sonm 2017-04-01T00:00:00 Unaffected +// eopm 2017-03-01T00:00:00 Unaffected +// eom 2017-04-01T00:00:00 Unaffected +// eonm 2017-05-01T00:00:00 Unaffected +// sopq 2017-10-01T00:00:00 Unaffected +// soq 2017-01-01T00:00:00 Unaffected +// sonq 2017-04-01T00:00:00 Unaffected +// eopq 2017-01-01T00:00:00 Unaffected +// eoq 2017-04-01T00:00:00 Unaffected +// eonq 2017-07-01T00:00:00 Unaffected +// sopy 2016-01-01T00:00:00 Unaffected +// soy 2017-01-01T00:00:00 Unaffected +// sony 2018-01-01T00:00:00 Unaffected +// eopy 2017-01-01T00:00:00 Unaffected +// eoy 2018-01-01T00:00:00 Unaffected +// eony 2019-01-01T00:00:00 Unaffected +// easter 2017-04-16T00:00:00 +// eastermonday 2017-04-16T00:00:00 +// ascension 2017-05-25T00:00:00 +// pentecost 2017-06-04T00:00:00 +// goodfriday 2017-04-14T00:00:00 +// midsommar 2017-06-24T00:00:00 midnight, 1st Saturday after 20th June +// midsommarafton 2017-06-23T00:00:00 midnight, 1st Friday after 19th June +// juhannus 2017-06-23T00:00:00 midnight, 1st Friday after 19th June +// +bool Datetime::parse_named (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + // Experimental handling of date phrases, such as "first monday in march". + // Note that this requires that phrases are deliminted by EOS or WS. + std::string token; + std::vector tokens; + while (pig.getUntilWS (token)) + { + tokens.push_back (token); + if (! pig.skipWS ()) + break; + } + +/* + // This grpoup contains "1st monday ..." which must be processed before + // initializeOrdinal below. + if (initializeNthDayInMonth (tokens)) + { + return true; + } +*/ + + // Restoration necessary because of the tokenization. + pig.restoreTo (checkpoint); + + if (initializeNow (pig) || + initializeYesterday (pig) || + initializeToday (pig) || + initializeTomorrow (pig) || + initializeOrdinal (pig) || + initializeDayName (pig) || + initializeMonthName (pig) || + initializeLater (pig) || + initializeSopd (pig) || + initializeSod (pig) || + initializeSond (pig) || + initializeEopd (pig) || + initializeEod (pig) || + initializeEond (pig) || + initializeSopw (pig) || + initializeSow (pig) || + initializeSonw (pig) || + initializeEopw (pig) || + initializeEow (pig) || + initializeEonw (pig) || + initializeSopww (pig) || // Must appear after sopw + initializeSonww (pig) || // Must appear after sonw + initializeSoww (pig) || // Must appear after sow + initializeEopww (pig) || // Must appear after eopw + initializeEonww (pig) || // Must appear after eonw + initializeEoww (pig) || // Must appear after eow + initializeSopm (pig) || + initializeSom (pig) || + initializeSonm (pig) || + initializeEopm (pig) || + initializeEom (pig) || + initializeEonm (pig) || + initializeSopq (pig) || + initializeSoq (pig) || + initializeSonq (pig) || + initializeEopq (pig) || + initializeEoq (pig) || + initializeEonq (pig) || + initializeSopy (pig) || + initializeSoy (pig) || + initializeSony (pig) || + initializeEopy (pig) || + initializeEoy (pig) || + initializeEony (pig) || + initializeEaster (pig) || + initializeMidsommar (pig) || + initializeMidsommarafton (pig) || + initializeInformalTime (pig)) + { + return true; + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// Valid epoch values are unsigned integers after 1980-01-01T00:00:00Z. This +// restriction means that '12' will not be identified as an epoch date. +bool Datetime::parse_epoch (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + int epoch {}; + if (pig.getDigits (epoch) && + ! unicodeLatinAlpha (pig.peek ()) && + epoch >= 315532800) + { + _date = static_cast (epoch); + //std::cout << "# parse_epoch succeed " << pig.dump () << "\n"; + return true; + } + + //std::cout << "# parse_epoch fail\n"; + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// date_ext 'T' time_utc_ext 'Z' +// date_ext 'T' time_off_ext +// date_ext 'T' time_ext +bool Datetime::parse_date_time_ext (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + if (parse_date_ext (pig) && + pig.skip ('T') && + (parse_time_utc_ext (pig) || + parse_time_off_ext (pig) || + parse_time_ext (pig))) + { + return true; + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// YYYY-MM-DD +// YYYY-MM +// YYYY-DDD +// YYYY-Www-D +// YYYY-Www +bool Datetime::parse_date_ext (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + int year {}; + if (parse_year (pig, year) && + pig.skip ('-')) + { + auto checkpointYear = pig.cursor (); + + int month {}; + int day {}; + int julian {}; + + if (pig.skip ('W') && + parse_week (pig, _week)) + { + if (pig.skip ('-') && + pig.getDigit (_weekday)) + { + // What is happening here - must be something to do? + } + + if (! unicodeLatinDigit (pig.peek ())) + { + _year = year; + return true; + } + } + + pig.restoreTo (checkpointYear); + + if (parse_month (pig, month) && + pig.skip ('-') && + parse_day (pig, day) && + ! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _month = month; + _day = day; + return true; + } + + pig.restoreTo (checkpointYear); + + if (parse_julian (pig, julian) && + ! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _julian = julian; + return true; + } + + pig.restoreTo (checkpointYear); + + if (parse_month (pig, month) && + pig.peek () != '-' && + ! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _month = month; + _day = 1; + return true; + } + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// ±hh[:mm] +bool Datetime::parse_off_ext (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + int sign = pig.peek (); + if (sign == '+' || sign == '-') + { + pig.skipN (1); + + int hour {0}; + int minute {0}; + + if (parse_off_hour (pig, hour)) + { + if (pig.skip (':')) + { + if (! parse_off_minute (pig, minute)) + { + pig.restoreTo (checkpoint); + return false; + } + } + + _offset = (hour * 3600) + (minute * 60); + if (sign == '-') + _offset = - _offset; + + if (! unicodeLatinDigit (pig.peek ())) + return true; + } + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// hh:mm[:ss] +bool Datetime::parse_time_ext (Pig& pig, bool terminated) +{ + auto checkpoint = pig.cursor (); + + int hour {}; + int minute {}; + if (parse_hour (pig, hour) && + pig.skip (':') && + parse_minute (pig, minute)) + { + if (pig.skip (':')) + { + int second {}; + if (parse_second (pig, second) && + ! unicodeLatinDigit (pig.peek ()) && + (! terminated || (pig.peek () != '-' && pig.peek () != '+'))) + { + _seconds = (hour * 3600) + (minute * 60) + second; + return true; + } + + pig.restoreTo (checkpoint); + return false; + } + + auto following = pig.peek (); + if (! unicodeLatinDigit (following) && + (! terminated || (following != '+' && following != '-')) && + following != 'A' && + following != 'a' && + following != 'P' && + following != 'p') + { + _seconds = (hour * 3600) + (minute * 60); + return true; + } + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// time-ext 'Z' +bool Datetime::parse_time_utc_ext (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + if (parse_time_ext (pig, false) && + pig.skip ('Z')) + { + if (! unicodeLatinDigit (pig.peek ())) + { + _utc = true; + return true; + } + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// time-ext off-ext +bool Datetime::parse_time_off_ext (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + if (parse_time_ext (pig, false) && + parse_off_ext (pig)) + { + return true; + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// YYYYMMDDTHHMMSSZ +// YYYYMMDDTHHMMSS +bool Datetime::parse_date_time (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + if (parse_date (pig) && + pig.skip ('T') && + (parse_time_utc (pig) || + parse_time_off (pig) || + parse_time (pig))) + { + return true; + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +// YYYYWww +// YYYYDDD +// YYYYMMDD +// YYYYMM +bool Datetime::parse_date (Pig& pig) +{ + auto checkpoint = pig.cursor (); + + int year {}; + int month {}; + int julian {}; + int week {}; + int weekday {}; + int day {}; + if (parse_year (pig, year)) + { + auto checkpointYear = pig.cursor (); + + if (pig.skip ('W') && + parse_week (pig, week)) + { + if (pig.getDigit (weekday)) + _weekday = weekday; + + if (! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _week = week; + return true; + } + } + + pig.restoreTo (checkpointYear); + + if (parse_julian (pig, julian) && + ! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _julian = julian; + return true; + } + + pig.restoreTo (checkpointYear); + + if (parse_month (pig, month)) + { + if (parse_day (pig, day)) + { + if (! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _month = month; + _day = day; + return true; + } + } + else + { + if (! unicodeLatinDigit (pig.peek ())) + { + _year = year; + _month = month; + _day = 1; + return true; + } + } + } + } + + pig.restoreTo (checkpoint); + return false; +} + +//////////////////////////////////////////////////////////////////////////////// +//