From d219a65e750da22c3993f05156095180f7686034 Mon Sep 17 00:00:00 2001 From: Janosch Braukmann Date: Sun, 10 Dec 2023 18:39:35 +0100 Subject: [PATCH] feat: Add proper tray icons for Windows dark mode (#2476) --- .../lib/tabs/preferences-appearance.tsx | 7 +- .../MenuItem-Inbox-Full-NewItems-dark.png | Bin 0 -> 937 bytes .../MenuItem-Inbox-Full-NewItems-dark@2x.png | Bin 0 -> 740 bytes .../MenuItem-Inbox-Full-UnreadItems-dark.png | Bin 0 -> 879 bytes ...enuItem-Inbox-Full-UnreadItems-dark@2x.png | Bin 0 -> 56633 bytes .../assets/win32/MenuItem-Inbox-Full-dark.png | Bin 0 -> 6100 bytes .../win32/MenuItem-Inbox-Full-dark@2x.png | Bin 0 -> 6375 bytes .../assets/win32/MenuItem-Inbox-Zero-dark.png | Bin 0 -> 6182 bytes .../win32/MenuItem-Inbox-Zero-dark@2x.png | Bin 0 -> 6436 bytes .../system-tray/lib/system-tray-icon-store.ts | 77 +++++++++++------- .../specs/system-tray-icon-store-spec.ts | 16 ++-- 11 files changed, 59 insertions(+), 41 deletions(-) create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark@2x.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-UnreadItems-dark.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-UnreadItems-dark@2x.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-dark.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-dark@2x.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark.png create mode 100644 app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark@2x.png diff --git a/app/internal_packages/preferences/lib/tabs/preferences-appearance.tsx b/app/internal_packages/preferences/lib/tabs/preferences-appearance.tsx index 231a1b33f..ce425121a 100644 --- a/app/internal_packages/preferences/lib/tabs/preferences-appearance.tsx +++ b/app/internal_packages/preferences/lib/tabs/preferences-appearance.tsx @@ -170,8 +170,6 @@ class AppearanceModeSwitch extends React.Component< } } -const { INBOX_ZERO_ICON, INBOX_FULL_ICON, INBOX_FULL_NEW_ICON, INBOX_FULL_UNREAD_ICON } = SystemTrayIconStore; - class TrayIconStylePicker extends React.Component<{ config: ConfigLike }> { kp = 'core.workspace.trayIconStyle'; @@ -180,11 +178,12 @@ class TrayIconStylePicker extends React.Component<{ config: ConfigLike }> { }; render() { + let systemTrayIconScore = new SystemTrayIconStore(); const val = this.props.config.get(this.kp) || 'blue'; const options = [ - ['blue', localized('Blue icon for new and unread messages'), localized('(The same blue tray icon is used whether you have new or old unread messages.)'), INBOX_FULL_UNREAD_ICON], - ['red', localized('Red icon for new and blue icon for unread messages'), localized('(A red tray icon is displayed for new messages and a blue icon for older unread messages.)'), INBOX_FULL_NEW_ICON], + ['blue', localized('Blue icon for new and unread messages'), localized('(The same blue tray icon is used whether you have new or old unread messages.)'), systemTrayIconScore.inboxFullUnreadIcon()], + ['red', localized('Red icon for new and blue icon for unread messages'), localized('(A red tray icon is displayed for new messages and a blue icon for older unread messages.)'), systemTrayIconScore.inboxFullNewIcon()], ]; return ( diff --git a/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark.png b/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c114e6dcefe1d256331a22395b4635b5aa7193 GIT binary patch literal 937 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=IjczVPIg?3GfMV{bt)ciiin;|NsBb=4DX@253@AkY6wZ zm%L*1#bX!37<(HfB-=Xp*7)c&G&dOrE$2}LvsaH_8+_8%ZT)h9X~OT9f4YAD2v$A)=s2^q)Z3>D z8-TVkCV9KNB**O2T?OQD7I;J!1EWv~gc;N4Ujiip_7YEDSN7-J!kl83`~?XUiXT55nV6cK4k;~4N?LU1k+=i0O+|=Td#M}Z*J*MUmOV;kM RUjx*`;OXk;vd$@?2>_xIiaP)R literal 0 HcmV?d00001 diff --git a/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark@2x.png b/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Full-NewItems-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ace4696d82f06620d95149e50a5aa2ec071b23dc GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jPK-BC>eK@{oCO|{#S9GM zLLkhTKK~L(%eMfZ5LXaw+dIjlxj+!DXJylooSEq@)NtS%hk(HmNKX!A>jFiwHb?stL{|4lRJ z7hKxz@9>N5@Rpj~w-4Iec1i#vK-1I3F{EP7+KG|DhYUno*RzXqc?nK&70_HE;^=x* zR-A>k{O|vIw@GT5>Ynm*KJIykEHBjDGM_j=iSi u!u-Mm(;1ExHvBnxZhP(jEX>4Tx04R}tkv&MmKpe$iTeW^vMA|{bAwzYti;6gwDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRU2TkN3Kf_zi}?w?B$suJ(HRz4iO8*4wgEYm2`!8hBz!MD&>2# z4$GXkI4hMJYu%H-FpyVQ(p;xGhB%gxKoSBZ)KEqRCL*+|q!>uie$2%`YWtJqlE_sC zBgX=&P$1fV@IUz7tx=esa*_fup!>zLKE?t6F3_x7*7vbxHBSKFGjOH0{nZ9A_epxa zt%Z+(p>5#ex~)ljz~v4w@}!BnXiGkt-a-L*KcjET0l{0Kf6eKwwU5&WAVXa(-v9@P zz(kR<*InM-+u7T{XIlOJ09K1~o5!1<+W-In24YJ`L;(K){{a7>y{D4^000SaNLh0L z02TcJ02TcK&2Uj+00007bV*G`2j>eD2@x2*jmR?q00C=BL_t(I%Z<}9YZPG+2H@w` zjnT`2n|~k(f(piKF2()~E3pb#iGLuSKR{6I#KziAv9P?tMeYgd96oeGQMnUk- z+*&wyek{?;z!dWh^SJ0br36EC*+`%Sx$7Rth6y&&y7dVgW$F$PmIo<|Hj#(DTE-vC7Hlp}A?_q+=I0FlS zOE|-1?=NH?qfPGi&;uNsOmMGj&MI_(8~g#i)%3{7)Z%?*bIf;!$bXeUfW?6Y0Rcgfk`(<09Em;}G$gQhaCg4}4&V;LQcBRk z;t6dS44lK*N~$}6fMC3Sv`=HU3VJ}$!%e@OfITy?vj3GB044fB zgae4M0vjhRv*CZHOiZu{k;d6TH}F2(P_!|2bkVan0ueH_(KjLzH?uc#v9Y&sAQDkz zv#Z--2W|=D|I=L~S2JS}*pL3NyDUIYU|HEXIN7<_**`o5y3NI`_u=Bl3|Rgd0e?3F z_y=PCXJBFi0PDvF|HWbdOTY|-Sb&0$1}yAG|BL`VAkGH7{`Ursf1?A?|L-^~$44lD zg_-kTMgQLLAB8L*mOrfhyN>f;MJykNfjHpbIV{&-HB3x;{{nxv^RXphV>e*>yJdjk zKa2k7oR#AvhipK7z!)(b0n^0?dn&WTfV&Vc`>oFMsGiC_PrarJ5zyi1c%)n?H16YC2j2^%kVDxu102lyW zWMwvD<^Yb&%m&OXfDeq5g@c)k+2C(dSb^bZ1sF4P0G};G;DZRvhXF8aEFTZlfB6Cc zTK%XW_6z`=K+A>z;7VoyP#FMt$Ny4c|5xb$AM#&{jEz5zE&u@B{eNNwOfd7unFhK6 z#8^Ih;40w31sDU-k9dA$^xp~#y!fBxBe5*N)Uy2zGbeC^dQAHNsL*HoyZoQCC9T~! z1_A>2&DLH;)iwQ8!z&y^6{CZtrf2We^JJQxKAIxm(sGz^de*A+3M!aF9tB2u#{cs# z+#ebMy}8Ex1XecvU0O*I;bwG^J=y^D8U36(m00#l1y435QEEWUd@4J;*_5PJ7jveA zfbm(|_2pUX{j|U+!Mc}C3dg+*|2fyex*KH$o<|aV+!lBd%zG?FD@R(c6mu%8MB0#P zO%t<}3dLB$n4wV(*P;yMmKQ5Fo>i+NL3)yyg2kDo^8!P9MmfuwU8$40)a%zd5=&9bOOr?;-3zxX&%i34NB(n5LNS6tW zt{Ief-=OH@W~av%1_vKx=Y9c0=|%GIR&NA4t@y`L#+K4PpLw*ad`^_E?s*w8jiPH6 z-klv9$W(-X4c;FwZ`{A|%dEF$Tq03aK3u;vlSls{l;A%N7pO%}#=d@H)M{jk$!%zG zY32fCw~fA)@57N2;xzXZpO1ng!*oF@m-%93_Fk-5xSp{?hz+NTE&_L!%)aM-rG{e`Bd)_Z zO~}M#m;aK3s$M+NLX>j3@|9Gt7p)=bDhib6?BPoZyL2u9C!4}Ym(c7EsdP@2mSAuK zQ?v~AFtmH=`xbk)sLX5zMv3)_D2QH+`-#+Q;B23KH%lEwl``6FR4Pg6!*H?UPq%A7 z+IF}X2il>Z0*6r%4zudlJt69-EFoSn{mMPnY8)p~`va(2J#X>K5x&Ev5X!ZBs*khU zQM*WdhGSm?G2gR^ODInKDd+VGX|Xvr`P5XTG|?RK)oQ`i>r4*|c>u?s1yy*d`jeZE z4=3pN3l&K+Uo0ej=V+A!)oaEX(p|b=1;FRaI z&x3+%`Do;VOPs7ixd+`LT07bopZDE5SN|Bqsy!>u59SSiNgeXnM0W46zJR*pO3~h?wXRvz|Hu&ZEqhp}q3Vt%Q?V>}o&7y7}iPKXV z6&I}Y*Y!X%Z{0e&H7{i&J0A#m#t52ZzmC2+cKsfkn7a2;U2)f}(UVDA7H#3k zi$#%!``8$K=i7!!zCeDXk#fDQZnTVaf=-D=w7~9@-tEX4S$YC(o%gdR9Of}2`P@J= z#58043(6KiX?JB-caf&XK7qh9WH0xM%|f8EDT!Da1*AFj?=P*T=<^3El7%GogKSTix=6i?M!fJOfvQ9Q zpW>bR%?)fmTccl*-W<097%Q`a&bYl_RNV;!e0mYLHEj-iNgK+Kqq5oguoMYTHzJl9 zVK~qMHG;QZu15^9su8E=7N~M)lWz%?lb6AG-%MIeyEg7cQ-7bCO{?UOJU!Pxd03|k z!v&7TUTE@kh+qSw$(lKe9!cd4)@%;uU&?clriwD1I7 zGmxD?4}UANwsE9;uDpsJ;CWqQud0I~9nAKdLV(`eDsn4V9?u!wQ3-F@Axu_K8^;WE zcRFY+?tw^G;+#8lU$H~${r9NBqcpg!ZN;pb!w+)^oCj8(Nq;u{O&cdAX=-TdgxmKS z0v#T}%m$LFu?tIbpAG^t2n+VcwxFQACvU+0RJoGx1BJK;v8!)=%Lxx`2QH^AqckedHe~p}gFR9zq{()Z%3R}4k{Cmg z901DbghqCh73%hsWNF&nZB+akwn!GdGCP`r%9<>1SDv-cqaGxyFLQi86VbFkg<6y> zVcrxDRCQ0FJHh2^Sv_@#q~BV&qdG<2N>V}xBkLycT&`Q7r4#vl?n)5m?lG#2p4tw1 zUT!>2IA--*$^*X*QC+uC!#mQmWp(^1b(+}ss@O>B1sS1>Zw|dPjSu!I*Xfe&)5pwFC}W+xekK4(59SCQOq{C-FuT!tjJZ4n&spV2gZJ z6an9pb8I-5D`TW~i}Pzcv_(nh2~#i=F<6Ag`=@ z?Qa#hpY7<#dfmZhA5j*Ac1FjCSU5Q!)RjAIZXD8cprGAOkvrHuF}8^MNs%Xl zr(RHr7r@5vKOH<=?htbCdW`>sfNN)GWxbhf_j(>r=4Q~Ww?sgB6Ao``;DOIIiI0}@ ztx@SE?w<(9X5puHLqb9l(ASs3>*WM&=wY2_jqd_>koC`yj_1pGf~#`3poPP$0uXyR z@9#(XQ3t{?6CfcWjlI8=!u3Afkp$`K;-zxNp8r-ZVIO{czCVADYh_r#)K7o?*~4_^ z0mY!@yVw+6Rw0|l&ZoF{Z`Q37`~wWI`1Gxa#+4{5UG)3wf^E904*4#N55?|2613Z; z{dWSE@59glRy-k+cVx35Qi;fy+$mGj)6;lrMeF#hR!&f^OF%T-{OtMWJJ@7^fOE$z zZO6LZ$y&>O6zVbk4?ippemQ9UlYmqw*y`a+GdG`NFoTtA-g@`E4rGH%sYts+$YA1! z7d0Pqld)MWMv8)P!ro+;RD+jOG=EP!ZemiRnGiI}a!$kOEjpd{7br3Ntwvjn0ip0F z6VCpzEI+mzk-@32RlJgFQA+6{3!%48fk?fL&xl@;up~QTi0V;>>w@7a6}I7;?Oz79 zpW}85klgs`VkzN!-Vkuvd9CIddmCNT4O&^?z1?Z07~XlLCJV$kjobMdZ-m2b`1$~6 zZo$#Am~n=$Y3{EYZSJ=!Xh<+oS4P_6;m`GU;p)dQk3;!nO^!4@>N0_YZH5r>b(%Ae zz=PbbI86Es-kV&VYM=#L&LKpJ4jg>POae zr}dNV8q?^qG%~0H^9?jy^S}=No{5-HAd3w1J?`;%GDqZK&JB2c-0BBaf`9DH#^Fhz z4(FENTdmaND;`*_HQ%}=W>Gr0A@A%>IHb4h{P4=I35$OsKN!mr@S%RfTaZ@BlnBrA z3NWC<^Gp9^ag*kSjd+6_mCCMOZ8+p2+lFi~jS~sDL?@;dOysJ$x_UtpxcHTp&Jf=V zd`*|MvJe)3S|5G`UV{VM|52gNW61#l;aak?P*MbbV)xQ?SrM;hFs6tkm2M}mVMclu zv&it8cf&!lZsiNjqoU3sLlj!F|K2JY9b8AMBc7Px>af+3_4~*g*_5@sl^SMLRCas$ zRe5esgPtH2Z#?hRIZ$Zl|-6p z`JFhfDa$FJXUlZ?Yg~=u;x+VLYY<=Ho!p{F{wt(})^pFVNX!Nysp zuF*>2Bq$QBx!ej@o?kk_sY7J3>Aji3vjh#d$qQ%@-xD9+lu#S{>k&dRrvYw8*IcXe z{R(NlLvK01{i5vGrCT*Sd*3?V9*sZV_p6Pm963yv%xex|p#+w!IZWz$dRqs=`-C)x zwO*$n_3Pc|KHUu#R0GSDi!5to#{IF$*vH+LNe0e&Yak4Sbq$s0Drx!p1}v7w)Qg8- zEVVd(Mr8hsSTS5wGuCs2PwQeaz6i(Wm4%dx>zcXA=#sNd3OVO&#Y+b>uLD?a>Rf$# zNC#V-;`g=p0>Kih6a3RH5!mGqhn8wgk1%G3$Vx6NEuuJGdud)4M^w6ifz0j4zOqxv z4F87%Z<>8+Ct=@SFw0&rO79s#hzndzpr_ufU~YeMG(TnBUYdEWv1pEhxOM==9t0Dq z)Jf;KXZ_x&bpGOGJ2kQ23}O;6?>9b!#Vvgl6+SiH+Tj&`r_ZjU;dgcM)>g|P^hdjU zpZ<@ylAo{#308rg;kqIMvr6PN8u=Hk+)#sBC%!KtMg7RX0siJ(D9bR&PawRGEkbuv zw-8z_WUq(tI2l5@ET)c-5#!lY4#L+m#k|@iM=%cxe?%R1B1Tt{G4MsW=Fe&wJ4VJw zgPZ@bK`KUcu^KZ)V9S_O@>Xz1_=c40%3OOWQO=+JB6cY@VDr}spk) z4%A=e1=W5=XnbYCeaI&*R;qO*iufEfot}q~X+#BwkR|PBR)6*5(cf?BQ$R}r^5}$6 z<5t+LI-=e=I6q`DtgNz2mI7*AgI|at1 ziN6(nUTPN0u!Jt;zCV{Lp4U&Pwuaax?6>9Uyr7SO(PrwfLuU8FikRMImM+%@S1$-M zPG*2YYUxZ5RL`>O>5W6-flc2(=5YAQ0X{mq1m9j8rcZHLD$)-5P2&kfusZ@L{}7UF z70236xW>)XZPaQeb-AQpHpkHl#cE$k18?Y4%!<_=e5!w*$-yBuZ;L-D?8=^CEMbE? z9tyvNtF3A4XabrJq}A3)2xCt-a*|#2+;_OKc(R_8)V^Cb+b9c)o)m0P{_F^K>kV>{ zshfDxCB$1Aox!DuI~vl|5QjRQP!Mqgf4a8Oh2o;QSX+_j%+hpBDMlCuvcZsnWM+B! zf@(|CE%+!nq9-OSweUI}W|B{`kS1YWQur3oU%i%~)5j(ahXXaHcC}d}u8`%@@kIs4 z&;>1c5ur$lKBJfdB#-fCxS{IC6^!tx2FdWi=4Ir+bVc)h5$!B4LV?W719<{8CD}BkJtj8i;_jsb?C_V`2o#k1 zqXA;d?yIx(d-#Rnsz-JU`P2{F@=nFMj}Uj6S2oN_FrT$WAtILPNCYc{B3-gva@jOF_sy;)lOrkbBu5wXR1O};z$RUC=iOnBTL zsDA>iFr1zEy@aqdN>47=Q}$sW!?EJ0bg3Q80%z4Z$D>^cUO1ddAQM@K2f?2dCh-pf zoV3_QAo<$q)aZvgP|ki~^&va-w&IcoxkPAs;GGhPq`ioApZStWsYEu32j^%{L~L0j zhjga=0%R4-o-6kc`-&1^71q>BM)Ig2D*m(;HBV>ilCEt^GG!s7Pa>Ae7b7Q@YIouN zVc|Odj6bU;>@qk>z@N}VAkmDQ(9xBb;E9lMo^#dQbcR%Zm!W7aFF zSUCDoQLhbw1nhJt= zCF#)C1gR~Q3^~WCz#$Jp8hV-(jD;rb5v`Om2Rdw)wV(6}5YjAl=4kWRC3u(CcqJhj z_@59RzgFv#X&84?xCmat;d-;1cs_*aK!S=$ES}5TlH>C3^(gJ;-q`wA2s`Raq|4`c zi9yN~i_2jBCOI}w$}})9W^zh1N2=}XA*LsQx1Pf+u9nc(hHhklnvT-LS}z9fS1AKq&0%YHbZN zI({7lMSBH)jNgp~xAPaCiKIoUN|tJbHRa_dfa0IL7z_9;fBYu_BO;!l(+1Y}=sIvi zjOe*5sC}|Qjit4!rN#m^ZC9)bF4>JvC~-f5B_CS&ohk3cMpfEUUCVkR@N# z)u_l2gvG4edFCZSWCR=N4)RYi(9c!NXC{xN z_V)K>wVqp$2!8VNtH(n>Z#)qHNW-?a)Y|W%(X&es^wo7d!)Y@jGDy!4!iS6G0;$JLHuVLOPNf^m~dRv42Kq zralo-Xjl0$`XUJHd>T#UN@jW#E-SV4buRaXh0T=YZN1Hc*lw3#Q9@WX}83_2;OPL;N=I%?a+4ZOV&R zQ(rm#KUET?hc^>Qr_8+!Z!Z|D_c-@|MsxN4!WPUqY_vHE$jb%{wIc2Px1=%O7k%7D`|`NANv?zKNvr@d^)xYw z$bUo_rrC{DJYo0S+jQr~Wp(|o=IyubQyN#lXp#5Up~1sW*)PVK?_R#>NAYIroKRCX zQ=_fbqOPIxtcvGJkehi#{xKR$L*H)G zcp}R37BtrlXA#el7t2Y$QC;?%6s$?wgVeW1DJy;1aPWYVg`Lz^`Nlu+0$=Flhtgn4 zo?n&UGjE1Qzek#`K@;FM;L&FFA2XVV(QLnm)TwfD95)XoDtLdsLjI&2d1rA{rUq&Y zIsTJB9yxCk@kNna{6lWHj?j2Yn&r|zkkdYL2el1r9O%;jG$YnFW~c9hqbmC<#saPp zyB>P9>j-&fvDQ!uH$k2Tr>^+Enm(bM?%UfF~AeQ!-CAK?&a zPi8>bNh+@MT6C%v#8{?Gnzih7m#)nkn@Qj@eumpj2v3ATM+S|hI*pw0x0FqPsJ+?& zdch%vW@|R1NVUeVokV4Jq(e?W$MZ6~87~!asS9!JBkW^#+RESfE~OC7en68CeCzhw z1T+2W zUet_XxjRHL&#KiyjY=|df|h)NAJ}wYIK&2(|8^$QjU6RCjbM%$TS8u^2W4(A`_@HQ zz!B(wwmqmgjMuhTG1N#hLGp*L{tMHu1-QE%6TaCuq}rJs`^fr3n6kFFgs2}=s0CHm zE}NcwH&v{1-IvL~>i?)-2opZSwm1e@5Iif-2{_g}7Kn_z70klUrR1az+@$dN5U`3K zE7Wp%+ccfpjW|h~ctc3Z)V}M@cTISK)b)Aq#~C8D_|BT7Rtrnp1`}JOVed7mv5!Qx zN*R8B9L?C2Nm1M-eJ3Qkgq!V<_?E0d_7*6;gLh_!&^(ffcaP|J1-5jCU9WUo> z**@{D!ANcWHOiCw;fXYpV}hG1;D#_G2XnazHjp6=I0L$3gw;IUTJqr>3A{G@b@|8I zk$=_#rEXa6DWff+8MMv}J>$yz+I`~~JeYb1%qcE^{R+$|`A0h5Gd^Onu8gN`=ZGCy z&U{W2SC zQDw@vj#hIWrFN0Mki=V2BPnH+^m7(J^9Q_B5!0~|=l><^{c}<*+#-j5@7xBYue3hM;zDO~o_)0^7l*0L z1MI$;cuYj+NcF)BcNXb%*T;{CFT4JHXJb&A(9|Gg=nd8?YPpYNnbpMe_S1>%ebgW* ziAFV)7B|HEHp`lxfT6(8oX_WY%LflS1GU>izijfWTY`vcqINNJz&rB7zdH-J6OMO( zMWbidWGuWW{?trmkd$mEvlE-x8$-Xy9T~1YSdkZeVi|zf#9%BxRFXW}fjD8Gr0Ywq z8z^a@Gy4mL*j+?%^OIZrBK!%Vowz{AQ2);d2vU|*>{!>bhhXq%Qlqt`xA2x2INgV}> zui7*Q-9dW4m&&4&6Yw3-FQgr+`;dyqz0Oga&0CH0@FC)7y)*Ds5&~SIeD;oUxikf& z!+G-SyzNxp<|#L*i*Nt9#Ap(>d)MAhplZC=P^|kUqeDmu3-T)}cTmEjSD!s7g@|Uh zoQh8dZ%9OL6{Dn>o@C@4Ee~-rm}BwDDR&IOvQD4hiH3;XWe|u(N1yAh!Z~}F;vqJ_Z%Cl=;0TT?lTod~87n7}toH1$Ira1{!F zG6mnIPoPYx(jR={tggPceVY9qKG5I$l;^dsiPxDRuzez4oFW$gL#ll>Ssa@oo_%b~ z|9JpsjC_COK|PABTC)SD*b`&aizS85JE;m3?9Q!M#CbCfTHuBMks?gR8f*vu5;u}R zpL@U|C+wHix+W;~?Bw zRW0OIgd(cpn4mEDIwA+v?!-LlZ9^+f74D5ccK1 zr7#}LayaGT-VLDirk8ATRQK-4%FH2Nc6_t`wIH{7UmYIMra_{NZ)HP8at5kk=q0Uh zpV&6B@p{hi6Wa0GUT8Ooqpp-p-k^r7`mYQ+zzh!>?SSGBDwZHp9OLfmF*ob_}cijgP!Xs!L>{C@>Edp?z(;B zh*x;yS98H#)6fFbIvTSJ4{8dx>>W@+>6P$|D7$;M*W{RjDpA-7v(_GdW~0KL$dv>e zSu#T*=h+Js&1ttKvpl^qI9ObLVqo_w|S#5-6ySHSTgiJeX12fau-Cr>d~FeN589b`SJP zgQ3sO@yPC7%7cQJXZq(n_HI?pi~SAogL#YIL@V~QoVnAiBF>D0%_jeLk>~W&SGRqW z@59*jX_@z4MODf{Q*_pst6>JeM}mY);Bz03<`hGQD@>vfJgVohfB7goBKY%eM7K>( zMw2O*vA#G|u(ocLbfv}KS-E74slr%T%+k@VtJ{k&4Dj=}fBU7sJyt=d357PGx}l_{ zWp_y!7It0Xw%R+qLdNihBi~L@;SD=at-=)0kbv#w!P?MCg3k~o)F7;`XNi!DNY}8& z77qNc=Tq7ScZ+-<78N)t+>5mwoB69s#PW%JkIs@Zo@@6x-7#^?UWD$)e0@jWY$5B$ zWOin$*tZJB@Ft9yC;$B{4V2=YcLMyDl$0Xg(|6LN?uK}yYoNt4(>Kr!D+Ywoa9;S< zD#h+t&rot>iqzf5(ZOnUt!62fgsn!$j4K_w)QH}W6OKg1<@%ITUsn$flo%?KxXSxL z2g=fh)kI4T+?s`2=M4^Qz69eYiCOX1ojc2-`YKA$yaq3{>ZeHN`EpkFhAlzbiU*FH zjj0AW>Ekr9`K{Ew8IWRDQ}24A>)MBguUl@1Kd?^idDbAmo5@S zPk2kKys8*X-1Ww+;V)@6irH1{(jE=1O&-=gVBwnt7_*vRn$|`*xUg`G4BE)7oBNeY z9h98Oo~_jDBJFF%W9L#vNX^%gv_elmoX>tDeiE44=;}JOUO&63*e7_I*~;25=y1eu zcsLazy2MWfa|63KXrEIiI`!!!2*1oufY*JtNuNQYLbZd?Ou3CTYu7zOYB`8&I%_~0 zFE6q!-=8o2)6hbxdL6jI&ldnI_$h6``!CV6KDX+-ogC_%#a{1|_sgN5(RML+qXz|l z)}lsV5_e)z+{Bj6X72T_NLEwgiOG+b|#?U_(>)4q;5CU7c5v{Gz8-P3eTh4r!od;AqvL>_pE<_Cf6Q2%*Js(01?+ zzh)a1&c|`7J*@^;!1ohr?)iN-w7~k94#H+~!5QJT{q76+0vI1wh9Iptr8aU1M;%|P z8?N@9iUaZcg}p7uc}8Rm{67mGbd5sNt`vjE#`MartOXi1qvuXep)=sn=YXs zZ+ypM+fCq4e5=DK@wUXA-h;Y2D)!mv@b9kEF~E4=i(G#8At4g51YSkI;%)7D+b)A! z`UnPR>g`3Q^IISDV5&K)Pq|2f;vb;P@tkljCf6(=z8&%09J`8!I`Qg*FO#E+8@wfa z`7(XS=;3&>M?L4mnm5vwqNe36MULc=Wcz7MfT!+!|Kh;>`+f0+nqH-F5-gR6D{qn9 zSRtt7>*&-{9iCqj1tUET(ge5b>Y*>4HLGhtA31yP1NqBsl~mox0BrY z{_FZ+8t~Qj?a;Hc9bWDs@s8_#+l2u}|NRF3w~PCHzQvPYE(^{fVlBYQ`gsx}BR#eg zlG00MGv^(_e>w2o>esCZY`1f^Wmmn=w}Dc{ZkaHxA`y~YNG?UbWzAeEO+^d8`0V~S zsVta#Hpyn63!KBt0n$}l09nSd1FaW?aw_snxw<`jZc+2> z)g;Z+G2u(Q{g(Cy*5X!80Q{)@>|Th;d5GvWV#hv`L-h5;a}=r10W$zsc|H=e<0#3a zNJL2mhmxb70IBFPn)q2N)6Z{HmB5!-?hes8UTz=R0I-fy?)VCIY&*@DTn5u+g`_jL z*;hdAagj$j`np#L2e(U+G@naw^@~sgSOb3S&ZWKUF!%h|BCI#u=A1z5iPa}dij`3* zOmqFGfk9h&L?nD0>&5vnm66gqjkn1rqK56Fo>uyz5s;Ovkv{i4`>JpF)CP5t@$Gq} z`AN2U>}Q_kST$ChSxrnUd&vOIGgA8M-aj#{mX?8IbP%}OArZ&ol~an9c4_dqBXr@B zdMvK}@RvtV?lIJ^wp|CMo=t zAIJ)sy0ugRE@s^_ng1Q9u>Mg7!qrAnl}1lZn1u#TA%@_9 z8WOjh!699-0JFIC_1hg_Ic!PI3}LwE`F^??Jl_Q-tsxIr0Ri?jL^nAw#!ZfGP>t)0 zTs)Os1Wn}B{4Eti4$faHb5GQiQt%LrJlitT>zmi71qLYrZa;C8$^Vdz>5b$i8GxMmI9uJD#dsCw4tz?+Lmy*`BFYbPefuCiX9ozIz3dmxh1IOJc*C zPlR9Cn74b3Cv73v(Yxfs(*VtPY5fFs$$jUE-=?O2uxj9aafoGiP0XQV^<+ROSQ>`f zM?*9YG8S1vqY(RtyrjMfN%?h7s>@ygKUOdT##)BqhGOPrWG1&}xi3^jC9dNTZri`5 z67p5VzhZVbi+!<2k@O*1b0DZ23O(11F<;RN);9O6mn71Y-7Gw<3rN@G>9)D@47TO$ z0Fmu?4bcKTdjaC-tHp35890Nab*aI5PR%mFZ*BMM@7TE@hZ~)*mXT!e(b@(e*l1D> zqN3_1SWRZTQRXpanzKWJw!ai8fmKRN^L~4 zN4t^%lr0B;sG$B4Ev`$W$RLKr_l?HP=_y?YV9UvS zciN!HvT|Ipr}7n70qJX|70kavuRQ#P1j`?oS1Uh_z%TChe0yG_`o7;ivuW z`=>^8G7^iY$GIh9!BYGUI#Xf3P-9g~gg`gM1AOwm;z17wJQI$$$KaAh3Q}1p%1K)m zNJEFQmL|X2pIdxP})0=SKF6?(~KW{HgFE7t3+j%}1tb zkq#Xze&KQ3toBsiU!cvHzT_tTo?~6yNPE4Wg?F#6SP5kXi;SXNTZiMVvss_o)q22NT_M4=fW?xjbM5002Rid{ z1hxo~3DXgUxpe-aY94!G`f6epgXdC;R{*{hJjrNY1QBIf!~%;i&D?vW=AY??CRISR zhYA?vRveqwT4a|nDakQ(W}imdgSR+onC+Ng{UJEef4?M$ZDV+7K_l7t>r^XQ=2^2R z&;?GFRJ;R zSs9wyho-ba$X_J0Y^Wmi@k%()>`?b2nQfsH8HfBx~9?3c3)rjD=GP< zkt>0|ZU&$-KAet(KxAFSYjVBsiSZ8J)ZJd0roFD(K@TF^h`?g7kA_L%(|Q@RxBrTV zr$>|(<;IuMGhBp7GryRk3(X;1PUE~(Bt^aJ3YZDUw5TiN^1+r)mI-?>e$-?thwVH& z-|780tsi-&T8@ZdcBFV2i$(m{{99GkP_0{E7#zXNm6&kY(z?{5z8y4zILs%Q7t_wg zlGqr1a}_;6)2`LKS`Pvy&A89Wx}RCq_!v*RU#3A<+Nf(z{k>P<*wJ$~{XLmIu^v3EfWHac z+801v%|^=0wlVWME*z~>>pzOcoC&;;4lKp+qV?5(=tx@UG5>IUy#r9@l2f#<1q?a;VOFn)6N6vX)c0^Uxz zrC6}(5yW>9KwyfwY!s~h@<`iw&UQAF)Dfw0g{qJFLUH&KeCXVC$X!b^ls_;((1+>% znn~7vk!inOll)Nn#gn}E-apJ{kg&CPT?z+dJ5EsPw*iAap5oU^1ByjE@fZ2j385nx!$* z@i1_a@vrYy^Qug~hlPZQ0u^9xJtr~J;riq*j_jv!X<)0l5+MEc4BvmHdk`IDWMYs@DR>M^F^H<@`KM5oK z)EiFq;WMO>iiarJl{P=*wb!cM@fFd8TfQgDRy7oJ+?uxBVmiy7lr0!3-C*AK6=w@g zkBig8o8Hvx_4&PT|9t!)2@iXsRqX4jW60vvAHwqD=gj{+^^RHr+{$Z={GB<45%~~9 z+qx-xzH6w!9cAU&)`w(~1*FYV%=b#lH@fqc55WbbjbG&Uf+n;U6IE~M+@4Eijh^fU z&qr)l*^N|Pnenz0Q5TWCWvO{2IMkGtE>E1k5$n4lV8Uwiu=I< z$KdeOI2^HBl!r1$)Gw$4busq8i5I9axz>-5Hqf$mqdy1B+tZP+LhN}^}A<+ zXclB)q&d{@1&IAN^SNtS`M-e=i}ZtKhcKM65chtTu(|f62_U_i1Xyk zn#Oxxs66`)n5>4mQzkz4efMvw`Il=%`>yu?<`|8s8GAkd!!J_3JD)fimaY6S|=siyBV~%QU|=1Z;>+SGyY6gcTm>} zI~f=41H6nUvY-&A+|jKfH#Dt1R_*bpQ*?w-(N2AmoeW#eyfLGnWE53QVGsemRwTK+ zm?OrIF&rVIBw0;p>C_IPp1bbfHCk}>*Itp&pJEnJ4@?e;vjgu%(*9CuPAraXA4D2$ zAVcS*K+NeY`29oE2e2?csq#VpslsRYl}ZeA`<-l zFDqR8 z%Umm^AM{^n4cNGf=~XE6dH7#Xx+Xseyh$I&!0)C9G+51+A2SS*B)vnLe`vojCdVZp zo%i8&&p&H{Jf+^D5s=OUl9WyGJgWcFe*PIFhU>~7eqlR*kbOWY7ZML+7Leit(vwD< zAB-Yr^Y$SxUfUB;VGZp#L(kHO@g)osM$Q&EiJZ5fU1~ADM&*G;t~8{9P6qn1zzKAX zrB!ai0*kUz2Pf*DO@-Z)n@jf_wL8Nph%{Dm257>PdB91;XncLI`qWPrbKEKR9HD0v ze45`@a!vL0>sZ$m_On^C&;7Bjs)b(8dZ*7}^AGsP>uBX3Tiz0Pavf8>FDuE&REb^2 zUtX_%dnr63CQxe3qa~0li@DOu)n17%^i4!zdj8&Ws1!kgh7F6@WWdb)N z03m@JYpjZwF*@Y|$1iJiScrmsrdYDrf>JJ$+t@bvyJN54hHc!P;1a)DAB>+JkMUvZ zr_I9~Vrx*eR~*({t^%QX_Z@Ia0HVrHL*rR-ZGQL}U#OPs32nIx#UCX!$1&gY&$nF^ zo;UP=v@^Y%7=~zDk`fLWuJ072WZDQIYdNw5%-g7Qf5^d{T9}K8X4PRnQ0Ii9l|e|h zTwr>&VLt}5Kf(xO0?GqY4`TwE_q%cxOk%hSZCg7&q1P-Ely~_EX|C8JMVWWjo*}Fr z2eKl073*x>TgeO5#=Rq)-S{rINBNMddSyqDQ#{kw@|k09n9ihM&OudjtO=071)B~L z*#1F(37c>XdX0XC4%BFMFwNTW!Ji3*3TaOmJ|p-!${(xakNOhJ?7jr^=*u<7&1MP@M*r7)+l4e;x@{lY?^+A5J1=OW#)~P6aP^TMSSW7ztI8$tw*}=+W0BqsuktGa?WAPK3L5$6B^P&eA>sBQJI2MwCTAHNx;M;l zIwr*X6g9+iKfY1(r*pGOpS1h(_wkvxBAJcpOE-6|+T{nf>-5L)evdvrKR(W#)JTMW zwb;xegX)!Q1aALv{5m_fWp=pQv1XU$0&^RsmZEdA69H4z-5sy1C`gdQDP2d7juV%Q zwbBapEyntkI-HeIotH&6yF}ZBg;mXqr!N&Pv}*SGs%weP=iP4;tP@p)cQ8qJ-VvS8 zb>|uPX|wyoVCB4C_UY|`o#BO|A<2ER8J0$jA?xH~r+I}p{k;2PX~I7W@~%dA0YXM`54 zNx&CA6Ta9%>sN}rD`lqpF~jNy?S5GJ#RC+ir5`pVFBi|dX>=M*2;nZhHk?oKM|cwf z459UIQBx{)F1U>XGm+Wfv&`VV#A@Q6g~n9SBIdz-R-0YE4O)9OBKj1*aeLMt*4YeJ z;LgyU9}ulg&C6V)k;iqMIf8cYyX89JX>6G|6rLT`}uH6t4v58 zf^C?g6Hn>pCDpN4E$+Z*f%Nhwu|n!IirlOA;hWxThzUw9nZWgV$N_~3=3op2_H0W#`_t=)4Bp7e%90xUG0Kou7Em6}PkghYa zg>P|Dda}Q{s_+fs9ahYEB%~U^8HsvDO}8-q@&;oxBo{JNuG;;yc&`!PH}Ld5u6%>+ z&(4Ws1Sd$-8tLccSRHdkflZY27Tj&$+QbSSuy%we*j66}`Ui%~lh)LW=mV)WdGW_* z-8Cym3p)hcVvYd-!9H^}3ZbSLGT|j#{qp&U)tV?_skj$ovlI3CLbfGu6bS;INuikM zYVe~riJzn917(A|N31LCt*2ZG?_%aFQBoZpskj8`9Uno2VV&1&`U8H|`Y%WuDw?~H zd4r1Xny)SGp-vX4$KF}?Z&u5&#MJ8!;@9k)Jya*}zAss?eVNlw?4)B|32=uNP3Q+x z#RIRDrzsaFl5iR((F5aGBU8tzG3SAN*TyFT#d8XBW-=0OKc0hgucVH7_ENIksQ(}4 z-UBMC=Gzw}sGuN0Bq&Km1tbYb4oy%%a*&)vvgDj;5J{3nKvE+Df|5aU2BFDKZgLZC zaub?v=s0}$-v7Nb^VYoe-prddb5^ZBXVs}wUA1f1uG;mhy~}alJ$MyeIAFxCQs3O~ zBb5A8kn>ihNaEjeW1T0@xjP5j48KthQ{P|78)G?%E>NvdmhKKrM z(~6(C^^=N9z51F!$DwCG1| z3YR(U7+#Z7lb*Y)Mh?is$z`$x-)7kxE4S>UYsC_!YnJ_?&sEG@3AHG}8Rcam`TI&# z^tMhK!Jh_bYIn1~)Ys(e{!K;rOqs@v+^)T5wnX@>UoaJ_92H#0^twY^_^;8+J%$|M z`&Y%u#4Fsy!QuPqZ(>Rr6-+;KjCs|l@%trJXj99J=c1?2j|a4GYMkW1Z zaq!xGI`$@JbINZRSnDKyhgb(Q(RN;Ps3Y4rTzUEOdz@zPD(iTD&8oL~owM7h)%0Q* z%ntb`XPZNh^(1+zzHo5>M47sZ(i+^888&H~nqQ6~uWa9dO#oG4g8Y>pOs26enL6af zQ{OHZZj4QDz@*PJ#7>jN9~K0;h^%{bx-rFTP0dNmOjXR_0e-k z1ig4_3jK8aNNuz0{|forX3s$flB3@eW(*&!|AYMPf3yEL3Q3RZ=?o#GX?9$e|vhj-iALwuN{|@vQ zhx>mA`dj`7`g6ig9OnJ+pua6|$`!MuRx{MqmQ7dTb)lFi!7uJ5e1UN(foFa`eM;!g zB)`@74jNuoc&%_CoG2F8e1-f4ULk+&WBsYGbA{HNTn_a9HaEv;WoYBW3nrxOgS{3D zzlSK*A&_aeX->Z9b9!NIINg1`gYUXF%OWOwm5g3y-TQ2qz5Gkl-Egc-PwdBL?Opn2 z5<)Y{oYco~-It-gOQ&)LgWpZWlb6fk3~u<#mn)N`PL46FETIpdO|#k#AO}1%f<^PS z<-9C0=+kS|$4?B*VLHDfW7qT(oojrRjebsqb6H~R5%$L+ha_d9Btbwg$RIw^Vveb; z0624uM;gC0(EUInMA%_0&>dF3POkGP-nURjBDUKx&F8F^Z2kI;O0PIoW{ zJ7yq>>ed@Bw<*8z{+frAYp-GYQ-^w@`$%7uPxjF0xPx8(eg6CM-*wnMlQ_;rEnoc* zrbNHFSu&YI_WsnUXcHx}81?(NKu5$kiYU*W+duq*nodecRXx9W*sk+k=2z*A{L7kQunI}1{4vUv5+-lw!FN2_#%l9sasJMU!s4HU-WF+1><;!X^!8h zWc_bUy`T2IDL}EYuKcjDx=-;ZV`n2G9G8Z-_R~0i#Yv2ZG{*^f=Z#(#^~PCm;LlxtGMl!^7j`xUj$8ak!@6iu z{F_y-Y9y?T-H}*ztj@_fcj-#=fWv+Z&yA4#G*?gVcuz+?r)0>OJ1&0it$WGgh z?uzf)WxHR>>{Krf6HDs!I>|HLupuF6vBSssZtOMZ$sd7#?-Ctl2Ogh38nfzrBDaUD z{sWBo6fw+=tLsb^ zhSP9)Sdoi7bKx10+Ec}C3b%EAS=|ZFgz{JFbv-?D9dkDN+w}=ww~Xboo|8SzL-mTb zjDy@BqphSIZ)b%_J*^3-f7-qzJ(9g2@0W7!FqeaA)sIF?&vj_>xfz3z_fn0mia1LD z1V2H)&gwWS5h*A-%5wE6B0$Vo8yx_hE-z5V?aN?+9j=PA%9{Wqp@S@2D`L|_^h3Ik zdw!!0!@muGES%k6Xd*Hw=1t<$h^qGTs$m2`Kk*(AMM(AE$m_V5d?894GGPdR-+{@? z3L(1)ep8B6Y|^oUoDSDa$}^zr0Y3RbDZ`;vjmJQkDsO@A4_P7MIpJ`T%t;V5ra)h) zmqp?tg@kpwlg`Ht4dnFkPC5NbyaYZv<2lE!5bH$>%54dd7IqnA_-8+X^Ap~%sIIsX z*+#<);WkH>#x1-w+-AUY;~o6BSV;bbD4HiFBMRtp^3aXjZ5XsLNGuX5I1?NUH=pAT zQ-zJUzDt=jd9|!r4Ts_vusu1Ry_tI%HZxHz#aIdW>7)b;1PxaSI)A>X087whWdNLk zGFs3L8cxm~3UZyuuK(ze|JExlwPfi3mtSczTb!|3$?qk8TrEVBkQ)4#5HgJaUnGR) z)}5o?-i^_t@S>;iqGR@=`{$vyJ(8;F$3x<$oA5~GTpjGbmg~5|=f|)APl0pNiw)k1 z(1A;hGz6f#T6NGKmQWuyuuskpFyw#*&ySwz@M9XOleGdrrv`S$`XcIVGs5a^{42+> zat**)i7rCYk#*yKh>_HO!FF(d7NE__!th69Q&M=Mm#24M4E%@(jjUH-FZ81z5R5dX)n3kATf%Zg^XH$SgDC6e|1 z7kR^e{f}kv-%oWV;}_-B3~gAty?Q9!Z!kWTyg`%f-g>P;O;K5ysmjLX_7qE`fx*Vi zo%Or7BQ@6l>L<}C7Aa~es%R7{TQ{L6e1yPD{mH=yIU!`oS`*v392)^7RINPb;6r%< z^cyW2sH7d^FjtpG8(_Vr8;H5`NMH%DQ{6|_50mEVx9=BmPkaC1@zPM*xY)kDJ7Etf zI1WAMI2Ur@n#-F3=#;duS7wIH1E0*b7Xm@*XD`ggvdk*qGqjkVzLvF#~1+9ez;C@2DB2}yf91D_gy@&!Opq%FFKw> zbVlF3Fq7Nr=vor(4t6!4004wtCY?@F(FAu0$w=*CJmE6_@@|p?))QZV@b~zMZFWX; z3gtI3gzW$f&4|7(_|}wMe`1SMy+Nx(ied8ram1uT><)slzcB#=e=>%5s@Ic7SEIfW zEwUWr+y044aH^k*bpg5<*>XaV5OuE(*bypxZqvELI(!DemtL}euE~joWTJe2%F}5-inSJe3 zV3GT~E?v(mro+Ky{}dRgdvaeFDIgCn(AIujdLJl19n_u@&>QkkX|}_VG8Jc6Pg-7r zKvo6p#=>zKAt*jbDuMuEl_w5qkLHsiyM6-0-~FJN04fo2f9?V)2+Lp;f|VVS?8hnb z-{-FX_N{I?%x{0OHE(>>i-d#*`d{o^5cuCF{-2MzV(0v%G&Wx9X!bY;uLm@L;w9-Q zHeRv~TJ7%1L)#o*D?lIwlj`^H9owAg?odudfwHoC-acocz7h4W+Zq6eIp5!gLkfVQ z8`9`s@C~1m3KIJZbPrK)_wo}#G?YldZ%>!%{M&1h(96?p7)0>OeGWHkR5?3{FTcdbVp!JYnc$$OX&`dUD1~W z(9_en_7-OQaw|1v=y}lIH)k#(9aVN@FfIx5iwK5QTXzw{k8Vk0eYET+Pr0VE#2M)# z{1AX!${uJp1Mk3TdhnTB^b4R$*5g4b!9l|te?o;R`!3f ziL@j-YXvxV>d_3B=ATGUS~hVQ+!4V9x7nO7G9{sw*Q6 zH^js8fyQ#jXXC$4ISnm>n{eirzf~2t=j0fyO8LC~PH-U&`FL7-*%T zEBPJ>^@gGp)y25yv3CDUKy|2r19KI2xo5iI3y`m1ZkM;dX!{@lMnM6*^6=qRDFS`IjTBlC(9w!2~}4A z**95RL~`{4J$<*On8FAWBtC3XUwV?IqR!kxqPZxuiK2K=2#KnOMP`UYo3SHRrU z70h`y_MT{!9`sA(g?7cUp1nVm^Ja=AMOpPgQ!A?4(N?V*GXjF&J96&GM}G=A%0iAR z{tyN2B3}c~BxAr%^``-+!*-)ne$arCL1c53A=_*8mNDGxOVqJs<BA+j- z=tN=r;0vv1Hj+)RzhM1rP}P=Tmh}sle`+!CYjh8j-2R8vaDbuW0G8i$&2n_=Qs_eZ zkhn7p5w(NM43$eeDoG9M=O+y!5uvKa;Tc&+(13g8BIWxsrw+lgir|zq*eAz>1M6KN z+?DqBhIB2m=R5N|zl zbbw$({vx`pS`w@O0xgNqx_{4m^*u2nSwKE!y}&ng_ku6WS&UG=>`sgTt(T7%IJTON znTE=q3u_1USA@QjAh=-uy(Z`yz&!GdkV3S#{R1h*^2VgOslf;kL0{ZvaInd{z6PAQU2`UGK7&KZV~a-%EvE z$fO_ZFWD+M_tTMK9V!}jIM}>FrlWfaJV>DqcYm_!WJs~9`hunue!*jnjrMU5H4b~@ z_%zV!N>5GaS2@H-H-ax2Yx*WDn`utVkqvyCpQvPehKXE!VM3dR0g_7N`cBr6VZ_#C zXq%|$Lt3{?Zwm=SsYJIu7*9z5WWHy9cBjAn@-|t(#I8BE0uxxhPor9fXc)zGCBrO< zuv&nl%sD^Y9X8cLzUUDk*=ku;KLyPoR6}6zfN0|2(Ix-`)-l>`m%D5>Td+PGA0V=0 zi@3V{?Qwwhs|_yW+SbMc#QgeX#$V@M-m9jX5&MfCGRbt8H3j3s^^SE?o<>#~stw`t z+2+<)>6^86nhenF_X-$A|1}o21H0iniwM2u&rO}?n;eKv=zRB0e|w;g#a$OGNs_rQ zDP`pTvZVWF?}A&a>y{`iNR!v^-q$(sEJ?1u{*I~B{c$+caacts4cKERI75`>Wb*56 zH;qlIo$^h8!+~*vrB$2rZ|zpv)$L|uc12Vh*Kc%S^8T0dU9z;l?_tBff6fossJy6> z>aRRobwOUqP23KCG8YZ=y5v>1J()EnZFto`d06a~{kv*7NM98%P{`*;%|okUL5p>& z(4D5|E?ItNHD6fQWmSDped4t!=XOUfC{*L@^uoWt+#VOdWP$(cJ@_gA1!+S8m{Tq} z_awx4uNkuqdV0|{C;Tx@#^{ax3+MgS@JMcz$FED}h95}qm z>p#T|b@QZU#NTG^OxK+q}Nr0^L%Sbd+eve$}u zVwPkcZaq?Mw>wwWRD4p$m!CIxf@~QLuv{QY{6`~Sw0+xWv4kwUa4a0YPV`Id8Mh_>dDzXzK-TDT-TB{{ASZ)LHKJ6ydDY~Uh4wH z-3a;#;j(TbzW1OAe;H)BP1{{%^$P=fD@H5=c_y|}Y%^h9T8?5p8UWJ8Y_lU(_#tI5 zO+(93z`_s(unJc&vM&#q*6@dHODi@K&ca?vHw}(km%Fp^g-jCsh<$Pg)n{FM%iiDW zbJ1R7>7AqXmh$q%5xdDS7QT)P9Ax``sAhZg`NrD$a}=>n7)SVLih307if{U4AJK%Y zx=ePIj;?~Xo-}^S2fa0hqWMKfbT$Fy9ciSNS)JD{q_Db?7to{dG4q-t7abxc*7(x- zK-HEpe1Lb8lKqc>EQluHN4p?CMbv9FEQ59v1myPr<#!zL*r@h%h5P;VN&odzo;vTk z)?Q+Bl~^)Dc@V15NV{ZP{|C}h#TZ+9X@pq|+8AJ@XtTW%VhT%{$p#z&W0Fb~ zY#FCsReeW9OKcIdT*|Hp1=2M|Y1&@gD9j#(Zixd`mY?e5d79>T`$pDRZyFI`_QNQ% zH*AIbA789sIT1EMyYH3uA{48i@qF$lrYOi?;Dyq8R%;4b!5goSRR%a9lt|u2pn-ka zmCfx#TmUQ0pF-qtKnG&7d1wp~O?!^^sR=&Ph4bE1-Pzt*==l{EVg`*K7cH;Pc9-aX zPhj@M8lQEI2RLl|q7comx&k1VFmrGRR3-`?T}yoH3iy}Q{MR7&k3MmXUZ)S4T)-mJ zdcqlq6{wDS@D$9M{;h{5D(IuUpU2NWn6rgf{DH<)l>iMH`1?tXsiF^0 zejZeJ+4gpFp%!-KoA@E`J&r3+147PcV=x?av2&~|b+MY*YnO86ZpJ%%r-LGX*2So# z3ZmqEb>{YN!Fvx7ply-0&IPzS@)C0agVh$IfNt$EczgiGj6AZB=76i}TiDN~5hmz) z(<|wU1D&Np9T{0-1<@xT7nGHIR5%lsOS+ib=@K6nj!8VKoegc!`W%Dcmb|C@hM7=R zSmD7}W^N3^d>BO~c3i|5W^esOAoQ}&@!s4hbjOhe99YQ>|LmLh#<#6~cX0S;ukGt>w61@R02l zzsO<2o&>3za025_ww@(S*EpZk2+k^kHKOp^ba|{yV_e@REe&R>Oa(xYgnR^9t>M`^CSjxJ#1M zDhB_DRe3e{)ZBoxBPz8a(`xpmKvB@_UTiVto$n;6m`fj)7@PkLfv-D(M8XmRoWe~zE%OZ}qm!$!74Hc-czgqF6({4pYlEv8sBDtr)lFYsum%&iyoKh{`uz4 zX4bQ{HW2mke1eelC6Iu-go>Z*5CvMkP^U_XyaT}B5C-pNLkX_TNSE;^fF_1TvTat> z!Irhi=|%O<7DRYU3D`iL=F`B4Hr)b?t;u&v$HAo%>|v>Y?ZbK@+vcEs|Uny&KFV%+{(LWB6T>MGn89|Xq;5AEgr2Q33%v4COe zsx{D3;+cmK!t`_n!(p-K(kgyl75H&v=kPrR;SmXCwXpQMDw1cA_g zoqq&7GH}Eg!WokV0aHCqa^%NhlyVS?L<+96_4@t#528>%?l54>|iW4nT@PnQF zOG1aR#geSkCe97LC52&FxHzW|fHy3DoWJD(t83>0JP%1V?`ZOX>%jjyTo3-6HXY^I z#J)(4Rsv-+ogN)5WLpix{E%gvkyS);Kc|khPB%buScqlfgkbn!*o40|ny4~BTX$ouh#Da6&iQR1rN%3v)4VmfXbP;u5>^cOkM$uH7V#GhkZTe7Qm5gO%D-y zI*ii*5ELf2uC_e^*}udL$E@z&K*lfKZ0&Dl@h1#?>4NNU>EsP(BlQV+(91r8|ADy% zz+5q`1R#J9Kpk#3%(zX?rs2b6RR?XiH9lr^35UhCm-=m=1pd_wUj4zrVMyqEPW?~N zwKYG;#mUNdIaPJ2c>r@a1l#fRfez znTxd}VD$7`wF)4wsJ{FGF=GYl|2#BwK6!$59w-McRqN6nI9hUq`y4cF3W1$C=hIGJ z-v;~Qm&2K%A!(;@jJs87SY#u@?C%9_YtT#3e%2Y}py^C(CvKMrHyHw!5RLthktL-% z?5wV0i}e#B$aVg4B+%0$Vq~Z#XuRg?jnKr< zu8dG%4D;OjxX(GxdiO??6oANHt~4A*LgYytj_F3+jqEY@o-qMhCF82R6yH!sKvSeKRum@k62?w1c;kXc9Nnx%! zC)~q2pzzb2kL3ueG}U3)esb-N9O$25-&Fc$D}UIQ2rm#IW9&BIeJ+-dWB1syMRC>_ z5MBo#05F|jQ_^&f(7}P|#E_P!^WcZrX#196LBda58$KU5%{U{PhDEY%9b%Xyw3*?18An%#3t zwJQThRlTWkKvFT6Hy$z;vM>a*A4E`Lb5t{cX~H7A;HAoHh*x!KwzHp`19Mioe3xL? zEMXCuME<9}EZzXZzZ<~DM^n!{DF>&dU7vUnfhSa;VOK->HrqsY6?;rdZaYvPr+sr2_L32{@jRan@Q`b*{nGVd)B{O`*ECVHC_uYJJY~2p}l;yX)iirk<-$|P37j$4s**XCH zj;#Cll*wxMhs0iaIW&Al_Ox9b43xRt1eYUyaOfSv@_!CjA!~sniP;wYz|~JH*ga47 zKzJkIIW(c2nTsd}f~{Qy{{>H`WJlR{S^lW6D-5Ku!tA-mp0pq&8oFhCtHYl+g~ zoCQBdrWcB=NL{}<)AqZ=#qLX0*Z*V&8G|9=O%^hDmjM0*_vEa@HWd7`xc#Vi32YMI zb!Pa^Al(15lu%^Vf;ObqkyGCpq?{G-d16;6ANlkjYATv$QXVxypIYguFXc$E(3tzkm^+TbGs+^FS& zm7Ky`lhyYRnwVN8za%Ge%Wr%(QP{|Ary19)!0O@ezbjf>^g<@*p9TcRQysiR^QL$0 zA2nMKYlLQ`r1_6CKUiHBh9}QzwTsiaP}&#R3y6So5g4({0;#Msc7TRe@~hV3@OY_H zNUa{Cw#u{$s?s8vxeuhL)dp;b%Sg+q%Vr^#V1z<}17DJp)<2(vv=vub!Ml!a1Z6_< zO^bD`Hh#loSYt2ChnIWTN`vTV5xxNz3Ck5f44bL%x^i30+rqKzZmH9T^%eG?ot!CKjF5X@#sBXK~OlkojJamj*|YjQ_}yrn5zkF7+>=N z&m8Kr8vmX6KabMX9y8s$x^tzOJic=;J}EIVF^NALsE5rv0)cifXNWU#W5Vd5Z?#riaX0jSE`*rGl%Ps{%6E+nw%@V>Km>}!#?=tvuHu}**<_XMn@ zFVueQIT;J}!JR03kYwbpDDusEi8gk+>M-723(Qwo=h=OJY|~QB2SDGv^KJPJf3bBE zd9_4jvyVmo(kkSum6EG4FHV{MEMtn6mT$&oiRVZqNc)lGd8VDN@~E{G)8Lf6&W-0! zUCUoIr@VIKBOL9!rv@A?sWPW{_t#t`Wv`LS>ivrHx=A~E_a!!8Ezula(Le1G& zaoh`b*>I9*s^1(E5(ay$k>GXhm02Y{==$8@*?wu+7eB2vbVy1vR&4NzpwbWRp-)sS zF48PFU2?U%+ub6i=4o+ovS+1!k%s-DB4sfPPh=($^pUyc?9G-c>o(BOyb!8i`mdg- z8QVVBawH#+Z@b_X@^yAfcldffdvmhcBu0LCn62#2$g7e5(@kE+%o$l){#|jD&x`)` zZs43)Zt&W>V?gnDb;RE`7>47_{)P9ha?5r31@QdZr!x3I~`F*oOJ=xcu2t>%odHI*|Oz4w+A z9#715Z6@)gapHIulRKteW3ubazW{V)rXEft5h@^N+;ee>^~g$2adnlGELHR4=<5Og zyg3jF06*K7LO}AZq#N#9Yv3O%3~r;>hh5|W=Q~51i|-M%^^9^6E3}JG0;0^~oP$-~ z1m1|GLw32(Q4V604<~$%*nUk= zh6+N3S_BgU^zzQlg{t*$Z zqzVCj)01NyaCe~Fa{2gj4^?3=b4#`if5Bukjg#kZ*!T|0eLsM3iG8kAVD8CtzVWz= zouoAu{4H$>HR_3fLG3MT4p=f`;?2#N?@7zcg0&RXi=@uT@MIMmkEgvX z8A%IC!sOJVnW$Z^O%Ox}hFMxSt1ox!T7A3p(&d03NcnF{41jMmz}oN!dvKrIf8uV;>C;ckBq^|@pH}Oy>Jq=h9lu+ghR|=v0U|BtV3%ZeI zIAcs!M=g;(B@BG;68^#di>+!~mp9W0_>yyC^X0rC>m51dh{o^bqkYPLg%#r!aIMxI za_sZ%h*a`T?BUK<`}1*&8;hrbz|^xUe~1@M+w41)JlC~>+fg4A*OXpm-OMiG&G^vz zG-zHi%y%20gx#YuJ#gdcHGb{69ywHd8gW9^9NHn0#kYfBvk+-QJvdzDO?6$CY?||R zWx3AQqhKbe)DcmHV7ZoIe-fRL6s2zfLq-lnxyjpoeI2<=a3vs5xwUWG#Mu4$t}5E{ zBq^qytDG0G(++ujoz#bu4R({g?Fzpb zKdOb_9?3V4N*405DR69l&B*+UQe>Myn0!ijk=ZwrRr<4w=D;+3yyr&Y*dg0sHYM$L zQGzP(U$&W$I}*bl$0Pmjc4ZgEJ59&y86gVZ=el3z=>}YS0}@@J9i4?#T+OsDCd>{& zX?NycfzdgGia*DcdZl{(wCHM;AosuH6Od8opE=TE7RINJ607@ z>`CrP#cvkPaffK=mn%M)j_x!1kvm<}y#4%@Mw-O4&?Y>KWpzkCPC`t@Vt1yo4HK+4 z&-g9);ra(K#Z5m(wFvnm;@J;B&z!nN)cKo*qBajvUEa8h-{xypv*Md`i)Wi}9|+{w zJ-xI3Os?_CpYCA?)6cS9R-dEho8DTB=a<0-L!H>0NB6Ib&KJr@d=z#6XwG&p{3pU(GfD%o;M4WDptsmcx`>ob%~Pf^#LlMO%flIriKrYLCk!){Df zeM}(6vy(M}OWoediZH0CrR#gu)UoxosB~~_Z(g8H*jk;Fwvy}4b=)dc74a){O~|P* z>BeXGJ4YD&sQ)-zpO%Q^-pZzk?sJ9%(Iq!dPxvodX_I@7oJ@_TXEPA(b1$%(u6*Z%$z*ONg1?{qt&>betnS zHV0tvQsGXCJj(zb34dWmbG0Zjf%WBq8D&DttCQh@D$*%0uj7Mx2~XBYKy%b!;;Kf) zjZ}316Pm%&$B{C$8|?rNyk3PjOOklKr!Kj~+jg7mnC4w8xsMbd@k9FXMr-Dn^Xz(F zx1x_=`R+2wAoIXAo-A9^` zQQ5&tA%=!ER(;-3O( zkT?}Q5F*~HYn=_CCT+a^YM*s#g=NC2{yPfRQWVwa|NXBI8elDbuU;fZ-guZ#c@SL7kI~a?CulvQBA_e-NW|XGvbU*rTN_SI^`*jR{oIOhNxM_zaq%GSmj#X1A z{9{YXy{O)YgcLBAD7dMFs9Kw!995Jn16{z|YfZC9s6&IVA&;dU;#s+RD}WwOEg~lG zBQL=1uS13B=AA_u6nR1~Oa18_g!{=EO6G2BYedB5Xm*d4-(M6g*q`19OnEO@_IW88 ze6!;6U^*oTx<)*?7EHFW5t(qi`VZQ4YBSt9ZtF{wZWT$K7ahmG-%|;mkJs5Q4P}(b z3O~C(2v*q-geKppkNlpXm5UxZrQ#3Ob)YsnpZkV#`H;q)tKEuxH~K}W@bN3{jFw-w z)W{W~&Z}5GD!C7S0-Qo`{^}{dlu9oun{u2zFg`q9dtz#asIrJCShSfbDc%%I)v0{% zT}C@HdGhnZ?~&BzoYH)-XVhrLoWE;HrK=oO6kQ4j<508d!45d6fN{A~%$FP={bP!r z3hMSMDl!~aCiC3t&Nzepm#JlHG6-4$}g)8@SD_P#^t4%dxg z`QfevGyhg);b_hnQdl1Q+3|kSrs)#7zkY!+H)~Antq>La8aH9YDrsT}71>HaCk44C zaaJakU83yi<1{!S5M#S|(KqqDfGRQ>rnHA1UWxZct*hcVj}xX|ls zZxFw6XNA8ueAw%9YD^jtshOB-20efI^_sRuMo-Cg^k|{s<_+qiJjfq3ensYYj^pSZ zgl4!6kL7mt>O-aX{yRLA4yWLA&Z4dsq(#%2()RVR&x(F(X#K+CZ}d0D$w+1$_t9UE z?rU)#QI*L`#8T@dG)WI04x6Lh#QhHaQOPS{8PVjw4RV9HqX72Z(tt#FjvZ_@@dA^Q zb*;Eq)Kh~nuJygRu_UUjJmgG}#Fwh-Q6c%6yKl~Y0K?jTlAZHO&AU-$@%l5ln&DSB z>+gNzsN|TXiROmf?_VMVxCHJt<*8p>v0S#d+gO zNxHXsU*xN?+-8^b-ddQsp>dEDF%;N(sK|zt9u~R1NN?XQ__Kl(x>E35Th=jue=F)D zn>+5u@X?rf(QfRMo<7x4;kmgcx3Hr^tM^szhf^KX2KeXH%E6=w;6qK57*TxQpkWm1 zqn3=-^$mg*W4MWJO-FJBsSWA<9e;9Fwd;P5*5S8>Kb^T~LpAVkJ^=XR7U14da!1R_ zF(zT+%1U&`;!ABLsVXq$GK(Y8Ot+914=tsL>ur_LW%U>CyLaaq#MGyKJ_dYPwxa&^ zvH9d+%gK)pbID299pbTfVpjfqe_ ztp1_AbAJkXAbe-<&S%P{J1$VYIeen1v$_-OGC!CYf!V~w-`8l((T_v-|2h87_@{Re zHK;@S7BdKs9yIDkXcVN7QzOR1{>6De3`r(R= z1rO;k$DmoZ?yJm{ed5sr;ZHfMMb`_RlGo7r2SGQUqYX$>H6IQJ(TwSl>(Y*b=nlE` z6{c&SzNoe-kfI~w78xQ1{YhABe9c(#3M^?dbn)7I_Rp;sWel0mfSxA-1V$&0q?;yNb=fymUyPSC^e#ERKNs71lc9*lB#IxZ% zXXv2ZUUskb&|tTPF7?Cw!6M)Ed!OS!o{1luDPd1!pWgEg5d|a`QC5U%-{AF>pnsP= zLk2wB+y%_o6gzLdWN0vUr38LvA}#DVjx)(BAnP_;l$Y_l$mcC~@gV2rGF~4XGstnT zveoYhM1Bb|@AfhA7cQ=l5{sv|uDDXDz<^ONBPGhp9ISO^~Ya_iIz8Usfs@S<(uBPd(-Uh<(cV=61t(&o9pMLF|)c zg=F+fv^32NC&{I#=C6fqzJ3SHqTMo>TjOau#lnh0-U(gTItzUR7T${`}%`q+$;$EMQmuL4Y-JNOpp?v0O7O}dKe`idno=Ka{lpB>_6sgvE3 zp>J6S#8)1XZ6}(L3d5`;XoIhF)7?H&5%`I2n@qt1YA_~NWT#Y$(g0z~?-VlgqfSB^ zEFdE#?sE!ioWG9y9nO1@Ybpk(AKHhg&u_VxwR`YVoAy7BWd&v}sIDL;rZl^^->Cqg*d`+S4x_@m9vm*Xo@j+l2#s zFF7{9Q8_74kd;mNiOMYek00!_hA|prljF9 zKj(OrW@VFo=A)GB!9TX2yk3n_+;dqTWv18Pa(yW3hml-cj0|Fc?E@IBLB{>N9lTMB z@06#`ch7Y$A9@FOeYE*rEM`zU=02BIR3Asr)q7VK|3Wk((hCR8HRT#%8i;pLq2A+us$0sR(NyfgUkt}78&9S+3}=FGU={F zTP`-{6hQ;b?|df>aAnzr$TTF{Wz4u|L1T~};~M2VNp_diYWIJve&l(HsgAC`s*^kJ z_2>gF#3s&~hvYJ{o#x*0{k+dCN5^8k;&;@9Q0JqjW5Th`4{G)F|0cR{^1F}BVNKLJ zDsK$OAJe2o4UYis$`e^~>>Sdsk;0#f*8_354y#u{M)gd$ggbYC?fR|`hLk90HRN`T zDp!!%zU??#cs?BM&mqR%*BdCi6?JAIWlGkxLbP4SLMOJugcqNSKZ5>#IG1u(urIY| z=PJ#eNsSd&d(0O?YB@Gwg}p|lsmqA7a;PYBIyVIYgG4pftCk)G`~iBNp$Qo z1?H~J^+;=fx_i@3wKQv_L~DUia4IJ=()+oDkZvN>HYud8v z{D;b?MXsbQj+!(Nh|gcd*8-b@4A5jHVW9-Ch5A*OiQ@y(1S%fVbwxj*W~KH#^aSwQ0l_QA4Ay02AFX_eDIRAHZ&DeSyB1Y^6X z$Y)nMuwu<*VvY?NfkfNn!#7>3$YreIJtSAP{tTY|DS$e*| zYv<_mW&=R0B_764O=g{+lm37+)8d26LdCV!3y`bt_(#`jpKl4$ZjVHun_^AxNbM~w zDJ@Q^M{<|9LIQ1InjS3)decBx-2e@Vq=Vh7jE+j;Nvv%6XF072uJ3qex`kr_Ctdqd zHxAEeAfoB)A6F8sB)%`9q>t&MM^>Zy`m9?0d@3M0UP>*J&w7$}oFY^M6FF;430Jjq z6C;b#3O@`n;B@Ska^FeQH_2pI4l}qm6qvvYRwX> zdUt8*!|$hgYN7Ef6Kg#?Vjncq;)${^hN2Ls7VobAz+O=*hCb^hz|ui0#7O+v2ZJry z*xZFB`|PCW{8wkm&)-)3Ju=_f4o5|A6`~R~nkft1iu2s^dj?=heclQA9am;q%ITHG zIk41U2r~ zF7#WtH(q#rV{wNuiYsUAia+%YGVia@F_^Zdz<{64l-MVn{)A=*)-|b}DclxcG7WY% z=5+lSpvTZdP0zL-_94iNmf2^m@}U0V+wywO@F1@50y-=!RI_QnP)&ueznf&BQ{Co9 z=G4)PZ*^(uhrJHVd!zgtEA1VcNOvLr zN8C9&igHR3SdPS~l@Fd<2<3Eju3PP8bkuVoP)aG$E90+N?QQ+Zz9Z(=i2cX_qo;?_ zywo#4qZZs1JUtLe@H)$t(GbxJ|3+yl3=Iny(-5=TXPUM%=J3qM7%^oX`;_~Zy32F- zlKAh{FPj5*Qm{a(FBU>->C2--FR9o4$j7~C%`z<(6IJ=PGa5{&fCpwJZ{&ly=_M}p zVk5oib3e8uceV^A9+GisZ0HM~3Mr?zQ5elFJA(C~gB4}lyPId67E~K_2XC930Cvku z%)&wSU$*_Umc$1dB+X1LCHpR{JfnXF=V)5ZN{L8}trTW*@Mh4@A@9*}#-6|@ z9@D87GmSG$AJ44h<) zhSE3^m6&kJxtlraCrjyxYOotl-rkAhQ!WGE%PFSJrcTmdr%gj^1-A^Oz`G<^dEH5- zA}D|Uy@r~3;QET3MwOj4Xw0=ER{G9p8u4|~>fvV(&RV4dSw)NF#2gFp6uaXcyvmO? zFU~bc;ZU?*y!l3hu&hhj(TaAT{3`7 zGJ(c^6NESMtk1g@LpX;tF4KpAGA;B3Mk)5{Q}~BSTko{9PC4xl4k8F+Zy{rn^aBSkDk2@pFpqb?OxTSM;@XDWR59zYp(t&m+z1U0I~}seRVlX<8mg z)=`RecdMW0$cGc1e@Es;rcRuFeJz{nl7C3k+ju)}p?K5ky8$#X$NYb5@66+&Y~KZL zsff~^7BqN^vdn6m7}=>rC`*>c7-K9mV`i9mdx3UoX^XA>SK}%_na`JCf zJ1-%zykM!!Pzxl(ws*lm*0wm;z@+s2$1LVUa|8EmugWH0WZ&*eDaoVv=k>j4CGRTE z-bbq%N;&X$%hy|xDiXrSFxnT~H>9yT*2Le4cTG{t%S+VW;Z(cMJf&7n5k#?*Ct58I zIQg+G&R%Kb$FBI;F}FjppZvl~M;;D7v0sSU0Ty5Q^op%fU18IS$svqt2)hS0`|6qlN(o&xK0@gt$fnkKy`6HO_bn5xM(XK1UHHdRZlw(TuG43|&O zOg7RudBY#m5L#7#qXJkDI$O40ypY)~;oI8(Erbv%lUOax-|L(wS+IFtk!Dy!@v}Dr z;aI1BX#Oh6@w23^u3={2a0V1Q)M6-mvdz{eER?kBlK0AW4vB9l(ZK#rao>ZDTQ*6Y zUvO(%n4~_#b+GJ3flhd1vMVKiQPESyt6{CE`;&0n8i~3DapA2@q^z64&KnIW`}i%) zT#h|i=4jM?S|{r1HP^NvTj`0X&p#M+d|WdiOc1{#HZ%^&4tn?&oS`Gu@;OxG)Q%3X z;e-6QmZBV4E!MUdypPD_@h@MI-mbYuxb}!)WKMO@7K~6q5po^9nRY1P(z8@rX5z*P zteXYyX2RFD*N~AXV>q{QzPFuc<#wn3vOcUUq~&p7=a> zvGD;FX7Q4J*F|!iuGN&@=~{n#H}!0(SA_4br+Q9R1N+Z~)4OWN+k+OHItwqR@U3oG zX>LF-JW}yGd~18jFvhx6{P-4vy+BgEb}}ob;l6Je(oFcvE%-Lq;tgRBURcy@dW3EM z{AEybRbPeI{8Rh98qewp9SZ-b;wmmbzR0xxLw(~eyx{$4Tbt+f=T}#xcfQiPf)Md5 zH(q0QQu9M9B;a%mGgx8;d?>wYsc_Xk)>qwy$Y2-fNg2CFv%eH}(1-C=v08nUq>k-( zCxIV#yL_~A(fpt`{632Va!1xMP76IUT9qoB?RzpYunCo}Z5>3~kWHyMr=803$Zgdb zZrD*qewbJOu-aqWDU<#Hlq0>La#wr8{#E~eMg8?%AHGz@@?SfC6ZpSZGo@F+hrMg}T$HD3mN6c_2LjYyqf6e5d0SA{N#bGld;?+Y4>ksLF9yVWBVNqSZvoU=i!T_Vbt11d z(5XkJ$E3o_$3$!sEN(}nBidCJq+{X(w*~oxyWhl6Q}pV-z5QaY{Lof@g3fA)jyYG< za3D`xZ8_wTwT4K zdHZ$6B7w_RiFRP#e5Cee~Wy@2;D@?KbjfFpI;YU$zs! zm@d=rKS_DA_5%8j?6@q%AG5f$vZQ}wo{zq@o-Y52bh{9p?q_zYg^I6Zm}B$_QF*(K z;kWW$Gif2UCGR4Qofo)SIm1RLHUAoZv;|Yb=oBV+4Clr>4L6)f=+AgQd|%dIUqN@N zX0mj9#keJyfny1l#q1x^h|g4Z6mm$5DN9R!q}N-efJ*)Z?+a5%m_MQNsK?>b0`HXY zL*=B)?s6jJY>hmIp?>9!%|XaT@4HsqOH0%+@_O?rjt+}WA63$(EI36*8_D?j?#T@$ zp|@HrSt5|Z1pe<=9(Gn7RHc(rw z&&-zQldi}ycQoFNDkkRjRGw7MDrX3vtjpIj_A6YgcH8o{lBqzE$U9)k98&kYh{>;B zmfUv5d&QxEH?qR5Dl((6=O;zOJ@dR|6DRgW)IJd_{4{|buf9~h_egc6v$*Mrm0_2j zCCwjp*Qvs&Ehx6zAo9ThC5kA*Ie!%?Uo|oCg|ZN4Z9!SJ11H$4+A7@1Tr5XX_ujDn zz<`z2zIcl>`)K8S&o-MJOVk)qp{GZ`v38$mS}YqcP1vPyz&y6RDSk!!!qOc}aqT&! ztyTud6@?z~myTBSXy>N;cRN}HU)66(*SbB=BHhRFKv@49a6d?DG6E6U zba+i_uiJ&2)myX2KYNmN?D}tSjJ2t=TfLQC0e-MLM-&Oe_fx~YSlATgq8AXYa;L{6#aNY zO*X@p(OK!wymN=oOHpWhjz10;_}DjS^GAmz;Hm_*Rai*h|tciBq^gr!<*@z z(rVF1_MEK`&?CHC?b?@n7^%F?%X?#1X;*msEns)^(qe(QkG7EVsTgE-7h1Q6QGc(h zYKeiYkwh3y&d(-8zk}ryZfSk*Lvlr={^sLJFla+<-r9)0c}LMW>l<&)qjPh-ql%ar zHI=b7qJqy>Q{p#h2S3P9*w%rQ*?hhCI`bOEzTWC{`;dPt|HlkhIBqzCC{R0DBk8!5 zhIH&<$nYh!_!q3X?joDJYK?Tw5$fB(Yl?(Ne%6LNe1&5k9I}aDjyM$-pg9($t1$0e zSJngdqj;?trLDJxb8Qx?NO)?2>7E}4qiG4JI))_)xelK|B5U6&ST?_8DEhxj<;w;? zk8j`0cYdr;K~r<_>nh<(StUe}R9bs0v#Tx~yNfjHXvUgc&1f8rHuDwrw#WxvTtPGD zH-wM1gtloBCt|ja?+@~bwWtxK>9y7L=EVCvxcq*t$9Z>yq!j^U5#BY|qU%=9JGf)7 zVvXqAnk~RUouqrbdlR_(1if@mLHCLUXThe;q6i+9bKS&Q{l9wbk{@?Wre(l4F>xZ?!wT=RZ~! zcvlo+Uf)bx&tjCl)G@LjI&J-+=2+taTzP!5d!1V8J>)MY~>kj50@)gt%E*=jPJ5a5V(^#b|R({X^PTGxeM%k+yhld+` zRG&6`B&+V6y!+&GlSP{od4iDQ8L&sECVQ#oGLZ`fPXjLJNFThr_1^MQ^<*dL8(cS~ zHEQ&cURpTo{s)jK>f>JBh@eiz{DQ2t=bk1xu{OCTe|Y6i8UR~2)-%Ja$L8vSyeS+@at!`oy~Ub3%5&|9^2+ z2urBt^x9#_?zg_Ng>a&dJQHC@HP&wLfTg z>D+l~(T1CO2J2)=?%U7W$q*usl%$g=-8G#{5$ozsFVjD-$I4=+w@GF^ypLnH2B{?T4}cL9qC*GIoY3G&HRSoo%u^<&?h!O^(3IVA?m7#Einwpv-2nK;dzz`T13R8lrA>lA21Ol3Q$)H34 zNt5j2inP!-oT(0YrzPV?rIL_fFpWl2rookoWE>c(p`pPJ1A{367D^O90u@bHB2Z+f zgUrU!$5Jq4Jc)`Y5qJ=1FKW18Nn8k&sN!2vx5 zH9h3a-H22o#f?Y;>FKeDmy{01h+e2xPc zOwH&3b1>(K)MT3?b<9mrFlC_A&As~$ciO_-6HRp`lD$w<2xkoEls{Wr;k~eyRJ0cf z1yxajLRDcfH3&q5J=x88emD5pbuX4oVb2Ndgej}en9nL_jQdY?LRqk6#Qv0q}e%pF4I5InJfMk(Ol6qCsU#e76sP?|4#j<8%@Q#{zEp|CBHV6 ztwjPWJJ4y-Q!6S|6L`4lCmlyhrpnk0w5Jc-d=CLnMFE-oo%&}lo9}KYC;|ZiUSKHu z?~FTV`Om(#Tzomp|1?ry;`@CMnB8{%FgyTjq~6r7L?76h{HJC5Crge?o+}}et%yX= znLUIdo{Xgt$sQDto}~&13T$|lp~`BYxqZac(lA~3jNeZoO@X@s7c>?9yN0PE;cBz{ z2X^&8*!~=c=z@3kn~kEu-i1JbU5Ew}2HY(m?55iRboyDNKb;WZegR`Z|GuMVzn_|b zDO4A*3GfC1TmfJJhCv|eN)VV5OykG7cqRaHClNE%>8JDMGP`C@ZyKjoPF*w(%%Ro< zb9dGJ*~HR~NF#6rVee?zyD+Y?e|DUUtV5=y_ttEN-P&h}R4+YCsO{Lt^#g%w$p@GqMAk8aaZcj7U?Qu{C3__M?B^Ea&p z?*D<09>8;-J^aXa?yl<(3*YCVKOC4d9Ip~i8eC-_F0P0;4S2XXX>gT!xVR$XG~nUl zq`_6@;o^#j(}0JIlLl9rhl?vBP6Hk;P8wWg9xkqkI1PBXIB9T|dAPVD;xypl;-tY< z=HcRsh|_?Fi<1UdnTLxjB2EJyE>0R;WgafBh&T;+xHxHWm3g?hBH}dQ;o_vhRp#O1 ziip#Ihl`U2SDA;4DgT!xVR$XG~nUlq`_6@;o^#j(}0JI zlLlA$KjISk{xm<906fA^1D@4~e^tu_&a>EWqOW6RbGReX%wr{V&7#^!{iLdO=^%YbR5;a&L0`rAwrX5JDJZ1fmgc`3ah7gSVX_1%I#K_;yk1qexys^o7;cHYx~2-bzZy8eOBFhX+w zVs(L?R|X9PTqgoS04wWpNmGOkvJ8gAiBYLn9_ zVPprN%_s}CU$NcGOdu`P;qBGk?YIr)k|&x{1yBObE>R<*k!K*D2~j#H1=nmu@jF#+ z50XyZ;SUnNYR3w>y+qkR8i&^TxUE*K>&j&B>l~D^WY^OD@#@w(+m4^eUA812h_s7O z&VpZ1zfxm!o|e=CjL?H-B7cvgRafg4_1-i6Dvf`y8?cX&ZWGigIn4?Xu)kp}Mp{_X zcYU#TJt`?u;%LwPc^_&%y4%d(B%4*m-*ydtEkqjhfv|Pyc2er6+emr-_ZH2${n_&@ zYcHIt%arRwY+$g)ACAT=RSF3zL-3jyC4xt^s04%2 zUVk)eZs{HS!LOww%ZzQu8P^_j-YvnFy<&&t@l>>#%uQ`?76nYDo~n1lHdQ}e{N}4R z^1O!*75Qt085i#0*kY1kwM$WHYzO?b>)686$14u)`BUh?9l(YZK=11Ny^70?$=hb#Vb_W;!biwc1zBL8EN0qI(RFryt zb3)>fw1*5&E4c0J+ZR?;4^KKXH*bXR`BvIsxV*DCw!u3yb5=~{{4wb#Q!E!)a*I{J zv^=edlT2!N%GzQ3^Tv2~oA<)9Qvb!H*#&!_+|gR@m~?MTsmo(%j%C={U{6!?T^VsR zuK2GtIcPLa($dsOjy=9t2^S*eDf8!-jNDN4# zGp-_6T52GoGUIZWm|ITXRry8y5BI`4CWZ*4YwwxYct4D&WaYdmG%igaWihcS#-!$Y zRMLoX<%WZ&PsJBc-8!OXY?=AEEK}o=u2R$ZBm@6ulT0h+p(_6EF_uLZ#DJia#m8C8 z$K(o@2^%N)7|b4L|7=xi3O6v2zH?FFF9oxGaxAu?`P4fb_p1+0*)b)3sv{dN6_ z>}@%!iR;VqLl6kHbzn|I6usuNmXMdo} z>jf@zWS9MG_i9?NPUC7GmCW_yKBpF6N~_=bMH-xNo3Okg$AuUQ| z_Pu1?pbgC)c2fMe^YIjUwxKL^bKXmjaqVKc>Mrf{7JH+D>2;R;lT{%t)tr{wbx&$q z#BDYWd8ycj7hdbt*_F)oU8iqMx_tfB;7cd2#^9v>hZ{T1!cqg)TUT1;7*0vPbrm<| z+PaQi@v0Q#Ez3K{jBTl0HFxYWg-20A*U@Fs%}Z@|-7)+ka!KdK?1ZqGHffV|a_O(p z+HTUflkZPSQM=!ok{n_8n-`@`P_ZiHSKf0Y%7O{EW__9El971Crf}i?ADvDrZeDx( zAhT=m&qceu7F#9U%xbr;=XRVGfhNYtEJysF#Kr&YWh zwJdM~Jt+KW^Px(ONY{MaWhG`wu7i!be2)#}S-t3v^tR;So{bK&EgoO{tR~XMVeX`P zl;a{#^!(91j+dZdJ1g9AAt!;(Tb+HbMe)t@E6kbA1E|AC-2BSj6m+veD(dbo;JLf^ zwK}komypHvKJIFDVqw6x#Bx^o()5tDR`KYO5sot*lT+)1LN6U_swaomXBJejaQg;e zT}BlSA=OoKDsah-*!02`*;`lSyf|8Lo^W~Toy0>2pI5|T2d=~goZW1nzi4gN@}H|^ z@|m57g~QxBZIYm6>thLrbKR~yi5xm~;bVexVb=i{FV~ulgWJ=qXKWuk>WRsdhugQQ z8|;RZtS%U~Ww@WE#_hJ(zFN}J2olG!{Y+*S@9gkz(oYDnwO^i@mNw1V-6|+>Wk>3s zTHHNi-J)$L=R9vBci#J94gCt5LC6?yo0&3j3?pa8lGK5FEgdHKms>x$Z5{E7r>be1 zxHL;-Fmq?7mCFn3S8bOaef+1fEc1h32RMcO8v&bm7 z%l2@?<)6H&&O0e1e!JYnZB$_`66?pit8B^q?*y2Jb1fTHuI-~Ng4J7kFkTxjldCyeE(#8CCb${ zI*1+&4@50efnr7#a=Z=`7Ahh&Tmk{e@qPYc)7Zl1;7Vc3oFSGi9!w!C%?Nx zt?`TkAiWNKbcZ?+9ARXCM6HNai4e~yM6R)U7eXxR->-~R$@JlfMPx*VgacJIunN6r zQg;~k?|9FmPNH}6U3f1ZU(m0vV@!&MEA>V|Zr%e{hAK1)b*Mtwul^o-zxV?a8dUNp z9_b_>r~|tnx6sG2-hH6O=W{$1qDUPLJP$4btdPX0m?MN33^q+dBhpw*I+0Fs5);`B zx`-%dN@xrURfN!J^mib5ahVcCD>jabB)s!)Z)pj^;!Sc;I9a;e^iE^Qolg-oFe08NH)3DDbR z0jfo0!5%2!Kn)6)OQ2EzAe{Z7P?vI!n}Ek9P)QWMx_(6=XV---f( zfdCDxOAN%MP-rX$l|iR6oG3KrTcsdG)#C$|1W`ydC%vSp-3~S&%I4X?; zK^%x32vIl?odZ!PQJ{C>01v1n=09ocW)t2S;Dbu{M%5aHDn`H5Gq3`Xh@QKiTN$dK zRCv68=5Sz952qr1m}0%B0If%eex&CAcH8u$s1*`TG^|40q#%V{f}8G0zzh1O1RfmS zfL8|Io)3#qxo&hgyzfPHC<2oH=iHP3MtEvC3i(5DqEJ{aMZnq9JH7rYXgbV9U=~wI zWYCymBAv>Fbh82>O4ve*kS0c`V354;^dExu0@G4o3V3^8R354QXo$VZ|9`}T&?OQk z!T@8BN+Z&R3_6I1iSIACo%9z%Ac$2e?}MX?TZCO4xZ?u!D|Bqtzm#y4kkh$FAq$&?l1rFj%=`Es`Q?% z#$ZN`*IfoYf7^Djh}H1;p4fYXhMNu!#u+r?0e~GqB4r%GqE|QAoVOps`_mM_+qiEym|3BSCKPwPCAMLp;3<2c!%$k8;`g zvLdlwCK9LxO*n1ktVqVlDpj-Clb;y{PBlOrWk$iV1{cqc`^0D_EC*CO5^xV z^^L@K3+-t0{ln>1J|SbZxIKR9gyI1YCD|qwB!{RaNQiYy^DSN;)}(4s$iA~i?N%(K zx+QB)mrU5T$#8Lf`+hfTmT}sB)lK8Whnf~vO?1sZcLh6yI_pQ3m6siVXws26(;}BF zb$I!}!DP%1w}h>mcNSe-P^y;3l?U7pYb~iv`j_uv-vzeJ)(J7%vicj>$6sVeo?HB6 zZbA`hw@)kf>7qS%cW_qBxkzp}QM^IMa_cTw`-Qnp2)1H<@$aivBfbYsq6or^`#PS_ v%Z&Ldjn;^LdZh3-Y<%;Lj`RxS7lZ5^hwNy4Jjx8Pj^TMu_t^J!Nbg1hf;-QF+tWsk#xdJ8QDJqnV>g6&L zN#9T$kyyLqW7|JBgj^Z_@60BZ2q|PO_~cos_vGlVg5r*t!V#u-igfcu-A{ryrK_?m zeX5_{$kUk7?1if`r;YwLG38NQLwf0!A)6|)&%@-QuGbFYvs)h7-{~l-%%zRnul_x( z&i-KDFG+8HOG1$GV`Rv^b?=rC)~-6+pQkkPftW{4VqX?)g0h|w4?;nIsA~#4vbS+<~p`y zx$hx8IP!ITP>lQjC&%n#*f~|Vsmv^Hln4shHf?bMZ`8w$@e}OgB&LZrMLWw?d;gVN zmSr~S?9#PIMAgd&F5E4)sMvCsePw&i#q=7}@iFkWlAD*6sV8%9 zW<^>oC^_sfG;VCQUsXb9c65V2qGs=cO^B;qhh`>eQQYMtVhy9+7%gftbUeP=8T1**2NiK-!eva-WGa&;Jl-D zMR9EuwqP08Lt7oyv`(j8KK-+@hqa%yrnQ~R&#;?Re`EfT@yAx=`BsgTZCDIVZl5DQob29%mPVwbJAt%I1uFIKjUr zWNQmX_g{VR%oXffa%65;S6+hS_6Vd3|9Sp0yOlZS&vuWyo_=0uGkvtQ#-h}uxI?Cx zlu}bRXSVCrqVo84CAC9b+%oe&ZgyKW>hb9j4U|otwuP+pfDE=(O)n zS&@Ivy$6kg(&kn^y|+>w$I6XCj_YahS$SX}>zYy&7rHqfp&1`YYBx zH&IysbRjWFI|sD7c)%W)t8fX?5=UML6wtKGktT zJH<8HErxzn;wS&PV&|lbj7S#;o1PJ3b`=$5k){>2x}pjzz=N@esqq!vmr- zAtsXw5L8Wy5=Zn@rN)tpw;tA;y6~v&?p`@gjG&Hzha-Y2c zH8kO1utTA!2Ggn~s9!Rw#2xz^RVlQZ{x-E5lvpzCTOpM}U{eOm{dN2WLQ$^{5yp6V zlFFb#p!*}Gl3tujt5z5=QVE1A&?K-C4Pa)xgeMN5UX7RhAtbMDM3sQym?i;J4Xo2E zeoYaV%idszkh}&5ZVhbVMP3X(8}bMHViGOkoWPe)0V_1ATndXB9F7M|#-g&^d2A}1 z&XrO0c;n8I>CZ|6|uv!i}4N?40yCL!ndy52o3X?`R?9Z?wQXsetQz!8$fpVo*-zNx{ zC!t|DLIevq%wTYt3?75SVsP2aK2QXz)_^7=I2m*r*C3Ee;Awym0kteoLgGx0ks1As8Iw* zeZd9T=?t!6NN~a#9GF9g!EmCx!##|>XiOcBVG2Hl$PAeXslgy27J?BeMR24)9gE6f zhclQkgA23hR64Ie9f*Tmmhx9!yUS8$#n@;zB*to!7z#jY$RUWcQ79i^9Q^Hx(#xX3WVjAdqu%kL zxcL-s;)EuPUJOvOj}IAC9EUtnh)Cp0Vye2nybE0dN;K^otJ0Y5p40LT?rD%@^cCkM z35YTt1&;zf=fK;XW+OZlap#Gt92OXaY$lIEj8T*-^8mw=nSGQdi?Q(h|~T>_B@I6@Rj^}66Yl>Am&z>R;5zNQT5Atf6)hT!1dEN zv=R1~>iuCxZ68dP0w#U}9;{Qo)%*ZJBSWBE0%qu2ZTE*5!_x1e2)Jxq0}or^*$wJ_ zc28Ir>C3#NfTu9dn4}@-}m8qAFg+bz&nB8SJ(S+y;B6<3H-jg{%_&3>3jWy zD#3%E4!qo1WpY0Rycn_+f9mgRctu3&^eIgT|EyI3Q5q6yq%(1u2tu9Oz@il{5c*l& zHXUm@l2yKSxs*gQX%YB(hesZ5TvL=7?me`+0@97F_PVfri|zKv1T;r?+PZmCnE5YV z{`CzFQ4NbCqb?0TcQRCzdo+A}oQuFY)l#gUl3UiMOnai-JQw17n?vo~^F z%^WG_yDXndZcN?v%xuZw7AUSHDD!BJ z$HBGUbBAR-$Xy#fXKQF?<>S!%%Et9ay+Za>h@6ig?N&L-l*iqtX4xiB`E=|tbh~N& z2e-p=TF^oBsH^rsa^6Vs+^K)Y3emtz##;qO(mI2J0qNVwTF zj^!QLRoQ7?9BW?gQePU|GJm;s`%EW(VEvPTU#?{G%>)~6dF)>4m1eHE;QO33+Nr)% zb*t38ja~GkRV8bqS&iA63|iao!}s2tGolhcU06Im!{pLP`nYduG-2~>o~_sy*QJsU zzuY~cIn4~q)|Cu7{^9XxJCfq!RjX@UQk(2f3HySV+^JP?(9^joRspU4(X_iY_IQO! W2FqntaY}@tR0MuOzPqNz&Hpd`={q(6 literal 0 HcmV?d00001 diff --git a/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark.png b/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1c80363a8c848b11f8a7831b7d62941d6b5017 GIT binary patch literal 6182 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 Z3gh0wUlV+$za7mGhU?+SIWRvm^WT5*1j_&b literal 0 HcmV?d00001 diff --git a/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark@2x.png b/app/internal_packages/system-tray/assets/win32/MenuItem-Inbox-Zero-dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7af1c7d3c2cbb596f940998584650a49bfdd9380 GIT binary patch literal 6436 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 literal 0 HcmV?d00001 diff --git a/app/internal_packages/system-tray/lib/system-tray-icon-store.ts b/app/internal_packages/system-tray/lib/system-tray-icon-store.ts index 4c820a1ff..7237817ec 100644 --- a/app/internal_packages/system-tray/lib/system-tray-icon-store.ts +++ b/app/internal_packages/system-tray/lib/system-tray-icon-store.ts @@ -5,22 +5,7 @@ import { BadgeStore } from 'mailspring-exports'; // Must be absolute real system path // https://github.com/atom/electron/issues/1299 const { platform } = process; -const INBOX_ZERO_ICON = path.join(__dirname, '..', 'assets', platform, 'MenuItem-Inbox-Zero.png'); -const INBOX_FULL_ICON = path.join(__dirname, '..', 'assets', platform, 'MenuItem-Inbox-Full.png'); -const INBOX_FULL_NEW_ICON = path.join( - __dirname, - '..', - 'assets', - platform, - 'MenuItem-Inbox-Full-NewItems.png' -); -const INBOX_FULL_UNREAD_ICON = path.join( - __dirname, - '..', - 'assets', - platform, - 'MenuItem-Inbox-Full-UnreadItems.png' -); +const { nativeTheme } = require("@electron/remote"); /* Current / Intended Behavior: @@ -38,13 +23,6 @@ Current / Intended Behavior: it will switch to blue.) */ class SystemTrayIconStore { - static INBOX_ZERO_ICON = INBOX_ZERO_ICON; - - static INBOX_FULL_ICON = INBOX_FULL_ICON; - - static INBOX_FULL_NEW_ICON = INBOX_FULL_NEW_ICON; - - static INBOX_FULL_UNREAD_ICON = INBOX_FULL_UNREAD_ICON; _windowBackgrounded = false; _unsubscribers: (() => void)[]; @@ -66,6 +44,11 @@ class SystemTrayIconStore { window.removeEventListener('browser-window-hide', this._onWindowBackgrounded); window.removeEventListener('browser-window-blur', this._onWindowBackgrounded); }); + + // If the theme changes from bright to dark mode or vice versa, we need to update the tray icon + nativeTheme.on('updated', () => { + this._updateIcon(); + }) } deactivate() { @@ -84,6 +67,44 @@ class SystemTrayIconStore { this._updateIcon(); }; + // This implementation is windows only. + // On Mac the icon color is automatically inverted + // Linux ships with the icons used for a dark tray only + _dark = () => { + if (nativeTheme.shouldUseDarkColors && process.platform === 'win32') { + return "-dark"; + } + return ""; + } + + inboxZeroIcon = () => { + return path.join(__dirname, '..', 'assets', platform, `MenuItem-Inbox-Zero${this._dark()}.png`); + } + + inboxFullIcon = () => { + return path.join(__dirname, '..', 'assets', platform, `MenuItem-Inbox-Full${this._dark()}.png`); + } + + inboxFullNewIcon = () => { + return path.join( + __dirname, + '..', + 'assets', + platform, + `MenuItem-Inbox-Full-NewItems${this._dark()}.png` + ); + } + + inboxFullUnreadIcon = () => { + return path.join( + __dirname, + '..', + 'assets', + platform, + `MenuItem-Inbox-Full-UnreadItems${this._dark()}.png` + ); + } + _updateIcon = () => { const unread = BadgeStore.unread(); const unreadString = (+unread).toLocaleString(); @@ -91,17 +112,17 @@ class SystemTrayIconStore { const newMessagesIconStyle = AppEnv.config.get('core.workspace.trayIconStyle') || 'blue'; - let icon = { path: INBOX_FULL_ICON, isTemplateImg: true }; + let icon = { path: this.inboxFullIcon(), isTemplateImg: true }; if (isInboxZero) { - icon = { path: INBOX_ZERO_ICON, isTemplateImg: true }; + icon = { path: this.inboxZeroIcon(), isTemplateImg: true }; } else if (unread !== 0) { if (newMessagesIconStyle === 'blue') { - icon = { path: INBOX_FULL_UNREAD_ICON, isTemplateImg: false }; + icon = { path: this.inboxFullUnreadIcon(), isTemplateImg: false }; } else { if (this._windowBackgrounded) { - icon = { path: INBOX_FULL_NEW_ICON, isTemplateImg: false }; + icon = { path: this.inboxFullNewIcon(), isTemplateImg: false }; } else { - icon = { path: INBOX_FULL_UNREAD_ICON, isTemplateImg: false }; + icon = { path: this.inboxFullUnreadIcon(), isTemplateImg: false }; } } } diff --git a/app/internal_packages/system-tray/specs/system-tray-icon-store-spec.ts b/app/internal_packages/system-tray/specs/system-tray-icon-store-spec.ts index d5c27afe0..485d48508 100644 --- a/app/internal_packages/system-tray/specs/system-tray-icon-store-spec.ts +++ b/app/internal_packages/system-tray/specs/system-tray-icon-store-spec.ts @@ -2,8 +2,6 @@ import { ipcRenderer } from 'electron'; import { BadgeStore } from 'mailspring-exports'; import SystemTrayIconStore from '../lib/system-tray-icon-store'; -const { INBOX_ZERO_ICON, INBOX_FULL_ICON, INBOX_FULL_NEW_ICON, INBOX_FULL_UNREAD_ICON } = SystemTrayIconStore; - describe('SystemTrayIconStore', function systemTrayIconStore() { beforeEach(() => { spyOn(ipcRenderer, 'send'); @@ -20,7 +18,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { spyOn(BadgeStore, 'unread').andReturn(0); spyOn(BadgeStore, 'total').andReturn(0); this.iconStore._updateIcon(); - expect(getCallData()).toEqual({ path: INBOX_ZERO_ICON, isTemplateImg: true }); + expect(getCallData()).toEqual({ path: this.iconStore.inboxZeroIcon(), isTemplateImg: true }); }); it('shows inbox zero icon when isInboxZero and window is blurred', () => { @@ -28,7 +26,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { spyOn(BadgeStore, 'unread').andReturn(0); spyOn(BadgeStore, 'total').andReturn(0); this.iconStore._updateIcon(); - expect(getCallData()).toEqual({ path: INBOX_ZERO_ICON, isTemplateImg: true }); + expect(getCallData()).toEqual({ path: this.iconStore.inboxZeroIcon(), isTemplateImg: true }); }); it('shows inbox full icon when not isInboxZero and window is focused', () => { @@ -36,7 +34,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { spyOn(BadgeStore, 'unread').andReturn(102); spyOn(BadgeStore, 'total').andReturn(123123); this.iconStore._updateIcon(); - expect(getCallData()).toEqual({ path: INBOX_FULL_ICON, isTemplateImg: true }); + expect(getCallData()).toEqual({ path: this.iconStore.inboxFullIcon(), isTemplateImg: true }); }); it('shows inbox full /alt/ icon when not isInboxZero and window is blurred', () => { @@ -44,7 +42,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { spyOn(BadgeStore, 'unread').andReturn(102); spyOn(BadgeStore, 'total').andReturn(123123); this.iconStore._updateIcon(); - expect(getCallData()).toEqual({ path: INBOX_FULL_UNREAD_ICON, isTemplateImg: false }); + expect(getCallData()).toEqual({ path: this.iconStore.inboxFullUnreadIcon(), isTemplateImg: false }); }); }); @@ -53,7 +51,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { spyOn(BadgeStore, 'total').andReturn(1); this.iconStore._onWindowFocus(); const { path } = getCallData(); - expect(path).toBe(INBOX_FULL_ICON); + expect(path).toBe(this.iconStore.inboxFullIcon()); }); it('shows inbox full /alt/ icon ONLY when window is currently blurred and total count changes', () => { @@ -66,7 +64,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { this.iconStore._updateIcon(); const { path } = getCallData(); - expect(path).toBe(INBOX_FULL_UNREAD_ICON); + expect(path).toBe(this.iconStore.inboxFullUnreadIcon()); }); it('does not show inbox full /alt/ icon when window is currently focused and total count changes', () => { @@ -77,7 +75,7 @@ describe('SystemTrayIconStore', function systemTrayIconStore() { this.iconStore._updateIcon(); const { path } = getCallData(); - expect(path).toBe(INBOX_FULL_ICON); + expect(path).toBe(this.iconStore.inboxFullIcon()); }); }); });