From c9ddd3966a26a333fc8c6f0d873652f2fc51cfcc Mon Sep 17 00:00:00 2001 From: MartinPacker Date: Sat, 23 Nov 2024 13:59:27 +0000 Subject: [PATCH] v5.2.1 coloured checklist items --- docs/colouredChecklist.png | Bin 0 -> 136624 bytes docs/user-guide.html | 71 +++++++++++++++++++++++++++---------- docs/user-guide.log | 6 ++-- docs/user-guide.md | 71 ++++++++++++++++++++++++++++--------- docs/user-guide.mdp | 70 +++++++++++++++++++++++++++--------- md2pptx | 4 +-- runPython.py | 39 ++++++++++++++------ 7 files changed, 193 insertions(+), 68 deletions(-) create mode 100644 docs/colouredChecklist.png diff --git a/docs/colouredChecklist.png b/docs/colouredChecklist.png new file mode 100644 index 0000000000000000000000000000000000000000..67818726dcc19268b5a2bc60cdf9e4ad44468c98 GIT binary patch literal 136624 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­E}Z*cT|0BUT$3^M%Q%wUaJIYv@iCjLGj#=7#@oJ>_4#08$7sJKR?PLu<%SkHkA zYq7T$CJnnd#A4KkV|1d~d8i|lL{@KMDIZa1@K)Ck77*(SzXLPFqJnbc0K!0UR`QSC z+B){QpJnvV1;q3valMWC%+;cW-9X=y4D1HJ@S*G2Nq; z^L_%JtdU+xXe%?{$padsiN=kO99(KrVd5EAJr{zb&38?xP(G? z1B_j%u|RRQ!jK$0ZVxMt=GcdHkD<}9Q+%qg*yfduV!W^m(@(mKAak~vAF1(?64PXf z|LgsTrtgk!%F^(|5uP$HmaVwbh0lA9O3Pq^8@gB#$lK>{JoOVC*MThU%}24q%L>{x ztkE{(P%>QU+87I09)nSg6jcHAwV$YjJW~TfyzZq+NcjcAvR?Lv^I7?6;hKSHqf0xWO*>E0p8o&myM+R?9qnnBz{n5hNH zi@PL0@@3bAR?Aon{`}P)PI>f~w`9f-%69AH0ODUjla)p}?HVbpYrfiK2VPQrh=Z@y z1Y{qI8mAA61}W#3Ubb#+A1ork`_!ikK}$HjbU z)u*Ekf(F_$EF1@f4oiw%iuQgD_E4^D147CdtZL`&-^JZj*j2iJIc0b_uT3(`2kM*> z*PUk#JGwvT_#n05=h2t18a&e{2B-FDr-caOrKhys?vWKFDu;xw_&PM&P{aU7uyUpd z2_UcqK$P|KV0yhfl!O!unnTJwfXtY;{4@%P?hfzN1Rw_cyh~;wINu?-VNe&6E*qFx z2N8tDfg}jc=xcZtEP4^DQLpRW>0u>t> z3EytCD6g$EzJMDSsS?4=I^7=*7X9OH`4?UWBP{SY<-WXqb+D_&1zen$M&u0|-#4H1 zGS~_%-pWKt$UOlsG}SUq==u9FQds1MkB>gg+{xFrUTF3F3BCGr+ zD3*~Bt+tC#UE$zseKRDhM>2&p<%D^|NLPpyFa*t0l6?3B`Wd_LPeFS@(Rb%Z^|9}V zgUY;)(_U#FRBX&0HbI(juE7}~MSe8PJ2FH}K4s-6g(4uozq{Rj&0}+Yfz#2f)Otp2 zt;Zl<4U8>BfuIbMgA$(h`%Dd#{>sV>QCwfE=-8z*YV2^Dc~z$}R<1HcKZ#df6ACms z-n@rgg@FbCFk2(hDsR;!5DmYFTE*u9H>;W`e!zgO3vKi$UMPOrw^?(gyK3i)`YzaP zkPU*`z)`yC_@L+3Ty2iAy4-j*qma5D>eufK#-Z?@`7H7PYZzoKTdbEdV#wYwX5s|4 zAN+Lws&F%Utle$Mwd#pdp+bKM|4*4EE{en6nJ`(R7n zDqvI^xXgnS`Yo?9bi@9)HfZ&PHde#8mA2;_sPd*QG1b)UT1WlFX`n@u_LZIEsE;)RS%+*f4UO0bZXa zAA>o?2CC5?s*^>!*)>6)Udx~*T8L=#XVwbk`1jLfkeXuJijyklOW&i}RL|utEZ}Hj zX>phhsEetD*K{7o%G}kUT8r~)Yi;D27Ar)SK3GmgZQMXmkg}J20nulhy76(|gZ0n@ z`QAGTH8Y3U_DXp86T~cqUA59pm*|6TADR+YJIBi}=@Y72f)0wFc!D}@V55WHVa}I= zd%≺epoE9$g59DCmNNB5>^{sFrOioiwv7A^!BFw0o(${}Oj{1HEq?_EFZ|d}Boxw*ip<8N!ZOSz|nJ zK3E47x6F&G1M`zX_OVbmy;Sr2%mlS=pd1pfDekC0c z^*zkiUV(NQ6tFqnot=>T1sExLn23YQ`Caj>YZpLjS)`nLYZsD z@36TxH}leTx=61hk%L4Zmms4!9Ao?wH_PJ5t}(GFnvQYqV7MrB6bH#YY@6g+({?Sf z0z3oLY{76&_Om9e0?eQ>N8uP7qEtSjalj$?V@8e?q7JBMyu)Dl`_Egw^?n^_iXMxe zO#a)Fet1jburY4U3+m7(c@G8dvJgAW;;?-bfvRKL$y03V44dI!{mZf&!=G;QONM2ZJTlqM(_;GMlqWBoen(TbZ& zo?$~VrWA5`i~t*-@Ts=nMo5(2Wi0e%ch_Y1!z6W0M-NWbuU6u0^nxrV|yGXLzn z6hDwvK5W{>DwgGoQt8ciiZf`m(H!+gNbXC4s;jbNc58+&*VrmA`~6l8ZQp1#^985* zftrr^VU%`==ps}oVFg-x@}Uojb%q`9G&y^jeVft2K8Tf0qk>Qubj{E7addBS!5;Qs9q;i}+6yS zW8z)Ev$FVvVODI5WUw!q7oNBs7udL3?YU#>b;Dt}!8v_RG;D*;y5DXu#+}Jq+j~iB z_pKF$+4)IQe%V8ys{bBwvc3H}a_K=b#UK%;-Bxw;cooZi)N50lFb9o9@@|MO6!saK z@83|csbBtn4sHBI5p4ndG|z8A=vxMO3YXO&3(chBwZFv65Sis>(MjkT#B!^l))2*| z+X@%&WU&E9>f|ZiRaPL6&4J=`%-2FIH;S=|@7w zu)wxk@_~R&opvmSV0PLK;wmzCCAosKApN%CR%&k@__bN1Zz@*BoYJqPM`wHXjv8Vh~o%mA1+lEWd+=FiahdUFeISe&F0cWW6KR36>r~lK_ z!t-w*VO~1?&z0`+iAfXgUBW+aukG}oUt@-F6-~JW{eeI4NdNq+x5QDnchj3)dz@_l z=;Rnk;Ea>=iL5{OKesXdd9MHY6k>V+&!3FF(e~QbN zk{Ww##{YHeyri&DNOT#4{~6n}$0zaRLvZf}7iRXT2mkpsAq0qo{a?N$;_(uk^{%)> zV3T78M$k``OO^*st^f?G*#3Qy-EFM?1R7bJsZ(|vfbZllLqkIu*nv~w2f)Uqi1dqM;CrBVBF)Nm41GxX2Xo4FERX@*WY2 zRem^}!hngvxj~!sHqBK_HXwFhp#U+iLstP6HRim7{94%C*uHywRQw6}DHS;9+Gz-w zm51Sb0bGK6ESrB_JA6$So?u{6`(H?mif$EI*G3wD6s~vE$Im_&3?WT+SP>S0w&5^Q zuX9?uyunMEUfB6E#;i6LXyxCc9Iz(j>DAzE{2UEN5x7V>?*i&OBRB z7E!#p=IWX|tgh|PP5sZ(`qQW9*Wj(D3V9hub%3N@U^3PYbxfl)t-%wd^f1);c)Q-K zSqmh-Nso7xgTT%65Z~L}s%6Kyzc+zF8l()EbF(bnioq~}1PPJUHk%h3?8Y0Jp+Ogh z7#0m*`yF&Bk?DgI<%jkXaQsa$)LM<**V|VM^aF3Db`$@KY#{++XDU0?xGI#AIQYB^fZTkB3Urhk~%km9i_( zFu`*(Ll~;AJpIo{M$3&wO27GCGK7GRFd-+)QSD+SK!HYph`uWM6Y!c%bF=dm-upy(my39U3#0+w5u_Vg#=k;Bb-7yL4v+v_-1`f0cqp!UI5vz@x#mVnN;SL- zafyj23~I|9-Yn!-JmKRvaLUy9T#I%mSd!Os?0&V&bGp=$38(-NiGoq#>0@a803uC% z%TJo`bMInhh9@Ie5wy}5fH|R6YM-&F63r)b&;j@n^8o1?Gz1WINQ@x%;!OjAntbK% zj++4+E)Eu!pD|}%|3Hb|+}Zu!U>`bxuVizt(vLyF=(5Eda3P~;Myxa2LDx7;Kz={O zP2M}sTn;8dH*7Q-A{fB+&o2ANPbvQ5@%ApH@#o&-^G+F~YATKQ^3;&q0$=U7IcTA4 zAupsoCCB2}5LA$_hgIz!Rw6Dy`YGB6t!2W=Tbu!$7eR6pQxkUn47BTQH(Uu_- zSgh;!j9T^bIH;wXV6#pIW?)e_I&}kjGE3TbAw2|3b#R~CTIpexBkVduhJGS-&=DK! zy$N_;*dU6!em;?La1?rQB3d9}@iqzg)Bf{c$c8}&9p#Z%qx7-4kXMQg0#A`Jw#WB! zj`O0v3&?hcZo3qu)z(C4D)QGB?Ki8ZQ2zzb8iCPcJ zmcR{QhB45$p*GmBqr;x8K3wVe$NZF_hji)@g60>y z@sv0;yK1LTgxUTVC=+DCgL}hcKY`=`H@)r20SpWdnH~|wg4)CgD)L$-ISiZGie2(6 z<`xL>eL1cL+PTzr;4;~=Kkjc)JQTlp6uz<-!>vT6MR?-c=t zZHHvb1dn~5$y|WeD0ohi8=S0Dga{fB5R5Cl_&fA z-k4ND#p>H>_%1{ozA!_OktS7c@$X27KY;#ZD+awm947t~GRK zow@}I^RKy_zx>CA@gGESm0cY<6I4{>!nzx}=c9|ekA3J;RA5i|M zPhqGiAXCv$O#vyeDtI(~^x>$og$Qf|wxL!y*-&0_QWLMK37ob1kqk!_>n9FYRVTyF zZs>Xn!m-~@YU23|Gwtsd#mUf~f_G8gkNj3jjpRH;E>$%^dt;W~Z|f%tj}8bR9u;g+ zhv5s%25jkqAU*vt;0h2ZK3AQvU@T@3-0bGZaewaF|7Q;)U9)M>cI~sHh*|mBBpW9uglAZ~7z_Od8Hu(3S_@@N^A3w=Fh0V4>#Yj<_ z0h*sEe4~jq{pFebGoC-MfuaLVj|i5%4_vnG=aYBpfiDtXKI8u58g45^wG7yN;eIqb z2PxEf=C3ARyW_Rdbk`7G?D!5(jYQ#as{cIT|M8Fi=U>SfLRb!%=Sbk;BOV{joCa@x;af&`^2jmcqQC;>={maHo@WmFH#}DIDT=K#uU25up6+KS+W2l zMA1^f10Bqq^-N%RIx{uYAhwJN1%olmW9s2MMTY#!ZU|Tc{!Tt#_^ZJvbQ+lfx)bYU zdn;&S*o68Zo{0rQgSC3J(D*l0&%w{y$2$S+B%6M#4q^gGC6T3|MMe|Fmg_++f4 zq8HDFI^BC0u9+zAjmHggZDbul-l9rMfEZ-kzNvhc13em?swy|xW|-`PFx(x)645pd zoIvr)nE77a_U%#elltXJK>R1Tt z-OBQE7z>4luE>Ea;KKkb-&0h5?Eb71i)}Z7`32aOw1Sl=Q7ceEaaRzW+E>8HUwBby z_vX2;Q7*;vbIh=*VQUzksM7fauoTIGK-ECME$kjvbSpDcJ@-R{YXnG7US{Pdbj;Tk z$WXF4eD7>%__PAMkv}HUKQ#_OSu%Anihe`E$lwO}Y)ie*sfXT=kBl9OFl&^V@?(1{ zei{$uXMhq;NR0N11?e_!RthTFFi2YC7X$NFpuy+P_)>_AU}=*{P)l$F?|AY7Whlgs zY)|EzTc04=A5^QC1qQ`dHNkD4IN>luNHQcm$m33ZEd28;{9ph2fBGZ9ZcO>#)7l?` z1wb;E0vne=2DakQqQC#TESZ~d@2V@GbJ+K_GSTK_s|q+HwsUf5-hWpQ+W-#Wn3SfsyVSuMG`@5^Gn2$$toNmaN{ z_{Z>2TnTBO!Z!zK_kCFuC*iUr?-KX#-}uUcXaQM|`M~|5Qn)NXbXm!qPao{FVueK? z4xH6^is-u3K95mx21&%|{V!h=Xt%m7hp!I7{u&1F_;}Cg9gu@Yg9&bB%f!&|afLMC z{15T|laGf*$lf~&Z|QO1vAlV>O((aq&hmD~swd}~uG`#uQY%1osemn$JPQt1z_blJ zBM5>+;`v^%dZB^AZ*FBU0$8x~yx;lyEDXl+Eu@&-^S$v7SAu1B+Ibu%2S<2rZ;n^T z?d}5M_M5n4-rfPV9R_fb+q@baIg@ABm&cnX1x{hb0r(q1=2*NufU$E3I0f(ktk?C1 z(13b~(7C}v?>5WjG7)8ReLM3s>Y?+R*3oINpx8!oW#JRcd3QZlUzEcn_oNMAwUiXR zB{#1^2Yx6VERg(OR@aaIJPj&m>EG@)Z~>sC6%&FRd%mI74Xn^D3}3D=X;M1_ z(S{3wMO*Ry4%V=razj4e@buUD8KJ0a_)4}1wzl-w^FO?b@*cP*S$eyCCK!Zp1yA7V zHUTq4^?i#Dy4IYwy+)C;@coU!DHTL>E5#f_0&YPWavu2-AhJ~jO>wA7rQVwsR}zHn zNvZTsJk4=o`>8gz2Pkn->9RP6@~b{Rsf^hH5`|4Tc5b*?bY(_Co{Dg1(Q(n;Uv?}p zIB2!cs&TEqS1^L?r7<)E0$77OcRKRDzhirfL<&v8$}i+2Q3d6p1SE!qr~5#uru;D7 z&>!A|lLy#M)}TOoj4=gBGu0#N48tVj$jlv|GOd?`V5XkhB=#)oszTvh4~&f=(0%i) zNuwZCxk(94T{xNjsG2ECAMPENz(9iDpwP%Zz-<|*!f>>MFdi18!A!O{<81|>Zl){6 zebY4tl*0{&aB=o11TOLC;zRDfxkWK}+oZ&Lev`82PurCAd+8F*Djb|Bn60T+1{2L$3?~r z3FR8UX{g_7N-{d1Ba{6~;wI%t357Sggt*UfpLamf*n-mFP+8J2Qj&lKi>328{a8y( zH>(MVg@PrU1G>OyumO6$I16c%vVoRV4Rh?Urr#Wx)FL2jqn|2$?@WkTV!ZTN;^PfG zX=x8JH-uos!a&R`V$A_V?T6JwEQwJKyfG>{;1pF-68QYDq#P;85hu-eh~N+O`mOlF6ypV#9Egra9`V3MV2>NX zN+7{=;&VTk2G1kT6gX^}$ob)_yP#?oH3&Gi=SgPG4LsMJp>q@KQUJuIrlB?m#PZPe z;lO+H?c%dF&`Lhe`r-qlNu`jv!+!W+vwE9qjgkS-Co(;6o<4&1B_cQQ;8Re}uOOD8Yh3V~Om5vHQDq97a= zT7O-B7=nvD(n=G2jJ@FmAGAJ>AMf^(7% z4l&$@f-cC%TZIacx3w}AvrR@?Y%`Wx7oTa=jjVt zh68sJwqWGwM&^*w#WN<`cQOa}3{x${fv=Z!HIN5$7wYl4=FEM7_mh1H}K5F&zZxZW0T5 zm?yGvlb)c~=7B&$%2JNLYYdk!og;0gu+bUR0v?wKNk9U`GfGY6jZt+~>k2<(BE=BG ze2(%Tb0BP(fwHGMsl85R<&XWEx$~IE??5t{WbP2`sFi0ZJLUd^9&Bj!(7Y0x z&4~K$G~NC=e+OpWL}k1$-aD$7|0c>y{&~twbB)LpL+8}NcGelwR634-NtU6fg+E;*O8)^2Ike7`FPStah|eqp_eNKPL`tuZ z{sV8ZU&+)_D|SDDe){AZbsBg(dn^z#5#kIApJrC*qg`Z%6O5aEI|~#NjV(8^UOS@$ z=h_Fvt7Ein8<>^Or^zhae$!@XYi}SsSzdIPn%BuOXQW*Ga)K#qfkc7$k4Td!G$f6u zc5g%*(u&%^%l(QqCLQg1HDoF^b7les>gdQ0M9yHI&0I&`my96-vb=irmYTM#Av*Q+ zj+>APXf5}uM80H0>DR&t;Td-ZaEgnku-2A<$XW23j5jfVp2wEssCG!EMEA3Z5( z?mc-&`(A{ZU3NP5biK+L{Si7&P!P3>ZdsuC^BV@ZW1^c==UxrOiQJXX)B&AtZ4N=$ zC$h2BQ)aRPPDc%Yg~Ik!`s|zN4ro%x@q?cn{i|cityGyo2(fDHqmSI?7fG8c*S6ZlT1~ zwpj*d_Q3R-kiFyjM+{H=*pXjuSQ-;H2_n+AYvHS{kPf6_j{baJ^Jv5(cbfge(BM>E zJ5KLd6*02&laZWmPxJ=tD&);YLv^drLc^dJctJVntp?_*3wq}%Ev;AW4mK3L((nZd zrw|HFo>V1Su{PO6*~`RdM74Qe;Q*zMLjpQENeZ}rPP+n2J9wiucissU)3q-hU00^g zf}Su8ppI|WA_#>9H2h}&iWVehfkW)K*)wN)7fiWOv1_CmpbL1TNv_rx=`EcUxkX z_y#{U%um2?{3@`3jH@ri8w9r~mjEvcCMa(`Hs%8)5IGs^c^kHFhsotkZ+n_pUPurm ziXhI9l*y{T2wKXfT0;Ese2T#T*( z6ey_l!ym)kkx2C$#vzs0eA4qen#9Wh;L{B?04t;b5rbltSwcRw4vgwf!E>|6(-L%= zXY<QvkS#j#Vy^{?0WE6}9O}=g>Jq@6_>E zMrHv>i|?XAvusI5Ira-QJtv9BRP9;{QxQSt?&md6N+_%GoY*) z0zO!`CgKw=)}ie3cuBEWn;Qi&I+RLPcQ&Ks4fCrAOA9@N%=S?%fgT^%u#~1YCBSEz zjuHZbk`Ed7)KEk<++Kl@z$VC*2;91F{1Sl55S5)1(3oQp2Rer5(=;CPhAXqpfeL(4 zI9oT}n?6{0>G=ZL9UX@kr1icj$*eXJI=N3hB+7_^n;-npO5$`~{(4CafsQE{!EVC{we)}}H<%gR zluS@F0B%%|-}IZ_Z}u%+1}0xo>QjJuLAKHCz#JNAZfaD+ ztKPamSKQs;Yarwng-OYe!7Oy-8P4A>ceZi5dbZAyRYIq;_2r8Y+T6o?B6J`ZfAfB_ z>koP%DBsi&CI(anzcVTT45-Gs{u3$fkY%0{cuMJm$7Mn!^yue)Y*_l*mhNBfszlxor@!&Jr>D z7i1CWm7whD!NKQsP^+1JTCNF?{@OG+3)6~&ggyqhf^vQLdnMCsE{33U_GU)sfEOWe zewcA_Ud(*&&U_zrz^plU$NEu<{C7P09Nm9x@BMy3S^UH;P7ts(cI05mr4peIi4VBw z2}ObTEVn7VhGVDjQw|8j2LF6o+UIwV`RC?4Glj$UXzOyT?d7ZKG_{DSOR;;&1_%hre^4O2Ra-%#lf~XFMY5YtlH1o z1apnq-oWuZ6)i)!$pP_1p6AFzF*jx)U)QD=>MseNqa|95c_&M{kJ6i0qc|obIIoll zUj0_Wd-B$QYNezoKhINTK*H9}K;x9}6A8A~3DG(H!B5Nad^7EE-Ujm7zA+$tA$f$Y z-K0~zK(7P)9HVBxyL~vmY1YbP-SJ#bJ!MkxUchjgO}sYQ-m{E#$AU&ZWjyndVpCGD z_aX4l@o~R2t)(loSO2joQ)NJe=VxCrT%z7pkl*t2ok4J~H`CgN`W6sjSJG<9atyUe zr%d%i%N`7sYe25kB>j>|5T8Nlrm3u;6UuTO4Ejf4}h#w}jpKs-{oiS&9hvsd% zOh9#9&t5d}ZH4bfsPQ2=LzPg=E{<22Uc#J%{@+O4am_jz?E}L|uPzUL)en{}Lq!B< zHxJ=G(P4N>?m6>$hW6uwmyh9H|RnxFsZ4MS^T%*RXNfdI;*t7c_8z{SzLjl@k;GEhk+VV zL1iEHf$G)eQby3NIbtfqqzO- zEeseyL#ldAFUyD0sf6`%o0b;e)k8KOi-D_yf{uDPV7ETCic`!*%~dm!tjJ1rR5LnN zhY>`>7u;C#1ww@bwT56`d#(1UVQd^USet<133$uvEa%h5YaT`rh8Ur%uVpxG2`kOS zs2I}gdcVwCXwwW7z{S6`ssaPb%gOV0$wE1=!6w)aOxIR=$JTQ$CtKVS+U`5oqGLE9NLXZf~8L;Y*a@ITc97#aJ*3qqI;s9sTz@ zw~h~93={|B^o{L{U|5@*T0JbrvSK!`9ES3j8oqml(m*v47!fL)$h7ul zkgAc9jLF>YNK6GL^f5*Zve!*V{L7fRwL-JrN;&$cY7YR_I}Ri8@;Ofq+Bp`fDG5kI zDQPiq+h++4jY82LSKa{a^ohPTv~nvyt;QO{PwzEvIm3*^PaL=+NS6|TR3$^GZMm}Z zU03hp67!J0&@PZ*?8`f?Zl2aXPd$c^c|4c)?E}gYlN}c9Yhpnx_ZI|0C7FjR%moS{ zoqkjIHXLRp@K8OlpLv|&4f8W*MfmGRq*-k=s-2lXAg=mJtq&n+!foUdAM_Ql@{j%M zN_>K9FDm)ZK?D=-P&EJ#wAQu;y8sCaI5e$|0|Dk!_$kdJ3OrK1?_jcwl69y^{Od{r z4jqrxFRemLT59>VQyUV6aMHM8pd8(jIQR@G{z-xKgPKb7sB){yGtvCO$r6p3`0a%y zdsMSE<2F#?Ry4I$m|z6Dwd5LC8tupqh}^%CJl^zZ4qn%MmNNApvBOr|Wde|`uRM{A z_&tzBk4N-$BwlBK9|_h{EExnjIf&ZrZgy8mtm|K8_wIt`k=x6?%;tv~tW}Xvm@(T0 zUTW67@Yvp3#M09ge~T26!H#1S#F}V367fjrO@YnH?E;94q9sP%^}8ol(IyPk^qOFs`?-)ISRK%+gBO8A`~1`@=8rcI`RBDU}KS7^IR z)Hzr|e&w;Ua=M3ycNFZad=L6~sfC?$tn?zb`ep@p zU}uQ)IJD3W$MVR%<|@Aa7oy>wo-nvaPdk0sU>o<>XUM3Lg%c}I{1UrUnnny%R+i09 zPAEb=qT&14(5bpT`2ulA*r6kI+6P#YA7WD4m!vfxHCg&z@S)UJTfhO6gDk3GF2R2m zr-x5MLv*T>EcSJctfsE)K?dbOxWHY1SI4r_fZ65FKShzKTklw*X7z@f^ck|V&^<%0TD3P zcz@du&RRzQE$#F9x6!mn7bYf8DZeQMLW5ds23(Q2;PI9T|BPiGRwWro0zGAYzB z$7KqKMpwWOOlwxzc}6|5XVbVw54g<{Pqsif*0`LgyAwHjl&H(mKpD(1=o`XdRMBv; zA;|Kj?g|ykW+sqSna{nSjY08m+y=G8C9`==A3S$>A4=yhnobL`uTEIvx}30qj+xBF za|;jMw$T8r8ja|i3d7R3HQ`hk1IYoojuv}?g7&{Sn&{H$;V015kt%zeTs`O4-Vg7#{Xe{4*7hvYeck7Ep2v9{`?2r)F=qaU`_fawpx{wH zok-h61QEdYGp*V9d;&L}@*`Yz!pP%0mxXp4nY;@gVXXi$C@_71E(F8@y-S8LgiM!+ zIT3d*9;gkSDW~tO^z41V|6I-K6ylHtQ>p|5(QO6eF4mC2uUWOU_LKCC6Ue;1V^7;H zXWp3q5VU`J@{rY=?el)sf6+Z|4PTORs~!yohAZrRjl!2lyN)k#PQvTWNMw!g?6p7m zhb!w6l1;A{JabcE49>*D3!K@o^(s-#Z#Ef16?tMw#u;@`7RWTHs1Oh&{ZX#mnA|u& z>VmH;{e!lvJYUC}6GX93E{lktf$5$Th>*rOt)oEB%W;rrMYmn3L;Xdp>I9A~n-{ns zu_FyE+fQ45>`m*{XrsZun23~y*@Q9Xyw9pa(_Qz-l;je=)W!XZO;@59fRs5@N>#iS% zn&xL0{8OqB_YV&enjioCgZa;k7r87cyKf9GXg8AN@GczzN(*%iR?qv}|CviZ3MN3w z|NAQcT#xzITH1@YOD=Wh{<_vvm>UEK6t1#}O!Rc#gJAaPgVc^4MOu=e$RCjky#3s~5l?S#ww?FIB`t@0(T-}T5p?gmE#Z}mp8<1lRq zT5LZ%hfv(C3aLz>|5Q7u2BbH)!MqyNovXw?uQcLS?L|8&h-4BdcW#}7{67e$2CPQ! zBrq5tR%sYFEdCANbb#!7!fsM9ckN7M!1* z5N?hpZaHT_1as$Bb&Ah?uaz+(Bd@M`eJ=(tU#6GQn!)M?5!0gcl77h>!iP$rI!=wt z?e*KsS1u?H{;?xvW^Q zi`E;7H?NntWEyBCP%GTBc6#nA zi$&l2)ZV_3W>aqOk~^6eq0fp#ZewcZ0SAel&MshtM0Ym{wgNV|->i_kuo<`vH@WU| zcAio`8zv14`bRKclgn)f$sy9;c82*a2sIg&ts3x<1VZ5l{)qzk;M4p9rOf=gT#z;j zm9}kKB~kJEHNy*)3^E3^+Mmob-5cn)Sesrc5@Ya`t^-3Om)l>QPA605`TAAujzpssOU7HtG!j&~ zr#f;ss90xBdD~vW#q-ulB=kOCBtA!5^qGohyjjBh#THwm+I^GFiUqw3vGpLB*a_y3 zvrDC)FLZSav8)5#l^u-|pM((D2lppD(&X|THS1$}ElFDO%XnYo|i`O8Dme=M+cP4=Q$cQths5* ztxXJ&q|&Nvh6UW(U_mW5<5(Zg(D?Xvoz`!g530f%eB1E1J` zPTv>9%<2T6RuF$k?Pt^>fiWugKs<0$hPqr2+(PF5iwnHL*$=(EHGQnuE74V2nm|kM zbF7VuwyPSvLkE`-U`wYB4DQkA-O1dtE5#I&)lm>=`!bFzWWJ0>oL2xv;Ludp=QgNlk^KtqgT06V)#I? zgl+sY9vZrJcX9IAjN)oiE2B_saL3x1>N}3OrOpg}c*f?mP#1*lM2UA}yZHni`U;`4 zrqILYUmScHjdR61h6dVBqTMbXFu%t67)-2vmz>Ry-&@KOqdmss!8{al?P}v%Q*AoF zCZVx=dK~-?x7!yMXQcnR$&Rce5-RA#+k-!A(hq{_BzSrBj8Q~*)Uif_tKAYeD!nBz z*&+^iou;41G6hXvDK*0I@+7|%RQ|7O^9u$AP0#R*8dDZFF?TIV=oT@YD%6+WyYk$H zd(U8(@%Dr5ZQ-IC_<Z=KA0Fw^TSEU9 z?W)lcik1|VT^+IW_$&XfU3W$fr8n=0wYAWn&o+jJD;-PDu5@wZ(L1}08Q#WPvC83Q z7O#dh!54^8a6`YGkW9&?6S1o)1X}_%H%C(dq>(!4daPggZYCO+!)9rLM_g#|Fneb$zNV8>9&^Ly*jl2 zg4EZ`Lsx%H4gunwN*B#{`RyJPG>wie=EkDK^ze4t++O8VBoIMWTKGjj%ile8^WXWi}RKXMKd{QU+ zsJ)S^A-6OXbVQ0|h{M&a5GHhPE%yt`30(_CUN7^v89AG@^A*}UEfJ(cwr#UwX~YUy zwEy|vKl-0f_24NDJ9B;J6Dr-3(QKIn{!}h0Yc7{GF-=8{iVU==Zvxed%Cp`>dVWbNc_Yk7M+v7)Rj>6ax~mZy$zA z#f?B%FE>6WX|0pF+v$r!+&92hezPq(tF(I#-WKb;`NnYcD%>cIvt_)Mfmu~WoCi89 z_Ps_X-D%mpi~WbI4OW}mBVPREA~al9T6?D}>Rs8SVPtd*6`2{9D(kZWe$J6_1=Qj~9P&s#L&vAMTTG_t z=X>K=_HKrW^BgkbXGJ+(=azSIuH28Qs)nGo?21J2aQ6}YD8|IoP_DuY2qvfycUKXT z(zGIE;%xb&0m)~k0-S5`a#LEZp2Y-)#Hsoh@P%5|s47a#y8zN5OW2tMXd5!lxlRw( zP$(yy-J+&%M15a5H|PXauJX>UPM9~@fw^SV;lHZy{6K%K1{aoE;(JMIYn0FWy&T0A zvaoqMYWD@b0a{=<7qW(bx4r+~W5@ab^px%P6+SO-fJwjd<8WX3@(or#v6Nr0JE4DF ztKcATL-|$uVOa+&c^wgyw;j-lg(o8yaZldHp={jJnExX)1zxu%dCs)+oGN^*G2>k= zH4$ybUOFf&c77jh6=e$*zj&70FcwW&Ll{Xmj|p$;(iFV{YT(JBL?2ICY;8Jlu$1?g z83*YF_O~wOD~Xbs_sjX8cyM`ruZS(}qO#3bE&8xsX*KJd`%r(GOXb|!@!8H4nHKjI z4~M7cYFm19yE&P=m0Q3QtpTB;?YLYSl1@4(adv+Ree((Qh#S}ef!}#U%s-!RqaTd& z*j%y7_>O3c>B9>z|6F!vVY_P`zPa*;wLNf_wxNC4SQRC3xlhGq^5nY`%^)tdfot%e zxv|@^V}&6GztBAX*=!PdO>37c5|DlHHGJZ)plYOlxjW#DWt;(@q{l{^V`3x4j78W6 zbWd;g;wo2XVEKJa`}NZOWgh(4NvW{5zbL}(`oX?^KN;87w>KzMYaM4?e`tKC?0H?o zS2;U%6<=~USX|dol)d%$X8G^&k}C)^e{9M_v!xASJFk*OTPcOcK|47N(-(YZoPK`D zHc)I+w#3ooznQG$ije3GCQhyPoG!Kck;=U9QY{O=f2o5Mxsv~SHv2Ph)#W)#y@N(} zVGS$^Po)Sq0sdM?sgG>Q3cgu~6=|VQw${b_rE7p2PFS6-Fcrf0S2X4l11Uv^@McxV zy6oj&sLYN}&U-ZffJY!l!h!R-f0oVvv%jM3@zmF%|9!3g^%Y6G;(IMxJAZ8cwLBdjBr%GNatdkAUDz4QO}Isf%DTo)l|(y;&6)ZyR1$1&c~Rr5zh z@?pofZcTmi*Wrad1Rf!Of%}FIcMH?qh3yj~K0<4VG0&X`A2MBIWIYJwIS?~cg%9tE&gBv7`I5h&2cczNGlUzUFT_6gz^ z!RfxEQWXabq2DZo!Zdy6%|XjD-x+iRu)+;Iu*TG}5wxTu-}bfj-MmedJi9 zA1s~?W_4ilbG$$t*T=oi*NF&63|`oW09zG;eXq-+aPHE@u7c`m=ZA|&UjEl}@oPJ3 ztw7S6zYdoAMc#HY`FxznOjAT4v2^a#(iZiE_ zL~Fh1gX+YI`>D*<9Sl6Wq@b^TJ6p;(j+-mv!a!;nvyx(%u(`&l9${vbX9vIdHg;Vr zvk&OpD!{ANt0Xz*eZ<6HkC<8HzG}tdr7O8A%>X>#y4H0+t?h}s97Z8TS{Q2-r3`%8 zGW}^;2U5sYV05TB;KoiLakv1B81`OJ+{3-TGTdAQ^ktD^6vm^c5;Luz^(QA;%kFP<+brtq&2(hJ&Bm7X-SNXH^o)&X2y z86?mrSEnNlxqvhNm?E)6a1nF|$9ncq2a&erVDeRh5_iQ516b&-f>KTf6{nn)m@d@w zh7iWb1n)NM|SwpqooWLH*NBEtkGa_RM|dI!f( zuFKqC{Al439>T;0I_ofDpWkneCCi1D{;3ls?4JFce&1)jea#e_dXSRM$IpOpx$@3| zNmB>dMiwDD6oK`2DAAz~9o&>xOWAG!?(`tVMUHxdNUO!k!TTeVz!^=-P+f559!DnSMEYllA6 zqc5e1Uh)PAemko_ptoStmalQK)P4$?WlU+7c_V*)vL&Zg5ev`R?ko_2#VvBX1Dk80 z5L{2DKU+v`9zY-65YhwXlK8KOE87NVMLt}rO#w5HS$A#1PM=MZBG8s@lZ)`8RU<8m zn*lF6C0|cFjd<(xJ{b*=YDOetfnz|bg_v{t$fi=}$PqZqtR{&W#KdwG9m`DhQN1ll zp$)-xQ>1iHO4*KtJ7K9hpv>aY>V(#}5WH_qhU(RA;7ic7zr&x0O^fbuNj&iT+pj?# zQT}Uxm|j@~kCkyiJ7qk$UptZaB3!R`>KLet4iTw2c+l!;gY^fOZCZEa_QnwQESna}!@hRU^P(9oLpHz~O9wsr$zPFsGTHDB6!LI&QvFSZ~hExpXQKzFj@UYVk$0Sn3scro=t?; z5v-NC%o#ZM(7S*)crtam3PWZ#fgF~jMxuwx+9Zl#^pW2NP}kD!20R(1qp^*nz4rx- zj=W-2)70yOxX@Nrt`CyL-8oO=r4yGj^3V@LSSwc&7+>058pL~QErlki?NM~wSgMV( zqI|jKcxG1H)u-hn=ztZ{u;|`ZtJxK(<}dXVjEo}qsQRh><;4`TA$okEd9Q6N@u&^n z!x$Ok&zx|oT*xo+U{!RZ?@)+||7i6I1PTn6qYR(wl7LPTE*9zda8fQv)=ZH8= z)2k`Ukic3}aU_?|IXP3V(5tZxgE(@7I9e}l0-(~Y)mAv%_wWuq;IucTg3AB`5ZH

