From d2b1c17deee081affeeab2778c0fb74fc62a204e Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Mon, 4 Sep 2017 09:12:22 +0200 Subject: [PATCH] Release notes updaetes - error - import - cleanup --- releasenotes/1.4.0/release-1.4.0.markdown | 51 +++++++++++++++++++--- releasenotes/1.4.0/rofi-error.png | Bin 0 -> 22562 bytes 2 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 releasenotes/1.4.0/rofi-error.png diff --git a/releasenotes/1.4.0/release-1.4.0.markdown b/releasenotes/1.4.0/release-1.4.0.markdown index 9ef7772d..636d58b8 100644 --- a/releasenotes/1.4.0/release-1.4.0.markdown +++ b/releasenotes/1.4.0/release-1.4.0.markdown @@ -3,13 +3,14 @@ > This release contains some major changes. One of them being a new theme engine. The migration from older versions > to this version might not go flawless. -With more then 700 commits since the last version, this is one of the biggest releases so far. +With more then 750 commits since the last version, this is one of the biggest releases so far. In this version we used the groundwork laid in v1.3.0 and went completely nuts. This release should satisfy the die-hard desktop [ricers](https://www.reddit.com/r/unixporn/) with a brand new, CSS based, theme engine. -The great work of [SardemFF7](https://github.com/SardemFF7/) simplified the code base and improved the key and mouse -handling. It also made it possible to add a often requested feature of icons (correctly using the icon-theme). A feature -I never expected to be added. +Because of The great work done by [SardemFF7](https://github.com/SardemFF7/) the code base is simplified and the +key and mouse handling improved. It also made it possible to add a often requested feature of icons (correctly using the +icon-theme). A feature I never expected to be added. To top this off, SardemFF7 made it possible to build rofi using +[meson](http://mesonbuild.com/). A last big addition and still in beta, is support for plugins. Allowing the addition of some weird/fancy features. Currently two plugins are available, [blezz](https://gitcrate.org/qtools/rofi-blezz) a quick launch menu with it own @@ -31,14 +32,22 @@ It is now possible to theme each widget in rofi independently: ### Colors You can now set the color on each widget independent in most of the CSS supported color formats (hsl, cmyk, rgb, etc.) -and each color can have a transparency. Each widget has three colors: background, foreground and text. +and each color can have a transparency. There are three colors that can be set on each widget: + +* **background** + Used to draw the background of the widget. Each widget is drawn on top of it parent, if the background is + transparent, you will see the parents widget. +* **foreground** + Used to draw the borders. +* **text** + Used to draw text. If not set the foreground color is used. ![rainbox](rofi-rainbow.png) ### Borders On every widget we can now configure a border for each of the four sides, the color of the border, the style of the -border (solid or dashed0) and the radius of the corners can be set. +border (solid or dashed) and the radius of the corners can be set. ![border1](rofi-border.png) @@ -53,6 +62,9 @@ to change the font and size of all widgets. ![fonts](rofi-fonts.png) +> Note that opening a fonts is one of the slowest operations during rofi startup; having multiple fonts could have a +> significant impact on startup times. + ### Flexible layout To top all these changes, as an advanced feature the whole layout of the window can be changed. Making it possible to @@ -60,6 +72,33 @@ mimic the original dmenu view, or make it appear as a minimal context menu. ![dmenu](rofi-dmenu.png) + +## Error reporting + +The new theme parser will also be more verbose when encountering parsing errors, hopefully helping debugging and +modifying themes. + +For example when forgetting a trailing ';' will report where it failed, and what it expected (a ';'). + +![rofi-error](rofi-error.png) + +## Importing + +The new theme parser also support importing and overriding. This allow you to make make modifications to an existing +theme, without having to completely copy it. For example, I want to use the `arthur` theme (shipped with rofi) but use +fake transparency and change the font off the result list. + +```css +@import "arthur" + +#window { + transparency: "screenshot"; +} +#window mainbox listview { + font: "Ubuntu Mono 18"; +} +``` + ## Icons Another often made request, I never expected to be implemented, was icon support. But with the help of SardemFF7 an diff --git a/releasenotes/1.4.0/rofi-error.png b/releasenotes/1.4.0/rofi-error.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5fcf8ae4c6c6db6dadf665ecece2764d984930 GIT binary patch literal 22562 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≶e7MRuoPnt)Ko7`tq@hg}N=2dhQ zeap91e;0%W+N?$iRI3MRMm4GqjjO4?7d)mvKSHuuA=_8*@2&wQ5qq-mMt2=ggMNg%Q{ z&C5%=P+i?1aJe5~ql%1wSR=fddTkAAYBlS44%_SMCpToipaZ1qk~rfW(+eS+1@#ub z$2=jbE67?pY__wYbmC$?%xs@g!K=K-Gmp+A z8vf2s_*5k!(MIlr8FyqiJsSGY*l@D){YSXed;40lh=Sa>_>9!jM8k_y!m^Tw|Kt;s z@iziwRuLM-jao_gi3y;3;5 zH2I$x2+iR?=mv`T{~s3N|LdE89kYsTYutt=2mSY zhG6T+OJ+XvoXK~nyI(SPI&2$m`_KE|yD!hlKkAPoFkKX^CL+x&8Bb;h&Chl0ZYKmf znbJ7pdTpNbZ1OAD1}G-r@r9$)U~6*DPRN-dwf|mLT0G5w42xFcxEv&!4%K+Ge3}ZX zpunIl3&+vPoe3rRVl0DQF~Sps86|NMrJ6Et*QEMyO?L?~0H}Ij?`Oz~_#KSaybSX5 z6h7Tl_83Z&Oe;)_cGh^g)0Rpn)<^V)hTIvzh<1!nuxBV!s1y779cZG=_lBl~Z5*%m z%9_4)&K*?^Ex7Kxzzq68E$87Y&h5ju;@1=N4z1W1`8ZoN`vbyLtylI^>G*g1&nWo8 z@yMrMxRo<~vWVf=YyS?g=a>XtQergTFwn5{&6#$NsCibpLmrR_0eV7_q$`Hsxp(A# z=r?vGxS70IDep}wE~GgNk(Rsw5b!!difWKR5dLfTG4hotu8h-G($0+AM8x+A22Eaf zvU^cZ1&u}9txu*y8C_#Z9(MBb6$|_-yuqnF`fpmsV_j1C+<9M;o?guiC+Cz1xDe5i zQgN8Te>N2mQT`FefTD&-gC$4yJi6B~)&}V=7fA#x4e0)q2NT{?MV3NcjLUyzdU*dX zat~)wyAr`%(Z|lp-;@BV3MRj2S2V}ckm9nHPd_+w&1lC*X>&gXJ7EL5ukJo zkF<+tqp8VV8_JUN9qOd}K24WQkY6R_DMY@z*W;N}CL0y;s>B7OtC>Q^YGtgw7yU(B zj3vneEG#?!_$;RcF@A@{L95hs^Jp!2E>P$u)lr9%ik8g9s=Af7ge_m|RrMYF6L*5d z_d-bV+ZX0AS&DQu#Y@l&Q()#fvM`la#B+Ss-8#7_MjSl1kbiuy`9a^>MvBV5d{=M= z-@FFhDmn_Xn_W0%`E}*EM_hGYaz(jS-*IrqS>8fx3Tn|$RfrzAaJMt9MZpFg;#8Umrs%l*vl5>ut>DP&-& zZw|h!^#UgouKJOe6J{g z#p`_H_dU91xNK3_#7_(6~#oF_q9Rko3|y_{V-R>8h9%<5+4-m*Y38Oh)fX=Ep0jJS4gg(U9_ri*&Z^=$AX}CbAH|kqk$KJB0RnI8bSMj4ORFsDyp`9CP%HU=po^M zp-zn%Sb4X$Uhm)W<08dI?UqS#r-QMMl-`qiN6^uw!0E z)j>7Xcj``rTEA<*uC1r$xA(jGQNx5p&<{QP?Ux;2zsznz+gO`%^WSzA#j!Y@d^4LW zY>Pc0e9>qyKe^=ehj+5h=`189$A<)cE5rF=$_b+TNvgo- zA(%$2fl4j}T9eXrhVtSjE=gHaJFhsi)^NsDxsRSDFmJ=3XAaX(Fjk|FZ#_2Z&i;I3 z9(TA-gmOnB$i5SOzRH7x1BH4JDGkJbJ}u4b-BT`Hd~J2L@xoC5+p4p(918f^mn#Ac zDA_BC_8+}d#crIeZpZaaQ<{LwdKPIpC6r%WwCJ`nGTzB#v9ps*HS_KrN7H@WYwtaz zmc4oR{SD#=0vje5D}K8xkv_n9R2uGV-C1m&%#nT2-@qF`NHnpwJq})+iI>^{TYq2y zEyKt=7J|z*KFU+&`0SigmTwRN;gEWHSibHSpy}BwtnW4OT+k~E>+rmxqYP}an*Om= z`@3$)*7s*-?bLk6EVfaWNd{^Adh|W1tU`ISVAvI3YinFdnCS}w=~D(aTvCU_5i42P z?lJ49_T@*5tS1mC4}N~(DuwUR%rsW4EQt>U+2fLoyo8y*<|jJ}?{!}n-O^PcA%GAf zNN1cw0@Zpf93o2MEtUg3&wcO+@2l4z;i1(~vQ73^2qBG6aMoTuXN~WpJ`mV44OUYA zdFR%KNHG7$kTn|Hkcj%_tjoJ!_0<9_K~H$Bd2^4DcjqvNoLaD&{+wNNC2WWB8YY+G3?pTs1%>3z5KU1 zU@xym%$Z}s7@uFT|E3D9+P`S3rQg!a{5Z*Yhg!)Hatgv6S)$i9=C_I!X4&V(JmUPG zL>vIm^_b&GB1R3fa?K@>MJFB{H$^ISx+2vwigF$Z7q?2+mqwjaofw^mCgB?-_|<|!ah7hPLt2G^X9EN69IF-b$x*b}oTYoL~$A@;UFHN(xgmLzz zmUp`D17z4RpgB4&*Tx!1f(;n17~aaSoIP;ss&IZ1d{(M0ft7sE!p$#0 zIcnE>_@iOMzv;nYX~oJXWgZ;pThYzCoyZW8)acPpF>wjLA6JdwiZZnEBmLD&V@YD; z>O1rv*9b2UuH&#ZC$&a=l}UVMlrfK-AcPt*&ztVwqb*^8mm52n=C3JT12iD!3T)sVMjsoXmBjy+5&?nu=huT3XEKO_UKls**AX>kp;XY^ z#(d-E8~GC)g3yYlvcO7EZ->Y=$~4$jFZ`En!r!o*1n*q*v!PkLeylA@?lw$mytmzh zzwnmE^J5r-KbItPeGbTqmto}c6JJr##u@oio=klH3aBco$Uw-ahzItu=H9_s(gY$a ztgC>SQWz@8r=G|BH zoz~kqqO?P+)TBH=8z(Wh@NhR2H`>Wv5x;ZhRVib_mP50IDvKw5xLno#^ZnH;P~?tYS^tAW<|5!nA_B4YeCDZY{S)qY4kQu$82IcYt~|4||mu7X;bqTo=Re zW~_-jYPz}Iv+_9hF|dY{Q>%$iak&~>9jxSKl-0P3WCaw3G6TN0JHC#KvsHw8Nb0OI zfoL?f?#ysR4h6o2M@qpYErP`E?u#&RjuWc__HjK!%J8xO=i9&83>9$SKHrN@F{|2)NCq6b3|^00!iwvIQG^f;>8a>5Wh{MYxz0RYkyFl((JQv-9+I z=^8%4bV_bBbLVJA(3cG^bZ*8*?P;@^OvV?myr{Int3x7f4pny{dw3bvVpu90d*!;P z5A-QP&P`(rj5@|Y#if;xZz7dX+2p6H@**dR-}nl@jT)U*k$P=e{FcuCaAdDv0GAu5 zl_3%oj5w~$haXcVfZ4MV750?wl@RM)_e$+A zB`u-VQD>5AL0kfot{v__6hm&gw0ar65FiM!k(b!kx{|>6cJ91Bgptk1_7NK9GYLg| z;1I!jc7yX$CcLY8zGfE}cI~xnUE0?fVJ;S#*nnc4pf%aPw24RhDpG88zj)?u6T@Cp zpY~c!lwQ?wDR?1J`d0|?WolV0w;v_AUbx`rgcuEgN)zsG83)ewMb9HOUh1vXi4=v# zn<&C;QtWJd*;dA9Xbg{0OG4ZS=N)G33e(EERYi|WmN5V01vu%r4=E&2wAKH+yHz)D zmojSOa^;yqKpvkY!Rn5S3uEp}%w z*DiEEUDAFhpb`ECVqQ>YNq zv?@NiuRfOP%)An~0mqU(pOGa?g=)4^v-F;vFuK;i;~g-7?X)xGpU!;)@Kk%g{{DK7 zlLT}`FtoQ=ru^gH{UO)KMUDB-33iVe=msx3+7cHC)P#aPiWeeZ;j(RArRp)Tym*&% zGR1b zU(IlK%I~z!xa-7~1VH=}dPhbE=H**fp06DOM)7yA#~F{mc^`fg=hzKPD#joGdVZ~Z&7|^DAM{F!?HDjw#ZOvrmHnP(1C@i(%hRM1dvfr8=)Fn>McWdKXllqELjBGvfY@h}D zD`mdujg^++EBYO@l_LEKb2=hdgnCiDz1@6Tyc;eiMeDUG;Y z^YIsh6}cY@oFqyUV?37pTYLuaI^Mz3RTnRshrTHQN)TV~0_C>b5VNJzYI)LciL!KZ zV|%G{N=r3^UixY$*AVwr12NBT-Dhi?{tW^V6J`O599hES-Hi~ST;6#Rm;Z#kApKJ> zJT08#u2suEq>9dqMHu-r2(>)yN&+iQ?)rQ`5E3LQktnFg1x4aj_`;7IwwPOb8(pp0@X%%^Gi&1DD!3M$~4d{NxAq%k4!tue3};f{LR0C;4`KV{knNK2{*S#>3~C zC6(ntfMG`dG*8dy-Xkup{i8@#apj1Bfq@Lo&0Oi+1OkSD2hk?8G4s)0i1@FnK8F7^ zqoJ-Hwiet0?kO*-o&L6&9s^TpfKj5Md-w39h2byu%2@%}>v+qkf+q62Mzy%8QB~Vz z15*Zhx*#k>){7uDSQ_wLf-rk&y60|ozR6+*Hl}c!Uks#F=0DyYBr z=wa!w2Ci_PjK1J3@S4;xzW|%S1(Gl^#$S!VvXgqtx8b6@x5FWW~p^F{a zZCLUw#?Oho4EO2D7lYnbv&qy(Kql2cus&}f8&i^R#`eUnSZGpg=mPc$_d6Q1U!zoi zwh>9{Fd7+WN;&G(cD60XBz;!Hf~c}L0nu{7dFvRA85>o-ve~~6qI_IYLBQimhSNxd zM*Kx8-NlGK3fbL-uDt=4nX1)C>Yu^<-69}yqQ+;usLowhSrCyX@jI4uJ2Ju*&R^}dj+PFPxH7JYf@hl8jjrbtj1pG zboi#ugb)SmYc>1~a6Tt5N^kbCKRPe5F*SFsrJ)l+{c-*JULb{*bU{NwYkBhn!@Xuw zoSO1Je{zb-&%56x)2G}9{z)jPskIZMMgtTyFOG6cXdKT_r%EuFH}ML{&k0JVcLOLn z!Z|8+PDWWkOCqw4jg)q{s+hXWcN%C7YkcHDmsNne`(kLM*V)qpx|uy z%C6n}OBpfL^j9G9d9_uirydl|I-YOtlXCvmJUga-x~zr2T#mgHX!8vJzK5O9243<}Q z7>fr4Vlas+`hLDSR0fa%05t~hl_#l7j>G;{-QfULch!~vYtTlmS-)4L06R6TGCjx< zNrWoW+RX+e295JUm?WPpZBKV2Hw?Xj^mRklYj;LvsmG`qlpHKdpEO@K_(Fl-1l@*6 zZ@6=HELyzy0nX)^RbTD3f2k*&p8m7@gZqQ>&+yMPcJQIBp%58`I4P>#a2?RNQ($iI zESv#$FQK`cm!0?FNF04aKwx3UqpI!cq>o8MsP@vf^IfWved5+>%xdj2u5uOg#*I#!4yOj5yz!5j4{XlIR-^p!3sN2Pw zs_5%No<5D!&c6w-S|iP>MnCK!q=U-sz-$1Rt5i7?#l?dV_wB6G*|Kep1+Z_CW;w0A z7Uo;*-OEDOxjv$K|9BesxAD0+Z7fp!*7f?g+Ig~_5nYDT3=9BVJj z#)hky?kv^2x5LM+CIw#+!sO>&kGy&oZ!oQ|E3XE1FsYN`Ej1Vs2L;?o9*%nSC<*DsPd_mynD-bB zGC4ZE>OUe-l6oxdPuuO*p^^g`kV1Y7YNF<+glKUa7WwcSCWC>ef?iH;oE(x|H7Z;g zD=(=3ISsLc;(NqE+3o<@ZrxO1mvCZmUaIE1BxSPVmYQn;TC}+kLHm z|Vvz=M@6j>1pU`Lf|K;Pv1rk#Z|JlDaQiR(7MgIKFPmA=IQ`-v> zeNs9J`0&%JdMk$n9y_szfslWRq+cF1Y(>^_0crs7yK$ngq{t?&(fR#-O(o>VWlVM7BOM}b72M-)MF{riqDzc#D|;dVR7EtJj>jR+=Sqya%R)`MY(!V6D#LMdL~Bsp{?{K_A~}=;`|G&Vsd*R8w(M(X-Z)$4kEWhi0Ro31@XIa+xHm1HMZ^olbKZ(u*9kAU*Tf6Oft4w@{ zCMzxdmP3I6)R(UXIO*9{@)?Pnsx}!Lo5av(FSjyGfWJ#1yxWjA)K+Ssk5Uz>W_{0J z9Z<=p97mk_&WF@sO%WZQlb^Wj;d0}_t=z1?BKg7VJ`X%0sliH&@sjC|TPx35SD%&9 zE-oxa6)3&B!W)!-A{8$M=!o1x{fJ)TXKL}g+63R4IQz@1jL*Cw(7@v9Y%2|S z!!MWNfmPl?&DA>Wy&a)X>ac|-9?s|QHFtLk((5@WZ`=j-5wAx@QFn^+2E0vu|4@uv zZ`-3i*|fh3(#dt0xc7_P6vUKCnJwY(q|81aJpf)k0g9|MHpq_6@VWK(JV&IEcnh|JDt#2&cyq{S4 z4v9%(oh!{fpkiWSyLyZW$tweWVo^@i{W$2?_wZ0G{}XyVoy4d@0&T=fqP zFQ*$V7%pB>UU5Xc%9L;pB3#{KsDjtaD}v2_-qUBnLxQ#>A8!FB+tt#~b=F=4wB&2R zKKQgPzVY3VB}_|yGbycxL5&VF;Ks>)aekfwbG&QVK>6l(17f#n2Ena*-JO81NNK>Y zmw{)2R?k>UVBB4Fr>oyQa_^KRwPt@6lB$t{k-C?Ueb!#)VSUzaCAeO#Wfg5=y+>%$ za7ku)^9;6ESKX}Fdn7qY3?qva|B(~SgMAz4$q=fKX?pjvlI<9|z}!5<%}f{TVa%zE z;X&}zaC(#7ETgqIOnnlKUq(xd+dk=?Qu_4ilyHLDK?()tFdg4qj7mhLS^DTnkVI8O z!TpS?%o*BycON=h*y}+}I!?=CV5`PG5G_nJsWD39=SXhRO{u>!{WY3hoPqnPh{!UT z9|G;~;3f6V4y!a*%l=;tlg8_~?1=<8XJ)s$_JvGeA)i!~$9B_*6XPT@4Lz(rv3AxC z>nQxy6WnP2;XwboG#3M6=R_M2@9z3@zuYx)q;oG4pp!HPd3p~wyj#)VS}x+j7i{jA zKCNudG}bEt?f`j($x>i+_LY-*%utd$W_8q8`&%gHV?Dq;y1je?W#p%a%62Tnf0kCe zYh-l2n;=lXto2!3X<3*%?ZHu|Dwz^AvlHKZ|{UBefK)?J}2OoS#+RZI!Z(z9CR_B zSnS5v=C2vVqRH7}593LFXX+7J{AP5LBpq!I?Gr8G&EkfAZ_Nbp6 z^@{g&5gkufhsRI_wscmITuKwLKoSRvnrovgey^&^=p9WG2rTC~r8eGw*^C!7%NPE1 z7>Ih3^NyFThXEZl|B!*)S zIMunV-!$`eVr&rZ5`8&;uA=BwS8dajAMx#5p@Xa=_QY2%sOjRBF3{D13{+ai93GiX zm9;4~yEOj!wGyBX8G02JKDpS=&F|h8fguc#A_1u@xLQ5ZQ_Ber7|;b)c|-vhyS;9@ ziDOVj-53V4ZRznuHKP0MtX-8*E#wHHV*a!=v{0IYd>m$DvXzKWl$3uY=<yTVye)R|p<$NeyI-B_=|~x7H+Pz%W}BzfY#Y*WfSggj0V+|< zY*@T88-$bsnpP^KT$PlfqPSy!roGa?IyGH8{N$$jCaJH2u=$UNbUd$9*WhCXHN-!J zC;k;$bH`YT?`NAnqv5~+mi;lsbh%zA_}Qx^6GPHVyE{qHj*D(A=5J1_&8&21GAJjx z?Ec4a?$6JDjn(iAH~Iap&D8DhP=lM{$(@*_@E;J`qTCrEpFSbswB)Hd_kmo;B>_A$ zqESIGIA|quOL)>Z^K@k|Xz_YQ^*$_}YwtgCLO9EP?}R}OauG_)`7J5;-b97-H2UqD zQ6~5T&?^q>^$45!@37s?b4%*X`!T10$cLCcRFej-`#WzSf z=MHbt<=_~me#t^z%LfgJInh$|9f2Qkb-E$`Y62}AuDy^|s7Vjl<@;QET)U4Y)nx=a z$7x;-#OC-X;GwazWwO0y5~Scd;N`cO#Q*~i(18EVDGYQn@o$v&qso-_Np#fGz!hrP zR8*K}WtrY9Df!|x8%84TRKwMCH1%3FU@vuTsT@bcD&5YmPXN{&C=yYvOGD~cj&ma* zKqegI6%kxZg=J)c0_slGLJ0{G!qR?5GzAraV4JO|^gRMiZL5&DWqW zaw&=*JaN0|FXbeA)w6}oTUrC+(|?9vwM1}~_0B6az+jo{?!Gr}Az@zC+YW{sokvHr z65AFV5tLs!_t;*D2ySKhxZicdLgZq!1Q%QaK?refd zEUoYDH3?;I0;MxSuit(YI%}NTYjZny9DHf1atn@h>}{#|;~J`Yu0UuN@wW`Y__4s! zx0k5>nK^0ddZ?@c?d(QT{pyOW)%VLQo9PAH<{IvQ7CLj?W0KSZ7a1BLMb-YCn4*~v z`j(H@3kXoPac^}j9t{!y%4pSav}%gDEwMmyRzItyMULkyObuVXT;`Q|HjMYu68`nS zY|-b{0CsfWp*rrvf`H>SMLLL9*J;4&+2YeDh zD=*`rrE*gT>cb1O>CSKa%}q;w(!t`t9F?LvWfa)oakS?cmM(@9#>UOSosxk&;^Q9= zG=bW>#BzNj>7s-^vI$547+0v9MQiAbcc9Sj`r$eXgCyv~dS&fg*T1hhz@^w~8ka3`J8%DZ zWQB`m76%&OU+FEb0tf8z8=B2`UhrvVx z%xJv~&BX5b3uLEgoPnDS(7_M4$%kPoXa-nzGw9H_K-u;kjqi>5e=H^o!!C;5w5(mF zcuHNBebU~_kJ3Hd*DHJ6IiRVUPF;qq z(}+lw+*FaSN7}xdJ=}X27zhx=i`+vFFk!N#w`QVltR$Tb_=jD~)jSvE|K3Zjys0-C zG!3Mv>H*#oKDVpWc~RI;YK2Mnd6#ST!?@X!HTDW>MditvqFMLNc6ac912-~>XZvOb zW_|Acsen|E**`ivg|$p>c2H(D14^6{0r|h3L?H0o+ep+kC7ti7l;cw z!{rp96!L`*PhJl`yEe|L0WO|t)G9detPM?7?hn;Be`uaLCxMuOllk;P$OMA zkAd?n5;&n}uAf_WJ+1i+R3Tvd<91rtme%qFUqfwT=c3(Jg-q7#rg=2p(*0n}42a{5 zhy&$l1BdNYnH&u!L^*e_O&ytN3smn1VZhpCf*P_k;l&K7H;@*D1!5O3>(=p(ri(9& zz)=j;CvaEFQ&&tQ`Rpw=K|;Bl4)e8w{f5{K0^ZT{g1fG^vAndh)%Ab|TcmCxWads` zmelKBqxx^hvUh;%#rr2PA5co0`t*NhPr}yQ7Jx-Us^aUB*88`=v9TBaPaAeheagl5 z`{4i66%IF{dFk%t?P;CbU^BFHXJWpy1H5z7stJ|d8Dg^~hA2YG4WiX`4+QTldOwKU zmDx?)ftK0yWS4_sxcs;}xiLvak(Qc)y(9mij;LU2GhxdVu&Jf~o20(_m?DD5VQha4OJ?g6G1F5@OVIxJ5tB5Bb2zjQNmP>M2G z|E{sXWsNK21$uX|aEo57w#x&nV48`Kr|b!DMjwM9XtqETs)>H-Owgbz@o7%4Z)sZa zfbM|y zT|jT)qOH|BhqEcMG8LZ0HzKpvetISQ{!Q;PHD01qZT+VN)LP-zz;rJ6ekPI{e@qP3 zGGvZ>>J9UAasP;KjbIePH9{^cta(IJt#6wZUr-9*DAM z$pgG~QD9DlwRinUJS@%FKbZ(+hs7%pc9U<6Ui93mxafH9(b-u8JZG<-&SNYm$&FZH&vbe;bsY+u0P@9%A`qBleHN*0X-tzdUzNEbhNnHJCw z7DfGOUAON~PUjwfXAyEK8GT&Y7Am^N$n+Anchx$;UWAJL#pw|d_8~#T$x2hk?6B8$ zQ?aYnn|mx3?|imd6(=Vo!9P@)=WWVYq2288#!zlWIqMQVMqO;ep}Q-J;J)&JG*p16$x-EtBht3=fflZC%F zGaETd_1c}DO)u}ER1me-_-!2DkQ6*t^dzyC;qU>xx&bJ8$|9*DpGQFDku!NC)+8be@H2rr))BUf!XSz#xAXwlBaQeM8P|aJ;!a*&xxaehzfGsjRZa^6sb$@Yg@sP z`T9_p;dgDV!}r9y3~gZiE|vww`8sa<(BX_6`=5gNn^eKqWnC5qFb=pT6+{>j_W6L3hE!YX0g4BY4a_tRNOq6X!#Gy z+?rO`R#gs4cs+`rq+<>!*Bn4?H!fP&&kbZPwauqRo!f>{BrlTS@L%A1D^Y9Hj|sSL z7IpL<9y0&JiOjcjAuv_MO>^(x41m(ledk_}Y5ra%k)%nP zHm@{ci*Oh476Cego&XS_L9LIw3`d54H2^<_vv%AAY0@6Dpo)o&U_T9g-NEVv0MF3e z(!v#B90%s4GAlE|*6AG&4*KC?x%R(DlUGpj2438f@e`$2>pYx)C+@!iwD0RH;#sa< zs@5~}!8J1ygzdM8&*ybgR3~d^h@K`T8S1>bg{Zs`^guLnd+uQ!%My$(mRR7y) zW!(xO^a;N;9E`RnzN}52sywxq=%9$@FT}>Oz8r#jQlrbdqg zs94bp&Wv&Fu_nDODhet(n%Y-ON`-^t?yHE2HQi=jxBOXJ_Tw~r$cr_>nqVN+SI*Ij z-=_u8J)sbZfiBA0Ym(_5RZ!~y@1DG$--ru-;li6!-7Q=j(Z>fpV&eXUbM!Qf{*Z_? ziGewfH(>sI>uWYr+G*oAKtL2bCpFqskyqdL4NnxdVfeSAo-oi?D9Xe+U?a6KT2D=v0MB7 z|L4rMf%^YGvrUpeuXTpP5P8PI!GcYysI4SKp?e$CR^j#RXmU*++mm@ryJ?`F`rm4l^(zSo=0DRD8BZXLQ7$`%XrQE;-5q^IcVY*J?r!((fFCJp0WS zS8z}xOODQMBEK9}Sri{uDKwBleWBse>A-_gK}K3W0X}Z&x`_?!h*5{5#kv zgQ%kDLI>vO$f(=g=!BwyA{wQ1$K|c2sU7IGU_3MO-;WDR`+NWWlz{BkQ>Ux>}l|%1Y);1MEqw_mzp16hZ+ zip~SfD*?Hv2f1ABV(?e0%Hdj8UgLz&)}WOm7>B@`Z~=}X&Domf@fs+Y(1LIb$u9$& zMbMpNr{csIAU@W!vPx^Fp2GlHOwIWS^TH5Jzf>i)C_#SnX?Zt1Oi}(fmwkfGm6Os!^;o^< zRpb;jWGPZOO!P8+AVCi?!wW>%Ef>%9EL1K}E61h}#KZ^sM36AxkMF{Zii^|idg`0T z9UYl&&%5Mi-?V{H^nLpBZlws8CSy1^nNUyS?MwoIx1cNmxvzgbL3nrO7k3PJLFvFV z<$q>@d4ycQkCIofW#%cdS6LBYV*ukKaLNm%iXPnzCnNFB_j=J&auJ|J0s`6^ogLJ_ zLht!YJi?NR<@TK$nlm2AGSKp9~zY> zg>wdHJl;^!9SjE&X<>8g&|DM2cERU+Q=8t($huE=^F$Vmbpb0(7(|`Ty%ng3dlP$F zyUe7pOv~M)-hU>M?`uW0C8do*+Wr7?0o3a-lChHd;(Ne>fx&9<>j^?3_y$J)^8y7~ z*`L?#)*P$t-q2^esXr`utdSf${1Uf8jxU@PA|j}l)6`Z|Q}_YNw=jhiVTljYy+`U6 zm&Z2Da{VYGETh*w!ru%mrcQ128p)Mt#{V_^3~dO1#aahTnm^hJpIY^DjM~LVkh~-NWvkrSKroBYTHmSz zbM6S3VSs(){A=B3I`V_y4&KE4?wtqIM?-NwnU7i_$v{JB!Kxa_Wo>Lums1uH+M<}I z0)aQE_sf;C-j6&;7v637&25F{@7X7r6K%H=w7?>-wqN-4w!RT~U4X3IfU@u;%&rhD zy;%>3t!_tlIjAf64mW>wVp>i^lh*6lf5aluEOis1Ln9=A(>P+tcNAyY_5K>TLkifb zF_rvr7kDl?PplnF`i5HaLCQWlQJ2mh>Me7_#xNQ35m)*;om;UJxMGz4)$Wu853wh6 z%HINN5;U%L>Sq#Tt<&y1HGw<+yieua>j07hmwoG+=FM?UvcboO`yDj)3_0Z8Fcw_V;@t)TCn4^e~oXX(lw#EzO~r5%o^enuHMA%uTwZKL`+t#oBs%>fKDPU3%H25<>JUpRn< zQ{(U#)qgIh0)F|ws*!&~^f+6I0(@Zvht>#uj3K0vZx2ceaIMiR?EE`{>i!FK_U|PN z(DK)BL_xy0j8_MxJESG)oLt5~;8uH(G{qNQwpty;DDHwd{*xuip#hh3+Sx_jhX#FEa zFiReFdpxDF1d#jgSK)9Pl`5<$HX5KF2=IQNMvdYjImk81L&bJ;Bv*mHV(&tLg^AYj8P@NO=es?rJ|1_p>EE)kTdH2PSaUjSizMQZ+k zhxikAk4~s#_Y-;f5;$k;Fc`)?RPkm~!avecYtnm7{kyBeLU~;l&xXX1B&mBp7Qzt@vBdBZN-1h%vxMcQk z8zp>ho!eu9DN$B?E^q=w#!Om}ZJd&EfI{bdmF03bD2LfV}{Y2cX zn@Vatv^lv`nm9j4ssG2f$$Iep(4IB$?K)n25@Bmi{yIBCdb@C!FB7NJ+NH8T3Fs7U z0V&_R$B!~%w$r9|9+S0x0!|29U;UG?dn|rAEk;zehW~`47@1?)SUJPM@WJN?3o^PN zUe@tsPy_PvYqB=$Heevw=d(IJll~W`0D?7Oq|?3Knx_9!WUT2r+L9)Nx_uXGu0o1o zp1j$b1}10_0VV(!8m&?zc-$b2f|4bq46v&eU&mS&+Uq#Z+wNTF)gL@rv3JB zn+IkLBi~Go%z{WY58b%G?$7WJ43#f0T*CU@=m(gCA*R$@d7k7}1TZK-zkuf0>2b1^ zjhRB|_UeAPj+@y}8H$Me`=`lhz2GI3jRko{gD@^W3@5+eMv6OlA6BusaT8UQ6ctu* zoZc|hQpATQhjXv7(dc`Ez*gyuMg^xVa2#kNwy7_MM$uKr+x3MAuU;Ogk`pp|5JF{CpKArknmoqxbYzVB$+Kcx0 z#FLX}ii#q&2yblq@DJ8wJa{(czEyZ54XPB(^*C!-*$(i%P0cfew$Ghk8!{sBb2fO= zfyx?Tlh&Q;=_xvS7nZT6Jr51CjVSJe&zBT_)m$H1eBNEqp3RT*Mv? zNtvHFhCU1MgL$?b))UH^b@1s}N=odh!S9ww#-|v1jH&X0vJo4OjD_H%8R;dN@4&~4_Ux0$Hysk?!z_=wn6luJTlSi~wH_g`g-SEOYB z_@FyY$rtThT3j;k4&7bNKcN-5(XptD_T0_MA0~F*I$i3&WXL0i7bxU`_>!$Di4oE z3H&~v@NwF&Mx{$BUnyyjV35SgBaJv+J>lHbUsIF8pPtSui-<&BWyiKA`+&Ubn$oN*fq9g2}I)N zeV`qG8fWj|tH_&n#?Mbw2vJp6co=#kZ-d=7340|!!n1qBB+XC>Ja3W@&W&_XmEvBK zk$_)Xz_RJXPG5Ut$>BQURK{HxY-?d5;P4=9l-A)=Od-)>VI*hQZ(<9+ zwW5W-kcoGnLpOXMQa!XHS#jt#48GyWYyJyuBj50}ToC1^P;>7$4e^6oh;j$L7Q%<% zlwrbe6g+{&E8wdt@(ok>B>W$0Fdr<5vFaqBX}Pd&G^A_$NRyWCQ7lIDGD}xTx~LdN zX}4{6RnL0BR%)z6v=T;K$2H=0B$G_MD8nR!+;CU&G=XPyVS5A7qPpZ;+w)r(Y;>se zR-(WaYkqpevwmB~`0%SYF14{pjjGh-)D2y$Y||;y9)NAS86jb2Ybzl^dwzbOp`Uk( z>W`p_P&yMs^(ji!oh)^=5VEk===!N8gIp;`F6)4>C!tR3R_?YLJK`^TY@BwYSJkTw z_~gs?B*E;IVc*#(x0C%Rth=(TmDIqmqkBszGcro&bIX*+bkFRprtjv+mYu0^rG3|_VcRHPX$h8uv zmw89j)J8`7ypqSDXZPcDf#sFum10!ojExjNze_(i{9{bv<9bSYM~wdpl**ja9D?R#V5Fpg21cY~^GCpP8w{lvfWv z7QI`H#x>YOX_>h=MqZw?!g{q}%({3aotNC(G19{O%-sA(I!V&IizcyWAlY*k+2>5f zx-c%-xqM7+6|2xz%mpR!tFGgbo7xFog0D_8%-8Sgw3Kz`I6B6gYDF$S9a=72`L5f+ zo5r^4gu8uK<#Pr$O?_o%Iqugh+c6jT_{B4rZFhEGzRb&uO0U>@57&j&)}&&exemQ2 zb3_R!DnI&DS78oq;$0DZcQRdDf+~?PYwfx7l1!TLacKM|OM`XnB3sPUVIpGno;QPi zSp(kQ$O{b~$O;M?MN|a{q^6?xhO>?GSm*-|;}VFTyM3t%lj71PzTV3lhqLZ#!K(3v z&s*8p6Ff(#)a}X2ISO2QqGH@C!vy-&K$OVCrLo`G8cBPx5k+GOgRYGjuUf`#8aeuP zRSUfYWn6Vtieq1Owb!jHZUhWuJ7E4W8%}o4)ktmd2zq=tCq`U8nnvt32n_i2+nb>Z zlVh740$ro9hkcQW=@a$cw&GUw)nY{Ab?jBk^YRQg$>Jv0tgC4&N;Inv zgbrYt^c$=XdC$<8d;cKFSvu)xytT+uP{75-rMjAGuvhSQ>iKF0HtBtX9QCjG5>vCG zEz0^^6uUrn6lt#^zP>D^Dm(UahHB-R1D#XU$r^vJ{oHY8?jrx?X-dSfX5pN^ITK{D zA5{`$A{4L{2#!2wyAWq@E2luxbH7ces~YsOJto__;gWRukgv7No7ydMLYiw%1mo3u zqP{_KQ6Vzy8aB7m-y)C#Hu7Y;&h4im4?>EhlP+j|x?{k;yowR=Tua$Ii0TfnyTXi^ ztmeR@RSS*7B3iW(_3MYRot183xT($I&!Kmn4Pj4apyReBP?iBBHC?qIr*f_8m=?B* zd3!6?w-0lv(oRxh+h0kP9c4vpHj%PtVsJ?{MBE+<+t$>LI8kn^ZEA3H+FpLupr?O| z?34xBv3*2nV%_ny8f>`dTP-n4a5%8q8;nRAQF+5MdCtncL@}$@au!HTKb+YzqOM1= zK-9$WG6_45e!dqBT;(PG(&U_wk_AutlxCve{JJu`5L!!_8(90EXNaXy7~Lz)Q;aOL zV}N>bG+gV{mm>WbU+3;L(*Am0&P@D?(8-ck|KF#~wkUWSqUysh1|@nis&sFz9I;-Y(X9_@Dm*f2v;) literal 0 HcmV?d00001