From 950e464dd5fd8580b3bf707363800352b41700c9 Mon Sep 17 00:00:00 2001 From: Aliaksei Labanau Date: Fri, 27 Feb 2026 17:46:03 +0100 Subject: [PATCH] fix: update libreoffice to 25.2.7 --- Dockerfile | 6 ++++-- Makefile | 4 ++-- tests/data/test_long_table.docx | Bin 0 -> 23571 bytes tests/test_load_documents.py | 28 ++++++++++++++++++++++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 tests/data/test_long_table.docx diff --git a/Dockerfile b/Dockerfile index 5674782..ef2e7a4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,12 +13,14 @@ ENV BGE_EMBEDDINGS_MODEL_PATH=/embeddings_model/bge-small-en RUN apt-get update && \ apt-get install --no-install-recommends -y \ ca-certificates \ - # Libreoffice is required for MS office documents - libreoffice=4:24.2.7-0ubuntu0.24.04.4 \ libmagic1 \ # Dependency for opencv library libgl1 \ && \ + apt-get install --no-install-recommends -y -t noble-backports \ + # Libreoffice is required for MS office documents + libreoffice=4:25.2.7-0ubuntu0.25.04.1~bpo24.04.1 \ + && \ # Cleanup apt cache in the same command to reduce size apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/Makefile b/Makefile index 90b04e1..0c0f7dd 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ IMAGE_NAME ?= ai-dial-rag PLATFORM ?= linux/amd64 POETRY ?= poetry DOCKER ?= docker -LIBREOFFICE_UBUNTU_VERSION ?= 4:24.2.7-0ubuntu0.24.04.4 +LIBREOFFICE_UBUNTU_VERSION ?= 4:25.2.7-0ubuntu0.25.04.1~bpo24.04.1 ARGS ?= # Check for CI environment @@ -43,7 +43,7 @@ format: install_nox install_libreoffice: @echo "Installing LibreOffice..." sudo apt-get update - sudo apt-get install --no-install-recommends -y libreoffice=$(LIBREOFFICE_UBUNTU_VERSION) + sudo apt-get install --no-install-recommends -y -t noble-backports libreoffice=$(LIBREOFFICE_UBUNTU_VERSION) test: install_nox $(if $(CI), install_libreoffice) $(POETRY) run nox -- -s test -- $(ARGS) diff --git a/tests/data/test_long_table.docx b/tests/data/test_long_table.docx new file mode 100644 index 0000000000000000000000000000000000000000..9abe3a79948a9bb1880c4a6d7559d3ba196a82b3 GIT binary patch literal 23571 zcmeFYV~{4nwl4g(ZQGo-J#Bm1wx(^{wrx+_wr$(C`_A6`o)br3e1Go0dn;l+6;X*= zS+Um2%4cQDOM!r*0>A-~004jpFwX}T;06Q$l!5~QC;&)cO(7d=M`LS8T_rbLV+U z1lpn7HwBH5@1Ix9TAmY;7dA1PlI8pC@Qfi-BQYQMDi+!1A&dXf@9m7uF#!5-W@y=; zQwNQpTEe&FarYObfg_*BdE1BuWr!n-kul6lV&3hXRU}+|9V;iGGS7&OvtLG$y4;6j zW$Gu54%Gy?y+e(%ap571&qeTEYDLk9yMNxI>`HU-N1e)ZS{Y`6U&=z%QGGX+i}BakzP~{L^8d+W@#CrB|JP&G!yhKvGag5u@vp?H+8# z(UZyN7>NYcSU`k2TKF_Jc-%{9>SPbfA+_++VF`>mG1c^fA!&U7WR0)m@FT3BY}Z8U4Z6EFIGNf4_kZWD|Lz|QwG*}t zNC1GvHvsVW25_;lH=;MPF?6!}JFWd=KD*Geipgj}|MD(+ClGzz@}GP!okxSJscM+3 zYU=cG`No!*Re2H?duSH|zp%z4I@?_Qsz15qUJ-%h_?V<8^E%nA)9RP@X0~8A z-C9aXTM$9^67A^};>R$JbbYy%J+zC6LxnUA=WoHikicOM$>rXrDfo=MrIAS|u>g|fa01KE=D9J^uypmK|TG8#n;HShgI=k76Eb@!3fPR z$6#lFBs$iws=$ub-#g@15gcy^^eSLqOpqm~LGGO{ttH5}U6*sN^EvEng#1GTuhGJK zDmFkKe29(Q$9}%WxN$DZz3QXQA&hUL$%NI%7$Ldh(C3`ENm-99YqHz@Ou!TjzBE%y zG;yO!6J*vXPlBN8B!`(gyk=)saAZ+Vh-y2L5`;Mpr6eQ_5nY$4^tj2wJm2#v>M6t1 zX!jkB(oT~B#rgdDeH!zFO9?p^nQm;J0LCI$VM&bN87H|U-{H=0gThM4Cy7&{<5g6R zaAJf5f?%U6Mrt%AWFoS|Nm@L&aF)s9c>0fK4oxZ#)8m_j@(YH!iZ7|^H<65xi>5%7 zr@i*}2LTniLt<*P=NdBjhBo?g^Re*yfu@u<+A?|Rlu!Hv+{N>YA9a9Mu(exbcWY?>X0SJR)s-rkTN33L3&pnFdBxB03M~_` z9*y;G^4@sw4iZy?eQMRzV5cI0t9<1+nHWUThQEiBMACUqNX4tFzHf^K}vhcd?ewv6leLCTgyLrq8qxE1*Zk0(5 z`nXT^roz&W1XFc&^v9t2i8>#TVYTPh=ig7LZ^}V`)R7a=oW!0lBOp;JkwS0RLG;EG0g#a1!^})g7KwlLy?Cypi_P8=;93!PHpGLc< z&wQ2TrZ{QpiW~fxFKaVdA5qkWf9s#Yr#KnC&_PqF|MXT@mhqV`2@;*_QZv1*WaNi> zC3Qxkdf>txZ!;c+&oaS=Pa&&J6L4l^ z6Pax5-zq)R2&5KgjWwAcv`d|xo&NH)j37y2;sgEjSg27RzslpVlJ6HOv>%c)pP zD?Z#Z2OEKa#R<5uPlJWkv%QAky<97u`NN8W*fi8s*k-~j?>$*;+qP~r!!OhD7Wfw$T!E?r*JPf${5&RTkQ4vZ_v zcsH?1;w*eFRLFX|D)F|p8rK z^42R$er;;RO51{*0mmg$ICV11yxF0okzT*Rk-85^>Jy~gFtAD7KpLvqkGTDSB!*;i z63DP0=#W!}&(p%AlxZg72eyGA@NSSk(KqeJF-p zq#!usVqj#wtV+m~Z4zPfA!v(kB8by;BFWcr?|-N)?GZ?COGN}yA=_1Qd$%5(+QL)G zcZu|+H3}&F1rHpW9iHwK(n)>2Mxw;nmtHyhY!0+Vq9n7<2HPH_h$=G9f8^SF$23nD z3u*X&USB0kp*fb4$9K+)(7Ni>*B?Rm|65}_^YW%Li7J;2DhDZ5G{b2m8@g@(w-O`3 zCKUvb@IQ@TC&}d!$>L}u)(B+CCJLfsQNE5Pp20y=<|ElqD&A{J6Ru>lf4*nu?{J?RzfYK(p@Pc5B5p%^X8Ku+|W$UVKj)x*=)g zwpS8UDgh~Q01XE8xc1#N-zZUOS(o*A`h1P8BRveGo`s+iCo+&y8r zCb21e|NQ#MMi>(bK=9ID`^`4heU~f;lD-QZ4a8r-g%FQSoJSXUV2M?{dp!CY3Krc1 z%i(5@{y8B{MbBppp-bC2g9plx(tJSw$sAr%FWvmko|zL9+YHR@GfxH}jx}qr1f3UB9s3;=q{BR;}snfN>aKj(*3qTC6J^J%KWcJY|<9 z-W>IdgSTcCfo}1vP_OVhJB3GRJ3*2%0Yx?5^h`oL z@OOgkkGQzw*ii@L=iG%wrzegW+3>1>a~c`+UnHabt1{}4;il82j@or9hf8W6S@C&7 zm*6A!4UutyKo7>++i9+v-@XH9se`D>cG~EAD4gC}jx}61w?RH~TpRUq3TSXm=QUIZyKXhDUiAtFx!Y zp6>0lF4)KU58Hr8@oMd9B;9E3<*Pw^`p((yZE-=vfqnR+*#+TgfJ9+0Z6gqZaRIOR zNPd{H{cWLpU4J~6Yz_b$3UqZJup_tVBfW(bX;Lnk!9ENJJ4%vewj}kRr6WLKzQ~-s z(<+eUK!$$Ygu^&Q5NP5G&@iT0u_QU&q5Mj1LQV0*r1rJwW@6IL*;TfkCwd(rY#t>e zK-#-|z6c`<5opAIJttX|hm9iwXsC0?+|Gzx(<+G-%+h~;9Jq?ljW)Ar@vV}xuYb$9 z^{9b|g2ngiALoJFjzBCx1%D9582jU1n%5>wZ9j7#F;Q%UtZ)5Q3N|=ZUXpU7a+J*;Gm- zkH0k|+(C)D&V!bK_|Hb=_(}bG0fg^aQw;3Bddt>5?I4KvPR!egZaqTLAlSpqkVs@e zNpMaK)_z6-2aDK0IBiQ6UlF{<2_q;*14=}s6Izo@8exasNB@)^-3n^LA8y&;S6>~s z5x!wX!=PFH(!9j@D7yU(?Z(kA5l`Tv|F+Ks^9#h}c0jnbOFi(2Y@)lH+>kVO>Yj3v zds|p9w^7iSC^!^lNmef_PmrHw45`H!G(lDg((yUf0ip>dHOMiF-xiQJcrppPNTb1f&lZS8IPyW$F63NZYX&1&zeZ!bw5 z75@f&CR+UQvIIFM{?W*utiwFIW zM9;r*qCkJM7k_L2-+fgkPRjme?*p&JJA@is_6qq0N@eLG%Tyr|c7`$tc30v$KMpQy zHHu{N>fCSahS$>M3X)XMb9Bgb&9qHfLU<+#1+=kNPlNkCUhVH8!$|Uq82~MdDps^ytc(pn^;a7RwEZqmO+*yLNAnX6a`4^64c8rtv{4Xm7=HQ0 z?HGPfeJw3wW1-hm6ohoKqo1822o7Kos7XL5c>(*MZ0j++1FZQkwLS&|03iQ0nSa`r ziH(h;wT+{(!$0`L%H(zX3e0CwkfThO^oV9?pxRD=Nex+C9*&L3v216gRE%ZQ4w5D{A5j*R$p_ODcJR~{ z|4t%xsatg^Uy=tB9k+cDeb9I}9oEH8oB=-T9vOG@oUH;iOVP6Ks$%Be`zXdn00Rl` z%i2exi=JF-g$Zz4wBlGDsjJK6`VpMq(!8`EXQI`-DRJr^OQJrVUObi^6wP&KE|pA6 zGWX2YZwV}4jSjr@E7i$gd8~N0z!6%HDzMtAd7Ic5*ZjuwB!5JI+?N{-l#ZDxbQxP+e2skm&mq(RG$&Iaz{=cjo^aYdL z*#ujTyVYt9LOzf|dPbjA|DyRi+#w(XNKqHkt?2Wiey-ZpwWDT&^H=j7-Af34u(N z*J_f9GsJ8z!VIK)9Av0yf+CbRo_{VR$RHQ7mpuADA{#aLM~rc46+K1k#q^5}(Ocvs^uzQp( zvWlxJ5Ns*n0TLjbKB&ITliD8Y0I7<5>o0R**Qlc3KL&G!?j#HMDVw_MSJA-#Z?R zy!?rBf}rD~Azo_F_)=ozlEu5}yn;&@IGK8zxR@O@@{^EhZB0? zjqsOj0Il~4G{w|O(HCuI=d_`iHlZ9w(}rE;y+b;N&uEbWSd-NBNfKemGh|`9GbwuQ z(AH{A8Qjkg=h@WoHs_#KD{GgmKI^M*1h78?!*psi|9EoOGU1s=-cLM;(rB+1Yh&Z# z%bN$NBwJP8CF>ElNVw_fFw$QSdayVAVc))5)|@W?@L97df7#(}>*D+PA2UG%u2j(8 z@BlzB6##(vZ=u}GSl`Ilp7EcFAdS)J^D(zAh#PK5rr4;B5LDB%wm-cJ_xzJ{Lpzj; zd!(}Y4bZ>`NcM4!hCLOP0W`qfks&X%ipq%#UK?I9?eCbO85m2VYi72RKHi^nP5 z)F9m|D-vfSyM~>wP=A&$W+G|mH+YvY93K5Dmgl4qXg6a7-)p^_=HLEweXnkR-YwWy z6@sgTn4hCl2!@1X}575|2Cf1|pYAeAJccsCLSLg$P&U0b1&q>1dw;IJ5!Fj_N* zZi;`XnVEk>o1)ncHX(b1q6zjzHEDB?Up+(-z278c88Y0EBHRPv-w71HCqsR;rUVbr z>ICHTfr7TU`w9ENo+kA(5(p9N5ZC@iU1B=|A$NV*UMY|m18&d&*+fux@U~HSn1_Sd zVFUoj67%$pCp|ZabY^SsiH_?FKum8DkBG3!g``FeQN2k{gFW%2Hk(5KyzOhZ3%_ow zd`VaL8LjEN$*R|x$0Q{!$E3M&RMSY6Hid*4;etU(u^)LI!alNZ;c?Hy5t1()9DEZ; z{FV#|)z2rxB|O8%v5^4A%DyO=qNlmWXHk1cHPZ*HHmqA9197iwkCw)>>o_U_pmsAq zM1VZWyvw$Y>1q9sKsMB{ol0Ykxq$}4oYR4`=W63vfg@Xl7P`+1)$}@q`LaC015$J6 zB7k@hh4A7(o}*u+V$ymY(0&RT@cU8P@|~;U>emQgZ`&!Jnres-e&F06LzAO3#?S-5)w8QU%2_x9 zThNVWaGsiA7C=r<>@E!JCGu?Erxs2$0*;DK08#B1Z|S!If38Mt_KEfmcObPQH2n`J zVX!jh0HvolkOlNo#;Q|8ykX^JeX1|ncq_5#&x^wm(0J6O-B**wT~dKR>dsF(r88W!Rx?@C9Oe8 zH8a+RH>50cA#z~{CRl|7Og8QWw_z^R4~tfDZ?wc{Z?~{FG;dymfl4IMuF#u(d4Qx?)vz5{BoqKcJU^Etq7ON-v+yVEaMvdiEsA5B z{1vN~`GLvJS_XVKE$YzH5(>c!@a1JoA$o|v9&EnfN(jF8W4>Q;F6h5Mu9Yi>bV@P` z^0Q8A&(kb`$%W!ht2UX(031&4KNR_5_vK9lpkMDyblV4+DX|8cHL^X6N>r!7fQn)6dMNMfE5;r>L?>eQj!#tAwe!by+z*tuR zbO1}BEERfia}}9R839j`F4MB?>jK$2X40Q!M8^t7D&%?Nr?fv2g5#9q)Uk(=Vr3YxYRUsFhJjdd&A=HM8c~yJ+qyw=(oK?c@%kX?L@0tbMhUl-)`?am zL4&ndY@xw#OG>yOZSY@%4_$_ z->H*k7)yX21dyl35s)+AdmQp|4LM2{F@aMS0cN?EW4{=zi_L{=V)0+RY(ktr+TxFJixV8{Yo9Io|#pH`Nq0?^s}@LQWLC z>w9<7x|NB8rI`B`Qnvsti0`h8I?FV#%pi31RpzH1jypYj#;R#j6BlTzX5MHW0MFQ z%Gi@TKqrU{8H#d68^zf-Bm<^QJYEGDNB+(R(2~?m<)TXFm#aw{{(9sm#|FU3`pzKM z)+AWM;ztwsJ)moAK4Meu(*2p;^^{lfRUnK3E$(H27J#~P5z=Fo$qXoKNY2Bjnc*YB zVYg3(Py~fv5!T8h&&+&nE=~~cg;pW~-hg|k$gh*EUXD&wjsp=!pGOB>sHQ6g--X>; zR|&&E+Hz~1OL)=X;~&QqY2G^$K~tElLgt7RjdqzHOyc>2r-Y=RlcY8MuH31*I4!R5 zT!-C`v0VzU>a@-7c<(Dc%It?8fnI4Fi`K0o)j#(1=--6y_W~2*qYZ4g-z}TL(c7bW z#r#HdS2do7YIX!kf!Cj3xqv;x0!9TtJpb+aCwqK$Pv@O+H!(e~M1wzwhe0KAufm}=&8(&7X=q#9FE5osziJN@L z+oEZ(q>b90AdO*MBw+Z9Ck)v|=B0e^)sK_Bc!_dd%8{zVljiXLUKG{5-w-xRa#|r~ z&PBjk1#^Mgo`Nt{@PW=6+2PG)nK7cHX{z-`0e#k5Lk?_o$F3E^p~VFrJ7g>& z+ZNAkSieas`=?3qC}}iSf-g@N8%c+yJ$FDpm=uT*W9P7a7 zgzH|vZkg~)XzCQ%gjwX>XjJ2YWtd+P04 zHKmN&o2t7Ixl@yJ7$jkB#I&yzihi^|KM%=7qMR#1(3+(L2Z7Hp8lKoUJ)9aGjpaA|KWlsxwIR}-9cEdYaLy(b-3zoL{8*7 zwu=ILZQDHe#ZIDiOVT)OvGfie+D_m>=uTo$?rovv?{zp+>x)s(^%+$IDv5Z3=bJ}i zX1sDDJj7fz@XN41aM;yE=;Mu&1p1)?rG{ZlJAYnO6bd6egaC>iJcmqHdOGr?=-qq&l_xea+<}2t32rBq4lh2sXsLWLCL*UT zZEq8c5R7GX|NyR4*AuI-9nh!OX@Hn(7Ctig|L^!fw_BU*v~K z)hF`jV?i366KK2I%yTny4synlp8gyQHn)h4n`(|91>L^}iL`}ZG4K}Dh0z;?8%6*` zu5fqS8?3PZ!e!E38JdNwKo#gT@$9ey5B8nejDm@4z_c3|A2uBx_=9Jnd+Ly1?HYzJ zh!@PBqUkQSG}`V%{Ca z+s}8pHUMtSA$r-$NI@*cmeCQZ9W_>R;6QsA_ zH!$xk#9lK@yA6i(Hr+*+_R8lr{;Sv4!)4!9No!3z1p;7k;LkJfO*ayM=oxXTMuc_n z&f@I67t%%N$NW_asVr0_X&leP#CMF(Sl9SSWBm0u&i_O^ZWR!SFaOC^)k*0Waotkl&r$?3??`!k&F0hwKPM@>A-LFqi)g2z! z0%Cnp1~`fp#;LUJ@O<+bvvx*oI9);l1p9%sddz^KqU6Wb39q!)KOYh*Y{ft+h55(C zJRzDg`9obx)D8?+;a<_O3&f*ks9^G9WsWc?V6!DViKyJGHGc#niou8KQ7&#}%id!8 z}Z9Bqb)_PbH9`ArTj)G=Itj4s=zk8mP-?t-dKG@t+cxH_QyCW59B3vSFIrvN3kNoufy|p@8b5pez-e}*UkRv1*0bBlV9!NN$ zOQ0=SK@eAds#AFr?Rgni)g|crk!HE6BlQhDNI6Rf7xs>goMEP`S{Y+@e(*^lVr_UY zR3e}S%q$`!r1qFv{bdjylf?Nlz%%0sza{G^Voao&WYCi>dNeBEfaIne{1F8A}AF5x}!K{B2Tz~@+?=Dx;XjGMDRvPqDdSt*Eu*tWL2ges!?suZ5pfsBz##-eC`pvg4HPm=3(1A zzG!g!^!B=oF?Jn9D0Uk2dNTjQMhpy7&`5E|q#(&)6IPR`nCTTxUS|xVUx}?hV#|9P zoSb3*5!ES<-vqVCh)D*{Or-K+G-66)Jhe4V^xy{MD#^h-E+0fh)Ihzj0;GEOktQ>< z(HjXldjYM^sH;h#;>1F6V?xWMkfB$r1_Fp#V3LJ{M+aT%Za4d?q2kdCp3#iv_{hN5 zP!pD*fpjeR1foHWja0MZfUOU8ep3Q^hUQ`MQL)UX{061FAa2$#pilOs7?C{#3w-Vy zukx&pz&iE)gI%^C8Fa=dAGa86yc{v`aXeBqGvjSXb=9xi%dBqiuXX9Il_qo*SnVSa zr6zO0qPieebRG@K49`cV;ZU5&F#b=ibY3kR?+Jbv3vjdzU1s4RuPvEVJ+H85rah%E zxDh*)zO|Xfg{C*JijC6((ycT(j?K!=*o5~tzOu>BuH{p6E*Xk|@P_TG>UZNZ^7t(c z-cCsEie*||-KJ_t%GG9~xU>mUg{IijKU~v9d8*DtH0kK*a7BD6L0=l~BKWd^^53@> zWcsB2GQkhRuT*imZqI$ZS*FqstJ%hGGJ}r>JXWzIff*9SD8YU_JZ$asE6bA$Mc}-~ z;a1p>Lm@YflEgTze!?a&nPa@F)sn1+n9Z4GAFHGU{c30X)V~Dw#Ar=vl7qcdCXkuw z++!i2q!Gx@5o-Bi5pl=VrrZ34shZ3f~>JXcwB!-k)G`jNpsFgz>cX@8}Isf!(p>F&WX|7h-22W?9|M}H*aM;xi zVc!4?eK&rO>syqBztka6zj3huJ!$VDU;4lmC0MU{j_TfM-N}C9R1tNw69*#8(lSTq z@}tqaK>mkQdywR$vXnUs%wza* z>cYhH`4#Op48Gr^6U|nkR0n9^3=*CKtu-^Op)P ztClO^^1SPKOJJEOHD-;I3aBX{}Y|gCK8nK^qC;@YwDNV&V zW+%!JUoUm~&rJKhasML%D1=AX;Ey8B;L5AK7^8l~^WQ_Ub58i%);MD`#lS9vjTEt2 zD2G`eK|;ws7NI$bT0_p5iAlKpC)-ctHZP=oEyJOLy}puqyW|^w9CLydXa7s z6_RKp9et3vE5n+>7L-;R`IgXH`PInJX7%U|U`1k}@32{ZOxr}k_I|5vBAhj}<|LR^ z4LSnf`36wN@x8QHw33n{LSSDRSyMgyN8b~Cs@MY-wXY7E8>sZ;)2>rR=|>Ya^n3ee zn?E7-=5n!R_bNxWXMxAXogzEa&a{2Hl&V4RuW(0=||SB7yD{`8b`#{4Zxxk z#=g76P6f_(hTnTcLZ9Gx&$i(WfBP~e!an0ykM{dR3!FcPI78HawI(dI@)XlM{sdbN zn6~{DU7mamp3Un@J&ROZ{kdpiESNd+e6bKpDo}^5_=;<%O<|8AN?NOujitT{^Mi?K zYfSb}l+O3Jx94;-^Ku}lik_(`0`T->$3&>Gb24TDijhtO%Mf8h=gftG>!oN!o;9Bk z^3Q;ySzqC%Eb?VhQaiWft<}6*kH=+B#j5e)UI5Hjqe-xCBZD(0?;oGBO`qoiXEVMR>n(*8p;7k(x z*57wW$hPe#zKj}vdpJ(ZucydV8F*~zNnqc`Eoe-&Pikng&NyfCYya|eH=>p`bbYGz zWh%_hi4jj?E{e!lO>rW)=rH)LUVejTvEH?3)$}ykK)jw+V;qOf@MDKrLWWJ#vYDwI6K*`U}BlcClO2oU3?XOivt{P1_V`?H}NiB1#NSG z?=!R;@ljxhdttBPI)<>*j2;u4oX;)t7R6Dwg%G%lPg8N>M1svQx~(C=IS9T1#k37M zVeFDK;36pG*u>kUQt=~=zRqSGs&M~J-e$=8qTHo}7&p5dor_%{ZRkrr^>Pqw(#H7D z>7%_3QlSd+Q_|3r@-W51Z}8(UtQ435J4U^=g=?Aas`!Owe}*)-ikWOT_4LW=0%H!T zIkQtyASL$Suh+H`k0CGXe-AnR4>7cJ@X}cL@9u@jRsi51QTCsk7#tkkEdRBG;X-@d zdSe7_6Jq2iqJ|7QK5yG1EzT`yyydX0WsC`_>C&Q6W4a+*g-{*s@8mR_5ji6qP<2v% zz9GoiY4J{R^!GaPEd%xBtRCM*&yD_auH!BD_{a0@4qb{~?({=ODS~S}Z?77R85Sdj zOr4)w9uAKey`ws@7^G3+eTr|c*U3j7-LFR}-7k-m1syFiX85+gEItkJ1lLvJ2KQz@ zKM_#jr!hXnq%ifT-t%OMny5A2-IG zqoCQSHrEh;|BNKZjVpSk-Z~&#n?!8DNfyb73}TsfD_#!k(@fx~(t|GnnBj$Bjjz_d zq??MChzr`?_k+Ct&RPHrbNG?~7+_94aEHQ%R*sX&WpQ_HP0(a>XtU4|s`d@^mJ$Lgq`Is~DNyis7KGG(WHg??4HUKV@Kk-9fA{Wkc|PoM z8DpuF;)Yc)?esyD*1Y80lYEWjJaqEVhl_lxk?%p!H`=tEi_&-srWj?QwsK6+F?p57 z9ORhN(BADFA&vHPbnTrUB4`hPyiUu_^K9*_QjSK<^N?3zsP2iKCo#}R&YRkyUSCE~ zbQP(O(RY({?8GdTeUzLHH1IgkAun>I#6Gm~h|NRT&`l0tm7sqp#5{{X?c6D0Al7+Rn>0(5_{YG6jc@{6W7wS_Z52t|{D_GmT;4dT$ z6G7xn&q;*XwgF2q(q#BVgv$L=sd@Kh#J_MoX;(r@)h!xN(fZBOM)MLh>~W|5agc$5 zp+3QcZ%lB_>sczNGw1Zd6HT0s&0bu=k^i&O?2Wuc!RxEtRB_}@c%+Hyn>TH`Fg%{e z{f(~>2g&7iF%eQ$7bZY>qciF}MC$%$vR+7f6Wco)S^gaqybF=hodTj*A2GZAdUWgN zXnP0DWA3OnubI0l0#{cB#N^ePzI?_EuHe3!7Fd+wE$H8a%qM2J5z(_8=xM~Z(CBMQW}#jN3Lfm%K6tyq>$+quyHCpi z>y}TTZMf#2UG2M1Ar9;tUniHr>jagzE#+ls9Xr;^=mnjYqiS(={^0qu+}KftxKd9e zpF3faF(x`pr$C}2Y}!aMqA+1RSE`|oiqCHyh+F+YcT_)OD|o1fmqwDu?+hj;K(MP!#z6_ zsz~N6a%4rbJZPz+_e$21IbCBi1#Z;rQAcGPENd_J?cou^!LId-b{w7;S3LR#@Wzf@ zbo=K@(PPn~bB4veV51{WqHGoXkrvJU>25=O$B`npr;c8lwJ3=FVJkrBf!@jetxEnU*?-RX@s$inA1ztDZ{PZZi$B9LRaAJ zsAnE-ZRFxD1^DYm998Ddiyc(_;^fn3U2<(+i;~nyC?Vo4RFrOcgX*8QVQ1OjtZOca z%dREWXJ@$!aaA{xHlK8SC6O2>NlCMA{qym@-) zO&^fh`2%+QakejU28wE$_W8(TRxqcz! z3!W$WQA$#DH^IHh367}Fg*@cz=LhFrar9S#_K{MJ7)5!x&=jLig(!H0uEG61xR{^# z8bZj|2&55%EwS_^ZFj&XusBESgE1_)1ZO(+J>w%Y&Fg~EKgWuz8=fH8yV7QSakhnH zE$_|*PL_pCaBTOP*M0AkR__B3+$^&Mordm{Hj$@YyoX)BSn#FPnl{M4pld)MRQ$HJn2>QR~3;4h8@%y`x>3u-s zfmnVp{R1@cz>dnG^n73E(w5J*=V@Yqj-*VHCsL+JQ|YrL7<9QZc%V+~M{#<;$}vIa zQjTE7eb8hyW*&o$N!uSmUs>{&2l@eJg6$(KiXBk>ijAS`AccR=AoH*_p=Hv?`{csd zNT8_k%^&IuCz3)LW)Cf$L5pdyEmuFLjj{`fQtT2F5oyDR6D4LxI*UPL&D9krH8# z9ACEPiabvi?!R-*CG$M0+^(}GW2ZR=q1|Pc1J{uJX{F};+K&?7X@%C;A@x(4V4Aqg zEhU_Ke`(kms;tg3VW&e%1Wpx7wqJe%o!>e5HFDEC^?v1&QO8KEw{z*if`20=>O>&!zMb~h{!aRN@Vp(1)|YtCJwe$B5(*QZcr|bUTh$Ys$5<=4FQi7GcX0M{KZfe zUpxa_haPx8XC+8K=LIBMFmBMXziWVm0zuS<0zt@sNgp`oltLcwU+IkaTYw=JL}?}# zg!rGu$#PwDG7A?iKNk;8@L!_bgdxU3-7w5a-QZ%U6uP%piU@XDiU|B)<*>A8V^o0% zdQE`{^k1@A5quR5eQEbswEuS5!a*%8z)c;<|6hfZn!&|hDb)X;>i=U1N}TE(egD6@ z1|d?4fgQ<4Lo3WgLlgZ&+8)YED6PgX5N->ym(bq(OR637yV!LP+49Ky^Tw1`YlFKZ zY=>6Xa~}u$!!B%KLBcR3CJqoAjWsq0lB9^`QF6AkUAlJ-^J6|v;=M5hr_z9LPUWQ- zikU9sJItZD+~({gFhV)g-Fg%1bs+7bHSS3lnN*rzL>O92U{;KBvA;^j#t$5t@m3JqgQrsL^T zdN>E>v8*A!Ba+ zox#^&q_(20G;o<+fjZxx4A%^(*BBHrSLZCXiLCE;R=CRC@33}4b(#JqUM+JG@NmNF z2%onl>$aj}H~q~D>ENniT(A{hHIdqirg>Uz@uTUj_GdgqcYEyenv15Cx}?+5*ykdt z1aE_i@R{4I5WjKf|7zzfoTBcxKTaBml+;p6*Ajv#DN@qiEz+G!mvkwef=CKWBS?eN zAtA8D!h#Y4F1fI@aQC@C??v}{e*eMUo!Ob4o!6P~%%1O=^Eu!1ekW!q&4jq%25_ca zk5cK8WiuSPwZ=J`9xr5?sAOExCFv8d6K4FVFM0Mr?VT+DN!s|Z{e{1e3XO~D+a^&y z=6c4$@Z-1CJW0_|Z58+ri+*zV;%bs+;G|G-do2=Stl26S!|8RzDDLTi$Hx5_vc|Dd zZ!mR+6*FNCX%Ehe8q{unqrAqyF@&%J)c9;$v{tId%1G0!Z_ZYF4)tIbdzRs1w?MV2 zuS4r!A8nDY=dUo9C4peevIDZ%DMo$fAX7%F#ri2ELCjq#xMe*e+%_N|*W9j6)JweX zagCiZk1(PDIdEBTVrz^LSA*xgZu7K*)h@#OCQcK#8y-NJEKR?g*aX-?noU^NWZ@H| z%5Vjk!4Hu8Oz5N~e$!ozc*x}%SgRGUBgk|`6?kr5wu|IY74HJeLbNY?6nSHCs+L9+~|-&O2@>1JTzTZ0Od^sQlEjUv?)so#*fn!`hNv z-@mlYQ#79M;=Qm`JnQCggyrlqZY7V(K;Lu&mpj|yp|b9K&QW!_TC^jhvQWZ`@u`q~ z#;wRp^YJu=#z@!G_Z05^AZf`q{y0kp)tz0vfPA&>okmXgp@#|N(RQ{-`N=oil1i*z zh59Ow>{+48VBrd@!ivWaW};(c@+bR)TIIqCVe2QdspIQn>T2hwLdr?H(y-x&hlb&t zC1sJ<$K5?Ec_tThbk3BxL#nYhAKfV+0I}5BR}6~A#)?sCh?w>L7&eAmRO{i6NrwBs z^atL;M$$UDn>eH|MZgXOSnhghmhxPSl%VzWTJkQ7XX7?37W89i5F-ydaS!WHfT)&c zg}+z#U5VBZTjQ_eyFdUwjK=v`>kW&|QoiwiuBV!QV%-?urz+C0oWmvH_uSn6M>H4g zRkOImNzR+ykr*myLyg;JG?^In-s*9J7u{sz`(V`>1gi}c}MX|MTAx|X`d?p3UZJG=82qmFDF{iC#XAoICYNb6* zWVb(3st+3H=KoPnn42PJOyE;E_mnNt!IXh(rvz^Hg{&CS^zo5M7I*@C&-sRZyB`Fk zUO#?+N)caW3wY4npOa?PV$s8-)P_6jq(49*2perwO5eDR!fK7%fbTi6WN?`T0`0g*@dz-MfZhJYzV$CeTI;^2A!8LnKY{ePv9m(Z)pWM=<+(8ljYn zxF!ixEaI`T_FmWRAs<(|R8zA1+lec>4cRnz`|(s$(t3w9Ynz@U4C7aqm31jiMF2gu zhW$U1;_n|MarkA<-D(77Zz*2hcc#GxLo78tR=fp zcjlUwkuGQq8j8`TvCAyEv=m#f0?0gR7eC){z8iP}j}-s8+%+0>vb&#q#`HZ+k*i?> z$byi{acruTDR!bx**Wxnmp@JDf$3JJ8yDD9^%MMP_ocoPlo}q^S8Nu_5{qS^ByV2*E43n$Oyk8VF5*R0e$jx z7*O$p7)EC)GuAsyBao_i2?XM8?xjgEw!gaj$aK42q5YF^Gz)8inF0wfP56V?+5Q2Q z*W#I6-vB<5QuPmD(&%$#uw@(u>!TRpqxG`E28cYdgRt3_Rxr7FU$yNuIJfGE`gy+loK)$Nen0c?O8DkdU&P zPR!5c7ZK6$$i5_-!0fK1xF0A8A%2~)P?NozzuA{F64h(;U4OvHhn*apE4UHWcdIzT zxrOCmu5JS$y6zp3WnD!bnpUBm&{?6>*`q)u7}#~vU3}AQF|N$KX3rfg|JsJ1 zPgPc(&Gngx@CMv#Ya)3e z#@SF(lKf)^|9pL)-i+bv(OgG-5qfJ4Jv-4mv@y+|OqS!WG%pyG^7K}3T7mgj*uyo% ziUT4$5Bw9#@2T8j8vsN{(}>VvIEwTY4yk!ll7t-zQmK6|1nd+F>PU}BOOvRNMGTEa zh~7?0VFZSaD=o*#(wk|<&1GY%hiGtnv+1U0_&>c?6w&gr&c^?i4FubpKlov1fiJ$e zwV<6vrc{V;_F;-t2+5jRGCO971XtKJ+xI+YU+-vUEPyo9rH4w$7ns5u!qBXUzwFy> z6`g?#{J!4$xf`iuul&LsJe`m~B9XgC`lctQP{X$Lnf|r%Ajs+ZYuly7QhP(hQ%ZP* zn7_Aq8%`A}<+#K(duN$6`|g~^eUA#Y`nh`ldY zOlbc>8O1+V4~f9~xIevFzGPQ>@&FO@s3N#^ywOl1!ki9^K!{Otu79j)gkD=z=SjtGGR$1nN-eBUS3tX_a>h|mofH{+~1zh{R!PAOH z-*i*1SAQX~%N(A-OX|9e8@HOsL6O|vbn4-b9BvN0JUs2{Gtw$Dgb#A6Hm#0=hN?Vb z5g6~ZJ;N=+LhY)8bq~R9Z7oxC@YFWMOX3BrDlH;-ai0T$eS8#C#PYiqc`YUr7XYz` zDicfkB5S%hOO>fAcgN>jy{~Te8qneIuwR$rvJhS4{ldLItZoD%NIo6#Ip|th?OdNX z3NU^s_SN*=THrDr&y&cELUX4aI;|WI2-V%Rmw3@_wyPZqqAUmA2|t%FQezi$7tc>m zoJpMC_sa@>+7~%j(i`IEOrEK0cGP{$Z>4|u&+~L* zZwqq|RCzl>DW-@~f>V^rRL#xV#hu68+3nvq56XG(e=1W{;fYI9b`Ismk3bcXyK37+ zZ#5d|-$EmO?TX~#b+!!;T<6LYq~#3;J4}NmBd5BYJkO8o_gOYJwa6EU>%M7Nu;EFr zym*`BS~EO$X1Be_II71$$zB+Y4|z5Q>}ZoORVbO<1s7pC3Q>---%M6Z&C99h_%t&{ zo6?Q*im0+Nv6*SA$TyZO jCh{9;`m>viX4q{0EAk1;fkU|sFrVHhRST)U zCMyxfQ;ut#Rd(BPl|tXmkh3x7u;;~Nz~f+TZCps94D14BM8mxREju-OV50uSXVB(( z6W2Y}J!X$Yq4JIw&~0xyBP9VMPSAy(OYNhNZMgb(BnY@>D5&R-)O0oYmzkbsc2QD- zn`*c3w_p}v%TjdD6#2n!Uq93`%|xc#LLboh>`Ni!74dC-KeWsdW~@0V2y31V_N|;) z3ds7<^lFO7{XBLe6Jv5s3Hzq|eyQY=LGKO4amRB}olRWf^j=ee%YPI-WlSV^c%yz9 zL8U6u@2P6$;__FS|6it}(iHW|))@Lr58cYRN2tC%X^X2J{^4oK4cD*grI;gWZSp{x zxmsAvg_u1SeH3*AY!)`~x!VP~@Omkj-p+b@)n6wS*I*;%!&b9@rSqtcC2?}K0;RR9 zG2Q(%-SY#S51)MS<;{UnoxPyhq7@!MY;BiGH{d0gG8KhyV##eTcjW@+1;M7BFDxHQ zz|37oVLExj`;2Bnye4$xLGr1|`lkM+@o$a=CujT^Nf3ShwpN2hbTd(sTS>h2+liw$ z>8NL7$QeyBsPVi(5;B49Z!7Y`lvzU(qDfX__rX{XF~36n3X0@Nxr4^|8rQS5L<2au z`7ogwlK)+7&(V7b*kO?BOsjFSmTVlA&T^aiMy|e>NcgzyIdy^B?Sp)fE2>@TVW@ z6^emTi|TiNb4Nu7(TyUn&~elv=HF~1(eXb`2(DlZjC#sn`2S-`fF225a()$y7_}?< zcL6#&kFMpt;*V*6@xLp3(Q$N{