From 56022f7f8ba0617566c9403b936bc04c5b6496cd Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Mon, 16 Jun 2025 22:40:01 +0200 Subject: [PATCH] load theme earlier, update awesome-tray --- early-init.el | 12 + init | 3 +- lisp/awesome-tray.el | 930 ----------- lisp/awesome-tray/README.md | 134 ++ lisp/awesome-tray/awesome-tray-faces.el | 293 ++++ lisp/awesome-tray/awesome-tray.el | 1420 +++++++++++++++++ lisp/awesome-tray/screenshots/README.md | 11 + lisp/awesome-tray/screenshots/centered.png | Bin 0 -> 18461 bytes lisp/awesome-tray/screenshots/screenshot.png | Bin 0 -> 227539 bytes lisp/awesome-tray/screenshots/screenshot2.png | Bin 0 -> 18359 bytes settings/gui-settings.el | 126 +- 11 files changed, 1988 insertions(+), 941 deletions(-) delete mode 100644 lisp/awesome-tray.el create mode 100644 lisp/awesome-tray/README.md create mode 100644 lisp/awesome-tray/awesome-tray-faces.el create mode 100644 lisp/awesome-tray/awesome-tray.el create mode 100644 lisp/awesome-tray/screenshots/README.md create mode 100644 lisp/awesome-tray/screenshots/centered.png create mode 100644 lisp/awesome-tray/screenshots/screenshot.png create mode 100644 lisp/awesome-tray/screenshots/screenshot2.png diff --git a/early-init.el b/early-init.el index 8c74155a..a8cc4ebd 100644 --- a/early-init.el +++ b/early-init.el @@ -85,5 +85,17 @@ (if (display-graphic-p) (add-hook 'kill-emacs-hook 'my-frame-geometry-save)))) +;; spacemacs-theme https://github.com/nashamri/spacemacs-theme +(use-package spacemacs-theme + :defer t + :config + (require 'cl-lib) ;; spacemacs-common misses to load cl-lib + (setq spacemacs-theme-comment-bg nil) + ;;(load-theme 'spacemacs-dark t) + ) +(use-package my-theme + :config + (load-theme 'my t)) + (provide 'early-init) ;;; early-init.el ends here diff --git a/init b/init index aef873a7..85c8dd2c 100644 --- a/init +++ b/init @@ -11,6 +11,7 @@ ;; Requirements: git gnuplot ledger ;;; Code: +;; early-init spacemacs-theme (require 'early-init (concat (file-name-directory (file-truename (or load-file-name @@ -30,7 +31,7 @@ (require 'general-settings) ;; requires which-key (require 'my-settings) (require 'gui-settings) ;; emacs modeline indent rainbow focus dashboard -(require 'theme-settings) ;; spacemacs-theme fonts emojify +(require 'theme-settings) ;; fonts emojify (require 'popwin-settings) ;; https://melpa.org/#/popwin (require 'toolbar-settings) (require 'deft-settings) ;; https://melpa.org/#/deft diff --git a/lisp/awesome-tray.el b/lisp/awesome-tray.el deleted file mode 100644 index 578c357c..00000000 --- a/lisp/awesome-tray.el +++ /dev/null @@ -1,930 +0,0 @@ -;;; awesome-tray.el --- Modular tray bar - -;; Filename: awesome-tray.el -;; Description: Modular tray bar -;; Author: Andy Stewart -;; Maintainer: Andy Stewart -;; Copyright (C) 2018, Andy Stewart, all rights reserved. -;; Created: 2018-10-07 07:30:16 -;; Version: 4.2 -;; Last-Updated: 2020-06-18 21:02:39 -;; By: Andy Stewart -;; URL: http://www.emacswiki.org/emacs/download/awesome-tray.el -;; Keywords: -;; Compatibility: GNU Emacs 27.0.50 -;; -;; Features that might be required by this library: -;; -;; `cl-lib' -;; `subr-x' -;; `battery' -;; - -;;; This file is NOT part of GNU Emacs - -;;; License -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth -;; Floor, Boston, MA 02110-1301, USA. - -;;; Commentary: -;; -;; Modular tray bar. -;; -;; I don't like mode-line, it's too high, affect me to read the code. -;; With Emacs, we only need to focus on very little information, such as time, current mode, git branch. -;; Excessive information can seriously interfere with our attention. -;; - -;;; Installation: -;; -;; Put awesome-tray.el to your load-path. -;; The load-path is usually ~/elisp/. -;; It's set in your ~/.emacs like this: -;; (add-to-list 'load-path (expand-file-name "~/elisp")) -;; -;; And the following to your ~/.emacs startup file. -;; -;; (require 'awesome-tray) -;; (awesome-tray-mode 1) -;; -;; No need more. - -;;; Customize: -;; -;; `awesome-tray-mode-line-active-color' -;; `awesome-tray-mode-line-inactive-color' -;; `awesome-tray-active-modules' -;; `awesome-tray-git-update-duration' -;; `awesome-tray-refresh-idle-delay' -;; `awesome-tray-buffer-name-buffer-changed' -;; `awesome-tray-buffer-name-buffer-changed-style' -;; `awesome-tray-input-method-en-style' -;; `awesome-tray-input-method-zh-style' -;; `awesome-tray-buffer-read-only-style' -;; -;; All of the above can customize by: -;; M-x customize-group RET awesome-tray RET -;; - -;;; Change log: -;; -;; 2020/06/18 -;; * Shorter date info. -;; -;; 2020/05/06 -;; * Just show origin message if got any error, easy to debug. -;; -;; 2020/04/01 -;; * Shorter tray info. -;; -;; 2020/02/27 -;; * Adapter the latest version of the snails. -;; * Adjust algorithm of `awesome-tray-get-frame-width'. -;; -;; 2020/02/19 -;; * Add week info in date. -;; -;; 2020/02/14 -;; * Add `awesome-tray-battery-update-duration' to fix `set-mark-command' failed. -;; -;; 2020/02/10 -;; * Add battery remaining time. -;; -;; 2020/02/05 -;; * Add battery status. -;; -;; 2020/01/05 -;; * Hide awesome-tab info if it is too long. -;; -;; 2019/08/20 -;; * Use variable `awesome-tray-mode-line-default-height' fix issue #34. -;; -;; 2019/08/14 -;; * Remove notify message when toggle awesome-tray status. -;; -;; 2019/08/13 -;; * Keep tray info align right when message is very long, thanks QiangF. -;; -;; 2019/07/26 -;; * Support snails framework. -;; -;; 2019/07/16 -;; * Use `format-mode-line' improve performance of `awesome-tray-module-location-info'. -;; -;; 2019/07/15 -;; * Use current-line save value of `line-number-at-pos', improve the performance of `awesome-tray-module-location-info'. -;; * Use `ignore-errors' catch error of awesome-tray. -;; -;; 2019/07/14 -;; * Don't wrap awesome-tray info if variable `inhibit-message' is non-nil. -;; -;; 2019/06/23 -;; * Support `awesome-tab' group indicator. -;; * Fix crash cause by `awesome-tray-module-awesome-tab-info' -;; -;; 2019/05/08 -;; * Disable git modulde default, it have performance when we change buffer too fast. -;; -;; 2019/04/29 -;; * Fix position not update when execute command `beginning-of-buffer' or `end-of-buffer'. -;; -;; 2019/04/25 -;; * Add 'circe' module displaying circe tracking-buffer modeline info. -;; * The circe module is not activated by default, it's added to `awesome-tray-all-modules'. -;; -;; 2018/11/25 -;; * Add `RVM' support. -;; * The rvm module is not activated by default, I move it to `awesome-tray-all-modules'. -;; -;; 2018/11/18 -;; * Fix the problem of displaying duplicate information when the mouse is in the minibuffer window. -;; -;; 2018/11/12 -;; * Remove Mac color, use hex color instead. -;; -;; 2018/11/03 -;; * Add percent information in location module. -;; * Fix error: Not enough arguments for format string. -;; -;; 2018/10/29 -;; * Use `unspecified' attribute fix black block of mode-line inactive status. -;; * Add `awesome-tray-git-update-duration' option. -;; -;; 2018/10/21 -;; * Use `advice-add' re-implmenet `awesome-tray-message-advice' -;; * Add parent-dir module. -;; * Don't show parent-dir if current mode is `dired-mode'. -;; -;; 2018/10/13 -;; * Use `awesome-tray-process-exit-code-and-output' fetch git current branch for better error handling. -;; -;; 2018/10/11 -;; * Reimplement `awesome-tray-module-git-info' don't depend on magit. -;; * Add last-command module, handy for debug emacs. -;; -;; 2018/10/09 -;; * Add new option `awesome-tray-active-modules'. -;; -;; 2018/10/07 -;; * First released. -;; * Add row/column information. -;; * Add `awesome-tray-message-advice' make tray information visible always. -;; * Use `frame-width' instead `window-width' to handle blank characters fill. -;; * Don't fill blank if message string is wider than frame width. -;; - -;;; Acknowledgements: -;; -;; -;; - -;;; TODO -;; -;; -;; - -;;; Require -(require 'cl-lib) -(require 'subr-x) -(require 'battery) - -;;; Code: -(defgroup awesome-tray nil - "Modular tray bar." - :group 'awesome-tray) - -(defcustom awesome-tray-mode-line-active-color "DarkRed" - "Active color." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-mode-line-inactive-color "Gray10" - "Inactive color." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-active-modules - '("location" "buffer-name" "belong" "file-path" "mode-name" "input-method" "battery" "date") - "Default active modules." - :type 'list - :group 'awesome-tray) - -(defcustom awesome-tray-essential-modules - '("location" "buffer-name" "belong" "file-path") - "Default ellipsis modules, show when minibuffer is too long." - :type 'list - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-name-max-length 20 - "Max length of buffer name." - :group 'awesome-tray - :type 'int) - -(defcustom awesome-tray-file-name-max-length 20 - "Max length of file name." - :group 'awesome-tray - :type 'int) - -(defcustom awesome-tray-git-update-duration 5 - "Update duration of git command, in seconds. - -It's very slow start new process in Windows platform. -Maybe you need set this option with bigger value to speedup on Windows platform." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-belong-update-duration 5 - "Update duration of which class, in seconds." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-battery-update-duration 5 - "Update duration of battery status, in seconds. - -It will make command `set-mark-command' failed if not use duration." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-refresh-idle-delay 0.5 - "Update idle delay of awesome tray, in seconds." - :type 'double - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-name-buffer-changed-style "*" - "`awesome-tray-buffer-name-buffer-changed' style." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-name-buffer-changed nil - "Show the current buffer changes after buffer-name." - :type 'boolean - :group 'awesome-tray) - -(defcustom awesome-tray-input-method-en-style "EN" - "English input method display style for input-method module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-input-method-zh-style "ZH" - "Chinese input method display style for input-method module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-buffer-read-only-style "R-O" - "Display style for buffer-read-only module." - :type 'string - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-show-filename nil - "Show filename in file-path module or not." - :type 'boolean - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-truncated-name-length 1 - "In file-path module, how many letters to leave when truncate dirname. - -Beginning dots are not counted." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-full-dirname-levels 2 - "In file-path module, how many levels of parent directories should be shown in -their full name." - :type 'integer - :group 'awesome-tray) - -(defcustom awesome-tray-file-path-truncate-dirname-levels 0 - "In file-path module, how many levels of parent directories should be shown in -their first character. - -These goes before those shown in their full names." - :type 'integer - :group 'awesome-tray) - -(defface awesome-tray-default-face '((t :inherit default)) - "Face for string constant ouside modules." - :group 'awesome-tray) - -(defface awesome-tray-module-git-face - '((((background light)) - :foreground "#cc2444" :bold t) - (t - :foreground "#ff2d55" :bold t)) - "Git face." - :group 'awesome-tray) - -(defface awesome-tray-module-rvm-face - '((((background light)) - :foreground "#2832cc" :bold t) - (t - :foreground "#333fff" :bold t)) - "RVM face." - :group 'awesome-tray) - -(defface awesome-tray-module-circe-face - '((((background light)) - :foreground "#2832cc" :bold t) - (t - :foreground "#333fff" :bold t)) - "Circe face." - :group 'awesome-tray) - -(defface awesome-tray-module-mode-name-face - '((((background light)) - :foreground "#00a400" :bold t) - (t - :foreground "green3" :bold t)) - "Mode name face." - :group 'awesome-tray) - -(defface awesome-tray-module-location-face - '((((background light)) - :foreground "#cc7700" :bold t) - (t - :foreground "#ff9500" :bold t)) - "Location face." - :group 'awesome-tray) - -(defface awesome-tray-module-date-face - '((((background light)) - :foreground "#717175" :bold t) - (t - :foreground "#8e8e93" :bold t)) - "Date face." - :group 'awesome-tray) - -(defface awesome-tray-module-last-command-face - '((((background light)) - :foreground "#0061cc" :bold t) - (t - :foreground "#007aff" :bold t)) - "Date face." - :group 'awesome-tray) - -(defface awesome-tray-module-buffer-name-face - '((((background light)) - :foreground "#cc7700" :bold t) - (t - :foreground "#ff9500" :bold t)) - "Buffer name face." - :group 'awesome-tray) - -(defface awesome-tray-module-parent-dir-face - '((((background light)) - :foreground "#5e8e2e" :bold t) - (t - :foreground "#9ded4d" :bold t)) - "Parent dir face." - :group 'awesome-tray) - -(defface awesome-tray-module-file-path-face - '((((background light)) - :foreground "#5e8e2e" :bold t) - (t - :foreground "#9ded4d" :bold t)) - "Parent dir face." - :group 'awesome-tray) - -(defface awesome-tray-module-awesome-tab-face - '((((background light)) - :foreground "#b83059" :bold t) - (t - :foreground "#e73c70" :bold t)) - "Awesome tab face." - :group 'awesome-tray) - -(defface awesome-tray-module-evil-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Evil state face." - :group 'awesome-tray) - -(defface awesome-tray-module-battery-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Battery state face." - :group 'awesome-tray) - -(defface awesome-tray-module-buffer-read-only-face - '((((background light)) - :foreground "#cc2444" :bold t) - (t - :foreground "#ff2d55" :bold t)) - "Buffer read only face." - :group 'awesome-tray) - -(defface awesome-tray-module-belong-face - '((((background light)) - :foreground "#cc2444" :bold t) - (t - :foreground "#ff2d55" :bold t)) - "Buffer read only face." - :group 'awesome-tray) - -(defface awesome-tray-module-input-method-face - '((((background light)) - :foreground "#008080" :bold t) - (t - :foreground "#00ced1" :bold t)) - "Input method face." - :group 'awesome-tray) - -;;;###autoload -(define-minor-mode awesome-tray-mode - "Modular tray bar." - :require 'awesome-tray-mode - :global t - (if awesome-tray-mode - (awesome-tray-enable) - (awesome-tray-disable))) - -(defvar awesome-tray-info-padding-right 0) - -(defvar awesome-tray-mode-line-colors nil) - -(defvar awesome-tray-timer nil) - -(defvar awesome-tray-active-p nil) - -(defvar awesome-tray-git-command-last-time 0) - -(defvar awesome-tray-git-command-cache "") - -(defvar awesome-tray-belong-last-time 0) - -(defvar awesome-tray-belong-last-buffer nil) - -(defvar awesome-tray-belong-cache "") - -(defvar awesome-tray-battery-status-last-time 0) - -(defvar awesome-tray-battery-status-cache "") - -(defvar awesome-tray-last-tray-info nil) - -(defvar awesome-tray-mode-line-default-height 1) - -(defvar awesome-tray-module-alist - '(("awesome-tab" . (awesome-tray-module-awesome-tab-info awesome-tray-module-awesome-tab-face)) - ("buffer-name" . (awesome-tray-module-buffer-name-info awesome-tray-module-buffer-name-face)) - ("circe" . (awesome-tray-module-circe-info awesome-tray-module-circe-face)) - ("date" . (awesome-tray-module-date-info awesome-tray-module-date-face)) - ("evil" . (awesome-tray-module-evil-info awesome-tray-module-evil-face)) - ("file-path" . (awesome-tray-module-file-path-info awesome-tray-module-file-path-face)) - ("git" . (awesome-tray-module-git-info awesome-tray-module-git-face)) - ("last-command" . (awesome-tray-module-last-command-info awesome-tray-module-last-command-face)) - ("location" . (awesome-tray-module-location-info awesome-tray-module-location-face)) - ("parent-dir" . (awesome-tray-module-parent-dir-info awesome-tray-module-parent-dir-face)) - ("mode-name" . (awesome-tray-module-mode-name-info awesome-tray-module-mode-name-face)) - ("rvm" . (awesome-tray-module-rvm-info awesome-tray-module-rvm-face)) - ("battery" . (awesome-tray-module-battery-info awesome-tray-module-battery-face)) - ("input-method" . (awesome-tray-module-input-method-info awesome-tray-module-input-method-face)) - ("buffer-read-only" . (awesome-tray-module-buffer-read-only-info awesome-tray-module-buffer-read-only-face)) - ("belong" . (awesome-tray-module-belong-info awesome-tray-module-belong-face)) - )) - -(defun awesome-tray-enable () - ;; Save mode-line colors when first time. - ;; Don't change `awesome-tray-mode-line-colors' anymore. - (unless awesome-tray-mode-line-colors - (setq awesome-tray-mode-line-colors - (list (face-attribute 'mode-line :foreground) - (face-attribute 'mode-line :background) - (face-attribute 'mode-line :family) - (face-attribute 'mode-line :box) - (face-attribute 'mode-line-inactive :foreground) - (face-attribute 'mode-line-inactive :background) - (face-attribute 'mode-line-inactive :family) - (face-attribute 'mode-line-inactive :box) - ))) - (setq awesome-tray-mode-line-default-height (face-attribute 'mode-line :height)) - ;; Disable mode line. - (set-face-attribute 'mode-line nil - :foreground awesome-tray-mode-line-active-color - :background awesome-tray-mode-line-active-color - :height 0.1 - :box nil) - (set-face-attribute 'mode-line-inactive nil - :foreground awesome-tray-mode-line-inactive-color - :background awesome-tray-mode-line-inactive-color - :height 0.1 - :box nil - :inherit 'unspecified) - ;; Add update timer. - (setq awesome-tray-timer - (run-with-timer 0 awesome-tray-refresh-idle-delay 'awesome-tray-show-info)) - (add-hook 'focus-in-hook 'awesome-tray-show-info) - (setq awesome-tray-active-p t)) - -(defun awesome-tray-disable () - ;; Restore mode-line colors. - (set-face-attribute 'mode-line nil - :foreground (nth 0 awesome-tray-mode-line-colors) - :background (nth 1 awesome-tray-mode-line-colors) - :family (nth 2 awesome-tray-mode-line-colors) - :box (nth 3 awesome-tray-mode-line-colors) - :height awesome-tray-mode-line-default-height) - (set-face-attribute 'mode-line-inactive nil - :foreground (nth 4 awesome-tray-mode-line-colors) - :background (nth 5 awesome-tray-mode-line-colors) - :family (nth 6 awesome-tray-mode-line-colors) - :box (nth 7 awesome-tray-mode-line-colors) - :height awesome-tray-mode-line-default-height) - ;; Cancel timer. - (when (timerp awesome-tray-timer) - (cancel-timer awesome-tray-timer)) - (remove-hook 'focus-in-hook 'awesome-tray-show-info) - ;; Update mode-line. - (force-mode-line-update) - (redraw-display) - (with-current-buffer " *Minibuf-0*" - (erase-buffer)) - (setq awesome-tray-active-p nil)) - -(defun awesome-tray-build-active-info () - (condition-case nil - (mapconcat 'identity (cl-remove-if #'(lambda (n) (equal (length n) 0)) - (mapcar 'awesome-tray-get-module-info awesome-tray-active-modules)) " ") - (format "Awesome Tray broken."))) - -(defun awesome-tray-build-essential-info () - (condition-case nil - (mapconcat 'identity (cl-remove-if #'(lambda (n) (equal (length n) 0)) - (mapcar 'awesome-tray-get-module-info awesome-tray-essential-modules)) " ") - (format "Awesome Tray broken."))) - -(defun awesome-tray-get-module-info (module-name) - (let* ((func (ignore-errors (cadr (assoc module-name awesome-tray-module-alist)))) - (face-param (ignore-errors (caddr (assoc module-name awesome-tray-module-alist)))) - (face (cond ((functionp face-param) (funcall face-param)) - ((facep face-param) face-param) - (t nil))) - (raw-info (ignore-errors (funcall func))) - (info (ignore-errors (if face (propertize raw-info 'face face) raw-info)))) - (if func - (if info - info - (propertize "" 'face face)) - (propertize module-name 'face 'awesome-tray-default-face)))) - -(defun awesome-tray-module-git-info () - (if (executable-find "git") - (let ((current-seconds (awesome-tray-current-seconds))) - (if (> (- current-seconds awesome-tray-git-command-last-time) awesome-tray-git-update-duration) - (progn - (setq awesome-tray-git-command-last-time current-seconds) - (awesome-tray-update-git-command-cache)) - awesome-tray-git-command-cache)) - "")) - -(defun awesome-tray-module-circe-info () - "Display circe tracking buffers" - (if (listp tracking-mode-line-buffers) - (apply 'concat (cl-loop for entry in tracking-mode-line-buffers - collect (or (plist-get entry :propertize) ""))) - "")) - -(defun awesome-tray-module-rvm-info () - (if (executable-find "rvm-prompt") - (format "rvm:%s" (replace-regexp-in-string - "\n" "" - (nth 1 (awesome-tray-process-exit-code-and-output "rvm-prompt"))) - ) - "")) - -(defun awesome-tray-module-battery-info () - (let ((current-seconds (awesome-tray-current-seconds))) - (if (> (- current-seconds awesome-tray-battery-status-last-time) awesome-tray-battery-update-duration) - (let* ((battery-info (funcall battery-status-function)) - (battery-type (battery-format "%L" battery-info)) - battery-status) - (setq awesome-tray-battery-status-last-time current-seconds) - - ;; Short battery type. - (cond ((string-equal battery-type "on-line") - (setq battery-type "ON") - (setq battery-status (battery-format "-%p%%" battery-info))) - ((string-equal battery-type "off-line") - (setq battery-type "OFF") - (setq battery-status (battery-format "-%p%% %t" battery-info)))) - - ;; Update battery cache. - (setq awesome-tray-battery-status-cache (concat battery-type battery-status))) - awesome-tray-battery-status-cache))) - -(defun awesome-tray-module-mode-name-info () - (car (split-string (format "%s" major-mode) "-mode"))) - -(defun awesome-tray-module-location-info () - (format "%s:%s %s" - (format-mode-line "%l") - (format-mode-line "%c") - (format-mode-line "%p") - )) - -(defun awesome-tray-module-date-info () - (format-time-string "%m-%d %H:%M %a")) - -(defun awesome-tray-module-last-command-info () - (format "%s" last-command)) - -(defun awesome-tray-module-buffer-name-info () - (let ((ellipsis "...") - bufname) - (setq bufname (if awesome-tray-buffer-name-buffer-changed - (if (and (buffer-modified-p) - (not (eq buffer-file-name nil))) - (concat (buffer-name) awesome-tray-buffer-name-buffer-changed-style) - (buffer-name)) - (format "%s" (buffer-name)))) - (if (> (length bufname) awesome-tray-buffer-name-max-length) - (format "%s%s" (substring bufname 0 (- awesome-tray-buffer-name-max-length (length ellipsis))) ellipsis) - bufname))) - -(defun awesome-tray-module-buffer-read-only-info () - (if (and (eq buffer-read-only t) - (not (eq buffer-file-name nil))) - (format "%s" awesome-tray-buffer-read-only-style))) - -(defun awesome-tray-module-input-method-info () - (if (eq current-input-method nil) - (format "%s" awesome-tray-input-method-en-style) - (format "%s" awesome-tray-input-method-zh-style))) - -(defun awesome-tray-module-parent-dir-info () - (format "%s" (file-name-nondirectory (directory-file-name default-directory)))) - -(defun awesome-tray-shrink-dir-name (name) - "Shrink NAME to be its first letter, or the first two if starts \".\" - -NAME is a string, typically a directory name." - (let ((dot-num (if (string-match "^\\.+" name) - (length (match-string 0 name)) - 0))) - (substring name 0 (min (length name) (+ dot-num awesome-tray-file-path-truncated-name-length))))) - -(defun awesome-tray-module-file-path-info () - (if (not buffer-file-name) - (let ((ellipsis "...") - (bufname (buffer-name))) - (setq bufname (if awesome-tray-buffer-name-buffer-changed - (if (and (buffer-modified-p) - (not (eq buffer-file-name nil))) - (concat (buffer-name) awesome-tray-buffer-name-buffer-changed-style) - (buffer-name)) - (format "%s" (buffer-name)))) - (if (> (length bufname) awesome-tray-file-name-max-length) - (format "%s%s" (substring bufname 0 (- awesome-tray-file-name-max-length (length ellipsis))) ellipsis) - bufname)) - (let* ((file-path (split-string (buffer-file-name) "/" t)) - (shown-path) - (path-len (length file-path)) - (modp (if (buffer-modified-p) "*" "")) - (full-num awesome-tray-file-path-full-dirname-levels) - (trunc-num awesome-tray-file-path-truncate-dirname-levels) - (show-name awesome-tray-file-path-show-filename)) - (when (> path-len (+ 1 full-num)) - (push (string-join - (mapcar #'awesome-tray-shrink-dir-name - (cl-subseq file-path - (max 0 (- path-len (+ 1 full-num trunc-num))) - (- path-len (1+ full-num)))) "/") - shown-path)) - (when (> path-len 1) - (push (string-join - (cl-subseq file-path - (max 0 (- path-len (1+ full-num))) - (1- path-len)) "/") - shown-path)) - (when show-name - (push (car (last file-path)) shown-path)) - (concat modp - (if (<= path-len (+ 1 full-num trunc-num)) - "/" - ".../") - (string-join (nreverse (cl-remove "" shown-path)) "/") - (when (and shown-path (not show-name)) "/"))))) - -(defun awesome-tray-module-awesome-tab-info () - (with-demoted-errors - "" - (if (featurep 'awesome-tab) - (let ((tab-info (format "%s" (cdr (awesome-tab-selected-tab (awesome-tab-current-tabset t)))))) - (if (> (string-width tab-info) 30) - "" - tab-info)) - ""))) - -(defun awesome-tray-module-evil-info () - (with-demoted-errors - "" - (if (featurep 'evil) - (let ((state - (cond ((evil-normal-state-p) "") - ((evil-emacs-state-p) "") - ((evil-insert-state-p) "") - ((evil-motion-state-p) "") - ((evil-visual-state-p) "") - ((evil-operator-state-p) "") - ((evil-replace-state-p) "") - (t "")))) - state) - ""))) - -(defun awesome-tray-module-belong-info () - (if (featurep 'tree-sitter) - (let ((current-seconds (awesome-tray-current-seconds))) - (if (or (not (eq (current-buffer) awesome-tray-belong-last-buffer)) - (> (- current-seconds awesome-tray-belong-last-time) awesome-tray-belong-update-duration)) - (progn - (setq awesome-tray-belong-last-time current-seconds) - (setq awesome-tray-belong-last-buffer (current-buffer)) - (awesome-tray-update-belong-cache)) - awesome-tray-belong-cache)) - "")) - -(defun awesome-tray-update-belong-cache () - (setq awesome-tray-belong-cache - (let* ((class-nodes (append (awesome-tray-get-match-nodes "(class_definition name: (symbol) @x)") - (awesome-tray-get-match-nodes "(class_definition name: (identifier) @x)"))) - (function-nodes (append (awesome-tray-get-match-nodes "(function_definition name: (symbol) @x)") - (awesome-tray-get-match-nodes "(function_definition name: (identifier) @x)"))) - which-belong-info - which-class-info - which-func-info) - (setq which-class-info (catch 'found - (dolist (class-node class-nodes) - (when (and (> (point) (tsc-node-start-position (tsc-get-parent class-node))) - (< (point) (tsc-node-end-position (tsc-get-parent class-node)))) - (throw 'found (tsc-node-text class-node))) - ) - (throw 'found ""))) - (setq which-func-info (catch 'found - (dolist (function-node function-nodes) - (when (and (> (point) (tsc-node-start-position (tsc-get-parent function-node))) - (< (point) (tsc-node-end-position (tsc-get-parent function-node)))) - (throw 'found (tsc-node-text function-node))) - ) - (throw 'found ""))) - (setq which-belong-info (string-trim (concat which-class-info " " which-func-info))) - (if (string-equal which-belong-info "") - "" - (format "[%s]" which-belong-info)))) - awesome-tray-belong-cache) - -(defun awesome-tray-get-match-nodes (match-rule) - (ignore-errors - (let* ((query (tsc-make-query tree-sitter-language match-rule)) - (root-node (tsc-root-node tree-sitter-tree)) - (captures (mapcar #'cdr (tsc-query-captures query root-node #'tsc--buffer-substring-no-properties)))) - captures))) - -(defun awesome-tray-show-info () - ;; Only flush tray info when current message is empty. - (unless (current-message) - (awesome-tray-flush-info))) - -(defun awesome-tray-get-frame-width () - "Only calculating a main Frame width, to avoid wrong width when new frame, such as `snails'." - (if (display-graphic-p) - (with-selected-frame (car (last (frame-list))) - (frame-width)) - (frame-width))) - -(defun awesome-tray-flush-info () - (let* ((tray-info (awesome-tray-build-active-info))) - (with-current-buffer " *Minibuf-0*" - (erase-buffer) - (insert (concat (make-string (max 0 (- (awesome-tray-get-frame-width) (string-width tray-info) awesome-tray-info-padding-right)) ?\ ) tray-info))))) - -(defun awesome-tray-get-echo-format-string (message-string) - (let* ((tray-info (awesome-tray-build-active-info)) - (blank-length (- (awesome-tray-get-frame-width) (string-width tray-info) (string-width message-string) awesome-tray-info-padding-right))) - (prog1 - (cond - ;; Fill message's end with whitespace to keep tray info at right of minibuffer. - ((> blank-length 0) - (concat message-string - (make-string (max 0 (- (awesome-tray-get-frame-width) - (string-width message-string) - (string-width tray-info) - awesome-tray-info-padding-right)) ?\ ) - tray-info)) - ;; Fill empty whitespace if new message contain duplicate tray-info (cause by move mouse on minibuffer window). - ((and awesome-tray-last-tray-info - message-string - (string-suffix-p awesome-tray-last-tray-info message-string)) - (concat (make-string (max 0 (- (awesome-tray-get-frame-width) - (string-width tray-info) - awesome-tray-info-padding-right)) ?\ ) - tray-info)) - (t - (let* ((essential-info (awesome-tray-build-essential-info)) - (fill-string (make-string (max 0 (- (awesome-tray-get-frame-width) - (string-width essential-info) - (string-width message-string) - awesome-tray-info-padding-right)) ?\ ))) - (if (> (+ (string-width message-string) (string-width fill-string) (string-width essential-info)) - (awesome-tray-get-frame-width)) - ;; Don't show tray information if message is too long. - message-string - (concat message-string fill-string essential-info)) - ))) - ;; Record last tray information. - (setq awesome-tray-last-tray-info tray-info)))) - -(defun awesome-tray-process-exit-code-and-output (program &rest args) - "Run PROGRAM with ARGS and return the exit code and output in a list." - (with-temp-buffer - (list (apply 'call-process program nil (current-buffer) nil args) - (buffer-string)))) - -(defun awesome-tray-current-seconds () - (string-to-number (format-time-string "%s"))) - -(defun awesome-tray-update-git-command-cache () - (let* ((git-info (awesome-tray-process-exit-code-and-output "git" "symbolic-ref" "--short" "HEAD")) - (status (nth 0 git-info)) - (result (format "git:%s" (nth 1 git-info)))) - (setq awesome-tray-git-command-cache - (if (equal status 0) - (replace-regexp-in-string "\n" "" result) - "")) - awesome-tray-git-command-cache)) - -;; Wrap `message' make tray information visible always -;; even other plugins call `message' to flush minibufer. -(defun awesome-tray-message-advice (old-message &rest arguments) - (if (ignore-errors - (cond - ;; Don't wrap tray info if `awesome-tray-active-p' is nil. - ((not awesome-tray-active-p) - (apply old-message arguments)) - - ;; Don't wrap awesome-tray info if variable `inhibit-message' is non-nil. - (inhibit-message - (apply old-message arguments)) - - ;; Just flush tray info if message string is empty. - ((not (car arguments)) - (apply old-message arguments) - (awesome-tray-flush-info)) - - ;; Otherwise, wrap message string with tray info and show it in echo area, - ;; logging origin message at `*Messages*' buffer if allowed. - (t - (if message-log-max - (let ((inhibit-message t)) - (apply old-message arguments))) - (let ((message-log-max nil)) - (apply old-message "%s" (cons (awesome-tray-get-echo-format-string (apply 'format arguments)) '()))))) - - ;; Return t if everything is okay. - t) - ;; Return origin message string. if not, `message' function will always return `nil'. - (if (car arguments) - (apply 'format arguments)) - (apply old-message arguments))) - -(advice-add #'message :around #'awesome-tray-message-advice) - -(defun awesome-tray-current-message-advice (old-func &rest arguments) - (let ((message-string (apply old-func arguments))) - (if (and message-string awesome-tray-last-tray-info) - (string-trim-right (replace-regexp-in-string awesome-tray-last-tray-info "" message-string)) - message-string))) - -(advice-add #'current-message :around #'awesome-tray-current-message-advice) - -(defun awesome-tray-end-of-buffer-advice (old-func &rest arguments) - (apply old-func arguments) - (message "")) - -(advice-add #'end-of-buffer :around #'awesome-tray-end-of-buffer-advice) - -(defun awesome-tray-beginning-of-buffer-advice (old-func &rest arguments) - (apply old-func arguments) - (message "")) - -(advice-add #'beginning-of-buffer :around #'awesome-tray-beginning-of-buffer-advice) - -(provide 'awesome-tray) - -;;; awesome-tray.el ends here diff --git a/lisp/awesome-tray/README.md b/lisp/awesome-tray/README.md new file mode 100644 index 00000000..a1f64c8d --- /dev/null +++ b/lisp/awesome-tray/README.md @@ -0,0 +1,134 @@ + + +[More screenshots](./screenshots/README.md) + +### What's this? +I don't like the mode-line, it's too high and affect me to read the code. +With Emacs, we only need to focus on very little information, such as time, current mode, git branch. +Excessive information can seriously interfere with our attention. + +## Installation +Clone this repository + +```console +$ git clone --depth=1 https://github.com/manateelazycat/awesome-tray.git +``` + +Then put awesome-tray.el to your load-path. + +The load-path is usually `~/elisp/`. It's set in your `~/.emacs` like this: + +```Elisp +(add-to-list `load-path (expand-file-name "~/elisp")) +(require 'awesome-tray) +(awesome-tray-mode 1) +``` + +## Customize Mode line. + +- `awesome-tray-hide-mode-line`: Enabled by default, makes the mode-line very thin and highlight it when its active/inactive. +- `awesome-tray-mode-line-active-color`: Use for customize active color. +- `awesome-tray-mode-line-inactive-color`: Use for customize inactive color. +- `awesome-tray-adjust-mode-line-color-enable`: Disabled by default. If non-nil, adjust mode-line color when buffer state changes. +- `awesome-tray-mode-line-modified-readonly-color`: Use for customize modified and readonly color. +- `awesome-tray-mode-line-readonly-color`: Use for customize readonly color. +- `awesome-tray-mode-line-modified-color`: Use for customize modified color. +- `awesome-tray-mode-line-height`: Mode line height, default is 0.1 +- `awesome-tray-date-format`: Use to customize the date string format. +- `awesome-tray-mpd-format`: Use to customize the mpd string format, see the variable docstring for details. +- `awesome-tray-git-format`: Use to customize the git string format. +- `awesome-tray-location-format`: Use to customize the location string format, see `mode-line-format`. +- `awesome-tray-location-info-all`: Use to customize the location "All", if `mode-line-format` contains `%p`. +- `awesome-tray-location-info-top`: Use to customize the location "Top", if `mode-line-format` contains `%p`. +- `awesome-tray-location-info-bottom`: Use to customize the location "Bottom", if `mode-line-format` contains `%p`. +- `awesome-tray-git-show-status`: If non-nil, show current file status on the git module. +- `awesome-tray-ellipsis`: Use to customize the ellipses used when truncating. +- `awesome-tray-separator`: Use to customize the separator between modules. +- `awesome-tray-evil-show-mode`: If non-nil, show current evil mode in the evil module. +- `awesome-tray-evil-show-macro`: If non-nil, show recording macro in the evil module. +- `awesome-tray-evil-show-cursor-count`: If non-nil, show multiple cursors count in the evil module. +- `awesome-tray-github-update-duration`: Update duration of the github notification, in seconds. +- `awesome-tray-github-erase-duration`: Github notification time before it gets removed from the bar, in seconds. +- `awesome-tray-meow-show-mode`: If non-nil, show current meow mode in the meow module. +- `awesome-tray-input-method-default-style`: Input method indicator you want to show when no input method is toggled on. +- `awesome-tray-input-method-local-style`: Input method indicator for your local input method. +- `awesome-tray-input-method-local-methods`: List of input methods as your local input method. If input method is toggled on, but not a member of this list, `input-method-title` will display in as input method indicator in awesome-tray, such as "DE@" for German. Default is "rime". + +## Dangerous options +Please read the docstring for those variables + +**Those options can make your awesome-tray look weird, if your minibuffer looks weird disable them** + +- `awesome-tray-second-line`: [screenshot](./screenshots/screenshot2.png), Displays awesome-tray in a second line keeping the minibuffer messages readable. +- `awesome-tray-position`: [screenshot](./screenshots/centered.png), Displays awesome-tray in the left, right or center, better to be used with `awesome-tray-second-line` enabled. + +## Customize Module +You can control modules through option ```awesome-tray-active-modules```. + +**When changing the modules load awesome-tray-mode after setting the modules to prevent useless hooks and changes** + +You can find all modules name in the keys of variable ```awesome-tray-module-alist```. Currently we have: + +- `awesome-tab`: Show group information of [awesome-tab](https://github.com/manateelazycat/awesome-tab). +- `buffer-name`: Show buffer name. +- `circe`: Show circe tracking buffer information. +- `date`: Show current date. +- `celestial`: If you are not settled for date, you can add lunar phase and sunrise/set time. Requires `celestial-mode-line` package. +- `evil`: Show evil state, recording macro and multiple cursors count in both [evil-mc](https://github.com/gabesoft/evil-mc) and [multiple-cursors](https://github.com/magnars/multiple-cursors.el). +- `file-path`: Show file path with full customizability. When the path is long, it can be shrinked into something like `.../.em/el/awesome-tray/awesome-tray.el`. See `awesome-tray-file-path-***` variables for details. +- `git`: Show git information. +- `last-command`: Show last execute command. +- `location`: Show point position in buffer. +- `pdf-view-page`: Show page number in pdf-view-mode. +- `location-or-page`: Show location or pdf page number depends on current mode. +- `parent-dir`: Show direct parent directory. +- `mode-name`: Show major mode name. +- `rvm`: Show Ruby version information given by `rvm-prompt`. +- `battery`: Show battery status. +- `input-method`: Show input method status. +- `buffer-read-only`: Show read only status. +- `belong`: Show which class/function status, need install `treesit` first. +- `org-pomodoro`: Show `org-pomodoro` status. Denote the rest time of pomodoro by `[.]`, short break by `(.)` and long break by `{.}`. +- `flymake`: Show Flymake state. +- `flycheck`: Show Flycheck state. +- `meow`: Show meow state. +- `mpd`: Show mpd information using [libmpdel](https://github.com/mpdel/libmpdel), you need to connect to a mpd profile, use `(libmpdel-connect-profile (libmpdel--select-profile))` unless you have multiple profiles. +- `volume`: Show current volume using [volume.el](https://github.com/dbrock/volume.el). +- `word-count`: Show file and selected region word-count. +- `anzu`: Show searched word count and current index using [anzu](https://github.com/emacsorphanage/anzu). +- `github`: Show github notifications using [async](https://github.com/jwiegley/emacs-async) and [ghub](https://github.com/magit/ghub). +- `hostname`: Show remote buffers hostname. + +## Create a Module +Let's create a module that says hello to you. With a module you need: + +- A name. Let's simply call it "hello". + +- A info function that returns the string to be displayed. Here's a simple one + + ``` emacs-lisp + (defun my-module-hello-info () + (concat "Hello " (user-login-name) "!")) + ``` + + A complex info function may encounter an error, awesome-tray will handle this and not show any information there. + +- a face. Let's use a simple yet elegant italic style: + + ``` emacs-lisp + (defface my-module-hello-face + '((t (:italic t))) + "Hello module face." + :group 'awesome-tray) + ``` + +- Awesome-tray uses `awesome-tray-module-alist` to find informations about a module. Let's put ours in it: + + ``` emacs-lisp + (add-to-list 'awesome-tray-module-alist + '("hello" . (my-module-hello-info my-module-hello-face))) + ``` + +- Now put `"hello"` in the `awesome-tray-active-modules` list, and you will see awesome-tray say hello to you! + +If you created a module that could be useful to others, please consider contributing it to awesome-tray! diff --git a/lisp/awesome-tray/awesome-tray-faces.el b/lisp/awesome-tray/awesome-tray-faces.el new file mode 100644 index 00000000..f50c90f6 --- /dev/null +++ b/lisp/awesome-tray/awesome-tray-faces.el @@ -0,0 +1,293 @@ +;;; awesome-tray-faces.el --- Faces for Awesome Tray -*-lexical-binding: t; -*- +;; +;; This file is not part of GNU Emacs. +;; +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 3 +;; of the License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. +;; +;;; Commentary: +;; +;; This module provides the faces for Awesome Tray. +;; +;;; Code: + + +;; Base Faces: + +(defface awesome-tray-default-face '((t :inherit default :bold t)) + "Face for string constant ouside modules." + :group 'awesome-tray) + +(defface awesome-tray-grey-face + '((((background light)) :foreground "dim grey" :bold t) + (t :foreground "dark grey" :bold t)) + "Awesome tray grey." + :group 'awesome-tray) + +(defface awesome-tray-red-face + '((((background light)) :foreground "#cc2444" :bold t) + (t :foreground "#ff2d55" :bold t)) + "Awesome tray red." + :group 'awesome-tray) + +(defface awesome-tray-green-face + '((((background light)) :foreground "#00a400" :bold t) + (t :foreground "green3" :bold t)) + "Awesome tray green." + :group 'awesome-tray) + +(defface awesome-tray-green-path-face + '((((background light)) :foreground "#5e8e2e" :bold t) + (t :foreground "#9ded4d" :bold t)) + "Awesome green face for paths." + :group 'awesome-tray) + +(defface awesome-tray-blue-face + '((((background light)) :foreground "#2832cc" :bold t) + (t :foreground "#333fff" :bold t)) + "Awesome tray blue." + :group 'awesome-tray) + +(defface awesome-tray-blue-bright-face + '((((background light)) :foreground "#0061cc" :bold t) + (t :foreground "#007aff" :bold t)) + "Date face." + :group 'awesome-tray) + +(defface awesome-tray-orange-face + '((((background light)) :foreground "#cc7700" :bold t) + (t :foreground "#ff9500" :bold t)) + "Awesome tray orange." + :group 'awesome-tray) + +(defface awesome-tray-yellow-face + '((((background light)) :foreground "gold" :bold t) + (t :foreground "yellow" :bold t)) + "Awesome tray yellow." + :group 'awesome-tray) + +(defface awesome-tray-pink-face + '((((background light)) :foreground "deep pink" :bold t) + (t :foreground "hot pink" :bold t)) + "Awesome tab pink." + :group 'awesome-tray) + +(defface awesome-tray-magenta-face + '((((background light)) :foreground "dark magenta" :bold t) + (t :foreground "magenta" :bold t)) + "Awesome tray magenta." + :group 'awesome-tray) + +(defface awesome-tray-cyan-face + '((((background light)) :foreground "#008080" :bold t) + (t :foreground "#00ced1" :bold t)) + "Awesome tray cyan." + :group 'awesome-tray) + + +;; Contextual Faces + +(defface awesome-tray-module-git-face + '((((background light)) :inherit awesome-tray-red-face) + (t :inherit awesome-tray-red-face)) + "Git face." + :group 'awesome-tray) + +(defface awesome-tray-module-awesome-tab-face + '((((background light)) :inherit awesome-tray-pink-face) + (t :inherit awesome-tray-pink-face)) + "Awesome tab face." + :group 'awesome-tray) + +(defface awesome-tray-module-rvm-face + '((((background light)) :inherit awesome-tray-blue-face) + (t :inherit awesome-tray-blue-face)) + "RVM face." + :group 'awesome-tray) + +(defface awesome-tray-module-circe-face + '((((background light)) :inherit awesome-tray-blue-face) + (t :inherit awesome-tray-blue-face)) + "Circe face." + :group 'awesome-tray) + +(defface awesome-tray-module-mode-name-face + '((((background light)) :inherit awesome-tray-green-face) + (t :inherit awesome-tray-green-face)) + "Mode name face." + :group 'awesome-tray) + +(defface awesome-tray-module-location-face + '((((background light)) :inherit awesome-tray-orange-face) + (t :inherit awesome-tray-orange-face)) + "Location face." + :group 'awesome-tray) + +(defface awesome-tray-module-location-or-page-face + '((((background light)) :inherit awesome-tray-orange-face) + (t :inherit awesome-tray-orange-face)) + "Location or page face." + :group 'awesome-tray) + +(defface awesome-tray-module-word-count-face + '((((background light)) :inherit awesome-tray-orange-face) + (t :inherit awesome-tray-orange-face)) + "Word count face." + :group 'awesome-tray) + +(defface awesome-tray-module-anzu-face + '((((background light)) :inherit awesome-tray-orange-face) + (t :inherit awesome-tray-orange-face)) + "Anzu face." + :group 'awesome-tray) + +(defface awesome-tray-module-github-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Github face." + :group 'awesome-tray) + +(defface awesome-tray-module-hostname-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Hostname face." + :group 'awesome-tray) + +(defface awesome-tray-module-volume-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Volume face." + :group 'awesome-tray) + +(defface awesome-tray-module-mpd-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Mpd face." + :group 'awesome-tray) + +(defface awesome-tray-module-date-face + '((((background light)) :inherit awesome-tray-grey-face) + (t :inherit awesome-tray-grey-face)) + "Date face." + :group 'awesome-tray) + +(defface awesome-tray-module-celestial-face + '((((background light)) :inherit awesome-tray-grey-face) + (t :inherit awesome-tray-grey-face)) + "Celestial lunar phase and sunrise/set face." + :group 'awesome-tray) + +(defface awesome-tray-module-last-command-face + '((((background light)) :inherit awesome-tray-blue-bright-face) + (t :inherit awesome-tray-blue-bright-face)) + "Date face." + :group 'awesome-tray) + +(defface awesome-tray-module-buffer-name-face + '((((background light)) :inherit awesome-tray-orange-face) + (t :inherit awesome-tray-orange-face)) + "Buffer name face." + :group 'awesome-tray) + +(defface awesome-tray-module-file-path-face + '((((background light)) :inherit awesome-tray-green-path-face) + (t :inherit awesome-tray-green-path-face)) + "Parent dir face." + :group 'awesome-tray) + +(defface awesome-tray-module-parent-dir-face + '((((background light)) :inherit awesome-tray-green-path-face) + (t :inherit awesome-tray-green-path-face)) + "Parent dir face." + :group 'awesome-tray) + +(defface awesome-tray-module-awesome-tab-face + '((((background light)) :inherit awesome-tray-pink-face) + (t :inherit awesome-tray-pink-face)) + "Awesome tab face." + :group 'awesome-tray) + +(defface awesome-tray-module-evil-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Evil state face." + :group 'awesome-tray) + +(defface awesome-tray-module-meow-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Meow state face." + :group 'awesome-tray) + +(defface awesome-tray-module-battery-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Battery state face." + :group 'awesome-tray) + +(defface awesome-tray-module-buffer-read-only-face + '((((background light)) :inherit awesome-tray-red-face) + (t :inherit awesome-tray-red-face)) + "Buffer read only face." + :group 'awesome-tray) + +(defface awesome-tray-module-belong-face + '((((background light)) :inherit awesome-tray-red-face) + (t :inherit awesome-tray-red-face)) + "Buffer read only face." + :group 'awesome-tray) + +(defface awesome-tray-module-input-method-face + '((((background light)) :inherit awesome-tray-cyan-face) + (t :inherit awesome-tray-cyan-face)) + "Input method face." + :group 'awesome-tray) + +(defface awesome-tray-module-clock-face + '((((background light)) :inherit awesome-tray-blue-bright-face) + (t :inherit awesome-tray-blue-bright-face)) + "Org clock face." + :group 'awesome-tray) + +(defface awesome-tray-module-org-pomodoro-face + '((((background light)) :inherit awesome-tray-magenta-face) + (t :inherit awesome-tray-magenta-face)) + "Org-pomodoro face." + :group 'awesome-tray) + +(defface awesome-tray-module-pdf-view-page-face + '((((background light)) :inherit awesome-tray-orange) + (t :inherit awesome-tray-pink-face)) + "Pdf-view-page face." + :group 'awesome-tray) + +(defface awesome-tray-module-flymake-error + '((t :inherit awesome-tray-red-face)) + "Flymake error face." + :group 'awesome-tray) + +(defface awesome-tray-module-flymake-warning + '((t :inherit awesome-tray-yellow-face)) + "Flymake warning face." + :group 'awesome-tray) + +(defface awesome-tray-module-flymake-note + '((t :inherit awesome-tray-blue-bright-face)) + "Flymake note face." + :group 'awesome-tray) + +(provide 'awesome-tray-faces) + +;;; awesome-tray-faces.el ends here diff --git a/lisp/awesome-tray/awesome-tray.el b/lisp/awesome-tray/awesome-tray.el new file mode 100644 index 00000000..04d373a0 --- /dev/null +++ b/lisp/awesome-tray/awesome-tray.el @@ -0,0 +1,1420 @@ +;;; awesome-tray.el --- Modular tray bar + +;; Filename: awesome-tray.el +;; Description: Modular tray bar +;; Author: Andy Stewart +;; Maintainer: Andy Stewart +;; Copyright (C) 2018, Andy Stewart, all rights reserved. +;; Created: 2018-10-07 07:30:16 +;; Version: 4.2 +;; Last-Updated: 2022-03-01 11:02:39 +;; By: Andy Stewart +;; URL: http://www.emacswiki.org/emacs/download/awesome-tray.el +;; Keywords: +;; Compatibility: GNU Emacs 28.1 +;; +;; Features that might be required by this library: +;; +;; `cl-lib' +;; `subr-x' +;; `battery' +;; + +;;; This file is NOT part of GNU Emacs + +;;; License +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth +;; Floor, Boston, MA 02110-1301, USA. + +;;; Commentary: +;; +;; Modular tray bar. +;; +;; I don't like mode-line, it's too high, affect me to read the code. +;; With Emacs, we only need to focus on very little information, such as time, current mode, git branch. +;; Excessive information can seriously interfere with our attention. +;; + +;;; Installation: +;; +;; Put awesome-tray.el to your load-path. +;; The load-path is usually ~/elisp/. +;; It's set in your ~/.emacs like this: +;; (add-to-list 'load-path (expand-file-name "~/elisp")) +;; +;; And the following to your ~/.emacs startup file. +;; +;; (require 'awesome-tray) +;; (awesome-tray-mode 1) +;; +;; No need more. + +;;; Customize: +;; +;; `awesome-tray-mode-line-active-color' +;; `awesome-tray-mode-line-inactive-color' +;; `awesome-tray-active-modules' +;; `awesome-tray-git-update-duration' +;; `awesome-tray-refresh-idle-delay' +;; `awesome-tray-buffer-name-buffer-changed' +;; `awesome-tray-buffer-name-buffer-changed-style' +;; `awesome-tray-input-method-default-style' +;; `awesome-tray-input-method-local-style' +;; `awesome-tray-input-method-local-methods' +;; `awesome-tray-buffer-read-only-style' +;; +;; All of the above can customize by: +;; M-x customize-group RET awesome-tray RET +;; + +;;; Change log: +;; +;; 2023/07/06 +;; * Make mode-line color indicate buffer state configurable by `awesome-tray-adjust-mode-line-color-enable'. +;; +;; 2023/07/01 +;; * Make mode-line color indicate buffer state. +;; +;; 2023/06/30 +;; * `awesome-tray-module-location-or-page-info' support EAF PDF Viewer +;; +;; 2023/06/12 +;; * Add `awesome-tray-module-location-or-page-info' to show location or pdf page. +;; +;; 2023/06/03 +;; * Add `awesome-tray-module-celestial-info' to show moon phase date and sunrise/sunset time. +;; * Add `awesome-tray-location-info-all', `awesome-tray-location-info-top', +;; and `awesome-tray-location-info-bottom' to use custom string for All, Top and Bottom in buffer location info. +;; +;; 2022/03/01 +;; * Use overlay re-implement tray information render. +;; +;; 2020/06/18 +;; * Shorter date info. +;; +;; 2020/05/06 +;; * Just show origin message if got any error, easy to debug. +;; +;; 2020/04/01 +;; * Shorter tray info. +;; +;; 2020/02/27 +;; * Adapter the latest version of the snails. +;; * Adjust algorithm of `awesome-tray-get-frame-width'. +;; +;; 2020/02/19 +;; * Add week info in date. +;; +;; 2020/02/14 +;; * Add `awesome-tray-battery-update-duration' to fix `set-mark-command' failed. +;; +;; 2020/02/10 +;; * Add battery remaining time. +;; +;; 2020/02/05 +;; * Add battery status. +;; +;; 2020/01/05 +;; * Hide awesome-tab info if it is too long. +;; +;; 2019/08/20 +;; * Use variable `awesome-tray-mode-line-default-height' fix issue #34. +;; +;; 2019/08/14 +;; * Remove notify message when toggle awesome-tray status. +;; +;; 2019/08/13 +;; * Keep tray info align right when message is very long, thanks QiangF. +;; +;; 2019/07/26 +;; * Support snails framework. +;; +;; 2019/07/16 +;; * Use `format-mode-line' improve performance of `awesome-tray-module-location-info'. +;; +;; 2019/07/15 +;; * Use current-line save value of `line-number-at-pos', improve the performance of `awesome-tray-module-location-info'. +;; * Use `ignore-errors' catch error of awesome-tray. +;; +;; 2019/07/14 +;; * Don't wrap awesome-tray info if variable `inhibit-message' is non-nil. +;; +;; 2019/06/23 +;; * Support `awesome-tab' group indicator. +;; * Fix crash cause by `awesome-tray-module-awesome-tab-info' +;; +;; 2019/05/08 +;; * Disable git modulde default, it have performance when we change buffer too fast. +;; +;; 2019/04/29 +;; * Fix position not update when execute command `beginning-of-buffer' or `end-of-buffer'. +;; +;; 2019/04/25 +;; * Add 'circe' module displaying circe tracking-buffer modeline info. +;; * The circe module is not activated by default, it's added to `awesome-tray-all-modules'. +;; +;; 2018/11/25 +;; * Add `RVM' support. +;; * The rvm module is not activated by default, I move it to `awesome-tray-all-modules'. +;; +;; 2018/11/18 +;; * Fix the problem of displaying duplicate information when the mouse is in the minibuffer window. +;; +;; 2018/11/12 +;; * Remove Mac color, use hex color instead. +;; +;; 2018/11/03 +;; * Add percent information in location module. +;; * Fix error: Not enough arguments for format string. +;; +;; 2018/10/29 +;; * Use `unspecified' attribute fix black block of mode-line inactive status. +;; * Add `awesome-tray-git-update-duration' option. +;; +;; 2018/10/21 +;; * Use `advice-add' re-implmenet `awesome-tray-message-advice' +;; * Add parent-dir module. +;; * Don't show parent-dir if current mode is `dired-mode'. +;; +;; 2018/10/13 +;; * Use `awesome-tray-process-exit-code-and-output' fetch git current branch for better error handling. +;; +;; 2018/10/11 +;; * Reimplement `awesome-tray-module-git-info' don't depend on magit. +;; * Add last-command module, handy for debug emacs. +;; +;; 2018/10/09 +;; * Add new option `awesome-tray-active-modules'. +;; +;; 2018/10/07 +;; * First released. +;; * Add row/column information. +;; * Add `awesome-tray-message-advice' make tray information visible always. +;; * Use `frame-width' instead `window-width' to handle blank characters fill. +;; * Don't fill blank if message string is wider than frame width. +;; + +;;; Acknowledgements: +;; +;; +;; + +;;; TODO +;; +;; +;; + +;;; Require +(require 'cl-lib) +(require 'subr-x) +(require 'battery) +(require 'timer) +(require 'minibuffer) +(require 'overlay) +(require 'vc-git) +(require 'format-spec) + +(require 'awesome-tray-faces) + +;;; Code: +(defgroup awesome-tray nil + "Modular tray bar." + :group 'awesome-tray) + +(defcustom awesome-tray-minibuffer t + "If non-nil, also display the awesome-tray when in the minibuffer." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-second-line nil + "If non-nil, display awesome-tray in a second line. + +WARNING! This makes a lot of minibuffer interactions look weird, +disable it if you have any problems with your minibuffer appearence." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-hide-mode-line t + "If non-nil, make the mode-line very thin and highlight it when its active/inactive." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-position 'right + "Position to display awesome-tray. + +WARNING! Better to be used with `awesome-tray-second-line' enabled, +This makes a lot of minibuffer interactions look weird, +disable it if you have any problems with your minibuffer appearence." + :group 'awesome-tray + :type 'symbol) + +(defcustom awesome-tray-git-show-status t + "If non-nil, display the current file status in the git module." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-evil-show-mode t + "If non-nil, display the current evil mode in the evil module." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-evil-show-macro t + "If non-nil, display the current recording macro in the evil module." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-evil-show-cursor-count t + "If non-nil, display the current multiple cursors count in the evil module." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-meow-show-mode t + "If non-nil, display the current meow mode in the meow module." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-update-interval 1 + "Interval in seconds between updating the awesome-tray contents. + +If nil, don't update the awesome-tray automatically." + :group 'awesome-tray + :type 'number) + +(defcustom awesome-tray-mode-line-active-color "DarkRed" + "Active color." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-mode-line-inactive-color "Gray10" + "Inactive color." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-mode-line-modified-readonly-color "Green" + "Modified + readonly color." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-mode-line-readonly-color "DarkGreen" + "Readonly color." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-mode-line-modified-color "DarkOrange" + "Modified color." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-adjust-mode-line-color-enable nil + "If non-nil, adjust mode-line color when buffer state changes." + :group 'awesome-tray + :type 'boolean) + +(defcustom awesome-tray-mode-line-height 0.1 + "Height of mode line." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-active-modules + '("location" "belong" "file-path" "mode-name" "battery" "date") + "Default active modules." + :type 'list + :group 'awesome-tray) + +(defcustom awesome-tray-essential-modules + '("location" "belong" "file-path") + "Default essential modules, show when minibuffer is too long." + :type 'list + :group 'awesome-tray) + +(defcustom awesome-tray-git-update-hooks + '(after-save-hook + after-revert-hook + vc-checkin-hook + text-scale-mode-hook) + "Hook points to update the git module." + :type '(list (hook :tag "HookPoint") + (repeat :inline t (hook :tag "HookPoint")))) + +(defcustom awesome-tray-separator " " + "Default string for the separator between modules." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-location-info-all "" + "Default string indicating buffer all." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-location-info-top " T" + "Default string indicating buffer top." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-location-info-bottom " B" + "Default string indicating buffer bottom." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-ellipsis "…" + "Default string for the ellipsis when something is truncated." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-date-format "%-m-%-d %-H:%-M %a" + "Format string of the date module." + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-mpd-format "%a - %t" + "Format string of the mpd module. + +%t title +%a artist +%A album +%p position on the playlist +%P playlist-length +%f filename without the folder and file extension +%F regular filename" + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-git-format "git:%s" + "Format string of the git module. + +%s branch and file status if enabled with `awesome-tray-git-show-status'" + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-location-format "%l:%c %p" + "Format string of the location module. + +See `mode-line-format'" + :group 'awesome-tray + :type 'string) + +(defcustom awesome-tray-buffer-name-max-length 20 + "Max length of buffer name." + :group 'awesome-tray + :type 'int) + +(defcustom awesome-tray-mpd-title-max-length 20 + "Max length of mpd song title and filename." + :group 'awesome-tray + :type 'int) + +(defcustom awesome-tray-file-name-max-length 20 + "Max length of file name." + :group 'awesome-tray + :type 'int) + +(defcustom awesome-tray-volume-update-duration 5 + "Update duration of volume status, in seconds." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-github-update-duration 120 + "Update duration of github notification, in seconds." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-github-erase-duration 30 + "Github notification time before it gets removed from the bar, in seconds." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-belong-update-duration 5 + "Update duration of which class, in seconds." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-battery-update-duration 5 + "Update duration of battery status, in seconds. + +It will make command `set-mark-command' failed if not use duration." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-refresh-idle-delay 0.5 + "Update idle delay of awesome tray, in seconds." + :type 'double + :group 'awesome-tray) + +(defcustom awesome-tray-buffer-name-buffer-changed-style "*" + "`awesome-tray-buffer-name-buffer-changed' style." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-buffer-name-buffer-changed nil + "Show the current buffer changes after buffer-name." + :type 'boolean + :group 'awesome-tray) + +(defcustom awesome-tray-input-method-default-style "" + "Default input method display style for input-method module." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-input-method-local-style "ZH" + "Local input method display style for input-method module." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-input-method-local-methods + '("rime") + "List of local input methods you want to display `awesome-tray-input-method-local-style'" + :type 'list + :group 'awesome-tray) + +(defcustom awesome-tray-buffer-read-only-style "R-O" + "Display style for buffer-read-only module." + :type 'string + :group 'awesome-tray) + +(defcustom awesome-tray-file-path-show-filename nil + "Show filename in file-path module or not." + :type 'boolean + :group 'awesome-tray) + +(defcustom awesome-tray-file-path-truncated-name-length 1 + "In file-path module, how many letters to leave when truncate dirname. + +Beginning dots are not counted." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-file-path-full-dirname-levels 2 + "In file-path module, how many levels of parent directories should be shown in +their full name." + :type 'integer + :group 'awesome-tray) + +(defcustom awesome-tray-info-padding-right 0 + "You can customize right padding to avoid awesome-tray wrap sometimes." + :type 'integer + :group 'awesome-tray) + +(defvar awesome-tray-text nil + "The text currently displayed in the awesome-tray.") + +(defvar awesome-tray-overlays nil + "List of overlays displaying the awesome-tray contents.") + +(defvar awesome-tray-before-github-fetch-notification-hook nil + "Hooks before fetching GitHub notifications. +Example: + (add-hook \\='awesome-tray-before-github-fetch-notification-hook + #\\='auth-source-pass-enable)") + +(defvar awesome-tray--github-notification-number 0) + +(defvar awesome-tray-github-last-time 0) + +(defvar awesome-tray-mode-line-colors nil) + +(defvar awesome-tray-mpd-command-cache "") + +(defvar awesome-tray-git-command-cache "") + +(defvar awesome-tray-git-buffer-filename "") + +(defvar awesome-tray-belong-last-time 0) + +(defvar awesome-tray-belong-last-buffer nil) + +(defvar awesome-tray-belong-cache "") + +(defvar awesome-tray-battery-status-last-time 0) + +(defvar awesome-tray-battery-status-cache "") + +(defvar awesome-tray-flycheck-status-cache "") + +(defvar awesome-tray-last-tray-info nil) + +(defvar awesome-tray-mode-line-default-height 1) + +(defvar awesome-tray-module-alist + '(("awesome-tab" . (awesome-tray-module-awesome-tab-info awesome-tray-module-awesome-tab-face)) + ("buffer-name" . (awesome-tray-module-buffer-name-info awesome-tray-module-buffer-name-face)) + ("circe" . (awesome-tray-module-circe-info awesome-tray-module-circe-face)) + ("date" . (awesome-tray-module-date-info awesome-tray-module-date-face)) + ("celestial" . (awesome-tray-module-celestial-info awesome-tray-module-celestial-face)) + ("date" . (awesome-tray-module-date-info awesome-tray-module-date-face)) + ("evil" . (awesome-tray-module-evil-info awesome-tray-module-evil-face)) + ("file-path" . (awesome-tray-module-file-path-info awesome-tray-module-file-path-face)) + ("git" . (awesome-tray-module-git-info awesome-tray-module-git-face)) + ("last-command" . (awesome-tray-module-last-command-info awesome-tray-module-last-command-face)) + ("location" . (awesome-tray-module-location-info awesome-tray-module-location-face)) + ("location-or-page" . (awesome-tray-module-location-or-page-info awesome-tray-module-location-or-page-face)) + ("parent-dir" . (awesome-tray-module-parent-dir-info awesome-tray-module-parent-dir-face)) + ("mode-name" . (awesome-tray-module-mode-name-info awesome-tray-module-mode-name-face)) + ("rvm" . (awesome-tray-module-rvm-info awesome-tray-module-rvm-face)) + ("battery" . (awesome-tray-module-battery-info awesome-tray-module-battery-face)) + ("input-method" . (awesome-tray-module-input-method-info awesome-tray-module-input-method-face)) + ("buffer-read-only" . (awesome-tray-module-buffer-read-only-info awesome-tray-module-buffer-read-only-face)) + ("belong" . (awesome-tray-module-belong-info awesome-tray-module-belong-face)) + ("clock" . (awesome-tray-module-clock-info awesome-tray-module-clock-face)) + ("org-pomodoro" . (awesome-tray-module-org-pomodoro-info awesome-tray-module-org-pomodoro-face)) + ("pdf-view-page" . (awesome-tray-module-pdf-view-page-info awesome-tray-module-pdf-view-page-face)) + ("flymake" . (awesome-tray-module-flymake-info nil)) + ("flycheck" . (awesome-tray-module-flycheck-info nil)) + ("meow" . (awesome-tray-module-meow-info awesome-tray-module-meow-face)) + ("mpd" . (awesome-tray-module-mpd-info awesome-tray-module-mpd-face)) + ("volume" . (awesome-tray-module-volume-info awesome-tray-module-volume-face)) + ("word-count" . (awesome-tray-module-word-count-info awesome-tray-module-word-count-face)) + ("anzu" . (awesome-tray-module-anzu-info awesome-tray-module-anzu-face)) + ("github" . (awesome-tray-module-github-info awesome-tray-module-github-face)) + ("hostname" . (awesome-tray-module-hostname-info awesome-tray-module-hostname-face)))) + + +(with-eval-after-load 'mu4e-alert + (add-hook 'mu4e-index-updated-hook #'mu4e-alert-update-mail-count-modeline) + (add-hook 'mu4e-message-changed-hook #'mu4e-alert-update-mail-count-modeline) + (advice-add #'mu4e-context-switch :around #'mu4e-alert--context-switch) + (mu4e-alert-update-mail-count-modeline) + + (defun awesome-tray-module-mail-info () + (if (member "all-the-icons" (font-family-list)) + (concat (all-the-icons-material "mail" :v-adjust -0.1) ":" (substring mu4e-alert-mode-line 7 -2)) + mu4e-alert-mode-line)) + + (add-to-list 'awesome-tray-module-alist + '("mail" . (awesome-tray-module-mail-info awesome-tray-module-belong-face)))) + +(defun awesome-tray-module-clock-info () + (if (org-clocking-p) + (format " [%s] (%s)" + (org-duration-from-minutes + (floor (org-time-convert-to-integer + (org-time-since org-clock-start-time)) + 60)) + org-clock-heading))) + +(defun awesome-tray-module-github-info () + (let ((current-seconds (awesome-tray-current-seconds))) + (if (> (- current-seconds awesome-tray-github-last-time) awesome-tray-github-update-duration) + (progn (setq awesome-tray-github-last-time current-seconds) + (awesome-tray--github-fetch-notifications)) + (if (> (- current-seconds awesome-tray-github-last-time) awesome-tray-github-erase-duration) + (setq awesome-tray--github-notification-number 0)) + (if (and (numberp awesome-tray--github-notification-number) + (> awesome-tray--github-notification-number 0)) + (format "%s github" awesome-tray--github-notification-number) + "")))) + +(defun awesome-tray--github-fetch-notifications () + "Fetch GitHub notifications." + (when (require 'async nil t) + (async-start + `(lambda () + ,(async-inject-variables + "\\`\\(load-path\\|auth-sources\\|awesome-tray-before-github-fetch-notification-hook\\)\\'") + (run-hooks 'awesome-tray-before-github-fetch-notification-hook) + (when (require 'ghub nil t) + (with-timeout (10) + (ignore-errors + (when-let* ((username (ghub--username ghub-default-host)) + (token (ghub--token ghub-default-host username 'ghub t))) + (ghub-get "/notifications" nil + :query '((notifications . "true")) + :username username + :auth token + :noerror t)))))) + (lambda (result) + (message "") ; suppress message + (setq awesome-tray--github-notification-number (length result)))))) + +(defun awesome-tray-module-hostname-info () + "Hostname for remote buffers." + (when default-directory + (when-let ((host (file-remote-p default-directory 'host))) + (concat "@" host)))) + +(defun awesome-tray-module-word-count-info () + (let ((f-count (count-words (point-min) (point-max)))) + (if (region-active-p) + (format "%d/%dW" (count-words-region (region-beginning) (region-end)) f-count) + (format "%dW" f-count)))) + +(with-eval-after-load 'anzu + (add-hook 'isearch-mode-end-hook #'anzu--reset-status t) + (add-hook 'iedit-mode-end-hook #'anzu--reset-status) + (advice-add #'evil-force-normal-state :after #'anzu--reset-status) + ;; Fix matches segment mirroring across all buffers + (mapc #'make-variable-buffer-local + '(anzu--total-matched + anzu--current-position anzu--state anzu--cached-count + anzu--cached-positions anzu--last-command + anzu--last-isearch-string anzu--overflow-p))) + +(defun awesome-tray--fix-anzu-count (positions here) + "Calulate anzu count via POSITIONS and HERE." + (cl-loop for (start . end) in positions + collect t into before + when (and (>= here start) (<= here end)) + return (length before) + finally return 0)) + +(defun awesome-tray-module-anzu-info () + "Show the match index and total number thereof. +Requires `anzu', also `evil-anzu' if using `evil-mode' for compatibility with +`evil-search'." + (if (featurep 'anzu) + (when (and (bound-and-true-p anzu--state) + (not (bound-and-true-p iedit-mode))) + (let ((here anzu--current-position) + (total anzu--total-matched)) + (cond ((eq anzu--state 'replace-query) + (format "%d replace" anzu--cached-count)) + ((eq anzu--state 'replace) + (format "[%d/%d]" here total)) + (anzu--overflow-p + (format "%s+" total)) + (t + (format "[%s/%d]" here total))))) + "")) + +(defun awesome-tray-build-active-info () + (condition-case nil + (mapconcat 'identity (cl-remove-if #'(lambda (n) (equal (length n) 0)) + (mapcar 'awesome-tray-get-module-info awesome-tray-active-modules)) awesome-tray-separator) + (format "Awesome Tray broken."))) + +(defun awesome-tray-build-essential-info () + (condition-case nil + (mapconcat 'identity (cl-remove-if #'(lambda (n) (equal (length n) 0)) + (mapcar 'awesome-tray-get-module-info awesome-tray-essential-modules)) awesome-tray-separator) + (format "Awesome Tray broken."))) + +(defun awesome-tray-get-module-info (module-name) + (let* ((func (ignore-errors (cadr (assoc module-name awesome-tray-module-alist)))) + (face-param (ignore-errors (caddr (assoc module-name awesome-tray-module-alist)))) + (face (cond ((functionp face-param) (funcall face-param)) + ((facep face-param) face-param) + (t nil))) + (raw-info (ignore-errors (funcall func))) + (info (ignore-errors (if face (propertize raw-info 'face face) raw-info)))) + (if func + (if info + info + (propertize "" 'face face)) + (propertize module-name 'face 'awesome-tray-default-face)))) + +(defun awesome-tray-module-volume-info () + (if (ignore-errors (require 'volume)) + (concat (number-to-string (truncate (volume-get))) "%") + "")) + +(defun awesome-tray-module-git-info () + (if (executable-find "git") + (progn + (if (not (string= (buffer-file-name) awesome-tray-git-buffer-filename)) + (awesome-tray-git-command-update-cache)) + awesome-tray-git-command-cache) + "")) + +(defun awesome-tray-git-command-update-cache () + (if (file-exists-p (format "%s" (buffer-file-name))) + (let* ((filename (buffer-file-name)) + (status (vc-git-state filename)) + (branch (car (ignore-errors (vc-git-branches))))) + + (pcase status + ('up-to-date (setq status "")) + ('edited (setq status "!")) + ('needs-update (setq status "⇣")) + ('needs-merge (setq status "⇡")) + ('unlocked-changes (setq status "")) + ('added (setq status "+")) + ('removed (setq status "-")) + ('conflict (setq status "=")) + ('missing (setq status "?")) + ('ignored (setq status "")) + ('unregistered (setq status "?")) + (_ (setq status ""))) + (if (not branch) (setq branch "")) + + (setq awesome-tray-git-buffer-filename filename) + + (setq awesome-tray-git-command-cache (if awesome-tray-git-show-status + (format awesome-tray-git-format (string-trim (concat branch " " status))) + (format awesome-tray-git-format branch)))) + (setq awesome-tray-git-buffer-filename nil + awesome-tray-git-command-cache ""))) + +(defun awesome-tray-module-circe-info () + "Display circe tracking buffers" + (if (listp tracking-mode-line-buffers) + (apply 'concat (cl-loop for entry in tracking-mode-line-buffers + collect (or (plist-get entry :propertize) ""))) + "")) + +(defun awesome-tray-module-rvm-info () + (if (executable-find "rvm-prompt") + (format "rvm:%s" (replace-regexp-in-string + "\n" "" + (nth 1 (awesome-tray-process-exit-code-and-output "rvm-prompt")))) + + "")) + +(defun awesome-tray-module-battery-info () + (let ((current-seconds (awesome-tray-current-seconds))) + (if (> (- current-seconds awesome-tray-battery-status-last-time) awesome-tray-battery-update-duration) + (let* ((battery-info (funcall battery-status-function)) + (battery-type (battery-format "%L" battery-info)) + battery-status) + (setq awesome-tray-battery-status-last-time current-seconds) + + ;; Short battery type. + (cond ((member battery-type '("on-line" "AC")) + (setq battery-type "AC") + (setq battery-status "")) + ((member battery-type '("off-line" "BAT" "Battery")) + (setq battery-type "") + (setq battery-status (battery-format + (if (eq system-type 'darwin) + "[%p%%]" + "[%p%% %t]") + battery-info)))) + + ;; Update battery cache. + (setq awesome-tray-battery-status-cache (concat battery-type battery-status))) + awesome-tray-battery-status-cache))) + +(defun awesome-tray-module-mode-name-info () + (car (split-string (format "%s" major-mode) "-mode"))) + +(defun awesome-tray-module-location-info () + (if (equal major-mode 'eaf-mode) + "" + (string-replace + " All" awesome-tray-location-info-all + (string-replace + " Top" awesome-tray-location-info-top + (string-replace + " Bottom" awesome-tray-location-info-bottom + (format-mode-line awesome-tray-location-format)))))) + +(defun awesome-tray-module-location-or-page-info () + "Show Location or PDF page depends on current mode." + (let ((page-info (awesome-tray-module-pdf-view-page-info))) + (if (string= page-info "") + (awesome-tray-module-location-info) + page-info))) + +(with-eval-after-load 'libmpdel + (add-hook 'libmpdel-current-playlist-changed-hook 'awesome-tray-mpd-command-update-cache) + (add-hook 'libmpdel-current-song-changed-hook 'awesome-tray-mpd-command-update-cache)) + +(defun awesome-tray-module-mpd-info () + (if (and (ignore-errors (require 'libmpdel)) (executable-find "mpd")) + (if (libmpdel-connected-p) + awesome-tray-mpd-command-cache + "not connected to mpd") + "")) + +(defun awesome-tray-mpd-command-update-cache () + (let* ((mpd-info (libmpdel-current-song)) + (title (or (libmpdel-entity-name mpd-info) "")) + (artist (or (libmpdel-artist-name mpd-info) "")) + (album (or (libmpdel-album-name mpd-info) "")) + (position (or (+ (libmpdel-song-position mpd-info) 1) "")) + (playlist-length (or (libmpdel-playlist-length) "")) + (filename (or (libmpdel-song-file mpd-info) ""))) + (setq title (awesome-tray-truncate-string title awesome-tray-mpd-title-max-length)) + (setq cut-filename (awesome-tray-truncate-string + (file-name-sans-extension + (replace-regexp-in-string ".*/" "" filename)) + awesome-tray-mpd-title-max-length)) + (setq filename (awesome-tray-truncate-string filename awesome-tray-mpd-title-max-length)) + (setq awesome-tray-mpd-command-cache + (format-spec awesome-tray-mpd-format + (format-spec-make ?t title ?a artist ?A album ?p position + ?P playlist-length ?f cut-filename ?F filename))))) + +(defun awesome-tray-module-date-info () + "Displays the date." + (format-time-string awesome-tray-date-format)) + +(defun awesome-tray-module-celestial-info () + "Displays lunar phase and sunrise/sunset time." + (with-demoted-errors + "" + (if (featurep 'celestial-mode-line) + (substring-no-properties celestial-mode-line-string) + ""))) + +(defun awesome-tray-module-last-command-info () + ;; Only show last command when user enable `toggle-debug-on-error'. + (when debug-on-error + (format "%s" last-command))) + +(defun awesome-tray-module-buffer-name-info () + (let (bufname) + (setq bufname (if awesome-tray-buffer-name-buffer-changed + (if (and (buffer-modified-p) + (not (eq buffer-file-name nil))) + (concat (buffer-name) awesome-tray-buffer-name-buffer-changed-style) + (buffer-name)) + (format "%s" (buffer-name)))) + (awesome-tray-truncate-string bufname awesome-tray-buffer-name-max-length t))) + +(defun awesome-tray-module-buffer-read-only-info () + (if (and (eq buffer-read-only t) + (not (eq buffer-file-name nil))) + (format "%s" awesome-tray-buffer-read-only-style))) + +(defun awesome-tray-module-input-method-info () + (format "%s" + (if (eq current-input-method nil) + awesome-tray-input-method-default-style + (if (member current-input-method awesome-tray-input-method-local-methods) + awesome-tray-input-method-local-style + current-input-method-title)))) + +(defun awesome-tray-module-parent-dir-info () + (format "%s" (file-name-nondirectory (directory-file-name default-directory)))) + +(defun awesome-tray-shrink-dir-name (input-string) + (let* ((words (split-string input-string "-")) + (abbreviated-words (mapcar (lambda (word) (substring word 0 (min awesome-tray-file-path-truncated-name-length (length word)))) words))) + (mapconcat 'identity abbreviated-words "-"))) + +(defun awesome-tray-module-file-path-info () + (let* ((file-path (split-string (if buffer-file-name buffer-file-name default-directory) "/" t)) + (full-num awesome-tray-file-path-full-dirname-levels) + (show-name awesome-tray-file-path-show-filename) + shown-path) + ;; Remove file name if `awesome-tray-file-path-show-filename' is nil. + (setq show-path + (if buffer-file-name + (if show-name file-path (butlast file-path)) + file-path)) + ;; Remove redundant directory with `awesome-tray-file-path-full-dirname-levels' value. + (setq show-path (nthcdr (- (length show-path) + (if buffer-file-name + (if show-name (1+ full-num) full-num) + (1+ full-num))) + show-path)) + ;; Shrink parent directory name to save minibuffer space. + (setq show-path + (append (mapcar #'awesome-tray-shrink-dir-name (butlast show-path)) + (last show-path))) + ;; Join paths. + (setq show-path (mapconcat #'identity show-path "/")) + show-path)) + +(defun awesome-tray-module-awesome-tab-info () + (with-demoted-errors + "" + (if (featurep 'awesome-tab) + (let ((tab-info (format "%s" (cdr (awesome-tab-selected-tab (awesome-tab-current-tabset t)))))) + (if (> (string-width tab-info) 30) + "" + tab-info)) + ""))) + +(defun awesome-tray-module-evil-info () + (with-demoted-errors + "" + (if (featurep 'evil) + (let ((state + (cond ((not awesome-tray-evil-show-mode) "") + ((evil-normal-state-p) "") + ((evil-emacs-state-p) "") + ((evil-insert-state-p) "") + ((evil-motion-state-p) "") + ((evil-visual-state-p) "") + ((evil-operator-state-p) "") + ((evil-replace-state-p) "") + (t "")))) + (if awesome-tray-evil-show-macro + (setq state (string-trim (concat (awesome-tray--macro-recording) " " state)))) + (if awesome-tray-evil-show-cursor-count + (setq state (string-trim (concat (awesome-tray--count-multiple-cursors) " " state)))) + state) + ""))) + +(defun awesome-tray-module-meow-info () + (with-demoted-errors + "" + (if (and (featurep 'meow) awesome-tray-meow-show-mode) + meow--indicator + ""))) + +(defun awesome-tray--macro-recording () + "Display current evil macro being recorded." + (if (featurep 'evil) + (when (or defining-kbd-macro executing-kbd-macro) + (if (bound-and-true-p evil-this-macro) + (format "recording @%s" (char-to-string evil-this-macro)) + "Macro")) + "")) + +(defun awesome-tray--count-multiple-cursors () + "Show the number of multiple cursors." + (let (count) + (cond ((featurep 'evil-mc) (if (bound-and-true-p evil-mc-cursor-list) + (format "mc:%s" (number-to-string (+ (length evil-mc-cursor-list) 1))))) + ((featurep 'multiple-cursors) (if (bound-and-true-p multiple-cursors-mode) + (format "mc:%s" (number-to-string (mc/num-cursors))))) + (t "")))) + +(defun awesome-tray-module-belong-info () + (if (featurep 'treesit) + (let ((current-seconds (awesome-tray-current-seconds))) + (if (or (not (eq (current-buffer) awesome-tray-belong-last-buffer)) + (> (- current-seconds awesome-tray-belong-last-time) awesome-tray-belong-update-duration)) + (progn + (setq awesome-tray-belong-last-time current-seconds) + (setq awesome-tray-belong-last-buffer (current-buffer)) + (awesome-tray-update-belong-cache)) + awesome-tray-belong-cache)) + "")) + +(defun awesome-tray-update-belong-cache () + (setq awesome-tray-belong-cache + (let* ((class-nodes (append (awesome-tray-get-match-nodes '((class_definition name: (symbol) @x))) + (awesome-tray-get-match-nodes '((class_definition name: (identifier) @x))) + (awesome-tray-get-match-nodes '((class_declaration name: (identifier) @x))) + (awesome-tray-get-match-nodes '((class_specifier name: (type_identifier) @x))))) + + (function-nodes (append (awesome-tray-get-match-nodes '((function_definition name: (symbol) @x))) + (awesome-tray-get-match-nodes '((function_definition name: (identifier) @x))) + (awesome-tray-get-match-nodes '((function_declarator declarator: (identifier) @x))) + (awesome-tray-get-match-nodes '((method_declaration name: (identifier) @x))) + (awesome-tray-get-match-nodes '((function_declarator declarator: (field_identifier) @x))))) + + which-belong-info + which-class-info + which-func-info) + ;; Set class information if point at between range of parent node. + (setq which-class-info (catch 'found + (dolist (class-node class-nodes) + (let ((node (car class-node))) + (pcase (format "%s" (cdr class-node)) + ("(awesome-tray-get-match-nodes '((class_specifier name: (type_identifier) @x)))" + (when (and (> (point) (treesit-node-start node)) + (< (point) (treesit-node-end node))) + (throw 'found (treesit-node-text node)))) + (t + (when (and (> (point) (treesit-node-start (treesit-node-parent node))) + (< (point) (treesit-node-end (treesit-node-parent node)))) + (throw 'found (treesit-node-text node))))))) + (throw 'found ""))) + ;; Set function information if point at between range of parent node. + (setq which-func-info (catch 'found + (dolist (function-node function-nodes) + (let ((node (car function-node))) + (pcase (format "%s" (cdr function-node)) + ("((function_declarator declarator: (identifier) @x))" + (when (and (> (point) (treesit-node-start (treesit-node-parent (treesit-node-parent node)))) + (< (point) (treesit-node-end (treesit-node-parent (treesit-node-parent node))))) + (throw 'found (treesit-node-text node)))) + ("((function_declarator declarator: (field_identifier) @x))" + (when (and (> (point) (treesit-node-start (treesit-node-parent node))) + (< (point) (treesit-node-end (treesit-node-parent node)))) + (throw 'found (treesit-node-text node)))) + (t + (when (and (> (point) (treesit-node-start (treesit-node-parent node))) + (< (point) (treesit-node-end (treesit-node-parent node)))) + (throw 'found (treesit-node-text node))))))) + (throw 'found ""))) + (setq which-belong-info (string-trim (concat which-class-info " " which-func-info))) + (if (string-equal which-belong-info "") + "" + (format "[%s]" which-belong-info)))) + awesome-tray-belong-cache) + +(defun awesome-tray-module-org-pomodoro-info () + (with-demoted-errors + "" + (if (featurep 'org-pomodoro) + (let ((state + (cond ((eq org-pomodoro-state :pomodoro) (concat "[" (org-pomodoro-format-seconds) "]")) + ((eq org-pomodoro-state :short-break) (concat "(" (org-pomodoro-format-seconds) ")")) + ((eq org-pomodoro-state :long-break) (concat "{" (org-pomodoro-format-seconds) "}")) + (t "")))) + state) + ""))) + +(defun awesome-tray-module-pdf-view-page-info () + (with-demoted-errors + "" + (cond + ((and (derived-mode-p 'eaf-mode) + (string-equal eaf--buffer-app-name "pdf-viewer")) + (eaf-call-sync "execute_function" eaf--buffer-id "get_progress")) + ((featurep 'pdf-view) + (let ((state + (cond ((derived-mode-p 'pdf-view-mode) (format "%d/%d" (eval '(pdf-view-current-page)) (pdf-cache-number-of-pages))) + (t "")))) + state)) + (t "")))) + +(defun awesome-tray-module-flymake-info () + "A module for showing Flymake state." + ;; Parts of the code are from doom-modeline package + (with-demoted-errors + "" + (if (and (featurep 'flymake) flymake--state) + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (disabledp (and disabled (null running))) + (waiting (cl-set-difference running reported))) + (when-let + ((flymake-state + (cond + (waiting "⏳") + ((null known) "❔") + (disabledp "❕") + (t (let ((.error 0) + (.warning 0) + (.note 0)) + (cl-loop + with warning-level = (warning-numeric-level :warning) + with note-level = (warning-numeric-level :debug) + for state being the hash-values of flymake--state + do (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + (let ((num (+ .error .warning .note))) + (if (> num 0) + (string-clean-whitespace + (string-join + (list + (when (> .note 0) + (concat "🔵:" (propertize (number-to-string .note) 'face 'awesome-tray-module-flymake-note))) + (when (> .warning 0) + (concat "🟠:" (propertize (number-to-string .warning) 'face 'awesome-tray-module-flymake-warning))) + (when (> .error 0) + (concat "🔴:" (propertize (number-to-string .error) 'face 'awesome-tray-module-flymake-error)))) + " ")) + "🟢"))))))) + flymake-state))))) + + +(with-eval-after-load 'flycheck + (add-hook 'flycheck-status-changed-functions 'awesome-tray-flycheck-status-update-cache) + (add-hook 'window-buffer-change-functions (lambda (_) (awesome-tray-flycheck-status-update-cache))) + ) + +(defun awesome-tray-flycheck-status-update-cache (&optional status) + (if (or status flycheck-last-status-change) + (let* ((status (symbol-name flycheck-last-status-change)) + (status (pcase status + ;;("not-checked" "💤") + ;;("no-checker" "❌") + ("running" "⏳") + ("errored" "⚠️") + ("finished" "") + ("interrupted" "⏸️") + ("suspicious" "🤔") + (_ status))) + (counts (flycheck-count-errors flycheck-current-errors))) + ;;(debug) + + (setq awesome-tray-flycheck-status-cache + (if (not (member status '("not-checked" "no-checker"))) + (let ((errors (cdr (assq 'error counts))) + (warnings (cdr (assq 'warning counts)))) + (format "%s 🔴:%s|🟠:%s" + status + (propertize (number-to-string (or errors 0)) 'face 'awesome-tray-module-flymake-error) + (propertize (number-to-string (or warnings 0)) 'face 'awesome-tray-module-flymake-warning))) + "" + )) + ;;(message awesome-tray-flycheck-status-cache) + ) + (setq awesome-tray-flycheck-status-cache "") + ) + ) + + (defun awesome-tray-module-flycheck-info () + (when (featurep 'flycheck) + awesome-tray-flycheck-status-cache + ) + ) + +(defun awesome-tray-get-match-nodes (query) + (ignore-errors + (mapcar #'(lambda (range) + (cons (treesit-node-at (car range)) query)) + (treesit-query-range + (treesit-node-language (treesit-buffer-root-node)) + query)))) + +(defun awesome-tray-truncate-string (string length &optional right) + "Truncate STRING to LENGTH, replacing the surplus with an ellipsis. + +If right is non nil, replace to the right" + (let ((strlen (length string))) + (if (<= strlen length) + string + (setq length (max 0 (- length (length awesome-tray-ellipsis)))) + (if right + (format "%s%s" (substring string 0 length) awesome-tray-ellipsis) + (format "%s%s" awesome-tray-ellipsis (substring string (max 0 (- strlen length)))))))) + +(defun awesome-tray-get-frame-width () + "Only calculating a main Frame width, to avoid wrong width when new frame, such as `snails'." + ;; `window-width' can calculate the width of the minibuffer more accurately than `frame-width'. + ;; We need remove `awesome-tray-info-padding-right' + (if (display-graphic-p) + (with-selected-frame + (if (daemonp) + (car (last (butlast (frame-list)))) + (car (last (frame-list)))) + (window-width (minibuffer-window))) + (window-width (minibuffer-window)))) + +(defun awesome-tray-process-exit-code-and-output (program &rest args) + "Run PROGRAM with ARGS and return the exit code and output in a list." + (with-temp-buffer + (list (apply 'call-process program nil (current-buffer) nil args) + (buffer-string)))) + +(defun awesome-tray-current-seconds () + (string-to-number (format-time-string "%s"))) + +;;;###autoload +(define-minor-mode awesome-tray-mode + "Display text at the end of the echo area." + :global t + (if awesome-tray-mode + (awesome-tray-enable) + (awesome-tray-disable))) + +;;;###autoload +(defun awesome-tray-enable () + "Turn on the awesome-tray." + (interactive) + ;; Disable any existing awesome-tray to remove conflicts + (awesome-tray-disable) + + (when awesome-tray-hide-mode-line + ;; Save mode-line colors when first time. + ;; Don't change `awesome-tray-mode-line-colors' anymore. + (unless awesome-tray-mode-line-colors + (setq awesome-tray-mode-line-colors + (list (face-attribute 'mode-line :foreground) + (face-attribute 'mode-line :background) + (face-attribute 'mode-line :family) + (face-attribute 'mode-line :box) + (face-attribute 'mode-line-inactive :foreground) + (face-attribute 'mode-line-inactive :background) + (face-attribute 'mode-line-inactive :family) + (face-attribute 'mode-line-inactive :box)))) + + (setq awesome-tray-mode-line-default-height (face-attribute 'mode-line :height)) + + ;; Disable mode line. + (set-face-attribute 'mode-line nil + :foreground awesome-tray-mode-line-active-color + :background awesome-tray-mode-line-active-color + :height awesome-tray-mode-line-height + :box nil) + (set-face-attribute 'mode-line-inactive nil + :foreground awesome-tray-mode-line-inactive-color + :background awesome-tray-mode-line-inactive-color + :height awesome-tray-mode-line-height + :box nil + :inherit 'unspecified)) + + ;; Create overlays in each echo area buffer + (dolist (buf '(" *Echo Area 0*" " *Echo Area 1*")) + (with-current-buffer (get-buffer-create buf) + (remove-overlays (point-min) (point-max)) + (push (make-overlay (point-min) (point-max) nil nil t) + awesome-tray-overlays))) + + ;; Start the timer to automatically update + (when awesome-tray-update-interval + (run-with-timer 0 awesome-tray-update-interval 'awesome-tray-update)) + + ;; Add the setup function to the minibuffer hook + (when awesome-tray-minibuffer + (add-hook 'minibuffer-setup-hook #'awesome-tray--minibuffer-setup)) + + ;; Add git hooks + (if (or (member "git" awesome-tray-active-modules) (member "git" awesome-tray-essential-modules)) + (dolist (hook awesome-tray-git-update-hooks) + (add-hook hook 'awesome-tray-git-command-update-cache))) + + ;; Add anzu advice + (if (or (member "anzu" awesome-tray-active-modules) (member "anzu" awesome-tray-essential-modules)) + (progn (advice-add #'anzu--where-is-here :override #'awesome-tray--fix-anzu-count) + ;; manage modeline segment ourselves + (setq anzu-cons-mode-line-p nil)))) + +;;;###autoload +(defun awesome-tray-disable () + "Turn off the awesome-tray." + (interactive) + (when awesome-tray-hide-mode-line + ;; Restore mode-line colors. + (when awesome-tray-mode-line-colors + (set-face-attribute 'mode-line nil + :foreground (nth 0 awesome-tray-mode-line-colors) + :background (nth 1 awesome-tray-mode-line-colors) + :family (nth 2 awesome-tray-mode-line-colors) + :box (nth 3 awesome-tray-mode-line-colors) + :height awesome-tray-mode-line-default-height) + (set-face-attribute 'mode-line-inactive nil + :foreground (nth 4 awesome-tray-mode-line-colors) + :background (nth 5 awesome-tray-mode-line-colors) + :family (nth 6 awesome-tray-mode-line-colors) + :box (nth 7 awesome-tray-mode-line-colors) + :height awesome-tray-mode-line-default-height))) + + ;; Remove awesome-tray overlays + (mapc 'delete-overlay awesome-tray-overlays) + (setq awesome-tray-overlays nil) + + ;; Remove text from Minibuf-0 + (with-current-buffer " *Minibuf-0*" + (delete-region (point-min) (point-max))) + + ;; Cancel the update timer + (cancel-function-timers #'awesome-tray-update) + + ;; Remove the setup function from the minibuffer hook + (remove-hook 'minibuffer-setup-hook #'awesome-tray--minibuffer-setup) + + ;; Remove git hooks + (dolist (hook awesome-tray-git-update-hooks) + (remove-hook hook 'awesome-tray-git-command-update-cache))) + +(defun awesome-tray-is-rime-display-in-minibuffer () + (if (and (featurep 'rime) (eq rime-show-candidate 'minibuffer)) + rime--current-input-key + nil)) + +(defun awesome-tray-set-text (text) + "Set the text displayed by the awesome-tray to TEXT." + ;; Only set tray information when minibuffer not in `input' state. + ;; Don't fill tray information if user is typing in minibuffer. + (unless (or (active-minibuffer-window) (awesome-tray-is-rime-display-in-minibuffer)) + (let* ((wid (+ (string-width text) awesome-tray-info-padding-right)) + (spc (pcase awesome-tray-position + ('center (propertize " " 'cursor 1 'display + `(space :align-to (- center ,(/ wid 2))))) + ('left (propertize " " 'cursor 1 'display + `(space :align-to (- left-fringe ,wid)))) + ('right (propertize " " 'cursor 1 'display + `(space :align-to (- right-fringe + ,(if (display-graphic-p) + (if (= (nth 1 (window-fringes)) 0) + ;; no right fringe, need 1 char padding to avoid + ;; line wrap + 1 + (if (and (not overflow-newline-into-fringe) + (= awesome-tray-info-padding-right 0)) + ;; need 1 pixel padding to avoid line wrap when + ;; overflow-newline-into-fringe is nil + '(1) + '(0))) + (if (= awesome-tray-info-padding-right 0) + ;; need 1 char in TUI to avoid line wrap + 1 + 0)) + ,wid))))))) + + (setq awesome-tray-text (concat (if awesome-tray-second-line "\n") spc text)) + + ;; Remove any dead overlays from the minibuffer from the beginning of the list + (while (null (overlay-buffer (car awesome-tray-overlays))) + (pop awesome-tray-overlays)) + + ;; Add the correct text to each awesome-tray overlay + (dolist (o awesome-tray-overlays) + (when (overlay-buffer o) + (overlay-put o 'after-string awesome-tray-text))) + + ;; Display the text in Minibuf-0 + (with-current-buffer " *Minibuf-0*" + (delete-region (point-min) (point-max)) + (insert awesome-tray-text))))) + +(defun awesome-tray--minibuffer-setup () + "Setup the awesome-tray in the minibuffer." + (push (make-overlay (point-max) (point-max) nil t t) awesome-tray-overlays) + (overlay-put (car awesome-tray-overlays) 'priority 1) + (awesome-tray-update)) + +(defun awesome-tray-adjust-mode-line-color () + (let ((mode-line-color + (cond + ;; Use `awesome-tray-mode-line-active-color' when current buffer is minibuffer or blink-search input buffer. + ((or (minibufferp) + (member (buffer-name (current-buffer)) '(" *blink search input*"))) + awesome-tray-mode-line-active-color) + ;; Use `awesome-tray-mode-line-modified-readonly-color' if buffer is modified and read-only. + ((and (buffer-modified-p) buffer-read-only) + awesome-tray-mode-line-modified-readonly-color) + ;; Use `awesome-tray-mode-line-readonly-color' if buffer is read-only. + (buffer-read-only + awesome-tray-mode-line-readonly-color) + ;; Use `awesome-tray-mode-line-active-color' if `auto-save' plugin is enable, avoid blink eyes. + ((buffer-modified-p) + (if (require 'auto-save nil t) + awesome-tray-mode-line-active-color + awesome-tray-mode-line-modified-color)) + (t + awesome-tray-mode-line-active-color)))) + (set-face-attribute 'mode-line nil + :foreground mode-line-color + :background mode-line-color))) + +(defun awesome-tray-update () + "Get new text to be displayed." + (interactive) + + ;; Adjust mode-line color with buffer's state. + (when awesome-tray-adjust-mode-line-color-enable + (awesome-tray-adjust-mode-line-color)) + + (let* ((tray-active-info (awesome-tray-build-active-info)) + ;; Get minibuffer content. + (echo-message (current-message)) + ;; Remove text property from content. + (_ (set-text-properties 0 (length echo-message) nil echo-message)) + ;; Set empty string if `echo-message' not string. + (minibuffer-info (if (stringp echo-message) echo-message "")) + ;; Only fetch last line from content to calculate the width of left side minibuffer. + (minibuffer-last-line (car (last (split-string minibuffer-info "\n")))) + ;; Calculate blank length between message and active tray info. + (blank-length (- (awesome-tray-get-frame-width) + (string-width tray-active-info) + (string-width minibuffer-last-line)))) + (awesome-tray-set-text + (if (> blank-length 0) + ;; Show active tray info if have blank. + tray-active-info + ;; Otherwise show essential tray info. + (awesome-tray-build-essential-info))))) + +(provide 'awesome-tray) + +;;; awesome-tray.el ends here diff --git a/lisp/awesome-tray/screenshots/README.md b/lisp/awesome-tray/screenshots/README.md new file mode 100644 index 00000000..21a3a6e2 --- /dev/null +++ b/lisp/awesome-tray/screenshots/README.md @@ -0,0 +1,11 @@ +# Screenshots + + + +# With `awesome-tray-second-line` enabled + + + +# With `awesome-tray-position` set to center + + diff --git a/lisp/awesome-tray/screenshots/centered.png b/lisp/awesome-tray/screenshots/centered.png new file mode 100644 index 0000000000000000000000000000000000000000..5cae1d1181f0ef4dc637400778320148072a1a3c GIT binary patch literal 18461 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 literal 0 HcmV?d00001 diff --git a/lisp/awesome-tray/screenshots/screenshot.png b/lisp/awesome-tray/screenshots/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..8a55781bb5fade076732f6eab577a080d28a54e9 GIT binary patch literal 227539 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

