From bc1c13552682cef78fd61eee5fcc6ee69dbe4c17 Mon Sep 17 00:00:00 2001 From: nightnoryu Date: Mon, 25 May 2026 00:32:00 +0300 Subject: [PATCH] Add initial configs --- config/fish/conf.d/fish-ssh-agent.fish | 7 + .../fish/conf.d/fish_frozen_key_bindings.fish | 14 ++ config/fish/conf.d/fish_frozen_theme.fish | 37 +++ config/fish/config.fish | 27 +++ config/fish/fish_variables | 3 + .../functions/__ssh_agent_is_started.fish | 23 ++ config/fish/functions/__ssh_agent_start.fish | 5 + config/git/config | 30 +++ config/hypr/hyprland.conf | 98 ++++++++ config/hypr/hyprpaper.conf | 5 + config/kitty/current-theme.conf | 51 ++++ config/kitty/kitty.conf | 20 ++ config/mpv/fonts/Gordita Medium.otf | Bin 0 -> 175452 bytes config/mpv/input.conf | 10 + config/mpv/mpv.conf | 229 ++++++++++++++++++ config/mpv/script-opts/autoload.conf | 4 + config/mpv/script-opts/osc.conf | 9 + config/mpv/script-opts/stats.conf | 2 + config/mpv/scripts/acompressor.lua | 155 ++++++++++++ config/mpv/scripts/autoload.lua | 220 +++++++++++++++++ config/mpv/scripts/subtitles-subfolders.lua | 3 + config/nvim/.gitignore | 1 + config/nvim/after/ftplugin/go.lua | 4 + config/nvim/after/ftplugin/python.lua | 4 + config/nvim/after/plugin/statusline.lua | 30 +++ config/nvim/after/plugin/telescope.lua | 34 +++ config/nvim/init.lua | 3 + config/nvim/lua/config/plugins.lua | 73 ++++++ config/nvim/lua/config/remap.lua | 31 +++ config/nvim/lua/config/set.lua | 44 ++++ config/ranger/rc.conf | 1 + config/scripts/system-maintenance | 57 +++++ config/wofi/config | 12 + config/wofi/style.css | 84 +++++++ 34 files changed, 1330 insertions(+) create mode 100644 config/fish/conf.d/fish-ssh-agent.fish create mode 100644 config/fish/conf.d/fish_frozen_key_bindings.fish create mode 100644 config/fish/conf.d/fish_frozen_theme.fish create mode 100644 config/fish/config.fish create mode 100644 config/fish/fish_variables create mode 100644 config/fish/functions/__ssh_agent_is_started.fish create mode 100644 config/fish/functions/__ssh_agent_start.fish create mode 100644 config/git/config create mode 100644 config/hypr/hyprland.conf create mode 100644 config/hypr/hyprpaper.conf create mode 100644 config/kitty/current-theme.conf create mode 100644 config/kitty/kitty.conf create mode 100644 config/mpv/fonts/Gordita Medium.otf create mode 100644 config/mpv/input.conf create mode 100644 config/mpv/mpv.conf create mode 100644 config/mpv/script-opts/autoload.conf create mode 100644 config/mpv/script-opts/osc.conf create mode 100644 config/mpv/script-opts/stats.conf create mode 100644 config/mpv/scripts/acompressor.lua create mode 100644 config/mpv/scripts/autoload.lua create mode 100644 config/mpv/scripts/subtitles-subfolders.lua create mode 100644 config/nvim/.gitignore create mode 100644 config/nvim/after/ftplugin/go.lua create mode 100644 config/nvim/after/ftplugin/python.lua create mode 100644 config/nvim/after/plugin/statusline.lua create mode 100644 config/nvim/after/plugin/telescope.lua create mode 100644 config/nvim/init.lua create mode 100644 config/nvim/lua/config/plugins.lua create mode 100644 config/nvim/lua/config/remap.lua create mode 100644 config/nvim/lua/config/set.lua create mode 100644 config/ranger/rc.conf create mode 100755 config/scripts/system-maintenance create mode 100644 config/wofi/config create mode 100644 config/wofi/style.css diff --git a/config/fish/conf.d/fish-ssh-agent.fish b/config/fish/conf.d/fish-ssh-agent.fish new file mode 100644 index 0000000..719087a --- /dev/null +++ b/config/fish/conf.d/fish-ssh-agent.fish @@ -0,0 +1,7 @@ +if test -z "$SSH_ENV" + set -xg SSH_ENV $HOME/.ssh/environment +end + +if not __ssh_agent_is_started + __ssh_agent_start +end diff --git a/config/fish/conf.d/fish_frozen_key_bindings.fish b/config/fish/conf.d/fish_frozen_key_bindings.fish new file mode 100644 index 0000000..495aee9 --- /dev/null +++ b/config/fish/conf.d/fish_frozen_key_bindings.fish @@ -0,0 +1,14 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# the 'fish_key_bindings' variable from its old default scope (universal) +# to its new default scope (global). We recommend you delete this file +# and configure key bindings in ~/.config/fish/config.fish if needed. + +# set --global fish_key_bindings fish_default_key_bindings + +# Prior to version 4.3, fish shipped an event handler that runs +# `set --universal fish_key_bindings fish_default_key_bindings` +# whenever the fish_key_bindings variable is erased. +# This means that as long as any fish < 4.3 is still running on this system, +# we cannot complete the migration. +# As a workaround, erase the universal variable at every shell startup. +set --erase --universal fish_key_bindings diff --git a/config/fish/conf.d/fish_frozen_theme.fish b/config/fish/conf.d/fish_frozen_theme.fish new file mode 100644 index 0000000..5c7cef9 --- /dev/null +++ b/config/fish/conf.d/fish_frozen_theme.fish @@ -0,0 +1,37 @@ +# This file was created by fish when upgrading to version 4.3, to migrate +# theme variables from universal to global scope. +# Don't edit this file, as it will be written by the web-config tool (`fish_config`). +# To customize your theme, delete this file and see +# help interactive#syntax-highlighting +# or +# man fish-interactive | less +/^SYNTAX.HIGHLIGHTING +# for appropriate commands to add to ~/.config/fish/config.fish instead. +# See also the release notes for fish 4.3.0 (run `help relnotes`). + +set --global fish_color_autosuggestion brblack +set --global fish_color_cancel -r +set --global fish_color_command normal +set --global fish_color_comment red +set --global fish_color_cwd green +set --global fish_color_cwd_root red +set --global fish_color_end green +set --global fish_color_error brred +set --global fish_color_escape brcyan +set --global fish_color_history_current --bold +set --global fish_color_host normal +set --global fish_color_host_remote yellow +set --global fish_color_normal normal +set --global fish_color_operator brcyan +set --global fish_color_param cyan +set --global fish_color_quote yellow +set --global fish_color_redirection cyan --bold +set --global fish_color_search_match white --background=brblack +set --global fish_color_selection white --bold --background=brblack +set --global fish_color_status red +set --global fish_color_user brgreen +set --global fish_color_valid_path --underline +set --global fish_pager_color_completion normal +set --global fish_pager_color_description yellow -i +set --global fish_pager_color_prefix normal --bold --underline +set --global fish_pager_color_progress brwhite --background=cyan +set --global fish_pager_color_selected_background -r diff --git a/config/fish/config.fish b/config/fish/config.fish new file mode 100644 index 0000000..e57485f --- /dev/null +++ b/config/fish/config.fish @@ -0,0 +1,27 @@ +if status is-interactive + # Commands to run in interactive sessions can go here + set fish_greeting +end + +set -gx EDITOR nvim +set -gx MANPAGER 'nvim +Man!' + +set -gx GOPATH "$HOME/go" + +set PATH $PATH $HOME/.config/scripts +set PATH $PATH $HOME/go/bin + +alias vim="nvim" +alias cat="bat" +alias g="git" + +alias gs="git status --short" +alias gd="git diff --output-indicator-new=' ' --output-indicator-old=' '" +alias gl="git log --graph" + +alias ga="git add" +alias gc="git commit" +alias gco="git checkout" + +alias gp="git push" +alias gu="git pull" diff --git a/config/fish/fish_variables b/config/fish/fish_variables new file mode 100644 index 0000000..ad10b9b --- /dev/null +++ b/config/fish/fish_variables @@ -0,0 +1,3 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:4300 diff --git a/config/fish/functions/__ssh_agent_is_started.fish b/config/fish/functions/__ssh_agent_is_started.fish new file mode 100644 index 0000000..a9da28a --- /dev/null +++ b/config/fish/functions/__ssh_agent_is_started.fish @@ -0,0 +1,23 @@ +function __ssh_agent_is_started -d "check if ssh agent is already started" + if test -n "$SSH_CONNECTION" + # This is an SSH session + ssh-add -l > /dev/null 2>&1 + if test $status -eq 0 -o $status -eq 1 + # An SSH agent was forwarded + return 0 + end + end + + if begin; test -f "$SSH_ENV"; and test -z "$SSH_AGENT_PID"; end + source $SSH_ENV > /dev/null + end + + if test -z "$SSH_AGENT_PID" + return 1 + end + + ssh-add -l > /dev/null 2>&1 + if test $status -eq 2 + return 1 + end +end diff --git a/config/fish/functions/__ssh_agent_start.fish b/config/fish/functions/__ssh_agent_start.fish new file mode 100644 index 0000000..3766fe4 --- /dev/null +++ b/config/fish/functions/__ssh_agent_start.fish @@ -0,0 +1,5 @@ +function __ssh_agent_start -d "start a new ssh agent" + ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV + chmod 600 $SSH_ENV + source $SSH_ENV > /dev/null +end diff --git a/config/git/config b/config/git/config new file mode 100644 index 0000000..41750b8 --- /dev/null +++ b/config/git/config @@ -0,0 +1,30 @@ +[core] + compression = 9 + preloadindex = true + +[advice] + addEmptyPathspec = false + pushNonFastForward = false + statusHints = false + +[init] + defaultBranch = master + +[status] + branch = true + showStash = true + showUntrackedFiles = all + +[log] + abbrevCommit = true + +[push] + autoSetupRemote = true + +[diff] + context = 3 + renames = copies + interHunkContext = 10 + +[pager] + diff = bat diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf new file mode 100644 index 0000000..d22d402 --- /dev/null +++ b/config/hypr/hyprland.conf @@ -0,0 +1,98 @@ +# ---------- +# Monitors +# ---------- + +monitor=eDP-1, 1920x1080@60.05, 0x0, 1 + +# ---------- +# Programs +# ---------- + +exec-once = hyprpaper +exec-once = waybar + +$terminal = kitty +$fileManager = kitty -e ranger +$menu = pgrep wofi > /dev/null 2>&1 && killall wofi || wofi --show run + +# ---------- +# Input +# ---------- + +input { + kb_layout = us,ru + kb_options = grp:win_space_toggle + + touchpad { + natural_scroll = true + } +} + +cursor { + no_hardware_cursors = true +} + +# ---------- +# Design +# ---------- + +animations { + enabled = false +} + +general { + gaps_in = 5 + gaps_out = 10 + + border_size = 1 + + resize_on_border = true + + layout = dwindle +} + +decoration { + rounding = 0 + + active_opacity = 1.0 + inactive_opacity = 1.0 +} + +dwindle { + force_split = 2 + preserve_split = true +} + +misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true +} + +# ---------- +# Keybinds +# ---------- + +$mainMod = SUPER + +bind = $mainMod, Return, exec, $terminal +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, D, exec, $menu + +bind = $mainMod, Q, killactive, +bind = $mainMod SHIFT, SPACE, togglefloating, +bind = $mainMod, F, fullscreen +bind = $mainMod SHIFT, S, exec, hyprshot --mode region --output-folder ~/pictures/screenshots + +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 + +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf new file mode 100644 index 0000000..aeab0f4 --- /dev/null +++ b/config/hypr/hyprpaper.conf @@ -0,0 +1,5 @@ +wallpaper { + monitor = eDP-1 + path = ~/pictures/wallpapers/forest-bridge.jpg + fit_mode = cover +} diff --git a/config/kitty/current-theme.conf b/config/kitty/current-theme.conf new file mode 100644 index 0000000..cb1502d --- /dev/null +++ b/config/kitty/current-theme.conf @@ -0,0 +1,51 @@ +# vim:ft=kitty + +## name: Adwaita dark +## license: MIT +## author: Emil Löfquist (https://github.com/ewal) +## upstream: https://github.com/ewal/kitty-adwaita/blob/main/adwaita_dark.conf +## blurb: Adwaita dark - based on https://github.com/Mofiqul/adwaita.nvim + +background #1d1d1d +foreground #deddda + +selection_background #303030 +selection_foreground #c0bfbc + +url_color #1a5fb4 + +wayland_titlebar_color system +macos_titlebar_color system + +cursor #deddda +cursor_text_color #1d1d1d + +active_border_color #4f4f4f +inactive_border_color #282828 +bell_border_color #ed333b +visual_bell_color none + +active_tab_background #242424 +active_tab_foreground #fcfcfc +inactive_tab_background #303030 +inactive_tab_foreground #b0afac +tab_bar_background none +tab_bar_margin_color none + +color0 #1d1d1d +color1 #ed333b +color2 #57e389 +color3 #ff7800 +color4 #62a0ea +color5 #9141ac +color6 #5bc8af +color7 #deddda + +color8 #9a9996 +color9 #f66151 +color10 #8ff0a4 +color11 #ffa348 +color12 #99c1f1 +color13 #dc8add +color14 #93ddc2 +color15 #f6f5f4 diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf new file mode 100644 index 0000000..d5f8604 --- /dev/null +++ b/config/kitty/kitty.conf @@ -0,0 +1,20 @@ +hide_window_decorations titlebar-only +scrollback_lines 10000 + +enable_audio_bell no + +underline_hyperlinks always +url_color #0087bd +url_style straight + +font_family family="FiraCode Nerd Font Mono" +font_size 13.0 +bold_font auto +italic_font auto +bold_italic_font auto +disable_ligatures always + +map ctrl+shift+t new_tab_with_cwd + +theme "Adwaita Dark" +include current-theme.conf diff --git a/config/mpv/fonts/Gordita Medium.otf b/config/mpv/fonts/Gordita Medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..f596b28f8d7d5bd05ec8b5227f033e49562ce456 GIT binary patch literal 175452 zcmdqKYnWBlm9RV4u0pgB%K{PI6j%s|;t~N-Zbcy?LcF4&QDdq#(R6I_@)y@rUv6p5MLp zrXT#x<5Q1G>EKx@wOeq_RX1MOwC%vZO6iCjQkDwWUh#t)3jZ>WL$kr)fa|Wf_NrH} zIQB07{Uq|Qyy5!q-Bezl25@{FRL42|l+qoq4EXFXs_XxdDk}b&ob>*wf86Bv$eo9m zkNM)~m7i5!!@nz1A#(YTa|(OPRoUD&y~@XwkE#4jNnidZ3;&YRxD-qkh5NFm)P^(e zEL_aL&-(H^YfJ;Ig+HG)BNhIAT-w>XKjXr)zJ6{xHP!v8@=INn*JeF2`KR%F;qZ!T zzUm^Kx@2emS^ug0J4zL7%h_M13+aF~W?#A@bx-H)OIM~t(sldNZBl*u(Z2KnMLNx@yt^*}41jJETLh3DjX$c@Wm! zl6`AmI!m?L-|tHoIOdCe>56n(;oyDg%2Zo8cVD_q`a$8Z_N5OXfB(5{)47HH=N_1j zs5pDyF$bmEiYxb}tI{nM(UZf5L(?I2x-Zi;>EOykMqPiy4{yBsFTZxXp{zI*+(SA4H-%+(VoUUkz=ed|U}oLJ{k->bXvs_$KO8goWUv=Zqx_!UYefiVSkUjW6=UsHwjo-Wa z`s?cY_wCoO->`Ax>-zQkGWp%>Z~FH2*L^>J=sT$2uxqcl=Bn#&`cB`8SAT0j-;?{E zJouymL-t8J;Y;cJD%czz6Yd!sed|!)VDaIE=}O~>(jOAiu67H zHHI@L^8Zzwb5rU|&Pe}V_Z3-j+>IRZJw7+4@53uS@<-`(G@pyaF-W|T+^dms1xKIb zF;}O*M$ZML|B}>1ez}oje~6`5q2(qxkuyT(P%ZhNWyJ4amSgaL(RIRq(shy2zK7K7 zx&G=XcV9{${}01$j3+13U(JoWxQUvI1t`@g^Z*Z;(dRLNc80KD{poL!aL;al6| zQ>*bzHK{}Dm<~&w(&4FdIwBpJim6MgO&Zdu^ zo6e&Lp3l`Vo;JKNU6j6_E>4%EOVc;fW$Bx#G5tlloZgVqv@|{4mhMOoq({@w(~R_F znwe&$r_$4DcAA^!q#{%0f4;uW!?gF8NmJ7!*@4+Xg~JP-3tbAeg(C__rWXsBr`1_r=w0Yr=uzld z_)+1zI1nbC_Rj<2h-oBpQXps@3OCFm!|8p zi?d6}{XzDPR9SI9shwy$fZF&;T99?jdSoYMgR-&NIoUPYPqGKIW!Z<>r`aE}GFA*K zyiwR*_^6_?;=qc7D>_shTk%-M+=}HDYbp<}Jg@Sy%D#xPgOo!xw!Jh%C(i- zDtA==q4JN1jOf_0b)UE*{;|TUw-seJ&x!#qu1hI8+&a&rp+-Ojv02$RlPg*?$q~)ou%fJn#VW4_W6)M zRhG+?w2tPu=4LKTPR^&w|?C&?{-VK`@5~|wx_OR-4S)Q zb#<0-$bTx~+oSFZ%fCzpwcFw5z=9i(P-(wP)A=wdeb=;I zQ+7?>b@Q$t@A}(aKiJh{SNC0q?`pU6pLXur`TWl3cK%}L<2%pZ`L&%Rcb>X)$j(!C z_SsptvwBC%jz8=e_2J477kv2WhYx+&_~G~uPx!F%gRg&Z(XS_T|K-8M4z6wYY`c+d zC++iCG~@qY|Eo9(|HOaUIeZS}GdP`-y^#i23{SlalTz=BYf`VmcKqTOX>fLb>d&WB z_WN{PVPZNVJ1I3}zf7aEo@rR2Hq{mWBb}VRliC&@Nc{@8rDF?krlSfsbL_L}eD^9`lTIuYDSNMUcwq$TxoKSCl9cm(Ja*^V!>LQ* zY0^JTOaTV`yEct~y`903#oa_#MYfg1MId$f@GYglcnu_aFr^3*5 zNa4zKXrYE<)>4oC(&c;~Lp_hodZ*Fqyc7F>kp>k0ka}f(Q)A(0)cLH`nX&hP!U@Ql zlzJ9kO#KUYq#@aqbXfK}_RdLXWbdZo*-O-I*Hlw@BwbqQntF2nh%D!rZ={a+>Nt0B z#p=|(Vgq%(4SNqIO@05j&mk#Qb}ctW8x$U+F86cJx~Z|GV!Kv43ScKFV)D zi8=~f_kTyf{mQ>9E(_rLS+f8l#8b>54< zcQD`M`5ssC0P+W>danceVq6Q6zwdi^p^<<0;otH7G~d^x!?SzRvC&phU;pEGTu0QQ z*Aw4uDpJ47qo`M|sp!}HzE9iteN0?u(bu^~zx>|+@BQCggI)*mJ&)_*$yAJg+Ye}u z=o8T{fBtv$kFWeYu3N92xNf7};`{HoW)8(BuH(3t{``G0*Tv8AI~}k;{0QxujVk|R z^ppMN`JeRsxBPwWW&Mt}zP@ZPu8olE^+6wv{%s$N@_tS|>??2hi0l`XnSV0}a2S5G zZT2DQRGzl)b2{H6_>AXsCZ8AhjOKG4ALePw@jG)t<(K*VgwIo6Ti2wah4*NqH}EI) zv5GVKK9BF{uVKTN*XF0;BP-XZ!zW$f4Pp)*D(Gab+e6s<7Yj0Fnt(Vm31jA zOiMi~=u7d5b1Ft5BYZ5rSN(&@=h{`@L->`DxiR$#-&%1ozx^={u6z|)J2~d~)S=?v z$$Q)5yH(y!dNb`4*ZWUXL*WXp;}7Ul%kZyUD;0m4+7+_Y4I9S!Ig{^unS+Rad<&nr zwtvKTT)SM8*#-0vM86BY)N`Cud2-4seuS;mmG+fYY; z{{Ao5?4SGkY1HK<*hm{$hX49aTUlSUk@Xb!-T%_>_g~-pufzZP?X?)!;67WuKBKFUij;D zNSj{N^RbL!zMW34_$<{`j!Gv~Y)1C3)TiS2Jek$nEL z^4!#|;@or;pZY(4Kf>7JQDmLV{j-Yu@y+zV?^BMHI-=*4>~ZGe#-y_;<0!{BbCESS zomY4nS$C(a{G7pk_YB5LZ>Iwo=k)Y*26JyK_x-*VVGnsY{HN zqTe!fJB+bFzwBP>yn=brFDTQojBoyfd(ol%dmH1Ms&o>5vTtE8*V%J?o=sgUJACNds+_&)mJLxrvQV?M}eTey`m)9uLqAI71Kn|kj14CDJ$J`MZ+ zeH!0=`3&cC^1k#}kB#5=A3K6{KR#bQb{zjcWnW&LSLAaTpX2#-;d36Jk$igaIgn5M zKA6uKJ_Gpl*mr*)mrY0)@EK3uvHNF7%1fD%`rrSTai91iWqszXNvZva-JH>edq_p9 zlI^+2RHW+iYFHC291;12BW2N?E~aZ`S97|?FXe&Fgqf0 zvZCx`PA(@zPT?@pRn~BoHC$y4SEZ=oDr*=ogT^XrxXK!?vWA(JH$Q5)Dn$)frKsVm z6g6CxqK2zd)NqwGTxAVcS;JK+YPc#z4OgY8;VNsm${Mb+hO4ru;VNsm${Mb+hO4ru z;VNsmDvKJfvWBay;VNsmDvKJf%A$s=vZ&!IYq-i9t|~+gR~4d$tE}NFYq-i9uCj)! ztl=taxXK!CmpYcWFyGgidTy7F$yxGg z`HY;c_BnE{oG0hY1qUz2ey zv`cSj^Liz`X?la{w@hy|{kG{%rZ>xX3gEnLaXFE$bq?%A=yxS$Ek(_L9BjanYvP z@lhMupwONTVP>~oHdHOc)H2*7N63+KlpHP3@W?Tqd#35LOrImqljF=kUuomD^FnRA z(fse5zRUEz@`3W3*iiD^C(N1YxwFdek#B#sEP zR(1V{{32LLA-`bz7TSd5!a-qGpZk714MS$>7| z3FU<_?tQHLn=@HXkyGU~IbGgb{sl)q$67*rJo8DAxm37Tu9Kgz_Rv246Dt+%@yz^+ zXAYhl=i-^4hksLk9sbz-$)O$3962+vxxJpbJ)Rl)dgk_c=8*8Q{3PVynJEjNIoMrl zKi+sQIgiAVc;gr0=9HRFw7d*oE7!^*4Rpz;zp zgnL1C8cI*7=KeSfUc$Yj8t?iVysrEpESbN`oYg_@o}A0wGgvE+4GCGFIFhS4j>%0= z@Yfr-H&tgpl=sO87^PHa50@W;KMjr9LM*T53W{@I#Jg5!8%%HW`1k$w1CMVt|3Bmx zvK;w^s<5GOuslQ_7BBI*I&TPB8xl`9nDg|8OYx?rm@? zJ><~rKJ)K4KkjRXQa|s)P5!#gU$>k8TXQ~@fAsi2$-P0wFzBV!zk*%l%JTcH#zn8F zu~*dCD{AZ&HTH@cdqs`CqQ+iPW3Q;OSJc=mYU~v?_KKPmy`m;Xuc)zC)YvO(>=iXx z^okmLMUB0p#$HjAMX#vIqF2<|D{3fpq@!2V*eh!66*cyX8hb^Jy`simQIkclsL7&N z)MU{sYO?4RHCgnEnk;%nO%}bP#$Hiluc#?Ruc)DBX2IwcHTH@cdqs`CqNWhNqNWhN zqQ+iPW3Q+wM6akRM6al^S9D-B_ylX4ovG~(j0RtVCzRK~)A8ON7~#AM$H=krOgWCW z?vT!x7nn2N^aRrvn!c#Kkz+2Vy*i}7#w&KfcZK}Pa*CWPr^)H^*78#v^Q78m$eHpf zIZHk*pOLfGI7iNv^W=Q_f|e{Yy;#N_twUNWm&xVwCGC7!u8`5wI^a3O=2z9V*7R$p z*O`9Z^m-+1kQ?PDxmms|x5%w>o7^rxkRQn%a+lnz<>g?O$qLyfe$Cp-gJe7N+skTM z6E)9BCfG@KmPbX27`+60$X>FyJS9rRxP^AlhADZt`6J{=IZBR}_KNH*k38FR&+*)I zqXo0`OrP(s0-JFu?Uugf6az^<%j-084SzJ>cvZu{|M$VRV z%FD=~YkHov-LnOzpOw!k;RWun9kRvdES1aTa`}>c8DG~STVZ;o_N?;U)#j`*{kj_8 zFy~GAmV8_OO8#2D=kYsD@3Opqugs54|AXm&l>h9J|7sck&Et2=J?1ybX4w)J77Fnz zqaAtzqa9kg(9!gHJUMpYd53l^OfzS?yj9*NZWG*AB|H^r9r4Vh@w&l0h{p>?yLT+iWt7{Q<9`K9L5>XOL5}5y0xtOA77V%M$KUq$ZQ{^-{U9OR9<+>mvsNmVb0`t9) zl_XdUy^Mc?-Q@+ea*;NQBVRyoEoFZX*2`1*wU!c*Ly3ZUkP-!FQ>(RF$t%5(4_sQ@@U6H?mH(5evH)VEHW;bPaQ)V}1 zc2j0IWp?8Z$nnbTrp#{K0V5}5c2j0|TKWBSG;OgC)&!}OU{~2)zC;h{f!<%iXw4qB zW)HNGwl#ZluV0jUrYhN<`&Uoy_3L4bWO{P1-w5lG(=&~rulD5r{!3Vj9LF;~DFsJT zieMk}a~b2Ao@n7n?xaiMkzC_Fxsyh^*7RVmtm7!fY*-^Z&?3jti#Ebr4}H_6jK}&i7GiZbO{Bg0G7AwhACwQthvg&kQTdpRe%Lq7k#prd zIbSYFL-=)(>BVx1Tq>8z<#LtUSIak)yx#mbO>Z#$mg$YA-!{F;^k(_4+#oRo*6Vmv_iJ?nL_J^Y9ux^NIA#P4GHqVo$_BpAP>P3r|cBDeYnThT6t{Pk0-%?dIC1%uOdCv_ML&gq<(K6Usk_r}Gpuh^Lju;TSnqevNzOpme6`aUOHNyuh6CrYD%b z(DX%&a0c;HgQ%sjWU`zhr^;z^y1cbK zlVhIr+!=DFd`ixuEe55hO+O=NYt?n`vE_=vcvbQ`g+MVl~7SH;c(@zeFcF#^WeM-~@PfTIYFtraiJwlF@ zqvU95&*X_ItUcRv&oTep=o>sSg`D&Kb$r;#-GL(+;YYe%*uy;{SS@Sfct-wlOsB9@ z?=eX4F^Fr8D~M|?cod`SL0oZ>?h*DEdPcu3TpL$MVUqlj{IUFryjj|}d720<)8(!5 zHhH_eL*6Oxl6T8{EuY8Q-yr-_aDjXlA2JaW$kuwQvhd3r2f=>vI zF(w>>=M2V}a0n}C!59+`!6$?zGvrM9l$<4>me0u9YM&$L%6W3WT!8-_f;R{oUeLlt z<}a2@ch?$=MTxwQ9_LNhj7)0wDbLSeAvcS&yig9k**27T;q{*c$A2%J6Mdq&D9<3 zE_--<&**zRU803+HqMF_fgy!kyHP_DaQ!P9wiAIfzX93#idGvx&`)~|=Ai{wPl zy_I>+p zYw~ruUT%;ZZ zKzUqP#i#(Q^Z>&c?Z>ZY$TQ`*AkTNfc5ys+?O?SGFEos6nHu0)4)%!BF?x^Vr^u=D z0q$AD7`?v<=gS51Sw_XfxE@#W)=4$v`FiSeA*?aof%|(s?=$=oc4kyr&-)A;VOP$r zXZ#%O!E-@9cf;r5G1ya2D+EvAzFbdRM0%h+opD7ySL^L?j2tV!MjO>Lu8#b1j7I8N z3kY6d&Un)kOkZgFBE|sq>FbQ!>$zjjftRq>Sx+l3gWuo|UQb&;2ftZ<8vYgiu%34R z1)Rh@Og;D0uy(SXBB#n}a=MH+QtIg^VSmhC*7KYgd{{mrAC-^EU(ieI@hVZq8FHq4 zO3so`%V*?lOEgE$mGk6$xq$s$_32q_=6OaP_1uM{P8Rv=V!1>vmCNLE`I2?=vRolo z%2n3MYPrTTzN#f_O}|!t68Y;)zi$2;mTSE--!#3!^joGkntt2#CexecyK;-%D!0k) z@;4s;f$0xTe`NZ%rgxa$X?mCGxOVEfgGbr_gjcEO4j$=pkUMy=LRQ9E_&s_NS6QUn znm*92-|o>2=)kg9GHr@|37s?)dZ&uJ>c%P;DEgZNrr_LXMQ9PQ3^Z>=iGK#;agCUL{y9Yr2u@S`ba|`1P2Mi=kaxmk$FAO2zUmb5vY^G6XD13f%q$Y zU~qwq`KbEBbCxA$rRodMoA&x*d=mArEb5u3hM&Xb+=J@56a56ftdn5V_|TCd=~FL9520r9iAOI zrU7sK4m^^(Km%U)UD!vSV9o&317*Bj)_~W29gdM><(Wusz{f`Z1Q~CaHTVqDfJa?J z`ck}o1EtsuZ&TX6%xX5^4@2Wa@?rUid{jOr!2ZRmhZ|fa;w}Xx69vn{0G+a zho(O={ae#JOz$+k%k)3+6wtsk%MkXgRYpGE3|)A$NVhe8py`85$2(>X_^x2QW7d$x zc)r2skp`bf8hjpU$l`gVA&cjchU~a#Q+govfG?u#_@V|l)L(}wIi5ipvUmn*$l@8K zA&X~_hAf^z8W^7h$Ar!JqDY@*I^HX5!2bltnSZ|0;%T=byV0EQNB_+3GJUUnKzrhi zvWDylb7p#${e(Blq6VIm3q3O4C~L@Gh--m2%3gynGJDyOy)0LG&K1 zq(mqr|yiwMW#T#V}S-er!ko~jA{Hy8DJZq0Rzc<}v`VXd?O}D5$-Y9F} zjf-HsQP#j4Wmt&UrIzrz)EHhDtMIzC0$w**EjxxBd_tTx+2g0ksdAdXPM5dJ+hn{$ z)lj%Y-YM^rcguU^z4C#u5Kl?}NA-o{m*-!}{`la76hH zSc)|E@GJHNYh@qvb2%Y$SjD@KJ@f}t1EZ1lI2^+LVl-vk3hT>vz!AJ@HkwuD*Wu;p z9gTeQkzveRLibqol@+n2|5P2BCo`K$X;Gps&a0uS`4D`MS>&uhj z2>SmS=#678=WcZdddWvG$D=n`E02w{&>O$zazf;zmwfaF50QuQ>sa(|f`ho5kF~sG z(fcmx`ttoS>ToQ2*bSCyZ0plIBGqGd=96>KV6YZqY&aY?>*2+HS=W;^i(3%T~ ze=vw1axN0q!ii`+7YU@1Kt2+JwX%=-xttI=NZ?5B(eD#KA$r9HNP8Scueg9(+6tpr zTwt%bz+Q2Iz2XA2kdGFQM@ukz#Ra?%###1?3#g?yCVIsM_KFMa6&KhmEsiaV6kQu(wELy#A_rX@gRWq$>|=f|CqxdqUL=yqAZ9AQft(ev6y#iTI5$`; z`7*WfMn_+*j+|Fd=r~Xa0oTSyb^I$|ElQ9q0$oT&qI7W_@u_K_7@qciFyvQRjmY2}Vjg0?)4KJe=8l5p~ zB!bEbq+{N!k@0^p=FJ*Y%$qf)m^W)oF>lt$s6Hgmk#prdIbX(}kw(Vzam->FZ?HG= zE@g0;j5*=P6z}{rGM*2{2&9qmd~lUkt(Gw(*O=COe9X%=rVXZJcCImPG#ztvjcJqV z&GKEjMaEu(#2}k2pTY?TyazH8O4| zhjBZ_80#+a~?_b1~>TaYn%q!;>Y%zigACVv+$VFcUAnEXBXvcInK$Tjj+Wp42J zt)|~I|9y}A&~yLUoX`AqkLll=ZZiD`)6J$^JgZe{{~^B!7E;J@*0hmPH+C}WrYwxQ zDGQ_SV72V%ubn(AW=$KNHEm=TBGS|Rb-KJ&-X?FCcgQ>CUGi>ukBt2?jm$rUu6WC_ z(YG9lmSH;HY-}vVn~jZ*v>P31H#*X8bfo<)e8S@NExf@B7=G+qcms0q2Ekfp!@h;T zjr{Oq-@?z3uOIs>&iZxwE6#!(6U>AB`fH*o4PsVjBHreGSkH{jM2>{WCm;F2TJFme zIXCiiIl=rJxRXxIekkvgKc%D-8K0An{H4Tg3ZHfzUi3j&BYX1fa~<=p!O3!poGPcu z>GD=qZ?EGGkT`O!To>dGkl@+!+&BhbihO)&u)9<~+MiE1P^<62@FzEz^Vi%N-%o$T zGs{~rb}mffS>{);O2)`=5_Pg3##n9=KK~t9&%Ed)>IYIk97FvCYk5;*lH;gJ)KdJK z%NQ$8;yuRs@P~2|_q$2#Wq1SLXU_fRJQ(tMtN%^7$zQkmYxti@*>BDHRQ}Q9|0MSY z9j8rloHogE+9YZo8wy9z^CuOKWSl&ScMc<6YdXB>&D(-94O29X%B^di(ZsuMPzuxBY56Xw+!}1aNsC-O5?(u&oeVW*RBf254O6vYsy0m3hN;>xRU4*i!&GgU zstr@MVX8Jv)rM)>Fijh#X~Q&an5GTWv|*YyOw)#G+AvKUrfI`8ZJ4GF)3jllHcZoo zY1%MN8>VT)G;Nrs4b!w?x;9MLhUwZcT^pur!*p$!t_{<*VY)U<*M{lZFkKs_Yr}MH zn63@ewPCt8OxK3#+Av)krfb7=ZMc`{hJ6`>Ud|}=USbmkXGcz9F6sM7_f945JF{S{ zW0tu4L^{?nORi&<7$?sq9qX7S*D*`3W0qXUEV+(Z!cVT}*I36a@qGFOjCIVC>zJh! z>zF0iF-xvvmUuh*c5-4Jvy@^Tv*bEv$#u+<>zJh!>zJh!>zJh!>zF0pNq8K_I%X-w zI%X-wI%Ww^y9~xUW+}xwCS!b7WJ<1MmR!dyxsF+K9kb**W{LNLp68fY$1L$)P%zdp zOS~8KD2#Q?lIxfy*D*`3W0n}VM}DkhmKe7OV;!^PI%dgr%o4NrQQla`EHQf@jCITs zv-iQ-mMGRSODWbdOS~NsjCITs^Em@ytYem#!(Rbo9kb**W{Hu1924s-B}V?iSjQ}- zSjQ|e@}C1^9kay9KN#znB}V>HC$WxMVw@0VjCITsqlHMvI%dgr%o20^kss@rC7up$ zhp~=X;^`pLv5r~d=^)avj#=XAAkwjpSxT{vSxT{vSxT{vS>ov+80(lNo(|&pSjQ}- zSjQ~!bP(xS$1L%55b0RQEb(*@=~%}sxsF*%v5r}C9kb**X32HTlIxfy?sS~xI%bLc zU8LKF1fC!w9qX8-EY>kgS*&B0T*oZAj#+XYv*bEvDT{T?QWoo&r7YGlORi&4%KOsAtv=s9V=DOWaArwphn3 z@gx#*VjZ)@lSnYuF-ts&1Y;eu#FNPFFxD|ku49%M*M-bj$1G*Bj#+XYv*bEvi6@je zKGrcyS*&B0xc_pl>zF0iF-xvvmR!dyxsF-leJ8AS9kb**X32HTlIxfyMvr&~MvuW* z$1E|1jC8DHmR!dy6=EH;Wd6=EH;6K8S9uO)(RsX>zF0R7$L{&%XQ3>>zF0iF-we%f5NY^ zj#*;t@eYi2%#!PvPo#qxe?H;7&=bxJ@s=p1dxEj?i?E&kzdgmj9L9BxywX;%<4ahE^^RyAMs8@&J5+uP|ghH%uvn@<;+md z4CTyF&J5+uP|ghH@TM(tW-4cHN;yv{=PBhprJSdf^OSOCDQA{)W+`Wua_HBTdX{o#DQA{)W+`Wua%L%K zmU5m}&eO_yS~*WEhwBMBPb=qX`!#cBd?+Hy@jgS6E!Rufo1 zXU_i_Wj;gyiDRPwJcE4lkWu%z*s$*jo!&HR!?T5H;xItv(ZaFdO04w!B{<+jb6?|Z~PjoC$rH@ zK6=SVZ!lI*W}|m9agn3Eyxos&b1d&1%R9&N&au2iaq^hZJIC_QvAlCE?;OiJ$MVjx zymKt?9Lqb$^3Jimb1d&1%R5)Sy!DUXx$2#(Uf$TEHs-2#u6pNMUPeHXuim-povYrt z>Yc0Jx$2#(-nr_XtKPZlovYq?>g649^v+Z7JoU~~FDrXooAcB=PrdWhJ5Rmy)H_eT z^VB;}z4O#NPrdWhJ5Rmy)H_eT^VK_Fz4O&OU%m6yJ72x?)jMCk^VK_Fz4O&OU%m6y zJ72x?)jMCk^VK_Fz4O&OU%k%~#rrJcUZ2Xk*Rza5$G`MJ~ zDSD1bMZxy02tLPd#k1gZ%xFZs?D6Tj!V$c~^jx8f?8TbbLe3ftt7Lo5UC3D{!39Kp zS;%?g(n8KU0UpU4rwchZ(zT`s6Wx0uu|DhJDt2=$EW832QA_J!tWxoAFIV3pYH2Hs zRjNhQ(png6my4*ScVMhiEuxk~gVD%B!tiLRqDVCF)(G-X-c?qTVIyU83G4>RqDVCF)(G-X-c? zs@|pQU8>%t>g7!+YGbK-m#TNEdY7tqsd|^Hcd2@ps&}b+m#TNEdY7tqsd|^Hcd2@p zsdt%rm#KG|dU=xzz01_QOuft0%g8SB)w@i+%hbC}z01_QOuft0yG*^y)VoZ*%hdZK zvu9g~x*qH7%e8@B7u5N3ZCI`i%e7&-HZ0eM<=U`Z8D*xi&1>O@hxbO!2{}A_MOry8E9Yh9ysVs;mGiQ4URDmf%8xSlz8rE*p(XQgshDrco~Rw`$ua#kv5rE*rKSji%) z4WrXlu4J+MjddvA_T}Ek8;*=uSJ5u7!MOH$R)`$ra}4r>v68h4`H>%UN2`!e4)RGe zT0=6UwP37dt)f4yORu0e82y300{EO)Quv%#(0B(7pYw|S;T841f?o2`%kk(9hR=D$ z{_qOgoDLx;1KFqxLmuCr9mToE2H)tjHQ?Mb(GvMFDt;9$V%Bl3Wm#)k z)>@XemSwGFS!-F=T9&nzWvyjdYgyJ>mbI2;tz}tjS=L&XwU%YAWm#)k)>@X=EX!+_ z)QymW4fAw97in zvd*%snzbaOSH}st+PbyEYUhkw9XQ(vqbAG(d(Az zbxZWRC3@Wwy>5wKw?wa7qSr0a>z3$sOZ2)WdfgJOPcf!lkF-Z%jA_@W7}N5$EF;hL z$lL&9OuL>Q{%aUx+V#lic;p9TOuL>di?h%Yzs8t$JzB`;$|9dDD;Q(i_2`|PHmG-l zdN-(dgL*fpcY}I2sCR>UH>h`mdN-(dgL*fpcY}I2sCR>UH>h`mdN-(dgL*frccXgQ zfkb&Xs+au-SjGEaly{?gH>#KUyvSGYM)ht~??&}*RPRRhZdC6^^=?$}M)ht~?mCPlj9azfwO3Z_%)s!x6lgY(+cF%3c+}C z+(IkdpSG%(ova+QRlV$C;@7R}-KyTL>fNf|t?J#X-mU80s@|>Y-KyTL>fNf|t?J#X z-mU80s@`qt-KJjlDN^2T>fNT^ZR*{o-fimLrrvGp-KO4c>fNT^ZR*{o-fimLrrvGp z-KO4c>fNqhcGFVc?dsjG-tFq$uHNnH-LBs4>fNs1?dsjG-tFq$uHNnH-LBs4>fNs1 z?dsjG-Vf0DMEU@YTVRZHK0wzt7~`c6kk7Bk561ZI10+X&jNd*$GC9aukUmn*N6Ps~ zIUgzKBjtRgoR5_Ak#as#&PU4mNI4%VXNPijC})Rqb|`0ua&{+U{DgN+ zKH+LQ4%W)Syes)nc!}fS(Oh5u#5L8Q8Rs^{BK{N!!GpQGeTw&pJ+YTZnq$sNyICb! z4I=`~Zq_@35dmg5D;>djZ)7)X9Ko?N-X7V_ibimPyhI6?a*ga}wc;fh5ny(+;t&!d z0?ck!9D)%6W;ZJi!H58}n-z!PY~{?6bLBiaUq%F&-K-ac#>H}pTqu^N(~yfZ5HQf21P<%x>oVBOMW7b~EQ6+#=)cl-s_zz4+1eo2-`A2?4fZ5HQf21P<%x>oVBOMW7b~B$(4)gisWDx;oH}m-}Jk9(h&h>H*@2pnGYw;e0ZcI z0?ck^!h`Xq}C#}7H1AT7!hE0Gix2^Mg*AM%vuK{0?ck^t%JA9+vM%? z4tb}HH-&aHYaNUTFuR$x4n_o+-OO6Q0wV&D`hQ= zH*!DYN+HdaLOxeYFy6@hj4LJb$?P$b%pUrDNPAF5RGB^W`C!D5*+c&f2@ykP52ZsRr3*#`m_7JU^ioES zq$k8N5dmfoJpl>yfnY>{*+aVrBLd7G+MP5$mUHp3!H5I1hnnGBS{ymFIQ2k_2O|#5 z9!9Fchy$~Sk!mpF!0e$WDVK3z_AqvxL^|TY?4fT2BM!_S+LZdFO=rP~1G9%V4MrT8 zJ+$fE#NR`u6`E{|CflOPwrH{~nrw?E+oH*~XtFJuY=tIUp~+TgvK5+ag(h2}$yR8x z6`E{?CR?G&R%o&nnrww8TcHWhvmHyK6`Jro!HDhCgy#uHyENG@O}0xDek1ZDwoenj zA{eoKnz;6Z5!pd8;eVVwsg9pfn?bBq-HrcXGwrrCv+hof&*|JTxY?Ce9WXm?$ zvQ4&ZlP%k1%Qo4vO}1>4E!$+vHrcXGwrrCv+hof&*|JTxY?Ce9WXm?$vQ4&ZlP%k1 z%Qo4vO}1>4E!$+vHrcXGwrrCv+hof&)3O^=Gc6lz&vSjVE!%9%HrukzwrsO4+ic4= zdzCfYj?K1Xv+dYyJ2u;n&9vhjq(xk&X4|pZc5JpCn{CHt+p*bpY_=VnZO3L?u-O)D zwgsDQ!Dd^q*%oZJ1)FWbW?Qh?7HqZ!n{B~neDe0xY#TM(I?c9Dv#rx?>onUg&DMXj z_1|p$H&g%1QZx0x9(FMuYhKOPf3x-9Z2dP|^UcvVeeTo2=RO^L&OQBpa@sRy{@ka7&$++fLV7ea%%5|251!5Y)1Uiv@HtNhk#nAm zr-RRVI*1(JoQBWJ=j1~9iobp=KQZT@{}&j^u@XN1oS@r>}f&j_FUjPQBkAjwb)}@?6EEO*cN+ii#@i*9@}D%ZP6pO=#g6V zNG*D#7JG7wJ-Nl6++t5|u_w3aky`A@E%xLVdvc3Cxy7E`Voz?dC%5Q@TI|Cu_Td(L zY>Pd%#U9&Yk8QEXw%B7^?6EEO*cN?Gi$14CpVOkxY0>Aj*q>YUIW6|;7JGGzy}HF- z-J;KFv2VBNb6WH{E&7}meNKygzQsP@VxMo(=d|c^TJ$+B`kWT~e2aa)#XjGn&uOve zx7hPr?D;MB{1$tDi#@-^p5J26Z?Wh9u@G(jN89?3g=p(P@>gntE96QU>m9AOb*pXN zN?SinPK*IsZR=Lsy4ALBwXIui>sH&k)wXW6ty^vDR@=JOwr;hpTW#xB+q%`ZZndpj zZR=Lsy45yq)jPH7omy?*R@=AL_HETiwd$i<^--<1c&jbmYKynp;;puLt1aGYi?`b1 zt+sfpE#7L2x7y;Zws@;8-fD}t+TyLYc&jbmYKynp;;puLt1aGYi?`b1t+sfpE#7L2 zx7yFL zXKfO5$dEZ?$g?nH4jD3s44FfQtXo0mt|4>CSsUtv-3+N!0kTH30mty-3+N!0k zS`MOgo3ew@^$QrKI|yCxLS{A~GaHbZ4ahtmWM(6azt6()=nXQn0h!r=%xpkrHXt(_ z*+J+fAH6|lHXt(_Sv&3*eIZW-kiA!sy;qRESCDl9$lfc+-Ya-2e|M}MPm9Mx_FiS} zuz@47A;{h<$lfc+-Ydx7E6Cm}$lfc+-Ydx7tE^q@y@Kq$g2m9zTzZhbS8yt{&9Cedf?;8MEo`ra?X|GI7Pi;I_FC9p3)^d9 zdo66Qh3&Ply%xsb8bG@i#@`xvH>=jFYOSi)s`z^W3(1dqtJbP&t%|=6uqcba2*9se zQmrM`S`vQ+AbyRys@9TfEveR$YAvbOl4>of){<&1ss7Ru>gt4yziCh3i0Jgcfb3R- z>{f&9R)g$TgQuFqZZ*>ER?8wHJ;!5JFnUo$q~|Pbi(lET2BQ~6lz8&#ML~9}L3XQU z9o5@Wy&cutQN112+fls{b@|sE8G0l3GH0o`qk224x1)L^CUg86dONDOqk224x1)MH zs<)GRJE^ymdONANlX^R;x08B1skf7QJE^ymdONANlX^R;x08B1skf7QJE^ymdONAN zvwAzLx3hXXtGBayJFB;|dONGJvl=_Av9lUGt1)6qKbCb?V`nvXR%2&1c2;9&H6B4v zV@*2lT#(q6kl2-wNQ1CznRTOxT?vU@35i_^iCqbaT?vU@35gI0iCqbaT?vU@35i_^ ziCqbaT?vU@3BxxYk%(OhiCqbaT?vU@35i_^iCqbaT?vU@35i_^iCqba?+1xp35i_^ ziCqbaT?vU@32!a)UKH<_#<|3^3yEC`iCqbaT?vU@35i_^ ziCqcpnHjMwNfWygo?||-D@hZ(5)!)-61y@xf_W{{yyqEd-hG9<`wEF&35i_^J9-SU zD@ils0h#fD#IA(Iu7t#{gv73d#IA(Iu7t#{gv73d#IA(Iu7t#{gv73d_HAay!V+Rv zLSk3K+a$3oN#7xfT}hhQm5|t#kl2-w*p-ldACTCUkl2-w*p-mjm5|t#kl2-w*p-mj zm5|t#kl9X1>`F-NN=WQVNbE{T>`F-N%Irw|)eDe4#gIM4*^&4qa_~z*_7p?*6hrnD zL-rJBN8*2Y4@UnJvF=|a9sVa`-SbX>{->z_De8ZU`k#n?A4i7&De8ZU`k$iyr>Ora z>VJy*pQ8S!sQ)SIe~S8_qW-6-|0(K!iu#|T{->z_De8ZU`k$iyr>Ora>VJy*pNO{~ z_Jsc_>VJy*pQ8S!sQ)SIe~S8_qW-6-|0(K!iu#|T{->z_DYB3CaioR+De``MF#JzZ z|5Mce6!kwv{ZCQOra>VJy*pQ8S!sQ)SIe~Qd+hy3tAMg31v|5Mce6!kwv-eZqn!~YbS(+-CJDe8ZU z`k$iyr>Ora>VJy*pCWIqzsHf`e~S8_qW-6-|0(K!iu#`-bK1z%{}lBz_De8ZU`k$iyr>Ora>VJy*pQ8S!sQ)SIe~S8_qW&lTVghZg|0(K!iu#|T z{->z_De8ZU`k$iyr>Oslzq1hMhW{yM;eU$ypQ8S!sQ)SIe~S8_qW-6-|0(K!iu#|T z{-?+j6RoEIiND%_Wc^S4)dsF3{ZIVuhDeA1De8ZU`k$iyr>Ora>VJy*pQ8S!sQ)SI ze~S8_qW-6-|0x#2{}lB<#X|U>qW-6-|0(K!iu#|T{->z_De8ZU`k$iyr>Ora>VJy* zpQ8S!sQ)SIe~S8_qW-6-|0(K!iu#|T{-+Di8l$r=dZ8|Qp)Nd4oJ`K;{7u*{dZaFT zq%L}-E_$RcdZaFTq%L}-E_$RcjCjA6)#{gO@k?)#4!=~ZU#itF)#8`lA%}Tv7~`T^ z{ZcJ{X#wfe%k$wGj4o>NOTn@7OgRqkSBpmqUSQ66)9m#l=R(sLai^%oBk@io9*Or> z@kmQyjEHLSNW4*vN16>MG7hQ5Bk?Aa9;sH3RI5j-)g#sFk!tlwwR)slJW^OVL(Y^> z$yxGg`HY;cRdeKAIZw`)F(RtfBh~7WYVk->u0{U3ST2!E;JW{ZS z>?M24FN$-+ z7uDj6B7MHUjt|@LMI4DQigdfM1YZ=ami#>t(j7gfQ&@;E;(Eas1!F8!t1qh67uD*E zYVk$%SbPyZRzFjVp9w9~<*o8IdAqzr-YM^rcguU^y)wo*wfGsX6#NXOz|U-i^W_5h ztX3_QG0v&g&(!K?YV|X<`k7k&Os#&VRzFj#pXsWH>8gk6s#oc%SLv!(>8e+Wzg)8< zi@#hGjB!p^y~M>7|@r%IT$?UdrjEoLM>7|_B%IU3~-pc8% zoZiamt(@M<>8+gJ%IU3~-pc8%oMZ9Zuk!cRiQx=8;Gd7hWAlCtp7~dh7|xIw&XD-S zaI8F262qAsVmL!$IKzpaOAKeyPntsvXVS!QhQx4&#BhdBOJX>ao-OCdxpJPIFNxvI zF+{O|#Bhd-B{7^y6T=x2!x<9884|-862lq3F4xNqa-$@MGrtnU8NMsGNMbmXLkwp~ z3};9TXGjcZxI+@dIXe~)7HlgIk~NZe%j6To84|-862lo1!x>tK_>)Kz!x<9884|-8 zo-fA-@gzYd<1r#l3};9TXGjcZNDOC43}-l962qDFZSr<`hrCnXCGVERaOTK+B{7^y z^PUDIhBG9h3na>Sc3dI~5F`o^Bnl8D3J@d;5RCafc27nQy^dq(b-`Lm6d=+>0fIyU z%8sMgy_of(*Ri{a(ZWK=E?~$mU`RA$$Sz>WE?`JBV@Nb(*n|1lK8zfmhwK7|>;i@- zaDDY*y&%#9CA)x06U`X1pAoVP7_ti(vI`gz%@`8R7!u7GvI`ip3mCEs7_ti(vI`ip z3mCEs7_ti(vI`ip3mCEs7!u7G63rMA%^0%x5E9K8vI`ip3mCEs7_ti(vI`ip3m6j3 z7!u7GJ}lVnkX^u#UBHlCz>rWE?~$mU`RA$NHk+eG-F6KW5_OG$Sz>WE?`JBW5_OG$Sz>WE?~$m zV8||D$Sz>WE?~$mVCYrDnpC9E@+@`%lV%q%WEU_bnlU7rF=Q7o9B;YU1)TLMSWEaZ z^6_Jomk|+`Ga?ES%^0!^70*#!*Q1q|5* z4A}(?*#!*Q1q|5*42fn8iDnFmW(%((>c&-o6_2IcbJZJ3jQ?!H+&-LNCK0Mcl=lbwmAD-*ObA5QO z56|`CxjsDChv)k6Tpyn6!*hLjt`E=k;kiCM*N5l&@LV6B>%((>c&-o6_2IcbJlBWk z`tV#Ip6kPNeR!@9&slfoZGL@tt`E=k;kiCM*N5l&@LV6B>%((>c&-o6_2D@)T~Qn1 z!*hLjt`E=k;kiCM*N5l&@LV6B>%((>c&-o6_2IcbJlBWk`tV#Ip6kPNeR!@9&-LNC zK0Mcl=lbwmAD-*ObA5QO56@XWkMf2O&-LNCK0Mcl=lbwmAD-*ObA5QO56|`CxjsDC zhv)k6Tpyn6!*hLjt`E=k;kiCM*N5l&@SG=5cG2j=^N8e-<@)ekAD-*ObA5QO56|`C zIV<>Bt`BE@)w9Bf=lbwmAD-*ObA5QO56|`CxjsDChv)k6Tpyn6!*hLjt`E=k;kiCM z*N5l&@LV6B>%((>c&-o6_2IcbJlBWk`tV#Ip6kPNeR!@9&-LNCK0Mcl=lbxRXV~W{ zOZf0yAD-*ObA5QO56|`Cc|>x^a(#HN56|`CxjsDChv)k6Tpyn6!*gcXp5v_W;kiCM z*N5l&@LV6B>%((>c&-o6_2IcbJlBWk`tV#Ip6kPNeR!@9&-LNCK0Mcl=lbwmAD-*O zbA5Qu%o{yWAD-*ObA5QO56|`CxjsDChv)k6Tpyn6!*hLjt`E=k;kiCM*N5l&@LV6B z>%((>c&-o6_2IcbJlBWk`tV#Ip6kPNefSA@(RZ^G@Iu=l5$Pcj>EY@i{RC3CK_b#a zBGN-5(nBKBLn6{cBGN-5(nBKBXMMRB5G#b|#P=YvDazqa+)w*K1IU)%a?TYqiquWkIzJ@gLHwgK8UK-*Z)jC^flCeL)#+W>7Fplt)R z?Ic?K`D~yT4%EVdS~yS(2WsI!EgYzY1GR9V77oY zko|Ws#t)~Ug=5eXWOpQt@xv)-39>sfI|VJI3&b&l#4&^XrCmrIGe{h>Y!JF0h3t-m z?2d%-j?EynkVXr?q9w@gNXYI;$nHqU?#OHqTJFO?9-KzPQ;F?9gn8`Y*%0QX$7aJ) zysb10Esw)^pJ!N#x0QyW>kb%iD-C0G^g4{u(J=Iqk6w;PZ!q3g8peA9oQ3xIHQrVl zhIaA`@wU=1-V+GM+e*W*=ZEIk3t-G&4M#p{&Mk!~Maz-gv~or(XS8xgD`&KFMk{Buaz-m>jB>^(XN+>jC})gv#wcfua>giUjB>^(XN+>j zC}%9!>FR7OBht4aduRw*9NlJ2C~-%veyQ(*9NlJ2C~-%veyQ(*9NlJ2C~-% zveyQ(*9NlJ=Kp5zUEriDu6_T#w;&JOR&iv68AwLa7=tk}o&$^929W|f)K>_1A!S~P+o()W8l+mt=^K#KHz22PKu+I;-$kkkQ!nm96J8ef zaZl;vp3=uXrH^|`ANQ0#?kRoTQ~J24^l?w=btRiH+Vz8*FDk_$29LK<=rYSidUE{fNv(U)9^As50PHTrtg=<89VuSbo( z9yP8YuaV&u!6!@r(|{Gdc*h z+w)5DEf23E--Vz?rK_CpRpk2uVU0>xk?(v^qtaC#m98RR;>nlvsQT&+1vQ}dCH5oVKY-eos5cZSM*9Qxh63VU z-+r!dKi5}pC?E~_>R0U#)Ef$*NxsB;*PPx^ps@BOCa@LYr3D>39n{m|1hxV^R$wK- zzXtXJ{3&?XN&@@9GQ!%mlE5Z#Kd4=E2{iC%P`|b0%_Zn-csTN|m4u%WC;W^!;b+7N zKO;`~8F9kTh!cKBoM0`ld$nsW;aw{U?^;QC*Gj^>RuZh`_3M)^m3FNpylW-lT`LLi zT1j}2RJ0?jYfuDJx7U#MLx3GZ4-c-Kn8yH*m62&$cS ztt42>i?`Y}mtZZguy)NQSj#J{U2_S>3sKXql>}piP`lkgi!Xw zgmNoo2R^`tn#DqFwm zNpXTzw!+#qm+-EY1S1q-*3^`laSAzPoDyo+T!J+<=^3q*M!QxLj8@QOv=Zt`ae_6q zP`l<5tf>{&u9bv$tt41e(>qvA3$<%5!D?ElU2};@yXF$CrbSJ=<`Rr?LhYJMFvbbB zYbC)LC)BQ$1Y?{~yXF#%aYF5yOL*5xf-&v^!rC>LV5GxC5F?#XyXF#%bXA~s%_Y2R zCE=&Z2|rCv_-S&&Pm>d@o9Oj^nw;>{=DLTT>-chLt>)%X5xjz|P(Q;Ubr<#=kBx);jm44lgqq-#<Rsj+UC#9`;VVwR z!D%+SgqzUP1Hwj!H>*X$ExBRfR`YhdYr4aC?PS(5Abj2TzF~YbcM~yhIj^@Je#a%; zXWVZ*AdCW0h$7uZk3$CNal-DB1bUpX#CW>uLSI7$q7g{!faqS8EgG5oIylN{{$L!P z`#drCndTVB+;4oqIDuz~1L!HjO5;<^3rMH3&lavX{p(HtdVJ|W7G974d?=Xy^`?Kl>0fX9*XQZuJ9J%m z1G%gM@%9g1!pz|Ys8xV?=?C%54~}9cb_3K1Lv0zzI~GAbJG%jDYr}zF#|`w#Yhd_G z<}(AsA;x=*!IVVgq?!MhcYGYhXCfSnFS3 zFwM1&srOy$oqoGxcKO#g9p3HmTMqAW_-%*xx+MEdZNKq=5IH1YBycXM70N)bPzHJh zG0-cBfnGrj^a^62R}h2HU5|!?;J^~_B!{~o&x7E`EN~FK9fZCj4f<*>cq4fYLSH=# z4t9)A#|(lqtHFmv2Tdh>1PLDmuf~Iq!|g%nD8-L8K4~0By9`1{DV}#3gWB^pDCAwn zpmq}t;=Lq_nT&mS5E@A_Q{clOG?K#8j5CbYM(v#*gf7yrv#=Kpq7_78u4Cpo{G8J) z2+k#5JKP3^HU4#paj9{cafM61%HcJ}wWhG%W!T`DjpoTF(`H=d@lD6SWqjNCj_A;u)Df*hEof7rc6<#&tI!r`6=8`{d%XssRcI-+%2@DT zl>x2t6L1tW_CdUYN}CMWe{3r zAtlIfOa3({r2kF@Wfi=U{;RO8f=Q3RNsqrtkH1Neze$h3Nsqrt)cBi3=F32hze$h3N%W6$(fFGTHU1_&{w9%mrPuhI@d@HyLXDO@8h?`> zf0G`6lk|w&h|&0)3^o2HJ^m&`jlaoI<8RXAZ!*;Qn+!GnCPR(C$x!2OGSv8+q^Cf^ z<8P9lGJ&wh-=xRiq{rW+$KNFSkh*yMO?v!Idi+g#{7riNP0~}wkVfNg(&KM3()gQ< zH2x+djlW4W>P%4MZ_?v$5{){Iu*Tn{$KRyK-(;kolJxkSbWcfo{7rgxdMgsUD7+QP ztO;*r+*t|o9#!xj<1og-Tamyu;G>Lpw<15niN;Bc2)80L3&AN!@~ue4GH|wkooB4| zue>9b__dCy_g&iAax457wO#)8O^10GDlu<4%)3wtzwPio)7fu4AcW^ofZLQGZVOLW zE#S;tP`ejyg)_pZm`mRZXQqUu9%oBE&X#(dE%i8CN`04xrS!YmpvKu!kF%v7XG^Jd zni!3OFhn(dYmowI9p2Hrx7npU8%>} zA&J1KoSm*FMhk2VYFZ^S{?>RSEix3%whSEXm`5n>Q1sG#aFKDN(=-~l(3^(RYoJN5 z5tbN7&~`)VDNv&%_kyG8`$IhkE29ik!!lZSI(U-9veJ~Hd!GY)8f6k9rF-t!!mTQ@DX}n8B#GCe2kH<4BdM__=JCz zoumxiD;(#P;~k!0tngix4nJj_=or~i%aEu)fRlZf_SKi6dqro8f1T>^G~;yU&t>Rd z{VK~z8M;?B(s`dUbg#-Y+mz=zW}d^(v3sq|y0;9@s}?o>b&0Xoxi58inQ^&mx5Cs` zIcAMm7c@={GoyW+P?Ry=CZLg{6DTkf_JNt>*1^)7jy>qJA1mLsuqK}l@6XTRm1 z{gxxEPZOirZ@Fi`<(~bPd-hw7td1vMv)^*he#<@kEk{bp5h<+zHTy01?6=&r-*V4> z%RT!o_w2Xav)^*he#?=`H0d?_E%)rV9BEWov)^*0aVDtQZ@Fi`db7d6d(%aJspX20d=UZG~c<&5&sL9U?h*>5>=MM~sKsM&8h zawXL4w;bI|OL_KNj$Dl;EV(L2u6_b)_FIlz2{rpIN3KLiv)^*YbfIRy<;Yb%sM&8h zawXL4w;Z_=YW7=>TnRO%ms_sNJ*Jm?_FL}RZ@Fi`!_fA%;V`uQGEh$ehB5D50p4J| znc59Q|1SW`9HSk)!;qPJu+H&m$FFmIgJZTJW5XB`xQm)XjXKtWqeYF;fm|3JmV)ES zeK=CR9Q+w0#c)R3G&sa~k8v23hclk0z$!-Y;mDQ3)1AK7F)uhJ?^P#$y>XXgb{qE? z_c`T$;{hRUM|xU~+-Wu8>7ogTmw**Ut?!1z;o0CMaFi_uqiiu4WsAWmTMS0oVlWC$ zt|E<|FO0IqU=*BujIb;Qqiiu4#j1g@Ee4}lBP<{+i^M2f3`Tjh8tq(0JD1VUWwdh{ z?OaAXm(k8;v~wBlTo`SjJleU8b}plx%V_5^+PRE&E~A~xeID!YGqw9X*5Bu`{yvZO z_tCy9!}~&w_4kDu>+kbef1k(t`)JcO;eE7bJ*ct%K4?B4jxo(Kra8tm$C&0A(;Q=( zV@z|5X^t_?F{U}jG{>0c7}FeMnh#Lxn(#s7xgO*ltl>lCvIe{a*?5S&R)dggbyRV%fpB1q5Mh@6_yxBG9o;Tl+FQlQs5Ej&krAkW*w+9 zJPI9!)l(iPel@5a3y-_LPdGf*_$2b24xdD#gw>pk(>plQq27p*4)uPDbXegURk%i# zj(N&4PdR2H^p}SdiLV9mt_&*QNyIM(^^9N=brfDoZ<>_7Nz`;1h%f!H3Yzml?X#_drcfNKf+oL0b2T`QGFL$pgeGaADb&8%D%uVT(0m>g z&B@SQ3SPp9HW_NQ;C0B!GsMgf^-hFzs5ca(L%%N|oQ}*t3U)S%x6_gN>ELPHHJy}` z!Al*!j=QF#6BdBlV@xXg^7K%rV5T#RR{TDP_Ztrg=?f2n-PmP4oxY%OvBPJ;lj-n$ zd8oGrq{C{Lq}nB^rWUJ-QAw&@5_$WdOjsqUrbeW9Nvd6vYL}$iC8>5vs$G(5W+Q7z zsghK?B-JiSwM$a%l2k`3NwrHd(~>aLlJKm<&pK?M{NZd$RR>BYy0JW8?}^Yepu_iS?j)8OGy?GqrO?|zFF(OS?j)8 z>%Lj*zFF(OS?j)8>%Lj*zPXgV(qRgkV?aF*NY>!IW z9+jdl{Yj(eK`Gm#Qnp8>Y>!IW9+k2^Dn%f!b8N%9+k2^ z3Ju{h%N~`oJt}2;RLb_Kl!IW9+g6dFCs?IgHpCfrEHH%(eBD! z_NWwdQK9TnDchq`wnwFykt$yHs1y>SGRq#73T2N<*&da$Jt}2;RLX0jlN=33qrEHH% zF$+Qlm<0*-JSc_y2=zQDg)|}qwnwFy(cMp2&x2CP)z?8i4@xn270Mo!iu61vWqVXA zl07PAdsK><)l9;&N2Qp%3T2NTKO&-b!DqL!Q@wvToJcx>aZERvi+!lo(mJ>X5g^psZWyW2cmLs}2d#ud;5{*}7GS z4CpRdx9V)ys-xAEQg*F6+D>8Fwd!a=g=N>OqwR#UYt_+q+)Jxba#~F&yH*_>o(syZ zRR@QKvTN1B;VIz?Yqk~c`zzqpDq^I!SHgk0pmy}Fw7m<<4JBM@d)G?ayO`h6A}irT z8q{;8m9}@Sw7qL3e5fTx_O6xiVLqr4c_n;M%6UfFyH>&nQI@@HC4A6bvUjbty=$fI zT`O(xT4{UNO1PnvvUjb78w$(bwGy6)n(SRG;Ry&&paV~+3p^2O=i5qnG7Z$uw3YBg zD0|mRc=A-Z%KCPd_3bL_+cofKez+E1EeAFGS_`if)~J_8>ZXFSBc+i&g=I%d+m4jB z9VrdX3B<^bltyPh0LqS(MrY0dWk*Wej>LM1R!-ZFl!muTBRf*scBC{iJch9BNNL-V zm}%1c(zYX|(V0pqJ5m~*sg$xKF}pO%j+91cDn@psG%ckV)tVU`R*|&rNNIHDc*3$H zrD;3;DmxPMGNbHBY1@&Q={QDqq_piwY1@&~w6ZA6j+CaY6_y<-ZJo)8?Xt;^ltyO? zWk*V*GZmH{DUHq?3(Ag^MrSHUcBC|NB5JZDrO}xxr|d{+bf(hFj+FMgK5dkJ?MP{K=0w6;@2Al}!$8@Q(&$W~>_};JCUvnLDUHrl zyzEG6q*r&zj+91vg|Z{1kzS$fNNIGYP6>X*G~~k%oE+wRWhd{7|6G%RtTZ*U=Y*TEDOJ`W<^P{d67L zL#XvTs}QuoI;3t9sP+3g^n=oC{k{&Jpp;s_ucLj1TEDMD0|>Q#Uq@RgrPlB3XbX_G zASJCp?zDnX>-TkVYze6K`#Lx#)cSoL9Ge}kckgbn&TpX1HDQBweuH&>gLQs`b$)|& zeuH&>gLQs`b$)|&euH&>gLQs`b$)|&egpEq4w};W4c7S$*7*(8ZYeR+`3*>;(&&js zgLQs`b$)|&eghJyU#0UKsIO2uzk&L4FZEpnO6NCFU&>E?=YrDt4b)dCo!?-czrosm zBlFv*!;Q>ug*pwfk@)Ixqn~na4E2$!m*ytP^onxbO-0U2;BHMN0)|Rl=L|ZM@+a15%@!OI1x^TPWn=AuOmVqYAK$B&l z$uiJn8ECQ$G+73kECWrJfhNm9lVzaEGSFlhXtE46Sq7Rc15K8JCd)vRWuVD2&}12C zvJ5nN^l!2xG+7dwED24PfhNm9lVzaEGSFlhXtE46Sq7Rc15K8JCd)vRWuVD2uoDif z4tK%7D2roY?tcbooh)8B3SyG?($ z>F+lE-KM|W^xrc5w@iPJ>F+W9J*L0M^!J$l9@F1r`g=@&k16jl$Z${f!fU@m3+qU0~oGZOFXR~el&B(lBw6mqzw*6*gK22D* z{bt+tn{C@~wr#)Jw*6+?_M2_nZ>C>}f^7TE^bUn(+izxua4sm@ezR@+&9?0~hqCQA zhqCQA+qU0q+kP{%0>#L--yF)e-)!4{v*!TKw(U224$y4delu3(gT*#1D4VQ zmeK>3(gT*#1D4VQmeK>3(gT*#1Cr7x(CjOUjC$|DgOT1luo~oCEvR4hmI1OOIJf&3go;e$aznY^Pb@CM$UT@E;VxAlQ8E! z!Mlt@jCUJ3?@2u8JweWUf}HmRv8sVs)j+IjAXYUH`x0-~;iMJO>iSb0CQ4KoHM?AiE<#JO_eL z8pj#O8z&g?9LTSD4g~QW2;w;qe8!09K*D$q1g9DC97q_?fgqj(!9~W!MxL1xgXcgH z&w(JG13^3of~$>q4kV1{KoHM?Af5w3JO_e!4g~QW7Xz92MZSt2ZHS4151o}4kV1{K=5`W zo&yP&8V4KiG~Q*zb0ELoZNzgRVLS(dcn$=mg*v0F$AWkc1o0dg9fxGrf_M%D@f--^ zIS|BiAc*Hc5YK^;-d#c(q)~|HKoHM?Af5w3JO@U4JIVAYW~qx=>SC6SFXe-u7y#i&^Sofut^Gsf$_aVwSp?r7mWvi&^So zfut^m-WE#gV(4w5q%LNui&^Sombw_)Tfa)`VwSoX+FM~sUCdG!v(&}V-ioO;O6p>k zx|pRdW~qx=>SE|>{VJ)8S?Xezx|pRdW~qx=>SC6SC6Ea#x6(`p zC3Suu4JfJ8`)EjGsnh#t6qeNKeKbNzo!&SzJ&IfE;+DF&r7mu%i(BgAmb$p5E^eud zTk7JLy11n-ZmEk~>f)BVxTP*`sf%0c;+DF&r7mu%i(BgAmb$p5E^eudTk7JLy11n- zZmEk~>f)BVxTP*`sf%0c;+DF&r7mu%i(BgAmb$p5E^eudTi3-cb#Y5w+)@{})Wt1z zaZ6p?QWv+>#VvJlOI_Sj7q`^KEp>5AUEER^x75Wgb#Y5w+)@{})Wt1zaZ6p?QWv+> z#VvJlOI_Sj7q`^KEp>5AUEER^x75Wgb#Y5w+)@{})Wt1zaZ6p?QWv+>#VvJlOI_Sj z7q`^KEp>5AUEER^x75Wgb#Y7G36?s&b*M7ZTZh(ylDZQtbthQY>D@!bSnBldAyQiE zPO#LSV5!qPhKRS+oyZ(@WppBQ%QVPdDUfG{;9Q}62Sq0`w-Mrb3B)TD$bKpi&r2Yl zmq0u(fp~=ic?ucn%|s7?7gElXDCam3uTYWRKtw!c6XM+n#JdrQS11s#P?6p=G%h-s z`qqJ(b?8k)b3r^OfOt*-v2TM|l0lxEfOt-b{H7sLvkt#$2*h&&i01?l&k3Mr9eUFc z@$#Gi;yD4tb3#-=PkbE2b1aDGSP;*#Af97EJja4~js@`?3*tEzJe?92;8mas#B(f& z=UDI@Rs;p|ItZR`#Ookoybgl+zyvQh;yIQuo?}5g$AWl{1@RmU;yD&fIE?35!avH5 z2JsvV;yD(?b1aDGSP;*#Af97EJja4~js@`?3*tEz#9t+d=U5QWu^^sfK|IHTc#Z|} z91G$(7G&Qki04>vgb}ZUgn1eT;yD(?b1aDGSP;*#Af97EJja4~js@`?3*tEze9|?- z>mXsg4uW`&1@RmU;yD(?b1aDGSP;*#Af97EJja6USOD>C3F0{x#B(f&=U5QWu^^sf zK|IHTc#Z|}91G$(7Q}Nbi04=k&#@q$V?jK}f_RPv7n>$t2MObK5X5sVi04=k&#@q$ zV?jK}f_RPv@f-`{ITploEV#~y=UBpcjs!jt#B(f&=U5QWu^^sfK|IHTc#Z|} zItb!97R2jdR3NW|Af97Ee4>K*L|!gvD!wTdZ_*Fg|(03e=Y zK|IHT-6UNhr(Z!l$AWl{1@RmU;yD(?b1aDGSP;*#Af97EJja4~js@`?3*tEz#B(f& z=U5QWu^^sfK|IHTc#Z|}91G$(7Q}Nbi04=k&#|C;jl2#L#&ax)*Fg}kgCL$`K|IHT zc#Z|}91G$(7R2jdRKS{!cyv4Q=yu}ebr8gJEXY1R5YMq7o?}704uW_c1o0dT;yD(? zb1aDGSP;*#;OXjLSWD<%5uRf~Jja4~js@`?3*tEz#B(folhHjf!gDM!c#Z|}91G$( z7Q}Nbi04?a)QHzX!gm_+97`C_u^^sfK|IHTc#Z|}91G$(7Q}Nbi04?4=anGOD?y%D zf?7Ei$m<}e^b1aDGSP;*#Aa-vM&#@q$V?jK}MyH^|=Yv?k zL9E{(o?}5g$Ab9q0kMaJ*uz15_(Z2LMvw*_F2r*zhz}nSA3h+SW1~~h)r4sUXwnKo ztmPoj+@r4e3#tXXL%AzCP6uVr=}NxK!Ha3ZuH*%h7r&C1uvmAIm*RUH@fSpxQ>Y-% zXF;`NSL~B%@YdWSkSDfax#Ne6K2K5E0Tb5wSDxDvUg!7*$21w6ojzmC3aJtK@^p0- zSY+gxT~z406uK^Y58ZTPRF^{6rOr&{t6uK^ju1g_&<6hUL&~+(v zT?$>7Lf56xbt!aR3PaVU&~+(vT?#|hrOzHL?CbFNb#M3^ql#RwMqJw@Q9{nKfu6iMv!V)99BX{ixr{T8 zH%>5C7$*i_xjK4Yk`lkv;So$-s@8M72`o--0D z+}FQe;a|Tm?lBT6x5%gNTI-mN&SjG+H#)r8;VmxPR)@Dc<(tO0jBgv? zQ7(*<?#RF!iC*c7bIL*VwBCZ8?p_57`c@GcHW&sw{A|a}6{1nO7mX?`Hl8I4=v7iO&rzD*4k!F;e|lDT zw5zbpIE*&x9*)TU9>lu{IEfbQ&aM^RJDoaq4{IGxJAJ)>eaY$fIex$KfH9|dRxXr* zm5VTLEKnJkr9cy{i#M65Tkd+W$l+p#hanYu+t&oJ!dPj1iq_QIzUFWqK-#9r`nkyZ zxybst2yHV(rv=cHMb^(n*3U)O&qdbHMXVr{M*6vk6@*awxrh}6XREBAi>#lEte=aR zZ|hg-=OWK#lEte=alpNp8waj*4rk@a(t^>Yzp)->X!pNp)Yi>#lEte=alpNp)Y zi$dw=qEPy|$ojd+`nkyZxybst$ojd6ncMTEk$x_+elD_pF0y_u;+fGi#7jRHS@w#o zpNq{gy_>8*=P0C~^=>kSrJwcoF@>d{_4ctkP`W~I9}`MH>y2YV>1Vw=>^V^SS?>-L z1?gwKJ4`73tapbArJwcgu%V#zv)&yhlzuL@elBLUrLgpKF{>@%lg>r@xtP_KQ2M!; z)s|5DS?><}7AXB(%nC~={anlnODO$Z%nC~={j7I^iL&&w-UX(x^t0Xtrto5?lzuK| ztt6CwE@qV^lzuK|l_ZpYE@qV^lzuK|eI%5AE@n+6lzuJ_q@VRJuyZ55=ZhHYXT9f3 zVd-bRfs5R&pNp-Zi>;sajxGHv{j7Iv4F#p2^^PswEB#z-{akGQT#TeWLyYuuvGsE? z^0tt$^mDQGbFuYvvGsE?&yiOUFa2C>{akGQT+DM}rI&s#wtgE~i3R%MfZF6P;;?v;Kn4yB)qd6FxXe%2eo2wOkvZC^;B^|RjgMP00)^`0+>P6YCpNp-Zi|HexEd5;U zKBD(_jg5L(KliYH?qU7hgT0715-IPVa}Vq19@fk~teJaQGxxA& z?qSW`!D3oUIVa?pbnz@HHv)(mE?$*pbteJaQ zGxxA&?h#2d_h5C#=?H7)9@fk~SdmR2Mw+>YHFHmT`pT#$5(`@M=>27@BfYt74fuc% zZV&@EgvG|Q9pBrSPz>c+6P36{O57qPZjlnVNQqlSZ#0`i8nsA?TSV_Qdz`RZq{J;! z;ug_6&J?c}DRGPFeP`V37Sa386jqCrxJ63bB6{~3cezDM+#)4zkrKB^341=*@vBD6 z61Pi<+oihF zrug2*gyZ|OYCD~}3(Jh7SaY3Dy@;WNQ=?wA(JBzHWuTtt_9CyvAl_U-t!I0Y@5A5& zLh>aI`3j43vq1ccgJ=8K-bOv)?FHv6K)j!UgJ{`atO094JfVT*j?o&h7p<@atn;t< zMkB2CY%kV;O5bE`cKVDlD}?9d3(tl4Ee8vfJKTOA?1nV@!kbP#X+(QV}QASesQZRAx6YIn_T^Mxx;ksFr7P0=MK}k z!*uR2ojXkD4$~<$ol?^&HJwt^DK(u^(odrapZ(eAA_%c6SQHB6e;jxG=@BlECM;92|l10=#vKeLhaQVMmZJV+o3U-ugi7<2kH3iK;_>@g5e1z?fGcq$-#2J@2<%nDY56~;>AQ*d|$vjWcLTGQT3 zU7jW^O?xkOsgCZYF4I9-lJ8}l6>`!C#GfI^Ngq&F)_a-ND9lM8kdr>qz1FMuTCd(~ zy?U?p>PY7`(s_*}uW8Xp&dYNum>eI9MnZEjSj9|WB%G-Mr<2!6IHQ<)|GM7syO6z+ z%%Bv%-*`X>H@J)3p8>lWi;Ts_GssJRS2#y!l-HD5k-Vk|k4J__Q=U5T62`dEl!tS_ zl&2QdewERbXEj*sn0o)Z-tqe!v)_0?NJ&UfNoIrHj77#`;~C^~AGy>-W5D^*{VtFE zmduYHq+hHCFGdC)ME=v@0}6*{8+!|pL*bM9HPWt|M@hdNd_YJ_VQ(QRmq(BDoVOl4 z+jySwe4}>sJs#W>oCB5xp8{gDd&VCa@uNu0uT>s6qcGkS z!C}n$#=;qeIUxvgDjeiIcr+Hy2yZstV#GTiF`UZ=r!dDG3x9;11c}DMr8Qt75;zVn zy#Stxh8YK!gy$L0HCmG6X+72n%< zj?#zc8oy{f-}rq|V64$y{n5h{(7-}`*Mm3HE)!V$%mvFFU+#GAc9?)>)~|K`HSJ&V zvPDdTW41VDlf%spXN*~4bfR)cS5QL6P3p_IDJ(ILpx0EG4;AJ^1?z}fV#J3E^P$3g zs4yQY%!dl|p~8HqFdr(+hYItd!hEO*#fJ*>p&}F?Dnjw00_(vGp!iT>KH%k=8sX2_ z@!~^;`A}g#;OWir;zNb`P+>k)Fhc1r@u9+esK8n!%HjiO$Q%|QDtHhf1D`zCe2Mq0)S)G#@I>hf4FI(tKd110SBErfWdibDp9uLRoKk8V^o{ zOLM@Jj9+23HIaGOTJR!9z=_;D5&RncVj^5x0zRM^xI{|0BrH}uloj9Gc#hJ;CE*v1 z=NrH8lnLL}pSj;e?4m2c8yuF!U?RL)3d-g`5gVy~E%UFk9!!K|lnRb51M8e7?O)e9 zzQHj~Mp+Lg!YiSy2NU5H<)PM;6JAkkcqJ?`j^Nix=G7$gig)?KpGoEwyE6#OkJcPe zysAQ$szC9o%Dk#Fud2+eD)Xw!ys9#X%w%j%&RK%iudn1M!e#^ z6UqgNnhc6pRpwO{a#crIys9#BXxm^Qy|cVqb9mqr@DkwX*I>Ggi~o3 z#$(#03RDU4Gip=`@e-l1OE}dfoaz!zja0&^%m&HVC7edt>Z56tstQ!8rja{gawkmg zLaolGk-Oq$8<|G#is^5>!B}QY3(2=Cn(kUphw}Y|MR_`u3Aj{-Y~)NjF=LHS8r9-6IFTphj4k+#Q8R=Y zoVgRuFv_kqgVT1xxkk;CXK<2EsCn{?Q1j#&oS_r0F{IIrp%fmaxBa!jSePZ=i~CmFXGw;7v^uNq$yV!agpNErPd zoW+jZdaxHXXE~Qy&Se%l0dIXgIaU14##@ZH8gDb+Zd6HT1uDrbo_h*al36^{)V=eK z3ymtEvds!qwpl!FB)v;Gi)V`ptDLih?mAPVQio)rW^$Q9?hm@5dPphIv>Fo@Xy41ULdH$@i(VRUhHNf2SDA4qsm zbQ9rZw1YJ5d`F%}=ivVdeia;Z*|+;9f`b2f!!LgpeEMhq{a3#T&T}fZ#yY3YLHNz@ zT>WYMA-2Yx7PSAyHUIeO;IwaDodB=6vM+e`l~;g?tNVZlQ-(kNzkm6Qpd)#z%*vgk zqF}uEci+D3?rA~T{TAo7Cwz+?6c)QRU z-Q)aCXjj#4X1jUqcC>q={dw&#Z9lyInqz--?5~bpdh9zLj_vSxhlUQDI~?e6pkup^ z-|YCajypQO(edq0L8o}9f==B#UC`;9of4gX(dk#*-SXGzzD`p*Ej@N=rxl$JbS~)J zz4H$`5AVF8^MT`H$8|mKjn-7h9f-Ay#bZB+T@xED>g~^q%|E_({Oow&_|@_Mx808T z!1&#iWO)3+6JjTAqC8MM_8tA5w3F-2_UCmeZnvY;()PnU9O&}RE|+&1*yZsqYdcLj zId<}yCtr5*k50axm~Wo^^vN>{jy?IZg5rW}3;wO(u7Yx|y9(wM>@3)KO0R-zPx&_2 zZKupU`DtR0CCyzYKMghAcbWc9S=jzO^48xw?RFfy6#iX*%BoY|($%$VyO~{k!G~XT zJ-buENjtlq-}UQVFYEgKb`v@@w42cNpSoV#_20Vwd)Lc4G<5CX^^UH0cOBbx3MpoG zo!P0N>k7g)EYmw_e@8-0h#b-O{bT+uPk^-G9{mXF;dn_}pZkvuvanHL_n|Bl9}>&Dn|_ zYYTI&mv{=k4VkG7deV2lK+nBc{gz&<9SdjEGf!a`z{N`P~o%XfmRT$-H{F9a`h zy~4GTYjbc4xm^%sDBlUWJz-&P137<#oe(du58{RJKXRKWJ3gTCf$<@1UMbJL!V}Qttk==yxlNQaM#(OvB-c?o?G+LqCZThmrKaDereC5gO~EGK zGujw*q1Ioc)}N&uamuli{4@uCmi-gTZyR~NMqaPOjW4lodWig9gMZ`U-*om6%x4F| zEAVJ+3y%tNjjRh-5K|k3aHmmzKhzt(0UQoY@ro7>@lK4pimVljA&c#8-B1 zJGFd;oF{VTUmn*MQd^Z^F}W8DU@Ms$|$R_5GTbVs>MtfYCdn-6Dh{L}w zxha%;F|GS1Wq*yb&kp`)ZUq#d52jO&tFbV%j|9yavz*Bz(B>A3+o8A_ikpzcSZ*!( z?uPPCRyEs5wT@H`Phv2d9^$UsYAVGt_pq@xHLOm`UdWPox68%_Xaqafx>3E zu@5Snp|Sxg8%aMY;It5JzMayqrNlc)yBBWnLpRffO9>VtL!3D$#pn5@H|01c_ll*e3$0iPE!I~pwRxHHG(!I!%Ci;u()o{V&_52k zuR?Pt<=aU4UZ#BOpgq`faw6wX-eBL;c=9=qb0ZtM^8`wFQNY_M*`4$x6uy8|eu^@D zfl@w5?^r?acsA6V884(qeVQ^My~y+_v{xZ=b}GE-2LFp_tJN~b(i2+%Jq7SC5tKyOKU!OCPS2wsIeCk8UVOB8IUp z*7`v!1~>}E0?X91$Up~r=NXhpzU7+G*)KvtcQmlx;*9Yjez048r~Axuc+JyvO8sR@ z*9*z{G$s5BrTe1$L?@&xhCc3sW;`eNM`U*ceW{jwHX*Iwh$!N_+|~YfMPD$m4pryp6kGqCU&?tN{-9 zpse3%;qc3F^i0Zpd<#dnnxp@LCj52K15UmK57xj*X+!x5T?;4c&B=22|22nkF{GAx zj=XK{_YxZTIpp9%@!(4U2TpF{t=ka6dqb9GSN0LQk%t#vN1 zfw*YD6mHTW$@?2n z_yH6;LE#)Id;tpQK;a8eI1LJYk+q9iU7W{i;5?5%ufT&>sbwRz%uvfWq>rg-hSo1Y zziPJ`Ga1_Sir@m`|42`17yO(uuy=+l77U{t|3W#wPdRR;PKn^V{L+W-zQK>V>neUp zkTO9TlhpPU>i8*YdrI&Sah0Tbifba*B(6EcHF9ksyp5}g3+}T9`f;#}_}yH4xb|{2 z2fT4N_(vrF$Gq7*!FuS&_`pa|cXsv%S42hHLCW_T?0dZ+xR+fwo!K$dIr>j7-bNSw zj_W3_vf!UsKmC{*ACHVMuOW3IEqy$H5ponmj*fThok+buPwhTWz0V}>H2x%qU#4zf z7T>x1TJmRqHYZYw-1eWuqMWxt%Ap z)1q!z%ZvCf=KBKr<0X{wXKkdSoHG8HGD<3vNJT&D--#0SLn^Lmk&1pu1@8$zC>81h zl8Syv#WhI9HAuxZ)a@Fiq90Px5AI%rR9u5pT!U0xgH&9DRP;kC`XLqlkcxgtML&Ap zk6I+-8YH71l5q`^p?>xG7RmVhyCkC%lFg& z?@Krly`1yV%Xz-p$kWY6bT#uZzR%~nELXuE`0?z3AJ6{x@xgaPNocaWo8fj z_+SdxRIX`UGq|cL*G#Twxn^VY zxmI$m=6ZoE&9#o}MSg#Y@AZ7Y%y$FdukgKr?~Q!FYX-|n;K`UaCUXjSGG~A%^NhEV zUGd|2%G=1k`0+deZ)9iuc;0P3Ib`k1Ol~sgeJ66-cOqwfCo-#>81`VU_$mA|mT;ZU zbq3dGxIT+V+0XHQj?d$X`3qdm?@zQ2O6NM_67SD}3ow7*8$OSrzl^)0S{fcPFdeKSI9|`s<;; z9xV}L?sh5q=Q>vHt#{m?%P>pa%bIyVcfP}&d%5#1?$W$%YjCVnK7##V7Hh{5%wR`C zZ#0y!?=der9?GYAuD6B~$V2}-?4;Tpw4)a1hPB9_-U+rJ9(07#Uedfn?e~&y57vP{ zw&W>4n0wJSc}s-&w3*azlX^F)Rl@zG-c9PaTS_S2wOPlKTb!25uRC91u9u>wURyIK z)|)i+&VspE3HC8B-bG#BVqW|XG@pd#6lmT{2_A*!!L?`5{;+mX8^C+DD)UCoCG!>m zy%Avz^wX5JfwIc?XFYURLw5yq*&)U5ktdjE@>VW5Dl5kVq{!a4;GR4OFQ%-kp;IsJ zxg|!@8l!W&NW06{1>W{!Im&Z-A?Y=DU8(jKC&h8{dV_m*BAxiYAoUK~r3vawNxh2H z@_4^bIgnbdxQEocnft_8i(g7lxQ?7;_jul=I?W~1z03K9H~dhdGmxs0NWp045*@A z7b(sqh0X_m3u;=STtttO#Y2{towmGa#dm^3dPad=+9*3<-o_Onm5ccAe*MBdx^t6p ztkCm%_My{Snv*{Rm$8qTPBkUhx+%@NsWIq^%xUdp`(p0x;FuO`!`sAEnNsJVy;n=q z8N+9ARcppVj>nRcXL{HMRHj1~FKmCLm;GxeYwDfozl)fI+>txLPKpD_>^5X}J6x3p zlRU7Cl@iLD)ENAf()@xFvzs*-NH|09?8$0aGLl~rzkvoON9xy(U!`qjr=YZwGNfk# zy=VhG-38qSa!x^eBhsWd5k1cea0hq2%3a&JYo}V1H8J}~DanhZti*co4t+brdiQzy z-eT6gyXf2dk;CUH#X531hH|rWk~>8EAyRB4#T%rkrT6cnZ>=FE^JG#zN2)qfjV0A) zQtc$wYWkvlDZfg}22$1`U)Xf>tw`t%X6FU8C97WSBQLXZZ=yb%T2}3!@k)Iw((@mT zuI$pIw41y-$J!N*qh5L5Z?ZijL^td-y;q>Os>K?RZn3$%(qd~l%l4E!&8^zs2F(r7 zTpDg+zBUd^b>2Sma&VGYaqLZl(pF0M0+cpUx|do?cQTaDpk$k&axzrbL!~x)oYosh zt7$KnZNo@`ER$O(9Wu)*A!S@bn_h?v>iN4`dVc1 zUp2asV!2Zc)CfeXQoi+ESx;!&rj#|TfYj{jV1>+6S!8Y(>x#};#CGcWte(z>1EFv; z_M-=~3$ zw$oXQp2d3d^VkHw!piWgaP49=+1JsZ-(daKmleT3Q}%1oh5tSHAHlz~V*5F(@&3WD zgWvLu?xx_5U~q6}a91z{=_m{S5Ihh($a<`j)x$*eVO20aSQtDXtPEBKYl5{weXt4X z*%E9;M>esNcrAD%c$+m?bFeSSgdM_;;c+3}s>1GJQCJ+F5uO#E9rg~-3C|6`7=9@{ zKfEx!Jp69>{qP4NYxnSfhyB9=;V;Ag2!9>^CcGgW6#g#Mo4#-1&C^49(`-5KyBr=q z6h0D84xb69g>%BW;k@v52!7Q#oT^#5u;EoSFMHr?Gl*66tf%7dUbBCC(dNz_ZD3MBj|Q#WTOl zqwhxFi~4XT=qgSD^^5*F`f+qECw~4H=X!n`{fx6YgQEY8eiz*w-NG*Ya`w&to_*pY z*~2_0dLVj)-NcWvpY{oMi;j!NvpcYYonqR_GmRY^GkBgqlc(OZc!E18h(6nq{uJ~a zd-`2ivi>igQ*K4`e_}ql?YZVpOksoEO3ia}OLDK}(z)HaIl0>0%emLFJNC>q<+kNs zp*An%p3W`HZAQQS-9LDh@aek^vK`&11H~N+^L0kJDFPsJSzwYRl@H# z{r^^Y%e$+HeZ#-J`S&d_GvAiap^zeSds&Sf;gfp?z=v$GWZ~&+*z2CPs5p7MW)&*Am>5H}u0(i|RuTa(d0 zR#CQ>v4ZfS&unIv-14D5YjO*6c)mt&{SocfK!5rpy=))SzJWWpx5|9}24ZOu;y2Mt zH&OG~b6aVh#@vovJ+$guTeOw_$Nii2*@ymM;rcK8`J}a<8lqKud~l=W=SUx%=EMG) zTMEDMn@>-830<(0QFII6_cN<`l^%gTpI(CBC;mgzG3LF`4DC?9N29s^+}US-#+ZAN zGI~}{sWsPXQzl~8V{ze=UuQ6n*_SVyMzQyP@?%JAn)m*GD2DNQ{fFyoxhZYt1he32 zz|;9t!1~;}+*>&$s&ys3z zjyE-;?Utd{Cg$)AODSiz(j`rkxIv25N5AUIJ=W&_LAha2d0BVo#&V6|TJPUA2YZhE zwo#`bHy54zI<>+-Qw}>z?t128H&OrJVBh1D`^_Pm{=a2(%g^<4m*sy&-jKGIa4D;o zx#;eLTsoXWOR6pGBRTk?3?p0rVXs4wD{K8v-{|<)@-pDLkJlUd-zo17&%<`K$k(>E z_x&ZpthweKPDks6BYo6{l$BWowb@0xtt8awF=}mYF>%b|+I}=Hl47;7-q?hEeWcYA zEjU<|^pTW-RqVt7>Hp91WV7XiWR1#=%>6DmIyV{VTb7%IWKPaaL#HgxJ%u#SWsg*w z53>3MRK_FO_-H|P8%WWZ<6Uq_XbRd3TN5MsYmmD8!PROV#Ul$_826iz>Aj5Yo505W z+=|~?W?`-Of6~6O!nOJE{Nu0>t-d!uV$;j>dheiwGI!bBI+`DSA3uydJ>&5I+y2)| zyKUT&!Yw_E($V(YXv~ZiX{=4tbORHv}NBSIX3CQmi#uYu|qQF001Po~`xHbFZ~5hwG5m*bn$7$3Oo= z51)7FZpwLY>wnB3*W_+)9mf^RxZ9$i3BA>t&cEzLDz>2~H1m|)=B1}?lD|V3$!#em z`u3n*>TgjHG-WHNJcorN>OTi{f_cVzoj6-(T2sG&+1^j9zW*H`_7^0zWi^>^-L{&E zR^6PRvEnr?c`d&%NBq;Dw(at#Q-9bL zhqMoCmi$OwBpQtW8+cyZ@?o~3@vA3tzT|9g$mU?p<0j2Yu|j0lbIEvIUJ=)+z9 zpSfRNgB{DWPtB2E%CAfaiBpH^nL~Fg#2Tfwm$g`1Z4qLgd*~wxASJyIY)P%~kw1r9 zn2wz0qs3Ay&++qA;N!v4veM!yM82d)m&cK;y+?QFpH7wM6|2rxJM(L5@zx%s`>9D& z%edc?=7XuWz4uR~Y-AkzkoNOd-PM*d`!L#kI90Lv&DHO7Yq3!1sG|{Jt_#8VJ&SD?4KA&QD!>Rmr;O{K<*c7wl z;VjM#wPV-&N$kz~b3gGmH};_9t$*#=E788?uQkaD1Wq{kr|>Z?e}(L>D8VLm=*v1|7J1aDVIdS?+IpfD`??YYo2Yt z&xDKGHFxM@O~*cx{5|4x{yKru=u%!C;dSeEI$UpiolG0FUdK?5cV97Dr;vK7eS06g zv|p{a>#4FSpLgG<|5YcISKs1^%A&N&UwQtY&tH!Nt-Ken)rPH?+D+}CHvMFMK1g0P zzdGI*e#()t6Ogzg{dFVFX-Hzoj>uVj2lUVUr=LUZ&_?nU(1YtlWcPc)kNE!!oVU1$ z?;mpZ>O%hVpR?F$DouS_%m4ZBjxGP?;}!Q6c;AOoos9-P*; zXUMJw6PyY9BLC;FZnR)eH0-C@GgQRhFMaYFxrIo}*EiY!)r;`uhez|@*B$d+&JneK zI#cr2zruqxX#F++t+P-0Kh>pA%bzStSE2LU{^e^RRQdJS!DVlamzRj1Eq_JaT}0kp z4_>G7Yuihyk94(7qp->mkk@-JqWoKe@3xop?-vid+R|+M+gI3o*Y=9J7pW%|!-t;l zxz46_PNrUJ-_IYsq$PEltSfn5?K&Rm-qyP4TWJfq6juJqPc{5MpT7B$8_xqGEzsdh;@4Wt^BmP~< z9@I}Eg-4dWGudUD|9qdXOSmrO`UbNn{hiJZdR_U?`J7JEIoPiE2Ic%+6buhWLhTPh z1-VuQ)6mN^g5|-#1S|Oa5B9EZ#IH;vf48w;^_}2$?N(*KYnH$AAjjXZkWVl?JSIFZ z_&xhnzY;76zZ(89SRA#BP6-;LpGQ9r_OR=7Q1EtiV{~J%H@b;)a(F?&<8h}T`o|jW z;{5urF6|q9Gq{17`(~_U+gP!0W6iz}yA}H;Skb@2^GAG>VFTQWUFfCUW2D%~vz^7P zGphLo-@Pqd`v1`vT&aUwFY;V$+b6Wzhpo<9SHaZfuz1()Juy7j(=+P&PiV~#7Q0QY z55|3P;L!8T4^H>-`StxQs(;F2gxz7i*Yi#E`mOwJ;2RC_@u}HIDha;#-hDq3t*7CK z;x)6>=RNZO?mPcJ{~u;Oe6{82!At1zyn8NOa=X6V}RgH7g z`foee4(wRN8T;n)oO2^~wpV!C*~HWC8yV-Cxcm3?fMr~DxdFQ8Z~r-b_l5G$&G_I_ zv|8A5!#_CP$Nkqs?f!8u>0iElf9i?fpVH-j`4W9Jikz3^-4^eqA>G?{cf@;B98FBy zz1JUX`Alv8TJZzm0I_c*TR23-}3#p?VglBpVkN5dEN*7 z_91_g-9l$%^55+Wygoz&GqiQKFa?`?wcQl z;>Yz~&iK%tN4sYDSk>Za=D|lu!@PRzVPo;f)N1>Fyne3+YCEnR>8_)-a~$d3ze8M0 zn;ojBTk8ld>9W0Fynp;F_v62au0B*o?_EAL;=kI;d)5cc=;@^gV-Eh}eZf8-|1fip z3hV{1u!2|u*6_U;-Tr~A{MPZi4X>ZiTf5Q68_2O9jl7=cy&DgevNi9&?04Rh^I>Rm za^ww4xa-{|`{?`cKTIk9{IrL7ezY_gCH3s#H9ci(y~lF#X6t|N{%&0(Ry>YV{Ak z$?4k1GUHahXy}we|iP)o+#@{ou9AJq_-f!}j&;P%7J2Sgep4pjao_S{GnR!lDNBc_-;B{bB zT65K&3;naTFH@|)&rO(O{v8`mF~E`_c)tFQX};ZL|DALoKBNIA*>U(sF>6U{R0V<2 z^clFZSx)i*c>(vCH!s01hrKo*oMC!D{r@X;=>44kSKkOb{Qj%4|8K|pv)YFFm)rk$ zz7V*F@+$nt^tPO=#+-$5&=Y7EAekn7352)=epfNyirYqQn)0!41!@Ky_g}gGDrNdB zY5n_QV6LqIPHZ73|6#g&Ith%-(~G_qKfGf*E;S_jf-Mr1lcp>N_w(n?}+FBu%m0`0SpRBi!OFp3 z9Dn|++4yfw{9~u-{kLZ1KLz%2?%S05Ukhal{h!$X$VwZu!DBEIg!vM1feZw!r$7%3 z>kDV$TpB!Y0`t(AvO)+!_Vyca{{W$Y3;!z@j5q%x#(!x3?5{xhC&T=Ii53av_V@Yf zH_QLY692c-f>mA^ZPoPR;4;H|P61v`3x)A<^{j{4+d08wFjzg_3%{EFSPuJ?$@TUa z?CqGQr@uSLYl`>J+3)Xmz-w_IyI`dF!L{+f%2R(V?SIFQto7m!FEIf-T}_h;b1pB zXj+5a_gJH`J30SE2IrSxJyLbxCxdeglvQUNxx)Dp_*V~po#0dvHJoyyfu9SUG*KT; zK)|}DgtGx`U>|=YINzWv{1mXyAOAw&*MXebA{{kI^z(c%x%< zRCmzZ1g8Wr4VVV-rV-N!H2XGY8dG}EB{Y`5r z1L$yC2U?leGwZ2Fpv!3kXm8sH+6I-N(Ic6m`TeT`;OrDLI9;M1oT*{~ z_|y?XM8G`~?%EeVAIBbU7r2w)e*YR?^=c@=U5vl@XH)$JZ^tm5&n0|^GkgR7H70>f zCw&Qa&BNZ+}MrbW0?5s{_fQjB1ozt4FlRh0kxq(Qym5LL%7<3)ta2Lgr9K;Qw#}& z^@B5(+Q1u6^1dZ8eZUNW^F%@k-RcczaaaR|!!%3-=j~uq3^xTP1Luhhfi|WA3WeWy zC#DscVc~Pr0L`-tnpB2-KG}$woO65<_%al z2u|No!--C~hZ+E7j_vx@=a-Fu9;h=F31Fh3?*omDRT1k{BpMZ~bq%VCwm~h?H`t&` z-(W}RpZY?-GywXeIHE~#74$tH(igZH`jsuvpFm&oA-#bO<^%Rnno#Xwpx^$$&AfmW zhG#H;2IpA9{62#F8AyublcRYsL3abZe+C>53vVj^`y>EsR_qA}{?_UeyY+Nic* z{YeKoeu010FaJe{2}-q`XH|}B<_}FiHJN}?uK26t*qT^>%>}Z9o1va|!Wz;KP^(wq zK2deL`59QDI{>?A@Q8dbZcR{=Cm~hrLQq~mRY8zJ{vJ?L7(v%D&9446*nbv^aLq;` z6y~GxWh$qdkt5--D{7zHFNA#C1bn;)^Q@2Fe*3@Y33Sc9`X_RO@!xdXZ|(H{=(KDc zhUg*twRY&Y-9ig~zwNvo>W`oP;d+D?^L9N#yRNlX`N#Qq+lTDq{uawt!OFYw%^El# z>+GBDaLUNfAe8_z+osTPYSu?<=HoaooUd+5>+jib?^XLNaRI}j{{QGAJK*kDow4!) zWXP}nQOJ+K|D(CG+O+`ft=7yN%zf~}=)Y!;ODJKOp}Pq(X%C?ezlGWO^B^hp2xQxD z1J2!p9^@+2$(@g#W`pq>*8tEkjQPJ3Y5#i8jDHprhx8DK~GrzG(|S$8ZeO^=3Ih+xjLNzHSBhoq6*)S;_eZ&InowkYMM! zDP(OM*Vfx@8fpUQ|JxVTBFywcFAshD+dl9FJps8)cGcrs*2nzb3i$UP-p}c~@!yyK zfs*)-=>NxP=)2H`=Z|ZW1FQ$msHQc2xSswXI?yA~@nmP{n06SFR z-3=n=eiZs}Gr)=Mpy#Coe%E1N$}P|mlMRw7GH7|5$$S)io5>h!1kWP^hSX*s*?VJ+q;%mPV+yYfFQN^lN)XFNqM?i=FpoRdq zpMjo&3TQp3CRNhre*>BUQ~+`YbFTlL*V|wGHsqSR{8*@(IHs>M(a>ss=b0(Y`;tYu49uM;@6Kis47!SZ?+zUleBn#Cgks6l)|pI!NWKPkY4mRjAb zz~12VLJT2Rjr)&XKvA{_f_2If&CnCBoB0L{Q~Z93B~!E^pcnYef?%N zKKTxMJWPpJ654kiR!LxtB3#h-eFi>zY9uq@X$R25!w~1^HwEx?7&y9F&|e+^jg6~t zk69J71kV!zt`>p0A4WmIIbhBM@^B1?fczbSJ$#3WjNc*h<`JQOEcoH^P)$qy5o6_> z+dyIeymdnCs;kCjdh?Ij@9r0QH(}tk2n7}1|5@mFW8-H`(QDe434`EW6)t@+4$%FN z`ePpMrD;5DYVjXR>ErK6A4oW;TB!lIC|vK;XUy-vtDVRc8ry`otT6FpALF=d$EtB- zh`7A5ZqKR~{fl73Gu}ZdVApPN{q~mLa!iST5@;)67hEt-xkmPy68tAv_Z#r_q&?Qu zDD235MKJldnmoMgGW9=@Ch+ZVufqW+Ud?}+cs`)$81H|AUo{sk%N$SIO9U6T~7E z5O|c!Lg-r5pc;-Tq5m%Xk8t?oElH^B8tz%3t$;(n;+h6ZcMJNioA?`mAB5ITTFVO@ z>tl4o1QR$o90zzfpvFd_BnZw!uW3pFu=Rr@ZWGri#QJAVf?d$Q-n~B7lan_55sW1M zpkwXbH2=ZK4;Z@-a~X6W%$L+aUZ<62rPfT-EGO*H$SBwP`+5PT6%@+}SmP7yl?d%f|= zWIS#)!Uc1c46au9pX6;bbwO&(?@1;{ayvbcP-hG7IAKAZxvFYM5idu!2tJQg5W zW%B(`?V7e;lM=!BshD9+3Ht2S7urTLk3mbWN^Iy-CfRkGV`Z zU0q&)Tljjryo7fq^F!rj^7{{MnogqIf!qbw?_vq`2g}%~Vck(n*~1#46+E?o6+pa- zjHNT`!73pRfmaXlkA=HAtTon!kXT0=UcZL148)eejn_Ky+OIXND%!w$XKNUT+rjF; z0#EuwAO%|pV-7y`AXTiR zO9byINTC6wR~J%j3hCiz2??Qq?+}x_A>;$!rg#!a2j46}t9@Gm1k-H_QQumT-M?AUUuGY6ojY!`OjWomnuk)K*KVGYjy+Yt$W}w5`C#Qd=EJ-8Taq z(t*?umdR>OWU%T{-Qj1TLgD93B(JQ9oK<5wnNFr;bPAn9v2-e(N?FqxbOzOk&ZILb z2YM_$7JSFkEyUy@TEf?p^dQsxDnj?*?}X zT|(*TJ@g)Mm(rz_hTco>h1B-Z`>0;@etJK=FQd!g%>nuVrKOM1M<6Fh>7(%e7<~-F z9H)I0q#@uDKJmdr=i5o&}ZOV&eCV0+|JSG;ET@F=fU?PeG$w{^d%_0 z%k*VP{|bEt%CMX+hp+gK{tim-Dt#65e~rEdWq6&w4*9=H--I-8(YGMY+w^Tn;d}af zsG~dd9VpKq=pVp+m%a<`d-Of38-1U?5AKKbLrDKe`bUWSh<*fdAJdN^KTqf{GpevxpU(v7N z+j*J?cO_j3?$`8daQ{yK4(>Pf8_FE35CTa#xF}B|<7Y`^{A`Jgp9PWe>p*1uY>AAY z1(EUVK;-&55V<}pBG=cL$n~{gzGS|n+?YkoBFd5ZiusCa!z^Z&PVKfp(2ULK^UfgVv9Gff~sZ8|WplW;EKv zH^82({rt5UIA!ZvDNFt^?S_=ZJ=oix>ggFU(4I=`-PhlqS{2Z@w>@=yU_dW>3eSxE z*I-Kj5azqN!!+^3U;b`L`Ckrc_LoCqsiO}=w+jo4Pow6BhoweRUq+>bg;UGoW23{U z)$xhx3Do-dr0{qupO}TjEGFhYVjd>ui6k8ITvAFzB6T?#yRWCFIyh2yz;vP>g6T{> z1=B#i0Mmtf1!jAi0<$A6O@r{X`MAiGBpTNxG%JErG~fqzVc9sWl@OblZ^l@JO%X9M ze$mjgU=xp^Xd=5t6MlduD@mBM!0!bN6tG1}-eBIF2F$~zEivtgiTNEG@UtHDHf|u5 z>JKtg!$9UU9`tKXpk{zht*@w6)OxA_ba3sXj)D%Z%hXNkKJ}D(3Gr~;6GHA7vG6P^ zsItqe?CVwb?JE1ZV2j11z0hJg`4&bTBc5C3v%bncEZCCzRd#-r{iMqNSx72_HB=j58I%w4qvU5|DK?qC-5-RtP}&`0M(Ukg1fKm#dmBHh*+a?=iS z^TLR+sXld?oy9HZ`(_%l4c-3=Cl>$sV-fgwx=7@&FR*(188jPM0cls zXn!cp!E^{6LB|2_lR=LIN$V?2AxMXx1Ub4@@N^2KvKi(yNM$q38Ia0mn6n_2%`oSP zRQ9(ZmCZ2cK`NVJE`U@v!(0TZY=#=eOb7QRW*eCEn1x`TV2Z$8#q0-PB~u2b4RZiY z6>|_wTjmg$cFbWg>oP~ctj8P$Q_UO$Q^Onwvp(|;$fy^=y#wx@aPNY<81CJ0m%zOT z?ozn-!VS6j&!K^AE2aWi_phL8rrcJU`sgs%&B$ovmjFO3g{Crfh_$M<_gIA zLf%0_{sR~a@!1by2E3OtzF^Wswz9^}0R0e~upWHHCJX}@f8_IaTEn0vD?ski3*=En z@GYQ$nQ;RbmcE@xY!y%={A>qlN+|`?rOJ0w)mwndbgg=a-Q8;3Fm|$qk&+tT&|uP4 zy(reAjOlA*fQrXtxa6>u?uWuSK?|!1L$q20?&0wo?#t~UC6g>Ego0Au2PrY|EloZw z?fD0B!=dfU{*VFy6UOXkU}XbZ;63;btckTL)a6NN0jB};&jQAO3z&WZF#J+Aox-j2 zT{?3D(kWvOFbA1K%wgsTbCfy890%NG0B34rQ8-W%4roaXWeK#x8Fo5|7!g&60lEOY zJb*Gl3vmJ(WlOM2O}<+LsW`!#56HNJ{~y5>38hccVWA~n1h^PO=75Q7hJkUBvNnAt zlv$w20wp%l)HNhL?)^=a64OXQs+Z8jYU&mbA=|?(haMG=uj|9;t2r|nFu;%M%V50n zqx?ZXBt!XuenI&S2LNBJ=dy5JU{POVgIVz}dv6g|+D&84(N24ZLb&w4z=$qF*&Kr(QK?UNsgO?ZkW{ zZ>%r=<<%QW{kF#}>pS$Qvsz102R^rESlmz~0L}^;h7P7PS^+}1LM8Y>;SGT88liwz zqX~2Ib{DaSItU%aW$H#%_rTLq=o+k{TWCr<(Oqees_tM29ZE;h@i6=yM^B=s&{;5y zT}H2lPOK0HeurTgcLs)O}7Eb)-|N%~0!NkSx%l6Xm~WSnHGWR~PJ$ybtI5AY`$!fY=taGmM7aLE0*n-9hIGyU6fsu z-I4t$`&ou$zsn_ZbGcHkmN$?$m$#F*mv@nS$$QBIAo`DS^Me2@H~{2Tc>`4#z1`91j)`LFU~u+u!#MglW^vol2dbyxOSX@>&$s@eq29p5Esp*aAUbC+)Qphw}@N8<#2i2 zHm;aEz#ZdGaTmC9?hf~aduc8)w>GbD-pt&|ytBEtc~A3!=0nWG&Ew58&9ltsnJ+QV zF)uLRZGPDNtoc>*yXH^LUt5@2s4bdXw72lK2(*Z@NVAw`G2ddT#afG<7T;K0vv_Lp z5@xOB3R{Iv(L~W&;iBlG@K*RM0u>>OC`Gzrl46EpzG8`DjUrD`s3=t&Rh(5^SNx#( zQSnTH6u(sC#Gk3Y)W`~LR5U@nD82>CnOpc z9v+#P7GCZ03=f0E!-?rd%!n#?N>W%_L~49kYK*r4I#RH_tK&viyS#-gL<*KSNdd9~ zDf`xdkFIh0lKe*#)3-X6=xUd5cv3<_n2^`#TJ9br!%|}4_DhS6kBE#Vrk{|lSi$lm zX~q)MPsmQJVEIAnem!I3deusAR4unZDY3)FCi7L4#LZhg5@e$?t__y@lXDLc%^S?zni!H-uHY+`WYtk;LjtS{ZRB)i?*#s$n1%)$IYpa&jb@ zadIS?adPeuof4K234unERImdFb9Qhdl~(giGUe<*KGWHOe5SJl$+xouNz&PYBS07%H5!BGI@C;)O406CI88yrcV z4UXg^4UPgJq4*3!@fjS+w;CJ??id^ec#Z-*Cjp+50MAMIFed??lK{_2fG3oZK`0}G zlK{_2fagTY*5E|S*5D+-a}wY=3Gkc*c+LVmX91qG0MA)~=PbZ;7T`Gx-{&lRpR)kZ zS%Bv(z;hPhIScTd1$fQ^JZAx(L4aov;28vX1_7QyfM*ck83cF+0iHpCXAs~S1b7Ak zoXN#9W2MT!qA3g~VKi#9W2M+=VQ;3t4g({M@Vj1VHY>7YW_9!9xh?AwcjD zAb1MUJq75VLYkgJ&ICGS@DlvI1V4ce83a0H@DhqZphE_M4jH@z=w1SJFX3ywgfzW{ zRJ?_}cnbyTEu`Wtog4|Sf<+)Y5?lp( zPXIf5;1UC}Px9tS5D}hmWq@UXl+$9v;v-_CqVO9hhxW-SNfGJcX{qVZeWb-EC8mT$ z#D<5($0kO_CdQ_XjZI98gyM=Pp`F`@B}4czk)zYY;uDk7h#eo9no1neDUtAHDa4I~ zJ3Dra0yZKtVr0@7{OscHn3fV77M-3mXlBH@#8fDS?-cOb;w$(xXKZwFVeu(Y;#5hEfAIGU8U z@kyDHzz3z`uF%9kLTsN71nCvg$pKyX#_$pO5^-X#fjCHC zj$QG@Ai%L}Eb%o3bBcvx2#<#)F37rr!O?(y1*b=~)4ArYbH|#ut~JhDVSTFK8rs)5 zYoZxQG`yN46i9edd{QE*78riShb3SHCy$T|Ty?}fIvux`q{M2^)X0R`nwTSj<&DH` zh6E;0q{UP}j*3is%Nw3+0zgBEOsw`MPc@#A2@x=;Aqhn$Ry$+HCdWhy*^Exdh@AlJ zy$OExo0?Sct5m2N2w9cM>Nhok@K_6%SQUDLiy#Lqm)4Y4+oaSe@&q;v=kQ}%W)iVt zQX+@%Z47|e1Oj#u z5X6CDUKviG_AOeV}GyyfL;?0}X45r9&I6_YYHBQZ7%To|t$Jlv~Yj@2$#aHRs-0*Z%Yl7Q~s z;2H}hXNu^B14V{oYy?+Sd=fMz!P5bHvFczQ!R1Gq`G}sRiS_aKiWQ#YOwWYwK)B?{ zl-Q&QQ&e}HHP58vu>>>hhcyo$*23NiMqTzJ$J!5!fk9xZy)VYOw6wPN?(y;VBwVUJ zbbXO28Icif?I(D7_8C|;C222ANz!fb3}a7fEA^Vrr7yySV+eCsR8Q1FU@~DIO!|wqo z$TG`vrsV?5^_C@;-&>hkX{?%Cxmb0va<}rfinB_x`ob#PYMa$gt36g{tu9!VTivZA zsne`Z+dAFq^sY0sPGp@?byDigsk5lg$~rl94%RtV=VG1j>r_~atnIBkTX(beu@15x zX&q~wXq|37!FsXv3hSNLXRRM9X{EW+PT5e|TWb>V>L=AJ z)f-!}t+lPaZCl&+wqCXYwxPC(wi9fp*iN^dZM(pBk!`kZf$bjK%E@uO|!SM^uR3m+q?8c8D_bt%`CcWu3m7i*lf#-{u>Ro7n5 z+LO8Enky%h29)W`2Cnz*tajHbROzR}4)iXT7x(U#?WE!9wh>+3^ln`vTJbV9FWcJc zQg>bVOOGRwnFfh|*nIZ1{>-`j+rOxHRyy%wv{}}8jH?GYnQZ502C+pNu?sF5|j}Z(_WnI(Mw}_N{M*`1@J*~x=Ej(wmcz59X&oFE>)K{Dq`|* z&G3lDIivLPIpa4Ls1+*Zs%~0kNWrq)HLLREoer@wWnveZ8>?q%YdEVcW8ujds`dOBo*5Llg2qo3Lp@(Oz}wvh5r5ba{DOm+#V? z-5u96TmQ>$$)i!ur+9OXn_u!kD4T)FJ-e&j*87zO>4M5mkG`r=RCuU%?Ho5gTfcbv zvMH-3d~>hvp&p*OZW{g*dp?pM&8s)GI@(VkaQJ-EZOzp)YfBI650&PgELUGnIUZc1 zD+%tM(_Q1%Iof}OeztVMcdJitE0dQM9$0@)6AXA*vTb70M*YU*Wl{B28jX%wp5yoJk9pmsejyACpYp8;*V57>4&O4mFQ8Skj_U=!nXafuNp*pg+18#d__t}L>V z^50hEAPLJ&XD`O}*wReXS<9)eoy{%*bSlX`aaDaW_1G}@iedgaT{V3Mjg1M@=b z+zHK-^QDM8tVhQy#1g)ql#i(F!A~;wkSJ6WwcR1FL4n!Df%;xflKy8dC*IVcPoJX* zl!DZWkNX|f9}e)!ZLe|bkurFIe&CR#UT*5{YkQXt(+w*=~RFHv*3hX6YcjXrx#eQn*@vV*!qWgN0Z zdr=E1>dNnxAib3DgU(A{6db>XX!W`D!=bx%yF-1m9W;E26j}086>^dyoAus(J%{(> zX+7^G8h=iqTQ;iXA=Vs=??|u`gBrvPVyNLpbHq_o9L$L z?7QJ`0N`5Exohg{x#tca)*U{4cEdHz2)?;0W&MabDak1*b4IL9S(~zJ&RV$U>`GZH zM}D?{=*Jz`UO_FbcOu1T)bavqk%BCg&rxhwZRn_2sIB(tTw z*k~c)>qt?z$~*~DNRgG1lgxuJujC}i3SJxYpwf13+FVo=i@dbT(kUqA8&ldkV0zX=sTsm=EuKL>Hk_%^c z$9S#Pz1Syt65rt*uhMw;O&dN$9~_br*hd|`c;wn)x-Lzm%5l&V7modG+<0}s;C@Z| z=uY!;$@#jrm6^W5LVH0;%FW&#F+1O1XsJD^>iq zdZ3m=-6b3kHyW0tMJaqsRncb1Q0xkp8_c5pTx?M&tLIP?Z!PD;=5mMUAQ75~D3pvu z*3Xav9YvM~WT|}d%ocqkMSf52pt{?pY)vcBrxir54_qNv8V|4Cdf=-q@&&8ruUw%% znYMTMR^8U&eO7kU@cX4m!HZPLMf$8bv}e!3!(wo;xFBR{F~1)|D^`FaHoYp&<} zOBJf~hu0Jr>x+xCkDON<_wZJgdt}|i26qhz-Fi7u*96EXU3|083ymT%f5P?>HMcrk z%QeY*gs84=M@Og_fMnxT`_R z$Gh&F)VDe%2?*((*hSN-->x(3zF4z-rQR4MRTOPrvOZV8Vg1tl!V)$qcIn8u+K8ob z+rX6K$gJEHFOnkDC?sIj+} zmr6NI0P1PEiF1aqr%@|3knM|F+(a#u50x*`)F3TRM2|-D3sguXQ$GBWg@ShLksLHo zKQJiCuZy}%?qn_R!sn{KV>jtGkuogVwv&xK!75ap{6jp`^mn5qJD0Cry;-v>Cpm6( zMnY(ep7-DzNIIeiclklGyXPerkL48}SKsXQO*0+m_gRe7o^C9Mf>jv`PrnaNNj{csbVt ziP@@>1C-mRjoYB#$gR#mJCOvfLSijCgzAVY^v12KLt1|03oUr)rT4$hDS-}u&$?sh z)%-T3QXMIpG&)DWcJ$)-Xtn3y-aM`28=+NFMMgzVCReH9S0bvyHxtQ_qxD(j#Oskc z)aTErX~lX~XiRiyXhF=*U0Vuv?u_0tLa%(-k6$nxc!Y`^UQu~TT4`&%B;lL9&OsK& zXHt$weYM}CR@P~#Wiql%BAD@Ff5ko3H8ylq44@7wzN|w2+L3VrwiRvOv{R>i$j|!S zLA6k;;?3LowT;t18zDKhe$S?JnhQsUd#%v(VeL?awDW|1L7g=|L-S9i=$nKr3*8V^ zG^$?wjk4v zr)asv{Bm|X7dNzXoTrADjW~vAJ^GZl+#ELitp<9i!w!-bnn`+(Q%_P zLcU|;-UW8T{OK1jEfnp z9}*Kgd~5)s!s?dip4@dobM?RwpS~f(8wKe38GKzy3z=d8J2YfV>$3~wTtDseYpA<* z3F1&9GE?s3cvgyZ9QowVyS1F(LEx|to=N^rGlAtYwHvr);ltG29PPIcxLsRzXrm{G zYB~oLeix%}0D~MP&DC=7#m`FC<1qP>ZU0ET@Txoeh;nq3$oy5hSK}BPDu(%tdG`XMO1m%RObGV;L)R zSl4|YFl+m+Bt6qSy^?!)zrO77y7EVAW2#J{+OjD=PXF0}PI2Koxa)fkT)tWu)LF;< z%qlY2-?YGkap)Z4lvg>`h?v+BBeuls+*wetYgf$XP(3F-_u$fAEoZwV>EZiy`-b;g+ey>4S8^Z>Yy(I4>fJF9pODu$CO zS1&U9NPyTXRQtZzp1q+^zM*hgahdvfY)QXi(W8cq$Q!k5@uGPP7V2gPMFbDZl5;3z z4szt{&(uP3uCDk_IfffJGa+H9W@zHZgERHq=5;Ibx2yLhZ5z5w$MxiAWK?X+aRQY5|QR=3cY&r6lDv)JkU~zUKMH8e@KH;8*BCh34-9i86 zTX?yK`$Ws{<@l@3SZ>fzS2y(xnQzgs{bgGVOG{!mhjOYfS+3%dI~b0<`Rk;?JA6|-D$*z|s4P370_qIW$ z(g9%F49gQa)me6A9MleQ0E8xUnteN$=5DD%BHSba+NY1eet#K49>0`S8Jg(|k2PeY1-Jhj%9&&N?es zB*(JcGqy2iV~yr>koW?k_X3}qh(z3HfFS4#Xz}-6a){9u1`p*%tiH}d0aZ8xQ9#}4 zXULNK>Qvsry*uSQ_Z?YtMsxZ|dMNbAp?QH{`N_G;Jj8J+DKIL70oj~gFdSPCqq5|+ zFhWa7k#i5PY&?EMf8_Xv%XiiH5-$fF(;W-wzOfCknx9wXNO&{pKK{Cj59Jq08lrJ+ zpFAw*96S>G!RW7FQnz+$hum(5`sw-|zL;=V!?}fOb8}ftOEKBn`4V+QBAR>ch%6zi z^KfPxvAiYFPN`Ohnb?nD?T&rKs zGZMp+A&DJf0JvY)DJ00lEoR>}9XbeP=BA8G_L?$v?))rWBiW1rb0!B}Zg(iw9H@4{k?vqr&W83m4~Z+S(Re&3!o64x96EoIMzhON z{c;gE2idXcNG70)0{w^-T=bO2UJzhV#^R&UsJ0WIFz1cFTLjTu0dH+_Z^i?`v3Unq2c*MmU(CkcZH~Wmk zWB8Vw2&s*~seF1M2fi)uz_;P1Ac;#x5n@o_FK7k~zc}2GrlA%$Pz#|U@qS2rI|DjA zAC@Ei!Zgw^Oox7fLn^H>HN<5YU65i%=9)|nJ(NvnIsdy_F6;Kd4AlQN2e7nIRCvyS zlp#^2U( zYM&F~Hy19MJ9mZd#-}nUorFhyuIS49xNU2xX~`i^cG(s^x9ec$DGiceJ#?!`uYgX| zg1e7v1u0&B2W70lL&{fNCMHa10%GAd2fUUTFChtChHQ+@xPj~^vf(QtIpmmy{uUC1qu%!|>*bVF& zqHTagm?UNW)+NK}`2scl%^FW(!9a-&B$8nW#%--PW>xay*w5v2WgI`Ulk4@$X)tBA zlgrhj#@hSb=8@13+|zQUk=uiZhKC316u%yq@Xwz^$yzx}x>6mW@<=S58$? ziDa)Up({6zK(fjaQpMoWE4Oe3`hsN~P0s}3cPZ>ypv*dekU8aH4`+sBB?hZ0tO{Wo zMdeY{916B7QHv=oF#jn9Tclv8516#1Dl@zszqE1rOahf_!!3H`Idxz~(u(uAjM^R@Pkb$QzFjOu@!C7(FD5{*M zu2a-iiu#(OzM!b@De5Le-JxJ_74-u}f7TkdrqZPx1v!U(0LMAlvqybN(HA+`as|Tl z^lc^VyrN%-C^(ztE(Lo`Xk$azqeV@nVTTxO@nbZ*u@VO;2X}Hhe>w#xti#dgSQkYy z4f_D8u{1S`W-ifq2f-CfYAMA$VCe25=20Ek8OT&NqgjedplOa4HI8E*I^7DcUc(CVB#r@y*08VlQ!^I7*x%UMMaR z-8?Pr62WM0!vu=ZlsFGntYlUhT ztYv+xx~=-%7WT*3wzKuN4YEzJT?p${m3EePP3)ZPeC=l1ZLDinx47={x|i$zP%p6F zpn4bUT~>#w$ExS6bJZKw$JOQP7wVUqd72CL8`bYrKfeC1`n&7jt)Us1@7aDqhc+ENJGSiT z-7&o5Cml;W-glL|YFr&%eOw2*j&_~py4*F-waoRZ>yu7YC#y~^JN4}p-Dy&%6`eMA z+R^D;=dPX4xean#&o|$<*!QyU4?X7g znBQYxkLx{N`8D$k^qc0l)^B@H*PhdQe$w+%FSb`qug`mZ(Q8q!#l0T;ck%D$Kh!_V zKiB`L|Bt;@y}S3G(fdLlwvTV0DSb-&_U(J1@56q!{f72i+3!q0V}DWq4*gU6PwSuE z|9bzM{crbw+W+SOtAOqSi2<7fo)0h#=r0pb&4F`7~>_2$#;KxH$Ls|?8 z8ZvW8_K@vE4h^|D z2*rqm5z|BKhjs{^5IQGxPw2HUzp#a2FGtQ8c_!Q^ydeD72>-~|QEXId)XJ#iQNKoO zqx(f?Mem4y7}GcA)0mQ&N3r!{BVwPy%2kiJ^td^3J4fvp^-Fxi_yO^YOv-qk*(P&T=Df_SV=Tt_k0~4LKX&WbpT_dzV#Z~Rn>Fs~xYy(BjZYhY zf5M;%qbKA{csQ}!ME8j^CT^Pe!(;uah~$o zl>1X9Q|nF*n!0G}`l&moo}T(Dt6`RFR`0AU(asXRe)D zG;{yVOEX{263?X4vXS>ZFHGApobF+V&!_7%T ziaFaW`tG9d6&f$?5>;fuDDidk*EtoO!PBWlLRe5$b@x?_C^HH4Ut;BKf~ ztvrX^jGxY6QPklXtOB(LW;Of?8UX)Hy0BuJ$ao%wt56&1>?ac5PPzjPkf1hC_`0Yo z%MZpz>z2q)8paQh2(A!5T=J{57==sFV3>l%4}73;nhL=VC>$tQst8+|QL!o0`Xq8= zjkjPfCwRs)_Y5@WXVip!^bECmrrcF#R2yHZlzYlnvhW~`gy3l-YYc?dj^MCyF){ks zY*A^vk>i;QQ`Be z^&X_~1)g#^k}C6+@fCe-VIHG-*|%H2`}%f0o?bW3KP4bGs2;CDj(ayqu9p-YyQnTp zFAjy}`Ov|u`fK_O&WsqT9~qH3EKnV?YQ(k?y5d0+Wl_T(gZ(?Gdt?vZ4SZwCk#XN@ zE}mOgc0#X=KL)c`hmA{A!w$|XE8HqywJK-P2F>A}BL+u}ONz_XdyIhCvnmnDFT6YQZl>FJT4IU~EVWd0fv>MZ-p_tP?kGXM zL57kVBQM_Tscvvjn1^e6m2biKP$$WFZ%@7<-?*V}pC3f`fk|o_jr?AO+8gaucM$sn z&z>o54@|s%ck)$UA0k05T=*6;USB-g4e5us=UIs&0G&iMjTR!Y2#k}!Ov9if3`HWE zk3=E7m=A$PdRnHal+Hz6_~seb-=JQ~P-MloS6$qX$Eyoqo@s$b!ErRaB~GAW!-z@(>-p0R!MuT0HJm@Y>}W^d{qI5o$F-9_@@6tcCak9! z&%mh07z3d8M6n4cS!-j^T~_(C@}cprA6tN0vPK_R&n-7L$CE>5mE$D5m9ZIAm<3de z9Hx8a$Qc$BWQxeFD_Ua|B!iA+wbp)diY2Q zmYFKymhdbjgyu?qkSX{^K=+Irkk}fzKoeU&cTnmuA9VH46&G&G|2kLxb?&0gMH{pzpyTN+ z8OY*h$6rvuuSkzHT4i)ug&1+FgL`uJJY;!Mt8ll@`p$0QSjd1EZ)y4((FQznu#upShYK?M57#0 z#`~gTRndlo5eZY1$E50?u-RYdEY8&^ytLMHD%L2==ZITsl@C3&{@P-e-h*sK#y(jM zSyX=xEOhLL$}k^|@0Uw`nPEZN&~ zXLqlz-FII9xPyfM9w|O3V%Bd$V0^HSZ;tHT98nX#jwC50c;aA<;%6<+9Xbtbe9vqR zT1E5?Eqw}Eqg>o3uVpo0730omX|x)?;Oh!U6`EVFeGT*C)3tY4) zB4a(&P{mKIP?1%Qy{~g5sG$^<;`u~dsbUdpo&D;yaZo zsWJxjHyR~#rKoSEQG)EH2-pP)ZzEMM;e9KA_TB%|ddkM%AtiV8Ca%N~J-(aDk z-V_}GBEvJrcCyNDl_w<)j5n9D{5;k_whaP6tf>PmZP{(V_xF_vbF zNYj48_R%WGe8=YN6sWBh7NA7va#m9r%*>j&qqX@u zO=3emh{<$fT z1}J=CB9F7FuPin0wnh77*NYEayjn20la4m1Q4_>&s1=ia5GMQp3dt6I{yc4DrzjpHxXF;JVRk^PIhI-Q#OrMpnXYJoA`yONI*}?AEnpQO3hZ4~L9kZW znBY34<1h`vU!2%^bE$4^!2(TNm$=89=yL&JI^$xhC>h?c@-t?&TjRQ^eRVim9k#A? zWJc4d#>X@d&u&fFZ`q%)`PAG8v#5M^y$6jW^(0bP$&;5E#u_5!_GmgcJN{gfrB9yP zZ~D|Qf0JSC*u^cLbX=lybn_eNZMocE9ltAjOPpy(!t8*97DHsf!Q?q{(3z`HF3n@j z0id`{&7nxvm(wGqE}MgQ2FsZtks(zO@}r8^4Wnew(GqYGQXy5D0?`p>*d`}-k`|@D zrnz0=!s!x+;T&+wq}mRURyEg%^DnPG-Jka9$t_neK? z&_WqOKt#JovsY{sy;3vC_V856_KEUDUqbDESyWlHVV9DPT3c}i1~mxbIQ_i2Z{^o- zs$`QTW@ush7Q1SNUB%XjiLgrnG5r5%KYl>yrGS&WXe(GrMbo-?j zIhd>=6<*x-?RVaCzW?41-x$A{)L}q>bN>OIe4Ch>c1p+_U>T4%>F!J8%e{Bc=b0~@ zzn$>hwAOZCJe9S1H&#Jhbi$_nP1C9mneOR7#MFN9`Cl?NB>@w)J9gjZ{ifVh{~?i< zXKCt(Q#zimY3em3(ACW{$~Ex2zQ$frL$ZMJJajtn3RX`g@_6|C5l#Bp;YL1ry->-% zFfL?WlQG)FDdV@hnTC!D@q!5V3LWEO9Jzf=qLrY$79l`6T zO*T%RH+4p^Ie5mjd449pY3n0HEHfhK#q2TeSsxt{X^xDDULS9YkDeDCVIjTkJMp2- z^sQF!aZeuPkR+$6pyt#US+l(Y3sBSbiy~{TeAI83hf{e6c?Gw*{v#h3Z5OeLj)w7~ z*663uh9lJd}$X6zO-@Tim7Ip^He>n1t0!kHt%W790@Vcp+vcc&ST`(*Sm zGYvbVp%&yN2G0)hF^{^RrAgR2JHVo62dtIz9d^(wXb1k!Bt4rh_b8xt1rAxi(YL>; z2+<1haQe1Hxc(EjX8@BuGaW(5L?4gsE+$uxnJ~V6d}eyM8eO&ljb!#o%m~dk(UuAa zQoP1mR`zJI%dfS)pq;0fZMU|}TrhK|pF#u|LwHeNZD@4d zf<#kZPVBKXZ2CYGXSR16(WRqT4x)}nA^E?A`jp2t)jY)Tfv)PQ8RQh~>24Y88RR;| z_}xyI3=gyCft=v8rlZ&vKcR5y>2MC#)H%8ZYswx%q+XKkQ?}%x0}cBHvB(V)dti-+ z`P|{1D#98sW_B&)v7C3ZTRn7Gjjw^9$=ALH@>LWge=eTLibzhe>`#u!I&M5RBhw4u zO0Ut|hnt4G&G3e~;5}o^aO3cZ(fhs4-uts=9yh(C5#nHvQI3x8*=NpVWaj2(jCM3X zwW%@DtCvpn6LK2qg)4n&It8d>XsSI3*%U#@#+U6s>M3y<^=tV=eic%M`WMQh3k;c* z0(GvQ#xR35ZkpLmZOByOPyja+YFJeS!EuJ5xh~On5;MUZ$Xv!>Azj7Y_A8WQ@FJ6y z>y@jiw*+L*JrP%w#?c?Jt9Z?HTIrX}_IEuG-S5TQmaAa^;WUA+6$*wK;n5PlE!U=P zi%rci;`{zt@spy=(UZJ3BIzJKyuIVtzJZp9-s-fiu{)AYhjs@0`AnZV%HrB`rZkmZ zx9@!Eg*$i%XaZ)2;zqhuC@?c8vrQ55dB$#{}XhT#^vD@yEYthC)i9v8> zXoJ{9^P>Rhkpkn^M1>=2 z{T!IM*NzC}RJ4)4l~_gFmCFME?dlOhuDL>>bF4oMU)$2oFnvpYr;~Whuvof6cUv#P zHF5c};36?1M{eEv@Ye?jHC13s-U4Hb-x~-tafL7+?_v!<4PPr1ZCEB;d4Amvz5xPq z8(Yjz_LjbbnLAkG@9H&ux(#n@9pFf}4fm;tzp`KP%I^CMhTF6QFHJFlbE)fUKp#qa zWvuw~n$l$H4F6SLvO-{QY+irwV?{FkWuA6yRDbeeq4Wk5Xzx>X~%oeYd7Ai>BzkrVlq4+0Q zp90&K=vjhyJ^e3u*TVVit6IX1g92TIz?a)t^Lq;HP*0JvK0+~S1pO-5K8@@M1FC6< zi*Ud%O|wReOkW%gt+Ej;@)E#rRx|*=r0)z6yo;Fw-!&Dew#E+rjRN@B+vqdLZ)$)! zVCuLzBTTF|O#gYWdk0%xs9cr1B>YaASo&-dP?=fQuc@_oZQ_B(+2+}6ydwfP&skSv z&bmb#HX7IcxNhZIB*Uy)AGtFzQFrEaRN@I^&h)e~apt%&PFoyJT?S4cU4AKq3Z65c@us$ojka8Z;~ZBVLO0H`Y`FGHARtIRM*z0t`H{CUB2;BYqnMS z7G_PEAe`ZcV8Y+Qv;)qx(>=mHG1YxYUGmy484h-BE#UJc3Ch4j1^m>HgFg%z;lO_Y zU*o?oBkZW@+R@nK2^N_9T0>BHL*aq2l+_h+SqEpA_Rob~8@5MoGUJj>JEPVB+pX2; zTMDPqY*)j+u5yUnS2XMk4^5d8=M|yb5w(7ILYCk^aq~Enm(NncZ@vGHX}Gql3-W*i zou4^ZKN-stQ7)!Ta0e920yjfYS9A#|piE?ymwad1G@EKOVuK-8U1ua0%F* zn;e7jLb=89B?O@C32glTGU3f|ug9)I2c69aN1mE|b%Ac(pVF=b9B9b4<4ofg#6a{F zZoPOh_9pV{^gl?X=WmLOs1vrcWqt?z{)biFQ=mMX^zo0ItSNSpL6bi^yNzJ`nuD~v zauAK`JL^7sgDSQW-q$N|IoZA@i$KHAN(+kB9ICB+e+pMlnc&>Yww9dhD+SH}ovy!f zI6#%?8X&sz1Z%R$Y78Ee;1TP!tH$v5KaH$8I=(wKxcE!IV}l~UtFctGe_Ws4!%RIL z16=`fcAYl3r?GR)0Ki+FbMmJCWO{sg&uM_p&%|7RWF%8x`T~B}Ps{}wh=det#4+Qy z#`{^2V3?9=e17)Ai>&=&laXXNc`H)-#)NrIo@Dm(_d?F1{(^MpmyloJ8R!Z5*h9ff z8sfugIc92lIn2~}K2y&Z_Y>jt1eP*N0B#pB*>DBByIR6ez_00ZB^n^u{TF%wy-Joz zR&kbi=R$1GG0X8|u@~+bf0~jv9J}4{{;{1+HzhdwTZohQ{Uq?bztTLw>C(1@$(GXg zD&tXMi`DU$cB+G`RML(8XNu#?Z7li-6VO^K+WRkQ9k~);hZvb3ZqHZQXKv6M++05H z?ZzbOI&#!H@-zp-?T=DKgn!FSY$J6zPmN(E|3-}+;IeI`q9fKeG?y)~A{BWgEXImc$P^ zD+vOCjP-#{JP>c@AdM=^1XnBriU%!_R67V(l-ANG@+pQ6nh?(7Zym{=9@KucI57rvGp*PM)+dj5`+t zrib|I=s!&N$5|K~FSQZ=F~Nypy4i{G3u8-Miyt`_?fFVT-ulMX5%e(!7q)&M ziS26DMCd6|mHZOz(7(v>gBgD`!XU*-`#@{U_@{cRQM;-aUIs?hki^zCcI z1NlqqOYzOMCqk4|N5dS}{p46+vVB?nk~i|IhlECMQ-3azdlXWe*IlvCq<5uwtBOn2 zH`nssueCtgKNvo2vA=&QHXCQu=1tv3QytdtM*01NX*LqV><;4w?|g7uqvapyh1f{?NT7G>t~DHqrtZR81-y5EsTN&X z44vX)(VLl7BtOwG`rie6ra(0W9$J~RLO4Qb z*0}_H3773jG|*d!+q(upQbSl0QXjYT)JN7@?k8sLKm7OR?P-wuIX}7x@AB>8qdrA` zhooEVT$vW{Cp^tB^}JI}zFr>LzAxMHxQ>4T4<5mt6a4vF`Ey5RPOp!yw?F5ZCyhBzmmU40jLk@FI)EJKP%+ zo0DNVc`z<|XY`iX8h^>`_Ol>~{kl;oUx^B94dUV&7mNHW*jZYLj zlC5Qr1iHfy+ax8EORedK3BKMox$N$#7lMI&1$?2B%j^$2ZS(p{(yx^$>SLY2u{gaB zbU$2h`Vpq`7th~7e5quoGU-(pB4;g^UR1~qpn+fkXyE?X!#)Xo3&|CTo!~}Sy1^ya zjXx#V?Y~N{8(p~&T+1cb%wlbQslC?ltZNIw9x~zAmk}3S5uQsp7XBx3K}pO+iE!E% z=ojR~7wB;7({zE}vs7hNAE*V7%wUP$!I19Kb-qkPi`6_r^ID0}-2Jx*&FjBLXzrHv zMn>tBJ)}y*f&Q?ERoU)hWTfcu5Z+RC-rW=W`e&uP0_%UoG@)(r{r_cuZDHIzgSghe z{DwTMyhCzzHK4Tby#vIUp2^i13@iD@9VF1a>_{yHTQ&Tzlh$zWo7-BdTouRlwrU#v zbOe0urmWw+!&LdueZ#$9xOMpo*5y5aVFN7KH4@MD13bIA;B@aOeR3G*T!aGh3JS=* zNz$g`eq48C9|rRs5Nq-?)rulNojlqK1ZA{c$W0$0il~D;M(q zA5{r{8$p$KyoUS6Ms4_1y81-mX-1<=u1GUlVkz4a4KD^^Pb?V}pI2kwM$#ucUmLC) z9zay6lq(Id?AxIITEjhMF5Pl`WimV%T#R{leYpUmU)jLMNmY^y$KlDnpqgKa)Lw$? z5cxrHQtrXF^#hNYV5>nKO*wn9q@;Ond^en`ONK&ZMLSt*it+Kw4*A9V?R8t`H_6X$ znOi)*99kA1uQL?FqbrEEc&$N>!S=)}I2Kvt%(9sJr{!9Am?<@$}$%_3z?dAB9PWm z;2+CI+MJLW%#(r>6EhB!p#6Y+T89OlgKZ7g+Er?%DjPTrwe?lbM>-$QPeSJ01b4Ik zyAl8f)X>VRo$?nVkT-<~)hth*N*eZoR%TBsH)v#Fafp+7j)>civS(1~j(YxE1 z&^@6FV(*4~@(G}6Fr)$u>E3FIz14P@@>;rqi{)xa8iB+q0Um_@3q? zFkWKuHMaU6l2}(Z$hFM>SKpd1QeTPH3=nK?+zQ8^(?YS>$H@6bS!3*mhG z+C`{M8hB_$IUNr_*y>$XMvk4$fMluP06+T;`blNzCySYOiN=t4*YT@^Uz=F@Z@fBn zvUIZ3t}snX<6B+KU4D8op30jbA<7-RlWSR_v87X-crWJCQBK6diJX4Q<3vu!hH)aN zjsbl}aPo`(Q#vDMl@qr(gSh36Q7`M~71lu`HJ)P1JJflLU5?`bDp4w6a!EytIdEdz z@=a?#N_uT)YT3)D*GNm=$d0KkO&zJLWSG)1cDKN(fu3JaymHK9Na}g~y3cddH$v!p zf$Gx)(XQdJeVS_5rEuuuuLS!r=4QYccCe9LMf|?66<&@v+`E29Ab*g+ff= zJ6m@^Z2|b>@F?}uYaFEblqQQOXJmONnZ1+yCNzxGHHvfHd)j#J_<>tDbG*CnF~2>o zF7R%7nN>G+cMNiei)ZXKr-8=7JKR!z%qbIdCqD|%Q3an&-=W6-Lp?gQ>2vU*uesKU zR95a;U#b*dW8I8YVb8*tuwCZM>yE|j&(Q79*pYn<@XQ{3JiUVD5w8Jz)?R$Njs(Md z*^QcuUrPpCa{Ke{PZ#Lc&rB8K7VL)G%<%r%*3;+j89BU*TUTWWueJOIz{0XWi$T_u zM#9qKG5`JyLY3WJ$w9RP!mM9#M3|x1(hp0!Cd9`NO&XsE-EN`H8ESWQB>0FbeU-WqkhobBg&{_C}pI!wwHti0Xewv0m19{U0Y)Xbh<%UUd0cL#X zm+d#<2VA*I^4!1Y=9wjkiiNXe}LoRFVE`Lnr+KhnXqf3*#@L;zgXh8NZsB|;5$0@&jWTp5h$vl z{o=hC?qKu#gxv>4)#a8{t%RZ~s|Wb0c0prC?}mGTtF9M#c$EV!N6ASag^~>0*syH~cZ)Vm5Nx&C;_ta1af{-}sm-5-JKNesxWRc> z8djlU)L<%oHqFjwLNAJ%Wk6-Vc}GZ_xX%+oW7h4DSt4i2(2z#pNFg3^(udy{u40X* z$PZO=IWEE3xSkxf*-UHes-QL>0=3zI1VJ9aeG%MU+NPOUi;}b~gFRH&mj}FKSz0;83G{nzT&xOI+^bt2*`fUpOvkyE&cDR*gF1*ma|q3u-5Gn&pSmMn@V8C!IEyQEU+cYQ(VBh zaCrcBg@kvUdD%3*eSvkYC1gwVAM3K7g26BR zJJzi&mKtOuZ$cT`W@^L7cBkk+ct&XC1vsjBlNwF;R%nswTKqqaHOkIXQR>-;WW8X$ zC-#1>=7d4$aEQPLvylp6i3Os`b06m|Gb=8B@RtG2!KqA?BYP)inAsa=?(IKZuEgD+ z9ggLXHg)?X4ZmZWSo8<(7^5uIG{hhcAAVpf{{4`(zZjY*_Tu-+0L5hp@Y+-IyYYaA~$N)`}ffTdOm zc5NjMrG+*E;*TTiOPpy-toa0wZ9SH$bR<_eEA20?2>)3*NuF1fCl0EmUJ*9u$GLw& zY_wA-B+D=z#`yWMGos88%}v#8IqO;=u?9eLa2SU|9j8a&GzEdvaQSOFLX70$Qe)iw z7-%IVQe!o%s~J*Hy>j;KAHz!Hr;&)C?(gb4eZ2QHr+N$yvMg?kORV%WwTuopF4HQwBG}(A6=W3bkTGvWx|-rVPXE3E=qVhiHD~X5uQ%u;pr8c$5;2BKW^!N z{OY7%OvevzjsurnTzu-5!*%vlNB=`+jGEj{A=C7=Op1jGB7Xyy>oPF+*y?ka>#0LG zk>C-2_ayha+Uk8Jws&%ETN>9ciID&+Qihh`Nv0GIY_6hinj~s4QmDQob zuafe;p#zvo5f5al(ikVezs2q3*NRri>Ov>Htzvbpp&}Ru<8}yPlg1mV?)hI!Zo?n9 z#{h%;`|a_;_x{*#&)c+7b)<7{tb#m3!`PkhBO4;q1jAU56g7_GtvU39Uo0pR1BDvq zkoJpe=LQUte{NE!T2_I(HOoSEO)yIX;Z`7kFDV#y0bKe>;1X5H+WB8FK=*Gc<^6*J z8X@JkB2&poc!U1!y6ksksA?Qek@%cc`J{Tz;Yx#nV7(f3`cRhn(4o^&S4~&X1iBrv z92ylhq^HqwhLiUgv$wnJ6vsI_Hkj`I&itaZd9gWZX~%VG$0N^PG8TG2>IN#LZY}nG zZK~B`V&ATou6?~**EaUq;g~kuoHqQJXI_9VkWK!I?$Kba<0hBg-UoEvnKN^8jrwdJ z>t6egR)Tuu5Uhf#+&%Qid@=u4>OF7?-HR*WnTA^bf}wZKcZYUKMe2T+aqYjeeAnK; zAt#B409W!kxP|{J^AVJIy$z60!r%(8v%C!rYyZ&AUo4Y`rAqX?A_2sVO@5P3%cmm7} zTUP*rx`G)O{^ZPNnFHR%$E{o&V}7Gu5)%5u9Mj-M$$JsiLIR&e?dDRYR>86fHem~3 z^pQPVnf{P8#4{Tz6>x&Wx|h4a-3^u1acTkVP@J8Mg^xFwy^KD)B(V3y@jR@A90 zM(W0D<+3l$Yyh3It=72MkY$|B8q9L(+7|9N?YgD8OLKN4MAt}+-hFUW!kTSsB3A8M zy=&$61794f!3U=6rueo@U&aHIb+noNKBEgfv(*xG`DPu z^uzqn(|PTY6PIG{nm!yGg7&6kg?}l??Uk*5N>5}87D`W^IIOgeQb8SkF6LjIBTeJX zjP0qv^waR?CdT?8KdT|`(Av`OD;IHhFtSvL)V1TE+Yz|C*k{EpZJ%3P^56`@-mnY) znnQV*KcZ!rWA5M)55g$R-2w&NIV04V(#{H>mFeZR7VQw2B9oxl;nVITSzF4LvG8gM z#mM7W<@uMi*_oxeoDtk}SK=Nkl$4pb(i(+1mUR}d4NKV}9bV3LcoFNU$`@_rj@E3k zyOyb%O&;9C(qqVkcD0Rl65CxJWFB<&xgV)bt*P?QT2eoc&%J87nwxn4t?~VY`#nyZ z&-7@vhp9~0wYJK(Z^Uyub25`7ixp5JZ8z>XlF=ra@ji4(`}r9e=2O}6-0I$EkHsPtxy7-EtT(;AzLmj z0}oq^5QRP3euXjs8CR+KRW0~cpg=70rs@FV%kA*XXT>d)Bec@2{$c zO|m75al(EaFFDBc%kcv>kQ}Tv$;f^EiNgdr1iQ_*!SoCEoKVt)^LQS>U

