ido-vertical-mode.el-0.1.6/0000755000175000017500000000000012470151647015262 5ustar dogslegdogslegido-vertical-mode.el-0.1.6/ido-vertical-mode.el0000644000175000017500000003116312470151647021114 0ustar dogslegdogsleg;;; ido-vertical-mode.el --- Makes ido-mode display vertically. ;; Copyright (C) 2013, 2014 Steven Degutis ;; Author: Steven Degutis ;; Maintainer: Daniel Gempesaw ;; Version: 0.1.5 ;; Keywords: convenience ;; URL: https://github.com/gempesaw/ido-vertical-mode.el ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Makes ido-mode display prospects vertically ;;; Code: (require 'ido) ;;; The following three variables and their comments are lifted ;;; directly from `ido.el'; they are defined here to avoid compile-log ;;; warnings. See `ido.el' for more information. ;; Non-nil if we should add [confirm] to prompt (defvar ido-show-confirm-message) ;; Remember if current directory is non-readable (so we cannot do completion). (defvar ido-directory-nonreadable) ;; Remember if current directory is 'huge' (so we don't want to do completion). (defvar ido-directory-too-big) (defvar ido-vertical-decorations '("\n-> " ; left bracket around prospect list "" ; right bracket around prospect list "\n " ; separator between prospects, depends on `ido-separator` "\n ..." ; inserted at the end of a truncated list of prospects "[" ; left bracket around common match string "]" ; right bracket around common match string " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]" "\n-> " ; left bracket around the sole remaining completion "" ; right bracket around the sole remaining completion ) "Changing the decorations does most of the work for ido-vertical This sets up newlines and arrows before, between, and after the prospects. For additional information, see `ido-decorations'.") (defvar ido-vertical-old-decorations nil "The original `ido-decorations' variable We need to keep track of the original value so we can restore it when turning `ido-vertical-mode' off") (defvar ido-vertical-old-completions nil "The original `ido-completions' function We need to keep track of the original value of `ido-completions' so we can restore it when turning `ido-vertical-mode' off") (defgroup ido-vertical-mode nil "Make ido behave vertically." :group 'ido) (defcustom ido-vertical-show-count nil "Non nil means show the count of candidates while completing." :type 'boolean :group 'ido-vertical-mode) (defvar ido-vertical-count-active nil "Used internally to track whether we're already showing the count") (defcustom ido-vertical-define-keys 'C-n-and-C-p-only "Defines which keys that `ido-vertical-mode' redefines." :type '(choice (const :tag "Keep default ido keys." nil) (const :tag "C-p and C-n are up & down in match" C-n-and-C-p-only) (const :tag "C-p/up and C-n/down are up and down in match." C-n-C-p-up-and-down) (const :tag "C-p/up, C-n/down are up/down in match. left or right cycle history or directory." C-n-C-p-up-down-left-right)) :group 'ido-vertical-mode) (defface ido-vertical-first-match-face '((t (:inherit ido-first-match))) "Face used by Ido Vertical for highlighting first match." :group 'ido-vertical-mode) (defface ido-vertical-only-match-face '((t (:inherit ido-only-match))) "Face used by Ido Vertical for highlighting only match." :group 'ido-vertical-mode) (defface ido-vertical-match-face '((t (:inherit font-lock-variable-name-face :bold t :underline t))) "Face used by Ido Vertical for the matched part." :group 'ido-vertical-mode) ;; borrowed from ido.el and modified to work better when vertical (defun ido-vertical-completions (name) ;; Return the string that is displayed after the user's text. ;; Modified from `icomplete-completions'. (let* ((comps ido-matches) (ind (and (consp (car comps)) (> (length (cdr (car comps))) 1) ido-merged-indicator)) (lencomps (length comps)) (additional-items-indicator (nth 3 ido-decorations)) (comps-empty (null comps)) first) ;; Keep the height of the suggestions list constant by padding ;; when lencomps is too small. Also, if lencomps is too short, we ;; should not indicate that there are additional prospects. (if (< lencomps (1+ ido-max-prospects)) (progn (setq additional-items-indicator "\n") (setq comps (append comps (make-list (- (1+ ido-max-prospects) lencomps) ""))))) (when ido-use-faces (dotimes (i ido-max-prospects) (setf (nth i comps) (substring (if (listp (nth i comps)) (car (nth i comps)) (nth i comps)) 0)) (when (string-match name (nth i comps)) (ignore-errors (add-face-text-property (match-beginning 0) (match-end 0) 'ido-vertical-match-face nil (nth i comps)))))) (if (and ind ido-use-faces) (put-text-property 0 1 'face 'ido-indicator ind)) (when ido-vertical-show-count (setcar ido-vertical-decorations (format " [%d]\n-> " lencomps)) (setq ido-vertical-count-active t)) (when (and (not ido-vertical-show-count) ido-vertical-count-active) (setcar ido-vertical-decorations "\n-> ") (setq ido-vertical-count-active nil)) (if (and ido-use-faces comps) (let* ((fn (ido-name (car comps))) (ln (length fn))) (setq first (format "%s" fn)) (if (fboundp 'add-face-text-property) (add-face-text-property 0 (length first) (cond ((> lencomps 1) 'ido-vertical-first-match-face) (ido-incomplete-regexp 'ido-incomplete-regexp) (t 'ido-vertical-only-match-face)) nil first) (put-text-property 0 ln 'face (if (= lencomps 1) (if ido-incomplete-regexp 'ido-incomplete-regexp 'ido-vertical-only-match-face) 'ido-vertical-first-match-face) first)) (if ind (setq first (concat first ind))) (setq comps (cons first (cdr comps))))) ;; Previously we'd check null comps to see if the list was ;; empty. We pad the list with empty items to keep the list at a ;; constant height, so we have to check if the entire list is ;; empty, instead of (null comps) (cond (comps-empty (cond (ido-show-confirm-message (or (nth 10 ido-decorations) " [Confirm]")) (ido-directory-nonreadable (or (nth 8 ido-decorations) " [Not readable]")) (ido-directory-too-big (or (nth 9 ido-decorations) " [Too big]")) (ido-report-no-match (nth 6 ido-decorations)) ;; [No match] (t ""))) (ido-incomplete-regexp (concat " " (car comps))) ((null (cdr comps)) ;one match (concat (concat (nth 11 ido-decorations) ;; [ ... ] (ido-name (car comps)) (nth 12 ido-decorations)) (if (not ido-use-faces) (nth 7 ido-decorations)))) ;; [Matched] (t ;multiple matches (let* ((items (if (> ido-max-prospects 0) (1+ ido-max-prospects) 999)) (alternatives (apply #'concat (cdr (apply #'nconc (mapcar (lambda (com) (setq com (ido-name com)) (setq items (1- items)) (cond ((< items 0) ()) ((= items 0) (list additional-items-indicator)) ; " | ..." (t (list (nth 2 ido-decorations) ; " | " (let ((str (substring com 0))) (if (and ido-use-faces (not (string= str first)) (ido-final-slash str)) (put-text-property 0 (length str) 'face 'ido-subdir str)) str))))) comps)))))) (concat ;; put in common completion item -- what you get by pressing tab (if (and (stringp ido-common-match-string) (> (length ido-common-match-string) (length name))) (concat (nth 4 ido-decorations) ;; [ ... ] (substring ido-common-match-string (length name)) (nth 5 ido-decorations))) ;; list all alternatives (nth 0 ido-decorations) ;; { ... } alternatives (nth 1 ido-decorations))))))) (defun ido-vertical-disable-line-truncation () "Prevent the newlines in the minibuffer from being truncated" (set (make-local-variable 'truncate-lines) nil)) (defun turn-on-ido-vertical () (if (and (eq nil ido-vertical-old-decorations) (eq nil ido-vertical-old-completions)) (progn (setq ido-vertical-old-decorations ido-decorations) (setq ido-vertical-old-completions (symbol-function 'ido-completions)))) (setq ido-decorations ido-vertical-decorations) (fset 'ido-completions 'ido-vertical-completions) (add-hook 'ido-minibuffer-setup-hook 'ido-vertical-disable-line-truncation) (add-hook 'ido-setup-hook 'ido-vertical-define-keys)) (defun turn-off-ido-vertical () (setq ido-decorations ido-vertical-old-decorations) (fset 'ido-completions ido-vertical-old-completions) (remove-hook 'ido-minibuffer-setup-hook 'ido-vertical-disable-line-truncation) (remove-hook 'ido-setup-hook 'ido-vertical-define-keys)) (defun ido-vertical-next-match () "Call the correct next-match function for right key. This is based on: - Different functions for completing directories and prior history. " (interactive) (cond ((and (boundp 'item) item (eq item 'file)) (ido-next-match-dir)) (t (next-history-element 1)))) (defun ido-vertical-prev-match () "Call the correct prev-match function for left key. This is based on: - Different functions for completing directories and prior history. " (interactive) (cond ((and (boundp 'item) item (eq item 'file)) (ido-prev-match-dir)) (t (previous-history-element 1)))) (defun ido-vertical-define-keys () ;; C-n/p is more intuitive in vertical layout (when ido-vertical-define-keys (define-key ido-completion-map (kbd "C-n") 'ido-next-match) (define-key ido-completion-map (kbd "C-p") 'ido-prev-match) (define-key ido-completion-map (kbd "M-p") 'ido-toggle-prefix)) (when (memq ido-vertical-define-keys '(C-n-C-p-up-and-down C-n-C-p-up-down-left-right)) (define-key ido-completion-map (kbd "") 'ido-prev-match) (define-key ido-completion-map (kbd "") 'ido-next-match)) (when (eq ido-vertical-define-keys 'C-n-C-p-up-down-left-right) (define-key ido-completion-map (kbd "") 'ido-vertical-prev-match) (define-key ido-completion-map (kbd "") 'ido-vertical-next-match))) ;;;###autoload (define-minor-mode ido-vertical-mode "Makes ido-mode display vertically." :global t (if ido-vertical-mode (turn-on-ido-vertical) (turn-off-ido-vertical))) (provide 'ido-vertical-mode) ;; Local Variables: ;; indent-tabs-mode: nil ;; End: ;;; ido-vertical-mode.el ends here ido-vertical-mode.el-0.1.6/Cask0000644000175000017500000000020712470151647016065 0ustar dogslegdogsleg(source melpa) (source marmalade) (package-file "ido-vertical-mode.el") (depends-on "ido") (development (depends-on "ert-runner")) ido-vertical-mode.el-0.1.6/README.md0000644000175000017500000000577512470151647016557 0ustar dogslegdogsleg# ido-vertical-mode.el [![Build Status](https://travis-ci.org/gempesaw/ido-vertical-mode.el.svg?branch=master)](https://travis-ci.org/gempesaw/ido-vertical-mode.el) Makes ido-mode display vertically. ![screenshot.gif](screenshot.gif) This mode takes care of some caveats that are otherwise ugly to store in your init file. You may also be interested in [`ido-ubiquitous`](https://github.com/DarwinAwardWinner/ido-ubiquitous) and [`smex`](https://github.com/nonsequitur/smex). ## Install via [MELPA Stable](http://stable.melpa.org/#/) or [marmalade](http://marmalade-repo.org) `M-x` `package-install` `ido-vertical-mode` If you use MELPA instead of MELPA Stable, there's no guarantee that you'll get something that works; I've accidentally broken master before and will unfortunately probably do it again :( ## Turn it on (require 'ido-vertical-mode) (ido-mode 1) (ido-vertical-mode 1) Or you can use `M-x ido-vertical-mode` to toggle it. ## Customize #### Count Show the count of candidates: ```elisp (setq ido-vertical-show-count t) ``` #### Colors Make it look like @abo-abo's [blog post](http://oremacs.com/2015/02/09/ido-vertical/): ```elisp (setq ido-use-faces t) (set-face-attribute 'ido-vertical-first-match-face nil :background "#e5b7c0") (set-face-attribute 'ido-vertical-only-match-face nil :background "#e52b50" :foreground "white") (set-face-attribute 'ido-vertical-match-face nil :foreground "#b00000") (ido-vertical-mode 1) ``` Make it look like the screenshot above: ```elisp (setq ido-use-faces t) (set-face-attribute 'ido-vertical-first-match-face nil :background nil :foreground "orange") (set-face-attribute 'ido-vertical-only-match-face nil :background nil :foreground nil) (set-face-attribute 'ido-vertical-match-face nil :foreground nil) (ido-vertical-mode 1) ``` Reset the faces to their defaults: ```elisp (set-face-attribute 'ido-vertical-first-match-face nil :background nil :foreground nil) (set-face-attribute 'ido-vertical-only-match-face nil :background nil :foreground nil) (set-face-attribute 'ido-vertical-match-face nil :background nil :foreground nil) (ido-vertical-mode 1) ;; optionally (setq ido-use-faces nil) ``` #### Keybindings Since the prospects are listed vertically, it makes sense to use `C-n/C-p` to navigate through the options. These are added to the `ido-completion-map` by default (and `ido-toggle-prefix`, previously on `C-p`, is moved to `M-p`). You also have the option to rebind some or all of the arrow keys with `ido-vertical-define-keys`: (setq ido-vertical-define-keys 'C-n-C-p-up-and-down) to use up and down to navigate the options, or (setq ido-vertical-define-keys 'C-n-C-p-up-down-left-right) to use left and right to move through the history/directories. ido-vertical-mode.el-0.1.6/.gitignore0000644000175000017500000000000612470151647017246 0ustar dogslegdogsleg.cask ido-vertical-mode.el-0.1.6/test/0000755000175000017500000000000012470151647016241 5ustar dogslegdogslegido-vertical-mode.el-0.1.6/test/ido-vertical-mode-test.el0000644000175000017500000001244112470151647023046 0ustar dogslegdogsleg(require 'ert) (require 'ido) (require 'ido-vertical-mode) (ido-mode 1) (ido-vertical-mode 1) ;;; invoke ido-switch-buffer to initialize ido variables that would ;;; otherwise throw void error (execute-kbd-macro [24 98 return] 1) (ert-deftest ivm-should-install-decorations () (ido-vertical-mode 1) (let ((prospects (ido-completions ""))) (should (string-match "->" prospects)) (should (string-match "\n" prospects)))) (ert-deftest ivm-should-indicate-more-results () (ido-vertical-mode 1) (let ((buffers (mapcar (lambda (num) (get-buffer-create (format "ivm-test-buffer-%s" num))) (number-sequence 1 11))) prospects) (save-window-excursion (execute-kbd-macro [24 98 ?i ?v ?m ?- ?t ?e ?s ?t]) (setq prospects (ido-completions "ivm-test")) (should (string-match "\.\.\.$" prospects))) (mapc 'kill-buffer buffers))) (ert-deftest ivm-should-properly-disable-itself () (ido-vertical-mode 1) (ido-vertical-mode -1) (should (not (string-match "\n" (ido-completions ""))))) (ert-deftest ivm-should-show-confirm-dialog () (ido-vertical-mode 1) (let* ((no-results [24 98 ?t ?h ?i ?s ?s ?h ?o ?u ?l ?d ?n ?o ?t ?m ?a ?t ?c ?h]) (confirm (vconcat no-results [return]))) (execute-kbd-macro no-results 1) (should (string-match "No Match" (buffer-name (current-buffer)))) (kill-buffer (current-buffer)) (execute-kbd-macro confirm 1) (should (string-match "Confirm" (buffer-name (current-buffer)))) (kill-buffer (current-buffer)))) (ert-deftest ivm-should-handle-fontified-candidates () (let ((ido-matches '((#(".ido.last" 1 4 (face ido-vertical-match-face)) "/Users/JS/") "" (#("200-ido.el" 4 7 (face ido-vertical-match-face)) "/Users/JS/.emacs.d/configs/" "~/.emacs.d/configs/")))) (should (ido-vertical-completions "ido")))) ;;; The following tests are pretty fragile. ido-vertical-completions ;;; depends on the global value of ido-matches, which we set. It ;;; returns the completions as a string, and we can check the text ;;; properties of particular characters in the return to see that they ;;; have the expected faces. (ert-deftest ivm-should-highlight-matched-candidates () (let* ((ido-use-faces t) (ido-matches '("ido" "ido-vertical")) (ido-query (ido-vertical-completions "ido")) (first-comp-pos (string-match "ido" ido-query)) (ido-query-first-comp-face (get-text-property first-comp-pos 'face ido-query)) (ido-query-second-comp-face (get-text-property (+ first-comp-pos 7) 'face ido-query)) (debug nil)) (when debug (prin1 ido-query)) (should (and (memq 'ido-vertical-match-face ido-query-first-comp-face) (memq 'ido-vertical-first-match-face ido-query-first-comp-face))) (should (and (memq 'ido-vertical-match-face `(,ido-query-second-comp-face)) (eq nil (get-text-property 19 'face ido-query)))))) (ert-deftest ivm-should-not-highlight-without-ido-use-faces () (let* ((ido-use-faces nil) (ido-matches '("ido")) (ido-query (ido-vertical-completions "ido")) (first-comp-pos (string-match "ido" ido-query)) (ido-query-first-comp-face (get-text-property first-comp-pos 'face ido-query)) (debug nil)) (when debug (prin1 ido-query)) (should (eq nil ido-query-first-comp-face)))) (ert-deftest ivm-should-not-highlight-missed-candidates () (let* ((ido-use-faces t) (ido-matches '("ido" "ido-vertical")) (ido-query (ido-vertical-completions "no results")) (first-comp-pos (string-match "ido" ido-query)) (second-comp-pos (+ 7 first-comp-pos)) (ido-query-first-comp-face (get-text-property first-comp-pos 'face ido-query)) (ido-query-second-comp-face (get-text-property second-comp-pos 'face ido-query)) (debug nil)) (when debug (prin1 ido-query)) (should (memq 'ido-vertical-first-match-face `(,ido-query-first-comp-face))) (should (and (eq nil ido-query-second-comp-face))))) (ert-deftest ivm-should-highlight-only-candidate () (let* ((ido-use-faces t) (ido-matches '("ido")) (ido-query (ido-vertical-completions "no results")) (first-comp-pos (string-match "ido" ido-query)) (ido-query-first-comp-face (get-text-property first-comp-pos 'face ido-query)) (debug nil)) (when debug (prin1 ido-query)) (should (memq 'ido-vertical-only-match-face `(,ido-query-first-comp-face))))) (ert-deftest ivm-should-show-count () (let* ((ido-matches '("1" "2" "3" "4" "5")) (ido-vertical-show-count t) (ido-use-faces nil) (query (ido-vertical-completions ""))) ;; Exposes a bug where we were toggling the count on and off ;; instead of keeping it on (setq query (ido-vertical-completions "")) (should (string= " [5]\n" (substring query 0 5))) ;; Count should update when filtering completions (setq ido-matches '("1")) (setq query (ido-vertical-completions "1")) (should (string= " [1]" (substring query 0 4))))) (ert-deftest ivm-should-turn-off-count () (let* ((ido-matches '("1")) (ido-vertical-show-count nil) (query (ido-vertical-completions ""))) (should (string= "\n-> " (substring-no-properties query 0 4))))) ido-vertical-mode.el-0.1.6/.ert-runner0000644000175000017500000000002712470151647017363 0ustar dogslegdogsleg-l ido-vertical-mode.elido-vertical-mode.el-0.1.6/.travis.yml0000644000175000017500000000054012470151647017372 0ustar dogslegdogsleglanguage: emacs-lisp before_install: - curl -fsSkL https://gist.github.com/rejeep/7736123/raw > travis.sh && source ./travis.sh - export PATH="/home/travis/.cask/bin:$PATH" - export PATH="/home/travis/.evm/bin:$PATH" - evm install $EVM_EMACS --use - cask env: - EVM_EMACS=emacs-24.4-bin script: - emacs --version - cask exec ert-runner ido-vertical-mode.el-0.1.6/screenshot.gif0000644000175000017500000012544312470151647020137 0ustar dogslegdogslegGIF89avc QOT 8 !$Q!$>"%n$#-%$0$ 1!11#325S2v16Y17G17xR7#085188L89X89n87=99?9#91 ;o3;kd;:O$2@AdAS0C0@YQƏNWht\lƓYdiǔǗb|ڜB͟foңwN^ѫjʍȭxփ̰Xܶ~ȸҹþbٿۮ˽cɫ˯̒uuɣձך؏غݻޅ! NETSCAPE2.0!2,G*\ȰÇ#JHŋ3jȱǏGrɓ(S\ɲ˗0cʜI͛8sɳϟ@$9RѣH*]ʴӧP֋JիXjjׯ`ÊnٰeϪ]6YlKm]w󎝋._l oۻ -x1V"GB7#01e27nvY&9IYװc˞-KXpٞͻ_wE|T GGdE&H:t!#,l"E2WuH`'ոEnqg p8fE3 38kЗރF6wWda(,KBΆ^m :r>Sd4d48jxb)xdF2y`hTi%P6%)y]n0168 6Q^l.ڀ\n)%+S<[Ny6(*,dOReU~駓^Hi7^j%.$j:jf$J1ntRa&fhH1IC|it첞P앜$a;VkJܮ)+LR*R-۴#8 5HᢚB6%(," 7pG̰tIŁh2<]|R j|I!LLK!H@,4d@ʉꞛ 릋`Jh@4w d5p+0CfCntmyXqnC>!l CO>!h6~kAH- 22. <59l /^3+nz_:m{氳8_{c^p #2p82¶'rI<#6f/N`6Gs ;3 8;ӿߏ_?N+tC57:a8_];tOG!Q y%nٰ0{/<**c3 t3x5pyw"ꮸ m_H,NڴPzF/ 0wIHpFt("p><$%#YA: (1uġb1_*d1# v SLzGL2@9;f&At&# j{_L&, XgPH4R1Og-1IP'̡3 M.th1 ZE16э],`J3!$w[V8)(5 PDԲ=eHo q,8 'AeYg AV3|2RUR3QBNlPT"6R5*PT6-je5KSZXB@X! W^ 3A"H%JQE` N;a NbXtKZWU*v[jE0thC_kzq V 5|@_!c-S"wYSw ]'xݨ//cC5XUc@+'?%Ԭ H~2*GЅr{dCt-eD+6 g$#eXd<љq2bq A05,g,c'FS8Ʌ.ti=kZF2mYgQ-lh؞c牣؅2fm07]sCP9*CQ:!nuѳJQmiwΞ6 bCv]id/<4KijlBS,((d?7J&9].$e _ycs@?>>9NFw[}+·;`ғ=1Awv Ӣ.4N붫pO6d=zg{ ~~g»]n OOλ}onwG~^yC|Cy^~_Azij~'i! {7g~szO?Ǿ}wֿ|;?~/}?~?g~7'}xsw}W~'ԧG~ zvvw| t'!@f$u-ht(t2xB6(Z'DXFxHhTFLKD(OTTXZSȅYJ؄\ȄW8cx[Pfjel8Gu8Qh|؇~8Xx؈8Xx؉8 x؊ȉ8Xxh؋XxȘH،XxظԘ؍8X(明긎ɈXxˈ؏8y ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~4Zzڨ:Zzj}x:Zzڪ:Zz';zJ~)[ ` " ϊך:ʇ g* ŠR0ZJJZJ p[{ . +{+ k$K庇ZA@pz@ҠگI[U@JyP y0j S`KV[ cp P:$+pY:P;[@>g,P9{k P; >{<+CKjt{.px;q0 \ 0n pvۼ  p⻻ _н 0zƻ0{k*л[盾+{kбkj +k ܱ+ l{<[l{j>kf >K `{ @ċ@K[>@[˪ f̴J+л%oP `t$ǁ6`ܐ0ǪP3| ` c ȏ\u|n  [Jɝ | @ɫǦ^[ Ȭʰ|Zp̗ l̔o0pk x9l@l :KI,ŗٚAiPg:ˮ-]l^ċelgp P͢:sz@ $@7<5=nz~ʶI[@Y P.9==Զ<웲KԢ:ԺP`+\w[Yl]nM Tmj Lk\;ԡj؝`Ԣ*2 _mAg`Y<=С*M:˳ĢPJ٠9 q,m 싽 P}܄mrC]ẻsx+ ]ش;p ls0s=#ߕL @'q]]ߙM<<|` >@;ڢ [Jڡ*ڰ!>MppՈ5ݱ鍪+;] gM$ ۯZ@ Wzˣ:b^_n]n͚ g~WpmG^^\N ^-JЬ k;J!Jm;кQ|n[\pZmpm0Ӵ* p:Q;/{<  p8 oM0Z˵0Ak0? Eq@Ur ^ɾqۭPO+[0`Y  }kî;P,.п b@^`t_ WO i_?yo-x}ًh/ԂZ, Ԫ<麚͢`Z-C^JC?O*SJ ՏPЯۏ?M_oJ(PA .dC%NX"\G!E$Y'TdK1eΤYM9uOA%Zt'JI.]lSQNZUYnWaŎ%[vSiծe[q} Uw>_&\f[cȑ%O.\ՠVqU +KMR&]iԩ-rJo!e6":mܹu.H&PT8 42-oѥOVxf7/cŏ'_ /e{,S*\a**z) 2 oA^C.P*CspC;PCCqD@$DS$D[tEcqFF2! $FP1 i4dIRB:JbIIh%DrK.k@$i' (q@ 4PK8\˕pȘJD&*0!:.HJ1.12:<3P>\rETJS Pq#05 nc_~ lkE̓QauxxKWYv14AC:=P2DvI{}HIGc gxޙ˜xhRP~уc\D3ߖmF)6x섛~i&m8'R ] σE \0]TUV6nʏ*4 }Te`{򤦤Iya ,%|o`Z[l!lǝv7xW~ywy ĉX:,ɄzG Q@z$瓥g$iJPrnWipR\a=B2|l TqB(G? D*c;Tfa,~hP)؇>Q~ ezBs%łH>D%FQ} ?HA0EE%| ]];~| `D:#2!8G 2т!X`l`o#GpD. d#ʲ (y; |H J  XK]2~,n[ 1= s%4PIt2KX3,_;Su1rB~kg%9V(f--|Q@.*\B]N@BʀC1 <(hEⳆdiW_ggG BHcjѩKML \HM d >~RjŨC0 APCX"Fnxt@t^+Pb ~ `';PgP,ְWT)NE_;Xn`\֬f*Cdh@.^@+Q%M?4+2LB SrG H! mi5Qrls*@!)EB_@E}KPl׹%oy{^W{{/{+*J8:T l"X kDAqE,"e 0dXFNz$a.ծf`܉K]#&eX-\RPSoKONNTbe&g-kaX!fX\Ƭd)yL ZfZkEvȸgA[Hn\ĻJ|hD'Zыft-m%ޛXH7,~tG?o*ʧ1۬O)t 8p*ʫRͤȺb?xE?$q6G4?TJm+f-:T>bEЃ++떆r$&;FI.hYQ@m1sT$#Sw㿗n7)c6o\=nęYԓVƻ'IKUC ć-DMD*UY˕q(HgaTD'TS9gNҚy0Sf.Y%MI:ԣ72ӛ>;VP(񁷚Ms 𸉲ud&^ .i]kKiq+ns)@+x:y#!mxz@Ȫ@0!6?.jj; ;'xm %âaCT [ o 'r=:}o +jtA]ʆP[؇+2$.n@$ ˇx;4Mp+s(Fz$0ۤy B#[ *<{,TNrOJ&Gh{(@;+[6|CY$YB N}( 8i1 H&x"iR&wDALDH;DC915,n|p=4¾ꜣ"ESDEQv85b:CṌ{2{*9k9C@OE|Eƥ Eyx:)*WĄJy4n$"*Çz0-n2i)tTǪ*v4(5k8Sf2&W~9WB?˓+:2("񻽂 3[#H2 r"%-%$m(%T+s 1!11#3252325p16Y17G086188R8#=98N98Y99f9891 ;oɇ̀f6,)jdKBdQnZi3N*%$ZiV$ *1nt2%^XH0IClYHc챗씛 1:F; j؞vki*kAP).-٨75:qᡖ6N$%'p 7tbIĀX 1<`< >lBr il ^/t#s58s4Ӂhq\ȹn&%[K+MiX $2+*Тn26d|8B ;p+#31d}kxgw%brʊ_,M54<93=zO :z䨓N8[N{C90I "Cjs ۈ@$XUȒEeo}2K.Nj ⁽N{򏾺{=?䶣?N~ۅ1lBP`w?ә~``} C.Йsaladhs6 +P; XC؆#o(G2Ғ*t"&bC@cU`kG;N@А94$%)1L su$&"uC6sДaa8bB QpbMb$C ~]7pBV0ь"X293=0L&D1M7Aa7Ph!|]A!2zB4de1MZ`D5e{@K)̊^$(11IiF{bTBu*Q ըP%F i{b޴&8 ~z20d<|#[EFSLRtKjRӢ&lSӫ}(bXʾԯQTkPbWDnU.Vd &>QLV{.& jt,S\lbXGMэQljr:˭lQ ]Jw}la ̬ZE* bwRY*{ qOTm,dB 0o[.\&X E!81@衲E^;r⣜HnbP/|Fvȕo13@nyø=qI 3wGֱNB@.a21\Y\yP2"Ĩ (B+.d\Le0lW7$n2c;ɽ07\dFO?[a:ZD13Q 2 d(E2hKkӓD &!jR+9Ҹ`2@ F0bg@kXȼ{-l^xג.kSnr_=lb/E0 \hƆ_'>.{7}3/Ow/_?ͯ_ї|W}}gzʗz77}|w|җV Ŧ]l؁(l!s8u9fAg*u-8u-(d2 ( 5؁3ȃ1(t%s7;(@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Z ڨ:Zzکʩ(pڪ:Zzګz"Pz;ڬΪv/XzjjP .ۚp *ZZbஹJǠRZ[ Ь ۰z ,*#k CšzpڳpP`P:O<0Jz zPZ Y{f\ a@ p3Jv_泷A[F;Dg`Bp`Pj่p6pDKgа+ڭe; 뷩S @pPJ[ ΐ `@{۫ pKK[ț{Uм@ ˽ : ě˾{諾{0<+ʷ*ϰF#[כٛk ʸk@j @b ZeDKDkbg˺Tlň@JIM|+6Q@R۪p gkz Pp+"{[ z pl k <P T@ U[  Ȅ\\Pɪl»0ʪl pt n[\d{}|˽<ɔ<ʉ v[ F̪ lj6W̺BN\Cj gp@+kl^ň0s̪u } ؐ ¨ yKM`6ݪ?t̲OӾa 8D\|v˺,Gԫ:U}#+ըԶB+[(,0Imב 2P>S}rMו P]ƺ&܀:[,[]Z\ѧ[ ۡ+ڧXlک%m}ݪ1 Z~|C]@ߋpL=+ާp›[B{ P Yp 9 M[{}ο E C'! ٧.}⚽Eٸ R,DFڨZm{9~ۼ ]@֓՝z?p #߮ "^ #%> ˲KԽ}`n[j.qnηl~hUз|˭y~W"ߔ~;ċjʹ +;pK~XjkѪ+ b Hҧ<=mۯj3+YI lP0_תJab[P 7P@  P\^֎=p_gn+!G<ϨJР,\EԌ _v??;ګt Ъ{E/YmLOXkŧ:NNݱ\5=[N&LK梜,м3mJMiOaw;0:b׭u~z/J- |ѾKtm9|Դ* {ϤPߌP/_Y0zl.-߼J=ܟ*EpoPo꟪򭮽$XA  paCYE5nGEP IADH)Ud2,-eΤYM#KOA%ZQI.eSQNZU%n+WdȾ%[Yiծe[qΥ[ݺa_&pB + < #-C 0n=؁B[tŲ{.ֶ*`#rg(H’K243;!A1tM8),j3N XFFP$ ! F3 iFtF$GSʨÃdHTJSU50C9+R!Yk5U{tr E꘵G72@Qѡ @ Y EޠCF5P&C`C)nbGED'(ЖDy-I`_ zy2Bm'3rhU[$bK!YC!ԵӒՉ 5Ld_'Y $$k5xh2K)nɧ+z1. RGKA꬙ D}D<`{.{ Ͱ .\ tVJ"[kq`?rwq\r2@w'QΠ!ݶUa(3(=OeY>QjO{e 'pŃ'se$g/KE{7J 6Ԃӟ7Y7كXb%/߳YvH 2g WgZxTfR`,;V(LTaY $Ę4v|tJ|(Jҙ?J!ըtGCJSjh3<ä("2ډN8DX{RL)|">4MA$hHE)hX>sMI~%WmVn r Z s8vs %Yk=#}> 0q 惦X1[r6-l.){E8ͬaE$MȇqFpP.Z)\[v]fo^2=QKp S`E ( ob;B$@! V9ԇ Mab=͇ Sؾݰz׿ߕo3*-->֥wRH\MRi$9@Xq/>|"G>>$+T?b0Ų`"& +\P9d)›)fas_fg@oNu t }hD  @ TēYt-H_ZiX걋]~xZ8aQF+A%8iNz =\G35I$lF6ɽf?ٔviFN:։6JZ x-ܰ RC apC4TGEJYS6?7K$.pg _x]WX8Wk}sYCLV+n113G{}>c5|vW} $Mء Ai?JXu ~?@?߯04`;30 k}`+' /?5 @H@ 0+?1{%R2b.}@ {먱벱x+v1 + 4F$̥-ñ$1$DA;3p3 26.=81ܳ;3܊4܊5\6393PwD DC&@A-hdкʈĽJDGDOHC GųP%TRE4FIQĭ NO%51]2v%` Pkh:5Y̒a ehݪf, eJ% X ,edpۍ'~6aK8t"uzhc((}'y(G&jk k+rDG xGuj,}x{GsCa۶npڷR#9rz9㰟j*j\&Izꀜ9Z)Gѷ:}6ܨ8S#ʘ38ʓK˪["{t?p+ûz,ú+,Wc1R'a;ҽ;DV3$ZȽ$S;K[쏽{w_U-DFU VBpU\DŹpE{QdR VV%FU:ƵPFNF봸\^$ kTeVƵGF]rƯZ2W@Wol&Eȍ7:uI~6dZ{6`~p6rsJusrkiSzW@p/|W7)I(t)ʒJ8jɱ,̐d-䊜%Lٓ) "m}٘j52IZ̒|K G+LګR0T1˸ZKգ-RPy(& ̸;3[5,MμN L>6ڜ-1Tdb1Eg8ԣXMGuZO$PE#\9>$ c|.R|x8=T< ܍]-QP=5 =Pu@*ҥ_@c_&^PO@[`04م@^.IR׻S(S=RSL~*,\X)`*2xR'BұMx?(w`֒LETOTշԯCTTI}n=6n%xb`ClbT[ MD+b0c1λ!2,vc QMT 8 !$M!$Z!#-%$>%$r&#T+p 1!11"3252315u16X 7V17G18718828k:89J89[8XL9#9#W:8`:"g:77AA8B0B/4CXUWɤSƏMht\gƓYnpĔȘbśtݝBТcwĕoNŪ{~\zӲƒӯnʰѵXڷȝպ׻ļb㿆¾šîÊgÖ˰˔ͤ͋ҞwҤҳ٫sשѹܰۈ۹ފ硿G*\ȰÇ#JHŋ3jȱǏGɓ(S\ɲ˗0cʜI͛8sɳϟ@$9RѣH*]ʴӧPʋJիXjj՜ׯ`ÊnٰeϪ]6YlKm]w󎝋._l oۻ -x62U"GBwY!> Ie47nVY%7/^Yװc˞=Vl%ͻagD(Cf˛7]n~Vj5RÍӣ&&nR&1/ND|@x'` WQzF(o Gq_m ы9z2h@K=S-;(rwC=֔W D!F#F$HnTVIUF餔)X$_z3@Hb!$tjrt售<`,qd8#k oD&WpB 2L -\5L5@-tUh_2dъ>/ыJLF"r=Db$ Z"HF: U2 pub1`Ad18 .kY+\D!SZؙ)qT|b2Ld:|f4IF~+!,h XA*sXVN9Q0 gDN!~ h@LiӬfB)І: d.Xtu(F3l,4Ja"lYzc3 ZFZ;kD%0jQc^4@hAPu&3}Ԡ"RԤ0G]*Fi|&9 q*cFV5N0(gٌcSyLVTAJUzf_7ZX"(%jSZXj43JBT#eXb cHG^$x(tEi3I=iIbFEr:XUdB@U0hbͨv^!u\ m7TE1Y -h-\Roix%pt`^ct|wńH1Z‰#Bpi+IL"׸F*\, +f0sqc=F^6 e  U,e+>H)Qg. 6.DjRc"ʵ3ooI1Afṃ6oX96cR;l7@:kg3{_{xlDSّ3?l]\ 7]1Bx< vÁ,%#\ʲ /,GE<2w+6vo>]bP6NGMz!u2DAA,[.{vj?;vϮnvlg{>yy/xx?v=7!Ov=|%?ϓ򡏼Ŏyw}}.zTx/=_=y|}Ň>?|;~KGw>?~}ۇzG}|ݷ}y'|wspu#7jlhs t?;"H%u%xց:3G(31s,xs.H5h?(B8DXFXQpDJxIȄBM؄RȄR8XQWȅHZU8aXY؅Nhd؅hhcjE؆sOXz|؇~8Xx؈8Xx؉ Xx؊8XHx؋8Xx(ȸ،8X֘xڸ؍8x蘎h؎Ȏ8XhxɇYy ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:Zzڨ:ZzJ{:Zzڪ:Zz(Щ:;Z*r,Xjzڭa0`ɠ€5` 𮲺;`P ź*Kz krz{ +0:yXzw0Z *z`{pE+PJu tj P\;QK f  lTKV u@3+%.k0 0P<:;ep*~5;k˹=K9;:[{ ?+p[%p@KS @Ґ  Z ѐ +5`  ;Z *+k 諾[ н˼ ;K* ;˳k K 2е뫱:g0 aAP B: uz ` O˻  k@ P{ :~ Ⱥ6@ptP P3{< Q K[Pf ȏZKvWȁ *@ɠ̴~\{Pɗ j{fwʐ,}0˶J{ԠԹ0E-jRԧ6=֑ T VϽ6:Hmh= MP9L SapOa@Y̹ p ġП٠z ^\͹ թW Z7[o)o[`pӡ*؇ ן`rݟz+]m݂ 1 `L[w]އ}=]ΕM,n.\nׁkomf^Y0m x^rmܳ*EaP$^<~-V\<,ţa5Nѕ~aJf Ӳ* EdP6;>  00@ m-{[0?i PD >m0݀̀!`<{j  w[Nw+n d>Nj+ +0ʂ> ~n&//[wl3?nU:Ϲ= n J/(='A  MK*M߻T~A \?do N[}k moOrcjOl/ azx - ^a{3m߇>]l.O| JJ믋r|ۮL=>Ijߪ`^?_-::`y.$XA .d0@( %NXE5nP$YI)UdK1eΤYM9ug͐A%ZhPeʎ.eSQNZUYnסI%[Yiծe[*R%+]yۗSDPW_ĉ/fU}P*f$n}@ryo& vf뾐WBEW& *$߾=ىޚdsћ":E (Rbl^Ìɫ QnB>[̥ϧ_߾_DĠ]lR2`.AH,hԓ> +¬=@V|<}_&pFk:$0"LU|00yKN'V mrJ*ÑCۂ>*0SG\R;J6t#TBH5sO>BKOB 5 ZB5uQH#tRJ+RL3tSN;SP%4ZB8$,XH VV-"8a#T`U{ވZ"AbeA iVVh5b_۳eq_[̡=wXՂ'V]y7 \jy1؝s6 P(w? Y-]A |W`C ffby]6{7u~?fbTZ5jUae#[Y"|ۜvZvhcg;@'D۩eK t U{nAzY T{lpQ*0|W|q/4 mNt, }@ (H}J uǑP9{vuwz)Գ {lz|N8CN9("B*@o:!#}P3J t(ciEa} #RW.$ H8="<{[LpE".e %P, z3葂|,BK"$G#C "HA :4Dh`@؆fG$x K(`pa=#Rb)a@d^ʣ"9E0z㊌b pDTSx??(">P;8ĠQl)O%5I4ȏ5T!r#. $'Q'7x<'Hϡd/1LH0ׅ6!u@@+UE + z,fyFI/8ͩNwI:$S(mxTyN|O,> ypgAE#2RAPFTU$&8DFAюVT|\T"bJY:R%P9""ziOºM/u;NA͐q&1$}ªa1yȣO)>8Z)/}P8loܧp}t~`PSx7 w}0؛v/;ɝR1SGQ'~CB("'YKCQ\Fq9&?Xgg2ңlپ[[%uLiJEНYsEESWwF^عzB䎒;,_ W3:/UuC! EC]R1;}SBif@_ {H 9:}Nyϻ}8|hU O}3=\I P?q`9+R{as6 A R,l,(@B6s-[֪- # 8!$(R\`-:OQ"6#r7v-'At[%j"Rvh.W"@0 b; ZA \$Ӯ+b8`/Q/$) %H2Rw.ù'9!`[*CPO/?/a/S0EV $A\XX:< x=A&4)H 3dZ ;E!8 3`04JE p~E\LVEO;л`Ƨر3 d1 hD`<8y"$@#$-%$i(#Q)T|,#P.v50 1!11#325 5H17G17x47VV7918718838k:89I89N8#h87869691 ;oAB5CT!HVlWScXO/YsY1ZV[T~[S[JB]^5^Y_#w_E`WAa+nb dVdnd4e0ffefMi[WŏNt\PkœZkdȗ_|ژ>rСauĤoօN^Έ̭ѭjȮ́ؗbQӜҹཁþپb˽cŻ×ʭ˒̣uuүٳؼ۴ݍޅG*\ȰÇ#JHŋ3jȱǏGɓ(S\ɲ˗0cʜI͛8sɳϟ@$9RѣH*]ʴӧP֋JիXjjׯ`ÊnٰeϪ]6YlKm]w󎝋._l oۻ -x71V"GBwٟ":2Nel(©fTiŰc˞MauQ IqQ*ÏVVh$t QYYoziԨJ7_^Hɇr;H8pNYӈRy%N'Mq%7vȡ/E,+$FR^yL:"O?eFC=41&c+."M.ɤ;6͆Lfe\jiWآ]9 izHtse8.DpJ94 gٍ88!fXA2f{D rz# 3e"KP.ZWeRI&>c\ziR:I*U*j&R+,  B, 2,G:FI4ɯ+nkxM"¡. ;*`F .pk9DBBH)F,JA&l<F@@a4@`Deh 2Ĝ 2hQFL5M5Dmt@rpHH ŕq2ZW9Ls{ Q0 χ "['D PK"xDA$"E nfUT@fwUD_pxG91/ &e :k`F;'1yS}%NR<!22%ca I 2 u2`D3d0@l)sh?3E#JWFÙLfLIĦ5Cm P/@cl$xtcr9FE΢b  h-AYL9lڴfDPnA C@@ (H0 Rr0:fNTh6y{G;Lm3CZJ64՜fQԧCjS U"թRڢɌCc=jU ͮr[-CZʫ.5faEد>գ-]*U ذ**6AAXagِ" Y+a]/*Ql4D/Z ]d<9L]ύtK2լurm$.ZkqF)zQ @QqYWEf\xs2Xt`JG`2عu,ְT4$EqۋJ8B*!:Ն v1q|aK2<GwOrXA Zi@h2WewQ59PF2Wl] '6Ftk]dByK]]C[:èMq)9`P,#>AYT,NmUy2!fZȶ2`Nmk={؞N57MfC;Ȗ}lj?O!].78}sPRfJh4ƭq;@:MkCמ¡mfךٮ%{їnW 956ct9RoDνIVZ-9̋?ЇNt=yЉ O?ԧsS]ؾ  pSҢ8;ivl'㶃y+l{yw~rs #O}S{~{ƿ''o{Wѯ_SO?ГOɋ_~~h}'~wԗ}Gz}x~(맀; ^HlB!sTW@Ȃ]炻FAwJ&>ǂ8xu;(u0؃1x5S8GdL؄NV0P؄R8P(UYhVU\bceT8S腓n(fxo؆foȆh8zvȇzV8Xx؈8Xx؉8XxͰ8X؊؋8Xx˜،hXx؈Ә؍8Xhx긎x؎8x؏(9yh ِ9Yyّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:ZzPڨ:Zzک:J%@ڪ:Zzګ:ZJ T`hZך*jʭ jx披i` pP磌0 P * ` J:𪡰 Zʰ[АZ{ "K  ʮ讼j;}@>* 7pI oЫɠz[۵Jh˫\jYu{:va * :< pNPpGKn`PAi`[p1E[gఓ;: p0`@`!0`ZK0 ؛([ً ۠K0`0K;˪۽`Pk˾ڋp\ڷ ,K |[ۻ۠۾>̲s뫏Ekfp[B@9P`Aۺ;UB@kBJL˪;! jh Pt"Ȑl lz ?, `|  @ȆLZɑLK ʯ|ʲ \ʑP{|p˹\' Ĭ:¿Z@ɖ0LʦƫZĭ*6 9Z` Ьj Y`ZQ|CK @h|Z =ǭZDZ z 圪L* ӮZɂkԟ ˼Pk:s ?=tx ̾N R0+]wթZպpз)@OϩҫI- i]{|e MlML]`xٛՁ͎{z SaLNXЬL @:ZѨ*ۻ]@hڬݬ,MC 80 J0Ӱǁԫ  ;PLKނ U3g=O} ؊]ޕ @!-퍪U۸ǭ*L @'q} ^P堽 ڿ кQ:@AEGŸMJ@۹M zjh p֘m i߯*[ PE=ޙml}{r}^s-} s,~葠؍^ ύ+No..9ׇkIpĈ`p<}I`_ N8n-NQll@Ի: ױW\Z]*E@p h0dת:lp|S`» <"! 0 Y^N8 P`l o"~"G|.^ЪZ԰\!F!`q޸FD,ڼ}ݺ BK/c|NϺ&} 1 b<[`k/ -ҫ>!h6l ݶDB!@:D 俪o*Pj;@_+ $0}"C K`DD5nG!CJx!$0dK1ed9E9ub[H|%Zя6)`SQNZUYnWaŎ%[Yծe[5[]y_&\ay&fcȑ%O\âV4`LyeСE&]ڴçTʬ3ӱeϦ]۶a̭jVΩIO]j{c8~RQ2_NH̛߯ oowˋNym֒ZzvȾ~lCA6y?X?$o@ 4@SQHB!CxkE nG *G@>^4䐄}A[tEASh07 QVtP% 2GECx%1YF(rʽk}b-` pO$(FԧD&UzJ8J+;lе(`mSx(n|LHgX&1h9#t<8 v\KCBfGI G$H UXcEpHB--WeW`eHz Xd},XXevZjZlv[n[pw\Ӓ Y8>  r(HB] C w`geWz0H wz)DC2Av1YvbkE:pX2 w'f)j<>yh ;v' 0@zf@4Š Q8D x^A.lۂPí-fChoQtWbz͠x|`aD(VH#oo.)7O)p." ڵusW.h^H}xM xwy裗 .a8ꗨ,K(~z vUBY%a˜̾P# EJFd!~m:չΎ-Q¶!DM996`LyNtز: T[Џ#Hؠs T( T8 c×$L'TG"ZAP'L 8?H<цI@jly?tF DF dq>O~-lA -0# @(`~>Z5Lr%dKP\b &%@ L$yEHNiY7!钗@$"E(ґ@(_,e EBHee Z"A 9i$ \1$N`(4Nt#kTJu -iXEb#iXA (!H]TR)" aBJc?“#eh8T%:HzH,lRD' 62F$StCCjEկmy*4T&)M)<@,hR/aƴijJ:UyN.;MVрuhnlyhQ(~`@ PJԢ:__>0  Q[яG@* lH6 "Vot(Kڦrӳ+Bʪ lcD$7T}nIejUr)'e.dEQNnzQw;;P5-d!E̫]VQdoq)2/­*`ZVU\|0znp 1^4l`e|qrF=sx83F E-1}c YC&r|d$'uYKfrd(GYSr|e,gY[re0Yc&s|f4Ykfsf8Yss|g"$-%$Q'Ri(#|,#10?40 1!11"2%244 5H37nR7#R7918878R:89C89h8786?9#9691 ;oABa3nb de0ffefMiV˵SŏOt\gfƓYdJ|іA|̜cv͟säoGN^Ǫ}Έؕ¹Ⱟ˱͚ٷbиٻڽþb˽_sȰ×ʐ˫˛u˷ֱu~׼۵ݍޅG*\ȰÇ#JHŋ3jȱǏGrɓ(S\ɲ˗0cʜI͛8sɳϟ@$9RѣH*]ʴӧP΋JիXjjׯ`ÊnٰeϪ]6YlKm]w󎝋._l oۻ -x.Q"GvBY6ӌm3Mab衩e@iŰc˞M6auA* )P`UJذQ" 1È kv _~->_9 X8QwVpA80f5JCU8UބV6Wta@$K  9zM3a`K<-9K,~x?P1&٣,.bM.ɤ<6 Lfe\jiW袒]9  "P͕ *(Q~g6ԠabsOY!8̩ +ʰ +Bh^yeJ%-n$r)QJd_V9ꨲzLdI {TG{@ej%D+%9hR&&@ζܚ&+kJfP6 Kȫ:*\SC"J-`+9DBJ*F,JI&l\HBD \2D DaX1J1ČL1XF 5 5Dmt0o[t 1g#T|AT\mztX$-[`uhCsJ |ǻ% ͇{ #8x /<3̓xQyCc);S@bF唳듷:z]>{O{! 0HB F /H,̝5 oMw4# # 8à>K(@΀] ? s#`!O3\1Am~wy+^ (F1An^8P"ψK]D$" Id"K lӀFzS``Ha7a Ԩ@_eh9䨇5HE6xQp4D0t=U㈆2DYۢ&hLNXP.d* NȄ6LrEqq]E2#Hq|4Dxnӈ$'85͉3 ]E@VuH)JSpXE/yPaCJh#zԃd'Pjk4PERWVբ*f7ըb&eVլ0W*J E$1иS8쵎<@AE*#%X)[UjӬem*YѪT+cؕ^X=MU^VS}e*ΔڡQ(n ڬnVB*ӘVB,U}!RSZ(${c(Qa L䢹VŮvzײh.i񂷼P#1Xî`^JGcW H0`ݯ&c-YE/yk߶ΰk^ w*;V;uY4tDYo-~ [PBu{]]lK 2csq] n.Ub&?YT2yv1 bn 9k/ P@;@ 0Uvn%Ag:yʂ^v-&7ˏr*OPftH$h&C@nf@Per Ip;ih,#(&BWXutelf;:vvamA;]FvMjc[ۆ6}gP*mF.fP8w8nwÛ@:*W:ouo@ :ngvaik{wͭl/>-;9%ʹ m!m7+E4ˢIryΥ-H8җ;Cʍtbv֥'}^׸NtO9ѻЅ4zܙLk;v;%]z>Gxӽt_<oy[>Hxʏ򄗼/_c=k>'=#GǽsxċŃ?=;go>W}S}꫟_ݟ}?>??/|w۷~(}|wy7}g}  ~yw~'8}t m#v$hV't*G' )u.d35xv7 9l-t0(k;(+@H4xtAXGt?\WI(F QVxXQZx\؅Zȅ_Xc`X_XflHmo^؆]AxȆpyxpyhr؇h(Qp؈8Xx؉8Xx؊8P؋x8XxȘ(،Ҙ8xؘոx8x蘎X؎Xx؏Y8yɍ ِX9yّ "9$Y&y(*,ْ.0294Y6y8:<ٓ>@B9DYFyHJLٔNPR9TYVyXZ\ٕ^`b9dYfyhjlٖnpr9tYvyxz|ٗ~9Yy٘9Yyٙ9Yyٚ9Yyٛ9Yyșʹٜ9Yyؙڹٝ9Yy虞깞ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@B:DZFzHJLڤNPR:TZVzXZ\ڥ^`b:dZfzhjlڦnpr:tZvzxz|ڧ~:ZzڨPZzک:Zzڪ#P:Zzګ:ZzȚʺڬ:ҪO0ؚ*_::୲ يj *b0 ``JyL  k΀[ [ Kk[Ѡ: Z[!r*˲AŪ j/۬upுp`H;:0j AeE{?Jx0 kƠZڰp[:[t;r@ ڷ0v` všJ`K@Q[j}0 ;p6 ,Odp빥K0*@nK{ZS @  } p3±3  ܐΰ J[ֻ+[p黾{ k@{[[z, l˱˾Q,0K" $L+%+JO;c >P7pP0+_|> > TV,k۫   ZK  0y +ę v  p 4 H `[0i `߀ʪ\ g `ɸ+ p˹˲Lʯ } i@,{ m+ÆL9PVɡ,ʳ\,ή ˲j 묬* ;7d ptc|V`[LM[ @r?ÜQ]3Umίe-A01M xPp_ܠD de* d/pD S, o,}=} )ʟ+o0./JHOկ^Z[}+,}mZO6P2)n AݽpOH}%[`y 꽾{b90'.J4]*~?N39p!?͋`mΛ_{/ _Ͼ:C\ݵQΊγpZ_TܫApH JA_O:DJ (P@.dذ "\8  $hA6i$pFdK1et8#͗3EOA%dʕE.eڴXJNZՌGQWaŎ%[Yiծe[qΥ[])_~- \aĉ/fcȑ%O\ẻggСE&9*RN.wskرeϦ]vӨPB'^ܸӪ *KQ}:?NH/ 7ϧ_s"TKrTVN~;(ȇ3g #~ !nҐMCC1DAMRdT¯Oy 7OEᧆ tI(IK$*C1SӴq |H$1pLs#`M&sN:D ?1@-Q!)q7a$$NJ+NI| 6`Vxava#xb+b_0$>c nG@ 9y @9CfĞ~d\@(GNQn~z4ArZkWb D60D` .;&Ҏ:n3Ceu~0cx # CUf3׼2-);:Yfp{c1g|>O61~:rً֟70 A-X ݏ~{ń9aQ:v$b`{+$Gt~K88dP$` x@&P d`@FP`-xA fP`=AP#$a MxBP+da ]BP3a mxCP;a}C QC$bxD$&QKdbD(FQSbxE,fQ[bE0Qc$cxF4QkdcF8QscxG