From 75194838dafc8797883b5350ce48f8db69ea5c17 Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin <12731381+Badatos@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:13:05 +0100 Subject: [PATCH 01/18] Code cleaning for 3.9.0 (#1238) * Remove useless html comments * Translate html comments * Remove duplicated function get_storage_path_video from video.utils * Replace '/' by os.path.join in video models * Remove duplicated code in video-script?html --- pod/live/templates/live/event-info.html | 3 ++- pod/main/templates/base.html | 3 +-- pod/main/templates/navbar.html | 2 +- .../playlist/playlist-list-modal.html | 4 ++-- pod/video/forms.py | 3 +-- pod/video/models.py | 4 ++-- .../templates/videos/video-all-info.html | 2 +- pod/video/templates/videos/video-element.html | 1 - pod/video/templates/videos/video-script.html | 3 --- pod/video/urls.py | 1 + pod/video/utils.py | 20 +------------------ pod/video_encode_transcript/models.py | 3 +-- 12 files changed, 13 insertions(+), 36 deletions(-) diff --git a/pod/live/templates/live/event-info.html b/pod/live/templates/live/event-info.html index aec2f1b631..7f3eb1b499 100644 --- a/pod/live/templates/live/event-info.html +++ b/pod/live/templates/live/event-info.html @@ -58,7 +58,8 @@
{%blocktrans%}To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video{%endblocktrans%}
diff --git a/pod/video/templates/videos/video-script.html b/pod/video/templates/videos/video-script.html index d741008f21..abfc9fefcd 100644 --- a/pod/video/templates/videos/video-script.html +++ b/pod/video/templates/videos/video-script.html @@ -198,9 +198,6 @@ player.vttThumbnails({ src: '{% if request.is_secure %}https://{% else %}http://{% endif %}{{request.get_host}}{{video.overview.url}}?date={{video.overview|file_date_created}}' }); - player.vttThumbnails({ - src: '{% if request.is_secure %}https://{% else %}http://{% endif %}{{request.get_host}}{{video.overview.url}}?date={{video.overview|file_date_created}}' - }); {% endif %} {% if video.overlay_set.all %} diff --git a/pod/video/urls.py b/pod/video/urls.py index 99525a0308..45a6254a53 100644 --- a/pod/video/urls.py +++ b/pod/video/urls.py @@ -1,3 +1,4 @@ +"""Esup-Pod Video Urls.""" from django.conf import settings from django.conf.urls import url from django.urls import include, path diff --git a/pod/video/utils.py b/pod/video/utils.py index efe465047b..158f694c20 100644 --- a/pod/video/utils.py +++ b/pod/video/utils.py @@ -271,25 +271,7 @@ def get_storage_path_video(instance, filename) -> str: Instance needs to implement owner """ - fname, dot, extension = filename.rpartition(".") - try: - fname.index("/") - return os.path.join( - VIDEOS_DIR, - instance.owner.owner.hashkey, - "%s/%s.%s" - % ( - os.path.dirname(fname), - slugify(os.path.basename(fname)), - extension, - ), - ) - except ValueError: - return os.path.join( - VIDEOS_DIR, - instance.owner.owner.hashkey, - "%s.%s" % (slugify(fname), extension), - ) + Video.get_storage_path_video(instance, filename) def verify_field_length(field, field_name: str = "title", max_length: int = 100) -> list: diff --git a/pod/video_encode_transcript/models.py b/pod/video_encode_transcript/models.py index 31342c3c2c..66af65ecea 100644 --- a/pod/video_encode_transcript/models.py +++ b/pod/video_encode_transcript/models.py @@ -10,8 +10,7 @@ from django.contrib.sites.models import Site from django.dispatch import receiver from django.db.models.signals import post_save -from pod.video.models import Video -from pod.video.utils import get_storage_path_video +from pod.video.models import Video, get_storage_path_video ENCODING_CHOICES = getattr( settings, From 7897f51559ce2a4394e819198d017a94badeed04 Mon Sep 17 00:00:00 2001 From: github-actions{{ event.description|safe }}
-ZI(j+Dz#n)JV@n(p_gg0X=*UST9%~pnCKVYD7NSbpJJGb*DmI z&xraQkPS6bMNuPH7Pb1TpgyeDLFMm&+8y06zV?3%0kzOYJ-4UfDO`+NwLR9Fg6E?0 z{fsK`Hw?#?bW;02t4+v_e#8r*wofsPg)J~6 zwnc5Pk*GDW9<@szpnB%~YK(*W QOxDu-3+L#6Fp|;@wR6~|wHr$39xm&1_Ot#52 zCtTT0rUz538?iSTE?_^bve~qJFRG%Gs6~4g6X9Ld2)sreR6$$Jl!c+rk2 c%WKo*Ok1VK!a^H6?XXL)sZt@K99GSD;34JF1~a zP;29oO?UqypbFoj3W)QY$&dyW4@KQr1~t?*P*c?aHFd2~4d{=`HyKsI0vlh4!Nhl= z?z@HR@MC18`0xL=nHzJV7Fh|@VyTa6d0W)#?`i!JwY@f2Z=x!U_q&;r)Tjo9qRNRt zHLMn@oaU(ehhm8K|0)7nY!^^-dL7l$XQ(6ey^SZ{Zq`5=RKDz}Aufs<@~WtcdSg}` zf!bZmQRVML9Z*NH44#qH? zldvx~!e6lx#@}sz-xr1I$R5-Pc=oXWyATN9V;Zmqa}s}!YH^CaW+;21hIkg1!hINu zUr-f?>@$lo9|jYzh-zSa)b(yQ-Wzoy4n$4G(0%NGWgJbyP@IUlG2woXGZ>5G5ZsD+ zu+RbXL8CREA^syy#MTGRuWnzV8tNW0uEgxb&!al}AJ)V6hs`Igoi2fDB)mf{n(!lL zXxd>(;!80B-o_gE40XblIBHI`=Eyd3MxxI4pRow;#bA7o+HR?inbltsmA?sQLU$m6 zyaeW9X*_|Nf_TSGMPaA|r#|M#o~WT;f-2~gjXy)(m-2+EI2`rSt`(|bu8q$_ZNu#* z-F2=JP|x4n4Czjqf=i$(ZiFfz236pXHhn$nyf|*J|7EZHoid9s6KbTIU|Dog_wPY9 z;3oP$|9>W+2Bbc1dQb-Q5$}L%z%0}a8&M58XMKqp+Jt|YInIX~q57y19fMjkTTyH3 zJ|4utGxn&*XqSZeXZ0@;dCsF2%TCnKcK1*fmO5v?5p9IpUf%Pjz*4A&cC!A2VZ@JN z8T^D=3ned@6R{U6J`T6xUUWMX7;w=v;69co9&yQRk5L#*d?MDzbr^uLFPj2`Pz?-4 zHM}zFJn3%J2Vn~0vr!|t9(5ufM?JppUuOU7A@i98-57Yq%xMPH(3L<{&=K|deH7|o zxq>=s!>*cL5rJyhWK{Zm)B&~zwYzp=YxKWn%I}QY|D&(5|6>uDL_&O=hC1mMpzraC zy1pH~xChmf{nnePivP97xo*yrWT - zGyqlLSk#TvQ3uz2)CsrLrmwPYLJj>+)T%#^`q26sRZpB7rXDwtfO?o3wOuk`Q7ngA zECW%id;_YY3#h5MhPp4$O;b@ADqa;e^fgiWo7?oZ= j_`>8(*~r8BDh{uo>Pe+U8f?0Zzt zMx!6@L^W(Ls=#BYiq6~kRa8&!q1M7X)CZGKsD=dGHvbqcIVLB*8oS{>oQ3)Bu>T`H z^o+nx47$h9_ju+$2MjIB^_Tr;Hjg~cA#PZUeYoEHvB#NA{P7br*8`q q8ju&>S%t2dT3>OZBEee*RJ{LwHpZ$T-b@N@C&xamT%07 zcmVSd_kU~le__ e+I1x{v8qnxJkMD21^g^wP=ctkViu!n;{i9h!#Zd=X zc~rXFoPdU;Cu)&QK~=mAJK|y7jrl%#oS*Rp*2Srx%@qBGi-}kGVjf0+p{6FqSF>xP zPz@T4T9lJ87tTZ);yU{Y=%l)dTE%~(4x*2!?Us?fp?D$GkT*m%Fa~u{O~+t7i8|?? zV`fa?@%pADFDgA6HFCYM7_Pw78uL2@RPaYs!7067-$SP;`ffxuq!+58V^G^{0rtoB zsG-d1=k@)pSQ7P6+l0FB2 mRn`1$|fI4{M#`gM# ztRSjEEl|&dAsCDkY +nHs0LielK22KVWtG;{_+W2 zukWMQa1wOTTtgic$r5^fA2ceWw%I~di}M7S3W}f#u7Wy}>)3chRKC_&0K3@q`IwLR za;%A$F`0*L=_WEmQZljWNmWz vv5DlkzJukSzKX@-4? zAHpas6=)hd3DwZqsI{{IHA3!Mo3Ps^oU-0RooFvn+cJ4lukTZAI#ha9)X?{^>0?k+ zuo<<;j-n2l`&bpf+Ur$=yuJgg83t?r_a&eTW}z0-0@RJ`PzS~_d;KhGms~-O$Qx7x zk|Z nZ$*_TOC zEiQ!WSp(E!>y8<5I%@xKM)mXv>L9v``Z?htDu1lBW-3EbYo#Wt;;yKvjX{+&DJ}b7 zfyE?fF>OZ8;YsU7)MB}X>d6~a554KUzTbo-w01x(y8WmrdX2>~etNI(3yTV _o?Bt9Os-#4Mw z!XMTrsHb1-tX|)L7nlY$73)yD;v_O6uJe?DPPTN}OvNFn507P0t9}A%O-w^g(N@$M zei~KbE7Z14klifWe5ekTKrOP`sI}4*RZn-+t{UWvv;W2u&|J(ywfG!rQ9VS> BP*c4YeSiP!1_AZ( zFVs-ILfz;MHFKL5bubl0RZs ~x_P-jChaY#!V+5)JqcA)EVB;ID+fXgvjVkacs-oMdA^m`=FlQd~v@DIG#5-d% zoPoOUEtbUuZeH`jAQFp^FbFm08&N%Zgc>q$KC}38U^e2Vu@JVwqBt9s{|xFRe1d9_ ze|{4$g5kvLVkAySb= 8t?}e)${+8O(;~@to~N08+xM-l9ARqxQ_U*sJU!W z#O#7y_>%Z7e2u4zn#H`gnDH2D&d*_Me1d97jpD2&>USCu(CTf2%GeWg;W$)}x1hG= zY1HDojheD2*3YQ(AxR0- xCd$%O+$^;TI)g7qP^}C z&
YE^bb?bjGAhI26-FQA4lc{%fWpeSlv4nfW7cvJ&^wb%EfMj~!`v$oP= zF!3y?bD;vV=v}8ffiMyVqk6I)wVDs0*1#Rihe;}!eH)Hitldx}&YQSyO3HJpnV)065NL|$2&BPqI!^ZDn z72ZfRYUIYEMtB>lyr-yq@6lC@f~uJz%#1p4%Ar isIF{p|rU?rSx z *7iC#a0Cv-7ExvmTtjW6uc(eBt7AqiEo!@FL(O%5)b--128W}b zG1XlH8tP`KjJ;7)Fc`IeXP~BFjlI4V)w4a=AD>|%Y**LJ`5e?!a5L)MIEz};&oC5| zMw`W68e Zz@b<&5SyLLT$VaYK?S3HDCzp>9z!QQr |RqY1AscgevF>YOda*w%u3kh9M2j2+cwb?K0HE z Qq+mN8Vl(8zn(xi-oXgW+}N!8wpfz*YOIM5u>}@s z;&tZYOk9OwO})N-553uqCEyZW=fM)xh MY>rFYn4$D*YkC$BHF8N%L!H`M7`2$AP>Z`GYV{9q z%l_BgOeH}l)fUWw4^TrI(9Y}ovbj8J5zRvF`;DkYwijn(+V*CIHsfOAejU8d1^flI ztp|2AKSdYs ZXI=Tmy?=EW1J#z_YHUEveF?BaHROL_^8= Q`>@;$QYFHi-4K{YgXZ!=PfP}?g#YOQ3l>G@C ig-Nvk8`umTQTw?c zs^a;mhO9-M 6)`Wl8hdS9Rpo&+&wYO M$YMLrX)G)tj~z*aW$-f&20J-RD({T ztBURr(82L9cEHB{%$HC5QHv{Of3sgpp+=wvs^X5Q5gLe^iV-$G4%O2iQRT0+@xAu? z6;uaq_h s<^X-5F}; zJQUT?dZ==`qVE$GYAsB_EVvNWG4}ugRdf|~W lxqZ;%9by6l7W~M4VGPSM~MnDymK|RkaV_qDMg>egNyFA5$7(CpZ zT+yfoEkKRjGSo<|L2b)T)@`T}+J$QPL)6s7AEEPs{g;+NJ`zGuBhd&oR9#R#9Euv5 zNvQq33isg=RL{qKZ$@e{s)vVAYvUZMqC2R?`35!Q{v%Dk^yvHkFO+~T6hoa{HBk+z zgX&pZ)T-@_>TwL}WE+gSZ#?SZv TtxZ3H%Krd$@O;6wm~;&LKbXMY zF{YwBs2jhawpF^ZrlmzuCty|7^?|4ZYc^^M{zDCQ(s5?QvY;9gf;zg3pw>hLYB5$q zja;*FtV#uXlc1p 3XH z(#QN@z6~!m!F)w?#wAdK3sDojPB>1$a(D{08iQ&9`65g&(T@dE0MPd3@?p0b#O zcoo!Q{SLe01XKq _>bl=D~E+ z?CM25oSLHc^>EZ8TZ&pcyHHbh1=aAEs0Mqdn<-3;jkN#s63_uL7S-d8s6}=dwQuiZ zY5ag1vZ6Cg14^R~u3D%y(-76bKA0DOMs?(z^$x1sSEvRjnn`(j{udyS6N{qet|e+a z4MrWoGf_R;j+(>s*6XODy@x9JZ`9&UI?Jqu0;myagzDILsD_S2P4!}Qwa7LR=zwpq z3O1f?zU%oJ!-*fl`WWXYvsRj64Do6BGsd0cb!OrkRJ{CLvv?n3Gve9jd42zyekAH# z`4=-`*nIZC7GLyy^A*c@EJpkc`nK5ub2R5fjZj0>E*Os5B_~n4A@M?UUoEUbe5~~n zYGkr5GUb&+mD36}<>ME*UZ*XA%_L|Wre17X9*t_@G^~qTP!+~oVm|j*M-|)^HC5wn z`cl*hdJya3d(;6{<7bnv9csi~8{e&f=JpC|QM|^9m~5$8OiNHhb_Sbc{9nvL(g}+Y z=tw^Lki__ iQ^D0ZXkbu>kRPsFAphYQQVh3Hcd)C+d2WUI3N9 z47v(@M<5uNpej6Iy@~oD@gB8U(*J6vsw%3$2B@{t9yKy!QHyyI>InWFwcReD*1~60 zM{;a1`O9x$|Et0#BxnTsSeIJQqZXNWqbVo^Rd5|th22m+9)(&9Gf+P-tU+~b8)^+b z!3fN-$>eK^@rn1_#Qs+SBkYB#sG(blT9jKcKORKQ@jKKUe#ScJzuBZWMm=O&qvpB~ zYO2OzAg(|y-tDN}bOzPnk1hc T)wAUoi91kJ=fBOY z@=U0a3q##s7PXt2V{RN|udhH&(H8VQ|MwA4!RJtq*S}Ch{S4Lezfs#L*6-$eax6nU zEovV(wzfiTzm7KE6ID@v)LI#dT72_RyJ8z=)Be9{6a2QDhU7%`ycDX3ZBPXbK`okb zsDoxYs^Ke9L%s{OI4@aWqwY_*!|amms9jJ6b73#^{rkTK1azSMt_1uW_1sUq)3mf8 z>c)ns?KT3{qot^WX{SxUj|GXx*<}`Q2~@+Xpr*DJYUE;2C+sG4BMCgV7Ygq-1;=0% z=@U>5xrG(cyT^P3S_QR;wqjNE>@^RkNNhrU6)Jz6eWrocu@dnZ)VAD#7x4K$_P_S! z{{7}@7VCid;-MsJM5ds&-wE7}pU_vpL9g$>n0Su)NUwItjL<;T^`)rodkHlH_pzRb zZELN2#H_KEN7?@xvJFSgjSo;gOL@%hXVeFbKB%eLf_nO$K`quo$IYrQf%-g98MQXr zp%(E#EQupf4cU!aq?fTd-ga$5*%M~Ss-RZ=B-D0VfLi^lQHyCOYVlk`HNbn) _l&Q@uG5czw%aaL%kHDLS)8+G4g*p9JR@pE zvZIEwAZkRa<34PU8v2~)%t==oH3gMXPs>`UT@Z~brvv8D{*NJ`Ihkku1-0MTp+;i6 zO+SHoh+jZ0I`4UN )#J>lk;{jg@+# ZQ~ zEOC|nuZ*>ALLbyN`T=8bCF&`b;hL$qFa{GZg*mYq>ajW+Rq;Gj18<|&!b2PXgxbD- z*G>KmsE!xXw^O>IG6~vFHBpNu8nw8ZqK?|WsG*yL(YPGduurI-1>G O|a*1MmfEXgmIC4v;n2o%jjVVk>dm ze5`JVx^Dq$)t^JHrN6DI?wAIZLQQ#PWHGx=R|0iOn2Ig%FVx&sx@$gYG{LgOm!p0J zdx(`W^qyHvy|4rE6{zi( @Ty=UttyEK@UxXo1%L1E2@HvSlYuPdt`nTi+F5CrZ1|4>roB#dt#o7SuiX0 zJCOvc<9F6wsG*Jj)ciWGFsdP|QBSvXsDffWGb4}{3lVROd2upoDt2RIe1qCmHJ+RM zx?m3CKcK7Cxrso3{1bIBG<;!hh`|iRr(y}*VB^nFLz&>EDX1Q5aScHoP_wPOu?O+{ zHXi-T>r5p+5H&Rcui5` bi?M z7k)zyJlDBSKn1_Eru6vv9umb-+o}f!<9yVv*o~d=F@|7Wub=O{7=rDIPsM)t0e`@r zety2)@)@-j(#P`i?TX^qQ~Q590X@&-#P)MOV-Z}2h2oe3uA_R|!Qaof2Iir9@&Q#* zfw+FYMYs|*h3{}2PKxK}`%5UP;+u{vLM`gks5SK(ec%6mv G$cLM! LXbX)KhPmbt 4~ zjoe90g_mvo72YKNF&V%A$WP#Ea+5KB3e$k(7({wbtc|5mLpTxj3Ff*rFr^u}%Bbx$ z7gg~qR72ilEc}d`b8jj?mN`8~)tkg6pbQbHp{j(cpevTcC8)Fe0cyYdr8Wg8K#fEo zs=&;s9%e@kaamM3tx)&RLN#m)sv$cu1l_{~RPig+c1w}Q#4BJa;+;{C%jMP!sD^mb znr#;k^)SkSs<@0zZ;AS7)(6$FA5e>SDQfCAA)g^#=MVv{;&Z41o>>#6Gm9uc29Vwm zHB#+SKWKEp2wa6a%b%f++E1vbX}0u!PI>HwEpaRA>6tQvpYJ1CRot)r--m#X+F}{a z+ y*I_Zdj9N2EGMUAk6{`?0fI2}3Vntku>gY@K z{r`UjW;R2b3N=T;sMVaq#>=4^P!)Z1igk$3LXF%L)X>JtV%9_uYKXHUL+lhmt%35W z$9XH%eZ$aIfpZ9G2+yFl-)&S+-eNHNXEiO(iOGmpL(OdqRK7l_r` RqUx z9Ur0cWz1&I{(`6mHps^Q*M&|bsDL3h!xGd qekRcR7HDHp9gNC@&)EJYakf4 zd#a-f?1c$%2x|9?!{T@tHL^~KxgLbtMHyWJx-kbvVHn26k=BW*RX-DB<6P7lS&S-h z1!_OCNg95vLJ?De~-k$HqV5nrM@@Ybe(#0A8?1 qtEl~7x2T`* zza^cA`H2668lmjPcuZ5jGn{}{ X>Y$2M(v*`QwZ^()A>56wR`pu~DmZ&7bF@aGreX@J#b;3Ggj3q|ya=k` zj;QT69dqJ->r>24JXsmjpa|49?1I`YOKkelGVFh~^bH9zby?Gpa8!@GpbDOhs&E^s zhxf5OCJHwVsDrhM55pXI7Pb98pvox{VLH$l!--Ep-G4U1H5Dc=XU_I;)PC)WYUyg! zRGdZiAa;2(LZwg@3_{KQHtSn_O+0S}Q%-P2v-%t3DAKQ>I@G+9pYQJrjd2MmAy#ES z-#@L)gL>{iMOB!$is^AXRE3jK*H5B)khrRu+q$UTF&RtaT6~31aXj9r=I8rHr9-3{ zsT-)>;pVAshO98QCZQSXWAa|ql-xj#gkKFa)FBv1yaDQZCrp7;P#sy0y8jHO!Dpz& z?O)S8#?zr5LZL{9T&F4lwR|+T#iiH< +$QDqd5`k{#2+A6hbwuJjT`jk0hYSX*8<9&bokotuE?}A8X@Nt#eVI3znju zo;y($-9c6K8C71wx~9TZs1F{&sI^lLT^$Ic325%FU~Ke6n;)_KQ5E+@^>7fz!EvZh zMpJBjC91){qALC!)x)Fq`We(i?6SRn12uwAquKwO` ?U-eMB|bTi^B^6;Ea3nNj)jqRK5?pZ%|vl_a4ghNF5m7}cN|s2(jw z74)lhyS;u8wg1mxd`!^5 CaS>ssI{>I zHKe;yJwJ>Z@@u#Z@1fSh_=aYLmf&jQ85{XI9=yT(+bcN*CDr)zat9EZZo k&NX+0;WaQUvv_o~SC*7R__ji3Ji%9~@$`&LC2@($FH^XgBL0o-@Z zwm%=?6Wp)QD|#KZ_iiEI656U~8&3+Sy#D_H4-i>GVLB`H+GGnoLdI{e?=|$iYEtk$ z9LsyQP0K`~7m3%g4Q@_+DfvoJPF@<6gY@jSVXY|hvn{_54anxzu=5&3VGX!&o6LcP zlW=hehEdQ=()n{TzSl4I=3ols@1^+uYEN67!TT)l9Nc$-H-B!%`NSO& S*ky)?MYr*SDnm5sI(35$=tM)On;E3UAvR(!$@CA{&`&6Oj--#y@>xx z;pJ^FyOQ3Ta3%cqYDPRI?+fJTJGKA&nzm+6+-bumC)EF!nNyJWA6&|ddL6U9{g1GR zo3)cV@?K3?Fa3&7FTV3~_!8FPV~g*VmBwW aBExsw_`fgy6p=HUj8(be+ba(@-6yh!#{6#ckM F&4dqf{SogIgk4+4SgtRn;-{36f%J8R^%_B)y~yj^ z2cs#JFU_5NB-SRJz~0;!kCXX7(xb@y?bVX>P86nBd ^`q2FFB?7d4# z_=!dgB~LtjfCIV4-_LS>;2n?f4${YQ?<`yHM)K^^-vzG5&6UaUnqK{mb;$4^;X7og zVk`TZ^b(}=7<1l}K9nA1r(iGXI|=6}`~Vja&%?bFZ6$R`Tgo-PdXtulYrm*W-oI0p z$0e|g0<#dg!aIfn^x|Wulb#!E5Fbt =z4!{+=|ui)q|M`6GV(Vk?GSM<;e%8fO#CZ1Od{Vp;z7udFRoLQh+g%qCdO9b zM!nWy7zI6|fuo806X&7p )1fzcY$VQ^|11CT7ESq|YYvx7THRtvwCeY#Vfjd-O_4S_7^x zMEyYAj|RlC4G1EwJMmTjQ&v{udR^e{t|dbioB042KJwm2VTGyW3-;i~kG8^BTuVdV z{ Qz%G&} te61vmlgeqJeHUg?Rl-rjit}#%2hzz9W4V1&uS=oN0td za^rL2VTAP>MP(moz;f $e&jD?)7<1l29dcw751=&7v-YY7NEj16X&0l zIF(78icu7@pS;uP-E`Z-j-)psy$}9PSvPHZGV%>0y(0~b!~G$I$J@qIG{2X!E#AS6 zdY$Awmz$UKE>7lL#3$N@btC)-;q&Bu#`RR(+tFU*ciq0%deYzX9!euxa{pMa7a+_p ze0{I124_C;l={1170DD~6Gb9gmz5hf*%9Cy9cQ;~@nKupV&dOZKsOq2gRmdrUkI17 zn3sk|y)rO }{Y;WAV{p0K-+h=+>w>W d-w>af^x8&XMe|n#e`-X7++p9bIU(ta1ae0KS`JYN! z(Q=)L7rCLs|MVyWd442b!=~}Ob0-dYUs32--nY4)#8xnP+TuAu{Ad%)-A@(AC~X>7 zJELBS$n~E0bDEcyQr>axt8MB~^4H+nKe(Ut7S!;7uwG~IF7H_X(<-I6B;OsINAb$~ zAM@frx#8j{3OP@P=Y%U!QG0u}i*0U{tz5}{NYj7Cbj9XbLwG-p)GLsDWr-IgUWxZ2 z%IjzwGnaS+-u$Bn-)kWr`}QNQQreS{h=z3Hoq&RV;hlg+CAS46q~I15xF7kuqrO)` z8q=S5PVSvW-jcY7JiWO7@_%})%oRyLV>@&k_fk)=egru~K(B#RxW;CfLcAV@>6OeD zREh%n(3pDUYe@PP@^-R$l<%^=cL4d{kv`BivNq)>=NjL#`o8;D-YJx!mphX}zrD5* zPVg;)e^5{~?;prKhMUuoHiHJNvK4*H8cCi8RF;lw|B&w|;_dL;D~kLDXizcUj|ivW z`a#OfqOUmgdP_t< +?eb2ZQ64hHir0K?(_Z01(lnD3R3aDOL!_5rcm$@Zb-*_D48RO>-Eg`DxAD? zDcr+59`99LOHH0yq#w79QU1Tl-;*-*?Rf<|($gt_CwYG+U4QcP|9OQ_SS0TeWG+Mo zeb1*?PYNnUUhZ`=6TVBHzlbNc_tzu6J?Uq-rvvw9C%hcH@czKN2k&j%^Oge6k+%l# zY&6z4{+-Eui3{CG*iR Za_`9hQ`nh+*LWy>{JbYLkws9HT5^QcF7_=Ef+UtmQi*D9X+mf;5^{oS zXkuyATBP!#2_dDbRVA&XwNq6T7e&$9Zi}K6jcU=}-<&h2H}`(e_kHs`lbQL?fBrM? zImDIZmh$K6e*Rmo@}o1n$GT)FvAsUocEr{q+OW*aD#GbtFT;5eygYsg>?>U)efiFZ zSS-DpXv{z}l4E HkaZU%NG#yh`%$q9~Ya$;@eys04~-`4;(}PPw-9PjrCQq=~KSS!e3o s8~I@89&IJ*f;EK!2C(oxCS;AomSl8&CCdLhibe}Or&4J?EUh*JM|foFTaQx zD)1wur3^OXfPr8OWSIO57FE%uUxM`ns|4>D?du|dwHL11*YqQp8BDY=x0<{zc_V$u zr}&19(>gNrjvg@p!Z{JAb4Hi-R?()^yTA=NbHL)9(|qD%_8%Pj7k-2#*Of1AFAfyD zp!$*@h1UlBi0-$%As1p>85TRrqE~de)OWN$Sq|g+&h#3o@GyOvH9FgbMHRs6Fms)J zkn*-sw?wNd%YAUMoJkBtskjT`*BVPUfq%~MD}ZaLdn1wvR*l8ml$ghy4_F$#Tj2TR zxAZA%g3X1uf<;Zq$GgReEt#w7dWBri9}DR=zzi2?iAQ7|q&38rcrZ`%1(ENYTh79j zZ~e3Z>qcBkOaaTKXJJt-ygK=J9F)q8*o)MCU8(cqE_%7nUF=V$5KBPlHhC2Un)4)X z>x1|U2=Sk$w;W_>A7ZEBwU&iyhlz3Y;&fqcX5!%Fq3O0m`f!OF$HRR~{&X$?xQEye z40R+Pr+yEg3t=|X^EfCUp_9}<;~pw7oct91#>@>;ESmXe!0PJ*Tw?YmdOx#gWSL{+ zsQY+MSBAwVL70XwL$nJ~Y$LuIuPTLFF#IO;`?Kf<;%=)1KAZ)kiMfDh>5oEdB0h-P zgWgaj`*P4!4)k(=;UR~iW)OaaFc|Sk2!9RfCc|R05EJ{7x~@Li^W-<+M8iF&{aV@+ zZbN(oeX-H1(~KCUc?IHm`GM4SEPRu}<2pPV!528_cVaoP?-buDgB-bqdIE8vE_H6u z4=dpO1zv@|STc2q@R$ifQ!JCC=Cbn@>W}0z-+Bo5Ts=!K;sYA#;9DSx6>^B!Sn#(H z9!lJ$N7X{CJ$VWINPIZF6ZBt$_dUIZXg`I{3gSQMPeyA6oThL#f#v+kZ~)}7kOtE% zCKt;E{|GN|m6jyLlHg?PQA6Rqh~Nx-6WAgImm@ffnd ZP(`?%U28x1i4L|%d$ocTqF-sVb!vPfJY+ot{&E$#yRpS#P;xuIPxt06=>{d z(P;8G@}G%f+g-tOk$4#H5AxUS&4`K}g_MSWhTzwT-K6)r4n6{_gWI*P!LV2{SQU7a zSt9l^TKW2fHsTs|b`tk1e?PTYnCdv6KOSHiLhbRJxPjmSggO(;TE2=j0H00X2;s@P ztR=z`_yY!BM`JQxoqRQZ1Ac}+WT6V4l;h-YXHP5en3#fSQ;3aeW~y)ym&TJnrvgV= zVn=YJ9wXyR=(hr22v!7tJM~P}U959+IY{gdynh?d&yNiJ5Bo#OA26Imw*y0MBqwfW zc_R5Foh#CpK8<=hy@}Kl;d#S(NIaxkn>D(Z&4>S3KJ$rH;pzyk-^GAG`9W|$2-^{i z0jq$oM{p^ #*bbRJ_Oz>`jNy`@Mw4o@NaOjRm5G)i9Lhvaky!^Hz$_n5LeIn zF_31i4lV?l!Lq9yb^?4mUYUF$Vux7v6C(YHS8=g#nH!|9#y+^C!74jD{A#E7BfMJp zF}xIfko<#0S4mnRS_rs}r|Hh1*cp~=r2frSTJ~u41fQlHf%Z|?r(Q#z!V(8sFEe+R zm`?Nu^B^YaVKTFnp4i*+`TqrqVLZvlh{STl9^#YK(MlSJfY>G$`O-_k#a<#F!;dSk zgYqV`Ol%1nE9s}vpUv{&%vT3HhKtpe5AypjhJhMVVEYm2j;BJpszQPvz}q1bi&!A> zNoo%jih$olNZ413O$EEk!fI%2BkxErl(?AK35_j0Xk&8c?|-7xTIox)gz5(5!3ZoO zw}J2EN#-J!%%FU=JO=kfs6BNp@|omo$ 3>MXax4KP zV`;3#htSxIKZ96x>JS(^=)XhU%Q0?yjA#LPGlYKv?8*V1nVX7d>oVbvgcpjA+kPk6 zPd$g(a!#H;e+Pgh8oq8OF#s_ev4aY9MQlEY{iF*nFyqHjS;P}?Rw+*;ZjqmdD;7YM zk&b-m5C4Ha$Sc%UWd9Zw{FAs>hh%UO!ouB(2PjAIYUGPKE{pg9b!|w$l<5cSA?wik z7+!3dp3MKsgNWUspHoUPf}{&C;g>Gl@)?2^5Xqu<909R-MBXDVp#Gj-po&N@Ll@fN zY^2{Et<&Hi;$7f%M?Vhy6COyc9dQ`kX7cC%D4K)Hh+RUg9#|)i=mIGQ@?-qG4sQip z&4M6Z+702kaEIXQ$rmVIPx-R&S hSdOkQ(7)(RdfUh8}c;MU~-|P QGx^H!!h&2o@2eh-EFGBirH? zc|x~E!kMne3pSNqKJo*pc?bpryo}F+^rj9q1iwtZ4*!z_+7frO_!Ng-VmO(8IRvwb ze#}n57wOS)8k=hz3da*}Lo`N_%g;bIkcXAu|5^9|nr(IQYL=a%*_Gi7EL^5fyBYif z*dNpd2(@6Q54=eTmV&)c-WQD;@O X+4f^hfWPR)4`^peSvy6UcgK| zoCM}-$u}MsLfQbKNH6r&s}E~@L~o-W(yGidS@ snX`OPE!JC)o2Np8)qx|nk~mZQHu?cz_gUUY zxhLuGK&%qFEA^-g)Z^*Pe#;v)#H=j)5TQ)jtk#U-?- Yu0k22B0p6F? zVxyURMh}sCCEWM4KCKTTxSjkQGdJaXF1G+aVKAO+juBhXJfea^7W++~q`V#~Se|^q zwz41`&%3nb$sEfxkjtp_; d-dOO}*5 mdO0BgV`)4=T