From 606efa47b99898e2bb5ba2d82aeb9f00c8df7b69 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 21 Apr 2018 06:47:20 +0100 Subject: [PATCH] more cleanups print finished --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/core/lib/serviceitem.py | 21 ++++++++---------- openlp/core/ui/printservicedialog.py | 15 +++++++------ openlp/core/ui/printserviceform.py | 2 +- openlp/core/ui/servicemanager.py | 10 ++++----- openlp/core/ui/thememanager.py | 4 ++-- openlp/core/widgets/wizard.py | 2 +- openlp/plugins/alerts/forms/alertdialog.py | 4 ++-- .../presentations/lib/messagelistener.py | 2 +- resources/images/general_email.png | Bin 833 -> 0 bytes resources/images/general_zoom_in.png | Bin 1191 -> 0 bytes resources/images/general_zoom_original.png | Bin 1182 -> 0 bytes resources/images/general_zoom_out.png | Bin 1173 -> 0 bytes resources/images/openlp-2.qrc | 6 ----- resources/images/plugin_remote.png | Bin 830 -> 0 bytes resources/images/system_settings.png | Bin 1288 -> 0 bytes 16 files changed, 30 insertions(+), 38 deletions(-) delete mode 100644 resources/images/general_email.png delete mode 100644 resources/images/general_zoom_in.png delete mode 100644 resources/images/general_zoom_original.png delete mode 100644 resources/images/general_zoom_out.png delete mode 100644 resources/images/plugin_remote.png delete mode 100644 resources/images/system_settings.png diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 687537867..1a3dbab56 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -619,7 +619,7 @@ class MediaManagerItem(QtWidgets.QWidget, RegistryProperties): :param context: The context on which this is called """ service_item = ServiceItem(self.plugin) - service_item.add_icon(self.plugin.icon_path) + service_item.add_icon() if self.generate_slide_data(service_item, item, xml_version, remote, context): return service_item else: diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index e3fe4bf1d..7b2f13a3b 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -170,7 +170,7 @@ class ServiceItem(RegistryProperties): self.processor = None self.audit = '' self.items = [] - self.iconic_representation = None + self.icon = UiIcons().default self.raw_footer = [] self.foot_text = '' self.theme = None @@ -230,25 +230,22 @@ class ServiceItem(RegistryProperties): """ return capability in self.capabilities - def add_icon(self, icon): + def add_icon(self): """ Add an icon to the service item. This is used when displaying the service item in the service manager. - - :param icon: A string to an icon in the resources or on disk. """ - self.icon = icon if self.name == 'songs': - self.iconic_representation = UiIcons().music + self.icon = UiIcons().music elif self.name == 'bibles': - self.iconic_representation = UiIcons().bible + self.icon = UiIcons().bible elif self.name == 'presentations': - self.iconic_representation = UiIcons().presentation + self.icon = UiIcons().presentation elif self.name == 'images': - self.iconic_representation = UiIcons().picture + self.icon = UiIcons().picture elif self.name == 'medias': - self.iconic_representation = UiIcons().video + self.icon = UiIcons().video else: - self.iconic_representation = UiIcons().clone + self.icon = UiIcons().clone def render(self, provides_own_theme_data=False): """ @@ -425,7 +422,7 @@ class ServiceItem(RegistryProperties): self.name = header['name'] self.service_item_type = header['type'] self.theme = header['theme'] - self.add_icon(header['icon']) + self.add_icon() self.raw_footer = header['footer'] self.audit = header['audit'] self.notes = header['notes'] diff --git a/openlp/core/ui/printservicedialog.py b/openlp/core/ui/printservicedialog.py index 769f9f699..87771606f 100644 --- a/openlp/core/ui/printservicedialog.py +++ b/openlp/core/ui/printservicedialog.py @@ -26,6 +26,7 @@ from PyQt5 import QtCore, QtWidgets, QtPrintSupport from openlp.core.common.i18n import UiStrings, translate from openlp.core.lib import build_icon +from openlp.core.ui.icons import UiIcons from openlp.core.widgets.edits import SpellTextEdit @@ -59,31 +60,31 @@ class Ui_PrintServiceDialog(object): self.toolbar = QtWidgets.QToolBar(print_service_dialog) self.toolbar.setIconSize(QtCore.QSize(22, 22)) self.toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) - self.print_button = self.toolbar.addAction(build_icon(':/general/general_print.png'), + self.print_button = self.toolbar.addAction(UiIcons().print, translate('OpenLP.PrintServiceForm', 'Print')) self.options_button = QtWidgets.QToolButton(self.toolbar) self.options_button.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon) - self.options_button.setIcon(build_icon(':/system/system_configure.png')) + self.options_button.setIcon(UiIcons().settings) self.options_button.setCheckable(True) self.toolbar.addWidget(self.options_button) self.toolbar.addSeparator() - self.plain_copy = self.toolbar.addAction(build_icon(':/system/system_edit_copy.png'), + self.plain_copy = self.toolbar.addAction(UiIcons().clone, translate('OpenLP.PrintServiceForm', 'Copy')) - self.html_copy = self.toolbar.addAction(build_icon(':/system/system_edit_copy.png'), + self.html_copy = self.toolbar.addAction(UiIcons().clone, translate('OpenLP.PrintServiceForm', 'Copy as HTML')) self.toolbar.addSeparator() self.zoom_in_button = QtWidgets.QToolButton(self.toolbar) - self.zoom_in_button.setIcon(build_icon(':/general/general_zoom_in.png')) + self.zoom_in_button.setIcon(UiIcons().search_plus) self.zoom_in_button.setObjectName('zoom_in_button') self.zoom_in_button.setIconSize(QtCore.QSize(22, 22)) self.toolbar.addWidget(self.zoom_in_button) self.zoom_out_button = QtWidgets.QToolButton(self.toolbar) - self.zoom_out_button.setIcon(build_icon(':/general/general_zoom_out.png')) + self.zoom_out_button.setIcon(UiIcons().search_minus) self.zoom_out_button.setObjectName('zoom_out_button') self.zoom_out_button.setIconSize(QtCore.QSize(22, 22)) self.toolbar.addWidget(self.zoom_out_button) self.zoom_original_button = QtWidgets.QToolButton(self.toolbar) - self.zoom_original_button.setIcon(build_icon(':/general/general_zoom_original.png')) + self.zoom_original_button.setIcon(UiIcons().search) self.zoom_original_button.setObjectName('zoom_original_button') self.zoom_original_button.setIconSize(QtCore.QSize(22, 22)) self.toolbar.addWidget(self.zoom_original_button) diff --git a/openlp/core/ui/printserviceform.py b/openlp/core/ui/printserviceform.py index ed3c90add..683b8b620 100644 --- a/openlp/core/ui/printserviceform.py +++ b/openlp/core/ui/printserviceform.py @@ -209,7 +209,7 @@ class PrintServiceForm(QtWidgets.QDialog, Ui_PrintServiceDialog, RegistryPropert div = self._add_element('div', class_id='item', parent=body) # Add the title of the service item. item_title = self._add_element('h2', parent=div, class_id='itemTitle') - img = image_to_byte(item.iconic_representation.pixmap(20, 20).toImage()) + img = image_to_byte(item.icon.pixmap(20, 20).toImage()) self._add_element('img', parent=item_title, attribute=('src', 'data:image/png;base64, ' + img)) self._add_element('span', ' ' + html.escape(item.get_display_title()), item_title) if self.slide_text_check_box.isChecked(): diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 20235033e..7a036df46 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -1168,16 +1168,16 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi tree_widget_item = QtWidgets.QTreeWidgetItem(self.service_manager_list) if service_item_from_item.is_valid: if service_item_from_item.notes: - icon = QtGui.QImage(service_item_from_item.icon) + icon = service_item_from_item.icon.pixmap(80, 80).toImage() icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) - overlay = QtGui.QImage(UiIcons().notes) - overlay = overlay.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) + overlay = UiIcons().notes.pixmap(40, 40).toImage() + overlay = overlay.scaled(40, 40, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) painter = QtGui.QPainter(icon) painter.drawImage(0, 0, overlay) painter.end() tree_widget_item.setIcon(0, build_icon(icon)) elif service_item_from_item.temporary_edit: - icon = QtGui.QImage(service_item_from_item.icon) + icon = service_item_from_item.icon.pixmap(80, 80).toImage() icon = icon.scaled(80, 80, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) overlay = QtGui.QImage(UiIcons().upload) overlay = overlay.scaled(40, 40, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) @@ -1186,7 +1186,7 @@ class ServiceManager(QtWidgets.QWidget, RegistryBase, Ui_ServiceManager, LogMixi painter.end() tree_widget_item.setIcon(0, build_icon(icon)) else: - tree_widget_item.setIcon(0, service_item_from_item.iconic_representation) + tree_widget_item.setIcon(0, service_item_from_item.icon) else: tree_widget_item.setIcon(0, UiIcons().delete) tree_widget_item.setText(0, service_item_from_item.get_display_title()) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index b1c6ff806..3a7d06f4e 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -80,12 +80,12 @@ class Ui_ThemeManager(object): self.toolbar.addSeparator() self.toolbar.add_toolbar_action('importTheme', text=translate('OpenLP.ThemeManager', 'Import Theme'), - icon=build_icon(UiIcons().download), + icon=UiIcons().download, tooltip=translate('OpenLP.ThemeManager', 'Import a theme.'), triggers=self.on_import_theme) self.toolbar.add_toolbar_action('exportTheme', text=translate('OpenLP.ThemeManager', 'Export Theme'), - icon=build_icon(UiIcons().upload), + icon=UiIcons().upload, tooltip=translate('OpenLP.ThemeManager', 'Export a theme.'), triggers=self.on_export_theme) self.layout.addWidget(self.toolbar) diff --git a/openlp/core/widgets/wizard.py b/openlp/core/widgets/wizard.py index a60627e34..f39caacc2 100644 --- a/openlp/core/widgets/wizard.py +++ b/openlp/core/widgets/wizard.py @@ -198,7 +198,7 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties): self.error_save_to_button = QtWidgets.QPushButton(self.progress_page) self.error_save_to_button.setObjectName('error_save_to_button') self.error_save_to_button.setHidden(True) - self.error_save_to_button.setIcon(build_icon(UiIcons().save)) + self.error_save_to_button.setIcon(UiIcons().save) self.error_button_layout.addWidget(self.error_save_to_button) self.progress_layout.addLayout(self.error_button_layout) self.addPage(self.progress_page) diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index f2777440f..04aee0842 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -65,12 +65,12 @@ class Ui_AlertDialog(object): self.manage_button_layout = QtWidgets.QVBoxLayout() self.manage_button_layout.setObjectName('manage_button_layout') self.new_button = QtWidgets.QPushButton(alert_dialog) - self.new_button.setIcon(build_icon(UiIcons().new)) + self.new_button.setIcon(UiIcons().new) self.new_button.setObjectName('new_button') self.manage_button_layout.addWidget(self.new_button) self.save_button = QtWidgets.QPushButton(alert_dialog) self.save_button.setEnabled(False) - self.save_button.setIcon(build_icon(UiIcons().save)) + self.save_button.setIcon(UiIcons().save) self.save_button.setObjectName('save_button') self.manage_button_layout.addWidget(self.save_button) self.delete_button = create_button(alert_dialog, 'delete_button', role='delete', enabled=False, diff --git a/openlp/plugins/presentations/lib/messagelistener.py b/openlp/plugins/presentations/lib/messagelistener.py index 361c77ae9..675233807 100644 --- a/openlp/plugins/presentations/lib/messagelistener.py +++ b/openlp/plugins/presentations/lib/messagelistener.py @@ -347,7 +347,7 @@ class MessageListener(object): # Some of the original serviceitem attributes is needed in the new serviceitem item.footer = item_cpy.footer item.from_service = item_cpy.from_service - item.iconic_representation = item_cpy.iconic_representation + item.iconic_representation = item_cpy.icon item.image_border = item_cpy.image_border item.main = item_cpy.main item.theme_data = item_cpy.theme_data diff --git a/resources/images/general_email.png b/resources/images/general_email.png deleted file mode 100644 index bb3cab8f309beb40436493078b9cc01283b8e53a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~&H|6fVxZ#d zAk65bF}ngN$X?><>&kwMQH)7Mw$lIh51^jq0X`wFKq&}dVq)S11DF7U21)@rjEsy3 zA#5y&G6Mqxh@`EpEs!y5)+_-5f!VWX$Hv8(nwd2;G;Ub8{^-$TFJHa-`0-;vP;g*S z@Snf`|Nj5~@83TO2`L%(IkIx{@}Beb!XV0E9Z^5e7>&{=eeEI6l zYgaGbx_kfjy@z)nK7R1%>4V2lA3l2a@bR-pk6%1~`uy38S1(?^dhzPbi&t-7yng%g z)w`Fk-@JP9h`~L06 zukYV~{P_9n$FDy>zkm7p>-W#!e}4V`^Bai%{QdnGi2nci^A{8>fB*gc_a6u@7|mD) z3{Cx#AirP+MkZ!94qkp?ITZtA3oC0Idj~g9FW=zk*u><_{QTmHlc&vJwd35qPv3z- z`tRStNf+CIS{akP-CcTexGy;aIX66A977~7Cnqp4nX#&tv8fzTx_epqc-I4C&Wsl? zGrJ59v+lSOm6bjF>Q2dpHGEI6+_P-Q4i#%tOU<2Uu3g;aHpg+1rmgK_CH?igR%jTjul8+nTxD#% z`{Kc~ch8-*w6WeD-Q~D!`GyU9m|1qM;^wYSkw~cyXwYe1V#76og+Zy*f$`>+IhjB| OGI+ZBxvXGLZP?+=%wwwy}kcD4|^~n6wUOLd|yuP z_nTkNJ>PS{{{;g6hF-5nMn=ADEw8BPqe!X=K@q&b7uM2D`iECv8MwtTjQp>Ihlhu& z+uI$V$CBBzQ}@D1n9j$q2wNprH&&tc4W(f%-_}-28^jkRHUfomi42 zTCc+l8CgNheaEL9M$LB>6jm7j!g~ei2=Mwx@4uZCWIVx&n$$|N!l0!nRADmEmnpi( z>2&(17Bi(`H)2MS7ctlX2}6-W#1{nN#ULOtlm`e9C0PMtE>AgYsH#{jb{BecMS~|M zCPqpLhH+^5HZGdhv%E<1iUORj%5OS7maim4k@KR0b7@XnM#oy)P4a=6ncqHvUa9Cg zW*{1kmhSZ&9YC|l!R3sS6tpV7*4g;bWN%)jSxHCJ8KY^7KJiiw-({{c;PANRSeE@U z7!1nA3IhCo-y*Ew=4pHF^Ihe-cD=_JEd_Ld&ojbR`HI`DiUQ9LB$=jC0JYBD>FA|UDXMX zev8F&dvbDevqw|l_laxILGjy^0Byg$)sGz&X$ z&1$u}w^J!I$8i+grvC2k?npM9oyWiv5Rb<>nx?O{KwuM_U~w>;&DINFq5uY-kVGO; z2!%qUcDubstJSu8z1}|pfxsp3Utuztu=gMykH-ige*p#7_HGjoqu~Gm002ovPDHLk FV1mKNG^+pr diff --git a/resources/images/general_zoom_original.png b/resources/images/general_zoom_original.png deleted file mode 100644 index a268a99842073489970505e88e7ec9e3c09ab3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmV;P1Y!G$P);TV)u>-}ij=!1Jmawsr2{K2SAHZazfV327*FsC%b9(6MIp_6UaABO*Y4Df) z^X9$zz0aHHdBFb#1b?EtyIXI!mp0I}`XE7)Whm^cSSK?LhK?tPeoGs#_9(@CviVKFFW z96oaRI7kCVQKWr?g}8EO=1NSd@P`!&FDxt=t$DNgn-~K?T$aZG=H_VSYJ?<%n*1E! zdIC=>D9WBrOaK6B0C7ZRXyUkvN)ogpL1pHy`6UebBTA48hQKBQK|)CoBrWUo8V2J@ zK}MOjVtI5tMlB(UJWoLkAcDjMH33sJ36n`G7jOvy&;*vEa7=&{E=q!kW$8%;%d)<- z;@;lgF$%EkGa78C$fYPGAxJ({gkvbA-YXU~2(Xw0uDyt+mYBb()yyzGpqUV(F)0wRKOUK@7%t;eW%V-dY!GU)WH z!^5|acXoD8rd<$ui`bc&nH%<^oC7Dya_cMrSYbjmu@P>Up4%+8r{YIm)-tvJ2P3>| z{GQ5I{G7JDyu7)jq~!j<2uflpTaB$Av>IWak$9Ptl7Lkz>*G#ZU~f@Pl%hr?KP z^`W}5vQm8@5V*atupp%or(sJjA9v)YGZaM~^?JNm#eoWERb{1(=lSbXQ&R#C{v)AK z2ux2;|6sLRm(6DLG572&{;bWmSC&_+)#`o-wt=>`wiEJ{^du4qwZq{6k|f=QV4IMe wS?hE$)NDWn- z27;nU@0I{@dVh9QG|{V}Z*H~0i~|so3_yGgpshuKq)nhDw?O&D55KS+bVoMCxneg( zdDDq803Zt>u2WXa4#to&w}XI)7>H;mgft5^f`W1iL7o!;$(oXs-NIu8sT$B}CpN0H z;3*|Ew5U)T1nA_Yb00a)glHu(*@StJs-J+Os#BXXqL()WMpF^C&rX_lB0?nX#J#<} zLlh8%=PlTNB&8?;X{i(h5>7zgWP%(;!5s|;ViEvFQ&hslak+)rI5s>oGMH8@%gNQ5 z*_oaupUEwSm-D4h9>s$Zt=pn?5l< z{-`ck@oL>6cjeTQB=I!OA&SsM6%ZRqjfruxO`M5&npvTx#F@+9>`;}buQW+Z8ZGa?y5e|wqE^ZZ?h!-0!}@M0p7z-nvj8vTBsJr;}o zFgrV|r4grRS8g2lSeE4}iaNfyu!vP1sS4IqR~IXaa&v5KOvS-}Bp#20@$vDW3knLB zT`t$_;i)P7aB*>|A+Kc^rXPYmpuN5Qw9%3tQ52a#AOJK?`w4 plugin_alerts.png plugin_songs.png - plugin_remote.png plugin_songusage.png general_delete.png general_import.png - general_zoom_out.png - general_zoom_in.png - general_zoom_original.png - general_email.png general_find.png general_back.png @@ -74,7 +69,6 @@ system_servicemanager.png system_thememanager.png settings_plugin_list.png - system_settings.png system_edit_copy.png system_configure_shortcuts.png diff --git a/resources/images/plugin_remote.png b/resources/images/plugin_remote.png deleted file mode 100644 index d70f0f6decbbe811a9e6df6116068284ecdbadb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)K~#9!rIUL|Q&Akpe|HbN+nh>dIi}`H)TEdBk4oepJ^ZI3 zRM4OKNQan0fA*I`|MdX%`d}G>&_a4)QV51ksBJhOn=>CQak$Mb^KP=;x$eBX_jIq} z(z3ria5(4p{r%3D59fCdh7f}N49Q+%U8h462d)$_I4j~1hcJHpU=3@8XwYvx! zyXTUl9P_Y9ld3DoRAO0&WFVwHWE5uIVf58Q5mIUVp1!^~`j3IGZBivqm6>mzSLdWD zlECT=3I`dU0y~oFFsxYhVadjs)v^a~ofe9YL+vF^9*$Tdfh`bJcTC-Q@!5wamcpotu)pTTEi&|H zh1OOis_C-5x4S6RXY`_K!d@ZhzX>o*D-CL(zhBm&`0B9I6|XPD1;0K!vL>KgF6NphH%H-(&BCgGCAqWK^dvn338!*RYv z-tyV*Mc{zQnXG)xkOY z3qgPL)!dEj4E*rUHgDB5oMZ1+=6XLl)_lur8*h4>P6u}Vg=bAggFx7VD}ku8zCz=M zJ;uu~E1r1|wZYeVc0QzCv!-)Ow!Jr*ObkH~Az}Z&x$p1%3#G4>BVCt-PXGV_07*qo IM6N<$f?XSWF#rGn diff --git a/resources/images/system_settings.png b/resources/images/system_settings.png deleted file mode 100644 index 3c38e96b97246185c2474b4b9d7927bbf44ab21c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1288 zcmV+j1^4=iP)$1xslNYCb;=jR~y5($rUW&=b zWD+T{m#i#V_~C(~Geu!V69Kc?9B*DeGzfz&T1!Bjo`A%(#Q4NubwrFgW>IuIpzqS} z*C%Q>S|TlV`7OW{oRd`~s z>ADG+J)Y2ne>Eb^R&KM}D%yW;%Wg|=OA#?oFYYZqQF7GO+<##rkn>v3k(|3jd*G^c zZ|R!SFkR07|M?OE5;_P7pGj)>1>X?x&f$JXrcXNALig4?VjL?Su_Bf(%kP#OHCsg( zkRF_QJ!=Y3eXAzDreaOf=G=n$1=~dMpkjjvFkB|6lZ1ezKvGq{>_dR=lJ27JqPN?j z4(ctqRz)ILVy~>avP#5SVzpX#*0h>8nCF;1wwSAn_q=I;P9*jDjcYf>pIU(bmXJY! zVJkr$7(*DyyP=Dew1%q$R2-$`B@M5VNarlNtGSln&m@mItd1`nHYsfFYHe%%QKW2i znXc@*NQiHUU&!Y{qcKpb4*|w01XXZ7VW2UM3rMLv?MuM!JW4oRdz3`FC(+&Z6Ax3L zviDEw)t!p$XArSv*|Kf9zs}K~({9(kzkEWPS6WX-0D$!M1jLsTR13Wb18Kf3CS_mK z+XPg1QtTnShD168=yqY_CK8EwiB>NTT}NZL2VJ0LFJP`fCvNjFD2#J;a~#nc@*7f_a~8#dvwSB_-`ZI3UnV70N#m}xYqSHYPl+|SZK7w>5yrMcdXfVw1#xK=xvMB2ZnJE=|nBogr=#ru32 zO2B7tkdhbu6{!lMBS<~f_iI8+XbJ%<9E2f%Uu+E}<(|EVfT|ACd+vIcL@r*XKFxPe zkVw=Fiuq&54Fb$Rkx~n1&x~s(VA@=Q`W1h|{pIA55?2vMz_#u5L7=6WL|Q_qujqI< zi6qP+!^z6A1ei~gauCkE9$iGh)CPij_He?38#pL8jv_}CW|K%$9rZOH@*|NrBYiY% z>+1w$RMU_r;mi-2pm{h0@`bY(Tn{Wzo&K_FfW+JV07g zW)A^Xoum%v97BKzyKe{I@|~2diOM1%MN5^Z!^$acRLw#Ho^GO%Q2_HO!c*ii5ehvt z4`A+n&UH(3?vPu~Rbrg09tLOKuAPdgS!C+=TSx0oPPs`-eE~ME*=+;)Gy!a8IXq~F z2f(I2D?NY%?PN(TTo*alb-Q_5Tb0000