^}gdNF*;~X`Ozt{S!SGgl_{{M4|LU4Bkj_988(h4?Nc9r z9!f0sZ>22iz@<2Ie4t>p^@^-v$6m>8Ru2PPJAbZgcb#uPaUfYveKC^x?eb?46=GdR zr*WD$wGS1olCQz&GB~`k7Z-bK1?<$g;MsZx3@uSYrL}OCMP}J!e}w7V;Rp}(skeTek(=w zM4KH?t@F=k?J>Rv6hY0zd?E1S7jp zt5ukqxIB&R@ALkeV<--UeOX>)9q2*d){pPOXo9x|lA0)(uhQI6Pu!rSn3V&~yx(Ep z@dlmUxf~oO#l?PFZ`rM6h2eBkrz_C$8TpSAE(nXXa*p!-6yKwYY9UDJa-bG0f_gvr zMPgJ#pq{knvQ)E5WO*TZ+#0Vvne1lAlU>}PJ>DtzmuH{=bvsAnK3vIi6!jt5ce5z# z%U1==I25fCU5O3>Er`r~SCX|tdVsvpLCIh@x)Elu)=hAc^Bb(96so26OUrUjs_fB- z>4#px>^1V%`~56mi-n7qWVeaHf7(LS*@N0@H`60pK$|+Mj@duWZ6J_VAhz#^n(;cg2VpUHh>IxaW{EIz=w?LwnWISri6+UF#P|ht#*E+$i zpq?e<{JgHPv*J%d3Fz z4g#;XaV%FKXGx$%kTLH7SxL!PlcIh<_zeS3YFD-be=d9R+&ig)57uRy;*KkF-(*sV zHy1d!ox`jv8#!sONBjW%9=f+_$eKaSB*?+B{r-hQTEm2-tcugM$IUDG9~58L+Qr%a z2?h|C#rmH-jK2@&nNwARAx`NY_tsod($nGe3yKK7tx=SwwA#Ji=5eN) zMG}0}6^EvWF6ubjs1D^$fBtoY^5|3LoyESC4NGWHyaIAR#fGkB<*DYJ854U;hoOC~hlab)AXP+srIgz9!juJfSWnXIxE5P9$zc z{}aXp?iZkS$QehY`Cosf0Wn1?Zg#9b*;#l1rP(&CD2+(-?`qa?=4YYXHKW*5v@rqwqh`w3FpSK$(59YL`qDImdkQ%^Q)P1}bSywID@ zUYoEnNx4#ACpSMG_LnIJtwmZ%1K{b?OU;hlDMAZFwen6t$f(~v)y0?Qi3!WevRw;$ z&cB}m3mBP1dNp-05_DCKIW-=5dMZ+B`PKDUK3iYSY|8?M+h!F|CU7}MBxzfNMwl%V z+g_-%QjpBo#pPJ)#%@2^fB0S%POUbBPyLe((Itl;2b+%J#`hrQk=$CXv);)qiJbY_ z&=+_>;-Vory+VKDP+F4q&;uQ-+?Wb^CE}N;1%;}egCdugy049nRY`*4G`ZTuMqlqJ zLIv(i%QU?iwUzNc?BbaGi5ds}RVbtv%ULd-8O~`Hlxgtl+Q2u;#j`36MF$o4Og3ca2TYgzltQ=TOl#J}&}R+9T)6|( zO3zl~nE?|ig?P(whfYuGk)Om%qPQi3w!KxOkXM=$)61#5?Lk4jZ zDX+^uTPi~1#!h|3eJ$q;W_&FtC^5-7>dm1UVn;1oK*MJ3L^bwU`7M27l~?s@jRMe*DoSS?M@DxRnt34?Ni=D4nVTsh;homl1rE4t;7{h& zl?*ojHVsa%pAubnWeU-I3E89>c0KqQW43sLWh)f7Cp~4+!dAB2{r0x`&EWxn3z@`#5pW_@;1somFbCg=EAGTs_K;vMHF@v3h>JRH4T*Ic zx6en%ibIIC0Wmf2QOilip-RhCy4u~&Bi?OyjeZXc2${LY`b>V=@A!f)14ZcoUbFh_ z_;9-vjM*hGeQmJx@%19(5aGIU&q8k;!K1N%{pY}w3AL0%@|Ia=E8plvnpd`6v~})% z6Ot|wq<&SYjoHHTTx#fvL^DReTcfSewyIiYCZO+NMVxV1_g}eW#npBGx(HGjvjmzF z7nZr%p9Mv@2iK#K5)hgYue@6QI`EoTq*9J6 zrko15gAo)v(_h4-XrMc_;w>@kL!OhC+IAgWJr6Bv4-mQ6?nZ9WiiIZ<-C@m}F_7!P zkUg0YXN#*n?#3nXk3I1IcnCt-LDHc5ofajT5s0AW+Nh9E4f2g9{8W>i81sXgMS0b! z@UG|X6IBOhCq7^J{_f~w?jy#V**VxsE?Oh;iVF@5sop(Lm2QVB-F%8IV>VH`O}qc) z;?=yzGH$B7A^rNc=gjN71ioOW-6jy&4q99=UAL8bfJEwsaQV|Zsb$S}t(Geap%pW0 z0z|N)Ghm$-e63m0@i&u8m9OjPU@q~zE#4D+H%x1tk-)hp@x{@>j^iJOokfY$leOvl zPG)0)@;JE2ceu>`blKa{C92WrRemhf(pn*t)FS2WkmnU)F2)uTR4%kT{dAj1ELnSl z|Hb$B?602W4OV@`2epGFzioYO zo-HE#Qp41zTS@dlW!%vodwn@aC@=50D>83 zZuI_$UM5)!6W+jYYZ$e-UzFI2T87S6YbR=Da9ASD@#H)Q>47G-OgDnVd5KEzkYf(+% za8B*uo`TBbY`-o*)sr(Vm-?q9rwZn#3NCa2w)c8}UV zyW4QxVMu;APvR8}m{PbWyWsZzsgo-E)xZ7XJRD5a+FIZxw~^7$s6SqPw8d+`5ypV7 zh|eibiZav5>>GBOyPCGY5&m@{?3U9%vI|yaDrxV^icqCkhowxD(&w6)2Gz)G+(XsW9E%LPpm=YIz5Tn9W2^&{nIy zc^LXYnqIT?%yzI|wwUeZw-3v9co_U(%;&u0!%q>yH2q&Cy{p%?A5Efd}jQRJsjy&I)I3Y`vi;c1j_*75r4Cg3(0USB2hI^uSFEy0!s%dYpw zGnI@{%Owz@SBrkQbaJ1%rFZ)!=Y+Tl)s0(t?CXW*V3o6;QmAFsiUi#}z#`zPQcuo- z{Pcq9?%i_HIz161_TGG1$Fh7Xi)R6#xla$a!2vO!A-R5@t)N8{D%!9tIivS>y%1%m zzfDG7;`5WY$Ls6w!`W(guo*;(+c-|4JC*iHcV!!N-yJs?m6w-f?Vkcd<8?Y+;?=JO zVr0BT35bSw=1xg=jnge4P^`@+6oY1mo~>5d!U(YpjF)X%fzhrZG|Lv~=n=Vy8Giv80?p zhQ)vOQw67*SqpT(DwX6vDkHi_$^lR~5uL)S8LQH;YCy*>9p@!~Xr zNV~=kSaA)ylzULnFnktB{RHr$d?nw+Tb0|pSdSli;M=HCZv^(lc3tp+3?rR>$gLu* z*(Ma{GHo`zvv&P;yP8F;V5hsy$~92`9T!JUG2e^+^cg%YeQIaT+)Vo%Q`?VU#dk8X zB@GDA*`zsr_B1YxZ*V4HzE!=XGn*-angJdhQKS{f|4`o zVh1=jp4EQ-16uZ#B%~%N9)ELdT;caCZL37i^N%BJBV)x$5lB()UjVHub{&vibXO$6 zsPbe|px7LVeE|*;0kBtOHXq`?sH9#H@H{KNVdLjiRfWVRK^X6|U*5S_ghQwJMo7Hx zS;5bg_piwWal4O~dljFYb~bunLn<43%+O%>eA1+ZG$%*>v}IPM_n01NGjb&lDHqk5 zylF*2&$9H*@RvFZO*b_vdWOv^XItFb03C5|dIE#`6-2XiFEKKX^WL2=#;N*@)CGHr z3(!5d_8pzBsJv~N5}Hqk2S@?x07s6K=1r&tieQ=Q@6~PBnRQdZlbd7fS?&8fs?^(Q zZ9=A|e&5xVmZ250e8To@H%M^B6^EB?ydW)ivdl7uGOCaoeVb_@ACaI`FGxon@_gl!ec+!Mal$3up%>+Y|`@qB6CA4#KcxRbxE|A@e{3* z`;@Ws=wolw;B7%`*em?02s2|INo=>pSxy1qr_0;LUW)EIv;yEVnZ_Z?+1ea7`gs zE{>vZ?B9ZXt$Y1&n5tgQd9lQjX}$}d1BuZ+cBjQ9nc{NzP%H`k10#C>ddVG7V-Nac+ zctR>XZ@P*SlLUx8yM(W%li5Z%Q-)rgeWP{pnm9x2rzF#0s+|WM%;T>)Q{QW;=W?vN zQH%!S?#<{2uIUUsOKv3i60a6G_z*6?QTD?hw{hGNQcLK{tS{{%T}w0r<>L3jt%Zm1 z?BW1M^;@KtFe4Oc#PM0#|HP{_$v%h%-OoZaQw}Ajtc!ez!Q^t3s- z;fDz~Vmfr*5uE{op{L%dP6bB6E=L3?<&zjB9lTGb-(6NBHM9pTvoj-jKdm_ZB+X?c3x`e8BV-WCglJ7beM?;;hCcEtL0l@A_iM!DsQ#ow1ZuSJE6ut`vG352e$0l`PqNcJ68xLca@xCLpjvI z>mRi}lY%=6)|p3lqUy zr`s0|@}djqplV+JNc;OF9KYloxD*K)qLlqhmL~=*0x>+v?gMH4!$~aB?v~&0sUBEO zUm%6*?^{!t@wK#F5q_UnWJUsV?m!8jF#4Qv-e0hm#==d*^L$AtEFHcsAvf*?()0wm z%6P3s?XcO`qRLDv8xU_+q5 zhVZYBg5T6O4rXD?_&sf*m7%|W;x`%DhC^Ve$vk<+`TKJAAHTtsj^()g!$SSL-Sh3P zU%$nU_x`Q2A$Iw3{H~&*(ix<*_YEDcxly|=k7TBQ}u`l;kL=xg8VJaIJ z%wZ?W=N$#1L4JdN?I-tq7hU~0^Cw?II;nYf@o)G0{64&srPvUOMPKUB3+Ge19Y=1N z{v|m#r$di!3+W*n7r1~EPz1G|nNuWOMcqU!Ti9KY->xP!c><-15k@N-Pv-ko&Kk(H zBT&vclX+Bvm2rNscnEVBzu0pF{^pJ4jvVtp%yPAzXw%1^DQ?s8ZuEqqUc4z!x5-#ePO&X|u~ATkR~Oig%u+~_xF>7RdP&JJkU zXF^wZ%OVV_T1~oqsf*sl1fAC2lCAjRVbpM>_N{rDJ$OM8*oO6t8Lf%AFY$mI+*fbe z45%u%$1kaLMhMdqPaYua`v-NbNE6$Ie)E(*qURUNCFr3+T8g0=1)yrhv z=WxMn6WM<_M)D;U_2>Ggg1+Xy`F&~fD_T5}M?h5<>}1->kbP+C-5qDOlvsH4=4{ot zjW<}ZvHFbi0+!1b5h%Xa`f2nMdWpUVHGskDLOB3k!M!QSD2=c^FRJXLldb~e?{)ogG=%-bnim@q$00&?G!|fB{W}?l^(#Md9AnEV&j$bM)Bh& zByZU(&sgsvjT1*_m5!X0JRVu0{Xv%(utHS4uu<9XJlX~@S)uuA{_*)N-Fe~fGb=Wq zUcj|*oWpgp@-(76$&|-SAtwdGP)jf{hUYEJ<0`5mGMuLP# z_qJSNnE>cYHh#PbVkmLDdrER3`o$@vB`ywq|LI zMXFAdYD0sQ+I@w8YysExC~(Mb?>^0pm#8D@8nQp%mSo1GAc`#TP`zfktL48tT0eCW z?t>Ln&;2OUXwm(95+p48edcTTwhuSvKMLQrU`Yu28U-mMq=$7Zn$7t;Q2aH>or5Xg-J<)_>Y7xR5ms#wAVRrZ92tvFUpK4HGkB z8|p#tJFbt^&1tUg`q%&1?f)6X`cX=p*uV8zNhoa_+C3d0op1+tEt8r!NY2>7=T8^o zSLHcx9$UZ#VYUNbNkqO>=;ljcx@$3nc`b~{H=sa_(3XK~!!L52SH10He8t9UqXP># z@w*niRakFfL0xit|BohEN|dFw8GyZP9Fkop*IOOArS#4g{qJcxrC_si5r+-Ma0y{T zdL(@!{$pHTEZJ~WZ$n1}B@w-BZ#;KX&Cg^rz0TiUx_|$bt2|LgZ98u~+Evb!<~zz~ z1k9IQU*?yt2dfF8;!ObqDQKSx!dDl~vjv>bn!gYr%%vT(`IQWSUaznRQO|5AQ-Iy$ z&WCK1vn854<>&t`TzBx&M{`0m>1l`^7N#c*d_&djfqp>(y~)!LYIt2ON$02uL;}tc3dczb;2X(%umi|C?h)%WkTMFUoDmMu8&8__ z>gHWKr-ji>MD&@K8cI*0yg|HW!ThZ)1jF?BVAskw0Qyf9uE{7>zq6ee^C6xfML_(Q zk^b+~=*DfvH4z$~4ydvN_$lq%uqn=PS?l@VY~sDYl4=@mR+p&LChF#UYJiVTDF>}Uz0T0Pq=Wdig;*2y1(Z0N;B)=h07!>sd66faaH z8~AT{@cSmsukFiq0(->Mz`e2HC3>Pv1R`Qc_^x)yo5_n%@>1ZRNwg7}YXi@$nt#)| zN+2^)>wUz*>+zCs#!;SaB3cI`y58glY``0Y5(j!kTP@O4KqqeOKTt4P zpIo@wWugd;YtcugDo|?dgWo2(SmSaQP+9+l9r^3pdaH4C5eT@e;A`z9hS_&3&JqRH z3d(}whb=*Jt@gjwC|g7{%dc)hXs&&5Ve#0Cpo7^FXA_KE34w*kutB0THkn0+oK}`8 z9t`2Q1BfSne08LgMLLHVRJjfm9ww0{gX=`fz30NGmnlTV1f^DNpa1#iBS(VKq_Y`< zgh9#2bByHHY+r$<3z~@BwNHWJ5kmt1e)tw_tC~XE>4t;iMw)CydJ_f9jExJ;*@mmtv=53Yt zCH9-Q{`7WH|NYLeRxbqOGIS8*$VUt@nWovfXDi3LnUOm#D+yD+kjwz1HE|)8*8o9y zHdP^!`}TRuoESuO9Bj#73}AZDq0>I8K?ou5q6h=X8FuqK-=$eRoP&ZS?g#S|LNyq14!S>f0&f?-2D9cB9l2FY+b@l zl}WTyJLz40U#B@Pb_A}`S5();#adU*pG5hbM9}-}ILtItm+Gb5W;dXqKdI_~KD?^= zOmnp}GwzxoG#fucS$`%WxlL=|X2CPZZr0x+Of15^W$<$%2ja+`&6^+ucsAX!&1$^} zdiEC61iBL_=bT-&d7l{Don@%WUSme>ZqT#qs5#?Jc>k)YO`bY|MB9bJcF!qIU6n*r zqN%TI(vtlGS>;7;4Lwc{rI}C5q?W5dD(V0fsu1+jB9O~iMcN(5;2sRpOL5ev1=M&o zec(A<`SXu)j&EpS@(`bcz8R>ZLfNN^A4LZnoJ`z=aULC-1(WI^J2w&C(E-?zK$^DE z>HE75Fh*5MC;<;hC*{2JSXc*J`^1r(7t7cmDtZUF5aP-i$u!nh(}zBXpx*VX4YSHS zcUEh(6)I)MtO-WTI8RDQ>)Y9F|c$A@Iikxss7nSrPtxGe12LoMWJ3oIe?3f|PxngCT*& z2TjGkcG8O^1P5+EFMOBw8+h7XUFY`(7EA=I`L#-1>SK7C*B{?@{FODtH8O1n_zK=e z?3a{Mvzf#8<7tW*KwZjzjJqOy0_W?>!L=t8kB5RwHk5MhGvQZgecB71KCZVF@e1)#N_3deS#SWFTH;H{x?FwQUC_+o{S;Ae_dtttEq0YjCjYg0*(a zFCYo*TG2$ur+>I$I}IiSyknRn3cWMWQsSA#0g-j7Dbf)uk=N~6iSb`4j_GejR-nIJ zN$=U3o+KA0VQUtA!0C#aSLAdT=RZIMFIynJ>z_U!tvItHE61l9XN3(x{{=-RJrz!U zQV74Vm~|}H*dz$Z@y07xiqCiB)i@9a*GGH(VU>@#e7?OHc1rGZg7f71PK|RT!x->L zhi$Tw+(NIK$fzb>1P^3xF1y5n*i7+O2^Z9g%l0|EE6>aVz3~XXwazcF)6OW@5^!Md z2j4sTkiA|rx5NIsrls!6s4Ny0e^U0dx}|HNlo-eH?ySDJ1;7V?13W=WTRHNlK_pKY zpGLEd9u#CN8G8&dbbR!B0FO2Y19{JXU zYOr(L6|^;h))dyNbo(kA<_rl5(f}dMgw?&7`OJi?w$8V1(hsaxpa^UmE{KkF28%&% zv<9fcW=wzjQm0)_C?n`o$5L{`LCJO_?Bx!kYyf}VZYb`Gq%$HA-H>`!akP&}%ac#e z^L`pirg~hu8F@BO6Ie*wavvf0L3_rWtx%bfV|!{q6h7>X6|>67nFhd-=qOq(^`_KJ zq7QM7OT+LoZI@KArvOfO*R%g1 zEIfsNF!M){NYr@kU=+3?A74;2OpOHHU;150^*BI@bXhL2<{Vt43?GNvaR;AQS`=oP zb?Q|&wm8qtd2eIn(%dJcOQPi+c^cHV)*xNHrlrW+0-w_K5#&^EQ0?t`6DcLd=KV|8 zXDyitmqB(~*%w#FfGkR{r^G2Zkp?s0ssq97%lq zOjB$hr!zA)X0+xml-|P-voaN=`Xfwwqail|_~D zO{y~UQxk&I^|is;2BB0_cn+<88}|6(PcW1st_f=}kx05B!ey3v0nb77DI9V~)P0y1 z@UrVNQGez!3+tn!H27M1|9IWq0={1nMgn8F@)}Xh1oW3xeY`rX$H2o(T6T1Wn25l4 zvqYL0)QlkUjF}8kR^+Zo*1m)U{zi_Qj*=yO6gn{NKyKAksc8Pa{)NDf6}ymt-_Pqg zy~7ogJB8%9^T2yq(L=4W&p*ik8-1CB7J%DmQm0=+L&D6DIXTl8v_O(S$h))!Bj~+$ zYo%>H4&#eftXeApJs;Kzjo+gW{_9A(rhGVL^trU|1g=t|3$MEfaA z#BKdp;4*iu2{daN#f@g5(7(!M%>nVJh?es{gO}yiALMAh;E+n~!<6Win0{i=gd;{* zx*8Ep7t>BV@OCRBo`Lu4_b4W(z8OVykWbn5;5U~Dx#Q^O%j`^dT64(_Hy=Ug*SYp5 z*_ybmLhw}pm^*Ksmh>Qb*e?L{`2;bTF!WOr*%fR8e>A16UEZ|vAWwwJL)%oU^UnUc&%LQ&~Wr1V&?U= z$k#4F?e7uH>fZ{Tm&*-8Er~m{uCWp8b;dj6#KR+Qa9!!5S8CYkcTZ^k$SCbZPzV*v zpV~WM)6}$OZla7(`&q&tgFM}F|6&y_=vP+#)A-={=N$H*h^+<*4Xgead(Zk~n+S@o zHme^K&?YF{F7sgv@+rAau!;NDrRxnb=P}OV{uB&HSHFkdz~<~-b0Xccfs`N9>%Yl=1;C>v7TU~LuiHxc3f-kBPfX*ag1<8Qyd;vC_vFMh6Wcpdks(joM0u}@sk$=o?`a4&Mjx$% z*dYRtu|f$V+Xq2BzTQ!i*7#g304C9a=Dz$aN~*Q!N(LnISiR6NQ`PVh-8(-Pzx6or zUs?NVEzzbH(#~4ClJ$7jRI+v^x3E1SbwJKD+WT7fB+JF5s*NF2 zjlJjd55^>4wbVK9l&|n}elNL--6_iK%*5B|7OOz?w6=O1xd1y*`90|z2z4v?`C`}& zvTG6Ha?o@ch}ZyLCKy0t*hDfwP*7Eia5D$(ah{$~ON^~LWfIOrc>i@NWT^0Whyj@r zGO8epDg^7uUrz&tMIo-ZLr6i>Q{^RyNl+1DW4Z!K2PR-)d1$QXYq3=Gz(w)j?{xCg zxHW-P1x#7_2B74(qv7Ed_WXjvpZ6HImmjek>i~$&6SLoq1*qy&Q{@ME zPo=SECL&W~5|&$K_ELHF3Ov9zjPkGwe;REI{nzdAKjx{XOK`}zr+2!HC+PEO5j_4B zz(*o9W7@xohjl+#`LfkaD+s`(cwbDwmRrNz4Dt%@*ag7mTT_0ZqKf}!PgceQcVeu@ zDKpAD;y<5vAp4~H`x8UKZ>-xy_%tTVEs@*mTQv&IfA9VEQeu0J zv|S?xo>V_2RQoMydXQeN2Qi9i9>E}JjbL0;HGg8MN>P;>qR(FD1gXgdl6$17n7?=TZM;Me$x_2@|sN2!!0PtTA`RhlBfq7q^%c}cg$nnHwJgEB>v@L0Lz#^V+>33*OOL?^Y|&>IE!CPyLL9H8};kv`6mkfIs7$Q>#czgkY2s#%vkuJQe`z8-%ab zGRZ!q^Z4WY-qnl=i^WfR51G0Gh8#OP#(>Qs7Ku%)J~egv}2t4ljiFpg>J_; zP~*DMz>6dT>Ml`nF7fNLBm9(I87d%0>hgc5UQ zADzl{M8bU*>-Vp8f3?-f{~d??_QReZAKuVpxyNUp9{2%fnX}3j-yt#`9y42QaU8>miSZK=#dT=Ix^6ocY#T_K(Exvtg ztYh`jEl&Q#s0e}&HsRjgTL^2@?J0EjVs9apcgr6wN2V6}1I6cetdIZhn5#p%oIYrU ze7$4ef)e6AkRA=3KYd?(%oK@G{HaNlX$>_(e01fS3#5~Psh<7X3wOgbK_x)M> z4F4)%x0jQ4FCz*M<~K}#Do~kU$wM)5b^|ihd`Z0vuV~H{%=}OwZfH?b%A4`-iJP48 z6j+;+8I7l}#*p87fAKBK7G%Wfg!a+nNWJcG=Q_Ovm(ypq_SgBl_tSWH4|{)(|M@l4 z{HYw;7?;NcMrOPWq6v-?j;t4!dIudjqc=eUeJ(C0P#y+Zre>N;Qv^QFPu;FL^=C|t z#8;i>frP{~`Or)6JMGBO>HSsu^t@hw1)GAMdu$D>|M~7zsyR__GZ*_0^DN`+PL_?0 zSpMDfQ=r{JS!$~F#)GO-bJXhEwFVF>dY7Q=c;-weOTp_!mU%0<&E7DE z_*G$&7ZsVak^3-$xH38 zGb+_H0Mm4rynDBfimU7i`T>}Yy;)toNO;30pREr|FXIovq0#gj)uA@%8JzHc@1<%; zU8_Z%;s`n8n`K-~QS>jFtkBH&jlQ9y-wGHwBKpiJdp`NZfX0>&O?`LlZ@y6`jX%RC zFlZvTFIG9jR*~IwopjcS-5Ygiz`<)*?6LGWf(qHEf{A_Fcc@Scy7Px5wzKZKmNMBw zY~(TkOMVx7F7@+ke?qb{>7#ZyZP&6wH%0}VBfjrta*4J8#pF`UHq3jM)y&}_O}0Be zk7WIGH`NYT;A1YMhNl6G-I%paql6H_MLhzqTaxB*;u+10(nAk6vJ1flKBLo%r{~CY zdk3j21GY^SM9hh|V4I{{NZq61x^`;&OZK#NCAw7R=6j?H`;I)K>)Dj!#%9m$=`|U( z%3&WEV{)SFwDq<9dA;B3kf3Kc0gLU>!gK+XSxVxzG!9|yCCajK$zY+1$!0ymxcXhs zHeWpYhib0uxfDVLX#4Q_aTt?7MxAM2ADFJF7& zR>}O5X?TmPE)hE`a3sCXU$^sf#ntx?E|K%cn%*T#m~E@FMnfuHW$&S&yE<$+b>GI| zowj+BI%{?z9nYh<*wFYI&HTsKBdFrdHlB@Kqozi`+-n7k?uCOAh#z!Dk3-IeUV@6l zxI1~fG^b$gVU9?y+VP?-vwLJOpf&lB?&smGm>svpqH7vk%N6&&^(WpNyfqv>j=-AV z6VE%+8T@GV_Nf%Qvb#PGx6jSm8#*pAm_b-lPQ7j8eM{n=Emu1|nzomKN12>**#4SJ z+wq8j=8`ofp<{eKIq1!f>FwW4aO5v2sTGKi$@{cQ{xIXiUbm#yNRLDPc;;z0E$Ob< zXxbe(KE-sEX=gXV*w4mBzt&wB^Nm6jVW&HscChlL37?yP<>u&?^Y)_)FrEP^`mfNq z=jbyV(|ZSdfdcT};xXa!x~!pnE~YSe`I}wYTqEkvN9>JjT4)x_UZ}?He z-e+Q}D-J5d-(O2%S9Xt*B|T9Ht$TG6sp4fjTMTYEhrc@p5}r!fyOO6|G0X>L0TkGD z6rv#%#-BgY8TdzH=>x8?ANW)u<@9RY+bI`L9}tJ3iK>5QWwy-))miOXF~Qv>Q~nB_ z!llKbci=NndTwkCz|YY!F_%5Zr^ZQempzwj$JfBn9JGB*EnikVV`)!}#xaK{Yq<38Y3~R+Q!(yjF`JjO7KC`1i1&>}|^FL2)Qxv`_K6@EWtQPHb z!#w`!1rV@UD<5jy*z-qtE-6RJX|SsZ4b9W8lnIFfHLW#wE_Ovt^VofAziY zWApc{CRH$zWbTya=p!5P3>%Rshhw>qPT9v)R=CQ-ll)*FrZ=w`K6N0{w&7GQo>iBX zk@JM}02F-O-{&y&SLsA&{BAz^8?w@J`TNoNq}E#92|9H)#436GQb%gp=E`ecr_shQ zOj-Vk%u`A8wRBq%<7d}=ce?>sg|F-ayQ!{Rpf+S&g+tsp%K2b_!`{ zofk8CVE?D9>rk6qs6=AG*YAhx?|(z%J>PvtvFRGcEZprW>DzEk>E zW#7nQ2~<;Q@AXM)5V+|JRNGdxOU!Q#52imK{@@cy@!FO5tZrb-%^AAuHX89gD>B7d z#cj?+{RE)KeP42ZU5^A0PGWj~K=tO3OWSLe^YQ2v&0al#bJvA<=KX)|eP>jZS<|gz zBL)UV3Bq8QHjx?x0R<%J&>%TV#zq7Q4I){I;tVQzP@+l@Nh--ENe~bv*nl7)2uM(D zrIn!M%&o&X@At_!OSpHf`{&+%|IEAAFwp%x=Tz<5dsh{aB6}B2#JD`KX=}xYnv|swsXUZ7xJeuXLadW?J1regj+mz8r@JxW2a%=k$u%k{^!X zNIQdxx6j?OHatHKh9Se5k)2_&pPJXdWd!eoj0IXS(G0dVz5XxMeRKuq0h^+umkNfv zagp3hxGDvMY$UI?w{;%(j(7jHvvb_{O%^1il7co~V?iVN3y~{(XUF0%mnSadWDY1& z$`fn&Sz^3k$@@KLup_g^<+K_SSzp#3)I3cD=K;U7!ns&0N|1yUJx|2CQ;_pwZ9^QU z8({tnVaG0CZZF*8smBgnYN%iygW=727!@=rnhNt=RpTvZ-hPsfLO5Uy@KvhQOYwtt z;0SsWc_nbZ18y{lU*5}G1HX>Jtjz35UlY0K+R&AbDhsu6~D$Dc7$xr zqjX2K<6yk!jUjLu4)lOj{<{CAFmpzJhfV$H5L2tMQ+-7;8XzPoXvzPXC!4#Qrw6Nl zkhD8k*#jogZhB^U%Q}UH(kAhG0(>;iAS_s}l^qmjKxUGY4PZh#DkV+lS~{L#pA7d} zaI!BMvhr)n1&}6q zUF)ABxm<^wLGMlilg0h70m`^Mom-%AZT1>egCGXOX9(^9CYph(YUGlJVXvt$!?pC% zX=!eT2XgHX9IIkRq$r~Rg`j*g-lavI4)q?p_t7)#3}XK68J9rrwT?)#xJSlvBYm#6jj*LN7?A#R8m*T207kxUj z!a-bPzks}Tc4>ai4VL{~BX$r)$?>jpQ_r`ns~{MC>=RU|s>r%=H_HLWdPgMz20jSh z1$Um-_$@j%K`(sJSl~fWcc^G^rkiCoCE-EjT2?p47H=5nY2jt4h%tNu<3If#p-SrA z+l?!uaRZ39vEzep2Eg2Aa|Y%T%nwsRV!(}MzJ$x^Fa(O7;_=*6@LF*GRi1ij>tac1hXA1`@oml zGzM2F84(&3qt3X394<*$+s;R^pSjZJXP`gi)(oi?_`b*4W8D4)Fru4f=FZCRA(nNk zev3g*NWC;@G`V0YJMsy6JGIR@ZE|Zua-MHf7E$w<=eIn<8+F%)o$+S8NF3^_`B+R! zNCfFUyRmKP11!-#2{eGkJFW1|MzDB(lh?ch31qY6nwR1B$m^iHErV;THj}geh{LBl zPHGFS`PGy_1+=(UIgRs$qEX5$QsU;*X@u6TfC4ahsgYCL7-6fuK6bcwKD zHRvo1f4waNkkakLYm^E?>LfF7%8Ta$$5J+E=U~^QIJ@hJE)zdlT>|oY5)8^Y)bn~` z>aX9KUMQtel=bI7>y;@Xj!gn?O*8NgZH_&H;5y9T{~Q5%mZ$jnF6`l#_Ry{fBNe=O z&=9lwY67^LsleKzY53YX!^pqX0Yt*>PY&6@Ut0DQ579kBbIo$WG{H9HAEe2bk*jq# zOGXVq%X`aF0D;Od1KX%pSRFEHF8oUNnX~F3t`b)F_SnJB|)q=GY}_6l*N4e(BdGZ;`(03OQV0CKk{ z*9b#9fMC@ri`cPe53(BtM=2$7O|6-!XD+J(ThWKAvb~9*@#p(GFN| zakD~Nsn!m78=fm9Y_n$gpT+O4{@MipMJ!4jRbL0d7&dp#>1Bl!<(D`TA;y1ZZbKl69~DKrbGFghjLEMN=_IQb=w zkJqzRVjR=~nLEUMLC!6i{QknP4=Z;ObzRL8}3)c=D zko2+>T7ZnH3Kl0dgs=$qwN-YH-(97G=R^$}MmbYwC4`QWZ_dL=8}*y&r-PmZrvDCw zw%KSH#KU@FwtB$K^`)h|_#t>u(K;+xvGC;!E+X{H@Vo?oa_u)0$#%e57_7hNx_@lO zu}o;i3b8zOdm7&K6)Z%QiLFR2@z@i;o6<{FBH1X%uX+(+xSz7*O0h+I7*0{P0qH;yild^UDvukQ9ZS)9^c)r;xfEAB2qd8GU~ zZcnz=`)(QgmG@r3&nN7Kk0eoHqqX8CMr85!0)U(T9*ZSXD`s4EMcCMUM zx96AdJ6qiG=X^kS$SR~6_(BV88k;i8Dy3F6WTISd54;KNn|)a)|AlD(AAc~Rj2^=_ zUhw$S%ESjepy&+%G*vOTKd`Rq;f|pfx4<@eY;~{M7rkcFnAe%U+!V2>le0LZNuuH|npOO7<;t%qGYUFyA?R(j%7K^t1I+5O?# zYKjUl>glpwJ9sRk5ThL;t%Ng8?}cN|EJ^#Tb@Vj@5GPVrg6d5-8Qq^v;MbD;w!8Wx+_T^dG)`!Nui z+$0xroRLbcC^P*+y$PnDPdmfl%?VB&7O^vKz>lV&I-wr+Qdk2y6Te@W`18SMaKlsq z^{Z}Tz#QQ6tgs6RxjVqDsxS2fa3R}< zKkZN6uK*2ppxswcT*XG}oB4+f zbOLQ~6Zk=Z`ceWn)nLx0HS9Ot6=f8Zakm_({s=VYmNV0KE(*E*lezsO?ZJF#Rs@z+ zEzD_`HmudsB9{($BRTOIsN}4_i}bM>)G>s%#GH#?aW9mHrLW?blB2}Evb{Mx7odh_ zXOo7jkP068v}#bcenHb+o52(kfdnT{HwkEoY61y(vzOXRfk)N^;`VD7%Z$KsOPyYH zd|`Um#WUlmH02bt)xVona1+SagBig7`<)5n;3cQ8NbvXO?9u4dvWoYs|MGzo2H-AA zBFu&hy-qS}RynMy>{Hl>K)E|~gKX|1razLu1(e@ruj!lIqT^_!E|OcjK*DeT1Z3zf zBsk^vCkCeA*$npK^52+Io#JPW7xJZdE0n)DrDqa>q+I@^AE47r@mn243CVh>6s(c# zg;a5^@aQj@NIRuMQDrphn0~PJb(AZ*kHCV9Ttih*U0i$r^~(`U%*;G&-2v7{IvxO^ zGiWSgvlZq~>DlXEKI;dS!1nZQU>lo2Kj^H>-=4BXX70l13>0Q@D7<{UL|{V23Yye@ z+g;n#w<#6P2Cj9pzshlrJBa$_1!#0}W`olc2)@m}{4o3e@y(v# z=tZR8AlAF@5OFhqw(Lv=d+A?0%K+XPTuny4&B{p$x`cDFF0CR^n25` zzLRL^WGWg!QaL#Y3N}*xRE6y4I-$(WnO&T8u#-9P+>N))YHk1-`gyz;5I4@E`)wzO zh?T~~EVp+^q@m4ymgJH59$iL(;uVFjIAsDg#fBk%smhNNPj4?ly6x#{BjCXiLhE>802)*{(zOc8lTWy}s{gZg*K`S~D1C$&u%lRAQ=z7dYIoCnc4P+O>MQrhIpVECh9#JAcjZIqBV9O z$B}gv*9NA}p^xL;Oht52Rgq<*J@Z3u#ZNMBdbAJzuFRei=l;3kR`HdpDp&fV2>EgE z4puple7^E?191C~y22&c?ExP#6vP>Y&h9rahUJfah02;I-5TnR`tH5n-LO*8_;KW7 z=5q(VuPX1J!1HQ$B=G1(<4=IvcX-2Prtv|H4>2km2&$`l%IIW=+KRs?KM1gFH~Zkdpq-WqM?MQGM)a~&Fj@65Z|$(jCu%Ml%! zpC=ApRx8yrug2Rng3Gy_>cWZ^rn>090WBfX1?e0&9~_dI5Qun&BWkzfQK<-7v+&lZ z;6E}G{90JK!!3HaEveSPl)2KgB%|JnT7hjbC*6r*vHM7QXsa4ZE<<(~0|sPFd~K{@ z?z(zd-hC!JsMu`{iEzV5n;`3H?C3uKQf=7c9lg6a2h6%X^Bneg-Eakhfo1rp z0FKoDdiH z+x6#fahbijEv(^@s5^V?Xr`ybiHoUk9=<6?ad*zWE6!~`UbI#$7cfz3jneBjwux_& z2ZVL=h+%~pe220wSQ~pUpn1mpe;9dRfyjmR`5gT}fb$RFdgpe)qCy@1KJPPwxbO4z zDV+K3TlFLww{EwNBXRC^0g%6um+t_h%$v7a&fmWcVm^%HW=P(!gSQ})5qqC+yKab5cTumr*juLGl2Gwu6Ncgh_rD;=a*PU>mh4*f)z-u$52xt@5YCIsyN$ad zghFFQ5jIByvo6ADtP6AkzoE>Lb37!jJfew3xK?pOJRr9t_})g;=8HYbedQY9k4S@a zJSwA*^es5dH^mm-ycqB5tAHAaihwFzB2Te=wW#8@5aG3CEd+l_Gc;5Db^B4yHMFja zWGl?vf|OO3UHOR2%&Hu(84(e%gWtfz=!2AcpuY(HM7O3>Y`pUT1g^P4JQsKAV=i<$q#_{G1#!l1T_<@`t>zP=XJ$a8y z@(k=3Zyh0nncd~L9JL*&sh&rev$6p#*aBmcc6 zUk^4d?V*ZEY3&M*NQnc7E>)isbEu|Aoc;rD{~QRDDd4htJUELOa=d)V)H6?WKAT*S zb0v^Stqv=k%v)KHZ-ml7uFr8o9LnMJAe~~FD+)1>E}kz%Xy0Is<|S3;J1mQ>`e%c4 z;q9cNT}kzw$QOYYG*~8IzZGl3fZ7)%;Kq-d7)0LS9?pkaf_-N1n*H5Uq_1*fQF9XN zK&9p>=%0qx^yv9Iks0^dJJu;NT5~1O8(I)3 zp%=nyXkhHoWZ&Q&LRh>k;U2iyirVT}4afX;N)YR?w+qY|zHJi5YuS-nV!Q2k7y^5@52Gsi%!HXUv(06`J3dY#^ zDFcz^6Y8r4DBUR1;-K`X9h3?unYnM+Ti$Vy4{)n1Kr>8n;1Bx}#$%0E8@O4lRYIiR zU3;@*{t4Ig38f~^ukbviS7R+?gHu>5GX&<}!sX#VX3M39t<}bys{_3Cq?`4rW}C5- zs_qFQl$6Txvu{5&Ex{E?2;=U=d~!5h{R8{;7w@UW)%bnM&*j`B|GJdi#jdZxPDtp^wSSKsN#H ze#1{EdxDBMZg?eZq^)*;751zakSwhTQKWy+_BO`IN7TARuThLJg>sDqbsXsk#mKzl5@425ldfG`K1iZQ z`C3L6nSxgp2WB9FtEL%CWECV7&)os4-8J$lu18P${A7+c)7#pf?K1Hc+4~!MZPRfw ztt$nO|2&h0qq}3mQtmjCE6B)^sk6{`G5k!xHnXlg?spR(Z`-p8C@3b%r-WAci5&zH zOi_6l!b!(~2bBNX=IdS*)I4UPJaQ+Z$%i1#I?jN%>Mx|vviQ7R?4B%b>$KZmInHgV zC-6wOyLj#d*`g7##VqZ%BN@#eF+QzRyA%#}panoc-51&t_I}+@emR~8b_rDj`Gk8R z5)ZNp#yTH^OC+bw65ps&im$rQUH@7;kWp`%&EggIp*EpIwp4rIlsRXBTd>MmB&^Mj zklUlDooG1BUP`35CrngS`-0agW-hZXs zvUzY``Fg}KHFOj@4@=srpEr=9;%w()PcC#PqSDa*_o64#zm;eYG@savYZ;WRT0pBr z4GuimARjPX4#3c8$L^;(UUptQ1?*1v)@)DLJk-avR9;$aI%`|V*a7~RzamZr5?Amz z&L|`DOwp}Z9Jwkbpgm0Dkkh0#>TIP#l5AMm+H<}IHB-Fb(kqq6ZK8V~(6~t<@y^T9 zwF1aRR{I2e1eVG@mXG$*{W=16C8+5G(s?N9Dlp*3UpYO;7H~QHO)aX7YfX_tYthqQV z&eaw^Mr-E+Pqgd}=LO}F(=GEGiiR_@9YW6-4~tww?w9($s;AH+ z)C5Xd>(PvXQMh~5QDfAR7+>w`Xc~SNkyP5HT-xTi0Abfx*b4`gl0-WYl7P4nSY`b# zr`f~cqW*3*>|gszmBaFQmEO<8L}j%w=5r7u2A_3h{Em#-XlZZ?7!FD=36Y6X&}G0w zf?GV(SNzS|`<%P`q`H&co*pU)s4vL@PXNJn37i3|zDk(y7c|FZLQwdWDEU1kY?H2T zz1MyqjO@p|7QiN}2jUjy+%_04ykaSIU?g3_F`+Jyio)$b=W@rQka%z-^Mw<3&;IzX zl#=wvY-iCf+9*L$DCMUcj)eZo02j;h7Fec#O^yGYV`7k4lhWc}p6Izo&0cUG=$uKh zBtoXbM`%=T-$%(wgk8Bs9Qw$&%i6tH=?Yq7+}L)MI(AwtuDPuN%=$PJD2V*tg*`pz zxh~Kw5$d%ETlHDIm|2>POkX{p>bjn%nvPStmXY&Pf+zk7f9p05Kjgq$!sQ@XigXtA z^A(IVSeCLFTpCCf4=sO)9061y$Ih#5e@bM=96|ISn4ikpcQb@}@myJ{d71Ig%UV|J z?n;MAk1o!aEk+?dv!b&>q*=up=40`XRYvdVG$FDFjfDEl-79|A_qInMJ1uK}*!weJ zV^A@K-3VIYy8|4Rre$wCiba-2J`dP)6LFb+C6Q`fjWr=n(K5nGsEno}8V=5<$34l} z0Ujfz)Jf7;tk+Th$r$Ju$jYnHAG7X&zuN5RQS3-?nLeM(?~0{f1b)96u$Sh=&Z&84 zm?e`^vw_8+09jkl`O5np2QUf1gr%r@f1l2~D(O3NrkV@0+Zt>z&m+pRnBPS1?z~3* z<>w|2Sqr+#vT{AK4FAsuzQTBnlwsI3>}OHAyZD~1u6Z#}0qVr5lo~WFHVp@|BBiS_ z-;23!d%Hp;?2KJ~Hoa+5 ze!8F(!??7HHtYCFKL+Q1^W+F!B_v>+nb02wV~9q7V0jRn@`A=F88|v0<6lSh!5ptt z$Uw!1M3j_+YbPIGaB5Q&Z{*DkGvWTQO|@EF?hHLGnhgA*Xoa3rCjZ=9yc0{m{pyj>caXfli&1kb)K&A(K;m zwStDGI8oDlr#nolx_!1t^19afu)>2qX!6)cDlCKSI(D8*E+xF%P~0@N;2Yd5gEKXc z!(a2heN(T9@ryXjjE}sJz>=RN_QFGx_Oz-5pn3Yl`$ncS?7bdZTujfqQ=ej?aXVz{ zCE8%+$ETTT0~ZoER;lRYb;NL2`rhqR@NQbMkDyU0Z!GT%x20L2P%IOM-}0Bh-U7$J z&SBIeeWLO_e7u%N+8^P1e>lVswHK{c-2`y&80=B^Rs=JKo&->bw@jdw$e9zSA&nkm zLeHILGM|Xr1@B4 zBRIMXfFYdfgcKGWU5%NJ@oaev^cf-g_2Ye<0kmJsV)w!~K%# z;!}6KoFtw^4aT)=_rNyO)@>g^=@&HTFyo}8xEGZ<;7HYSx-p9j!;9ygE#eVp`mV&G ziO>^VHR{PmfAyDNbqD$-Jb)`Vnj!Cm3d%`h=y4ypiwYl+NPS4!tAsvh;ztJs(3uiD(ak);&iX=~fNCm}{)oiide z&q0x>0^ijBUH683f5xROHUWb;#;70>TJzjyorJBy1l7#~k4>Fyx#Yeo)P*%Lv2Z8= zVH4vFwun@EHvNP{(rQo<-A~6DV*EcCg^wGWhvC5;A{K{~GM+2$oFIp&)n1`bY-vZK z2iX0-(3x+UXkg!688SCzT}tF>cd7{FNfvT^EWkQyEn&eCHKJ{rtWq@R4X9IPej_4~ z!KLpEeBn7ti7vrw+#x2V`VoSF0YL&?5gP+VBTPC~-vFI6Sr<2x=-CO(OPn|Kd9q){ zYap^G%A&mkhTb*#%(wZldMn6LA3`}Ij9>qt<}#~+EqRu$XL<;<;xEOT`r$WIWIYMB zxKak@qo~a+Qqbblx8ifC)Ep$oAxDVa@cjpey{mwNXdaj}Ef!A&Xg%OwOq}_-+|x)v zPA2zWUxu053*~V@I}9g52Sz68Q}ym%J@Alz^kkN0UAqH8f*e7n_glUpzu{d$HLS+o zs_NZee#H$1I~t`^rK5Ye*(hMR0Iz+bNAB&LVaSIFHjK>o5==O#rz zp+2W=L@H!2!S;anF#x{58MHNcPvo$0TuUr5D#U-)p9>s587>m&cs@)BDC-%$S~n>l z`|#92sW=$GG1^t%w=i>FWOskUp6mfqZOWT_Z))WOO)ICwWqL2KYl74fM^7KZargk< z2P4)E)Oqk-Ts&n>6*xSdpEu~2C=};ITVXN~$eCUHR|+jhd^^^&jo&s6-o3=)BAdA% zE65YVh)3}&ol^{FDFW?Bd+uB5E3=U3hg@q|VuG;B8sR#D!sfwjPfvcUo)}u_?cTw@ z78l0MEnJyPWZsttJ+LfF`IV0$IOSH0K9AlY;lJkw62{avF zOqV{>gjApWXA96$W;u`c_;r5i>nH?cT}qAEIDjAa^TCXQ%x_<}wNjr9eDM&es$4+L zkO;is4AMByVwF`fm&cQhb?eyo4`cf@)iY#Df0dG2%<;4XQ#2J!mnujS-^3VtY~&=G zskCGxmSF%ANPnUj`*Bbwu)GoKrBMS7qiGJ{J6sBDSD;L0OiY`+eG(beSm>A^Hwj$k zzT!2qzmXj1Z!3V0^pYvoWP=uE#5>&-s;bBk31 zzeZqr;)XptYFY^m!(&b(qY4M^*7V=7XYMCK-lG&lPY~N3d(XaK{fI((=38vqbWdNR zI0J!`ibl@h<&%)vqboaI@X8vje*gW{I3+})6!eX-14o=;yMUwyzKqDSNSTl|2}o*Syew#3C%&3JvkO)D!*CGcH~xWUnj{$UOUBS+=*| zK%IgEkt4^#z*cu+JTGtaMH}{k#;9pXUS5~3%|%ZM;AJ(;GsHiq-P0-|gx~m*0Ufj4 z8Ib3wP{YcSJ4nhi=SqJx_61H?Q{X zNg3Q*lJK9*A6}aT=JDq?o-km`L&28s%u#5aO-36Y{fs&+*7Ic*dY+C>*m7`?#Dgcy zEj0c-dLC+|yXhQ}FjK~+S9 zXv!}tdPzP=X1ayyL5tB&`9NV>I3xnm?9Iezp8LDih+;qm*I) zgmmsl696(TiJ`U!P@aJhe}ClJfto(GVagQ01i7?QT9llCzf_3UZQQV4hTfq;wV-1*7)?FS7TLMpeFr}lh!%1M`$n$5m*a{Q;sy-I3U~6DZx@^d| z?*4E)`VC)WSg#KlAa?1@yk?R5&mEKHe_{cxo@n1Vd>mEG@f^NsC(v_Ffy`7~_z{}c zgiuvo@5JzPWVgf0_XWcY{jtCIQ@5D(LOxVsRuKV{IqOW!Q zq*r<@Cw&!*78=D}_Ylf+mb`7UUG%ULJPb+g=cB|?n-ye1{(9)<=n8RIVYAjeE`i1H zABUIcM+`PQE!7oVCL4J_Z>;(Gj=}YEvZk*tXM1oXFzXqKfu%p~gN|-6+94M%zKcf} z{m-jrMud8OZ%i7aADgP%zz^PS>#w~}{l?LbN-FAxKy>Qeo)x+m4zMg)TQ^cHN*I=K zb=t#n)PIlc>SF-0l3@q+Uab^x=b4CZzoQc70c}x=j_1NRSZW2kFObg5Y|6#t;*yoyAzD1ug|b&tZ=jbJ`=K) z@IiRji|$4BIJ28;PG^v+wWC1ze>%*GzKPuj;2+q3P@a?O^}cnWr7> zWigI+u$M=z|2HFcdw8SgKeGUSI0Cfjy)4<%qWAKoMuR2Gk}VCE{8vW(JABe$$uhep z4R8ODWngg^4R0@ttF%ILSusU}A~Yzn>_{xTG8<@6ga$=^>V1OcZZwAE$4f+mA~Yzn z44p3LJZMnl$1Agk21RI4WZ99RL6K!gV)^s=KVU@`%SUavy~oQR^`F7-T-AqoP8Wg~N;|p?l>IwG z*#bYih41t7bF`dFSxQ!W*e>t~9IsrJw0Cjq1%7vZO@>u{h)0*tYBKV!N+B!%8 z&jKX=^#d;dir4A60?jlWmSx(1PdmFXT!FiETUIB$@%QSp{1LD!A@b{l&z9>g!jnOj_~&jDN8%Tf8P{eS`_{s zOKDN~dn~0z;qP#O1|+^C3L2334w`5{;(LKX0}?bK@na1_0}}s~9yB090}?+L*)$+Q z0}?+nK{Oyi0}}t_i@&Kc8YA(YBBTL{e+~u>NYH=;4M_Z}azJAwXpF><2ZP2)&=?6C zBe7fp{yTxvfCLRl(165``GUqs&=`py^97BO_^0sv`=-zsiSH4E#z_2gFla!61|(=e z;{OJaz`f<Table Of ContentsGraphing Example

  • Table Manipulation Example
  • Slide With A Shape Example
  • -
  • Slide WIth A Checklist Example
  • +
  • Slide With A Checklist Examples
  • Slide With Some Bullets Removed Example
  • @@ -1620,9 +1620,14 @@

    Change Log5.2.1 +23 November 2024 +Checklist items can be optionally coloured red or green, according to status. + + 5.2 18 November 2024 -Fixed symbol resolution in footers. Tweaked RunPython.ensureTextbox. Added RunPython.removeBullet, RunPython.removeBullets, and RunPython.removeSelectedBullets. Checklists can be indented. +Fixed symbol resolution in footers. Tweaked RunPython.ensureTextbox. Added RunPython.removeBullet, RunPython.removeBullets, and RunPython.removeSelectedBullets. Checklist items can be indented. 5.1 @@ -4680,6 +4685,7 @@

    Running Inline PythonContentSplit.

    +

    An Important Caution

    The support described in Running Inline Python allows you to run arbitary python code. It would be unwise to embed python code of unknown provenance. Use only code you directly write (or, of known provenance, embedded with mdpre‘s =include capability).

    @@ -4773,7 +4779,7 @@
    Output`RunPython.checklistFromCSV``.

    +

    This function is used in RunPython.checklistFromCSV.

    RunPython.makeChartData
    @@ -4822,7 +4828,7 @@
    OutputTable object - which you can further manipulate. -

    +

    RunPython.applyCellFillRGB

    This function sets the background colour of a cell in an existing Table object.

    Input
    @@ -4838,7 +4844,7 @@
    Output

    +

    RunPython.applyCellListFillRGB

    This function sets the background colour of a list of cells in an existing Table object.

    Input
    @@ -4873,7 +4879,7 @@
    OutputDrawing-Related Helper Routines
    -

    +

    RunPython.makeDrawnShape

    This function draws a shape from a set of vertices, optionally filling it and adding text.

    Input
    @@ -4894,9 +4900,11 @@
    Output

    +

    -

    +

    There are a number of functions that can help you make checklists, including pulling in a CSV file with status in. +These checklists can have ticked, crossed, or empty boxes - depending on the input data.

    +

    RunPython.makeTruthy

    This function massages the output from RunPython.readCSV to prepare it for input to RunPython.makeChecklist.

    By default it operates on the second column and

    @@ -4920,15 +4928,17 @@
    OutputRunPython.makeChecklist.

    -

    +

    RunPython.checklistFromCSV
    -

    This function creates a checklist in a textbox from a CSV file.

    +

    This function creates a checklist in a textbox from a CSV file. +The checklist items can be indented and can, optionally, be coloured to reflect their state.

    Input
    • The slide to create the checklist on. Generally this is the slide object provided by md2pptx when your python code gets control.
    • The rectangle to render any new textbox in. Most likely this is the renderingRectangle object provided by md2pptx when your python code gets control.
    • The name of the CSV file containing the list of items and their statuses.
    • The index of the shape to try to use as a textbox. This is optional.
    • +
    • Whether to colour the checklist items according to their state. This is optional and can be enabled by coding colourChecks=True as a parameter. The default is not to colour the checklist items.
    Output
    -

    See Slide WIth A Checklist Example for an example with the format of the CSV file.

    -

    +

    See Slide WIth A Checklist Examples for examples with the format of the CSV file.

    +

    RunPython.makeChecklist
    -

    This function creates a checklist in a textbox from a CSV file.

    +

    This function creates a checklist in a textbox from an array. +The checklist items can be indented and can, optionally, be coloured to reflect their state.

    Input
    • The textbox shape to build the checklist in.
    • @@ -4953,6 +4964,7 @@
      InputOutput
        @@ -4960,12 +4972,31 @@
        OutputRunPython.checklistFromCSV. In turn it calls RunPython.doChecklistChecks to do the actually placement of checkmarks.

        +

        Here is an example of a checklist array:

        +
        [
        +  ['Retrieved data', True, 1],
        +  ['Built databases', False, 1],
        +  ['Analysis', None, 1],
        +  ['Architectural Introduction', None, 2],
        +  ['CPU', None, 2],
        +  ['Memory and I/O', None, 2],
        +  ['WLM', None, 2],
        +  ['Parallel Sysplex', None, 2],
        +  ['DDF', None, 2],
        +  ['Batch', None, 2],
        +  ['Workshop', None, 1],
        +  ['Executive Summary', None]
        +]
        +
        +

        RunPython.doChecklistChecks
        +

        This function adds check marks to the checklist items and, optionally, colours them to reflect their state.

        Input
        • The textbox shape to set the checkmarks for.
        • A list - one per paragraph - of checkmark indicators.
        • +
        • Whether to colour the checklist items according to their state. This is optional and can be enabled by coding colourChecks=True as a parameter. The default is not to colour the checklist items.
        Output

        @@ -5133,9 +5164,9 @@

        Slide With A Shape Example

        -

        Slide WIth A Checklist Example

        -

        Here is sample code to add a checklist to a slide. +

        +

        Slide With A Checklist Examples

        +

        Here is sample code to add a checklist to a slide. Let’s start with a CSV file with three lines in it. Each represents a task. The first has an empty completion cell, the second has a positive completion cell, and the third has a negative one.

        @@ -5181,7 +5212,11 @@

        Slide WIth A Checklist Example

        +

        You can optionally colour the checklist, based on each item’s status. +You do this by adding colourChecks = True to the RunPython.checklistFromCSV function call. +The result might look something like this:

        +

        +

        Slide With Some Bullets Removed Example

        Here is sample code to remove some bullets from a text box on a slide.

        ### Here Is A Slide With Some bullets To Fix Up
        diff --git a/docs/user-guide.log b/docs/user-guide.log
        index 7c69086..d41dcbe 100644
        --- a/docs/user-guide.log
        +++ b/docs/user-guide.log
        @@ -5,8 +5,8 @@ mdpre Markdown Preprocessor v0.6.9 (17 September, 2024)
         Def mdpre_date = 17 September, 2024
         Def mdpre_level = 0.6.9
         Def userid = martinpacker
        -Def time = 14:24
        -Def date = 18 November, 2024
        +Def time = 13:52
        +Def date = 23 November, 2024
         Def TOC = Table Of Contents
         Def md = Markdown
         Def pp = Powerpoint
        @@ -317,7 +317,7 @@ CSV Stop
         ..... ..... .....  Graphing Example
         ..... ..... .....  Table Manipulation Example
         ..... ..... .....  Slide With A Shape Example
        -..... ..... .....  Slide WIth A Checklist Example
        +..... ..... .....  Slide With A Checklist Examples
         ..... ..... .....  Slide With Some Bullets Removed Example
         .....  Building This User Guide
         -------------------------------------------------------
        diff --git a/docs/user-guide.md b/docs/user-guide.md
        index 9c3bc33..fb357c5 100644
        --- a/docs/user-guide.md
        +++ b/docs/user-guide.md
        @@ -302,7 +302,7 @@ As you can see in the [change log](#change-log), md2pptx is frequently updated -
         		* [Graphing Example](#graphing-example)
         		* [Table Manipulation Example](#table-manipulation-example)
         		* [Slide With A Shape Example](#slide-with-a-shape-example)
        -		* [Slide WIth A Checklist Example](#slide-with-a-checklist-example)
        +		* [Slide With A Checklist Examples](#slide-with-a-checklist-examples)
         		* [Slide With Some Bullets Removed Example](#slide-with-some-bullets-removed-example)
         * [Building This User Guide](#building-this-user-guide)
         
        @@ -431,7 +431,8 @@ To quote from the python-pptx license statement:
         
         |Level|Date|What|
         |:-|-:|:-|
        -|5.2|18 November 2024|Fixed symbol resolution in footers. Tweaked [`RunPython.ensureTextbox`](#runpythonensuretextbox). Added [`RunPython.removeBullet`](#runpythonremovebullet), [`RunPython.removeBullets`](#runpythonremovebullets), and [`RunPython.removeSelectedBullets`](#runpythonremoveselectedbullets). Checklists can be indented.|
        +|5.2.1|23 November 2024|[Checklist](#checklist-related-helper-routines) items can be optionally coloured red or green, according to status.|
        +|5.2|18 November 2024|Fixed symbol resolution in footers. Tweaked [`RunPython.ensureTextbox`](#runpythonensuretextbox). Added [`RunPython.removeBullet`](#runpythonremovebullet), [`RunPython.removeBullets`](#runpythonremovebullets), and [`RunPython.removeSelectedBullets`](#runpythonremoveselectedbullets). [Checklist](#checklist-related-helper-routines) items can be indented.|
         |5.1|26 August 2024|Fixed failed `html` import for [Numeric Character References](#numeric-character-references).
        Added Python functions for [checklist creation](#checklist-related-helper-routines).| |5.0.2|26 July 2024|Added optional `columns` parameter to [`RunPython.makeChartData`](#runpythonmakechartdata).
        Added [`RunPython.filterRows`](#runpythonfilterrows) and [`RunPython.transposeArray`](#runpythontransposearray) support.
        Specified 'UTF-8' on file read.| |5.0.1|14 July 2024|Added [`RunPython.alignTableCellText`](#runpythonaligntablecelltext) and [`RunPython.makeDrawnShape`](#runpythonmakedrawnshape)support.| @@ -3677,6 +3678,8 @@ This ensures the second shape (in this case your Python drawing space) is zero i You can, of course, extend this technique to multiple shapes on a slide. For more information see [ContentSplit](#split-proportions-contentsplit). + + ### An Important Caution The support described in [Running Inline Python](#running-inline-python) allows you to run **arbitary python code**. It would be unwise to embed python code of unknown provenance. @@ -3789,7 +3792,7 @@ There are two use cases: 1. If no shape index is passed in this routine will search for the last textbox shape on the slide. If it is at index `0` that is presumed to be a slide title and a new textbox is created. If no textbox is found a new one is created. -This function is used in [`RunPython.checklistFromCSV``](#runpythonchecklistfromcsv). +This function is used in [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv). #### Chart-Related Helper Routines @@ -3848,7 +3851,7 @@ This shape is added to the slide identified by the variable `slide`. * A [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object - which you can further manipulate. - + ##### RunPython.applyCellFillRGB This function sets the background colour of a cell in an existing [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object. @@ -3866,7 +3869,7 @@ This function sets the background colour of a cell in an existing [`Table`](http * Nothing is returned. - + ##### RunPython.applyCellListFillRGB This function sets the background colour of a list of cells in an existing [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object. @@ -3905,7 +3908,7 @@ This function aligns all the text paragraphs in a table cell. Generally there wi #### Drawing-Related Helper Routines - + ##### RunPython.makeDrawnShape This function draws a shape from a set of vertices, optionally filling it and adding text. @@ -3926,11 +3929,13 @@ This function draws a shape from a set of vertices, optionally filling it and ad * The created shape - + #### Checklist-Related Helper routines +There are a number of functions that can help you make checklists, including pulling in a CSV file with status in. +These checklists can have ticked, crossed, or empty boxes - depending on the input data. - + ##### RunPython.makeTruthy This function massages the output from [`RunPython.readCSV`](#runpythonreadcsv) to prepare it for input to [RunPython.makeChecklist](#runpythonmakechecklist). @@ -3958,10 +3963,11 @@ The column number and text string values can be changed from the defaults. The idea behind this function is to allow people to create CSV files with string values for state. Once massaged the resulting array of arrays can be fed into [`RunPython.makeChecklist`](#runpythonmakechecklist). - + ##### RunPython.checklistFromCSV This function creates a checklist in a textbox from a CSV file. +The checklist items can be indented and can, optionally, be coloured to reflect their state. ###### Input @@ -3969,6 +3975,7 @@ This function creates a checklist in a textbox from a CSV file. * The rectangle to render any new textbox in. Most likely this is the `renderingRectangle` object provided by md2pptx when your python code gets control. * The name of the CSV file containing the list of items and their statuses. * The index of the shape to try to use as a textbox. This is optional. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -3982,12 +3989,13 @@ This function uses the following lower level routines * [`RunPython.makeChecklist`](#runpythonmakechecklist) to create the checklist content. * [`RunPython.doChecklistChecks`](#runpythondochecklistchecks) - called by [`RunPython.makeChecklist`](#runpythonmakechecklist). -See [Slide WIth A Checklist Example](#slide-with-a-checklist-example) for an example with the format of the CSV file. +See [Slide WIth A Checklist Examples](#slide-with-a-checklist-examples) for examples with the format of the CSV file. - + ##### RunPython.makeChecklist -This function creates a checklist in a textbox from a CSV file. +This function creates a checklist in a textbox from an array. +The checklist items can be indented and can, optionally, be coloured to reflect their state. ###### Input @@ -3996,6 +4004,7 @@ This function creates a checklist in a textbox from a CSV file. * The index for the text of each item within each row. Defaults to `0`. * The index for the checked status of each item within each row. Defaults to `1`. * The index for the indentation level of each item within each row. Defaults to `2`. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -4004,13 +4013,36 @@ This function creates a checklist in a textbox from a CSV file. This function is called by [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv). In turn it calls [`RunPython.doChecklistChecks`](#runpythondochecklistchecks) to do the actually placement of checkmarks. +Here is an example of a checklist array: + + +``` +[ + ['Retrieved data', True, 1], + ['Built databases', False, 1], + ['Analysis', None, 1], + ['Architectural Introduction', None, 2], + ['CPU', None, 2], + ['Memory and I/O', None, 2], + ['WLM', None, 2], + ['Parallel Sysplex', None, 2], + ['DDF', None, 2], + ['Batch', None, 2], + ['Workshop', None, 1], + ['Executive Summary', None] +] +``` + ##### RunPython.doChecklistChecks +This function adds check marks to the checklist items and, optionally, colours them to reflect their state. + ###### Input * The textbox shape to set the checkmarks for. * A list - one per paragraph - of checkmark indicators. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -4076,7 +4108,7 @@ Here are a few examples that use the [Python helper routines](#python-helper-rou * [Graphing Example](#graphing-example) * [Table Manipulation Example](#table-manipulation-example) * [Slide With A Shape Example](#slide-with-a-shape-example) -* [Slide With A Checklist Example](#slide-with-a-checklist-example) +* [Slide With A Checklist Examples](#slide-with-a-checklist-examples) * [Slide With Some Bullets Removed Example](#slide-with-some-bullets-removed-example) @@ -4205,10 +4237,10 @@ The result of this code looks something like this: ![](shapeSlide.png) - -#### Slide WIth A Checklist Example + +#### Slide With A Checklist Examples -Here is sample code to add a checklist to a slide. +Here is sample code to add a checklist to a slide. Let's start with a CSV file with three lines in it. Each represents a task. The first has an empty completion cell, the second has a positive completion cell, and the third has a negative one. @@ -4266,8 +4298,13 @@ The result looks something like this: ![](indentedChecklist.png) +You can optionally colour the checklist, based on each item's status. +You do this by adding `colourChecks = True` to the [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv) function call. +The result might look something like this: + +![](colouredChecklist.png) - + #### Slide With Some Bullets Removed Example Here is sample code to remove some bullets from a text box on a slide. diff --git a/docs/user-guide.mdp b/docs/user-guide.mdp index 3fff861..1e4b80d 100644 --- a/docs/user-guide.mdp +++ b/docs/user-guide.mdp @@ -162,7 +162,8 @@ To quote from the python-pptx license statement: =colalign l r l =csv Level,Date,What -5.2,18 November 2024,Fixed symbol resolution in footers. Tweaked [`RunPython.ensureTextbox`](#runpythonensuretextbox). Added [`RunPython.removeBullet`](#runpythonremovebullet), [`RunPython.removeBullets`](#runpythonremovebullets), and [`RunPython.removeSelectedBullets`](#runpythonremoveselectedbullets). Checklists can be indented. +5.2.1,23 November 2024,[Checklist](#checklist-related-helper-routines) items can be optionally coloured red or green, according to status. +5.2,18 November 2024,Fixed symbol resolution in footers. Tweaked [`RunPython.ensureTextbox`](#runpythonensuretextbox). Added [`RunPython.removeBullet`](#runpythonremovebullet), [`RunPython.removeBullets`](#runpythonremovebullets), and [`RunPython.removeSelectedBullets`](#runpythonremoveselectedbullets). [Checklist](#checklist-related-helper-routines) items can be indented. 5.1,26 August 2024,Fixed failed `html` import for [Numeric Character References](#numeric-character-references).
        Added Python functions for [checklist creation](#checklist-related-helper-routines). 5.0.2,26 July 2024,Added optional `columns` parameter to [`RunPython.makeChartData`](#runpythonmakechartdata).
        Added [`RunPython.filterRows`](#runpythonfilterrows) and [`RunPython.transposeArray`](#runpythontransposearray) support.
        Specified 'UTF-8' on file read. 5.0.1,14 July 2024,Added [`RunPython.alignTableCellText`](#runpythonaligntablecelltext) and [`RunPython.makeDrawnShape`](#runpythonmakedrawnshape)support. @@ -3750,6 +3751,8 @@ This ensures the second shape (in this case your Python drawing space) is zero i You can, of course, extend this technique to multiple shapes on a slide. For more information see [ContentSplit](#split-proportions-contentsplit). + + ### An Important Caution The support described in [Running Inline Python](#running-inline-python) allows you to run **arbitary python code**. \ @@ -3864,7 +3867,7 @@ There are two use cases: 1. If no shape index is passed in this routine will search for the last textbox shape on the slide. If it is at index `0` that is presumed to be a slide title and a new textbox is created. If no textbox is found a new one is created. -This function is used in [`RunPython.checklistFromCSV``](#runpythonchecklistfromcsv). +This function is used in [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv). #### Chart-Related Helper Routines @@ -3923,7 +3926,7 @@ This shape is added to the slide identified by the variable `slide`. * A [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object - which you can further manipulate. - + ##### RunPython.applyCellFillRGB This function sets the background colour of a cell in an existing [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object. @@ -3941,7 +3944,7 @@ This function sets the background colour of a cell in an existing [`Table`](http * Nothing is returned. - + ##### RunPython.applyCellListFillRGB This function sets the background colour of a list of cells in an existing [`Table`](https://python-pptx.readthedocs.io/en/latest/api/table.html) object. @@ -3981,7 +3984,7 @@ Generally there will be only one paragraph in a cell - but this function iterate #### Drawing-Related Helper Routines - + ##### RunPython.makeDrawnShape This function draws a shape from a set of vertices, optionally filling it and adding text. @@ -4002,11 +4005,13 @@ This function draws a shape from a set of vertices, optionally filling it and ad * The created shape - + #### Checklist-Related Helper routines +There are a number of functions that can help you make checklists, including pulling in a CSV file with status in. +These checklists can have ticked, crossed, or empty boxes - depending on the input data. - + ##### RunPython.makeTruthy This function massages the output from [`RunPython.readCSV`](#runpythonreadcsv) to prepare it for input to [RunPython.makeChecklist](#runpythonmakechecklist). @@ -4034,10 +4039,11 @@ The column number and text string values can be changed from the defaults. The idea behind this function is to allow people to create CSV files with string values for state. Once massaged the resulting array of arrays can be fed into [`RunPython.makeChecklist`](#runpythonmakechecklist). - + ##### RunPython.checklistFromCSV This function creates a checklist in a textbox from a CSV file. +The checklist items can be indented and can, optionally, be coloured to reflect their state. ###### Input @@ -4045,6 +4051,7 @@ This function creates a checklist in a textbox from a CSV file. * The rectangle to render any new textbox in. Most likely this is the `renderingRectangle` object provided by md2pptx when your python code gets control. * The name of the CSV file containing the list of items and their statuses. * The index of the shape to try to use as a textbox. This is optional. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -4058,12 +4065,13 @@ This function uses the following lower level routines * [`RunPython.makeChecklist`](#runpythonmakechecklist) to create the checklist content. * [`RunPython.doChecklistChecks`](#runpythondochecklistchecks) - called by [`RunPython.makeChecklist`](#runpythonmakechecklist). -See [Slide WIth A Checklist Example](#slide-with-a-checklist-example) for an example with the format of the CSV file. +See [Slide WIth A Checklist Examples](#slide-with-a-checklist-examples) for examples with the format of the CSV file. - + ##### RunPython.makeChecklist -This function creates a checklist in a textbox from a CSV file. +This function creates a checklist in a textbox from an array. +The checklist items can be indented and can, optionally, be coloured to reflect their state. ###### Input @@ -4072,6 +4080,7 @@ This function creates a checklist in a textbox from a CSV file. * The index for the text of each item within each row. Defaults to `0`. * The index for the checked status of each item within each row. Defaults to `1`. * The index for the indentation level of each item within each row. Defaults to `2`. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -4080,13 +4089,36 @@ This function creates a checklist in a textbox from a CSV file. This function is called by [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv). In turn it calls [`RunPython.doChecklistChecks`](#runpythondochecklistchecks) to do the actually placement of checkmarks. +Here is an example of a checklist array: + + +``` +[ + ['Retrieved data', True, 1], + ['Built databases', False, 1], + ['Analysis', None, 1], + ['Architectural Introduction', None, 2], + ['CPU', None, 2], + ['Memory and I/O', None, 2], + ['WLM', None, 2], + ['Parallel Sysplex', None, 2], + ['DDF', None, 2], + ['Batch', None, 2], + ['Workshop', None, 1], + ['Executive Summary', None] +] +``` + ##### RunPython.doChecklistChecks +This function adds check marks to the checklist items and, optionally, colours them to reflect their state. + ###### Input * The textbox shape to set the checkmarks for. * A list - one per paragraph - of checkmark indicators. +* Whether to colour the checklist items according to their state. This is optional and can be enabled by coding `colourChecks=True` as a parameter. The default is not to colour the checklist items. ###### Output @@ -4152,7 +4184,7 @@ Here are a few examples that use the [Python helper routines](#python-helper-rou * [Graphing Example](#graphing-example) * [Table Manipulation Example](#table-manipulation-example) * [Slide With A Shape Example](#slide-with-a-shape-example) -* [Slide With A Checklist Example](#slide-with-a-checklist-example) +* [Slide With A Checklist Examples](#slide-with-a-checklist-examples) * [Slide With Some Bullets Removed Example](#slide-with-some-bullets-removed-example) @@ -4285,11 +4317,10 @@ The result of this code looks something like this: ![](shapeSlide.png) - -#### Slide WIth A Checklist Example - -Here is sample code to add a checklist to a slide. \ + +#### Slide With A Checklist Examples +Here is sample code to add a checklist to a slide. Let's start with a CSV file with three lines in it. Each represents a task. The first has an empty completion cell, the second has a positive completion cell, and the third has a negative one. @@ -4347,8 +4378,13 @@ The result looks something like this: ![](indentedChecklist.png) +You can optionally colour the checklist, based on each item's status. +You do this by adding `colourChecks = True` to the [`RunPython.checklistFromCSV`](#runpythonchecklistfromcsv) function call. +The result might look something like this: + +![](colouredChecklist.png) - + #### Slide With Some Bullets Removed Example Here is sample code to remove some bullets from a text box on a slide. diff --git a/md2pptx b/md2pptx index 2d3e31d..0d93606 100755 --- a/md2pptx +++ b/md2pptx @@ -83,8 +83,8 @@ except: have_graphviz = False -md2pptx_level = "5.2" -md2pptx_date = "18 November, 2024" +md2pptx_level = "5.2.1" +md2pptx_date = "23 November, 2024" namespaceURL = { "mc": "http://schemas.openxmlformats.org/markup-compatibility/2006", diff --git a/runPython.py b/runPython.py index 92e6502..03c346d 100644 --- a/runPython.py +++ b/runPython.py @@ -180,10 +180,10 @@ def makeDrawnShape(slide, vertices, fill = False, text = None, textColor = None, return s - def doChecklistChecks(placeholder, checklist): + def doChecklistChecks(placeholder, checklist, colourChecks = False): tf = placeholder.text_frame paras = tf.paragraphs - + for paraNumber, para in enumerate(paras): # Save original font size originalFontSize = para.font.size @@ -199,19 +199,39 @@ def doChecklistChecks(placeholder, checklist): # Note the level insertion xml += f'' + if checklist[paraNumber] == None: # Checkbox unchecked + + # Set the bullet to an empty square - and don't colour it xml += '' xml += '' elif checklist[paraNumber] == True: # Checkbox ticked + + # Maybe colour the mark + if colourChecks: + xml += '' + xml += '' + xml += '' + + # Set the bullet to a square with a tick xml += '' xml += '' else: # Checkbox crossed + + # Maybe colour the mark + if colourChecks: + xml += '' + xml += '' + xml += '' + + # Set the bullet to a square with a cross xml += '' xml += '' - + + xml += '' # Parse this XML @@ -223,14 +243,11 @@ def doChecklistChecks(placeholder, checklist): # Restore original font size para.font.size = originalFontSize - # Restore original paragraph level - #para.level = level - return placeholder - def makeChecklist(placeholder, checklist, checkTextIndex = 0, checkMarkIndex = 1, levelIndex = 2): + def makeChecklist(placeholder, checklist, checkTextIndex = 0, checkMarkIndex = 1, levelIndex = 2, colourChecks = False): checkMarks = [] - + for paraNumber, checklistItem in enumerate(checklist): checkMarks.append(checklistItem[checkMarkIndex]) @@ -252,7 +269,7 @@ def makeChecklist(placeholder, checklist, checkTextIndex = 0, checkMarkIndex = 1 para.level = 0 else: para.level = 0 - RunPython.doChecklistChecks(placeholder, checkMarks) + RunPython.doChecklistChecks(placeholder, checkMarks, colourChecks) return placeholder @@ -312,7 +329,7 @@ def ensureTextbox(slide, renderingRectangle, shapeIndex = None): # Return new shape's index as presumed to be the text box we want return newShape - def checklistFromCSV(slide, renderingRectangle, filename, shapeIndex = None): + def checklistFromCSV(slide, renderingRectangle, filename, shapeIndex = None, colourChecks = False): # Read in CSV and turn second column into "truthy" values myChecklist = RunPython.makeTruthy(RunPython.readCSV(filename), 1) @@ -320,7 +337,7 @@ def checklistFromCSV(slide, renderingRectangle, filename, shapeIndex = None): textShape = RunPython.ensureTextbox(slide, renderingRectangle, shapeIndex) # Make the checklist in this placeholder from the imported file - RunPython.makeChecklist(textShape, myChecklist, 0, 1, 2) + RunPython.makeChecklist(textShape, myChecklist, 0, 1, 2, colourChecks) return textShape