From 7ae7d3de3adaacfca99cf59cd955b76c797c6b15 Mon Sep 17 00:00:00 2001 From: Barnsa Date: Fri, 31 Jul 2020 15:20:16 +0100 Subject: [PATCH] added some pass by reference and value examples in C++ but need the all clear first. TODO: come back to this after the sign off. --- docs/functions/intro-to-functions.md | 32 +++++++++++-- docs/functions/user-functions/README.md | 8 +++- docs/functions/user-functions/example-2.py | 30 +++++++++++++ .../user-functions/example-pass-by.cpp | 42 ++++++++++++++++++ .../user-functions/example-pass-by.exe | Bin 0 -> 76725 bytes mk_doc_ultra | 2 +- 6 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 docs/functions/user-functions/example-2.py create mode 100644 docs/functions/user-functions/example-pass-by.cpp create mode 100644 docs/functions/user-functions/example-pass-by.exe diff --git a/docs/functions/intro-to-functions.md b/docs/functions/intro-to-functions.md index b7136d4..4918900 100644 --- a/docs/functions/intro-to-functions.md +++ b/docs/functions/intro-to-functions.md @@ -46,10 +46,34 @@ Now we've made the code take in an arbitrary number of arguments and add them al Don't worry if much of this feels a little advanced for you right now, much of this is broken down in the later sections and explained in greater detail. It's only important that you understand that these principles exist and very roughly how they work at this stage. ## Modularity -The idea of modular programming lends itself to the idea that each function contains all of the code required to do a single job, and then every time you need to do that job again the function is called. If you think about how a character in a computer game is controlled, every time the character turns left it must call a turn left function. The same if it needs to jump or run backwards, directional animations and everything that makes a game run, all could be their own independent functions containing all the code to do each specific job. Consider this code: - - - +The term modular programming lends itself to the idea that each function contains all of the code required to do a single job, and then every time you need to do that job again the function is called. If you think about how a character in a computer game is controlled, every time the character turns left it must call a turn left function. The same if it needs to jump or run backwards, directional animations and everything that makes a game run, all could be their own independent functions containing all the code to do each specific job. Consider this pseudo code: + +``` python + # outline of a modular program + def open_file(): + + + + + def process_file_data(): + + + + + def close_file(): + + + + + open_file() + process_file_data() + close_file() +``` + +In this pseudo code, you can see that we have three functions all doing different jobs. Each one of the functions can contain code for the testing and for completing the steps required to do the job for which its named. In this way, you create modular code that can be used later in the program or exported into other projects, because you can call the function into another file. You can find more information on modules in the modules section [here](../modules/README.md). + + +{{ todo("remove this outline, for guide only.") }} ## Outline outline user defined - abstraction and reusability diff --git a/docs/functions/user-functions/README.md b/docs/functions/user-functions/README.md index 2067388..7dd91b8 100644 --- a/docs/functions/user-functions/README.md +++ b/docs/functions/user-functions/README.md @@ -12,5 +12,11 @@ def name_of_function(passed_variable): ``` -The contents of the function is always indented to show that it belongs to the function definition above it. +The contents of the function is always indented to show that it belongs to the function definition above it. Python then knows that this is the local scope of that function and looks there first for any variables, functions or data you might be trying to use in the function. The passed_variable placeholder can be one or more variables that are passed to the function so they can be used. These are known as function arguments, and are how we can move data between one function and another. + +!!! hint + Understanding how data moves between functions is an important part of programming, as side effects can happen when you don't know what's happening behind the scenes. Make sure you feel solid with the next concepts as they can change depending on the programming language and is the starting point for reducing bugs in code and secure programming. + +## Passing-by-value and Passing-by-reference +These concepts are two different ways we pass variables to functions in programming. When we pass a value by reference diff --git a/docs/functions/user-functions/example-2.py b/docs/functions/user-functions/example-2.py new file mode 100644 index 0000000..3510889 --- /dev/null +++ b/docs/functions/user-functions/example-2.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# example-2.py +# showing pass by reference +var = 20 +print("Initial variable value and object number:") +print(var) +print(id(var)) + +def pass_by_reference(): + global var + print("Initial ") + print(id(var)) + var += 20 + print(var) + print(id(var)) + +pass_by_reference() +print(var) +print(id(var)) + +def pass_by_value(var): + total = var + total = total + 20 + print(total) + print(id(total)) + return total + +pass_by_value(var) +print(var) +print(id(var)) \ No newline at end of file diff --git a/docs/functions/user-functions/example-pass-by.cpp b/docs/functions/user-functions/example-pass-by.cpp new file mode 100644 index 0000000..9ec94a2 --- /dev/null +++ b/docs/functions/user-functions/example-pass-by.cpp @@ -0,0 +1,42 @@ +#include +using namespace std; + +// C++ prototypes +void pass_by_reference(int &var_1); +void pass_by_value(int var_1); + +// example-pass-by.cpp +// Illustrating pass by reference and value +// using C++ + +// Function declarations +void pass_by_reference(int &var_1) +{ + var_1 = var_1 + 5; + cout << var_1 << "\n"; +} + +void pass_by_value(int var_1) +{ + var_1 = var_1 + 10; + cout << var_1 << "\n"; +} + +// Program entry point +int main () +{ + int var_1 = 20; + cout << "The initial value of var_1 is: " << var_1 << "\n"; + + // This preserves the memory address and it + // will keep the value. + cout << "This is after it's passed by reference:" << "\n"; + pass_by_reference(var_1); + cout << var_1 << "\n"; + + // This doesn't preserve the memory address + // and passes a copy of the value + cout << "This is after it's passed by Value." << "\n"; + pass_by_value(var_1); + cout << var_1 << "\n"; +} \ No newline at end of file diff --git a/docs/functions/user-functions/example-pass-by.exe b/docs/functions/user-functions/example-pass-by.exe new file mode 100644 index 0000000000000000000000000000000000000000..479b2170e59c83cdfbf04909be9bbe3d208cf154 GIT binary patch literal 76725 zcmeEv34B{ewf9`fawK2dQk>Yaoj8>fCw1Dyv7OaP+)B0;ONksiUb3_)iY?2DTQ905 z#YriU)=67o3~r%?LRlVbd6cD4+O#asN!q3xkQN@V6dnywz##=ffl^9e{r%6Gdvzr* zX&%3~eBbv&KTBukoHJ+6oH;XhX70Jy4Ofi{vk)Q;--!t!jseog#lIK+ISg|4C68o_ z2W;OdKBoA;Q{1}0JK_uv^zR#J?{x;-`}+E$&W@0CAlB#X?sL{Pwm5tHJ40nzSs5jo z=q8U4owwM<$)zO$@rV%5LXq?0QlXkm3xyL*SKyl=#F@E(4t#aZC~cB@6V^f*`h*om z2JTU~U4n%G&t-{0OC<6M3=xGmEJW1GDf!bR#C@9RB9ZYhs#eHcXau~?nNge2sRmDM)45_UiRjN(i6lTRdlT*5V07VY7B9fbb`zQpIk zH|axsE44Zf6aFjs5?>8vj1TNrv$CR!5uYJrkKx;aZyml#AD3{{tXx&WnD@>CC`SjA z?|e3i2}$N#y@rub6Q4`t`_eRgYt}Kc2`qwsNWTXs^SNqPt}AEcmxyn##-|Tnjh*UE zEjcxJ(tZhA)m3J{(DW3 zNVff!8zv?uhHrZfnTqF*K54)6#M%A8ct^5)aJBK(_|a+^Iv54}RuJok505jy=ja#} zSO?rx`>cniccP{K5zBYq2E9jezsDf!G{CTkTkhqo<(~+|>q?y9UjqKRVe9xBG-MQQ zTaUIKMpeSy=5B4dGA0`QKsqFDUj{^>h?p7?<`K7QV7zkikY=veIM z-r+S~E;F1y^qOKnvIvaB>1gkf>ybKTId_fVUf0O^Kpy?A{YV8M+VN3%yLVVXQZ&<3 zG4=?sqTy(3FZqtYWcJ5@Hl9%cOZ*t!@v}YDtjFHDb)Z4x<&V*r*ZR{t zoO#LkseEd1Snz& zqTe3A1o`ouB!=DQ=s1v2t%x->woUUwVf520N zOPtj3I%xC8e+eC(-gtwGWA-SzA0tO$1j8ZPkG*$3oRkNggA$@K0}4+vV)q2 zJ#WNMjBk~a{$rV}y+menCHnzlpDj^8);LU@^}Ip4=Ard02BNnR?|;bJzO3>7P-cHm z+2O2G;vkQNJ|h~(1IUtu;CB)KR+2Q5^>x%bZhsSAlWOuuh+AHCz6chLs`u{b=){tD z_n<<+0S$I&u$iIepI^sV(B{daiPMaF@??9XV`JE1a3 zy!vftS7G?z`dKk{&J;ggH{w#Z3~f3t{P7d9^XKk2>KnFf*o9#`7EPBcfm4>H$fK*p z+3UIe6HA`FmKv;mD#lVhUb}h?yQ|??BQWe{>@Eb|m7DP2_%_XkaUipPI;hfHJG1 zC8c%oGhTESeSoPrAOD@V;_>)vNO_A-d#j$0F7aZh{pC4K_)pMqj^{p0AgOM?UU(mQ z<{Ia7T^P>ZW2-d9&pmC}rwtv#BRcGje-{>BzLPF+SCAINMe|@P??~J8xDtBfKbpv0 zNocy1ehN(n;fybS+!ueItgxP}fbuWz0EoAil!H9(jid3n>LHIsSKIRwxqrqw7vA!1 z)I#_*)kvTPpS>F3m@Q3iA%Hkah+)g`@`&s?kK`X^^0kTFhe^gr)+d*erq3WVk-HYZ zk5F+8-ih3MksH4*ha`CNA*_ii8S%g`Ex&|%XWtH+>itdLIP|(XI`8On(K*M+FW6%f z^ZEGGnHZi4{HX4~mO0C4EoX|RpW-F#(Cen?oT1m1s4KyI_1n1ri+&WN>eoC+pz5d5 z7rnz~T3?tjZg8OlD)!stGUL0GYlIMZxzS&f{S*4rS~QpJ1)(I@!bQ?eevbtSHe(=_&X$x&g*_r|lHyb3mIolTc~m*Dmuv@eU6xa`YrENQB< zFT(|Os4Crl>$9k37y~xxSJ|_L4&gUuLW8|-={2n7;MR~uG|1#w_Ax}Q?<6orC2j2J- z=+$IZ~SR*{9pa?Q}*|E(KTk+@;>0<{zGH=quybMx9a-? zbN!e%J^1>S6Uf_dj>EV^#})9DR{bINBMiTBH~a#9?2A8YKhi7(ZH6H4$m$2Z$A4w^ zD(C(2y-sZvP?v>SX4qen$xChbF{~$qS2>Q#bEr(*U!Fga`|%J*8ub!A;i-AL0L zLqGpp)H*co8aneYv5q0ji zZPF&a_-jMISG>cmme)`Y-e-Po;Aca>eyw5*6Z{x15dK_I^_n-HIcMN^=brGI*W83E z+{aub1PVJ*vSd9x!yDg*(mNazx#v4+2DcyWL!V6Kb|8o0|Kk$)_=)jMc*(Fw#3$nB z;kxQK;&mI}I2#6A#j9tZz|}84fdydon_a-ad3G1@Fu-h{)v`Juz>T`Fv8XH0A3tel zvCDz=#$OnJ0NGKDyf*hv_YT^`&>m*!<@Mf?`$`T&)#0KOm{pGcI6B)q5;}&K(`wWG zHh18flcy}70*R)K@od^Pe8@YJb{OBs76RoRI&*$}9Xbcw83!Egl;s96(+4Y4I}qMw zk9tRFQx&)D2gQ%ez_Rn+q1R@;^Dg|V!+G}iJ^}8d&)JWB8qi<$EBnwPG|WG8!0H=% zbe4a3#W=NLF$ku=FTvS5qSB-U7T>)kDfsS ziwpNLD-!L0)CWlh@bG?^c2Ct}q+i8UA+K6B10EIGs4kI09aj{{YMWI+BCys_)>;J%oQh zlCgfsq%IjB(PT#Z>8iDhkqKGVcY-(CU40i7*@PnGtK(NC)VK{R^Mw@ddB*HcoD=>bTLY;LA3x(MPX_t&>W9AB2jrv$KGu z>x-nYf)7i|Z{d^1^+D3vj(1D?cR=USclIPwiR*=P{B}Adia$1N8Ev5v7hB>z`rD`z zU3#07=7|HqlJeu9M;DRR=IX6;Y7?(^z3Xm83u(Tucoi4bt5M7we-S4w{*fiW!}xv} z(tx3}7vHj%kvLcO_$(X70|xHN%)0o#v|(>%eCwagUQEBQd52C}z01bqwQt0?BJ-v* zT1mV9SUT$vd(3m95=`i1@fMbt``|AOYP z$DlmzN1RtD{Oi@4G)!G|u$DxW4*ffJX#3G?LDZf4XhQbaq-^^UI;hi}nnj%ZnDpsq z*r)ABF9-eHCv|_;mE5EYn(VKOL0~y&TTpOR8?_SSCQZi9ZUE5bC3*T;^zrx`uVT8X z07H@^p9W#*iHWnO1X}vPhCTzLBi!;TIFRbpC^_MIE^%E}yHs!z;u! zgsP5%GCHhI{Hr(q_{6_q0A$0tqBievEgbO=w9CBOfg-V=K-Ll}&KtqNHQtFO2T)XA z-}L&1Ex$ppSG;<3EdCw%cud6+mBxSak$l)%?t!bNAA92`qt$Uz@)`1#_(AJL?hA4Y z@)1IeWIe$6q7eqQSd^GiWs=Nq!xj_gK0M0)J#6U(AF6&jX6N~l9po@-B~jg=P2|2^ zir+*6;ZlXej;im+)N_r)v#VZ+F2gbt7gRL&$=L5uWGxpNMG-^X5fTTxZFhL%O^)%a zX;v7?%4E(iaGv`C&j+|VV@-|i;d9%8d!F^9%j=OlPT*pCYR zcy#C&!IvW36uIL=)LtY#elR6RS8YzrE5DfXcH(R>f; z$EgBaAgb2I$C#1ygE7`iP0o6QHJh*ot8=953|N0k{Vgf_H(G>x`(gg!B0A55b{iY6a>t*H?efE&zKR7c{K4-F*213850CQJ@44tk+>^rC z@LS=WE^^Mx63$t79AjfU{NcHV_~`*#o!M>mSDhGuLdRj%*6}MZ#In!5LL<*j z-7<7y?(i1u5n{83Yce76dE5$m*DsMqy{vTNax%KT$y-hLkLhS5f1tp7(^<|9*@Slm zrnFb3rn4!Vfv9Y1@ztP|e8hlEF zk7)3pHF$>xZ`R%3TBXfP;<3CTsNek?Ps|xMM zy8S{V)*p1?xYe?QP;4~N|C$GL4bPCDSaPC`+N0Np^Iy)xP8z&cgI8&Aiv~An@G=b+ zYA{2CuR~?FlLlYV;8PlWM1%jV!4GTj-5R_>gV$>CDh+PY;06s|#!%N^-=)`;?7{+* zPn_rg3?7ZMBR>ws_R}rP((zAYws0TABrI3(xUA&NrDf~!@eEMtsJ2udSG}FG@fUCn z#a*uPZ(*p8JAl$X^6b;UGBQBYGJrnTc`nGtt?M!gIfEZbr8C`seEugafIVKy=R_&y=&Rt>(P$#adqMLA7?dthIz zH`Et(cJ}wSBStMWFwj5XEUjy7aQn6`6A5ypyKi5tr+uJ1ddOMY;;RRZKaB@M16@7+ zgU*5WzI`FRc;gOF^JahJ&Sj#heSmG+(;tbDNh96+`ntQi5gQi_IZK=TjV&!KskJ`} z%TLeMn&1+!FT&|UkyuX@{o;)F_d6rK?L9q6aiCo&3?iC?ekpC+R;O#x)^}ZB|De`7 z);rMK9^H?|mM+`iToR$^yd{y+CHs~;m+V{Sbe0Z;qVR%hWZ)l}FW}VkM-vm@#P=C| ze}eDJ_`ZQ}1MD)mVsPzh3i69~_lBHZ?cF`GfzSr&SnkeFXcTcS2|M?jMvj2Y^S;@P%+vc?1#gL1|o!5(pjd@hZic> z(H%uU-VjRW*Y(ol>GZsd4z-g$P35kn9Ik(p^2df!>ETK9@ok<-^hx{__zGUxiTiZVKM)IJK}u_3GgYbW=R&hbA4u~$&=6?+kO3RpZF zp`A#V10KRR6Y0Z%pT+8LF4A8Cd=B4Iq$wuXl#9hP(hk67`0hu#9B>o9VWeGvZhWIi zHv!&>??I#qK8f!UqzT@SMffPv1fRk89;69c=LvBy(gc^{`vB5SfJgBiLwXeOReYa7 zT40lQ3BEr-+6j0mzRx3F4!8>6pCIi5%)@5$4DkTwW21bY(twTligw5cJc+Lr>C=GU z$9FE$X8?=mqYTpJfSd4jBJHB|0)*jG8n71MO-MHZw&LqTdM{unzI8~40jn`Dv=Tqy z-<+T!Es7Dkx(K(0kS6$^#jp?3qkw};g!ll`hXH?s?>$JL2kc*p_++HRfR0Or_$JZ> ze}nI%!~>XJ3R@B$a1p+zkuC>};`;-n4+Cc5D)c<@03N~jC8S3Izl-n7NS_A0@-iX* zgtQBA5Z^bDJ`6bfa`;RKYytQ!AL?ulTX*C*zofW%P*p)fLT0U!Udf3vG zHfB0)(|EpuzN0b^VC+AGFZm|H$@G_iqZl-z6HL@W_0iXAwpc6E%u3TV>E;>m)A8%N zr<+B3jj3GOtI5~v$w(I&&FSTqy=h@{lW9!JuvjvlOE;U#O?$cSnaUIXlbWnNo5;H@ zT{sR}gt|XXr2l-HdZ_*m4NrC6kyK}X#?gGUqa(9i-J21%jmmRBCIuO<>tMnu(Z>pyw0aXz0Cw?rHNUU+{$pG9=)w^1*emz$p-kx=l>%M zG#xe?bNW`y!#Cr5lYy(d4Rb$mXOeK8zgrcEZoK)bHp{GULXICg5 zoC*v~MvHt?eJENR8^G~R6kF*a_UfWwD$ds_ijuIc`v*epoj{5X!us1IQ4bxQU~fSA zmMBg=VqsrjSHD}FW6YsQG}POQ^8t5cb9YaOQeu`Fysh2A>uURPc7U~>*(Xn+u(zJ9 z=rOZD)P7(JT5L|^gM%iV!t@XH(y0my3k`^S(wd_^IDXh1>*J$_*7lB`koYKJYum$7 z98uKv!z6g>?$d<8fXuP1JOg_kPtzMiAB&7d0HeyLOVxFi=OfnVynWUVU}JIGzI$mm|<30dq@93R1~JcJ#iL;eOj6F^!J7i2F!dZ>TpIM(=zwjZV|rdxUr>EfO8*3H9M_ z1*Q6ey6Ys+Q>LV1Fzs9_DmU#Mct7s0i-IL1}cLy*nE51wEc-;8sB}`lTP*gxY(3!PbDM zWlf-ID;j`J(|_N0tEYLJ$G@twtg{Dp!Tt+%{da$RBL{*5QCVXt>YM!S>F$U`JA;>B zzGAJe7OD1+&;LahD4*?`RvU*y;+^@^)AjRtXW{hpX@&j+`40>H!vg<;@D`ir#3fFH{}u9|%<<(>@T~U)_frW_|6>75hY5aKoN9EDa-j+B^42M<f4tR99FHD5FAn8&-wSN_c45*`V7NS^*qDdRr{sHcZa%~;rrEQh96L)4DVF$ zWO$eQC59hV#~6M{r89Yp`EIqal;DTejSN4c_AZ3L$?y~EOAP->wcsq? zV*aGMgyE-EKf}+d0~)-8;XkVnF}zRxcZOe5-(>g|bs^5|E#~{xT83X$I~aaVy@}xi z>OV33x;n=2LG=v7hg3S}x0sKqmot1=ZDRO{8e{kk^}`ImsXoK-Tk1K6|DqOR(y*A1 zt2GQysO=0-sz(_$JFmJd|ah_1s3xuH4FCvEaoTFN`_CWyBI#DzJuY@>fH>V zQ6FIV9rgPRzpMU{;rG-zxNl%FpH?dY)6G^TZzm^gO5QD;$WZdWz=?b%n{-S!&sVa^ znCa$)N;X+9-CV3>liAYEOO$L`e5sNxi(jf_Q}J1A;XX>*j*LMwCPm7m?at;6MipLv zvwxs}Fc7U>jm?D;27~Qc6v5k0YLHenx=6dGkaia9^gKz*3}9!a?JWc0=zy@S&MLLy zM$J(aw^|z2LS(W74M|-69dxTvShi>V8&zT_PD_h}b*Wf0NnXXO6!Flo>43b(}5|*~ii;`89D1ugZLtMWuQjj#mcbsLK?SDO1t5rrLkHp>=*={ObBDua^IQa$-;8e z#mTMXL1~+X#^K9twbf$k7rBwa_OP%Vxi~Sai5q)<>c|}s)UFG2kisIbKO7opk0PL@ zqrbmLSVn0)UWA_p4|KpsGsuAVLE=|QDm&>sx_-4M4SPPUvD{7CUWDAr^6AQ>s(Dn^ z95{`vMr7QNS;%7XIm*eAES9Q5LgXVdi08C~&4tBdrP-@u-4qfIS>9?mdIb5YgG7sh zzF1EWrn*2>sIL^AgWDBS+i-}~)h{wW2EO??9SUJx(G$QbBob}!i*6#TE=TlFPb74O zP|`h_$81=2atND9uV0aaRu#D*Jl(s3jG2?@4y*_^Y`Czz4I5aFJPu3WLPtYn;dN6= z`8xa^y@QK1{-6||xUIt<`zTYS;Rpz>r4D*go&y+2WWsxcIi z@hz|wF?WzP{0^u zz?){hE3;Nb%*3p;!;5gOxGA#=xyARQGZAP)oia#MW2%JY!iQ4|ADC1)151ucg%L^E z9+ee;Go|cTCzY+Dva_7{QLO%qH$k;h#_GQuKGqVgtO$39f}z3gNJx&9fmkrAFGKzU zZrg6^3XwszluW}btc`0(sv?#IV6KkXK4GiOTAFmwxrx$HHDivFIc~=xEDD+7nGKnwgbaG}zx8ZXXDVjO8?A28qyYbrF~l+)M(>O67a1F7khE4ZkRU-N?$CvZWnFZeA){`Ff~$#4#SS&MR0IT7 z`Mh4%L6S5x^!6V>Lz-ujLS#=L&kz^l%zy*BZB=nX3w~4CK*Idma%sl8JDqJ zbj%<^cZ;Urp&+aAse}k_3i*P#texEB+8IPtR7U#)(l2qXK<{?5d;OdQ-HrB$(jQXs zJf)cWDueKsZ6!>2CV>?Yi1~nLeexDTWhxVvz3gEs9i6ds==$W+-MX6|Bmtz5)avq3 zf0xKOID?c`pknr;ikD$i5MbsTXJDpn195QMsmM?Ds>Je43`!bRqJRQc>B9QE!mlHr zGLi?S`Did7Q8K?iM<2{1(^fd>(R;0VuzBmC*zQ1^K28n$41To1e2Y?iEvC#2BJyCq zeFj-_Fc0ch`WOi#IZ_x8<~wI9%7Zyk^hcA5CI<7}Gn7vn%p^n(<`Tp@I=(;(@K5Ss zzIO&m#$X=g!5q+q=!5xdGZfSZ^Pn8eROM&%vT`u9O_#~Rd}1akaxf1zZ5=!$?uU%C zB!d#kjgW)+shMQR!EDG_kuz0>9L&$nAVPPGrolsltVTE?f(JACf;O06m_fvp!5n4x z`Z5W62<_1Z^Q}rTozY|vUJmA;&LnWsU>+1yW`g9gW#wT0`HZDg2Xj<+QxC=nDlgH@QxN4s7D$4)mG+fP!BWQrhbuOqxu5F?dpBZ z*Q~xu^<}M5UqC}GS!>nb5I$?2s#anW!{(r~yQ_=lvEMKF9&u*BOWm`I;9>QH3~y0; z*HHdF>a7e%)Q>ZKulf+f_o?4wc)Oa9vl>hG2h`OJ?^3rhyj#7F;fK{Y!;h$6X82L{ z`wTy&{)ORZRLeRl|5>$=;pfyUhWD!1F#NoFGs7>a_b|LqJ;CsN-WIO^&v`o#Hf+g$ zHScGPe=To<;a~HD>k0pQUOvOWm6HjSBhss8tMaRa+R|ruH$6s~=+c zZuMb?!|IP1j;Oz3_&zml6UiA>7c;zF^)b9d?PmCJ-uoCnlJ_9PZ{+=$;WzVMXZWqW zrPYW$?m<)m_K^|cuoliOorhy#+^NT5b-*BG6wXa^;Kv54NF%<#*mB@jx^)h1P`gRFiL^{${5-6SE}`ePb7`pN{N#&l6M1G1>U*bPzLGS1?y^sy9NNFQCuMd{O| zi%Qj}KocV7zPp%IR)gJr!nBE_MOIOo$`xo~A!6=GF+H51a!84(Iw`&+1~xT_2egFg z3JpyeiSFs&CrnprXvz?}0J}X7HW72bx|kZO4szW!b2w^+Gfy#JqV}&ZrVauhMYNb| znQ@KGy&?s$0(ClpavFhE@aP1}5dmkf-TmD(1Wa2B8sVm5Ey9udVsytvsOgG&6XtB= z28@+%z~CoR2nRI3rtU1GlXgW>vt??=dH_JIA4f$h))vpHq74wKVR2J>5Vdd52ddxpfjR%U!k-s zpLmvk4{1ILv}8Y_%IW%fRZi2tP~|lJk}9X?U#fC?{Ghr62SoP2nz0$L zN*G`jkRI591l|I*9CQKWA53RoR^_zy6;)1K_p5T+`l>3Yt*@yxZQ-b4QiJ)#0Q1%+ z{pes`XJ*a1VO{(Fa-~)OMoW4*Eypx;SKY9(3{fMhG8d5-_HP=6hHG^Iar!Q2^gJ2f$+Y8x^ zdnsWvy_z#gt>N^Asv-9mVuLjh=%DB3y88kL+Hv`fM0v-$QAsC@i41DAzI)AIyqtEg z8?Cdre*Q`BK~O9P1?q_ms-*xad9Iv)#bQRp49r#*iP@93{38F_{CSuHHkxKhYovv5r`V{A;5^%G)K7$@ZjlSR}bpJ3f6Z6T!T91Q6;+*7_0mJK<7WE zWZZz9!!?*#5ad5Darr{Bd`p?dQ=6+Nh@-*IP#90+iu`XY4m#pYlh~dfgsldGVUhnY z5^p8Ej4>7YW6FY2@MaROyHn&JR~(NZU&3Wka9=+{XY)@fIZpxWt)Y5)y01eePspmR zN=-O3_q&p}TqlYA?FLEiqWou- z{Eq?SB}|Ml&q+)Z)fu1%qN$|=BLDkJ;Zxw;r6l~Kw?p%b&nruY(cjh9+wof~{X!#Z zPO(&WH@QhbLpk#AQyjlW0dfxMUth$!6W$_R3CUkla>$dcVpBj$2t>8w`CnGdp9N`Y zw0)nyHsGrh>G@w%9F6EQ*PtKIvd7pj9#C?~=YgxGxf{l!C$?i*K-^A!v zpi|ka8Q(@?pfb!Jf!;+VHY(Oc_seU-r-7}d z@O3%D_+QCXTOR>-K1I04x_rA$ua`!9MM>dyOU8kv7_HG>bVg7VHd|OTMj#YR6t+l28gan!2Sj13#8?T_+u43d z6t+oBCS&l5hQb{Z;UL7J5U$CEJ0)f=VFtO-E{Vx!9>(mJm<5FCj&$O(UU-#6IYq`3 zPOrT{^p;glAdpr2Shr;(*az2Y0^CjZtAIdrCF>qLiR+iOPHZJ(3c}HXc3PO`c znp6ss@zN7)x^GUON4;XzKkRm8d%;+-5O)#(^Hmzf?lw1^%H<@eePHM_3R+l36jHXB_ zl0Kj56oWRYIeJxzHdV-~D9F!flg^cJ#V*N3v22n{(^yw{y`)oUU=qE45D#|r_jZWF z_sI^XkU3F%OdJ2ihGq!A<=B{aK`|8q(ssw9@c0o(-F#z@=GM0;$$b4$1Xt> zUMk5HKATdUj6}unlyo|^Gm7h$Bwy=+vz<$uN9Qo~l}ysv9BI5y*F26|1a>&UJ(f#p zgHGpu279WPfa{}{a@rnHEbU~jYAc1-`mNPgiYcqMQkZN5|8B!tyoa{#rCOZXGSSFP z4g9-NF>!=m1|5)BTR)F-)m927tF}@Q)keoGtls*f6_x9q`f3y_({%0lh}WeX9TuGj zr6{(h$(+fdymSVth0&~6De`5dZ9{%BXwZ#<92%^*;}<(X{*{>DXA_?8nl@P9hTm%K zS7N@2+lh3pu^!8(1&ed9fXo6q)!=+d0j-dUT(OquOB}RDWV%EwE#RXJFs!O1hD)<) zp~4IjQ9Ac9e2FBiT}=$jmL|?kB;qpe0b&SHIIpaCg`r0hwk)BIL`oG_8agGT%M+SO ztW>AM&@UNXnb1;VrE04TU6awP4UM~Wg*PNAoIq}zr&}*TIH~TYBy|mJwV^E`rLtEf zDQjS_%-1c-Ql+Y{Bvpx3V%-T%aY91YuQS**jE7k^njGYKtl`EqPO}OHUD$4+VA1|1 z)NL7bt8hDJBkk0vplLQ;!|9f)TpH8jOf*X>9m0r$?ZvcduA}YOGO)GK{-iH7D33iB zHZ5ETq=w>ikA>THRG4bv1Br#r1#}((ws2HGl33VMKqnHw?d$39;759KvPJuVSVSyr zWy^u6omQZ6SebQ-g>5>4R-|}GVWNs1rF58v5(a_g(OH^QVrL)=uz#QvZ;;C(WVLlAZmYG;$Cmm4ENd;^m_s+7 zv#*c!M@8`_xzEZT2=$8MYR;sI0?Ar@g{2&v^8-D4QCAM#tJaFTGw8A?WYHSVps2=M zTx+=&tku^0@VldqdhJ_C@ev0#Dsm_iz+D+WH7&kx=@&th$UeGPQ~bpeQoU7gJDvy+ zisAxAYqn+)U=N7mB4v(aHPw{Izf@DA+@NGBR`OOck*08+hzHBN2e3;lzEld(@q-D% za#>6#g!lE*;|#@>N)A<}qX%{TIwdz*et#s4(@1)_A68Zh9$*D%BT~~s`=!<4hGN9zc>Y2%W8{S8w&4JzT{&i;mJ zE#+{;rn914bphBn!!B|XiiR*4MLm2~6yKxFCMTx|2{};^r=aaAy-%R{qYBR>6gZ((Pu3E} zpHtYuDUgEo;~&~D(!#p<^Rh7%Ucsfb6$70HVBa4R#rG?`m8G}~xnfG}Oi2dsUW>mh zg-}e!WS-sEN9g?m#UE506sp0Gv2Y#oha0{Huj}j-#Scg+yCX9DpyHrl4n7JOUaWy= zxm@V$%08f|4}+|&SeOUv+Tvd;yso8?kf}`kZVXX;PAWs; zBFv*LonaSId|sM_LP+EWfY$qor510|ihn1|(|t-~ize#XEk*ISOiRdz>F#CHjYsl3 zEW3)IFqM)Q(>+bCZrMDL9+f1z%{f(dG7*CIMe$>%3R;oTP0-0)(va}(CzVTR6G1mf z4IbT)F!T?UOKF)%@hnO7-9fA`2534fsxdhz$VG0->$`$@U1~@a)tY!PQP_)4p?Jxn zEfP;*FbO=rq@-x8q)=dtPU-52MfQs#zoby8j81{G2SrhXBv9;35&>6PQPe0&yLFO- zQW#ov(d8p4@N75nNTE<0**7$hbU}C|p-&X;GR>wlCW^w5t>=rfSAT~^(KdyT1SmR( z3o?@rHPAgKQFM)o2Mq=7O!jy_x*|SV(c5H26xL%@Bz5t2$@7b%Vp$o5{G?VE35Bi` zMeVZ56bU5BGz)1y--UGs+a(~Gu1_#g3U>J=+a(%;+Z1(}cy6E&BB=q*Eim`{WLXL+ zl6X4#;x%^BsAg_FRzq)`DZ0z#phzQbituVjZ$-Oh11R=LHx#C8iis}zv=l($NU~5p zj_>Kvw&*jGLIFyKWyJ0Q1kz)+DEflQK`~2GA+KhsJXsM1F=-X;h5_iDxaf-}2gNi= z3(*A?zK-|mGVOj@6~#IkbUDY$tzkrONvEuUqM@YgkY8Yb7||3^C7q(A45fWy3!O#N z0d~>TvcKzrKr=wS`gLM$fLr5~i})~=MC6t87iTQXH!DdL50594Y=tMA2MnnN4%`tFE+dcRms z(G*xEj~6NQN^GY~8W$3azsx7w6mcaPC`LFirJmQDg{a%`94rsa!o% z_<*n5gD4@~jPQt;pyFYC4qo%0E8Bk1BhI5N-Yx$wYLF3PQwh zj7R6fcoz}&#^oOI#(dm6dD}$`>6}(b`vRgWbuXga;luBo)a03!l_jahb0|4+@l_s7RJj?; z3-T8Jyep8}Wi!_-1yIe+5J3Nq0H1g54b=M^YutW3GZyOz_#mxf9ldsdZg(c$X5ZY6 z*ABZd5by*a|H94hX-5(4R&X}>GmFhkPq2V`H-Yy$E&d_R;3`j@qT70jF!6eQSNco zKzB`;JzrDV5SFl-P;4Y{T65~JX7EU%ka|~=R9g|{U0hTShkuApN)x-8n_p#7vF>7CWPx{C@Lwa|aiM>^`ubPk79ajC zz=|#kPU@uBSl~5Q`+`AWK!ghfuUmnaT+rLuunNg6D_fcT7a0hy1oH}h>-S1oQUjG` zL3*nNy%}S0eMR{m?OozXCcjTS8aS|)-zvU`>)(?Qrt{;K`zu(+s>(f5z9>P{O*U2NSJB5kSLQ3elo|1BPsaFVkHGE)<*u7 z)YM21({zy?rpdSZO{oXPro>GOlYajpT|eDOI@vKr9CvfY`6fIjX&pg&8B#WC7eY)^ zj!jJWEiC{|BKg?F^u-cVI71iA$0jBmn~=<8>;YlIvB`}nZL!|Wzf@C#Lmr!$aBT8% zCVqy0-=D;ypOKhwctT?IqKU&36An+PuujkpNlZ9Ap$c`het2TS;R)5E{NH>l?%xmURh3F+j zB*bWLL)cmWb=@J6_KvyLMClLXb&>moWpOrHkFvDdwp3(NCs3C5ewMX~EHJ{dfwLBC z7I@5m2s-HKZpTx=Z=ZJ)$>L~{8*uFx={GWlJ)<^F^9+SJ zZs4sz`a23%0i9vU%u`rs2Hi`PA_^3ik)anURPw2eDLFPH4gd6FKjvAi24`KCM}|n- zA8qeIEFE^6vsUKPKRUHozl~q@1Niw4zM1p`) zd1Zn0gj^Zngfp>O-^lqam?Q;HGI8V+;lJ(p0r1(lR$&tA4+q+N_K8_(>=#ApKgC3A z@8dW#rXq*=h2GVO7lRKVA_$Q}UEK!*6}VPLL&B7dTP<xd^ z9_t&x0R)~>AgY*UKfv>;%vtR{I1*>=Y{Fa)y{vylPyY@HhcN#FAOm+|@CrheW3B-yQUdiX4hYwEfh6BWx>j$RxHGi^v#hIeq=@ z@T@*zJ7XiuTZNgXT0<6?BVx7f1?znzCno>d3L>0t2npLy=93JOBXd8qd=o5b!b&w# zlBXoIFjL7nxSr4pSo;SsL?Q^=x=peD%KGoPjg*5oun60)v!re~4-vL;&ZOl;_IG#T zVu6ql+gV0gH5AVA5p!ev4I?vidhst~c*!Dc=dxabOov3_pP2~TZ<(ni2d8%w*<$-0 zbCl*_!yJK8&d;J|Z=&oC$o_$|t{nV3oPG3m1_XB5USSD!#1aa?vUu3U_D9BfxmZUJ z`V{9Bwm&n{pTjqf81rh@EZp^KVhoM|@%**zuZ-H0(-jWzp5690F14Q!Qp_97(L)HW z%$tlkIJdX=pjJpITJxMEe~>h_W+`mBPctfpcay?x*tx0cHc33jM6L1+iF;;J0gaj|sb@%C zszg4SOm8X>wk)aRpQt3YIhkgcwAbb$IuQTmM_aK9n?vH?$kp&TLkWcNz&r>G*te8i z?3tsOaT7&yWRWz3k|>m;6j33olG{@e2(}0JQ*h8oB_plx>m3 ztXFbTBVL$nTPzWqlw4Fvh!Tl#Nd)?SiA2;vYA=@G!nRZ*yb=M9OC`dufhElbBr^20WKb%pN5d$AXwjXq$pIESKoL2D%IFSgsUO2X-1*Ouu@8 zr9|4FN|J@v5v2!BlkefRtx^i;R(6;%IN=h&EF#Q7B^R?$XCT^sU8paR(rc@wLWeaD zdW3x%uC}J2ao~vnTb^HAy&ERNg+_4J}86|3L@H8|w?+!HhS{mG~wcda%kZv$+Zi7y>4NU>} zwz@z~vwItuR#oEqoDeY`$J*7xdSQ;1MpCjx*e0>L{cTBAi4246uB~lrX!E;UJ%Pry z*7`=@w)%j(86s4Jr>VKo-&o(~3AD8k8Ljn*OoQxc@=YOU8Dwgz-{VG^Yy;WU*5VCF zGYPwaCi#B!7O28upz9jjYIO8$1Fds6Hi;Yqt1|;T$G|qZ>jEv_M%;ds^F?x3!2|1HHMitvRrz4gKWzHTYUZov zafv~ZV!{|8*r@^CjOG|4rY=T}WHb@u|Za@CJpNHDM0|T0QV8h0M?nNzP zk-<;qXmNWti^Zw9T7PSuC`rZDw2CDLMk>15?S}+R3#@5PgHJ3?VyWBG*3uei+Xnac zi%ShcBc>YP=0I)ZwjJnpq9T<{x|9cMb_bevH8$hz zE{S=KT)7!aW1b}sXbH4726n*PS6zT*b8}+@Gp(MMiTVjIh{KR>5o-(%Ihm)p>gFcy zR8KPuz1HBQK7|fwNFbSG-LxFCHV9a6ka;*YwRqb$*N7?uEq!ox&2CJtG)?$+!B86v zI@Me6ZuNSa#YO`wOCb(!bAvlj>&5@cY!RE1$-64otevUbt1rNq+VfYWaH6_IPhXir zp~`e`aTyeCmfh)V_0sGj+y=?*-|61n64;EZ8m@t8UjQyHY77QB;%M;uJ=;XBL1^*% zHn&!YIse1 zeXSn+8})>T^2F3o5!m5#2jIItgR-rWW{W1bui1^uk=SBT^d$l znhlEdJ#8%DB1GgCgRHGoV9+`rUqfMcnzULC7THMdcF|^_^?ur}wRDF;^5DuE*g+lL z*3^Wdu+t#<(S2fASHK~uG2%Rxr4+7_v{ z8&zt{X}JJq)eNpx5jEC?;p#b)qA-tK5 z_w4G;~{|^fF<`x`moqM*#Pv z37G9Q1k&s+K7tl|9m8}xt|>sYU~O89TRJr!^u0t_?b~I-2Fcq3S|-EZ>Te0uH@4Qe z;f`EVwfnFr-z77dcE6|IjfsItS@z_M92SU}e_I=yh=^q&GA-~y41LNw?D&_zZf$u! z+fLWM&Aw)gZzAT%*6rf!B#WNI9GskM_v}FZRD$!l_8KX(1uHr%cC9U7^t;2L@ILrWUZ5wg$Mrk#E_$o7#*aFa;NI@7T4b0wG4FNN$$>eJj!je z*>d^NpAR^?`|!p*oT5+R%8*=Enxp%1_g){d0i-i9B6%*CqczJ`L>#yYnfzEpTHAIX z4?Xqme8n)|O*{_cSqam0&sLbMW_pERPw1diK4@feBoNwTBPM48ll(LZ?imI))0xce3E5A$o3a2C}e)Hjqo;sHL`bAv>gOpHpSe_Fs# z7H3}O$iWRa>vdqf6<-J4>Ee~T--oF`ATn3Zz7cp}>uCM1W6K$vPern-Y#BClxXgvy z1PHb}7wr)^2s`wYM!dxXdW2sW( z3LGG9g8&J+d=M>G%BV7v&KZp|YmQ>hR#izQIo2}e$^vt?MD$rV6$A^06}1x-n??BM ztfo1BDH6E3wOZB)v3*wGoGS}9ftIQ3RK;3lnI?(P&Po*W%~_8_JNwl7I_Hog4yq0} zZucU#4iD6ns-Ps>8D%TcmdaGMjDBCGbpZHu$6hV#UkH1wNi`DQon@#*`m96gL{G_K zu|83gHd>?ssuIRz+itK66(gKlxv>PvE0DqMJk4!b8N}rh6R}*ug)P!dRPU8@6uotn zbtN}~hMHT`ivn6IyfiYSCw{pF<;N zkCx05;uV;JS!eD6@ql9pz#7`Poad=gPMI3WeJRKalDG1mhFQr~|ITf2XPa6;U)bnzrk&*uwKA(Y( zCUFUV73FWZiYoX(4Sbd0hL!yPomTSycUqbF|4u9M|D9G&`~RI*(*Ji_nfQlJD^vf! z6QbT$Hpzbr<-~tW4MkRR{MrgcvaO`k0tB>ixZJd1aFQ3Ch()2uI=w_v7~D!3Y=?Dh zPpmVv68~@Vf4;_*2&ahrFH|d^E&d-j@N~WKzhnXWN520h?blo}*|9X2!Ynw=e<;IH z!7E^K^o3_DuoDP!*d(R!xGaIhKT4tfLfL+S2qyXdIR1aJTtxeiyV^@EB~JuzK?}Ec zYbCgUK|t6RJq44(2}j3W_O9-Ipko~4NqU5<;tiZg%ExFq2`q+=o4I`1cXtT3trPH8PRlvZBgxr=K%_ruGFx6 ziNni9P?XBxDkgQ6X||zEMznV%ly&#@5SwhBMx&S7$|Nf$llZ?211li69bqKEz$DN@ zf1Fn$q%kDB{J+97E!!v4n<(%$x}v-93Z9k`&T2F1@ylkLV#)f3Wlonx-DJtzXHiUx z=L}lZFIw`pS`_P(2XD66c3ZMymW|e3mJQZhEP19ybG~6&YaO@bAZ5w>IJkb9X0jBR zOYXZlO|dBEJ=U@xB7jy&?;>=%xnxvBN252J@-QtALJN~Kow~W4T=?&Sc><=nSw-9#M}z#isP8Rs5WA#V?f3D zrql|EAOf;d+e&2M$oo2aR#3b-(U8??K^kCx-)An0(GwBq=Y!77S=LXW3G^wEAo0%> zJzCzK?YPBMo0V>IJq~VzZ}Rg3I$ytJOURr2kb=%<`bDa|$800nw5#!^uOn+4tkWu-Quh)TZR9W@L&EZ<7Y&%HHPFjCosb( znDRmgLwHCf<+EMODZ(kt+8mL>fXwyy;ypE(1;N9_8|fDl73ItdrVDw+AuP?0{P`4q zaVU2|o+rWMd<&l6gXcUZ%nQ}!faYhwa3P*D;&}@>^w1HthNfMTg$+M2pLmN>z2G_g z7PZqOCgu1VHvBAdr!OEG&ya*k1G2o-hu_wL9PKC*m>@F3nZQu)+mK8jqZLm8GkSr# zi2E1dIgGEN;h&K!e~VH$l@zYG;BkQmEJ^xo0p|2uSnPW6INw6@-QYQY0Xg&-9sYZv zKrCod?Z;4R?^{UzE_j;Wg6Adh9DWO)*TEBh3mykr@D=co<-v~6B48e14C!6g6A1Nn z4vJ?I7~)wDo->J3;K8zEAW9FDpxY9qgm@!?(cV(Rqtd8rqgFe>jAOYS#4*U3iKh%x zOO%wthiW$~%P^|9a$f%_1Z)972O=ywi8`Jf?FFfya3P9(|_W10HRrJ+zM&vnw#;cHpLW zpPX|?AcvlHVat<|rulplJT9F_=vI}bNWPNRK*-~0npNR}U-5MVQN?Lk3|YTPbM&l=Wt;hWA?igrJhN_>;%S&t*YeFdq-+W zwbMT)UrM4ApTDnnrZ%-~!0>0;Qhl@~suKFRI0%&NL9ap7QhE>eAWvOlR){A@qe@W5 z8xaKg<9;P+GSj$tCkem@r=#HcXbm=1oKOCFx5h*BuUVl7ey4sur18)QHY?--dcPUG zpVN47Y7U;ybI%!6nfjW>V`m}B7ByD)*R0d$4)Z}C%jkZG$X>WY=elKTF zAX#PI)H@~X_F~8YX<*ijp`sMbYHC~xX6<@pHH8(YbYs~6P2Ug6VFL#mvLRb9Hm^K(x8ElY1WYXkeu%UPnI%1Q)e3pWKT-s(XOyApjh&B zS7Gg1Fa{ndfx4#N!_a4v2SBF*W9BP0UKo<}(XR!M04MF-*N*>FfK`fNXuVxdZac|I z5}+mZb~%w}JM)esl~2FMH32Q#l}e|auFnair9Ojr1wgQUp!4t3N1v-Mw34|PeV$9` zLpy40(+zbCyxta();TS(z3rg@gGd^R>LIw;OTRE%KQNR zGxM2NR=ST#9;!=@RH{S&==P!hlJ?Ol2Gs4d7pNJ1Ota5V!1Gr2c?mo-+DDtCUIULd zN8!vQ77pVTcuCC{9#rDGK-*DV>;cbL0H+%}x+S9E8G8$!4}!-@?*tM~mWB5@1G5*U z*cyOBd;=I4z6R#I$Q=fSXTQWeCUvI1cpi?5sI8>W-`5uhQBUeeUlE-Fnuun_iQm+Z zK98LTTJ{Cab)>!V(N|xGf#Oyu4y4GM#z*&68g{b3=(Vc7_)jWEZ|Q#M#8QVw=Y{6F zi}AxVx}B$+!!`d|n$RbT2UufaLmR0(J#8=baZalbalHbbCe~T+cLfFt!xYjQG=8Z) z@>kHxj}l1#1MBra zs^LP{I9dZr-zWj+q-z|{WBxkt|LN`eW8*lk^Vv>O)kpvuFbbko<7+FRY+x&-L{dx< z6i1Vk$W&G?B9#zCn!V%QQ9SE-cfC7GCs{=gsS^;cVX#186G`B*je@X65i@DfD1qA$ zg_{aV+7d>bC_>Y)Xo{+h|DY42b%Mm`_vX!yoqc;JX=`|(AGdGc%=hNan>TM}cV}=% z)hn_ZMyTxTPEKTc@#qMD6FjU{Dlt-bg*Ca5!ySi(i%?>$$#JXsxUrIDULYImUCznz zv0gkdsY4433seSag?%`FgwkQ~n9Hs_+Ez!QXYM=LXBg*rhF2?%ZS1{4eTTX@_43$0 zsPr?jKvvURKNI6rx86K63xl`j87HsPwH&RV8LJgfgHE%!#5X>rRt5n~x9CE%q%4mc<5VuPF_OVg zccQUA(_WA?nv5TNH}0{FXf+ECA9@zqZS`$9CWN&?7|?V$}q zu7M|Kc&s)!7ir^uUp!nT(?(29wf#_Qvo@$t`N?R5teCYyeGejsk{QiEYPC^smR5^3 z?A(Rd8LTo=e}HWJ2wuoG;yeiz`4o8SS{rN!S3se@ia)SUbT`^UsX1UNlxrJT8FVu4 zl|=a(C~1%9JGi3RI$Jo^6yoY+qLX`J^gBIxOz&n1sdfGcN;zbTQUBjb>sSd@jN}!Q zGI3M}!m-TpUg{WRX04JuWfX#nM$&QcOryHo%4E+ny&pU+@Ng>=523nb`p%p!XTaUm zzl^nXY&qSns0!iPpzFhKG$M=!fO$ zK3;Udvxx;lXNOOd<_)^i(x*Ym;V-okYxp^$csySMWgV|bayiE8oHj0?k&@2>G6w6e zO=I{FF^gYkL!_6iLQ!e9>wi;SV0EhZY!A zj$LH!;BiDRzp+onLj$(q}4=vch_$V zmWM3!Q55wXUd`^rGOdJaZP_cvw#6rHTTpD|C({$j{DUUFDyK?fcR-QV- zm_k@RO0dTvA$y(s_oc(+b6guAAQFcJ-c$AkY7vAl5JU;|w-J{$KjqZAs zUjZe9Z{A$4hd}9gl=py=##X7!BenW1^iQyalCj<#Xt&a87FkvQifd&ZU3>%g*pp0$ zQ23{@-j~6{o}`T%c$5-K##(-8TW1LyDTNsHPkO>a&sF#d%VAK-CHRS+u+VcAHM+$_ zR>VzDPw1HmKRtO26u)vthr3FvWOYY;5L~@cI;4W>i4XN@Oyz(@zoZ4z(;Rw+!%uTQ z0Unv?Ne#`-`AH46gy(=M65<_8m@ z)2hC&d0LtDD8t(V{qq8SED`#H0)1JaZwd4*fu2c(J|NI@0)11UKP%9u6QLgx=<@=d zB5JQKMxPew*+l4RfliURhc&z|(4Q3O^NG+83iN4#z9!Hg7wEY}==}mcBhWhn{gOam zPK18HKpzw6ZGqkp==DVCeFA+@pw|WZvOsSqLZ=y*XJaD+0)1Jae^8)z5~06Ep!W;( zd4W!|buF_VkUTBMm1~OueNSuGD=L_G?kEYn1iU$Awj zLhhz1i*zc8#69a5I*ieeUMo0w8#=689bySZtv=vCoy;8Vn^uR|%_a!)g_U9@{Jz@T zNvrxvMEt5c_Rk<5G#1>ZZd2Fzq(Nh2Tn_Qj%7f#QB&#i3i`{3dJrS!ApufF53F4Vp67Wz3&Jh!1AE~mGCHc{U< zLO%nyp`VZ4hJL8gSwC{EX;~eOfx4rec)VC@E#tHUtj?iirWo5uD;;)eQ{8vAZQUb{ zj!QFt?`a$SKJ5{DPN>k;x)xcjOZuJLVJEYujP#J%TCbH*%463Pekwfw0TFLZTa9V- zQF<=ZMPqk_{<1*7>Dq$zGdv*BUl!xeb3NMKwCUiR*QUeQjm&Xl3fF67!|1s?&#_4p ziz*-G?1FxYdfk!czaccgBQ#G=QMWS7Ji6sHuVbw-qt!b?zb4S>Yb6hB_%+ngql`W+ z&@+k9Ul8cq0)1bgUlQokiO_ch`j$YyDbOndJ(~#qd4awu(DwxTyg;8%gnm_^ZwU13 z0-e4+K}I-tWAnL0=wA@%>jHgOpdS(F%Zbpp1v-uRx?bAXT@&bU7wGjw=zl5DI|6-2 zpua_+w-cdn3G}u=zber85v6GTXm8U=gnmV!*9AI_l^RR?x*Gz0EfM;rKwlQ>&^rP>E6}edLSGZ;V* zR-o@XbiI=EH$7$(W)|tnF|)`JmL9G4O)U^dN0V8_+QtnC8NYgPJ1Y!4TB%nVR15Z) zMLLTaU1H?dyB2h1F#`z&eXnrY?kJjZs8ZQMog3HV9W>yG9!2M*Z2 z!)-B=b{3`Mx}2$nnRkz#b~9+L`IoKcu_cT7vK~7kn8nj7)@^d?YvpvjwY-T|NBaA) zm4~bsfnsD0jd<3<^B`J>?#6vTNIZW6o=xz;1%XGduM*E^!PDvSrM7wJHU}NzkNS(R zw2-R~Xr^eJKQe&(s;8K?7}*4aM;YFWw%70hV`DbgwP>zmMQaK8GN=&XJD@&bfv9?T zD)sGWEJhAO824`2Bq-*|BlBcIG4{-q3MiE5iYbqQvaU78lqWz* zYnhqy3@B^(Np)w+XF$Ffs*lZeH)Zb59=l`Pm?GCI$sf|-YQyuf% zfdol?7(9L2Hn^NW1%(nzNWZ>B6f~iuya-BK=_jr0^<7ZRiW!&l1658sl{AS0L4&wIhM1`6ST2QS^yjwy8CX}$#>(uULg6QB%wZTbu- z{a(p`4vJY5=34wMQ9P~wGbp~y-vede!}?!PD6u^HgvHdLr}?|_BAZzkWvqjs?0DAl z5K+96XF*KJ4Iv)Cus2mULZs7EJdcF^oc?jU_@Yg}fdFA{zD5MR? za}pHuERrS6gF-WUh@|!W7${k1>kQSQap56)-eYcFg*qb7w7oX{04Ss}XY-GOvg~24fwJzE^Kno*UOAtk zTpr~Mpin|l8vP$ZN#n|C;|3_(o@M?Rl#HkO`)Knl6yhX21j@W8;Up-VN{0sPeV}Z6 z^3*`#w@}hrp5F&$!?TTNK$-S({TV1!ccx<-^RR)Mf6IotRy zcnHYp`BkEz^3D?8hA(W~C_{H20EMJuoA^C9r8c|C3nlpW+E=~%)uplo@y zI19?Il^Kkwi=eD~HAMjx7hwsh@!|;Gw?_&G)MHTEue*ltKKDjJl@uJc_nXvLaxKL`(J^w=~><1fl>#L ztHpItC^_5M7Zf^ei25?iOx*W@V!l1$n$oc;ZO@0(K|;$Ov)(xF*&cOiqWd5XH8R+CUfE z{bZ2KmHZ381naeW#@JLTRpGHcdHTV#<+ax+C>@)NNFq$MYg6IS=dKK$!;=?D+iGDK#tS%(6I%?Ii&>Pq zQo;d*)B1HXeA*ura2HcxUL`qn7+Vz6X8tB$xm9U3iw&G%zf@}!P`LU8vTPf} zS8KQ8(tAKf!LVuaO8#sqz~25Pj6SiVGcUb8&BXY){xySNL4Yms+_9Y8x0qPOIk5U9PfcE!ZJiu?SImy$seo>c zL02_pJi)@yu{t*84i+z>>?IV0V`NX4g#wUk7+Zz6kbmf?$)NTLFM~8Z6p($i%G`O& z=-iiZRjUT**g>&`zQ0;f*Mnv7pTOy{ILsWIXDtRZL01vj^K^GL5uX(HJmhS&axYy% zb8=CvoVb%kFb}Tgq!5XJk~rk;F8N)V_(DZolyt#R>i zoi;5TM89j#;xlSg6P2l#=tzg4v0A0`AdsC-I-z=9fG46RI{dDYp<~0MUcu=zI9m1* z9L+vEb!L*zMn3u82|hrQP8%1#J?N1E%+wBtSF4rsxl-k#{=z8cDI0y0WMwf@(4@gD9xza^8cB9MC z{X#QkZU+?{5)4@aoYTVsQ33g4(H39?C3=AsE%+N~HH;#rP?IIV5z*HDhj(;&h*0r3 zDZnuU^kAwqLu2j37;3Gw;!Y|!Ual6iQ`#URmk(b&Md651>WNZI^Bu1>#*0PlDn#9Z zHSTUs;0RaL-Ya;jU4mfX$xd0RQo&5~RIN%TnqRDxW~vjbI0&}dQVh1-63*s9)S!AV zzI<-rY*-APD+sLU1@h2W2q~5WN1VWJRj`C3igdK(?4$Q>E&`pdR}sB$cg3cbac{lL z4y6WUekGn6dBQ1tsN&;${umZ;+@QLW4n0gyvX|VE?4@$khet<7j*e)7tS4a0Vut{E zdUjt5>+00HvmEivAlAk3ixIHWoSAJ64e=ox>a>fQ!qn7h(2nx?PWo`FnZjH!H9Hby ze}}Y0rSa-;fUdNNPK1BYl^WGj<>-+hkH%rMqyd4WEI1s<7(T?7OVN=cUz~1L-d{$< zmam+t;)tPQYPQrmQ)MSnw7&m14pzc<8k|M1)9S*g`B?J+qgYHSQaL-0xr6wqE(n~_ zLrW*~%@&+IoGhtK9cncP=R4j6bcudxQzrL|*xiNOT8xELv$aZd3SmJ2`>!{Z)7HYE z8RNo#8`tylIkiW=fNH{Hl;M9!d(HBtQczo>Iu*{*;JJc0lWv&Le6&jRXB#31?J?GX zzoINF`A2IF3RaqYWY>8NoD|!rR-#Ue=YvLfT&c-Y1=E@d_<}NYZrzbG1==39M~5^u z_K!B!E&aaL5)P9_b1BraMRl1%{YmRLztTL5&=XTCmyegrBDo+G)*%o+J7b{As|gzn zjHU@er9QDzJgKI5x@GK;?@H@Fm?~|m0!2vA(!zwa-<(^l40V!R1BD{?t-;9&ti z99iZnO^`7>;Cz}n#2e^gt&+Z-!q}NFQWwM-Qw6AGlpevLqIiGB>Qk%k|JCKufI+if zDwLNH6`Qdec-^(bp$7W(NrZx{_2c*$jpCZAYD+b`F=@zO_bi&dmFtJLCA@haS%#YQ zbLG0gXhVatT8OH2*R_*aV?p(ZrcRdf=VQ#BZKqCl1qH{b!$``E#Al}3)*R-_g>yUx z8)jpZ!h{^dt#s__!9770i9TLy2I0u+C!4xe)1=alX-L(wm`@-ld~-(aK8mJdHT$ z9xhz*roYa%!}CYCu*0bO>0o4_$4HGDkO*pc%a$5g+QV{L0hW*08_|m`-K|0>e!UXQ zne{6a#ygl1t2(<}yMRGUyRy34$JUkDWugS-x5mtgoWnD4OcO&>7#Rb4|1Hx0NOI!f z>A!FZ{#pPr2eR}@Eg`AhK_2S4ab2Tb+tmeaxo#CU^vi%r{*OeUe)neZwNOWqKIyab`(-kCiA94cLO4> z$PfaJ7vTNHWR)cxWA}0g&QQZ`92ygqjVf@K z5B*)e6%g_KA@Afmwwc+mME=|wK0<}`JOGDB{7Nm4#nfP_l0VDyh^5s*uS4Mh(Ya>p zT(Ckj_J}jqE}f0t_@Ct&b@(VARiK$?!!t_P>^9c*JtLY7AgTgz3{XbbbpVReyG~K~ zo~$cthGrwS8?orrW^_nonMMAd@@Thi9!zTC- S$wu$Int`)rW1dLIP5mEBdS4*` literal 0 HcmV?d00001 diff --git a/mk_doc_ultra b/mk_doc_ultra index 5a393ff..9912d0d 160000 --- a/mk_doc_ultra +++ b/mk_doc_ultra @@ -1 +1 @@ -Subproject commit 5a393ffeb3e613fd9434085c9f56c43c51be71ac +Subproject commit 9912d0d488819854a629a860b29715c53d1995d7