From f5514845c566337cacd76b2489c7e6ee817710be Mon Sep 17 00:00:00 2001 From: fejao <mail@fejao.de> Date: Thu, 23 Jan 2025 10:39:08 +0100 Subject: [PATCH] Adding example uploaded file at the system --- data/db.json | 2 +- data/usage.ini | 4 +-- src/config.yml | 17 ++++++----- src/utils/app_usage.py | 28 ++++++++---------- ...025-01-23_-_10-34-33___-___test_file_1.pdf | Bin 0 -> 9819 bytes 5 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 uploads/771-002-042___-___2025-01-23_-_10-34-33___-___test_file_1.pdf diff --git a/data/db.json b/data/db.json index e9b1817..0f8bb6b 100644 --- a/data/db.json +++ b/data/db.json @@ -1 +1 @@ -{"_default": {}} \ No newline at end of file +{"_default": {"1": {"file_code": "771-002-042", "uploaded_date": "2025-01-23_-_10-34-33", "original_name": "test_file_1.pdf", "new_file_name": "771-002-042___-___2025-01-23_-_10-34-33___-___test_file_1.pdf", "path": "/home/fejao/Coding/CCC/git_cccv/c3infodesk-printer/uploads/771-002-042___-___2025-01-23_-_10-34-33___-___test_file_1.pdf", "size": 9819, "num_pages": 1}}} \ No newline at end of file diff --git a/data/usage.ini b/data/usage.ini index b700753..fc4816c 100644 --- a/data/usage.ini +++ b/data/usage.ini @@ -11,8 +11,8 @@ total = 0 total = 1 [FILES] -total = 0 +total = 1 [TOTAL_SIZE_UPLOAD] -total = 0 +total = 9819 diff --git a/src/config.yml b/src/config.yml index 18c4ba8..fbec90f 100644 --- a/src/config.yml +++ b/src/config.yml @@ -5,13 +5,16 @@ default: ### ### SET OWN PROPERTIES: BEGIN ### + + ### PRINTER USED ON 38c3 + printer_name: 'HP_LaserJet_M402n' # printer_name: 'EPSON_ET_2820_Series_USB@localhost' # printer_name: 'EPSON_ET-2820_Series' - printer_name: 'HP_LaserJet_M402n' - path_to_upload: "/home/fejao/Coding/CCC/Repos/c3infodesk/c3printer/uploads" - path_to_log: "/home/fejao/Coding/CCC/Repos/c3infodesk/c3printer/logs/log_01.txt" - path_to_data: "/home/fejao/Coding/CCC/Repos/c3infodesk/c3printer/data" - path_to_test_file: "/home/fejao/Coding/CCC/Repos/c3infodesk/c3printer/src/tests/files/test_file.pdf" + ### LOCAL PATHS --> PLEASE CHANGE THIS + path_to_upload: "/home/fejao/Coding/CCC/git_cccv/c3infodesk-printer/uploads" + path_to_log: "/home/fejao/Coding/CCC/git_cccv/c3infodesk-printer/logs/log_01.txt" + path_to_data: "/home/fejao/Coding/CCC/git_cccv/c3infodesk-printer/data" + path_to_test_file: "/home/fejao/Coding/CCC/git_cccv/c3infodesk-printer/src/tests/files/test_file.pdf" ### ### SET OWN PROPERTIES: END ### @@ -76,8 +79,8 @@ default: enabled_api: true # enabled_api: false ### INFLUXDB - enabled_influxdb: true - # enabled_influxdb: false + # enabled_influxdb: true + enabled_influxdb: false ### FILE PREVIEW file_preview_width: '800' file_preview_height: '900' diff --git a/src/utils/app_usage.py b/src/utils/app_usage.py index 6cef5c1..5ea3915 100644 --- a/src/utils/app_usage.py +++ b/src/utils/app_usage.py @@ -8,8 +8,6 @@ ### ### DEPENDENCIES ### -# import os -# import os.path import sys import configparser @@ -159,7 +157,7 @@ class AppUsage(): int: The total uploads. """ - logger("Fetched the counter for total uploads...") + logger("Fetching the counter for total uploads...") tot_uploads = None if self.influxdb is None: @@ -179,7 +177,7 @@ class AppUsage(): ------- None """ - logger("Update the counter for total uploads...") + logger("Updating the counter for total uploads...") tot_uploads = self.counter_uploads_get() + 1 @@ -201,7 +199,7 @@ class AppUsage(): int: The total uploads. """ - logger("Fetched the counter for total files...") + logger("Fetching the counter for total files...") tot_files = None if self.influxdb is None: @@ -221,7 +219,7 @@ class AppUsage(): ------- None """ - logger("Update the counter for total files...") + logger("Updating the counter for total files...") files_at_the_moment = self.counter_files_get() @@ -249,7 +247,7 @@ class AppUsage(): int: The total prints. """ - logger("Fetched the counter for total prints...") + logger("Fetching the counter for total prints...") tot_prints = None if self.influxdb is None: @@ -269,7 +267,7 @@ class AppUsage(): ------- None """ - logger("Updated the counter for total prints...") + logger("Updating the counter for total prints...") tot_prints = self.counter_prints_get() + 1 @@ -291,7 +289,7 @@ class AppUsage(): int: The total pages printed. """ - logger("Fetched the counter for total pages...") + logger("Fetching the counter for total pages...") tot_pages = None if self.influxdb is None: @@ -311,7 +309,7 @@ class AppUsage(): ------- None """ - logger("Updated the counter for total pages...") + logger("Updating the counter for total pages...") tot_pages = self.counter_pages_get() + file_info.get('num_pages') @@ -333,7 +331,7 @@ class AppUsage(): int: The maximal simultaneous uploads. """ - logger("Fetched the counter for maximal simultaneous uploads...") + logger("Fetching the counter for maximal simultaneous uploads...") tot_simult_uploads = None if self.influxdb is None: @@ -353,7 +351,7 @@ class AppUsage(): ------- None """ - logger("Updated the counter for maximal simultaneous uploads...") + logger("Updating the counter for maximal simultaneous uploads...") # Get the total tot_simult = self.counter_max_simultaneous_uploaded_get() @@ -381,7 +379,7 @@ class AppUsage(): int: The total size uploaded. """ - logger("Fetched the counter for total files uploaded size...") + logger("Fetching the counter for total files uploaded size...") tot_size = None if self.influxdb is None: @@ -401,7 +399,7 @@ class AppUsage(): ------- None """ - logger("Updated the counter for total size uploaded...") + logger("Updating the counter for total size uploaded...") tot_size = self.counter_size_get() + file_info.get('size') @@ -424,7 +422,7 @@ class AppUsage(): ------- None """ - logger("Rotate the values on the InfluxDB...") + logger("Rotating the values on the InfluxDB...") ### UPLOADS tot_uploads = self.counter_uploads_get() diff --git a/uploads/771-002-042___-___2025-01-23_-_10-34-33___-___test_file_1.pdf b/uploads/771-002-042___-___2025-01-23_-_10-34-33___-___test_file_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b3987e27a6680219d10144aba89575ac8470ecca GIT binary patch literal 9819 zcmY!laB<T$)HCB!J-p=bp2OP?&*w5yFi^-(%Hp!I(f3KsOE1Y#Fjg>72-0`U%qdAN z(s#>AEJ<}qP0mkAwX@?YE-6Y)%;l<>6WZs?eaL{P?fqX-OYXIv+rKcoCC+EhZ*F4$ z`0R_?j_&&V>w=fFeEOv3AJ^3NKvS-vfom)Cw>4W*3sg1JIi7jSlo!NzhJ5xl3EU9K zw?=nLx!fbxZ_JFD9oK_fMM_$wx?N8x1V67&4m-e>x$hd=FNT}OR$n62*Is|D=24e? zdd*S3-!{Kap5Cp<sVMler8MNp8QpnaDUTE;=NA_}+QxsYppX5cyJ44LoX{ETYh0;$ zDNvWE=B0o<%LVcyh+$}M3X%mexlA!a!VE`9Ktsw<!O+Oe!~!{7o>o=YNI#wWqCD-( zrqoFO*O{)DG=!h0p5CM@{b-L(;UBLzM~ZTqMHQyyoZQ%%%jxOIF-3ZF>mjQpg_=)8 zw=IcD&^)V`JZV#7(4(@2yQ?D=auU70ckbB!<@(!Jk?G5}m<v>%uaUAW;`mbjz5M^~ z$7jw|)<3s?UX#A>yq}e&pt5Vqqzx_-GTkaw=4)3gw*1jnOpv-W|Cw27l$nB!JICjI z=gz&!{QnMbea;a$N5!SK=>3a>3uk>l?%X26E1Xo9Z6VhAEu{9Wdq=o~bU2Ul!&_$@ zO&^&n?MtfAseOEPRR#Mae#Lv{Qt~~2cD$R&@F-()NS|w-&zjIJ#w|MWjTYu|lHGrQ zM*o*^-P0+Mt0m~abn%mOtWGt{RqB)^y-RE?J_tR^7d+&r%=^K8SC>GDr^R8dDOy{X zEeMESqJ2%eXPMCE)<5+nn*9RYnZbEVRg)H+R~4_GV{wAHMW;p~QGEW)zShtG_4i&# ziT^(N_({*AmOni)>c&wX6M80aE_o7fud-e_bXQY~dF3RZ+P<5QpNM?gT$ET8GV5gO zdWD_+a}@q>NtvP`scgPj|Gu()bJi#Q2(7|Tf*B{)K2hEBOYl-z%sG+Zo_<9xzNdlr z)$XV8O@4c(y2D1HP{KZ0L4Q(v0)Ld>W1D`Ra}|%%d+s^r9ZWZuRQoNsY<kh<<@V~V z-1P?{?>cRpyk9B$M8>>hpFbExcl>;<$e-*}?~(aWCiw2LxbrrL4aE2Low$A?ZjW+9 zaeCi|XghVM|JTKDdzWlz(^Y1j{@7@%%Y4i8S9Inihfi?2wA*0*V%;tJe;RvJj*0&5 zN<HP<HGO{u&(-T9$t!%t>gMjW6b^kCV%K-Gs!3qs*I9QL?z=bdU2N>Zb91e&Zf(!c z&d$xuyLD@aYsQT|nUCAPeto@e&!Tm^PQ|}m9kDkn^(I%{&g;qM(!9Tt=5E{IusBRp zREK#<ld$3)olU88HmV*n|2)wwp7nZ;eBP%}lh3+|6T1tP_K9f!+-BzWNLfkz*^#L~ zx}Hotyr^N4^K=icNYBJTA)Y&Kn*ybpo*xOHRq;;b&AV65KRkrxA062&a?dgGs8`nu zfsa*z%~h(Er%k(cf4486b@+wynGEjjpQ4jn_i-5ouW$|Mp0Hz<|Cs}?&N?urm45yu z*_KgqX@kY(XC5IuWnWFrE%)A=us&&a#2NEIv727LU8~kEnl<Z*o67Z*iFwPC%3iGt zW-}7d)9?Cp@x<0zC27aIn%gR~Uh!Rw&|CL#_7PL_z3Ini9zVjhZ)K#;^flYwN69Sz z`)GoK)@dFa^RMnrmmi+5+b~6FqUI{2!}6UhU1!1s%f41FJ$<uj<Gfi}4|h&m`61-V zl|xS$&P)DSIdjpXl`h6@vsr#$II^<!IiK~>X}g^kDcbP7cK&oFx@>E=YV7qdoj#G= z<}!|4|FR$KeLW}c@gkoOpKq`nZaR37qk3<U1mAq26AVg^Qo`fKo}Xy=oT>EVw6l`% zG>graeM`e1`8>1eew8R!eEZ&Ab5*TV+gyL9_566)VPV;DwRG<kiF*oS^>4m>3RY7N zf6pHn$+!2GnCwHBr(QflSx>bS?s{kivvrBo	eT`iMchS8d%qcjHNO)Am{F{J(9V z<IXI@wrj0TG>2{Nq6;kz0uzm|*#tjz@AZ%nHoN39S@YM=mW*f8;+wU1UbVS&*F7}F z^x~dSm4}Xz-e1fwmmW3sZ=JnK&tuz<b^Fpi6B6^5O)H+qF(FDQYf{VF=#8hs%>2K) zw!8S>kUUyye&nm=-bDh3c-nvLi}290?zu3_QeC%CVC~d-`@ZGv+nZf}-|FT>9cQEE z8rl1f@Z5iXX4XL_5z|zub^V2#6h%xF8nYc6^6zx`2gWWtc)NjddC1BFY4f7m2P&4C zCC)L2O^?q?vE+<T3elW;`P#NQrc+xM&0U-8mw#gR-WpM!O_r4jS1x!s=APcT!B^3_ z`RmTDy_1$i+*-Qm`L7=m@{igr13A8V7EeCpyjX|5`B==k(DOn%`VkUpk6g?6CN^nq zn_~UBS$kVhjbQHXmc6>ipDi<~ss27CWzKY7p)WPFJ(dWGU6Y)<McjjX*719%B?~++ zv)Y;}b6iT2i_@2UxZQR6k9YfeL!^G6)IB$Q$wr?gvbU<GYDI6{l1i`Gu{qnV!FqT3 zciZd(wGZdo*7_SC$l*0_OAAw2|2~q>UTVrIkC09c#W^h=)5;VVE&OyYoz+QAGu)9= zMBawA<&ue|)P#e<KGV`p@NJpIry{^+*`?!t!c%*~vXht8G<)NWUASfjtPnAAY798? zLgG1($CBj}KgqmH=5Cmy!6a*u9*`}rI=|`UOs0b~r_ONURDAt#?q2cscX#iWFXGsL z&hOWeMyaLTr;pn8oIG~k%UFCW*HiC>4_6j=MCBamT6wTufoZ?w<s<oS?jf#8it^ba zTWc1(<WG3P8@bDC(dvyZ2f0?*b?)TvQV2a@S{oNLDdy#Vi{(7&OMO~5tn`trdwaNJ z>cgE6+jp>=9(H>uE4(<>WX;hi7n6VkSthJ*+ZuS=xgvy}XZ#Z|G>ve~Z?)8(v+Yoz zw#+7{{h||21peArsl6wyHF?VP4Nl8NZKh0I+8tIgW7DG$-wjTpq6%RZ(~HzK_jU!D z>0Bt>l;y6uc=D%bnz3hkCx$*)an8on#Jhdwl9-aS^Q9l}I{Lcp&eSREZKq$bKRmHw z$-+AxOl7}J*xvm6XM3HsM{UDZY38e;_jYOb{wcEk;I@8Zd?@GBge{Q?hi5l(U$@+@ zC6`sS>;LiItNGU~MZeFCZ|9vkJuW=k{^s*Flg&aL&g>}uZ90!L=85G)1;g30yB<Aa za&Nr-Sc|tU=15P+SwSArn>wmIi$kQ!Tc@-o%gy+FU=2HuoPyj6_mo@Aoct}e0$&;) zG-~k|$bASf+oV<;lQMVVtVQg7PcMFMp6sK?*<e#Xr_|YjiOGaVZN>4O>Gi8tA6Rpb zr%`G(tGb@+;%V{grX36|jmrq!{@3}iZ@gF9x4WNy%+r@Y<-&i5)%4Br!&9@(>b~}I zf48c!W8eII$7`of7EQ_B{NjF=@BDpF@hv)f`O<w3=OrsVQcZ5H$#E?2*pQGA*_~j> z>MT|}F)*K}?TgrEUJ<hu_UX-;(gvK;Ex7_)8WWl$r8~?l+yc+Bu}KR^p9$vbdgiUS zR#21WuL)Q8OZBB?hgZ+2kzz=8n75}Ze&42b-?(@fstYffbMNDFT=9Xk_5L}FzPo%+ zyUI83_;9i+bDqxg3D*+NA7Ve_e`ETIEFqz+y;;R8`Mi_PM$MhR_2!*}6E3GEY&|$( z)>glDtw*9b*0(;0dT{MfaQ4D_-I8^!bM~`bcFySYVJV*MD`2(b#luy*8qP|sSh@PE zv#Rsmt&u-MwSPX<>b{v(y!niO+P`&AtwZ;{`X*if#X+Mi_iXvH?{$~=Z_~SZb$9af z>*eMj7VONvmHO-K^x1OzS6+LXE0y!}Qs8;*<bMglf6rZ-b!u&R>TAj8kAv@ctyvNp z5gHM*MlUgPc5L7hU9L8+D^a%Bc5l>nS;K$Zaf@@a?4Pnsu9Gnx%v(;VeE0ooY8q5C zRU$??{yGDr_klywXD!;bb&oPwAO358Unu*>OMml_weO$h8>@deivPa0>hsxo-0j;; zq_*9#y|l5NMcghS+F+m9rXCr=GHZq}OQpK+Ju0&1nAUsvaY9!_`{ENRo7kMyoF{J5 z4oR6?+Wev|Id4YU;U&^Sc^tbHU$8xDJNrZEPQX*PbG&TkXM!z7POY7Dbe&=-@51cX zE0_BM>kKuw<msfD>&?<$ax$T+XNKUp3`U>!?PaPOX0o@ckJ^TY_Q!txc6$B1wuxtI z4;SwE9ra^o=Bvg9p1aQl|76s#|EFQRg<G!b(M4f?kK(UsRuO{Fvy|hCc3*gUP1{Fp z_TCF&JLYVkd1gn{89!NZo|kL%mfyN58nl8}=UBs4ZX2IZ4izibKT7OtkL+r%6!?^I z=KoQ#jq0-vmA<p=wz-`1=*cmK&^XR@EYaIcXGqrl)LPB`f~)b?)S&JIA@}z4o1D3& zeA{o|m&?=hC4y{c3Gx|SjOO!w!xQ^o)B4GW*qw_W{rUgTp!nXcZEDHif4_Zm?&kYy zeTm*nHQST(>YMj&X4(CG$%V|YjLyS}0TOrS2{{{tH0@<H_PKJp;ID+tiUT)xIrWG} zCuP@7SJ|TI7vv?z5xmPL+H$4%ZiTs8C-a+3=B8@RGrl&fAav~=7K_}K{~2||9(&D8 zt}8lRJJZ>|KG|g5FENv)#`Wha)be*HmTS!Xxh2*7&nJHdv-fYGzuEWsyj9JIQ{4CC zkN!F4aXpy%*WV?d1Ru3%w`}(b(|%oY%Zp2NU253!!;(CfI!9uXj;Tz0arNlI31Pf` z;u<jp=UDHTAI#PB*sbuYsc5>-{qOU*?-d;E*0XroRK0>_)9ueC`@COX50Eupx_{2% z#cSonO`g7ZeSdkIT<O7*djVVZA{<paxMx&~pV|4Khr4fQ!X;KtaSpu)F$o2Y9)ZkL zqdzge^N;()dg^&xU-8Dzx^;^-&rh2*U1;CCQ>u5*u?9&mO#N}%U9R$tw6)ag+S9A0 zvd+)1w_I#-=3D6cEF0tSPp8gKJJQVmwdU8x>(4(Y$z4m3<B7;-eIls1@QRq&iVgDx z7o|*<s5vbiRT0RozV*Wjv3C~_<wkjAE3Rr4jWWn~TzK@o(9{{%9xeCePSj=Ds*sTw z#=S_aFYw9&)<vzAU5jG&-I%0sV*b)SZj-+^PRbI>{`e?eL$9{B&(ZtzqwS{F(|>RD zpW!+Ef$^%V0U;?HSM?mpFfcmmrF?n@FI%iZ%7xY4T!oyXQNLc=ahc~@{5YDw@X8wI z8`pbwmd$;e^=H-7ReRR&-|}bX@6*?>|0zAY-ME*XuVH1vV{Pf1(~Tbcy>2~rXL`Y+ zXHmbhwKfS~|8n_7v|^p(JmEZ3t*tJeIc2<J+m9VcSZW-0j_(LxaT&+0g{Sz~tj`30 z>5)x)8UA#J?6S88ne8pIhsp%rObEUC!9bN&b7fZ$@05w_>wB`&u73DA^VDhnYBSZ7 zDm#}bCP?tyyED%rR=YlV<Mqw{>9_7xyj~ms=l6O4f7{pBR6aVecDwJP+mgx8zVHA2 z#lODdwfp(Ae_yfdr+shT@juYgfbZ&uEgKSaf^?&wsjd!B))m{>IP2A^gcVWyZ|y!4 z@kIMOtFv6~&Z7&1L`7zlw{r2UF7Q4%?Jd{Fw!e%!v>3u!5?mS9Fb1$bc+9XzyuqC5 z!(#>;sfKE10|5pOwgs9Dp&{pF7+e|Jo)<T%Gf&`a5NL=x<#ul;!yeg&n+zRSj^#3T zu%!q`N;><!@nMMLIZ)1Q;Cu8NYl1Vwjyn>sH!;g_J6JH-?le3T^4WG(r9XpOVZ}n5 z{`X6Ey$@uUn8>B_;)BI1I|eCB`@ivfmd5XT{68oDWxUdq>wk))6D#%S+~&P4R({yz z_m|1;_BDJFcZ9@^Uv*nQnL0gZ;_dkYv(#g(<FaSj&v?1_bwp-yar4m%mCF@7wr_ub z+TAGp;UUe$!%tslzdkK({QmUpXZs${a+>?7OV@IX^^;u>BJRXovYK@5vfmnIZBB0K zLet2pVKKf{Hh~#DVaD0-xHg8xFwXuQe#9o0`(|sym*sCR=;vM%W8Rv+@jlC^?0r1n z4d+bU7Pa_F*3LI^y>}yPYs#OUy8rJ@Uvl`g^5w?Q|NSn1FSj;+BU|17f2{t`{yhG7 z=7aS8&tCiZ7OYo#_w)KB>(+Hwmu)hdefCLW=+UDtuBWuarqA&5Svg@pi<ei$v>m*8 z%Nj~|SMD<reROq=nW)za^{YK`yjiBN1+*GM4#cp^tZpb^RoL}o<A?b2*u33N-&5U! z_x`uq<$K!qn9JqNRnxbhTYaOUH}C4Jtngn8-<>)e;C_8e$&<q}k8MJ;%r`umU;p*c z<Xdj{S1q3X|Jl8j>t$`L4!<~(61%G@UuI5T>;C!&>(cuU-}wG-tBlwD?M0XU?|i$S zb#@)o)hF?H3pbzsr(v-4*csz?dE@AR)1Kv8n;mAfnVs#Z{l{UY_N7%OtNu-Bo4U{9 zui`b6wauQgDkTC}9sBual^l3^U;%S0-?LJK<;~_L9~SZXJ=?L>Dq>;t_fIeSUp<&N zXJUchny#*yE9dfdU)ugs!PotiRL}*+b1xcZUTs{_oP5P$LRR`-hq!62&puy|`u}v_ zgZbq~{(6?B@t+bmuXs4~vG~8oKMIf4*}PbD`1057UawzyWxn}ygQ33DbbrqouI&>h z3GLpt!Xr0)_np%pRQCGBH+5X?yKlPssLEEa<||tArH8BYDlYQw&<x+PP;O%Noe5>m zS9opnGK!qnN{8(@=y|ikD&f<4whASS$8ATG4=dT$XZ`)Zbn@3r#a~rp7iS*7zyAEZ z)w`?8A0PbnOFFMX$t)&tf5n=2uis5Se|3whLCWDn%TIBxS<PglTEbDcbmogQR=W?U zz2v_s@^C`0>5SjbY^4?{27>G+9DEOC44yY6^LbdjNHpI4=OtIvucOLwaknncZa6%b z<>R!ESG<odo_XDPzh&j)WcmN!4$W6&b)LEZY>oQnKNe~4I13JZ^3S_=py&=?jefC_ za++Ltim~VC4tb;2FW-aMD+6x?t_fTH<w(MY2CwB8SLo!d3@&J!d&W>*K)t=-g5~Qu z#jDID=Pa6RXt8>NK-s*)bJn3O2V07zUT*dX$c}ivvh}9$!q>N6RJ-SYiw*a`f9TVv zS7z*TY_dldT#oS4xg@zLVr{}!RWZ>G3bHfAZp)i>9X;b{8F#~P3B%n9Q>s0_siZ90 zudc-qwVm~opoaa#+Je^%B|a(V9PbA_yAV3_%-M@)7BaUll!|L=pKCW?_w#P<{hJfT z9!i&|*hSqr<@xi7M5W<;sifms^Hs!B6BpiFq+cqs;?Tk-rnx7Nw0(@ZEpN23wQBA@ z`z6M*x~<Mj1@u|#HRakK-VL&d<>C+aO4l?A_{Fqzzgy?uket}CcP63dvg};1@&(HB zFU|N=H@ocR`fJnlGJi(QiGLsAyjA=3!H(XrN<*`t@~1cN^4l33{F$4dUbe6D;nVj1 z!<9cC{QomeRQ~s?*4y$n(=*Sk{eR}j>i>TK_cK1Oc<@gCR@(2c(*HedZtgGrUwnCH zxc)y?<I4++9<22G<!qrmIl%wzS(C}D#akatvagQ{{VMS`exebpV%oBKQ#R{eQeLT? zlh!{$;nLoU{PcM$ydKfb?@c@2hj?ysKjGKHK4F{e{ko_26M28cE%orUJo4IogK*uE zHAm;Ge3s9d@z?z5-Y);Cx2LXOWf!!4W&G8itaIWl-2cKKu6Q$Z>Xj4wjE^+f@|#~c zW53B>P3P&Z#F~r$SBpJo(x{xuW9;JFmNG-t&q(bs*OZ;XZBt#`-%U>xy*T-JN`!Bo zl6q={^O*q6!>mgrq*8YX98=Ud9JQ&ZGVx=5Q;3oM^hDW}$)-jzK3+F{Cw=F7sej}6 z&DE(A9Lp0@XDA-!iffB3YF!l7CaSSHylv`|kivGJ)g93vb0xzj7k6DYTBEpns(Q+f z2A$x2x`$iO=ufGil&BlI{AVYR_{41PEk<jUuZur9rlq!(b-j7-8(Gi(J0jgh7d@;F z@g5UqpR8Qne)-O;gQhXQp{1hNrTX8?_7+AzKIvj3>DhnexHk9pIIXb5Z=Hm5Czh~o z&#l?8DLF-9+SI4Jl21-t7`t(=@ZyP2rd>(Mv61pFvU?ZQ>HTqa(#a_;S3<(Vuf?Xs zX<1Ktq!eQ%*?H`k(#hJGnv9k5F-F_URi^f-PP8yO_cg36yy&2ZmD#*!N{<8Ar3Y>- z&d5kHaO-T|m}1p*=;IfIs;a*(MJl4Ql2hEgL-qU=^rh~;yzx(ByYeKz<3S%k9`oQj z?sUG&?bzd$T<;EiIPt)sTw&6qMH{c2xL26MC-Y?5tAZ1~4`PlTfBgI6lYbGczig-U zENyc?_Pt0m^VBA@>2iHbmU{Ldy>xQo!4ofDIQra-VA{%N;Lh%L>9ECz2%V#Edt@J! z9X+n}*gq^S_TUYkM4z1#H@X<@oB!*DH?Laq#zGk#p<bSzp1vg)ZxyIWN*?J*yy3<c zY@#H=p(iN$-PB*@ai>I8RcZEdSH}_q>9Zj<CH8$fp8dy@0yAAos_Sz^rWQQ7SWz?I zWd6bmA=%z#?X{Kj_>UgHyh7@^(nSqFnZ=^=b0j8zYDx5aKBt>U?ePik9=A&wsXC#S zbNtk={r=0&C$pmG#7fB{XF?XG{ulpviCx&xQr`3AsT&#W%j#pi?y{U+Z_@cLS2iY{ z>G9>JbA_86Sf{T(^XgPqB?r%A52d-Qe0qDrj!mxqJ6BhBNoUW5y%ozp?(00_F{Plw zU7%mV#N&~QBi|&IsZwrQ?qSNMy!)~}L{}c0t-Mx4)cv2vtKt;xL!MVA%@fQr_dDjP zs<~v2{<g5@3wk%Z%~r)WUNE~N@4_v+!o1;5&2E{O%ccnCY@YNi&Zx1@Wx}S`B>~!P zMuA!f1?BJ6pF9@-DBgA96{Y2De^(vb{ch8&`jhWCq8?=|xjaR=(#mb`{q`*uuWAEr zET(i{e6w_d@ZyLmQB!liFLE)T$`$0RDU@k-%VO%Qoo71cT09bX#ed1?nF{;L+?7h3 zrak81KW(^I?(y6uaxN?5^71rger}fBQIlH|{Qlcz!}5S#Ez3353x1qpvp(lc)e7;# zC0-jX8s>RC<_orPdMvs0R#0#6=~>JXrFX>p4xij5XsQ3Wr04IZ>683gW!@|P^0`=e zypX5w*YvZWE^V}wTF%j1Wp+9Fgm3Uo$0hxb&O264?M)2Xl+1hL^$UjBsfR!H9A6RJ z_vXlV#wgLkS=$TW7tMOy9eDEE*$FYrWv==v$SmJ{;^;;9V&$_cZnjewaK!#(USa5U z{M;`ypVi7v#nO|D=Poloaa3FDe8?v&M@_p+KChjk-Wysj3s0W^V#k`JIV_*EgHN5* z_-Z~iy?RcSbnKjDvs;s{tgs0xJGOX>{M+a==LObo&v99NW!C%RBs-Vn$<y3>gZmf# zn0&Tk+qOq5tQ|j3jP<{n<yWs(Bq()%$C~L2Vl{Pt8@XLSZm{+MOJu*aw|$lR-;hgI zXW~tpKh0V>rS{wZ>0ed$3z;<ie676m#c7FOHx$?Z`*<|eeB$=H;+Zdw$z5^$?dr5{ zzL;gv9aXU<p~ac!*DSLweyOwRszp=9tY4ECZCtaY_(u01KbeKjx129$KP)SGX>{Gk zvEVer5sm`}Z&X!}Feh#j{^hBkqd42)!1jhcZZ-L?F;(G*)QmcdW>45B`LWmIe#73& z&F9(nSbwzZ+RpTTjf<$)kB@Js7s@{pUGY)MuJNAGR>qZ=s;wX8{>YnpU)Ll5So!9j zd}o>aDm+;)`2)XHN{JleoUxl>eJsN}CYfI>P4f>talb5YxPN~9<I1dmUu-V_O#I*O zUwa~~mg5({qw_hbb8P3^&a0i1vtF%rrJlj{Nv*-Zth~9;@A|&~^6$Lw{uiq6ADp?j zvP%8OxhK|-tWT9Uy#33X{Z%4u=gn0&kGy&EX6DVEH-AQ+eZqZN-@v}&-usL8?<?nh zob$q_@CA!>9n%;8ig^i5_j&3k&#dG4!e1%($^MAl4~M1C8^g9g-&Y-8`Rv`?{nID% z{rLW>NB6w5ddUP|iNkZ%Z?K*Zj@H@0ynN~L<?Q+P_vTg{|7h1`KCd$1PV;totCrH7 z|K<+W+dseiv^#&_?+<rR9SK+4Z}eBR?9;cGw`VT@HviuFB~95jA3qkIuXr8Rubl8c zl>J7WD4+7*sKnb2H(yOF*#F?A`@-z9@XE67>po6l@!9J&X9E-K*EQ|A3D!3)s;AhV zU1hqvDbHX0Uh%=73d$_pT~S}=&hx8Rug*&J>)2X-@z%E^-%h@Lvu&E`ylvM?<!V<i zzk2^y)a%`A<+rW+75y;r&-G6sr(cSNWkf#C7mT`dZ(3^Zxwz~Dm$F%E*DEe~pUNOC ztFX83Z_~VsuYZ4S|8i-)Ifrp3tLmJlmow+R`}FBs@T=C?w~N#&dO6CwQtw_0esN28 z)jJW-_wTZQr7`T2+V%H@;H4K?;@P`?AK9RNMbAx8KqWzlu{rygmz49$kX>`)0^<5U zu-JM2bg>lrzGPF#rW5K<H9Zo$y#iG=rn79ac(6I<k)q=z<}3FmD_wF<nwCCQ<?WQ5 zKCN_lkqz&E`txbXzXnacqD{<#rd&a@vF0Y`Mj&Yro6B4QK1Ur=S&*vlmY-MRl3JWx zlvz-cUj*j*CFZ8;J2`@YwohhKYEfcIW`169YEfny7ibbYy;#A73#`(~DZe6G*VM#V zLD$&8Si#W9++4xZ!Z23fvm`MmGubgOJttMcfJ@)8I5{=11jGVa1!X!X7I>s)re~CZ zv~cMMm!#%~DOealOm@r6Ni|XcO(O?!+1bHeZ-H<<Y=+&?oWT5g>?Gg3W&?rN?{f~F zE)h)RnBeB*!O1Dq{cpt<c7<;flthyyH$C|F^~{B^S4>~do{|3i#V6w0^IKnvf4p+L zdO&B_y$trt73Ew<MDzA?E{b>&cQ)HK-*k%^$KSloKE^y-UmmmJKV)t{J8gT%*}(qr z3XVhK%MX5ire-Fe`uO#;ytm>!32BPWiv*;s>dysd&%e#+bnDi&Tm8Q)Z~mHUfADvb z<B<^e9M@hcwcA<+Yj-+M@Q&=*v#N`s=bw4^^{Ls*?V_JAojBcVrdsRs85Y$p_YCDH z2tWGEXQ|q!T6C=T*4@o^u60lBGWqVPpPgvwY-c$AgzD?$C&u5kpKyPc+?nLYKT+kL z;O74<wQj5ba~u8k|FB!|_j$h)Z|tXvoSVgTtmXR;;r#*S&uhMv+?-;$?5^~Wzw&P~ z3cKg!&zL&L2NdpTiOLcY1Mu{tA6%ML0!mCFMWv}=QK!V>R8Y#oos2Szic6d`5{p2I z!Y2{RHZtVW56?^~$taFCH#b)>Gc-^zH84;BB`aeKO9dlS2;0QO7%UEwGd4Dc$Qwh% zK>AEfjJaTPAllr>2%_H9Od%GMzCh^^lH?UYIU<NlKO{diFB7yjLjjb?P*R<t0m9R6 zh6<n{K$SN{lF!d8Q2=WQ;?fT&%1;hXEs53-aB<TQNv$Y}MNZ5}y1;=JkeHsTACOoC z${!{QpoJqrsm1xFMaikf3WgxXLHfR_DVd3&Ob2q2simo&v4OFrvAKbPxrMojf`y5p zo`r>_xtX!KxuvO*MXbJiQGRKGjg5Y=en?SbUU31)@Z?H;=U{!8)UwRv)F5{!eNTmw zqS915JALQ;ypq(sl41qWI+h@$TnBOtsPM3{(T6*<m`fksbzBJNDG=p8P-J*#rW8jj zfPDwzI_H;y!Vk%ELy&8bZFf#ANzBPl*9Qexu>#0#L0tO&1*v(C$)Iv78e*1yL}Zjg zUTIDagfNKZ()UTsOV>!v(+v&QM2QC20u~z^ednUo#FG3X8#h-sHv<DxP{0})7?@ca z7?_(F7?_zF7?>N`f#Wr$G&vQf&cqp_#>@yL4^e00W?*1u2E~>J24=<(aU%l*15kt+ zxf&Q48{2U~tjx^Mb4e^o)o`&gGB7eRG&C|cFf_C<HqtgQR5vhC*F*}BilWpsE&~Na z6D|WdP%tw!H8xd9Q-F$Dn423YfMpf(U}6RahL#v&MrNkyViuOhSkzfys57@PF+$gC zZeeDOE@ok1iYaD-X@`ZG1*ST4LkxQ@4a`i??XWa7Gen4$6eVWnq!xjeVFhPar79Sj z=m+KJmneW!QV^HEXI@&qf*~l@K^zx_XayTrM<+*1BST{oCj&z>S4#sY12=PX3nxo+ z3sW~&Lql^rF2YJc$=4-6**POMIlH(tS3%#z)!E6+(b&w*$<Wxs)y>h;(bCY|$;{N$ g&D6-*!q@<m2#ZS+i%P&zYH4h2#-*z2>hHz{0PS&8nE(I) literal 0 HcmV?d00001 -- GitLab