j4f?PK6Ib<;b0_eexHl}rQI-}aDAPqiI+ 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%0AinVF6W!+@Xp8tt;)Pv zc{!8@ZvDJj{ETMEVKZvm zjaquVs`IgG)AKU%QAKoW)?Z_`VNc@c9`7obu95Y-d~42LR04Rd#+g4ZVIqpv7B}BP z%2eGvGjv1)YZ}vNv3WB3j`8f}^WrSKHOAGWY3of+U%J{+3W)d6udBw(fXi zp?H3mFY{2r%_7m(yN!fiC^2lrTVH^*EkH_n;_Xl(+dyUhOw=Ar)DNbjru15CYn3vW zw9UL`nS%Mr`T4YJuYC(^-MMN(tN47o44_PWPpF}YKeJon54uXDzG|khTp%GWz(5>! zgAw)&d)b%ai_96kDzS>*GTrNJ$u!IB^>z6DWT(ygTA$auL7Ux5;TLux=Uje zj9qV54zyr`#o(ynqF#4RCsTG45y~4A5(fZDx!6Zxv`UpXEAq17iN!~uk3TJqp1#t(^t5h8qzp(w-=FvX>9ae*+L#e_02w?_ z;|O^C<{{mG{0h02z1_b&n};)MnlLSRg)xJHyhwMpOw7+)DO{XB=XSz;h3JmwViaE| z_=A9xX}Ine>Pzn&^8D8iwMBh)_O&jN=0~GK^kUsyNh_r@GP&?amP-oDf%3(K!7eYt z8X}H{%ZT8&=+?chfr(TFsEb}xD^X$FRn!B%g#?ceYPgcjpdn9YGl~Qd*u7rtO)?w1 z$F89`1AE>{kD0ba#=9m82FXMnJ73XV9-co?<*VF?2$D3QT*aLBJYd)mty8qKsVB=lxF z+gABhRi35q%h#27vxz1;adPIVY=y)MgNC8y>%cN-J16+j;BDt!$bPbaRw^>Lfbs*4&Qe34!hj?g5SF^2sRm;!Z&d{l> z%`{6>K%F}_A|qJn>^dVnbLhT?yY5Zf*M30HhM=s5nz6~}%N@09d1w2PX-(+>O=}*e zVc$o8LQWJEW(DRIRC&|=szxGJDsoa&oiOBU7v#4}4OKlh&LHAp&6e)ItYakXnoB7v zYi9l~FV|bCaq@qrGN-*dXw+c`Uy;`+UD%T=Mfz8M@7N%c{3dw$knQ|?;p1(&mC~13 zv}6iI`y<~K1>)a%GH47F5$e!Zmj$H?2ohvPZf5YS@ihT&YgjQlI!*@|3Q9i;h&2-x zGR3bT!yCM(T~K3NB4Wf`wLsGcs>HuIC?1b!_(_dz*<|6A&xwu?xc^wBDb}JB_~s)O z*qx92|165XmWP2gBQ7A#%jy@NTi@HJiS&8a@^u z?$h!2k-I=oq<@!e=A)p#!Ur#bH#ijpg$rttodr1-su)dbsF#LGH{b44P1pp<)AzMi z6akhtk{;lGvl13dv$3*e9N7(Id_kT`&ZU(f)mnMJKPh*!sZsA0ImgVM_&*5y&akH1 zWo?RBKtQE;6{Q#H9TWvrnt=2Yr1#!iPz0ol^cspt@4ZIp5Fqr>JA@XB)DV(v(cTSrfcUwtm6@0PnQ}jTgN$-&fWU(yw}v!n$=Dv+cMEyN?^S z*NO%5Ew{*uwhloOLMe$lDtKH}!+d5;_uI;;-j~ZIj{)%c-;MYqV>e0I)`=LH| zMw8Cx_ieJ5ylSmkcPFe2w@7AsB*U7H1U) zCjK(9Dh#R(zqI-E+L>M<%U{v41A~i2LTRNszIQ4v)|}n&M*W*osv)*RUfjRVoW70S zNKxkrU~EgiP;yb??YPN3V3Sz^XML*vx6tq*R5ZXSPiVTjVL0w>vJ2Lh@2q`MS%!vs zLE|NanLo!B+0Bt+!j!p?K#AA$dDkZUx-fe?UDRJ!z+WJxyvw5WF_TQVXb_o}NBt1ZJ5}$@{+ZgU)*3I~Y;^ua=h^*XOjuOet2E8ww?NTzu%f`oRc8p%*|+$avb5TYukL2HCRrcN&D|N>o37}x zz?ae$P>f}{o2l#bGV=pEWINA@N{r7a{ zwnk>799{rn(X5Wbi5kCEE3t+6DGj{BGk&Y5=-L^G-Y=8fzV*IDr#YA>9J99n0CY0f zJcfeCz!#^$6-v4UhjaQs(1c~w4XV$Zv>OzJap_t;pp)YZqCZ!C)y+| zq7;;1C}$iuQ1X>teGF4e7N*{D5+Wt$hi!IklS0AHdfwPnhKwC>te$T?`2J^*$5Z|^8Ye`g2er*5gmU?|!!HqO|2sI$Gp!mE9}q;u9nN zKIhvjZF^r2FG*3$U2x2{4r7X%yPe5dnqwD6=DJd@CF7P{O9(krTZFMaqcp}yNuv)l zuCxSkM(?UFAhVMuXB8zdIv%}JTTXHuQ)l=8SoZGLtmgN0vn9@JOM%>OT9KYil%czG zlAp9?nb8AK_NCg7=+?iEx=S9;OIMkkMs7=aCOeVR!w{R(4fM~IlyX~IlDR5l*iFQ> zO3XS)_Z@tz$aH^3SJ=MtgVU(g=^k_$UcAs;Pob4Lk+b?<()5z$C2XRb550Fv2@|w~ zp+!<21U~V@n8$lIX>2;Puv#tOw4297lCUbhj%%x1dB9=CKb6t(X#yxTur2YB#3ov8 z!#1%au}zywc=C#_v??E_tEuapJMBmysKA8%d3a#Gou=%txb!+ls&g21;iA0x5O8_n z8iew`&~#Q?llIRJUmheFZNuuwo~#hB8C(1O-t5EE>lliIeqf)Z)O*MDn+dS|;CpdH zB=N->wMfw-h8Y867h8QY+#_~NW3atxzlSt|1vL@pw(KR>>^Maw>S&~>e57uhG1XlioVIi_SKG4PDK`;2X3d)R*zJMWM{G73dAo6vgW7={5`5X;nXmA zu~N|z62-sx(r<%^GJ&GbV{AuxXB+B2uwbkzNVPhp#dlL&UD>`^+ z18Ki!0D;TinXPsTx*pbjQ;1(1lXXk%=m_gh8GNyP|Hi|ttQIodwEFwm$lXqyz54K$ zcK_V5ENA_B#E=QcrjzitbPbH>7D_j_!^ld=D@;a313CgB6?e zE%7tNoTGX<)vV7Hj9LE3P36CEzoo`gJlvXzKPZlF-xM#)dHU^%hmC`Mk9}CKyAt~+ zFy4oj7Pe%iY1HfQH5})H$>s0pn96%?Lr=H2Nhz)!B}Rj}P0i}uJrs|0amNn5u-bp( zXGNJ{&E)5Imv`)=-Esa5!+@fiDe1l9%`r z(NZN)xX-dVSlYi~Z+RWp{*fB|C2y`eaarDP!_tE{UMjAfY)V7P>h!4FmqEiZ$%3`; zT^6JY<@_{ZpLOSWm7!$dh1tgK+5U(D(Yl+s7!yd^qZ!+7MuWG$xQs6& zQh6?rH^)$|yP(J>@~Q;O9<1{ojqh-f^qoS+!rb{&_6w*AAaCyH4hA{aMzeK*d zrs650;OwzGW#AZobe!r;4SkOLbv64X2p}hy2ILErVP}!~wEly1VPWkBl+E{S%o>>h z^j$obCGGIYZK5;3mt;>Eh63|A)3;`P z?|6&?4rpv5l*4vP@*`R@IzIO3D~U4oTJYt=&z9MjP8?OTlW=(?EunKDzVp%2z!hmz zvd|nRMSM?AvnufP@x@tvQ?f?mW@+jW^ZVMUkF@~P(;<*K=dwu^CURDJDvbYwr)W+( z=ovi4Mh^>e9o;-f~$eCDcplv(3Ep8+g!~tZTHj zQ|F!FZzzC05%8!HJklRduG#_JuiVUL5+w`O(Qq7W|B*^HnsAp~(KWSPc(Ucr<-)}8 zM#*v?MzZsTMvBoLNwL?Pzloh>t3r9PUf-f__Ng1m1R=G&%>*oW4(Rh6I-*-;ub9>3 zklH3)pO#m9chU_Wx3tVfO)&hbc#b$%y*>ju_49s+3k4v%Whf5mpZXr^`Uq%?|2(KM z9IO3cB9)lqg<=YDX^rb}M_(rEeyFFdTMoy>u-XP{{HKBSIHsoc9khDibNTri?rI_} zayNL{{8m|=lU;si!M&I#E=`1Wi*Drh_HI4f_Tc^|vYZ^Quk;KnG+AQ(r+`fHHmak93&kqJ(^BN0X@;cVK_(WtojAN>(!CU{)zv)q8}2b@>cq+Kl+=GKX#f)m^R>J2 zXYns7NG`_Z0Sdy79(uDFLo-l3$O& zd@hk1l%-Kqj#gdkl~t*@*?}k6e&_3Hx#R8~SIUI&EnaH88Wk30K{}?<*W05fg94bX z!|c^pKx!GO-Y)E^R>yTc967!$BSv@ai6fKS9CpD}dnHzx#^&NAz@ve))S8g%MX=FB zlFO3on}~}8;|AkD19yS$Z@QoJ&fpZ&v^19s&g_8Ip^d$2A7YnW>&~|8#lD@<9Is*A zG48iDVYF-S4~e`EmOmuXZ3`vW>}rMIr-aM!Ja}KQjm6Ar#Fg&K zJYhx5EO1xp?sqy=eh9dv!mE45t{>$*63{0FR%=7ePdcEf4ZJcj>ntGmxcS%137?m* zxIK8)9JZ-4H|L)ZsP>#zToO7QOqVW|KVZ7#TsK~RUVrI&)j+X>x^sM>WcpYyc^7EL zTn~Fk846*SRq(s?<-r)gLIK0FnFUmI9kiRcy&mlN6J&T(_&iG3?OI*@V#de)4xI74 zo^nbybQjp82PLPKx*+o49ngcCPc{TP%^^?5gg#uw$_6`6fy^6-XnoK^HpLxz69Oqz zW#H^PG-Dmgdl29;=s6KDSi1A_U36gw`ms7b$1vXao2cfpRz1%X)yWK=O#g$&gVT7~ zrN66uRZ@R%I1})-pAutHN-}uScl+?kmrAV=)RN3A8wt?k3pvQJms}9n5Px|Emm6T^ zMbK6E!;FhVQ{#s{5iD7$RH^7mmY~lvF%wYcL-8IIrgA|hudsF>xq+@jQktNqq2eM9 zj1&k`>E6DIRc}I_ZkcoTjyC;^jM** zNxPjrcwy=~86VxIQFEenD|>{O^zO52*mlxWYYm_Fz~RB}Z;(`uldF%}1il-G%KUPHpI_C-l)^8` zGXuGGy`DzdRc@sm1|KiEUyp%3t1t4Us)q-k0#SGVOwtnN2MB&z0T{Snnh1{Z1znz2 z>+hgh1%wHNOosCaBaU4^)sq(e?B6_Teu8F%`|H$lZt!T|PtgmTYziBexw!7OIK8W* zdwXi%^k|=E^z82D*+p);jKzAELiS4~m|)RX^SPV|wG-9>ld1LcyBXXC*?3Npx?<^b(KETZuwN? z%zmcbQ-YZDrk~_C)9rlxq+tgA#GCn+o-#Zl>qit!dka zIUyC+{k{zK*R{Q4I&-goLv{P{(( z3MnSg-Uu@3sIJDOn&jn|p2E43^5P6ZOg$S6V6i9J+=#j60v~$wK8Aw5{pO* zlyI+C_U%%7<}a3?x==K7Z<8BqF~|IqXz$&p^XewIv-3(cx3u=5<@b~2F(GrYSLjL+ z3bw~I+3VS@Sik|MABg7;4TBO)*^3?(FE@wydkvwpOO4Zh*$1>mcwX#piplv&0g%0m z!jdbU%6&c_MqO(|o7D~wMcHGiTSyeNtnbdr600Og3A=iiH8^{!3PreZ98Z3PQMI%% zZI)gRZ-iN*4y@^oTwGtGw6j4u6ZQ@7-x2u-LJc z8$4Dc^+`J!PO5v4vYGF2Uen9MoUluX1hC!+UY%qOSvU{(yaCgFHp?PRD(zYb8 zj*p%s^l=VOKGjwgrL6B)E-SnZLK~`3lPB?ll`SEM1jMr*sj-;C(S-KTtzZS;^~&{9 z)U)Fw*F3abkFkVEpO%QkyZ8P}T9h>B-Kzi60=$KdciqjrdTA#bm^M1R{4{~N$Km)s zIg9y5$pNJ z%7W;d#Y6k1cGM5^p?>9NNI^25aIr+bpri4f0a)$MX*8qoxWM{41w~(Zhc8p9^UYBS zY}ESov^9Vz2c85tGJw-N*%qxYwVJkF2+GAJ*IM>wcND9Hg^uDFOl$}BMjW%=uRtt< zwHa1(pBdTdEuPgb(98elgKHDwplofn9~jZ=n-i7e((l9_G&U)QKBYS2olJ&Xoed`i zwUZna(AU}0sHs0@cZ8r~&=azxB7$Un|{+J0i!I?*Ht(^I$HYJ5_2b5NT2B|ED;XUi1h%=WDsMoe$%gKMfk3p(=$2y#3y$)rPRo^K&dtuc`x z<5iS9tmX9|FT>HGU%c_};PK}Us&0x05;H;X0`~I$=9+FlS|WOa$MY}B^nd?)cyG6! zFZj<``qvG|zv5N>$JMr%smkeTl@TJ4(qmtv)PZ|+?L+o`P&HtJ=5Vs1j^=@I!kYqG zhMmprJ*`9A`I>|hH>t?vob}15OoYF8#XDngY5MLI-%tZjWl;6H0gd$-7cQ0ah>8*m z@`%t2Z|HC1vS}%}n=$`6d5jLhxE^zON|V)bui`5xhK2Z` zvl3ql-qqk$m0z(PEH*wCE6{_z&?u@XXVu$W9|K(ntjRFUfc;6;C~RhVN(NpzX2o@A zS?^4jHlqVui#^iVPRdF;XrSD<>4%+b1Yu&-Qn-Rl7uBPb{#@2}lf`eJ>Gt+Q}{nykvduU^6X z8a$U8aQON8lXke;xKK%mW*;V`mE%HJqfoxlq|e{0{FiN{`&K<%+{^36ktV>o&@kkz zwLxP?b4M0U93Bh!x#&T0*ltNwo^j!}v!->oU73x**|&;W_vb5Y+WnCLXV+StN_M{n zVdUjYvghy(@)3amw{vpB=y4jZDY@Qw{y2OuQQ3Rnr8g`Qf%JvUzHlSfKR4uU*LCj2 z2cv#seX$=Ex|<~>dH*<{3ygbvhHAm80q=cQ0K zHFOOvOB9=RL+Tk_&Ogj}d*4Z&I^HDxJmf|n*elx+Wb4# zrs6FV>b$HgR!tWr5a#i&ocdwUXljbok~crg)ls+)7Ik1@Jn{ZMWda>4Y08g^MXi+} zm7}!G;G3C=bDO8=Lr6sU)t1Wg<@0-hkffP+nenkV&IP3yfCV1}7kA&gUS`%UnZ)MV zb%zNSSy{TxZhBtuMl-!g?yG1B1-D z?8zr_D;+^vpfSv*vtOF6BBZZ6k^H3r#iN(iY+Bbi1xZHjx#*_jB~5t~*|xIxhmlXy zB$-5>x6U`;&3O(Z;q(PB)LVy_VZUf(aER<4)F!Kj2+6OPLmUYB6lz zQS7?Y)`92PxDb+jiJu?uN*~DF(C$rRJrXzC0;gMIQRu7ugy&k^2IXzPLYo?|X$nx4MZBGuHn?`Fp!FO~Whovy|l&L2ZddWmnJnI!a zILMR#(w#rzTFt@}%JlBNYV%J!!F0Ac(2K0-TDxwgilId9QNh^(8Ao%b`)17p9pZ#+ z&soRCsD^~+RksbielN2#w>-B2kcv1uG0HLwOW7CMc)4ENr$k8tp?mo=kRP{#Sp&yP zF$H7Zeh$9@)bJsy{(ndvK&`H9ON624jM-9w)d(?~sj_HfV9fA_7h{|`(#9?<<3 zXl!%?SF4}e#+Mm-eqki^Y}r=ud#{Lt(?n)*7t_Bh3*0q+@9$CQi+U_WoeNeD&d(@Czd;a`sHogBC9DF^V^MWa<6a!A!)%JSMx=^u7ylHaw-jMEL zEV%rEdJG+Jf@puOc$6bJ&FB$(Byn1IYpyf#pI-M1g8~j^=`=D4<$PFgF!q0@dSm>( zW}D}=r6e@#X-5kqI=5g%uEnfnY3PIIr)=oF=( zClz0?-yVym;>g(i&F2!2Vd%;Qwrb!g;e z$omS9m5Mse+Ud7uJR>XmF;~N6cx(B#bLn)n?h;FNLIk$6iG5x(_HX_TgRtZ zFCOCmopmVfaMOx3e7^4ssjn;1{-kpQ1&iv}H>ob#9236v*8MiH7ZxgVa`zwgl0vq2g^5>suwydx}y7sE;p%J4@2NiIM7toPO#h^I$e z@*ni_(pg)1lEY;VOK`W|H!ZogC%*uH8tQG=#dy3U&oVbH2{n*>pHLU9g@b@Sx1CI} zHUIN`0<7iP-xJfJHv~Wbe(m-#S+2<*!QUb+?pF@dJ9vL`%ec38OMSj`S*vMjbuKd2 z;PsSSx5C0#i;zl|B*njSAFyZHGswop%~h0o41!3jh$s8&LRvCrXBxg)Lg-yGdbe5B z5=(r<60eM>%4Ptn>*banVEXKU#bup=EkNbVddoY20QiAIMkVHux}XxA6+=F$MP2jk zbj#M-2EB@)H; zL!%uS1fCE;ZP3vZ3sS_L+TTmA+y8RAfq1v!s>o>Xm*$TLJ1PWT(@VNhg-f0NvzKir zyxK^o8?e2Tb%Vlxu5fqEh*3$j!<3loVFy(+XHN@Rq`api(=RTTILroId{5VHVr$c# zSt>xbr=WwxVc|?x2i82`s9g5WnCbfh`f+%ycXCOp7~a1p%R9i&{v~CpWn2e#^CDb; zM_!^p>DPh})+bp5Nk;PDp(~wX?r3dk5mA)}kBHxfUwRs$^@muPGuG%NmyJtjrb#d; zIowD*FwjF<2!wZ_39EF$EKL*ZEK}k1UwrJ9H{xEMc6 z{vxi+`qygh>M0ccTD?!`$zy$K5i*_Ssn^5l&no2>T7&6_0?{f~R8fnc+lM~q?WR@^ zAexWP^&K#y9U1R$*&0lVlIJW73eDh1Nvf7ssY~S8(MI}2n#H%lNJ#l<0!l9?} z-Uy$hIbxH<{5^JW{>&JN(-zg+OK>|MBizeT*t0n~LPzcQWmWfCnBeum?QVljb5vi+ zokdNFO1vXY7?cAD?8o2Ey#6KemjL7@8hN_xV7Jwtj>Qb9^p3$hz*=Z?M&xhW<|MpN ziQ#Q!?drH^d(zsAtN_4snI*|z*Z^d55hK2v`jRBhpq?#YyWaj~(jq}Tx*Ba>{4dSSnxbwE-m||W7D7K3=XQy+Qfq6pszZs#SNhhU z?(BZeJLd=viyd*~!F%h@({%foac&v`m<|oxNfjJ3DZt*o@9GFf0Qx)nq9N)oIIsUMBSf3lm4_In7?jkn?nD=ek`>(cFdTHVzPNXG$e9gcy3E z*fdpmTDu^jAo^P$qnfeQ`7Rh8qetAEs?BsmY*8dY1`93DPDHaah~zAe8<9{M7}Y9E zg1|a8087HM0e44_RlYfbirA@`;FmDI+WlBbF5PtTvo4!o7^x{mEi?t?L*2@?J{pn? z*}2R{?8{H<04ZpLdfh#nbB$Www}-3aG0>9YQ3ud9qICw=E4?9vaKSi5qp5eywW*BFCk*JMA?a?w?0sy|y#EPwHSV z`-E!uOfo~0)DI3dW#lS6TmG5yE~LI+Z{!Kq?CX%(tID643X0B6TLyAII$x+EAQ6a_ zJ;oi!lR$LJks>9Wc{Z=74`&mVR-t~ztIAm^wIs>#b+h}WJ1_Z<_%9Z(*@cI^D0E<_ zfcOkYF1FH$tt=`ZyP;Qp6dWaQyL7PKQu}pF%s;nuXm`Gh1KHjRmVBsI7dhy?_34tn ztUGKi+T#gM%Q}0>O`5QyQyAF=|9*DvMyZX{0=^L8PIat0AoO&&G^L6pt_V)xy$~Dq zQvXWIQpT%+{xHjQ_PHS?w}>8X{TO$bYRO^oL8_l!TY&Q3Egd>ZmJj=G#NGu78FF-7 zHG$E;!~c$l7o0hgTQF7`Z+-h?Y8O6N6yxx7%v3QRmm0XIDnO{b6&&%rHfz$y?D3_2 z02-%T1xMO~v>PEbO+Y97pEcemtz6+P=_GBT zNfU|6UtRS^UHyhxXy6pjUF;&b%;+z_xigFaRZvQ-c5h=0%jA*%hV2f`U^4H5JMZ)Z zbzSm+lj4 zr6yS7Svgj0i7~ad8=lQX=mxQ%wy#F#zeDkzV|YDLLv@$OrSGsR_YqK2_j#M8!;GOy zD?_?-L5hfKv-1U`g-e?NELBj)NZr@JtTnP39DM-DhsyPWSdyKtzhXp|F(L`=L!Soh ztkAyY9dkVT_^`D26}h-d3Ws~Qd!3mUmNsT{kk`g*)h3^aV2 zi(vNPRYqxPK}$&F5Ue5<6F%;nZ6`(!$PEl1;*WIVhlfybWew_p=?3Goao~&s>;rUf{tF*Gl&|Wk}xbD-0R8-uVULS{2 zhje89AoM(L7(-xg7a+9UUdN-j|mzoV|Z z#}MhZ0ck#sAs5!7u2W@{^UTEwOmRiVkkJlYq@=;K2JLjM){go42VZWB(*R;kYl@!# zcye}&-7_O|+aQ?+bG2VKnM^24NhJx`%g97Dop)H?NJrf87QdseBLP6okZc_~mwuPF z$SOl6ogYsgiB7RRhfkWzl(p1S*D}Qh)kejzloXate*_O3RRtu}tMB3b^W&WuS9sZ0s+Y(O z8LCU!v@b$h{8RGNwFM)-uMWjDmvyu<8Y@p=-hbx3m}j@n=4l8Dt;DYVCT|RvK)*`2 zY}7Gz?=n;;&q-JPzFvD#mR$;@T?9!WE91Do^W|Z!Un`2JP$#XB^}Q;2yU9jll_AfS zF1in%F8TclU3-bLw!${9Ici%Y{KY-o7}3uqMAfTV@FRDyNV*vQsCJ<8qO1_F*R|j- z2oV?iu6Fu`qoD*GG&Fqsu9FKPJtA()s)4EnOD!c!zX()>!XW&rpr<(d({2ik#vK_2 z*Ik7tXrSGa?QmwPt%BuxFDsMbuc}c$uxag%aPFNiF{`;r+z>Z*X`hJk3XtVIN49>2 zsws{9%bzL7l|DWU*5?8|~LP63gYvrJrn)7ToT(VnVv>6CDlx+qp zqpq8#|D}6%&F4e{#Qx;{%RH6`=WQxHzA^?y!PU>ylqYH>a~-`kKZHXH$tFNH@Lc&0Ta!LsHzKlN5SZ+!|2fp=O6ty2K9m2M{#SjK@IBq2Wq)-6Tg z-zqUnI_$U(4#{WUfTMpk@j!6t?*BCLuoM17&h>Esoy(bmV|9OYNb6LzP_CXAl!MJQ z-zZYt1*zmOksgnUSCcu`+*RBp92MapN!FnLjB|g2mn1#L*nf5t2|fIuZlc~IAl0%g z@=A9^9tG64KS;TjsZ>WlEI4wjcQ+i|oA7U<0kp@IXnVQ+3PbYxS6X@)kO`Z5a%BQL zQal!9HMZ75yh3|HoiJcEvhd&PPjJH;zXMG5erzYg-XoBD9y_tFpBcohUH+9GYU-I@ z>~M^`$=&Q2^$s}zwtW6w6Oh^;J9L0W+St%Bwe}gT$kfuwfPM?uEpr2&@tvTc~ZzWuktoS(B#4C>JglI1)= zwpKyad#3r9FD0=5FtyHXb^F88=Ng`KKri2sB&{&DbD@?2)tuR=M$gfsa5>~~Wq=zn z7^Vq`37$$4KD1W@|3cX7Er zGz-`K=SrebVR9Aw!IS@hd}Q)+pUz!3(`TC?H&A43R>@7= z80U%=)V#d1J8e`C#J4;d0($80?j_6{-gARMlkPk5pNHR&WGhWt@#8)ob8X3HVXv!f z>o+f?ECG$30UR(A&FzgR1)F;;J$25xd$ltdmX6F`t@Rw9A{S)$z0DX|0*DL;*Q={Y z(w__$>iNf(vg;XkI$ubKofQw|`>gZN>s3^Q4foN8gXd`w`MyfCEBGv2u~<(-b+`qO zErV>^19wzLfled}+Jp%`l*@Iqpqv!gzF>bnv_@Re@b+{I8qS)r8Yv^fZF>u%c zxc=MrG%K6fM?X{RSJ_%N&Z|JygFyAUt8%TplJ!bm1s- zJoA04%iDl^`s!%=YG|DO|AD=4IIuU|A*vJBW|3!neY9il-qEMi&Il$EG;hzO zOT+XnuN;X#0+W7mzpAIfFFI<)%c@@WRs87mnoe__Uewzaz_o*$ifqI$U0S`qV!gzX^>m~JrCmcpt7k>g{!f=?Z zwVz<#YB7F-WeG<2d~2ds_oBXezV8|K@BLX57at8vt{6Cf1Vj?YFWp{sA|W-*+P`eK zOn{)N+|m4CVH>^J05o@BQy}q0CFcnO+Z^bk&6RH4E&15Tkh{phk}xt0zvdLi-jtvG zyf&s=kGOO~9=-K8Y$T3KMENPr!-3%%pLL~X{l}K|I?vh1X*hixs?WH$uK3xoW*a!8 zSOg(?8?fxXf=0;S?*HEEWerWwngvGffqJ6(dxq`2Lo+$JEFLINV1ni z+_A|Ofm;nn$EB&5v|Sd<{TfhBPRP~p*Edga#j!IYY`_6HG)T6;@Dgr65`aq4K+!G& ziuGJUfZsBpEkkhH+mq`=j5aQlhj^bgXZ^ETEM{=J6JajgF?4a#rHKndTUR`%CtAm6 z+#Z2Z*lS!VUPb=)j}*(@;0f2q%$ zgmG0*!$q&5;INo^FT^k5)*3~&0E7GU3;m1r4Z&ynv74#_tHLB z(;Ip2|2db$RV8@`un|7b`Xqnzec4g%ZqDFn=#wQ$8WDTOHVpbifiEffA=U6&arL-c z&NmydqGLwJd7&iSDArLj|4NBH#bp84zT?5f)U{jpz^382H;!-2Rb0L&l2~V{`fil@ zy$r}3mv%zlgso2Xt|ob^n{fV2pxYYB_GT*sr?ZMit!Se~c3z1t;!$(r8UIjIK=Va0 zbrLRx>^4rCzvZ(BbX>vJAB;}V#C8D^QMRC+t$A!;xI2J&+Og#48W(HRl1$|ZFZ%3w zw5IT`F~sfikpJF-hB72uaGKd>qW}sJ9>QKHm`^%;<=IP$#!+D_+y-Ax>jMb*w9yrw zIN6lFMKxM(A!`rN@!7A z=iKLHE<~omiQ1CAM6R`oX^4){;9F-U)9k*;AfPiZCs%v3& zhrof!ND!(0dn^UHr;wLK%#>|`uQkzG2E^sk4g5IH^RDY^=(Cd9SCDKw`UXE7g}dZ) zZKi=RPXxkqU*r+em8o%y*e^cmUGredLT~=moCel(&z<^h>$h+JHa@=UqKP20aJkGZ zYXzs{V%MWyGF#YHADT-P#$y*CXS9ahjLn;~a{D{x6A z8pfXfR+hn`Pl0(y3RvIk)LLkm#(N6Ki_dxuLNqGbP}$BCIv{mk>a`~?5Wqbtw>5!< zx5!2zu+_20SP-uHKCZNl9Eg>$K35RRr;ACB--x%=r*3d)Gc_ODqD>%pbjNj-jq}Z0 z_k?k_1!2|N`gZVq)|0?`Ti^nl<2QhF!oALO$XfynPPVWr+O`!U2j8T6y{P(V;rv-> zGccMO@@*^ndpvK(A?j=`^jHWk0hPs_wBt)=pvW$eXsB{UrZ6Tbxzm06>w={3aA@6K zF#qi7@|7rCT>&wm{4YuZMG^``8o$Qc&Mv4G{AT0N6*0N?j2%ntob&EDX{1FYK#gFP zxFGv|lkxZ$PtNe3(t}!K7HDOc2XP=Uv^j=9|6Cv&fb2^dLrpmBHs0Ioqoo7%B0%c1 zZv3mm1$tS;gylFO_pEVmtSB&gdRZO@7f4w<83>S-qw)jhV|X`kLGXEmKjq+1c!}efB_{SF`ZGKMIY43Vgh^3U`md1A$#e@;|*Tc=&9d)ukt9Bvx$K?E9 z3$Ua6*#g?H(dCWiR~5n@b%_$_a5~ROz(vV z9{?l0wS*0gu8eRS=?L5!r1E-T&-BaSpnL80J^QH{7a(Cp@JPiib;?Yr*)}M^=!00n z2L?Pu>y=d?TE0?_Bnw->j6JFUx);U0|KmUsHydJMtl6JgLSXNTDj&Nw-cg$cCTZ^& z62Yy_ndr^tD<`=S$NOZ`3nJK0)Qdxhl|8fo5*c93GH45nT-6K;YWdcuE352WUf`7< z(wJ>){+-3F{MZ&?Jt=#l3Mw@Vl-1|C06AULmy`GC$+g8WGsQWBeGhz({@^Z!fw_5= z+`pigWu;2nDo!!_+gHXrh(_9&K!LkoY2UhC77Mv!+)gx40Rr&D zHSVmJ~{*X!+?)Y z8}4efe5VAIli=~@k9oU&>B3bEAj914K>`cgO=Aiw~+H+KsLo|M%}jsyxcPwvgjFE85! z>h16Kt??~y%7Nihvef?@*ZI6_2>-K_vEtrt!GDuet^GGSmC>WftGlMPm9a?>uA`); zX9*vCsuEzho$3!fLS%w<&Ob_^2weaA3mjBN?*5K}#xi6utto*HlB3xXmC`5DEQOYTA5};O3%*0gQ)*&X?K`5S}^1wk4 zGM*FiN}BAg$YBedP5K9q{_`ne!5*&6zmxRxZKRZkw{6-(0{tb~1kaP#sy-#Z{x*u= zo?))k+BcCU0;}TNekkG*xy-mt&{o&LxVF!5OW$vAk>`S@+~Pl3#D-^!tiEvdVypS- zshKfb=UF9C&neRetjf*YTkX6#nk?(IMO0Vnw2S*v1w~fCtJb(CjLx5sOe5jV6Iqlnlp)2dz zi(3O2^EQ{J(wWA;%W34lG?wSx4AymQ4k>tXYwUnkx_$4baOF`=kOC>O>(WAdVQS-l zHqbV<=lz8xtaLuNTjU|6&lWmt0p_K8Var5mxqPvAjV?`B?$9^a4Gr=C*#-I+3GIsS zUM*PjmkybfL2RjxYQn}w|7lM(ntwvHh!A%gLCjsXgpiaiQdRNMBPrhCBr2H0lTvv= zA9HLYr0dh)`Qm$zLAZ}nYdeY;CG|Q6b)9$@&7L@h=c2|XASgoEGd#X|)|6BYcDe6l zgZDGv)4dI?QXR?lcQX8*?h~S~xQ?m6Tg4jjJKR4158C&0Q{8`)E9&0gt{Ey2lVOJezKqD&p4mMByhIe*=X-@@e*AC#BiG` z!i2+GzX^4W>$@`i3X`+^jNF)<4N-59Y}c;J{yr`Z*wnc4rj{ z=?YjmR5RM`R1%D$ZiP0vTq(^;PDl{_}!T#0C+7L;OsfC7hwzufb_obs_V}pDC ztm{(2LIY2Jh1K(rO1|!1?}gciCYg7kMVbiM{9^CAY=p}o0cF;BfjVb(M9#mAgSZO; ze&jnJX*5*SM#pOhUk)Wjq|-BK|L88@>nCXTI8%<>2par4Wi7^HRqCsKhi?TAkovhS z+c@Jz$LE29%3-tO>Rb@43OwUH!*+pGH1AxAc!F(5B3ySa=~ssg69t{Wva8+;FPj6jrIN?@UX!;)S3K=K(PWykxam#EHT`q=`z-)Y{A|YGdM7wO zmfhO(`jimpMRjO`8*rih=sxUq_uBPhp%ii*SZVE|D+Rh5xd*^rlorL_Jz3&!aOn$- zk*=EUrC|~8{umtsMz`KvsveJ^3hi&E#h!47Um^#LJOa;Rrmi=YO7wOc@p7z1Os4?C&12*|bUI0-$`AUSvQ5lwof-Bz>|d^d4LqCW4;? zXOSA9$=)Z*^gRT{xkqHgB=Irgu~CSLqFj)}HW9+$g)AxJGcDlkkblYQo;vyQsz2AA zW>pJK+YW3JVSpo$OC6Q9(he~ArC2$#4E&8Jm0(U-@!1*U&$@~3S~yGLB|3xl$<6ko zM3F}ll;1dGRJgh*$eGp*Q4{}?T_*S;Y+gC+H1`@=9psyqAZ>g zV_E9aW}L=dob!yp@;)Uq{PGL}Kk_h4Iz9VGTPoR80ByMXV8||Tam_VkN7nu&f#}{p z_{NT>zRd3wD`(a|5|?NpWKsv~nuT7cKdB`>Let;M%%m$Whj_F%G;=&UOrp%eq**|*zSvgZ z2du?2@qC|0_5cm}jEKou4+5^*2YT)7Rte670cy-g5&h-N2`A|BH%T~*v`W!epKR^D zb~?8y-*dCxtOh1*`dsG0XuR=hES;|C3mw*tC-2};1<$6(?OA}6qs)CHhMHJF%m}%V zpmEiCoVL&Yjs>m+NyiSIEi+RTU%Vh&nf$w${lr*_!VvpXCX>YPTFz4h`w=r$_SLp( zE0}O+!Dd_jl#hTxifFm7<~RSHbM~OpX6kbi0r!e(K0CA8n{Vg&u35gsQa`OA&+tqg zJfM6T#F?D&)o1(qy+YDIVgbg4uL_g_nc4$&rNxyw-ubqip-f@mve#2Vb6)%%0mw81 zJ1~*9WgOt)zKkjWnd{sSE}Gr7Xo#5kc_&ynP2OSp$*!L7m{#b(QKeLIPyTJ7k9P1n zK@L-``T0|8k_8}7J!q_(7_sn8C@1H`bw~S!bqkw&bLw+g(DH%1JI{DM4F#e~bMbs@ z)F=#kL8s@!W*M2KwVTA?zAmVnNRv3OS?EQ8OI8Z0TydyyxkFn(^Kbr7-)*h?j$Rn@<*+#sx`B zG<-N5F$$2sZz@mEQ;1A?98q)8ncvmJ$}@gjpJo?Eg2;RuxS)J=W4P*{o^ zkLc+wz0(R!R(UeVpV~6Gk)Lt|>EDidRLIM8{1Z$jKzGv^W+hlZ-CS9Okh(%I02tz;!Yc>9467q#<2yzPrA%%t~;@8NHTidZLL@9``E#xJ|$yfTE~c%Yd#MeMzC zFE#lhU)GrZr<vwO|8 ziFkC=3~%Gku%Nld#+&8Qr%>#;i_X0wK!Hi7DgRePtF@S6(E|I$x8_?tq`L3~iNTFXa_`o^Ihh6TbYzk)iN8E@NwpH!kMU$Rt6N6w(5z@M=45)5)IMS;nAf1)S;)Oz0xoX@v;YQ{0*lyBxYs(Ui-f> zqhF1ute4RP__1*_Sub>0tV3DL!rx6%rR6GFOGP+odmQr{nkD*Q{c4mrD_;CI_{f3DZDlfw7!Y3Tbt_>81-9Pj)$4%#d{l`$__^ro|0 z2{P0<^97YP0mI3$@<3^ApIi~o(Z_Hl=;L8n9B*;733_kg(W!oyrp9aaI$RQ;+F-mL zvIdjUzI0wQWGo{EgdF8da7#?oEUVqCB{GJ%0SybQ)Z~C9&Tel1{yE6qg6Wc~qqI>1 zhTOY-moR2gwm6R!RKPZ$@@mc99|eO{h-e{O-{{_U`s+5!5b=r^Ma|(S1s;N)m$Z{G z!Re|C>t9TF7ct5j7^TP<@;=l_HRx-|wsPxT35K5<=LhqstV8w^=$3-Ox5-WI77tE- z+$L9N93j@fY`nPvC))D}75FHG#Bl!HTXwIdToHhHt8j6)48}3W>@#tKBeGPoP&)&2 zpi&z{@}tdEG^uMFwa|{{R~*X6rGjSrmfI6g;4r5xO;!+bLW{IG^-zJ3rYGkSdVT=K z-!QR?CJ)I?rPhbcm1ixZNw)`@{l}^lC=h`Sac?`H_(}B)=DJBi74~0P%#%7T2`pH0 z$PDM+5Cj*GAOUU^*EN5>;VZe~tXDb7P*p@r&AIW3 z8%@|Ct=`D90)(Aj8E`sr48d|mQr!fE@>+V7xIZlAm1m#6(Ng+mch&U91Opv&l4iTH zTb7Sz%;TFAGKaJ)1f(pqI#{fM?S_I>+eT{CeIwl)qR3hs-*fK8KNvhtU2^7lF(gS< znQ}5ks9Z>L7FkZPo(Mpt`2`(yDpNukO|6oBW;5zZOq;S|ufpu_)qRY_#eMqsi0f^n z-hsQnq&qC;eYbk9>G@w~2iM8G zn0Peh`)659rV_y(sdL{wjzlM0P~U0NbS3G~#@DK;1%{Q5=1+FTi2`;e;qws?QQBz@ z`-T&vTiwvuvd(C1>#OPm*5?9m;H5^Z9r11D*)lyZ)dj6>IAHt_5gt@JwQ;U&rMXcb zJJd?V%7wT#bT(wJEpOJkZQZ@Jw}(Qzww?LJ(KzSW$We9qu=b8&)kqHnd}K_j2!73E zzP_rKu!=8i9Het#mlwK0?!rhNmHBHK+u1+R>!Ixk@UV|n29>?vxxVUra#hZ$_iTSG zn%?5LzcSMhzKP%F6bId?tpXl9=@^< zOSWt;y*WXB?U4L6Dplv|hwevvLupVjqWL!YxDN!r>kxu0|GncQFtT0dUqwd4=8A}^ zRJtJ=$)(Qw2}6$t8ldUA01<>3HB#vRAVgTBMDH<+fXh_Xtb`7rd5MJ#Y?CC6^d4}| zy_9*BdpojxqW2lN^3}2B$Lc652ZXpE!H?wQuICn80~NU(qBrPVxLG_$ktr{AAF4b0 z1SlL)7bEIlgfO8$IiQ7uVdIX5(5HREm#f5Fu!+y?0c`T;f!LvZ`iy7D&Xd^7Lo1AZl;kv+~KS9?oUY@bpKR zf%e8E)WvD~h314q54aMOvs>ZHQK_RULjWG`y1dba9F;o2cW8`zkgyjRhvv6YZ-G}F@&^hl4*k3M|yynDHj74y>c6un%?yWKif-i$e^5Q$Cq!rYSi zPLjJnYrZVdIPLi5yBA0*Cx38;p-bHmza>-~` zO-=gx_s>oGh8K$lubh75Z|g!S`_d(?hf+++u^iaTNtZN}F?eK3VK5qx9L?7zND` z^tIoge1NnM80>W(i*=i~(s7VYeQ7I^Sr<)VZgv-*5`Ew!tI9)-KV+AHlFP%!2Fv&A z9;Li|t0cAlS;H2;HaJ*OJWxn{x)GbXvD%oE3>@egnglwBN+}TDH$*NW1li}hr0-~M za^a-8Xwq;%xh_fgus!_Irn@dIm*s?Py0?#7tRfBh&cO8+c8k_?ln?p1DUz##n1HEliL(V- z3@J(%_I#l}gB97hzVZ*O!=A@>bYJ-*<>Oi8Wk(;^7odSFw4#U6UF(e z3!pgTuHCc_lMR^s(oagTpZY4EF66$Ni<=L2jz=6`Y+_O)%^;fZCL3w}65`&-s!5Zo zU#b*stZUV%UjY+&q*7&+D>lk2q)^P{HaYpHHAjJ}&Y+H`h?o~S0(a{u=BE>cf9=^G z^he6F@bu*mezE-+@C|KsBQSnXj~qUA{SiDLB;s2abmDbt-UNYoJAZ90g-y*{nUvno z51Vc)vpIideX@#$t|k42ri|*Q9es-KJ4uA3CO{^VvB*c$j<4f?@S{?vaI-w9W3TkBLeA40a*fBt9v{y+mU z;GRDjO*m$+53OWmy3lO_k_isn{&bo#`B{@vVH^LTU5gTmU3&=56hu;IGYM z>~nBN1T?YrjV&cD3jD=Z5~&fp4l?_m0Qm=s#xHYrM^Yr^+1lx=jQ;P_Hvz!Vi>#}w zclB;s3*WtD<}^4~RGKg;?Q`*wbMLN%Mwu~p6(EfbSu6@+!b-wkPnoOaE>quC6{IT5 zI{|dp6}2%EZE#XJmt^br5w`5^MU!sa!z<$}%m~F01^Fq(++|PI)R5PCk~>etrK1lC z7ZlS7A&ANoT9ha+6ra?;x!gT# z_fog(m=uZc(UCu}TSza}3t6OhGO|E-$Ty*kht}13fAUYes~4zu=qj*!4DTSM8apb**38cMo}MJ|r%~`Rs)3hMd&vyhetvI^5>@Reg0RP*rBeJi9Tdj*TeZaTj^US&0D*K6MI{sQr z*~;PCiZ>@f-)W+_Ik}p@PAP{bGqB0<_-oWtPV{WoH&t?r&j(;;54tA@mr0S+K{}U& z0CGYlSl?FI3HB~dTn^L8YOQ?Iuq+hMkXa5+rXMniI2a3yD2%Y?B(W?CX+b%E zv2`2-S_#@K@5x%2S^d%L_q)iAG|uq>S2H~w1v|Xx^{t$^T!Pf#k3UnXA9wLca^b@I zR?zN~AAd|y53+v*d{<`K`CZX_d~=)IX4(GLLVpU@KTFa7D6|-|mo-obKS1VtZMyFQ zZ7IMqWFkCLUtQS;>qls6O*KqKDfjG+pB(NUdo2D)I0~`m0td!KrQE)(fwePgYI)tI z%17+RHxOe4Xbk;s#xi(^n8%}>+q0}5IlIu-#l2@9+0~czIPRzQrK=>**bDh$7&Enq zt#J>_pfmIjtnc$1`vi``{}1tDfQXyi%`);8`({M`>JOLFz*|0t>Cc`NSx7g5{#+gR=Y zCTi>X-$ZT8E-8jmRZRVVm6~L*d=uJwi|uy$Dh1XDHP?|2GnV&b3@g$zcncePBd1c3 z<59+1Sr?@uW_}H8>G2KMp}*MQqVcdl8$+h5@p-+q`%-$%%L-?o0X4*BM40+!Bpk}i z*X(4PoKVA)wfwWF|CG~kVOtvD34Uih*jF2hD0_u^HD>|92;!cPVVTx` zh&AS!ssXY`qHXhH=pz%}LSxtE1^St%SVli>a$Y)TSp}r_=nV6Q<_NSrbv_hhl=qJX zb?IxsJ4T8+J=1oxnUuBDEx(%z74^iwcyWSoNR*VbzQ+LGcGP?ZEYc~h_TE`}wAzRx zQRPd%-@TWVu$8=aVkfWNsV$cV80#Oxv$XzPrz(=&IygzpK#$a_po>mw26{UYuR z{>L`!LFtoeWWe~+@O0WuUVYNV=*9YV5Z?ADT~40;)iV$%Au?~qh>W?^v&bC9iORN} z6O8}p#m8OzuDMO30M#023v7}Uzkt2Y+Sf$bDEU^(uRUYjl6e)$rMh zX#25PnjXL3RlkJuisLj*33E1`3>C|F^)Ap+SbW2Mh_`=AYYza39^>0;g{CZv3%AYA z{@r8w*O~jrplBRs=H+pzz@r~$a*RDJTCL-d)Y=p(Fpi9m*EdJ7u^>)ms&Jo|D6w_? z_3+kp``nylxH;;}Nr&Sb-(4}&ZdW!`q45Ysls{APr#C)KBWO|MLV<4Mx3GX$0 zhOyJ+`{+HUl(MA@h7_ZjoBsFztXO%&<~aeAim0%lSER>4VN&{P&LKG1q-7b^QY0lL z8aGsDX74z2cF|S*wWKUfFJA^P|GLRfB8@m4_hFO8dPwpOg{(80MvL{ZYLk)`82Wp6 z|7Jt}H6oolEw?{o=?=FyKK-0DdDniy_?F5e>I1iUj;u-ST1n#@--pyiUvvno58QYr zG0Rt{inv92-}f+ro=PUZk#+Vwt4>>YQRCwLhEa_V$k^_#`}J?7tR_=&h1}H9FXeR- zJSW6`@~Ql44y2nB2p4}KExvESsLc9=$8a`-94FmNNr)SB#yj5^`?gtib+49HTs4V~ zcHvdawLKHA$646EF*I@*^byb2@@bpbn7a?!tr^d0KT`v+Tw5u}X{VBuWIim_mit$d zmc`b#dm+S-l} z;bMa=(`u-}hu`1vx#ZOhQmudD7bFb4f0p;Q=8p3I?l56q#AU}cTx43dZQi|>VVdw} z8{~a*P>mZ+&J4{-oyby=kbnM|SEdcfLaPoYoL=#%Z;|Rn!?VOW%i0W_&)&G7WJzAO z@A8kr19>?@U&cJlY*Y$6Q-<;DHGqvDO`LKpag!|zSM4hgKJQLv?cI)98ydlBkL{9h z{D+w29Gj|?ibWE|pDk_2`({4d@$vEH+J~S(rxt!b^m!fav*ik7PErcph53YLN4A}k z{FY(qCY1iE3npa7A;N#wY|<3}?qBnkYGq0e?q(n1W)NKJF1@xd288-jZKn4Qy%W(JD<-#Z`?fm>2~Ya!s#vGS>(RV3J#An&HiBv6}dZZ9F6T{ zad>8VGzk0+Hz zx|v~Wr;di)F$qEx$$I|!OMtKp_P4N1ihD7$CLk=681MFnu#C;JF!`AO$!NUHBj?#d zyR4_muY9Z}Kw(Cv`^z2skHa5*o|iB9o749foY8NF@uPsOt;*H`@~aPK!op++_JjXL zwiye&PnS6G>;`j(%pude$dSDZ%ni&#?|hbazrDB;NfpDbQ~IzsgUs?vYQNXaA^Q3^ zN%@!H4dsn3;@S6#JQ=|XA~H>7NK$EBwtTTOP{0dHAc}G^pzqv2;J#p4b!^wNw$%#( z5swFd3y{RkP*0kpjWe~Zj~4&Nk6BacYETLPEogSZDqP<<7Ri<921g?3jr0$9V}$cEnK zt!bSYD6&xeT`|o&v$_4cPHH2h$0604bU1)eVEL$ZF;S7Lrt^MKq^d_2P4%;z49}J? zQ18Cx@4$cE!YOqhW3%61G%)0v_-0+n2h@+~6h`hNNlMthVQE5jwODKQg=&sNh3UcR zV5ePOY2dX)oHz%bxK}2W-+%WljuV_&3}JE437S7n|7_0_Hf1fQ5NFt@cF(=)gGz3| zMsY!SQMaOn#(oa^*ExJv-lS?iIOe|UKSKJO9kUF?nWO)M9TnhZDLK`e$|={x6#ix$ zUTLSt(Kq4#^=ML)=j=Ns?GTUjr%E) zKYJ}NJ4{^;Is}LGMkoi<6V88Lq;pf$5;)+%^HdpSv<@9ZN$E(i|xlm0_4CV_?t*L)2AKZQ|AMCM2 zEy{GADKv0^{-QvRjZmeCe9r&ALG`pKzZcid{s7o~4o8=>=Y1{H4FZf{U#S4UrJX@= z%|0eV=qjzA&RV^WajDn0?WHH-r8|vh@9_T%Y|iQK;^hXS4B-J$a6yi}_mAZ2a;Uq8 zEyeO4TOQvxFDp|#LH7^*v-~&y**Ng&w^9&*p?-z*`;B(c*)JTsQ{6K$e~8?q;5KpN z@i~D;+at5(rQXhoN`DuhjwU-L2smJH|`5tOnHONLb_ftOjEmxHIki(rj?)X7jCiQg%#Q+no~BZY*>G0ofJUzc|W z*zf4uOkBmEV2=ZG$7)0*(2 zQJ=$$I$HJVTwyfEUt@IUm~KCPf6GrWV$LRKaZo#+>~aHLJWwW6Rph-MP3I#(xAE|6 z>yVD|$xS7^`5iXbhm~h{C&FI8OcBblzx9W%>ZMeBQSKw&gBOw$-!I;2h72MrKO=>5 z!_I3D^K&KZ1DxqA+rx!UexrK`*ACiwO z)HemnQNI+1Dx>Gha_g0nSSp`|Q zg4;|_$He1Ek6ACA=QWT91hcn8kKJybQy^!*q>&jB zbwm-M;I#6fMvJHl$|g6~en=r436;fIRG86W$W!Jc|#hFIN($TD2OQXrmwA`>Gem>t4Fs#sL6v;=8~Ktq|wTI zj*C1(nVV0M8)Dh#-zbZPPqH(wmV06jVOS)zcmW>ly_d~c$%|fC7;PK zsC{251ocTuThD&s01TKfjhT`87c(q!y^x5UPilgyIGQ30)Xur4{7c5m1)jkyT*+6P z#eJVCLvE&w)uGsj=K*89Z1$C9ML4mh9;9SXE?{anf1ea_Fk7={mQ#a-W|I`JVa*l_&-l5fcn35!Rj=r$uKP~)K{$B_{Td2K0|#2 zwX~r}_VCGl%~pO3E#-=m*eV*5XWB`02ltwuUj3`*X^BwM7i$L1%!1YY3n>WwA0JWj zJ}s;_8w7uT<3K(Mdh=8{Kl{RU08$!l?kh4ylb|Tnc z5S71axf-q`ceI+srr;-tO-tDhkl zme`3x?L<;>JjyyEb!)+UyE6bdZY$V5p88p2U|;zy-7QHEbSIe7--H*0EV< zS;ea;*q*1O?bi81&(naJ{zh~6J3h;9t#9u)$I~>)1n;j4AdTh>WKpMbY_v%WH{sy~3;H>`QdZWCsGzZdZ@@XBCbNYogD`iyOCGtYQt zHks;;CjZIBe&WUx@;_AU$t`?9J}Ef3KOt@3f*)8X`J!-Ooj7l4#@HL|CENc!60Br* z_y3GOeR`2%RX7Ex> zhKF&CzRW4HS)&-h*QmnP+}v{ZD>w z7?r`~&~z}NX6O2i$%VY!kymAonSr$cUKBC9TDwVUrJ6b^7n=eKwZ(jMp45S7b z^&yRi8G#`z_2n3XcVws-te!RlFwgL>@qgWlaBBX1M+CYm0)1Dhfcq0)n+N?#oL*l3 zewV|}90a(RNDI1DXZ860`iwnboJ+qqWLVjCsLKfGYp}nUl$1f8{uk1Fn{_(Cko)6 z-YpUnolSnAr3a8t?SB@>KWNPwd-`=@q5MPb(SJZtulnFMIq|<(CBGT*jC{C}ajJMU zc8aPPVK6Z6pPEy+a6t;dz61u)=RL7=dWpTys}+Rrk-6Yh7X)FRgUAhLSaUk#^(tn<=-p&GaU$CH-;WFl2s`)u+*mVBp#@;# z(v6e@UFZStEQ|g(h%Zvk8$iQEoGg}c25oqHK!K#}x)gMea3g*-p03_p zK;mR?A>UOCtM=6;O+tXt6LHR&X=9%s{rZxZK2ZKHk6X)mq{{E4*?gR6?gq_Tu$`sA{ zD{h{5JB(?9sml1+zhAAogo*)}r5wx1{nsuHZQrbLBc4LYXA&aO*MvgFk6JeO6J+I~ z)of8iNIGZ2$e5+DY&BsXSzlo-gQrFv7kJJT^a9RN*Z#IYkh~=|aa>Tb) zZ4HHtnad1K(-$3T2)Xn>LFCvjK$n7b0QUci06Ojo-eIw*HUnFQp%VY}SO?DSZZV+o z5y;MzP>EV6YZjomK1l=)_^=XF5EPriKw!i;ghlKO2*~IM(3z1z=jWd2&pr+P^{|S}EX1BIg~zSV7}!t;$qWtus<=|GcdAo$K#vc@ec~Vu6>h$c za9fJNQNG#^4(^78N_cQbu95B0ZZ^wJJ90x{)Py%f4{z16;T^pzidr>_!$B47CY~=8 zD}y=8xf9O~`cci#U!>wV!z@M>@emDNmu#Lq`>NA&Sm@Qm@Eem;6!SOS4%G8U12Z+O zdAyc7ssz4a7w*<%t6saO@Rq)l_oH6tx8Ng1mE5O{DE-QJANk1&;S}%I=DmmH*T6#p z^Ezv@4uLnXZ0?@AL~h?~@3R(d;1L=U5!Ve^^X5*Ymg7S#)T=wZmH2fja?3hsU_t0R zNoe~9vyrUm4e{iaE&nc;K6p#B$9u~=KMTk~^b{Hirwkifis`>g@L4!pEM^eug-XJ{ zERv8KSKC#ttZc~7KM9i_8hehhRg_${NYmanct)IDgV;LVRfGTFZt)ck_~ zs+q|uKEKzfc%_}Y*_@Yyldj+)ce35;l1LX{g;;&Zqgm6bt}^1*AUN>8=I5Tr&YUlp zyaP@P8V8{;XV_;OtMGJQ^|0eA$}CO!^+U<~-i%Ou@5GP#W~k)8CrqJt09=eYud)-8 z^d&GMb<#ef1L36wU%Df$0IO1zh9m4SzC)`-n+;Ssbo}C{{tkoGflSW6OBKEM*y(<>uN18Erl&W7h%d?+kwDJ$wHiUYnm=vIEZ8m(GPm0aRx~^nL1E^CuEVwQx zbh1;q(o6RWIS&PL4hB2Un=!9XJB3V|A!b6!x@0E=EJX)8pkQGT96FPSsLp~L1VTXd ze#F$^una63*^PFRRy(2}&yRWg$0a8v&OtHnf56~Zd#v)zbhV&hh-vCp$Cp+!DZ{09 zQO*+5^yQo{(A|a4wf5l?*}>-@;;A6FAWdbb7FaQ3$w4=)L@?ds)NVTuaLyjow=}-r zk*>rGcO$*6)0{c0?3pA7nOh;Y=~A?msrEJw^HAZaa;t61{FNt8?S7rigKc4HV|Lr7+-lW~I}fChqG{~rp%m+-hz9knc8`+&!@FHOgzY3JnA2uKCV_^1)?}p0Fg>lW zyhX?3X0~bCl$l1zibyeNEfuc+)$HWq#=d5(fDU4(;O3^~7C|gdw(W@@d|CL0wAM~Z z7xfJ3P2Z0;A6rqu?HTt(8+mTH@&=(eW{3}#mJ_JSwtaG2s+G~w)7b%Q)==9(+8Tl# zVAop8ar=!U=tE$(@~24~1Qa|v%b_6jGaYzRZD@a6?C6a2(cJx+gT0;d47g@3(Ow!E zRcZl7ev?qxF;F4QjKk)Ld1Z~K3I!Fm%Fx>_;Q1VqFBXhKA)p}{U})JPUQlSxTpXTC z#2Ew=XCM%>lj%9m9eX%PH$(8&AJ^XJF&BzShU=E@{7(dZV>nx-b$!^}XWY_Xz0crW z+uI7I*DR5O1@mcs-u)(0b#EQKb2saYqQWsY_)babfXv4eud@BoA4hZ=XwJ6J;KxAXRV*8)Z&S z!VGb>$e>@_oUvy;nBS|V8i11P5X=6dNvU9QOj=f^O;}0vn?gw0dNSJU&i?Cp$hf{V@#+J@faj9?qr&nJp*$vq?nlYV zZcGqAtd1+$$Q)N6Ml3bhz-pO?lzbB-ZEqrWNFU9B8RKn*!i%4s6oUoy$cM-o!oIJX zg)iJc4+G9#yq(EVctxullo%jw2d&uQn@f8YE5v(+8SUvolRpFNdR4nrfkX4v06EF78? zzEQ!_?&?8gx;<9QI8Pa}g7Dd&uUFz#n86~|XnA^aSsmv`pOEiGY@k>kWj&mR9C$Bs zmQAI&d*%yQf8Mtg-La$`{?T;HB(EobZ>&CeU4H73(@3t(=lDenJ#$iAuOm!Z65M=T zVFM5IL+`4`GENVPJhKx_mwGx19ZE>+tG|;?VE>~f$g&k%;PA8rCX*%)(Cp?a*q?9w+F9 zi&Ssv@b|s@_|PRSkfq|ftwH*9X1Vd7V;&zjP-;?h&eS81LkGATwtEdK zuqgLd)$)YBB^$jwjQb2|a^B)w41F`I8RN``$OwWt&A=WIog0bHo`2qmWn!fI6a2S{ z2?g-fJy6&-KFVoS@yQ?8_1r!9aqR~S!4ReyGx#F|duk4jNU$qM){{+m7@us0Ia#62 znxFq7VPXuRXIiFR;&7Q4UbkDN5fw;3di_>@<}J^Hr9}3^9{o1?czby^H4q91sS|L1ED*_L2&ONhy;~Ui>b(?a1x-AL*$l$;KvAYYj%Y8w0=C zuC9!5mlCbAk3-mof5>=E5qht@&Fhs6v&+O)+L|iR1HTk060=!jG6F5%2;+WfEAy64 zV))2f6ua$g&z2NS>IAk_FQ_LL`DzQj~-c{Nu_tQ;HRaS%A4sd2qo&m!PCj;>{4?uN-rohiH)%`VT>md_DSZJqqv zl-6hqwS4S;e&8V6+Wk1ZXA&pv1`W1HW|>lC>x0}t{2i%vN#M~3=M3#ut)(Lf^va_T z7Qbk7H$Fe?&$ZWprJfc(H?4ElbF``n&PXYcUx1hpjof^?>jKPh6B`OTUm1}V`weE%GkpnLm$t~wps8NW%Hfa0+;)gUb z8KgEKBQwDQOW`0{q5ImmC#qVG7>_~iJg+%L#{Cm;150wxU^I91)jMjTe0q;4xf z&B)JPoBoVfezxmY`&0CFcOR#zbPcJGcvXCO&_LjtRp`lov*tKE{Io&#TzHyj8dPE^ zPx3mU9lPxY>gtg8@d+KvewbT8SJ3^??|$E|&@z4V z0|uQC`FVv6tc^dZHWpk|n*b&|@yNr}1-FX=8ga^8AC&&L7sYE-9zk;bhU*cOi z?${_Zip&4FiY{LKk4HJ-=`0NbcrO<3cIdqseHp}i!eZ*=gVqp;JZYdb1>toT* z(ZwOHQGwClLW<!p7q<>4^evqXvn#^&C-s`}Xd|a{nu_4HfE%D*<+{PJQPe zWtD$4Yw4Lql3m;9=?vc1MUd%V=4*aXF*~~#-eWpN`8_WIriXP^AXw20x?_9_`o3>_ zFFAWG370&ppOJ~c`w3~F_fih$Nqfod-CxQTd+snb9CUT0Ujt9Zfws7Q)nL{3dW6uq zKq%kl+{z)=_3BL9)eeMeMN87{tbQP-T#Ft;evVS-AU&u#qsoBesaz>e~JTF(qE zy*)E5=);URqm)b_ZtOm5hVh1&rH|O)iTzbR(QxlHT7g#T$?+wg)|xX?_n-YN=neqi zjb9YFHqe^~Qi_0i9HY$6+}7Y08uG$XC$f#Cc9BHu_gF>}$))S0`II3oIR1*{JnnQ~ zHLP=yHr$BxxnK@c-`kt2!6_Y@@nQ6m?6Bh2)PsTe=6u@xNLyo*>7$29L)j07m#8w? zw7vM24@_iXKOgW71h?=H2E^Y%$KHr#-%f$9&XA{JriDf;r62J=R)yIp1sp4$vlu&N_~u$tNWaJ%4mI$5aE0Y zyS^KgyBmSkW{aLVZzq_~CtrGEC?$_&Ck4H>?1)S2^G3p#om2QFGTHJy%7?+hc5L%KV^`aX+#Rg7njkLo(b+34951YM}TPqYky8ON0XvI5FkN{`n7Yf8g(Tv7( zyh*g=53iqBQOMxA-x6TKGRsbY%iCs=i8Az5r(%i=XyBG;n#JaO8h)+UmheJX{K=5j zS^siOzXkTn#`#f_`a6thOlQ@#e;d*d316(sS4y*U60de2Ew?XC>|Pp0@rcV4`A0Lo#GxQp%=gWLXj`CcGQTObwk@6s{Y$ zlbrOg%ChX}Y&#Hn)7O)I)zuc=O0G4lIiwDkiyo$Z)A!xP;F#`JpYy_j)J7mQ4e!U) zgAt=^|9tXvlsj2AsUniTW@+gM%>yyMzOu}f3V&b1UZ^}(C4 zGt&R&z+S=s{d*d>EKoZ(Il4kxJ34T6O(!??*(_AX??8S43=Z*-eb;dD^zmb=MxQc= zZ;b(QC>ZHl{a`3@$Ne2Y))^^0(9E#p5pHWeRoZI0iV-4*0D%_&#bKb#KGVKn;j`p; zPu`@SIm*fl!&$!jqrUt;s4lkM*m54`yj;wpE`4i`uDP`cHNh-oJ$doMngy(9dtZ$YXA$W9YSBW262Lls za)Kp(>y*CTb%Z;9=~l}5dHl4%=^K9q0)Kp? zw-`_cXNO{9p0JtTQ4+%JBh2UDU!Ol=2{I;-9l||xV)=JBl&1&%EZ3lQ=_3n%v6RE>sMst^TKxO z2L$@!zSpwvVx2Y2vu&LUg+0<$R!`BFH7}>8oWD3s#rpNVnR+=3;p`+ikK@d3=Yr<^ z{EwN$!B4KZbbltgE3s#A2Nq0r*|PFfmWz93bkE)Op%c(H_30TVeb}xC*=sa<@y_|Z zgX`|MV43z#g~wHcZ2Llxv}zzBisM;Wn4VeY7h>29aTGLhaqiEIET7jIzW-;&@aNZ+ zVg1qnhqCt$YiirNhXW|+0YOD6(yZW-D!pSbR4W}q5h67d=^=rGG^L10Z%3twNG|~b z1nCeUG-&}sM@k3~N+9jGz2_Fa<$b=-KYccP@2tJnoMVnT##&6%fp@{yMz6DmTI}Hd z2e3HF8-nAw(2z@->ZI$Pb*{8!j?&DGwIc%66O|GRyIVsV6HE%IIq4Q|4o274uUgPn zHpN=mL2dY8p5M1O0Pc9xAFOtnvx$J!7X!N{|o0l3Z^gNNjMAfcCUG+ndmSp z!(pBo{XT%wB-jvE$p|y=ii_7UP7y|=e6H_(bqgMaUMBkdC~hr>AdjY*pt$))<3Vf{p!zSpb~NQ#wp_n z^A#Q~f6q_f6{o5uq44Jwp>im`-L#%K3;E6AguRBTaChnhaPkyZ@kCTL zQ+y}ps1)PRwby7UJ2GFNP^qJ#d}8HLu%sNbpdqphV021uFr1Nw8fJ-iKtD zFT{GWJ^tby0MH(F+r|@TGtl)7Z#8#&Gs>{f0{87_9cp6_-J81p|o@YWMT;_;funwwIO}r@}5H6ZFJp&iOGE zcaDx)QmvNri0{0W7?TkYIjnMZFg|MHK$+u_ok?|k^T>40-m?ovaCI{eCuDKR!Zqo| z0WWR+qlNvOSyYdxMGehHn}c!nq^auqP+R2)jlr%a*Z7#P$Ms`FIx(#fPM@E70DDa~ zW3MH^iS!yRXGdpGkGu=Yjkt=cC4@I0qbyBlJbQ>}jg=6@x%j_*A@P zwy2&e>k1$J>B0h-IF4Ncc2;PVm8{zlPK{9*;3NHwlo{s(qhi0Y$avbmU$OleAa{KH zNL7Hj%qOvX3Qc-RzVPw}>^S6+;r{#CaKe{1XaCaY!omoa(gvm&L6uuZI>+VI+Q)!+ z_QJ0?FYvomy*nG`<##K&_YDJ2aaT7)MgwOhriP7%sZ(wT?tD|JB6u_6Gq^ zJiAh>n>!17LDl%KR2pQtVQeKW0ZQ#wCfQ=DVZt9myns!z+IpqS;CG-@U1rP+fDrgV zY_(s(jr6ig?NODq-4;fU3Wmi8OSg>fz*rJfmIh*>uA{R46(MfOa9zhpGbl7&NaE)} zECS}7j^nrV3dN0nX|CA0k+1@}qxro5BVk*Zi%HaWX{maDU8wA_Q^DwwHIw}@ z^V%wV){m}dz8~ALs zm%snb@!qA>h;1@cJXeEHxye&!`=2d&KkV{ZMbXF#U2tn z`TDO*dtP{*y`*;|15UN(CE1eFDeH!bxT3-bV0MH0@k7`AHJfupCWoere_Dkdw)a>X zai12fE(Di^kj><>I_3~>Uml!U4k$f=7(Mo*4y;cZpG74iZw8G*Xx-7d_c)UFo9upi zuM_*D{h*Sc?imr$VcX<8dieOy7oCV3@B7cIo(^_5srh;M2+SOumGZc_)aFZ^NI>PE z+g)>!R-LVrSL*JGM2SCC8&{@ISe{{#@)(mKmCvQuyXACPKGFs%sqxGsvs;UPduf~D z7J|P#&kywfy>@aJg5n<6QJdlqrCTkM`1HkuGOR_VEUbsVJiRaCqsfV=kGEDtARIN6|JJx8$-*wH2=qP0ffj&X9l)h5Pw*HUUS{wz?(ZtIYl4^_hLiI z`$I_4%^hV8&c^fcruN?{N*($phit7`>2`8cwM`&rN5{BwJU`P}KBw8nq_l{vl$;!; zTY)G6jC{@h`l(IiVpo^QpNuC;al%?*>{}-B3ojD)8oam-3Pcd2>_Gsaivl#QYMl_$ z#V}rELD$cT{+6(~LLl45Z+FGSVu*LfehdBwgcn^KlU7#L70aUoYAcwm)wn?bRQ6F(L&c=jV3x{C7zJDf^RpRZO!wN3&g@}VGKS(MA z-AW(v?gt_=cJW@+;`8qtvxVX>r|HsOC!H`%FANTwLH$fI*l$pUl?Op%KKxWUqRnI0}dt5yHpb z7^h6Q09bg^#_@UN5By8;;f~^$XbHSTf}VN){_5hncx}?U(i}*T?8vo42;CNk>P>S6 zEC*a|0?>&PJga3{G05EO+s{AX{MOM&B&KNyn0mgSl{d0qhe|~zDP@Q6!NW3nv{F)H zeJKOvE+TJY*|p>1Nz;3bg}fHM@4j1yW3*1^c;1alnDpcNhZaC*Zp6uAsC{6-Joh{C zW*`$sQpnJg&4qWXW|Kjky6QDssQproIAN{^R%{n&V}8LTH!Km4hjI_kq$u>1>}eC`^^^UFKiG?(DBVU(DLrXn7#{74LSdwc)9*-PaLBs-f9%y%(F z;dj4snPwjquW<5YXG7$Eld~c8Y|y**$4mJ(P_|x*H+E^bc=Fg->w@HhV1zPL{Cvxb zu4@uDveMNC+3aSufP8V}=TH-8P?vfPglb}0iw^C`aozl=6#mL}&IPCU__zmY&OFmX zty)XyCcp}Q%BjQ;YYv&>k-fchM|~rfeECyXfXIa&xFj1N){!5koO} z#$zC$E_(gKPI8U92z|RPReiXZm9?b9ZjA&GLE%GBI1L(aQW{hTNIDa$sFL?ln{r1b z2Cu&;iEQ9a%ZH9QTmAgfaULo`(bE2b$$}Yc0?(Vy8rW>bPNe%*yxRNpTG%CT&-aK7 zznWHij}P%phN)RN01DpgEA1};EcfG8kBxqhJ{|bjvqc*Z9lOg3|KQ7)?dsWar^T~= z3HQ#6{Q{uG&y`w(+E~&#b4`{G_X7bV5%0KP0_i+cA85n&%Rdu47wYma6J`ta9Ay0K zUtG0TUt|8|Q4#lC{`0Dt&kpu88R|8tXt%)Qyee-!ZR>p2yC#Q@2kchy3b|XR3M?+( z3el@I{G50fJa~=WpiXdcm@OV40oB)Lf4+T(m~IbiP`!%*sg*n6HE* z)QzkuvA)WrJT8J%EwQ^&!e>JA(jZjdy!h$E+ln)DeIp;9y=6D|x3$qx8AAHI`E#s{ z*C|M){e1U`dSFpPM4@u(>DJVh+pbuX>F@IkkK3O+JLU`q_4g|iv-G}nZ}iy7R%{Df z0d?i}z{%H&%ja>}vwZF>y^>4E5uWeJX_ew}Ki~DGtd&>U{aR9?rQ_Uagwpzw% z#9H}i8?*0f#(cTo$>!IfHABHtJOVU5jqerHtM(c*y{?5ob%BHoulW)ZG z&YWiqUwalVB<*l7eU0n(F7kfTtC~92=u%bYXnl#nKZ&i1>P&1_$Dez!xJ?&41O|X7 zHz_$fZ&QJ+ys`V-Ob5LYyPEpdjo)|G z5FOHoa1;Z&bR0=Qq|(!5%M4;4nf&%nCkd;+yhUI<5(8lGtL7l9i;XiQwfy88@A51O z#+_feWj4ZDw(CbDnq^Fqd#$SleK3%>`isW;Y1J@&^{RwEq zJ0I)h-PA5k#Lw&fgj!`96D;e0XZPEpisLyLLlg6ZO_u}47nUThUO0n?tzqK!&G0O% z?mz!QLrHbdYi@iKKJ&rykEvspdvGXWoOZ%JiL$@kr`?Y=3Rus8{AGukSK zN@oX{3OEq<-s(X7mZ0p!fS8Q$=Xae!K~@qrk2L|11?jmu31?&9)HPW^Z4Doymn1dt zUI2J%kGZ}3>8>mtE~C3sDlPgiPDCAIGLFD*enl>AR48t)fvcQH#e9nSlBt^zBp?X* zz!=gurA!{OWyR>cfBSD=Jtmb4q(zzKja00@7iBrSgs!hUr%|^jw_QQ*?1r`Ak`$!~ z&Ph^cb8csV3eH|i%C?SK$5Th5MNiO2?7JdSN>}dKoj+g)#e1OXZN4BcAJ&!gk^K?? ziQG=Nm)7y*cLk>}3@^7#UU;X^FyaP zV>M8E`n^J`vk@E=KGSGwrm*L3wYVit6ts*GGl_s!xwr!mGZ?^^TrcPd{(k>tMp59i_Wv5Fmcu)Md;zqqD|epvY-+E%=uY zz!xa`RS)p%;^G?dvP^8jqHOH$&s9dlw48z9z+@fH-S}sXSjP?Z`=5$ahT+myi53l| zKI@~IkmaqkA5@SvHkYE-1#_xOz&jJRX3PBvz5hO@0-)WYeK#giOHI!;R!N|MTy2n(4)wn#F0v!B*I%h{kQiO0GI(_S=PZ3xtFRT6Bpk6qKO`JhfD%Kl>YqxCS6w~~+3wcSgyOS$iV1lQlQ)T-Jdff+MPeeGCEXVzK$EqCPtUAn5Ag9!US(=HM3J_3~0{z8-a?H|a*sjbMP+uUnH2qe{! z%d4|!mn8MARJUZSfbfv4@G+J(Nd5d(|Y;k$vtKhQ>v&45=2S0g#aeLRb!@A%Gfq3t*Kb5a`YPYP}0 zdoZ~$#kDRU1FG&HfnpbKv8Aok?Y%aJWhKAJwg&_Hf*~YtR|cQ{7b>0Zk2VT3&rK)s z{v5eVmp~Q6WncQ`A8=h0ttqiybdupY+c(cD@%MK4l>Bk##FU!qYHRd=XD`YykoF>& z6D9?+XyZ8O;+X&T*9VM6u?8)~^##b@dC`ZN=s3UZ7ylp+DE?Zhqv}fy0TgRqC@yf| z*Tv@e(O&1;>nFC3zL{-8(JxUUpk$T!WhW8<=i;xD_wQ@{5`6QI^?-hXj3@kb`M6M^ zpHtKM^N$41{Kr+w!Hjytl$s_r{!wI7eZXE>07R+BTFG`!&gb#XwJ}tD;-Y=(2#vkg z{+`6CD#tOE#u*lt?cJ8=pFQ0IJcbd;5Wirv(j1zaG-LhgBK+fB-1mS>P1`+wTZ&0vfHv}bMh(kg+y#Zy z$v47L3Y*;{wa?d!FBo`Z+}*JUy8z1k$N*Oiz|ZQo&#*4$#Y>0@XCQe;zs0JbsVYDi zQ4zAUXr9gT1d2i7oQ|*_mw1CPD+(*pIv|pOT}m5s-2Wl?IS4o17WrzdQHqrx^t-5w zY4D#o#@ZRjF>Q-CQvF2qkPEQOpM^O+)%L298!XOJFC^R&rs*2O}rX_qAhpD`hJ3Y5CqIUF- zxpD4&k2*uHha4-odgXeILKjpVCU{`_PS+z?2deA*d-#DNmwxPZi!@}Lo%o1%rNK@n zbxR*;X#HNNIC0%p;@(;H>(oMRRyQPts=Xw#;AYCH>fsZFauCS0cgS zkZ`M(@E>$Q*N34UK(nwJUVkX{6<#(m$s;@7Zv{tF-`p3f&`OzZ+G|6)v9{u{%d&2i zbn=;WWe)a{n>D}|O8Vr4EQsh1%R@00CEejF;++8KeVjbn zps=ZQHxg}vI{DO54VQN&F4zzlU6WL^`Fd#dw8JqH0259G6yXxKpjW?_1mKI`zZ^QAbCt&iZ=@?#|IkDLIt;&% z2bJ?UVzr+DzH|iPgZo_}na(~$>g*`~)))n1 zkVxPH?^!G&c`7vr)d-(EAk*FejLB|#%lU&9*7pCDuA~c5`GfZ$%p33N~m>MDj zpDqm>RLba?+fXQRiv2oaF2KYkf$eeFK;HQmT_&Sk#i-0^lm+@2Un73B1_6=UA4tw3 z>VcvyF&p$<>ziJ7d+f{~u;FJa84LB$(~J-V-pEFNeZym^OCkv&^Y2AK&j&nRI@jTB zQzmz`@9J+{*CYn#4~T6wJKiV%hUhm61Hxy3_TF@%&s*%`eGcg7Js7@@!EO!Qi?-2(#x9~vg3?NTRTKCj4T1(W!_ySXaF~pe~P#=X*?nw~g zO|;Y6_-1h^?N~33=7rnx66Rp$F*4vS+MMET@_C%T=KuST-WnHkk}9B!%Rq-)b>E!p zZQ`)cQ@b|^nlCpw*&Lb&&6%CEq&XX+7b>xabLbcd!$J)>1`T)-{>=RXsj~dry@5Va z0DU)5Hqx0RlB3;5bQCIV6H^Xq@=NffovKzL7Y8UtBkp;wqegrei~S?FUpgQ}TgfR~ zi7%zaG&vyoW4dW0(8>|w)?4JAoyX>qvw2S##`>zGd&C@y(hl(zqp%fGNieHL2ru=G z)Vfjhrf7@Nl$bNqDd<;k^(EZsJGe_2qfcnZ*>*aeJ1Uf)oYW(}nU!h^$n5V7Cp=r- ztn{OG13JiFYJ1uf9OIoTnoy6p(y+FI*9UZPs2J87a_r-6cvZ?jwH8rX_Y0kkI%#us ztcdsWw-Ia`Rh$O1?4h-;lM7z$Wi22y%U4CJ#u3jV(F*lj=+Q`-FwAui>eO58{X0`; z*?@$26tWtLuH2l!Jhotn{*~xj`FGQtgMZOHWMP$m);v)C$z7NI%-2-6wKiI@>#fZv zjifTi63@d=hN{+I%On*;&FQ@h3eTgyop}DjCWSRnx@zXAGAQI)yg(38x_+qC0?pr# zvX?PuovNM1pBrV2>z~)qEPK6-0(3V2rFgSToVtsDeWK2b(|+!EQR%#nY~6{58%K!$ zKZ>!WLHYY)o)UR_=9*%e)8o)FR2{2+Y<%Vtz`6Lu2^!4FaMZ@i7dj9Ad+}GWwxEhE z4=kc71~B)Y)mE-9#>46Ee=rVF~L!eG8G;!z|Cp04|GpSj8A7FNZiof3XZ%FrXHRRRW z-OKXlq!lREc>y^1ZFj6)zSGf-e1w3wX=-81$l}i9URusLJ#Ty8g-Cn6`P2bcxa8zE zw_OeBdI8CjjkQ02^TIQ1WYss-q7Aw`V~LBh9nRRVOQq=4wBx@pB#?~y_9DcnHpATj zU~5VttEJuQ&1lnlBMV0Bp|RVqg|Zy;m9eIY27lE?isOmAJPjLN56{Dsg;d&!Qa#T1 z5R0B{M{A~s_vOsdL?|_KMnFP%;(C2^@J!Ge^%O(>!!o+^M5BmoM-FhzWm)z19B!Lo z!X_n>PNPe5!fIZJacb$YNc|=7Aj0K18-t5?AK)7l**wR7l%Z#AEdf;Q1BtozlX^qg zVhnw51rTl+N2K|hYB+6qP=q8}h=tMi)4M7i5KnXR)a6wRKPP6uVF1j?#6_N(P0B@m zB-6a2a{y5gNIggH`~i|^St3v4Jbg{me0QalG#iaAKJ?7TYN1+(`c4Ard|;d?3OvE` zxBhYBrKH}iUc4pS6^kOz0Gyaw%JfGi+IBsk4TIOmwi+PnqX^yaY%+awPGHRK$wv1% z(Tip&DGvzy39gKlEdvfQ@*FmCY-icN&TFGT?J*$W#pnp&O)MldQ&~;BA{ae5F+RD^ z5e&hUcaeiG$2C^aX^wp!G7*^7vuUPP(O?57+fFiY3WA9UL-O%DBFy5X;6v!*9CEP)y}$*GA`8)HBnTAh3l4b? z!cr)Ia6eE_$IpoH*jFXI!aB~iuhRzuWTTpc;`T%h4F^Z}5-e`{!*0d0@&!N$64lys z1utl$c<@>=abTo)a{sjR$d5Uv4@+qIls`;4HG8 zt;oOCwfC+nFjiN_c+vMNzTURkKB>hZEF4>&sn2?!*J@zDcwwqRzCo0*pA`Fu7_^`N z@XNvF_hCY?O>E+RIATCz+SDXfT=UPx|3*Z(y;OyPS{Nk>!FbB4;9plj6yuZm`_)6~mMUa=G$1nrtVE_iH z@v7aB5x<&#@p|UeoZfsAN%xpb)mnCE-yZuyt*63uO=R`rOa%_?|A_jx4##hpOuK)u z524V{_=b{$(C`6_7Y{OnAO{H1-I9`q;Ub~og$eZqm~NBp%(XUdH#Y*oJuwO9gE6Q7 z*=oPU=1l;*(1CVI*$W}(CNs7*unLAEs6pOuVNpqt?W&)%obXrD~q!# zKgVVb&^}t!S}?46wN~&-i8nXFaH-c#xwTowA z0#S8F%X=^Dz);CbmK$uL>IIj$ncW^z{FUVkn6>}|QKX_?x`p#;Le#M~XgK(`iKqc;-8t@0uwEwYB<&1GkVM!c|ToTw1 zGI2w_^9HQkZlWb=ZRb!{1c^ezF} zS?atp66o_muW|$`xeBQV0!9%+BEiy)a zOnK)lpC?h^&-yt+m9_jsPt(;vF^l~_3mhX4hRS_%9Sk9>zuAotqI4xHlVCR%E@49prnvF zn>3Y4#ulpCp$@!?>sCrqSCN3XE8k<5ZSA1F2XF=9ivG$b_*aEUs0z)~+aqSbRP@XT zcrE93sSIn!=U(zTZz%>jo3>){^7&A!*gw;<=fN+ggsnG_BGb1gq0C}U`Fsswj|l5 zcALw)zsU{E5|K-iK7(7GL)MWes0aB&>$W?f?g`_|p0Qoy#S}O38XBNN0|dklxC09< ztE#DxqAcyP3=#Q+H4(yr0g7BzAhJVr`kjunStU3j7~*RPT83YyzXEgP{DyroQ;Cs- z-wbphnNnTTD}~Oxtrrk&2-{s=gX8~!Ddd6#%cZ` z^}5rEw?_UW)3hmIfDn@4{t(i0iLDS2kAC40hhFtK;LOh#%nSk;U9aq=q-rm3l2)%Y zjK~W7FWn6&tty!u!lshXCMh})xJWHaxCqYSILx9^;)b}LgDbz>(w~)DEr2pEkJx%d zN@Sv;dKYu(*Y-1*R#j(bYHX*eQvl@}@Vcy?qg5H;Eo zp7Fp!3%WY-vP!X)k2W9Pr}8>wInE)@HAJM8-^23W@yM0VmGR`kEYF4zSLb|4Wb=Zd zopOIECwRHF+wVUK@RArC#p%0pq|lT*g|u@YLe8an9}sij0lWVK$l{ZTnpva>irz0Z zDb+w&y-TBLykbP}Cpi@m%v>4id=1S5=E5=s2X7zbYLqTelQoU_3y&K^}xjuxw?hBSQ{E5vJc>41sWFwNpc`lIzt!uUuL z<1mG8U9czSHp8XD6k=75wa3Ye&^$Q9XQW8P*QW3OQT#k!34O?Q+tWx|C^}TjkvkqS zzu0o&XU&PW_IkV23cLFM&ZF-)^HbD+YsoTc816KnNJ$(IV`l zpXRioQ+Bv@Up^14NqrtL^S!TJtG04xH^G*wIEWUoKpPy8>~`u$pjnekA1(I%Nwybg zBt05zgeslYGYs9^=NWt2JVi8$7rf^_6W(mbRj~#eTHAXImQSgxP~CqRvtK#Mpp}8q ztH@%(J?VPRp5o|j1kNYbL33?s1+U>H(v$;T|yf zE$^q(#V=tn^Yu6mk;8Q`#$9xZ>DYdHlho@^|mt;7rsz$N~`EP*@>=GosY zS+uJiJ>y?@k!|t5LE5b|G_tsbEO!^TuK;^i#zeV6MvUggp$DGptu&(JFHGV}TEG3t*1(^`+Kl%-S@!OlGQEa>l#(+$(~k={JB@! zG5DnFP>B*e!pC4u;-ar4J4c9b;DuwA3DkL-^bvW&VqdV3lcm~N(!%<8btrw^Y3NV} zrg)?ce~F6Aa$B!5DUw0Yzy!(htg>>R=Jd^uK~8(U8B?G~5%ORHmA`rcWmC7|eM%;! zA?Yi($J{nw)rh3j{5|aa(UE<>83NCWrLOzt-R87c*MA6I0xQ0e?@LSckqR#i9TMWOph=2kq4hrP z97mJ3^u2|ALr^~O)|ZORNx>mjL&ua|@cR|p2<2Oh@HBLT>I|EN6m7{&*YXN2oMo)v zp_jfO4>Wp2lpZ8R^zGagO+uK%mVS};c9dts?p`yynXaZ*@yI>WDl|qj@8+Y^g;kwhArdsr_ zrXthknTyFsrjPy5gJ%0LF?~PyXvqA{kF}wr?{7;H(5I;EAp^U2cn{E|dixIqxS&)A zM2~0Cq?d}b=A_=|c13sQqpL}M7A%7M<*WnwDpJ%9ct2TK@T+r5s4int?g9r~mUPcg zftHu|X*uF}ktd*L@iB<*XFNQ)aa`B;lj9CEkG{{F71s_(dA7ftj@Od`8rIhLX6PaE z+Ne61{;lysT($~hBoMei=LbT)c<00|&Tvd)<%=_!nkH5d~FWPQ1-m>61d$edOXKhQ>%|E?DqM&s-^bw zNVvu^zFWAPmv(;EkVkZs{|QqI64@HxvplyFo*zttdHZdZZe74n8MGV@;ngQiZ#HzM z_?cd57TnL6Gha>nV7JHqG6TeFiAJb3QSa33_aC8aOQWWu%HE_e^)AUNPja5!8x4>v zchINZ){5lTJM{57=rhXcleTXn2DD3aSDUGAQmEHT`A~#02=qA}h`z_%SE6(%d7J)> z8Dvlh`4%_<52>Lytxwd@FG3iyk$F|A9~qw)OOriP*ch@k2c+w5y^?+Vmg1Eeu74b5 z%bz-BglM>jE4W&Bu6lEZk25L0HS{(}bt=Eb4LC3Mge&9mZ$U*`ju*z)Kh7k8_VkOU z7S!AwgjX}J)Xe~!KmPI$_hD_U@FTQA=Vs{Zp+10pSgvgE68Ay8-aVt0(kTG*@blf@ z!DPX2>=4uc%&(0LWIGdlxUFq#Xy~PJcP>U~QAz)^PuM9xRm);gbTVYk+#|y$HJy@% z0!87qw0se&1;kpMR5*bK8Gzi|BKHDd~p zHDhRxFWcMo9R1#04Zm@1e7}knweM}>-TlSVw&nG3_>kL(IR0Z{8+NTj0lvE#sxWn8 zrg2@AgQwc#VC{n4@0$Ayh$aE(hbf}X2L`9t-KqDvq6Qu|&!TIe$#H}SCxDTs8{{W3O}y;SKL!6k^@@o-!wH*Bic7vp?Za6nCrUSQOP(X)yg|jgCD4;(b9`+GOOB znz8HfgP9ry{9H8gPt_we%hpADg&8nR6o&^}4;lM(~Y})B0a5=U-{5W907G$;Qk#T)bAZ z3uf)$_L_J1Uc6ao+sE?XGYw*4lSwn3BU@kSoiXx}(Nb@u@k$w2L{;VIDXqbpK&)z`z9-k{5JWj=W7i15PURd z&Ke|2>~`6o`eo)DXajG*e;W|)ehSO&Yrdo+3gy>1I{k<9LH|-A&y9R1{o{`MedXKQ zj`OTq;5n71GCx}0;}`YZIq&oQmlG1^KLZub>bxnNrf{A;GV4Kfc&!xI^77#}XsW!> zMzKHmvrl^HvrBaCkTix&<+5_K*YzeZki#RcOK(N+g-&r8_3fmZ-QKMl`cYTJN-n|p zWz5JN2$1(0!M&GC_Y~_M8Q7JFcds#rWOb_>{(WDdzkb2imn*xCLt;|HL)tF4L3x9n zH#~yUSe({QC6;|!j{*6KO1rG_*M+X~0EpD^q{w-c<0ysZ_?G2&DXN?AYH(skY%0xi z>$PZnlA)MSNaXQCX(MizJr+?2;swSVQt=DwD4$Q!24O}LVte;KGqF`>TtAC#N5DxA zY?bG@PL6<k8!<;QU3Td?Ie?<(vcCFBhFZzwrLhFG)V4!}G%zEXez5)z)l`a>5K? z&FQ{KbYG;~OeKx5+c!XMcWM0mQ5q zpi-5W*{KHJZ2d;Tj0_RguR%Ny$w6n&?io9KFYI33DS_NQ%)+ZRH+*Kqr4k-+l~WiO z;scL}2k*MpChi;%ty>SknMIG<4ECfy;r)VoMYWI(>YbBAgMlaiDEJVP#HAn`xbz!% zCtBm1apuxay#;B`^+%q!5e3ry( zXs~ZvP~V8N*pIEpx7}7g)pR!c0_C|wRFWkwR!gI$*uY}!32mxYLvYzalGbc z=uI$u8hX>$!nNtNwbcSUym_XH;6CT!=YGbIx#(Lgx=I|${p!g{PQz*NQf=Wd6ytU> zpJT?84f&+UpSBld!N3?g2L_HtQ@0?zaEE$OR(id~n&NAi0lw%Y+^o*y_o>cpkp!x}7Qa&!3$fUNpWr4e_}v zWa#=fmcE`8WgJ~cn{q#YtguCBB-zO?rMK<)>+%rlmWZbHxq%*HeSLTv@9v6(G;a)hbhj z!_{k36Q(_@J9rjvnzY%2upMh9IF7LTf-zyUsbJ=PyKSWFG@R4sZNQ`cFUx*lyjiLU zIArr*c00d6|2xdhF8AXAA9hg_x)|@yENrYR%71m{!Ck=+by||9ZQCD#8ZN#}M+VB! zp=l6eqT~?7M2~Wv(@VihGHMG4&N%Pj@}-WCMW%;CrkAif$44Joc8uv8H^FoyJX9~W z5S&DZL=?+N^5ovFCU-jA(cNgVoUUx{(cPVFI}OcIoMmx}i)+B7H1T%c zCvJw@cpA2RI(o~EIjs4nx?wnOsi`Z6|BSHoxdWL}?Mu?I3w({Se zOncwZgv4R=J=Q-y*1fB<$_OX;Egwt$0AIWV-P+`BjSa0LqGxH)yrl)DeEYXwr1j+w zu^1I`I})?IAnwEi-gJTxi;WEazF2Oy`1}7{B>=2EWTn?oz1z4IL76}Q zv~u~WJPW^4dZ3Jv+Fre`j>T!=q!5^9cnY@9XMJRXuiSaA{INvCqv5-II%3Z`dfjRI zVM3@gN2)W7_Yb?K@1I5%_I{W%S~-xMqVFV>(Y5)r6!<0Ub~AYIbHQ8l#b4KLEm~8T z1E?#5#m|@Fp_5*Iy@3in^qae@h@3#H*_Tg`qGspJzA%b$+Xner2%gh|np1j{1LO&` zSBi8|QIvs-mWW|F7@t#ts3)I^aSfyuuO97=^@#qLOQR$H(J%xgEq6v`^FSD8JVDTC zZyDG_)+>d7((1c`3)Z@5&97`c-IX&4s?KmNv9B3{o_wy_wBB~yGd`aDxxg<*|Idok zM?%>{X1Qi9=H6MMJOadTYRap(viDe!_@~`d-{Icc`Wf(KhK?C>c({uP2!;PtHIm2DdF@xnKfgF zna^oSO0QdQ^@hJIODUo(5c_yY)(brM^zDw`I`123na;}RO+!Cv56KxIZKYkbfp4*Y zG*>a}k_&#lmu11gMQ05XL5-Z5Y)UQ!mcQ#jJZE@5K$;~ z+!fYrnP!6o@kuv~-swoYprF}A{c!zL8FL=xE38UfdJ1h^Lg_o|JvopvwYSgiggS=&U!wV2mHrXy3T#KTh;>;LIUjXR3NSV9wCMap}*%L_r$*V-Y0 ze(AzW-xRLO@I;a=s;Ljp2p*3%oSV@cOr#xvQGwzM-g9OZ43~p;S6Cj1J3`cZbAvoY z9KGMX!?d1aMunB|1Je;{L3!PZ+}Qzl?_y&;qJEwX6_Q7%M;i8id#I&*EPbgQ6OSp5 z-JY_BBiOB*8?CQ-`>(~>is}vU)cO0eaXP&!2OlGC349~}F+(^)N|E z-d8|vMfvJDkgKrl2qK z(7+aF2P(6)eKMyWgCF^PmkGY7kZFAQ*i%;?2%8_{qi5qIO2LP#YPPabzRm zah{05CxKQB;b7$Sa(1C+L}l`PHziBPrbx30$Gv(*IID;A0g9|`CK4JjKggXq0gZza1ETZI}RNp&hvB;ZcY4+56tu{|t2ski3Tg`3D4x4>oJr)eH2y36yTug9Xerp)zyHDKmQ z7nrx&GnZL$mq5O2VN-)y@fD47!v@96&z||(g`G}gv@ROltn;PlRIbwqZN;DX2gU?r ztdb9^x#Z;TP6=dxt`f$uuz!49wI_`wkMA-3wfXVw?T`~2){kPaY^YY#t{)$*R4R>J zRZD-}hNk`aX8-c*Ze=GZFiq@q?L9Bplv4x3c_7UCsmY(q$DTfJ#_ds>bX0_G|}cHKWo;VjF!Tc-W6((AMijWVs0tZ&ZM6Oo=`wgYD| z?$*qV!gugaaI&Q-R~__U&U~tpyIy>8sa}WwkbDzR)>`r13XG#3ldV zW3iSE24+#(V;vPtW_ZKW^)a@4R;Q`1xwd&dzWNq-Vwh zk5;IwQA1U@Po2WsPh2eQ-9_$qwm$CU0S9=6D?M*azAaOlm3o#hksZx6h#{Jz8A7bj z-qI%S-C1@m$flt1HrC6^gU8C3(S>FiJRP6L~2xR@7D6d{hW1-<^9dWKJ+)eIRfv~yjUs{CPyyml%Y{c^`zSzEWUSPkxk z6+!JnM^*Qb0_YtHiR|DboD#WWu5Uf$9|&;RzOl7-J=kOyu0hnaA?N8}o%>k`r&t3O zO_46^`dwV>UUg3)V+R;;P?bEK>$TD)w_KtJ^yb~m|0*+`b;lYccVEJ)LEO@KRk~_# z4$(*GS&cj0Gpzklve46^3ZkvSz_Wp|mZCP9H==To{(!2iqL?eN#7KH*t=i|{LowabHJcsfT!gOIr9oCN*urDi{`{b--RSZrr4}1~l|9xg ztIAg`S~~MAvEl0<$e4^C>n~J}K%@1WUe1&LI%6}YGQBWS1FwrWuv3#0S>Anpr|jle zAQR)))YgoH(6tGfnX0*Wr9B|z{#v0Ymv;LGzgxj)6_wb8^|EmZ#qIYiT)0rS5AYK= zIt~x+K|PmBmnpuqxFpSUeDL@x z<4bH{L?j+oQTp*u0;RZ4@S44E#FN_4&*ayFYV!~)=gbFB({saQSe7)W6Th`a-i*E& zPQ0p^cz(&;Z^eF!89JHyVZob*(=r>);B)Z{X311^Omp({Wn@{vjGQw!9eBal{f67` zv}2ic$14yQhHDWH1TfgcF<5=NVlhQfHl^fIajn6qtAYB3i z(%mtHbayj!!@$7MGxHm7e!Ta)e(V0jI%~~h&b;UBcfWf-&$IWws7SfS^pkCN`B4}- z$RA(svHj){vz3JVV1paYAz`72zWx4)0cGKANbiV-34D>Tca&38Mk?zc(;i9p5s<0&3>RDxuA^n!(olF$QHKX(6@CVU#?j-@~J%0bx z0#uBp2fnJ6c$M3fdTZ4aIye{2mW}nDHOoj-_ERNUK_B=u{iTCAq`mGC2!Js#PDKi} z5~Wd^rr_o+A7ww#h;gbr3^>fWGPu1*KT&?Ufj0}8oEVK?tW+_LgR|uz<{+o)7CH1o zSA)7tT%(T4`sN-Jxy9|#Sy`Nm>83(1)}%WekaJu!h=U0f$6#;YSXq;b9*}j`DH^3a zpR@!8D}X3M3wVTLwhUc@2eaG z_K|PB=-5!%!zA8~7IMyum%=5bqF}a zP;m8AMH8f83Jqp6L7%6JTlP+0=%zt=X@r2whed-!HUk=*RBt7o?XFrQ>ngvP9;{GC$9!n20# z3GRP&_KVx?CRRp~cb@oV5OYzx_AVB(fK^B<|8+hwvcI?P#3xvM#9t+0bC^@Ak>~xJ z@i*QF1c;0MoBW>DR6-)3$=)@2-loUh-~Y$I=hAfi0d+Er;q*-rNc|OEmXR5h#`!O}jriJdNIkWr zI`O1@te2h6O#OQrfzMTvUgP6X$Hki z%UdQ#gL)ITpTccoknC91=p(P{VZz-ktEPWj(HAjEz3t-ue*j(e$g(YR%(L6Kls0TP z19yff0^r=5@tn&0}L|6v++tmdy{BOjla_L_wwk$ex zc@)dH;Hjl_<$?u!c;R)(Mglx=NwEg6XA!6M|*sh2p7uJDsU{-&-XHWw~PrxlC*vd z+kY_-$UTcL8oBKkSIaOB))=+*tH9LJuk|RlpWOsv*GsR^Yp zB{w2w-YmAC`*~<2b5vJE#{klB-ex|-ia%ruAZ9+W7I|c_sBRUPs=u`iTBaAZAX4}j zNxAfQk`m>E5Sj;wPHif{J0dLxdtF2@$=c;=njA*=T)vp@`+sq#EuJ<=K?80J6Mk5N z5ksKh(X(tMvy|Cje}^O((IP!xOMLo>)kYT;C!`ZB_&_kgFWZON5|vIIp)Q^{f^1nZ zWj%^GUfG^6Zpk|m`&hT^k8J+~Ti`+>>)+H2O8wYOr{5iyBd1UVrPlQCLiFyH0V#)q z_J0R&ZW|6`b#T;nDXtl$@2aplvynpA-DS`vYU0sdFiVp5m+h0(IQ3&rcmF4jh}(Kf zMDXn#ZTA0V+{1wAU9T_pZPxo0hX0y)h@@)w>L?0sd65$^?$t3L?Q{UY zY~l;2?4=vu8YF#C3`~Z*qoE|v1x;=KfN4cJWk#m1^M!W5I$u9{d>AG!X_Z&ci!8ap zH+O2JMpDqAM@KiXx0n7v(r(mFt3V`ETX1(piKHHG;}=gLB0t}M##R%qQourTr<*wB z$X+pZRDpg0%Th?1qbVGt;CAYo)%WP`WqPvBY1QEf%j(xoH3WO!oW;O!TBBdg(jzU(;k%(m{%$?_LX3YPDEo%W9YH{zj&i{gE@~!MVqt1d(-#s67YZ>w zwc$v`GqGM9Zo{`5<2krVJ#9eM*#M7dS~nGB60WiB;^!{Qda5oYr)(*|hbV(8|6fcq zOS=S}`{CRaG6WF6P#gS5pZMQib?dO?zer`58))3B=rGuk-i{pEQcx-OY^Fo-gdTW^ zy%sCfpFbzBfnl{w*THk{dkX~lmey`&zQ@DD%b-}ll*~s#DhmX1k0mG#aK7rSX4tzx zcY~ucb$_qkMs(!?F#&RD!<)m3lkyzab$Z_PooT}h^h$8-63!gSprb$EC*b5zxnLgq zv)!ii8$6{3bOE=o4L#cdjmo=#L+6{dAs~erh>q{$M=*1W(}#&Q3kQ>=ngHQiUql2Z zSmmBzSt8h1ps$Axzw9I6%%$bh%ckV#@ddJrgYZqjGUij~T%_@!pmfSiGa;KeAPH>o zmEQz5)|e+JE$Hp-)hnvU%xTzfgHeW|%))oca$NK2UuOeaw|=nj2*GL_K_`@r6%AY8^jN9RXx}ZgMCHsY3N#Sn5mGS z5-Axe>K)Vzymg@8NSwS=wOZ6gWpKyn-7@s&`#1u@>HN<1DOvS?gmRuoDp!=TieApL zea26rrRsVp_^8NgeFe-3xdLY!6xKUtg_v24%rUm03F%?hnA+0KQI@--GbO;-`ev0t zLyzpQ)=Eye*XiwK5i*s~ESE%ENrNpftXXEfQH89=_h+C_HqCfZ8 zeA8B*`V(^@8Z(P21p}R5XX0A#IJxE=IYEr|d6oEl4wRx;`wLjG)w<}`uryxN8efloVT&?33dmS-0!Z9#=s4aqRLmbMMMR< zlLOqx1llL>=8)d@NlYm%Fp(iUoq47O!ibBUWK)2E?#LdOZyYz&%v>+EtNQvHg`QDS zn25GLTg9G4#6^CHPDowf-v&GZBR-8>5}HwnCg)oR@UK3?%T_9D9(C~R$~zqWHLQKz zMLS!+^2f2^uKr(?y1IE#fi#~+bH5U3n@;i?FN($&+{P%Ai$lN{(3!l5gBQqLoA@~@ z=saiWys0l+JU!EJS#2cfCoxwlg*FBAZx($=Q+AE35@PqBv&O~P-`V{+fhE0ja;m-= zQaEBN9BWz4rEawwLbuA~oEy`8@(8KLIPN?6Qip{UyYc*QQ1;cTVl*Rl%mo|Nqsv3wDvve`rRcy_vORyZcNBW!i4jo%GiM>=$Px|C7b1Q(8_p+vT`V+y=i80GgB2BCv;j5IuV6cRAOn%CgJN=X4dNA z=-pFw&wbCr2qcLPeRp#NA?lPx+zDU;GkS?nk^9nRn+`k~;2k?Jk=hw! zkLe%nqB7tL%#=gW;&r~aW&f}S(UP{}t`7l|gXI@K%p#wOu^u28y?EcNBBE-Qg2~|} zQX`@CL)N1wA_+Om!N0olyv8{I4^a6jG;2I`!{?fOr*6JS^Fuql%&z=9j6;&x&$PY@ zwf^r9*dE?_oG^6+^M4XJu{!NNv#@A|n6J{!j$L#X!|T|}Y~nv$`tJuT1k{?x-6NP8 zuVoedW(rB_?8qG3x2?!wG?2TRAeJ{L&GSoc6tfN@%C)x?&Dq9xdG(lv21PA}ahbYR zxBNr4c5;B&Xaii45nr6U*IPCAc@|O=@CA7a%e)B=yEG+y+#GT>3{`fzQx&xDV{mJw zefez*qIa{9sqQY;zBJB|TvZXUw&`r+afdVG`STF+HOs*0zCdmY6;Zr+t6aF}&HP?k z8CrZO*u|sSr+p1bbCslB9|xA^*Vn`^j=t9RkkAz}SnNGIXQm*9VT$LP#FmhGJ)Bql4^vn(3ImoE@%6d z>CN)7dG)^1F~C}YDxm26<&5a)>*~h=`BlBKEbkj8;9iaRwlCcM(D?q)Qk?x^t=??N zVcYgZwg=zai=7_W*<7#!WZOUPiY?iA=Eua$F$NB_;mVz4Q5yO)9iV3|qQt!wyy-zo zkZJuwi~c2}5J+Brp%LH?c%Wqlne?3yc?i~JYcDG~;XE=J9v&92cjZgLW~V8$MIIiv zRkp{2bGC+DL`LNSw959s$BF0x2RbE@^U>F=OQq!}Rk1c8qQHB71!*4=fSzVhs5$Wja>OhG{ z-@U#moO|DF@Mm^Ct65LekvegAacM!`?jC+8ha2^F)f+6NK2yghV$>f|(~?KPCO9A) za3%k?^zEuYSST)3V~etqQGN6H^ed{=G6PAGmk^asX zaE3ZM(KIcT#EJEiBn z-7d8JFUKJA8{(je;;6nCBLM54PH~jY!!IS;>Wh!&bt@hT7kgkHBMJ2R})stx45% zU;fAMeNk?QW29*=*g{O?g4A?ebi2kT3QqSqp{QQnK76Uwu-77qPX7EqUvy8?pn4qh z*5Af<&7RFUbLJ=gf1&3E1Ie$ogCxa&7+=3@ksZ$3Jwr;MsG79u-g-QBLIWP=iLa8O z4?fM=`{vjzE!G%SOy8hq$;se@$?I%`S^Z#X|Y*$~d-2IHz+;A7x8Xo0d49Gl0 zA8-k6wB|TI7OLT0rlroKpNQe*?d))h@KhB=eOMuBUmoFMATl4pD>|@{u$x+w1C_0y|oh2*o$i_df#0-?}e+`XEw!Qtn zkNuKn9#u-haovrQkH3Ma?NoyKrE(J6@Cf(D(a}Mds88~ew12Zt^C`O$*J)$|-^o$# zs`#zKvq0A=zh$b(sg>E`1_J--O5kL1A<@=G5$dSF;XjF% z7uT>Vs-*7D5lui|y>WE%vwKhxG690c6P3g@fJBvkPyk+t{4#hf;SmpGO0;D7Nf$}0c6^Neyj z&zZ`lQ6eLFnhcuPgz_I_2~W=i)^QCw2DnH3sH=k1EeUj8=w%sI#?LlWE1`7Do7WOl zP*qRiqPPLwKJ~6q&wqtIiyM{XkhsT7bMc1tiK z+n39Ju@~!Wx?Gi25U=>qH6{co{t_t1pJ3+aoJ&vM=#u%thgn@B(q|61X6I;(H%kRP z<3CtFpQPe@gKWIMy0!VzJBS?1@HnSjxpJIXPIor7uTaDtW!=rNXZx{Y4jMePtY7e!$$4H z@Q$jbT_GR8qd15K)1AX+M1u;|Sx{a7JCM1OAq7g;FB2llT>7WdvmfRC5^!Z5LUY!q zRcKm-ngg(i4A)I@B_z5<1|;rq9pxd4gGFOI94huTR6v3^AQ?$=CCJ+f04|_xh!VY zs7L?fj1F$wP0_lAv|a5y^3toNxt3n_GZmyIZS=A>2UL`}kW~P0m_V>h&~_QRBKa&H z*;vNPco}*Q7iY&Y;Re5efx$P7ocEF%{zSNBGf-|lrGCy~l(kFmvj?^dQ!`PZcf8^) zU)J3=JxCm;VGw{-MMall($+M)R~T-^SmYE65EQmVVm8-FYeG-vT7$cGF#*}2O&j8R zuN0Pj&|x5QujJyn9|7ZCY&F`*pHxNdSPG}BeEGzjd#Vq*z}S8n1usn6=OXagoWwE^36-5&wV4qa7mb6*9wZs*?ga2B^3tus72 zMeXSW2VqIiASGP2v!Pto#7GI3C(~)WX_(bdf@&er(Y_}iQNNm(Dd+W%7> zW+HRXiKhM!br`+uwNu~I7m{j%2YI75w#!eiyoB{on zKkJH@x3ZtyN>29!hM5Ox#gQ=}^qW?>xg6rZiv~0F7KQi1-6uY5TR3}sy^<8cV%Ik$ zF$Y9fwMqlT{WQmTiGG@CYEqRqeJo$0L@y+MC&?EpD2Z^$I4rEIiY)HcFd@StZ!pqy z#s9ieKXs? z67JhgaX)PH0fSfX+z9;L!KOB)VYp)anM-3` z=%aiulED78-!d<&Q)qPe!A`5x$c*?ROJwA@(25rAN|J%Zk;E#m&4S^y@; zd&ais@J_u*eCM6%ahl}ag!h)HydG2vu?ji5Y(G!EgV@iS_In&(NJW%SRqVw3C&1kH znR@%&KDD%^1g>YzAx8uW6xlWuC|((^Lrgr3yhW56?IKq-i&CC0^++nn-ngOk>#Y}A z#Vd!o^cZX6YhY9!ZwmrWdLR5O#_u=b4a&(b6m-sb5BMUhiwMNxVRU<=49Psxt1i&G z@sPzXL7THcVEHw~udt;xbhqFqqe)khHP)t7omF5fS6$jmNIdj*iH{7Hqdh_4kQjvy zu=7XSW8X%`W;+CymBv{}DJ!0LNoMMZ#5CkG0DLP4^oP!5OFp2?*kRW8&@_kCsMVNC z53^EGE~R~_eI^bQKXm^jnicStuzPdF4)?}-Vc+t==J~6Na5Xn4>(=)Ds6}d_;pC(T~=-E_AFWJfc-|S}acGxk-OeFFE@`0v0uW-XkfXqB`hFs&F z!tmpZ20ItnH&VlYn+@{Hgw1ZBXuKs>?5%1@@XeX+{aR0C$zX;%)=y}J1h<%VE-lfb1!c?~9$p>VvKg{Yhg1v|4;8hs_DB~spW-3cGw?}t_S0hSln z#V+Y4s8VAw+_hZ8r(ImZ=i(QmhNkSPwwnpCfL{RSmt3iG>($ehFR!^JfXBZk#UCbO z*>gVa(er+jS$tgIsuYoP4T;6n+u1g?khca|{0z)e%?O_mJGQ%QF8=b}d}yzPm& z|2puEN}hwl)Pw2uv&Y63HW5WdI3~FH4TkD3zTz$|-yb#$NKs->pM0-l{7e!Y9>n&% zp^O}({|DKuZ+XRyh6K|vn}2ouOie@LE*PN^?YMqTrrHS0?_tgsz6~ox6?H#`@`XsJ z^z$svskCVeRG&-xUM;xV4%!w6|Li#G-xw9% zWD?I4T_E!yZK`=IP*YXUcRU}CJXm)=T*M5{5l25KJC~q{Ckhq@pnVdEvP+wf_z@Uy zIj7B&h;cNp_fUbdvFq-qQ;>@iwyr zCs&Z$OX;*y66J@$bbDEih`qYoJ>CbBcW-W+h;YVNw+dmwR|%fC&wJg;vmS66YqwWPvHRmjkIj!9R^i;M z!+;Byth44T2Lr3y?pXOgYGX3ZI&m8h7x+|B@tS*UyxqRxAzQnfvxuIt=@4 z0qwDuNiI*L(r)Pm9ee<0RS@3`w+Qy{HgXmwnCGszd)KdqT<#=(L7x#f(RA09$$lK< zRhz?fm3_)4;7gylysAeWR6yYIAg8$FN)0I-nlkuG~o|IMPghOtLm9^dI zChb8Q`y;5jv-<_1m&zSB&|t3f*Zp&cU$XC5JQN~tvc4G`K{8mhvPOD?9(rI(bmQp8 z>#y!C$Blaags@~N_66$Lw8ox)er%fVC|XW(^TXu$&S2{VLoWaN8lSVhV9~64+~?-G zUY4xY!`r6a93QXsCe>ekq2WwaEV#!Td#G5!3Al|zucv1`$;GY|;4&+$s_Z}b2K|uD z$&ZZq3RG0djP4KQ97t39-YfyN5YUs4HiQB@tM=jom2S(&Z^;AmTH{7XSxtzO_o&!> z6I49DTwX*?KCvnAnB(Rf!hc-PT0iH*RV(bhO17(cud}$uI9ZR79Y<%*-pVl z-;Za-6NpxQH!*euPO%`{jKU+=L&03aO*s(XYS)h{+LdO+Kk(j-jK*O^Z7omI-Qeqw z`E2d=L*=K{+hV`Y$?9{MJtn?TO0mZA(WE)kA$_PyipKRt5qj1|1!&a0xV)^mMx>Ht z?@7HK`!vz5iJ7&NOhuQo==zz^hZI;6&6O^|Rg3K!8eDnx$QTUK56i8X$PZ5A)Ek`! zG;YD4i)8R0L0>Vs29xdBiD}Wko}wqdd1&bi91<^olnH<2U7xLbZgBz)bCG0XnQR}? z5yosrC2vy3lj6OI?;X=}&K|0e2!?fTs`;=rT{%&WwR=a;Dd}&+8STHR3x3pSBhOL$ z_6sv6kamwE*TgZ!$d9e*n{kA$+nCHYf4Yn}LCGX=Y(#Jpea61pUIuCR~(^lATMeNkMK{-Y%vl8v=?PFzb3J+qmdwiSx5wI<`{WEdMIHu(5S? zw8~@~p!$ig?Re|l>nQZ`8K5^c^=zWp<` zD9(bI);nGrQJ@9DunNL7Mn9NnJ^D+7IaKXV=~GdOg0@HXif{BGE+%tYKz7?D1-$BT zOsItcN8_g-K)3yDXmBOj%US4sxkB@j_vQjIm>DoVwuQ=@!1YUUvg7rDy?FLztreJGeRefEXyvlAm zl#RtbJ9&C2`&U2yOLQoS1{J1cT(k5}Mz-mGlIoBN5Sa+ne;h7U6qP!S8RO$8xF4Z! z)ZrdTX-U;YY(^Z_r+mH@_$&Y{(j%k&2D^fyx`=#5(=dK3@lk#}l<}_)V1s5yzX4tA zuQ&YL$EzjCsVAs^4e|dT2h@i?3k>;Z)c?=WU_;+T9)xOlDOhc*iw*1xNo9A9BQlT# zwH=6(L?74kYnXg=&rN`3G)=dhv=vhU*0^7e&xkiBDn9W_Y2#Q1d{5E>rR(jb`nIIk zyoFxEYG>}o`Dqf_VUF#u$F^p(4Ngjzx+h|6EN(eZduJv%fQS_pb_rb~$(n{#AF%bW zZ&~ZZY`ft=EW%jA&sXECdNIX?;6>`?QmMwwOM8ByVZXgGeF)dW!&7eEVkI^h=S+7E&Wj5PB`d@wM zmctl@htCUF_0&yVL{6Jp*Xn_a_G}6tN3=>whb^d>-gH~Hi&j){o;Oyda(K4VuJtja z>iu3O(5^HrZs5_eB6Jz?H9R>>@;pl(jhTDXx#i=#+yX&wcQ~{`-A5ER@-NN9p-I zWZD;Mt{4|Lk}tkmL`2u*pB8ucXwgeDOh;_F4DddY1l!6q#nm!2+3|?2+ZaPUmBAXNS7@L%)Z}Wi zR{!~9ob}q*Opmpd;AmkIPJ{-oNuFJwr<%_!)c8Q%K`Z>^;W!3&g{m@9(TQZFTUl4` zD(WY%F($()%3I+NrK{e@vlC8ADoHAUKG38o?Ius^LP2~3tQgp!#gEfF|DBvsv-Adkqa*T z_9u>F=MPmQXBv*%Vnd60N-anfhjMLSc#n!J11EZev8cEynqNhoA?Gm1Mm1+=UsXoDz++)6Pe*>rh1aF$8C|^tA1-N?j#26Oykv< z3m161S)z5*K;N?$q`>GeSB6_R@R@AC%5_02UMO!~?ZiePo9fuw#r*?CfoLjK!)@D5 z!B^HhGTq9PCj>^Ak5m2q`K}Fx)BE`)w)`@(i<`sVN7|p2zwowbA2f_zWiO&$TVFKX z32eX&d#J6?m_V~8Du`g#j~q+6D?yME+;lZ6uxg8k6pXoATu4F`6kaY$1Rm*qi$X2f zx>p&N|2TNdR_h;m{s`~(Cr)F~6YIM80});ukC^qUy~zfF8vpmHppb038~4>K?Cs&N z^IETd}X(4tGA~Sa_`8 zmvoyzXV=Y#3!O9!H@*4{^7@iiTuQMia`^rUvFf=N_4bjlCrXsFi5z;m=&#FDmpnGz zG#1wsxjtln140%HUecQAv{?aGKY^V*ZoZz^=BC7*DvL#Y=N;=b*GEhY#N7(ROirHC z)Sig8#wYVWW5xuu%R&062`v%QS2SjzcE2OZc{!`90g*@84JviH@B{m$qK}am0dYMR z-3P@#OabBq&*khSf=#N8xXHkQ-Nt<;9uwZm%&!_!uYJ)JJSaVo)a#@emnrX(=FGN} zQ007S3aR9x^BVcmVX)Q=UfcqI#+p3s&0Tb8AbO=7dTa;9aE zFG|t8A|jo7Jdpz`w~p+Tiy&E9dF+ySGZ(jS;YGq~>BPyrb3vDP5>l@26r__f7P}K_ zyaFxuMFEb?2?yVoo5D!L!r28puq0&?@ZIdL%M4Ix@dM)9PEbJS}m>p$TaL=PqINhS#%*O?4)9yI%u32BV4LLTS0RHF0M_t#fAG@c3)T- zIp6WX)%^?VY?X}w!R+imj;LSnbsNwUi zSv9b2$}^L>ykroPMZH<1D%g0%e7X8@McQxW0S%NTyvQ9eO2RhQN4c!1m>M#C|43O9 zKoB^Z*N2mgG5;~gsm;_=;R!8 zd)$IOPqycM&ZM0{A}+28aV;Oeef7fKzXEYj{=yjc=@lX*^4bI3?KrU~;+|BDj^%ti zD3=YaY=R1Fd-{Rm!8g2FNV76IdwC0rRg{qYBewhUKcl+YJDswkmFUEbs- z#50k+WfjG4d_r3AmV7#=z8`8Pg}U>$rExx4l!q@-0X-{!GZ6R8CsQhE@4_X+g26eB z^;qke)}jS7Rh@^goyxlvLcvn z+*mZJJ!Xv5QI-t+U3VQ60*e;|*#(HnZ@s*U`- ze6D15vcC*q?{VBdJvnvg&hPkegu%&SF$`nt(k%5$=NA=FbAplR0zU|$;<@5ojuGL3 zQCfQ491)>0KRJs(-{|k%eEgRCote2wC}nG%V0>d!FMC+Ub?FIk6WVlr&+aB}w{xQ^ z1b3YIk3%YuLkR^e0U=i;A=v4wI146wSAqcq2#tX{4IHwQ0^V37c>f8)50 zdq0-hYx0H$yp~LM$}SQ*6t(PVpQaUx4Gmw^dx*zvsNTXL*ZpVdt_BN=q6=Y>NpX?%6NzUtIb& z%|z6#rtKE~5s=5#nBy4L05fTf=@xG2+wYE=__z6IUa1**m^tsJJ11mKWFFy)c9O4c zxoT%b-ZWl_)vf?O>wwTKvjQ@I#w~u(P4hUCiH>!0wSpn1nXnm-U8~`>4Jb2+3>Qra z&cQ}c>-;_VFivNVd-HV0ADgx|d0tpo9hPB0@Q{{NYF~Qx3vC3mJH5Ymz)x{c@Co4fqhHu~H?{T*lov~P>A1Q&F zLCOWyfi&szL2~Gto^&LfAMki%+y%buMk*I=r#FZw>4!U4PxEApjLqE|j{3}`h6A^U zAAA;zb;`XZNBUzLCUfgKhjxgT0J>*#7QF?cZ^0a^QpG~$%L^2N13kq@ZQ%p1pTc0M zPwR3n?cWDMH79RZ1`F(*V9W82{$reerX}zMl`Ts;K%)e%q2bz%YSvw&mM>&saMuzE zZM+cf=udJuBmL|7d*)D$d}Srb^bq4q^c|fi_S6OltUig+Q7yjJ@gNHSGSSx$z!b2Oe-wDUPm%v( zTH(0d)GCSUnVq^_#g&nj>qV<@^L5z^QWeT=3A#)l4=zg8q9R=6FtKOB7+v3!77>cP zL{Rb8$!7{4=8(GT)wcAp0ZShS}gx{30G zL=@->!}Ua*SI%p3SbK+bJ(V{Ek{8gQuqb;CZ6;vadFjk3@%nX@sm^dn zJ|23)u1qJyPJlqIlJ}HCX+Hi4BCs3d)+?PTyKX0fIjyqkm%;pve93poxvamA#1?eL zpvw(BuK-TYf;ASdZx@E|IsLE#tmi-jx9rEa_hWRrNG`QTeN0*NnwG$0_WO7QtjBUM z{QcuUz>{A(x=ARrJWY85948MCmf7U1hnLmJk9-odb{^`y_Fp8V(`DyP*=rh3OohU~ z*c&as8a2Opr^gG2JXKI~_$dZ_VIbLPe<}J_3ZCtu=Z23L0QkPfUJw#q#NkpdvyTN^@e0t+T&)ZoY&F{PAmxwmwPtdY0 z0h+=TgW{qOu%0`|z1xD=XPmepFL1XHqW=cDmH>vV(+F4|6n8%e#GY~^e2bLsatj;E z_S1ZSftPxXm!M7f3cxueICn16%}@8EepueVjf_KB8ua76X`3bNLEKB3c`ROqNkIV} zJ_#MxSMO^cl@bt_8rX2C2Kzk+MnX3RG^?n^6%Wlo`@7h-I3zI)F%RR9|xO_4a0HU;dbiE3oSy>)( zP`zwep7$F)1>GJj5r}tPeob5z%-Vp6h?Ybok`Wh|bfcNYcSnIbxiiw++AIGBP=4D@ zvHbZDI8$pCyyYsm2pad7^hp!DFccZ+Xbl;@m=0Y^wACf2!o|ZYQ##TOR@W-%d*}W7 zK^bwBG6l8owR7<@ZpIC~Cd#e{Q@Mk#v}?0ECzptZoWTXlkIPGXI&op5_DM}cv~oKf zCS(mc>dBL0^$9w}EkS?ca`epX+=za}?dU#j1=KT`E*8e3Ss+ZT3+qOmX-_aZU{y`Z zv=cPky#3S}z5}wX@Cyw%y5$`$fA^Tw2Ba|ngumAX0_3Z1>PXJ-GKUZGP3m4VjGbGu z&4Mhlv++lkxbqn=;N+6%f8aLD`i@>`*ABR!Y3DF+|EUGIa{5_=$}ikGV5w9l_u&Z} znPaTeF1lOj3LxX#%K~R`x7)Pnmr(`oY?N5Zz&Ud!;ibMm|8K&DNH=TGO7(>4b7q5}v!=@c0pv&>o*|l{R z_1CRGggZP;WubtV*3v554ZAnO!m1#2iSgQWElQ-5db#o zi=nZzEoI(o;NlUe`5V%@T+@)5w8ORS5Hb?RU8ng2wXYyIM4Yb|uilNnl4 zZ^L?d4|C;?pEKQdq|52TSzeeJDcfMJl43Ck{~=O^186zm0^ z^x7?EMga>aBL<2$2o_FU4o^ZiHUWS;!0tJ7LVtY5)Tx^A{EZd5dP}a}?c%(?Ro-7i zyf1)YBrjXY^mhN?J-5d>PaYBaH=P*CGZgdf#OY!#yU+6zDj{*1>rIZZug-Z%ve}*} zhKh{zP|8irJrSz`qE(@}SeqgKk$xt@ulFH768d3mMkX7J>~nDA+|%S}_R6YX$z>a` zMm9+)5E~sm?;TIX0FJkX^wqoqEIbZq`A$AA<9a=F=7oT{^!Xu;lDzyRz*J2S6}Ksv z*#CZI;QC5ZQ~^-~$l-Pj|JSm_i8hA~dr?Gv0@_2XD`QtA^IW&7Bv;3t{;`b!eMmBq zJ5(58;d#^B&O@y+p70_b(12ik~H?BOD_9l_+G zp-EY2rm)gR6Bm=qlkS}rMJ8bxrb{O8+=?yu_W8|AHy0^I?rnhU_tD{m0CB0~u!B9k zpJIq;TK{t}6Dl*}5>$73%E_$pBv;iLzDZ}eb0^+Z@3Cw+1cvMJD{hmb;3@7VI$l8> z;TE|+Tmr}Z9hm7>cRNkh-!ZwxpFKdF%$1)WnD88`0w)KRX_0fQSbj{3EVv~(`tS1u zxJ#(k`t^L{0WN0!WF9|~;tx)m9e6g?3P)^t0Ko9nw;9`%!Hz$yBo4amG$(2(cj5J6 zp1>Hkqe56VMpct5PVUVB#wc9<#L8K-F{6!+ZSx)keGDF}1I+bxc^0ovC*P6{4ed*c z%fE>vR8GW@o}&=rmqWM?^_4b=8OWQL5GSb9H|z_)zBe?{{ae56e)VnaUxX0CY^AOhGPDkj>sXprCPgZ{-;7 zi^*jZJV;;RWKi1lh-@3Ao4p&^{}2C*8_P!HXC=By&C>!dCr{v=5EBBHNMRqx0~R#am$hk zo)@F{+k<&W$%nujlZZAtT%)}vE&NuAc0NwFkXUuq22hP>K=8D0sH-7ZH|i|24>%3q zE}`o&aJqLnWHv;&II}#-*4<2~@XH_0p4>>-x=;2Ix>z7Z8}TnD7~%EM8FeK4tH-KZ zoP8dssbV91`2ouV53_lcyY2ewu>8ch_)2iR7Ey>p^^g^3wbj?#J@|g<`qvm=f?N*; zO=Ir>ui*RgSxsB?|3}+fM@9LyZNmcys0gT}gqWaoci5t=TZ>{eS{$X8QTzl_x?|sH`9)~z-4EQw( zrmEONe*(`zq?NT6L&~73heESS)OrOd`mE3wLCpX27muP?@-W!fUfXEW1ZZ{6KcLVIeZLG=6b3T&0Gw%>;YL- z%!nNCgpW-$oEDw>?a)KgdzYm?(-NSQTsXF{tTre5amabX&+eAyLP%kkMmc`uP?sns z+GoMo^{H<){|xItmJmXDq4#CT=7+11jD;Fc$z%C*_h{C%n6PJRo`MyqMl+`k9xv$> z&Q!#)IBaHR)jQCg1x`G+Y3(Z`fCbb7LrVv4P$4|h42|_O>byFb_`=ODp7CUFd3@&) zYnn^^X`3G9Rz!KR8cQ9Ba^J@d+`s+BBZ<$%wcjyg661u)bhxt5S2~N^!B{icSnwIj zs(468)y;+Kv)g(3aN$UR!J(WisTtBEXGi%!pEY^vDOwZx0{yc3qxGil3VD@9^qQw>GNwbY zJxWjgOnZ#hzFB6Ig4%|&xET(V#aUX)whEbSUju*Po3@oYbI+2+uKD9&*&X`dqg8AS zGtA}E{G?5*qO1zyCgdKMy~7L8v#>*-;f)^MRSaFw>&MN#1_Kqjtj?7CFN-%mB;)_n zIkAjxj0XfBR@}eDAuQ*Um7r&vq{xNbv9d6uxc%~}4k;8 zoI;kOEc1zm`aA!v^navCgii@kJp$|o9sw22k>tN)EY{=6BIlG}_GDXD%!nPHEAfc= zM^;Y5+ZoOy;&-wS@G9-$EfLK}H<-g(sDc^~^4~M^RkT50nQeV1nX`z$_k<6|s8~kU zP(-U`m;O+f(+<;a_eKo|V5G4nl6^V09wXeE`*1}>64OJ3Jx4=7{OHIzN)%dJUPc&x z_~541(ild6P|m;=;es0N}9b8(-{Cf_W20MPEuy6+=89;=@M`eZlY8V ztIPD`OAc|opt5iLP7furja6scm$E_KS~aJQbuA2vy5W4wysnbWDC- zQCAt`Vt;G79X}ACHX~x7P5Nu*vUdfuh;}Ef*CTc=p(KWy5?|68dpLfw#KvA){#Y`LC*cm?>ixJxen8=CANmW>^_Jl*d`M;wTh2%zGrxyWGs z-8}#qZ_ca6U|5zSOu+$6rO@>DH5Oznx``vAnu}8l-1v@NicA>v}*~Okw`m_F*oF|c5;V{$V*_FXfrV8VIZXdwlA)xn3c2S z7Nfeg>*1%)9Y)QW!-WIJ9DMt~=3hLhIY2~~+%y}y!re%uh**J=Jy8+j$rtf=rH&Pq zB0P|UD;_?TREX)QW9iy^sX-?ic#1&P;f)4s0SU>9&}uD~C!UjQCFj@gCo3vD;2Ik) z%A{}q*2kx&&giH3(wZ&yy!jGH{jz4QNU;sqsimSUz1#OxJPNW%C`fY4Aao2yE2&vx z*kQ8sQVJ;R(m;3THUg6hfUoc^$rM?#qtGWBkFC2Am?-p{7GS?Kbg^nCnv>E2ERUXg zo&u=4U*|uutsV3T@jG68&+TXd5+DQ>Z)sH#ibjWhf5r%#RP%^4c*;V=3}176H4lpb6^8p;(zb;Lppzx*LJBFNyB9 zFedKJ?xgIyq4Ro9gsFqa@`SO{M|~+=8aluXaLH4SK!z%O(S^Nhv0MSFM)v*CRdm8G z@)Zdl8cJ$hsyJ66LACIF%-NRve7eN$wVWI~+P&MmexZN*A9t75YQ@Q#E_$uRb)-|c zpxyMQ#?6j12Hru2&{PknAf%G}&3~NbPdo2|gM}}4;mdo=JC~57CljC2+3gRDQUv}P z+%YB6uQG$E3%j0!k4QQs3JdQAfW-&g>MIM>dzH?`OXWcCz%Xvy!dxL*!VA z%%x?ixitudc7gdCe!9BzpDhXzxLCFbbKHuj=0Ra!6BxLhS9@;@aS=*Ne{8I<@qH7M zDQ}{f*$@t{6_u1thNqaG>wN?J`X!IIXp*dGIOxh~D!W-s^Bk~!RIgU!>4<|0^7zZy z$PJ{OPJ?~de$C$g+7ENjxu6$Ir@1Vml!j$uV>KC1YJ8_}ucd2L5MC;a`V?~bI5NHx zRM(nb<|!Wv`OyyZVe=lPdE%hhfqTL1S>TY_=~SA{0v%Vu=rif;133cOhm?yhOEyXq zH{x;$ERhZ>_vOsf;Qob-Z!-o&fTHY8xu{}GA(TH}D?e=iZ=H@CJN;U!SKm@Tk76lVbmF6CWRyrQ z(ajw4;Z^*~Cw~0ngyKPWi^lJ5y+bJ+Ik%$>T5BXBlWzm#C_Fy#b4|)Mk?UUJyvXr- z;nC13sAQ^9dBiv(f#7n>O5sM}epG;O+4-iPKbG_}=UE;}#Otwr0D7Uz)ePoq(#yc2 zKgg~U-W_BXL?c1VucL2?hkSi`*OBav}WtkQDX2LFP znO5=dDuh0Dlv!>S*&)vxKi-wdUn?M=h%_0fTQX@p`emol+yCH7{{r8kcIsGF9S@kK z-cpnT(Ed0ixQchj7=~!q&OP$qa?OBB)(HiWqP;98mT`@0<#cwpC>vl{-l@@r4F_C(ZbW>o71f;frHWEvj3zAX`@@uMaMp4yB(!b= zE-ZzS3JO-h+##hc;2y-QB9Da$=htTPing2b(})CL2DpNfhE-9va;%@vkxDYgPqG&d zZb{lL(?IWp`mXBI)M*yHp?F5^NRy6zc?(D5b=-a;e5q<4}fbgk*t6JVHs6ayVE^rRJYqd|moDYk59 z`t@m|Dm)YC^EYI*(IgA+z@Bg8=HJIpDuXx_6_gI+g|tmnT62WqXS@n)uG&Ta!j}6i zoAU`)wY?azDIMf*nV4F62%8^n3%MvLa`~QrKO=x7Xs$Bg>bk+M#VR}LL4~R*JusB? zOKPY5I2V$Ld#K3h+% z>(6&JYWnR^lI-?7$!_g`6Db+HIz5n(ZtE-G^qXGpLLW*V>o8JkqG#S{lt41XpLkwm zm+#LSI3>nzC<>3iXe26BQJCfZ*f5*G9qx)Nfy3S{u)G_zd3Yw2otVzAl~(bO&t#Ct zG=Lcc4}@m7$V8uZB;rnmq|gyo8?*5S-P|P3CA$>$$1wN$_>sWhsc>AVESmx^i)q&S zRQ3C6Tqu-ty`kj+b6E)eqFIb06JkJVuz5t>s&$C#_$Xxe3csLS4;P(z>;p_A;$F}* z;KT=#wC0ad92?j*65GeGo1a*?2#l||^xRI5$BqJf@ohWR<6!aEi-AIP#1iy{6bn&vm1M0M&(`#cA)%{UJDANf=rLxJqoCUiL~`{W zNx%Brn`%s|d)@N#qo;s&@&;jxGqb+G72|ed3;CS)4iI&va$Dy2Z)zzpG3~xiwfs7T z$1A~CtkM!S$Li{gG)a{g!p9Hhah{_Sk4_zqL$h*snX2fk>L?OQ;sa!0@;>bFHvLk3-UP1WLQY*~@KiiN4Wq|xqJ;=pg(j%!%30tkzXta) z(^)UP#q#Q~(6^>VYU`8+V?Q@f2|1<QwJOq?5a+Z1L?WGiMab(Ip*u*z$Hw3*bg#sZI4)>qF&+q{SaaaE7Y<$ zQ5{^vTs?S>np4H8*h4DLlaW;@)I#JbQ<0Jx*w{iU`Ye&*!!Tz_;HIM#(ueR@i}=3beAKlPzp z-|Y64Zgq`!6=m1*%^n8^V=BCNPHqYAS61Z=DLbZrjGL|x42&o4($^`<@S#dc34QsMf&>WR>~Jl7qS0pz;2^VB78NL+!V z*$cD!ii4WMuGoi%*Gnt?$D*&HQ2D)sEl0W%COB3;P?kj$fsmi z=0f>BqkSCzTYi&boMI4JMV9;0nJ*ljbZu+p;`WWWk<>`0AO%!M6WBr7UZui0#Ns;W z!;cEVc6tbw3{Y~BwNX&&*V^5E=Qik@;NFTI$i&3KN=Zn*nHow_Y7 zmv1ST)ehaZV%hqJhuyLMIrMU=7vFH0XP!U~V1hXe9pwHWsVNe@Q_s_`tF3bt>Bq;` zw;H@6(jT*b;WqWzcrYd5DV{3q)H65tKGq~<^@PMH`Mxotti>(fWleH*Q|Hw_cZ-J` zePGW$y%AiJd-KGTlucVC1wWyk0dCKI-BZ}hGpz`sRdf<^q>E>z>)?6)EgPj_3?+tpK=PFFNhEO&-R zM?>VO>eh0Z$=_2Kv`w;gnK5`D+dDPB7Lg)5o!7C~aN)rYszsu+gG^cl2VpvNji&Z@ z=MOqOo{8ASjjT(f5n3DnPT{odFKNf9y%?MDytLKABJII;m4;^>b$qdUEgC401-W2hq)fITWHM zn>{OWesbG;ROODtIC@7q!b(K`=@x!S4cH{6S4)hp-vwjt<(ia*ZQuENxOPS6(PrdN ze`dh!#gH?`G4fjA*IfJy*8G`HUdDeb)$)|kZh}5NhfIDMutO2DPs+BYM#hwY4-&Ev z?cN~Z3icX*4?{lN2SvvA6-hw)o^h5tWP(1-y8}geQ-TBYigAH=Xo|#hwt;Zt8?jUz zn1iyy?hyU6NjZU&YEF8WZRnQ?l#@X4FPfrvKhLD@f62&Nn1uaFY}MOgx0I|K&8@Cb zMK2`zTmg|{T&Q$%OsCcPX5qWi`i7nNs%_koO1?@&y~&f9zEt56;?e+kjUL*DBrYY- z)$J30)+f0nP(N~8Y4pB5;&@&+=C)pDFM~6wRXAaQd5)AtvJVTRcnD^NJ7%pOn9uw8 znMuy`SZ(CFS?eq;W;y`wkONHSdK7X`~Po^>Y{DLNK z<8&uhccsMbYige}3j0sB0$g=fpNaIamuJ$pHFF(2qHKP)6T>fBMR|0KCVwVauH0>i z|7&{Hz9T?UT=&Xp7N8sV)9REf*Ws zzYj27*=C7lIB7dx_FZa`ufbtIXeiN88(q0Yl}FZ)>Z-`bzYixYzD_+0C6 zFMj})ctWC@<8Ew$1x?U!5r(c)w~VRkgv35+=bwOvHV!uzY9x=CD;n^cp0+4P3ax%e zH#~|epgf0XcCCm8w{tcurR8)M*piR6a&OZ61xl;oO}S`IrjGIQluyPJ@*I>sa1mN;Nuwg68 z_!%yQM%R^=MrQh~NZ+Nf?GCSa9{s7v&=))48+bS{F(|Yd1n{~$)Cea&enZ1{DnBH4 z!EW!M=Hk2Vm#bwmVaeMF9PGcQ>G5*<%Uq~<4p(4$Zz=IsK2JZU3lfpo=+1-kYo|2@ z#3L64huH?wv)$KOA~BAzNzZ4%??DU52h%s&_oY&{On!R#7hGriOy#qq;RRTBNe^nS ze(n`~>=N@jDm{VNq0X#j05nar-HO(%kkUqw^XJ7^4d6#$y*Hh`*Gk;1q*W{3Z{-PY zh?srqn!Ja8<0#WJzn>+F?`To_@bJ1xGrJ!UoJ3DNqT0?f7-!t}$qTb=>BTfm%8J>z z9)R8|3u+jvXz}xZJ*fELADDxsNU>R+;IEOBe~?A{6}nW z5Y>W<`SXzb4C7%cIoMMm+;bM;a?jDjZnLxKcHxG??IWf8hOQkZ=)tM1{&5j+ z`<_IfVlXe0o}F&K?OFOWIcD<&gO`7F@U0Q|@+??s2SB>kLC9(kKh9ZQdq>;zS6T0x zV+&t}u(NO%0Hd!j-fkDR@Df)puf0m@AWpJ9{0}VRF z^&u10!8(rwp%Y$;G6P^YcQp0r#R6lE-0CDUYV~k7XlS%y0qM8&2s%^^y~Q32x-aue zDT~LI|HTE(4RG9ba}gI?j$e~Fqc5fnCfB{OTrkw`pSQN=EhavI+d z!;3dSPQSV?<$;b970b)Uyxpa!8FE(-W{>5W$3|c}om8SUj>y8|V)6z`8VwhB;9u|>`Yeikx{qKk-Z@qMM5LW z^Wsg5S~oR9NBue<{<3X_rft{^xa3+m0z+OO`;bcLEZNA{Y7V)G3`qN(MaY- zA4J?h-;8E82i^EAXNRzws94m1vY4JNA({zt$^hS>V1} z*3&WOy!k2M+5~@dh^I7tkh6iRNu_Y_JLpWf&Lh$6>L7zk_o>N)Ulucb+zB&PpVG-E zktkObb-)wa#WHQNC9#3^lb0N&Q=tdz+XfEala*+!q;bm?c`~KwMaAN0S-a4;T6kse zmSnG7kCARXsPuEnT`9c>+Q_`MTvm50W?GY{et`=0;@tv+a82S2Jk^3YqXPXPJe{!g zLOtCX0>pmaw<0!0f2X%|xmbL$pa8}t1n1(Ulv-Y^FzpLrQuf%*M7(KKO-9}~=6K|x zqho<(WBr5Br>h@0(F-JU!47E{m6hI%T%^&TtgW|SGRdvgq)^kiP+EygNsNxZI~Q6S zeIafwJVO)=$U&zZTsG-ZcRhN|LzX|J4}U1AF=rlo)J;mje31LFC*N6R2Gi&?TDKhu z&)@RkJ)ePETollwCY$Sb+$UB#gcZCO&z9L42BTR>gP26p z#-|!sZ*^cdFkm;bBJ+gQ$IUrDN8=p2ZQR)nI^bcK1OFUGQD)D^dwT?jjP8Rwp~i7t z_UT>Pw~Nf*)$t7;lueVo1IBz7py^wI8l}FIy73fsYR-{PdzqWeUthKQ!t77aQf(vYCU18RG*~)9Q4qZ4E0(+;V zvirgUrS^Fo>=m^`g;wW}F}hc$s7Y?&-TB*wBsPAK%FEqn+&!b|RebjnQ;GAO7B_ne zT`y?!66{L}0SzV{f0*>WqeqW3AL9U1lHQ~5OnCirdrF0c&r=Vgxlc(QD4ND{f!Pwb z%ktM!h0R^po<#`GkTnb|H0QI>&t9MThqpGLOdFF}@ z`lzNq4QHL;zf8G25^|p7S)F}(?Ktg8uoU5VzC-;@ZRbF#o&zA^w+Y#|UUta*MR|hX z&uZxCGxS|9E_}XeGg|MD7p=P&TOt908DBDPTdg0nR)kDp?ss>nE7uM_n7`e*BH1gj zzU6!Jv`On6{ZK3+|EsH3ui~ESA1`=e&G$d3l0_^O_b&bU%!?O4MYRFUfBFeGd{woN zIa`N&B~P7V8Lm*eXqroUhKM2j^-LHRrn^d=J?mAYj(y^*SjvQ6w(rdvKy6?8iA;60 zZXu`NObzj@b$U~~_(e7m?dTDiH8IP#!D9)7v^XVm#O=3qe=hyKN?+0e@4p)Ei=B+o zB%7&i6aFkEKBmvI5)Q=yf~EsTjjIri2OX4#fnu2oq*Z0j*E_*v7YW}?Pdl3d3B+}+^ z8E-F)SI3G27+5Z9AS!7d8{fwy(xg*OqMpuO#Vmf+$YreoyuuzQjBQ-thr(r8(Q)Yw z!yutA+WbSx20bbQmwwP`h7@>4LBl#?t9I^W6*jMnJzuv|>^9spi%gU5Sge13Q63q! zK8~nh_Di-p*qT_^vJ*C*@^RE4FBisn7sYr>W>{o=SCDQ}^ZA&01}gt+K{Q>N0;mr~ zb0V}x_Bx`5o{Y$FCriei9@9;@{7S5S4td=!DQvL5rjkEXuhb@{anRZ&kHqgaU&OEG zJc6y0MH*ucw$fZDn7-HU62BF$ob}m-iCm+m)B8k1xsmJIetmbr#jt?lVRWA$UA>Yo zUkMUpt$~4D${%Ub8NmRR~CKA%QYX>D-D6j=M(zQXExzT zgT1k=;9Y}wQ09-X4R1^kkl5`QAt?rX0(Zf8;tL`u+tTaU?i0Ido5z&7^vB5qJRBAF zn^pEq;|<~T62lC!j9UCJSNul7r%0BdScNmuXdU(Oj$|y>NKdazy~!oxE1B3@$4@cI zgF;ZYfeH*%0vQlzbAzg|1hcp-qD|5?zXnx z9T?_pbJ(M9k*1iZh(FWEJ}w@-qlG7ufqaC93!4Y_2V)2s$N5AyKDj~My1z8+uCNJf zmMm$?#S(G!{B%T!euGG4LxF_*U&le5verwQR{vP&Yooy)*p^P&2 z4=lW{`1-MZ@W`&ALE~-Rd0MhkIy;1R!O-};kBTEGxX6JkkFOJl0r84l`|C@5FOxQ} z*Q?*Nsh71<*jJUyG8^wN&AyAeq6**Q3otj!L2mM!^P8Or(V$@-u>&%BB7X>p|Ma2&^p=u#UJGI6ZJlJP=c*2jt~P z6rMv|>O!vn`2lg^zbq-uy+@-M%29`12_uJtV!1?h1^0}k&uzUvY&4&1xXjIrGV)@0 zww$h#`BtLqBAdCng|pRlcuPj&IM57~*Ct-}s7!gk*k8Tpz6Nb$k$I-m1Bu#R2-{X! z24TxcDJ|yiKy?wNm(B=i`?2`)WzQSV#C+@V|A^zr;R~QQ1Yx^MW8C zNR-rN-ujC_e0^-QSo?Vwc-!1kPxzI)i_Op0Nr{j)g7>y#?AVRiQO~_e%|Y8@R6}-XC(7Rpz`&6d6_EzX)fVo4u+=pL+%?L>auh8Hzcuh{0)U;1i zR*YSHP**g~W2&X>J5nufF{;KA8mq_R@n-cgiJWcy*A`>W>(;K-TCp%c7JN`48p3Bu z@?tOAhAGUYajaQ>#i6-Y4YVw!J3JL7*SZ=sTKg@0*nvHN&syARD^07WDSk|LUgMLi zpW3%pc8K4;MgCuT#CzEkya1(kOX?z&^0oLf4TU}Jzs9ld{)FFD)*!j?1qWkomQ z`rncLH_CO9mEsRpan5^lw|Q<}UH;kXv_oY#d{+9KyS60CWMRi8m3bTWz)r{%T2v1+ zn>x8th>yw5CV4Iz@qV3jS7Nz;Z_O`#hVQo4Mh_%Z>8Y?5eX!8HgGI?5N9zf? z+UZbh+y+|a5v>$=*vs@AW7#0+K=nOG^Frc%#d)On zd+?_Y;nQFGWU~xPg9G_q|I{)rNRov2!noOX@8J%Uxd5ZTkp@{ih159{+gLyCe)s6N~_duXJ;U9f61fS{LT|S_(-c`t^ zPK4tRh~5j+Gf3T;8C``vLfz&V@#6V^*5x)W$;+_o0gg{3*sRY#1m-yjr}?ZTCTP!0 zj#;;tbK2P{D|lH%&OnJY|4K`fdd=IT7e1%!-4b9a)27vw^dNN9VJ1^@OYsjHjmWh< z=4q*ezp~Jm`UCIj8bvdt2cx0OIc-yOi%Uxj>ho%^L%!#cDeg)Efy30xC{T3LM^peuxvbS6gF+=x_kM;YdhJNIg63A3GPh)$!RPsT;pnkDUmw~{kB#ni@(+s2 z$D6kFujyYLlx#wx)R>gjz20-3e#}H{)(n7MY|5QZ({Dj$Sk%WDQxFLR{slR9R3pc1 z*GokOcR56JxW*_)QTs-aWn13Y^i|ld-UlV$FKlPzh(P@GJ~HYCqBEIp#eidV24n^k zhK}Q$IxLd=VQVuZu3laBDk$c>^U}31pd6q*j-+xUgGVjrWyLnuCRkC|F_@Alnp58k zw)pyK!I5rQXRm zG>)A&1CjHq=ktS@8NEQf(*f4W36B-3YoXeA=GeJB=1*X&Fp(>u^(&9MMOBuC$Z2sy zXK!pxXaKh_{z#+7CP%hV_@s_?7TBGxblHAGa3rV@CE*itsvX~T=jrfwuPn4$$HfX| znzob}8@F;@OT3*X6l52z6*JI<%w&k2h;r;2>sQRCPwwfq0C)-bpH|;EW_+#jrShxP z0=7S{ZsiTw}}4`*^|;P#IXT=zCSkx5Vkjs1|&<;(p0LhAyLH0qdm)a0dc_ z`MR11xupB{E$|92TP^Y%D&Z;cpKXZPnzyffJq6k6K4qiu$Y4f#;WtMaL@5beQ!*W8 zqW?f5vxAFn4dv&;DyBNJ86l-JF*en{6{^|BKRNxjX5@{ZLoI9_;47MXO}*od@N(C# zLBM3qipQ#(--kU|jRVeeVg6UMXs=V#Ai82f#@C5Qv4dMeQgvA8xrt{+huJwf)b}J{ zbD(r08ckB2b*VT0)UIaE@_3%k@N|!|@pCi-6goK*%n)v0>=l=pekT)kv#7*^7}s&F z*^lZ`U0{D%*-5sLdB<=^{_NQGRzcg>YC@}5NJ5vGL;jN3Xf&VQE*wrf0}6E9b+lwy zgU^z35}Vk6s>X21MrMiwQ3JQWp(B7Cui~%`FL6(~O8ienrig5wHk*)LIOLB_oB>NF zKb#P{&9f7--G*)o@O8kV$Fc&M>1uC^UQ?xT6I&~au@_)rVckLIPS1R-kgl+OUt|pC z+Z*91cACr8h>|q-acO81sYebad2T=d`ot;uIBs z3#$yoD7&N;O# zFrS{gNg;YI11TgY)evF21a4-r^AR#roC`$2n1D8QZa6bby^!P`!;lEkk$n6U8bu23 z((H{zm0a&KuYeWb`JJ8Fs{8G!S(8aeMV;q>^mS#H%SeUSojN}ec=`e*@Fhq+mA5lf z^pxO{`*YmUiF@lfPEUF6mKetR$Kd(ns+N8QGdmv^XIip7aHJR%obcZ9#1(Nc-^`BC zvkiB$X@TyR{p(oO1|q`Ngz}Av=|nZX&pS?aK{A%wuT32A_M z1>a@dTHU*Ne#QX>?OEjIon8NR#dVnrce`$<1l6Y=hxn2+eRKosM;WYT%`=M2-^2>|bWDf3YQbGI*`S6D} zA^!4jVmHh^I)8Y9nCQ&wk<{aQ#@0V6P5~8jN?^$cSk|yH*QYbA*)ta2nf17TMsZ+gbI|>ceM6@akmie zsJi$jt<=x6M#+{e8`br;2Pyket?6*e?^>&eY_O$$xMRbK7Pl$;90n^{+v!4*W@{dx zoJs7-OdcwO(alAIAv0#sI@s>H!xxY|VaTwKs0JoVX?hU`ipz|+6OtRMwF9y;GI-vb z@VX>t60Zgj|Ko$Lqs(2M`)wa(<>NsUX#Di?`xN?7(c`F5@envw;)x>sZEszLv_YC5=?mYhn(IO3W z>ZTF|J%&%sl_&)6#uQDjwKlBksbAIoE*jzdn|P8Mq|?h!H0Iyb?c$8ltf@#zweaJ8 z$(v~DVEHj3Ld2H&?Z`LS`P`$HR0IuW-YexK$dQkUccPh$5s^>|4V22kof|@MiRG!N zvV7RT&X$Lid7vf22Iq)osQ(5LFPTQXz~lcTrxZ658@c~~iGK9w8?65o{Q&8>ap{o* z&dze)R>Sb+`FH18tLYX3Oyi11erI~vU~$4GelnbMwrgtYa|<8WxHo0tuAGdEIZxYb z3D<=2QiaCXk~D#kuR(3xOBa5~z4rNNxFca=K+kD~uPOq?zBx}hs9Fo~L0!7WT6g6E z-A$Sx3ptd4^CAD>v5UJOd&G{c7kBHh##nY!&pt%gE3>sZ8ge%wyqr{0FiCHFvfb#s zsB+h55yxwD($AHd(&i9Vo^pE=KQS}i?AUPvecA*=OQ-^PrYcy!#IBHB!_zRpyZRzr z|J=@*ck_vVc%!k|MmJ<;dK(Hu8)-CPV;50|Isc6?9utTk~80K@j1H1p+anNj$fNVBSl5Cx_5qYPX`7CJdS#- zES9N8QVsE15@b(~&s)?On|e?2K)4FJJTcO=P-P5O5NM38RB(vfrF$aRM))@YA$h|LtP;L#X%4Oc z*4yo_32nLF*CFHn33>MyT*$ZMg4K{M#(h*^iG{5L5~y(R9{xVNRAnma>}2t$z>@kz zmKLK)cI8%q9f^gkQCbDwBZYJfG_oO|i?bL{)h%4}mv)`)S;mmJ?MM$r-=!L9?w9aK zhVACV&Uw$k3GTUzIb+j{9By^*XEb~I@nsuF7xja3g-u|BS1D z1k!*?l>S`1Z)GPSUR{0DqkV8_moLUeP>HzFLJaO?;MfLseq%tgmyIV+6OI0}|8Fak zymS_HZjP);8|zS8VjQ{F%r&YDcy5`(D`oj-GZk7YBIy+^D#lrr7KN(D09}qNyAL$A zXx7%enapBCquzOv3ahjO*=n?=8wt7X&%AzSqZ({i+a5Vz=^fD!F}?hroqykuPmn)e z;P)@**Y6r(FXAHF2s%hh&Mo$PUU!~4tMJt1CZ#q-p;$_yX$-o4P_n*Yzxg7VG2xgl zuPy_cuDR0NVpUhD=9;&e=QYAKI*YPuwVO8sMe%Xej&POvcc3Mqq030kcfeI>XM>7%T0W zS)3wIyLWpG4ldqrVuw#NE$UGN;yQX`lbSC@#9k8X`)ZR$HOXApaQy|HXWls{jpNP5 zWk+l9Cepg?VP@)3IDcK^hSPK2f*77(G0FGD81T5$kg3Lq0X&}cQZ5&{q|;mM#lKwt zqny=iWxIViOPyca5E8aC4wcXUSL)sYu48OIGlrPG;q8tO$#%Do&J5UC-Hn)(WGFec zAV*I$JKny*22x+P2oC;ULo*OJ@Ar(1p8MrE#q-^RC(a+#m+uX%ANB?)Ts^PiO(g0r z?qUWukOlCODO|n&5n#6 z=nf9Df}rOFPRd9(S6_~)@ql_xDLMys2iJ<;uI#4Yt6TcmrUkEMgVP$!YYjEwy35~R z|5F&0FzBHK_1j(TP)D}-!+Nr}6yJE?^O+$vQT;&vq0m*VTXFx}M%$r}0)HOJZF`7* zn*SgvYQU=3tKjCF=!XqH=V&t=>`PAo zE-DIbjaIMpcFn+v{&n$+{r_DhD2wz~aQ*n(K`1Qot}oWvPucU?iD8;XcLb7d`Iym{ z1mN)Igv|2BnXRFuX)olBaTibB)(m;l$H1cMo>A=OtXQ8&lzSB5(!Wtg|AZFsKSy*Y zD?xLO|J1j9@$WeQe^(R6lPnjgI_{7Pc2*{zxCloS0K+qd0WFi0py=qQ@=H%lW;;ff zeqVi+fe1v}Taxv-rF){1uQZ=MA2zAuP299<9U$S*?p^n^G-9s0KiBvLRDvYoqF#G> zWevdDN%<+>#O%6$wL3dqdd~9S$XyE>(9wLG~QTwn%W3uvaesG`lGz4wj|(k49PUu0iyFn0QVe z9G0gTE)QnYua-u+>}7Ypk-v4H^!c#aYb4MN)uG$+LbNtd`yM{8YXg~>_5Obh!243Q z!eB#HM;$wz-kN(zVqbg(nLmk`?DI;=59jbVyi7gFFfeb|FG@}_E-#U;jo7!!&qhul z{T|-bs3)`nt_giN_Q?-?3PPVuK6MbTu|;|0_-tQ>v&HA z&O1^-J!{-Xcima~!r=_#E!-WIiwI%$vIw0=ZU>-?q$9p$;&~b!6(HRa^iN9;r-pLU zJ-YcUdUw3uc5b#92~D9$Li|yWonAgsMzG2>yMZ@W|E#wh38$Xr>ik!=<=sfb#$uyF za|fgAxYriFFG**&-r(oi`1V4bOomUikiSqKe4_Hz$3s*L9qA!TDVlC zoB}spUC1dz&8MAAQV~p8H6iJ~go@s$|0CY497&%xOFWUi#z6jFNdsIIT3RMiN!+Dn z8i2s-=6@}0P)Gg@uS!v8&^SCrKHBrMVUJ#Xs+zCnC;eQ}-Mb4uvSh|jg79=26z=}Z zE?yYI1~mjlGY6MTj@*{HYPFq6Gln=#$J`5)%`WN|7TDyWNl~|wfx2NqohzahCFEMk z{Oy?{q`i{D*#|H$uK13f2iXEbKKQ!~o%VPA$0d02VtwTojBc4JD-b39o=cTJ3$Z_- zHIN;9dR*mFp7_*W~)*ayDC34;jZU9yvaLYy9CgKa1 z+3e4+eT!O6<+wtVC_W{2OC0Q8qv_nMMM0L}Pj5O}E{9zSv3r&59ddxTWgqhritfQ5 z{~z#N&t4vtZAZS(bVB|1r8n}N-{kpSfuFzv~cYC9SfiXj{U?82e zjt^}D3DZ+L6$~Wb!n$=3Bkc7n&P9h$2qH5=ALyGl0BU|Sq^CY+Jkc5aT&?xq+S*IY ziaS{2ym9+Lpg>-wQDm%1rY&i10CRKqmboT)5y*ncsp;++Tg6c4UnXPm>jRk&62)R4g-u~^ z?$?0Vm-B9d6jezWQlM>6cGI~e>w+&TG3Qgx6}lR5Yj}wL60Qr<%>c@4Ls*N>Y2e3_ zKX*m`l)_3)6zXUuvqpC;cZZ@LH|Z29rE_L3Oycu$juHP0f0eg(st`3%hp@;&fhLKY z-FD_ok?Y+m_#qy{UEbyce=^JMO?(lmN>~1qR)k-S~lcoeEH67yPaWUFk4tXKScXqEC#AE7Yt-_A;x{~o%9@+WX)XF-zVP~y7E z5*4QudnyL1GHKhS(%Y>{v?Qx*jC@UIXxvlau-_~Mb4N%0HSOv5bD{qRdm`QK{Jwrk z^PDw%;1=3s5V=OHhE*MX(O0uT9%1X=Atuu0v+eV^8IQ#ZDRW<8NB+#iqR@2DBuXf3`e)dKSk3-k7|x zL&Ab8D{a_i`^Fw3D+l1|t+n4O8k1ZQnX#qD9J&XaCWKGVm^Tv=j3Io{+a9AR)r|j# zvbTevZU#|6NeStY?(UiaDQOky6a=I}ItNMV?vm~pdSK%Bxu55K zey`ro{m1)Vi?x8YW=))PW}m&UeO=d1eDbJ7=3^XW4!XO$z9Ud;F*0NLe9H~EdxW7h z-nj^z<>a@H&A<(j4|e)6F!1;}!x9%)Y&yNkrW}32w6dAkhkb)E8VYiu#mno<u>R~2jkFxbT2@2e&N}3k3#E2`lj}_Z!M2& zV;b2&MB%|*6AxR03vpBCwqyXvS}YSEn_QUdE2THY6rNF;7Ll~Y=sEJ7*NNA|2Dxga ztWC+n=V9ZxXm`knR&Vmj=PET^;G{5CeYj#J)ezV;6xW|*B4q>X^b*5+;jnZyZkM%_ zTiqlmE)G2$TJobq2mgeudA`$RmcSrr;q{TXpN|)OF&_}vH4AO6wMG2xz#mHJ*H=KLbe6yQi3%$D;a0Dqn^g{ic$b=2# zG5s41ge7c1z3{(<8!#+7_ZdJ@s+{>@i?|=Wz6T7DfXvXFgI9)Z|GKg%Trl5~apdD} z)+1Wvp;vc_A45P9Rsmnbwq9PEA3fswJ%x$GBKzC;YI@Sm4i)L&Dkb1gw&(xd7Ol#O zk*%$?@=Jfo5*UwFRY;RAy4E7HX;-)tSqZ4upIi03Y|SitnfCj;d<pur_dPU)M6H7~Te$2A`6a(fT}j{j!rstaYPKx`uZ%z0;8L&r&Sh9n@;BuS*^cV( zi?Hqja5tSj_n9Omb>+$oS1tQ+aw8~=L|=I*(snp?6A$syNS^w4SUJ zi4jZoOQXwsnKI3_H9jB~?m@3$X&hlqS998zqt!PL=_qh^YSB%_ zJ0!2$?a3-*sZspWIl}s1(8wTB%HGi#(HqaGYKQpY0WXXw`U0s;OISc$K1g{{cBS11VV;8r=#6eL9!=H8%b;D$p?29$; z3DIIO)f`}M##e=i+X2S`(~%96$bX5(;pNH1jf$4X-h`;74#mV$Uwe+^pK)1~y1 zRDYe^-v9n3HSh1S;eH{&?Vvkby~QEn4_oIKNmMxz?1k;Xy{MF?UDgW^IHCz$-KIKF z9k_+AGPV_QCU-^B%$?)~jpo~T?vB@%r_s4EXgR)Hva=(@w#eI8!sMAjxwB7}itb(} z#@Y)h#XA@DwrlQi_ABGsx!f+Y-X~gm1H4Ps%*;Gbc~0>xr;d%ZHqv7t>Fr=!Pg=(J z7k3+-1N@{$tk2xo-h564}~G&-q@DM$#wG3O>#UD?NE;^sYO=nt46Wst63dLk%qCOxzb-~`*7T5itwdm(zq%}8`VdbsM(Z#5 zVr}Ku82hIyvcE}jO;fNWD$Z={8xp=vNA#MT@(Q*c1Whzv&X|_E%SlQ{tk`8KoOs2* zGnC41JF5xhOmM0LSCEQY=4y^4wm=qqT)_cnSat0hwx0-@IlydJ$sJ*43b$ty&`mjog4@r z?TERAS+~XJSiCZVWX+phH~LcRU9Q$`)WdWkk{ve&Hc~WCYL`Q2wN??tpNPe2EAc;? zndoJ~Ox@B(BE<@Wbk(2VQI^m6d`B!BHhYAVqH62WR3Ny!_H!DWz+a$uJG6mwnsh(1 z0!;=APU?Quny{o!M^l3yH;&eB=}y3NJ)?OY91g z>g%ZLqgYuMoO934I)`_6D+zjo_nDF#ydnCSYrIczbVeKIf2G)XlSrbg5M7Wd{>m?y z;!L2b?wYE|ICjsieJJ8caOFQRldh_?_0r>tQv@ND{^KCvsdtVRU_j+%Z-=R63;oz` z`q4f=g!%9-I?3}s=)>l&s+=9yAENL_A>Qf}oS5mrxWfWq^k#-#^jG)SsoonkRkz-$ zrE213h$?sH@wu-(UuswgZ#sX<4XO$sTH|)ELlfp(uPz6yaTsYtkYw9ZclqAF6m?zo z8?2XM>UJ7(K4mC6N<|>lTtYbldyg}S6?s-L+{=*Tbou3_$n%ai@ed-?N~<C5tXR8zB42n9nCDCjWhl`bm~S z-a%e@6|+v=PbpzBBZnVkd>^S_zEMIQ`jv*hZo-}<$ZM8+l(x0Hta5q=dCz~+d#kq& zur~wq!y9gMp{ln`rndxu?hLD%& zk0LwjfTK9RD@Pm*?RM4atT64qEhh4-t0No?k+V{*?7&Hf9y0YEpMZCrya0D z9Sj3hOHgXNiJ%VSrG%nyOa}POLU9r5tuGp_Fav{^?YpQrc#qX$FZiVfJjqIRa&ER- z*n2pg79hE_Xh(kX@NPK6*|M89a{+YurI6%s0z(|7?0a?-#t~a=cO`O)A6zUOr(gZF zyj+U&W4t;N<3xy@;S>SvmGoC~SgP3U@_{rlswtsnkl9#f$7j<5hnZOq;aYtakfb=B zshSg=g%*+8{3TbP59^^+kLg+ocZD4xHSj7npjJ6|y}qFfnL~D}4g*fECZrpGi&=5P z9`d$tQbjHikM_3-F5LNRK4)ntS?>44*}LM#%P^RlKeBw-oZBc?+Ig!M9p_KB2T!$^ zj$j8ZU3srPU$%YHIE?@KCGp1VK{lZ}s*#ErE)d0wH2pg&HRo(Z^&RNPkg!=Vw1K(lo0TTiu4gdZSmSWCKN6aRCV|) z+-FurzQMw%QfB<%yhe~bBA75lVWyLDCwrAZ&$b@o5#Bo0`LSGHP189vJ^f1St|4UX z=f`s4lIEUWO_!?-_f|@2HNnk-$ZwVw8}%D~$RsPr=J$gRxkxg!LI7;sXy1r*cDC8X zzg2~Sxpgu`+!Ram0#fM0+PaxKhs(xPY%@4I;t9Q7?B-JkxCMR|WFTINNb8NZRMSi_ zR1LLlhRO+PeEl%VGq0>;Xy>Jy=CE-!HykoOvFysGV|G(KoOQG4<467)ucoO^^AGDT zz_p>iXqo7jpTy;c6~5?O%U^s)##uNI6LjAuEqClB4ZBu(g&F!?uJK~B%+SVW;H|lJ zM|2dZ4>+dV6L`wvJuO+^{LU^e69;ahQ>D#*>8R3Su4d!!>BFJAh!diDZZpyZi`LbQ*_q$lzp@1snPAmCti$Q&kHv9Ibm;I7{^>0}d3AvnklUDrfd=c@oQ~6O=sTXCI zepKN?Sosb0KE_j!fijAfJq>jFfLuW&SSu&vgE5P#M{0!oU(SO}PTV9*hAJVAGF+|4 z(|#B{x^JY7=R6vveOcn5U466Y>ZC5s*pGJn1g#n>Q$9K5(q>`}z8uH<&atnX$eN}j zP1Sn`EmB&wq>+3a`Q*U$$j%$)HBWFz9Nt=cSKInvXuKhU0Du5_b}|WU6x<~kzG|}Y zjvDUhn8h4sE!}>5qLQla6678yH?KH(P5iK9y_9xEQiz1R{$;C0Hy!UsstiLP`I@VT z!!NutH_e{eJ5siMD7&|;^@btKVolg8dE4mL!z9*H)?#`{N|ze)bgU^Q&ZWP9wZ{{JL!FCH_hYtS(0atICYE{S~EAV|T88Az@@Nu70+neKbldghF&x)216+qvp{ z5M&6JX_5r&&bm+PJB%<~-EMDoM}1@Wk&fv~IZ+vZU)m!2A1(kp=)6oyL*l-=(CkqaswLRZ5)P66XfZdmX5C(WI$RFGH?^Uj^$4oZJ;7f@~OODTET1 z$RTk*FsSm1({|2pXTwDvREaV*YLj+$!zRn>VRB9qyzHbLB>R!SBGN`9?MTZKx~<-9 zY&khGfm^=5VVRvfZ4nlS0C!~Mov!_E7s`acC7lvwyZ>WWM@VBVaU+qR_aapxQ$Gpa zCN0)i$h~iA;vV=hI_3#;+=}3H+w3G))U^C`M1aT$o)~9fLJPC1n!1VYHc1^Wqnd_c zCcO7CU{)8ajlF+T?`HVpy-CceKH(#`BB;jj>lc30&*eWD013t@K5TbsmlTcaj4bo5=K z)Uh?Q2t(Gnqg#nBMNiJ}VXR4>OLhCa>5pLPdd{<$WqPgWxk0(_9L`|mGU~s89axqS zpW8a*JP9ilhD0S@Xwxd4t4xRpO;QbJ-5f~iJEGmuh_G|2e_T>7GHGm%L%hL5KgCF; zWi`r|X%Tf#o$H>8G;4mMZ|W*f$|5bPx0xT0^|J`hih3cBi(%vtJs<3~N4874cRkDm zUxnD`z?_pKGS5;w=i9{NUtEYe%a?Q#>-7$C@%iZI!t1dE;p

ye}Qgnrqy5=V<4W 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 literal 0 HcmV?d00001 diff --git a/lisp/awesome-tray/screenshots/screenshot2.png b/lisp/awesome-tray/screenshots/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..a649acefa8dba125b0cc3f3e5b9b25bb5b660b48 GIT binary patch literal 18359 zcmeHvc|4ST+xLk|5tX83X_3fQc9XS@%2o;4DLZ2{ma!XGp{p!Kgs~(cX;4fIhKVA} zP}zqWWXryev3q}`>$>mzx~}_kzxVTgKF|F=e?0#f=gc|h`8&_^SiZ;i_#X4?H9aj3 zw!>@?1aVxseDMYZZ3q7{f7!_lUNnweWrCoi(3OklZu%roQV6e4XjO==nBH62#R-pi zYb}{ERQK9p@2f}(^{uU77*CH#2@CVNdsF*ef7o~0o7IlrDbi@Z7O#Rk77_uMTitb7 zv*T5u^SgN=8JXikmEY+Z2|003W}iGUX`>lmwC|y)tE3*@SXwXM56(SdCEmB*U^>~E z5`Bbe0UYNr z22U{OoLn9v#VsfGtSctn#qnmw;{J*|np_Q|+D{A)znVC$zL6n+xtq)tTa4FVdyLS_ z&C9z-tO|mlzB4;m`U>0}&lVBzcB0QC>4WRSkA<;@u;cgY2FqtNagBzY5Ja?jsS}ba z?w4#Fl-o1{SGCk`1-Jf8#?yU$9GaEcy6?wwD>t#cAN4pKJzn&l*AL$TL7n*@PkmwP zHqR2xGJMwX?U-l!85~N?>(__i0=#WEAfJ0eZ?kEpUVPi81UBTWdBJ5#-=jljyWS%O znK-~j>&$wg>B>TWQWvT#El!GooAh*l5_3ucmn$mq#cTnjx(msU{GFesP|u z;FI;9iPF#WWGpz^ttRlS@^Nl63Y%tVRwZz#i-!Z)7QW0(XOE1y>?9{Y?Ad+Q%;2fn ztTT#v9v*I1M=3S!DwB4%&y8818&Eer=IEl`^veaxu0~2}SbfBsj-%>exz<=T-E(uM zGl24b4=I|U8FNALyLYi-@!-oER~;9_D7Of550@V46zm=G>saG2;7T~(aL)uixpom{ z?ae-C=B1W)`q{f$?nC@jQ(%?Eh#SmXk1o!X*4De(o;=@^vQMDN?2QHZuqbmI(dOra z%M1?&wtMUA8k0MGpt|^6-<9f0u!n@JJMW3{kAkUMjC*Bxs)BPS$l+q`qaz!U!EAD1 zhj}*LkP1#_{lg~$<~F!)-7Ur(ZtC_jn{xd2bl5$&9>1doD_Q4TmZ!Y!_O$&mY~b!q z;J7%v3zmJYcDhp1WL?4dCix`&5IDNdH#VO~`XS(o(2@z8r@k}_`>rrfVIltW&GR~p z&z@^CTZ1=WAB7kjZ2#GfnNMVnr5;T4Wss-yV&*c(EUDy}Y1 z4}p(MoC&PA-mpW^wM0qXkRV=jEXvtApsqg>oR+_evR-{>ep)?fbF#8G)VQ8>1w>Kw zoGH_^I|RZGL5s=m#$} z3(IYaZv&~n$H>{`CF+K=M|k)1yB=wu{mNLHNRs{4ylqLl*BIuiq-`ir(6Sr4CBjhEL#8tr4@OAwQ~e zD2f@rLNt54Tf}MjqLCd^`z_m;fje;7 zpAB8S-18+u_&1WHCFMTr)^H~B~dA|zZ zPkUIdLolOf-4X+r=9zx#OUJps_JYn>`ZEokZr#YVeF9Rx&QyCshOkI6-amWl+89mO zW9sgbRBv)?4qPu`A4TGXjDLWYWHTcow)W-Wq-Ks(ZoW4%D2+FvJ5t)>4!z6JasW@E zyY=tB*4ciRSZDAAhDJ810pm(mP}_bO*hEYsGYHNak=ww1hHjo?*og-Be|E#>1hlc# zPjTFrmYTL-Yy%|0K;c2%_wHV8ezZjzSvNrqe1of%#h#EWlnVq{K;%(q^qZ|Ei zmrLPCO3m{5_9_(LH^>Gy=^Nr#hTxLRh;l<0xjWNIj?~K`{C}tL@Ai;>pSIX++1*7je9S}Xc98h82UY_flc&?mEJXJAvp8m%E{cDA? zG7sR#!|z6+CFph-+55m_+xN1`s=l|7rwPUTO4%W_GwBGF|E~25FtQnoicA{k<|1{3 z*UH{{WV&))>Tl+pb>IcLME#EiuZiCR4_Zp5`7*CkL zJ4NjG-3G$8xL5_JdsD=ZrSjayGRs>_yj2aY4T71;9~3{`V1lewf3t3PUAkMhyYrgL zpgYxM3_j)Eo!+xvO;Pp=zftB=7dAadx{^X3zQ0^VI)A*dmTtJK_)`cMr@~{@H&~MP z*VSrS-i_^$wFL_66~f5;xFqIT?}Z<(0Aoo0J?}G*Lxp=VDeWLSPK2KN0_>STcI&0} z@_)#z`yZ)q^!BQC&mc3y!09!vX#QiAjo8M3gnW|UTjo8^e*(sypMSr+jwdhAG@n{w zS+=Xem$vA&C+v?zs}i6_Xe+0 zfOD9n>#IW0o2CPfqAr+y??ewmXtqGINm-h>rk z+cNFzmA<_lYtHzGl>M40Qk=e}oZ$xm#XRV;b7JCCV|GJtjYz zET@7V=dV5pVS-*YW16itJHF_mDd+;caPnENI{|g{-IQ%pOczC%+-1Tpy^_Vr1A#$WL1FMHHHGC%Zg zc)hWqv2c>3`g?Bb*?_}VuBZV85y55`S}uUEi*_wcGfW?M_i(eZYkziiQ1YK^i8=U# zAdn&iEaLMT(~OulhpKPzu3i>%(`gO!X@Qrsc00T`HoB*gQ?0sr#mS8o^>6$VAD;Zx zDX!lNL~90q#l}TeMSmt|xa(k+-LnS$q8%``Wh5gefEYQX?ky~IvG1t@fwS)n2;|AK zLTA;c#pd%4@&sL-k)gF)|Gsa<{VWYD))2Etq2AN)IkIb-FK~{eWKxISiUsN^>OBMl zlqjyu)b(${{89JMU``UR5UCbl;nY31Cp!x#*6W3={bJhNf0F^c%ZAC7*)5|B$P{nl z3Bd*sq9aO!eOxz80=B@JYls)REBuAQFCbqXPGE#{qBM6J^Lk6O)nWxJ$WYw)t(-6R zW-qk4F#oK>cvwxDOX;y4XJPTf^EAQHkMJIaRbLF2T#}Q*GtZsWaU4S5F+B!t43AqO zHoM2O(<;}%zxnywyKzwi0t2&AJKxu2?}m<&0FIo0mT2W<+&vKvfB%r+VF3>*grF}j zW(`LvS(6sMA2-9so9He>@X0Sa0wj#VwA0Gl#@n9Ew$BYiSDcFmr%q|B?Tfw234$vL ze^P6^+Nt6U7l!F2I;0n?65_uUE(Z(z`ceIP$=cwIY`i&s-U8z0YMUUHX?JpUz<4 zX@HdQewY!T*&?B|=8=Y>n0V8sD%#@4ww@;9XJ*3NlzXaJR2xO2g)h;V(rVM4Q=bx= z93wP8ywF&c7TT8Y4WS3R+7JBTAm3anMh)$Fdi$!B08f)>VM_mmKYx4o9f03DpI?Lc z1p{umI95Hr+%iF!C3RHtlJYKGU7Cuv~^hNbaDjV*{W_Q#-M+3%Ax z9(SMRJj3fuwuK()thftn_F;uOv$(S~dgGl;TuUv!D#Nrwql+&hJfjsWs5x{UPOSW4 zgSl3P>>+rTcZU|o5rp1YtAdC*#E8Mql-Z44EShJ1i+vZf#b&YZrsyXi;*IuOtO=LR z_*|uroANmTbF*;4vbeG>WbuN403|%i)+pr8vT|dX05ODu%T}#4&jtwvI+M>xw`o6- z;dUl~$sohM5CbOu_ihv*)YsRB$hsgZ9N9)BRs_z|@^4$S-F0Fje%Of)q3ma2f%ayI zKvU}iT|G;{Ulgpcl&YKzFPeQs9p5X(07sh)!jm^W)3ohL#qI@fHN0~95q+lcNm+ju zt|%0(aPJ~`s7;+Qgw>(i;5U@}m)g9`A&qyZv+S2fM^2lm%b5Y7nvo|2GYD>ode5fd z=-Knl4*0LE%=W{2*()`BT$C*@55zJSrkF{(bDFm1EabI zJS&p2aj@c`;z{}PV4s0&)X!$D4wbAvW3xN1>XlgeU2cLsd?O{J9e}t`LS8h;J)~=q zn^xVfTIrPY1e*DS>6E~Y|B+ES<2TaeDD}u7Cwg|Q-v_6OKQ!jvktL}m##BjTB z=((Hm1#U0Uswic$My-GYX&51W-hU{OTHg0@nXs>2(z`CNdoJRKB*xFPb}I7l{WLvL zLDcS5J1+Zz35{II)+o+$v#%lUYDm)~ar@S~CTSoVZy|E?Wwbd5BPH-&3DP;2nyX$4 zT@_bxZxiN6=pbHNOxlqAs+-?p{K{u(-m;ph8Tb9FOHpH-ncl`vIC_ULv1f6lUGqMe z(2Mrb)49nto|v0cK98u`9MD87#cQ%R*cY#-Y^^DX-kmx5<7-#wQYsVLqGT&AjR{&q zN@u>Fh9<7p%UmvyAIh?1G0xi005J3N3*QGf|P0BR%BiT-Ty2 zZy#ecB4V5NR+>^Ji&4BeQSLk9Y_sIUPOEW@HL5eyD>3AAoo`oT?sg)MX)!@xaz~Ec zDrVhjGGODiEZ)O&qZ_wRjY{^rham->XM%nhIm{4_cMTKqw@L=T${rGx6+tNakGG;g^d|q1 zRF{#zhVV$c-}3Z}@enzA9(I_J7t@Sz8R1o@*vJOue$g*E>{a-TU+o^dl~*A@0!c`et`-Z7 zn@J?OwzW#k(wgQ*r6{kj=!&6m;msT6y|EyKFd#sMQ4pKwbV1E>fRyo_wOjR%ySmL6 ze2jBYSRwMW1ns*ns)?Jk_^x4!8aO4rE3C)qsx4*@xR9M-w?{N=+I^KiD>eOf*GKrywZm;X%ahK_w$azD0&1 zEHZJ=dUug(A9e!PgzV~^XgZ4 z(`LWu7Tr-N*qwX_lQuO&Hw>zSpf=NG!M;$FqWztZ1_G@FCfp&ks;L}At;$bJ=zZEh zl65`_aFj#j@=$8$dA_QvwZ!gekbQi)6PW|e&Sc0_q~@Z^w#5dWv_w@H3b+~SVdjI& z?H6r5ia*;wQ`V9Wi&B)GemSrF?3-$0i*a^{OGZyyYVfD{C8IiZEhlW!O~m-B*c%fh zUGsZ_UrS!@0EZC^q~+CNx=Lq&E=oJVDtb&R#7B0DxVNVtFv$2y2MYsS8;>F>e+(W8!$}loM^S-f6y7Vm>t^xwR-)E`W!b;}9I2 z3fE+2VvxSZv)LMmu}Y1!W(Q$JIkg~=rir=?NBMP6lS>}L zD!V6gu`o-0sl~3|RmI(q1Y$JYdU?;cS{|j!j&KDphsW`Gs7qcO3aT2NM{;7S%{BD& z^JrarI>yNmnv?_srk?1%AXtch9d&99iElKdFkMY0P#fnl0XrU98i)8PiZ9Ppr}bjs zi(y7^lMOB8a&yr0SKBMbzq!tQheXK6Io@xnYxRZ$oLMJA?f zv1sJkco9Hx(6ASvve#M;{I~@QT(h!W;H{VYf5&&HBErEwWkSC(xqY`lDSPYZKH|9D z-_(Pb#;t;unyHgm$zqC|Nz$quyVDR{828%6ZP(4De0kmyUXkFnnLKWV;`iI;hF^M* zi0F&KCgSNUS#%%Fke1-IqZL4(w*K?WE+;7og{V6o4YWW+&F6BboO$OOABu)&f9n+H zYxxtuLUYBMXA1rR{zFMyW#^ZjGYm>a$|=X`!kY^NH4QtDd>xDD<(%YD9>`U21x$jg zQO>C^PDT+yv7dI|oD!921m$MgISYU&0gTmSJ9v-;^mClZ+}sd{ntjpUSn`L;T~Ma zMj+mi*6_x^Xlm^0%dW2(g&;P;sIa9*^kWGX<Pw;$*A9~bP6gJHzp{UvBBOB!1=xEe4K)^ynMa+HGdW^0GIt#A4 zz4VKmJ$ScsVXGT;+5R7~&VO&Y1J3%-%Bs*OTMSahr2xMmy;n;u^YgU0$BJE5ZHD7* z-5r41zuv7vC5F=h%OrgS4jya5X=bON&C5%_nyRa+gI49K>oRA?Mhg!zTSJf-fN%T; z>6?DQ7*@Sde)G#=&o=Z*O*-!$oYFZZADO^gnKUYT#nYS+YiQJ4q}1Go_lj-QUNO3ZD* z>-+TkNBrcQEJ(36PO-EduCbc8wTnEQbK^&IuS*l&u6Ti~)cTECU1AFj72cv&mrd&Z zM+xyM3VeW$aslj7TxM8mdFB1-IY}%kA&=hFwj{%%9K1P+f}zGvc9`keTiF>Ax?(s$ zV~iLvya(N3+AF&D;EgKVpDO~0PqAcoOdPrcXX^!!41&?dT*(g**t@3fkdBEMm%tqh(;fz@?7(1-D0mAB*7Jy{*7L_LsK?+-J z)5&d?fNhGIYC7TiXST`N?!Uk`OJ%0w$ zc*!Vz#pRf{I#AlC&M@|l?$rw($^(+@3pL)Hi$zpJRG|*S*3!!$9G)$P;!)VZzI)Pq zesrE4#J%n$X2Q83$0o=A5f&7^tD$Qv4}GX6bT=J0X@U@SDp#EUS1o+1c?<_ zoh9nrme>i>9S^g$nh=#!y#bZzcgi6z`%$wQQjg$a2bkawYzEH}4L%YIr2HQ#$r)9( zW-k;=Yx%4|Vvbz24X88dPL3~5BwKjM2b9Bdz?M6c97tf6QxfLf>z>WXa*vb@q=P$U zS{y=WnB5VuJ`RT;s(s)HPX@l{jm2>moce;X9|TmUwNxrI$tYnFzr6|MF;?%6)WtOh zKnIpr&hYEtq^)k&f3ShoIt6N1a|WCta&035oRJ^Q%~HsAP!J+kZ6hAtu>-VM7q$@z zPc%FR^wopA0&w2!*-`Cn80nLU=hT_>P_Jmmyvw79_H|5X?UQm}_^!jCl!gx?4>9B< zI7~sZRnVH&l8^XkWJ2>-b1U?0sDwGCwY*Nac}f3D&>e4Q>VWR5@0mL+_D_5*xK&^H z2A{)DondA6TDk2U20ZE=w^-5p`vzJTwcoQeg)*>Ly~S zI3eu1SUShf)_K6-c^A*7<~w<-^>sw(Rc{<3&Ew$n-J5TUKROuxxwr%NP;po#2 zH|mO2F{|6MjC5DRgW`f4lDf)t1=e@h9KggYW)CKh`_f_#>ZyJTl=Ymq4^n3-WO(m{ zLc$)nJ8{$+3=pIYW={qhe$dB}{+nI7xgX4qcd6wvo{YIo46dBjZZ&b2v|oO+&stPOZu{AwF#V%AI!p56 z%iM%=5;+j%YOoQVF8t}@?a-|?y>Ik_>`kd5!M?8;p5vR{9>3o08?O9f@Q45q^5m(T$i`zQp7u-y0kHK znYQ_}jxta$MPyI&p;W9)KoWxxJ8kgw#4`49>FrqcbP8gaH+cIL-T#hD?;0#@qmXv$ zJ7)8BPo)uz%T&IhtzrhZuggB|sZM`T)Y{8NH>_W}-aV!n{YX}0o%OwWd@SJ}nTEv= zk=T@?$J}*Q((vKx#F%l_RJb4l-W)}>&vo9vVXQoI*PuAK-QNSY%73Lv#4eh4KJ+Su z#eBiu0($-|IJo~+K#>j4I_OoXD+_NLlzs@lSKOX@W!QPG73ocJ!f^eqhhvs!*u8e& ztc9nW4uSLy zz5f2TQRCUFpv?n)))Qq6S`H6lIjA{QzMgIrw&Oj4&Z(DN-8S*eDGicn+=8l6bz3ja zCm;YWp0lZf#{dFWpuEAIdP?gr_88~J6WAvG&uVw>l!iJeAYOI)&Nr0=A^ZNu%Qcy^ z!=&t8j)Y9gS<^Bg=ttZ9-Z$MsqAG|$ujO3kf1j6o#Pb_3*LUs@yxgV3^^!At|Cg8h zUtaFt;^oo<_spaPZ}4`mPEF<6-T^4#`2is!^cRxOL9Kbi>cJhhH2`BfOcUg?sR?o6 zj|9o)?|ZB6+*&WZrdO5i8XXRM)K%#*JXSYDZ?mi*LFlvGCafjN7xEOGy!LYO&lM6E zLo4$GKi5-n)15=Moan3^#Yq?1rZW9c!nWz{b|XqvWlB+B<_R2=nl zj$)QbEFcd};{rZKrS`h#nwpjJhOdY*Xlk;ETtHM->WAc1en~uTJ|ZnNSxAh&i?oK? z3ysYT7j}5@zEoF7b$@F-=o@XaCK>$1*C7X0ByC`DPzuHXXfRqB{dC7`+*sr(n0uOS zP%f7mJ62Q}OSOc-QprQi`fr9Yp@$^b z_eyM@Tj^vTp|5<&n%e#C8!hiuQ*RdQ&Q&2pWCHu=(K?*kYQLWaA5>r>%Sxn(v_w(w zC>Xa%U$T&ThJUTBQCHZ3@ePV?w*ERUc5T{T_(;&wyni8y`sKA`!{%kF&8|HMa72_v z5_}_D1L}ObtcCUvERefHaQy<`TS9;BzGFmYpyl2;Z&T(gRm)5M<_E2#0Wrod9<+zi zv2^{=$TZ_UYz5C2mgC^q^oHH@sPna#d0J2_4#&*LJNSw!LN_xV*cKQjhv#%xjM>$D zp;LEK^1UKLk02d(bqagj=6bttc1)PR%)G<_=eE}JS&BS@5Zl-}oHOnlza-HZM_)Nv zK_Y}U&iQr?iwJ8r(KU}wYgX_MugEm6DcapYG`1NJfh@7Y3q@rXa=H`AaJ$Ewuhb6? zWY!M9X%n*XJOC-BW_AE!1&~+X@)NKgzWo}s1P0&2fX=h0CxseN(a%T^;A3APbXM2| zu%R7jP1@Z6o`y!Z5y4-e0@Gm|=m&^)>UWi(Qag}R{k9KaQx*XKvGVN5Mj^`Ir2$@S z7C)>;I&bQ0b_F|@WX2pf?4rBFt)>o82ri){tYiqVDavvk=<=5h5h_MisrJiHYL&?h z_Nt2-u#t2{ad?8#*@F!1#YoE_OvlQTq%9TqS}5UG?d1?JsS+KLvza6+5X+&n{!~Me z_l|!lnU$&1Dk`-LyWn5lwDg*z8(atmbbLIMxHEcfrCH*X+1O_fouDlE(Co0a}jo5ANl?rGICESxxpQ%oVF;Wn^UI@z>*&m&l35# zg2d)zXkcG{LqHD_q6=3V_G~7q$n=o9-`p-5)S&YJ)HdY~|4rM(`}L=`2{2L`yHJz3 zU@Ixpb(wKNY*{In({Hsl<{xXAc+lEO&-u)+fwxNo=he&on?6=>@R$yGhxO#oL_NNZ zSoi3dWd1_I40w`8yuJ!OKm*cRvva1t-LEy)3k66o@=o;Tr#s<*RN#EmDsy>rtv{cj z%}+V0Zq+MCAGLRK8*NIOn&Q7q+Gm+6B7(a{prli%e)&H|<z?;VyJUb{m;_CwEWWQfR@kf2C2D{nR@-k6}Uykz&>VvB9Oa`D9NwnQ!^|L#H zsQbBCxCQHy&%Tl?41FzZimZKvVE*d68JcX$R)Xsu8;7Fvaxi$#8F;wH4V^lYfZz09 zK?+!u`XAKaQ3M_pClp#RoX~3}1Qo)vx_qmgqeu$J@Bv7nF3abBKM3EIG zo136`-MqU3$7X?LXu$qU!m-%UZk5%2@bX8M07Y;wtZ*)8b&6_IWN&__3l0PWgh@jXE3Y+U_2a zIUlW6=Nq|tEa5$7)_Cdzr*GG&y#9Cc#>EOruyqyodqfBd2f9>!#)IjAuYL)<`xioQ zS-g^uSu&X%D4V2s0}(%7v-EA)+0d5SHO*u>zBXLs>>M)d3uFT3J-c>qN&gi+_sonT zr}kSe2@cFJ2jJiM8qdoJ*%NH)UcRm6nrw7!yG?VO=ZAYt(G|?LLqsb4ETo1`2zhhf z#%9+~eZYcQF5O7ogYy%m<`h>M~0ou3eE${kThXm9$3FoyW*AVN1Nn(+jyk z3f|7p1>>ZFE|@5$!h9Hd&h@E-sVQ-vKpHB}w}YKsT^{f&zZR2%x>32*1KOa0%6V@b zvZ8TD48CCr=yq`QKZ*z{8;g|Awn`;UG5|CwC2eTWc4H9S%4AHmtvbp2yMG!t~~-nA`ddv>$s z(^oXWe*+clc<#mJf&?Ibb(=hS<~wkb+twh)W@%j5eO(H~EaJfny8xj*bMZUSu1C=0 z{Q_m5l1cu6)1K@hr(YvvH|rk8xsjORHP?Z7(=F8Sw>0-_&R^2p6YN!SyuU=DC@Ls+ zRcxNTv)Q)^pEqa08p5vY1T?aWTZDA?Vmj}=zc>Ofi)TjYpPB7?Ksk=tkG`;L3bM`R z%8Nu|lOCA>xhuEx_VRl|M6<^p;WJgJgA8Gt9ceZ38L$30hv~`4kMWKU_PK0{PIcRzYPz{GIPD`xmQ0&H3!>FHvcm&a^ zmic;Zy)1}de33v~d{kw7DQc*3it@g{b;iGtm;fsJi;vy2q@7>@Z*y3MKniGmf73Ci{i!(yfZ`og;T02QM z9LDWyd40dI5wut0t_xW?n{3T#p}zR_rCcViy)7{DukPZf0N z8Auh%o{CN{iA@~^Se$Uh;MTB6?$@djF=weu&DO^*HSYscSJr>cwT|w{wU|FLfVmAiIjzU!fOEkA z-<+erVb;n6J`3&#up|B3$IRf5+beknT|1-$zWgnnPum?g1=; zm1Y1b^c|pc1TTkwj@)J?E&E@m45CA-n*TAt?*Fi3lZ)6t1iE@m0sofje%ohze#V)NZngcUx{rnZMRnix zx+tcsR^}0M1Ql0N5377aSCK;n zYn=Wwj?%NbWTdElP|{-&bg5qDA%(-S)MjyN6P!m5BIfL$;f#V1=b8kn*n2I08<%ph zv=7LkcdWg9TfzWShQ|!da3onJuQf1ghQCU+R|k_Sx8RZ;K07Qju1|Dm#*X-A_oxHAe{v{x#IdW_V z)yzkdxl!q7@h43f2KJ%muP4L1rvjY2`%Tt-gBhDkZ&G;BJtacf|upups^?c!2Jy;I}Mla!wL{!!8) zJ;|@HmkQOrwv%%@49k(mu6RF>sN&+spElSZfnfvmvERC^KS#EXrYc_sDdzg0QVh>m zCJ2(*n$03g|IZ)M5*6?_Fd&3J@+2ZXcVhxbh`}sWhbik7I>-MseeH38mi^ zo4T8Y83!9$aptu@#{%)+5bqP>~bqr z{4OzIlER{v6lHhpoCx4hFg5$Gtp_GrRBN<{nx-ED6<9PwoizaF7A;-u{y4)m{EigV z!TG5!t$$nP>ZzJY!ll;UU8y-oa7q)*wCsC>z)|N!HOxbt!_;#dhOH=nX=$3 z^e=`h$p;A{m8KqYN-Gq9&u3&+2^mK1yp5w!KlIl$foaIqQ4q< zf(aZ5EwFrB^w^m-zSPS-U~+MmdLthZcB9NU|6UC?#Z39YYeuo2(T=T)C0T7Uij?gv zzjJZPe<@O=b;l%O<_N^%Qh8!&pi=8gE{8MegT$^Ql+<~Xoei)TgE3n9i{Jjetiyq- zPWTHzg8|h~4(XA;#dAZLFkryz z$yrCf-iAwg;#i=^cYY3nF-`smM{ebu@P_wY{>tz+v3v1gKF(s^;LPa$x1=C7c!>=J z$zy<1*yW^y5xRbVwD!2b#w4Lox}p)lG<5pkVH(c0@JSt(JYmv#Sr*huWsG{>Na447 z9zJ&=U1mJf39#2Bqfp9@5dZu^RY8E}_~aO}ofAyn^$eAnAGg&X>X-$x-I%Z|CeSd? za6Vo|ZcQ0M=sv53c$moyeF3f8Qj~DrKdof81o>b%=XXJVq5f}zd|%zkx}|byw?{(@ z_Pev=9or;o`IJ`8lwRbdJxy0QNZ6wu`%jV$HA*lAaD#6$xo3FN7(N4;SqoS%+7!0v zf+R#Z^PdH6RTMy#gFm;9hY#_EZ0aP=aOZmad zDSDgZ!E0%kTqp@`$~Hh>_CZj&pFC_((8X*GS+|5$MW?$9Ybqg>`tVu9t$HxZ%u;i( zIyhfi3NF1hm$0VA@q9dZJ$lpQQAju=@=fU5uECrV4jL8LN*52@<%uHgJOdS|!>SAT z_^Sv_``w)M_@<`zCX#i=QX*B7=u^)&DP)JZoYun5(I0N8i{m^PuM4>LEfpU1-20^% zmLy<qw8uVL;r8RoED4d-L!pvCnQJf-%BRJ;%yV6yAMjbZQ{e2<%{0D1lUaMjc9n{mC6gnj(V@x ziSw~3q2CybVanv#TvU@Nr9FOWxX|>(vgX5!-uC$6WefTQYfX#hk+JV&2qYwx3`DUDD!Y`NUId>`_F8BYC`!Z9b5= zw+))<%`>pcMWL0r(w;7&VJs;2~j)}*x0&+)NBdAY~<+z;Kux}*+1yT~xh{vk_ttTdk<9J{SM zV7~z}!hTnXp)CtO>>WMpEIWY*bo01M4I>1vBkq|om!Fd1 o83wu0w=|c%Efzs5oY`c#InbOF$o@eCI4gAJlHSF<^VYxoA5@8m%m4rY literal 0 HcmV?d00001 diff --git a/settings/gui-settings.el b/settings/gui-settings.el index a6936af0..96e7eaf0 100644 --- a/settings/gui-settings.el +++ b/settings/gui-settings.el @@ -160,32 +160,139 @@ DISPLAY-START: `integer', e.g. 3820" (my-view-gnuplot)))) (use-package awesome-tray - :defer 0.2 + ;;:after my-theme + :hook (after-init . awesome-tray-mode) :config (setq awesome-tray-info-padding-right 1) (setq awesome-tray-buffer-name-buffer-changed t) (setq awesome-tray-mode-line-active-color "#008b8b") (setq awesome-tray-mode-line-inactive-color "#333333") - ;; see available modules in `awesome-tray-module-alist' + (setq awesome-tray-file-path-show-filename nil) + (setq awesome-tray-file-path-truncated-name-length 2) + (setq awesome-tray-file-path-full-dirname-levels 2) + + ;; flycheck custom string (defun my-awesome-tray-module-flycheck-info () - (string-trim (flycheck-mode-line-status-text))) + (let ((flycheck-mode-line-prefix "fc")) + (string-trim (flycheck-mode-line-status-text)))) + + ;; flycheck color string (defface my-awesome-tray-module-flycheck-face (list (list t (list :foreground (face-foreground 'font-lock-warning-face)))) "Flycheck module face." :group 'awesome-tray) + + ;; flycheck add as module (add-to-list 'awesome-tray-module-alist - '("flycheck" . (my-awesome-tray-module-flycheck-info my-awesome-tray-module-flycheck-face))) - (setq awesome-tray-active-modules ;; circe parent-dir battery + '("flycheck" . (my-awesome-tray-module-flycheck-info my-awesome-tray-module-flycheck-face))) + + ;; flymake custom string + (defun my-awesome-tray-module-flymake-info () + "A module for showing Flymake state." + ;; Parts of the code are from doom-modeline package + (with-demoted-errors + "" + (if (and (featurep 'flymake) flymake--state) + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (disabledp (and disabled (null running))) + (waiting (cl-set-difference running reported))) + (when-let + ((flymake-state + (cond + (waiting "*") + ;;(waiting "⏳") + ((null known) "❔") + (disabledp "❕") + (t (let ((.error 0) + (.warning 0) + (.note 0)) + (cl-loop + with warning-level = (warning-numeric-level :warning) + with note-level = (warning-numeric-level :debug) + for state being the hash-values of flymake--state + do (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + (let ((num (+ .error .warning .note))) + (if (> num 0) + (string-clean-whitespace + (string-join + (list + (when (>= .error 0) + ;; "🔴:" + (concat "" (propertize (number-to-string .error) 'face 'awesome-tray-module-flymake-error))) + (when (>= .warning 0) + ;; "🟠:" + (concat "" (propertize (number-to-string .warning) 'face 'awesome-tray-module-flymake-warning))) + (when (>= .note 0) + ;; "🔵:" + (concat "" (propertize (number-to-string .note) 'face 'awesome-tray-module-flymake-note))) + ) + ":" ;; " " joining string + )) + "" ;; "🟢" no error/warning/note + ))))))) + flymake-state))))) + + ;; flycheck add as module + ;; (add-to-list 'awesome-tray-module-alist + ;; '("flymake" . (my-awesome-tray-module-flymake-info nil))) + (add-to-list 'awesome-tray-module-alist + '("flymake" . (my-awesome-tray-module-flymake-info my-awesome-tray-module-flycheck-face))) + + ;; doc-view custom string + (defun my-awesome-tray-module-doc-view-page-info () + (with-demoted-errors + "" + (cond + ((and (derived-mode-p 'eaf-mode) + (string-equal eaf--buffer-app-name "pdf-viewer")) + (eaf-call-sync "execute_function" eaf--buffer-id "get_progress")) + ((featurep 'pdf-view) + (let ((state + (cond ((derived-mode-p 'pdf-view-mode) (format "%d/%d" (eval '(pdf-view-current-page)) (pdf-cache-number-of-pages))) + (t "")))) + state)) + ((featurep 'doc-view) + (let ((state + (cond ((derived-mode-p 'doc-view-mode) (format "%d/%d" (eval '(doc-view-current-page)) (doc-view-last-page-number))) + (t "")))) + state)) + (t "")))) + (defun my-awesome-tray-module-location-or-page-info () + "Show Location or PDF page depends on current mode." + (let ((page-info (my-awesome-tray-module-doc-view-page-info))) + (if (string= page-info "") + (awesome-tray-module-location-info) + page-info))) + + ;; doc-view add as module + (add-to-list 'awesome-tray-module-alist + '("location-or-page" . (my-awesome-tray-module-location-or-page-info awesome-tray-module-location-face))) + + ;; see available modules in `awesome-tray-module-alist' + (setq awesome-tray-active-modules '("file-path" "buffer-name" "buffer-read-only" - "location" + ;; "location" + "location-or-page" "mode-name" "flycheck" + "flymake" "git")) (set-face-foreground 'awesome-tray-module-file-path-face (face-foreground 'font-lock-keyword-face)) (set-face-foreground 'awesome-tray-module-buffer-name-face (face-foreground 'font-lock-constant-face)) (set-face-foreground 'awesome-tray-module-location-face (face-foreground 'vertical-border)) + (set-face-foreground 'awesome-tray-module-location-or-page-face (face-foreground 'vertical-border)) (set-face-foreground 'awesome-tray-module-mode-name-face (face-foreground 'font-lock-string-face)) (defun my-awesome-tray-module-file-path-info-advice (&rest args) "If file path is same as buffer name omit output." @@ -201,7 +308,7 @@ DISPLAY-START: `integer', e.g. 3820" (concat (buffer-name) awesome-tray-buffer-name-buffer-changed-style) (buffer-name)) (format "%s" (buffer-name)))) - (awesome-tray-mode 1)) + ) (use-package doc-view :defer t @@ -233,6 +340,7 @@ DISPLAY-START: `integer', e.g. 3820" (use-package dashboard :delight (dashboard-mode "Db") ;; "\u01F153 + :hook (after-init . dashboard-setup-startup-hook) ;; activate `dashboard' :config ;; see `dashboad-widget' (setq dashboard-icon-type 'all-the-icons) @@ -461,9 +569,7 @@ See also `dashboard-insert-section' for the sequence of elements." `(lambda (&rest _) (switch-to-buffer ,el)) (abbreviate-file-name el))) (add-to-list 'dashboard-item-generators '(custom . dashboard-insert-custom)) - - ;; activate `dashboard' - (dashboard-setup-startup-hook)) + ) ;; too slow if all levels are displayed for a medium large file, ;; therefore not all levels and if toggled on and mode default off