From ad140306b389e7215c766f72de4028eb00e06370 Mon Sep 17 00:00:00 2001 From: GuangJie1 Date: Fri, 27 Jun 2025 14:50:19 +0800 Subject: [PATCH] add quartz readme --- Others/quartz/README.md | 104 +++++++++++++++++++++++++++++ Others/quartz/doc/image-info.yml | 104 +++++++++++++++++++++++++++++ Others/quartz/doc/picture/logo.png | Bin 0 -> 34099 bytes 3 files changed, 208 insertions(+) create mode 100644 Others/quartz/README.md create mode 100644 Others/quartz/doc/image-info.yml create mode 100644 Others/quartz/doc/picture/logo.png diff --git a/Others/quartz/README.md b/Others/quartz/README.md new file mode 100644 index 00000000..78f2b078 --- /dev/null +++ b/Others/quartz/README.md @@ -0,0 +1,104 @@ +# Quick reference + +- The official quartz docker image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). + +# quartz | openEuler +Current quartz docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. + +Learn more about quartz on [quartz documentation](https://www.quartz-scheduler.org/documentation/)⁠. + +# Supported tags and respective Dockerfile links +The tag of each `quartz` docker image is consist of the version of `quartz` and the version of basic image. The details are as follows + +| Tag | Currently | Architectures | +|----------|-------------|------------------| +|[2.5.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Others/quartz/2.5.0/24.03-lts-sp1/Dockerfile)| quartz 2.5.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +# Usage +In this usage, users can select the corresponding `{Tag}` based on their requirements. + +- Add quartz dependency + + Maven: Add the following dependency to your `pom.xml`. + ``` + + org.quartz-scheduler + quartz + ${quartz.version} + + ``` + +- Define a Job + + Create a class that implements `Job` interface: + ``` + package com.example; + + import org.quartz.Job; + import org.quartz.JobDataMap; + import org.quartz.JobExecutionContext; + import org.quartz.JobExecutionException; + + public class SimpleJob implements Job { + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + System.out.println("SimpleJob is executed at: " + new java.util.Date()); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + String jobParam = dataMap.getString("jobParam"); + if(jobParam != null) { + System.out.println("Job parameter: " + jobParam); + } + } + } + ``` + +- Schedule the job + + ``` + package com.example; + + import org.quartz.*; + import org.quartz.impl.StdSchedulerFactory; + + public class QuartzDemo { + public static void main(String[] args) { + try { + Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); + + JobDetail job = JobBuilder.newJob(SimpleJob.class) + .withIdentity("job1", "group1") + .usingJobData("jobParam", "Hello, Quartz!") + .build(); + + Trigger trigger = TriggerBuilder.newTrigger() + .withIdentity("trigger1", "group1") + .startNow() + .withSchedule(SimpleScheduleBuilder.simpleSchedule() + .withIntervalInSeconds(5) + .repeatForever()) + .build(); + + scheduler.scheduleJob(job, trigger); + + scheduler.start(); + + while (true) { + Thread.sleep(1000); + } + + } catch (SchedulerException | InterruptedException e) { + e.printStackTrace(); + } + } + } + ``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/Others/quartz/doc/image-info.yml b/Others/quartz/doc/image-info.yml new file mode 100644 index 00000000..c4471ef1 --- /dev/null +++ b/Others/quartz/doc/image-info.yml @@ -0,0 +1,104 @@ +name: quartz +category: others +description: Quartz 是一个开源的 Java 任务调度框架,用于在应用程序中实现定时任务、周期性任务或复杂调度需求。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + quartz镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tag | Currently | Architectures | + |----------|-------------|------------------| + |[2.5.0-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/Others/quartz/2.5.0/24.03-lts-sp1/Dockerfile)| quartz 2.5.0 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/quartz:{Tag} + ``` + +usage: | + - Add quartz dependency + + Maven: Add the following dependency to your `pom.xml`. + ``` + + org.quartz-scheduler + quartz + ${quartz.version} + + ``` + + - Define a Job + + Create a class that implements `Job` interface: + ``` + package com.example; + + import org.quartz.Job; + import org.quartz.JobDataMap; + import org.quartz.JobExecutionContext; + import org.quartz.JobExecutionException; + + public class SimpleJob implements Job { + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + System.out.println("SimpleJob is executed at: " + new java.util.Date()); + + JobDataMap dataMap = context.getJobDetail().getJobDataMap(); + String jobParam = dataMap.getString("jobParam"); + if(jobParam != null) { + System.out.println("Job parameter: " + jobParam); + } + } + } + ``` + + - Schedule the job + + ``` + package com.example; + + import org.quartz.*; + import org.quartz.impl.StdSchedulerFactory; + + public class QuartzDemo { + public static void main(String[] args) { + try { + Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); + + JobDetail job = JobBuilder.newJob(SimpleJob.class) + .withIdentity("job1", "group1") + .usingJobData("jobParam", "Hello, Quartz!") + .build(); + + Trigger trigger = TriggerBuilder.newTrigger() + .withIdentity("trigger1", "group1") + .startNow() + .withSchedule(SimpleScheduleBuilder.simpleSchedule() + .withIntervalInSeconds(5) + .repeatForever()) + .build(); + + scheduler.scheduleJob(job, trigger); + + scheduler.start(); + + while (true) { + Thread.sleep(1000); + } + + } catch (SchedulerException | InterruptedException e) { + e.printStackTrace(); + } + } + } + ``` + +license: Apache-2.0 license +similar_packages: + - Spring Scheduler: Spring Scheduler 是 Spring 框架内置的轻量级任务调度模块,通过简单的注解即可实现定时任务,无需额外依赖。 +dependency: + - openjdk diff --git a/Others/quartz/doc/picture/logo.png b/Others/quartz/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cbee9893a84c3be9f0a6b1cb3b49b1ddf8af1ce8 GIT binary patch literal 34099 zcmV)fK&8KlP)aB^>EX>4U6ba`-PAVE-2F#rGvnd3@N%}XuHOjal;%1_J8 zN##-i17i~|6H60IqeKG(0}BHPFf=eQHUyGJK(;wlDA51~n3$WT0in5BvY9D}&jkQa zx)o>}E!d0z03ZNKL_t(|ob0`6lwH+zF8a;6*53P^Q&lRJ`VI*R^%AYzntS;7jZ{A=hzi(;M7iFr8^7(FpYt z$n-*p>Q1xwT64Z1YwuI1N(BO{q;pE>V;odC5h zL6Se8K|H{SVK@d6puPcx0~CJB%EEfX#T7nXP&%r&&l%=dC$d7 z5}v>H-xj^I`R9LGZoG7TTJFZeb3eU)@fCluud3ZyAR(^_-65#8AcnBMK zE;LrA z54OIRJ^U#+jspL5|DNUBUmpHgqtUpj90ATV97sBFP}8$=$)OXe)RvI{?4{- z7f;jl`qac2j4I!mebVYZM{NOcN#vc_2>j)#i5lKPnU?4!T8-roE2OtK>gKP$`1QCW21Lhcz zD%91{Wz)|roj?8gb52>cd+n^`sNNczZ~xYYfgR8MK{EKx*KI`b<>^REGk27iUtBwy z>zGU|>m_{r%+=5T^syH{mf5a{`|A!}-97Nb@1Vp24~ByQ5kXb*f19WMJ`s8E(Bvqg z|DC};C3DS&VBZ6=Wp%jJ)q!vaL#xoLm>*^C0&E0!ulpp?U*DwigRloN~|6Udv=-?V>(?WA%xf9(iuh zr%GM3?iJ@@)FEO58Ab*J($O1v5vq!G#s)uF9iFWe9rC=Yf|aL&4F!;U_|W4<^n>F5 z7hbLW{5QM5Y~rpPC3UbiL5c`$BQ(-sl%ouyQ#+t101VAN(UBX^lLgekBm^%4afHYu zNEkpij56s}yPmCh-1L{2D})+#)y*&1Q~GDeXq%d zu!AbV8UY$E^N?51AmrdgL26;iB2s~A41aEV>|Z})?FpMMIemGxUF+U{`?pX2?Ng6j zJIf4yrS1iWEj$!r84_7HXZ1znSNx_RE)d-gEGP>G-#fz*R21t^1|3>mr*MFvu9AhPtiGuEzn@H6Mk+277JZ@c5W z%U|F0$hFf;!~e+)4WO$$9kr?hTS6)hC$3!H5tZr5!qOhb`c)@wd}iyOPepP0-g@1` zMlsTs-|58s;`6&+BL&;0m&^op3Idur(!-ESIs(Cn9`{7wH?|!R`j201`F!f9eJdt| zx^XD^6p3aq5{xIA1RfUQ6i&?Hc{hsE;V4V*7tGwO*p7W|RfTmGsH9L%p%I~)dBkxU zEHT(CW)PtbN5$ULFj(%CUw+fC|$ z{-Kh9ejrLvwop-k9iTNRA}G2+s2}xp73q)nwzn)I_;Kv z+CV7=oOmb^92=+-NFA&)lo%N$h_th##_Qm=Fde)MPYsdOq@%-&KuYCLY2mYd)s$UfWSS{+N8|pkD3K)Yln)dh8maJ{7 zr+lQae$`1k?%TNMGq!8itv++G5D*!tgcOWIi(I2!Hm|qc%f-Qi2P*)hGk5|MN0FLn z#c?A#27mX%ht3*IyXV!ML8X)+%Z6c%fe^t_1R#S&2BRsQCV~6b;dn0tN<|&tXrw45UC#ZL)dgI2ci44IW$q{YuZx#Kk$4&6Gc8aiuuC6qWr$ql26>X)6rVf7;ypR%Z9Nb0-q{LY$}pZdjL_0hl= zQzeMRFe0!Kq0R*F8Zhv1B5+A%|D3a~7;N{Nk0e$tojds4_PrN-F8$gOpfV=1Pz4>P z)%a*3ZAck5q`njkq6|<$(YidT z@A&6s2cG=d|2ZQ{znFPOh8X3@f@_2DY|yYJBr*iU4h^xW%vt(yyVrcAv9t?V)EDo0 z<((8Mq85(m$iGn(9sO#}7;N41HWBR93Dw>Ot*nP6Ne*!?jvG+`KfZtG*OF+)Hzi9E zCxW_W7_I{qHc;lGosTc-kt={-P1%^Y)*B*SBW{*gDL|8Vm^ zudAmQPS>agm?5YD725?bF&F|*84}5mQG$#T01T@kd;|$Rai{0SN1;`{hKT-*nX@nd z?)g7nK6hH1S2h}3@BEh~Z$9_r7rUaj|5NH>z%$B3aQz1$NeKsG5gVY}RpF?P%tgpb zU4Juo>6&-iz4oJl^~>h#eNSx%tQk$gLHKN=C~7-p;JdpIuVhy!ne|(4W?$UXX1dhJ$*6jS`R&Dw=^+ z;EABAqHg+N7Oc4&3r}kI5gawloz?ZK?tdK((*?C%s7r)|Jd&&*bGxR$)$aA}dhNja zVXDA`!PG#EDo6z+5fn+d<~ePPd2Mwj()|84sxT_KG$g}o1WyJvpCGm###hlDnSrsd z^^rBAw?49C_G_=cwI<@mpSF7~MUq`xE~oIhhFomH4H&5v2$Tp62LWT)daxRlQbxm9 zL6JpNGLVLcO#$U;7!U`*p{If`B-J+uuQ>noU!1dUc6JmG@_pgCU)^`Xz?SEK(WOC> zj}&0Ys7)jkDFC5xo=hCUnixw~tk~MVl^=b~pF8{QH{Lu5uz~j;%oczmG6u1Y+Ro{% z)oR_wlmhLlNo8VaM|AWb3MC2@tWj%|QJ$!^hvs;vu8%zdJiNOjHeG@#Gkd-KYdUwHoaIITfk9V!ln2u4RX5KjzG6g*HcpbRG#4Kjbf zaQUjXdtXNrCoEi0WAbMz8Dt_b#^gmNMWs?{>*xFYp4TXKu0q^ukw#y`hd$RS2x|%( z_-Mp&d_0`r@}{TT9(v(R!#v~L$g1eg8W=F8wysIp0m^yND)&K^LnyDn=&WnF_=E(M zZ|7NRQ7M-&TpdJQ&rpgKKm>{tG!VnU!!-K8w&BFt_x#VFSn<+PKD_sZEkFJKk{35W z`sLXy*Hw&yRUjk~pEX&z$Ys+!72ZrZ7Y&LL_s-ga1#3Idzd3SPHa$kk+Uk%JD8EWr z6(ZTkrca-C$jyE<@zQT!?Tw=7mQ+%JEW#%k_^eX~6j}p_iik*2DIHp{`^Xv5JAb|L zl6QR1%_$SgtbntlTPWH90Y>twq+l(=_xyq@Xh~GG&lMhPPFtb~sml;245KkJukdW( zGY?Ng=%t}AU3u}DKfdUsX>BhyjECKK-n8b$XCD9KUJQTTx*EvUpddts;j{rJ1}XBq zao`(DF(L&(YP)gLnp1z--lJ#_db&#kZw?WRF%S_L2-G>Oo8Q~k4dvxm-dw0e@aoa@ z=aiu&AXO*}pqx7k?ObUt16eFW89Ii;nya&d6ytjMA1NdHz5AYA_VR!~#i>PP732tH zD(zkt4jP;I2h*dj?H#EpS#XT-Gc3zwervyg2s`JdCzs zW^Ygbjv<910=$PIhf>UKlP4_j_JM)6Qj&ma_17I;o z>k*7CgRO_w-~8IDxzirL_Nucxw%GFIzujlnO{Z%5eqNMio)1f`;>e z>gZ$!1&@>zAP9^Kk{OGhG$))n(}0RclDMavlmd z9lOvf9gttU9pH(!BBY5%)=5FlzL`2Jl}d*Y!>7(RFhTt6zRjO@(fk{R8W{{blnp^V z;7td8f=#qUVkFI6pn$_itCZ(Y!=p=6M6p3;5~Rw|wEDGkS1-P`lMU#zw|{S0_2q3> zl+!o9PK_$qrzjbNMlA)K1dU8VFd(6E6Z`;j=7M6u(v=&J`T=wZx+`U2=1++Tn8W7U z(_I;A=b9dPY-btZTjQvdb64{`K7grfaulq%EV75@{yq|(=nX%7{GtKVwV>u45@TU} z6{HP_DWQQ9O4{B+wJHNDFciG2k&(zI^y+g4B8DhIm0(N+&Zi}^3Y?z>Z#-ZI(47rj zbM@J${P2SHb2~Es2>?6q`0p#<-tx=;qf3UqVl{$r9T32I3$-y)7I^X?D6BF_6aoV=2PUI(f~;? zP)ZmjIn{1Zk+U5sE)_Wl2H;h}%!rH`SCr?NHlokHJj4$^yZ?6vsP6|Vgv5mK{c z1*?Lk22i=J>!fB5=FrrF07x4RbaizjO;dn+ zc-(^BF>OSD{Ikce8j5HBAoCVPA@MHipsMg>!N?FnI&#jOwnRGCT4Y&pE*J{d6zWrW zR|P|_Su#tu{pZhI_+E}+~@ zp|!?@h6t*Hp04h33wFn(5#994fO%%`{!52w`pukhPWa8~G6a~smsb>kaN7%p+U!0m z{*NFsLLo_Lt%bM@wdxSM69ePxAUE*2)7C9}5 z&J)9#GQO7zkLktB`7$G=B=v#2oqv%=D?n7)l ztmUjh0#g66d2?s=w{tBA`-kUxih_isweY@`X`+G1uC}F@e(b=IcA$l?TBO!;>J_O1 z%z#%+pFZuQV?^)%_2y63Z24v(hJ}X^0ThKfW(Zt5c#mMZq9zBdZ6IHiPFjRE2rLFd z44(-~Q4-<~R|U)P=T2XH;zOUkVC|c2T=ikG>4$%J*6^MeuIQGb>%bNbF|ZLseTGt8 zMzxWFOewFv2M@GpuLC?xenD#l?SQ)IlY($-#g8@`ZVC z^y`|2v1n*5R{)AY8Uu&{gk6v{ulCyZe}LK)9x22}IRD^6TO5;xa}MG&Si%?1JNu0L zKKrrt9c@6L`^hbf2lj6JWP<(Q$c%w^23=7CpAJGTq2XghwgRI=Fj_Qo0w4v!<&tEf zMUW_HW-1dh=Rjvu+G#g>$1p-50%94+X)_Fkfsh4E z9Eun+@n9m-EO?B>d2d6=`4oLfR3yEHn zg8n2yw;M*67o;d5qYAt_fKn(ctk!|lBY^>;X?RB?Ok26?SM5I3P630wkp>pch}$YI zv*))jt|v}{&MO!il`y1&$N;PnjJJ8jQHSQ+rpGjJ8*G28o+zXow0pS*&wxh^sL5N7 z1)KraxNOY{jx1@{Y#(zo*uaS(=dWXY3SZ|2!i>BlP65k|ay))z zzWCi^0zZEEg*h+pA3Vh)f~bLw6J%)+stu|?gx13)&3Sb?@mfFyXJer9fddy5kd12I!#Q0d1OIZYV=b?itg_2cP-c*6Q1bPufaU= z?CvY5H2p@hWw01zSq5Sg`pgThgIq-hd3$AX1N#Z?B}L;{GgK!5azhzB-!Yv?DDp5t zW6`@%g^!X1gPFj`779h;>*$HHFMQ_GGw(QU(fIk8j==D4Jbmvyr}yvPcJU13ZuD?q z0}v937YK(jDyj4WH89cAQA^f28j&%79IN&JwFIoGHEwI zbl)rcPXa~IJlYGgd;~Cqeb!Qq??jA$Yf&z|NC5h#PkUD{|ClhMzxd5_7Z0QB`@$uN zaQGl|ZKR^htl0sB*3Yu23QyFCS_E1InnKD2S&8%Tb^P}TAD*M&K&UVx8zW6U%8?+J z!E1l#6KCCa+LE5mHJ|`?{`}Sp26t|Mcv_aiAVVAhwR!_xNg3iY6cT;_MuqW3@vIny zBFzQ^hgQyP7^(-bWmLW3r1hshb+nJMlfk~`<}aN2O1s{F z&%lNNDGX>{%po0B?3o;d{ASYw#i3Qd{MnXgLN75}f;fhVg2ZE*QN&sQwSRQQS>HQn zVNXYg@Xy@-uZxGbKK12k%81m1nK4wWpCl%x zd&N2be&)jN_BT_#2R8r5e?4np?+aJ-q5c(OgEVunoCE{v12rkk9B<7#7X}oNmO>vP zg#5v0*A@>RVCSG4|*|YD}^-2*!DUl%}AW}em zi$@1^h|U`<&g`rIr1 z{P1%x{$VYd0|%3TSRRoykibJ5b;On-qg1ug?8gRjYSN?_RB0Bf41CD@2Xs8EU0}+KWHq7pngXl>PUUT_*OKv-7MQ4Zb+wQn|Wn;_ze=*G+{Oh_`fD#y+ zKm<+02qq9K#5VxS!Xqym0Yx>Q;n+geBSi#NpyC>c#34l&QYs^s6zoH_zh=AtcJ}IX zKeF1PKV4fO#vx9*H!GXYRgP67`$O(jtFg~F5o|~Ne?}H;J z&ynLfhx#ycag# z_MJ5cwmO3*!H{$?|4`D7o` zl*aJzaD2w9rEQB^wr<~fR?|U2YkG5RL_vrAMtHU}YNjF*M9#So{m~{Nzpt+d}z)g?8rH!>^>uOfuo6$h-#cT07a7(cv{C&h8gA!rE%G2&Y8pk=65E#1O~o6bu{q(9&mzd=&gA?G)INx--}0HO9}ha z>B|?s=SJ23ZQujquBTs`{_?@}G;hnuoP)820S#!5m&mKVMNdrgrbX~to8R%|oPtm? zp;2LK0E0-u3^eLhRFW9*b+E6YVj5pswPe;KpTF?5jy4Y4?znknZP(*}+@<~3Wlmt? z9%$VoVnxH4rd9xXc1c-9aGkj|pAW@V`@q2oqz!daEAA4@^ zr5ROjAQM5e2G|M&L5V3)WPFn@69hpDB7DfL85JlIs33$*LS|cYj_CNoiR4{6VRv(l zD#}(6N$pGX`YJoWdd2$ZCcJ^RjHq1Ao!Q_3OMb@KlDcH83q=G_n*`lfXh? za^o2)@vYt`H;W3*W(NhJKIA&J`9vP(hcO`|5Db&S;x(rn9|O`sxbuN$`alUpBaDm} z&h=om*et`pBdwr8+OU<0QRrB-8zKKm&4LpEsCvwuJ?FQF``amHME~`ny^9YF+m*0A zfLD}Dgv`~Tl;m2W61<(t5Q z1NbV8G%&4%H~+WKUewVeJvROD#`A`MyYVj?7^)X8S|SQ;8sM@ybLJfOx|=ed z=*{IF?Fe)%Q@q3dg z1&IKnAX9?C!b?~~1cw@1s3G`l7-j9h=6|~EyxUjz9Zm|iO&HjNJ-@pBylngC-!EbK z`npt6(h?LN86xnTAT|jhn{0k1WzFiV=xn?#%s{1foj~1 zdYWPeXMhlfX%1$tzw(CTV?a6w&urYi$Wzyks;tPmGjui3EYt=xTlD~pq<5%QwSrnZ z`Hp^Gv{g@3EP=>F#Q<6gn>z*(nSpfm!qQ>y(f`7Ac=h}looPS;Z2Z;F*A4F4 z`DhOSOBNyqYIsy*0_75aftx$=_jKZ5nLx}C=aHCjbETO_YV|t{7cY5Z;_q@ClZBV| zy}ZUm-B2%KHr5n}_Z}<^Xo#SS)Z5IynXkT|zn>Dm_JdDvTQ=zIO$;D%bub7uB=DvJ zI|-iTL}8iWRp3z!!fOQTj|jXi!DxmaZd`Nb^11h1vV2CzlIfqi^X8TNU)*uN^(n|Z zr1cbuEkj@ek-mkRQW(5wajZ z7sW_nA?JE7nD84M$E0ENmYrwYa@UWX zgz?qUv0y}VHGUwBP`3nRS>vh`7A<;T!rvVq&i~ten-(>=+&x_PC?|1fl@tNn62!Zp zo{jbnn{y6ej>15>Mja7b#Ic2D9xffitS-Ozx<9(4V}&#J-goDQq1`*5>hTSrks&fb zEv=(mE;kDY+>*Z<9l}q1A0{|>A_y_8D9Ag2V+{M~Z%Q(d`4Er?$U#rHkg?pc+aRN(L_T zVCzBRLEQdnozMvC0U-}h3^o=GR|lm-nA?+Fef7uB>ex#Brn`Tz(CygxM?D~r_h1I9 z^%~+z7gFz`B8X^&mI8!OKKP)MbMug<@L;fs0hhr-A#oYbPJgj{%EymS^z0Bk_00A& zH0t?Lmevt704Ipm=8nwN1(5*>K%6sZAeb||?|lp1baXiX#Pj?*a9Qd7`s&+YjcDk~2^+DV(cg`O>9_CD}Ls{zxuvqImq7t)Jn_EJRTR zby=9b&JoB&NLaz*k##^$CUXvvB_vS@aWWM|N&HvK7R`S46Q?cf$U@S_pZ?SG!F^k= z==BG_<4yO5B9XN#HwWE8RM$B8rW#5JEd^QE>f>|L<+ zu76mUJ^$D>eI~oUY87QF!7HH-4a!zRU>Lv%QgujVMBY@1;0sY{;yhbAF@^*qMdnK| zoIqR+nM4>)`u5J)@X5pWEg#3x!Op$=H>BJHjRnjEMJ3D)9H>H=8gI*^CNB`gg-*O$bmhSUfBZY$ zFnhrX$LGp-2!8bQ-^@uf-vtEY<9!(WVT^(I?Z5vfio&2WGgJk0=gs**f~-vXf3+@_}S2 zJJN_g@$BADB&Au`lV?CZJS;#80}lh2kCq7J?@pNA!qy;bR8cnBpRHRw>yb;>FX*^1 zbmOhxS<~3D@w0Qd{@0cqKn%+f;566A^BHea=OKwG9m)tvXB;u zyT3kt<(hY$^L-pg54Yd{#LRleJtm1E;=n{f8^Hix1!_7rBly9g9+5@5VeNbChmJ+Z z8PQ+we7*e6u%6JUWk`&LcM8v(?|=F9$6`K8KBuSMP!)8=gx*+R|MF$0>}mIU#$x;3 z-&s@NyZNdfuKsmHQ*cy*)C38~@DXt6*ajJ;%HwknwNO_ID&>-^woW_}5RO7P4?#_U zWX|FzG4uEskWRo;8+Uvhru+L&051(dGa#SlDdM2^*f63B4^@X5(|bPfysGwFpfPy- z`F&@JDcu;6!gvSbKw(k@X*&S9VvvV`o1uO?VJSl-!`J-&Wf$Dr?zN1?(|6yza$xIY zf834g4H5xq5~Eu4m}a`6si0~?MUqsThH;dKshm$L&HLwz@f`^Ik>))m(B2=EEyQJr zBSJ%fg{w|}dcrSy923SpkM5k7N~I!VAtHzjU^JI7golSBJqF@=K~Z1=PFTF~ef7(? zqN9xH({G8{^JeXWx_DGd0?`!Sl))4BBk;20>zz)qxrL2WJlUop1q$_g zZ5H|_0^ukKkf?{Pbbo!(%GJk1`3}J2Pj0?gx$FC0EtmnrKBy?`Et`s~i%F0I0TQw^hD>xVIv=R+mWgW9HwJm)%;uKi@+ug{y=yZ!1j z7k1Q*|Ky$jW6|Kg-Dl18wQtsqqLv9tR6>#xoMaeG92)G=>!Vz%Y-Ggq*j#6!2inRB zE%ZPqW4uGAfVB*lrs(eJeL0?UT=uTr_|*84NMJ&j1s;^QJlq z9Z_rThZhnt`sHDUp3 zKuC~rf)rf<2oco~>mU+mK^!5|7>)r)86xYz^(wlVUcUYhKmOpPoPf!|;4bXG@9wjB z=hjcof%~R59J=D*UpiLQBZfd>lwioA8l_+fm%)grb&E1T5#q6Wpt(WyWA@dsN z>SPq7xCzKdHMd^ZdZ_7Wj^!={ncZcJPFV1vx(nNX2jzJB*==Wo;%_x`Zh1eeHW}TF zVDmXADvloeF%b}4K8etPHRypFG(zrGA_xc>1m1*yjYcQ|nAc->{q7mFJ0^^O@{WI6 z{^s7DXBtT%zJY3^3W-d}YqosS#Z*r25QxAn^#$)JEJ~VHv>R3K;H01lkbl!*+U6r_h)q=hcbu=AeM4x>d{OX&7 z>(oRLrBSm^D4#)I^lC$MLprI*&z;)fiE0L`jix6`QH0?}9j0Vqtp&p&cIls8dGXng zP4YrMG&bG#oiztv+;MiV@!yYp8Y-!YL0wb$yg(#0Vn7R3`cAkBDp?f~M_72`x`*4n zmXA8_erWUbq2b0%6Io%adQcYwVhRS7H01F_f*3|VC!V$FnkhPICV{6& z#j6!$ejdrKz(F`hwU!}{7>Tc8R@v|Ug9{EnO7&>q>AU}Zq3n9@%5KsdfE0-#xOx>) zY>=iY)EJO300K9AHH&72ViRibUYcZx5RM?!i0LghA1jSn++8s_aAk}xOf1-A#Om6V?{bTk{#uNs)B&4SFK#Odm``O z_Hcg3&fW7lF8_6=2;l=pcw0a*+I0L~aAcnO1d)deTP zod5WS6Z_gOqWJXPH?OR{w(Ekv?BGr8Qn1fZDOrd*q&^Kwv*0j4Mk!R}M_o|T+&J2e zew+NwqBU!`w|gBQW&HE)zgp&n60k+;GGtkp4>ocyj^2pFzn$WphEzk*jywuY?T68Z zV&oWrPn>t=gfxHKZbY}dbl{wZFTsH!>;OswQ&9=31P{%N@fipW5VBA;*N_wS=0ovg zMbMuWTHp@=0zmp}OSpI^3m$0Qu~gs|<-e_ZFbKmJF(RJ}2U zz(s(t!nuNFFfx_XC_tiNmbQd;S%yGJ;8`I?n?t(BL+gh2UeCQ33YoFi_bI*?5xm~B z^x=5*B^@bV{ZYX4uR7Yf_s!E&qFX}6ItoQrG7t$IOrTTqpBUp^0zgZYs+IhW=2?kk~!59N$2%-vOA`l{Y zM_``;uK%wtJZJr_M`QsX0Gsdn?(&0sw_aE>{u>N}vVjuAb0H8iQV1v>?XJSNDu)*j zkv#v*j1yL_d%S(CJB|k*{muH+xgW8OLL)}*fff>R1;$2wo!jv_n)=wfc^hLu5F`;n z()v~FRYiq^wPm^MiU;v5hO z1PZ5Nf~a>2!x1V{#hhMjzxs>?ZRLb+zU?2^RbPDO${wxWz>=XM1QVB$c?BqR8if>R zUKkto|8Y{EN~7|nM+!mgb|lAL+@SgQKU}n8eMc1OK8o19{YBpO;=Xf@iJ>s?P7qlF zNMKD69yx@ko?lSZ{y-MM=+Jyro;J4)N-gu`)dLDdq+s&(%T8PPfqUi0qOE6P@2l^e z;Y}}u1t86()dU<8z5&guT7J)KD}k0LWjjfXZ6n~ z{6-VN#yf6aIlOoC)w8&IgLMrU6CsKcNai36NZ#(&Bp#3H*Z^|IL+cI=fR3U&QSg2X z&wz+vtsP!=(&`Qk6pww}|L_y%kS*UNWZ{(nW1E{?*zk%ey9IxRF;;iB{g81DSs|b! z;QUyM@yHG&8I~-VGbyRLww;ZqU#pveIu@m-8$fOxweT*{B-SfTo-_`1`_XafXzt^O zg{lu>iwc+xlnr8Q5nBb)0j!wc^Vo$;XSS`AX8TzUC&iOL99l#9=1TKCDKodf`T8S@dmr1{^XA*bOO+Uz z7ZBT)Vv@kQ6qfi$vaYa>8a~ieV{QQAL#v$2DWeCJ71{u z&AKuRZ;%$`N10aU6n2e)H7jWV>#066ylQXTmCojfFZ78dFUgF{GX4jgHOv z7j2#4hX!6Hj72t~Sk}{BI=FV}yh(|G+IA*h+V}cuPbNs+A=hAOc0i1DCTTuNuyyz2 z!XZ`0WK0?)5~z9@FuWs>FjO3j4&me#bM9L=zpE|b=B6KiYeQrA=HIE9>>CjQ4G(0> zD3>cJhTCLbU{t{x@}b;Rr4J8nHKGJ~9?hXMN5K=#JA*9d4&(R27IFpf|QDji{Ipqe3 z;}R?sr3hcT;GDH>8Tawz-Tz}z^_7>-n2p+v-YFU$Fi8bo0C5hnrJM?CTKeI~h%K}j zQfX?Np4|V zg7+RG!Bb0Y1Q9`&Wupp$QyHlb8KdHOj4}Sok8K#3tk-Xg5xxC|!I`h)#HHyzS@U+Jl@NNeRu^?eWMhP-X z;K_hgVYPuC8b%3Km@I{bV9}x(J16t~+hRob?Af!DnXUt*BX+vj0&F7GGlhvPe4~nr zl|MW8%+uN?h;jZWFWcC#r7!enjJjt;Q37qGphk+=CJ;3M6$`~G8IyVr88C)ChRd(IwO*O?nTD+(b&3*zX*PmX9SoNMX4u#?Cvi&N8$6O!&(*$LKjvI>fZ)Oi z>PeW9G*Jw24`N@v{>@Fl{Bs;=dqdbUjbA^q>Eo$0KLQz$3Zf3!L??5ji~gt^(QR+m$$6AQ0=xYRLO?Jm0)mNRcvr`C>t6c9bC$GS zVZE~A{B-Swm)|o)rEAre!)*3?16BmSk-`{*EUo9_vecZ!IWn^|H>8Bo{81ViOvfEC z-XV>;5V>LWRA2qZ?#J(6*Y5QktN6D&A6_(2H*>tLfH;OBz#u*RA9g%Ov_waSd*@67 zWq=L5_kd)dTDNM&q%&=fx&_;{_tjpql^aJoR@y#j4k7|;gF;P&6elmA|LbbC<2>_r{E`hv*@nK|fGdne&Ad8L^-(-xMQ!((b-4JV`u7Mt3#lB}B zyC!|(c%^=_v3bYK{Or~}7pbj$Uu_AF6c7jU?cYQvibCoRDCF>(iqTLah$lp`fi*t6 z;{3IPll}fj-H7hq_xg%7L*O^EcEre4m(QI>HjHj+{MiL(tl8J@HML^i1)teJYt4o` z-sZ}+^{9kYJmQD}mm#)E%WsZO_7@~EZJE?L`ho*Gp)kO{4z>}TGHiX|`mGP&wV~Z> zI@a*BUq1426ZhOwbpl}nuL_~gNT*E{A@@Jx7!;HzAW)n_vxi{m;`v8JDeR~l(fw}^ zF3yyo+&Vj{z2K+<6^BTwSiWe+<4b$n?;VfDnk%n)skC(U!v{J3->c#v;$X-^QfeB@ zv5!Mky$c$CGjH0CBRLc{8w5-V8I{pxf!CgYLLNiN3GdDr>}M?tDDns$OAE#&ct2u%8^Q%_m<>XCT&qiVr+>>otkX)oInfV_L9 z1C(7e2_)n0#9aHab54Ds-RpTbocg<8*;-k6!m|>`Ul(`~7)l978_S|TKk{fr^EX?@ zKC~N=){qLpnJ#FSp%>M!JoVsDuWa|ajukxo=#!V*xN?ht;8nmT2#jRjjb?95QM5V( z8n24NI62;3YPZqQ|tRW zLZ|p$vElRo+CI-)FvArH?kDAzR6GVD)zR7>V~ zm<&D9!+}kV3^6h;0a{02b^yF<)1SDlk0gix>*IJY{MUcE=d2ofW>h@@ga4nsH;=aD zs?I!r`zPGAvA!5kU$o)z*O0kajBLUUAPxi7u~c?RWElH zRGTV_f-2d#%anyNhGw#5W+WkyB{4{#84W0vDJhk6zTw`8IOpvCO zU1h$PPcKf~8?oc;y}$i^7+>RJ#HnDg1ZJO|FX!3fd+INyeKAvj3$DESdjP6H zRllKs;HEg($4KxLE<@B1YENC)+g<0bJ9OGQXfyf_KD+V7lcI6y*{5d4#>#q=GJDQ$_t28S@&UL0 zoMQ&(N2~I%)8n~UU-zXUm%pcU1wINcD{y%d)$NoeF-D5a;o^7)exK7^b3oRtl$^qX z)FT*MP)3K<$gT~KU95OL6?z+mh)Gjc zs-OWY5X#OCXP$b}ebagT8NGwH?HoO(CIiWUbn-J1ME4p~9G77OpwQ0yPhWTRJ=4CB zDTF)XT>sjO-}L#8Tl~%%ORYj#D`GRm8tM?RBA7;~#OUtc+da&Uov1-VMPVXAp;Ctc zEAnv56F>UKJ7;@+^AZ2;w%cD*k@rVijFHh3di&4VbC92{B~BT700*COXnBc?sM0kefX@Z z*8gL$UmJDB`#NN(YY|OGG#M(S3u+!f1$?M!=NTa=V)OKwbw{YSy>RBn zAAN1}g5S^Z03=U>`Z{m?b})_C-t+jyU)7;loZo zqSOqPoURW9abPS)5>se*68=OP=h;u|oF;#(%8z$f#bm^&bVZQ9+k7+-6{~(sJ~Cp7jXIi9gPqfD)B}SvcHFniW%vjXu|~t2FMjQmsWt5n zGZsW&d}+(Fs0Ou`s42bF5V13GYfMxSnz$=9#*pXv@Qs(9J?kT$lfiKpyzc4c$E-WK zqlRc4MXNszF^DCK8I!)-{eIbZdOsV;wF}15ZA39l3`Diq)*!(vam)Hozxcr2YiE0% z^8uf_?OUgI$rg8G;siUBrrM-&XHN`bmn<`8*}!m0p@u-?5UdeVz5b-NYkoEphn}$@ zIy^kwU-^hJZal4yVMZn?|9*g5SBm~Qm1<+O_~er)v-M_<^f;|COn zR}hyGRT&SU&7>0J!q#)aJ3Plz)d5%ZqpD;g)Iq3%0h7~jY96`&2k&9$lrw(=SNh4t_SdP2E(#YG*cl6>(%4Q-i2?>Sk-gxfTnK=H81<{8$ zjb38<3JNyUu7@$PKwTfD@`_x=S3({fLL}G{?`pg_R144?02?cc5a?4&3{bjAbRF{1 z4P3rv$zM;^InFAUoT#V##{2K#kmG;2y%yT70kka11PqBwDx#?lZ9oZl?-9vfSx_)Xo| z_xY9+GKSI6A()I{Gt{KXq(pD>Af8}7-p>9*R8*T6NKCdh5?$gmt09UuuRxRl1Vj}R z!9?%{#7xmpGN2WU>XFM%KYG=VW@`O27DRodr7)@$_PajTDT1EEGwa2ZV_L|8|;`LX(<(_PC<+USK#Mq4BJz_JAaVgaaiVvxa z@0`Q?xuD{cl=r<&CVEB%8}pc>a-twb6axYhVBSt2FW%ml>k^ zUXC#R38m+Br{;?R8o;+3W4KP!X8fwpVSF_|`i8cW=HVOn8bz>i3Ge`819P^=* z*B<-mqz^s^kso_zIOnRj-ZpGow{%>AQ^iTdsV7ItjKwR|3TpG&UT&hJ7$ulUG^u7Q zn(SbLSX3=7grz33>CvCOz53O?*(?6iUlZK_@YC+0hoAW;k?b>yL5vbnTwdUP+)cr2 zUzih8hz(;^h1Bev@Dk!)G|1l1_uLzd2qp%ci8vRlw_kPkOEbCt84030hszdNj5*{o9I8`qVj}`ulU^d ze9`;F8k~VlYfR{3HG&vw6~gS_L&To1dG8xKvH9VMrDq^7u-#p>t6hKi^Si%s)hsP_ z&fyz(-g^a-->NhXTY<9n41kfH{X(cB4;53mo)#!U)nxJGrZX(AX zwd&#NU+o@in~8($8tV2T*W62>o(#`;1{<6;>BkH;e}L&ZT<3KLkptZ!Ph z1?Li0o$=;fN1ydiKDSd^A0F~)MnyED!Q*JU^K(E?QYG0u+lDcqlG6IvtTC4i4K+?` z@;J=SXP&rX=&|qi&-S`!8~^FE-#BOUE`Pj_fxK0K5h4a_GdkUhEK9yZJxmOwb18uK zl%$e$U7DyGZ#IovA)5*RjT6imO;mCt5UZ?Oti>M=IfCJ|`vLQSeJA~gXeAUNB?#6V#^Cm(h_!Z;U>^nH^$(nbwhdyFsNyXKgc3#u#sayaSg_deQp z=rKR3rTDP+0+uQ^MhLUtolmOd1{;%|vzkaWG3`(RkJ1S>YL!-Dp)*Wp(@Q69e&G9k zv%U7&z+>w-%RTr0x=X8-6Qd_Ys49<$C7_M%%{)UdfKCXcFUMzf#u7uY zH(hh_#%W&JJ~1Qj@bFM~sdocJGF$$f>W z;>qxm8eKw-NR3L32_??9sI-qx?QqVJ>8?L~=ZQYR4u~?FeUSdgTx(54qamun*AZtD@7YQKUt-lG z-JO@8anhQ5XJ_>@6h!OVXWC58z(f&dMW4J)$!wy|B zrM}bi1!vv-ufJCfu70q}`mtG&Qf2QOqdtdoZnvO0Hjg~bkmimVvvU|5M{F8~ncy`N zLNk4(f{Ti7-+uhIJ3e>Bv@dWD;XnVySI!yk*2}|K?SJ=wp9@+D|5)rZ7^%U>)F89g zqA@A3X^3Q*LsZE!TV4IeGk47NdV83ebiV7CsMN-HY1DBa zckp}*r2D(VdJXwr+z?6EswP!;gov+3Z#w<-6Mj0A>)jJG5=5)g_eTYxv7=}npA-3_ zlY!~ESEjv8!;MSROGbNh;t``te#tJxbsIk0{sjo7L05$l1js>$k~$ zKYjG_;hN8j>w`wQXn!2F{dsK7RqVN=o~ZSZChI&jqA5hB$Skqyuw=0Bg)1&Sb5^N} zGZRF;_N!P_#yx$+XcJ7Q=0g@W&5hTqr=-+R)S_w-4LB)TxwQ54lpJs#V{q;3%Tq3U z`+wO+|NA>l7q^!#^#W*5xOyf;vx6CDSM+XrMaD`p#zQ8FRIM1Iu|xwdQ!-aw_S8Sz zbrYKx_BiNY{MDD=72UvXY6^UWvaSgskj;T%iOFIj-AZ)#02-UoU*DrS8G|!|k$|PX z_RQCw_>&o5@E(|vAQ}`q&hOfNdpC~AEzwDR~?ou9eDnYXRjHVmBmiLj0DjLj;8iDQ5bo=`7=p~Pet~agF4g% z)YPe-5?g5;R1_F}-!Vt6+A{eAE({!Z@eMC6JN5jpw_2@_#uyt_Cz-K^QV*3)Wf-R( zt4V~!8%M-pqb1iob(%F|2xKa_2pTOF!XiJ!GY{PRF5UFdg4>OL{%`L(eB+kwr&Ve{ zEY@r9ezhFcCwI z(HdgF7>8Fk>9js#h_*vC9b7cDt2Tvq1QQr))s(iz`VL3s*{pW)<|=^_LdK{Lt;P#F(CD%kKZ2@i^JO%-dL!WJ-j=W*hfEwbOn1`w#v0h+TPG)HXIN zh_OOUoveT*Pn5l|`+YN!|Ji#@UD<4UP+3PX21r&WPAgpWSOQjSqE^&IVwRyMVCtdp z`|rADMpWw$1TzyvHDoE&O+Rs4_xRIHC`d0}Jh*vE54M2tx|=_ESGD-apOjH)Nl7LV zjg}A-UCgOR@RT;Av>6tUi$1X+W*JowY;MU+xbY|7|Mn%by`HJS-~Ii!-{fQbbmGSD zAM-#i^c7(mPH;~@HtrUdOv4~CMBl}r*PnR8x;eEOnwfEh#*HsM4b9l!$7&o?j=lYZ z#K5Xms}2Uym%-Urzw7HPUiogXB{7sZXK1-pBC(pL!Ag@+n~X#v3uBCkS%t|6))M?E zTc3RR>aCCdc=jXvB=E6YzkKm%$1kxaxeoMbdN5u)oRVqjIfI6g(a83xBp)cnCLMn7 zF+}=uhtVqB_~r}e6wiBx?f^|=XJcu__+0zcq!~#9Z_nU4k$WaF+;ZsZ6~8v~^8XkN z9CkcsUHP`pkMmKhmVwczlqxK-;SZj;>-H;W zdrkjXeCG4tTDN`2$f1?j&xWuEnSPIrL1bJ;a6Ti^+IoRhP%J9a>_`n(KthSHhHg6l z?9=a<&9&|eGZI8ItHY`x)v!pG1tPZLi%$Oc_fi^_-i0;(Z)r3xg4UdU{L<;z_AV&& z9e-ZE?y}$b^hmzs13?u_MW%JCM~cBx;=9$q4x%Hde$94_~+Q zzAqgz+v|F@`097>U;gB?&!0V7$IoLVd0}Zt-D?(*Gv^-YCGd^%#n`L21J6Wo>RB<6 zufOWN6NYAcy?bItf@qQ35g{}?Lo*?*mnqQ`g_o!78;RsjW}QzqUvS84E-p`a{nfW_ zkHtr8*G?Lw&4bBljU{!8wb_}@HY9k68NuY>J1o*2zx&h=zxm$TUe~L^9S=O!{)eAF zbmgcIx8X9xB!)zmW&4zc+fAc*-lG`?HgWq&a8=yyc}jGh_>ub zF^Z0n;v2GkoZ_a^*hRJbMQ4b#TW;0_3g#mYJ?G844m5G*xLvwTW0&a?90gk2&JO*RDHaPM+}01W{)@mOZWn72*^J(S5-v z7zwlrcW@{ADzWCu-+FfO@u&T5W%5s20-08%-Gbn>#;B(OSXxCNRT&WynSP&vbb+Jyz&2=j=UXpXKilis zA7&(owimZ|X6yp3s3|aNa6T!{N6|^^i6$w$#4|(EjZSPMF$2>D^{iUCe9nFda~Y>y zcgru_kthCrM_O1wLIt^_&U1oBT5Ul7}Ida)nlc;_WaY2yL-0R_;Q$$Alk~a(LJYMdIA?yhnI0QB+_mdohdxn zuN7W<^-Z_4dhPYQbdU^(s{&OClH~-QeXl<+j@p-4DspF0GF;Y&cDmO*b>Cg@neFxM z5C8SgZa-to_U_TZ$JwJ6II-3_z6;&+8lRKd?W;zNfJs!Q%m{TgiZzPh8R&0qyX>Mf z=X4f1BSCcWU~8KpSs14$jA??X5SVLL@nqu7PsSt^B(*AzdUNT*SIJC$CvIn?x_u1 z&yHr%ZTkz3``$b59&8svnr~f>X{7z~%u-mvgf33YYcGBMx&JWR>w6{4NDy7RxPPY* z(zu?a^uo}HG*3Yg1!*)x_x-Pi$Ut9fPR!ZPS1dW=L_OopH-2@fz2f~b?}xg?YNV9e zmtu3#ljk|nI4}ws>RKLov5nfn}@Q53N1THpEPUXZN{LfS^vLT-AQ}OU^L9OFbAwrw&J)f8EwY z&$;Zsm$vVtg&&>m=vvB zU%%tV$`_weZDaB_K>~qt%*Mlv1iMY-y_^}02GbMAq|u{H_eCnHN!ENymS4LC!hYs+zcQ==*?AEEXdL&}e|7&er~cOO4*0D<_BOIB8zj0# zuix~u+ZRp4LHCJ2{OF%u7o%p$4kx7gCn1eABFG%jW1TEszONCJ-L+UEiZKprvP5xg z?93g3=({(qT)FhQOV2%J-toC-EQlU?#Oh%e`GARrh!U+P(>kVLY;Zzev+r)da4?Qe zA5OaN_x?=!R^5`TC$lBB2&T0R$kAqk%*BXnI?+LLYSTgytWKUZp}XzcVzW8ZRA-El zs;a1?VDf@2R5w5J!*Aa_>4P2sKKv*Dt z1SQS5^_V(SD%*uf(h1e%woT|C3lHBl!I^IuBy@h?65Pd5GN^M_B#f%k(y{Lg=N-LBdlR+;`= zdrIws$5N-4Mu-XvB8bLu@gLnY8*Ea0F+?mX4(~&k2Bhw=xX*0<7w@|6;n`UCRN-Z>;3r<# zj#o2f!RMrPtG8y>zbBFGdnwLTU}9mr>EuqhseFW?k>S~Ah5s60<(Zdu4n6m(PwkW? zpB(K(T2812o4qymG9?v5m;)A7lZEb2+f-uH ztp_8Hh!A{iw1fkFZF|*OuRUo_3N61HyzEE#)YH!_%3J+YMtWU$NKR(L$k^zoSR_vW zXlztrv|F{N{Xho+z>$~U@Y0c|UHV_d_5Z1l9V(NaUl}EtRwSoiO9Zkh=*~~v-SyfT z6L&_|8GPL#H>6ZLc%-tX+#!v08si!_3&B~re&vd#8{T;Csqex%{Wd!dBxqCRMedug2QIJCarg9HDWcQSSrc!1}r6(nm`M&Ew=3%UOI)RaS*S7 zqu=t+pRjAr`paF}@=vAJgs6OzK?!?SKE~o7e9Mr;n)pj9Q14fYZRDq6J;w1e4hG z0!(_T1>}I-Qup`X94P;Dy7ff0iI%Z(>+ChsdRc*OG6HHL7mE{5e-XF+-aFnruhaM* zUiK4wcKwDkTkXCnCGwrT?#LJN*m-}SIC9B|aeAvlDiAcXW9QJyX+6+E?1j^A{=i*! z^(kL9=oc~*sH!eL>!S>c)FZU4PQ410=x(JP#iY92*ltw_SfV5w=q#3({rEe7_mAF< ze*9CPyI}LK;dP@`_;kc!5Hv<&sGAP7j*WAspkfFUyr~XoymOA@mBP4~K<&F&sn9Tr zrM&+2ubcZ4cL$1>4Wb)2Z9d<%`ls|$KK1ayxU%0qF=#EZ3e1F*msiW??Yri*!udkQ z*}wB|zLPILwEmf38vgl*VvG<6-d)l!K857jvcoB z;=Xs)PyO&!vrzv1r@!!q7q*pahP{5gmJDoxkYN;TjEH)Ob92CFo-Z1bPM zEGoM-_L6@*V^k+2V5zXSqLuq=k2_}dX?TW$001BWNklr# zd@1vqwE}L+i#DgNJM>;tkKRHIGg4Sr=NKvL<x~l)@BXf@bstX_CIJ zf;x&g!qz7r{*7Hve6R07j`x3k>Wf#txTSM)H2oj1j6-80&W8~2jli(TxMCSFUMHOJ zdql^To8~i&j(fz%-NyOTC(+8=;7cTSum9kCZ@g<3mpU!jZ-jj2>E}-IQ4u>m6Gg`z zz38We5u&yy{ktZ1V)w;e4k}>X$JRgh!ol6>ETMJWS>gO^e)FT-z58^)kr(|`mB&p1 z**uANB#45E69SaPwEH9{G!N|5bS#Mowe(R_Q~2)9kKOg%x4hD^{_wwk@wykbSEmN; z`&d+i%?ze4)2_Dh4O0QH5Y>RVrUshUm=gKWjDW@ku@g1X?A9O~qnHVRAyze+==B#} zaOQVrZIRQ6{RYwJp4)IHOrLnid1oB^SYM{M*f>4Rqlp4H+T<25ys+uWX*t+I91sRh ze#7YLSKRdBp_qR(i(RA|MzhHe#6=pqP=mw}P5+W6W`syVY;+pNf~Xiu8Kf>8ePS4W z>gh{{ANbb5{*LpnKl!=edTwWRPAP*Qixh|mqt!0@B+?>aO~hDGBLua0EYV~QolBa1 zS-|448XFPj`46LJtbEdYCQhu0YVbE5ebix(Tyg%Xv+rs+4cKoG-MV$_Nkx|9y`Pq< zB@vLCh@&(GqfM9{RBrj%op)TluVeh1kACvzE#2zG*th6IonS#7 z!Pm4}8JX5d45+UOp-y9thIBl&yG>1n_Aig zGJ=U18KE6Ua4}Mv0*NklTqRNjPs@V~8K@v;2xXM2Sj;A~`sCXm+%{t}Xa})x9QLN) zdpMl+mjCrJS@Drh-bO>fhKMmjoeLd2E(ZFd;zHF3cMDE)Y%Hiv#z-!x@hqx4H8ohN!`*;E14}43F!j?rIwG zx15@c`T(Tx_QwZ3Q2ysD@k#R-a4}#bFvb~hW1Lp)eQ$zBMQEs6K^$5@B^A*Mc{YF_ zHMA&bhl+OGaqWk0dCP)K<9pa=5Z%0a^P;*guZbviT~C|L(%Qq9am+DCKN@YDtPb?Y zQOa^Vnkk}=mRiI&f(>{C#YIrf>A0L=pzRZlRdoDh#yW!lYOq*BRb#|`?6F6G`I_lE zpMyAXob%Ry@$k~sN8UFa90PqVN~4rwklNBm8^zKkB)P<XUsd10HXNmr zgagXDn%4ID`RARr-dFV}`(n)?6I~yXWseQ|8&k*zWAlLi)(*uAPkXf2NkGH zfs&CCaS{mA)Oejq#Adg-mxxa@``&BP^=6UGSb$A|)Mk#6PM22EhenT;5+~hjk2-wW zBbT3l!h)=WPQ*Tg==u%Moo;PM5@o#m4#AFJr!3*uyAil22 zMaXTWmFvjw-gMQYvwUhZf_+|rFTVKV87kmIU}U5-?KQ;TfBo{G4Gj8C-hc#0+ZNPe zlu9a$lk~J}v={#@#OkB;X!^7 zAgk7J-u3_V|K8bgA8ENZxIk&UC>4cuXl+3gL0(Yu01)Xo@CI5_FqB*eL!RfaHCc>A47C(#UK$!oMY6AQWG#3P4KJ8H!@jgEY%s})(^N6QTmg5r(Ai^W7s z%O}IL%GG!yNNm%4V)k?zqfDrWs)3j$NH7+%Ha=VQ@t^$SnM-Hlybj{PP@H;c=j1Ej z@+Wn%{ErK}h)^k6VW@Nz6~?Gb-bnIripecAO&(1S-BQUyMPDwIjsH{OM_KN-u*z>@ zvEPaisd~Do8VG6$Y7s3bef-(R#8RkC@J32n1if9VG&Awz-TK5dFv;daD>74Gd(Igr ze*5Bc*3JJnAi8zS_8gIGAT^eD?i@OLrWW(wt6ux)ie>JJ=%B8^MvG_?t_{Xu z)X?_Ha<|MpwJ|tfq#Di`8k+S)JxPQZQ^G%5D&qRtK2jg~wfmnvD33RXu=2d?w!Y@9 zOFrXAvrp!(#c16@T}2cfqu-R)5DnxZ1<_!ppg3tPxm7~dAs9zD2sTy>#37c+2uuAI zoYvGmnZ1SyqOx$j-}fm5)SE)mhS92Hp_N|72cUSY_?!Csvz>3d;@r(MvfMd@y@Ke* zm$t2_)!@bBsoAo1=h~TE(2ZA~|K+8@zqjyRqLy@AiNr&xd`@&-q*bAzg(;Wg#9`z) z#{2Q(lM=mo-gJ>0tQCTKjI)f^LNEg#zvpL9yy?lEGkJCg@k&^A`9FPn`8gN=x316r z)J2d?iP7N|L=*|bWI9S_0#OP^L;s|YxyWy$6vuF}JkghIDj8VyEQv!LW_Pfp+Klng z$yQL=7H!>0TSuwomHV#Kr3X5ddZMOj7Nz0TrlZjFkk>SMRgqEKjLJA-meH%Em@vX% zzi$1&Kfi9l&BY%G_6njqcI;T9nm!;^h;fESiW;1@qKH?&Zr$fvX7v4a3>Y_nnw_+B zrHqCxm8GkqM#_d-^OjpKxPO5JFNGx5g#UYvU-r-uC?;-ha|ep5H;dGS*!C zdk?!~Px^Y@TK1=m8cZlD+Lq`$EOsqiEmXl!8OZV}q8RmL+nNdYsxj4bT5(AA94q4% zS~^Olf;U-Xg69t?h|PVxd|f$f71VXWI7^HX4UtflwvyT2;F6BoGvBbC&q=IaKDqn^-LasyPbdi`% zNHZcxBEHzj7#Ub2AjzIUNS()kqNd={r#D`7_s^f2(FesryfV)Coj>}z9fxHo~9(x7R%`a^| z9!X=DA^F0*ZR3WQCZ99CO1%Ao<6gRO-KxLLMmK$^&k0qCltHmZ$PL6$6H#2@n)&2j zGpV6ykp2!aO=RE@v4jxFtPo>N1nX?+t#{u0@THG!^9x~1v7m6l4Zri(tXOlC7>Bi% zRx8K#wHS>`(H&f)TpXWh8KsWrX5OF$L$>MH!$G0gG9V!sA@A! zw~%2F;}U;6dNQk^HNG6BoyiTSo_O3{mn{IFq{(2fAi8U4^hgm)MAJ(Q8#in|WHuJ} z+izI+DkZxT9Gs6KKhP3MbCTtZ-00@OFu$u6_v>-W0x%R|u|KtU02fuQN>%K=7Lf%hp3_-!z{&6Y>j7?mO zGhdR=wRIUHf)#~OVI(F2T~pAdA1#*f)W#k6edTX|c)@I(<3a2na?%?{&%FBPj}FDb z4^w3<&Mh$vQ-v;0CO;#s#5(d&je$jj)5vFUJ8aw5ZlK~TZfPR zZ(q9OpwiPE!}7D-o0Hrho9)Fz`9yGX2Y zMEaznrK4C4L@ZwCzW~Y0BRQ8wU!eq?G1p&x<>lX;?N!Ys*gyKCKN|bu2M=y3?)k}+ zZ^y`MB!V%0)PO0nXO}Kt@po&FST?K4?wZ2}tD}~+?;hUx)ZKn)*Sm9*1g3Jfk{Lm? zAo!eU3cSl3TZW7*R%EflndH70#Wr)#1{-TK>C!3;BV~;(R=oYCt?{vkp5D@0b=0BH zE?X!W+X6t}ajzMEap(4@Uf4deEsNQut*R#XCBaHk_ll`5UP(kzOcb(UDYFWvkvv9R zj6{C~1d^ zC>cAm0Y+UPR%-^sFgYcq?PJs}CSvG|!}P^bP$*4nue$15pg}wLJYNDh~fxVzy=ILOC3&=w|nhsY$#A1l?88;zmba( zqmoj2RZP$8XhLcm#f;his*Fk8Ae!VyTH2-UM{uD=F;pfa0!1uohYm)Bu5D9Efg#We zBRH+`QqVCif>^Sd7#o${gLF?*V*DEc4K=kdQKOW>V{=DTp8~XctkIiJK4I~teB zHi2IvP$mlqxjshG+Ypyv>42|XmN(8pAJjn5R3g5Y>WhBC~XSdeX*iHR){L4$*4_^RiCsUA5Z zaIp&pyQT9#ed2``4?ep7526vG3Sf!USQF@u?AUeF)fazp)>gU?oOaC0orfQDNx4zsX8Qhz?AST0?EYH8&KE&rWRY!V+o2K#W*t2}E!faT%RD&ML|izIZhK#DHwy7 zl(Hx0hG}Hpn$KMlgCo-#m2nFU5k*l{1#PYwk*0ee0~kxNIROj7v%{?-7@M*jNkQDG zq6TUKNAkFL8k)eI5yX*P=sj_d=GeZ{`Im!8FLmGJ=cPCIJZ>Pp_prYp8WODwLlx4X zjc80Z$G&{`aYrtF;5|27{>xYQA^rMbx1H!{Rrf`c6yPNaXhaOCwRmjbx9|Vuew`3! z3n#7Y)Bp2^({6v$Ifwqmk&D9Rbas8fMuW`<84fPhqNGJvT2zuH?;Q~g9vdsHcCpqH zYENb?(btq^iEFp9?LkV~4C#{3ytpg>?q|Pv=RfJ+`=U;o$t_-uaM z-G~KKpwc3Wp)wWTbTNPnIo_5)#6}C+#!G=WNryI%-7)7)NR8B#p$IAyxRM9~Aqp63 z`gMq@9cySbONQ^7W@5^K>op_)D8#e5k7H`;EyjQ?+<9q6kqz3^+U)flMoM z_0(#y))J#9&n=lTRAo2qK2%UQNF6g&innffY1{fA{Os{#w~UlKPC0tz&}^UguQNV# z+t=1T`oidmt7ZH3(YCRe$XFg@NS&-)E7ljssUQ7~zWbCFGM0D&ZK}=6iehjaACyE8e zC8frHzG)uGM7PmBf0s$YJ}*E75l~+;(6YENdj0?YFMs3P2l{#Zx?;CHVx(Ix4b2;F zjG!op;8if9{!Vup5EX!Z*{Z5TSHWW#;Y|qJp!I7(Gsf*iE~ZcIHrORD{|qs)p#=_-H;MF7l%%w!iP5C%#{=U32WcSDv)= zXKPk1p6yfrwZWqscgg?!tFPR+eK;H!&5}QULXTjTjIc_!Gk}3uG=1ubkzw*+i4yTv zK>e6U5C{Q>!=sJxbCgsgL`@S&Q&3Y35swPE7}3zB-zd4MSRS6I))u4Ehc_8P6cOK4 zSaZ-il@2uS*3{X{(`d3#Goco`@0#fD@_o%ZjN*MsZVgVMm0Lo0=euvd@tUtr@d_6t zb_=3qRkdSG^&~++b*%dtanzw+eD{x^DK0wu*f~Gf^N!c8-T02zt^J?hy!Y|J`yO7u zaa7}yPPDgGQs8ZiQZgbLh@n*vQ@D&sO(q~l(NKc1M78A7L8V1qI!uWS{&J!KU31^sKq5+QX*Ev-doS9MlX$TkOJxW*HI#Q?g({> z)*hF0(_62({L7~twfx|9d;r)jh+1ny#NfoH02+sJ;s{!S%jwo~^F0sz^1okn_ObJ3 zTH(s`P8hoKyc2GJ>e(&a_uvzEJ^bv}^M>hLnYWjGy0STyf{3LIk!TxlZArf2Mk7uH zLXjlDq(tkawC=1Bqd~1QeXipQ&-y?5;IY z!7PF?LR|;iMNVCpSSM)6vBrRw>wBP0I^#TjWITy$TYE(G(`oG zR5wu(e)_=AZ-Oi4O%Uzj_@h^F{Lw2m02}UpYN)vXp~oNGu<5x|YNb_}<)82fHR&d) zqoG7FjUTzQ783*32CRClM2vW1OpOGuOH)0`K)`=uXSd>^XNGv}sfVzl@6JtUbm@}C zFRngh*>lU6EZRQUUsQd4x$hrng>{P-z}Vn4<7;<6vGhCNzx!Ps?>-@>h3}5Cc(6@5 zJWAm*jPvZO7qc-022D-jO8P^GT63!45UEg`Y`7(6L?YfsRH29kk?t5D6lJ#t_ITLZ zgKLQy+jA}{x3bd?&~{x4N7KsL^36gewq6QNMBM^;;=^7m!OYb8^W~u9v z5CiR2i?Z7Ri4>Ai`cc$6Eam^--nqrtSygfTx7PkH=Q5p{mR@K98$`6W5e!}mIwZzm zR3OGcBt#NSBwip9-*_M77lq(wx7jo|@F1Zo;+pg_r#>0Hm{ z`@X&R@?oEuVT6Q0M;qGtznqht;M0+TfQ)LJX()3cv6Ehe-WyT?mOFvT=IDv^lAI2s+;id@PJgeEQ28|`vZ=TK?kEki8a-(-_4 z%zIv*T|i_J=Tg+5kMT|)L%D^eV-S&82aAd3rdqSQ{)vOP;*X_}Jb`Ck^zrZ^GmdPuw7q8bi~v8Gj|AzD>cbXx+xck5@b`1rvu zUAgD1-xI&ySVN-XEu??ph*#yE>@0mIB`eNU%N!zz; zavF9|15ZCYQ|XD5!~3RB4Yo|5>|Ho>YJPW9ooZo%sdJ*mFN0<@nh{L!(byD*NytBn zWwV%i$;+9hRez2m%gOQ#A_QOE4lcA?Wv?u|{T*9(zBn<_o+2FFy*^;mJ z{_(^!$2z||aPW?pmHE(j?rs-dh(_=Y83Bo5gam0`e31V?2bD%6T#4p}*+1^Y4 zdczk#b>wu7hz%%co}$V`LpMa&&jF9!Todnrn6Mj9R_LDW@X-=uhPXOKukZ~EGv9jwE1&{q z&-8iDHXMBV=-3|~d+Pf`EANTL0WSp5`y_SkQB`8K$Ygh%eiQKss!HXDWKM|&ZBd8= zG=R&uu%wf`5_@#xNeXQkiwzQlLR05Eil9-61fon`K@X=rfL|KqCZ6H^AknIYSAWNLb$?dhWdb5-}`|#nLubtW;(9^&g5-nUYa3a)%l(k7p#;L0Ttvm;y_5pDv&mTE< z+AK6(q0Mu99CZE2X09+Ni9qKz{jH{-R9(U2MjgJeggKrF4Rk#)F*u40v_dFzQS zkQW&eGkjCwM8K-sKD2xLv)}pJ)C=o)fO8US{<@rVer5fz(-mn&t`4UuyRpby_^6=8 z4Uath=;zMFp*L{$;LxE%-S7SQfghci^?UmjKR0ivZz!W7!IP=diw-SXWFly+$gBc9 z!6}vGgzzR_Cy2TYd_&R9pa_d@7cX-WeODlHk&d4yi_l0(;{YNqv{!o9%Od>chr&cx zt)C-eS|(btM5IaU*&r6tV6?2J%Mzt6AVeDJfaM4t#{eY|Eho?h1Z6#xMDNlbfS&GJL3S-*v(E7k+TlS2mLA*8yv_72OQ4hVv!P40B4AS5ycgMp{`$tn0M!&9ylA z&l5l0|0>r^UC4$cVgv69hmW5s9(?HWZ@)3qyR4wNod9IXNA5(e{0m$UwVPuFY6jU@0HNS!8ST8k_tyMcGid zH?!on5L}Cvd7K$uB8BxRtf7&dB{xpjR^7u<6k|1gF_Nb1z{;d(Ie&Dyif+pw2{a z))2&vg!ysgk9QPtKsPMVaSPP0Ga5w6XfjWl)=QSGrT=9EO+DH4J`v_StMQjDoKBR? zDZ}BAMjFbpgZCciNd3>zz}Tw6ZRelA`RJYBx^9C&*Af2#HK^4lNmStx00000NkvXX Hu0mjfiY--D literal 0 HcmV?d00001 -- Gitee