From 250fb36146de526d9bda079edbadb46f586c706c Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 12 Oct 2022 16:56:15 +0200 Subject: [PATCH 01/40] =?UTF-8?q?=E2=9C=A8!=20Use=20new=20XDG=20Base=20spe?= =?UTF-8?q?cification=20for=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switched the history from using the XDG_CACHE_HOME directory by default to use XDG_STATE_HOME by default. This makes sense since cache can (and should be prepared to) be wiped at any moment and the program functionality should not be hindered by this. Since we need to retain history through such wipes the newly introduced state directory is the perfect match for keeping the history file in. This does constitute a small breaking change for existing histories which need to be moved to the new directory if they made use of the old cache directory. Fixes #5. --- CHANGELOG.md | 5 +++++ bemoji | 8 ++++---- test/bemoji_directories.bats | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a65db0..fa7651c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Multiple command options can be combined +- History uses `XDG_STATE_HOME` directory by default: + This constitutes a slight break in behavior if you relied a lot on your pick history in the + default location. To retain your old history file, simply move it from the old cache directory + (`~/.cache/bemoji-history.txt` by default) to the new one (`~/.local/state/bemoji-history.txt` + by default). diff --git a/bemoji b/bemoji index 41dc8bc..2f01647 100755 --- a/bemoji +++ b/bemoji @@ -7,8 +7,8 @@ bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoj # BEMOJI_CUSTOM_LIST=/my/location/emojis.txt # Setting custom recent emoji cache: # BEMOJI_CACHE_LOCATION=/path/to/my/recents/directory -bm_cache_dir="${BEMOJI_CACHE_LOCATION:-${XDG_CACHE_HOME:-$HOME/.cache}}" -bm_history_file="${bm_cache_dir}/bemoji-history.txt" +bm_state_dir="${BEMOJI_CACHE_LOCATION:-${XDG_STATE_HOME:-$HOME/.local/state}}" +bm_history_file="${bm_state_dir}/bemoji-history.txt" # Command to run after user chooses an emoji bm_default_cmd="$BEMOJI_DEFAULT_CMD" @@ -135,8 +135,8 @@ get_most_recent() { add_to_recent() { if [ -z "$1" ]; then return; fi - if [ ! -d "$bm_cache_dir" ]; then - mkdir -p "$bm_cache_dir" + if [ ! -d "$bm_state_dir" ]; then + mkdir -p "$bm_state_dir" fi echo "$1" >>"$bm_history_file" } diff --git a/test/bemoji_directories.bats b/test/bemoji_directories.bats index 28068e1..5438536 100644 --- a/test/bemoji_directories.bats +++ b/test/bemoji_directories.bats @@ -39,7 +39,7 @@ database=$BATS_TEST_TMPDIR/xdb-db/bemoji @test "sets XDG directory for history by default" { unset BEMOJI_CACHE_LOCATION - export XDG_CACHE_HOME="$BATS_TEST_TMPDIR/xdb-cache" + export XDG_STATE_HOME="$BATS_TEST_TMPDIR/xdb-cache" run bemoji -v assert_output --regexp " history=$BATS_TEST_TMPDIR/xdb-cache/bemoji-history.txt$" @@ -57,7 +57,7 @@ database=$HOME/.local/share/bemoji unset BEMOJI_CACHE_LOCATION run bemoji -v assert_output --regexp " -history=$HOME/.cache/bemoji-history.txt$" +history=$HOME/.local/state/bemoji-history.txt$" } @test "BEMOJI_DB_LOCATION sets correct db directory" { From 525a379564129851af983b0e5eb316ec280cfcd5 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 12 Oct 2022 17:04:37 +0200 Subject: [PATCH 02/40] =?UTF-8?q?=F0=9F=93=96=20Update=20README=20for=20ne?= =?UTF-8?q?w=20state=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 185fb0a..d45e840 100644 --- a/README.md +++ b/README.md @@ -144,14 +144,14 @@ If you don't wish those to show up, make use of these options. ### Setting custom directories -By default bemoji stores your recent history in `$XDG_CACHE_HOME/bemoji-history.txt`, -so most often in `~/.cache/bemoji-history.txt` +By default bemoji stores your recent history in `$XDG_STATE_HOME/bemoji-history.txt`, +so most often in `~/.local/state/bemoji-history.txt` You can overwrite the directories bemoji uses for its emoji lists and history files with the following two environment variables: ``` BEMOJI_DB_LOCATION=/path/to/my/emoji/directory -BEMOJI_CACHE_LOCATION=/path/to/my/cache/directory +BEMOJI_CACHE_LOCATION=/path/to/my/state/directory ``` There are no equivalent commandline arguments to overwrite these two settings. @@ -241,7 +241,7 @@ with their default settings ```bash BEMOJI_DB_LOCATION=$XDG_DATA_HOME/bemoji # where the emoji lists reside -BEMOJI_CACHE_LOCATION=$XDG_CACHE_HOME # where the cache file resides +BEMOJI_CACHE_LOCATION=$XDG_STATE_HOME # where the state file resides BEMOJI_CUSTOM_LIST="" # the custom emoji list to display BEMOJI_DOWNLOAD_LIST="" # the default emoji lists to download to database BEMOJI_DEFAULT_COMMAND= # which command to invoke by default From 31dea58782cdc55d493a1d7b61d9efdcf07b7788 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 3 Nov 2022 15:23:39 +0100 Subject: [PATCH 03/40] ! Rename XDG_CACHE_LOCATION to XDG_HISTORY_LOCATION Gives closer adherence to actual content for the environment variable. --- CHANGELOG.md | 7 ++++--- README.md | 4 ++-- bemoji | 8 ++++---- test/bemoji_cmds.bats | 4 ++-- test/bemoji_directories.bats | 12 ++++++------ 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa7651c..c12113d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,11 +14,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Multiple command options can be combined -- History uses `XDG_STATE_HOME` directory by default: - This constitutes a slight break in behavior if you relied a lot on your pick history in the - default location. To retain your old history file, simply move it from the old cache directory +- (!) History uses `XDG_STATE_HOME` directory by default: + This constitutes a break in behavior if you relied a lot on your pick history in the default + location. To retain your old history file, simply move it from the old cache directory (`~/.cache/bemoji-history.txt` by default) to the new one (`~/.local/state/bemoji-history.txt` by default). +- (!) `XDG_CACHE_LOCATION` renamed to `XDG_HISTORY_LOCATION` to better signify its purpose diff --git a/README.md b/README.md index d45e840..bf6cef8 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ You can overwrite the directories bemoji uses for its emoji lists and history fi ``` BEMOJI_DB_LOCATION=/path/to/my/emoji/directory -BEMOJI_CACHE_LOCATION=/path/to/my/state/directory +BEMOJI_HISTORY_LOCATION=/path/to/my/state/directory ``` There are no equivalent commandline arguments to overwrite these two settings. @@ -241,7 +241,7 @@ with their default settings ```bash BEMOJI_DB_LOCATION=$XDG_DATA_HOME/bemoji # where the emoji lists reside -BEMOJI_CACHE_LOCATION=$XDG_STATE_HOME # where the state file resides +BEMOJI_HISTORY_LOCATION=$XDG_STATE_HOME # where the state file resides BEMOJI_CUSTOM_LIST="" # the custom emoji list to display BEMOJI_DOWNLOAD_LIST="" # the default emoji lists to download to database BEMOJI_DEFAULT_COMMAND= # which command to invoke by default diff --git a/bemoji b/bemoji index 2f01647..a17597a 100755 --- a/bemoji +++ b/bemoji @@ -5,9 +5,9 @@ bm_version=0.2.0 bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} # Setting custom emoji list file location: # BEMOJI_CUSTOM_LIST=/my/location/emojis.txt -# Setting custom recent emoji cache: -# BEMOJI_CACHE_LOCATION=/path/to/my/recents/directory -bm_state_dir="${BEMOJI_CACHE_LOCATION:-${XDG_STATE_HOME:-$HOME/.local/state}}" +# Setting custom recent emoji history: +# BEMOJI_HISTORY_LOCATION=/path/to/my/recents/directory +bm_state_dir="${BEMOJI_HISTORY_LOCATION:-${XDG_STATE_HOME:-$HOME/.local/state}}" bm_history_file="${bm_state_dir}/bemoji-history.txt" # Command to run after user chooses an emoji @@ -57,7 +57,7 @@ while getopts ":f:D:tcenpPhv" o; do t) bm_cmds+=(_typer) ;; c) bm_cmds+=(_clipper) ;; e) bm_cmds+=(cat) ;; - n) bm_echo_newline=false;; + n) bm_echo_newline=false ;; D) BEMOJI_DOWNLOAD_LIST="${OPTARG}" ;; p) bm_private_mode=true ;; P) bm_ignore_recent=true ;; diff --git a/test/bemoji_cmds.bats b/test/bemoji_cmds.bats index 2b0a937..2d0f324 100644 --- a/test/bemoji_cmds.bats +++ b/test/bemoji_cmds.bats @@ -15,8 +15,8 @@ setup() { # set up small default set of test emoji for each test export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" - export BEMOJI_CACHE_LOCATION="$BATS_TEST_TMPDIR/cache" - mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_CACHE_LOCATION" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" } diff --git a/test/bemoji_directories.bats b/test/bemoji_directories.bats index 5438536..ede78a0 100644 --- a/test/bemoji_directories.bats +++ b/test/bemoji_directories.bats @@ -15,8 +15,8 @@ setup() { # set up small default set of test emoji for each test export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" - export BEMOJI_CACHE_LOCATION="$BATS_TEST_TMPDIR/cache" - mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_CACHE_LOCATION" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" } @@ -38,7 +38,7 @@ database=$BATS_TEST_TMPDIR/xdb-db/bemoji } @test "sets XDG directory for history by default" { - unset BEMOJI_CACHE_LOCATION + unset BEMOJI_HISTORY_LOCATION export XDG_STATE_HOME="$BATS_TEST_TMPDIR/xdb-cache" run bemoji -v assert_output --regexp " @@ -54,7 +54,7 @@ database=$HOME/.local/share/bemoji } @test "falls back to default history location if no XDG found" { - unset BEMOJI_CACHE_LOCATION + unset BEMOJI_HISTORY_LOCATION run bemoji -v assert_output --regexp " history=$HOME/.local/state/bemoji-history.txt$" @@ -67,8 +67,8 @@ database=$BATS_TEST_TMPDIR/database " } -@test "BEMOJI_CACHE_LOCATION sets correct cache directory" { +@test "BEMOJI_HISTORY_LOCATION sets correct history directory" { run bemoji -v assert_output --regexp " -history=$BATS_TEST_TMPDIR/cache/bemoji-history.txt$" +history=$BATS_TEST_TMPDIR/history/bemoji-history.txt$" } From dc6888709117ef5598c7e43999576c1d827a67f8 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 10 Nov 2022 14:58:16 +0100 Subject: [PATCH 04/40] =?UTF-8?q?=E2=9C=A8=20Add=20automated=20tagged=20re?= =?UTF-8?q?leases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using woodpecker ci most of the release process is now automated. That means as soon as a new version tag (e.g. `v0.2.3`) is pushed the release process is started and will (if versions have been bumped correctly) set up a new release on Gitea and Github simultaneously. The release process will fail if changelog and program versions mismatch, or the version has not been bumped in general. The release contains the executable and some documentation, including the README as a manpage-formatted gzip file which can be included in the correct directory to enable a simple manpage for the program. --- .woodpecker.yml | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/.woodpecker.yml b/.woodpecker.yml index 0adf009..60e18dc 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -3,3 +3,76 @@ pipeline: image: bats/bats commands: - /opt/bats/bin/bats test + + release-prep: # prepare changelog and version information for release candidate + when: + event: tag + tag: v* + image: alpine + commands: + - sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt + - awk '/^## \[\d/{p++} p==2{print; exit} p>=1' CHANGELOG.md | head -n -1 | tail -n+3 > NEWEST_CHANGES.txt + + versioncompare: # ensure we correctly bumped versions + when: + event: tag + tag: v* + image: alpine + secrets: [ github_release_token, github_repo ] + commands: + - apk add jq curl + - "lastversion=$(curl -X GET -H \"Accept: application/vnd.github.v3+json\" -H \"Authorization: Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases/latest | jq -r '.name')" + - "programversion=$(cat NEWEST_VERSION.txt)" + - changelogversion=$(sed -ne 's/^## \[\([0-9].*\)\].*$/\1/p' CHANGELOG.md | head -n1) + - echo "Last version - $lastversion" + - echo "New version - $programversion" + - echo "Changelog version - $changelogversion" + - "if [ \"$changelogversion\" != \"$programversion\" ]; then { echo \"VERSION MISMATCH: Changelog - $changelogversion, Program - $programversion\" && exit 1; }; fi" + - "if [ \"$lastversion\" = \"$programversion\" ]; then { echo \"RELEASE DUPLICATE: Last release already had version - $programversion\" && exit 1; }; fi" + + build: + when: + event: tag + tag: v* + image: savant/md2man + commands: + - apk update && apk add zip + - BM_VERSION=$(cat NEWEST_VERSION.txt) + - mkdir -p build/doc dist + - cp bemoji build + - md2man -in README.md -out bemoji.1 && gzip bemoji.1 + - cp LICENSE README.md bemoji.1.gz build/doc + - tar -czvf bemoji-$BM_VERSION.tar.gz build/* + - zip -r bemoji-$BM_VERSION.zip build/* + - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip dist + + release-gitea: + group: release + when: + event: tag + tag: v* + image: plugins/gitea-release + settings: + api_key: + from_secret: gitea_release_token + base_url: https://git.martyoeh.me + files: dist/* + title: NEWEST_VERSION.txt + note: NEWEST_CHANGES.txt + + release-github: + when: + event: tag + tag: v* + image: alpine + secrets: [ github_release_token, github_repo ] + commands: + - apk add file jq curl + - BM_VERSION=$(cat NEWEST_VERSION.txt) + - BM_CHANGED=$(sed -e 's|#||g' -e 's|^.*$|\0
|' NEWEST_CHANGES.txt) # display newlines workaround + - echo "{\"tag_name\":\"$BM_VERSION\",\"target_commitish\":\"main\",\"name\":\"$BM_VERSION\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json + - "response=$(curl -X POST -H \"Accept:\\ application/vnd.github+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases -d \"@data.json\")" + - "uploadurl=$(echo $response | jq -r '.upload_url' | cut -d'{' -f1)" + - "[ $uploadurl = null ] && { echo $response; exit 1; }" + - "curl -X POST -H \"Accept:\\ application/vnd.github.v3+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" -H \"Content-Type:\\ $(file -b --mime-type dist/bemoji-$BM_VERSION.zip)\" -H \"Content-Length:\\ $(wc -c Date: Fri, 4 Nov 2022 17:22:47 +0100 Subject: [PATCH 05/40] =?UTF-8?q?=F0=9F=A6=8A=20Change=20download=20option?= =?UTF-8?q?=20to=20work=20multiple=20times=20(#16)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed `-D` option to always download the lists supplied, regardless of the database directory being empty or not. This means you can download additional lists after the first program run, or re-download lists later on. It *will* overwrite your custom changes however if your files are called the same as the default list names. Additionally removed dependency on GNU version of cut and added some simple tests for the download functionality. Fixes #16. --- .gitmodules | 3 +++ CHANGELOG.md | 1 + README.md | 14 ++++++++++---- bemoji | 37 ++++++++++++++++++++---------------- test/bemoji_download.bats | 40 +++++++++++++++++++++++++++++++++++++++ test/test_helper/mocks | 1 + 6 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 test/bemoji_download.bats create mode 160000 test/test_helper/mocks diff --git a/.gitmodules b/.gitmodules index b7efcb4..b19b1b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "test/test_helper/bats-assert"] path = test/test_helper/bats-assert url = https://github.com/bats-core/bats-assert.git +[submodule "test/test_helper/mocks"] + path = test/test_helper/mocks + url = https://github.com/jasonkarns/bats-mock.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a65db0..86c6511 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Multiple command options can be combined +- Allow downloading emoji sets at any time after initial run with `-D ` diff --git a/README.md b/README.md index 185fb0a..ba08616 100644 --- a/README.md +++ b/README.md @@ -174,11 +174,11 @@ The path can also be a weblink which bemoji will download and use: bemoji -f "https://raw.githubusercontent.com/jchook/emoji-menu/master/data/emojis.txt" ``` -### Change the default emoji set +### Download additional emoji set -bemoji downloads emoji for you to use on first invocation. +bemoji automatically downloads an emoji list for you to use on first invocation. By default, it only downloads emoji, though you can have it download math symbols as well. -To change this setting, execute bemoji like the following: +To download additional sets, execute bemoji like the following: ```bash bemoji -D all @@ -187,8 +187,14 @@ bemoji -D all This will download *all* default sets bemoji knows - which is currently the default emoji list and a long list of math symbols. Other valid options for this setting are `emoji`, `math`, `none`. +```bash +bemoji -D "math emoji" +``` + +The above command is equivalent as you can mention multiple sets you want downloaded. + If set to `none` and no files are in the emoji directory, -bemoji will simply complain and not show anything. +bemoji will complain and not show anything. ### Do not skip to new line after output diff --git a/bemoji b/bemoji index 41dc8bc..66c8508 100755 --- a/bemoji +++ b/bemoji @@ -36,8 +36,8 @@ usage() { echo " -n Do not print a newline after the picked emoji." echo " -p Do not save picked emoji to recent history." echo " -P Do not order emoji by recently used." - echo " -D Choose specific default lists to download if none found locally." - echo " Valid choices: all|none|emoji|math." + echo " -D Choose from default lists to download." + echo " Valid choices: all|none|emoji|math (multiple choices possible)." echo " -f Use a custom emoji database. Can be a url which will be retrieved." echo " -v Display current program version and directory configuration." echo " -h Show this help." @@ -73,34 +73,39 @@ prepare_db() { mkdir -p "$bm_db_location" fi - if [ -n "$(find "$bm_db_location" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then + if [ -n "$BEMOJI_DOWNLOAD_LIST" ]; then # Populate default lists if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'none'; then - printf "No emoji list found, but set to not download any default lists." - exit 1 + printf "Not downloading a default emoji list.\n" + return elif echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'all'; then dl_default_emoji dl_math_symbols return + else + if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'emoji'; then + dl_default_emoji + fi + if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'math'; then + dl_math_symbols + fi fi - if [ -z "$BEMOJI_DOWNLOAD_LIST" ] || echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'emoji'; then - dl_default_emoji - fi - if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'math'; then - dl_math_symbols - fi + fi + if [ -n "$(find "$bm_db_location" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then + dl_default_emoji fi } dl_default_emoji() { - curl -sSL "https://unicode.org/Public/emoji/14.0/emoji-test.txt" | - sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" - printf "Downloaded default emoji set." + local emojis + emojis=$(curl -sSL "https://unicode.org/Public/emoji/14.0/emoji-test.txt") + printf "%s" "$emojis" | sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" + printf "Downloaded default emoji set.\n" } dl_math_symbols() { curl -sSL "https://unicode.org/Public/math/latest/MathClassEx-15.txt" | - grep -ve '^#' | cut -d';' -f3,7 --output-delimiter=' ' >"$bm_db_location/math.txt" - printf "Downloaded math symbols set." + grep -ve '^#' | cut -d';' -f3,7 | sed -e 's/;/ /' >"$bm_db_location/math.txt" + printf "Downloaded math symbols set.\n" } gather_emojis() { diff --git a/test/bemoji_download.bats b/test/bemoji_download.bats new file mode 100644 index 0000000..6fda12b --- /dev/null +++ b/test/bemoji_download.bats @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +setup_file() { + # make bemoji executable from anywhere relative to current testfile + TEST_DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + PATH="$TEST_DIR/..:$PATH" +} + +setup() { + load 'test_helper/bats-support/load' + load 'test_helper/bats-assert/load' + load 'test_helper/mocks/stub' + + # mock out interactive picker for static emoji return + export BEMOJI_PICKER_CMD="echo heart" + + # set up small default set of test emoji for each test + export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" +} + +@test "Runs emoji download on -D emoji option" { + stub curl \ + "echo -e '1F605 ; fully-qualified # emoji E0.6 grinning face with sweat\nnot picked up\n1F605 ; fully-qualified # emoji2 E0.6 picked up'" + run bemoji -D emojis 3>&- + outcome=$(cat "$BEMOJI_DB_LOCATION/emojis.txt") + assert_equal "$outcome" "emoji grinning face with sweat +emoji2 picked up" + unstub curl +} + +@test "Runs maths download on -D maths option" { + stub curl \ + "echo '03A3;A;Σ;Sigma;ISOGRK3;;GREEK CAPITAL LETTER SIGMA'" + run bemoji -D math 3>&- + outcome=$(cat "$BEMOJI_DB_LOCATION/math.txt") + assert_equal "$outcome" "Σ GREEK CAPITAL LETTER SIGMA" + unstub curl +} diff --git a/test/test_helper/mocks b/test/test_helper/mocks new file mode 160000 index 0000000..7e0fbf6 --- /dev/null +++ b/test/test_helper/mocks @@ -0,0 +1 @@ +Subproject commit 7e0fbf6bc705bd1b09daa2d5ff88962ddbe832f6 From 4209b906699191df611a3420e410f3711c5a0540 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 10 Nov 2022 16:12:15 +0100 Subject: [PATCH 06/40] =?UTF-8?q?=F0=9F=93=96=20Bump=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 20 ++++++++++++++------ bemoji | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c6511..0925518 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + + + + + + + + + + + + +## [0.3.0] - 2022-11-10 + ### Added - Add new option `-n` which suppresses printing the final newline character in output @@ -16,17 +30,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Multiple command options can be combined - Allow downloading emoji sets at any time after initial run with `-D ` - - - - ### Fixed - Custom default command is only executed when no command option given - Results are matched case insensitively when using rofi picker to match other pickers - - ## [0.2.0] - 2022-06-29 ### Added diff --git a/bemoji b/bemoji index 66c8508..723b911 100755 --- a/bemoji +++ b/bemoji @@ -1,6 +1,6 @@ #!/usr/bin/env bash -bm_version=0.2.0 +bm_version=0.3.0 # Emoji default database location bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} # Setting custom emoji list file location: @@ -57,7 +57,7 @@ while getopts ":f:D:tcenpPhv" o; do t) bm_cmds+=(_typer) ;; c) bm_cmds+=(_clipper) ;; e) bm_cmds+=(cat) ;; - n) bm_echo_newline=false;; + n) bm_echo_newline=false ;; D) BEMOJI_DOWNLOAD_LIST="${OPTARG}" ;; p) bm_private_mode=true ;; P) bm_ignore_recent=true ;; From 59d436a944249cb693b17746c219206b7ebe9f89 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 3 Nov 2022 15:35:06 +0100 Subject: [PATCH 07/40] =?UTF-8?q?=F0=9F=A6=8A=20BREAKING:=20Use=20new=20XD?= =?UTF-8?q?G=20Base=20specification=20for=20state=20(#5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switched the history from using the XDG_CACHE_HOME directory by default to use XDG_STATE_HOME by default. This makes sense since cache can (and should be prepared to) be wiped at any moment and the program functionality should not be hindered by this. Since we need to retain history through such wipes the newly introduced state directory is the perfect match for keeping the history file in. This does constitute a breaking change for existing histories which need to be moved to the new directory if they made use of the old cache directory. Concurrent with this we are renaming `XDG_CACHE_LOCATION` environment variable to `XDG_HISTORY_LOCATION` so this is a second breaking change for those using a custom location for their histories. This change attempts to make the naming scheme coherent and remove some left-over naming cruft from the old location being the cache directory. This provides one of the larger changes to the program so far. Fixes #5. --- CHANGELOG.md | 9 ++++++++- README.md | 8 ++++---- bemoji | 12 ++++++------ test/bemoji_cmds.bats | 4 ++-- test/bemoji_directories.bats | 16 ++++++++-------- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0925518..7a86d5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - +### Changed + +- (!) History uses `XDG_STATE_HOME` directory by default: + This constitutes a break in behavior if you relied a lot on your pick history in the default + location. To retain your old history file, simply move it from the old cache directory + (`~/.cache/bemoji-history.txt` by default) to the new one (`~/.local/state/bemoji-history.txt` + by default). +- (!) `XDG_CACHE_LOCATION` renamed to `XDG_HISTORY_LOCATION` to better signify its purpose diff --git a/README.md b/README.md index ba08616..f87eb72 100644 --- a/README.md +++ b/README.md @@ -144,14 +144,14 @@ If you don't wish those to show up, make use of these options. ### Setting custom directories -By default bemoji stores your recent history in `$XDG_CACHE_HOME/bemoji-history.txt`, -so most often in `~/.cache/bemoji-history.txt` +By default bemoji stores your recent history in `$XDG_STATE_HOME/bemoji-history.txt`, +so most often in `~/.local/state/bemoji-history.txt` You can overwrite the directories bemoji uses for its emoji lists and history files with the following two environment variables: ``` BEMOJI_DB_LOCATION=/path/to/my/emoji/directory -BEMOJI_CACHE_LOCATION=/path/to/my/cache/directory +BEMOJI_HISTORY_LOCATION=/path/to/my/state/directory ``` There are no equivalent commandline arguments to overwrite these two settings. @@ -247,7 +247,7 @@ with their default settings ```bash BEMOJI_DB_LOCATION=$XDG_DATA_HOME/bemoji # where the emoji lists reside -BEMOJI_CACHE_LOCATION=$XDG_CACHE_HOME # where the cache file resides +BEMOJI_HISTORY_LOCATION=$XDG_STATE_HOME # where the state file resides BEMOJI_CUSTOM_LIST="" # the custom emoji list to display BEMOJI_DOWNLOAD_LIST="" # the default emoji lists to download to database BEMOJI_DEFAULT_COMMAND= # which command to invoke by default diff --git a/bemoji b/bemoji index 723b911..d3df589 100755 --- a/bemoji +++ b/bemoji @@ -5,10 +5,10 @@ bm_version=0.3.0 bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} # Setting custom emoji list file location: # BEMOJI_CUSTOM_LIST=/my/location/emojis.txt -# Setting custom recent emoji cache: -# BEMOJI_CACHE_LOCATION=/path/to/my/recents/directory -bm_cache_dir="${BEMOJI_CACHE_LOCATION:-${XDG_CACHE_HOME:-$HOME/.cache}}" -bm_history_file="${bm_cache_dir}/bemoji-history.txt" +# Setting custom recent emoji history: +# BEMOJI_HISTORY_LOCATION=/path/to/my/recents/directory +bm_state_dir="${BEMOJI_HISTORY_LOCATION:-${XDG_STATE_HOME:-$HOME/.local/state}}" +bm_history_file="${bm_state_dir}/bemoji-history.txt" # Command to run after user chooses an emoji bm_default_cmd="$BEMOJI_DEFAULT_CMD" @@ -140,8 +140,8 @@ get_most_recent() { add_to_recent() { if [ -z "$1" ]; then return; fi - if [ ! -d "$bm_cache_dir" ]; then - mkdir -p "$bm_cache_dir" + if [ ! -d "$bm_state_dir" ]; then + mkdir -p "$bm_state_dir" fi echo "$1" >>"$bm_history_file" } diff --git a/test/bemoji_cmds.bats b/test/bemoji_cmds.bats index 2b0a937..2d0f324 100644 --- a/test/bemoji_cmds.bats +++ b/test/bemoji_cmds.bats @@ -15,8 +15,8 @@ setup() { # set up small default set of test emoji for each test export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" - export BEMOJI_CACHE_LOCATION="$BATS_TEST_TMPDIR/cache" - mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_CACHE_LOCATION" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" } diff --git a/test/bemoji_directories.bats b/test/bemoji_directories.bats index 28068e1..ede78a0 100644 --- a/test/bemoji_directories.bats +++ b/test/bemoji_directories.bats @@ -15,8 +15,8 @@ setup() { # set up small default set of test emoji for each test export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" - export BEMOJI_CACHE_LOCATION="$BATS_TEST_TMPDIR/cache" - mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_CACHE_LOCATION" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" } @@ -38,8 +38,8 @@ database=$BATS_TEST_TMPDIR/xdb-db/bemoji } @test "sets XDG directory for history by default" { - unset BEMOJI_CACHE_LOCATION - export XDG_CACHE_HOME="$BATS_TEST_TMPDIR/xdb-cache" + unset BEMOJI_HISTORY_LOCATION + export XDG_STATE_HOME="$BATS_TEST_TMPDIR/xdb-cache" run bemoji -v assert_output --regexp " history=$BATS_TEST_TMPDIR/xdb-cache/bemoji-history.txt$" @@ -54,10 +54,10 @@ database=$HOME/.local/share/bemoji } @test "falls back to default history location if no XDG found" { - unset BEMOJI_CACHE_LOCATION + unset BEMOJI_HISTORY_LOCATION run bemoji -v assert_output --regexp " -history=$HOME/.cache/bemoji-history.txt$" +history=$HOME/.local/state/bemoji-history.txt$" } @test "BEMOJI_DB_LOCATION sets correct db directory" { @@ -67,8 +67,8 @@ database=$BATS_TEST_TMPDIR/database " } -@test "BEMOJI_CACHE_LOCATION sets correct cache directory" { +@test "BEMOJI_HISTORY_LOCATION sets correct history directory" { run bemoji -v assert_output --regexp " -history=$BATS_TEST_TMPDIR/cache/bemoji-history.txt$" +history=$BATS_TEST_TMPDIR/history/bemoji-history.txt$" } From 32fc9f45ddafd06d0be47086c27aae6a351e5363 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 11 Apr 2023 21:59:24 +0200 Subject: [PATCH 08/40] =?UTF-8?q?=F0=9F=A6=8A=20Update=20emoji=20url=20to?= =?UTF-8?q?=20latest=20version=20(#18)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Point url to grab emoji from to latest version of emoji list, which should automatically point to upcoming versions as well. Fixes #18. --- CHANGELOG.md | 4 +++- bemoji | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a86d5a..022b526 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - +### Fixed + +- Always download from newest emoji list url diff --git a/bemoji b/bemoji index d3df589..6da4e86 100755 --- a/bemoji +++ b/bemoji @@ -98,7 +98,7 @@ prepare_db() { dl_default_emoji() { local emojis - emojis=$(curl -sSL "https://unicode.org/Public/emoji/14.0/emoji-test.txt") + emojis=$(curl -sSL "https://unicode.org/Public/emoji/latest/emoji-test.txt") printf "%s" "$emojis" | sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" printf "Downloaded default emoji set.\n" } From 71d5dc455de7f7e0adb206d0fea2988daf39486e Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 11 Apr 2023 22:05:16 +0200 Subject: [PATCH 09/40] =?UTF-8?q?=F0=9F=A6=8A=20Exit=20status=201=20on=20c?= =?UTF-8?q?ancelled=20selection=20(#20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When making no selection, i.e. cancelling during the selection process the program will return status code 1, whereas before it would carry the same return code as when making an emoji selection. Fixes #20. --- CHANGELOG.md | 4 +++- bemoji | 2 +- test/bemoji_cmds.bats | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 022b526..e8b0972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - +### Added + +- Pass through return code 1 from selection tool ### Changed diff --git a/bemoji b/bemoji index 6da4e86..1a7c35a 100755 --- a/bemoji +++ b/bemoji @@ -206,7 +206,7 @@ result=$(echo "$result" | grep -o '^\S\+' | tr -d '\n') case "$exit_value" in 1) - exit + exit 1 ;; 0) if [ ${#bm_cmds[@]} -eq 0 ]; then diff --git a/test/bemoji_cmds.bats b/test/bemoji_cmds.bats index 2d0f324..2b0a176 100644 --- a/test/bemoji_cmds.bats +++ b/test/bemoji_cmds.bats @@ -64,6 +64,11 @@ typing result" assert_output "my clipping" } +@test "Returns status code 1 on picker status code 1" { + BEMOJI_PICKER_CMD="return 1" run bemoji -e 3>&- + assert_failure 1 +} + @test "Prints output with newline by default" { bats_require_minimum_version 1.5.0 BEMOJI_PICKER_CMD="echo heart" run --keep-empty-lines -- bemoji -e From 56ae0f1bab1efeb3dc65eeef43d47a02835efc3d Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 11 Apr 2023 22:55:23 +0200 Subject: [PATCH 10/40] =?UTF-8?q?=F0=9F=90=9B=20Pass=20through=20stdin=20t?= =?UTF-8?q?o=20custom=20typing=20tool=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, stdin contents were consumed and then not passed through to the typing tool. With this commit, they are correctly passed to any custom tool's stdin. Fixes #19. --- CHANGELOG.md | 1 + README.md | 2 ++ bemoji | 7 +++++-- test/bemoji_cmds.bats | 5 +++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8b0972..2786a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Always download from newest emoji list url +- Pass selection to custom typing tools through stdin diff --git a/README.md b/README.md index f87eb72..4986da3 100644 --- a/README.md +++ b/README.md @@ -222,6 +222,8 @@ BEMOJI_CLIP_CMD="path/to/your/clipboard/tool" BEMOJI_TYPE_CMD="path/to/your/xdotool" ``` +The candidate list (in the case of picker tool) or the picked selection are passed to the tools through stdin. + This is pretty experimental and you'll have to see how well it works for you. The setting can not be changed through the commandline alone. diff --git a/bemoji b/bemoji index 1a7c35a..10ce980 100755 --- a/bemoji +++ b/bemoji @@ -165,11 +165,14 @@ _clipper() { # Set default typing uti _typer() { - totype=$(cat -) if [ -n "$BEMOJI_TYPE_CMD" ]; then # shellcheck disable=SC2068 ${BEMOJI_TYPE_CMD[@]} - elif [ -n "$WAYLAND_DISPLAY" ] && command -v wtype >/dev/null 2>&1; then + return + fi + + totype=$(cat -) + if [ -n "$WAYLAND_DISPLAY" ] && command -v wtype >/dev/null 2>&1; then wtype -s 30 "$totype" elif [ -n "$DISPLAY" ] && command -v xdotool >/dev/null 2>&1; then xdotool type --delay 30 "$totype" diff --git a/test/bemoji_cmds.bats b/test/bemoji_cmds.bats index 2b0a176..ced326c 100644 --- a/test/bemoji_cmds.bats +++ b/test/bemoji_cmds.bats @@ -54,6 +54,11 @@ setup() { typing result" } +@test "Passes selection to custom typer tool through stdin" { + BEMOJI_TYPE_CMD="cat -" run bemoji -t 3>&- + assert_output "❤️" +} + @test "Runs custom default command" { BEMOJI_DEFAULT_CMD="echo my custom command" run bemoji 3>&- assert_output "my custom command" From 941dd4aaeabcfa7681c708b8a8b79571f9acc948 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 11 Apr 2023 23:17:52 +0200 Subject: [PATCH 11/40] =?UTF-8?q?=F0=9F=93=96=20Change=20AUR=20instruction?= =?UTF-8?q?s=20to=20fit=20multiple=20packages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generalized AUR package installation instructions slightly to take note of the fact that there are multiple AUR packages available for bemoji. Thanks to @thayne for packaging up the semver release version of bemoji for the AUR! --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4986da3..78f1b02 100644 --- a/README.md +++ b/README.md @@ -43,10 +43,10 @@ ln -s bemoji/bemoji /usr/local/bin/bemoji ### Arch Linux -On Arch Linux, bemoji has been packaged for the [AUR](https://aur.archlinux.org/packages/bemoji-git) so it can be installed manually from here or easily with your preferred AUR helper, e.g.: +On Arch Linux, bemoji has been packaged for the [AUR](https://aur.archlinux.org/packages?K=bemoji) so it can be installed manually from here or easily with your preferred AUR helper, e.g.: ```bash -paru -S bemoji-git +paru -S bemoji ``` ## 💿 Usage From 07de35e92f87c0393181e55991482ca984aba619 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 11 Apr 2023 23:25:41 +0200 Subject: [PATCH 12/40] =?UTF-8?q?=F0=9F=93=96=20Fix=20riverwm=20usage=20in?= =?UTF-8?q?structions=20assuming=20variable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Usage instructions for mapping the picker in riverwm falsely assumed the super key to already be mapped to a `$mod` variable. This commit fixes it to replace mention of the variable with the key name itself. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78f1b02..9100016 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ bindsym Mod4+Shift+e exec bemoji -t For `riverwm`, put the following in `~/.config/river/init`: ``` -riverctl map normal $mod+Shift E spawn "bemoji -t" +riverctl map normal Mod4+Shift E spawn "bemoji -t" ``` In `sxhkd`, put the following into `~/.config/sxhkd/sxhkdrc`: From 6b39e5e05a78a32e1bbd82aa1d44a68215cb46c6 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 12 Apr 2023 11:22:00 +0200 Subject: [PATCH 13/40] =?UTF-8?q?=F0=9F=90=9B=20Create=20dist=20package=20?= =?UTF-8?q?contents=20at=20root=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 60e18dc..5eac51d 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -4,7 +4,8 @@ pipeline: commands: - /opt/bats/bin/bats test - release-prep: # prepare changelog and version information for release candidate + release-prep: + # prepare changelog and version information for release candidate when: event: tag tag: v* @@ -13,7 +14,8 @@ pipeline: - sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt - awk '/^## \[\d/{p++} p==2{print; exit} p>=1' CHANGELOG.md | head -n -1 | tail -n+3 > NEWEST_CHANGES.txt - versioncompare: # ensure we correctly bumped versions + versioncompare: + # ensure we correctly bumped versions when: event: tag tag: v* @@ -42,9 +44,10 @@ pipeline: - cp bemoji build - md2man -in README.md -out bemoji.1 && gzip bemoji.1 - cp LICENSE README.md bemoji.1.gz build/doc - - tar -czvf bemoji-$BM_VERSION.tar.gz build/* - - zip -r bemoji-$BM_VERSION.zip build/* - - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip dist + - cd build || exit 1 + - tar -czvf bemoji-$BM_VERSION.tar.gz * + - zip -r bemoji-$BM_VERSION.zip * + - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip ../dist release-gitea: group: release From 0aaca26b0e5b5ada1d7270ccee265466f4c28ccd Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sun, 30 Apr 2023 18:16:26 +0200 Subject: [PATCH 14/40] =?UTF-8?q?=E2=9C=A8=20BREAKING:=20Add=20ability=20t?= =?UTF-8?q?o=20limit=20recent=20emoji=20shown=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of `-P` being a flag for showing history it has become an option whose argument is the number of history entries to show, `-P 4`. To mimic the old behavior use `-P 0`. Added some test coverage for history functionality. Fixes #1. --- CHANGELOG.md | 3 +++ README.md | 32 ++++++++++++++-------- bemoji | 28 +++++++++++++------- test/bemoji_history.bats | 57 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 21 deletions(-) create mode 100644 test/bemoji_history.bats diff --git a/CHANGELOG.md b/CHANGELOG.md index 2786a06..c13bcce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Pass through return code 1 from selection tool +- (!) Number of displayed recent emoji can be set with `-P` option. This replaces previous `-P` + history flag toggle. Use number to set amount of recent entries to display, `-P3`. To + completely hide history use `-P0` ### Changed diff --git a/README.md b/README.md index 9100016..6211079 100644 --- a/README.md +++ b/README.md @@ -118,10 +118,10 @@ By default, bemoji will sort the list it displays by your most frequently and mo To disable this behavior, execute bemoji like the following: ```bash -bemoji -P +bemoji -P 0 ``` -This will stop bemoji from re-ordering your emoji lists before displaying them. +This will stop bemoji from adding recently used emoji before displaying the list. You can also stop bemoji from adding any emoji to your history in the first place: @@ -133,20 +133,30 @@ This will not add any of the emoji you pick to your recent emojis. Put both together to completely ignore the recent emoji feature of the program: ```bash -bemoji -Pp +bemoji -p -P0 ``` Like this, you'll be hiding any recent personal emoji and no one will know that you always type 👄🍆💦. +To limit the number of your recently used emoji that are shown without hiding them completely simply increase the number to however many you wish to display. +For example, to display only the top 4 recently used emoji: + +```bash +bemoji -P 4 +``` + The recent list will also contain emoji that are *not* usually on your lists, so kept in single-use lists for example. If you don't wish those to show up, make use of these options. -### Setting custom directories +### Setting custom directories and editing history By default bemoji stores your recent history in `$XDG_STATE_HOME/bemoji-history.txt`, so most often in `~/.local/state/bemoji-history.txt` +You can edit this file in any text editor to change your recent history, +removing, adding or changing the emoji appearing there. + You can overwrite the directories bemoji uses for its emoji lists and history files with the following two environment variables: ``` @@ -248,16 +258,16 @@ What follows is a list of all environment variables bemoji understands, with their default settings ```bash -BEMOJI_DB_LOCATION=$XDG_DATA_HOME/bemoji # where the emoji lists reside -BEMOJI_HISTORY_LOCATION=$XDG_STATE_HOME # where the state file resides +BEMOJI_DB_LOCATION="$XDG_DATA_HOME/bemoji" # where the emoji lists reside +BEMOJI_HISTORY_LOCATION="$XDG_STATE_HOME" # where the state file resides BEMOJI_CUSTOM_LIST="" # the custom emoji list to display BEMOJI_DOWNLOAD_LIST="" # the default emoji lists to download to database -BEMOJI_DEFAULT_COMMAND= # which command to invoke by default -BEMOJI_PICKER_CMD=bemenu # which picker tool to use -BEMOJI_CLIP_CMD=wl-copy # which clipboard tool to use -BEMOJI_TYPE_CMD=wtype # which typing tool to use (ydotool will NOT work) +BEMOJI_DEFAULT_COMMAND="" # which command to invoke by default +BEMOJI_PICKER_CMD="bemenu" # which picker tool to use +BEMOJI_CLIP_CMD="wl-copy" # which clipboard tool to use +BEMOJI_TYPE_CMD="wtype" # which typing tool to use (ydotool will NOT work) BEMOJI_PRIVATE_MODE=false # whether to save new entries -BEMOJI_IGNORE_RECENT=false # whether to display recent entries +BEMOJI_LIMIT_RECENT="" # whether to display recent entries BEMOJI_ECHO_NEWLINE=true # whether to end the output with a newline character ``` diff --git a/bemoji b/bemoji index 10ce980..f054141 100755 --- a/bemoji +++ b/bemoji @@ -18,7 +18,7 @@ bm_echo_newline=${BEMOJI_ECHO_NEWLINE:-true} # Do not save choices bm_private_mode=${BEMOJI_PRIVATE_MODE:-false} # Do not sort results -bm_ignore_recent=${BEMOJI_IGNORE_RECENT:-false} +bm_limit_recent="$BEMOJI_LIMIT_RECENT" # Report usage usage() { @@ -35,7 +35,7 @@ usage() { echo " Other options:" echo " -n Do not print a newline after the picked emoji." echo " -p Do not save picked emoji to recent history." - echo " -P Do not order emoji by recently used." + echo " -P Limit number of recent emoji to display." echo " -D Choose from default lists to download." echo " Valid choices: all|none|emoji|math (multiple choices possible)." echo " -f Use a custom emoji database. Can be a url which will be retrieved." @@ -51,7 +51,7 @@ version() { } # Get Options -while getopts ":f:D:tcenpPhv" o; do +while getopts ":f:D:tcenpP:hv" o; do case "${o}" in f) BEMOJI_CUSTOM_LIST="${OPTARG}" ;; t) bm_cmds+=(_typer) ;; @@ -60,7 +60,7 @@ while getopts ":f:D:tcenpPhv" o; do n) bm_echo_newline=false ;; D) BEMOJI_DOWNLOAD_LIST="${OPTARG}" ;; p) bm_private_mode=true ;; - P) bm_ignore_recent=true ;; + P) bm_limit_recent="${OPTARG}" ;; h) usage 0 ;; v) version ;; *) usage 1 ;; @@ -117,25 +117,33 @@ gather_emojis() { result=$(cat "$bm_db_location"/*.txt) fi - if [ "$bm_ignore_recent" = true ]; then + if [ -n "$bm_limit_recent" ] && [ "$bm_limit_recent" -eq 0 ]; then printf "%s" "$result" - else - printf "%s\n%s" "$(get_most_recent)" "$result" | cat -n - | sort -uk2 | sort -n | cut -f2- + return fi + + printf "%s\n%s" "$(get_most_recent "$bm_limit_recent")" "$result" | cat -n - | sort -uk2 | sort -n | cut -f2- } get_most_recent() { + limit=${1} recent_file="$bm_history_file" if [ ! -f "$recent_file" ]; then touch "$recent_file" fi # TODO improve this messy line - sed -e '/^$/d' "$recent_file" | + local result + result=$(sed -e '/^$/d' "$recent_file" | sort | uniq -c | - sort -rn | + sort -k1rn | sed -e 's/^\s*//' | - cut -d' ' -f2- + cut -d' ' -f2-) + if [ -z "$limit" ]; then + echo "$result" + else + echo "$result" | head -n "$limit" + fi } add_to_recent() { diff --git a/test/bemoji_history.bats b/test/bemoji_history.bats new file mode 100644 index 0000000..82d7394 --- /dev/null +++ b/test/bemoji_history.bats @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +setup_file() { + # make bemoji executable from anywhere relative to current testfile + TEST_DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + PATH="$TEST_DIR/..:$PATH" +} + +setup() { + load 'test_helper/bats-support/load' + load 'test_helper/bats-assert/load' + + # mock out interactive picker for static emoji return + export BEMOJI_PICKER_CMD="echo ❤️" + + # set up small default set of test emoji for each test + export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" + cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" +} + +@test "sorts by frecency" { + echo -e "there\nhello\nhello" > "$BEMOJI_HISTORY_LOCATION/bemoji-history.txt" + echo -e "database" > "$BEMOJI_DB_LOCATION/emoji.txt" + BEMOJI_CLIP_CMD="cat -" BEMOJI_PICKER_CMD="cat -" run bemoji 3>&- + assert_output "hellotheredatabase" +} + +@test "history limiting uses sorted results" { + echo -e "zany\nmy\nisee\nonomatopeia" > "$BEMOJI_HISTORY_LOCATION/bemoji-history.txt" + echo -e "database" > "$BEMOJI_DB_LOCATION/emoji.txt" + BEMOJI_CLIP_CMD="cat -" BEMOJI_PICKER_CMD="cat -" run bemoji -P 1 3>&- + assert_output "iseedatabase" +} + +@test "history limiting takes frecency into account" { + echo -e "there\nfriend\nhello\nhello" > "$BEMOJI_HISTORY_LOCATION/bemoji-history.txt" + echo -e "database" > "$BEMOJI_DB_LOCATION/emoji.txt" + BEMOJI_CLIP_CMD="cat -" BEMOJI_PICKER_CMD="cat -" run bemoji -P 1 3>&- + assert_output "hellodatabase" +} + +@test "-P 0 disables history" { + echo -e "there\nfriend\nhello\nhello" > "$BEMOJI_HISTORY_LOCATION/bemoji-history.txt" + echo -e "database" > "$BEMOJI_DB_LOCATION/emoji.txt" + BEMOJI_CLIP_CMD="cat -" BEMOJI_PICKER_CMD="cat -" run bemoji -P 0 3>&- + assert_output "database" +} + +@test "BEMOJI_LIMIT_RECENT=0 disables history" { + echo -e "there\nfriend\nhello\nhello" > "$BEMOJI_HISTORY_LOCATION/bemoji-history.txt" + echo -e "database" > "$BEMOJI_DB_LOCATION/emoji.txt" + BEMOJI_LIMIT_RECENT=0 BEMOJI_CLIP_CMD="cat -" BEMOJI_PICKER_CMD="cat -" run bemoji 3>&- + assert_output "database" +} + From 54b72e583b6f88c30ad0834cb226ab7fcf8f90d6 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sun, 30 Apr 2023 18:23:00 +0200 Subject: [PATCH 15/40] =?UTF-8?q?=F0=9F=93=96=20Bump=20license=20copyright?= =?UTF-8?q?=20year?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index aa51234..2fb93db 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Marty Oehme +Copyright (c) 2023 Marty Oehme Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From e720343ffc90fcccd0ea6912a54c9a60caf10caf Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 1 May 2023 15:53:19 +0200 Subject: [PATCH 16/40] =?UTF-8?q?=E2=9C=A8=20Add=20ability=20to=20download?= =?UTF-8?q?=20nerdfont=20symbols=20(#10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same as the other symbol download options, this one takes a list of all nerdfont icons and wrangles them into shape to be usable with the emoji picker. Can be used by invoking `bemoji -D nerd` or `bemoji -D all`. Fixes #10. --- CHANGELOG.md | 7 ++++--- README.md | 12 ++++++------ bemoji | 13 ++++++++++++- test/bemoji_download.bats | 8 ++++++++ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c13bcce..3b1018c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Pass through return code 1 from selection tool -- (!) Number of displayed recent emoji can be set with `-P` option. This replaces previous `-P` - history flag toggle. Use number to set amount of recent entries to display, `-P3`. To - completely hide history use `-P0` +- (!) Number of displayed recent emoji can be set with `-P` option: + This replaces previous `-P` history flag toggle. Use number to set amount of recent + entries to display, `-P3`. To completely hide history use `-P0`. +- Add nerdfont emoji set download with `-D nerd` ### Changed diff --git a/README.md b/README.md index 6211079..13e989f 100644 --- a/README.md +++ b/README.md @@ -184,24 +184,24 @@ The path can also be a weblink which bemoji will download and use: bemoji -f "https://raw.githubusercontent.com/jchook/emoji-menu/master/data/emojis.txt" ``` -### Download additional emoji set +### Download additional emoji sets bemoji automatically downloads an emoji list for you to use on first invocation. -By default, it only downloads emoji, though you can have it download math symbols as well. +By default, it only downloads emoji, though you can have it download math symbols and nerdfont icons as well. To download additional sets, execute bemoji like the following: ```bash bemoji -D all ``` -This will download *all* default sets bemoji knows - which is currently the default emoji list and a long list of math symbols. -Other valid options for this setting are `emoji`, `math`, `none`. +This will download *all* default sets bemoji knows - which is currently the default emoji list, nerd font icons, and a long list of math symbols. +Other valid options for this setting are `emoji`, `math`, `nerd`, `none`. ```bash -bemoji -D "math emoji" +bemoji -D "math emoji nerd" ``` -The above command is equivalent as you can mention multiple sets you want downloaded. +The above command is equivalent to `all` as you can mention multiple sets you want downloaded. If set to `none` and no files are in the emoji directory, bemoji will complain and not show anything. diff --git a/bemoji b/bemoji index f054141..1bb2cc2 100755 --- a/bemoji +++ b/bemoji @@ -37,7 +37,7 @@ usage() { echo " -p Do not save picked emoji to recent history." echo " -P Limit number of recent emoji to display." echo " -D Choose from default lists to download." - echo " Valid choices: all|none|emoji|math (multiple choices possible)." + echo " Valid choices: all|none|emoji|math|nerd (multiple choices possible)." echo " -f Use a custom emoji database. Can be a url which will be retrieved." echo " -v Display current program version and directory configuration." echo " -h Show this help." @@ -81,6 +81,7 @@ prepare_db() { elif echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'all'; then dl_default_emoji dl_math_symbols + dl_nerd_symbols return else if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'emoji'; then @@ -89,6 +90,9 @@ prepare_db() { if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'math'; then dl_math_symbols fi + if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'nerd'; then + dl_nerd_symbols + fi fi fi if [ -n "$(find "$bm_db_location" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then @@ -107,6 +111,13 @@ dl_math_symbols() { grep -ve '^#' | cut -d';' -f3,7 | sed -e 's/;/ /' >"$bm_db_location/math.txt" printf "Downloaded math symbols set.\n" } +dl_nerd_symbols() { + local nerd all + nerd=$(curl -sSL "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/css/nerd-fonts-generated.css") + all+=$(printf "%s" "$nerd" | sed -ne '/\.nf-/p' -e '/\s*[^_]content:/p' | sed -e 'N;s/^\.nf-\(.*\):before.* content: \"\\\(.*\)\";/\\U\2 \1/') + echo -e "$all" > "$bm_db_location/nerdfont.txt" + printf "Downloaded nerdfont symbols set.\n" +} gather_emojis() { if [ -n "$BEMOJI_CUSTOM_LIST" ] && [ -f "$BEMOJI_CUSTOM_LIST" ]; then diff --git a/test/bemoji_download.bats b/test/bemoji_download.bats index 6fda12b..707aaf7 100644 --- a/test/bemoji_download.bats +++ b/test/bemoji_download.bats @@ -38,3 +38,11 @@ emoji2 picked up" assert_equal "$outcome" "Σ GREEK CAPITAL LETTER SIGMA" unstub curl } +@test "Runs nerdfont download on -D nerd option" { + stub curl \ + "printf 'meangingless\nafiller lines\n.nf-md-pipe_wrench:before { \n content: \"\\\f1354\";\n }'" + run bemoji -D nerd 3>&- + outcome=$(cat "$BEMOJI_DB_LOCATION/nerdfont.txt") + assert_equal "$outcome" "󱍔 md-pipe_wrench" + unstub curl +} From a8256100f9061081746274b06facef6e5b7f2bb4 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Fri, 25 Aug 2023 20:47:14 +0200 Subject: [PATCH 17/40] =?UTF-8?q?=F0=9F=90=9B=20Fix=20release=20automation?= =?UTF-8?q?=20naming=20scheme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Names for tags in this repo start with a `v` (e.g. `v0.3.1`) but the release automation did not know about this and would create duplicate tags without the preceding letter. --- .woodpecker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 5eac51d..ff38c43 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -73,7 +73,7 @@ pipeline: - apk add file jq curl - BM_VERSION=$(cat NEWEST_VERSION.txt) - BM_CHANGED=$(sed -e 's|#||g' -e 's|^.*$|\0
|' NEWEST_CHANGES.txt) # display newlines workaround - - echo "{\"tag_name\":\"$BM_VERSION\",\"target_commitish\":\"main\",\"name\":\"$BM_VERSION\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json + - echo "{\"tag_name\":\"v${BM_VERSION}\",\"target_commitish\":\"main\",\"name\":\"v${BM_VERSION}\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json - "response=$(curl -X POST -H \"Accept:\\ application/vnd.github+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases -d \"@data.json\")" - "uploadurl=$(echo $response | jq -r '.upload_url' | cut -d'{' -f1)" - "[ $uploadurl = null ] && { echo $response; exit 1; }" From 6c037a5771373d35549c3b80d19792bf72627f6a Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Fri, 25 Aug 2023 20:55:25 +0200 Subject: [PATCH 18/40] =?UTF-8?q?=F0=9F=93=96=20Add=20reference=20to=20sta?= =?UTF-8?q?ble=20and=20git=20archlinux=20versions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since there is now both a -git version and a stable version in the AUR we make a small note for both in the installation documentation. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 13e989f..9b55372 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ ln -s bemoji/bemoji /usr/local/bin/bemoji On Arch Linux, bemoji has been packaged for the [AUR](https://aur.archlinux.org/packages?K=bemoji) so it can be installed manually from here or easily with your preferred AUR helper, e.g.: ```bash -paru -S bemoji +paru -S bemoji # or bemoji-git ``` ## 💿 Usage From d44cbf5b74739da15fbbf630ee6d5717801cf17b Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sat, 26 Aug 2023 14:37:44 +0200 Subject: [PATCH 19/40] =?UTF-8?q?=E2=9C=A8=20Add=20long-form=20option=20pa?= =?UTF-8?q?rsing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So far we could only add single-letter (POSIX) options: `-e`, `-n` and so forth. Since we will run out of alphabet at some point, this commit introduces parsing of multi-letter long-form (gnu) options (plus any modern application should really support it anyways): `--echo`, `--noline`. Additionally, we support supplying long-form options that supply a value both in the spaced (`--hist-limit 0`) and the equals (`--hist-limit=0`) forms. Short, long, spaced, equals can be mixed and matched between freely. Lastly, we retain the ability to concatenate short options as before (`-ne` is valid, as is `-P0` for the respective options above). This should cover all bases and does not complicate the code too much to keep a coherent overview. Changed several code samples in the documentation to make use of short- or long-form options to point out possibility. --- CHANGELOG.md | 4 ++ README.md | 17 +++--- bemoji | 121 +++++++++++++++++++++++++++++------------- test/bemoji_cmds.bats | 26 +++++++++ 4 files changed, 123 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b1018c..4ce174c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 This replaces previous `-P` history flag toggle. Use number to set amount of recent entries to display, `-P3`. To completely hide history use `-P0`. - Add nerdfont emoji set download with `-D nerd` +- Add parsing for long-form options (`--private` instead of `-p` and so on): + Options requiring a value can be given both in space-separated (`--hist-limit 2`) + and equals-separated (`--hist-limit=2`) versions. POSIX option concatenation still + works (`-ne` to echo without newline). ### Changed diff --git a/README.md b/README.md index 9b55372..0b7af3f 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ By default, bemoji will sort the list it displays by your most frequently and mo To disable this behavior, execute bemoji like the following: ```bash -bemoji -P 0 +bemoji --hist-limit 0 ``` This will stop bemoji from adding recently used emoji before displaying the list. @@ -126,11 +126,12 @@ This will stop bemoji from adding recently used emoji before displaying the list You can also stop bemoji from adding any emoji to your history in the first place: ```bash -bemoji -p +bemoji --private ``` This will not add any of the emoji you pick to your recent emojis. -Put both together to completely ignore the recent emoji feature of the program: +Put both together to completely ignore the recent emoji feature of the program +(these are the equivalent short versions of the options above): ```bash bemoji -p -P0 @@ -142,7 +143,7 @@ To limit the number of your recently used emoji that are shown without hiding th For example, to display only the top 4 recently used emoji: ```bash -bemoji -P 4 +bemoji --hist-limit 4 ``` The recent list will also contain emoji that are *not* usually on your lists, @@ -171,7 +172,7 @@ There are no equivalent commandline arguments to overwrite these two settings. A custom emoji list can be supplied as commandline argument `-f` or `BEMOJI_CUSTOM_LIST` environment variable. ```bash -bemoji -f path/to/my/list.txt +bemoji --file path/to/my/list.txt ``` The list will override the normally presented emoji, @@ -191,7 +192,7 @@ By default, it only downloads emoji, though you can have it download math symbol To download additional sets, execute bemoji like the following: ```bash -bemoji -D all +bemoji --download all ``` This will download *all* default sets bemoji knows - which is currently the default emoji list, nerd font icons, and a long list of math symbols. @@ -201,7 +202,7 @@ Other valid options for this setting are `emoji`, `math`, `nerd`, `none`. bemoji -D "math emoji nerd" ``` -The above command is equivalent to `all` as you can mention multiple sets you want downloaded. +The above command is equivalent to the previous `all` as you can mention multiple sets you want downloaded. If set to `none` and no files are in the emoji directory, bemoji will complain and not show anything. @@ -244,7 +245,7 @@ You can execute bemoji with the `-e` flag with which you tell it not to do anyth This can be very useful for creating your own little script with it: ```bash -bemoji -e | cat <(echo -n "https://emojipedia.org/") - | xargs xdg-open +bemoji --echo | cat <(echo -n "https://emojipedia.org/") - | xargs xdg-open ``` This snippet will open a wiki page for the picked emoji in your browser. diff --git a/bemoji b/bemoji index 1bb2cc2..82464cb 100755 --- a/bemoji +++ b/bemoji @@ -22,27 +22,27 @@ bm_limit_recent="$BEMOJI_LIMIT_RECENT" # Report usage usage() { - echo "Usage: $(basename "$0") [-t | -c | -e] [-f ] [-p] [-P] [-D ]" 1>&2 - echo - echo "A simple emoji picker. Runs on bemenu/wofi/rofi/dmenu by default." - echo "Invoked without arguments sends the picked emoji to the clipboard." - echo - echo " Command options (can be combined):" - echo " -t Simulate typing the emoji choice with the keyboard." - echo " -c Send emoji choice to the clipboard. (default)" - echo " -e Only echo out the picked emoji." - echo "" - echo " Other options:" - echo " -n Do not print a newline after the picked emoji." - echo " -p Do not save picked emoji to recent history." - echo " -P Limit number of recent emoji to display." - echo " -D Choose from default lists to download." - echo " Valid choices: all|none|emoji|math|nerd (multiple choices possible)." - echo " -f Use a custom emoji database. Can be a url which will be retrieved." - echo " -v Display current program version and directory configuration." - echo " -h Show this help." - echo - exit "$1" + echo "Usage: $(basename "$0") [-t | -c | -e] [-f ] [-p] [-P] [-D ]" 1>&2 + echo + echo "A simple emoji picker. Runs on bemenu/wofi/rofi/dmenu by default." + echo "Invoked without arguments sends the picked emoji to the clipboard." + echo + echo " Command options (can be combined):" + echo " -t, --type Simulate typing the emoji choice with the keyboard." + echo " -c, --clip Send emoji choice to the clipboard. (default)" + echo " -e, --echo Only echo out the picked emoji." + echo "" + echo " Other options:" + echo " -n, --noline Do not print a newline after the picked emoji." + echo " -p, --private Do not save picked emoji to recent history." + echo " -P, --hist-limit Limit number of recent emoji to display." + echo " -D, --download Choose from default lists to download." + echo " Valid choices: all|none|emoji|math|nerd (multiple choices possible)." + echo " -f, --file Use a custom emoji database. Can be a url which will be retrieved." + echo " -v, --version Display current program version and directory configuration." + echo " -h, --help Show this help." + echo + exit "$1" } version() { @@ -50,22 +50,67 @@ version() { exit } -# Get Options -while getopts ":f:D:tcenpP:hv" o; do - case "${o}" in - f) BEMOJI_CUSTOM_LIST="${OPTARG}" ;; - t) bm_cmds+=(_typer) ;; - c) bm_cmds+=(_clipper) ;; - e) bm_cmds+=(cat) ;; - n) bm_echo_newline=false ;; - D) BEMOJI_DOWNLOAD_LIST="${OPTARG}" ;; - p) bm_private_mode=true ;; - P) bm_limit_recent="${OPTARG}" ;; - h) usage 0 ;; - v) version ;; - *) usage 1 ;; - esac -done +parse_cli() { + while getopts cD:ef:hnpP:tv-: arg "$@"; do + case "$arg" in + c) bm_cmds+=(_clipper) ;; + D) _opt_set_download_list "${OPTARG}" ;; + e) bm_cmds+=(cat) ;; + f) _opt_set_custom_list "${OPTARG}" ;; + h) usage 0 ;; + n) bm_echo_newline=false ;; + p) bm_private_mode=true ;; + P) _opt_set_hist_limit "${OPTARG}" ;; + t) bm_cmds+=(_typer) ;; + v) version ;; + -) + LONG_OPTARG="${OPTARG#*=}" + case "$OPTARG" in + clip) bm_cmds+=(_clipper) ;; + download=?*) _opt_set_download_list "${LONG_OPTARG}" ;; + download*) + _opt_set_download_list "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + echo) bm_cmds+=(cat) ;; + file=?*) _opt_set_custom_list "${LONG_OPTARG}" ;; + file*) + _opt_set_custom_list "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + help) usage 0 ;; + noline) bm_echo_newline=false ;; + private) bm_private_mode=true ;; + hist-limit=?*) _opt_set_hist_limit "${LONG_OPTARG}" ;; + hist-limit*) + _opt_set_hist_limit "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + type) bm_cmds+=(_typer) ;; + version) version ;; + '') break ;; + *) + echo "Unknown option: ${OPTARG}" 1>&2 + usage 1 + ;; + esac + ;; + \?) exit 2 ;; + esac + done + shift $((OPTIND - 1)) + OPTIND=1 +} + +_opt_set_custom_list() { + BEMOJI_CUSTOM_LIST="$1" +} +_opt_set_download_list() { + BEMOJI_DOWNLOAD_LIST="$1" +} +_opt_set_hist_limit() { + bm_limit_recent="$1" +} prepare_db() { # Create list directory @@ -220,6 +265,8 @@ _picker() { fi } +parse_cli "$@" + [ -n "$BEMOJI_CUSTOM_LIST" ] || prepare_db result=$(gather_emojis | _picker) exit_value="$?" diff --git a/test/bemoji_cmds.bats b/test/bemoji_cmds.bats index ced326c..90ace3b 100644 --- a/test/bemoji_cmds.bats +++ b/test/bemoji_cmds.bats @@ -85,3 +85,29 @@ typing result" BEMOJI_PICKER_CMD="echo heart" run --keep-empty-lines -- bemoji -ne assert_output --regexp '^heart$' } + +@test "Understands long-form options" { + run bemoji --help + assert_success + assert_output --partial "A simple emoji picker." +} + +@test "Understands long-form equals values" { + BEMOJI_CLIP_CMD="echo heart" run bemoji --hist-limit=0 + assert_success +} + +@test "Understands long-form spaced values" { + BEMOJI_CLIP_CMD="echo heart" run bemoji --hist-limit 0 + assert_success +} + +@test "Understands short-form spaced values" { + BEMOJI_CLIP_CMD="echo heart" run bemoji -P 0 + assert_success +} + +@test "Can concatenate short-form options and values" { + BEMOJI_CLIP_CMD="echo heart" run bemoji -neP0 + assert_success +} From 011fcdefddb82928b157e408aac5992e989c299b Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Sat, 26 Aug 2023 14:58:45 +0200 Subject: [PATCH 20/40] =?UTF-8?q?=F0=9F=93=96=20Update=20usage=20screensho?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/help.png | Bin 41909 -> 246739 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/help.png b/assets/help.png index 9e47ce0346f5b9a8c0f0cc2f7a8828e85090f8c7..8e9618e0c56db07c40039d709d797fea49ee0513 100644 GIT binary patch literal 246739 zcmeFZWmuGJ*9MFVA|)yU3K9x}(x`+q79Aqph;$=egD9XVARr;#HNeow5F;QUIdpeO zGZI4$%zW4Qyw6tm`|~@F@A!Va^J8ye?zrx?)^)CPoon5^Q&pCsAf+QEARwTSlYOK{ zKtN7KKydcwc%{YA-UoNu?;Z|7S3)ca(BN-5fQhn%KNv z?MrfjTu|Gnl(v93IYK-}hB5pm0#V4-amj2oI{i_IgF!G))P#9if~{bJbqM;9AZs(f zD1Z7{ArBUf8G3dOEbhM_X010Q|NS@kKeNUE{rKA)|7VT=i;aJx;s1i+|EpjS88i6m zwYS@^BB{YegP^}C$#ju8l67=yGyWfE5D-|)_1_D9%Xx9@>7(NswY=R{nQ+Dvr<%3r zuB;n8#^PQ-K3mj3yLB1s6v-N1UPJTyOn>t%tD`6J*|;uB$UzehHd)c5+epa0`;AJ) zcCy^6-+^6j+sD(_%S$9EIN0>X3s(E7+N;l=J=@^9`1>NMMPXrKBjr}lc6WClIXF06 ze&1~C4X(M}9?c0kS!jzA8Z%%iysp@DV;Z|xr%%eojut2F4os9X_bBFN z?n+!@qOH5!@0$~FYj8wAcX7FQbaZq>E|SH4+IOEbMhe|P~OUr)QK4x32;^(~tB)7*&jl$0{@+5b8#T0YAb>!OpU zdJs+**Mo@UA?gYuv-Ia{Xg~HjOo@nya2r1L`!0?O6JMNIyn)Xwplm21x@)-tE0Ago z*OT1TQw$qCGlK4^$4IdFaf3gW_LZAoP*4!F_mz}wBj^3K1kGBNm}+tB^=GIZeJVEX z&-L4q_%JH^)A2F6agud)`D9WVQG2nZm((GG-c#nUi5?IMoTDm`ie%L_`n@QE>d0)P z?lzUk%rfg65O6}22xfrn(f}zL7d2NdEysmhan}|9I9#gCT0GS^Px(}6J~gX0m$oVc zM^BdV#YVzEj=2Zbj7uF_8jRYH9lvQ@Vk}*!`ih6>{ROr^j!D%C6dAV(B+jqWQdxFz z34pkMOx1jw`g!L^2;UzzBk1Db+Frov6rQ`Fo(vU{RportBO4pgEJ9o0{r5dN^GMHk z>e}{UpC=K3)LIOIHEBBoB>!hSN8_x{> zMR+WSo|^>d8j$2q3sDi~W>LQi&?h4Q*AdR5RF6W72+LqyXGyF>^By)_`uhOQH0wG| z_kh*?_pUeJh8RoV>k&^CiBmnPpSprxVAE&*+ei6LgiqO}F1R)l4#J|Nur`6DG4adO zmZ{A9lO+GTZpoZ4=RG=&aLc6!Okr{&ojW^=~&pwN39}tqDoYWBcx`LCG(EyL2ib z^U1RDs*?4@wCi%=qSJ2pe7ygAPKFT z7T{$-d_yIPIOfLRCgErzB!gdaadYE2cd?U@Jf`eXD6_O#PQa>^v|2`Y`D&ThB#E^v zk9O?e_8CeCu6yO*-Q8Wi?;1dqC1MiL4$gaB>ZxD--ue#QU35L)jLF$u4*5!ANO7ny9;X^_iX|l_l`)WV)KGQilhbqtosFb3Acc|z*O4lbw4i=eN_jnAFKD^grpFeKi5_Wqo99Hiq5Cl`Hs9A`ISGs+h zlJTAod#IP512J{6Tl-Kn6?O|3{DDHHd1SEdi<8rhvnqz~%OtOcZLRfh@Lc`JNd7(? z-L>6HUtsGZs$4W>jtz>rsijR)uBpuC@XL=v&l5dm5&Nj_dOP=6tdR7|BMt4;J~%n) zz4W8^##fVl_eR%)ce+JU6^jH=*pWezh2v#LR<|&8ZjB7>3-wrOjiKycS|9%qWoq40*!cVb_pM299)|5R*cv<|-XT$`Ej!l>v+s(DV*2n6w@Yj> z7wRsfnbn=Ojvb5fSn&3K-s+nW>uakf`+T^8d(?ThX>F@tQjGQ?%D^aEE9lH|wcuBxd*?@F7=GV8$7UU`Lp zjOylw6yHC7y}cGlW;4HX9J(wUc@Ww}JU>h+ex*jxweY~l-F7tucd#kmJ3e|9rvJsK zV>3DI`6V10;-qq%WK_p~ROO((b?CM+aRoPv+-n`;W^h{n=9pQv{2=oAC6(hH=e3$a?xa{x5v}nyQ3gzH{&ZVcLp=D2RsmAM=vs;BIzWYJTf}G z{Svo`*=xpfC(I9rrF@8J%Zo`tsG(xQ4%i`UoLeIg_4NEUal5o`t&`sHIn>EeE5EZT zd~pd@UXpWV`Y2()r3hwkby&^hW6xYU)k`gd8_kQmW-z(-PplI#BSMK+QeRPFcsb4MBxY1TPErN$Adh%SpDAfYCWO9)Ergn~( zsOUT;0)3DVa9&)zn1$X{p>@?vy>idx8w#5NE0X_cJS0Tv@E&p)&KQ!sIcPIck_MJ` z7))7!|0)?oQZ>W_;!-r{`g=_uy#q%9(sXk#qVFj!#k8N~KRC6Bi~^Lo9r?o$8osf< zUNF4DoG(JkwWm{v&Z>loHWJ?NiD2DArU+lgcniXgw23Qszd1-?9WQIn(s0m36|gi+ zdJ9%y7c@5OUOqeChs;ZXZ_dkw$oZ@dZ-y3n!*wCs9ChyYAr{y%@rW<|zg?=$Fev@X zvmpT7KC^a!g!(ea86pjn*Q>=+ED8gjM!c%34tgvplY5H%-LDYt%db32AsB9Y)Mo?H zd4$(8HYR1?0T*2}zh>~2T>Oe=F%Jn^D^i1P_ zJ>%})+zl)6v%m{c|MPLqF=T%gpG2B}`Yg!GWs~H9zMZ`kGn!_c*9|y?Pw^)HmXI~5 zk=6JJq$bc5H@M{B%lv%E2!qrW+G9bKgS+VRO#V?TSXMkp`*_)0{p?v9GV0DZMAk%< zbQEM3KK-_=@O6Rm8H2@A^(pPm}O7|dvCq!pkOera}=pb-*8+)t@7p;T(q%XU*jSa^g<=6cUol*1naGzB1E|FjB9Dwm<$V z6=$5};eMHPYoLfhi3zux;cGK50)ic6(Ee7GZ@EyUfFncT^Gn|6?X28? zr#^xLrokvIts)k-eoJ-ooiW=z)!Yia;R?S>sk^ejrAvF&Je1MGA8Kpl{)S{IFXwE0 z%GYUYWI<|7wBn3IMaum?pPXRPp&ml4xXe(u`|p7IY6mk^HJ(ztbvaUmfppc4N4DQZ zP*s&dF_%$j_08GUz;n(_tmjMu&^8YH*>16X7Ao#qJFVw!ZLPRDOKKnw`&;*RVM%Mt zQ@x{qIf1?Jo|1WN)@hNO(iBJ_h6BR5!&L2l0b}GNgE04Y}l*%!DW4N zeqVNCFNTzWOWPbyr5<$V$Gx7})Tt5ls&(d`{v{9_@@uR@QAM$2I=p`tkvjr?PmLQa zKn>B{csknjQRquvO%)c`rFgyu5mzUl+R2-p_a%pXxMPcyE6Zb|ufXs1?v|J~J>xDk zyZM9{mV~lOa`B_#0G$qsQ(Qu}AN9a4 z9N>HyJ7&wJv?UOu-|>vAk#i=LHL zu(od5stTGP6bjbzNd^=!jEt!QCfaaVB{Mhi&c=?O>7R@FyWY+-1bZZ;`FSN^^%BL} zT;^mO*AkvRX!Y3rJr&%HZAW*-dI_%B*Yr1*epJygdDY${ ztzO#)Nc`HwmV(wC?qHz|q#Bfu2gekA44yNC*xHmm?!|f6n=RQ4pnP$*wHUcII0<>3 zyZ98YKP@H+_S6Blb@*ksZJC>i_Ma6JtbPw5yvslqnH509z`#&dP+WU~?fWa->;~n0 zbeckyZ7oE|<2rVwrV#b^ryg$ArPl5Fm&K*RCE`}tHwRqr61OBu1-p+l{rO@ofJWi) z7!BR}f%Dvq3H?J{iOz>pak1rb@G(D(W5A>>g`eO z+G9xw9dw)N4`~6KnolNOc>b(hv)90~ZLwwSnR-^mk5nvC&$jBA7>x$c6Y-uu-^|M( z&M1_ft!4Kig1&zXiokZ~yWKiy*y0?$l3@yUXNbz^-*SM=zt-4Lb^L*bj$V0Ynx#Si z+b;xTTzSjNs?Y@KI(yj_l1s4Op->-)VVry_{bw%Yu ztgE6*_SOn#Y(^RM!pZ)A`R)YXlO7uo43~V>jL2_aeouMz>eV`WqWUF7ZEc73vm{PJ zslVOMYSBg)`?F(z6bO~Nb#~@eM3}C6-e`HUJ=hh~5~Ouqcg?409~GO=d<~=%_9g*w zhpq@Qm)m~#T<-7f+lGn4YcyTzhk5kFj70tJU{QBpb3;omE=rzhRVHr@pN7+5_FS4b zljya;LDTg#kbNP^5ZqEQbhtV#``+`P3$o<(uH2QID5m;_`65WWvQ*C%2?J{0QeE?w1EhLlJ+v7GW;N^*nL|9p=7bjJ(tFT=YR*xJqkpnx5EUeOM0DI1Lgvx9PDvGjxlFz9uX$ z@1EcGX2roUm zT$?wQj3hR2$0Hu(leJfuo;aA#zKTVBxjdYcJ!Wtu#*169uH1E@ou?1>p0^0IeLs0Z zpN?>NNWOlsZH0Rn%Qn{-{q9OFUveOESkjfSwG2>U`zDt;=y$|)Z$4kYUw(7%+Dhmq zLlQ{94_zEkoqJd7#I9z-G>LBR`&+i{WYOnZ9MESpd%pcVJ{~EXd7aPC# z%KvY+2I%AwOvsN{IfP@e*lP5x|*sRiSoTkQYBVI2hK0ZW6;xMyNphE3X$PmjQ_}tR+ zR*`-+5ZQk7$|_2e)6Q84ge0Ti!E7};BH|(_N-a@SbxzAYX`bUPEiH4MpYK8?T9#5E zQ>FacpBY5mI%}poaFT1c6&+{3zT#pYd>h5CLiz{4+_?;%hx2=sU zmVtU*mA19D^~H0?ybCF4KXGf~cTVDx2kNc;Ls;#${3J5jd$W2O2sK&g-xsK&H92iO zd6j`76yX2t{P!~vKp)2uXuF>!CZ5Mk2~CBx z$v@B&EGg!%?##l6zkgH&$-}?m#oADz)BdEpjFFL%i>vEnP$_;04{!bX(=k!hokveM zt)@nFvv#L@q~6yX-|Domu*kHE4;2s;q@m@}f7{T|aD{=vZrLY6(5}7v?pj}#!c&gu z^r|YM`t4}gi($}!ojXFWZGnzn%V?R!(wTbz67(m#D-CMgxbcn0C1i@xUPUyr z>g7`Rm-#T!(k&tTi7WJiwr@eatREE_*2Np>Rkv&l2tfh&oi@s7pSC$XN_biywk^Pw zbzBz>ix_`+SP!Di2xxcTVz~86G5Gdv4T{IGHg1x0ak@*s;>gb-c6&N_yP}is>eYAn z`xnNdFx&e&SW#UpMh8o;jy(pwMyDU0pVv{h{_#$++c~P@8!IjMS`ea)ZI3R|W4nT6 z`!XkQ3S?s2i8JUCWQIg!!MdO(hn{WKHY@s$$r%gH5SyZ_*o8H;S{duviK}wj*%c zsNDu)rVmw9UYs>X@g=(Z-Zc}TmFt8%*+&+}A`&Pi4w!3bQ+&4DmQg4p$IhWby|Usb zhc#l}d$z~BIg$ot!@udeCySy~f8PT-EgTHWk6uu(oH~5ny?nAbCEH>Tlah9KcR!v$ zp6Cl+ce|}uW#6?Y?zTQsnlgp}9c)`?NQt(sC5~0Dl%OeD+_TE1F`t@r7vvd|QlMi1|P*AB^o-PyQcx#=Gez3ovN<|z!5W;r&@a}mg ziA2|RZTUk(abW(T$1_nX5;{XysIAw8q_GsBR`J*03E;_mBSx zHZ&~VPfgTkGsP#9UHYWt=Y1y#0uk<0veH}A4FhXr-_bftf(NT!^y(m#pP#>ECJqRV z>v6!5_r$vE_NVAo#I_!Fy=z|N2S9Zxmd7B3UdW#7z^5sQVwCCtb959VV0btNP^pwz zs&I$#zBB8%LuJsmUsF>P*`6rCqsV#j!-Xh;*MwH_<_za}jOz8vf<|?jK1npfuz6;?JN6P^l_z8vmX$Yi&5F1J_)Z)888S6@P>oV!f zdGW1pRHGh%^HLb-p{a08Udw619zSO$j%@wsK-Hm>6F6!!1-7!_Pyql4vxYZb!#YK1 z(2q&1D)cGZpYrB~n)vwm*n5K@5{#%h%KM4gM=!y7A8f@_HKhRHt;Vqo)o=T%*T;6?t&OQWPDqG9x^r0rixJ{xqRI%fHQ2ixQR4rAGa#BcJTU+&pudnauel>urYCAmeH7dgDk5;*1 zzh$@sGV_MM@c&{Y#nfIl`iU>1wg6PQ#(JrIc6f3q(q5s(J7EZ#HD&C$@X*la_q_F2z$^!d{coKP z`@lb=(*dhFt0;g)WP@DU1^^|Z*LWZnOd!<;Ao#V4^xrWZ&k*Zq=c*lIY&AxHLxN=( z-zm=06?dWL9|(kJ!`?Wzsv|%wPpV}on9W#U*&U=ZWAd1J^%&_5QtwL-4) z;!itENQCbm9=H|mCldB4$P@6W#v*nH9e!Ce&Ca>g8O-*&KWUB$-t5s&JC|~n)r~=vE95kZZ zA>Mw+^Gv)42|y712Lt@~bTDO?b#~y898Bf;%lZgEaqkC*YQUQ`ivH7;c6zo`wLix? zB3X6#boM|F8SSs3NB7DwbtUZ9f;2u-W`T@s4gK(8V8XC|=*eCU_+2d;_$D4R`4TC< zGX!!jt&a@47PDEilT6BVca~6F35?3TSN2J91?h-r93+?3&FOATT~a%Qla55;6V6W) zRpq_E$(8w=A(YGDrBXZD_g0EN7B}Qiva-We?Ady^p2#SQi$I(YZ1LL};BO?2#<*^Z z@19N*Ci(tLw)2c)!VcpM?h{X6p7sU%IUwf~WVctQBfn6c!z?Oge`8z-Rht6A9;Ua3 zhKCPNNbvLb4)}rOtX+%*nU;p|cKfthydVwZ?Qni!;VbTwuEP_RNuuuNN$2w)p6%fX zokA^6FD)-yy12U|?Vz;RLIkH#8|8`K^*#*Illr8A4`^=XQcwJ2Yy!;`zEe6MjSnzQ z{D)m_8uxJv{ZURE?y$$GeJ`!WV@}ttx#pn#I=2m7!L~2X&L?{t<2IW$z!;uuV7kU> zZ+$d-6`H88?@+s1V*MEm99SY&Hy9YmaOwm3rjCw|ZDSl@dG>~JpcyRAwS*&#nFp+e z0;R{mmP?)gc@S^r?i9)CpY*!(Mn;IeC@0U0|?95u;SkC zrx`U|C4G*CNJeGP*=Um!-bnC29dIio{T4^j;}UHjbVYM$$n%Pd!b+L~d4p9os6#K- zMh`le{^hlQ=`H9w-RSjoZ~t`+E9#~4=i{aBn9nbMOo`r|M(#`yZ+0blBPYAXmnO>e zHMzSPyWehRbEpJ0#J`Ct~?D2Dx|yv$72Wmj?f!7o|?`!5!E?6Xu; z4oge#G}Xd9{+tv79*TP%LBdQzL~_IRqP?yfTcqQFpPg2sa*n!&M&NG3_O^4AkCzu5 zi58>3%F4zj59s~F^BGHfXEZF`@?fxiu$K0&WQ2m-kdsfMtnVEe@`dC@zrJa)2 z)zu|@fSvuc@;dg7vtiGoC<__wZ-#AWqgff{(gayA zFi}VPYV0Y=%6 zr<3ctgtDAVEX=fno6@|myH9Ioa(>T0(J`nV*}0OS`&5sCIF#f<*W9e<{>^J!>`2kS zuRfHL?;Ro6S}{gZQqqRJp9IEMI49 zU&&|^oaz1h_f3^`Ek#MAn7d?1@1J7xNNtfndM5b0q*H{F^lr#Qa_G(qwG*hwoo^ z&i}Pye_vK@27*U0FPXZ_xH4gD`b)Qfr=jJa^FiPa{;rma{%kMLJIZ$jPEku|WLT$wrfP^BShv)Ev;o|`m&W0QiolIuNkg+ zYu<3Xed`uqr-hlB0RNjkm+b{PnAyfy1(_9n{m_1eL5;IWQqbWW!t?W&|!J`y%jL+N%hc5vYz7v)M&xwq5aCDU3^AbTC^I` z@1amA#ZFq7^Q#e)s-?Q@>=sV3h?zrj;>hUe#le{$-`-JOJV*WaGR~dF$Agtaj$H6v z5n0TujhpBUb?EDU)=9W48GLv%G4WcHkAXpw*3IX!U?uWkN1BZKpE|R@@hG8&RtlfC!)ffPT zhTULbl`XJ;)=_qUb297kdm5!9U)J@piVi+lquY><1rd7u)fr+hjq<&TpvD6_qM3vEs1FWOt-@nd{n6Uy(r#n;qxJ%*@Qxu&2!_z+WKOqCM(}1RZ-PjzfP*6@3o~?kTJq$i;Ag8^dck&}2S`=y06eRZ` zz?X4c+e%5FFMIlF>aoYLUVXvXmefF9$~-3)Q2jI`4ftj)zd2yFLew zlTt)mt;$FYc!*j$ktFvi&%RQ#4mLa9kDy$V2Rg?IR-Bu=ixcZ2l4Kal`}cDFtJnLR z?;D@W>Awv~Jv?%)*rX{_A(p4~<&rXRRWG#@pyudO3Ev}GdHImpDnRw48XFt^$MGhP z=G1BjORE6=LUi;XpQqsSVlvk-P$aUm zJo&)Kg_=enK*=f%>bx{gEvV_UC75YzSRYi27sl8(=&4&~t~7vFGc+_TLY>(Ux&?e0 z&2QSW{FJl3y*;z2sQV|qD>Bz6Y{WEY$v`}TgJ%s?`%QPKQw*G%sgI`Aof4PobaZv| z>8}$ioJzBPO; z8C~O!D&qXn zwd!Ys^_~-PThGlg_5nqb^Y%j9xj?>BLEDj3PJeI1aYk{k1AR$J$&?mC{!ZXGfT-wm z%!Q!v)gDTJOoqrP&b7GzsfF7h!cOvg)>GS50T>8Mj zS%AOxx9@~+Z59_7;SVr?Ib|6k{Q7cKnB)`{cdPAvee1wZQ>X`A_9NY;FY20_t08qj zU;A{oTlnF=Im%I(?!*9K#b%o~pa)*8L^We@SLo)T58(W8_id?GO)agQ;jWI3{$b{^ zJkx`@_q+>WVtu%-zRG5}dzHE2xtr${G(Z2vY-6BTCb_!x6VZY{$p^l9z8LgN^%t?gGeThiHBRayodV3c)3-^esp4DLG19rz;eiUU~Ml%ulA^6QY+A}p zGqbZ-4_8-LgI;Y%JKs?LYuyfvd!R`}W9JY0$}AZ7D51z44Rd zSBdrQT6R{}dty<^>e{C_Ab1lrM0d1Bv7^tC^H^C~iC}Ff;S~~3hD!iS=}Yc>c=C57 zl$d?>KXo)MU^6taQ8}WaQ!q8_IFJ%Q9M!+#Vx+l*buch6n9ReiwSiyX$LWm@RCIb; zSC>^*4tZKn<^3?g!SeE);Du{wz3{xLR@@r>=ZSD$HoiNjX0m}j_ckY?IkM2g!a<75 z1D9f(tLb z(5q%~Feo$%lx(^*f6Q9_I{d4>E+8BP=V*hQuKOPCMgTyhi$RT7saV_CaFhMfvi^1S ze=eyZ;=0OOU0rS1p;vBs9gjR97d1HpfYhtB<>!C%uXXsJ^u`fLskeRq{t+aIvvq!k zhRJ}ZJi7NUjzS<+4(OVHoVuPKCn%RbPS&{VG5ntB_|H|py5XOEbzpcHqYnb_CSbSD z2R}_lD{Nwui7zm&UVRDK^AQjJdkM^5J@^%jR=>)2{#ZG3KHB zL(%@9uP<2qn_Ph}q!Pi>|JV6WK`nnn0se?@SN~sLG&^t*f2&@6IstE&^k+^3!Bsc9E9w~Sc!;;Oemjy*^)R-pdGqzXI$$L`o-w_R$7vu&SlKa1ZTmy2R+1028c*Hu#_d|!-}TPYnC9!(A#K^XS< z0_nkt{(~OVXIn5sZ!tIdHfdQlW50eeBKUf3>nFG${sSVA00Fi$`)guK`#4@6o){o% z>(Q~jF#>7Q42U_AA3vrpB`N3lU=Nqn)YL9j`r?xwPtAI1knh0I(5i3GYr6Hhc$=aK zK!t=lkx8OjpoliNiZeEv;Pn?Tx9ol3wZF*?I93#%rBJz#iE)`>$vGE2c}Sx=RJY6hPS||LAZ&IwDhYYE*c(iuidfM-VB*VD6F1z zT*Cjy@@QGkhb#Q)CK9~7$iAOnr+`&#vT|}d?5ZZ&h7G+7%WX&R%)miH%i@=2=@dzc zkfj7^MpMZDe9MQccP$k!ES)94V*GtNUreP|Jq+aEb5F!_Vs9bN{#x2whkI;Nukrpl z*qX143B05K6Da3qAQ*zofUuU|885(TJ4@*A=nOb_hrT%9<9>+(byd|FH1@3kpiiF? z?BQ}lMFyPUZKp0B}4{;1&>PQu=;w#{pW^iYBz!@nTA3y3Ey&C3t*d1M$c#ryL=DKB@@}XpJ8R)nM&DsyQ#^c_e(j+P;lFm+OzYuN z3QY0^CEYz)Wd9jaf6J#vM!bWAgPO!=Ocor4@$q<%^<0#;a7uG?GawOiDG-}UxInaU z`sEemawCQ&ZN~4N9fw^+a&l2lcarGZMHPqoLv!)`UJMGs%jEM@S~isQi_voxHMPic zyKzmGIxlpj0&ktV`;T&Wl%X%AGg({@RO^Ecgal`%WPX|c8}YB*d$0vHI+4F~_b!-s zAt1mL*zZ>@5>2!#0k`>l|7G^V(h{EF4Lbm2Rw6fXc^9~I_?;#E;AC9Sq3&i*l3RS< zthC2RETR7hC{fryi+PrQpc9Z6dck$;RMJWX!x+WsdVOE7$nrKnwI0)i3~umR!H{*vIGw1|r=PridU3Lmz$x8FJD78258^q4vI zS;7}iay@X++S>XBP@;p(fPUNuI!0H89aHO7g3dEoA9z21o-TH@oT2vg>Gh6SUZMNn z-dZeZ{l_+QdI7)C5&VR`f9*W1-O_t+y@X4wH*5zq|8Fb;{<)3CpgKSWXVw)jU9jOexV)kmvPkV@ChfRMC3^P192 zKn#>lu|S|6FLnGC@B{>JdH=Z}*iQxLA1KcH00h0OuCD%F5_hNqTLb`F$tqTy)7~zB zc!GlPva2ND<3jBADd4x~@9Qve7n~=Uxqbb*boc$GYgg}Ce%xIjeKuC*0P~)Uc*bN5 zN~`NY{*T=luj&A}jPB`G8mxY4QI}#^=Y=m3GeHXh9@`Fwi{RNjs5n+kf)FQrdTkvY zWF1=-wxep47UD0yUl7l%hzA@QU&*$^UDsYr)q1Mw>)W0)b#``csugjgu2&6zx$r%r z4`w8Ja_R;P%R{h{E>lylm`)U%ye`l#c@TVk;t~~A7N{G&jI2{iSb_g}5Xa6d{W;9I`=&mW1FEArb&6q^DF)NB4&_;-ikEc7S1>F+mqrD9%r#9$v zNdftnMInaEN?S`jCF4nGUu$7yT9^YUYwv)rn@)wb#`o6j&2Uf%wgbdm1VlMj&~9vb z{u$E9#3XGqX)VE_J_3cnNi1NdlDvWj4#|eL=3CKaLzh>Db%8Xp>;=N9xAojwlIM@l zM~1sukI78cw2%aqVnBo=E6goo_x4+9c-y#D>C$XbyV=`s`W{jDzZMr9kjBn zJ*HW(+Mgv}i|4sVc(EU*Z&Ip&Qgsi5b;i>ZWv%8r(e7fH^|D16)zMk$lqpvRU9OTYE(1S^e)xrSG_z0S3-@$vKHzg$zqpj3=+owgdB?n!f zE%j??riE3Mma2tayPqEJ0D9m@arAf1+AsTJH5ktqb3*57zr_L>XvO=x_>>lk=4+C? z9$r`9?oYv%n|yAX{kT?CqYN^GiPgxBE+emce$7vaH=K2s-(Fo@bo&mA^E~O~g1q~- zuhjRSwE30%9-DumK6o2vJ1XV)5pD5dR6+vh!{GCFanpdL`5ep!Z-Zi;s3IIh+{)=` zGTz!A)wHo#P(Lr9R$Bb}>dYORA+E!N`S1jNX`g}Ir`u&IC!H43g(5}Z9U~Rc6;_@! z9Yo+x9O{k-wTz+xLlG=+Z=w)de$Z|F!op&W@&c{CKgkvvg1gq*nM6&BjSU`)LZGcjfXp6Iuk9 zr}e;hm*J(p&mOHFg?OcBa4Qi3F+xduF&qtiJO*FsCSfl<4Wq{cOpj@eRq*A*RC!n@(?e?=cAP zT2R7C!(f|(szdHMVOHS%M-004 zZP3iuq#X<70FdJM^EDIUWSlYJMsV6gRWlGEr<+0ET(!G=`SP1x4Cr#o*w-KacrvUY zFW*N&3R3!FsL&K2AQsI)xN$Y3-G54P+DZ7D^J28tYRDYoXb|Q?`M%2u@BJW39-sg@ z_bUml1Q8)6aXw|0c3FUEba29I(cP}2;*%S2QG~RghW;`GtjA=#utGd%*SOQ-1O@_&LVEKqc z@)%%%`sSDU^9Ea9pi2bb*Z3ON`PS&dv`?t*r-%s9H@JdF^oy!T`>5$+#bzatJM6a4 z<-1)9+pX1DBsd6qe=*|B^)^`@$O{T01e2skKKYm&5VeMN3fWm% zZ79Ee(a-m+BG*ATH}@pY_XO-ckrNo44W!iJaTgS~QZ=d`Ll>qOcwJJ`h*CT;A;Cr) z)k5!JTh8BL8ZMsAIqIQ?OcD`9i{;vR2Q^R+0gdBuo(XqlpyZTP<|OFfda*JZsn=#t z?Qqzo%@u*5O8{qmON8Yr@1#gP}P+fpy9x#CqRR^)VwP` zl~aI?oqa9D$yyBoy1-$bNupJ4iwsh%+E)?G5-(o7@ZjDV{7L{MqOvspSBa}>;_>uU zZ#cyrG!EZiUCHve#VfRP^f}3hAA@0AvH7(bFOYyVu!s*E)z70@si{(wy>L+T7|i_0 z1KO$A$OtHx){?)*r{fEUu`Ph)azGZ?lvCt>85I8B9a2DV<+6x;dx_R#KOAz_hxw2Fj(DB^f8+Ygcdy%38 zFGg`=a_2JhzXEiz((i=9N0B=+yRt!u+5S*#}^Cu>G<+AN^Q2y&qY@}d~K8q0=r zK<%gtfQVkF^o5*iYxXq}7g>jn6#O5x$53NlN$ghmNsA5y zhnc2e@))SGY6u_-wJ*!fy;T6vAWyhwIJieCL9h)>VPr^N^KNOv%QT>bUVHL-)%V?j zaWF^)Ds`gASy}@%vUO1tdAkax(e&wQcglD<#69u#448U??)aV$ZbHFFFQ5h4)iwl=7@y>vjqwJEO6@ZP&wz?FerF^(C$%9@DW;L$CY&50P;6L;Mh(^!f{ z0q9ApQuq8i2-OO{Y|nhD^Mla^2tepM4uavqL4J-?K4XAV4By#zc~X8(#%n6+e?X@! zy>?>#IOOv%68!h-w2++9e-!MykM^}}zrE?;MNIG+0p;8qE#kGCJ3WoJHEl><9vG%_ zZo3&vScd?ORs*T~fQU@KR%8Z!J9w&nTjb5{foCdhK>nx03VQ8Yo;dNV3NNa^CO|Si z%T`I@!57oRaM1aSiZ%3-+c$=FOXrF&;)TxZ+LJ&^#xnzS^>$Wqu`2cu30XA^_XFM& zBFBJ-&@%AP593z{h;s^8)NON*6DTEMOsi+9H3@ieW%eZ))N(Q?`F0bew0-4_O?F5D z+|QZ`hQPwpoIi~Hpb(l!_3m)WX`C}8DB7IYv#);awY!|Q1Uki;KxHWP-nWOHl-mp| z(|)Z10%deClb?1yp!G0x__g~t@S1@{PPq79+^hqo*iV0+%anVD&gd(PDyI9kw;u!&l7<>chF*`0iKkUDn{&GR#JZW0W@b)Zn{*R}xP=>P*kE=V5`+F_2e zCIU5?$O{a|b*4T71L{_N+TQH0D}9f(gz4^@f6$`r*&M)lf*K6I{}@7j?_1-}Rp^Rz z%{PlxFX-`C(08cAX2<01m$f7Cqev7T0Jt9*lvo0#=Tw!Qrspe$zLX-v(r^aRY|gJh z?Vb4P9xbB_cgd5;xoh6ZClDRSGKzSb+ex!t# zDv;ZW_g|7HaT931eQ_Lcun4VMJwEnPXgrO1hI*_5ZdS(1rF3y~w^mypdns=>5>uk{ z)X?7Cueo#0;;~=z2UJ2P>{kuvfA!d%;e6b;IvHLwAhm~T_PAHMu4#I1R160g;-G;v@tLU32OLaGxxyqi2euB6_~z_; z(;sio1~bvcfF4fwQmZxrU<(^d@yqo`-Nxuqqgqa24@G;INpwIpc3Mz_kQ5YWq88 zu?E?kvb6xMMY`5ua}o04`AbV6l@3KeQWxP@ZDx5BYcN-aI9}wH;5>ro)^?7Ij;X+q^n#0OWx)nzjYGxjobfMxfACZ&Z%E9DSc&eghf< zLo5RL+T;kHw?ku@`H(sC20lMk*iY)VzD@>umW`Z;F{HkIz<{M?Oe3>@$L$v6-6Jo# zxy;&$|G2B*A9qP*KJ_B#@T3XCtopJiib)<2;s5$iWNfU3_E43>v_Imifb}PnsTG%Y zFg(1Uy0@g`I2!ln4PiAH4yEX*v>m+x2%urlc$|PuOqy0a2-l9c7g-*V1}CmYEP;`= z?N!$tklL_-X~>|z6B3`l_VI9MNeFJ}d$`58(=YmqK*Y-TwLrtSzR*MW74~csG zOf{LBCN2VfyemJzzD%d@CY5~2xemQ9W;u^6j zz+ON4nd?WRw|&o!C@Cw46@3wZ`9txr%fXKYs0Mr0$?XVVFfI;fZy$F+80^!jphA9> zDfqYn-TZL93<=b`%*;m;hYM6qrJyjWN^{qNbaL?)zXqi_(csAR@HuZ#p`N#9;xIY{ zfd3s#g|Uc-OoKnQv{KfW3UBQO#Mg7XjeQXa72%4B!cRea;POHQK^N`H0nrvaC#OQV z@_5=q;-+n&Dol=&&%B4V_i=Q+kTK6(0>grr+IH0nVq+6LPYT*$aVNgdWdDQK{^x+C z&b8zyOuhrEotVHZ{^YtS0nML3MyY0lDCke`8PD7A{OFSKezm^@o+1X6#`G~@der+m zg_53u!N%a-A&|3QW9w=Fyvgr_ziKi2z?aJ!3u>ZIy!8j^a^q$1iO6UO>xy8M=aN}8 zz5r(&Q`oHQ2%{Y80G|ZoJQl+2>@xdr=arKba{5Ot5A;oRs-1!5bu5w=2cZ`U;!J?T zLD7_414flaPX!mr_>}4$kr&5@h{C?ik>c@wkqLJYJmJ!>B*7_@XYm5y37obWjI*_Y zF~QuO%f(>^fS;$33sRQ6XuH(p1M(s{y&zZSN#KnEkUA}G2OiNzGwrM&4j4W3gy5obVaTE^KP;*RD(Xf_9Yr4&|w`x4iy8moWZFZ0K}=E?uu%`+3Gyd^ z*L`3Vhnv&`Ds|nV$qYCRJ{+aJJ?TD8RJRF6tkL50ekr?a!$_NNr%MiwJok(jKx3P6 zz$=+W>EOuNspYB#AfU%1y>W{jvEHG3y`bs*v517=&1;Lq4Hpr!<`C+bK;k{K*4?Yd zfuNmP4PJ=Y^}Uw6^aDt6-$6#&l{E%kUjcy+=Q??|M)NhG0fz2ij9)~hAB+J6nE}~% zdvsa!+JoD?#qUA71*-xTq6_ahPuG13R|6m^W#oX))vElvUmFkOobNmYbVM|Mc!fd8 z2MmxJW-OnYHC{R(+Ph=?l^}(M4BwYfd6nzE6s=|W&UpF41{f&=QfetH*JgqI|2B8W zKk`XxHPF60KpChBdE*2|R5Gx+c$W1YEHq&AUDo{p3C!+F2HDA-J9l;$pju)0e%%k? zf)o2P@Q8*TKu>2-`%>vJ%>zh?mFgNi<)PV9caoZ(9(^D76KGgp`B7F@_HgP6R|gVF zY31um5lnuyj}Mge^Do6YVJWb1_4*j%nq=5gx)#jPuw#HfsB!qn?MOJ_Cz%CG*1T51 znENg&w%!**_e02GYJISnbkBU~RsQF1 zw0J?`Rv8UQuTD6DCm0n7Hk&S{g-%y#e&e+i;Y5M1WpAdi9~dNu?^|w%{U{UhBMF2B zox!%h=z5{yHFf@15!(FFvl?*0{NoUYdIzr?z7)SIl=y%a!r}?`6rUSll0nGl4bYh* ztopN8rbO|bk!e3nA&+Gzu#w)ZCo);w4E(XVJ7AOqHmmZQdimiS*mYY;BxI`};eN z@8>wa|9<>&9rw|7-Qj(n=kt6%AL~5UYU0F6*_v2Vz5wM_$-($Gm`j?b-M_nH-?@y%4sA7Pm#D#KEqnbsdyQ>@KnLqcH}p-l zEQa-%;@{ggXAefl*iHX%Yr2K3)AHFh6}nSP8=^tKmSH~J2Pvy{!SssdkYR`M*r6B& zC8e_ljup%UlUW?48aw^eU8l(RlM{jz=U8HLjH#Xef-!5?V8Tzwe(P8Fi?|XnsF>!D zi;IBd0(%s+hT5}j%^8nj60Cos`ToL{D{sKzleDbg9+cJkm=I`l>JZ)G!-pC4#LO=R z=Fa8%RPJc>~J|Nwv2ZD z<(oGRA9<=i{-9!7XZYjO_;u+*&DoocGa{O-P?0pSs44saaWSpqGaGy0o;tK{jX5ii z#AJP87-|*x?8>UJjXA!W@j;O@jWnOP#Kl8Qg+*tjttD<@rcx3~*w$+Knj?m9A@{F4-iM~kuz~x(7R%SSN zZ}rK=F_uW`mRZK}J)G^MCqIhX_A4j^8r6iIzmJ}B;KC-Lf8M_r`|?(J87=hdgYjvnzKbsy^lQQLg>&cDmKlqVx?5#AT#i$&4S6!2qFsFJv{fCXDU95m zU$Zx~#O7%DlN}zImuF~njW2P!#d>JmEJX8rm?-%1d|m+ohO??*o#?p4Z^(db6xN6& z>w?Zn=E>qqx@gz%TJ+5RIU0d7+Ob?}diLD}K*JKSQgJoGUl1f>&La7ud_Ik-@=}hw z+2W(IqXQO+utcseCqvjpv^|bO4Gz zYJgqL%|`p5_~^9(CL1JZo+}bdW+%Fz3lK^;0v`){GC)9}0F!htMlewH zWguM-V#ZUhT0~6wco+KrMJyhZ8miL( zs%0a;_ufQ*7JQJrj?Yk-1QLSO$OpX^bDFpO^FiW*eL#&GQPD1q6>Us9DK@j_Dl}BK zMY6TJLG}?oQz$n^S>w`b+kdsoUxcFIk}sbmQqELzTQY&o(@#J^NhWD56Rx3cX1-vd zH%?}p_1HFky#c7dr_HIWB$`n4{;a+T-8{ylUmvYlwIFFyH>EVAwx8Y@T%55lREp&5 z`#9r+`p!O=4cy}cJ!-;^C-(OHsUDo;=HaOm+nV9XXWSSc5U%w|tT2Cp*h#xspWFhQ z-`D5iITp)KO3nc7KM3Cyh!9q3tT~s%PP4kJd87N)>(_t8nxwbn*k?jdDv+d^x6*p> zLnPgT$nxUEDhhg%9OpR#%27B1$@I1U!&OzuVAJrig`Q=c!^rrkJ*dw!@8J;CM>F@k zAR62_X}s$L{D2usufa18l2|M1CaQ?fcw}oO^$v=SPapB8cRt zrp_b->@novaW%7QsTF4zja*va)Aj@NSUfHl%LO+J~;sIzEO7!CcD`ymWpN z!F&>%D0t>W17id1in{xGQZh8f1O((EdyH@~HgCq_UkVUTIiJtoB8AS!DP930o$Y9n z`FSRe@ualHYoyKTog;`{mBgD;RV^kG5{Ih=HyLYdhrf^9U#T9dDFdj$*_!)_IZ zC6A|XW*f^VgZsWYRkRTh0tmuy$O?A4uEb#qB9*QTA7Q7d8VbeAXHO<|Ei69YuP-clxYkpt8~qYEhDv0`S8_oTB_BdxcLeGi|q}x6D1&yZmanE?`-{jktN=;woaR1LO+z* zqx6WS^j|X$K@p#H!m$ABD#Wu@@Q&=cma!W!=kSGTshsXSvHle7f?wpAAZeqY0PMqH zqk%I?(8&e**1rKFVdbRT&j^2lO3@20t~znVQgcyrh@ViL?Qb@@1(RGw{HE$n0m9}l z0cbS#bx<>MZo9f`U1mCjtSgURzh~L3?Zft~ej-Juf<1`zV_;tDD<-}yn}Mw;0VDVJ zZ5a$4=ULQ9zpt&p@)T;wN|BkGPID$QC)1+dF z1$_m$J&4qTWhf=k*a>(7puIuy2Kv(zDY5jSk*|XoLz?opoQDWmupDAzg)1V%f@NQw zep=;-)Mb8;=X$Rh_~XZQKj3j%Dj4p~Wo)=9^o4MHOfii}y zem#XO9Lt{1Ek>_27Q0xJtj2F9c<@k({H`z$>7Z1jz}a0w+%wAYHJJ(7)Bf6>>mz@K z_1(%|EX3*T{7y(F2&8MuzLw*kt8`uUg3t!$PL-x6$lD1lEqi^km^%)BpX?_X$j^r^ z*ey*p_Ck4B)grqw+xhg=wl!aBVeX`#0B=fkBpKEA9$XUYGn!pQZ?#B?Ll?p* zF$j|Se4xYp-Q4_0;)4sc89cyocxpiwr@A=CC5V`=9dIR()R~>CF<7>Vlw*^`Rmwoh zb56@sUMy+Nh7Z-;NgfkSCS{(aja+hv<#ynY)?Lr`(aj}7j$;i%Z;4XmN?z%B zbH~z$kqO0^YXb`lE)t9H7pD>&3FVeD2T!n^*HegD)vjOne+LXon0_3G`ZsX5)jk6Q z^eae}%ARf9$3v?dCb&n8tE`vT;vnyfGyiY{{|+{ynY zOWZilS}HJfB+Qr+)1!GC3wZcbB_|<)-2-r}AwM_chDqLp#rYn&E zZ2GtNcAtsO?O1Uz$}HVgw?2$~i(B2DS|@@=alQwB>IQG!8yH`98fT3=e{Y1XM+4GE zx?H&dcJCK6#e=h#o-}&120?>C$HsrAuULU{H9Qjtdf35n%pG|LB_ha+n1-h^4P#1a z?Ve3f_7U2rfaR%JLFy)z-QBEI;};7LV#+d@b(EHt4$V%Cne9gh&@eisy!pbP9_N}m z=d<5EPW0l1uw3JpIe%otI>AR)&=Hs%=<3Ebw&+sm%QzTZ4yVz6ektwXkh3`c!jaB; z88Xofa+d9yd7K=zsJ?{YHn1X~n05hhS&82bn zQ<%p$q>oEtvHz?@%`3J*6hQk{pdW_H5%JX!(=eNRe^JX>rr5$sSjBRtPT+`M-Ts8m zJN73`em=+CH;^QaAMzY(W7@6bHHpHfK|795WywYO$$DZOBT*ly4mq^A1 z5|)FD)*f5>OG?QrWzcvT7@QIR;sHvF>Z$R_KzI>AGS$e$kd$445$pHJiN;S18m2m&uCMuhZ2h)jeOV#`va>o!1>ul zTks8)_OR@nBP0=OV|^!nJnAz^%6aYMQ-;|h;p~C6MbP7zGjiuZi+^-}fpFN7*fX|4 zi~GLswd^oT1Y!RtJsMI;)+y1TkXhBXkDMqs5R|JdLifs4W8DUVp3u@djGoXKGFjR= zKmfcW9Q*5}_W%~na0w?;Qf_LweL@N3kdT&ta%^!XvJEdZkCHQ<%z6nZ`B&=lr(y=43w*D7qVEm~n3wg$uM*59F)Vw-?M9isWXKTznEXX+OXZ zlHOm!b)dH;Fa>(xTTs_MxbY*L1vb>#n-z0deq(ePTh(?jw(n!z z$4D&PNy0&9`$iaAqbb=IfJ)bBXpbg>ZC<*e0Y#Nf+T764khEhm#Poh(0vtwLrfwbm z%G=N}O7-ZLj*V=u&nQ&T&Yb)-bX%AdvTCr)MtzUf&1j#+Ma0xf6!A!TQ{B+4lrJNkDdJb?Z+11F#`+lA)1)Z>tWMp1tz= zL%7VQ#DTPgLqF!2bKnSmv# zm%<77uj=UOvC0@W%0ZRy%>^yX{tNJ}*$N~1s3kg1QRN^FbM^XhNQwp~t}81?+3Gg~ zHRPn;oCn8L)sq4g7DD7Y=(-m!x_QxfNT)k4c5WzZlnFRHwQah;`ZV+-k$v^q@!x}l zBf#AczA*Hfgv4}!FU=0Y6gKB{1#r{%FPtqj4|H{Nd#fWY;R&JDb@qrm5nag+OY;McfLZnk2`L_5ZPfF*c3fiedOi0d(ps{pP6A}$a=wa5CdnlnVYMzLQeZD z8zmtj#%<4L4FEhl>)N2K+xT6?uI~Zf+qj^xAm1tBu$YEiv-3*j`bO8w2XT;Z9#~>~ zVb$@&rGES(Uz!Hf`VrQG80ABbiC}gz&-E&mLtywi7vyoRN63`@Z_m}8oE596`yCr& zRZLS`x@;PA8C*gsbyxkdr`&WQ-?#iz%gUk1Ub6pVTHF2(RAQ5FOyQd{$P*6H(lV8y z54lOWus-wfRC8BVwT$#1VxcPEXwbUtq7}S1<#2LIw5P(YwAk%1UbNK3HA73~yN|Qu zulHpuye~)VGtBkHhN3gE$5l3SZok&s)6=iz-!|NuUYj&_CX|6g_#2Qf=DLhmdoPDr z?xo_(`|C}*Mw73Q^@55@r`vw(mQmF|X0hkL-DoSQObfafe#d@3uzIa&PW8ab6Df3L zW2j=cV;ZEN0Cq%}Yx!L0zCfOP#}`IStxZgSYW6?>WSYP)?5hbyHUF(5I^tR<0uJ2c zCD0$Tp`+AlCVW4@rkLsWFllVquwgRU8e`SgH@xau${32EW;1oOd(0>E5#)HSoQGLa1H_hIUGz zIpXrxd@?bAfXO6WL2wj!UwV5q?tHEoko%_mRa9dUHGY@fW8mD|G(C1^<^RlKcL`;E zH^$Pyz(@C>>F^Ua=MLRKb=fl@;1KX$I-4azfDQD2Yc*ftBPc@1)tjjdMsUXw4ro=5 z=TEzEWInS0_H?a*XKDpilcXrIQp6X$`l_ngHYtRl^#0=Py%?vJ1)ngl6P_+@H2v3T z{#%9~EHRs4Ww|ugplUqODT;H=jR=BQgwNh>a}HN7?#^$hSK2TlBsnbE)aI`*csW0B z6BKF_rTyf|ll%QuJKFB_5wgk&;=2z?hBvp>k`X9UGe-54qkxzA!{1-aZbhpftmEe9 zzTKRpZF3bD?QL!C0hm@U^B#njxE8B%h~W^Eh&W~TmKdSXdU}{p%LP(xZ^cyi&liOi zzaK5!q$KH8g4?L5n(~I4leG~vMn5q(H}}SwX1ZwUznO0fsDJyv3ewRE4X#^DjRW#; zUrbv!KrHcpeDM+AQju_&Kd95$TB?)e6AdQu1{OZ{GID4DTOrog;-OcPOX)X z6frk=`TGxET7Xc1dpJnKQQV+IlCnYF>%JJ~ob3?k1+>7uxd{lxMi;P(I-5cowZ7xiM^42_1*D%JHxuqUa)7C*p;(o6j1a= zkgAqOx;i?p&}m+0-+P8(&}n+Z`GK~6@{SEvlt0V<;7+0D$}c-tQPVMD5NsSG29;T0 zt30%?+JH2l5{g=L6W6(DxyvEKxO-?gNZ9;>P{R}2xrz%kQd}&6Ke)r@GW3@XL!!m;itU62t8`( zfPoDhKI>c3w@jb5uTtN+Bm1qQ_?eYI{-$a&#cjFt;KAiUQ5CUE^|nAi3jxGvp7-TW z^7Y-4YVV=aMs?<}K#e$lrh8({mkGx5n#_1)TAH$X$ZdvjO1JmH0Wz7Kb#yfpTP@@wcwa)K zZrpemrIH+BBV_nPVREqkVuhI%y0Rn2?V{}IE2!9!c-qyNOG(i|-ceb9Kj}%9y5oFp zP{`+QuJJv`3s}2osjM~(_nzKAR70skOw18j4XWV~NU13JBV426V|QA|{d|8gk;;T zeWLb*E6}QIotLMlW~t?0BlDxY)oT?HRAW!cmI)HyiBzReV`mw60BL?}67_p&2Y zlQB+fzG%*W(oj&?H2p~iXXA##!}Pa&$Nkb$upW#>$+(2l(&GDYOG+0 z{PzbtS&03=It)|2|1d`CXV@Wnl<%64euhOxx*-ptWKffePX%&`&bvX2d$Q63pIYGU z0ncwGCF8TH2#tuAjKr4N0IfjdVjSdtT{t_NG3p5&2t#hf%U(&aenJc4i({wDzREM3 z4c47c4tVoM=T5PNNWJAV-n?BoOdu0BCYK@C<@XnhQf&Q-2TMW*O|k+e!SJ~eB4YoU z8-QIxaQHVrCK}0WM5dAQN6m+6z^tW!iMDhA42~OoN%f#VJV?k6JCP7hzIjqSa`WcR z*3$1FpD~psGyiKlSF4Nv{f289oYwtR!rBP6fE~ITPzZNaUn?sY7cZo8*#SzsgI zQ0&1$J1^oe?xsOh+By3UB#)gjGBT76_d z>(IH27dOTzC0OJr1ujG5R0wfv{gIwgFgB8epu5j_*xfFdbiV{9wn3W{gejWagJ4(c zVw7Z%0p^C7fDiSDuEpOt;IKGe99&t?;4gT0C!#;LL;WHJc@j}bgo&8%X9$EyL|QuD z-R(RoVk*TvGLg*fV6%ahHL@$bJmGdmtbC-0a4we5dm50;E~LxSB-$@n$RSf@a-5^9 zySsjhwhoMyqWH%3p%bhz%HFw6oi?S%o1x>VMg&DQ#(HGO7|MlTV3CuR-Hx(WXIW6mc8$fgpzaOiXNKHkReub=Y1y#;oL1Tqzy zb4W;tXFgNKq|@bautp1u&ll<0j~NZMzG)Qq73ArD89K7J#OxmC$%Ikks^Ew7&z)jh z(u+>`(X?81yGI)}C8b6MXkoihoj)U~pnXve&i#9xU)S90Dp;pDO+*5CZ|&8RUaGwy z{U+67b}6H{%}I8i_Z+azyD;r5C786nkh*VQ^>o6NPsG7Lz>zuzAzocb z%<=ns97m80=%D@yWrL+itcRcBPSx*Z_rTq4;JXED+`Fd-n_tJ^+!EhP4E6e_&P z<)xyHDlgXUrZm0JA)Ws?UdS3V=v3h2%BHdHwx1``u;PPa-#$ySHCHJ*tor$qTC%1b zWr^oUsYK|L81enxP9*c!w<){3&+PB9585?+j-L*oBK?4}w7|~ng1b18{$TJHWJXF|3KDNi4?wtuQReW``Yp0pY5epWciJUDw68Z8 zL$C(-2plb!PrFFKtRmZ&Z8hHYKtcdUl6u+UN(|%&K`ye4-Q&P9+Ozk{yZ+WdKCMT3 z$~J%)#l$_;AUR@BM`+gJB zjA_WuE8J?F^?qRcwrGIpciHdsA;AGdd-r{=Mn#+etN!;ct=C9nXCk~Xzh4L2uq^8? z$MR6FPgilV?$ul~B5>N+FNmGMar8x^wcZ2zCs}Xc*~wkyunhfHL99yhsrkcyx4g2o z7$hFMN7DN^>koX<=#E#oaU-@X>bXAl@5BNH{%A>agZrR%+i;pimMS+f&O_RH3<$= z2hA_9Bo0-g*}&C`oJWsV9szit5Jbq^eZl&fF2DihKRNnB+=v(3dYE={f#5>NA-54( zp3dx8x;q?KmI(vJlgSkVL!QHu%q%0*jQ#n#F!c(!qP4AR&g|c7sxzT z06uY*m0XZ26H2`3WUc)>v&HY2S>Lu;6ckyeYrwZu4D2&O@)}D}wz-KNyi5vb571a2 zx_x6UtKa9_?52nvaJrz>zQr%d+9vR-I@t!#oL7%74B0F*8Q6^%y3TJO5AQ1SK?fGy zJ+M!{`jvGNVQCpTf~bUB^$5{ZbȠd~Ud_EY2Y6t$sTANpp@GxA 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˝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�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�S=x!>}6#oo99m14lQ5Hcv1laxPgryn#ykTnrNZj0vA z?M=NYk$fLww59jiIp;w8-~KRTwl_zIWpK&o4}!i>kWXwNbJt|E)+w zjB-wHrBy`YB=*E1u1T&&tOH=+K2kqo7zXU?6A9w$%F2nwZ;6@o8DL{ zC-1j%23sHKINQ~>tXJzYK1P!goIbg~dY*g2J?nX%gSKG>wm!`4_U#?6oLSTwK8dfm zVf>mb_fVQqsaEc{h7*#cT+!o`A|sI*2UXt6$9~j*?>Jy446rx$7<)h@^us*!(zVLq zRwKV(yGMw^9LxnyNxrb3yEI!$c%J4`Ko{AoA0LbS_2c=Bzkc_%>C%4CUMHC-T5(@! z+b}-2(meXWYathNnJq3BxA-r1>Pp8HbcdB&KAc>M_1jDBBpDqNpcnG8{uVTR)z|UY zI^kY@12;m8#^r5^#Gc8~reF5frvsP{vi-xDo(+$$w6AZU={MLG*}SxuhOF#o=mZ+4&GV4Bx!Hd<}Btsph)e8d^@=d=p*kw5(& zoo`6eAdSlk^)Q2f!(^AqRkJd?B-Ig3@;KN{WmIMbA$mp0yKmH zNWV^rk?$tRCspO^dqHZf_++tcE^%2zXxXXGHx`S1hwW&OD8sdSMO3vw(dhc(-dib_ z0!%_+rMM4sL%rW-Q_d98vrx~o~^ zz!S5NDy%dvahchp(?qAk94gk`Z}9s`lTHqD^!l&o@Ef}KJiN62V1;HRbcE$hWTQT1 zORLd2$Hto23Unf)zf~Rc$Vjd5Y4H{(In6xLEBw|A#@fZ1>A2pHXOmp-->>m9D|;eD zU)oZ?j(JRVz-m}RiKz9!yGtNI*0Zj$_;$}$_(r9gf7#EmV;aUteB1@LW{8a3=susz z;jKOTLFz}tgPo8AV>{EwO{oiKH`}kTRNfyLrNMoa>SrMnr;jyfzAjWBDY##h_$794 z?QRQ~ni1~ZZ-k!cFFiZ~FweSnSa5%YM;f_PjZZ7$`0E=9V*eqgVPZ{$KD_6?ZiNr3 z)OEqYPyzG#M^gIEMk~U9clE;dOn0WXt7|Y{{ZhQ&3CtC~>g?pNcX5G{mr1;;`9UOkCs@MCXd8A;$k= zKP!_W8)lmOt5Ibu_6>IJe4MaD{Rj>IUJ1#+fAI7k&1MC>lY6U7)J z>L#{~wTerp`n?sElze@Cn;IJ@iS+gKjvhO9{HP@Vo$DrLzR%_s7oUfOI6FJ9udSgl zJEH{*a&uxQiHOYd`fabGYl11>q^Zg~VK@7+f*zh89$)%x2?&BJF-s2YY6*++itSE! z^ZFl5|J2R1XvUy-yjdzrCq@QW98BsTE-**mx3{MXt!-{@UVma|XLsk$ovp1cO!V2d zkcHlyndxbU>n`=f!y7%a4dD?fGe z74ach0$7_pNz$B)9I4 zmX>|rm%GEIu1Ya{sTx7(AOdmm@=InvM6O-q)ywA)6&>vFFL9W^a``g7sM}(Uv7fG{ zrVDl-RdByI(ldHotn2lNw|^k&YE3%BcO+8G*m(5XgX!Xul8bC?g@uLhr(|Sguvjep znY!xgo7lGd*4EZHZhTwp&uc&CWWYzw8zaw}oSfX!($e&rSMPOvtj z4Ief(HpIonOAMCVQ{-}`QrDCe73t5PFE20e&DM{Jj2s^y4>(U=Q@FFa`Ln+MMMUeA zbNl3j2M=<;8;Q3V7#RGt$UA=Y(G8{>_uD7Odw6_EOWRRNB^>ja z?N+=-uPP-arK?L5R6XV>vVQY#SDAEBI39+FhX?#AweQP#?3ac*LNwHkVdjF3!Va+x_WI zaBwic5mH`JvD9m8{=G~n+|a8IBS;_Ax?!1{xcByA;=%sRfniS*7U}lw&W)K?1-5rDU%q_t zLjBgQTwk;s9UUDMQ^2lZ9M9#;n+rLW34-@R-n|>{&$BGD8+>Y?lau2=S^siy}fj>*IOA77}(&JEhreL%tO@_a}Hi~bZUtbh8&b^ z7cX8QT;J+7W+9YHY4_3~Yw#k&?=Q5Yd#8$Uo|M0LZ)$sKke7#Ny5-#-|Fe+GBy!Yo0pXL!*l zS!*H@HQy>~KQc1%yr`ScY864}N0pnTH4P1O{QjsWH3Wu|hUS{xK>n{^zk(?mMv7I< z@HZr_z0n_yG~qI$xwWs_4SdK}ROkt1B7CRHUcp7`z`*<%ozvk|=RH~-U*xeC-J*{? z;D6!w#vv&tT}N1*S3E$feo0ym+>11ey3n`^`K<93X@$m5Q!EE(jrfsgTC&Y|@h5n)TNj-CfsA6zoevO_JENvpv~$sBV!_JV}<}9e}8u(0#`5f zlS33969K&=6&daeJ=wQz-8z5%JhxWXjf1F#c&~=)_@Eke&Ui5ea)t99tozzD@5ljl zdPO2`-96mtE}2RzEC2j#ST;T}!OP35ou!lOgL2-41-D>`U?&fT_3j)PC^c^&$Cu>c z;gOAC@Le01;pfkR+W7S8Q$rLx3t@oK{XCPZqnicr&S%b?SwEYx6KyRN<%~AyH-m*>VJT#4k8h@AF{HyAK8dqKU^mk5%l>>w)f1etvRC=bJyYa zLxWivtsL#>=olQ-r#r3j$iv`OVG+sv=`&{%MBP6_Pw2^!m|OCcM;>s6mzAz~AFfB$ z0kypUPvJHt%@ua&rW@1EQHrU|FFCllLK@6l-ia1vXD@~FSHxbqujTA47+58*pdcyy zv2#vBLc&MFAF7c>_PI{ESHb@ANjU9l_(Eu|*u3hY>l|Ert55)w`^t!lqM{dSeG2*#0=qlG@BuL! zMk6G~X_oE+PxpHMTaDIM1*Q_owcr*;wQkm^$YjTp) zmn*IaQ-O0iM&(kBu=9Q01_z0El|SnY>PpYV|n4h|kWdK5|&KI8hvhQnw@ zSc1ENkkC!Ff}XCfx7QwgOiIEFwK6lyyVvykqS9*~Bculah*>qJ*f(#ki-2T8k^Xu%O`O&(~sCjKeLoyc&QAdwcsAQLjg)-a&;QKYoN;+9iPK9BJ88Tr zuI}#s@C&f%B=%Qt;@%rRGIWV@yTL*LGIpD@?JE^%d$sq5m44^TV)%x%V^|j}N+)wB z1N@ec{hL_?0?7#PNL||KKYsl9sLzIqjLh-CDu9Zpy@ectc1#z*eE@{mjl=_ixSy-5 zj?wJ=gqMYd&8Raj5SrTB63flkr|0Cv9GoeA^5nRiZn4JAuZeWDw6HFMLP7*BQ;*88 z^WiTo<)H93zBr^0wwf@tVSiJkn`ehiaoh{fyz2KK{J;41;iGZJgWWnT2Ayn#2X(t} z0`J6QfZ%XGx5Nn%%pb=iHveLeXL6(1dj~qy@^c!YB-{^fBNk2sOOOBh^=)Ru`&@o% z>O}zobtckHR(TzrbMegRo0gpXsM$goaN-wP z*W|6Qf1yhg_+IIidtuMxg&q7h+vP6Ps!R~Rd-o1bc2!kXICLrxu%cS3VmT*F$`9$A z^;@;ptq!pZ{d`EQCQ%jIveKRZ+#=R;*b$C0&f6b{ke+!#l7j;S&|Tmvyvfa>T}mZ8 zCi&7^|Cf2`S?5qqY!(VxwwT|$_vGP8w!hUF=Ws`_Cyn{$EC>b8QVt zi`+VM#{-k``Vk6y^668ub$@ur&Zee?Z;y^eM@IvQp(VH?DA?H8IDgl|<@!6-w1{(; zq_#f#TD82r2Cv~$1sz7bKj!S7K79(1)XCXdFW>5xn_FRC-UENj%d^3?<8YYmteRJ9 za^ViaLkt(q&mOBCSUQq?DhJUmC@_ksYFnLII}xY+Ix!Ie*f37Wa-_mne~No!eci{` zcjjl@#Psy**jQ+&A+Nc`CA2g&#-ULyEtSKG@#+;NHFXSnXNBd!U2JuIswp8M!GLdP zwmpSwA^Lw{A~OzL?Ofyu!lN+?oqMrzBx>cm0(pasPmZZU8a> z;LB&|87MK^t7QOFs{)RXjEuku!C~k>-4n0pO)8voY(&p#q*VgXM&%eA_ z;ITmv(cyIAnHm!UVVrw#C4qe%E+McNac)yR5ztfPQuKD9G&8WTlP6E!yLXTN3{WwX z+pj$Q+%l=F64}cQSAeWw_V?eueQRoJ3PfnH_#j&2Ej!=@xR%eK&tQc3_*AEK4O5rC zHzg(^LPJ9KF_>%g;Xy$JJ*o4BnZ?Di%@#!XKnEX&pD8^!n)Djcdm7$}MJ}9P*#0eO z6_S!i)|v(e2dlq-mjKja?1#DsJqqaPxA3&F^Ndjq=D<_|@MULb12u;ezBU04FL`S66RsZib&1g(G5f*nM=k*y(28(%Sk-5|Wq(b9gJ=Nd27BOu27;B8lr%YMUYjTHBQg5zn+aek^F28xQu^yI zv*kM@O+SCKCVtU?x&%@bC+=O?$jfg~4Eqy zKPR!fnLzS|ev$o4F{_+>#^=wUt0qd6TQt+s(ZzSB0Xg#>sH!?LoZ#U%-km9;=2bTG z<%<9XMbt!H1OO4DCsJ8RhdpD?T2E6r9x^la4GqKW)eQ~pY-|+i@pB9nH|iEzq1!aa z3yWUA{xL00PDTb!S%WEbf(HEa@Hv+cUx1)FD7Pm|sRV2>o|KtTL;!g}3OvA~VMD_j zYjQ0Y@p4cqYHP=29KPb>bZu<7wkb!}E^$TA1MRf8mvEieJP~+HPcKBgz->wIKJK+J zSma=7X(@W`+E}-~wzjs8POH z{!3oo%@mq*=Qy;ItJZF$F5RI`gYKA=^b4@AGFvC?_u5cuz(sv|(7vEjp#b2ru3x`y zzGper7(MYLEHpUyLSpuNKwzMkkBngF(h~Xf^5v(tXVFPvVJa3D7WVeb`PQ9;(-9gq z6YtL@io7vBxPMh`bx(KL2e-d9HS_&2URn6(RTlG1EG^lAY|avJMK_w}5}!Wp>f)lq z^V-KT0F|M`|8Y=kZprJujSci6atexePrs?gvx^xLv;JZs8;=!JK_-IT*x%n@?z!=? zxYz?^9elFYfhREtBY(hD*v(Eg=uetl-9tlftH&rQDM^tlW6AASva+&(K?wuS(a>a| zo$=KDm%CF_Q*VD%mLxUr_@DsL^K57>h)c!%beEXf*erTK8?LRby?*@~INCRf74j6g zsi&SOrZ$=jX0?6)e$@BdA!n*;YQLXF#iR2O+uz>)$hV^17HyB}>g@%-3ebWlF*1@| za7iOnZwXkXG8+Y^v#w4K+yCOliy#ul(vp(94oA2KMXftNB+Mkfd9$~>HUTiJ@&L1f zAF4#Wea7mLGm&l0kgOGR{9ymscR>4-B4DYznH_=f2TZYkP=4tgF>ToP-qr$ed_aK} zei+)YjN$*TajyI0{- z+)rq=Kx_QbOGO~N-5`A|l?>I@-JR;?oz`sqB8%1p z-pZpl5n2+S>mQKFeE?bH!T4x|awz3O?dJTJ3;xz88GTF+6*T3Vni^1vfHCcF<@hft zaM!mM!RFqs zvrH%QKNuFdZLr@s=zVu{flz=9vA;G^r#CcGQzOk5b+=dij<&X0;@SLXKHlv}=KO5T%`bzFwz;_p?W3%ugiP++{g_fzXze&0F}(VPaMFI&$pS`_kRMuQ zg7n%t<%{$`@I#IC{PM*kzUiMuXH@P50Q#Eey15HOe0)3w#-nXw1hx`LzT?g%_)f|yD(%J}y*6iW85tQF z7|<6waHlSBLlYVqNobt`KAWr_3p$G9nAG^BcR{%_8;H?yWo}CVi5gp4R23C9_HD-& z7SM2~0LH5XZogk1Dw&v{FTGoRB3i#Oudp!TsvWIYMhvJ_@y#Pe4#uE!l{}cy#Oj=` z+P|e3=yW0Ja2W~r(ts5f7HX}ncYruDGdZaYX9b9u6%```1A2LW-{KQJwz#?nxAb&$ zV2PGT%Jq4ujFBF>>FLizimA|v4?8fFk}sYRQJ=y;3R`_ViV}ZGL)ag_-6Ris^X3g8 zG?U(Jiu}-DzQN5F@CMJM--Ez#jhFYdXjgJS8t>dwtd4L}-l?*}*Rm<)zUbG#?m^E5 z!VY~2FbAAthNUiZ|KI82_!*AP7X9C6KeFY+Tif; zs{#Uq#Keo(1NJc44Jbf)`MzSO zlyR99@FdWjS%G))*;#5&lf!<1k@I#iApa7t?JKHsz;m>RRI}4zO z^jh0=D~A>f+X>zcg+g)7ki0L)vM0GDFcE&Aa+V9DePa0T262v|&6IOyST&qnebhCV{TT78PpA5~hJl_BBKi8iJd6KnoiA%M$?ARC#OFm;LQK=%d?x!aX-TO8#i zhIfL$IOi-Ubhgm2FyHmb1`t3%bHFT@t!%r?nsDG+G#}qGI#Hj&e#=H1;BY~~6&~7e zUyfHwDKzNc|wR?g+RI6pth{CR@}aqo})W3qTppZZCt;hd_6 zlK3sRaV+d1kB;y^e$9e*tgEZLcyM!_?ariYnHsWGb3{8qM@dNu#LpW{>NJHxo}Zp0 zE)(~;Z3*O#B#?NlPN%)c4o6&8|1Y_buPEoROC9E)prfLCT9J_;;`Dy-w(r&DdD<_c zBIlT}2ErnuqC`)=Lpzg`mZlf?%0JNPsDSqQ=@Zu`g9{$<<(nRUSA~V4iGTo!`hH=^ zNCvh%Kp-KDpXxp~I$OuiDPs3ACqQXrVPWBl4#5ssA*MgL!YK?_k9l_-ukrL4>Ke!? z@Unk$v$#BD7DqX>z5Ltnc9WQJ+;Z|g=H;{4YwW-EAOE2Vca}K`F+>zSm{DEK0EHIN zkeXU6Xuq|wP@EtuA^Zvb{;-H zV0}2_gfywOar8JS(qHtw*9M+w^E>&ZLQnlSvJUe3w6ij5nb-g1$rB7Q+dlu@G$JpecJMA( zmt36*)SHjLIp|0*tL4sg1KlDH{&=6%?jjQn$LVMX*K6WBzNiHSKn;k_jD6^ZGh zYTq1X=S%B<8wQ}2fJ*@~5Q!uyK!8(E0*0S&fnpBGX?6m1g*at5Kr4Yk z?SA;eA>vcH-d>z`{BdqCBXZKSv+aQNg6I#D6AYfBmFz-DtO!_%#*G4n=w4!UbmL@n2PeeQA!!i9V1O z7v|@$gF&ONt`7bwp!_nsHYGHf5q$tEu*mo=!rzF4(zHm0**-@Df8u>D<`(xvrZch> z+?Z4#9|qQlbhKZ9)e44+nBaq-rPu!$1K`Yn0tgM!2Tmj~V#)9`va+NRE5L@%Qc+o$ zo5Q&WTLZA|J#+KE{{CdA>!P9{3xgl1ar-tvWNPQM#0%%Z zxt*28bLrB{26H`KUBeRRCn7g5({9te&&!KaO-qT0W?=vDU+~K@@_(m+Aa;j74D6jXd! z2fI%$ez--Tq%eWhRq|eGZ|6L4Fxx+s7xk zPKh(XPyM>utJf1-fu$?#^DPttKVJ@b>+(?TeFJxhEBbvzzpa~-Q*K_~1~djngrC@h zX=Qv#P*yTDKgGq-Y<~xA&Z8&*ohV?AA6uM|F&AvK530~H3AJS@4@$x;pbzXEjNfOK?C=3fB| z@Ps$|u>B8|=H}*(=D#a&uJ0l(C{66?$8!vcPXsEan)3T>FUDD{)tWll*)6^1)wi{? z)8)~+eLJdg5?o3+-2t0G@qrXU)kk&zF+JQx-l8Jbv)yMHxNE(b(VdMp9OyO-AwQb=Z2mKfwU zRw@tp4!G9Wz-?^19SLv{Pyr_ghkCye=r%x5cyzy-gSHM0`er4w+S}g?+lTA+4<9}R z4+feIII{phC=!LM291V&V2z;X6c9NmHSh6Wxv~Z4(r*ePl|vxqIL!`~1_2K6Qh`-` zg+3V>Nf~ir>xbV5`?C7Qm0{Aw2oK6SnLw}TA60`IfqviU_>tS>n}Hpk@AK(%7`uEC z7ZTXvx}98IhrirC=0qysvtMFg-_ioz#uKC-(7pih$xPP*j)qM(1#t`N8?|+Hw>c;g zh{{*5ULE=;X!{&mV95KZjobwffDWgLi6O}YjU*zX6)=CU$bWD#A0HoARGi>FMTj%J z;=KJMg3$r=A+JrV{QbOEi3d(jWQPt6fbyz&sQ&H6em_4yINd;D2oDQeavO6O_E-ve z{v0Q87TDa8l$0zIYp4?z5P0_dxtQyGS7S6cklm1XI<+iRp^%y=vLE(>j{!y_5JbQT znLp(?p_Y^S_|Bhy2do;ptAoP|uyH=a(pMs9sqq)~7iz+8uT1|Xy_ zpy1f&xm|C)o**=xJ;F z1?q8JoPv*+X?=QndQ!U;bOOP+pA8Mx2UrZF&#I(9`xQdsBG02IIE!<-lQyyF6%a>0 zeEg`TtsN@;-mEU%cXuoZ^NteFU&MXcz}9v#id`+7LHs&!R`*fgqDrBocvh#g=uTV& zBdpwe2j{ytHF2}DK5n)kIDUM~T?23bF4&I{gaEG8`19xF1}bo&3F5h?jtPgMIPfMl#M<@ZF1Aco3eGAv+4FXka2AyEM=wUUBH z7APwq-Acd>Ag^Itjzf$XACygP{~0{ZGSK|Y%_qmIgCH-47L6H`VT*#WlsNPb$m?iw zW#t{gtA01XBblp%wC-esh?h(#6-cT`5@%+}yRCU3C5Q$)I>j}rxprLB%>f-G2g@uI(I^oY?yGtc+s#qL*@jIP1+6x+qDD($17ER)wFWm$aKxQjZ z)A0bVK|$NLk%27qH%K_Pb#+OnYCwjr9TCHCEa8v!*@P6vNzg;x+_n$nUN?yTo(6M1 z!1@L_<4gX*QR;#z*xRHwi#KyBvGV{R=jY$Ne*H9cb075p3|m;$*x1;@!mH7|ns3-? z5B{`GtUR5ZF2y%f5rS#(5a)v}g2=L&0kU{LzLLg0pH$S$)D&uO58So7=4ReYmvRdV z?%bmQUsVJgAp0j^@l;h+0gPi{U;reqQ&Ngi0Q;j-|De9ez5nYy=;XI(@cGpWrb#3v z6ziTOm3yElS~H;`N6-iXa8<5YtqLT71_#|+yB|XO0_IkJ@3cKUij~^OEbv30cA z$xK6|12$>f_dkXHsB6{%G3)_M5Ly8zhK!7ifP?`W1n9uf^`w&9hH)>*aX}V_HteZA zgaX`>)zfzmge84y_rWOmn|V^~we_iyt*g76hK|mid#KP3#QENrEOO8VBcq}~OU=;r zCs$u&%*Q33;Fu>mb!rdfgUJc*)XQoCe%0{^57e(PA|vm$b?s|8P^O(r`e)%R1q}tz z1N$;41LqVki)|VnYW}e=U)}}5{ocLkn3x#&9`b2Sgwcw?5Wopeyza^sSoO`%;f8ey z7@&{d?yiw)E&VPW@yd}}yuz$rRRi{K0aI1^}R zf|=?E3hsj!1TWCXfnhIAPD-b=gRufQpA7$!pkO44Od2FDy^5la*Q}l0fM|=Mp&@V* zc)>M-i(u}B1~72q#EIc~UJj08mpSqQ64;(r4i3FZh~R}gxK;7qS?=!aj2E~YP*#Qp z7Mi=Oh&HxPp#901`tNmN7s>&npv?DV58P}aAqr7i7+9!&^mO6r-kujw7z>N1SO_sG zDk@G2C;eBcA7B4_KFZdND)foOm;C%!im8MF@~q@wLzoNZt|v@d-@W@NI#inZ%77YQ zg(>zQAo**4zY?H4Z#E&c^5;vDj%7WQe9Q`i0P4ZGPj551n(vr_M$kJA(JEt*13+0JaY7!z5Qekso@OcMzzWoRiG~E`sxA>B=${!(2n%GJm zS}T=naN8}e3f$qwB z@nUyZ*W}F1XoasgNQ0lQp9FgsoH0Y1Yx&EMn zpQoqa^}zx=gmnOg@XJ9{^mp7!q_`kog%dF#_wTf1f+|_L(IVOxe6|b1BnF0t!nS=$ zf)Ah@2x?~0rEA(qNd-tVqu_}06dRdI^j`)xBypCJQ7u^=05Pag5Y}B>TDp=x^6eXw zpx`}_(ojmO=9(p6Cj%gJ%@^Q#CAC5i(J*X6+j=uIKv;b#a5UsM)5{123r zX}#;e-ERr)n)&4{ga+Unh){7&aCfw~D<~`T@bYeLZ;yZg1`HXNIP2?4`ZIFSv#{~U z2?G{~N}^;_P-rweE355LFJ};vd*IqH#ZZI@s#6|EuXhVLp%5b%+l@ z-VwN`L7}Z~kveox2#Er^;u0djdw9Vtb|evyKouNLaO=P9KUV__&%j^^PDJ2!eWNAB zqTnrYaB`y7>KJqRr(jEbIlePTLl3K2jzk_kdQ>yv%@Mt>_I5Z2K==rQt)X)nP+7;y zXd2$6?^d@q57m7S2F7`QXa^>OaR`X_6miqR07xJ0#~Dr>fJ-_eawy*7eKi@z{r}&; z?zs$q12iLMWZWb27)l&~A`}S->>xuMV|!Wulj2t!4|?(>7oz&{zT-6~Bl+8Vc5S%B zwe}u8G);gx0Ehtq>WQ)G(y_MAfI9~q*ynC5S}qT8QE|F{PT`N-o$2Zup*P8qVt#!O0?fOS`ag8 zO)u@Sti@vI6UVgp@op0D`&B1xPB+uNlz)|wAaVCQq_NrXj~}0#pEqr#rJ;diW9!Q) zTwJ76?)kYIA!%-mz-1`?!^Hkw|E*TXOzMXhK1PHKLwEzm5OA6+VOz?mBXw26xogfJ zDk^Z>pbbIIX8@oLFi^(^5jfDG4T1>*Nm(TY1t%w`68{5<_l`r6Kb>mdzi0OM_dgRf zF*f$-j-)^Zc`)nc%U%8bp1%Rdg)`yQFpu%F*}`n6^?7LM#0E+S3jhls)ueL?NcXi; zoJ#~QXk&j&H`wFd-B-Yo@%{uE4kjiOsQB5;$(0AP5^9=v?4j#eevPs`LT8-Z}e ztty{yE^cmo#ufXp1M!_!x2ZK@&y8aPgpCw;-0>v=Ket-sK?a|iN9WhllA)1N_-ja< z54EP<}0L4`MfqeLlkAnxKgjm$^ zIAtnYT0H6Ejd#1Hsn}7~-h!&iPVt2BZjpR>1Xr zOWAN%z`>BK4eBH-D=U~uKm$n8nktS7Q{SHuLBJL^59lqRQ9{HUED#ZqzL60lCfs4u zW|d!DEOL6iCKNg+scnRCIArz(;}+{*vOtR)%{7w)6iPJ@R9GsRv|OA{c6dYmALQ6O zh1%8<9$VwJ+C`(Q9NF4|PMV)crjI>souNB-j>ov-EmQajbZE!g_rcLiM<4xaOTM{M zzQf>#DESlofg~Lnb~G^bb%fMEhQ!5R+nbwz7*-5oS5s5tiY^5LpOuvbjD6Af$jbiF zzv3(oUf%8`jZL=Uza|cT#tV};_<)*xiiqfcHQUBfuY5YB2;>u5TEIzYZE0Bsr5WO@ zQ0dhP5EcAO^u1l*p8TyPOyfWX2wwjUT7YxJ_EH{b2Xdi+K{u4ol779~j+^Zb5?HLP+OqoJ5{ggC+$0WD+=*QZ+bf??PMx4kego;o{`X`1I+GnCDjuPp&X1$@HO$ zL6M%r%*G-cEg1P=mQKJibTd^WPMK{lEg~XfKTmNmQ%k~Qt$RuMM4)6!yAk9#>FJR! za~-`o#%3kfH*yUJLQ?wu$jHgpSI2G&3k%y?OOeWDW1g5GpY7n%(G3TjFXboe+Ce_K zm-5Zz^0OSTV}t?E&x>BYb`1q%IM;wO!W_k?E4-GrPJYQgv*Fpw`;UCl({LYS!?|=+>v^+ggKoA?u zQ$^H(YJkc1E+N4Wy=@1JidurwY9oL|FDNy4XpA!!7i}dH{UN0UVx;}dKv&~!PWW`g zODf9B=7KbC_Nk?%wCJB{XRY=@?%h;_!^c1PUh76xXin9BoQRXDs%i_gF9`p_j)0A> zS*WVNqEs%-sQzb2LxToxIFsrIjHukO{ynD+K_!59)Arq*fK@K6c0H0Sq zq148KsDF@wGi`GUM`FAjB>|ARx9+#U%tscCED^3~8^(df~GgjcUNBmDO#QX(Xz689GK zTET#oW^R9Ui~zp*vha3IT2>aW{n2U5mX_c*Y^Y zv1AB%pKB(iB&o1)5jZE1N`3ecZ}B~E!JZ@!70f?EKoyrDf@l$(vGAFCMATBdmIz#n zpnm`{hJ6J54qzru#2U;LRda(;#guk1nkmT1A^P*o$mf&fzs@(tkIHc!U0s*&HNFC^ z1oWf`264T6-UV9~U6~t4glxLffp?jqC~9uq_rG=B2uuQvKa&*eAesiu9;W%>ccW}M z&wb&TY_&VqRtfGGG(n&FE>0kL`5*p`oNrHbQl$S&QpNiImQ*WN{0VgzxVX5iF28{f z1W_Dk=YdN90|G{$wo!#g67P#E@siH2iguc`f%XmDYB@}}YG>5H65`cYt`wA(>ami; zRN7)S38Kr3*LMX*GvMR^x_S+yR7ivX#2Ci55N^I388rSTK(KH^z)H+}J1a(l4=!zG zxNHaVj1Uq6AsZ+e2S>Uv*Sr}Ng@CZIF{s!U7Ho;FLEIrvqksSUZzz6)ir(Q6g6l#I z91o8fB%U`IK5qnMN=dyOnDFw?^qhup#R9m#uwK9`Fz=qx{zt)793RZWOQI>R0Kw(e z|7e%gTlMB&K~V-G0z;x%?1;uQ51C`t0`IuGx~i+ch>D7ej~|58aDlTi9&T25&5I!j z39TN?m9Jj~QQsj*`0d-bgnb{Wn>UZeH``lTsW03S&xwgGEY-dgZn1Pn>CY(oHYLh$ zAy8~;>q|8VP81XrFbo=0WW_{NnU^QT#nlKkhRYGM>vl`E9Vm7}R1Da=CzvEq7FROK z@Wj5@pUYxq!3BR&u>Lhae!yJSGK{2R-o0cyg!oQHjIQ?oA_7~zF?*RKl6Mc|=IV1x z6;Ev{p~k8{L7;IP{3R6|&6vEX_9vbPBA zfFQgy^DQ7~IEJ7cOG-)kAv1GuRKeQx-vRQl=g%Q^wI>mW{p7Bmgd5Q{oWqa=*;GzV z!!)F5(M*vKs4}otP)_34`X$>A@QV$Wg-3llLHny_)I5H}X!N`Tqz51x0NZ(cbyXf9 zYo1ro2awyKwh>;NgczIx07+^&MoAbL4Xp- z@dFWh5)u*=*FRB$Owq)XVm`a-Ya8N5KB*X}1fT_Y z-alh64YwRS+ICaVNEiy3{eTF~*9IAE!1Uqt*T^X;U%h?n1HSc=mUxzWMwd$bRj~d! zuxb?l5cBA}4HWIy28vGDUK!?f-B%d&&Ovg))YN%@*9iuKKqUQYgZw>Ln-5r}pa3xL z8Bqsv1_qdAg}3_(@Blgj&_J`~mP78nbiCek_hfM627JC z94?2+5r`B?CBKkO$yj787$?n-@kyw`WKdRl{7FO9vFVW=&Z(HTo}NO_4GV}LLf8@Z zDu4+0CgcA^%Bz<*J}mpNscUPec{p(4?pFWrv0E5JfX;LccUE<#0jjId4`m%kJ){+~ zAoj^TY8CUk^|t(92TEbnL-;O+&(Ksb4g`mP37YoZ)nRFAU}z8LS>kjEY3auq8Jq!3 z@Y7Hw|4})QdP$run>xRTy=P_?1p*4V1u&uuE+%XZkRMzOzR-z|!5l%V2BfC|1*fUL zYcvsPTPaH!wETNar2Q})p}ye3vxd~LXGn+WyVrdHKZt1Gb+W5qlP_!b*g}{BFgYr-jg{FKpWF>1Qc$J(y_G^!v z^W1Je(p~@t2))MCe0{~?hXvzi6Csi~knQfF_YVYMbKvr#TM>Nd*%>;@?UsAL!_W9H zBS?YKXo3&$Z)9BQhr|iXi&W?1VZnh8(Vo&sO2Bd}?u;vx>TxZ=5vqS0A z+~S~IlvJxI3a0i?YS;2!BhL5xc7NqYQxp=~+5ZHOQwL9oS6aP%_*=28I`q> zbuBy00|wtTVZ|Hhkn5E>%r@YX3csN%C%t+vP-e(u?}HeLFA4WJEUY<{nx7P35|Il- zH(wx!9D2vd2)nyx79etnRW%F^RSa@U*V>)xRCB=PG)wHxmm2m=wLfGt1eAeQ9$WKg z_dLKK1z7!NE5ei>$$N#4-)<=lOaa_1sSRoYg{uyLIlVnS_WfULdwO2in!?|b^`<*Z z2w%PGR_6TT+rLC#9DAhscV^-)*k!V8Y5^#iqu_lhKjJxaUeF1TDI=oi^xw0+0izj< zC&6O|#}x~h4tjKj+tL8oauCM`x8ceaNZ&yJ0W1VEc4%m5^+-zeS4eyn6bzSp7wPao z(8l!EEi$L_`5%^oaR9S?B#fahpL_=z3^`qL?e?J|o@hlF-hhz=?r6ne{$Oo)BeKbq zeCXZ4n?wE@)3xhLzeT$l(IMiYZzEvjfe9Ao!=H%$oze$D54x9Ai9vuf(hoPV%6~ll zKVq{}D{1QtoVUfLrSRa1MHOcvBzIgGvr`UW8H}bcZWe@B@(0kh!j6E1!fV30@h2Hnh zXAUB8mVG=s7*~5iCdfa1|4IJ6+j^h#8KF4=3{iV`y#NeiNST;YlaeyUw*FVe4NQUu zuzdb(Uu3LV4XPP}BA;7O5JDLb;Mowk_Oo_!kH$d)tmwC5p3Wffu?`a9DLDF{Y9sl- zA=4w-)>c-I4<5h-5&a@U_*HcDS!!zc@tR=Jgty)KYz9GZQc!4sm|*(ulro;zQ9n!C z%|NgdYJdEIv4Tl}rl3dq?F_r4MOpA(Il8(+0`(Ljp}OZOhZ`{c0HaVKbI6*SGV{0~d-HpOLY|Do=w5i>H0{;RxQp zvFh8jKd>qu-fztMm#^otYE0KYs>B1i6%!MK2XDwl5B{ML2TRD4bhovAv&e%X&%G>J z&)<)UF-KQ4;86JCkYoDL*C15-;01B*zr=s>9v&g=IUN|O%!ZrP6|zu9$`xmdef-)rD6>#s5c- z&J(I}mt+M;$X{@Srg`H}lf3V?$4ms_9tF%ml)!UIAmdIpv+;+wer`PeFgsI}Fma#wae7JXw7~yDt*Y1mQewm0e=D)UffHd9|A6GiePBTEo?t%!;+`Di zN{~s$$4#TRB1irH=5CK04_+K$;P-c(c>uX=NJvOa*MJ?Lt2Xxg1J}-MfHMQ0r|Mg^ zKNG%y$QoJK#sN?M;mC_F+NSUYjlI7-|*0W)Or)pF&XEyTz(G$Fp(3=>I_ z-Qd!~!NC^;&s%^q1k5?$K`g9MwYe~+07G+78t|wes9pezV0IJwI$ndMXtM>3 z2TOmS*=S#)HA<{9fx{T$RK(SwMl$%%WvYEdbo&?;*ql9#w!pvx7(lyPQP*c8+OUgr zbGYm$2s10k_Ihs0qwNRi|;$^qnf8J`YbTD-JzIq{P|`%7Cxv!w39fzSO;sGHKXzTRsT_caL6B zPgZBLd5N0JZY)a=GZP*FA`C~(W5|-;dBK35wt`<2wzD*BvlV%x#-LBNQq%qT&sSQ z@skgby^)d!mL47+K(@D&LNhiWp(*k3@B{Pt$o*NY@86$rE`e(W1@G%uXU8`T(J*ud z;0VWHaYpjfyB zqn5$$rixo2{=%GMkEN!z_I+a*;J{60F{VMPxw~EfS>c4r(#RmhfO{N~9=tt6ZR}Gu zu?8*lb!22fPaULG^uvuv)C)pw=(jqChMpT$or1^T3CUwl0967d696b+v=V~~?;ZPb znp5YhAQKKYE=UNlza4;ng9<|;v5V)6OS6YHi-tI(Gd%Q2L!-?M4@$JV`wlBPJaPp-MzkV4dm$_xa)W%3v1gPpxOK}3 zSTax&Yhy^=!`f4xss&43P*8BQ;yRttXt9r~np#d)77`L%s;c4Y95qC)KWa(+Aq$E@ z%_LUBXuDJ*uzaA$i{N2qXd0EeWTdAPW?#5dmj2`APb0|kF7NK`$;!wiUxd4#Pdu_B z00K9p`p?tQ#JzYyN=qAph4|O$cd9T22LV`|Xb1D2zn{ADuwoJ(!3OFzKx)u1K&yGF zm|DY`tS$nL(o~D?v@Sgee@!L=xb=pq@bl-x`1fwUh>ev`X@~X)N^+rX|2QC50}Q}N zaQ?s^LW1xIq6s<@?35=#K@RY&G4x91DD1k#Cm2k!=IApYcy0wuy7oh%NlWABK8xhx z^TJ$nTkL}&N3yMkP4KuiGr$(S3(@uE3C5^CnJeMX!~mP*f}?C=aZ#+R^tmcbA;WO@2MtayFVik{Bcm1*0S~bR*_5^Qbw!o`)7+QF zQ?-VDD;1Rtk%a6-NHV1iWyn|}iX_QgL?u$0heL)WN*#0Ckg+7CC{rRsDkKevkW4A_ zunqhDFP+nAdY|9(;r;NgPtGCsUi)76eO>?Q(vE|xNq56S8tR4_uzyx%0R^S{#_QUb-o7AjS z|L)xZ==E!B#b2E#-uk0TC7t2~oL-5E?chkUZ?X#RW`Itjx-%)I6=q;azx|CMlEht- z=#EN-FATX?_^}BM_TXfL8xjl~L`5OABNz_$Ig@^EeZ7kDKA5=CwqOs0iz)Fo+Cgl` zAim+#LD$0nl(fwmbU7**AXTL0%l8@>_!|U;v2t?*{uxkq_xuQ@79@De2?N+aoMn}3 z;QlQ57(ntA*PRtBo_^UX`oNfno&6IS*RHOJ*x2T}y6v&969Wm58AGUC%T9dek9L$) zp1y=X40HOtxeK-jfpA!h+dtPRQbm>rL8O6w1*lZ$N{DaXy?hC^OE@3_m@xZcCdyfe zdrMdyroQCwO=o*g^wzk&gzy?#Gwi~sLE5jVuHC7r*@yxUbq=&^0k2O%3(*)=CeJMaz>H3-%UK6X}(GF`R&j6GJgR}q?-A!ms-3WaHXk}Q|;MpmNHN#Ex z-vKBXNGK#9HfgZe$ZUnZC$TxN)hWJnJl78R9X3C(KDddD%a+Z+cu%3nYTgWTNST%R zGaUXLvMt{J>PakgP%8>4dQha|X1(OELTWl2!DG2dm9;*xUKDsHlu&66w&#>tR<5jQ zI|)`z-bs!SBtN1_v@R&Y6O&X2{GEZCW^m)4#uVgBz)%M}ppOFjASpY+48J|(76%>jf!?-Q%4a1?ckgq4`fY)LQ`|| z%|Z(t+%z=mQm&L`c!c0q1$~%>UY`J5cSR^ne4uT=skElDx*BaN76Sqdx;Od7hZGhT zg3N%;W_lvqShTg!O?q&(&SJ z-b1JhJF6q`#ofDlS<|!7FsiAl0;o*W&w&0EpR-Pso{PXA)JUm4xgrr-XEm3)){tDc;5Qm?ZmKMlM zE6FG*cGRhhRl$qng0dA>3Y=Qd9|h@w62dbCh!3n#W3cE{Uy%7*=(sM9AHs2r0v@#| zJOOn>QyicVg-|9Z z;mhyuncMDYw3dFhBi;+m54-%Tb;EQ2jD}&pcnk5pAHVs>BY^MQzKZ<_wY&l7X3!`l z$K=7#@ba3AAC%gN&I>kS>~Qwl%{Arym;9HVOF~#F1hYKyuGbIQ4DC|i*o2&EN2I~{Ca>WW5SDryKBrZOH&3FxG1CKPU zW^eP)+LJukMUBDK9t}JsH@tDn7WOx>Hf#vwI04rHK0lmgumR2-CW;oLoNfrIY&`HJ zp{jvi4dH)-&tKMdU%_VF{^bkL^5u6Bn+fR>j9?bROIS=3bOU3~0M9QR>s`QNs_Amh z{4F-p1@pI?o3}wiSoI`*;7}z8s z?bb}*n^R~tt5H_y)w1`wj-;%WCttO7(#-1$1nO;pdJ!Au#5-)P=mk`!8EAZig1Xkf zvK@u%FJ~7Xd1y*PNm)ks&d-@3Am)Vm1uCBU`;4$!tz>7{B@em$$Qr|T))1~ZN)$BGkVE7M+!{tk;rL5>IEWzL4JrH zxZ~$+YJdE=_KqDm>`)MZ!~k`=*aYnskRTjg-)tkYmgNk_B!<#YHRRAYXy(zJ*EcZ3r%IPB^bWA|t6O4s1a;G!m;#NEK{?ppu3|YPPb&l)WlRq`=)rsjNtAz6x&5P^c z*6&|;!#<-RnP0+GRJjiL2RqHyOq=DYppPqn(461I8*g`-EgskL+TZ>eqB_J zRX=B&G<)!7?1Z?cr`-XcD_En1S#|)YGVRm&F)nCEv7rH_yA~eqTXT>$OBuNWFqgtG z1!XE)8cT*!z~cY}pk@=kilSWjDrIVli+9yVBxQZ<>|D=w9>6u)mo+AxJAp=Y-!Yt2#lY_)V=w z2M;#bBH3^pe$ocp&9mWji~*bA`@y;g8Vt%Fk(VQ_f?GsHh%R9oWjqT-3y|KECx_9o zY9aD58-r84+_kUnw;H=V*_xNfb&X8#LaVUN1aA{+5# z<5Ac1PIX2F7)0d|XiAwgXb0p_kc)y1oCL=Py-V9=DX-a6fR0iek4P>op06CLHq?7VTIn zky=NboSdj?`M_c0r0uWi3(tJ;Wn!lA3kVPt7vs{UtV_;;5_P?L-F9We#N~IvO4i@+ zQQ&{~h=o{8bMVJo1?h$U=2*OFEdd3pN7B*=_`RkU+ODxVc5GyL7&WlC{5*#FSqF8neSDN$GU)I*%HY@oH!Y;&oFx?ZSiKjJOxtNCU8oExX9lRg} z!3jjdPPFxF!KPQ7^U9%asqPqzucu)+XqGKXbHO<=F%gv~uwhZczg;IZwWqvK9R_TM zmGerYwnu+sHq6*)I{p{H!J@2I<~fTW7$hQ=4q<9cM)^tqQ?)6z*-8oqL|`#EabJo; z(jI)_0$cDCSFwr?Kz}l3OBff)m9lYh1*dj{cM<0|;^mliSxAG|w%YzJ$^hv8u=#~@ z%U%Zkj@?D`_cFBLV$S{hFb4t3>wk?0!XxzqfhH@gx-&Z{sm7weioo}YH~6nSef+{>AfJsXkOeHW6dd{KrD|B zAIuVTo#9a^xDGwz8fNAxAtE7(e|f^Wut}e1_K-Y4tA(@_Mg|5{Y06UpB06cGX!qq) zo^{yNh*fqDL6i-p3m$A>zc8GjT*Ajgv+svOGezMvI6ee;^tQE`H>Q|cBi9-(_rVSb zrtPGnq3+1S^Nl_h>SA;r%A%}z5sr{?C{kGgyQ zhN_^-Qy_~)RHOexEsS=-=Pr-Ow9*lKtZUd6(XTrw0@KLBFsFW!*8Xd{&*_r-duc<| z`}+Iup`gpnMK%wVjy7&pL%@dkz7=(UcTbF4qn|?kf^<^f12ywt68fJ?x(l_|0Am_S zc+ikT6i~`L!u!#TL;bTzGrXYIJGYZ$={;&4|06ZZnP;@;XVb~e)r=F_x8XG%1sI6k_BI<3V+G(go+)_fLYp{uHr&3#=8Idz% zwANWqd;qr}8*6N0;yK#efXyyUmm_4iqVBzjn?*Z^{4O7I4wf6Q9UL3Gw#oXUQKo?q z8|*aPjMfm<+RV(O5nnt|tdryeDxgg)8Z-+)B*U`?2M_Klu-r3$V?dP^jLF=J$kJYy zawGj|Pbm8FIm(2uw}Wni%j*|V=&jnmi|Nxr>dAXq2zy^B>8>FFK-8dzfukXcX_a8q zGm~b~$2At&9Hxy&W68^E=rYbAg&+PQ`kS|I3G9ZU4!0R`5_4t%A`iWmERsc!(|+{U z0CosE$}+x49Dk@@p+rE{=!J0<9R3b6+-M)suIdXzW~47XIzBF~ENOJ{XCO(b;N_kM zYgGHNt^sx0FMJgmE^IQ7t5LHf0|t^|Y%86Plc+U=z8Y!jUbXa7#B2GX47$g=YaE@^ z_qvUbZAp+L{7Bh`7{w97^{k?@ABhj>5Z)qu4rS7b6DKq^m(1?Ak0qb}MEjV@zX_1# zuPjVkCzwQlKp>Hkt^-LH*g+zivRmix{fHrG9vmGF!NiM?2Wgy-`*@bp3rI;hLG6j+ zYOegLMD24_$_VV(Hx?h@QV8qCuuUjE2L=X!&k_OcDB^pEedm{UhBfT}m&F(x9OQla z3oY{yCf1J6iNXOHvxuvE0P(VNf{f$GKzz~Cde)5NQ&-nYR@S?yJ5h}FKS93SNu)uQ z9V>JQBQlpv7Wrl$dv^!08gfi=csY42kQ<)YMyGk^`1^>MvK?IJ~Y-XkR&xh}?eG)jLWOdeJpgw(?jr3^Icv2k(Q zqVDvoGSAF=WH*2M);t;^LI{da8G8 zhQO@T@)pCG_7bhjH=OKk&Qk_P)XA7yFz~H(*c~T#ZY5_|z$L~5+-|O}002?BK{6av z%&GcHI{F*GQP@y9lAwC*n26_wnSoNK^7MrLjQgm%wr80?GQ=t|^hhU3=;~y+C^U0O z$uAr1QYx!so}_*M<%4)y$1>;*A@_4vP?VFSATA)$X=71M)=|ukxtWpic)WH~w2!Wq z7-z^4+%5Z}$s_9OL|!{;EaC8~MW!L<^AB(%_V^8yzCiTYT6GTC&-nOjkug|nz&3+;mZSTRRTZeK0R~UtMS(L(+ImrID^JrW*i=+QjMZWoZldbe=pC(UQ z8urN6I`D@p`b}CY`ycUusRFC@%|ZCDHp7quVKYK%APaRiKXm9lV*CmU3u$R-k*S;0 z2LJ|P`)}X8k>=y`6*~4aXvq7tsyw*zBdg;#lrLx{uuS`RcRJD1Ps6F(=_q?zhhry( zH^lAEy>sWWB64(X5F%1`K+|*02H@*BC=sRrWEcV&pa>qlc2o0wcFRtSq4S}kZ(4G8rq0rP z;Kl)b{?yZhIN%*=udIu9e$BJPsS8ggF-(FZ_eJ;n)m76;n=S^PsT#r-U^ThZza`J6 zns<1U$!xV)@knuK<(hguYj+mc%iA~Coc`?D>G(Q(=s+)w5p-I zGqE@EpVIKlx6*Lc@yBMhc6*`y5~jvLnh3BH4G9?1VJIn_?}0wLbugE4BO<^z;akMa z6yXgU?&)M2-Lu8>3(5iTdg*Xz7!{rZq9-;i~5b1yfLB3M_hgoouc3OYc50GhAnT?Zim;Sw-Q;GfhnN$O+Jw!r(F6 zsXnpY+65FxYHAm_6f8QhUnGQ3P7WPTREQ!`R0QbWoB~e|>lMtr_{`8QDOC#w2fvU3 z)CJxIK7nI!twAP<3+GE9g?`e?9R_M({&+X&E2q%{7GZ{i->ek{Wu>#58%e?4FnKTX zIV&nE=(1Y7JOQFI@se%S4pLEBp#cWrjtgG^rOg?#a;%(IVb{2GhGjB|6~D!0*P^we zGo4|Rs~kv|Cbd)D?@X*6;rF$@*5}tdJnvBJKo^a&j^2}V8Hz!#mjzjhRSnN$F_oN@ ztHxe~=?7{#cr&Bu=3k|Nj=f$@V!%EE1-Xq*j4EcP-V*|;4dZV2Y!#M2$+20Dk zJgc0!&%*k*((+Q3M%f{2ZkP-rs_$iIBQ^r~PGhRjlQ@R&+M0q{LR&M-TaS35X&4&r zWM_l5MPH5Q2&WXi*X0s3ap-q2EX&^6IjmXw-`gtouJUQ-p;+C^w79B{81QB~Sp!=mfDdu=b*EccrFa9jL8iN|EQ?b`%T zE0DBKQ(yj40uKTJ4cTOV@>?nUnt!Q@p~!30*`ceqj^TD7OPTdx^A;(o+8!sy0ADZU zVl)(;uiOEW@t%?PE0n{k=g`Ed=35O7-rG_3q8Jq{o|CeDfO+5%gsKivAq@7SYBkfO?_S@f^ z9fvr*_kvi|HDB6>uIn!-98b2rSquoI$5PlUksK~ZW=eVJbxzsbz~FWCW;^gWK+(|B z9f^%CF}E?W1__G7hH;NiiP>}qiAuj@3795m84(t?6T*AQAB{w^x4=07v@kqwJxu6$%tVR!@g%_-y; z0yo(PLs58@7PzhILHaSq)I!U&^18r02zKn+Azuc`0_iRUQK}<{CG?s#tOi#br8TM< zczyVy=QPVSa;oK|76)+0pM_7p51zKr`>Q`dEv|iS+X4H{2M;zuzQO}_Ac_anZ>Wrr z&y!S#sF}7EWfl^ytC>y6hW2|=t&gl?8J()GaEnK6F_$#=_tmQyd}qNihNBjm0Q@cF zf0cZe`au{4Ls#t$$*O7Z0Uabks3#%*V+CQi7{DFkctB$AzT%q%M)wR+$cO1{{-U2C z+zK!x-xJWQrxMilzX7Yxvf)*b&-uND^hV_-;u65*RD@z$SWvb0{IwV5n$%uN8+&Dp ziybg#c5H!m0LiFcUQ~jlqqu^8_iY|*4XY9i#;Q`B*l#t28zZ|W*p=bm;6E5nD7`TX$*~G+DA*e|g zf`fU;xd7k;T9MX=r|s}F_(g#fD;({xfu0Wx#7wF^>H0+UWlarP^6(P%FLaWXA3tDH z-+luFc#7qbJtD-m_9I{WtxXr{u~l98gUCuOwU@LdCPe2_#=od;0gy9e7+n{P!3Zui=J}UR zI~~4r=d^`#^b9W*8c_s0lb&L8#iWQs#h!(A!_xR)a4e(ifVULR;zIx}cug^ZHY;-? z^vu9$kg5mPJ&GM-s7hWe<`eZBha#Yafq_3f)Z7rb0C;q`tir3HzCnZ?cVn@ZF2uo? zb|mOxDh@muP%tM)?!i45+qh94Qzl(p9zg#A&jv(N=bCmkFv)d(aQ*T&y94@4EFPR> zWsXLYlU5GA!F>MaiZdhifL^AiWzO3+v&>S*i>Wgp zdL`ZNlBTC4S={r?%TFO?D7B@_irhtez&*Xil*1p{VK_OzqI@N?1ny@5K{7<3AIcmI zV5;Ncky?}vy;tMN11f|+CZ{+#IWfH8B*K!B<)83cjj7aia84*t!1(dgCoJZ+)}xR9 zQHZJRh7=w&Pk_-<-#;tM9(~BRsY~R2XX}{OxXv=KhnB{>?N6#Qf0o7XW=9A|^4#po zZYov$--J!hJY$-Dixcn{`FNx>+@(c zh6bE9jrtDE7E{yz!D~bF+a8^)*ATRtRh@8Q!-TvHec`F;cawpEmFu%9scwSEutEAW3>22r#0de(Y*0v+mZ=YF# zxhkeSwz&3fw1~;WwwKtdi(wZSKn0Z#)~<>_`hf(5s?*CF<)O?mG^nICBuw1`*bShYyjjRY-xOpb!Kjjw95+fGuD! zWq0Vslf@pSimnYuGJ>`%mP*^V+^n;?NK!09L5lEFpxQ~Jyy3+#_Cff9v$ede%pH_; zULhb8^k={!9tcdNPW7$N?EwK7XyM++1zW#1}ycwDrdRe)OhJC^fXloDxhbcYb z;q^qV`IKPrk#$_;zKYO8>sj=J&Ve8W2{E|-)=b6?h?P5Si+v6OG^%SckQXF6)Xi%z z4NSUAdi+!{Ux$DK;4l&b0@RZbz65w27h?QIMx2fxMaQr={ngW_npxo?|J{eMdx2>> zsrC5KKqdgFl@|y%(Rx3z_0otu%43Xn7K zR%>l-{2@gtDg7xCs1`m#izFPorc(lL7VTDC6K~`-An}4q8)pwtiMEeRU3el7 zl@yUuu+{FhNCD<*BIlZjlmhw)v3hdy6PY&X#W+J!Fx-i1c<^BGEzI{xJp|L5o!BM5 z8z>NUDh11z3sqILdSfmatjCZez(RBLW?3H^%%5@68yjz<-*#KKdKFISeQ6ZBHoEXv zsTrZ^N>k+jP~3)?%b#*X!1)q4&iIUqwYPjF3?6`;L6R>@(M!3>T)ScKbbJ zO3BdKM|!5}sWd?<757mJi-7j^3%i{r-& z!N#F<7diBB1avjOz-Ddq@?#4l7I)cV-Tw!S>v|0gdQV6mqbIeXdXfBdS8N!ybb08 zuumAzMS+8jcoY&|)58cxN2tTaFJmcUwNjA-4R!#ah^wF&CeE2*_7xu5-3D*%)?9S}8v`kVW7;Nr% z_NmIRS&ssbEQr!GGU8-sAM38;>sO9*v7ukYc_PniksMQq(s$)I$z!ArrX8&f?i`J~ z{C8g4W#hK2Mx~w-^72&VWs?7vB7O2Mbw#=~$qA-s+xw*nC;|KHHrElMB73o9yL;n@ z1;W26z0Z9e)wpe0!5F1AhD_k%#Gw@BCT6qi-%18h0QZ)j{>1BT9tk-ZZeEOiQPibN z+0cDre}8IqC&9qhhQqJxrEVv0a@W8~H-(t6J=5GAuc#h-Z#1A;#uJar-!xfY7*VjG z1&85)O6zekl%N=x}L$yX=g#kK|F z3^(v#rKQ0L5ecRVqHiclf(kd7N-t`AAf@lJqephz&1*F&huIYA7WLe?@jE=&J+s^a z$_^w}pwiXb60;g4`QIw1n~^Q^llHu9>7c{yAC;2Kqe%Y#4?UDZEUO4JeHkHWFF*LE z<#-k*odM0odPGoya}d0I_+fY!D^QZ_i$-uI3hw*pNQ{aI2nayqhME_Oy2mC9ZXfQbHf6f(v;`>j%< z0|2(+v4krC!s*5s#XZlZRSQnE79BTJuuMTu1Gff%6VNx)9gzG%Cmv8sS3|}myyO}W zKlRi?+GuLvHmDDw@e~pfiBp zd!im=dl6r_$|t(GArOd^iE!tg0(XNyKah}#%xgsk^|fhfco{kT5qpUp_m=U4m+#(9 zq9lhf{`9F+D%G+u*8<%J0*;izVoL7~Bwny?4Cr-!gVzVW5<*i}v9b;my+NLXugtnj zJCK75hszL}sy6#@9AU)k&(C*5R}3F29*6TKurcitTTkNRn<=G?SU*s^4YJY`mX^NvcXgeztQ8;Z4l~L$$+kFmW~Z6i2QWlGBZaP= zND9E9WGb0D4dYqf8Chk<fSNiNEzANXW{fj)@jUhc(bI- zT4uxE?J_9--IUmUnA^(r@+9jU(_dW;{^lrBag~&`VZ@@PWE2jeKrqy`>*?wsl*7q2 z6BB`etx#W_kNEkM2!F3(HIjQae%MqD-FqA|v@o&4AtEL!%A7;Jpaa-9 zwlZex(-aMBp2V+ur8D5xnLn*IkuO@{(XK2&Hxv6+jE---c=sd{g6#`O4b;@0G}#x2 zm>a68ozoRkeI@92f`L=uB1T|uY*-jd`1Vks$pgUw6wI=E_3@!h`@ws{W%mp4P8vH% zh?;rClxKWPIpI+#_GyGEu`N+U>kT9mEq`L}ibQLSI)dH{Z=?FgY@)=m+fgCaNlA+tGh5k@tudNx|bWB9CcI@ zF7y2lV$oP|TtL@%?Cot{A)#*Y6^-`V{!?@wWKL1K%o-)j%MMUDTiO{t4Vh+dwK zvvfvWUw5>4abFC-SK42%O}jj-7SKju6RmK0GH&nwwgZ86;QtAh+17S#(N>B2$%>P* zHXi;<_=fbXjkVUH@)^RqX5yA%#wLfQpdBZN~D!pot2wDi$Lch6kA~1fB#Ks_Q)deYUk#uBh3!*bf{kJoyJz?}SuDIr*AKG#R zF5=joSddT`854uybgSXs!f68oDTO-wmD(+OaW=!o`DVi5z7}Cg6(( z8ZeO`fiINS$hc3O#1?@7k3hwqwe_s2#fs>rf78UaNoRP9Cmy=9?Nt@xr|`LteQnLs z7ZyA8P+wo)Z*C9sC>?&6Hw~NXH+d;r<0cM&5XhG*I*`L#{O})@8uPlNghr5(K zY;}hB<0g&^Xw9)+5au^Sgwpk?j5R-!nD&&4W~sG*RJT=O7<#p-i3uUL^GNA}n4G!K zsOnEr4CO1Rm7o+ugTuFW?ZA`GSicwzD38Mg@>=Tju#Uy!#nwmy#odQiXd1;ULZ=(7 zedPD4Fj(Qi$DB(DbWyOrD{$FVbn?yb-H6{IdOXng_Y3~s=sd0lc-RO~1HlJS55s0s zz?>kc-d+Q$h%N&gqwx^#IzAB8r2_1`{SK248hed6Z z$BbvOAz?(-syp;SyHf?%5xl4e$WSy&80oDzuzv&J(6a4bZgrIL3VIKxPqOnfT!wOs zXEFiG*?Ubj9kefm!BzZ3vrNaw@b{_uy!8RSry?_m`@V7>PUfxxme#ERV6e-9yK7u} ztE#up{lo_jPesmU&%0+orCra?uB)j*rfYktDNTI%9~&kkWD)we)s?}SIr|0^r)g&lAQ z4?cg79N}-iD%$?L|01Fj`=Zx0DSEPnV`mQw6MtoNfk*3d0PVa6rSWvd+A|>|+YlZQ z6dXK^loC*ZvwhDJp3+HrF*Z$e&jKP{KtxQ%#XavDMzA5$&%_c7fO}PpzH81`hL4-lh|0CD^R z0^D3&Fdm5Oj?3}`9+LS&oxJLoaeNX4On-E*C%;|9vl_GySk*8gL5ed3d*jFm|5y|M zaLkKo>2}%pO(f=7?(S*s_dm89Z>g>0QE&Z5z-0iPOgTT84hf`*}>$K)Mggg^oz z*8=qM2mH162E$`}xzRcsDX@{I2y(b4?*?a$1VbOjf!#Lu#d%;TaxpX%0}4>ds8{k1 zEBc#5$AmTrVd4srt94KcUn&h|$ScwT2i@WN>*CqYj^*8@`zzP<}~oxZr|xtAnE zffzoB+G+05NM|-kEwc=>mGk+<#ZN-N@_VtnaL{C7BzxTOQYp^N+}t-PPFq^8JwF1$ zi5>aS&oLo^8;1s-pF4i+7`#7dh@ql`HWpSLXjREI5Dme;7oJ$GN?hze60_Tb{})j)c7Ey2n={eVK7MQgWhDagX$LQ+=`lu8B^VF@0ss+m zitmXfYBsyiC??LlHYKT=^gL6M#G`Od%gc}C^c1`(7B>cAln?jg;i2y`3Kn zGMG{`;DY+y*cd|)X7D+Il}FN1Fo(xf?{m+RXC%FoJ@%9&80(7<@(cB6&1={(&M3P0N$y14x_ zyu-AEEQ;d%qV$R*5k%}toINlmn>PJER*uL3{b5o+maB!pLy|U!SX?(2W?IY2MUu5+ z7daQ%H^hL1K`t&xRPgV)zzX1aTxL|CbPf0)UP(e9WJonpn=~>FHn5#XZaeT@z!Mq7 zR3ez?F;_JT+uXFrq>Y1TWe#Z(Z;_Sm z)6#jz-|&y~MeiTqbYND`gE4ZTNJ-q!Wpgt}L90335*XrzIuD#B`g2C3{483i2>IMt z1R;XMJ;Ym^o4GhQeh*{v27JK)zy`|aCv=sVTa{HrdHUqZx#~`APRyy0+d#C8#$srA z7?B;dPv<;m(HOHmodm4wjm|f{^0R8B=_PfB`4me)jDjpU(TIZpU=AEe9~UN?jY%RZ z#x~46ul1x`kObNZqxScr($f3+mmey0-3&mlhTGJOc{cU@i>W&LV&0()MS4ZuzcNU0 zuiYEgwzo=uE$I7c%jFH);RgP)Rsw z9+`>5=YZri6rAIs3KW~##??>I559W+8snPsFq^z1RIz;N&tm4yMQjDXVeh7H+r;JN z3-R`Wi9p&`_K-Es@$IoK3Rlziro$$Ky(MRKaC{sSSB`Drk{3GvCt=0F*`@G4_$Zx( z76YO~7>jJEM;X@PN&HP_?Tq15YsADbwFGUaC}u2ty^*lHxW})w4FP)RRo5cD9jcPO z>BYs0o=*Xs!O2JY7_I}}`Zh{42vYpGbExYRhCQ$MN)ww3$&Vzoy@3h107l}yLwM`n zbmX+}-LvOX-RS8?wM9{iRYRmyFCNaW-2KHQ?G<7dn(gI=$-Sp&;+W*V+OdA>g8RbV z!y_p%@xt)49ag&3@%1t?a7r~n_ubg&D&Dj@69P3rS9vg=BNVsHc#4?5($SHmD}Q zMyA*VD|xu*^AyBL4PS?cRvu zgLm?X^W@{htXTCV1mM8ja~x5QC-*o(6K14m&#*ZMe=XB!J&~mHi5(zRR^UA>oVfPZyj+Q$5@_J+>hkNK` z+v2%Webq;GWTE0>XpUHpejF~)e zTnBxF5F5siE88a#?_i67Cl?r8sCe_saQeO_b$`IF_`VD1AsOqr#7i zM{VoYtyA`*8TBilq|aC(B7)g?T!y1d2q*a!hMDjw`F4ratdLwb#a-* z|AFP;UM?Gvp;Ai}-ar`TUpc_NA5_eULCilItprB6OwOT$k&E+0h6idg^e=A_?43%P zdN5as>HY%M79j)9-@GhxyN*uixpNB>_k3gHWm(vR8@g`3nCOia1FwLZ4`enjB&5Ss z4@KfEtoAC2)`ws^@B zv=|s;*93`15p~uLVv2%-Vlpx&QE&c3*_&~c|1RrnH{uiDR`h4O-pbG2J#$_5@e^~b zevFB1*|iR1(ftX!-I*AzNW;v~n;`)}mHR_6*8-DEIGagwKjZ1OCv>C~*aDY~Pp=|9MrT%`mUgr%u2X(!1! zISAS8VZIQY9QYxTUOB1!u zm$8robFBTxnTyFi(YwBgR@IuGifA0joPs1rMqJ!1I^|YhosItAowKu^ZvBGGgPuOk zy($OXZ;J*K4f7+nNX3^BT;Xt1AfJ`t#^Z{I7O8LR#-NH2Cc@iZQ*1c=MXC)RWM*pD z=OFId(-Xx%)Em`fU(V!{czA9O;R!J3*s{B=w>QI3MDy}>q4SAC=nl4UW?zfnCNDpi z_IV1Lk=?1)JZM>N!t4!g9q9%Ju~l5XM&qqhxlHkLeUBFZa&!d#<~TypJ1DKuweULd z_l&2P2z!1(L33-XjzD;VZe_-hYhiQ>HhxGz@#Cl`?-U|`!7e(bkAfN=y3-!=#Q6Al z%2DEZ24;JEe$jkBVDo$KSO5$Bhb;K zJ@TyX@3IafjS!Qf_NIf!P}|dzOOB0&epy>br-@@R&Ghnu_p^MMkA*a#@{U1>1d(|O z^a6d+%YZZxQ?@ePfAb&p^lbS$ez3_yp>=HReoYr5Aqw;J(f@5|a)V+*hWlDf3~0{- z#>Q9p)5{cPp`I~n?Ru5I%0H7$68I;{ZR3~d}(3NPcy)!k1lHVs{{?TvcLbh zI0te}$SHy}G=D`B?&rixXw;P0h>RU2wi*!Z-a?MRf|%8a!36(&^8rLPfoq9Gwmlyg nLG^OJ8DFYi`hWYwUNpRoXLUUcpZnmK)9h5+t$It@?63a=*zt|F From 74af60c3f7d5be24dd584214dcec7ed4b71a926c Mon Sep 17 00:00:00 2001 From: Jesse Cooke Date: Thu, 14 Sep 2023 17:14:39 +0200 Subject: [PATCH 21/40] =?UTF-8?q?=E2=9C=A8Add=20support=20for=20ilia=20des?= =?UTF-8?q?ktop=20executor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ilia is used by Regolith Linux (Ubuntu+i3/sway). Ilia has a slightly different presentation and prompt setup than other pickers, and it makes more sense to use the given GTK icon instead of the emoji character since that is what it seems to support. Nicely explained by @jc00ke here: https://github.com/marty-oehme/bemoji/pull/21#discussion_r1306212419 With the growing amount of picker tools supported out of the box it seems more practical to have them together in a simple list that can grow and through which we can always iterate instead of a cumbersome growing if-else chain. This commit also refactors the pick tool selection to be stored in a bash hash map instead. --- CHANGELOG.md | 1 + README.md | 9 +++++++-- bemoji | 34 +++++++++++++++++++++------------- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ce174c..1b9b5da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Add default support for `ilia` gtk-based picker tool, used by default in Regolith Linux - Pass through return code 1 from selection tool - (!) Number of displayed recent emoji can be set with `-P` option: This replaces previous `-P` history flag toggle. Use number to set amount of recent diff --git a/README.md b/README.md index 0b7af3f..a946f9b 100644 --- a/README.md +++ b/README.md @@ -284,7 +284,12 @@ If you have an idea or improvement, don't hesitate to open a merge request! This project makes use of [bash-bats](https://github.com/bats-core/bats-core) (community fork) to test some of its functionality. -To run the tests locally, simply execute `./test/bats/bin/bats test`. +To run the tests locally: +``` +git submodule init +git submodule update +./test/bats/bin/bats test +``` I would suggest running the test suite in docker instead, just to minimize the possibility of something going awry and borking up your local file system. -To run the tests in a docker suite, execute `docker run --rm -it -v "$PWD:/code" bats/bats:latest /code/test` +To run the tests in a docker suite, execute `docker run --rm -it -v "$PWD:/code" bats/bats:latest /code/test` after initializing the git submodules as listed above. diff --git a/bemoji b/bemoji index 82464cb..a3fd400 100755 --- a/bemoji +++ b/bemoji @@ -20,6 +20,14 @@ bm_private_mode=${BEMOJI_PRIVATE_MODE:-false} # Do not sort results bm_limit_recent="$BEMOJI_LIMIT_RECENT" +declare -A default_pickers=( + ["bemenu"]="bemenu -p 🔍 -i -l 20" + ["wofi"]="wofi -p 🔍 -i --show dmenu" + ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" + ["dmenu"]="dmenu -p 🔍 -i -l 20" + ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" +) + # Report usage usage() { echo "Usage: $(basename "$0") [-t | -c | -e] [-f ] [-p] [-P] [-D ]" 1>&2 @@ -227,7 +235,7 @@ _clipper() { fi } -# Set default typing uti +# Set default typing util _typer() { if [ -n "$BEMOJI_TYPE_CMD" ]; then # shellcheck disable=SC2068 @@ -251,18 +259,18 @@ _picker() { if [ -n "$BEMOJI_PICKER_CMD" ]; then # shellcheck disable=SC2068 ${BEMOJI_PICKER_CMD[@]} - elif command -v bemenu >/dev/null 2>&1; then - bemenu -p 🔍 -i -l 20 - elif command -v wofi >/dev/null 2>&1; then - wofi -p 🔍 -i --show dmenu - elif command -v rofi >/dev/null 2>&1; then - rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2" - elif command -v dmenu >/dev/null 2>&1; then - dmenu -p 🔍 -i -l 20 - else - printf "No suitable picker tool found." - exit 1 - fi + return + fi + + for tool in "${!default_pickers[@]}"; do + if command -v "$tool" >/dev/null 2>&1; then + ${default_pickers[$tool]} + return + fi + done + + printf "No suitable picker tool found." 1>&2 + exit 1 } parse_cli "$@" From b97c09828dd6294bb357ab401da4708d255bc016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Tue, 28 Nov 2023 10:53:31 +0100 Subject: [PATCH 22/40] =?UTF-8?q?=E2=9C=A8=20Add=20support=20for=20fuzzel?= =?UTF-8?q?=20desktop=20executor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fuzzel is a wayland-native picker which support dmenu-like picking based on standard input. --------- Co-authored-by: Marty Oehme --- CHANGELOG.md | 1 + README.md | 2 +- bemoji | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b9b5da..75d5b7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Add default support for `fuzzel` wayland-native picker tool - Add default support for `ilia` gtk-based picker tool, used by default in Regolith Linux - Pass through return code 1 from selection tool - (!) Number of displayed recent emoji can be set with `-P` option: diff --git a/README.md b/README.md index a946f9b..312672c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Will remember your favorite emojis and give you quick access. ### Dependencies -* One of `bemenu`, `wofi`, `rofi`, `dmenu`, or supplying your own picker. +* One of `bemenu`, `wofi`, `rofi`, `dmenu`, `ilia`, `fuzzel` or supplying your own picker. * One of `wl-copy`, `xclip`, `xsel` or supplying your own clipboard tool. * One of `wtype`, `xdotool` or supplying your own typing tool. * `sed`, `grep`, `cut`, `sort`, `uniq`, `tr`, `curl` if using the download functionality. diff --git a/bemoji b/bemoji index a3fd400..7574a4d 100755 --- a/bemoji +++ b/bemoji @@ -26,6 +26,7 @@ declare -A default_pickers=( ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" ["dmenu"]="dmenu -p 🔍 -i -l 20" ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" + ["fuzzel"]="fuzzel -d -p 🔍" ) # Report usage From 7b5b3e6e469089a1684ba856ff6a7a36e4caae6a Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 11 Jan 2024 09:22:20 +0100 Subject: [PATCH 23/40] =?UTF-8?q?=F0=9F=A6=8A=20Migrate=20major=20woodpeck?= =?UTF-8?q?er=20ci=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrated to newer woodpecker version requiring different pipeline naming scheme, see https://woodpecker-ci.org/docs/migrations. --- .woodpecker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index ff38c43..aea8ba6 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,4 +1,4 @@ -pipeline: +steps: test: image: bats/bats commands: From e14010eb5302ca3f6076342d95e91915c9861b02 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 11 Jan 2024 10:58:11 +0100 Subject: [PATCH 24/40] =?UTF-8?q?=F0=9F=90=9B=20Print=20user=20messages=20?= =?UTF-8?q?to=20stderr=20(#27)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, any messages only intended for the user (status messages, warnings, errors) were sent over stdout. The actual emoji items are also sent to the pickers over stdout so they would sometimes pick up the messages and show them as an option to pick. If history is enabled, we then also save the falsely included items there to forever display as an option. This commit changes internal messages to all be sent over stderr instead, so they should not be picked up by any external programs we hand off to. --- CHANGELOG.md | 1 + bemoji | 19 +++++++++++------- test/bemoji_errors.bats | 43 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 test/bemoji_errors.bats diff --git a/CHANGELOG.md b/CHANGELOG.md index 75d5b7f..88968a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Always download from newest emoji list url - Pass selection to custom typing tools through stdin +- Pass info messages to stderr to avoid passing to picker tools diff --git a/bemoji b/bemoji index 7574a4d..433ffb0 100755 --- a/bemoji +++ b/bemoji @@ -59,6 +59,11 @@ version() { exit } +msg() { +# Outputs a message to stderr, to be used for info, warning and error messages. + printf "%s\n" "$1" >&2 +} + parse_cli() { while getopts cD:ef:hnpP:tv-: arg "$@"; do case "$arg" in @@ -130,7 +135,7 @@ prepare_db() { if [ -n "$BEMOJI_DOWNLOAD_LIST" ]; then # Populate default lists if echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'none'; then - printf "Not downloading a default emoji list.\n" + msg "Not downloading a default emoji list." return elif echo "$BEMOJI_DOWNLOAD_LIST" | grep -q -e 'all'; then dl_default_emoji @@ -158,19 +163,19 @@ dl_default_emoji() { local emojis emojis=$(curl -sSL "https://unicode.org/Public/emoji/latest/emoji-test.txt") printf "%s" "$emojis" | sed -ne 's/^.*; fully-qualified.*# \(\S*\) \S* \(.*$\)/\1 \2/gp' >"$bm_db_location/emojis.txt" - printf "Downloaded default emoji set.\n" + msg "Downloaded default emoji set." } dl_math_symbols() { curl -sSL "https://unicode.org/Public/math/latest/MathClassEx-15.txt" | grep -ve '^#' | cut -d';' -f3,7 | sed -e 's/;/ /' >"$bm_db_location/math.txt" - printf "Downloaded math symbols set.\n" + msg "Downloaded math symbols set." } dl_nerd_symbols() { local nerd all nerd=$(curl -sSL "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/css/nerd-fonts-generated.css") all+=$(printf "%s" "$nerd" | sed -ne '/\.nf-/p' -e '/\s*[^_]content:/p' | sed -e 'N;s/^\.nf-\(.*\):before.* content: \"\\\(.*\)\";/\\U\2 \1/') echo -e "$all" > "$bm_db_location/nerdfont.txt" - printf "Downloaded nerdfont symbols set.\n" + msg "Downloaded nerdfont symbols set." } gather_emojis() { @@ -231,7 +236,7 @@ _clipper() { elif [ -n "$DISPLAY" ] && command -v xsel >/dev/null 2>&1; then xsel -b else - printf "No suitable clipboard tool found." + msg "No suitable clipboard tool found." exit 1 fi } @@ -250,7 +255,7 @@ _typer() { elif [ -n "$DISPLAY" ] && command -v xdotool >/dev/null 2>&1; then xdotool type --delay 30 "$totype" else - printf "No suitable typing tool found." + msg "No suitable typing tool found." exit 1 fi } @@ -270,7 +275,7 @@ _picker() { fi done - printf "No suitable picker tool found." 1>&2 + msg "No suitable picker tool found." exit 1 } diff --git a/test/bemoji_errors.bats b/test/bemoji_errors.bats new file mode 100644 index 0000000..6345e72 --- /dev/null +++ b/test/bemoji_errors.bats @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +setup_file() { + # make bemoji executable from anywhere relative to current testfile + TEST_DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + PATH="$TEST_DIR/..:$PATH" +} + +setup() { + load 'test_helper/bats-support/load' + load 'test_helper/bats-assert/load' + + # set up small default set of test emoji for each test + export BEMOJI_DB_LOCATION="$BATS_TEST_TMPDIR/database" + export BEMOJI_HISTORY_LOCATION="$BATS_TEST_TMPDIR/history" + mkdir -p "$BEMOJI_DB_LOCATION" "$BEMOJI_HISTORY_LOCATION" + cat "$BATS_TEST_DIRNAME/resources/test_emoji.txt" > "$BEMOJI_DB_LOCATION/emoji.txt" + + # these tests require stdout to be separated from stderr + # such run flags were only introduced in recent bats version + bats_require_minimum_version 1.5.0 +} + +@test "Prints clipper error to stderr" { + BEMOJI_PICKER_CMD="echo hi" run --separate-stderr bemoji 3>&- + assert_output "" + output="$stderr" + assert_output "No suitable clipboard tool found." +} + +@test "Prints picker error to stderr" { + run --separate-stderr bemoji 3>&- + assert_output "" + output="$stderr" + assert_output "No suitable picker tool found." +} + +@test "Prints typer error to stderr" { + BEMOJI_PICKER_CMD="echo hi" run --separate-stderr bemoji -t 3>&- + assert_output "" + output="$stderr" + assert_output "No suitable typing tool found." +} From cb3d8fd5d650fe83c7b93985f465b8ffb6ca72c0 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 11 Jan 2024 11:17:47 +0100 Subject: [PATCH 25/40] =?UTF-8?q?=F0=9F=90=9B=20Remove=20deprecated=20wood?= =?UTF-8?q?pecker=20ci=20conditions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tag condition (when: event: tag) filters are not generalized to `ref` instead of the old `tag` key. This switches them to the new version. See https://woodpecker-ci.org/docs/usage/workflow-syntax#when---conditional-execution --- .woodpecker.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index aea8ba6..2bd10d1 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -8,7 +8,7 @@ steps: # prepare changelog and version information for release candidate when: event: tag - tag: v* + ref: refs/tags/v* image: alpine commands: - sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt @@ -18,7 +18,7 @@ steps: # ensure we correctly bumped versions when: event: tag - tag: v* + ref: refs/tags/v* image: alpine secrets: [ github_release_token, github_repo ] commands: @@ -35,7 +35,7 @@ steps: build: when: event: tag - tag: v* + ref: refs/tags/v* image: savant/md2man commands: - apk update && apk add zip @@ -53,7 +53,7 @@ steps: group: release when: event: tag - tag: v* + ref: refs/tags/v* image: plugins/gitea-release settings: api_key: @@ -66,7 +66,7 @@ steps: release-github: when: event: tag - tag: v* + ref: refs/tags/v* image: alpine secrets: [ github_release_token, github_repo ] commands: From 551e3468d81075d048449729d614721d968502e1 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 11 Jan 2024 11:20:03 +0100 Subject: [PATCH 26/40] =?UTF-8?q?=F0=9F=93=96=20Bump=20license=20copyright?= =?UTF-8?q?=20year?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumping the year again. I am honestly not entirely sure what the best or correct way to display this is - so I am simply copying what the `curl` project is doing and stating the whole period of me working on it. Perhaps one day (should we get more contributors or much more popular) it may also make sense to copy its `THANKS` file to keep a stable copy of my contributing helpers. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 2fb93db..b54ccfe 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Marty Oehme +Copyright (c) 2021 - 2024 Marty Oehme Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 46fa824d42a6f977ed41e1980d829d81a07f9b62 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 22 Feb 2024 13:46:18 +0100 Subject: [PATCH 27/40] =?UTF-8?q?=F0=9F=90=9B=20Remove=20deprecated=20CI?= =?UTF-8?q?=20instruction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 2bd10d1..8f03a5b 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -50,7 +50,6 @@ steps: - mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip ../dist release-gitea: - group: release when: event: tag ref: refs/tags/v* From 1cf9971d8bcacfcb34213b57a53e2a80b5de7686 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 22 Feb 2024 13:42:06 +0100 Subject: [PATCH 28/40] =?UTF-8?q?=F0=9F=93=96=20Bump=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 20 ++++++++++++++------ bemoji | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88968a7..e6cc773 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + + + + + + + + + + + + +## [0.4.0] - 2024-02-22 + ### Added - Add default support for `fuzzel` wayland-native picker tool @@ -30,18 +44,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 by default). - (!) `XDG_CACHE_LOCATION` renamed to `XDG_HISTORY_LOCATION` to better signify its purpose - - - - ### Fixed - Always download from newest emoji list url - Pass selection to custom typing tools through stdin - Pass info messages to stderr to avoid passing to picker tools - - ## [0.3.0] - 2022-11-10 ### Added diff --git a/bemoji b/bemoji index 433ffb0..21bb557 100755 --- a/bemoji +++ b/bemoji @@ -1,6 +1,6 @@ #!/usr/bin/env bash -bm_version=0.3.0 +bm_version=0.4.0 # Emoji default database location bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} # Setting custom emoji list file location: From ab105473366d37d34a9f4e9f117271487d28c9e1 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Wed, 17 Apr 2024 10:20:57 +0200 Subject: [PATCH 29/40] =?UTF-8?q?=F0=9F=93=96=20Add=20example=20for=20sett?= =?UTF-8?q?ing=20manual=20picker=20to=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 312672c..6eae478 100644 --- a/README.md +++ b/README.md @@ -235,7 +235,13 @@ BEMOJI_TYPE_CMD="path/to/your/xdotool" The candidate list (in the case of picker tool) or the picked selection are passed to the tools through stdin. -This is pretty experimental and you'll have to see how well it works for you. +For example, to manually invoke fuzzel with no extra options as the picker for bemoji you would use: + +```bash +BEMOJI_PICKER_CMD="fuzzel -d" bemoji +``` + +This is somewhat experimental still and you'll have to see how well it works for you. The setting can not be changed through the commandline alone. ### Execute a custom command with my emoji From cc9f809446f75a67e2128749537c51dd9558eec8 Mon Sep 17 00:00:00 2001 From: Lena Fuhrimann <6780471+cloudlena@users.noreply.github.com> Date: Wed, 17 Apr 2024 10:39:20 +0200 Subject: [PATCH 30/40] =?UTF-8?q?=F0=9F=A6=8A=20Add=20padding=20for=20fuzz?= =?UTF-8?q?el=20prompt=20(#28)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bemoji | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bemoji b/bemoji index 21bb557..a472e0e 100755 --- a/bemoji +++ b/bemoji @@ -26,7 +26,7 @@ declare -A default_pickers=( ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" ["dmenu"]="dmenu -p 🔍 -i -l 20" ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" - ["fuzzel"]="fuzzel -d -p 🔍" + ["fuzzel"]="fuzzel -d -p '🔍 '" ) # Report usage From 5bd53808a42d3d82c8bf9a0ab0bf4e4d7084f2de Mon Sep 17 00:00:00 2001 From: s-ol Date: Thu, 6 Feb 2025 14:37:44 +0100 Subject: [PATCH 31/40] =?UTF-8?q?=E2=9C=A8=20Add=20default=20support=20for?= =?UTF-8?q?=20wmenu=20picker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds support for [wmenu](https://codeberg.org/adnano/wmenu), #37. --- bemoji | 1 + 1 file changed, 1 insertion(+) diff --git a/bemoji b/bemoji index a472e0e..1a5495a 100755 --- a/bemoji +++ b/bemoji @@ -25,6 +25,7 @@ declare -A default_pickers=( ["wofi"]="wofi -p 🔍 -i --show dmenu" ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" ["dmenu"]="dmenu -p 🔍 -i -l 20" + ["wmenu"]="wmenu -p 🔍 -i -l 20" ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" ["fuzzel"]="fuzzel -d -p '🔍 '" ) From bf9be79c3187a51733e44d9f30124c2fd43ac2c5 Mon Sep 17 00:00:00 2001 From: Karun Sandhu <129101708+MrSom3body@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:02:13 +0100 Subject: [PATCH 32/40] =?UTF-8?q?=F0=9F=90=9B=20Fix=20command=20evaluation?= =?UTF-8?q?=20for=20pickers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #28. --- bemoji | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bemoji b/bemoji index 1a5495a..1f61ae9 100755 --- a/bemoji +++ b/bemoji @@ -264,14 +264,13 @@ _typer() { # Set default picker util _picker() { if [ -n "$BEMOJI_PICKER_CMD" ]; then - # shellcheck disable=SC2068 - ${BEMOJI_PICKER_CMD[@]} + eval "${BEMOJI_PICKER_CMD[*]}" return fi for tool in "${!default_pickers[@]}"; do if command -v "$tool" >/dev/null 2>&1; then - ${default_pickers[$tool]} + eval "${default_pickers[$tool]}" return fi done From d66a1071abe891722c22b60f14716d5a034d69b2 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 15:57:42 +0100 Subject: [PATCH 33/40] =?UTF-8?q?=F0=9F=93=96=20Switch=20all=20compatible?= =?UTF-8?q?=20README=20codes=20to=20sh=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 6eae478..ee75996 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ see Options below. Option 1. Clone the repository and put the executable somewhere in your path: -```bash +```sh git clone chmod +x bemoji/bemoji mv bemoji/bemoji /usr/local/bin/bemoji @@ -35,7 +35,7 @@ rm -r bemoji Option 2. Clone the repository and link the executable to your path: -```bash +```sh git clone chmod +x bemoji/bemoji ln -s bemoji/bemoji /usr/local/bin/bemoji @@ -45,7 +45,7 @@ ln -s bemoji/bemoji /usr/local/bin/bemoji On Arch Linux, bemoji has been packaged for the [AUR](https://aur.archlinux.org/packages?K=bemoji) so it can be installed manually from here or easily with your preferred AUR helper, e.g.: -```bash +```sh paru -S bemoji # or bemoji-git ``` @@ -117,7 +117,7 @@ The description can have as many words and whitespaces as you want. By default, bemoji will sort the list it displays by your most frequently and most recently used emoji. To disable this behavior, execute bemoji like the following: -```bash +```sh bemoji --hist-limit 0 ``` @@ -125,7 +125,7 @@ This will stop bemoji from adding recently used emoji before displaying the list You can also stop bemoji from adding any emoji to your history in the first place: -```bash +```sh bemoji --private ``` @@ -133,16 +133,16 @@ This will not add any of the emoji you pick to your recent emojis. Put both together to completely ignore the recent emoji feature of the program (these are the equivalent short versions of the options above): -```bash +```sh bemoji -p -P0 ``` Like this, you'll be hiding any recent personal emoji and no one will know that you always type 👄🍆💦. -To limit the number of your recently used emoji that are shown without hiding them completely simply increase the number to however many you wish to display. +To limit the number of your recently used emoji that are shown without hiding them completely simply increase the number to however many you wish to display. For example, to display only the top 4 recently used emoji: -```bash +```sh bemoji --hist-limit 4 ``` @@ -160,7 +160,7 @@ removing, adding or changing the emoji appearing there. You can overwrite the directories bemoji uses for its emoji lists and history files with the following two environment variables: -``` +```sh BEMOJI_DB_LOCATION=/path/to/my/emoji/directory BEMOJI_HISTORY_LOCATION=/path/to/my/state/directory ``` @@ -171,7 +171,7 @@ There are no equivalent commandline arguments to overwrite these two settings. A custom emoji list can be supplied as commandline argument `-f` or `BEMOJI_CUSTOM_LIST` environment variable. -```bash +```sh bemoji --file path/to/my/list.txt ``` @@ -181,7 +181,7 @@ To display *only* the emoji list passed in, pass an extra `-P` flag to bemoji. The path can also be a weblink which bemoji will download and use: -```bash +```sh bemoji -f "https://raw.githubusercontent.com/jchook/emoji-menu/master/data/emojis.txt" ``` @@ -191,14 +191,14 @@ bemoji automatically downloads an emoji list for you to use on first invocation. By default, it only downloads emoji, though you can have it download math symbols and nerdfont icons as well. To download additional sets, execute bemoji like the following: -```bash +```sh bemoji --download all ``` This will download *all* default sets bemoji knows - which is currently the default emoji list, nerd font icons, and a long list of math symbols. Other valid options for this setting are `emoji`, `math`, `nerd`, `none`. -```bash +```sh bemoji -D "math emoji nerd" ``` @@ -217,7 +217,7 @@ which skips to a new line in most circumstances. If you wish to prevent this character in the final output, use: -```bash +```sh bemoji -n ``` @@ -227,7 +227,7 @@ Using this option will suppress the newline character and *only* print `🦊` as If you want to replace one of the default supported tools with your own you can do this through environment variables: -```bash +```sh BEMOJI_PICKER_CMD="path/to/your/picker-tool" BEMOJI_CLIP_CMD="path/to/your/clipboard/tool" BEMOJI_TYPE_CMD="path/to/your/xdotool" @@ -237,7 +237,7 @@ The candidate list (in the case of picker tool) or the picked selection are pass For example, to manually invoke fuzzel with no extra options as the picker for bemoji you would use: -```bash +```sh BEMOJI_PICKER_CMD="fuzzel -d" bemoji ``` @@ -264,7 +264,7 @@ This is just an example to show how the echo mode works. What follows is a list of all environment variables bemoji understands, with their default settings -```bash +```sh BEMOJI_DB_LOCATION="$XDG_DATA_HOME/bemoji" # where the emoji lists reside BEMOJI_HISTORY_LOCATION="$XDG_STATE_HOME" # where the state file resides BEMOJI_CUSTOM_LIST="" # the custom emoji list to display @@ -291,7 +291,8 @@ If you have an idea or improvement, don't hesitate to open a merge request! This project makes use of [bash-bats](https://github.com/bats-core/bats-core) (community fork) to test some of its functionality. To run the tests locally: -``` + +```sh git submodule init git submodule update ./test/bats/bin/bats test From c900f2ce14540242620fbcdd47464c71f01a0a09 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 15:58:56 +0100 Subject: [PATCH 34/40] =?UTF-8?q?=F0=9F=93=96=20Add=20table=20for=20all=20?= =?UTF-8?q?env=20vars=20and=20options?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Should hopefully serve as a better overview of what option corresponds to which environment variable and how they work. Fixes #33. --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index ee75996..54d6080 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,22 @@ This is just an example to show how the echo mode works. What follows is a list of all environment variables bemoji understands, with their default settings +| Description | Commandline option | env | default | +| --- | --- | --- | --- | +| enable/disable newline | -n, --noline | BEMOJI_ECHO_NEWLINE | true | +| enable private mode | -p,--private | BEMOJI_PRIVATE_MODE | false | +| limit history items | -P,--hist-limit | BEMOJI_LIMIT_RECENT | | +| download specific emoji lists | -D,--download | BEMOJI_DOWNLOAD_LIST | | +| read emoji from file | -f,--file | BEMOJI_CUSTOM_LIST | | +| emoji lists directory | | BEMOJI_DB_LOCATION | $XDG_DATA_HOME/bemoji | +| emoji history directory | | BEMOJI_HISTORY_LOCATION | $XDG_STATE_HOME | +| custom default command | | BEMOJI_DEFAULT_CMD | | +| custom type command | | BEMOJI_TYPE_CMD | | +| custom pick command | | BEMOJI_PICKER_CMD | | +| custom clip command | | BEMOJI_CLIP_CMD | | + +The environment variables have the following effects: + ```sh BEMOJI_DB_LOCATION="$XDG_DATA_HOME/bemoji" # where the emoji lists reside BEMOJI_HISTORY_LOCATION="$XDG_STATE_HOME" # where the state file resides @@ -278,6 +294,18 @@ BEMOJI_LIMIT_RECENT="" # whether to display recent entries BEMOJI_ECHO_NEWLINE=true # whether to end the output with a newline character ``` +They can either be set like `export BEMOJI_LIMIT_RECENT=5` before executing `bemoji` and will +remain in the shell environment. +Or they can be set for just a single run of `bemoji` like this: + +```sh +BEMOJI_ECHO_NEWLINE=true BEMOJI_PRIVATE_MODE=true bemoji +``` + +This is especially useful for advanced configurations like custom commands which do not have an +equivalent option to be set. Be careful with setting environment variables as setting them wrong +or forgetting about them can have detrimental impacts on the functionality of this program! + ## 🤗 Issues Thanks for checking this program out! ❤ From 7543cca7d6b06d57ec5c802a1bab082339552711 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:00:56 +0100 Subject: [PATCH 35/40] =?UTF-8?q?=F0=9F=93=96=20Add=20known=20issue=20with?= =?UTF-8?q?=20wtype=20GUI=20applications?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added short description of #34 and the corresponding workaround given by @arminius-smh. --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 54d6080..307a6b7 100644 --- a/README.md +++ b/README.md @@ -314,6 +314,23 @@ If there are any problems, don't hesitate to open an issue. If you have an idea or improvement, don't hesitate to open a merge request! +### Known issues + +There is a known issue concerning some GUI application which do not receive the correct emojis +when auto-typing and instead a bunch of empty unicode squares. +It seems to be an issue with `wtype` and may need to be fixed upstream. + +Unfortunately, `wtype` is the only stable wayland typing backend to my current knowledge. +Until `bemoji` supports more typing backends on wayland, a workaround seems to be to save the +emoji to the clipboard and have a typing tool paste the contents of the clipboard directly, +like the following: + +```sh +bemoji -cn && echo key ctrl+v | dotool +``` + +The issue is tracked at [#34](https://github.com/marty-oehme/bemoji/issues/34). + ### Running tests This project makes use of [bash-bats](https://github.com/bats-core/bats-core) (community fork) to test some of its functionality. From 155114aaec59df2c45e21f20889daa6ed6afc943 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:25:02 +0100 Subject: [PATCH 36/40] =?UTF-8?q?=F0=9F=90=9B=20Fix=20newline=20option=20o?= =?UTF-8?q?nly=20applied=20to=20main=20command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When sending an emoji to clipboard or typing it with the and shortcuts (currently only in rofi) the set newline option would not be applied. This fixes it and unifies the way emoji are printed using printf. Fixes #41. --- bemoji | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bemoji b/bemoji index 1f61ae9..af5560f 100755 --- a/bemoji +++ b/bemoji @@ -287,6 +287,14 @@ exit_value="$?" [ "$bm_private_mode" = true ] || add_to_recent "$result" result=$(echo "$result" | grep -o '^\S\+' | tr -d '\n') +printout() { # $1=emoji + if [ "$bm_echo_newline" = true ]; then + printf "%s\n" "$*" + else + printf "%s" "$*" + fi +} + case "$exit_value" in 1) exit 1 @@ -295,21 +303,20 @@ case "$exit_value" in if [ ${#bm_cmds[@]} -eq 0 ]; then if [ -n "$bm_default_cmd" ]; then # shellcheck disable=SC2068 - echo "$result" | ${bm_default_cmd[@]} + printout "$result" | ${bm_default_cmd[@]} exit fi bm_cmds+=(_clipper) fi for cmd in "${bm_cmds[@]}"; do - [ "$bm_echo_newline" = true ] && echo_opts= || echo_opts=-n - echo $echo_opts "$result" | "$cmd" + printout "$result" | "$cmd" done ;; 10) - echo "$result" | _clipper + printout "$result" | _clipper ;; 11) - echo "$result" | _typer + printout "$result" | _typer ;; esac exit From b9c4ea7c77efd81584bac2d4c5c2b99dd22a469f Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:27:08 +0100 Subject: [PATCH 37/40] =?UTF-8?q?=F0=9F=A6=8A=20Reformat=20code=20with=20s?= =?UTF-8?q?hfmt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bemoji | 184 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/bemoji b/bemoji index af5560f..50b9898 100755 --- a/bemoji +++ b/bemoji @@ -21,38 +21,38 @@ bm_private_mode=${BEMOJI_PRIVATE_MODE:-false} bm_limit_recent="$BEMOJI_LIMIT_RECENT" declare -A default_pickers=( - ["bemenu"]="bemenu -p 🔍 -i -l 20" - ["wofi"]="wofi -p 🔍 -i --show dmenu" - ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" - ["dmenu"]="dmenu -p 🔍 -i -l 20" - ["wmenu"]="wmenu -p 🔍 -i -l 20" - ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" - ["fuzzel"]="fuzzel -d -p '🔍 '" + ["bemenu"]="bemenu -p 🔍 -i -l 20" + ["wofi"]="wofi -p 🔍 -i --show dmenu" + ["rofi"]="rofi -p 🔍 -i -dmenu --kb-custom-1 "Alt+1" --kb-custom-2 "Alt+2"" + ["dmenu"]="dmenu -p 🔍 -i -l 20" + ["wmenu"]="wmenu -p 🔍 -i -l 20" + ["ilia"]="ilia -n -p textlist -l 'Emoji' -i desktop-magnifier" + ["fuzzel"]="fuzzel -d -p '🔍 '" ) # Report usage usage() { - echo "Usage: $(basename "$0") [-t | -c | -e] [-f ] [-p] [-P] [-D ]" 1>&2 - echo - echo "A simple emoji picker. Runs on bemenu/wofi/rofi/dmenu by default." - echo "Invoked without arguments sends the picked emoji to the clipboard." - echo - echo " Command options (can be combined):" - echo " -t, --type Simulate typing the emoji choice with the keyboard." - echo " -c, --clip Send emoji choice to the clipboard. (default)" - echo " -e, --echo Only echo out the picked emoji." - echo "" - echo " Other options:" - echo " -n, --noline Do not print a newline after the picked emoji." - echo " -p, --private Do not save picked emoji to recent history." - echo " -P, --hist-limit Limit number of recent emoji to display." - echo " -D, --download Choose from default lists to download." - echo " Valid choices: all|none|emoji|math|nerd (multiple choices possible)." - echo " -f, --file Use a custom emoji database. Can be a url which will be retrieved." - echo " -v, --version Display current program version and directory configuration." - echo " -h, --help Show this help." - echo - exit "$1" + echo "Usage: $(basename "$0") [-t | -c | -e] [-f ] [-p] [-P] [-D ]" 1>&2 + echo + echo "A simple emoji picker. Runs on bemenu/wofi/rofi/dmenu by default." + echo "Invoked without arguments sends the picked emoji to the clipboard." + echo + echo " Command options (can be combined):" + echo " -t, --type Simulate typing the emoji choice with the keyboard." + echo " -c, --clip Send emoji choice to the clipboard. (default)" + echo " -e, --echo Only echo out the picked emoji." + echo "" + echo " Other options:" + echo " -n, --noline Do not print a newline after the picked emoji." + echo " -p, --private Do not save picked emoji to recent history." + echo " -P, --hist-limit Limit number of recent emoji to display." + echo " -D, --download Choose from default lists to download." + echo " Valid choices: all|none|emoji|math|nerd (multiple choices possible)." + echo " -f, --file Use a custom emoji database. Can be a url which will be retrieved." + echo " -v, --version Display current program version and directory configuration." + echo " -h, --help Show this help." + echo + exit "$1" } version() { @@ -61,70 +61,70 @@ version() { } msg() { -# Outputs a message to stderr, to be used for info, warning and error messages. + # Outputs a message to stderr, to be used for info, warning and error messages. printf "%s\n" "$1" >&2 } parse_cli() { - while getopts cD:ef:hnpP:tv-: arg "$@"; do - case "$arg" in - c) bm_cmds+=(_clipper) ;; - D) _opt_set_download_list "${OPTARG}" ;; - e) bm_cmds+=(cat) ;; - f) _opt_set_custom_list "${OPTARG}" ;; - h) usage 0 ;; - n) bm_echo_newline=false ;; - p) bm_private_mode=true ;; - P) _opt_set_hist_limit "${OPTARG}" ;; - t) bm_cmds+=(_typer) ;; - v) version ;; - -) - LONG_OPTARG="${OPTARG#*=}" - case "$OPTARG" in - clip) bm_cmds+=(_clipper) ;; - download=?*) _opt_set_download_list "${LONG_OPTARG}" ;; - download*) - _opt_set_download_list "${*:$OPTIND:1}" - OPTIND=$((OPTIND + 1)) - ;; - echo) bm_cmds+=(cat) ;; - file=?*) _opt_set_custom_list "${LONG_OPTARG}" ;; - file*) - _opt_set_custom_list "${*:$OPTIND:1}" - OPTIND=$((OPTIND + 1)) - ;; - help) usage 0 ;; - noline) bm_echo_newline=false ;; - private) bm_private_mode=true ;; - hist-limit=?*) _opt_set_hist_limit "${LONG_OPTARG}" ;; - hist-limit*) - _opt_set_hist_limit "${*:$OPTIND:1}" - OPTIND=$((OPTIND + 1)) - ;; - type) bm_cmds+=(_typer) ;; - version) version ;; - '') break ;; - *) - echo "Unknown option: ${OPTARG}" 1>&2 - usage 1 - ;; - esac - ;; - \?) exit 2 ;; - esac - done - shift $((OPTIND - 1)) - OPTIND=1 + while getopts cD:ef:hnpP:tv-: arg "$@"; do + case "$arg" in + c) bm_cmds+=(_clipper) ;; + D) _opt_set_download_list "${OPTARG}" ;; + e) bm_cmds+=(cat) ;; + f) _opt_set_custom_list "${OPTARG}" ;; + h) usage 0 ;; + n) bm_echo_newline=false ;; + p) bm_private_mode=true ;; + P) _opt_set_hist_limit "${OPTARG}" ;; + t) bm_cmds+=(_typer) ;; + v) version ;; + -) + LONG_OPTARG="${OPTARG#*=}" + case "$OPTARG" in + clip) bm_cmds+=(_clipper) ;; + download=?*) _opt_set_download_list "${LONG_OPTARG}" ;; + download*) + _opt_set_download_list "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + echo) bm_cmds+=(cat) ;; + file=?*) _opt_set_custom_list "${LONG_OPTARG}" ;; + file*) + _opt_set_custom_list "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + help) usage 0 ;; + noline) bm_echo_newline=false ;; + private) bm_private_mode=true ;; + hist-limit=?*) _opt_set_hist_limit "${LONG_OPTARG}" ;; + hist-limit*) + _opt_set_hist_limit "${*:$OPTIND:1}" + OPTIND=$((OPTIND + 1)) + ;; + type) bm_cmds+=(_typer) ;; + version) version ;; + '') break ;; + *) + echo "Unknown option: ${OPTARG}" 1>&2 + usage 1 + ;; + esac + ;; + \?) exit 2 ;; + esac + done + shift $((OPTIND - 1)) + OPTIND=1 } _opt_set_custom_list() { - BEMOJI_CUSTOM_LIST="$1" + BEMOJI_CUSTOM_LIST="$1" } _opt_set_download_list() { - BEMOJI_DOWNLOAD_LIST="$1" + BEMOJI_DOWNLOAD_LIST="$1" } _opt_set_hist_limit() { - bm_limit_recent="$1" + bm_limit_recent="$1" } prepare_db() { @@ -175,7 +175,7 @@ dl_nerd_symbols() { local nerd all nerd=$(curl -sSL "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/css/nerd-fonts-generated.css") all+=$(printf "%s" "$nerd" | sed -ne '/\.nf-/p' -e '/\s*[^_]content:/p' | sed -e 'N;s/^\.nf-\(.*\):before.* content: \"\\\(.*\)\";/\\U\2 \1/') - echo -e "$all" > "$bm_db_location/nerdfont.txt" + echo -e "$all" >"$bm_db_location/nerdfont.txt" msg "Downloaded nerdfont symbols set." } @@ -265,18 +265,18 @@ _typer() { _picker() { if [ -n "$BEMOJI_PICKER_CMD" ]; then eval "${BEMOJI_PICKER_CMD[*]}" - return - fi + return + fi - for tool in "${!default_pickers[@]}"; do - if command -v "$tool" >/dev/null 2>&1; then - eval "${default_pickers[$tool]}" - return - fi - done + for tool in "${!default_pickers[@]}"; do + if command -v "$tool" >/dev/null 2>&1; then + eval "${default_pickers[$tool]}" + return + fi + done - msg "No suitable picker tool found." - exit 1 + msg "No suitable picker tool found." + exit 1 } parse_cli "$@" From 50e838cf7351033bee65e743d8d7eecefeec3d50 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:37:41 +0100 Subject: [PATCH 38/40] =?UTF-8?q?=F0=9F=93=96=20Make=20README=20slightly?= =?UTF-8?q?=20more=20professional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 307a6b7..ca121b2 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ Put both together to completely ignore the recent emoji feature of the program bemoji -p -P0 ``` -Like this, you'll be hiding any recent personal emoji and no one will know that you always type 👄🍆💦. +Like this, you'll be hiding any recent personal emoji and keep any new ones you use out of your history. To limit the number of your recently used emoji that are shown without hiding them completely simply increase the number to however many you wish to display. For example, to display only the top 4 recently used emoji: From 65efc27dfc43ffada4627e1a8ad0c07262b9735d Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:52:32 +0100 Subject: [PATCH 39/40] =?UTF-8?q?=F0=9F=90=9B=20Fix=20passthrough=20of=20e?= =?UTF-8?q?moji=20to=20custom=20type=20cmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Custom type commands now also receive the emoji to be typed just like the default type commands. If your type program relies on getting an emoji on stdin, then it is much easier to invoke bemoji with echo. An example with cat: `bemoji -e | cat` --- bemoji | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bemoji b/bemoji index 50b9898..481af8f 100755 --- a/bemoji +++ b/bemoji @@ -244,13 +244,14 @@ _clipper() { # Set default typing util _typer() { + totype=$(cat -) + if [ -n "$BEMOJI_TYPE_CMD" ]; then # shellcheck disable=SC2068 - ${BEMOJI_TYPE_CMD[@]} + ${BEMOJI_TYPE_CMD[@]} "$totype" return fi - totype=$(cat -) if [ -n "$WAYLAND_DISPLAY" ] && command -v wtype >/dev/null 2>&1; then wtype -s 30 "$totype" elif [ -n "$DISPLAY" ] && command -v xdotool >/dev/null 2>&1; then From 1b5e9c1284ede59d771bfd43780cc8f6f7446f38 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Thu, 6 Feb 2025 16:55:45 +0100 Subject: [PATCH 40/40] =?UTF-8?q?=F0=9F=A6=8A=20Ensure=20function=20variab?= =?UTF-8?q?les=20are=20declared=20local?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bemoji | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bemoji b/bemoji index 481af8f..7a648e1 100755 --- a/bemoji +++ b/bemoji @@ -180,6 +180,7 @@ dl_nerd_symbols() { } gather_emojis() { + local result if [ -n "$BEMOJI_CUSTOM_LIST" ] && [ -f "$BEMOJI_CUSTOM_LIST" ]; then result=$(cat "$BEMOJI_CUSTOM_LIST") elif [ -n "$BEMOJI_CUSTOM_LIST" ] && curl -fsSI "$BEMOJI_CUSTOM_LIST" >/dev/null 2>&1; then @@ -197,12 +198,12 @@ gather_emojis() { } get_most_recent() { - limit=${1} - recent_file="$bm_history_file" + local limit=${1} + local recent_file="$bm_history_file" if [ ! -f "$recent_file" ]; then touch "$recent_file" fi - # TODO improve this messy line + # TODO: improve this messy line local result result=$(sed -e '/^$/d' "$recent_file" | sort | @@ -244,6 +245,7 @@ _clipper() { # Set default typing util _typer() { + local totype totype=$(cat -) if [ -n "$BEMOJI_TYPE_CMD" ]; then