From 4b11ece243e0a879f2d2a391b728cba05d768736 Mon Sep 17 00:00:00 2001 From: Jimmy Christensen Date: Wed, 27 Nov 2024 23:11:12 +0100 Subject: [PATCH 1/3] Added documentation on how to configure Loki for framelogs --- .../Other guides/framelogging-with-loki.md | 58 ++++++++++++++++++ content/docs/images/lokiview_widget.png | Bin 0 -> 46125 bytes 2 files changed, 58 insertions(+) create mode 100644 content/docs/Other guides/framelogging-with-loki.md create mode 100644 content/docs/images/lokiview_widget.png diff --git a/content/docs/Other guides/framelogging-with-loki.md b/content/docs/Other guides/framelogging-with-loki.md new file mode 100644 index 0000000..cee7eab --- /dev/null +++ b/content/docs/Other guides/framelogging-with-loki.md @@ -0,0 +1,58 @@ +--- +title: "Configuring OpenCue with Loki for framelogs" +linkTitle: "Configuring OpenCue with Loki for framelogs" +weight: 8 +date: 2024-11-27 +description: > + Configuring OpenCue with Loki for framelogs +--- + +This page describes how to configure OpenCue to use Loki for framelogs + +## How it works +The Loki framelog backend is configured on the cuebot server. When jobs are submitted to the +configured server it will register Loki-enablement on the job submitted together with the configured +address of the Loki instance. When jobs are dispatched to RQD the loki-enablement and address will +be sent to RQD and used for log writing instead of file based logs. Changing loki-enablement and/or +address will not change already submitted jobs. + +The framelogs being sent to Loki can be read using a custom LokiView widget in cuegui + +## Requirements + - Loki version 2.4+ + +## Configuring cuebot +The cuebot server can be configure to use Loki either by setting command line arguments or using the +opencue.properties file + +#### Command line arguments : +```bash +# Enable loki +--log.loki.enabled=true +# Base url for the loki instance (eg. http://localhost:3100) +--log.loki.url= +``` + +#### opencue.properties file : +```toml +# Enable loki +log.loki.enabled=true +# Base url for the loki instance (eg. http://localhost:3100) +log.loki.url= +``` + +## Configuring Loki +By default Loki will not allow to query logs older than 30 days. This limitation can be removed with +following option : +```yaml +limits_config: + max_query_length: 0h # Default: 721h +``` +Refer to the Loki documentation on how to configure Loki + +Note : When the Loki instance has just started, it can take a few seconds before it's ready to +receive requests. It can be "kickstarted" by accessing the /ready +(eg. http://localhost:3100/ready) + +## LokiView widget +![LokiView Widget](../images/lokiview_widget.png) diff --git a/content/docs/images/lokiview_widget.png b/content/docs/images/lokiview_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..b7802e47b26b2fc90556d952947f150d586d3be9 GIT binary patch literal 46125 zcmeFZWmH>T*EZS~w?H6xa0)3-vEap_#fy8ONO5;51PM+RT3iZkad&92(Bg$caVt{X zgY$*n&-0FFocBB9J?H#5zrOt=BV&z~z4l&f$~EV_W@5E9RY(Zw2=CmvL!zdtsC(xQ z7U0gEyVdx(n33q%M?-h+ytt#LD5vLdu{9g;^yy|B|M^oN%delkP8x&eo4<^U>j#Mh z>6ePgjXh9XS8#|px_2+)1;eKtX677gJT81f{5X8o`8Z($7M75E8yV$mZ7+5i*a*m8 zrQr91_AgLHZ=}BUz7~A=Fm!%Df%DAm=A`|a;pW8cM(ld+=F;+%>1KI8CG7fM=-EoD zMv+!FKy~u^X5r@i=Gro&ch8lL6?5e=C8rT}1v9T=3-Vuz;o{wnu^x0SJW{;9?g~Q5 zfS60?Q8NHwxty(WV~!8FVYpd)<41ox4!rUQu>Uh76)wKkYrR^~c?!^xVL zAA<}>AVg!MZj|@ivu`MXBO{&vIs5Mt#DKqRg2>=lfA5X+-=E@NQ)F|K>ZsmWa?if} zwG(qJDnOh>MZW zc-T)VI){QVgI80v*yJ9_nGo$u#i3T zS-Hr=(0R-mvuvzFw({R1rdmL1#MryA^e<5zB44aREEAVhgoaz%qY5Z?&|XA0XR8a0OLYdgAN}D^VIN zcR>?p0Uydme^sh1M?Ht{r~3G;bn3H7ov~X~4u!64d^I%EJsvZ0ix~vBTX7!XjD2sY zVqtSP5f!|=Ko;3c&sLFa$TH>9#j@1|UDAddO(5VQCw#9us`sBE5hELlhP`_LKsz?) z@^u8Gx$VS=(+4GmrSW$1W8cYC^5RqtQinLW!d^$A-9~FSKi7BALCYC)@ar z-%WDQ+^HXj3Q^p?|COTXJtWgf>0^qYgc;CKFp5E*j1?Q6)2rL^vw6S+!KK*OLeQDz z1&*wv_(qcUa9|PEQ@%$F4kb{w?&LY@qod*c617nIGiKWhOs*}-5(!7Gk$LHYrSW?{ zr-2}B-8n$)Z!0osR5I2uUpDp(d7XO3_`@gKBDM=@Yny+qltf3@ygdyQ<5AP>tk@+( zjMnKDdVV&z$2sI)M7O+jDLKRIJ^>RR0Vn&Br>WcL=lVnCHqy}z^a=uBrad&Nw%DNf zcja{8-?W@)8iBPg-kqDKZ&?TP%7WHDrd)j8K7mu-LNO8q7D?kM?!> zODvBZhP*WEIR2i&d+>o}(%-LnOu+xqM*Tl9WB;$G9KAk8hu!$)DRdrQsVT-VVIE>c zOP*)k+S(d%?VhzOjfz8y`2E#*e^n>nIW_IjVRe0u$YOrg{A z=G?G+TQkPc-Cf}Ns7Q8kDD1j=;)FO7W8K#|7mZth+v8|rK(lytYqrpr8p*8bccI{* zNm5!c0uf3s^>s8fWN4uxU1<73JpZw!7Wiy`rtWB&tbW#2WtZkZ=PWcPlvk#%<<3s_ z`Q~=Q_%BeT4B!X~M}fLa!uvm%%j=k)kg$gNL9op_3NT-K4Ri1dfZv`)s#hhwukw=+WH8AiGzGl3 zDIpLe0>xH)sXrf|j7vXW5*Qpj{la+9Tfy zS7MWHi-U4bmP_%dZks$J?NB34xHNb7pnPs<+qZp}791h}ROd{Y52``oSt zuvhsR(l{L@`1Y>B1zky#@zI<(>BpH#J}sU{3cKK=B=pV0o-9ih<&t9F&v!(&6^x8( zJKF5vp`mw@`9D6|@o|q+n1j>)8t2r`=0HohH_r1P21?ouIQd(?UH{3aC6U~WMfXde z7vg=4qz=1^8wiW&9%^5#pO-2j&6oI=?{;@wqhpd#YWwC+>12{fGw{pHwT7(EdmCEn z3E(=!Vsa_s`my>%+p;gNfksdTEYId!fMi0c@5=~I$yz#4ey&k*@3J-m=p=ZsV9v-PCd=JKT_BTzfrAz&q6ll;=z&=G^yW? z@(8Z4DnS`(Wz4aoMJr%Jxp`?tnj|kb$}U_zyPjFi^kad!rSLbsfAyyhE3|+&5ivkk zXb7uC>JKZUkCdF!-1Egp)bYQU?9@$DM-14hzIs5OTSmi<7!N2`5E^{QYGby-9b0ig z-2U25-g1D*U=cn}g<0%nbEg2!+=9u{3D(o#MT-95jF|7MoY1bqWs?iyn!^wpvx*>W zJaO`&S>y{x+WZiTVg55x!1cxbmZV=sVuTsbY2Y4tci%JO)ZO^xKl1gFv=BB^RBizu zMDpmJlzo-Zjn^xem!=9BI5Z0NxV!H<#5<2~?}@&~C+E*q$d^NX^iN*ted*mw9q7X3 zYKu}}Oie1zd?G-s$D+jesXZ%Xs+o-f968jp{$21_PhH$W&YlyEzWB0xHNA=c;Xs4BTcKcH+iAZ7bWgkRyUXc`t@A(I>xYNnbaqvH4?+Gz4uCn)!c@ zDqD{56POpnjk&^$VWuU_>VMRJO+TJsQd071*!Q}?{i0m8X*{~pmQB4-pQkM>@=&l0 z7;EDR5+j9q{KT&AW(P^^daS8Kej7>%x}7KRi^40wBz8<$$bFaYJfk$)VN1(66*$rG z`_hWC!MqE*hnh|26y98vZ)dBAjd=u~7moOBN@NXcEc%*NsLaDdWab5Pd7%$U{pJVd z>>nZ_Jo(iRDRYxDFWKKrObM2Wetkyut~^u0&6Zq~T|dv#r8`y2VBOH5LduNjqv0YI z_GGQxFJ)I|-4?xX6Pu0@g~L7aBP#BM_+9Pn5IUvgd7{m4#Oby;Hd=#h-z#TkXK$W` zN_umbLW8V}WjTjhyS|*9)lIjY2NhD8KczDoAGZ?XSy+h@z>Y=AwI&RnH_Nk>hRYd| zMo0NM^uA*4J#P4v$3fixC08iT3do2qlOfVYol{)6bS-2SJ22{qpSxHv%6U}=Z+0I0 z^F00#IgulVe5P$vQVSv|li2}-HKFe|Eh_Mo=Ds3Uq|2g+V9ad*p+d$t8B+~m_*JID zMy`Whl{W9?$$mH!$rn8iwEFN_p{1cL3hig`2Zuc?PO-bf#}CP(8kZ4mq0aj}SBzkn z`WXKMAsY|`j^7|4Qs%ZX+f*kjc{ET!X|v=Kie`Xa@h9d;Ts$=4^r@IuaTk)nXCY96 z^Z`&9cvT_*y&Sv8xM1V8r;3l`9883M(AOJ$iah4c0bcYS{DQI!7Dq{bL*~YEEzbI`MI&C!!GUK> z=+zWwrOR??j1UwbmDnYDYW1g+5@m~&OR)$b>a=2ToTn9V7wJEv4VGfsF7EU9RF(oj zlS9fQZL&w4eaG&UJ61D$fjcAXim!%i-Z3|y@KW_V4cD&Xqsqy8qn77VzT?LmpY}64 zD!cUYBw+j|=@n4sFr6wUYUuKb!~0>R9X*xIAspy)EqHFPH@uN3u(>v37-n|}H64Dy z^8`95N^p$)VpRMoX5@Eh#w@(mIrYk&6fih#t@A4{I%I)ki6N}dqp1MsCc7RP*dO^b zN^b2_eueDY+5~x*>x3bBm!eU=#qPII_KBoN(>@fbjBPRBt8hamY$3m6d&@(j9wb%( zGy*><&nkl`jX(Jd;=Z*gc{(u6pO||V(U2_;?+jkUs!1l?oNx$NGQ063Oj%g=0pnhu zBxi!1-N^`)w6@<2U=TEZu6*T}kv64(4z*k|LZ$O7+O(cxASXze<%~bdx|-HFcPYt> zm|Th6+WbZ-*~IxnJSLdyNV3U0?n`ofZW_$?JYE6CMK0tzKAzu)vqM%f;hdxQTP|SW7ENd(h>*yGUR)V0 z(^h0d zG3K#RQEd_i%ReVwgVB6eaC8ue(BxPePXQj1>M~r-2tuKAVN^$;=0tynz78Q4Vi{>K zViuf^y7$e?RI3qWI)cR07n}I0Z()y4nah4bN7-bO4*;t?vk-}$6R_ON2EnR6jO&xN zd3cz@P6V{r^yt!Wi!naNe~t;2`8TOM)TGJHLI^cKp%QHG7GkZD z7stL);Cs-22f*A<|KLb`?HhFzaL(xN%rNTJny^xYoY2q2UHxjYoim0zdGreS%<=T7gwHH4^N7=A_ zAlP@BY3*u206+Vzen#dn*-dhAuCu0M_h*+xay3pSRq!}QoqIe^g6ZG!$Tts3tZ#1F zHgBQo7MKkeyj|}%>2oBE+e@6#2bhS=(U19?zl?m|;pb6FkC7oS;gugjBnPoJ?3#u3$4CnJ@#N_b7k3rJu@PH1RXYqZ7oP*$5`t8ut6@t z-;@e{)p<)(o1D)jp$d8BYV-XR$ROs$eDgEJv%-&M*WAi9$IXlTNTF)v3nk%i^~y(s za>bf4YxebnjFN*=)9o@)Z0=p_!Ks+OBBMsA;d`w1^Hay1pv+ zS=w^aTY+pX>$^^vH9-jtiz{Xl$yi(7vBNUoH*2pO4>#}37g+RAcwC&Wqxt0o8$?`D z{`v`IM^z(v=1M_x`va((zKgLQ58s6=+1qpGv`Uz)B)jI_jNXx zB5LCvV`1FpeHu0Ns#S2v-B-*v7fD`M(}H@8mD^YK;mGhy#)V~1ZLxyx;3t*UrvnY~ z4_Kgv-1R$bLrwf!_6iLvzUdIr)_ZPaj^36UzLYJV1@F+-&#QoqOUNrp9K7AoMxEdJ z0doj+eegiv-a@5oT|H4Z@}n=01D;N+f(Nsfs`3}zmUj|V1n&*^yuT;>%qrFnb z*)#us7QWZG*>aBsQb=eMJ<&i$mvGwjJS~WyMOd{ZH~_nDBpop&WdTi|9sg_si7-dX z9b(&yCMzthsN{Fp%&b8onTz!Cs>>HDimxx1B%%o~`T*HyfTa+<5AYRna0Qx7tT9f3szBWn}kcE zu20S6*S_Fx-=AB&7T9YKJ3T?+#pF2XC5Cly76WnN$ZqUnTf*a5>q@%F;esa)Tknxy zbfS=jeX3GtwQK;pVDD@rZyq8okwKxp_KX&U#RVqOIYYRV!g^$siCp~kzR2k8Kr-~^ z%I~snDsGExca7+q3w-gAu0Q=s^s7T9a!mhsnmRrBU6PYV$SGvzy0RV^z7&7rt2<0?x#(EH*yub2$tp_c(1ipxqW%~;4g#2 z?vC%U?vhHYEPhccp8hC}j3qf`&dR0EmV|)5*=qPpKTMo_|3F=X|55wulnnjVobT)^ zftkMzN`Cn{cKo#4mC#mUsgIk0v6a3E+h*FDgje-40xnc>O6P%(7F$~ImoB>(W)mP2 z0Y{6T-~%|9w151H%Kc2+uTHROtx428P@5I$^YToQMB|C5Cin@m6NkYfi-LcjsABij z=w^oo?0~`wHWPK6`&@a{bng%S>+Fz3=x3$5gWM6^D%n@@UgUdgN>bnaB-z@g7Z&V|+s>!b&V%B@F<2@HrbiI#+|Ux|Y(ogxUMp2vd1w!0 zR~Ti}HzsAUO(*5SU{55WF}=yoQu3yy4rU=Wc)mU~@vF~wGTDU<5NkMGo2N2AkVtW- z5{g#8A4$lapuEgcJrMD-NqAAF4GwoX0Q?Y(h?c@a7e;AY3pMg~5*Ht1F|NgB3wErj zgi>a;rNifH5=KtAesee{K+`Hu*~2!g6uWU+#?BcjrHJosGqqj9khy+dU5g;Two0o) zKADAdVRlyf#AOa18PHG#qrwNHURg8~xGr6PUz1m+>c!Ffo;Xaq|mQ6`9$_0w({KG(0_Z5k}@;M{D*WB8E>IaEyHWakr#m)}R z-^&I4S?gCIv;NWpV=DEQ++14XGMk;K404CEVDo2IGKo=WHOd^#)FnH0Aq4}gD_e4m z#?+?-4QQj7VHdRAqQsmJDLk-F^pb*Giy*it6vh4n@eCkCEh}HX^3z7a>}tf z*1)I`)R%`OS)Z=vS>u2QWCtiSR?o-gc`_;q_4k_RE87zZmS2)IE1LO8Cgs4!8y9^hs zQ_p9iy)RA9?|JpHIY^<8bLBu`$0P}i^MH>n=XAwQhLG9)bl8%|aU$#j98-g<{;Nm3 zUJ!+J3u{lzjDX9=h(ocJ-YmBU;PbjLRqjCs1XD+JX6D~_dj?T7k3OEN z@XS$hBta4R<7Gg+O?MpDnJET}tom7BV%mW|$pq+Dp=|ppF#zS2O{8=zS--qRy9nhT zjQvIDVRS4tsQF8Pi_t#hXwB&_P&p9?coyiBA{%DHpOo=GQf-&SnO=86rQ-U__!a^2 zrWLV%i0+mvuDrnUN*=_`NG(upMihsmcbQl zu8Ml|%vdrpWGb#9oa=())ZNS0vNO~;m z3YFQDCo{h!cie=!imyJ(c+`_0Py+b5tRCt0$^@Yp{s#NKO^BhOt7Bqx+gKR-}?M#C?pSeFv_h>Il$At#3YEzxV3L{I*# zcrWy|-NIY}fzWa6G!fbyFNQ3`Wz+^!&AQz1Z^8b9E~>PfCj>05cO)*_s%w4T-w%!3 zTv!a7->J z7L>6Gh4ie9<%Jn1*8gnOc9qg3D<|7Ycc**s`LpV5N(f$l-E*m4EhXKS-M#>Do1FXJ zM0w%`yV;)zgVU1cod&+iAX?U&O%AF*E9Dgp4?7hS*Pt_s7t?DHE$Vkn z=}}K8sZ(B)^OuN;lUJAJZo>%d@r^AvU@*%IIC|y)_?xya_HvBWKeYJ+khII zdXKG?kE9wX!;|R{myP()H2b~WOT*#jCdA1S%^Eo7)4iHtVe9ptad6BwQqD*-n3rRK zX`h|n?6e=y@vTAEyL?Lk1xvl!rvz)72V?c+U3k>t#Bc7f0jPqhBDz;S>eg}e-X$)V zBwq*P47mgiw{WO%d+x8p^?wx&ife*;g&YM6Eam-Hj3M1agaP+{91O9H0>8I&KzlvT zr<@#Wu|Dyu`p#%ErbblbOsbNjYmdAj60g^13~iq3j1Gi`flOOrbA>#(yW+EVC zYFx}R0{A`%&&|#!$xXkCUN)~*d-c-bzASPv)$*zKq!7{1A9(%hiTUWz2XwfpqO!w; z&FX0`#i(i^B{3C!e_y8qSDXjsKm?h1+zuM1X&7 zxjZ|U9eTomi$~aXc&EICaqjx!9$$9h4y%F`qGv6yFbG#-|H|zrtZ9?V6P)_sf%eH% z0>4G_Rl>)jwU(hDS1>PdTb|_sv2cQECFF8@ca!F-jJ`WS%JO>a=gBlRmW8>F^NqpB zU*NHmL3tZ8*|5kV-dQm2hrUQ#XX(^a7ah9MJ6x}&$A{|N^vQ1w^42YwR*#pe`i&Ta zlAQhw_Ele=Osu`1Xg$k9F1m$X(BGDu0(j@C1%)qBVV8K<*XZ^jUi)UNf*H%MqMxF_ z8^bU)A?mmTt?4x^1gF~%u6<8=68I$XYj@&}&wak3wP*lR?s6-cHy{F53#8gl--~9< zuW4gC&y47FJzr*nLX)azJ3M?ns75XWa$Bl9(=Ks z2%}blj!&u6^?T2HZ#}7uA{F3p)++wVJ{DxsPb$3lY8kCZ18&oChjz)AFJ$@cp#m;@6H*=_j&Dty?j&I_~%piUGLK1>>rAOV(9qdd+-EDkgp<~qyPI9mVKY#y62V zUDl}4T+G$)WD^qwSv6!}B) zo~5H-Q~EqAe=e8R-#Sm8;hNU7=0jv4cEa{@4*Sqw`qjt5i>M+qWM`Hj&w6PE?W*A3 zCz^fo`jxFQv0IixE~3^iFtAC%#AK>)Y)mhPf>RR;mJOXLwm_FGVx4tHz!d}NDNY3S zP>qB_TA@TDYatzkQx$n3;dwO@>L$wW+@UeH!0kBf#qUH8re>X6vmn*(>B}~zkG-x2 zFqa1MxI}BScQNCXlIP_rZoGz&K_`apMr%_KzJcHu#?_Pt#hgNRbV35Z?{L*cO+wxr z8|OafSA28f)t3h>*OULF5PW3d!9Nfji8D>(_~HA!xBwlmU}k@TTidAH>}hLyA)!#X~v!Vkq~ADL`8_9S-9 zzoj_f9)kjRDT71Y$>Lf|3hxJ>4aE6PtVlh5e8JrPetLIL&L$#c0FZ8+Sb5@E5Zye5 z)yBk@;!%zDl$&aCUzCOlcTXE1NS}{G&+4@?(*7*6+c{DPO=pL)zQoU1Vp^6(KHN?DMt!g`6MdXDfU#vbU8)nl`R+<2fVM^YS6Luq-`OO^kBaCuE zmLV91N1lRQNo(>mi~?e=JU5k+RR9I1`>0DX$lD*nLY)g`iHUy4y8^;)n(RY z^>+gV%Pfn1K#oEV&C^Nf*GxGkKVc`fv~P5CHCR!#GD1}8b)n*hEu}5<5m74drPv+^ zvFd=9%U60?q{CaCS|| zHHkpdoI;j7u37{6M{~!L6Eo!mBdge`sdMU2Q-lm*PptcforZH;AFcWaAHAIr_>#qp z@;TAZYlua^BXv+ew2TCvaVQNw72)X=Q3X(6zf)#rX}jth7@jzw`<<28IJEmt6t17A;l)XIt$}K@D z1kfdBrJl}!Um>_LT1MF+FNBshQ@C`5th+Da#D_i-=5`qH!j007CHHyVaZ&jgtWU;N+%e^TA4H%0dL`GVJL!6Jq~m5N*F|Z?pTEyD zTaFi(kR_#;8#gLPH!4ynF-`OXOf=}B^~Rj?-8L_G1XmDI-^LSA>_y_TC;_<>3Py2G z!F{6gDzfRb$fu_7FJIIA2~u>mM8Zf$Ns7#qUoZ9ND;Wjxv#DR28bku%z;eDwH$Ki% z4}jBO;wYYcNo)5o^YsO~{U*fJ=oAKr3$GE3S&m!%c%J*SX`NVr{sOG@c0y$3mH$}6 zq@cy?1upIXa<>HCPX^K`DQdqn#4+Z5W!HKC$^V?{H5c2K0fXJVzlB8o=>N{!Qp~^B zfdo1A7$uV1GiqA<`cg@M^vnp$?VN#otJ>;lcX2YaAfHNsbjotbo1VI-EO>Vc%aof| zG*vRi9&x0hHpSrH{@*F3wrD#e<_Obaj95z_)#shNkVzwnk9Gsv*FA|5oOi0kG|BM8 zKYP;n-ZFUeurPK?g%7Iwrd|-nq~J3%UOPN}$~%^UCg67Hj61=J`>`SLoEBMn%J5F9 zhMPQ+n?J|JgQVK;X@>p!RT~pl0u;aR>A1$%y(UI!M5U*Y}UOOD)&{BNOMatJ6DwEcFq6WT`j!PseSgyb{J6UHuZ*NetuI zAX&*kwU^fmY+F|oWPd_~auyb7JOpwtth-h{b;Xx3d}D8`uBnS&oEUAjdtA6j+Gssy zh07g(HJZG);tj##cn68%07)vxGTUCyef3h*>ADmTT&ylmG|&7s>&H_%!l%|`94*Pu z;_gYM*TYJtM6{T{UI_A_ALvacciD%%yE0P%@G+vGW-=J$Kj7c)=5| z+@eeHk#v8=w7Yd#SLPqzd#&wpu#e+iwk}|lN)$!L#a;zr&v+m=DL&E03PR)9cK2#W zDrA%}WcrX&ybF-(bsmSfg@S(7e6Pk z46R<8^*ICBKaOpS2HCr|cj6@yoQOy|+lll{^}TEobYot)5WGh#CMi&B4PQh&^U=BqwFtmPcfJw+-WuC2pe z++qgbV&I3#yTX=JAHe1#A~?0kXpzNQYC@+=OvHY-a`050-`fB?9QO0F=* z^$?o7LX84sjXi0ndPFKp$~&v1qStJTSf-s*S=$;2cJ=K_N~d$ucjRq*dibS@*adr= z52+4uCC9gMZ%KYLG|BV+h+f63Pqgim^9!D7=tDf#zA!-PqB}0$DCBFPSipZ1N2m_HphnW(Tc?>2M8IuIRvCK3AC57)(S zdO!34ORrd>zl{g3ds%B73!XUdH*%gjUoqRSI|wDBVzhOgRX+Mz&>H~7%Cz7I#cHk| z^9%S;Ne=cu8Ql~t8Mo@TLZuEFlsF0x^9<#$wDceQ(-KbA7&$*c4NxzqQSUT64(HTM z&Fu%_yh@W7J{hu_vKG`{_VOStbBins4yn)W4^_oTVp@kyoIcl9N3 zEM+WaVq}>ZA*HQi)UY`*7UZkru}S=|O+SkGH*g`uiTMxU;+ypi1cz%keEv_|^40j0 zl4Sr%{sw`kSyZ&52gNQg({S2}jk&yh%u|15tR9j>f8W7U2xX-CR$=}p2R}gi3UH%DFFXdm*S?y`#h*IA$6PuT~ z-Q1;lV~zL<;x}&Bgta_q+OZysH_DRJuicV6^R^ZA?SunP@b+#orIH(ZB6+1C+}-_ zo-V5;6`Q|8Oc6*byLO8cRrbdFf3#G7Qbxnhjwq)K_i4KOZ3z*X{8sg-mi@rGMf;DS zS>}=`>DLF^?nd-wN9Jaam$iQlM~$3Ou6vs})GGgyT+N;GE)cRY z3|k41>4?(R6|__nxXrla9s85kf*L0!&;ix`AsR>WtFZcgj?K1Vf)}^ zS)ViC!dv6`@yo=8J*toLNCuBu((&AMc{zRsk0QpWBt0a|>C?0)&9n+~Dh(HC?c+N^m66km4Y5$fbBU@A;4wr)Jp&mGZq zeC>02eX;A>X0=~AZ5y47AsyUo4tOx3+T4Km49E+B@&YD5@mAS@7&7Te& zE$eU?&&}`Rh5q7nH~q6)#eWN?&OI;y`Xv#7e8olm7fPFX+X>2g@8t zDd6=x;EZR6&ru~$UO7vw^7Uu{4aW}isLzA=q8G@;?f?w)EBcioM@h|ZmpZklJJu(! z0WNFz@bEs*hukOsSe{s6QaYC)4M`-++U&RCDbvc;e4zBq49xmb?Nhc1YAIhRNgVJP z1&-l(_N^lq5g#qwBaT}9XmhPBTo&sEmWTuL#VZAu^aGhO^+XKUaCc$P=UD*nFio>| zl}qcnrQ6_zYR)H`7Xc@Xo{ud%DTl*$<-&-)O--I_c|9v#!VRzm^E} zR}d6FvEQY{3j7qrl>%go#QHZ1Q-OStZ|8zWe*X^)=C558k|H0_O4>x3`|E__5t<5I zpz4+Zzf!2Sk*{WdNb)v>uB0@5{|mdjd&=poAv*%0FaP=IJ{53DhDAeV8BbD=pP$u& zDmwBBgZ8v+jt2%ld=YRSS#(jVVgqM5UEjIzjCW#ufqlR&FXzfA7h(r07_lD~u#27x z35`;WtEg~SG^gTJX;(7#ZrH2$Hp~wr-#_4-X3bhrYLp(l37ifNKB8<9b*!jxK*sdw z)xRWupi9pI%W&$nMIoY~60ajJi>Y5O%Ak;1?kTFa_(aKFjRqv+D902Uz7|nbFwyP> zIS|Nz`){b0ZvDT3YT(ywse3D8+;irsyI-_frj%Jx1G!qKRjxkioK_J{weF^5zf9f9 z<~DW2KLs`4c|8lLwxcU|jMEmfLe@a@$RJQeGP=I})L%vm_F!UIrt)6#sU+ZoM~%6L z?`9E*fck@AiSJcXXFs=IW5{7jgX_WWF$}qmX@)tg_p1xZe_hf*v^qb-uXN7PzI~3G zVNLP5V9V~%Y_lwm~Xi4AlEgY{(p0Whpn%F!)FT)(!J`+XWh!9O--Fu#$d{=Xu!Tbzct zB>xKm|3~=tKTMXfM#@EWeUYQ-w@Z_Luje36o%qAG)h}IjK9PF_$3f?P%QSX0k_$2< zY(2F;YbQ!C=);c%dw)G8lq>bM?SAB$8+sno_`%EC5f=2KZMWPFHnS>ObFq6NbJ63{ zrVx~KJBAsm#aq8+&T^3 z_KbYeLB_DwEG;8?PuCa(+MjbFAlTPdBw+e_cZ#&eE%)zd_!Mas=GIv*>Dzcy^^dmk zCdFL6hUx}Ru(nNePT*Vg^^Nw^c9>OH&1uMh+lm-8ZRDQ9Tp5VZQA}x|MI~ZFWUYOU zc`J^GCpp4RWJ9UEb1wHrhj}4GQeR6Zn+F_4YzlRxxL3-hDb(d~ZVL?dKZ?{2WNfFk^|+!9^!`Lgo$UlMY1J5Lmzv%-LdgnFaKt z7Ycd%n2DU3G?kfk{P2XN5|I+AkhLDr{KSmCpvs{uXl{p`i8t%*!F*^=2ocHf?dMo% zO31P(+Hu-JcDN14QMR|uBR#0rrH092{$4H9Gt9cJQ=(JopJKZmFAxr#f6dW99ibtn z*4qRB%Djih-X_*=`_q7D_y4BlFoLD{JM|xF#EibQ{J)(nYw3@6N#UG@cN^0d&%YgH6w{Dl8m{3WW-J(8>h+Gk34ScZQl6fn7fLBIAH`quP zawUF)oNb75!6`bI5WpDX#iqv7HSmR%T}_&aEi&#m`OKGIl}j{Fj;*nOjg{h!Pn4-@ z3hVX`ae{Oz*=oRz+oN}AVn-jM1Awj7t;|a_-NwIocxu)n%Kg<1=^KQEF%YQ#@pcT0 zocbSn8oi;E=IvCKkG+8{_k-vEj#V}#ac`PAWz>PzC0xb`e`gZUUqlU7Z;&h9kLGfw5ro-5Bp zFv-FXE8{6TLE zKe}l)Ao#CKw^(ffLNiLTVo$liP^ZN7L zr}eC1)9=q1&R6I7K-*7!lNT0PxgBC$e;T@1z$#dAtE#msTV%qgW36S2a)SaGVd3X| zk*}HvxC=M5nmb;A9{AbA7)q7%Q1^9Sb~6k+TINB1RL@H$LnCcvds;N2G+B5QRSOW` z8e=>KNH5|`@B*^+Ki9u)jx>Ea^x+$C zS^=G+NW~A~F+@&j4W%L%M7XQ}M=w#G?Q_hAh9p=JLrp>AZc?3o6A8AvvM z?Svp4^Ya*6SS90OqI=1a)P^Xxor?%R__a-u8Fj2LWY=?)31YIp@FN5~1l5#xobP;? zUVqG9c4EB0Xz|5Hd{Lf8Fim+s2TEB9n=7B(Z@TR*L?GITFh^R2lq2_|l|HwvS&eaX zJIq*Sj-@7qN%lCAN8U63uR_?2aN|HFP?qIaBKPg+>(+Fk$l;pgpQ@|DRB?kTJvVRWneChP%OBWQYXn_U-D zYoB*Oel(A^^<&$raIn(+%qaKZuF!3Wq4R)p3Y;kWc%vZB=Fw&OG{Bu9 z-dKh17X*jNgU&d`E(Op-ReV4>rd63(i6PKon$XvO#`jgP-kbLE4!$G7aTkVfgYA)_ zAK%_$Lc}^L2PTvff+|uicET(+H(?uwPF8~C!N!exlN zFEA44bp_v2%f)YYIqL!F_$njIs12sy-c^W-n8M#%1_+d=Nm1@%xw`ZLHF8*}JhMMQ7=(3$!e-iYbIcI`{CBOG$0S8#c?8^Chw6}$y*#U2+g*T0l8Jm4hj&?IE& z1k-tcY49;2ogvMn@++qC@t>p_i$x3*6pEjm%B4L#41bQQe>e#<#!_o7XG+@VpR0lj;iRd`2PCs^I?WTP@CW)4&LZg**OGx6s?Wt+of-uLDWp=0_SI zg7Jh-SZ3Z_-~;f~@O3eS?|zX&H}3BrKl=&V&?+PzknWJ)8o&_0e}X+li@B5@BI5G60-j-{dTLc{|D^3{U5OR z{|ne723&xAE9vd@g{nTzxyXXl$Ty0%Xvz|zx~jJ;Ff_!S2CBeTTBq#P;Wzh>+lD4m zx*q|nQ7BBr2V{W#qbKZ@RLj|6sNMFPr1{Vb;$|2@KEErgknWPtyxZb5E*=5v(2V>< z4ON|1w$)F~{LOJ%#m7>+^+L}*vFyysZ_xAYkETE1y-&UfIHN+!(Ip@HH4E1AQ0;A2 zIB@JQIsTYStv7|G?)NmI7MNo@2UvunPY%y9Q5PZ!f^lmfkTCPaqQ=FP@2q60Aw+II z*}0(~E_`r~_(Db($czyul#;7ilq@W)_hOZX1ne#4Okt7e5I@$J@>Enwdwc$RB;_~Z z7`VEY#oJN1A!q9gX6>*^@jl^lEAopto+kKzvG&$sQT5x>Mv{zTLuF3a8_0(+$S%3 zkv9dt;;F3R_XO&TO>D;e4qz2e9tx(s4?XRv(dYG`{HVFUK&)7InmR06chAcnf?U)Z zmd5&ih4W@P(j$QUm}ax;O3gcdCGWXVst0m(l|fx!0{E>Vk!vRG>k9%67hsJ*$T$fv zc8wczMqUSeXa2+GT!YVsKZMxb`$z4)Je_b>aZ3|#m}@4nw-hP^G(PXKG+Ks{yB@mX z#?H_&TlP5;R^Ao5-g@z)YRLB^o_^~+>M$lOuGXZTA|Hkl9n_;ksBWv{}w}Czw=@@xdb2E(lbCo5yhyZ*9ScC77;&C6XGj34%~~U zVuvGJSvETGX2u~CXnV+h%gsTi!juZF-g2Y&d(+U^2!=h@o- zFuzE(@cRho?DG)8o{?a+*LvBq+e7faij!$qk`E|FoDKXLsJCDal7oq}~-ZX9NqZAVM2^Tj~#Gp1IrRYB@(waA9f z!@}x9#sTPWrkYz{d55VpVYdW&S~jTe5CPM>&KhRpKs7g2QVcb%oB&RbbCRZNp5#Fm+QAJeORe`QbzgUbT32ewGR zP3eT1LeG+c>z{>%Ue#N`5QAI4k*+oe92wBPgELAjSKR^brbX6X&4g(&$*+E~iObd? zFIu^9NdiNKe%)7>aJXO`XA0Wqt(`zRsP%oaM`xhZ=aCOxQcrgUa{F6 z)L(Z^X+TcmYt31v6d)%T4O}MF{$Zvs`OYE;_C6KRb!9w=F5=iQ3K@MA^UVB|5lCbt z3fcBpYJC}ToP0%GmO{yT5K^W(E-NX?qe4NEM(Q<^!bFuPhudiarREajqNZ43M2Zmt zn^)M0Gnux&F|=-cwPf9AFozHu9E4JAt(}<8)xL|{=K*fb&o5e_uJjl2jeP_16@pJd zMp_oD$T_MptU>QSb^!2SNSDwlIWTw>m==`fc>9~e!h#pI*-fn3>}K=NSgQk)DjonZ z=BPmVT1-%&-k6Z&kw?_Rq~Eroa{w_8ka=~>YVd@o5%6H+EuSN1Etv>-#(yxNypa<; zv-mIDz#f7_vvi*-lV?kr|M%+Shd1U&?${r9CR7?1f!8%~xPia9y^A-))M8?UQy4xY zSK02(E)kH+UbV@@f=f*ak>HYu@APet$~=f?SDMyZ9JmG&G{xuKG!JrJEQ*OAs3f zn0~3^n)Vkh(7#{)_vTQ7i;9D3n2t=;;forR?WQ2i1V zE5C9k-5#g^DLmeVKQ4Q_`JP5fXr~xE=&h!caOVO;f$W0wgQ$F$pXVQoSs5ov*}e5w zgNolUpYp_}c7pqJMVRVoG!zJ~i6Xa#LFh%?|iAWcu`7LakNPeL-=#KM0 zw)np~MXa6CH3zs^uh@+5thykrv?it5oF@qPdT^T?PAeZ7MgVfWmLmX#>*nDbiBftS z#Q7b8x{^2n#cu%k&Jz1Q$mG*m!Xr7+m_@{%ona_tfJrVE2hvzB)c@CU_3VByRBkn?spUuP0%yfIrdXpx%58Ogc#*sa2 z3zJ)svvu)B`P?`;TZ3C+JwFqgxa4|j>b!prH1eA>s$oRj@YdNc*F3fCVrt_OuaFvx znNf37za3xrWz*fD{0fWrpUmKqfpYh~`+*ZLsbbunC9L zxZS(z8b@*?dSg9HB}9gkihj44rNj;L0LIPo<$JD&HufDm2}*R@D+8z_)@;oN6(=HT zE+_%*&SrIv7nAezP?rWYBYoDx=j(HC%eXhslWqM)diE+A7nUbkpn#J=vUk&h{(>A; zT3Xkh48AZjh6H@iQS1li(h8;J_w=$~Kr{otQ$XjO6Ei61zn#YA6%Lfa@04zCLh?hZi`*Mj{xAvb8 z3_0)?-wAdrqW5t@2Y;rduzmniPX_GXI~pDvX!|yu0R3PuNh{PQa>P}Ad47z8C0{{r zf&(lld+CA{;-HrZesLLXaeUksMp^17k4|^D z*EDZq94b)VMV#R~0`Ipz`qc+Crjs5|v$x&(1*u?NEDsEieJ9mfIB*5Ij=Zn{O7FwJ z#tU#eP9w#x@zw^(#qpMgD9#PAp?-Mlz2XO!1NXK<2=z+{p+5wgtJ%(tS<~jpKrzZl zuu0q2B6&L}Z;GIWfBmiZ9=FcNgfB{ckPG@R9iZj^TV*KT`(+8HkJkfDu; z4TZLx0ZytpG!cNwpu^8_OiU&nAQ^ktw||x&|mN~V2$^62wQ05&D%uk6lB}}z;kKl<&O;YXC(aiRRGA+p@mne5=G&U z7TO8Eof+0Q6;l$6p$Ms6>6dmp{7-)}XAXF@KFl6j&2Ewe2sAgIRdUb^BScKY6yl-Z zP&&0$5=o!~i3RxeThL?A;kS9sy4mw&cmj@IR>hlg2ZJ3*7e6A}m>&@HykO$bh`d3H zIuo5jJcpfqk4$kRrMJ8O29!)e_b5+EjYd~qAC7eU)Z;WRM-+*!af4@Ia-U5KcZn#N zH`@YTqMsTjsZ;aDWAL@-WZRJ~9z2I=*(B#a(u8tQswYPmQcpv-tg(cs#^rZI<@?`0 z0h_?=d!o?Gdla_5;-4VXX#YAijCY4-=14|wgC<=K?t`iQLX*g-tLp?^3|tX1;#QHa zd~jBsXeTSjo4r%zF&qI*T>aVYkQvdl6Jg+LT`3^I%8H{>lpZ{{8``(g4)?f>qizvuWGA$rlGX8N` zKJzoVm?KNUmdya0=u~5tZu*`OftCQ;MvWUupoGqAc!4*`?Tad)qhe*068kS#aOrYu zTtn`*KCvs$|GAU+Z@1Ki=G#*KfD_}jJ-x@il)Ffr*K~Pgyihgr>P^L^u~F8BIHT4 z4`{p7LtWTL7AJt73T9rMmBW2}7&{gu&I=@jF=IhxNU7qQzCGLqUmk%SHEWntS6yyj zPX*Hw<=UWoImK=4E?nx6sJ0~m36m02jvtD$Ik6!kjRa5is6r9u(V+;&Sb6tz%5ar8`RRiKjtQ1zRCGL5z=Zu7p>nMq`9M3$%4cFd;k`Dl2qMOAg5@|dlMjS=; z?7`o;qr0gQwuaD-auzzBO@i$86GH<%KRI6xehAUYxMMEEyV7wX>``H=co}Po; z?^+Z*=)B+4r2}|9ir3zO%_?aRZ}6frrJ*wZbQi1yYW!s+XPw)>zGzMFugZ-ZT5l_R zg>F+2_P*Xwl0g7oJb|#Km3`8`a=kuJ0iw1c?G^8=sCXT=cE*(a-p0niDi7GiR`@wibq1pjIW%xu}dYa0t0VE@@ASM}DTqcN9TUQ0(p2f`0-@}TXQEuubUE=G;T+DNQMga+pz%B1yuQDxX|V{vDVe# zKC!qDiNW_@^ja=1Q%hvhSavb`dqHsEB_15U-(%$`*mb)i=Z=X`($F^opsyChGx_K? zWV>!~xD$OlVss@2Pd&Q8>zmj*ZR&zRT<)XiJ9{5LdB>jea$z4n1YbIY@&JtrRh2A3 zd=W-nMj(Qpi;r(3f++aQy(oNO#tD{whmB-H%S;UMr)#WPW6x3opyfbiL|I0krYI=` zux*oCc4Q9+D6K7=mJ++(1N7mcO0ZL7);G`Ko4eux9u-Ouf?bo$TOiFH3!BLM*~?c< z+*dyE`|a#4?W+cK*o=|bP->q{W)UMsEy$U?{eE(s3-!auXHklBrAT~Yq0T$IkraOC z`gdJUwIyCb9dao*MqFhF{^?5`V=<^;KePoMM}<|Ez3pGwK`a>HOT&~Qe%!%AJ!mfg zQevBZSl_gwEE~ym^jxSK?*C_JB0fQ{8lsELxJbYYZzq585v+rLTfjhYD85R{)oWQWKQHoADr0`K4Yg)`#?;?yH*B9CkMK=DsoZgEtq zKv8q;_5vKHAo_n?lKsUe;dMH`(30tIDYhMi7WR3N~uutG>w?0gI83Jv9k9A^u{FXt_e)pO)L4x~iubRb&D13%H`%(UUu z5*(kF@S4@5sy8<@b!T!-AoCFTZX|2H#q4=(bML2CFU|^Qs`6uJr`S|ZzAsy(X3(#@ z4;|A$;5Q1OU1zI?D(X|sHKTfmb3*^B>a6hHX;Dx-<;76mKK|SXP2K>_mM2--UY5Dt zTt$zD`A@LEvG9FDNcDSAurTp6A&|KdBxC=?CPs7C|AmABj`#m}7Dw}(| z8JEp40RY}I;&MAr3ok$90jTZJhB_s>lmkg@E{MByE$z5#oe>2zTn^exKlV08W^skU zcon+(snY13yk~&h&I8D&4vW7q9sR}4oTm?(b4b4*`BD#vfJbsZY&nn*x{IF{*R0090WOKDgs*Ud1bqM=SAQ$HYGle#H)7@8oA&_l4}7i#c|0 ziK@q0_%GnAk3V%^%c6XbUTrg*CJ1KoRjljpqpmy7R6mr;Ew+Pv+Ix&wuFx~dqygH~ zV%=Bq`wU$h)iKYu5PUBh{{^vW=@mtkeKSe>s7ff|;`4Vyp++W#p0!hiaqQj<8@O&c z)RSQJP;RR&9A0=bj~=T*@@75UWr3&H2bYwcv|P)PLSY%o^rs{rN+@-afKr|R;l829o*c;vHbhP z{VzgH0w())yLGdndsV0g0zA=I&BNI*r!czg1#(@*1&%rKwb`s8-pg*q^_O$|U2&6qKi1ry6~y~d0=N3t1Oj~z3IpzvAYcfM@!d2m4FHq&(BUp z)yC(H>Lc}*8{y=f)ZrK9q$_L*Wu@3&OWBTts6mIW7;7?m2ZL?E`K)2iYxme( zLpF0NU#?QhamA+*i`rr{9(EyX|0()9okd&Sov@yJ4R6<>PtL%5IApt!D8FVJ8uqFQ zJ>p7f+ucSEOa)p-ukfH(UUkvkOg{YPQAj)AHR6l^=D8Y9R-}P%t^d;wEIfU*mhO4_ zwHN1~DU+v>IuaFZPEh)E#D!STubP{?c^QQAjAo zw7F@;&a`Fij^&j+yQ)XXuGtzSs^}VX;`-hpU;OjMMXmFZ5bFt0;PGtQ{!NCOV_R`G zbk|Y8ol*9NlW;`1YF|83o5RH924%l&LA#>dt=2T{^7DI*>P-R_N9AGP9IzIxFi07y zEoS`|PJ4>@yW%uow&z+B*a+Z}6Fj?xD2rXFxP<`tOUe&CwXN)<)MWD5++;Us0Hs<; zP`2Ene&@+u@oQObcr)DFQE8qpd$_PSdU35))ODE0fg8naH$sg3cQ9xPji- z*%d+lUh+|+Cljw|WXn<@+4;q@-_yL?Y6B|x6LJuQs|GP|1R<|9m8R-Z;=51su7hMv zA7z3kCZSDg3y-1sdL*c5(!d{jrZ!7(p6u!9vyzxh8@KtK#LqQYH#I1HJ!$AX;;Qkw zZdN_%5Of4kB1mn=HcC6>w>Yq>WMXJo6;^pQFw7=oG4e__XfA?g9YHT@23^B{psv@| zw?%e$m~gG`4%2ypi!S!dc@4_}4yr2#IuV(0PeMx+Edz3o>)TIL(tclhLWLL8<-PaS z>b{H+I4aF&)A=>dmL@(>pMV0VS>gj1l#Cpl1QT z#H`ptt$d&i6IH+ij6X(D%e2zRa%0Ndz;D?>Ls7M^lgn?3x1Wnbv3B^D~?1Ct8 z(~X2E@kUlB2yomm&HBFwxppPaqNRi(mOK8AyzQ{0vMx!}&0kaddrO1W4X)n97jUH+ zXhJ(Ohic$C`amFhjM6sBxrdvxpSwXS3(XuDFmi0duEgJn`7>)6IihC91K?w(6swkoFUKxWXujjjt*hKX|Jkxq)6}D1)+4lu9 zq5U~;ql#u)-o}8u1!Ps6kNlc2>!jt*apImm=wUcMk6frPi>x&XOo(%_M@;458&h?H zP1-vu8xNU8ar|{TKwr(IIE=0tQsZ_J)|m=p^#Z_z{XsY?NDoVhSI&6$*fW9T$IEVN zC|$zzF{Y{TgE%Gs!tdb7Ct(GSu?Q7`WI1k9D=hP1uxRH(@6v;8@8A1}Z!0FrKARk# z02GAhM^Tr&fiZ2%_8iMHKjci%{&>b$_?PVoLfbnjRQ~Y3$Y^Zr{RbSF zkb@WLXv=&j>e*_$cq4%cm`AFx=ND^S#G6BOAV|UCnk~4h8eTFyYnB|eEBk&r%(RQM zfr0H$gZ)9V_a~`hr6lL!7il|*GQq)@Xj~fcPn#*R$I(Zer8_G>Gy0SczrjD6dM=?( zR-=;eZV00wSSda1@DS8qAppenINSba(e#YVyj+!aBBRY4q0y_ zYXkGp8YragiE|k7Ivq8NRd=znSj!Jbo`{V^FaDv(BQEuz2Mtm9NFufZ~QJh7@or-tj-sT%3t( z>^V`&9GCI9xN*R>%pVlvbI3T8+R$XSIW1p^sCV(Ekl`DQ52N#;qS{=EZs1LDK_<-!;fKwJm9x)7xTh*F>KVt1a^@X? zQ=K+Z@8)@lVwx+;DzI9_$%eW_U0PRNAT$T{jo`_zkn|-_VUftbsJHl87v}62>qCSY z2Ir@0ffquanb$rb&-|&uhL>{-b=tT7mNW*10jd9{hJslCFY|%_NG|@xGdZ=|PGwR} z>rg+C%|tppePt0D9KRmggje38pVj8FqT_= ziA*%qf<`jW@_g*m2sC@CtHB5-wUq`k-G~}W=@jC;*V@+KB?nDP0-gLN1akNcNDi-C z`$tmEZn_p1@ef@6v9KHI-YkcDtO@?%)UlGF4R7*)6_rNWee|}0Xq7DQ- zVFsRx3d}x_y(lS5D% zHn(=Jx`1a8CI$ke8f(XOCv~&oVGq{ClqfwdJf0*t0OUygkuK!Dh^3nQ60X*<8QRbM~7FC$Hw-sH|Mc#YLiQ!WoKeU=G7bFRH!e=ZG3vyl(lqs`om2dS|SG zaAY5ozu9!?L2KlISIY25N^i&Uv3MG4pkkB;i>=?B<<&C-HijNPQKk)vMAu6GpSl+P zFCu2$2=?4p>dRDP4xf0R7zli?#&3L0W6hFP(O@0o(7-!sl%x8k6ZsXF_eon40@J0@T^A(Ay4 zCN&{c9D3mekRwsbF!L{qYetc$m4(;Kp+$VB&$jw^3bmz{BK$7h-)+O%_|`^^D>vOO zk33H5cm9MS0LfguW$XlcBy+z&)O;}U8@F>W#f>N$hAm9aCHeSNRGRF9#J1QvY333w zAVRx)Ls-_xLC&fU=`!omh&69_5GZR*iqAl+`_vCf&7-8N!Jcns!&Ll&0GQyfA)Go- zcU{-hGXEhpn~_`g7x4h-DGpQnUpcQjZ^=y0*7~3EO<=T)XRsInGT?*WE3X-pp6FvM z*l_(qhRQfP0Z12#XDHAit0MwzbYpnx@DdWEaQ^)QEY>U!!Qs~2n+c)j1*iEYv9u#6 zhDf*fVzPBptY#`hAL##9q_CV^gs)Cpv2u#x97L>-N>mQtu8WVva(O4->pW}nj$-$w zabwFG$6P5z6rchS%sxjt*D=&z9H)61^B?E}*b3x&tDb|KefG#fCQB3?+oDzlTx4za z$ou96U$(%H67rrEB-ehCA3KwdA2&|yFEf@VEdTA)Kh}v=#)sC@Bn%gO9$196B69W< z=omfijjA{p6f5ux8Do(W|G~@GNTDZ<-Os=+-LlvS>2Q@UA(MDR)me-B>DoS~K%y;1aqVJ!_fv7Gy!tVF-3cIZuQ87?6eho-42U;%J4*=&!jM@bO|RhG$&pB> zI8YvLQI&T`Nrd7p$?>Qrg05T|X`mN``1^*~2Z=k3S<#}{p4b14RP`F6C{twVcUgK% zTWL=%|2!5QE9{QqKdZcD?J&GrNc!HOIX@b@Rym~E9^Az2on+Lf1hJC&x}o>gD+qmw zG4!Y8yIIi9R^V;Vux5jYW@*|*bTLw)+9EZ^-v*JBn<{8SYuR4TRI|?|b2$r;(%#Tq zi;y-Z?dzqWYORDxh!Z;(DJ5C#z|D?lVsOr2nm9% zGK4b!KQqZ|&JK8ZUNheGANkVw^#%eN@$QxZ^RH#d8pR)t4wp}-(0>&?fR^e;D_p7; zSzhu(#4K~}e3^8(j@#<N;sJ`)qP2u_YrBCjAyI;0uCZUH^X0CW|M) zc(}!`ecC*nu1xtR*w2CGg@sgB4Df2UfwK~sjgnRhS|d!ZYmG;yy=p$3p&+Cx)y+Sb{Bn{??np21~4e2THZza49EH^|9Mz zmUHm9m(*R3z%}xYOaSlTm&Wv=gk5XkpEYpVkVWma2ukS0{McgRi7(w^|EOCKq?`yS zDWqwK{1q5iU9rU)q-MgsNi{P$HQ9a$Q>agS1@BE2_IDY|Ly28PO%qD-`#w_wre}>o zhN2+75sB@sd29cz(vF-JRO0B{&FO)EPh3hqd2;Ne#W~MSi~y#A*8dI(S$2bCjrm%- znp<8QO1N8YwNXQ1{-QWd`UJ~RYybrwwA6qoX4Ohdq=6{GgH&&=6D-*#0iatVCX^Ou za8X73C8eZN!ek9{l60CNb013+qCLntSsYCh^6u>f$CArGY-eWD-^Yq_LkYqpokA}! z_Wm;zLg|y_3O&bxqY6Af@>U@KMdKHsZX^JnWm;wEk&@FmdBu#2oKn#yb^M(>fn+aZat3zxG8x1e6{MTOHQ$S5QU; z9tp(rTyn(jAp9!GCO7feSL-RMp<=QMp>9EKrf=%z3$Rj1CQ(;AI z$z1)}>qzNH#-&ztL^FvkYJg;jUKm2-77L~7BH)obPBv9-j)gOGzHz0I*uQ|ql8c>O@TYY z@>Ww2YK#TYCm{D6L@Zlr>ODg0DD$n(dJzI2DROSId%18>@w`#q^ZU7o;^x0=rW}%A z9W|nIoI8FQlk*vhn!hM8C}^H>m~e9CMhfO&y|@ z8c7i+Y!4@RA#0EG_V9s@>it!UQSitMCAsuI05X1n@Ec#Ye;63}V;DqL%-~{yl0-XHC zM*S^<3*-|abDk#m1YNJKI-`UHr@!mZ?`SC!6gP&l5cAMXS``%JziCILb1xFpOU+<+ZO47`xB4)qERwij0&Q`VxnF8p!mg^LfTQZ?@ zi{V{Mp|jN?J*h+_bZH%@vR5D=0S3qL*&a21&r?J9?QA}oUYQH-toVs(&nD+Wg}o*Q zr7A+;7V`%k48f&CqvTVb*7e`rTXt2L<=F*baj+W?l|j^mphQLEuS0pmW`ev&NxK?1 zO+tkqPFe+wVhb}g)W7%2>Gn{AK04?+@HW4@<=&Rp+F$N<69DtgmT?5mj;k;)8ksrt zK2v*@W=B)3XJ9{hUle74-)vH_u2#E!a*l!9n=ImDCTaOtG2EYCX5+< zU4g7{BNzckPQAGCJ4<6-M>o|;PMAmd@JAP8qH#wlNOj8x#)wx0NxIH`K$_Vrym|9Q zE#l%AR(BMN>L0zM`Ypda|97fCg#XFy0v*0Z5$OupfC*JHQZY0|7EecyPr++$!;Q7D zU2gsEhuK_P?NDKiQh}u9lAb5NJ_`+_GTwP; zS5B0}%@DE#!7YdB5SP?Z<9NR~-CnS-VqBp)(9$+|mz9+WMT1en2oHvZ%VmvTMe^pL z!OZag92t5O95MX0&bJ3!5X>#gEDHoCM7};deDoX${IxEyog)ebWc`XT9isdbLwXe< zK@~S8M)D{AXX5=<*@dnf_5z>(0foC^sRY^GDTKTrU{)?jHyuNctz z>s5Ur!O!N*whtq?Bi4vjsQ&WE`tsMJdF6kI7I`7-?jvP$N)r}LAm-2I-Ey%w(;zY=Ph8Uzv^SQ8plqu%B+54!N%78j){l`nj zgQ&#(L%g?nImpW;uG>u9rKAAZ`@^LpxLxvnIHD%%T`b4`2lZ;+MvE+tf&$K4mY3D4 z0!0o}fhLh_%BDyB^@`r02i!zsxt{{)Kh_(y@4ImLIfn#1VCCqR&GqVv9{c9b@$1GJ z2e=6>udJ|+FiyVj3qo~5%;r9*?!!y?mxPnmbh#`Z9S6Ow=`uUKsn1^73|D{mr!3;Y(xD|2YzrI(oP>`R3d3M^|wJ z1mpTM2r^rv9Nrp=1{}ffv4O94i7Z109j{EmlJ>K$2esvf&f{1Q@^tdtXQG|wLDUaP z+nS)5E+gHq(%a$@D6;=Vm&^69Ttm15@$DPb!CJsz$dq`$n5p3wucB);I$j*5k8m7^ z-@achs{F$2h=E{>FR8z8`iHKC>k!UcSSaH7KbgRh{*hZd`L}M-HvVM0+{)L1%5(Zr zr;@a#M;H32JH2~p;u5L$|CGOWFCAnD0s)a|4xG5ySP}H_EyB6Lo7Lr8N zH~Gl8V&((MWb?n53ZWRxGu!34Z%YC4Y`$wN0ix5$3f^3?6hPJq-k&@+$(A5bs;p6A z>m7THFHc%Tg|5s{aJ(iblHZBxY8303O z`(H8)hCR_`tFTH}z7y|aHqg5Kmw5Q_B*jQK_C17Od$&=E7Sz9JBF zX!ZB{09WU}1F8dLTSZ6MKy8PLt}F2({z!qBRSuK3bUZiM5Qzc^3CGq=GLmft1++Nz z0sOn}DE%!}%s*?0T8olSOs*ZvXnwW>+V0{1&Dox0;Y&Zj6{jp-9-3>~g!}e|Jsw6T zUAmHe{Jf@eS+ciz^xoS#v0}UwML;S_M-r-d4~Kf}@isiV-qe!6b2nWU|8O^NO|x) z0a)n1bQz`K1Fq6(S9m!m0XDR-_hB8;T+X`t>?xSFH{x(aPRdG*64XDr(VLjyLD@iP zOR(GnkD?d`uyBx~93M4PPkEdK&+iBnoV_hQLhpKq1>i#!FbxjM6W_(%wc?4r@o|?^ zgY=@dudIfQxUV^zhZg>)>`iiWQ4uwLiQTPtF-2dTN+Rr+GD5`PQc)Vkz9ATV-MshT zyXNfvk~7z4)@?3R8!5~r%h^*Qd}t`PzMN|)UTIaxzZ|XP3bCKZqXLN>{O~f!`oc$9 z9~YK(WfiIBj%X5(`4ihp|2xAhO@kFQwcIvCYvITz{eRmJj-8g|S<*F8qq#m$+fGWVCJr~s zD_Oo|3w*k{dZ>{Z`r!#z`?>f$HJ-)=ddcFWk6E5W_4gZWPh4SPJj06+&BsnR(oN<@ zD{@j588F$|%X1|1#9tvoydr~QEuB<99fiy{G9`!$O0w}BHQ5-sYOkyyIKK)|{jjoq z#4(0WUVVz7H+Mlfj@PiTsEy)%c!<G!F*fZ}f&v8WF7> zx$Zw>!!&D#v9ZzCPTn&)oh)kS;)QaOC_2{;Qd|_rKGR*@Anv#>S6Aqmlr~}H%C_8E z-Oc+O&-$F-;MrG;aqtbv65vz*O{d{w6)3n~6;ufT4=>IELzPHZs|`I8cWw0K%KG)W z!;eJ3`S^+xPQZv{LS62>#eQkdFVWz%u>6-sKs-k6JiXwAL8a+Mrg&!>P~CbLbW37xvu`w1`D`z-8xZXKMM)XqWh5Q{lq`zzHmX5B*{NbS<4lMOB#=N|ts* z3$psC-kW7Z!b78t6n<}S>Ir9{u5~>>zJnSvjCa$7L3eps_=@2{ElvU=d?m*yxw;%7 zXaJ*@2HNcLR19TcNBA}0A8A}_e`ze9d^)L<^mX6go$z9}9DKgndA*54`)CZ_eDXg7 zpVB@&zv3TNUVZ#x3HM{Ri`2HxCe4s2a5!B4&HrABK2bZ1#P22gv)5PaGm^j$rPu^~ zbPLJx2gmF8{=9dReDds%jKo&)i}#(a>r|7Hhig@3mKB@u=co5=#6N28z;{xRLjBo! z4mjA;JE0gCEu1S4|Ezf}Bu?=7{sX#hAlJ9TF#L+2`Oe~u^EgHQAOSU2ttZPXRQOHu zpvnv8&!WjPwmn$59Q(S=!(p=jLR86pOun@+#D_?5M?ElYSP742&)8_?wL$vPmYLNNIZYutxrYfrX0R8Ss;WHyLU=$-AaE>(?{gn$a zh4+NbTR%Mk^FupqCLE?@c85cKK;H_ClKh}Ppzu$s1ZCTZo#VFGW}VI{Om5EI6EEdl zM5XCW6PuJPUdQH0Uwx?Oy$d6+F>lt9iN~GyPKDtiiPHtSq!;Fj6S{m zTgaw^qcMO zQ!xF6VY1c) zgiP#Xzn3EjyxMMar@#kDzA-CpeVwT!ABinlptM;?EP%tyD4|RoinY=@IRx8ryYJ+KTlWR86c~REc@;1Sdev zLqI7L7)xH1bdyeKc0LueK+cga847+5^w1ZLT_h;Z8{Jpk>(KYZJ5$@bE9*OVyZj7a zn7^LBiN5*cd_#Y;g8H8J_36!_c~CBrKLW2qs<1eJ;eGjAm;_o!o@Z&T^gZ@ui+&IE z5r>E|-_3g(se~+Sq7+HX1>}w{!*Y6$@RqzE{uCcyw5XGZAvj`Eh=v;);!}HiD|mp~ z0w}6rN51UMUvTzt>1rLhAJk2=Fuz>7KYx93b8LqV#gsIsl*i*jJ8yZuBDd`i>E3>W zlEI*A=@;&o#*>iGvVr%XuZz^}SB7>9UAq0d>fEvmypMi{kCA`gFUs#dF;cpc6OXEX zo5-=5#g{k8ca9Ak7wycUdmc*aazML3axDPdW6&mML+$tOgrmGL#Lbn=a?p*;4cX1! z&E?H?I})N9(q<_!0~=7$bI~gJY2E8duvd?4WvX<+dee+gV-PEatbS@p;f1Pt0?z&V zE&%QhVg2kusBv|__wAVLLYF+v+t|zEXP?X~=?|-xh>!leJ|Z+A_i{!jrEdLElMMJ> zdEc5hF)hQHkh^0ve>0b2Xm;z>SCX`L9(T;F;-A4-wS+n~Pns$5uh?~EEW zW*7+}YAVCa^DWpbQd;dWliV`x8bPsMR4@L!q=IS}>H2cHda!Nzq>ZcGu2O*HG7c^q z$jAr{9mjPvG$Cdq*~P%n@1#q58ez7)Xq7ns&)l5IvT0gZ$SAq>@Onr9sy2kLTAbre zmX-Y&I#GI;We`@F-jlUem%5ue0DgX}B+z^=FXZEoyAY9)+bRqta=II8g8V=2CCfiW z;B8pEawZe@5U7GnkN@zMDTS=lO}YI!~$|eh%`#v$k$4+l_x0 zu)e<+e|u|qVo)w4J;+enLM&t@qNT1QM0vB1529fr=;r=c;n6~y;3;nXznfi42Iv;f zlN4%`U(ob{C5v0TOEfsJl&CcmH`IxGB|7UuO#@RS!0iCLvo@3gfOkZO8Wuhad_+JL zw1k+GfpF^S{}boEW*gs3niYBSlq5gN)joyOo=eG+QgnnNL#%<}$cZk0>shvbdtQYm z(a6sP$q!nIw{Ib%)sFoiq{`a}m#Fgh;VwapBBufx3IOiImeT>>CLWxA(7?Y|tumRW zfJNM@{fJ;$`WDsc0;1xPLtEH}ge)8|{29yDfArSq7Imw+?X4j+>Wn%1pUv+1&2-~Y zOa50$XXMd^;OMN)>sevV(<4b8(=p-EF+IUCK^xNhk5z&zdO7cx1c!#keC_4sHGCNo zfgknmS?K-j`^JWHq;Ha^g2vYB+3~~EAK!~sJ-gfw{LT-Z$ylC4p1KW*o%RMzq(7>m zfBVhyXUB$?OBJ2X6z0!_Nr91%c%R*yI>!m%A|50(BoTGKjkE_-cr&%Ui%K82HP&uB zoS>0^g3Ctt_l@$)6f1>-xk?D+)s=Xk34hd4zDxiYx|Ul9!j&Nv@!3pf5#dLgmRU`~ zLMhk4dC@x*p~E# za_;_8kvnAenjZ1Aj!LG1L?YHyct3sWDlJ-x#9oqn@*&0z;w!>9$uH|Ljc=YP1ciSTZ7p-SDOPd+=7<%IEV^SeIPv{qO zOZY9arrV?q9{a75Y-2w(EXE&sZ6aq7LMtZIkKm;@rd7mIbt-T5Z6x3P4OD-A;qvH^ z*r;=d`ju+vk5_)T;|d``%_8SMLPy)Do=P)6w!&ytz_$SH*A`_-^ApH=$3bEk4%c4T z%7Q~tolZ`L9|?l+K&vnYGWr`&KMxH%Y#Kc_-^ZQeoQv5((}><>n5DFkPDiRkt1FrW z+VeUV?4HLj#6T#IuvaHIMm7B{D^j>=r+5+J+J4)RY_2(*5crB5XN<8!xTu2ewfb+c ze2IclBRR;)nG_Un5@uP1k2Q@8>~(in{{T4!PY7)@l7N}U!R{2yx)c%X94Rc1&rFuG zb!8vYq3PtCwtfnr_V8ubnN`6k zRAZo#X|mfL)ZRwctrn{grTeLTGlQ3ap;dgBiax5MNMbw`GV2OHqT1>iA+HxuRb30nZKUyoORuF9Up@JbP45b ztK=f0KGBf9$KXVuBH_Cx=U5VS0__3M8M?N7K7qDD8iJGti%y^tXN0=-s+Wlv8=lM3 z|IXeQ1QX$hUS<~ql6L;dXeqxy^Dnt)`@e*r|Iwt5IkN^oJ1_K$rdu`K$UqePBqgog ziR3~?%ilI_cG3JYcM>d=7UGOfCIY9mukc5tb8-0;mojm&Mzh)V?sxkzy&9RhA)n-i zH`VIMH@Q(lf7_v{foz~?ULozPoMj&~2hF#V@ke|T7j*jF6vFixwf3MD)z5s-y@R)x zo<)jh5^=AD-b=k0zozHqNtm#W>y|%)O)m+(DHMamO(8AhSf0R6 zT`31csmIJF%!R|!s|yKA*BXfu_TWSaFR!|?j!?GOL^ERu=8>5+ed#^kShiq@tW8?U( ze0>Dj8*8S(_WsD@dU+U|P=C(yJfeVS7cgq;p^%?Nk5}YcQ>CZF>GCPxUq6}xQr&?p zWEmio1It@3i&CqqA06y>akEK64QOqZ;=0Fg#(7YT-qdJ)R&M^>nu1iK_ewtKbIIWx zhvD6+*8UatC7RoaoYnqSx~BnRjLUZ6mR&XhuKP5`wfh7w`Y_DBe!_be9uBy|33P$8 zc8S|HgPYl&j+A?S4h^#cc)%CBlkwXHb&%s>O^QIdSZRwd4*E7kamfc6xB7H(#Qeo3 zt>Vo~4W61Nwq-HZV|Io!<5t!I^%&I%wmm`n-=(~KF$E(5p z4qi4VLEJ8>*kdxuOpyBvVc8YvzGz<5DL-S{EQ}a=Gb5ZO13R_ey+h})?BdV!{^f|s z#n92{_RA8&@x|(=arpRLQ6?Yw=j=Xg_NjcBh*0_ISR6W-HuplLyMi#6snjxE(#gp4 zGO=I|1`KxQAwJtvjwG{J^$qgJfhq7)n))y}Qiqw|m4BIgjoajAQ5eH^F87F*PY|YL z*XC;V*Vhr(d#$m!bP zyaNfn?c2BXI_7?5Yzq?JNFV_3$MgM=3|~M{4WU-IL&tq=l@bGB%1gKEqx=-Ce8Jq- zlc?UQ&bN6?RAS2!+A!|zr_Vvs3)Y#94>#`!5V}5bSR=X>0mboue9JSKRRb;xJrx_R zrGGXGzg`mws@t#R*2Ini!db~Hx#g}?T*J$0ypBV z3S3IugbjRGRy#{-kw~4~O0_XQoqRKKBJSSR-oAqU=jDx}reB3o`B>qAn@$=9w7C=+ zAk}BaiGFIUIc(3MRY~Fbj(WQ(VF)`TM~bsJ*WKX-W~uL;`}#AaNIB+15ZEGf`Bw#1 zpBNDtW4gas-nHuN4VPM%>#k*(R86aNCl_){nzGdW(lfOq?%u5V3`guOFQMJJM`iTg zWQ?!wMYM>$A*nSl8V&32Y$v~A+TayFTDo7frLV%q4xt;HsgMOGZrBh%_b*irYqU)lRhh1E^8UDUO@&ty{_w_a1_M(?yr ztbadHD&H8OyxbSCn5T>n3QZfoX!{-plGj%xls@Ha##Gf14?dNocvqCC8fXihySw@z zB4bp{*O`CWSl2%x`}q%ELmpx|)y?KPFgRjgzl2`03U1&tAQ*Xf)KM5aDZ42I4uR=N zS6P&ZDT2VDU1Y)7P;@>Isw7X6>~C*J*N0EwDEG ztNa+~`OAC#(RVj4qKGTP6Zo97nnjPZRa$G$ae4QX$Iv>rSgtL4Qu9uKG4k#?TAdUI zo)gHEG0l>)L}rl1ghLZ|AP&k(otcDhB8v;Hqb3XN6Y%jb*uZO?Y|(lLnxH$9 zocj{U9t;^DK-&%^elbf9%&R6Q$9A?n*4)`4PBytW&MwFaG1J-XH1VKX29a8;gPMI*8HIfQIBN%S}|xb-+oQmb9~G5 z1PsQP%Zh5`^=qA23A93J{y*_pmFy)W5A6Pl0F;w8GTq(oCh2NfYAlF2fE&VZt-vYH z8saF8MmKbr*HF=s&v6SXA*?;l=uw%0xA`K>hxnQ|)wvuzP+miMh#B~Xesr>p&?V5`k4e{9_P zuzhaD^qqpg>V-2ttq{nr2Mz7V81Q6j<|wCR5Poe~?9EeF{VCL0@cy`zcHl9S1%QL@ z;4Zx|)dgS{Olki)f~@7Odg{(BP8{zgxoc0vbZ7h9%Ju;Ue0=N4*$=sENj?KM0oE_B z#NYi9VE)~5BKQxibTB^p0@`U|$8-M_T}p(OHNJIw@ik50a?kfF{SrY3COB@d!jA~} znri=%3q|Oh=aV}Iw3~9;MH0-pQLm4wJ80DS=)w(L48m&|)gGqll2g^#U*Ml_ladx2 z5Bg@#nV1bA2{S19%qB8D_pii97Ek5K>W+mkj+QN-&)-sHkfh<{i8i=@CF2MH=wC-j zIom$$#+&w;B{gOTJ+Rx6lrSq(?)0bI$*9(h`T2P@dPu~?^aeJ9KC|TqUcz(27*cVq z^5 zyiPMHKNnBqt|yFHFL&Lb*CN{p*?O%rL*HKix<0f~x@pu;Vq-%10fh$UxF5nhCj~A? z*67_$s8RxepAmJ%?}W@jLC&QAKY$E01(M!~T!I+q8db*7A4F^=cTa<^xyopA zU`~Sw4|o3DxVATjdyiZ!f=So#e z-b*SMYk>64TCRC}1IwEp%LVhS3QGCZjrchW&3>^|`ixe_q-@QuPgPR2Sfb_K04sbZ zEbFJNF|Vp!W5_bgx6s8uDr_&1~;Sc@z`E%0|r`OKiLt;3fK?0F_<+N?Xj1bZSsMU!z?Q3bvaGtRVG2slyH`SMwS$kvRm zrG6q2jTS~w#Vhud5bLmc2?-Khq6N0fpM-i#_RMBdbIgSC*FxY+0^s6FJXfvk*_KQa zjn%o-Vmg1PRM5co9&MFIs^l;g$EC-%UjsPx*=YJUZXM1Q!!`rQx4U@v9e%dsh<#UJ zq4BGEEBwP%fUvbif;iBXchYq3=aGM<(DhYbV~AOEc_|$&R+o8XXT6aPI>tZpj@`%- zLuoh`khN&mZ}{Fnm&}z}lXZTMs36QaT~HTQ0@rx1mA17c5NA(a7(rj)fQPz-D|DWC z89&K;Z@Ewx^f?)d4YaZ^FCiE>CG%UD`J(Pij8;Qe%4Kp|NLgg8~Uh*#ej-)CCIwmmk#Pf~_t3s3>63JZ)j-=@v7(TkPqb;JjA{zUJ3Ub^nLIA!=xyr8dL%8{P ztHPEf;5P1qJtYSI5p@Z#oNNLq;f3b-M;KbF*&X^Bil&f?b z&qW%{Z(WN!k1@uq>Eoye34u)l2y_)##8ejv$c*PNvx%dhnc?B<_UiV0@RpSep$9!@ z7hu3Ift6bxKh7?9(YKnPE59XC^e|ABJYWt>$NMASf7&GXgb-|=*UtGhLayfUtlt3A zBuX?mHD9FAp~_C3EMscH{(!P~k4ite7_(h#kTMwH;b5w3jYC5COABL}Z@2a)A9JKT4Ef{7)_;2I{e9VET{!O1^;``SlmIIU zNu-)Vy>55E0wA}nB_Ma{p=i??OZGQCgSg8$%&m}*f#$B7gyD}v-=-{;jBS!rW->ec ztRTgO#L3k;T_d7jkgc+vf(7YCqGMJ?8O)C#b-kMEoMkHBKF%WfI;erjpCza$ zyQUvI;2S*7z^VDwEWzV3ENXBFMVPT81@3e2v$s5^yWFx*Hk0sBq|(PYOkTh%(vU*} zCXcPzB3#s&47qmjIZXqUyjfi7K)(Y~aT$~gf=oLj$c|(daH46h313or0;O&Zj*qGq zxWo!TasH1Z=}*1ae}r{@-|(NO*8gsT#W1tqzFka_27Ji&yFZBh)SVXOR(#WGdnf^k zJ1>-z%xLe*LyjAdUVYVGk)ZIMmkgbTw^)!yC@iEq+Kkt!mF=d2jw@b-(Kbvz;$RC* zcue;8^AmUO-K*tF~mQKivm;5EDWV;b%ZbzO&y`MFpHuq zf0OX+X!gm@kz$u z-Kj%0r$5(&wBT52Y`V5wUWiP^sYCnPWx^zVzbH4ixzw^#)6noUHxEzfUt>sw z;CiZq#l*!21_$Svy+&Yy|AL9^Hun6wDmjCq*N|jXRPA}Hzb&moacCMV1U4)L(i`{w zjWXuTZ+vSX_*2cLb;&n+8I~N#1}^_?kwEc(iHG2-L({BKg08Nve0kW|eKdM!#?0$z zG0x-sX!&q8zZfvlX~OM`Q5rK3S$Rsb^l2(@s|BGgXV;N&@AI9MH}a;%_6p5@a;mD` zRl(8|zdA2(px$OGJ6VU2Yca1^Oz-^&w3@o}z^9&iCggw{TC;2jk3ICS%+jv#;ioqW@cJh%1jiU=J;%Cxgo}EHhO389aax)XnH4av?5 z2m??vuE4i+HwB=|_L^Qu(6;R9?w|(vmoN~Lvj@1~L4yBe#vU6Cb^mHo!!~IoPi_^| zA%&p?*ez!7#Q#<;Apq~-e^kRUV-!Fu$_tp&&%Brd@2Q%JH&*u)>@oT4+0c+U6+rGF& z-?$U%t0vnge`Mo;zKlQlts#v(;t*T685DHwMb2K)pP3;5|2C=J^S7g0=Q!+ttV#=E z{*RXSlCKgdUw%^#0!IGppG}`y{7)0%tuG`f>x=iYE^v6B!B$3j?N`6=Vo77Tl3KS-*d}9qGOM33WOfJkqeN=4a82Y}GgO zT-+NoWtK8Hq6r0t=QIeOP%39$ue^^mmBha%m(#aiGk168|<8JxTx>Nv4`7rn#LFV?n9?X zJB+xfB#8W^q``Ig?aj;Pu;K}oI~{J;n-g8<`yjCNd1w6LnofE~Sk-W|K4xEk0 z1Ar>rDB}*c<8^%dVRnD)-;DtLgEN8!X*R^R7 zD@_aVI@>e%ewh^0Fl{F_SY5v_(Z)9zR6n8s8a{eLK>M4R2b5YkY>_bhaFg5w_qd>V z>v(TX=$_Sq2=)K+%GCVcez2I-@9Z!%Vv@4KJmo)ZO-Jl{c$#> zYO7fXAq3z!uGdRzWVeRx?CP{=tV8Q)AwSTwJtKR@-7tzo_)8^sPyV-p z^lh1x>FL>o@C};&>F+)tu@-S?G##Y(e5P+Jj}mgewS6%;K#y;J8$Wuc*P9{05sCMD**ntyosxt5 zIk~!$NBPA0H#GEFw)K|ujH)zGdB3Q2N5j0T2ir_9b)h?{Ru^ZHZR?SCz!&BILXG^7 zIFvfosrv@>7FpN%xbHH=s;NPviyW)g-bTey;1>>M2dm4C9|b5sMcvkr z$d1x)c!|&grFXlVoSq!rt40Xnd%XiUW1Lh$60u)`N5!fbQcQe1B8Yw;fG0sShCQgH zArJd@XTR1T#Rjf!gbKlr88ZjiHs?6?IPS72_3#cX&ab}1oljDVWz_XiH=4=o-`@0A7@^th3u^V|5S$+$x|Qj9`}}O?ORW?thotmyq;vCp!~P=R z$6YqX)pQZqLEoCB@>S-#1xlL)qX8YyYq-{>z3CF$oU4-(N^I#-dedP`zXX+{8_zw( zh>j;%twNk|P()5p;QJq*G+(I;$VC25T0H8i5(3tm$E(lmQ18sYYQz)uQ|Nj3eW>ze zPfV4o-I=gugicyR71=gDW0`toS|il@4w*HDmhsH*1HB^hFu&bn`&0ZhO@t7*sl`U1 z1@_wT<7Z!r!eUH`AHLOYeqVTZt-p%)J$2Pelc8uH7jsvi`^S~=&g5FsuMptBwW&_P zJO-AMF2Em>99^ud3$Uk)RN|)UPR#A4%Ew0jnaLfo)19<*bm*-uK8|qVu#wJnQv_mA zo{cNV7(}$}AfX$YTk)#mbwx&H7VaH8`1d9rfh-JjHsfN(`fDK@TU*B7YEzjcD+EkB zpkTPg44L^BuR=Fux!Y{iJse4J#|a+mg+vy^6|+)g9?tV;%KwZun~Er}O=e-CuC@A2 zf3_d<&6a;gxFCL7s57XQ*bXA@pP9*yYHKrqd4@xK?xxns_k2c3iE!s%@4Mrf8|8=G zAJZ@pJPpdY$s+4sL4>ES>*kGY6~QMODCZ07c!$Uxw#f;C7<=(YGDV(}HfqITA{_9h z+UZZHO0l!zl)LY@1j*27+0X**jof?c@;Z-!C&L}}a}5*R+mSb-sPn8{1^<%^F9^jm zS?||s9*IfqE8eGPM7SU^WIT$HXBo8owYsokE}2AH2k2Cl7fU6_&49{3#@h9wa!gUU zIDR^9bII}&j_Efj+l)@H`=m+KOPD~ z)Kz?>42i-Oi9A)We)^c;ARxDFFt52{FdyX$Eqwnf(^owutj&N#@YqAAdNh@9T9k^5 z`!0U$w`n%8En2o-PpY>vxwEUlW%)CKi3G*2Meme461nSMDhi$A9f7vhjzFKK7Bo7+ z!{zp^D+H6}<4j+QgGzsPYI&Oj*B-g?b9XyNF*iQ_C=cN(ZXOUc3oW}0s{$t@3*9=J z<*~jGQ}#C(x6)<@p>Mf0#uXB#9mU4;CGP0i(0h%|Rw2B7e zG;1IH>P>+6OnxRvgF zQZ4)zo-6vqe|{KCj!!bT)2D)-gFbFwgAHnqjQM>swpxkW)Bq0ji3I1z%6OiLsB^{` z?a;{#qKJI%JCCH=+CQpGB)ve4RbsaGM$P6Uy-zbTKLmHv)h@xlags7wuM%ZmGpUzHcGMU!5R@vp^nAR6s?1Nv8} zSNQnRH~uz-4M(#nY3l1QAC6lgw(8k={)jYi&iP1kvAb=9KomJX{VRhK z0$~y|%myvE6ZPWHr3q5M-@ne}_InE$^})>D)Rv#?wa}N=ncu z|MTTOW41~GMW9HeyRYD%QMC}0Ft@iJpWeEg@7f@?5{v#$1mzFmkI4%{x?MtQDhs&! z2!n)wHS+oBSxa(=SETpxLX32?BU?ztiN`syG-`^{e~~E_MJ<2>~qg zK8)yU^PlHL2@(DnSP`3&1fUvvc~b)>h}1uiLLY$$7ltBRH>HtQE@VxAtY-mC!g@~` zJ!@7UXdMbkk$bv+*Up@H-wQ+=z4PSv?h`nC>vci)Vz zq?^(>)n$0auexaUg?=_2I!N!O*=sy`VUNWf0JMp|A#Zw^Gvkhjaw5t)^G99prFo4* zFhE#*W!qQD2N6gxBWn?(IU9L;=~V%q<4l+Bgqlmh^%Pk&8!z-)tD#yWJuM^+%}85y zlm15r31HVK@Ai>aB##VaOX!%Hi0l^`iz4etxZ)SZTM}K;m;W2Hrk^S5vAN^ojOO|c z9+xna5}Rfa;~V?R4jmW~{FxkYIe(OscAPK~Y1sgN-xU@nUqoQg9vgY`2reik%@0`B zL9mpaf_TrNAzO3vLOe5(mXf=C1x(M!RAFSIvI_whqyZl{ulD9)?p*iPfx literal 0 HcmV?d00001 From 4758b14d3fba131860732720bf337f2618323ec4 Mon Sep 17 00:00:00 2001 From: Jimmy Christensen Date: Wed, 27 Nov 2024 23:16:23 +0100 Subject: [PATCH 2/3] Use absolute path for image --- content/docs/Other guides/framelogging-with-loki.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/Other guides/framelogging-with-loki.md b/content/docs/Other guides/framelogging-with-loki.md index cee7eab..69c3f54 100644 --- a/content/docs/Other guides/framelogging-with-loki.md +++ b/content/docs/Other guides/framelogging-with-loki.md @@ -55,4 +55,4 @@ receive requests. It can be "kickstarted" by accessing the /ready (eg. http://localhost:3100/ready) ## LokiView widget -![LokiView Widget](../images/lokiview_widget.png) +![LokiView Widget](/docs/images/lokiview_widget.png) From e93575573735d40a9c42fd90a12342206dab9dce Mon Sep 17 00:00:00 2001 From: Jimmy Christensen Date: Sat, 7 Dec 2024 19:09:23 +0100 Subject: [PATCH 3/3] Add more Loki installation details and moved Loki configuration up --- .../Other guides/framelogging-with-loki.md | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/content/docs/Other guides/framelogging-with-loki.md b/content/docs/Other guides/framelogging-with-loki.md index 69c3f54..6b826da 100644 --- a/content/docs/Other guides/framelogging-with-loki.md +++ b/content/docs/Other guides/framelogging-with-loki.md @@ -21,6 +21,26 @@ The framelogs being sent to Loki can be read using a custom LokiView widget in c ## Requirements - Loki version 2.4+ +## How to setup Loki +Latest release can be downloaded from here : https://github.com/grafana/loki/releases + +Install the package matching your platform (eg. .deb for Debian/Ubuntu) and architecture (eg. amd64 for x86_64) + +This will install Loki with it's configuration file here : `/etc/loki/config.yml` + +### Configuring Loki +By default Loki will not allow to query logs older than 30 days. This limitation can be removed with +following option : +```yaml +limits_config: + max_query_length: 0h # Default: 721h +``` +Refer to the Loki documentation on how to configure Loki + +Note : When the Loki instance has just started, it can take a few seconds before it's ready to +receive requests. It can be "kickstarted" by accessing the /ready +(eg. http://localhost:3100/ready) + ## Configuring cuebot The cuebot server can be configure to use Loki either by setting command line arguments or using the opencue.properties file @@ -41,18 +61,6 @@ log.loki.enabled=true log.loki.url= ``` -## Configuring Loki -By default Loki will not allow to query logs older than 30 days. This limitation can be removed with -following option : -```yaml -limits_config: - max_query_length: 0h # Default: 721h -``` -Refer to the Loki documentation on how to configure Loki - -Note : When the Loki instance has just started, it can take a few seconds before it's ready to -receive requests. It can be "kickstarted" by accessing the /ready -(eg. http://localhost:3100/ready) ## LokiView widget ![LokiView Widget](/docs/images/lokiview_widget.png)