N=-wkyri$?2=v6?T7
z#b3G_eC{qoB=Vrv7i6LJlT4;=4HA_x(RHTN$t}SW^2jRf8YC)e=ZaRj1Dso+&*1S|
z%98)b`)gCv1L(h`e7|AvZE2|WS?2VUJ9P&D8|I3~017s3PiEfD!);4meI&zM?hoDW
z1w~i>G7ybeIzb_o_4Vo!VYf${Y~8xUtZRO!^8$|By*<)eqdt@S;43~ue`OF`w)g4{BBqvA6UJ7%xzNf9Um^p_eQC;S
z?52i)JnGr)sq|UiX^;)U^zNAw3yuL3nH?IpO+AxdJu$iCQ?`7!T`=D`9p)x3a?OT<
zV76(7zK|-o?x>lkFn_rE?Rq4*@ADP=8S!lBv^QtqOOFrcy2fkW#FKHa<=w?T&0;*=
zWGd)F*lG)h0!-c3unrKOSV>7ilC(ZOrFZ6RDQ
zXUf+yH`lXi{xzra6i0tIv#Io`7jGBg-SGUAf=?gj+b}#6)%-_&z{{H)5O2y{ytj
zUn9qf8UW8jP4v@by8>164c9I>odY8E`xjl=Qd(!z4kBM~5vgB@ZJopEPFYx<*yU5Fm);2VkNDp1^s@JG7{bHQCe({FeD*q#ND
zKsbShXBW(DfHIIaIdO2=V2v8nBmN}+A7<7h#@{NM
zyN+MIpnju>)Gxox=V5B3pi|Co=09;E?k|{sl6H*?PkUoD0wS2NXx(uBU+7E}L>f$n
zpvngg0xgPQ5>8zNJ9JPv&`DLiC8pf+Y{sbd{=
z(>7+3Q>F{xoF%Fa?!ah2Kbz6k;^wAwYk~g_6^S+Drm$8Xo-MHuS+oSe_oYI6S^Qe(%cV89nl8tu}8-);#6|M<7~
zEPOpeQj0PjeseRq97@%UEn2V+MV}Elg2kT6sGw?THwjhb`F&Ix2y8-W3oNr2eD&D*
z34Fzy$78ZDMX@xveA3IF>PibX4T3r5*!AKmX&7C~%y0janR3EJX1^DiJ|YSXmZwy%
zB^mh?!zAx5&Q+B8V<(!tM}DhU&a)PDt{MJx*Fp&@2YvLq&so<%{dEvNTDZ)Ua6y{;vW{J6(SOKYx|TCL
z8XJB_j--(b?Aj9J=WdLi)&D`4)8KG%ZyJR*<VdFATfAueU2$Q^By^_sT9v}f;>l{ml-;l6
z?v}ZIS!JFDp>1}64#f3V&U!~4&7J)pXVpz=P!H_6e@LHxy?#uuu-^NasH%xXhRjMi+5^w0bZ?C=5@)V$I80)qcEfR^U)a@l3PwoEYe-NSoKYL^tx}f2IBQS<$m9~X5mr&pG1|Oe~2Tl^i(|Tn55%v
z{fQ2f$Hg)>BsQg!0?v18%rx1ns1M)w3f6B-#)*;=7c_0-6t0(a69Kz$7B|M1$sCQ_
zSJdW~+1ZqRiJwjF=6mN)ndQ(h2qKh_&USfR$Zd2q)q
z>8QV`zBJ7l9wW|Ke=8y}zM|~xILdy9vp_Mv$CVp7lsJ2*t&}_S*M~3d>J#ehVs58H
z|45ClXYq?#yH;dU?3;zuo6cl54i|Qw=JEchcl%Q0k3Q%0J#Ki-D-!$hE9Qo^ufwWB
zBgWA%F=`W+UoRHE}=xb|4vH#15od
z?G7MOfZ|#F{?SLi5tGQ3fBFyn0o3Z+_96Fh*1`j!^Nq#QeSCWqTu1=RLb<*hY7}}#
z_mC5Iz&Lj)>-8V6)4)sTsk{CQ7jB$;gWMJAAP*sUg{CVZYNlC
z!43cTZ)>u8XX$^mCif~Q^w&%Za*(kBz*Cd_6OMyomI(bPh)D
z#~1LuK3Q?VRhI#ysLcf&4i=6IssG-VA8DRt7mA$u;{#B5%=P^cFI!vjJJd+)(C7$u
zZ)Bd?H>f
zpln)fte&{~jDJg`{4oYYQ4_ZrI^IokP|%NN)fM^GRWy7xcWD|BeHC-O
z_&L)G*^oKQrcZ5}CRjVUn2UMTb62iQ_HHGmTQgshi_>Z3*SGX0wk}!u#Mb5GKds9s
zQ9RYW`ESNlJUW*%2cX}`Rs0nqO3XcH_?A{`bCdEj+K)LR##X>gdNtW74%47!_rw(b
zX>&5-Y|fio(H>6lNYss{e`U8rC5@X<)U%mC`Z5oIAJ6W~esMEE>v&L;xFjwK)Z(ky
zELmbQTN}=PNBq5KTdN0yVunAeMz#0KclRslu4oEMXtAV2TAzNrVDpHH$Q!L|YQ4Iz
zJiqwjG|B=99M1s?gqLT0zQ
zrlMnHfa=A}(;!EDiJe~zK5pRrAfAEh>n&jL-!N>t+Q3;y%l2i?>0*9?Hznm0v2A#@
z)~reB0myMDX*g7!jFHdjJ8<`l`br9A%WJf%i@9Yx0E`_xI$xX#0D?)#{39B!IY&E4e-u3$
z7sV*(^dO6N_NUM7f`H=!?ty>iCeue}f)Vfof4&gS9*aSzcf%K&W)pZ_cw+xgiain-
zOd=O3qfX;$LyMoD^B5)05pjK$h?dUTXQZc?V5|C~e)0ZhV^f263Ahj%N^TL`e=1%D
zYfd|%CkA(Bs{@Js`I>BiR7CsWQ|^9BA37m=Cyr#j=+r0rA*=^`8QH&E0AwM#
z4rp@addBtEQqAMhb`u0Hgc@=eAlu%N^lg*u{n>wC0Zro
zJ|RP9-U5EgHVQF5O*t?p`*-ONAdbBl4@_!u_Ip~|#Z)@hgoW3ARR#u#5+Uxxay#@t
z5a-yPa@bGdlNEzGvmA`*q(>Krlws$z?=nC62~17&jK-ve_|X%tj?ugDd_UKki1bXsZft4|JV_Od)>ZI=BNVeku)|bInz!XV)=_)ghjz)%YJ9F_jb`
zJn$9n#>J$TC4tyj?IcykNGC0v^^&a|{hi!o(|Q15G}$sE0jc<`q1($hPyWPa17~p)
zgahKx!`aZ(+bCyx__C}J!49V0mRs9%l2@nb+
zau19%)`JasmJYUJT+O8o@J5wlmHji%ExR|vzM?Z{
z*8CA4fw?KQx#C-gx0n!M2$28XrNiVe7bwb-ooI!B7+HS8gT3)(19eo3zfPRCd?ynl
zEv?mQ2{<9%)r}d;i59(vUZd`wFk|M4#g0tk2(l#&rO%rS6@lWfig2^&f2auRzUV2A
z`qvQfze;9&7rL<8Imonn9X5XI5_H1fPtd}JA+zyQd(IH_b_-;Q3h)bGX;Dnr5awKd
zVnchM-}%XeoaCQDNaZfu?AIa`k-^J%H4w@+mJUDV+vz2Xa#A%7fhK9i)Jnt<9A8H@
zT08QDZxvGO^`e{K-s&biFDphT}7W;URCt`Er9t2tX@1e
zzw&BL2utYl!aKqBNi@^0FjN27l47mJUSuf-@@ccd?vHYzZ^n$J<*nacb%UeE{1)KU
z5lekt2U(Ny4KeN^dc9(0Aw)+bnvAcM3)1(!53vsZbic({;=Q&E&FtuXDxUt2Py3#|
zgwYbG(v!lRR{oqEYMo9!&l5gbW4)O;3;KNTsfVV7alIwxCULa7e|BYK!e^oBDqwe(
zq*yNVgVlsnkHhG&6WnyY#-gs({HSd;7F-3
za3;nFN!#bhIm#EKtX~qXkKY>onempVDHTZ!Hdbb7G^7)mOL^{eci@f8Rmmae+Kf}i
zz|{%G&_~$cq`)jO7S;F}*!9(JzuslDGdU5hC
z*-4ohm|YNLb+NY93ybviJ{e0{U>1PHQ+YcbFV^$<;_tJKd@g~nOQg%u%~WF_EQmu0
zUZ>7m*3(c*s=gZe`k(36k~uD3QQn`+w4*2(?mze5wD90$=CJSWL>Eag4myu_4%Fg`
z7&f@O6FNiqfe%BE1>>hdfu|kVIHm=7(1LX-D{o6rgv~C^$sFdHpQ+8NoMS-%%c=lt
zX}w&bkDB^@&z_Trv0EHwgc*^x-%%WAnfrynm9xch!X9#d6TB09?1TOBJeC75v3sq=
z2eR)`*e~1?YEwBl3#E*ucrN$wjFp%PT8yn!bMm;O>yFKuS~K_@V2rEJKlnyzo)^#i
zD~CzA@vWq{X*@iWZvqYj8T9?}^6{4rpRwc1GXyqX4GsxV9WiHQzR0=v9n!eKgrA^p
zO=-tfoCv6UV{ODALpo_^z)~7B=0)d$@lv84p$B8Jh1C^>*(ASxRV2}O-#y?z9=L9X
z*KYZUfBo-4+`NA%>A9L^h>c?-pJXU4G4b@sttr251`WwW%cv;@lBqShKimzr
zJ>SxxJd!-BhFUj)qe;0I=xfjq)}&tJdNP3|nmZJv*-Vext8G1%Vq770HACOH
zd3bBB!eog2wZ$`oJfH{d*@zs0ZNaN;ukneelOS|jyv0Nrd~_JKSB<#V$a+73IQzF7
zb?%+YkJ6w*-c4}BUm=i16Rej_z5-)So|M`PP81(prZEGrJ`!!%D^KpM9PjMnXF9W{>460ru
z@}Vm+V(OPhH&&iw!9;4-7ChPj*Ky{inXf845WS}5$(=;{2$u==J4M2eUK!^Aj-z;=Q{Of@BhMhb
zY2EjHCPk{RQ{n_G3Ej&heg$=f@k9YU7L}!}^KB4L{N!lnM5ON&sW1zR+ax>;O&S77
zKpdkdx11%ujgQdE6-3b#|pC*$+>Cy@ORn#wl4nEfoa7R+){%5Zz
zXl;VDX-7>YO-0NmLMZ9z8MGfr+CmU5YkP9;rMQ9}-o1R~V`Rn$QJjqVV4r1E>;*W{hkkHT>ari2~A-2*gJRKaM4uFVjF$+w2<2IHriKGI66
z&v;X&^W!20Cw6|huIti7bztaI9=VTdS4G~zMo$NZ9vpHC51T>=jWeC}o+pqFWtlY4
zHsiZ2+U35UUoo*2{e^9ZTqd|Oqpxkd`r1?P2RbPLvx%Ns2V4o)tV7
zumNjh>|S8?&u$`jUv@z*l_9Xl93=#0%o;xP#}p_8^Uin>_)Diu?r4Dij1Mire0p{R
z#k+UZaTj2!vDwo~Cok61O-AtdP$A~-#yMgwb#JLbCq}M|`27(~-pvb6CJQFSGxQ38
zLkq7QcSp022S&LKuLuOZ4miUe-r+kM64y1>q7p3G~E_stN1NopyVzD}!Zb
zYc9M5EVc?8$VK3T9G3fcQ_3(gv*L1Ye8mvlN%NZDYeh$8Ox6+k;JPX15t=%^`UQ52
z*6CHUQWXO0PufAanOkdD0iW4*y`)T-ML`n?ZDC!{4HpRo4l(jUj-LK1y@h+fQabW6
z;)qkF))WF1v4PO$P8t4ldok4blnt^r`T~KoW~=LOSPIZ3TB4y~a?mRD{(1!QRMoym
zZQW<4uRzT&3ot%hc)papJ#h80S!Xw@M_&g(>oHvQr&R2u*<&8BNCcld$~Src~8aUQa#MuZl#q24wqfQXrnQOv%j+m|arQ*L-t6z>yu8)x}(t}wpo%gll
zo+=oVKQH`e?X;sq`@tz9H4;Qc|)
z7D&WlS0Tr@bLSD@gg#T9CuQHAj;PphEvAIaJbAd7?VF{Hl8#9uNMpJ=#X=wE*YY+Q
zJwO`NRF=hPlz?`1bG&~B4}aJYFCIq?;wqiS>Ex=?d@xI#q+*x+Kq+XDzV)OcFqx;sHpU02qRUGpjJ}5iKs5>+^M@Al3p!QbHwIo*Gh%Lb&L7*`4R2}Y*wY10or9uu1u5pW)~>jp7c1``9BEzO
ztj(ohQzd%#-Ug7M6bM6OH(Fpx8?=$}#p17D?@M35l=eahJtagKr!Sd3Qz!Vp#L-v+xQAG^8{c1ar@{?
zF>$hUIax&^jdDP47{Nx}p%)+?$vCrm6+N}FO%)Bebaq;G&8tR6z@uCvaS)h)By#;}
z-+6TdEGZb@bBAXra{tgVY$hQ%DFBhL7c-l8UzG=4-IoQV9Yj`9=`c5WriWpR;Z%L?bnG5rvpX)+%Ml%
z<-6{XOjTdNlHC37%dy23Sh^=j^UuyQK
z${wbE4t{Vd*Ks1}4@Ap&J?F>0}XPSL1ED2@j4zl%W&h4QXJNJpm0^
z<2|ndcR}H`kmqAvgH{P1sC3i4oWzGw9bTy{M?jg
zH*>37tRLbWeYQua(P!UkCwLhdPm}gT+2byG$DrWawOA
z$>>PV*GI7Dpi#Gu*5}@!{O-)9P}IbEYyw{P)KEg@R(eMV(!BR+BvE{qa$C_~8tho2
z4p?>}5%}Tq8W(~9UV+KFZKK5_`LMmlt1CEQ72<{*fS|TNVP97R*lPl7&VJRY%KLnF
z!{|_t;GVUD5Qcw(#Q0b2QZL-aScom`|8(CYT)~*}P0Uiu4?vtTac$jAf|#CSzWts6
z_jBQxU_)0ato3>Kh)G
zw7Ya#7uFp_i%LXIEIT)0NhNIWJ>TeO_eKy;M;yCXG+Z^l*15z)ZaY(B7uu%z!k`^z
zI}h9762AnC<+*9Sn0yj-Kf#9N*%=lpZxQ>NY9!>tzOvT2PUha(?jzle-(jgBi#uqV
z9`sbi=>1{~8b|qZhOO{42-%D&pXE@9)9l*Znia1Q;pQ`jsSj#TBLfcO8Y}n;8xx07
z6&^O~jE7+%re|-RVj(m5nC1JsI>*&CTX%opz0c{V#p_e@#+BX^*Z76n>?!nAe+Z%j
z4DTcl;y!zTa=gp#pZjZ-iL@BUV4Kg!Cgh$A_=FMyA*b1`n3$NIQuu*iD+sdLfSG9w
z#ho2fKEbALQ)@I_?}tbdzKJ%pC)L3p&Wg`;_{^}Lpky|xYfZ?DdcHaLKlTP*^ocg6
z?m1}>21c(Btb?MDtj_&?hDRq2~QS%Y7
zC4TMprZX&o4n+J⁡29}JCk7i$V;u8Np9{c|=_TEuVwcWRH_8&$|0Yg9veOa0xcYRI
zmLzTKK;ii`t3VVcDUExPpoFBYl9c})nBco#mzji}yP}4P_
z?KZ3FRQ|R@iRl8^2uPFf<&V;=M3IDsYSW3`dqwQGhaCnG8Q@g>UJ-PI0q-r9SPF0C
zrj@%;O|ZkK?&|Zjw$;8)F_qwHBYd`jdwre84z7T5YRQYk-HY2wh>0ulUJ9)pwK`YZ
z2|XL`^O9y7@I~tJ55>#WE>HEdqFXc;&VVJ1qZ=O4
zFa`k&bxAiemWx>m@|<=F7g(L67y9IthYBb6z|w&ydO$sB?)fD_b5%2O$~zy3vw#4L
zP!I>|EIW!Tz$bU2LX;Pw3T9$TR)pASFzr7~PTs+oyFT+z-?Bh7P4$NP5QFgd!;Q^p
ze#r`;wk3r)nXR;aFAHMe-uzxE%vBJ3Vqqs*`&2P<^3HP<^>T#~_59pkV7%`jOUVP=
zoVAEI^fd@{`y*L^mPB>mG7nm|AD4K8GC|xYmA*o{^FdM@qlRF^dxOIX=6xN^^d`&`
z0FXP1V6)Ls;ql0K!{MdG4pH3kYnwN<&Lev8>&%Bj3r(N_{35^7dlba^?H8>5fdU@+
zmex(>-|yz8zI8_beDhrGJJF5}-RtG)h2iY4YqJh0%Rc(30ap(~7Xi1}zGm(G2c7c0
z_tyQ|*JAYzwCTHKzSwwrq;td?e^pPiQ|-PvJavj4Up~VW{V}f}+Z+6#dant;xR-Df
zgL&q`z)xjq=-xRLsDvBjn`-)t-c`gtWg#nL?f5@|3rj1oyS#!_AOA+Ev7U
z%pV1y4Q2Nv_n??H{$N$(Hzgd?b<&n}F?Yc-->nBEZzTy2`s1{QK0iFMzeKZENWgem$zx9;>`aiY0qZ6(1l^6>4@P
z&dpGJ@cQBM`8pAdsn>_W&l9mN+1C3-#Cax3zu-Y`n(;LPD)$}46`^BGWio?0QGJOr
zpFwPe=V2-b4w((sIT%9m`H4%h{s_1Bedrja21=$j(wsIJb-M@pc_)Vtur&<-P_*A!
z_h*#!p#0F>P$phdLJxRBgrh7fD1e>zdR@(uZ_@gG6KPlU4W%J&SYfglwCNm$zECcw
zkh=l8>lBQ<4N(h1{nL?=d#1Mimrn%D`Ahv<%ZJM*Ht>1FnCINvKK>(@TnRG`IYC?{Y=lA!-E7cMTi(N3)#z
zbuZE)OLEbeIxM+a<2G}S4oLJE?=4c!}@#*2*5NPbMF
zG%t#ESJA@Q?)pMQx$qZ|VMO>hmGnp(>X3Y1Gq;D@B|TEwh5_^TEKo|nzgtvS=WlM4
zVpA$!Y*w)pbOvbo&qd#}?!cDv)>UkPm`4$}NU3M0cndkv
zxt0#k4y+@3m*0?O@&-`7Me~=J9Vjt-!%X=f!80$24qY@y+F6`L*)s3Y*c;&D-HUYV
zXRS_Yt=ZWI6BWo1DB+*|1i2F?%nqtmbLxSu4W#)a+VV}B!QWN>1FJ)#>%x1q#Hen6@e!%hW3
zi;q)0AcHVeeD+u(8Rs8+bAo2NHSyNwE3>`N(XO`?)rHrkodaK+o~|v3@)b(`NPZbZ
z@?-{{Wz&3??gHjB=ecoJfc4WWm?O>5n=;n8$~cA6T3(y7d;H$C4w8VRkL>AHHl{9H
zu0V@sb|#rHDA-5yL*1QO{==(NG&!pH)?i1;9_#vt0jLRd3a&$zf(;z~J}BrVoTVZ$
zorIVaiV0%(LlZO#6Zm~4R;rEFJ?P}gC^^}s>)kYFspgx{#xgQWAU@=GV`!yYgtu68
z1};bqdJ?>8feog)Q5G=^Jmk11Zuz0*-2RtYad1}UKS_;
zQ!Q?KU(~&QTg=FHH}vxTwi>-px^>8}P!{{~;zQ)ARrJ@u9XAqJiO_DC53PYh=lYWm
z%6O5sx3*U?$M~JEUN7tB$-_?HDVd!_s@!bOrA52UP1i&e~b3G|r8<2=#~jT-PrqIHFRLPIg`sC6YQ488jjJxQ6%k~Ro5-9@W4
zpMGvoi>!uE^$woSyfV@Y5&rN3m7`cs!q1^P5FZiTixpc?ICTt%_yLKcvRUwyo4@Q>
z50;gQk&&V16~+5F{f^|}L(^%TwgBLqla`UxC56Icj+t3S>|EL*HxR_l_`?Sm6DG!I
z`+Grf!uxr~Q9zN)MyEed4N=05o0}TA!-Tb=fO3dBK>Lx%KMr_M?U9zbmsuq}ykNs_<
z(Nn)SAMVyJc>gExW9b&)9MrD&bc6TqZS6RP=;I!m7c!?<9mYkT^x}9r5*f_HD$o%O
zZ;`Hir=Rq)1LsukG%}fk`p(CZbUKrLU*sr>R;T*r+2hoe>hLY>4e(xp1*?@!_@NP?-4ES}6I-+TR*_X4ve)w{EDfRkE-f{3F9iH<2
z3r8(T5OLpoo}SeP%uI_{uF0rg?s{W;V+@Pfp&Tg&Z>h0%@FY>a6$_X(a)8DDMVtzu
z>_)dBPyLkTVkY}SHyOHkO3i&l_fcx1=Fi5Q;VOJbGKLlzM~ijQ
zNSn9SUboKAW}M%i=rJGbFP&PQY-4ql79&YZ`)?#NkgJSES>_n>U7Ee8u22PE?w-r9
znDUK88d#ccvDWmA`IB?@x>ZaGLZkOD#{jN0QOtF`wUNGTa=5mZhE!d~2if_&RbU}C
zmd0YkS@ZlL@Ew8O`4jFss&cxOfh}JW
zhaP`~U2NMp9R?V2JlMc};Slwh@1j$UID!04-<(3}Ta+Miu>vixOQ2VI(CmVeOVG9u
z_qnxqEI#CE@mFgm?vhdD!WM;Zf>4*4i7)kgcnI80G+m*pKsoB(Tva@9g97q&@62-7
zrXD5_^hn9g_+gXzZAV%X8>=DGZ%x!DDx90cTK|){V4FK$b6e6OA}_6*gKKd(_Q&{@
z@mC%Z>KAD@s%<^+MUhS%<97vx+Sq0xVGVS-(#`#3uC2Rg|3!=XJ5e9N7xp+~?yaZU
zNQeb$SS)iLs5Y~^MD=m?FJmf*iLU=3K2Q>j>vxrQpzN;Ih5%TE`X8|97dU;MjMpcv
z%H^k+{+tJZ_Ap@CInbqDSYxvL)L94Nt#ESj9>|3i`HvAv^Cx^`vG_jObUsc_B#w5Q
zW~e3HL%l_y@1P71Sp2Ah3FY~lu;_n8N}M&
zQaN#${L0s(K$|_xgYT}+Uowy#AOi;lLRlEqt=@@~t_f>$I6F2O=7#Xl$1Xuo6`Ma{
zLc1u^a?%d6ZaL=Cb?-9-2^+ZR>F(R;-?&uEK?L7gPfQ8t<^a!-B#UN^}qfFSg{s(Y@@{R~jw6wg{u
zseBwS#XeCL_*|%+oTyNwFdtw*=rtSW6o9D;kZEOEa~rfvdsAvtr?N4asTIs
zNnL!((|(8;JC8_TaRX4IcRw*(SWaVRH(UoBI4=6T|Eg!}7{{%1D
z(!Mi=MNrq8W`Duv>V51ye5l{;TkA->g6L+F0@Osfg3LTgi&?vRbO|Pe&!^liS~;LJou#Ig#td4~xj9(ca4GM!MGU
zu)!8mkpNuEI_7E5%w*wtF^Yu_+w%<~*Irm`bcL+Ji?IyC&p!)Bx3UooQg9+6q
zumR%4oIxyhm!m1aM&T6N#vv+*T9||{imMYsY(bQfNGj%!K!mL*9lkjR`Ka?BAysY5
zmYCUBFo7rmuHJ-1s)MXE!$_nolz*%kITd=*1k}A#A?7SV#%JBGr~OE%GYDLi3~MeOQ=^4tCDm{G51J
zfOcvP5L_-_A4VkQWA&NOdX>XG$UmuuRZ|@RD&@a>TOX)o30tLy$s!ctPSOE)_8Vj9
zA4M^_@&cZDiu;+@t!TUE=_?{jIyWYo`Fdgkba1mU+L~8m$){BmQ)rM(sRy_f-g{`j
z(!GjW&7Rcd8SPD$snsXF-4FjL)jBd$_6-}D3LQo0H2%iLZ0AvA(zcJ*uO9^_!%8`P
zG4z>>=qgH#W)xl!K8xC*9-7d6j(+u;-*ey6a_OT^0ac@y;A{2ev><{BC2J3|^FgT^
z;g@gM4=sUK!I&^6N#2Pq!QXZR-+;!SOes9q
ztp)u;UnoK7kUG~D?gEv_W8+!x?L;5@DT%YxVFVT#|B1m?%xQHPO$upT1U-(K&H0%z
zsEbs8GL0UHJC;TVD-Yt3$9
zOzjyPpB$@)z5si^BwW{0=lr@g-%uD5YL7|YT)x=(WH-gQX
zGhCzKI7h)0X;IG2zVaKK&E(W5#|*Bpeeg|6{K-|vc_wd`qJC!TvG1(tt>lU{BE*yEKf!)V1C5oByU&ne2z-?5^mI^w-Eh2@UED^PRp2
zGS$?iJC%^oW&>sQDp8Z82LO}Xa~R!w<8SH*G`z{S*@&^O{`iNB^^R#F;Oi62JQs}o
z7a5})$Hm$5bLcZ(gn)oeI06Wt
zg!jQIJjdU&!)j-V;VPzuq_dv5n>z(rj>{6N(Uw$Z9>v7ZL9M}UYn=!2_p+2M#7Z=cV^2aRw1&;p{lFA5L
zmL@&rE&Ym6B8#AwS;mOe+Mm&juThV8rOtg;7(fcjuAnois4$&_srRCvSSPU5+b7Iq
z@&6b=e^KVlVJUU!z66dm4A;OQG3*}c!z*M==Er2yAJ8oDF#Oy{gpgG@yY!t=#2Y@u
zr9x_2$C;KLHh0)=<}v=a66xE?t2uWyW>H%@w)-U;y~drdwrm2W)?P8ukBel@CR&I$4w)Ra@xIt5CibO6
zSV88^{{fs7wD58@3IOn9g?j1-sAFhZPo;&uWx6%1;E!pwqZI`!klU89f$xYB*pdla
zQgHTk32%$YLlC($a0`r+gBrcRtu>Ci+dnv3QAc(rUY!E<{v6yKTV1L!Lfm~vvz@5#aAhZvjNcB+$n|U+6lTbk3uz{$UTB|Vc^7t}Z(3KvOR;FRC}N3zEEAO{iNCQ^fM2}$ej_weWC%#PoIWC7REfeXm`3XRwQA1G6%x!UktX^xoiW>dk+wPpf+S
z7(fA5UUxx#C1bAZq=W~W1#J2O2cT!Lu%Hf58_f%(Ml*>dOQnzs&u%I+q
z_qufe5se$mT}VG%+rSGS!nh9c2Y7sca|(e+P?vPFAaSqZ5rH3Q
z;>S0d$S`=Sca|sf^G$+4Pv~6m8z2%1Cr*ko-A!SM3IF27rY22Pk6(?sDTH^tJP|AS
zdVBtt1-VJS@u~2xjG9c0aw~}JEm*Us&awOH=<~aHM$>DzNA(t&;$Z$%s|F9$DCC?Y
zt#p_2^^55;>nX>$@5?>`B{_PmTw$C3;
z2o6MaXz_HCmsrpvHAZoQ-#j=fS)L446fH7>+vEhAMZBGW41frYQ%^}Vl3gYt_Yqo|(>-H!U(p(kWSKK*k|47T@tXF->l&6H
zf+LEql?Bu{ON^QmaEM0eB@c?1FFh*a(E1M&jT`tYL~VjBEO11OZB~4xIrGc7`V(~s
zSIZ*&CPCBm*td07V&pT=vCS<-s_&<$MF(fO$Q2wF(F>NCf{(K}Y(3pSY=_uk#Zd<2
zz%h8KHIf5?2i3N>DViC7NTHOFNI-MOvfi(nE&x1v!iBqDbsuO#JgadNkiGz@%iGFV
z!_@G8z}0kDM_I{V!BB#y8T%{5>fB9$ySktmL*LqE=mHosW-^Kt1JUug6Q*a|`+PMhNQbBO
z)M-?m+%NzRDVlML)Bqnh+_#JzXkK&mH>TCK7(6yw{!4OkSSmc`*Q}v5(KV+C*KuFG
z%X-pZ{|Tp*#k$FJ@()dtyW*x+>hYi
zg44N5PS!{AY6pQm->1y)9=w5WHR6Ns#$8oZ!46-!C`P(3Vd2_+9w~l__Lx_K=Y0vR
zgHQ1TT&L+{y`L2Mb06edm)z-_g8;Sp++`awcio#bk2cE@j#|eKa(&^1v{}}p(dD6-*EVN|6xVIubU0Bv_
zLbF>_=}v?y?6-j)RomtbI5CD#?7<#$xX?_zJa~zDc@Jk#=~5g<|EB5}k~RYI)PGwe
zj-+EhZg)NXS#L!eAnu$Zl?9}*X04-rNeA;%^7(<#6KU`jK|SbcfOFrbeZzmcFm8B6
zmrS`uwF2mQM-o<*Ha3Yml}=l841Z`kxf4ySKvpzjZ^ZG|{a5SLm(&rlm}N4Hh?c{b
z%E@;bxx?;~=}qb&N-zCRgnv6m-~kSwZ1r5Yl+1SV_p_kKfZRuqPxN2hhB=s;uRNY<
zD)I_pUA(jS1hMnnOxS;bQMcb*kIL*?$#f>h?jy~Y^tEIaG7=!k+S;3thf6O4VOm4L
zCNbbz&AjK*U}=?+Z>gVf6`9+pP}+{Y2d%TX8k@f~+p?Y1h{Cf_5*hqywv!p@
zrIWK}<6zrEtVYDzmZRtzDSgyMia5RJf}U8l-v)jqZ=m-=Eho|glCM_htOB52Kyq^c_^X?p
zRlg+i^JWak@LH5A7t|O{xAyI@{hh#z3;u-j^CsHqPFo{$5XlU|kxI_1Od#tZc*bc~
zP9^We!-|IO#N}9Kzokg~`Yq#|2j+-CU5eC#ZqufOzGMur(sXhpi9Gg*hU*>+L&@5E
zP
zS{(707QtKZJKU6XcLVwnMOYrt_upN$;5c@$ap1Fu@HN!?Lv*NpMu9``f0o<-C5ZeF(+7-P1H`SE<7{oA=(XE+zer{Ic|H+gaU
zOBmXQ@;ps&u19b^F*-O_vD7N`h3ILyM-&!4b1w))G@Dl1V1#k<0237QWzDTS;4%Vd`;1L&haP{hGU
zNb(7@OKtA$l>#KaqYoSnjCwn0LN7u|0rCA;HZ3Wkvdt>ph^Z!mW!9?KoJD
zT%B0Yv7;UqmJ(*hlV4Ys9ryS^f;fXzTbT
zScvxAjTj*5*`Ki96ci>lO%E5YJ+vWO3(WZF2kgdZV1JDSWc*he6fsNJ&H*2~w1+)}
z{2$Vw`_83ulVeL5#+U!#3u)Isla5RQ3E)&lD2n(Lxc)%<6(W!^%Ct%SA9M6Ulwr&k
z^gY6Jh|&NLCcV~YE+ZM!I3EQy;`p~0NoU@|kry3{f-;oxmnPm?93aZzfH!(71zL|9
zgq9$xC`=ghV+iI4Xbk$MmEH_OhvGa^JS;Ck(WwcKB3Nj$#=oh?q;F65lsqfCIG4>a
zbVDh`2w}qywHPRU_>W^**I(7puJ_P&dA=w8@v94q(4hK}sljea1l(1NZN16t&mKHSJoO!OAGl$?(^(br3P^{6$klV1|#s!CJa@P1smmAYpxs$NE~8)1H{DXK{$
zNqh-)`f%P+sqzcHb83)d*V1mZno?KyDIWjR?pkZ11)kT=0ZOfy8G)^^ig>|9_G$2$
z)rV-@Y?S9w@_N_FJV1SSUK_?X2{J>KIqja^Hh&6}2t=JFpN`sA(EA-fSI}r)v}+;p
z7JA_UO<_twLPPrXBju+x&_2`$gefU8BH^I;2j~$^he%jw3|k!L%>iYJ{n-k
zE}Eh|!Fz+&UHRe)`wUH&@C74yE=tqoYB=@yU-^$<=rJG|I{G1aKWBfn6TXB^bAa@c
zU$90FBvZSd+B$?=)#6fBi#WAZ--#-!uG9^tPaVB;qkU@+VFqsZ%f1y180is5=SZr0
zk-W#S$OK^HyajZa49;jw!RAZBrddyb7OIIX*Wdn1XMHj5kTz*I-1r~GA90nFevp3e
zT_If{K3=ojoV~9M8Ev5x-4zaMs&2i1Yi~m7M*(HC!Tr#~xA=uB;SQzakvL
zV0sJzcnPqQN1sYGBAXDjFn}-qRYOgyvpIIuj#pyHwBK#k{Zn)5dp>TsujC+nNb!Yc
z=b`mxC-8C4$toQYf++|oC?*hL0Hwkrn9f1nSXQ(OhPBX(pvZijgBh_gR6SkMNnFijM
z+$Uz)Kb*zDo#Coe;(~EoAHW|-UwZ+WyRDh*9J1VvSoF~5`#FP&Tb~lx%@oE9;bZc&
z({MGvzZi=@{K}8_?E0VR!}zNAV;2?s>a$AQJ+38oIIRS=-H5uU5Ou$zD5k^yHnH==
z{O&RpFDlyHo&zEZpVDgV={dp`E5^!*n^h1)>ybM{2lGLS4~@-LJp|h`I8$ciQC_I`
zkeDIF*8HZ>u^4CmN$8dnzTfN(*f$aYz_Xf_cQ6zMQngAbZEOtYezd-d*fi{ePcl!?
zdYLC6`)dx^uBZFwYw_I7lVi)h?C<>FI-#ATINgD&65Ro=`dj&XWkjG1f!_olSH##jr~o
z=B<7gYIv-y5e1Yr0`^qdD2=K&82vp3hNz{vslc3V@WZR%+Bs_!<>8SabnnX_6SKZI
zSk-v7ybk`Ro0LylEMr=S`)2`JP^25hv>eg9Mf6;BXCiUkB1|0AF0T%ueu8U9CWTtT
z5(rZw{V=(Lr9!)VfH*+LI&fOU??qjI5pp-gQc#Us;6=@*HuvFJP%$qf!xKYY)5-xv
zB$@|ZDaL+9%=s*+ghPOR*E-eN}k)H((z
zJSsE+XRBGDKgfJWRcy)%d}{Vy=GSw3A)aOBONR3TC2;V`D2M5*MbwMW@llj>Hv1A=
z<|X~0_I1Ajs3~+7EJ5d^Kg*8coOJ9Dxkq&)X7W=5OF?Ys6=a~^=EJ?KJehmCfON)-
zPdyJHS=`yvtR@n
zZvOvMy|7S^7osXg;=C^sia3DKhIOcF_YxiD(L9K;+zr=L_%97!_bK!t8}{cR+T*CX
z{=uROIfNVx(PAiA49NgP?L+zKMP2*{rpZMIS1%JmDIIsIVa`eX&{!1-uraX``)0tM3v#{Xj3HW)1iYOojQgNf`sCastiAFI{utETxpr!ZcU
zjQsIRF&8~de;z+boc`NfJM(4eqOU6igyHK{oKzG$_H2Lu#=Pmqv!TdU!&q_VY%bttmbNPDmLvn)PJV&D4!ow#IbKVWmjhm1J9)0
z_^j3Hh{VQKXCJOwI4D3%jdlM)v?;E`X|TuEimMtGN`B2%9T?(jqtU4f>PS4POy%#1
zh(YmK&9C+^0sX7wq3HUa`DAO=f!8c5<(%P;Sg%09Z<~hK9)*CH@lOCXKvnd1r>WvlWxM_PAB
z6aEZRzNMuWH}WP%-UOWEw^!jy6Wa{Z{)6~^wl5(poWMXFS87iEXb4y#^IZz1fvXzw
zct1B%$tl&Pk7he+cI;-@;DP(Nx)Ky2Q>&mc)w0u}{|Vn7SIQWh;apmx*><#_jgS%}
zNlCbA_fb*6NC4Wx%8e^jH)=&yC=u9&i@SswapL=m;PUrzIazHh`M9`x@Uq@&Ol3Y%
z-2Blj@g!{4WAt2YP(=*^7O1b#m%MW`;&hF6k%p
zSbpGkyrYPNc76f1_N|~j7R%=;{b1A20x%{h>)uf}zTO)#+g_v;^@#D#Js+Ce1kj}U
zg;YGdU$?yq-LDMXM9TEi{eqN4qq)}0p}
zNO}2M708M;PF<`Ol3Mg)aiEagvG8RKRSmE1KG9%@|L6$*3IS6zG}JFi5F{SR_TPz@
z7+Gw74G$p!WBS4aCq`e?xHD_k8z`Tzg(m@10)DZ$$-#a>B-t_~%fm4$fT}K_Y
zywzrN)INHv$_`k74o^rcAaZKm$t9q`u(8j(j?r
zH@CI*JknBrm``|-#&>xZYO}NKg)mOZnX(Dly=%2JJ!KcDW!Q_S3
zD?y|^&`H~>nw~FXP)>V@=%@w%ynw*$_?{6}YO{BKctB5XFPWtN
z!TkappaC@daZY}yoRpr+At_Y?A&1j-ig7y
z2ArJqG1h;YDn-BVN%R{`tY%*J?bLcjdl%}Ff0a$Ipk2@~rW&+m<$M&Ty!HhT6S=R|
z976B%1{|X*^)%pHnWd1;&fNF>hNiha`iDq|b6$y=Z2Na@k|e3+wJLj>iSL8VxP-k0#l@s8cB
z^IKSqd`5Ek(L#NUCw}Sm>8NeZW?fF(k|6)Fq3MMmFP3X6kdF7>d&d2PY50WMh_szW
zP5KYsoB?|^-ZQl}#83G+eM3lhJHeV@=kI_hQobcQablg(Qzi3Dv?SX?rAmJy?={6D
zG)(nl{*x0!&jo#cj+wCpftHvNF>;FGj|FpY{eVl1Y`-5*3lJbBo~zzXZ$?n?U$+CN
zpQKP04->ynfjXK^t7H$lOz;rXcP*N8H1&r_?w1ZV@EFu@U{Ntduhgwg%jZwmW^ZYo
zpWmgwQqMWTcC@Hw(QW={t1D|iy>Y7z*jS_m^1^qB0qp=2_M$rMg>bS+AIK6}ykP^R>v(MV4K!_MQ7=1{x*x-exJmF6)OOLEhRHjfqpN6^|d^{@Gq8!&8l3h}}XrMpQ>8a8*M?V>Y7qEO~hL
zb>YCnF{mPIt@NNfh%J>mc_>r0NVFH580$=Y>TRz#X|3*
zhjK~6gVz6j_)AK6xZv2iT8@mDfOpJZL@54Q>*WZtlUY77#Ot8k`Wcm>mZFWH7o
zO5eLMo$;YhLBTH-c>$j5hUz;0r}N=+v=lgzxBR;td8UL6|!(jHd{)ba4|
zTGk~fCpyNWEZ#=qcWXDpI`|t_@6hro%-NEBE`o8$VeEwlsKqlIear5b8;_!s*3dvx
zYKP|0kt!k&82a=q$Y{iP-qdjY$eY|bo$-X^^*b%tcV+zxr8=)9-5ipOYvx$s)DtH*
zHA*N?uhuhqjIAFOCpsQfF>*spAS_Vh=KJElNp$Z7UMEFMeUc@hIazl~AH_2N_>;Ev
zv^RBPYIqS(DO?*GoOyW~;vu6M?CHOvWs+pWC=c3mav6C^;q)}EOV<0qol|v>qBFVu
z`1%fu4V9s(91%yMYmsa)txKCdu@Dr-8iHohb)mu*d
z$w=xIy{1d#l*ooFemud5ec#Kwh5QI~=fW*QV(L0M!6UhBF?Py{v7bAoQw7gtnL`YN
z&r%A{&kcSN;>@KKGSL#Q9OAw_C|Z2-#F+Y>ey303>=xvq`J*64Csx5SPo&{IzbEn2
zA?teDA?uM41^#pX-P4c?#4q@?%4y<33q?P(ris_kgYfjso{!=@g=#JjN63wr%7-mX
zZ<^ae##`r_swwsZ#aLvMm#XIJeigDIJE1@^BXm~z*)A0vKqxxMqR?AlWL%0*)dZW#
z=B?uTR)FRU955`V99x(L`h_7tQ_nl7x0Ut0mx|t~W`2%$LhS&X__}&6*`vV|$
zyG=I)2Y&dR(N?r^1DInKe7&u;yCLI@h|EH70k3J)h;yf1cIc1VF;p$oJwo1g@a=zw
z<~3XZUbws{!I+Eh&ha+#NgLe9h>&$o5@aX<%x$LnrnC!ZW_!C2{of?v-hY#X-yy!t
zKWs*x_m<*S9`y!ZPzlKchGxxccqyz~Q9u1n3Y;ZflYZ@f3Fyqd!K$ee{as%UQ8;$;
z<0W58>YeVht_Ao*@fI?F9rm%&6!y+M0|;waaS3ohGZyOsF)x*$H(0_)rm+Xz_aMCe
zzQW71rTWfjs|DyUzh)qC-t}ARt)L}g$`#jd#ak*mQBeoBpxz9l3A>{^5M!DbM0wtE
zo{QQi_YWBe+|wkD^!gGICe>*p__i_n3v6@}+Fb8%5^q@Vz_1tlNku|BZy5xJE
zGB@^U9~&3v%`bF5%{Q~**WH(#Dn~JOf+b=?e-N=oBU2~bxcieYYpTu(p&pfrX7#aY
zMpi(JN=ztTpRINu2um32dVX2H&@%<;pe&RbP
z71GfM=+5GdL`R#@qoZ=jOA9~5-=G^CT=(sFNTjE(B`Zi~4xGlS2vW$TymfAyP~2Z+
z-RXFGZ2%<+@4RDD&(@g45zdhy1b%8NH}kV+X8TMrVr!eSe&X*qKzwlJTWp2+Et?qH6}ns|
z6co{rJhGv%lJ{w>Yi8447%C+o^nUGcV0DVUhQ(@jQDh@4P$Dz5qw&C?Pl3fxDX(C$
zkgSaira&EIw3i!6cCLesKC^fgHxQa{SM~JWr-yG)UtP3Dtk&zFPx6XUxEWW?mz}CS
zDd|A6?nz$>I{0&U{dA+EQQM4+#QmRb8C2YSB@6vYBN=$1k-qwR8!SbF%wE?vw-xZ@
z$_-L>N>hkirBTYEB3D7ZLM%a};L`!svjZ)KX}!~i4qFqE64EV1-==6!vLC)1kE9qA
zjwJPU51^MTp9kUTGLLjeROaDZ?zUu`1heTI&|O&b-JQc>aXe%hRbE6>umwMq4DW1N!{zbS(+*0P_Ln~~S-Y58_^oxm;4WH&*0$+~(FdpG~
zDldo^<=~aC9519_j_J+Gd(m0Av5lp_!DOa_jdblPG|(o9vL>zPJ*WqqP{x?)q+v?O
zry5E*zPyXbk*dGW>?a#W`Wnb!-m>e%ycdqJ&f({r9C3Fbn(t}W)ZnNXKiG^(dSJt-
zys!12OVaMl0DFq811@Xx*#1GqGc^a(FQxPXge)TW%%Zck;%W@@?aqC&3eSIoRE8(t
z8R?dE?3M|`z=>G&P4XcdM?c?%{P8ux5`RtA>g*jh?=v2;(7vx?*5R}qS3sj
zLINsajF}@lXuF8Ms}$C;l{ZMH
zBTv6`wYP}pfG2q)&LI$z`UNMz%lZEr9AQI+I>*7W;|72OnaDBxTz6GZIl
z(eAw8*sK8Z$lMv74`a^u{=Y)w86Y%T{|${bYltU3wD}xT%#A7
zi~+nfX|f8DC;Qc297t2VJ~|*$>YDC+Z#tQdXgAulcZF&x2;5H#@Cc7cF1acs-($|?
zR@5`IS!}S1Kq-8-9)UZMy7v-7XCc){NTI=I>IxLGs^iwky{!TYT@Tx3cl2
zrMk3)0UzS~c9`>oglzCMuU|25F6jZ5FZP}xZN6}rGyeRXXwE+VDJAt#|5GRDJJCA}
zb2r(Eijw#8B?^V@-cCQ6iXv)1Pm;W>Nqzqfd*Y9I*)BrTIuIpezaOmg((j(;0A_Di77Z?AA;+ul++G845pXy+BX1RGx*TsCXgsN9#MeM)w^F
z#nd=H5OezKrhOQZDk(H^@ep}|hE285pt8AhgBAmF_YyQnMh+oM+#KqSir09Ia32ro(m}C32G?T#*NV|{_&!xQSrE{KR+{{a=kzCW+*`n#kA%8ztS
zvScil4q3YK?zIdqV>zKpishzsln0s{jphh#4E`kBq}&>FM@nwMR%+E>r}46{%JS)pocYTZz0f2w43A&$6l4k;JcFV~G|;Ce8Xr$V
zbGIy$o(<`|Gc$@z@ZN(K+!-HKpb>7D{6&>PX^@hZ_y
zs=4^Wo02{Ek@W%p3%ch5NL!?vkntrE4m0Lk|Y{ET}0`MIxP&NRd*!X3VWv;W7b
z4tfFVXk)wg8@IFfZf9!k-AStvpp$>y9;njkxuT$`R}?+`IHDx^b)6AGyewZiz9kB=
z)7$^%i&%p1EVIq&E6qRpK>BZMa4vP`k0?VUQSlWul&ddkozqMZ#VMjf(lzw8bW|xs
zI-6-3@d*)iQ|zeTknm9ChN&kj+e8mngYszDWct?rhmPg!0)$FxCpaUPyTiZVPO
zgeaiAUc*_Y6{&cbExv-`Ovv-25aTL%YnplApX3
zlKHc>6c^VCczR`y&7l>?Yy-5SqDj6BR;uN<4rsSNdp2;`pDm}J_3(4Ie#DaR>Nk;!xP4JwL$BC|
zfYkoq2A&o5t0Xwt8{F>@CZffEBg-NF-_H>AnVH<~nSJ;{yU
zA!m|(U*#U2!6gsz_P14W(VjgEJ*iiGfW1gldX~R^&d!%t66Mv8J6Ccw)Bl%8&TnLO
zfc>N^$1m^&qo5aY2_B%voBy~BS~H}}x86KpojtPSu6;o?)_iY40Xb09*8HnPGw78|OyFbpjt-=bKq
zho7RUv@bz^Lrxv%Wx&J8^yIfcX#%G;p7sNh_1+!*EE9jU$1_G
z3gsFHe|v4~kB*r2#QS`whC-s`YXvPIwq4>+7yg
zuMM5-8#EWYLks&vQv~G6n9~-BO1G?{9iXGpdaBiCkue%sZ$tP(WL>v7G$5e6(e$^d
z*8h1HCF_6suyk&WX%|Mm@o|x^j5lBxG5ah2^YuUj&g47vOxhXH=Si3QPK@!NGQ*&F
zM6+K5wusA`tx-SjctG&T7bbaUV0VH>%|Kes&$inY+}2By9F-7WfuYrO;1(?>@R@2b
zOyb+uVa~Z;L45c$&&B>a1_k(1%!Au`*!foK8ZKr>YAVpYmOaiW<{g^{>Et1~7k30X
zb191U+~*&>{Elp^-y*;i=fT`(2}T^`;MfIfwyEY(Ig@3NivR$Sb{U@x39{Ua_2c;24+D8;$xGZ)rvnjdr{kN{SZ1bgS
zCYZ(nNzP2}Z=WmEiVvO3a;^fbEH6XU*O!g=o#nOH4v-g3{C`s~Fimkh>)nV~iZ=Nj
z@^@f8kl~a+172YAakgG_vGk8!W1NdrAJ*4jZ7sW=WxWb2^&j~=uz2yo4MEMZzNPfZ
zRZz>*W-rd&zNuGZ_$>B
z$^Wu0l-6Ez&zFDS1zf<>5K;S2M*h+<4AdERp1L~6W10p~;os5tMH!D{b_Co{&2Cm9
zM?ek_poDMPNYKlx%#m92n_BZ!4dL&+PIFA}tK@8`lpO1R>aUy;JVVyZ&EDwADU+oN
zNsu4vq!jr4%mPgo{*f^>um(6Vz!&QrkH7pW16E4XFF+2)9^E=$`;L4)-){fy^t+Pf
zeu;633*BR{0iyo+)Pcbu*3TTzTvjNEX_A`n1x$m1+9_GulKB>QZPJoCllrULJ+I8H
zR%xO7np@EgCCYHk}?ZqALd4RR4a#z5`%~=3?zAh80&d=O`f&O`
zqt~680W4-?ku~h7_?%0^c2H)e{(ryJvpsGx;tRgj*8B%0vd$~hLYSuxt)I9{AN6@|
zZ74`+{?0{r!k~}YOSh!-TpZ$*0En)l8h5P;&Jp`VQzg%Ni
z%MUrH8&eave|yURb`nZZFG3|J8rhZw6amhX)ln!Ckoh)$d26hL@7&o;g$I+cmIm
zP}z0khn(LPv2Be%*3GeN_{=b|{czQsTuohlnW^8Z6{SAs+y7-a+FsQ6=90HzN02ZeTaK|J~V5FvwA!0j`lPaoIrF$KGy=kSU|
zX!q=}MKy5DQ4Y8{$9Y?qWz88zjktzr3fDuz`kN(ozN>@O1Ta
JS?83{1OPnu+E@Sp
literal 0
HcmV?d00001
--
Gitee
From 7c2908d41be6fa7e42fdc151af7eea8c2ec16bfa Mon Sep 17 00:00:00 2001
From: zhongluping <278527840@qq.com>
Date: Fri, 16 Dec 2022 16:04:17 +0800
Subject: [PATCH 3/3] modify port thirdparty docs
Signed-off-by: zhongluping <278527840@qq.com>
---
.../port_thirdparty/README.md | 28 ++++++++++---------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/docs/openharmony_getstarted/port_thirdparty/README.md b/docs/openharmony_getstarted/port_thirdparty/README.md
index 006e979..350aaa3 100755
--- a/docs/openharmony_getstarted/port_thirdparty/README.md
+++ b/docs/openharmony_getstarted/port_thirdparty/README.md
@@ -12,11 +12,11 @@
### 运行时依赖
-运行时依赖主要包括系统API,运行C库以及硬件相关。一般的库都不会有这方面的依赖,除非一些专门针对硬件处理的库(比如针对GPU加速),介于这硬件依赖关系,本文不对这类库做详细讲解,我们只需通过API扫描工具对库进行扫描,分析是否有这类依赖。依赖工具使用和下载地址:[C/C++三方库E2E扫描工具](https://gitee.com/han_jin_fei/e2e/tree/master/thirdparty_compare)
+运行时依赖主要包括系统API,运行C库以及硬件相关。一般的库都不会涉及硬件相关的依赖,除非一些专门针对硬件处理的库(比如针对GPU加速),本文不对这类库做详细讲解,我们只需通过API扫描工具对库进行扫描,分析是否有这类的依赖。依赖扫描工具的使用说明以及下载地址:[C/C++三方库E2E扫描工具](https://gitee.com/han_jin_fei/e2e/tree/master/thirdparty_compare)
### 编译结构不兼容
-如今的编译结构种类繁多,如何加入到OpenHarmony编译构建系统,这是移植过程中比较常见,也是无法避免的一个问题。OpenHarmony编译构建如今支持几种形式:
+如今的编译结构种类繁多,如何加入到OpenHarmony编译构建系统,这是移植过程中比较常见,也是无法避免的一个问题。OpenHarmony编译构建支持以下几种形式:
+ 纯GN编译
+ GN加action/exec_script
@@ -42,7 +42,7 @@
```shell
cd OpenHarmony/third_party/
-git clone git@github.com:uclouvain/openjpeg.git -b openjpeg-2.1
+git clone git@github.com:uclouvain/openjpeg.git -b v2.5.0
```
#### 生成Makefile
@@ -60,12 +60,14 @@ cmake .. -DCMAKE_BUILD_TYPE=Release
##### 外部库依赖分析
-分析生成Makefile过程中的日志信息,找到本库对其他库的依赖关系,分析日志过程中,一般存在如下几种情况:
+分析生成Makefile过程中的日志信息,找到本库对其他库的依赖关系,分析日志过程中,一般存在如下几种情况:
-![其他三方库依赖](./media/depends_3rdlib.png)
++ 在日志中找不到库名,有部分三方库在生成Makefile文件时,能够在系统下找到相对应的库时,并不会在日志中打印出来,该类情况在移植到OpenHarmony后,编译过程会报错中体现出来,比较典型的就是,找不到头文件路径或者链接时提示函数符号缺失。
++ 在日志中能找到 found 或 not found 的库
+
+ ![其他三方库依赖](./media/depends_3rdlib.png)
-+ 在日志中找不到库名,有部分三方库在生成Makefile文件时,能够在系统下找到相对应的库时,并不会在日志中打印出来,该类情况在移植到OpenHarmony后,编译过程会报错中体现出来,比较典型的就是,找不到头文件路径或者链接时提示函数符号缺失。
-+ 在日志中找不到库名,有部分三方库在生成Makefile文件时,能够在系统下找到相对应的库时,并不会在日志中打印出来,该类情况在移植到OpenHarmony后,编译过程会报错中体现出来,比较典型的就是,找不到头文件路径或者链接时提示函数符号缺失
+ 我们默认这些库在OpenHarmony上都是不存在的,所以需要对这些库进行分析
1. os已开发的库,这些库可以在OpenHarmony的third_party目录下找到。
2. 未开发的库,且在计划内的库,可以优先移植这些库,上报并重新评估工作量。
3. 未开发的库,且未在计划内的库,分析这些库,一般这些库分为两大类,①对库功能存在影响,②对库功能不存在影响; 这部分需要找到库相关的地方分析代码,若对功能不影响,可以考虑忽略,否则上报,重新评估工作量问题。
@@ -346,11 +348,11 @@ ohos_executable("test_title_decoder") {
![build.gn](media/gn.png)
-#### 加入编译构建体系
+### 加入编译构建体系
标准系统编译构建可以参考文档[标准系统编译构建指导](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/device-dev/subsystems/subsys-build-standard-large.md).
-##### 定义组件
+#### 定义组件
三方库默认添加到thirdparty子系统中,移植的三方库做为thirdparty子系统的一个组件。我们需要在third_party/openjpeg目录下新建一个bundle.json(该文件的选项说明参照文档[编译构建](https://gitee.com/openharmony/build#%E8%AF%B4%E6%98%8E)中的bundle.json部分):
@@ -390,7 +392,7 @@ ohos_executable("test_title_decoder") {
}
```
-##### 引用组件
+#### 引用组件
在构建gn的时候,我们定义的动态库以及可执行程序都是我们的目标模块,为了编译完后目标模块能被系统自动打包到固件中,我们需要引用对应的组件:
@@ -398,7 +400,7 @@ ohos_executable("test_title_decoder") {
part_name = "openjpeg"
```
-##### 产品引用
+#### 产品引用
定义完组件后,我们还需要将组件加入产品定义中,以rk3568为例,产品定义文件存在vendor/hihope/rk3568/config.json,我们需要将以下内容添加到config.json中:
@@ -419,7 +421,7 @@ part_name = "openjpeg"
}
```
-#### 编译
+### 编译
所有内容添加完后,执行以下命令进行编译:
@@ -444,7 +446,7 @@ ls -l out/rk3568/packages/phone/system/bin/test_*
-rwxr-xr-x 1 root root 286148 Mar 23 18:59 test_tile_encoder
```
-#### 测试
+### 测试
在开源库的 tests 目录下有很多测试用例,在 test 目录下的 CMakeLists.txt 文件会生成一些测试文件来进行验证,其中会给出一些测试方法,具体如下:
--
Gitee