;z|#i| zQz+0H^;W=PoyKrrW8Jj2SNrP*Tzx$04XRH(Pq}r&a`UHTg<3%Co!=cqY2BNq;4Rl} zJ*j^WOV9pe+s&z`V>%5j9xC36x^xIRtJ%4`Z<=nLoiZ%jl07WCPe)_>z&@_S%){LV zfhN4Gn?D~)T1gk=EG`g%MNqyfkT>ReW#BeYZ*H_XlP$! zt(-R z$(8G2pOs-(r(xn9JGgOIiX|l~B01Zb7#Q?fp1F@Dr8nhV&vEu&{C$ zTBp%(TlRsjf2b0RAzY?Pu7IMwiRBW#qFrKF!(yyRU;};ANA6<#O5?{?E_4ca@fuqr zct%k8G}8|n>;*SPcAf3gX6%bOzW&w@YFhoj+NWiFsL0E@k5FG?+tYN|M$p_FT zpzMc8Rp<#-Vk(5tUeNk*81fM4Q;;^5D6~j@FzTI2?~5!|j&fW@I_`ncYJw#Egp{jW zoHft>I~>%pB6HXnAhEA_It)Ll8A1Td&QcIHlT>%nHGr_oR%u_rX~=@q-%}7kA>V&! z&*|wvKZyWi0G?78(bk13$?>*ET5p!CHYB&5H_>y5spbmpofFXq@Om>hrmsC6LzAoP zsRopZI#gp>2;QYmZjGmy$-A+|a~1X{xfT+0ZMD=-H1w@pM{TP^6#-@Fq-9M}FQ5hA z$-FT>|99kr@zM8hC8VK$&-`P#Z}NNc;h=|qWEy*xyic0{mcPmQ7%OOvZ2=m6Cyw^x zP(LO2n|0(TLP}LqMdFsIn{rcKsQU-o1Pwr)A0_RQ_xEq<#XI^Qsqs*u{oum(<4b56 z7e^^tzr@tAgQlxFF-Ng^9o?SylkxV9Ja1$RdXI?dZ5rhgIBmLx4#2H_KpQ>XC2EwZ zH?p)?A2)Yetc68trw91Y^)t2d z$o=px^U^~LWmSE6pm$xS9y_$PpZ~^P0TznXM#si&+-uS=krpodAa@Bt*qr9mC(5L~ z%eRg$tSx3M1UH|pAVTcI=JUTAeJecQ#vf>R2%x={Fb!~5YpdcNR07}aY=Ktr=J>Ps zfDPh_qtr&SuH(lEant0o&g_RjaVIs<9Bm}5Q|km$@eQIk?*}KZS@xRRy|@C-+n#uQ z3(yquA_j`2YjuiMGlLGKCyV`xn!>1w)Z_^CopL(PMc?x=vhsX^9;1P45di|bWmAcT zvbW+;pDDe}H-+YZJ-OsWR%vLH_kARc|s zd^kZIj^hRwaui07sz8tSRO1%$knofvHO$hZTfO!f!yg4$SVQKbma7mpQ=_KG#H6g# zMj|sYe?)+jhnc>m_K#V64&3b7 z>T0nL=Vfc}W}mRrWP_@;k*{x?u(?03m}jo1T@<;4bG3eT16j2e`VV4%TvUSAk_$^Z zrGPxvG!t!=6p6WBgIpOr=c{(DiNyrWy=l`=!gTQcfqR{x(T^Y;>bB`=9mzW-2%Pr1vA%Gzc>FqJT+^ z=ipWq1jdWlTAV;%UcUm9L)ZEk=pTUH8iXZ3h%MrOZSfj8kk*T!+PaoB&1JYxKu-%0 zxIo-B<5?GPxU0{TT?PqK5Jyu%25VkO5JGkVuFwZuw3ZiNTvyDc5KD(rbE!?sCW2?l zB0WpGGn`Gg9~Qfg+ESlI(w_^x)O>+g2h5|;$P|10EyY1sY*X@XF>wT{ODYu=@I|nV zF9Iz8^%TKW&<$%tH>4d&vI;CPusrBjv{cl#Dipz{S~eR14{m#4Pwj|I&`H=m8*|QF zWm^NYzFK7s2mQU!Ld(q5LD|??V@(G^?~9EzvUM=M1~D!zC;c6mEupgAXbFSSlC?lG zgzj%}b!cIz&XC1GkE=y3m)6<~8**aO(sXHQJF-szC(stnY`~hH#c5Hwhoi#Ik{vTt z9#4(MGn3ODqj=4(FzlOIiRfc*kCX2A!+4u8DtMbMwJ)}wKK0P3KV?^f6+@#USD9b% zo2;#6k(5n^vY=+)YFHk7rlx1CG9j!$_iY+A^p+1))4rEd0vJ`~z^WKj1&Xc*_%m3P zO6ZnLx7N}Ztxz)S$&o+ZAV}$ZTu0?bJvSs}NYZ}1cVGtFLf5X$?!mghM=Hq<>jYH{ zdR1YERD?d#q{mPNewDnb>QdGY$aSux$cof2-83=3lx-C1b@MI3QNh;EB{`l>=x~OW zCwcz=mg4zUe9N=F%;$RlH1^pn9c#lmt~2qVkFUwzni-QBn-~`z9~~c&upvQ*)MTFC z*<~9~x*BLty7~?K$&CLmNmqS#3`uh_r@7?#<-u17j|T6)wf5Dvyo=G-&}FTIYFO9c zF3tgnigW*PYwHmx^$P9J{82j`87vhyhobncT_NNe1H1~#S-VPJFbMnlzz@PzhnifG z(CBZLOdyxJO?0{#ns zC|3HG%Kqwr6f_VQ4Cbo`4d~$k`7iYqm^<6WS@X;4F#z7c9U<@+%CPC|CgSJ(7WuR) z&j$s25;Ke2lb^FUni-PwvJaVD9jH>G4vgVDI%bnM?;U6Ii3Ht1Gy7w1DEK1aFHpP@ za@60Q1>CD6m+SL)7X>t4yKqy~URtB5rki-hj(gIOkZF^^hp&|EKq;vme^-b(9@I{2 zgFO;TOi%cfO0sRn7cGN|y9p|8#vfb$%((dpdT?3J&Cz_j9*oW)PnBNC+cuz#muRk? zm*{AH!BJ=_{53VYnZPNwE^+S&%(jlDy}>zE1aLj4+wv25XJz>cRqZ#%T_$DHn~H50 z{zThY61|)=G7(8?|6r+*T=q%(X)1+DfbyIGF74 zaJz?zRw@w5^2m{zEO4_$frpnEEe$wI($=cj-)^wrQvSH$oZ5tY*Z|A0(C`PH{kR^+ ztg4SC1);%mfzL1$DsA$o1`}k6GU&ksFg8t4Vl$IkWFr48zcl}>P{}_7#G&daiTz%@ zk@spS4EkRtRkx9-k%TZpbvc=;|6d1D$aq$~Ed9vJiD#sM`M;Cl2^oF|bk4O%+j!|nhO@pV9eSwA6}V(#wRd@GIDCM>bk=eM}sf$ zu z^Kfqf{LH{cQb zp8rH$Tx8$%6nK1xC;K2;j-;@&JX(I6r~CX^{0acj5?(N5h2f}nDK%fuqveJIT5fen z7giMu5S)Jn#~KPsn8H3rp6$hqDAXV=8=wlqwjp-l8JUfZ=2cSY3r3~BiB{dl3|QI_2bEk;vS3pJ@rXDbSPuOF9R0q?4X$lcCdK< zKY0fI{~OO>#9w#@%V^8^>;eRUuVEA+xj#jEBJt9Pz7XTIiM7G-vcHu+Lbg$&f-hDe zb2r%Hf8g6nkz~F~2JkwzHAvYwukh^b;le;3YyZWNPYFD|=y#+S<%1*R7rMb#l$1D*IzA1P5Is|Vu-cR#hDx?Cko?h!+J>N>#Q?CVg6*e!k`zAw zhb8mPk=c7wGvh~OSJ&GgzYx!Zm<6xLk1J<@k=?GgNI zPZFRjZd{E#S9+LMvvDHy*>OA+%0}RTB*48toSkFC`Cll@gXH}o4%g_lik8azMK{lx zJ`*hyeL_9mjBeXJ_xYG7?n?_jWIB|#ZC`?AA1dV>G9C&=(F-&9ptl3EPl1a;ZwoqL zg#LQ)e|B16>ZI@j(}}91Qt^2lID+XUK6_g9|YH_pwhmkSh1>g5nL!pk?* z_)RwdpW(n8J1@1V9OtEeQ_4&I2E5c)Y-TahhjUT8dUAGZpIt)YT}iH2HF2T`|FM*^ z8b8`bvd=|NA8fHc)Cp*=s)n9j!J{&EtS`RmSte&AOQft4HnQg6(P>UidS67U)Kr=d zX0nn~PEZzjoIu$W1Rf_ntI64M_kE}W7fo|m$eKIQY<{9hPL8YVIP6)&Yc6Qv9eQ|qs#Oh*`H>D)U!Fi@IJ`cV}4en9> zdn#z#-Gq*Cr->QUZZOdUMRnUViFcv~)a^c^u9&fUy4j`OW6h?(Xy@fi)T~N77*TUvU0hl@p-OD^zf_5h z_T(=|ET~)`xQl@j4xHX-avz(&j-#gTZ^HzAy{lw zyu=~us+H&88*6Iwuhlfavk&S<-NCE{$Si1S%^JMcA~izF@I>OTMPn1;A~&R+qCw!U zJ;4U4+1lRXP&RM`4OGi{Y@qlZJ`gx2={=(EFy9?uAXS1F>QiJ$D*sg0e&8yj$y#dK zBagK;Giz~O1Q8BWxaMxsTMeeWF zCsR!U`iDXldqn;fdFXkM`*)XU4l*C9&Chp!rdE*b_>73*vcLN=YBxUn+TB8nHL*Xd z*+HrgD7fp;y9cc)%9^a3JnmE$_h?I@tKx+fMUBJ910r+#3S2)W`G}C zBHs|Zkx5|jgj)e8aO=W{^l7B!rpC4e9Kuvb^Z1D0KveF`(R8XnM>WG|xp=ii`FM@~ zI(;J*AcmNUW^#r~Ns!@zq`u988@$(pJn*UpJWZ`d<)D*@gWCcTI}b!khnlC0fJYX^ zl*&JP`G7Qa-&8pxM;i*{M`;q6t*Ob}WEof^uR@a}R#y~N^Baua)16G3&f%uF~xEmk8opYh-4%k;v54DZO{74k0f#U-<5{V>ba*(>>pUmmbdVrYGuAM8^M4AEM8z?461i25H&<};MX^=K&drYEP zZ~Y=N`0e|j-&2qG?>SE8Q@IW1IbSzjs60<6ED+_owgNEmLzDm1_CjO(T7H3b58%nC z8gN=26ptU=o}6q+Nsc&J#tk@rbcB;>_~@D5<1OP$xdBr+H{ijU$4u`ljP%)`ot>C+ zZFnfafBFE zxlNxQw>ZVAYdY5(%)T^rY@L|nY@s#sn{`^MFyUqQo90_RnxrtbiD{aQ?~J11T_$|P zDj1oN*x+&}bLT7hUi68HO_s-_mW1}iscX9*neIKFJp8DIxd0{fX#V4&!Q=>vNU#p> zgd7F$;2BO8nNiLVT#lL`aTiY)uG?_i=RbhSu#|~VUcjD~5J?^=2PVmk@P8@4imU7u zSoLy?l75c;GX7_p|8xO*N_r*d@Sf7UlD~DIn`8*=8dbcHT5;AB5{eT`n%@_W=F_`^ zsgjORHL37tx?VC+N`BRTh!r z4+!JuPWQ3kz!u3ctLACRGcqYDbw{d24|AuQl=;~I=OcIyd}#3)7fpQC@;9;+w0v#I z@FH)8MKN(Cr_QufDE@^%F~h5jKhcml@*fn6h-Z1tlmgf_+#PK$t|y`-sna$Px&)e9Xt#0MR$ZW0~&`UFiA+o3|Sc zL0;R}Zr--eoUkK(Swe_z+x)e&XBuZNm>oI~+}n@&{XLod^MjD6pDsPALdm~TsB(Aw z*`?>w5dNAC`;zgd*%fv|d@<-~+euRvga(>7zfkiNT%Pd5ELP*o=G~p7j*5)h7;DPf zJ$al3M?L)}jq#kaBQ@0A)>GX#`pmco&@i{`*=I2X<|gjhwm;hl42{h1xvUK90l|yE z3;PXwCb{#ft+-({#(LwP4XL?G*~`*f=4CIJwh>cH>t5o`@y7A?_T%oB*r!F~Ktzu<+B;I82lMe45Om(^S!6hy1&0hb)LQw3N;+T)hCqv8x&@wxX?%1{BY(Jy9=Y z&KVgI*BGj(qL%&^#TCz%pQ}N+Ecd|!mP@&(mOouVl~>kSQc!YAkTiLZn!3sWd6}-=0PgG$4tR!ySxJ~ZT zaK&O)c}er7-{A_%ZQGW2<+!x@686dB8b3BHxr9(<4K9Z2;-TYagK`0DPS)47)1(|c|{Gd}aX z>3G_F+OcCCcrM2wN5V}*UoO4hja4=d2^lqRf_cI?=a~adwoUx)xb(b$Y_ALInOedh z<>eu`yBz|!6E<;g5*(~eIBU!(*&9K_JHwgQ!m_c$R=SfDtE0`yP(2@4{pgUs#k{HuD28b$_%mhTL9_GyOjJ8C3t{KQKzJwLndzHmJ)%UCz59YkkK9#0$}bKHlu6bS-wLo>EEb#9X`Af zirnWvHDj%ISkjyvcl0*(aGXBI#o{t%+IQWJoudaHb~U>mJ{x%56eBkjk6sM&+;4H5 zHQdk5Jj%~KaJXsw#LcmjE&jX164Q*?TT>EZ%&`e6n=)aUcH&AAOgHG-3D!tMaza%r z!t}tn@!T3#zql1>C1?uHm}<*X>)&tpB=7PjAY<{*#u9)p$accc2kQ(Zj3aLQ=ds^VPstvprDeCtBYZ**_jZYNG`YIXnl#2TW44c;ZObj}T`^qhrL#WKXkaN_KFrDQWM9b+MLhYofPrShITN zx-}ct?~1Ixa>d%Un>I%6s=jOb_RtOUHq6^Ld)G{zPiFd@Oq0!r?ugOR3xcC9dji)i z+7P}atVT@0)Bv@U)2M)ProkSE&YU@LeriKJtf=SD2~XY%Och@>|x@V!NQNJ;t}q5;H5eNlT3$-=nq``4U3qg%9A9 za6!4ETkuQVf_uYG7@f)s_PV)or-ZFy1zwT|b!f9dBJDl7<@o^KYO*jU7g7+s8cAwYBm- z=7}QG{Obm>q<9BE|Bk#*b=TS%(@!f`XSHqkr{gQ7BT$P-0S-dI?qWWhwR|Q}Hxq;Ixfq`@VeT@TI{d3xcxp9F}=BPmb zjlL#+Fwin>`dt5s#)%vKqosR57O8V+OPE8=pPkWaxgJ&WArXdRMf_} z1miiXKTun8Fgk8-g2^VyF5;}P)thEp=5AcHWt(yP>Ma{Lm^W_NvO2=FZOfv$8!Q{= zt_}+|4%A}$e=Z(d8Q0azM>l8A>_wrbLFY83r*FpT2(%9p@kr}aeXS$gC5A2vn>)uG z5IAvJK$LFoCf<6)>dk0<6I$PHI;){aRkv?hGzVRTubw@_Xg`1MoUlc+Orc?`H_o-# zFFFTRcNSPz-dJ5!Z>(-&v76P!>c)Ru_EL_>cX(4EuYIF>QwKY#uTnj8Bi;)}hy{)TS zzkeC&>jqmJQ6-41)z)E#kvJKK;inpwiQ)yBHVHH@8p@C*wIPnZqg^7oVSTu<80JP% z=;O=Tzsd&-9Fl&MQ(w1}Y#Q1v-aHpD0`PICnEqXiU8nYU8ew*F8W_;k)TO_|2AwlC z@0RgaOdi;vkLBdW-h$Zta<(W zTxCsh3`Hw?K<&ZZ-li$n_qLW!vm4^VBSGoj3AzMtcX$$A+-La$`{x_vvCvs}TXSyh z@zj&1*qC`UFs)~74qS<1cl_#SH>hQ6X$I>gF7}%}EpUcz#`LN41587Qr=DA2>7-fX zymM?aiaMtpn045cov|$emSn=tj5SA;tKqutbprd#IEN(irRv!*-n-+)wKyVPm8f6U ztJ3MN;=++ZW5=Tf@3EnLP+Jo)sDz-5g-0={foqSCI8?`#YQZj|g%H6Tf@Vi2iu9+viw)9kvyHrn26&jusJ^yv+P5 zylYSBMc3q4*00q1+Y!MIkvwDM1oTpt$da#jr$p?GNQ1t19lR{bc-x8Hud%%>f$gJ& zZg~G-0^RgM-lvek*A_qlpW-KZna9!B(mU{10MFX(J@rCr)#p^{9YPx@*V0XVkC<3H zK(^YkMOU@o3Mk(Lun;QvEMn`SsE+}n5^Hei{0n4y&<>@>3aKV9HTEzZ>4U?0sj+O7 z8uMGlMzUe6*i>Cfow1T4W9bLhpvag~VJyn$Sao}Ku{!Pdo_Dl3o}YaCnK4K5QOb+? zh3`n?<;8w1DKC~5>b}hf<;8+Z%8Ly&8jgm0puE`Oo%?rN(7SiU!D(40C}0Pb+F}+Q zR_cqH3j`c3DKW-+)S(gGK%zp!>vNkGQLjkS0NrI6pirqi7;uVx8f!L8=)Gm~_C#Y` z%C6)i$$@TB=I2M%h5`QP-BS8)(iz4TFpbtQtiIN;v19PiA)SrmH%*ETFvt022A`g* zyB?Mt=x3bZHGRxbkGPZm<|fE^8j#QWLC*lr91e$zhNcIq71S?r04JCK-o zDN>k%Vt3D#Y`aQOYp@-oVvyLWUx3pHi<478|Bl9vvHd_4?38n1>TT0)B>F+}C=9%} z1M-}Jz;x;#gHmlR*lzLA=G3@&^WM0Wty!k5lv%#0WHM>rUBzQA+Nv1 zf8Xr1EMUg=0yGVs@>A7T?2$Pw>C@|K8`z)_I7RV4)&@icPu@EqH=vU0a8>!6cPv=* z_|l=2#DvJW8j*1u5>t(bXQYk?wB38u)}f|)orgCGuoR9}pN!lWchHm_H`!~(qM38U zEOWyGgM9p<^|l0vvBRSGph+Rk`zlakD?x3oglyU$7m0=!r?a=lqomH>9s3U&Px$X2 zvWtV&-W-XJPC07Kn3*&IoZvpAwhS@V>pilSpXJSHbE92L9? zS_JUeBdPrTx9#XA17K|-JFI>;O*HrbtoMIvJMVxf&b95k!tAc|$WoTsV|LH%c5{wl@6r>9XNEcDCV~dKtcR^H&AOa$ypdb<}mL&F?L}QDw#PTee^_=f|cEMkEC1JV7yzrpSK8CQ! zl*D*xE49HB+h+c6(8At&p*W1u@<>K&sx}Q5iZf@1mrBQf;0}!T*gg#Rxr^LVZq;e~ zppsxIw4@^Gl%e|YmV6*r^3xAg=_{uk2+K3(h52t8X$bI}92PI7D(`MMT=Bgj5>$X= zh2wpEL!&%BLUtc1J+QYDAeCT@nEU^xC@?j*DS+g$Io+X>rrv4c9XylG_ zFq3~owNIRmP}|n8!8B+E`PUOufJqb%O)dz|G-d_|Y($R8e?~k;!SP99etMt%US-pa z+TVsx9vd)R@0A|9AFeO^%V!=lRF!YY+%N6VOfRa?pA0S?o^I4WDciiiqFgT%>pNywN$KI8Wo6|F0q}`yJ^#h6 zXY`BTpx-9Amr*A-^%o%^WJ_dHgf9=SX|m+FxB-dJ@`CYIgIW%nrfBic>pm2{MEY0-l_m8;8^0> z^Lp)*lNo0Yz|pPrM&VNf10d0a#V?yd0a=5>;4&0O6#_|ITKn&pf;?s!svu8Szo3qK zY8(2fH_D%SV}Tcwb@<2ihJRe|(DrPBmjhAL#prV7Q5fpuO#PK_-7&klvFjX+4hqrM;kpE0?L!Tj;Rih^mz zzBP5_^2cl)IaJ?Q)Qsb;9J=q(`}tX@e_P--;+MY(9J<}=?#G~VjP9lCi4Q@Z%li{~ zE}1tGrr40D$hFOZ55%slZnkz4pX2Q{8T%aNLN7Bn+fi_{y~}IIr0fv!w|6$U7^R@{ zY@JIVv93jYh(=+?8s^fI_Zc~HNPj&(wzR9wbYZ<%P759`%*i|oUzsgWu6a;%5x?!K zcb}H8ns-?bhG}$~i6It=&@6U-DbxqTDeab&HI`ozR4OIz$?l1jY6u!?4?;e1E^K4H^v+c)f6lSX#1qPa4&lqfiL6$ z=KzGvB^F@oxuW@;`q-KVrcGe~(!ypyBmb zsd#lW_U#WFVP=@+UuiYW@^`5-%<`|a7-j_)AkF-xOKRTQBuG>!p@(&6~5!Ex&>RfZ{UVJeO;$gtxXo z@bS54B$JE|X+8S{f;+qlHKq>8^QvUKFPTXvZ|wGnv1Hj?skv(Y){KRjhBxQW(#GWyU2cMBtdml1 zXKu=|BExSiCS@?4x0saqqL}Nj3oT+XKb&HX`QiGQA5Qter0j^xuV(jm0^1qPQ3mAC zBQC8$sidRWidqrXVOX*Yij!~gx+|?6XH_R>f2EQ$YP)hUHX3L-%179u9AJJHNGtq}cSFHlP3_T60Tj_K zFaj#Q{YLPIdzzYdGqr#mT1|KQE9Ed#A2^|6-zQ{yq+jJ~PA*Xb1?gois9Pp#k5Fql z2Gc4}U|Qu5i`eIN`NNNGChXXbbQcF;tjWS}x}%dPF?u8@tci>!2_RD^u$MuSHMRWW`ja+C`Lq<#9%BQ3c!iFEe3QC@T}iR=CRLh*k^CFc$ZPQ0S)#u8Q~=-_5gkRSN@ch#x38W`-I~BnGE9UbRpnJJs$^hjHp`>$Gnl#k8-yHaA)fF@|E=CpX11 zniVR^h6bQYme=N4v0#He(~2-1-8Tt~p2chTq-7b?vU2lEi`3fmszd2nNAx?WDnR8r z(a+7x2pqMS|AgQ${pkIn$EyzKo(8DJgVP3ejqEm5COGVem{Rs)Y;K5+t>EnoH%*rT z-u~e|@U|S)6v$5}P<2)9@g8{&3tk@F&!dn1-f=&*57*yZRrGa12*{sQk+%8zyb3@+ z@zpx)=b^`=eii4oU5!Eivf*+QgD?1=Kb*AiJ#)eLykp^e%3n9N zP==qe>Y(u2Jpvu}jxsz9DfhaMF}Aa{DXQHAlCZo}=6+wGI09s*$6H));4UHkV}>;V{sBZyKk^=5Z}hEchihAB19u zRyQr6du(n2-M0YfelQkbo&i^)Qe1(e?+SkM5C>U*hvbj_K2nrJFt4+NLhTw>(C-PT zjJK1oDK(RrZ0!(3Nj{{rtSHF|KuMm*kI->-wCK1JEjq3VoMtlnat*`riQf*ynNQ#{ z>v4RaU@fQv{+NhA;#@3yr3XLQYu%q~VDzUEFVuatPYdebZF0tB(-7)snW;ko`2e>_ z3+-yt|CT+ZZIN)@^+dJaZFk0JW6(nb`GG4AuJh&qj# z`TSNeh1PzFwT}7E>Z)Q^v#OYI2m_+Jq86vNKMie>g4N@Kll?~hU%g>Dty@9M+k>bAbzjTDb5?0P z(gvzC>kelY6srsNZ#`70*UYGGh++!`e9Zrij?G$X5ifS1&S}bK!``7C6pQ855u!II z=EbNGF7e-si)342XU2kg>98k}FL0CcQ=mSq-dvVjWGu=(ly=f!ZfBd2xO~-Q3779Y zw|)G&U_ZUbG@nRdOQZagh8x(vl^B(C*tgcyh>45;HCy;zyu_O}*`7F<6q+mLg>Lrq zz(&5-jgs9AZvNYfqNJ#zX=T-{vE8h(gWFExl@Y~ExaUExvkG=W)g9=7*PKPBL)j`s zH0v8%!1oL5G;pfBH&u+Kj-qKaYByL}&b`4rSdaMBmF4_en<%CT=4qVl0FyZvB+6XS zquI!6(?SdpWJ!?U$~h{{IC;<&5jjR2_X&AWdvSFQUx`i?g>z`Cl{m}<8xKXc>6lHn ziO%JhVs&QeE1L4!sUlaT51PRob#^H6q*Y{%5{+7)?AG0Wn-}8%P z8(~+*g1Kpu950{ZlJjR5mgvuIJ8|rQF(W&FU9n*aY%&n$H3)M&J;iMcUmFsnA3fbK zI@lN-9XQ$DpqY(X30y<5Z%0^LINHz$h%$dkTw>ZJ+&=CNHto9Dl~Iv;FY87zfl2NL z_rUaGa50LfAF9w-ZaS1xY%IiHY~=RHO9@XG5(p_bbc?wnHZw60MB9p{(%L!2BvOx z@in#*E#Wd*v#uzxjk5bVo%T=r5YT8qbpK9~ddF&?c+OCeZqYSPUM% z+QU`vI@e?3P~-4K?~wimnYcZnqb{tj&NwNZ-f^Vxq9xL`UGYqov0!`Gc4fg{EZdj0 zq3#bj^FC{^&*8cvZK<_68^$xU8WwAq=9qpT#M8DsR19`-2WW#d1!6sw-OtV7!)8bO zvRKnDqKqKVL5!!f7~h)1LR?lK;*VR2P_4pUOkoLf?T)_&dG=EA*G}R{b-XYC2Uhw9 zc3{Cuf9)^svoNHeVZF z=Lf&KFh)J*!u5oEhSSG4?5vWaD2E=f16<6l%D^-ak=@_Dljt^Fmex4U6_{3-wn5A{ z&vk}>cwj`};KcR|ErP!3Xb*zE=@?2t&^Mhbn4oXE41J1K(AU%ldcIeOA?Is425P=n znZE9OV+33cUjqy-6-g+l&JgG#Pe?Q@;dR^n!N;O+On#7mTB-+qVl)K?)EF#eFc;6MhM3!LBMPpd!c~4@wkSfg- z$@PU$T7vVv+rs&7`3L8FD&u@hO5}W=Lck8rH)NMd`$Q%|)IcLwz$A#ZO-%&?^oHy1 z!2jUBJoY+fTJK8{k!%tKD-rSo38Dktrqoz@;Kvvb`~|dDy~Xb=Cc0GtA_`y*vjUji zL-_afn(P$vSz3-WQRp>s@X%{6tkY{Qq@0-|E_Hwpm>;teVaE63GjAE@j~407H&s32>!=0y@b3C~3GF4fp6qms zRW;D&^5;VR&{dlrD5AW<7ekt#zefK1HtlC~`(Lc+_xB!)*-@H~ihE$mWc#!nTR6 zyKSKD?_4LYC%1zu;f`^axm$1|8KiVmrYcve8mcs^-l}-jBh?$#TlL54mg=_ZSant- zT_dT{s73*eA{r$$n$ak&(a}by8a?K1`4)UzzB3=lhwzbn9AAmI+PC~Q{w+}w2hxu8 zAi*S#%p`Nj0&;|0A@|4=Vs6}^af`;|8z(p3)VR3u(Z(km|7d5h>umQ=yIywwb~EgX z?2g%;v%6w=8`H4QXfG{ZHcHRCjkHKm#g%}<(Vnz!}}`}X#q+mEpiv|nJq z)qb~qv3Lm!8c4&e?{9cDW$aaie)<8a2|w!^OuvLok69Gx9M zbL{5W&(YPr{zxToHje9Ib}KRbvod5*y*g(JuvTHImz0F+D2M?t+Td`_7iP??J(_F?Ii6K zNcrbz7igDj*Jw9t)3v*`h1zQES#Wx;X>V(vJ2!OZo&WCK(z&zq7tTGMhdFyV2RkP? z&vc&aywrKE^H%4b&biKo&XvyRoi94yb^guSBs3801t;NeLJOgb&{r5FcnJYQv@lti zC#(`S3)_V(Ax}6c92d?BH-v}6YvFfY10AR1bvj*B-6y*4I#->C&PNxdi`2#Gl613l z^L2}LD|PF1+jV)m1G*~RS>09LkGjXYXa5^$R|g&-E{sCofhqEoRuY#+xLLEk6xNlc zJ76yP|AC-@0+0i52Ex&e2!EEJ|353@N9X;Xb>h>%xV#&lUdgJ)0`EIV{G3RJ--wD0 zO%xeLj!4aU@^1BKX5HdXYhI|{S8(REewnHwvLGZRHa0XoGd^$4>Ltro8mEROL`5VJ zD=GFrv;3%9e4j2$fOu^ul8(&zoAe42GhKMnL1c_H@*y8mt2EiX&xaHSi*k!1p1kiu zT!$d6w;AHab9*4W;~NFca-O^@-D{9_V>z4T+# z#}@-{@UVZfU!bdg;0YA_#Tehjb7!XIPKwh{o;^Kjwo!X;cJkz}CmXt$oP>Y01PqTXln5&0fDy>_VS6jen^VMNA==T%L#ucGestAYG%$!|@1C{vpcojW=qc}vieJ^a8$L`vJ&pcp*d^nW-?+Cu|}1qMID-k+>@z9 z*H;`qYU^G<$>eNm#qAlh1*s=ZU%rK_NG$j}6@)2_zXrhF^Z${%2D>*Eka1Q*GfOQ* z;YB*a4ZHN*;%4XtRML=bBMW_uBiv88pE$uq9y&Vpl;PUhU6oZ*RV9NIpH4nDuH5*| zan9@}Ckcl(?aRqEju3OR=S|-!$;t9GZsyMUS-E<8Q3qU-g`pf7yLuD+%97|*ZhgYa zxM;n`oD3E4z+T7&G$2+l(SO2vt|WiI7%^+Cp{GaD)$!6lyg0ehq5JOi?-pxObOxon zj-JtL%64L*0$+bc?f69F#Mu9~MJcv8VA+C=fs;`tlicFQizP}r=*dsCNx`gw#C$1n z@3_oSThv-}@wS|uTk_Of^49Fm)}NYG9#CKmEO6h}Z;6^V=%HEyD-Q@OCeQ}TYpKHR zc}2nQdiUUf?sJX3kKK=1hZx6i{Q+14ws836B1=ve6B6%Pxq zUX!j}EqX%LdTQ_Yx?hd)T)%b&%?%o52iZAPc8~~?Fzi6}%BQRXFjF3idJTPX+_TGlCMof)BPahHG zKh1+S^lx%&cV+Qq!%vkSE)lb%lj5YL_^`0i0g%JZZGt<>$UH0fwIYdL6+2!e79&vF zfC$U^_Plw>e&OPVGe>V4Zl3aT*(7zb?LTX5ZVcDeXa`un|4$#$)}`Ft8|d^iTr zR&iFfp<;J@L`ZCcmo%_5dc+~3#ZrUWXOLMFGo`G=jZh3n&4`O7!QLX-Q+%E$s8uu# zpd53zI|pr$Z*8FPzKz{s74Ul%=sTSG!Ejd$Hp0HT`%fy3z|b*uTpcT2=8%=Evsg}h zO*_A#KfRul1QWoXlTCx(5SCYlz^6W&P0|;LM7TZv%*cG>UeBSMvD^haZ;P|`hc>pP z%g=rL{n&*|RVIYa92=mgx9$l$64%Fs>BDBlOiVN;PK=oqW(bQ}pD|IIm@zA-Kwq#v zXGex{$Bvx!1%`s0Srd0in)mys5C4Y?53%Oi$yw3DEG&J;QM?LhVJU6On`|xa&reaH zP^W0MQva&IKu9D5j%hIMw zD%bYro})&0e(tPHBiWoAgSW$~!j=10?N_fVS+;YHzAQdBFfcyKH+jS7nQ~j>DJ3ZY z9~!C)_|-8gr)+wkBTdyjsbXo}D4V6a_kFP_#1zF?fB(-mS{x1wFCcD_QU;8W)yI<= z@zDImGXV~!0+OqU8Z(l~D~W8x&-j0#*qq&Z)**GJ=OD-liI5-?McFQ%oG8mVnJ*1F z$;BkbPe+}>xU{rbN$Z^+>zfvAaQBUI3zuq!b2%BiHf0;q@@B*z#97z7TEbzFdH=!E zk{T{uq&5;6v>bjzeRyJ;Z!O$5nOM~}q0EQ%zQz2FIZMI)4dYS^xA&T8b$pZU(L+r_ z1#y3_ql%8b$bq_qYGUips8zG436?)wi;VB6G(Ypq83xC4OJ%iy{AyI3=UAimCN6vV z&9b9ct{09*nKfgeH8c-WnOsaY+$%gVZ|Y^RZ9e{$?1LM7SGpvU5IUlLVrv z67;-;lKCPTR0Zv573mXbHPDBhA>7?9uKF6JEPBi>$M-LCms!EXBdvm1DlLi17h;!ksz}t{1=oS<= zNIi`RgGXg^{AWedB>nKQ(L)m^EnAUn?4gPcG2GW ztjKwD7cHD?+)}hFcTa|zFpb**#+VHp9}x)Zd5J`5V;;j7jCNw70E{L3rshUu7&9Wq ztsiR`ivbPF>Y>L_5jSRoMD&F-a$_NPB=8{h+b}kBoU!X?7yI7(`F_CJ#rI1;y4UIA zrLI3NUB>Ms!@dy-gi8`z2q5Q08*;RMJzzd2+J?*QS+MxC2FDFC%6eGZHBp`^iHEpw zVB+8aPvhu-9^tJGWa+#)OJ*7d`^30K;!t@Ab9oZMr(hTA+HOgh-9Af7W86H}%w~$2P7!M*jvAFXH5R834Q+d!CrkkxBgO2QzVDD8U7;;9Z#FcU+7jdoX~i4r z3T+Ls$PoMD_Ib$@<|Kxv2pH8jfV+by>PPmxSB3I^NelV;V$Shusrq>Kl?VCP&+tVST5Hz--G(3nVqK z)<~_;F*`yRtR?xuur~=ITQ;UHTu;2mXCENY@|LHax~l&*;^u%e#+m_La+?~6c~Nhk zd^?Elr)RmXDjEMn_2@8o){+&X+RBC^iOG{@#T$ZR3-_f;so86HZo^$Et8&_(>}~9G z^7^@T zjhI>Uv`j|?JiV|#izqJ1!xJ2t7bFqW%GzC+pWuz(jTvH+_|cvc0n`_#SY`@mi~n-8 z{8EmhFFC?2bJoE!XSH#nM{HC;l$uxsT1Q2Kl1&uavXafZdRqd8`1O}~GD?VvQJ@`| zH!AM?Y$=D7!c?(z8YfFgBKz>u_V2C|2?!Q*4~?Fp8lfR;T;U2XDeR-25jv4BT< zh{&VgT&Kg(c>Ira1dXQAUFl#sn*0c)8Hf|WI9EYo3n`}dr1m+v$NY6ruwL+tc6dgV zsmZA`QuNan&ss9iNOWwfjrBEU>Xy_EYxHZDY+SMhgM6^0?QIYX+7}O?nMzP);Yzn; zZdz>wINBx)^(gxk*EwJsxx>l2a4F>tKzSQ0~#SN662S#Scsw4;9aUF|B)w z!vYDI;86adBnqq-5%s3=(Kx0@H+o%p23wjMl3!eszo)o3e|(UUDEHHmTr=fZc_c?d zdk>R__l|BaEA?n=LZ|!JAD9d{GgIe!C!B-uG0=&pLvE8O9_m2m#T^V&O~wc7#0T5LTrq`3(x*msy}VjN4a!9vIm zH(B>7u3;Fxhxx{lxX`f7_=1h=maQPrCiy`L7M7$yL>w@JN8zbZheX%FRMDO^XwcyQ E0Q7&o761SM literal 0 HcmV?d00001 diff --git a/config/mpv/input.conf b/config/mpv/input.conf new file mode 100644 index 0000000..305150f --- /dev/null +++ b/config/mpv/input.conf @@ -0,0 +1,10 @@ +ESC ignore + +ALT+k add sub-scale +0.02 +ALT+j add sub-scale -0.02 + +KP3 add chapter -1 +KP9 add chapter 1 + +WHEEL_UP add volume 5 +WHEEL_DOWN add volume -5 diff --git a/config/mpv/mpv.conf b/config/mpv/mpv.conf new file mode 100644 index 0000000..c881e36 --- /dev/null +++ b/config/mpv/mpv.conf @@ -0,0 +1,229 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Quality +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +profile=gpu-hq + +# Hardware decoding +vo=gpu +hwdec=auto-safe + +# Scaling +scale=ewa_lanczossharp +cscale=ewa_lanczossharp +dscale=mitchell + +# Deband +deband=yes +# Range 1-16. Higher = better quality but more GPU usage. >5 is redundant. +deband-iterations=1 +# Range 0-4096. Deband strength. +deband-threshold=35 +# Range 1-64. Range of deband. Too high may destroy details. +deband-range=20 +# Range 0-4096. Inject grain to cover up bad banding, higher value needed for poor sources. +deband-grain=5 + +# Interpolation +interpolation=no +video-sync=display-resample +blend-subtitles=yes + +# Dithering +dither-depth=auto + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Interface +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Force starting with centered window +geometry=50%:50% +# Restrict window's size +autofit-larger=75% +# Make window at least this size +autofit-smaller=50% +# Always open window (maximum GUI) +force-window=immediate + +# Disable window border +border=no + +# Disable progress indicator in the taskbar +taskbar-progress=no + +# Window title +title='${filename} - mpv' + +# Don't close the player + don't advance to the next file on finish +keep-open=always +# Don't pause on finish +keep-open-pause=no +# Reset some settings on next file +reset-on-next-file=pause + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# OSD +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Custom status message +osd-status-msg='${time-pos} / ${duration}${?percent-pos: (${percent-pos}%)}\n${?chapter:Chapter: ${chapter}} (${chapter-list/count})' +# Show ms in the console +osd-fractions +# Status message font +osd-font="Gordita Medium" +osd-font-size=30 +osd-color="#ffffff" +osd-border-size=2.0 +osd-border-color="#262626" +# Interval of the osd disappearing (ms) +osd-duration=500 +# Don't scale OSD according to the window size +osd-scale-by-window=no + +# Don't show the bar +no-osd-bar +# Less annoying OSD bar on seeking +osd-on-seek=msg-bar + +# Hide the cursor in 500 ms +cursor-autohide=500 + +# Prepend module name to log messages +msg-module +# Color log messages on terminal +msg-color +# Display a progress bar on the terminal +term-osd-bar + +# Disable not important log messages +msg-level=input=error,demux=error + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Language +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Audio priority +alang=Japanese,jap,jpn,jp,ja,English,en,eng,Russian,rus,ru +# Subtitles priority +slang=English,eng,en,Russian,rus,ru + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Audio +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Volume +volume=100 +volume-max=100 + +# Correct pitch when changing the playback speed +audio-pitch-correction=yes + +# Load external audio tracks automatically +audio-file-auto=fuzzy + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Subtitles +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Load external subtitle tracks automatically +sub-auto=fuzzy +sub-file-paths=Sub;Subs;Subtitles + +# Subtitles encoding +# sub-codepage=cp1251 +# Forces showing subtitles while seeking through the video +demuxer-mkv-subtitle-preroll=yes +# Backward compatibility for vsfilter fansubs +sub-ass-vsfilter-blur-compat=yes +# Fixes subtitle timing for gaps smaller than 210ms (works with PGS subtitles) +sub-fix-timing=yes +# ASS subtitles override +sub-ass-force-margins=yes +sub-ass-force-style=kerning=yes +sub-ass-override=force +# Disable ligatures +sub-ass-shaper=simple + +# Subtitles style +sub-font="Verdana" +sub-font-size=36 +sub-color="#E6FFFFFF" +sub-border-size = 2.5 +sub-border-color="#D21C1C1C" +sub-margin-x=100 +sub-margin-y=50 +sub-shadow-color=0.0/0.0/0.0/0.25 +sub-shadow-offset=0 + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Screenshots +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Output format +screenshot-format=png +# Better quality +screenshot-high-bit-depth=yes +screenshot-tag-colorspace=yes +# Compression of PNG pictures (1-9) +screenshot-png-compression=5 + +# Output directory +screenshot-directory="~/Pictures/Screenshots" +# Name format to save the screenshots +screenshot-template="%f-%wH.%wM.%wS.%wT-#%#00n" + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Streaming +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +[protocol.http] +# Display media title instead of the URL +title='${media-title}' +osd-playing-msg='${media-title}' +# Cache +demuxer-max-bytes=150000000 # 150 MB +demuxer-max-back-bytes=75000000 # 75 MB +demuxer-seekable-cache=yes +force-seekable=yes +# youtube-dl default format +ytdl-format=((bestvideo[vcodec=vp9][height<=?1080]/bestvideo)+(bestaudio[acodec=opus]/bestaudio))/best +# UA (the most common chrome) +user-agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36' +# Automatically advance in the playlist +keep-open=yes +# Turn off dither and deband +dither=no +deband=no + +[protocol.https] +profile=protocol.http + +[protocol.ytdl] +profile=protocol.http + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# File-specific +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# WebMs +[extension.webm] +loop-file=yes + +# Animated gif +[extension.gif] +loop-file=yes + +# Audio files +[extension.mp3] +autofit-larger=30% +script-opts=osc-layout=box,osc-visibility=always,osc-scalewindowed=2 +keep-open=yes + +[extension.flac] +profile=extension.mp3 + +[extension.opus] +profile=extension.mp3 + +[extension.m4a] +profile=extension.mp3 diff --git a/config/mpv/script-opts/autoload.conf b/config/mpv/script-opts/autoload.conf new file mode 100644 index 0000000..9e4505b --- /dev/null +++ b/config/mpv/script-opts/autoload.conf @@ -0,0 +1,4 @@ +disabled=no +images=no +videos=yes +audio=yes diff --git a/config/mpv/script-opts/osc.conf b/config/mpv/script-opts/osc.conf new file mode 100644 index 0000000..7947f34 --- /dev/null +++ b/config/mpv/script-opts/osc.conf @@ -0,0 +1,9 @@ +layout=bottombar +title=${media-title} +hidetimeout=500 +fadeduration=0 +vidscale=no + +# Show OSC only when hovered directly +deadzonesize=1 +minmousemove=1 diff --git a/config/mpv/script-opts/stats.conf b/config/mpv/script-opts/stats.conf new file mode 100644 index 0000000..7a8df63 --- /dev/null +++ b/config/mpv/script-opts/stats.conf @@ -0,0 +1,2 @@ +duration=2 +font_size=7 diff --git a/config/mpv/scripts/acompressor.lua b/config/mpv/scripts/acompressor.lua new file mode 100644 index 0000000..5fc5063 --- /dev/null +++ b/config/mpv/scripts/acompressor.lua @@ -0,0 +1,155 @@ +-- This script adds control to the dynamic range compression ffmpeg +-- filter including key bindings for adjusting parameters. +-- +-- See https://ffmpeg.org/ffmpeg-filters.html#acompressor for explanation +-- of the parameteres. + +local mp = require 'mp' +local options = require 'mp.options' + +local o = { + default_enable = false, + show_osd = true, + osd_timeout = 4000, + filter_label = mp.get_script_name(), + + key_toggle = 'n', + key_increase_threshold = 'F1', + key_decrease_threshold = 'Shift+F1', + key_increase_ratio = 'F2', + key_decrease_ratio = 'Shift+F2', + key_increase_knee = 'F3', + key_decrease_knee = 'Shift+F3', + key_increase_makeup = 'F4', + key_decrease_makeup = 'Shift+F4', + key_increase_attack = 'F5', + key_decrease_attack = 'Shift+F5', + key_increase_release = 'F6', + key_decrease_release = 'Shift+F6', + + default_threshold = -25.0, + default_ratio = 3.0, + default_knee = 2.0, + default_makeup = 8.0, + default_attack = 20.0, + default_release = 250.0, + + step_threshold = -2.5, + step_ratio = 1.0, + step_knee = 1.0, + step_makeup = 1.0, + step_attack = 10.0, + step_release = 10.0, +} +options.read_options(o) + +local params = { + { name = 'attack', min=0.01, max=2000, hide_default=true, dB='' }, + { name = 'release', min=0.01, max=9000, hide_default=true, dB='' }, + { name = 'threshold', min= -30, max= 0, hide_default=false, dB='dB' }, + { name = 'ratio', min= 1, max= 20, hide_default=false, dB='' }, + { name = 'knee', min= 1, max= 10, hide_default=true, dB='dB' }, + { name = 'makeup', min= 0, max= 24, hide_default=false, dB='dB' }, +} + +local function parse_value(value) + -- Using nil here because tonumber differs between lua 5.1 and 5.2 when parsing fractions in combination with explicit base argument set to 10. + -- And we can't omit it because gsub returns 2 values which would get unpacked and cause more problems. Gotta love scripting languages. + return tonumber(value:gsub('dB$', ''), nil) +end + +local function format_value(value, dB) + return string.format('%g%s', value, dB) +end + +local function show_osd(filter) + if not o.show_osd then + return + end + + if not filter.enabled then + mp.commandv('show-text', 'Dynamic range compressor: disabled', o.osd_timeout) + return + end + + local pretty = {} + for _,param in ipairs(params) do + local value = parse_value(filter.params[param.name]) + if not (param.hide_default and value == o['default_' .. param.name]) then + pretty[#pretty+1] = string.format('%s: %g%s', param.name:gsub("^%l", string.upper), value, param.dB) + end + end + + if #pretty == 0 then + pretty = '' + else + pretty = '\n(' .. table.concat(pretty, ', ') .. ')' + end + + mp.commandv('show-text', 'Dynamic range compressor: enabled' .. pretty, o.osd_timeout) +end + +local function get_filter() + local af = mp.get_property_native('af', {}) + + for i = 1, #af do + if af[i].label == o.filter_label then + return af, i + end + end + + af[#af+1] = { + name = 'acompressor', + label = o.filter_label, + enabled = false, + params = {}, + } + + for _,param in pairs(params) do + af[#af].params[param.name] = format_value(o['default_' .. param.name], param.dB) + end + + return af, #af +end + +local function toggle_acompressor() + local af, i = get_filter() + af[i].enabled = not af[i].enabled + mp.set_property_native('af', af) + show_osd(af[i]) +end + +local function update_param(name, increment) + for _,param in pairs(params) do + if param.name == string.lower(name) then + local af, i = get_filter() + local value = parse_value(af[i].params[param.name]) + value = math.max(param.min, math.min(value + increment, param.max)) + af[i].params[param.name] = format_value(value, param.dB) + af[i].enabled = true + mp.set_property_native('af', af) + show_osd(af[i]) + return + end + end + + mp.msg.error('Unknown parameter "' .. name .. '"') +end + +mp.add_key_binding(o.key_toggle, "toggle-acompressor", toggle_acompressor) +mp.register_script_message('update-param', update_param) + +for _,param in pairs(params) do + for direction,step in pairs({increase=1, decrease=-1}) do + mp.add_key_binding(o['key_' .. direction .. '_' .. param.name], + 'acompressor-' .. direction .. '-' .. param.name, + function() update_param(param.name, step*o['step_' .. param.name]); end, + { repeatable = true }) + end +end + +if o.default_enable then + local af, i = get_filter() + af[i].enabled = true + mp.set_property_native('af', af) +end diff --git a/config/mpv/scripts/autoload.lua b/config/mpv/scripts/autoload.lua new file mode 100644 index 0000000..7150abb --- /dev/null +++ b/config/mpv/scripts/autoload.lua @@ -0,0 +1,220 @@ +-- This script automatically loads playlist entries before and after the +-- the currently played file. It does so by scanning the directory a file is +-- located in when starting playback. It sorts the directory entries +-- alphabetically, and adds entries before and after the current file to +-- the internal playlist. (It stops if it would add an already existing +-- playlist entry at the same position - this makes it "stable".) +-- Add at most 5000 * 2 files when starting a file (before + after). + +--[[ +To configure this script use file autoload.conf in directory script-opts (the "script-opts" +directory must be in the mpv configuration directory, typically ~/.config/mpv/). + +Example configuration would be: + +disabled=no +images=no +videos=yes +audio=yes + +--]] + +MAXENTRIES = 5000 + +local msg = require 'mp.msg' +local options = require 'mp.options' +local utils = require 'mp.utils' + +o = { + disabled = false, + images = true, + videos = true, + audio = true +} +options.read_options(o) + +function Set (t) + local set = {} + for _, v in pairs(t) do set[v] = true end + return set +end + +function SetUnion (a,b) + local res = {} + for k in pairs(a) do res[k] = true end + for k in pairs(b) do res[k] = true end + return res +end + +EXTENSIONS_VIDEO = Set { + 'mkv', 'avi', 'mp4', 'ogv', 'webm', 'rmvb', 'flv', 'wmv', 'mpeg', 'mpg', 'm4v', '3gp' +} + +EXTENSIONS_AUDIO = Set { + 'mp3', 'wav', 'ogm', 'flac', 'm4a', 'wma', 'ogg', 'opus' +} + +EXTENSIONS_IMAGES = Set { + 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'gif', 'webp', 'svg', 'bmp' +} + +EXTENSIONS = Set {} +if o.videos then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_VIDEO) end +if o.audio then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_AUDIO) end +if o.images then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_IMAGES) end + +function add_files_at(index, files) + index = index - 1 + local oldcount = mp.get_property_number("playlist-count", 1) + for i = 1, #files do + mp.commandv("loadfile", files[i], "append") + mp.commandv("playlist-move", oldcount + i - 1, index + i - 1) + end +end + +function get_extension(path) + match = string.match(path, "%.([^%.]+)$" ) + if match == nil then + return "nomatch" + else + return match + end +end + +table.filter = function(t, iter) + for i = #t, 1, -1 do + if not iter(t[i]) then + table.remove(t, i) + end + end +end + +-- splitbynum and alnumcomp from alphanum.lua (C) Andre Bogus +-- Released under the MIT License +-- http://www.davekoelle.com/files/alphanum.lua + +-- split a string into a table of number and string values +function splitbynum(s) + local result = {} + for x, y in (s or ""):gmatch("(%d*)(%D*)") do + if x ~= "" then table.insert(result, tonumber(x)) end + if y ~= "" then table.insert(result, y) end + end + return result +end + +function clean_key(k) + k = (' '..k..' '):gsub("%s+", " "):sub(2, -2):lower() + return splitbynum(k) +end + +-- compare two strings +function alnumcomp(x, y) + local xt, yt = clean_key(x), clean_key(y) + for i = 1, math.min(#xt, #yt) do + local xe, ye = xt[i], yt[i] + if type(xe) == "string" then ye = tostring(ye) + elseif type(ye) == "string" then xe = tostring(xe) end + if xe ~= ye then return xe < ye end + end + return #xt < #yt +end + +local autoloaded = nil + +function find_and_add_entries() + local path = mp.get_property("path", "") + local dir, filename = utils.split_path(path) + msg.trace(("dir: %s, filename: %s"):format(dir, filename)) + if o.disabled then + msg.verbose("stopping: autoload disabled") + return + elseif #dir == 0 then + msg.verbose("stopping: not a local path") + return + end + + local pl_count = mp.get_property_number("playlist-count", 1) + -- check if this is a manually made playlist + if (pl_count > 1 and autoloaded == nil) or + (pl_count == 1 and EXTENSIONS[string.lower(get_extension(filename))] == nil) then + msg.verbose("stopping: manually made playlist") + return + else + autoloaded = true + end + + local pl = mp.get_property_native("playlist", {}) + local pl_current = mp.get_property_number("playlist-pos-1", 1) + msg.trace(("playlist-pos-1: %s, playlist: %s"):format(pl_current, + utils.to_string(pl))) + + local files = utils.readdir(dir, "files") + if files == nil then + msg.verbose("no other files in directory") + return + end + table.filter(files, function (v, k) + if string.match(v, "^%.") then + return false + end + local ext = get_extension(v) + if ext == nil then + return false + end + return EXTENSIONS[string.lower(ext)] + end) + table.sort(files, alnumcomp) + + if dir == "." then + dir = "" + end + + -- Find the current pl entry (dir+"/"+filename) in the sorted dir list + local current + for i = 1, #files do + if files[i] == filename then + current = i + break + end + end + if current == nil then + return + end + msg.trace("current file position in files: "..current) + + local append = {[-1] = {}, [1] = {}} + for direction = -1, 1, 2 do -- 2 iterations, with direction = -1 and +1 + for i = 1, MAXENTRIES do + local file = files[current + i * direction] + local pl_e = pl[pl_current + i * direction] + if file == nil or file[1] == "." then + break + end + + local filepath = dir .. file + if pl_e then + -- If there's a playlist entry, and it's the same file, stop. + msg.trace(pl_e.filename.." == "..filepath.." ?") + if pl_e.filename == filepath then + break + end + end + + if direction == -1 then + if pl_current == 1 then -- never add additional entries in the middle + msg.info("Prepending " .. file) + table.insert(append[-1], 1, filepath) + end + else + msg.info("Adding " .. file) + table.insert(append[1], filepath) + end + end + end + + add_files_at(pl_current + 1, append[1]) + add_files_at(pl_current, append[-1]) +end + +mp.register_event("start-file", find_and_add_entries) diff --git a/config/mpv/scripts/subtitles-subfolders.lua b/config/mpv/scripts/subtitles-subfolders.lua new file mode 100644 index 0000000..3a50d9f --- /dev/null +++ b/config/mpv/scripts/subtitles-subfolders.lua @@ -0,0 +1,3 @@ +mp.add_hook('on_load', 10, function () + mp.set_property('sub-file-paths', 'Subs/' .. mp.get_property('filename/no-ext')) +end) diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore new file mode 100644 index 0000000..6d635cb --- /dev/null +++ b/config/nvim/.gitignore @@ -0,0 +1 @@ +/plugin diff --git a/config/nvim/after/ftplugin/go.lua b/config/nvim/after/ftplugin/go.lua new file mode 100644 index 0000000..8b79372 --- /dev/null +++ b/config/nvim/after/ftplugin/go.lua @@ -0,0 +1,4 @@ +vim.opt_local.expandtab = false +vim.opt_local.shiftwidth = 4 +vim.opt_local.tabstop = 4 +vim.opt_local.softtabstop = 4 diff --git a/config/nvim/after/ftplugin/python.lua b/config/nvim/after/ftplugin/python.lua new file mode 100644 index 0000000..a2fbb89 --- /dev/null +++ b/config/nvim/after/ftplugin/python.lua @@ -0,0 +1,4 @@ +vim.opt_local.shiftwidth = 4 +vim.opt_local.tabstop = 4 +vim.opt_local.softtabstop = 4 +vim.opt_local.colorcolumn = '80' diff --git a/config/nvim/after/plugin/statusline.lua b/config/nvim/after/plugin/statusline.lua new file mode 100644 index 0000000..9d4e09f --- /dev/null +++ b/config/nvim/after/plugin/statusline.lua @@ -0,0 +1,30 @@ +local function keymap() + if vim.o.iminsert == 1 then + return 'RU' + else + return '' + end +end + +local function fileinfo() + return string.format('%s[%s]', vim.bo.fileencoding, vim.bo.fileformat) +end + +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'edge', + component_separators = { left = '|', right = '|' }, + section_separators = {}, + globalstatus = true, + }, + sections = { + lualine_a = { 'mode', keymap }, + lualine_b = { 'FugitiveHead' }, + lualine_c = { 'filename' }, + lualine_x = { 'filetype', fileinfo }, + lualine_y = { 'progress' }, + lualine_z = { 'location' }, + }, + extensions = { 'quickfix', 'fugitive' }, +} diff --git a/config/nvim/after/plugin/telescope.lua b/config/nvim/after/plugin/telescope.lua new file mode 100644 index 0000000..0c2a396 --- /dev/null +++ b/config/nvim/after/plugin/telescope.lua @@ -0,0 +1,34 @@ +local telescope = require('telescope') +local actions = require('telescope.actions') + +telescope.setup({ + defaults = { + layout_config = { + prompt_position = 'bottom', + horizontal = { + width_padding = 0.04, + height_padding = 0.1, + preview_width = 0.6, + }, + vertical = { + width_padding = 0.05, + height_padding = 1, + preview_height = 0.5, + }, + }, + + mappings = { + i = { + [''] = false, + [''] = actions.select_horizontal, + }, + }, + }, +}) + +local builtin = require('telescope.builtin') + +vim.keymap.set('n', '', builtin.git_files) +vim.keymap.set('n', 'ff', builtin.find_files) +vim.keymap.set('n', 'fg', builtin.live_grep) +vim.keymap.set('n', 'fh', builtin.help_tags) diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..d4962d0 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,3 @@ +require('config.plugins') +require('config.set') +require('config.remap') diff --git a/config/nvim/lua/config/plugins.lua b/config/nvim/lua/config/plugins.lua new file mode 100644 index 0000000..4efa785 --- /dev/null +++ b/config/nvim/lua/config/plugins.lua @@ -0,0 +1,73 @@ +local fn = vim.fn +local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim' +if fn.empty(fn.glob(install_path)) > 0 then + packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd.packadd 'packer.nvim' +end + +require('packer').startup(function(use) + use('wbthomason/packer.nvim') + + -- Appearance + use { + 'sainnhe/edge', + config = function() + vim.g.edge_transparent_background = 2 + vim.g.edge_better_performance = 1 + vim.g.edge_enable_italic = false + vim.cmd.colorscheme 'edge' + end, + } + use('nvim-tree/nvim-web-devicons') + use('hoob3rt/lualine.nvim') + + -- File navigation + use { + 'nvim-telescope/telescope.nvim', + requires = { + 'nvim-lua/plenary.nvim', + 'nvim-lua/popup.nvim', + }, + } + use { + 'stevearc/oil.nvim', + config = function() + require('oil').setup({ view_options = { show_hidden = true } }) + vim.keymap.set('n', '-', ':Oil') + end + } + + -- Editing + use { + 'numToStr/Comment.nvim', + config = function() + require('Comment').setup({ ignore = '^$' }) + end, + } + use('tpope/vim-surround') + use('tpope/vim-repeat') + use { + 'windwp/nvim-autopairs', + event = 'InsertEnter', + config = function() + require('nvim-autopairs').setup() + end, + } + + -- Miscellaneous + use('tpope/vim-fugitive') + use { + 'nathom/filetype.nvim', + setup = function() + vim.g.did_load_filetypes = 1 + end, + } + + if packer_bootstrap then + require('packer').sync() + end +end) + +if vim.fn.exists('g:loaded_matchit') == 0 then + vim.cmd('runtime! macros/matchit.vim') +end diff --git a/config/nvim/lua/config/remap.lua b/config/nvim/lua/config/remap.lua new file mode 100644 index 0000000..54cf83e --- /dev/null +++ b/config/nvim/lua/config/remap.lua @@ -0,0 +1,31 @@ +vim.g.mapleader = ' ' + +vim.keymap.set('n', 'Q', '') + +vim.keymap.set('n', '', 'h') +vim.keymap.set('n', '', 'j') +vim.keymap.set('n', '', 'k') +vim.keymap.set('n', '', 'l') + +vim.keymap.set('n', '', ':vertical resize +2', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':vertical resize -2', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':resize +2', { noremap = true, silent = true }) +vim.keymap.set('n', '', ':resize -2', { noremap = true, silent = true }) + +vim.keymap.set('n', 'n', 'nzzzv') +vim.keymap.set('n', 'N', 'Nzzzv') +vim.keymap.set('n', '', 'zz') +vim.keymap.set('n', '', 'zz') +vim.keymap.set('n', 'J', 'v:count ? \'J\' : \'mzJ`z\'', { expr = true }) + +vim.keymap.set('n', 'y', '\"+y') +vim.keymap.set('v', 'y', '\"+y') + +vim.cmd [[ +function! Sort(type, ...) + '[,']sort +endfunction +nnoremap gs :set opfunc=Sortg@ +]] + +vim.keymap.set('i', '', '') diff --git a/config/nvim/lua/config/set.lua b/config/nvim/lua/config/set.lua new file mode 100644 index 0000000..dd06dca --- /dev/null +++ b/config/nvim/lua/config/set.lua @@ -0,0 +1,44 @@ +vim.opt.updatetime = 50 +vim.opt.lazyredraw = true +vim.opt.swapfile = false + +vim.opt.splitbelow = true +vim.opt.splitright = true + +vim.opt.background = 'dark' +vim.opt.termguicolors = true +vim.opt.number = true +vim.opt.relativenumber = true +vim.opt.cursorline = true +vim.opt.winborder = 'rounded' + +vim.opt.smartindent = true +vim.opt.copyindent = true +vim.opt.expandtab = true +vim.opt.tabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.softtabstop = -1 +vim.opt.shiftround = true + +vim.opt.wrap = false +vim.opt.scrolloff = 5 + +vim.opt.hlsearch = false +vim.opt.incsearch = true +vim.opt.ignorecase = true +vim.opt.smartcase = true + +vim.opt.cmdheight = 2 +vim.opt.showmode = false +vim.opt.confirm = true + +vim.opt.wildmode = 'longest,list,full' +vim.opt.wildignorecase = true +vim.opt.completeopt = 'menuone,noselect' +vim.opt.shortmess:append('c') + +vim.opt.diffopt:append('internal,algorithm:patience') + +vim.opt.keymap = 'russian-jcukenwin' +vim.opt.spelllang = 'en_us,ru_yo' +vim.opt.iminsert = 0 diff --git a/config/ranger/rc.conf b/config/ranger/rc.conf new file mode 100644 index 0000000..ceda364 --- /dev/null +++ b/config/ranger/rc.conf @@ -0,0 +1 @@ +set show_hidden true diff --git a/config/scripts/system-maintenance b/config/scripts/system-maintenance new file mode 100755 index 0000000..36fe330 --- /dev/null +++ b/config/scripts/system-maintenance @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +set -o errexit + +update_system() { + print_header "updating system..." + sudo pacman -Syu + echo +} + +clear_pacman_cache() { + print_header "clearing pacman cache..." + PACMAN_CACHE_SPACE="$(du -sh /var/cache/pacman/pkg/)" + paccache -vrk2 + paccache -ruk0 + echo "pacman cache cleared, reclaimed $PACMAN_CACHE_SPACE" + echo +} + +remove_orphaned_packages() { + print_header "removing orphaned packages..." + ORPHANED=$(pacman -Qdtq) + if [ -n "$ORPHANED" ]; then + echo "$ORPHANED" | sudo pacman -Rns - + ORPHANED_COUNT=$(echo "$ORPHANED" | wc -l) + echo "removed $ORPHANED_COUNT orphaned packages" + else + echo "no orphaned packages found" + fi + echo +} + +clear_local_cache() { + print_header "clearing local cache..." + LOCAL_CACHE_SPACE="$(du -sh ~/.cache)" + rm -rf ~/.cache/ + echo "local cache cleard, reclaimed $LOCAL_CACHE_SPACE" + echo +} + +clear_system_logs() { + print_header "clearing system logs..." + sudo journalctl --vacuum-time=7d + echo +} + +print_header() { + GREEN='\033[0;32m' + NC='\033[0m' + echo -e "${GREEN}${1}${NC}" +} + +update_system +clear_pacman_cache +remove_orphaned_packages +clear_local_cache +clear_system_logs diff --git a/config/wofi/config b/config/wofi/config new file mode 100644 index 0000000..7312e45 --- /dev/null +++ b/config/wofi/config @@ -0,0 +1,12 @@ +show=drun +show_all=true +location=center +insensitive=false +allow_markup=true +allow_images=true +line_wrap=word +lines=8 +width=500 +no_actions=true +prompt= Search +hide_scroll=true diff --git a/config/wofi/style.css b/config/wofi/style.css new file mode 100644 index 0000000..7cef1c0 --- /dev/null +++ b/config/wofi/style.css @@ -0,0 +1,84 @@ +* +{ + font-family: Maple Mono; + background: transparent; + color: #d8cab8; +} + +#window +{ + color: #d8cab8; + border-color: #d8cab8; + border-style: solid; + border-width: 1px; + + background-image: linear-gradient(to bottom, #141216 100%); + border-radius: 14px; +} + +#scroll +{ + border-top-style: solid; + border-width: 1px; + border-color: #d8cab8; +} + +#inner-box +{ + padding-top: 12px; +} + +#entry +{ + border-style: none; + border-color: #d8cab8; + color: #d8cab8; + padding: 6px; + margin-bottom: 8px; + margin-left: 12px; + margin-right: 12; + + border-radius: 12px; +} + +#entry:selected +{ + background: #27232b; + color: #d8cab8; + font-weight: bold; + outline: none; +} + +#input +{ + background-color: #141216; + color: #d8cab8; + border-color: #d8cab8; + + border-style: none; + border-bottom-style: solid; + border-width: 1px; + + font-style: normal; + + border-radius: 8; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + + padding: 12px; + margin: 8px; +} + +#input:focus +{ + background: #27232b; + background-color: #27232b; + border-color: #ac82e9; + font-style: italic; +} + +#img +{ + padding: 4px; + margin-right: 6px; +}