From faeac6c96fd6b91bede51ef2aae5e3f61c4473a8 Mon Sep 17 00:00:00 2001 From: rattatwinko Date: Fri, 12 Dec 2025 21:15:07 +0100 Subject: [PATCH] some sound additions --- build.ps1 | 1 + src/Win32API.py | 99 +++++++++++++++++++++++++++++++++++++++ src/Win32SoundHandler.py | 97 ++++++++++++++++++++++++++++++++++++++ src/main.py | 99 ++++++++++++++++++++++++++++++++++++--- src/sounds/balloon.wav | Bin 0 -> 9556 bytes src/sounds/space-pdj.wav | Bin 0 -> 15298 bytes src/sounds/startup.wav | Bin 0 -> 34994 bytes 7 files changed, 290 insertions(+), 6 deletions(-) create mode 100644 src/Win32API.py create mode 100644 src/Win32SoundHandler.py create mode 100644 src/sounds/balloon.wav create mode 100644 src/sounds/space-pdj.wav create mode 100644 src/sounds/startup.wav diff --git a/build.ps1 b/build.ps1 index 9980fea..1d334dd 100644 --- a/build.ps1 +++ b/build.ps1 @@ -10,6 +10,7 @@ pyinstaller ` --hidden-import wx._xml ` --add-data "FiraCode-Regular.ttf;." ` --add-data "FiraCode-SemiBold.ttf;." ` + --add-data "src\sounds\*;sounds" ` --add-data "venv\Lib\site-packages\irc\codes.txt;irc" ` --add-data "icon.ico;." ` --icon "icon.ico" ` diff --git a/src/Win32API.py b/src/Win32API.py new file mode 100644 index 0000000..2c31d33 --- /dev/null +++ b/src/Win32API.py @@ -0,0 +1,99 @@ +import ctypes +from ctypes import wintypes +import time + +SW_HIDE = 0 +SW_SHOW = 5 + +GWL_EXSTYLE = -20 +WS_EX_TOOLWINDOW = 0x00000080 +WS_EX_APPWINDOW = 0x00040000 +WS_EX_LAYERED = 0x80000 +LWA_ALPHA = 0x2 + + +class Win32API: + def __init__(self, hwnd): + self.hwnd = hwnd + self.hidden = False + self._load_api() + + def _load_api(self): + user32 = ctypes.windll.user32 + + self.ShowWindow = user32.ShowWindow + self.GetWindowLong = user32.GetWindowLongW + self.SetWindowLong = user32.SetWindowLongW + self._RegisterHotKey = user32.RegisterHotKey + self._SetLayeredWindowAttributes = user32.SetLayeredWindowAttributes + + self.ShowWindow.argtypes = [wintypes.HWND, ctypes.c_int] + self.GetWindowLong.argtypes = [wintypes.HWND, ctypes.c_int] + self.SetWindowLong.argtypes = [wintypes.HWND, ctypes.c_int, ctypes.c_long] + self._RegisterHotKey.argtypes = [ + wintypes.HWND, + wintypes.INT, + wintypes.UINT, + wintypes.UINT, + ] + self._SetLayeredWindowAttributes.argtypes = [ + wintypes.HWND, + wintypes.COLORREF, + wintypes.BYTE, + wintypes.DWORD, + ] + + def remove_from_taskbar(self): + style = self.GetWindowLong(self.hwnd, GWL_EXSTYLE) + new_style = (style & ~WS_EX_APPWINDOW) | WS_EX_TOOLWINDOW + self.SetWindowLong(self.hwnd, GWL_EXSTYLE, new_style) + + def hide(self): + self.ShowWindow(self.hwnd, SW_HIDE) + self.hidden = True + + def show(self): + self.ShowWindow(self.hwnd, SW_SHOW) + self.hidden = False + + def toggle(self, fade=True, duration=500, steps=20): + """Toggle window visibility with optional fade effect""" + if self.hidden: + if fade: + self.fade_in(duration, steps) + else: + self.show() + else: + if fade: + self.fade_out(duration, steps) + else: + self.hide() + + + def register_hotkey(self, hotkey_id, key, modifiers): + vk = ord(key.upper()) + return self._RegisterHotKey(None, hotkey_id, modifiers, vk) + + def _set_layered(self): + style = self.GetWindowLong(self.hwnd, GWL_EXSTYLE) + self.SetWindowLong(self.hwnd, GWL_EXSTYLE, style | WS_EX_LAYERED) + + def fade_in(self, duration=50, steps=50): + self.show() + self._set_layered() + for idx in range(steps + 1): + alpha = int(255 * (idx / steps)) + self._SetLayeredWindowAttributes(self.hwnd, 0, alpha, LWA_ALPHA) + ctypes.windll.kernel32.Sleep(int(duration / steps)) + self.hidden = False + + def fade_out(self, duration=50, steps=50): + self._set_layered() + for idx in range(steps + 1): + alpha = int(255 * (1 - idx /steps)) + self._SetLayeredWindowAttributes(self.hwnd, 0, alpha, LWA_ALPHA) + ctypes.windll.kernel32.Sleep(int(duration / steps)) + self.hidden = True + self.hide() + + diff --git a/src/Win32SoundHandler.py b/src/Win32SoundHandler.py new file mode 100644 index 0000000..0eab6f6 --- /dev/null +++ b/src/Win32SoundHandler.py @@ -0,0 +1,97 @@ +import ctypes +import logging +from ctypes import wintypes + +# Set up logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +def get_resource_path(relative_path): + import os + import sys + try: + base_path = sys._MEIPASS + except Exception: + project_root = os.path.abspath(os.path.join(os.path.dirname(__file__))) + base_path = project_root + full_path = os.path.normpath(os.path.join(base_path, relative_path)) + return full_path + +class Win32SoundHandler: + def __init__(self, hwnd): + self.hwnd = hwnd + self.SND_ALIAS = 0x00010000 + self.SND_FILENAME = 0x00020000 + self.SND_ASYNC = 0x00000001 + self._setup_playsoundapi() + + def _setup_playsoundapi(self): + winmm = ctypes.windll.winmm + self.PlaySoundW = winmm.PlaySoundW + self.PlaySoundW.argtypes = ( + wintypes.LPCWSTR, + wintypes.HMODULE, + wintypes.DWORD + ) + self.PlaySoundW.restype = wintypes.BOOL + + def play_info_sound(self): + self.PlaySoundW("SystemAsterisk", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_error_sound(self): + self.PlaySoundW("SystemHand", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_warn_sound(self): + self.PlaySoundW("SystemExclamation", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_question_sound(self): + self.PlaySoundW("SystemQuestion", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_default_sound(self): + self.PlaySoundW("SystemDefault", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_notification_sound(self): + self.PlaySoundW("SystemNotification", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_mail_sound(self): + self.PlaySoundW("MailBeep", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_exit_sound(self): + self.PlaySoundW("SystemExit", None, self.SND_ALIAS | self.SND_ASYNC) + + def play_connect_server_or_channel(self): + try: + sound_path = get_resource_path("sounds/space-pdj.wav") + import os + if os.path.exists(sound_path): + self.PlaySoundW(sound_path, None, self.SND_FILENAME | self.SND_ASYNC) + else: + logger.warning(f"Sound file not found: {sound_path}") + except Exception as e: + logger.error(f"Error playing popout click sound: {e}") + + + def play_popout_click(self): + try: + sound_path = get_resource_path("sounds/startup.wav") + import os + if os.path.exists(sound_path): + self.PlaySoundW(sound_path, None, self.SND_FILENAME | self.SND_ASYNC) + else: + logger.warning(f"Sound file not found: {sound_path}") + except Exception as e: + logger.error(f"Error playing popout click sound: {e}") + + def play_msg_recv(self): + try: + sound_path = get_resource_path("sounds/balloon.wav") + import os + if os.path.exists(sound_path): + self.PlaySoundW(sound_path, None, self.SND_FILENAME | self.SND_ASYNC) + else: + logger.warning(f"Sound file not found: {sound_path}") + except Exception as e: + logger.error(f"Error playing message received sound: {e}") + + + diff --git a/src/main.py b/src/main.py index b220612..e2ce71e 100644 --- a/src/main.py +++ b/src/main.py @@ -16,6 +16,7 @@ from PrivacyNoticeDialog import PrivacyNoticeDialog from IRCPanel import IRCPanel from AboutDialog import AboutDialog from NotesDialog import NotesDialog +if os.name == "nt": from Win32API import Win32API ; from Win32SoundHandler import Win32SoundHandler from ScanWizard import ScanWizardDialog from LocalServer import LocalServerManager @@ -251,7 +252,7 @@ class IRCFrame(wx.Frame): # Show privacy notice first self.show_privacy_notice() - + self.reactor = None self.connection = None self.reactor_thread = None @@ -271,7 +272,7 @@ class IRCFrame(wx.Frame): self.auto_join_channels = [] self.away = False self.timestamps = True - + self.notes_data = defaultdict(dict) self.server_menu_items = {} self.local_bind_host = "127.0.0.1" @@ -300,6 +301,18 @@ class IRCFrame(wx.Frame): self.motd_lines = [] self.collecting_motd = False + self.hwnd = self.GetHandle() + self.ctrl = Win32API(self.hwnd) + + # Initialize sound handler for Windows + if os.name == "nt": + self.sound_handler = Win32SoundHandler(self.hwnd) + else: + self.sound_handler = None + + # Sound toggle state (enabled by default) + self.sounds_enabled = True + self.setup_irc_handlers() self.create_menubar() self.setup_ui() @@ -329,6 +342,17 @@ class IRCFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.on_find_next, id=1001) self.Bind(wx.EVT_MENU, self.on_find_previous, id=1002) self.Bind(wx.EVT_MENU, self.on_quick_escape, id=1003) + + HOTKEY_ID = 1 + MOD_CONTROL = 0x0002 + MOD_ALT = 0x0001 + + # Register directly on the wx.Frame + self.RegisterHotKey(HOTKEY_ID, MOD_CONTROL | MOD_ALT, ord('H')) + self.Bind(wx.EVT_HOTKEY, self.on_hotkey, id=HOTKEY_ID) + + def on_hotkey(self, event): + self.ctrl.toggle() def build_theme(self): """Build a small theme descriptor that respects the host platform.""" @@ -397,7 +421,6 @@ class IRCFrame(wx.Frame): def show_privacy_notice(self): """Show privacy notice dialog at startup""" dlg = PrivacyNoticeDialog(self) - dlg.ShowModal() dlg.Destroy() def get_user_color(self, username): @@ -595,8 +618,12 @@ class IRCFrame(wx.Frame): file_menu = wx.Menu() file_menu.Append(300, "&About", "About wxIRC Client") file_menu.AppendSeparator() + self.sound_toggle_item = file_menu.AppendCheckItem(301, "Toggle &Sounds") + self.sound_toggle_item.Check(True) # Sounds enabled by default + file_menu.AppendSeparator() file_menu.Append(wx.ID_EXIT, "E&xit\tCtrl+Q") self.Bind(wx.EVT_MENU, self.on_about, id=300) + self.Bind(wx.EVT_MENU, self.on_toggle_sounds, id=301) self.Bind(wx.EVT_MENU, self.on_close, id=wx.ID_EXIT) # Edit menu with search @@ -669,6 +696,11 @@ class IRCFrame(wx.Frame): except Exception as e: logger.error(f"Error creating menu: {e}") + def on_toggle_sounds(self, event): + """Toggle sound effects on/off""" + self.sounds_enabled = self.sound_toggle_item.IsChecked() + logger.info(f"Sounds {'enabled' if self.sounds_enabled else 'disabled'}") + def on_about(self, event): """Show About dialog""" try: @@ -677,6 +709,11 @@ class IRCFrame(wx.Frame): dlg.Destroy() except Exception as e: logger.error(f"Error showing about dialog: {e}") + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_error_sound() + except: + pass def on_notes(self, event): """Open notes editor dialog""" @@ -697,6 +734,11 @@ class IRCFrame(wx.Frame): except Exception as e: logger.error(f"Error opening notes dialog: {e}") self.log_server(f"Error opening notes: {e}", wx.Colour(255, 0, 0)) + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_error_sound() + except: + pass def on_notes_closed(self, event=None): """Handle notes frame closing""" @@ -862,6 +904,13 @@ class IRCFrame(wx.Frame): self.connect_btn.Enable(True) self.SetStatusText("Connection failed") logger.error(f"Connection failed: {error_msg}") + + # Play error sound + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_error_sound() + except Exception as e: + logger.error(f"Error playing connection failure sound: {e}") def disconnect(self): """Safely disconnect from IRC server""" @@ -892,6 +941,13 @@ class IRCFrame(wx.Frame): def on_disconnect_cleanup(self): """Clean up after disconnect""" + # Play disconnect notification sound + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_warn_sound() + except Exception as e: + logger.error(f"Error playing disconnect sound: {e}") + with self.connection_lock: self.connection = None self.is_connecting = False @@ -1226,6 +1282,11 @@ Available commands: except Exception as e: logger.error(f"Error opening scan wizard: {e}") self.log_server(f"Scan wizard failed to open: {e}", wx.Colour(255, 0, 0)) + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_error_sound() + except: + pass def quick_connect(self, server, port): """Populate connection fields and initiate a connection if idle.""" @@ -1434,6 +1495,13 @@ COMMANDS (type /help in chat for full list): self.log_server("Connected to server!", wx.Colour(0, 128, 0), bold=True) # Dark green self.log_server(f"Welcome message: {' '.join(event.arguments)}", wx.Colour(0, 100, 0)) + # Play welcome/connection sound + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_connect_server_or_channel() + except Exception as e: + logger.error(f"Error playing welcome sound: {e}") + # Auto-join channels for channel in self.auto_join_channels: if not channel.startswith('#'): @@ -1452,6 +1520,13 @@ COMMANDS (type /help in chat for full list): if nick == self.nick: self.safe_ui_update(self.add_channel, channel) self.log_server(f"Joined channel {channel}", wx.Colour(0, 128, 0)) # Dark green + + # Play sound when we join a channel + if self.sound_handler and self.sounds_enabled: + try: + self.sound_handler.play_connect_server_or_channel() + except Exception as e: + logger.error(f"Error playing channel join sound: {e}") self.log_channel_message(channel, nick, f"→ {nick} joined", is_system=True) @@ -1509,6 +1584,13 @@ COMMANDS (type /help in chat for full list): self.log_channel_message(channel, nick, message, is_action=True) else: self.log_channel_message(channel, nick, message) + + # Play sound notification only for real user messages (not from self) + if self.sound_handler and self.sounds_enabled and nick.lower() != self.nick.lower(): + try: + self.sound_handler.play_msg_recv() + except Exception as e: + logger.error(f"Error playing message sound: {e}") # Highlight own nick in messages if self.nick.lower() in message.lower(): @@ -1527,6 +1609,13 @@ COMMANDS (type /help in chat for full list): self.log_channel_message(nick, nick, message, is_action=True) else: self.log_channel_message(nick, nick, message) + + # Play mail sound for private messages + if self.sound_handler and self.sounds_enabled and nick.lower() != self.nick.lower(): + try: + self.sound_handler.play_mail_sound() + except Exception as e: + logger.error(f"Error playing private message sound: {e}") except Exception as e: logger.error(f"Error in privmsg handler: {e}") @@ -1728,14 +1817,12 @@ if os.name == 'nt': ctypes.windll.user32.SetProcessDPIAware() except: pass -else: - pass - if __name__ == "__main__": try: if os.name == 'nt': enable_high_dpi() + app = wx.App() frame = IRCFrame() frame.SetIcon(wx.Icon(get_resource_path("icon.ico"), wx.BITMAP_TYPE_ICO)) diff --git a/src/sounds/balloon.wav b/src/sounds/balloon.wav new file mode 100644 index 0000000000000000000000000000000000000000..315fa43ae9b542bb2481afbc50cc9cb644509e3c GIT binary patch literal 9556 zcmeHMcYKsZ^Phd5yUV3r8W3rL(1Zv=LV!?14ZVi|L4-g+q(dS~1Qay_(z_s4K#|@w z0wM$qNC{Os2!v1)TKe5ncIP)w&J*Re{oeOq@B7(j%goNq&hE3%?p%-dQBj?$0`zVX z(`M+X#EQNEzzCIM09tPWkiZu@weJ~ynA+QSiR#+EMUUtJDu>nyO&Igm==ecn;>O1( zygGQyD5AIO{1>#Y-Tt&++b%uaNM_HmLxv0Pf^=SPUv}luITkTM2-!m%O zM&(X%6Nc7{c(pI5|=@&j{t5GvF7`lx95^*_8uCkM2NHF*enJ&9r zQVm-S>CYuQH9L7-6qkL^Ei!?MZlI98MqlISv;}{$)mbYh5aqe0&XKt6ap`jMIc+q! zIr-qZO@__J&uBM%Wz-F-VYyD6PA@*USpL-;F8dAIZ)G}pouhJk{za`$>Bc-5x}8*` zt=N#_htcL7httbO<8%Kw$70NlbB3Rn41G>cgZ8{;v>HF>=$+&G{n%V{?9@b*XcIqk9=rn3av`|9SDH#&XWS8+a0#VIiF$Pd9ff2va!$^iaL$X?& zoD`=;?$qCq$5A7R#<&ez4eb`NlRRTIMwwGGewN}aAi?u?`QCT|iWCYRx72 z7Ah&l_PG%kKpt6cCJEMJy$X5JO0pf)M@I)~awjeuwJ{pMnc8(~^DC|u6!W+fO(w0z zDX<8=iDFnHFqgO$ED2epE1&cm`<>ybT$1KZW6HyPs(FDQ$+eRtZ;}D}{NWzu zfh6}1R)-2uf^0mGS?EJ;dAOGNE0VN|r0E9Mf{sv)_*1F>1-y^fF$lVmgxh!l&tX&O z2brXO2lbDqavB~XjsncUY|`6`>c>e_btn(v@Br(>2^<2AVLeucRI;-@TqNpJ8qZ^r z+=IAN$+HT6Og(o%DEvTPIfPxI4!jK6cnp)^GRBh6e!x|v;~{Rwkz`FT*pG$Sk~|d$ zgCGT0U*5~11xc_N z6_JB0UdB!H?aZSpqU*( zV+n_kp+8K+7NV6X#Mv~0G_YbTTnIbi7K~%rIG?y$K`xwyp70gU5xuY?NvcU}Whlhq z1Mvjg!bGxkAw;wK_*8_`%$T4R+lv9Xg~r?#mw_KE&DyhR;sj>FD42suB(o)rLcx5I zffvA?t;Lyq7}szw^Oq(=WxU2m!F`CvU2Gya*m7Jd28;DrhNZ$D_*y)`bz%)Pf_d;B z+z@`y3VSj)`4N9rTq50FSQB=PmTM;L#Yol=9*L){HJlR3xEvSaaMlzS^Nlo%lUXYJ z087!R+prk+p75mkwMuo_UEGCpc@Hra?vig)@J-kS)8PU1lLkR&{xQy>RkMM4;_DDf zI`Y^JwjSz1XWT@-F2hsAY-}g(VkJcbT)`I7ETd?|@}U!qV3%pVr1F}49e;=3l7-Uu z(lcH~l*cjBaMK=mAB%*qcAJf(6@Hily{S2nNByodl{Jx;(U>2xyYz-07i*y|&es+G z4IG6aHkiBd#wll}-l7BL_%A!#0XLs0VQkHlur?OUJxERe#^F-J!yPL1k`FRzu zL~W*7Kfz98PyRY@$ck75E5ka9XcmMiaDpe`VqrHekdyUzEs?c^wenu6NPoZ^&?;&s zS%nqq;ZE_s=*DD`rpJg%a0EYPD{+N52TNG0@L>lH zDMMUCU)X~E*i)V@jld(yI+)6W~CKfE>>Vjgo{9Y(u_8jg z2c38sJc>Uo?Kqr#%-2pSRl2-3ECT2QVKBnv2ofCWj=X3-sCPV5DKq? zt@K*@bkiwVYtBMVw}7n92Vof_#?X6EO*DqFxSO5h=XtQWZ$jx4RMhh@kaoJcI9v>~ zjAu#OYWb?(l@&mcUI-uIP?pB-%GITJS#NqTa-bj2Cf#AsK}u6Y%t_Erti+LgmH5Pb zRFq*eL78o%JwL0pnSm+DDI-YRfZNl=_lr%xf~6`Iy*Bdl~WoxgH;azFfvM zDTVEzJ@b8Lm)byCJzDyR`LJVBp!Oc?h!ag;zyf#-?e%#mq)S+v*5)%2D5>HK%fURJ zEE+%|PorC3B9D{JK@Hw!7-r{fQ8y1DD z#TT?EWr1a6X-EG!ll(++(H$3Zfk zQ^G0b(wDhCj>bhKBOI4uD7L2WX%_T_rnsNpqFAhfJH!Kij^E-NxsB`kRQ-Tv)=l~< zeW?DnCe)wQj_O7Aw7OQEr^YE29iQ6=6qYDZ^0(%$%kj#QavJB%dV29`izgpuzj1%l z{ml;}pA0LQ#nY`-OO~smgw1YVqm#L(J!WX1W_>#Ln%?D9%jmEZ<*!(O$p7fp^;1{( zUE2sNZY*p%KWg#ymFG4M*gOBEl%XpTCHB2~q)qqUxr1py*{T&a^?s9r&XLkepU94vp+V?^p=|jdog2=Ix23Eu@#%)8i&kFxO4;jw`t-dXIJk6LolUJvM1T5P z$+(aK?Rqb3r__t9aNQE}?C_OukM!C(YeT@Apq2gCU)(nH!2NSG?_0&#l5JjzZ&s%x zkM{1nrFVAsqph3NE2=ovbE&;!#@aJUhsNzr+4|+?lx>evwjX(RVf_7ECC%0=czM{D zk@wp6?_8$yymkj7mxpBqn|u!I{j%A$E~iEwnz7IH?fd&WrVcw<^Qv1`sxsK~eA!MR z+v{I!W^R?!@@cbK4NBA;95mVHjwhaecH4TP!tv@yDjfEUiFtX>fU5^Lwnu6ArphV{3^*03aUOBblv-W$jR0}Zuv1NecgqoH@|&2qiBq2 zn%}wdo2xentyKSDMBfJQhn)}EUvYbh6t|LU+b7AlYhDUI-QxJ-V`Y!eNU!lz+Rfcr z=L%D$nLc;QII5hi=^pl0__uZE)F}~?9Na8$yJs3sDEKMs`0awL+Qly}+_?~Ux#rE? z_q3-8$__c*J27x)h3i#^hh)A|>J|0n_)3{&miuq8I>gw*(T}U%3%C_>J?iT6t8;Hy z?=*h!(^Fr2AE@k}?fW=T4q6dBw({P}nZZ#(fu-B|yLmp7=4c%XHa$7~@M>nj-N_jq zneRS0^Jq-&GJ8YO*X-rB$bWy}gtBYPR}ETU-n-nGmu>{ivQ4w@l9uSH_MLgQXHOr! zlbxMaCHsxXEuT%uD`l^$)r3l>CDwG$;kGY)5BhcXkMb|?SHkD0*D?3?md)}j9Odjyi!us37TN59j!3nyo-Qge57Sx82={58gS@-g&e(3*s@l$Z z#d^-L`dH3MU*k<(R=Is!;lzTi`7h<)%x8r@_C88Uy**ZumYL^Sr+F^&?&!1BH^lFp z?-QTaws5bt?kg<|7_3i3p5T5iL<{`rjx6YPD}d3+XR z$sTU$?mv6(_P%Nh_L*%P;=RLjwR<_YU{fGd_-(bfqfOEG1&i{-@|)!c6ns!P)V@@) z>8nK)`$qP+RI+~QzR=@|$G092+;glA-RhYiN=u-NaMQU`((zMKdSOiAK$^=~`*Fus z^^~43+Ou8qcJoxX3)TznVID7e%yECunq#q;&r5S5OjOqW)jp08d*hvqd?GVPmBMayio?(*@IY(|e|;vPBl`EF@t|k)x++CsjompadvhN>AmEvQ^!p zUDnMa635VY@C#`P^&DY}HI+3b%Uh)%*mP)w1^gp@fL2G1QWiTx9X3aI$92b#%2_p7 zpUxd(JUn6%a(`1b^LJ*|{Ij{gdA(`9oG3|bI(myGdKay#8mY{5L^^6Z5*)&DQaP^5 zdUHNe%%Pjc68662CXbXS$Zh0fQiL>#ZKJy?ozA($JL-G1PFlXYQ{AIpS1W3Zv|9RM zy$dhmQ$#ts`Szzfo(JnlC$E)kKikMA(pUX3-AQ#ENB6lVVlls?57h5!bG15}Ny|{} zYAtP}_OgCPf1B4A_e2WaK+Cf&Okp<3SGvr`(Y~rKzI4wclt%NInN)_cpB|;6;2I-r* zFWtOS*hT3ld4}nUNj2>=nM^fglaxwd_zS#?UZCDkWMz`0jiZm_sAHb8NA=Vfa&Mdh zCz(mMnXa0en_HOkO&v_H$^9i2He)UE4e9El&Q?5>?;ZObrIaJe7wR?5#+!+GxC#!l zbJA4#q3mHgBM+6olZse2oWLmIE`Y=;u(HgHU4gk2amb+4 zO*uR+J``=mD5R}4nfo#yrc%!1w&N!o>7=ti_&^bois718m%L!G@LM!@;B)@oaB!rya7WXz8J&k%^gfJrNI=B8A`3gC=I4Gl&Ax# zeIUH{OBw(JiaF!pb&C1)q4q&kGWzzVnlr`H9L7+Jrg)Ws80bN9pWZ}|A@m}ySVG@l zxuT1Eb|;=5(4FYfgr0=%(1qe}ohk21c@KJaFGknmdS{AibS4fX?*Q#7c4yR$)REAE zC{eUljZ%APM^7iU9o0Gzr46*Er@_&N(3Uvb7PlIdRz!2AmXsUGKuc)x0-8f4H2($8 zQsgf!MjlB~xn|Im(CpWmvu?CCp~zE1N{tDPiqY_Qbr;P=H>eSW22lSusP}8R9z~Cw zaMHt}?k@azqbj_JDiq87Ju1T=p%VNjf+^noA}Ugx_&-sB zqRRh?AoydHr}*$6p&UiA{}^TA&rpV9zkiI<@K<;V{v3f67yomVqGBv; z?+^fg4}Xfw{}cGp{|o;FzVuc5r|_Zw75+JF@c)H3{Xg>GzzhCcc+&qR{|h|m-~|YAZ+wHsH5)aoS*Lbw zaI{am3gGB~QS-+28a39CKWoycDTe;zX3d^7eVW10qg`i1-|6G$%pWyt95i;+oKZ)b zf|EfX&>*Q@79>(aY#78P%A7 znOj*c**5k%PIc}(?l@kAx0oN{4-%XbxCE7ieT0*R3xtb>(}ewm4TN0bXTcUhQ^6Ph zP<|<|3-1D#!yV2!&9<{pRy*c6#&Y^D+JDqDloQZN@>KRnW=DE$YF=_oB0t_a)*{+8 z(mLEZ)HgUiu*d(xm+`jq9w6w%A`j%*>u&F+xxctBxemIHxNf^JS9$kL_jh++kHxcu zsNoHG@A|g;*90~O_lNF=eUZwsiSermGTA+SCL<(gLEk7XX{YHt=493zc6IJD-a|e` z*j6-6Tp(E~ohR!ruc&Y+w!`I-Lx>2SgWf}JXac1vBj_u1HCi2gj`T&I!&-Q};-vhO z%p*-o;$nyBjqreA2w%#3!I{lQST`Ac=@#k?3KKe*t(v)(>Y8-NH^k~jZQ3G4^<0(*^FF{vZpamIl-cR0)8@9-V2q3&Fd zm_WU`z9#+=f$hOZA#b>LbW1EApP00yCT1epHIS6Lk5-9so!OLqol~24lFt$j5*-zn zNmw#1XjM5_fRrLz(3;9?O08%WO!c6LaFe=#&T%ni~`aZuusAs}Q8y z=`!M0C&k&wu?#D<53&brTWzgvhz+(?1b^q-KG>Sruh~0e5$vjCm2*5k)HU9{%5$0U zd0YDT1k%A7;c%oN#!Ku?)=B@!EFra&htx52h`F0pl~clP%D*U(i~bQ`mAIt}c`ZdF zxHcj~OVJ`_Bh>>{MfD2xM|E6HsxxX_eMa3=9Z;=SC6xKfZRj=RE&NOIPJT+ZP})l3 z7wr|c5`5vHQ5>u~F8>rE?ZonW)s=GwK`U+l7DpK~j|-}S&9@Kp6K z_F?`3!FQp45j?smE=gWX4b8C0ThKVFfPR}Xk;UVj;Kj@iqX`RV@8mY)mkK6`Y~sPv2Qsdr13Uv+i7r=8 zR@GNq)XOxGcAWN#7T1b(IvrP6rah!>t9_?wuQ{x?sKlzu%35eegaLn&ua{Mo-VwJG z-4)d2@8?F@ZCHhjXS58Z2{bQzF^wl{Bxb}eMX2FP!Ox&w4~cFb46Lh(&aRFg*jW2U z+ZSsC>q$#Ji^+V#yvkf)-fn(k=2|9Mf|kA3&NhXe3T9)#!NjY&M!2tg5br!NVpD?2 z(B??3m^r>D**C4o{vi)jhSMrAe9X)230wvLmY}D|ES@YalQmVWfUhH^s7v`r^+5fv zrnUCFc7X1>F051OE9zDHsP2rev(Ba+qCKUtt5J1rRV}3meGjix)RI4!c9h%}RS+)b z-{&UTHCY1~D{1E`FUY?cR=Rewcf25aE9?)}46O9oiG0sj*La-oe1jdc@35V)zOgVZ zL(Lyd<4jsp!1&kbFmg?8Ohu-oX}Q^8`Dr<0-DTTpKZ?C@u<^mJyY4!~Wp6vbEAVfq zUc?o>9AB91ny!$Ik*_KL(UvlLu_|(c+)Mn4LRfrJ(m-}j&Vloh9q0q)E7fiFR!wKE zOFLg@*45Ha&==@u>$~X%`kT6*y0_Yz+9jGx>bJm#Tt*9#{xDB*LRMc|BCaIbByjPX zbGNWdnJPvf+8Rm;8Oqd6PX_bQ8Lb;B4A}#{{I9*e35$EJt38f5X$}Uav3Insvl5p1 z7K!DidA_;3xw$#dJk5O0Ot(z2;FitS*0!kajr|e!*iq^fxH`KJf)Ok7Q34x+mBa5N zt7F|0suZ4nm^}n7ruLy%Wir`+IcIoN1?5Gr#Z#mV`BKF%xH>vrxl46QeMmD?TTS;# zH$eYbFE_L^^fh!flsEjWrovT1Lj#9=1ku%V-_-%PI1XTw?CorgtvxL(z-To$ zJvNRtmN#b0!euODGvgLx!dPI+F@HB7v23yKu${60!E&8Tam+Qr6Ct+w+68E#*Ws1@X>nz9!uZgEhx$@1xW{gKKDKQnPj%rG^r**yczw~_! zmkf3TEr*{IHoP#bGRO_<^e$a>T`%oe&2V)a6|DS%EQaNZ12ROqO#EJ`6HMcs=6qvO znL2u1YHw(Ic6Itd@@o8b)E(A`Mg>m!!o&d22UkAsbZo;0*z4PJtTioT%tuVPailR- zcD`(F*{ZTVWuME+8`m3^rhBIG=0=vv)(W zL(GtyQ!7W3^VhJ!pfnuP)Aj9jh1y4&SL(B>0%bGQ3a?g(~RL)dnlo`*K zO)eW+HoR;`S#cTLxX>stT{Vp~*R#~J*0Hs*Psgq~B=|ZP8`#8}zOVib!CqlB>WIBc z+)SO#>?8{)3u!YM{aMX8m3bupK4@1%=`Yy?MH$=%-Ku=23aS$tqxOPstUjinV=x-Z z<+RP|n$svpkn_nf+3;K6Lcc+GUu)HP)ZbLa%IPSITv4=?UzMsP^F$8?X=H+3=Po?$n(lEC3w^r4yWq-jnF_Gq1@@ zlq0nDjLEEa95L@Fe~+-W_^V`$43p=>XAvhV0UlYWAvMpm^K@eUTD?iHGqfUvG3{<^nI&d!XkKG-gK;Wv43zyU`%>mAD`%Wz zv>0ca5c5~_b;~8tF0;L=qrhpxhq~>anO?d7U0_3~N2C%^QoiKJ^xf=D=qmL;`ab45 z_CMS_zE)@x9hdZzMdYjCAktP@sJf|ssd=b9p_{0e8Hx>>oJlz+avtVf&ne33myyH?skQZVx?M8b6?Y0BWyfZHleIR8B(Sz>jbQaxvaPG zlX04^{TScSH__Ho!b;G1W^JCtt*WE4VkjAlf(HI@vT`FIxkuNv%z<$;@Rd zxM`kAa9dO$sVDm(p8#gz0Od*5Up1+LbWYt9{St#9XI0Mc9AUZKa@ETz%Kgb%l9M)! zGMv``)TOm7ZBYGOwM?0VK7e~D9?2?5=Zmii-FySDBWDC_Dq}ir7G){9BC|NPII%8v zIC4Ma3FP|6d5b+__rG{K=Syt0y|1mgwVh?G`H(4QoM~hm@04vT+gP@%>?*MJgN&bz zBTPK=7xNWMvGsw?Zm$5w%Zzt)zwnInGW=%)Q$j5w?AZ7C_2l97rtDm35VbYEB9mm5 za_;ap3fhVS;yuz_`9TE@>4$DoUR2#xpVzF`cGd-TOZ0@kBUoW43|9;EXRdpo=y$W|y{FP0T{t`D8Z5F)ZakxF%12U1LVp95{mZ=$&meaxKFgWwh}eJGK3g3Yt!0M!2e2Cq(*xrw;{?#goyMQW7N)zV zd@~y;j@Q<2HlJPZ7~{N(!|sh9f%lZJUw{l=3NMUyjjNM^)T_)vaxSF@&A@OmOW13; zo%l(?DN!GZQ#wxmRZ$n2g&t6rs7lm(HDk3B-5wo7KSaMpe_a2czDPe%&($B%!MX+7 zw;GxTRhLthQ_|75@J2;_prd+AK8TtLkMc=w56&LeUxtj{nOXo{%>GGpQgsr;V|yc| zp>n}xevfw?;d5_wbp}exihZ~Lv4yR<);X3R=3!>4`L=0;X|8F$X@}{(sl2(!EVW#+ zOtrSLRkc^cT06!$58yUeE6+8eq3@A@bWjm~9a$6Wln|tTr*CEVL-VQq==GQ!_D`TU zW(lf@K8VLiU9w4v?{HOgvT}=Rr@BZpPuoOi(oNBS)*FBwTx^(Y7-&#~@fry%M|Is~ z?S9P}^&Zt?Wj-oJt}EKhA4+RU_5e-alE0FBgI&gCF>27dQ>K&uX3nQRCStMj(V^k} z!N2~RzAZ$?y}||K4;-tpq4o~8p4PdRJLZb!qo$fBlkvRqU*lfm9i!XW-t@%O&FnUx zu`IHVw2iVa#x6L*&Q7jt?xw_B?|8p3_%yUCk{3gP<#?XnpPd8cQ|r;iOdIPWX92IN zz$e@fJlG9c6-5#J9m%3>JUB;jSJqSdUffW$U4ZebaVN2lGe6KnR3)VW*){V|YFFY>%o`~m9v!^q zSNb*+V$Vre9!_T*<@Z~sbkGr zt-v0JFr~9MzSos-PbY%j0>3DDGSnv`iG7Iwn;ep^noW_PDHmv~foHD5@p2FI^M!oz zX-QStDY*=ugj_>0WkMBG{{`(DrOW8%=s)TuhT4XPKp#f+m-M~$e{?-`2ej`sK{crg zD?g(gKy{0b4%`YisXeE3n?RNG*kCiTRGH&@|RG7|g}9rif{nxy(G%qPIG%Pi)uhCDjwf!Xwr8f09VjXqPQM9keIG8$e=nFJ5=o9pVfhlp zPgsFASLUlas!`2v&04KWw_Rt`DfBh;xq6QNm##=xQ&+5|X?tjPs;>dHu?L-j)P)`L zwK9ctpO`0_B6!cs;SOc*Xa1oJXpJc2$?chksbHdNd_weMm=YQoxaq6nJ?m-dCh%hC zTt`0E(>~0$%=*Yu!E(gh!0a^LG#xb^G+i=TOtsB>%@r)KE$ghqY_07Lu&$1!&U?7P zJ=OD_$oCQc&A~chOXNUoSfWZQnSKrQ{9I~xx`9cs?r>J{8VD@HO=6vNhb$`}1Rp@& zg7^zpy;mRA4AT0vGj$eSJ^e(WG8O^5Q9=JnH&pjQo2#9m*`+?I+M%3}c13vb1Nj(P zP%=l13-blHctUPJ_93R3j?ns2wvx{>*;L!)+W7Zqy~vJGHZaE@^KK>DdPvtN{E_pK z;|oT`I@{0M>eyabCjbk=u*NKOYbEPo>t$;>+c8^nyVbrK8|xSk7{_GSdiNENn`rLa z;0Hd3{AoxG7Qz zO`-Rd6I3D9c=cU%RIS$JYE+uI`lfn}8d4X6b(N=FgI+-1!Cw@Q0O43BZ6`^I4hicB zUh)QV|FVa(zA&26k5f66N#y%XgY=GMGCn2tC(@v$?}xz-4~V_W@SscO=}YYM623lxm%*0d ztC7aB=kcD&Qb42v*#byTJw($mwlZU^zMRwC0I#~BuW+(xfp~#roV2Y>B!2^Dqz=9W zw?rO-HZDRRqAoOxvXykD4}F8~M*E{AQiLdxBQOshpx7mUF0)GG5~hSDrilWA=lu1& zX58=WiL3}?GW{7~T*-?29#VG)d zxI(a-e}@+$*14;@;(!MsjCH?fbgKLWfig_SytPN{2-JLcK#9qext%nMJ7 z?v8&+Rs%6khBAi!f?19;jdxD)PV`n%ESstz;c@6mWwC0mTBw<$*{4~jX{&jmM$}bR z6yLs*Ibg437vm7YgEOY$>|lO8a3$>1sfRBvC;NY_4R1}n7pw2iZ# zwIG(4=3C}c5TiV{tg$Y&owExaC!M2Q%{=YBi~JvgEhA52{ga{e0kRvFq@QE8<-X## z7afwkl)Y7)MS3aks3Pi^=Bl>7u0Xe0HwJj7q1t7d8R{CUt0)txt!O5zEFpxu`PI26 zSX{;w>T@zDvoRR~?-LH5_AmC%@@#f}bar;cfgbW(TUwu6)>@WWiY*#ziFJ`}q5TRb z1`1)Yy9Lp~H$8AZl#C3Ie@za|;N)CtoW6t==Jet37rqx8r7z`cVI{g!d0TZwy;!5x z7HCgvPid!XGnz5L@)oLkDU--F_?o;_S}MLRT*t4&y~b+HctouO6=gEXMe!8yAq@gC z?;nrbWx!WBc-S-BZL7=D)8aF~G=DZrEQP=iDs2ty3oy*F2Jhl-M0EER2L6QdqA%n5 zDSu`s)SUK*v4}0^trz?eA=0{XEnJFBQNC39)eg;ZZAIO5-Ev*N&a2JW7HSr&8>wEP zwUJ4R`Lc161|mCu5jV`rXPl;H$=;d$NoTBMlU+l%*QM{4!6xPSy$kx|-$<_R;&cFB#_Z_0tCksvuTcT4EnbhWN4&^4TJ@Xa23$IvU5oIN5 z*=xmA1VgK;TB$2(-e~G+r)g&bJ^Nf!Nz+~3MWt6hLK?z_@=Jhu9ubb=OF<8{Wjv&| zgzjV-rb^Yn+^+ynoF4ZM;4fG9w=31qDuQhA#s>iB+p=zYDqKQl> zxgl)Nzt72G&80u4@W|fjJqd4gc-R~$@O2>SySw1q0DC(F$lC#n-8>USoK?+3z)YH8 zX<%(=`^WwRo8xTg(t0X;d-%5p{o!FTYoZ`s4zR-obS>)&r#0X;6(#@3HY-*jU6n3X zPt8K@EWirSfXE~Zl+y(LD_unE)?8M1Q{6$6fDtC8Z^UbawfGM?wOB=T52ZO-nEsKd z726q>22cC)35{EX*K=&NBerjrXJ((NpUGpqWqfR;0?n5LqIte`u+3`U<`{wJyXO

3j5Jr$fcE~Yb?R>F^9*|oXALU=Gn%d6 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͛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