From f6667ecfb0999d82c8a21c8625a339702e0113cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sat, 15 Dec 2018 15:20:22 +0400 Subject: [PATCH] :memo: Add docs for custom response --- docs/img/tutorial/custom-response/image01.png | Bin 0 -> 54866 bytes docs/tutorial/custom-response.md | 115 ++++++++++++++++++ .../src/custom-response/tutorial001.py | 9 ++ .../src/custom-response/tutorial002.py | 18 +++ .../src/custom-response/tutorial003.py | 19 +++ .../src/custom-response/tutorial004.py | 23 ++++ mkdocs.yml | 1 + 7 files changed, 185 insertions(+) create mode 100644 docs/img/tutorial/custom-response/image01.png create mode 100644 docs/tutorial/custom-response.md create mode 100644 docs/tutorial/src/custom-response/tutorial001.py create mode 100644 docs/tutorial/src/custom-response/tutorial002.py create mode 100644 docs/tutorial/src/custom-response/tutorial003.py create mode 100644 docs/tutorial/src/custom-response/tutorial004.py diff --git a/docs/img/tutorial/custom-response/image01.png b/docs/img/tutorial/custom-response/image01.png new file mode 100644 index 0000000000000000000000000000000000000000..281746b26599a709e3980fb2aefad76b62c68a70 GIT binary patch literal 54866 zc-ri{Ra9L;^DhV?xFx|oxV!5~a3{gt-5m~^pdna*;Bs(+ySqCCcR9Gb%i;1Rz|jOs$=t=+*~HPv?>8b8)O#o?(T~dR z^9M_A?#e1_J*UU1(Ng4Jf4`F2dBgWT{etQJE2JH|@3WpdgGZXvD%@i*q_}{LaBi3C02EWsN5TJT)PS*uVFA3fe5s3&3H+e|D z%$SW-uWh?%YgRpJ!=}NKEEn&>A7s$MA}e-@Q)Sk1=sHm$#?Al)0x7zvfBbY722s8J zTcYT;T=@}^Bi{=!6iM$7_x0(ov@|CS3r)?Bl&|;l`Y@Et&xb@tQnRziTwFLaU=Qwc zEsEVULfy&-=OTUo_O~d(u!1-R`;Inw@~M380!NDX40k&(1iww{+Qt*a4~8rp^4jsn^tV~p z=(8o$O~rMBq1voDjaWe;X(>$9OcL!wfWj%wg4A5O&HE@leq1g|c89vgH7IE3MI!a;@3DPn3fYI1<)Dz{lo29&K$ zwd(hZoZU@oG*3>;u_&CVFoHDL--La~Q?H|@dBu}{!O zSj0dRw!}-@Q0<_htP!_ z&oJu=@p6%d-j$44_#nM-W~nR}XdGxWH&nxRtuYjb1h9C+WH?O!_BNb_DTYt%Pah_X zjEoFUMKv3%Ud0%@@d^-jY`yoL8vD&%a^f9ksJs6jF`h~KnA#t<&XS!DZX7x~JItR= zF?JeQ6BdS&#ATy-csMzE`2jUp4XRT-g6`B~P9e0;_QoEH8M*AiVlju`=IpA1i%QHb z@xfJ@MY#dEMj_yyz-^ zLH97nEw^y?Z=vJf%0_axfG=%xm?_=BdI={Gk2B`Al$4s9#gp++6x}lkuI_B@vWSN^ zVgde5725%g5vA+qZdJ8YG5?3%6JOA&>PpZoOIwVBt29~fm9;^;Z!5SrAuMy>ee?#M z8^9j(I_p&^T6Jq&?{VS>Pz0m7xyz5#=)O}Mz}e}7)9m`$Z9){%#NX^$I*ut3XVUW&jUCWsI!3O!|H#n?it?b-Sd}J8pkZAi7Pr&s*g2;?Ym{Z3taG60$H%6N$UMBXme_jGu%TK3(F#?R z_7Y1nW?skF!6kq6MTtp>xoU~7j^X|4R~QSNxwuiGC*f3zzbaRqq!ysoJ=4)(bw-4P zrJKkWS!uOjqnKssRqC5KdR+HCm$Ze44THDI0sFY6@(XSr{0X)7WT$|)6>~!%9Jo(* zV+Z~C{3fiJM}cJJB#v9dS*E=;a@hTQqv-+tRLx)>j9Yjlh07Sgo&AAUsBRaIkNGxW z$t+c--)XTg+9nU-b`8a&M_Ls{5B$+$vZNBi}>~XZBgsQ!`#dIuMR$}vQGvW^aQ1=tDgRKr{8xE zmZQ9v&#O(%Vr;)eMqXx?&Ruu0uARY{0}NSGYnb&FN*ZT%;rF=?DLp^PG;niNl8#Bq zXSr&R4T&zLjBuP{XYr4H;tMFeFRV@%-JLrr>%m*#Mu&6K#=Y7RhyU00}CtCuV7LN)wVnJm~i} zBJ0<#1l&8NZT*N-iT@M4WJL?m) zJT$zQbfU5~+w3WBt^Zw6M-tBfM}t&0U8JGLfmE2gB;YX4J5%RzcN;I=B!usI^AK7` zPlNFnNF9H1f@4R)B*5EFlN7o;os`Z~0rqy7qqSYFdkj2HkiG&}Jr}_1>R!Jyy*&by z(6WvXxjCcuDt90{#~#_tvyq_3{Fz-v+%8ANrq1qyq45PAVs_+bBXHFv88oFg;x{_x7n{p0Ya+ek0XwtF+jYTDVkT|~?h=RBkO6Fz$F7X~ ztV)WbkPNMpL>i5cE4ZI7fxZcrr&7Y}G|krXf0cMO_DMpqn-ZJzbBpZ&H|X~(uS=0+#3pYkDp90p0O|Hy=vJ>-{;r*si8c5%zK1=1NlsVA6ej zIAcRkUA7wmw5@Fu8#^77%HndT!9Ve)@W-``V%R;%-cBpjzT>rIA@Ua9y@3!0fvT^2 zJ|EuLm2*}g!PIO#5RNOx@Hns)5`Ikd-ze4HL_bGXJ>?eQB?N5Jc|S(Ph%zUCyr{6d zy}lehAC8GU*|@S1Xy!;GaU%xj?3aM?pVq5v>`YgJ&l5>lQWWl8y1@s+fI$cBqDa7! zS?l`a`Gv-mW7+y6;B;&``eQ6DeVUi>po5nX-t8(HN;;Z&$Y2^T-)G)xZL<5s6)HLn@TeqIPH zl5u{e8m5en4vWnkD{^)R>(%1JI&thB1M=aHgH}>Ikuw##@hTprdSkwz9$(eeBzNjf0DG#NJxx-^KgNe4!Xi zDA_FzuO+s22s${He&Mx)7dUO)WZ(W*1`DwnIG33Yr&| zP1>)3prGTkq|?;V5vyMA&%ozReBPrCh|T>V^%t(2WQ);CJJ#2DEH8|^Hp&ULF^6e` zW0@{dcm(mO`7@cXwGF^+VB@o}2GOd5NLu!YB5U-m2XbpbQoqil-DZ1g*%+Rv(Y?^t zlSkDrNZ4{GuJ$#L%yyCK%viLD7Z>w<9|p5tXSf<%nTyP&j*&;LR1<$L@jch^rlclz z$ro{L)-`O8x(W62dVR+H^g6xUqt(=h&0K>z)t3Gs0d5zrQq#*A->s{!@@U>C$P)7K zmNMdS@6GQzP;hT(q(5sZMF^5=*g3jQTDW&T`3r9@i3*j^;6C zglk)as*^f5kvi1X{0d% z#jM`_|?Yv!AS>|?t@bN@JAn_Io9la$Su&55N=gCE#lCen zMMJJTnC{U@3H#T-CsT|9<#Y1dd=h0Uc2poxc7I70=%$;5nkLXWelcLnpAls;+H46% zme5n-{O_=jSkhTTrlB6P8*Hi>o^=H<4F8%O-_l{~YA~2yCiIyMX^(lC3)y();gisqa$6i*of@}^`v)g z-Jg6VVsNwL&~eSdbCUbTe^HU9RB{m(o}?#hjb(-^gbjUV`FCljWV`+Sl)6^1t}l6! zx2Kx_JC)F7Mcef5UqflmiS)mQrZ`ng2r7+xbP7T3LO47+aby||^@}W6Q99e&+Kjmj zxDr_tIhlSn&^8t12oR$))glLXA|e(3%Yz(T*TAFO<`GcKv!E1Vvzu1JcCt)0B*mfw|yY?-Lr^RQnbt-ZfpBsiw}tC>yy;1wG8PtB;}(D`n6;J z9Ds|6n^Hl!$)|P2>v`+s*E|d87KrAZB=#bmZ^ONCm|@usxDj6bLR?z0=xli2OD@JH zW|gK(d?=micE`(;hy|Swu*g=2o}Y`sDhBpbJRCo}0=i^eqo5%W4m8xw&gO2Mb=y%=*$ z(KR*;uiju_h$uT_u8by%h>HicH>9qQ3-t*t-g2B-m7WABZU-MJ`GI$DRjjAni@EC!nS>1 z&+znBebbSLI4!E>k>6l)JU%aqTG^)5C!cGguh3tct_Jk}EX;P)=`J4*Ypim6N;Z`* zT&i|S-qjY($tR&Rg=FhTYI0}xg00#7q{YSFl+229JYp@S-;sYwW^D1rPGeJgob&Pg z*B~xA>c1M0|Lvnc9IN}us`M1tp6A59!1n#e1umOkE9uam-e_W>B_SdrW;pfAbIt?S zdmL1}LnwW`#L|7dUs12NRDm7s`wrY;f7n(~tGEYyx*vYH+C78>gaZ@ud}o5` zH96Y6_GtLGeLM8>N~rN>Cw6_feE358D${h$9gkNJ-zu=tmu~d2#TUbhfPB)ZgKM%& z1Y;j%Al+8S#cOq+8<^=7uO4RXRhuDlyL|3%1hoPbgRP^{ZA`mIwWRu(f6W+`$lUw@ zqgdid|6mUe5FFHK*m@IKt>WsN(NyMIRhg#0kiqbH`~r!v^VK#Iok8JH<`cQ7@Mwf} zb>9VGTNfDP3PSWcIy+`-yd@Ivlf(ilJ&)7y_p^AfCiqzV2HZS4S&@ zm7{`cRo-)Jlu#%HtSKVp!N9Bf?VHud>zhvY(F&(~dBq8(!I=;1BVkS34#Xr=X&z}9 z2TV2ec|Od<^;rZZn|i0UzByp_6RxzzeM;T$X+y^|6ceOd@Q~XbaW92!DO)X_JAt!T zwZ?XaY9+zZiE**wk*z)Z-jz4t)Ygi5Unq2ei&szI0PP!3hy455f28^;8UW7fVViaQ zLiwa69c`!NfkMz}A8tyRa?#jt`j;g4z&=3#y+lNpq5kjEl`o;_rRmZ*wtD53SoCxPec2vfw^K8*x^VeT z1sqLh)2juaT;SEc?=N8WM^frdj#`h?8u9o&oTqe^VUNBN*fl}N^mna1LGEA&A?qYh z#(Ow=_Um;730&SDyq2}&`r{Juka;_>E~E zwXnkAWTXek+q|eI&k|rla9R9(4m-@v%VT_;nOhljl&Xm1dI=?CT14 zZ>~HJk=DlY36_{#U={x&(f)X1moK4DX`|D^i=>-|Qd4u~Qwe9`hYq)pH)ZaWv zNu7@t6YW}V(WyFDnkt*EFR;HE4?%0&$d2(a%x#0dFj z?h0947bTm>9bGj(%h$XVQn7GX!PSQT56m~(wbrk)1{)a_9?%AWe9qq5EL73D-S%W; zG(Gn0FS@M2sEqr>^uUTBp%V)zZ$X%I<<~>=Ckif5ojnIgh%a_0;&mF`qTDk#)^0n+ zQJ7V@NLjxwdAg3}DXcgKsiDa?d!x@lJJ=j&7vYr#wqt!EPbbcp_Ij78;Be(ckW%9+ z;OIv3fb$fiQJyp7AZ;@d&g3#aS5IC3>u_ozlb5pwRR=$Dj_|nYR|QT3TqLZ3sZ%>n z3Vn16u(7fKW$$1 zn&C7Z&&kb?^?Q6z4IYQ~P15F%7zl+TUOYDt^Mb=pV zB{Hb{SnuN(ILEFQy;`IA-1bnC6SHK6UBNZsKfEGVu^{3aQ&`_@hrt#|{kwa1?H}6(&UTDAER|0@g=TE2`PpM&;L*xl7F36*FlH|H#Eyl$5z)|kEURDr z`1!Nz8J0ygJv3t>wg4@C{r9zt0$&l=dyLMjW7oggqTmSx%sI7eCnr8p@>A!{-<43| zSeK5U&;bCg9ldqh@va*|2FgoGmw^Ta25eKaw~d0t1C5w&l_&OGcFW3^o~IW6-D16j z`ipfXDn28`S)^(JS9FnR?6b*=I>meRtH#&`{NA%+?$#d~J*TuTdrC7ga;AHUv-A{{ zi5yw%a{G6}UejW+&2Oy4F=d28>D(i~9@2A-@7=wXZQzXVtVcD+z#WXNypDnAv4(!_ z;rOke7vlt%cWwh;4)KbWuDR77T==`j20?bd|Eo3k?MIuPrA5($NMv=FU#rM;)bs%* zjGEA^2<9>?t}Z+^&Rm6=$in3!c_@1;W64%z)2FRUHuA@yk+Yp>h2*Mx_|@Y+)2EEA zls;FH3P{YK{7}@Oo~8%>aq~4Ay3hm7Fgcm}^&tKhGY@<60Ib(Z`#n?`o;Qq0FzTkH zHX-P7-^g(Q4@Jea{i>*lAy@W3ns%b)qM?PpMgQIeOIPr|cbj>)sy&z(c;II;;)Ap{ zG5VM>Fs~pho9&W3U1dF%(tLjnsLu3=b%?DGVZT1;T#8`1;cdGJSlC9ADma_9%3D|o;T>;*g|m5*G8W(yJfQ;^q{b4wRE@AgI>>J zge((C_=xIgyL9f(GbD75S#X~Dc!W_oTOKLQ*Z60{)L-H&&ZP90U;s_xMo|%SGI(RX zdq-cpP7k?9Y|ZXq6APC#UOk9VlZHDh$ zpccK(1CZlVofkw)j^_NCQu$SnP>Vj`#{Ni<+*d6g&}nfgRHdMxQq_2J4{PA?yd#1v zamOftd=lqQ>vIN-gD(s>VzI9nbbLqJ1xXY8v+r78`iRG z8d?1c6MBV8%=4pm**&$~Nc z(|@@=$1xnOWKZ|?eJ0~H;+V?sy3z2qvwv{VXz!wwZYuZVt)1Vq&pe*vgdn2@Z%E#+Da&9n7j>e{@n!-i!c7xwE7AEZp)GFaHy}U3WIh-^8xXU{e&MF=H5t> z0sbgDqLRN=cD597jAm z00sn0ydft3m?jvRtwhc1vWLl}*6k~iRG?p<>3Q4|bG>~3W8lDO@lZEKU`b-ln% z{iO!DO&4p(bxXEekWZYQPmAJCX?4x$K2|tolUUOCSBDlWErLXvoLjPKI=Bo(#%3P< z)xX)2!!}~YkQ0E{SU0A&8%TZY?e}}bb?qL zoQR@pY{{3?$L|HjjT$)6DQuod$B{jm`Gcy*5(Cg0zJhfY#uymF;tVd!6GM+jNxgnw zqJ&w0G%p-MAzF$*sq(fC8}3bN25|;EB9J)4h&0q>XsEL%)!NCClfXzc$2o^u%T4rT zaF|c~A^6g}dI}}+{LRBwOYKh=^8(325HW1m63x;!ck@674>!p?Q3)RkRT-I&+&r^?+`5VUg0h6UsEe%d*6h69V7;bVcS@R18 zHD56Tp;ZmcFGiB>?6;e*b)wN%8ts}t8|~W{t5+upG^TE+K?E_Vmj}8+YUAi)ViWuM zk6Zc+IIZZG(&nr)o7(N9HIeL^9NaoVi zo*>-M-h5%U-hqqeL_r7%^e|{`J;SW#o-lc|)2&IR>Pp4k9O1UVH$?ClUj;2%$SWis zCT;uL_l}?ZAmjk_xf&x5lko&!Y zv2upK{XerG3!A3fM>^K?Re`aEYU{r`0)HO@uaE>iD%DDL1@4C`CsC0MhvzxF2zj7B z45}96PWnPw;Ndl0UTIm+mVI2&)g9nCVM;>*48=cbh<$Gm`I|x!aT%

F4K%3$P`OIwZ4LC?SGk9UBuBlQ?}$;Waik{$kKF-<_q4y`|)XB5T*fd5tXylTO1L$(yzw)crx7yvV8VbD2|q^m_*<(t_&935?jX z@@j$NdM3ukERTcCQ^5F)MK~LCoS!}I2^20tFYk}$${-IJll8*IPONxTuxcuz&FV7h z-bJ&At}b16U!MA_z3w5JE&+cNVmRmJ8dHcWUD-^(DDATQ10q$p|I+!^m$Px|eo}s? zkNaJ_;JZf!_OrI!sC!$UMJVUJ`ty>Z-SBp8J z(Er`*=;C)j(bvwbkxM9>vrZU7Dk(^sZYl_rrGg>RBhhA}M$0RlS2T+>(5_&HeTh{o z@o?QO?}7^q^s6;ll811Ed??l61J$Z8gE&zbu<5Zwv1$jy2M;?A9oO6aB_^ z!;%hEYjizSEd6&utB-PwsX`=VCh6ZBDl#%%ng70b_~y-k_cx_Y3@&M})dZ*=kBXE7ME*Q`cp)t{T4`sM3edG*`GvEonOI?N}c)J*b|m!x^(i+l)BL4MC+f zLV8*Md9KT)XXBmrO!zMS-@?z6Ed1}EuHIjl3TW(lyt^0b8EHjnS2#Ybw@K?@^wpGX z`s`Sl{07eZhSt~0F2Ck_*r@zdt*!{Z7zcHQnVxv$fk@tmEaA)TF!vC~QCGk=D-h^v zI;y9*C8Va$LvBkf-P-eYgZj`6Qad;oyH5MLhj2RTbREti@DR6hCAC+T+w8D4TB}z_ zZsCJ}k#{SL(Gjuy&#~!)TN(EU$iiTXu(?|cMb0A;N|Xwxb={e($IclIqkK^ zAwXI3WJe1-_jW@Id)<6Rvfd1!U!gw2?|OLJ?<0}kT2e#QP2yQ!zxv4CFE{n%ClB>9lqQ&!^61FC3`ztCk-BnFlo`guj5+RcNsh8{fB3?NY%2a^WIh8DWb{{lNl`>=gYC?-%pnOhJzX@swH+p1yf1cg?c^rksQ z)LH(n1^D~3sk7NpvO-dECtC5Q4ewLG+SG4u73RmAF`v6fz8%6M_ZZ`HL0@^qmD3G| zXs@&!{Ni8~jA7)z`dM%1`7rd3yd(?`-CiPZ!TjeVr;M9mk3!x!f(3-ht;SmQCrhJ0 z{6vrCm$5)>)IBU>Df2=#Tuk@xM2)uK&_iaYK35_UtxK{tS5ESU2&$8f!lA``REx_a zGk5i!#Ph*HQ_lz4C9fBon8MTr1`bA? zu$;V!LmQG*9(#qdH?1HZMKPD7a6aWLH1Z#+2B`K#%bmH+_v%g@F<;6|IhcHeMvSL@ zuK}h9GW3;5wRYt5TwGCAp7frswq_Cyu|383u?TGgPE4Pr3PYROCTix~g&nsl?603@ zQ>y$K@1NQhH?;kdB66zxU*mFE2n76SBAHEzmdOfQq6sUto^DtjSrwg@T8o)szn-xI z8f{xv91`5xP9X>_KOqNKMnr9obf$qk)6U<#ypj?^Ds5`dmt$B;)nd1?(dcbJx#o4d z&#^W+ibzR1_IFVNnoBFkD#yBK9$17CSCV{${$W-NW6O33{7=f!(CsTNb71G`wyyuc zA;Fi{IkB{*kdH#Ut_T;Gr6=_irqr08SfWaLfWG;*k8WVk^)+`(j@kL&U6vh2mLG!e z7|Ze)Hn){p*GkyKBDj!O!R`;&DJS(21a~9g{6a{_>`6pG0#eX4?-KEzs80{FTC1%4 z9>I{Dq~IvC8GUxp)QjmEB}+t@WCsHVh9p zxb}wLT!>UVsGj?ST0RwnW%UC9B-lL6!p4eq1>YXNc7@^cpZ z=)1?6A;Kp$s_8=Q+$6J6z_!pnFGNR|Sfd8MM?kAmvo?Ng}2~cuf9)+qbZlQJjbioscgOVL0cTw>PQ4WG4 z^N(Lo4LomXm>?i`yU*noTteo zE(~KIlyt1p_}`>(AneIoO~7R?+P2B6H@oWVbW8YWH%FjxIgN;O*N%jcW3w1S6^J4W2Rr>>@~eK(*z^g%>UsP*`jr-op)oZ> za(vlpLSVxs3<65kmu`^{{%{-v^4${_2w4O@mFD2LS84X_ElzHHV3FQc?KL#26ekMR zm>$%@W#ZX@*^9b~Qf)$>J3(5t<-yBT_Fpk|{trL2a1~b~H$={PcCNOQ?hZ*WjZBHv zrO;F#$aJ@Ae!Q)!Jm{IY5-F)IF%ua=LF3(j_n8~>AX(}(U?T4}l;f2BqoYv+d{P++ zKzB_$`8C&A?aKk^UcDme9@{gmu(BSj!7meb(N2RPo5I^qIF~vUwWM{kyMK)Put;+2 zxstnG!eqq!9?<17H?do4*AxQkOae*`&Fxu??uU^EY{NJR@)g$9Z~AJUHJ*p)blm$(<+Q zy^&A;gzmE?_-yw^8H!NCmxA_!m~YbQ{4x#jcK-C*d7mR(H&>vd za=M&#kHFBWqW@c3cU@fTc5cs)#4D`xNWvcA^ndZGa^-`2Z0A*LbDtCay8%wl(P*OH zg4U)Xk|zk)(*d4#!xzCI1!B+GM8qq{;?E|l6yBT4M?6v8YIZBaX8V*#Wo)ix7e%!G zX=(mDwwzzCP+ALw&ehU1v={BprQ^)5*YCdU@vpQsei+y;ebf{$4hEK&MXWd8j7l^zxf8dyyVMnE<*{As zj5(7LM2?US>+)>=7V%i)Xpv7*?J;x2Q}WeStpKsLZcl((0gsmS$lOcq9c=SbyjMa> z5zTsAypz?pPGS=wci5OOfsg8bXW@g3-f4WLAAN1L&|z@oS`Smk&D{E2lRgu&QN{PG zWJ!a5c=meWp8o|8y)_^2rXFm&%ISO3CS({7XDT*E=(;4JSxzmD^khnuPkNuc_;L+t9;>>U`?d z*&+I3o122rXfXWw_nMp$jka7ZP&)M+=P7&JW+Wc#lZhrB3LJhe-YSCHWr3g`m09${ z_yeZ5tDAw&Cf2ovF|SJZL_p~#l(}fOdiAkYA4Pt}-3(xi#tnz$aKVcOs7QGhYX&$S zXCn?JwPp{!RiC2esY82So_rxTc$;x1Qx`zx_5^=^)ud_tTJ^Hf>fFpa4>0lk*c;{r zk!K2*z_E`s{1eub$U^5`-0_Tli2lj(3}#k?!_DLgywo-3F(2VP(Fp^IyJr}lfnc{t zVxrnYjjoRFS0!(2S=-rrz%1&EFg@hM?VY1l6OkXg0II~753?@a#TX?)9RjFYYt{Rmw$;+r0{5L zDIpa44R47&W9BaI-1lew=iB~PSXupRCKBG$yZ7oQQIxWnij+QM_POK9!w`1TYcA4? zF{l!AzR%<(|DqA_6gZZeJ){$nnvNr!A>D`E&s(0FtfoZZa!NUkuGir*iL>MfPDFd+fYh7(B|=N-F6=D);sRm^>f8=`o@CtvS~mQNv052IBNg&( zsCqRB!c4WN#^Ztaj-gz0if-q(f-#9$bK$y6d=4fvl6-EK3SE@m75b<0y#0HWpSMA5 z>c1u@KT`9@Td#JVL}4X$;5MC++iC#63Y)n^Cci21yrF8?NqaHuC_{$U@WCPQY>?iK z&nbS57!f%uXKGP}si_W&U4cxi*1gixCMD(c7@K`Gesv&8R?W$}8|=O%Y+!AMRb(0p z!6K-Ih+x$%pGnY%{oK&8UHQOkH0_y%uzY`)t71doo;}qxyUGHs#|imb2H+$*7fKhL?>eEAEV}tox6FPfYoi-!liDhOEE22%RRf0F7WeRv zeD@4&kKZV-$AfA-I2%U>QoZ6IV!$#3ZcV&T?_d0(DMz0xkEk%8GY8$H1!cFa7wrD2 zIEZ5%369Cr+g^C>xr=;_o~zsZCG)aMR)d;1>4-)mM~I{G^692#LQx1}DFm>iZ+4xS z(+=i3>t~0beOOxo*4lL@HTozB$ix#DDPzIOqcP33g^U>$ZtMmVhr+gcpdwl=#X-DF zO@@9%aGbF^Q@8rU=zVs70q_Gm*P=GjVABV74yyGTF7#&KIRIGA~vmxIb!WzBae)&EZ18&(A!;OUY4H6x$8V6GLI z-+B@0o*_&0tVla8vA^hxqCZ1xPAF#|Wo41e0y?wNUCo7J^5HGzOxr;Ca!(SB0|ikS zB_C4=OuLBtb~ov^Hu6B8rvlk9eTbVUopYLx#@vR=m0^}zC0o0S;efto;d0ow6MD_< z{S?g$ebLI&knjBL)__u6is+d6(W7H) zRtwSZow1(q(k~!IEDR}7FUB_9i2xp@4>XkE2(FrMNwgv$)OQ(5WL1!J8`>^tFr^XZpCMM)g!-p<0q>F* z#c5{HER~Mv@X?x+uvdEH5Za>Sir(K%t8OB<{r7X$55;L*vyhto-Lt`qcUc7}DI20T z1|OBj;1&aZZ`bz%9ak2LB0`wxtjGd&K+VG>2$|OldMBnc22BsMR7XB`82w`V>YMLs zO*kF2RO5xd8n!iv%(xXN#GLhP@KM#>qzJWrT(ZHx2$|7jY#Z1vrqX2fQ79{l)* zz}wV8{DHRCrVdX*f^qXnRFo^hr}f*taGxOGM+e-)hk++tfI`-YtjE5~^5H^RShGw0 z5oD~YutIPs7cZCqgX+&K{*>g3zfVCiSgFpl%m41A9{)N--Je%kA8=wogib6 z#^s?@UJxZey3>U*nrmTTde5-MjMJMKyT*v4OL;SQRFCrqEp+g8>0D8SG}(kjd+BGT zdAFTmm$!kuAauDB?*LjDThr}|ZU&83kYI2`OhS@KT&4b3x5Dno)gHMJ^QAaq|6rCH zJ%W*YuXZMk+Z}%@+1qOYRWTxJ)|syhYZA>rf&ywS+c}$)e?Ivg-Y3>l)^|~%f4n$e z$msB%u{??8&>_?#Ly*y_^^-%F7+1QE_@|&y|NEMFCzPnfq0;}62|pWxN{M4knmV)i zCucH84W<8g`Om4RO1G7<&nliIJs|cNS;F6@kGyTZEzrrrNwyJmSE}2>G z)-Cytip+I@BL-WF`L^rTuXF@I%-xLODk;;Edx`hy=`(k1ZRZ-H-9srY*NH`(E0+uR zlF<}W(G;{Mc)C*mH?WkaJSQamWAA-?xfqo6uu%!dt(sj*OmUcksX=hfW8nmu=8%m7 zBWbZW9AJdTK+4B&9D53Ad0e1O*&kMVR%dERI*9QpDYjiqaDTi~I)D;1yx!KtA zB5Z(n{;gO8dy@Kc{oh>xwzXywpuqy1K&_2+GqPmSeUnLa`!VBIRQINeaiWV;U9~4_ zO=w5t%7(+?HY@|w02>=mmX=LKznoEjz%5}?{K(wtJMmH`BXP1GUctTJjUJQy%74US zGo_e5No%}y@D86NUsPPy+e_ZPf^x<%A= z+LqR(c~*b-H2G>`9F=|^Xzkfjdi4YQ6HDpOxF!6P#d10KY+XMqAx)K*17Dh?mS`E7 zO5jnI>2rT_reZ>~z796^hG_bpF5YwnqoB0$pWLotC%^Ay5}~s(%G`BREOiJ@X3OR3 zYISLAeN}drX#Z?!jR)-;-Pp7KhacVqUHTetNrLb$Y(MKx{Zy@F6D*8nGaS}d4^gM| z;E;uXU-%ij5i{=0#K(`hm6@zoPKB@M)%$QJe&h19;8$Dkgx};0a%mVtDa&Vl){Lfv zB~>oz$jal~AeqYg5OA1md?NP|kA5a)YO+D&AQcM=x>!q@%oE5u;oCW7Y%Kb#HuGBs z05e)GPCReqvaaYOAN@A=sp1lYhjPd(XcaBB-1UNYLcVks;> zMQ_}nhVGng&Zh=pstp)Ev%`yZPp_xSG?Kt71AOS^>HhrfC&l|b%Wh2<_DtobQ1M?_ z%sQ2=dN>xUG21e6r?WUf0RaxFm@SohpQk8V41jRilqyX@*fxJv#mM08CCa1+W}}_k`e8 z5kh#)@MfHiQ+-Z$!pySnhZSb}Q_ENy(@#arh0A6j zkI2t4%77kXX*R}50}jV?fEvKwJ|Fpx3(rL}I-5yJ*~H)IHTQkD5HE(vXq)b{>oQeL z&PvJJf+zw-;{B9iNz%o>lXx+cl;RJftdAUDq78LHin539em6;*#W>g}@;-O-RIhy_o@lGtc?yMl7JoMGo6215Ey>yC`K57YJ{TGzJ_>}3G)`v_wbgI}^~VfLd`z*$J~&)TYfluvdlXAOML>jk6@WutSj8zp3W-lbr+WrF6PoA4&(6CTjY zovJFkEF6&{Ak9}FOp6B=mno4A?az-KO1!<%MqlO3;b~7dV>6~3rZK)itg`({JA80X z$PW#6vsWxOdp{=yCc0&Kjn!#uL7(CepSDC86InoyXBD@1Z3V3kp|3?&k~)zWxK`_J zjFwgY%E9+j;j|5%F1OV@4^|pi9i?Ph!+Q#HODE~SQ^d+@L8=s&fi}ePu_|l7;65jd z{At)_{#i4ZVsV&+A_RWg{#4&MxxK&ACa1!h;!A41WCgys7ZJ^%)W_-idgM98`J9klqu~z+00;Y-Wyn>{+?ap|WFE%w z$wzl=eD;IVFUF_Hk>!CvfQ3lnFb8^O+50XcJ7v5u+SN@;|zLQOn+RN7CYT zzy5u-Ao~t2#o;4~Yk!Gs=hJaP;YzymMl+$uU@t?#Tp&E0PMfYP=nrf2LwLH61;TNR z%th{M^Sdk~vsQUO1!o*YsG~?`t^OW8gW!O}Rys(G8{Yq7?=7R^>Y8;?2mxY9g1bX- zcMl2f?(XhRlK_DP_YO{QZ`|G8U4u4mjW^IYZ^--IGsfQc-f{n&aenN7)vQ%(^_*3+ z=JQn5Y$`6M1!vR@&N_nB+>@U4vuuMCG`jb(pEz^QD>5OfK$9M@Z@I6EvEI?7- zzt(nnOsR9yb%(=bg9UPXy7xb)zGsOt`X_wUH`Tn?HKTkGGW3RYuS| z2`6o`l~}_N`cGBdhBK9QGn;tGrK8!FevS%~@}KZrQCr;tdljz0jaGS8Q=( z1SMs}k%RA-zAM>ldEg%qiHM1X6_b&naI{zh8^7}M@=`6+O&T5^F3lU^sv0c*kSE}X zkiT-xwP{{z=!W-ETBE{p(vrA!OZrYuTdEgi?}O5(JCOnN<%{5@fBhX5UMh{#SFjm$Uj{$AzXj&UKHd3NJgOeT#)#P(|*G1BpNCCSPs(P@03U!$V zZGgkdAtu>$fm;s;ey?-W#TuKwG>_E=wVH(;EPcNRzPc8{w43A)xt5TY`d@?oPIEOD z&i7nSt9SxuIAC8oPcS@_mk-}9Jmn<8#CB1Nm)Ce)^Yn>o<8(N>V(&RO@zx;g_Sjon z*Zl+mZx|Ng5>KN&jn88s^tdge?}R@kunJ)?Sg;4h1p6HtsT9hhfg_QE&@G(8)k=oC z4VMf+D4IaL>;}3>X*nR}u{>zfvZU&(s@y;XUUj2?IBENC{>M9&dv3uQ3YYsc zd$Xkk7&P+tBTI6rJTdkwjY>`KcBA|!&80;nT-l}+qd*7$;gTAK$KvJ4gOiqT#5Tdp zN2?XQ9ec2i+^^qJxKS)1=b10DI@D*SaGW84k)gHe-GLDx)5b1+2#c_0PrYdNkCi?2 z87 zuFv&xGwcysZ8LYQQJ2KyM84AGk?(%A_|G4wOSD{yt*b_8nqT3tJT{qOIlT7Z|NJnU zK~HBw5V<=W07Q~sa$LGyV*>!5k#A!uA1zMjQnuQ&T}c+FSrYgGZwI2K*@Y}*MVXUL zVJCf8oI*Qn$Nc6dGRD)O7!*vn=r&(Y`p?z?i9Z|M;{HsT9+U=tcFCblE(Dc`tMS+( z!%rNf-$GY=o9$v|H_DYgSe(G18S{I!*Lg7lggCX1dTYLaouUiIQvV^Ca%&?LRvzvI zOmBZ|bBwq2g`dKq{`u*GJ8dRbVRe0hJB0nX>3m>ulVG6v+2H%LrYDR&t4Sd4wm12e zSkU`)R>xtYP$fU3gx!1?7nT2z#d@ZwW(G;4oOi@aO}XE@N4eX0fuIayXz?cK=#1yK z?TiKf6N47O_TEeZrxi?xo%wwu%|vNnh4JKE=4OStQLG>zOPK zkbXEWYnJiCx3?6#GsSc2B)T0ts$K~(pBRuZfxn&iHJ7f1TSqT_DxHNQqUI~gz(&G{ zX))dL_jlk?iy0b$`%Vokh~+2L`hYp615F_?)@hfXh0}R?Pg`SHX32*0>~|dP+&^F52DR`)tMlxe}U62Hr2X)kaeC$9oXo4)ME3=5%KG=LB03pQqLs4KGHhfxdyCc z&}O!gEb?#2{XIazU{oS$dwZr9pX)r2lhv)A9emx=irXL!QNcxSknS1R0mP_Tqg?;A zYM);J-gLCLuC$Hl=m4mpjfly5n|4;B>3@5#wCp!xr|Z(!wS2pQoA;0i`3@}eA?l^o z7j{hMjm2rBE%8igee~>0uIblXx>#6NEZry$Ak?Ck1!K0J;MppmlW3Fogg#JV(b=Iu-_ya6143TAu{>J23Z8SV`1Sz>al|(u;P!trd}vDvMr;9FA~9PaC%(VG*RkAgwM4S zdDZYXk4f&GV(&eT!*=l21fe!fXUVnxMuo#qb9@FyXxfMhZ^|1|)NXZ!UwhDCMX#u$ zkNZd6LX0lWQ-3Ti?G%B}xe<1@315)B>2O;^o-(s=?9HHY)WqZ_dwH^^B!BneQqPq84MZm1qYv_}W~5>mrS-pRUFNy-o4ux9=du0jY$X)7#D31myBBnY z1x`{wr63V<<;Kx@KsR{*LzEa9wgfLe@nLH(NHM}4 zxH6cTqOe`=E?1b6B+n3J>W#{&U1!z?0c}PgNB#73KV2HzHmGy9$cU^i;Q=OB@A-0g z2)HA()LHcv0xz@t>`R(|7IPZU?aaXUAA7xw()D={Ozz56W*x}2t*U&VUP{ZShwWfMgbhZl<(pb5=w7{&*Btio|Iw2v%xB&=+TMTRQM6GiHYJI_$xUx8Yz^` z+B!xFl9b>2HW_H8*^HIKqp)+?v)fZXJ%t<TOuY^gO4;4zdG7(lSxo;LYkQVU$vwrzJdJLLy%;drFcbtWpT=P3wOaNWu?vd z4exs+XAthHWg*AWPj>6ZSC1SoHw!Wp$Lqq$b1|K&l;dleqNa7x=C>^`VdyCMG+t3Q zqy99I!W^-*7uh(-ST6AnMQ}E8x#Bj=-s146Sn*GD%!)!U@k6Pd8l}t- zB;VCc+nW*U|IqHe$(2e>SX3%35$CH0;jQ1yTB$}X5I?z>6qnfyR*vKLOx0S#S;vRK z;*pL@}^U0+JG2$i@$goVGTu#^-v>d!%x zLXwwZX(;h+Sy}wl(6r9X>CvB^Expj@5^e`LlO#LwRUOo$uiFaE{vh7QmWqeB^ZVOUw`m7cX;{TmB%8ABeEF(>&E~RAaXWv8KHN#);H$AMz4%943zNQZ5bj@!LZCMMGR1 zFAW2?sY)9suJ7!(9k@2z^Bs3>nlmywMseJ8w@;cQ)j)cE-^T!uDQ2hN;cCfkCkG;L z4vMH=%BVP9hw%P9{P^f&6oQgC0=V&w)O5nkFlgb1m%$ab<%&SHRVbC4=C+c_KUPe{$vg!?pLc`KGr8PQd|_`e^vXsEM!X? zD3kS3N?Db5a0I$D$(5dCrrw?t;MNud*}-%?+nUTcqzTW#7?8D?E>NTVVoDj|6FF=c zWr=qZH44tHME@4sKT1~HgL=WRJp>M6;mqcxA#A`%nANHL^<9R?=Cs7krneS+2z1EN z@b*%~2%7TRi7)mvS!h%&Ka;q2+LgG5XR*i#`{B8ukJYF3ct$U9b#B?34wL{yi>0aa zPh8$$@YLEdiSncXn8w&J8__G=1Oy#3|dDv_7$DB)gq?!EDTuu0?)_?F@hx(oSGe?Qv?ITUQM zsy1J;d}Ih-@gsmW(gWulP8y^FfYpc@ki|?qLMKBXYrB9Znq(N(19NMj(Gp<~*0ruY zlrMo+hYv{GmA+k8TxQaGvBEPr@rlCFDLH3ejLhV zPE=gnQ$;O%mE$%2V$#wHD!Xl@T|6`_=VLhtew@zHAA z8-Ltdjt>WM-gX?zcNFi`k|%9oM4np%NyBi~O8w1sB;YUHt>(0Q@oHAX@Zj{ZGn=BQ zSHghArF7`Gg|B2r(PEpMquY&vwLjmX!*+z1o#qVl5R;~Dr_=rDsYs!7Q6zeoh}QGkYjk~PFrqV@ zC2hyMd6;&)^Y!O_xu+1M_^=0&JMBZr;pdy~y87#h>zh{04Kp%MK4OiEj7vtqEw6sz zYy=b}*qo&|WzCgyQ~`vv18z-cwV+1}o=d5!4vR>0j<$CB&;N)U2_cecUi;ARQ2VJ*)PdbE)iIHXzX&b4<>$zne|Ec5#-$tanHZ zH^a93ZQrr@Oa^1Ax1_-_Z_d3{V8|L<>^8y0C%?v3M}EC8%nrQY4}=*FSIcP5J#yNF%zXm8EuJ^XqrQQl>}JZ)@AdBKWXI%Ww*CM5YZY>Cic)BbHC0Qb;H=; zxC5sxx7-s)0ybpKVf8QgxUxM5HHIbIi-M7z``Q%rFp}ddtp}q@miyI^)_qs~9#pVr zRzhU1Zx5_}vToNPz0f$#)qS4DAauNILSS2CYPP*kkQjk_*6F4M@Aa&N)y?$wp$12~ zzc5ee7S=U;xgTl=Hv%tsvCpf@PdKvp5`lT;mXAHEB@o;+M`JfYv+TZ({)+$p?hJ#s z$$4)f?e^w78DzU-QzXZTwg)(1PwgM4 z@UZ&OijDDxq(ChuPL5M}`R#-P$6CT^`Y!V}0f^zA8*=8ve%uOfrJr(4iN#3p`}^^H zTs9Pn3e-<8bH1uBfSV(p2kfbWR7_R`PwDNd9yt#;%0>U|#dyIQ{)!^TBi}%uH7Pq6 z&kSm;#rJeQ^m@egonpfg4{Dd@Q#C$?b(S{LPXfcY8F*do+q; z(M62sDReoFM}UU6ba0jCfFZQ_5Dg=5d^Nhhf>$z`tf}t3_#@kB{b?i&| ze#2<=A12?eLF@oxjcz5cMYN8IFKpwwblR??20KBxk0y4gjYc#@&j!MgTn|=*0VMKU zeH1APpeiwBK2zkNE#)RrGx8e#aVDY<))NKlLAgV~w@5REN{pR@QQ|B`9YTlAb_k7n z-rK=zJ>}6eU&(kA=rw$?Q!a@$^daPHz(kMkeLtpOM=t#L)=RF}W66IYBxP5z@O#PN zVJ)H$x$j4cLlkkJk&&Qgj4U~6F0cW=`>2sgQh#>qdd|%SRePO0*fDW2=l-d^5c|(X~;K+CK)dtiSpGr3~fKc?TBHYd7tqGZ`4n|(7-KO)* z{6oJD%MX?uV$Qg9131^4Zu^bwOfx`9tPNc9) zejck&_x^QqjsA0ga5&a)JR?e`BtF8pGri1E>p+xy9U9I3Dzik|Z<1oX3Lt_M4TBtU zv4PcG>FxV=i9}s#U%**PVWu7bx0a;FJ_u1MM4j6!XssSwcH3q2YX9FmpYtk7R1~xC)0e!9i>^R%iVSCQ_ zlsLXUDsz{ci`TWcQcE8=-IsI8sInzk&g#`|iWVmeb+dg(t4!TRyy$KZ?7DbhWq*=j zbk5=%!gSwaxdk&sz09JC);mY{n#XC=`mUtFr3h^GRbFofH++SJZ{r$Dthr^utEg54 z_xz>e(IldVSJ5JP}UpiSK$Vt;$^_Pz8>RN9_&t`D+c2H!f#&J0w7nhVBXO_nVn{ z{!Xv+rtZ7r7W_L>me1D&;A$5vEQ%rtI(@>1Lh`9`!nX%f($}j3qARx%w=CxJts>yw zn~p~R^wrTGEaHjhT8Jbn8s6@jcs*;&9qN&X`Oq7T_Coq~e^f~P%*yu%{1KCWo3)Z8 zXmNBB^GY8IEbS8d$dlkZGKI6!4-v*hKrfy9jICxupjRgkisPxZ#pGT+e`Vr7oR9l{ zB%{y6L3nhA8% zqr;ImM~PZk>dm`W7=X$sdH~ffMWY1BdgO=Xr}y#dXUGIQ6of|m&mOioQOa|<0PkB4 z-F97ipgbP*NkuN>Nt^q;K?+pwOY3;K0KWjeTF;q4bArCaC{Qn@yNtR=1|NC}*RA+q zFt4}@(qv4fEkx-LOn}UlOBaX<7k@H2z=Bz5T1So#QzoLI@-5%a=2p9~G}8O-p~T== zjM?W3BiFyWkL3V!ZdB~^rX8iIk*W$@2o=F-Y z??4}o_}Kn3sg>EKiQ7>AhM#^d=YEgUOZWHqO!iopQK^4o@#kN^0?|-qFvzORN1q!m zPSg5BMdJo2&CJY7^!3`;O)5RBmV#$6L;TU#1n^n3ka~)xx@9D(F(|)@aHL6=yo(99 z&9bpxntY9|q?me>+oG7L5>>+Ka{RHAymNbq_7&aRLiNCTbJh5oiq?Cooln~{LNmACTW9HVqp3i<=W#1f|4>9I5a^w^B$EQaw-V!?YK$v`2q)kfi5G}dQ=F9 zwPIr+FqZ*#gN4-0l`K^S(bPwZDM{wAY9S(u68N&|{{C043e$GOj2#bjn_%I%wW`7L z!n(HY4DVR`5iVqfJMq5D-ePyJRMOy-7a`p%tB$cq=*O#1N+;?%Z+q|W($1h_m%n$S{?KQvRfX>H1X%RfB zucw1Xfs2%#nN&2wP&%3}Y(Z_d-|_R<^MI89PdX__xc}wSQx!PA@(qaczevhl%|(YQ z``r9jPnE5^;#^zL8lAFFM*j=ZSH7|eq;W_Q*H-+msRf~C<)^!9l)3B*@B>{I@q?c_ zm+VFe!G873yTP$|~KJ=HW4IxRh%AB9$vO4pu$t88p zEA&n}r>N(A%GOc6O!(Umut(F$LYX96X?kW1*XX)B_lxe+_H5B7;3)K2x$mBG?7$Yb zhTp&A;6e{3JM$#`tX*TXL`rLG2gAg|vWw|LLV0qgNhIIS%!fp}|IW+)i!_PNcqiq5 zM>w7`%MCC!u??QA?N4!@k+?W=5#F2&+xakApxX4Zi5S2Jyj=Zaoib4KeBBl))tPF{ zqxB1#g543(ACoK^$HR77;w^Bf0ZwV!I2YgB_TYv<=yYBVT!4 zU$~RywU9>tsmo75U&*yNr0Duvtz(A_^AMP*j_c6Zt?{B2uC3l@gX+w`LI&7xZYol4 zgf@lr_a+Rh>Vx}BK)7|8-TZ%gHL4LG?Z>i4%8nK&m|q&D=EhO8mcGyNKDe^gVT7Bs zTzWKwvW|X*W3a~eV z6X}Rv;@$Z&mUPj~!TAGcc+Ri8EX@Ma+o z8SU_v0E9g~*2hyWbeFjjf(n!^R0)alWN5$^fKY$i4nz-E z<8y?-8&juP{51KkEA|w~r#7hPaf%rw!O7@tonF7_%#ci%G<9>2-ou*ta`QH(*|b>- zalT`h6_F*&zJBBC9qSn!t}7Oi&~B$7bA|$V<2L;M+C+fUn~q&(s$jub;!f8So~HU{ z8`9b|qZ_=!|M^RXyqUU^WbUHe{Q7BJgFAcChqynB#VA1g5b&6Ah}!;2{6a8}ATMWP zYm2_#PcB#4bvn>h(2(*wv4!*AMqT~E!QzEIdzwaD09T!$DC|mWTL-N%u?xvpY+;@I z{7lQv-}%Qb%>(b@ossPEG;j}`IC(uEf=BX&PsZR^!7+*R76zIVAbWRA-X1Y7gQPwC zMD7=q$|-BcdZK!$Lf1{32EXswVDR$jBO2f_Zd0z|NOlyzCe@s~xgE=76nuz=jc~f% z7MXRK?w92KAar$0Qm!`Ql`vI6ruJF7SfiXycNF>Icq3*EN4XT7wCs5nC%US&%ZOJhE=BoiR{O1(u-yJZ6ELkJykxU;XR z{2Gc>ICoGQQ>u_3;Fbs_*W@GMBpue`Y(|$d)Q!k6P8uR?LPkg%PQL4UIFY#Pp7WyV zJ-~In?lcfMIU#9ENs$=+eUVicFd@uC=fP_r;LZ=jZ|ZdT@`oR|^%$GNh5JR&BywfS z%&qJ$yWlu?lD87FekX@hXE}=_kwkLaTRoaPNbRIsa$X*2QV|a7-or04Qa)!9(&xW zET+T;GXl|33MbMdg+0FBk1639tPwpOObmE;2GmrUXA`ik`j(=%d+|f@3T2ynXu+&! zKdN{P=X8$=p%ep&X*@Y9Hd)0&>k|{NX^SS3sz&$3p)7`DYH@fA{?C|wD`M@5xZPKs zdWW?{C8;C$j(Px1v*b-GK3CeBvg$2GfY(piaz-SE$m(?iG`){=7oR1iOd3riw-e4x zZpe2iApd0y$t@L+q>0_YUuTu|qEa=5~C?w{&XLv&?4b{BQld-y_)&vpA(S}J5eYB5WP z$>h>v*;|CfUhkx8@^Dtyw=-RpTy*9XSscy#%Oe^VIx`~`u?Tv+a`Wol*&(*8EnZ>$ znM>6>U+5@lI$+o6oR&&oeKnlw%xx)1lxYNC9X?b1$huu%zuHn$NC0H+XB`}k&72v; z69$e4qVEWLVy}?s)~yimTiaPUQe|&^B!iGHf-66ijvhVOc6yZOnnp$llUEz z6LOI3_-o0z1wWIf(J{K4w;e;vWiDS#B#G5OtX|)cTOf}%9#J-`>h$`THO6TGA8bh~ zTY`as*g%&)k4+-K&KaqzYcN-hpBBGOHewiQ0u zUPKkwXW8v|%T!v%KMr*$i>9^IpA80DVwUO9Xji=~_YH&~6)YdUOSi7%CuxPe%+3c4 z)oli||C&<31$3kdG$qOEGymBEy%TyTwXTbKdr^^HvpUMT@wm@zsF_j*LnSHX4<|2R z56$EUSXJG$HQA3yzXzzM-9Qzx;;YpYbae0-!b(#6|mq75|MCbt?pJPF*m1#llY(_H!-9qaCZ+-%761M63IQChwJ6dZ8OB^l~Al z>w45|tKhqU_Yiyhp?(6hfmZ^W2Itn6#GR9RX#^pq?m);x*?Jl8%>3p}*RDEE=l)n; zIcC9B*3XVV1zoEu3?w<8W}DaPenxB=(Y>gBM{;p%__}HXdCo5yri3>Naf-)VppS5J zoF5P3qSL&KLfBJ{G(88iG>P{X3Iyh<9Qk(7r~461@f4u465o~a3ZV`j2)7OxdV0k z);UqZO6uxZ-VN158oa*X$wPN)N3spV}Z;h%a zULy@}g!>!*Q=Rd6ta%~B&FOoHS*IV~JQ8}$u$UjZGl@AI4bG-AE&Hl?k?48fCYW{` zKNl52zrPKsK7#hX(m&CamX}A}+uQri7yXG;|LqdS&6s-s1k33sv@%#v)0})+tub8! z@d-UUi8ZmSw%PtRSf>DU<2?ONC9&1YWR@UMXSEcDCDYgD|AKn@?^pR}cjZ&I-%3Ar zQ$JBB<)VL;l?VTo2ojQ#UW%-4^l*v4(peI=f!fHJ{D&Akhv&4Oer~u`@Rng#pTw15VJLftw&tSsmX1({8O-o z`qQbFoQ&T$Nm72O+8N>98t<|k&m{ZJmAGVI4fgkEiUtM~I`0~B*sP{XQdagLYW}PA zN)-J!L79*Y(qsrsT&m8Jn#!ZZkcu71L5Vjek9iSe8FX=h`_D8|#DoHtm2v;7q5Pg~ zZ4T{6e{KAK?DP{QF5scMR+*_0QC;uL`cs$1T~f`Ah7Cdq%SMS$Zmh%6N8gUKrf{qs{ z%*UR{rX3=e*S6Yjx5M9hIxUuSik!9=)^m7K%Fbo8Tgt&fN$R*&tiM*)q-U~A<&U2Sei2yvg(<#VPSQ~)c5~h3z+!au zO1;O~ve}1Zw5fo`Zj#JqSbGvCmq_=)4&eZOT>Q;1AGhiXeXiVxJ)PgX$k&Hxc%+Q9oe=aFoZ!SM zP}k_3bU5K;$jvQA3O!lEKZ=phO>^c#adbgA@NLu^^E>h2m*Uc`;D!TYW6!wF2AA=n z=F7uN!isafvQ`^hF9I!LgnnItNHEZSy*D5Ev@=d)!tJVf`Fz+EE)+?4@DgKk&;11B z4FGCIyeu3Tb#iPV)@>Q@cto8 z7m|^55ZPcW0HZzb7>N?@%?#sHyjw&_6=sOTAO?JcSGdSssRNy!)_0z7`ro_=@Jho2X^;tZ_GFb8K6Mka}H4Jv8fSHB5m?}Fsr1h)u2(|vFM7F$*rYZ z{h1$9#GX^Pyei^5wc4N8tr4_8PVuG?`VRrDV*<{+AzUTTOeb<=XlfZBg|CkJn?vc& zU^hOo%m4ga+})s6u>`u6fJ{Tg1oNIU!;?FmCA!3#>&OBdt)5jZMBDc-$R~YdNaIB$ z$=m?`&)?2f?tAE!-2em?h&zYVoJW&g`)H&eAliXe^UI-yYur8!HdS`&YM3=HO4u zge~0OO)t)Tvt1Yz&s0;QHduyWIxy&W)xLZ2o~(`GYxjR_FWCjh~}BafbAHB!nLHPC?+is)F2ngOE^bR+uKbz3D(OxipP#_c{i^ zb2Lfn;0v{|CUz5V++jfJaFZ`?2uufWs?sHs7d=NY-~Bu?cV<`c4t=%d3@H*?M4Pr$ z^K%Ivd7@1$O>gk;>4!C}Yv6lR7zWS5QCPiKrzni^bAS zPf`%c+!}z9NF|U6BK~lI3{v<813-g5VcbFmGh#d+69gtfZxcSNd4!wY%&x7aTA3W1 z--~kk8|w|A4ZZDFA}$nLTRPdv%6PHYuXmpP=`2m$8KM%X$-4PE5Aa9}()S})AataS zirh0jdCHYugxtssR}(1*KJ=pIkHkwfIDG0D-TsbZqhz6jJ>-E$jti^_9sYq|{g@=x zzj@9b-O%6*UUQkXHT0?Ro_@uiRA4ts6cE&XPp~<6*V1m^8SxVK36E{| zeT7jpQE>f*&||_)z+II2W=qf!AWD9DsP+!@*&GKNtABKAK8@)RTzWS z*umvwpF0yWoM1MPf_ED2d8t_$%Nn}Yaz)@0)874~c5G}R=nE2i1yZM>#EevyN1$3Z zBvXDm_52Om$ij>GXzl|nd)`fD`@357-&iPr-xW*y`W4eOFcRH_!@LWfD3C}S)^t?VG%QrYbXQWvh zS(&x^fg-W!~9dMWm#md5eQ1Av;X6hE`-&9G=$3 zZMA#~nuh%CcJ$}^w-+;1+ey6xq%nT|Y<2fFkE!BQp54DQ{Xf@(|3~^C>Hml1)b#MC zGn(a%-ODG&Vu^v6B)5Fb=zkk2j8guzwzH(rpSNG%jvQAmbrzp=7O^nU)F_u|1U-?s z_?KN-ME=LE@)E2~bScR0Q0KWb^Yf<{yvIxg!fLwcKesoO z{e8SL#}*eWSK!}I|AG8jiU0c~ogw$|e|rJ`KXufX(=`j`mkU!pw$gkr9VT?WD8KTR zHnANJ$MF_vnduljwV)6791VPZE%nnZAA9;6+KbSzg+}j}E@0n&JK$FI%~rx2`O3|w zx~MY8Qg&DI#@6hcrdwsCAb2>@9|N!R)A|I9cTVrP&E6d2iP`SV3Alncn*}{k2m&zo zJ@C4}0^elIDEDwROzH2CM74F4)bMU0(N5d1g~g5We+{(mL+9VNM_OY^N`Q<#Onb*=4&LWzDoA0bs5FSNv7&ATVH8w7u$vJDKXt>{6*lH%5qgu;D{j4OjuShFPNn>e z0W2C{Hlm2H?wtF33eKuAX_9Vg)xPAFr zna}00u#2Z$|1HFzAr0f?F_uyFkOKZ2)biQ2X`V~}gpW#_B}Q0!eTEM(@oi92v+oR% z06%l)h?Ir%o>tdhGL%t4&xapl76@A#daB`K_FV0zYs55D3Bc+IZqZ2@%%RD-!-EXD z1zHC3c0|8nN1Yc%ad_vdgwxs27RgM47*N~BIY{VN%_Rb_iwt&BE}4@X+in#MoTMxw zH{s-ufOYQk*?0|4=&(IulL?7dLZjo38_gsm!_Vyv-c;xjVb2;uxPqDXD1Dv~y z`OJYf8pa|Sqv4CXNqmJJ{<&|S*7t;U6e`GgemItytI8B;rgqI6;WH)}?H=>l?tpCp zQ{>#@+WF?^^>L*hHe@zlWwn9k0l%d;bOE-tMUjy&9k=6p)W{qXX**Ch)q=xeS;79I zNI#!i?Sp2kP)a}oF9Y410f+fiE-O~_4_+TA7IXW~M<-E+4fI-FNWA29CYj!R_S~P9 zN32!W)%}3WVdA*f*!=j&aLfb1M4Psj971j3aqSna4uzd0h(4_u{G*9=H6>?{GM_@@ z(c)Af$m9mWpvqb1rP^;yoja#wG&UjN?HZ<68?IQY#9%c3E$*Zx?CPYsD`%|L?6EUf z7GMPLAgkA(78PNZk-=jwN&87;&_Q4>x<1WF`3GU!P%ELBZ_I*!9VkF%a?91PMU>7rXN1j zm@8}zA{+BG_B!k1!^qh8QMT5R<@1k+!Mw2j>-p3Q5)))M(i%%FmDwGo*yWg7w`T?Y z?UKtJ5lbKiGs{ieRZly_?VJkO=ikm4YT^kCmIauQq3OAhTsZVMM(JCeUq#0UhBzut z`v3MaZa`Nc&dOj@!V;Uas=?w%X)OW9uq@KATqr8Eu(rg%1`h3cNO(oCW);cgbl9z`Ov9yhD(;=g?1L)>>{k>CV=odFp?BB>Bm zPTC)7blOj{U^4~&qRl@rN>#N&LKCQpKa_Uc^*;2{O^JCSQsq*%b5$MU^{a;2^L{nz zo1C3UpHaTk?LeCUOsa|*r?>O%OyAqI7EW>*Wta1V;^Q&N zV_vYb`uj@!NGxS@e_YLR5u^t0!T?; zbf&ePFf}!R)rOf8{*ycYcLv{<;$8!< zFH^$(cl69lhN<&ObDV3EIrf$_VrYm(`&5O^a#ji_m-BhnCp9$dHcN4Fq{wQ_B<@ID z7$}zJZZcBE&_}^BCS@BPy)>s+5h04~_uF$||65{EU#-PQU}HDPGor$Tru@8HC&^P4 zgFyA4y@ABjCEt0wzv+fNmmetTK?{BCe$Y>_hq`<`q%Nu}G5#twai_nk^161rYl-LN zYHXgcJ4P4uHVwb8-0A4mj{gk@4xlNZ_*f_kAcdqkX+P&IEPh=mbG+X(e7A*>-eAn+ zQq~aRq^JCNDi$J2fy#68K|6=zF{(oi-TZt21H-dmqo7z{hfxVGE&uPn1!A#x+xc6kxG>Q7Ny}}Z@0@>153f`ie`?bir z#4%#eANj&M{e!VQ$|o*!G)}mCTurQ1I zqY953>f&!KEu10YyeSh$Hi{P;YJ|6@Oo0;I7OQb)Nf~7o!o9bY1z}-PKf7>Jbgu1esKR_ui+3^pPxUnukUErYbNuh6M+T$dSsuM z|0;ehB5lsGAFfFsafiNC$LJ<1VUzIJvF3JQgHsL)Uz}6E8!YPQKN$H@Q!7fh9}iSY zYBwAhE?huee2hCZk5)Invq6u0x-KTb>m$fpIKpE%e49Fz+p8ep&t!f-U+iV1!g$qo zCeCDuRcX7?C2(=4!LXt!qNVJHf6Ws*)r(3=VeBW<)R_iPo`_aN_>QWWRW8-Mj z8W#P*dVDX702g+sBH*Yf7{C&TR@NNslgB^_diatma3{iNZ_u0Xq1R;=N7u_w!;sv+ zc9Pb;5wKrP;`AJ0h#ImLzN{Ci-d^Xi)?Y6rLwn>wh?Bt{Uz?H-+2!$1ztdd`?<06h%@xjR%tw*J7)oSUR`?a>KA z<5JdmplZ{Lw<%R}meRh#iJZOY!f05{gqOqU*O^MK-FkYf3@B{8oD++I_2OCU=e5Y+h9 zpD7|A>ZNg3H`S=*wK%2g2sW(+)UC0EMXl+5>SHzGsTAcs(9dWOGBe|9{D%pCk3xI# z-t-bf;naTR0e7_tUab=6w0A|}?9)J-pd!vTi_5a`k9wvrI~IDKh^2HG{70;11Ta>a z{j2S6m(h(9ea`;$3v?V|fv_WW&_&Z>j3DUTg)16E1mMj#0%H_@g;As=_;cer$m`^E zx$?-?UMPGCgf9<453UQqVDgK@1NrywBLrh`oADJtlf-qUo_k{>A>t65nAX!$Odm|x zyFI!yqA;iQqZTb&fuvoZ%yo?ms6di5@S5FaZ?3LLBk7`;Dps8_>GQL52;|m%vTlpA zdZQ$}X_Ci^IoMp*bYCNb<)j`pK3-%YnTlc5{v-6Q#u=!JZgqZ1KV`6_a*%_>odN15 zlT#vUw^+I=zsMv}2)IB@U2UTi<;k#uxg(J|RSVrK@^MP$OqLT1T+XBnXEdZ+i%m+Q z{^Vdxb4Mv^57o1G#8%jDQCoV6l+msQtwzvh*$5n~2khj_GA;n&`Smqi=A{Uy8Dr{~ z2bx{M42fnqqH!Nn^!`CtL1$-hw*5S@ee!E5gGT&Z!wso8&gyJFe!MO2uC1@$Q(0`- z3Ea-87ZE;k+w)}-!|~eCrAuJwTxXrMyQ>n-$Ay16cwd+nY2uQzMsp0(yy|fFLLGC znUsLr0nYE|Hb5N9ZvDjyYlWhs2UQhHUsM?%ROi^Fg|=wiD`=2kTGPPpM_$oVp3K(@ z6e3B9*aIG!)7^%57;O>gW~3J@C}XCr&$<(B&2;qZU9?JbLLYi*sAAAR$W|~i{YDa{ zlS|yW@6eGrEfv`lN%Mo2V^4e}R2KyzBp$V-m7>MR03+^5Dx8g%*_&-Utk9lf-m4i* z>$>4gzcvKC8ESaKREh^CA5+f+)h6P?^*LL;+HYQ>B#VdV@W10a;uLo8c%_ZlJAm<0 zX8lIbx`#=O3}AmMcS}O%+~#tWi-25j*y?=^1tEfhS0EKj0~AyYdwmZv19F zGFgc6VdDG~!@`-bR;w#2md5JNJ5j8~J7ly8*p8pnQ^V!C$ z^OpqGYO^LqFCz~A`qeoKC-{FTB{?P z2?escO}?uw)9GHS(;J&%9t})za9W5q;k{f}(9$RTsU1l7G2q3(z}uqhW2uyR<(>Nj zE1~2^*0B`;^0nXtD*<5p_IZ5e&euLKi#rZtpDPzGL@U?*$h zdbPCn6H#COulC+LsIF)G7bF4%PlCGy2_D?t-QC^YJwb!(!QqhLt_PRk4#C|m2X{X( zK)(0R@7C0-c~dp7-g`B}Uz^=~_wHV2^|D^;(@4}GWHWx@E43P4?xCD5`U`dt+*P@C zJ@4FG$SEh+vVAIRjZkXLiD^D2JA`DdM^!sd;B1$K=0f@=8rBn=Ja+qw*()Rw*M{g* zwn~5em39NDjO-^R4@0eBAJrv4;@;Nzh+376ex0U36D_IFrBfjYVzpVH8B%@>lgEP2 z$!r@bSNkwLhTIR{RQaQM;x7SVh)MUWF_H9i+E42US5u4LSn%3W9odDw5;P18r<4Kr zwYLqi^n;w7J0cof*cnD@On)(cXSP3D4p#V=Rc5$YsnwlT6=pEV0OgdUSoss%3Q6y9?G`cxX5SkDe zP=Ef@`q1b6&0&-6$JldZ#HMv?n0%NvOaGx5w8jIK6uG0O@P-BzbN9)V^p!G3lNwW? zE$GH@p48T}3T9aL@nM4rahGAUQL3+H!(qAE36BtF%3{`z*)3h|gwINLi1Nw1@)9{s zJRShCo%YiW4y^BuKc1tSU;52EeQXg!$sXPpOS##ckUnrApw(>*kkZoOu=>k=II zp376EUVV7<-bUipt4ZAN_~>uxVgb4$5{)7l(v?8}p}1e$-F)}kJ@e5Kdk;Yb70$5%LeGixh&h3sBHfEc@H=*!?a0T>XqO2usvgyGbFx?hFEX#IE*CeV`1ze$ zdj^uxG;Da&-G2!m5L@bN6D2*FdxLT|84*-6rzt3H=weyB*L`9nmnBz}fqTBgvySxBi>?L@Gl4 zZ!nSn*FEQM4d^)6B(R=uKQ+Cq@kJ2}8pgI3@l&H$@&F*-{C5Sf7@iC1Qlnd)ASs0I zvN^6sOZsl#$+p1&FC2r8`Ps*v7edF_t~Os2e7-rsd$$N5d)|blD=|;2>j5UCej<7Q zT^nENHF~+j@^5N)^89q7^wI2WQO9Xa=r+fua1ZkQ#c;t}z~!t#z}mp5`+Dn+yWffC zlSMuW=Kem>gC|or3H9}-hn?e*5B-UTDS=79i^aeE1SrWq-<=P(UWZPJwp8SC%iq2k zjhH&$p_OBS+en=bH2?K^?I*|SF!`*Wr5r(x*A?zg*gs=$U9GuC1Jk?vm7Go|u|&Jw zyxrU`SxK2<(#C}0yG~KO^SWY=0*&?Z#WLbgy&J1^Nm93fmf)UE;uUXlI$hO$M)`8Ml-{}qQn`08i zk@`%r%=!?kD@v1bq`DKuC?L(apOk^XHvo}D+$Ln@arNd)cmwXo0xjlnvpn1T_QuoP za1Di~4>IuqE6pn`2-9&H%l@Xs{3I7lno4{Re0E7K`n0&?X}^c01aB{nHh8M!7i#6l zt^H)V9`!ld#6RVVxXJS7ya^3&HSvY=i051F+`VHkb!NlK&sB6gLdBY3inTcM?p6&; zxfx(iJYot%@M0zbdD3b|vIEvEq})$7q|32h5)M#9wLr-t4hL8q+yO%~yvF@>98;;# z)U%px&@w{rX8Y=*mpg8HqgMNfJF#7QrWPSnJ-|7uS5}GT6onE#MXwv^b-Q2f@Q&_6 zh3PhjJtRf%oQak1G>=g*IQE(MNGErzLP@IElBZE!;3_%wGVnFr(nK}?@i5)NtlZAH zyIBbBb=ZtqL&WyQ*;(dFnfhk)`5<;p#Uj!+-EpcAaW;2hXFHu1ZBm*7U%g2mI!H!q z+&L*qS%zyefBZ@BQ-t57h%npCSoXdbd>7!!Y?c0NH^{2l@MYb}<>+6)tIpWA>%KwG zvzsQ()KkA)!bzkXB`#I*p;Gv@&Q-P+S5AWGc!w(OePeNmqa8~B=rAf5^$V^;db^Z1 z+h76)szjqU_~&h;#ruv_lR0Hg-n3}V%r2P?!kt1XuK2rogys|_+4rVZq}37Usz~1{ zH3xgu^tx@xVC^B1o#5Iv9a|rF4vVCf-mWB|*?I=WxOtBfH~a7hgmFEij!O|chb!u| zIlIkQ%frsWteU4#M zE^fRGzn_RPB=r-8xK6?h`Dw{S5O@yYzO^DCJ>h zJcGG2Ed#X^Wvg~N>Gm&)gb$qX>ebvKFr}$bALbFU#rMjW*N4*`*I7-fin5Ro(z@i& zFA!U0EJg)NsgD*JrN3t71ZHjadPQor1fnyzn5*ywCm&F!)G>U6k=c76s4+AundLKj z$;BnrRjSoLABe*&f%N_9S%5&`eu%BHwyRiK{W*WC2$indmg3v!PmMVj`araZbp`YNyed2mi!xuxi}&?JPz>aBHQ@fytn24ag^~{~mjBn(R54i+9&Y z^M)prhrOBVdh-<>VOyr|%yJi*j^(|+j^~|o9L9*r+z4f*q&lzJ)9RUz5#V9OQ8S#Y zLvZsIf4e4WTD~ZIb}7^H&x#?josh)9Jj5YaF*@qxLS?!@C#TixOg+ai4t$@4Bd6_f zg5v)(lF789!V~tE`TE4@Y#!Q*vS`KsmN=nQw4L4`BS7WjgPrr3o-PB1De=`rakjul=95$TM zE`;JOx?V7bSf<*yJ~XE%R_gyS&jNP6ItN@0p_^f^AC zg~M{c_;X!kUtD*Iw3V>v>D84?EN=iufiuR&inhdXo=hQpj+>2Cnn}F7p=fskp~;Y=OQ~x;vE|LC?x%xHoDm*h0e^*8eBcP;zZ*Bq%lBmPxYfAT&ra z`HF+779+;((Ilev@opZRiye7|*hzKr zZIq%(1dMJyFx|=X@qS$dFFG%>FFyuVSuY*YEH_lZ!a=RUlV`dUUzJlsRC+D#$I-Rt z8mQz29V8gEFy(e~{aV{gO1E^?pFEUkkmZ~v>olSGEnS_u!SD0{l#<>qv!tVUfUJV8 zcV(P5xOGbmiJ#7dK3dl04bB!f{InY;JYXW%9=2|XA z`xj4t-<2#>eY+W~rhLeav}E~dbHIw{y=8%?eoTxB^rUC<6Pc6R&~h5cW^>dAd0LI5 z{VNwBl18I3C7DykJT>uGqFR~B<{Kuzo8)ImI1&2h+b{qTq#x0vEjh^xGbTMnLuPQJmH0U8ggA9maB3qXcFa8fUtpvxNfy?x}Q3%Azw;g zzy#a){&yv;ad%q6<+Ix;dkVpe%m6H3ez88&+){;Lxd`(yj(_|-mpDA&rnlA(E~Z4m89%BK0*_~*-;qHlz)qRh9r;e)|DkLp zk7X4D_7Q^;PcDUy7_)De(^-qCr&_%uoA`8~=crRu3wiQ$d*pA2XT0yIg_=4zhr!BR zFuZ=T2<0A0-FLcuC4+Yd+JrEaHQeU!guGa?Rn>pZ)2|qI;5yBA(I-_GxcJfGCA4pY z_2MQh^pFcQde%ebj#u|((Ce`i^7 z)K9@!AcAv}P{HDb(9I7jgJoLJ(q#^{&Sq}KeiMvrEFU6@2Kzove1ge#wa`j-`@5-y z@VeEw&t(gtbQjbQ zV3lVU_9s5nQ;Ly?CuM>bKTJK>uqN% zRcuw7?c!2mxKhn=f5YvOWGRLZw}^)l0rt>G+z?_7E^;CIl`4QtV8Ru53?xoc{mTh< z-nJ?taRlX@q^tm5DaxT30+GwF?&jm|aPRAN5yY^!38f3aOj#@KFHFTP21DJrNA^Y+ z`vEO`hkxKyI)ZbH=OkGgb)0eOo6oAl%a96PKX1X<24jLkpUXZ^m-nH3bT}V8;Nzy>;5wae8t?TVZ z*&rZ<%v+BHM>@9l^Uh-@5;MgELS(5RJyK-tZ@)2`Sk2B6U^{HMws7UKyQlq*gtY68 z#$3rC=C7TWy%pP?YHpKOfq~ahr&V*xIARNB!{YDMj;CP}`pd_kWXCI-%)#`knEGZU z8of4rP5hyHKi*+n6rJ`M&r1GH%mw54mjb<--l`{U@#is1GD2QcUQpTr!%5F0@TA4d zUg++1?N*ZfY~#;5#kIIOV;BHVMQV*7$&v^h57uSbcu36DT4Pvw)i_ag3is%B{0LWe6Y(x+6GMB zS|lu!U!_dC^E0mMywej;D=Je*TMYF1Ep}$?;E%RLyqNUQZ_?))8Hdt`(lkuaX5{i; z$!9Kp9qAldUo4w)1(zxh)f#3g!h}Q|jxPILnf#gEz=}~k8LI>3U=@hY#KKmOF1KLW zuUp_Xsj0k%|4c_0OvPfMSQ;_R(ValXmgg11>^QxxWOWROSMA3X$4bAoS3X_wgEU8f zO0&v8rsFaI%gLB9H6%^_d`fzHGbpCP&J9r|8?Q< zri+bnCYb&40BbRwoauaw_pH0Wh#^-dkF^(%8`^T{XFBNBo|lHFouxy%jmZAN&X#~D zE@J5J=D*N14s5UqtDv)~236r*G`Xg(6#`&8c)lk^wLc9VZsF7UK{To-T7ny*K@icm|pAyIC->?UY_ zfni0ZJ~qW^`cijzhQ@ligX6NyTp9v`57IHhF%_UO$JiE^P{w53Rz zdK>W(Z0Bf)I0?({%ume|)#>sTL0#|_vBZ|8OJRH}|D4=D6Kf$1$cjvL@N(hZ_eD#axAZ zG`PL$@0aN6?*4#!){C-kHAiK%b0mYqR`Vo!`9e<9X%ctt&l|sR#ZR?W*hu%QGA7wU zQb1(ZTGeqje3j&%DfK5#(XDSoU4pc#)LXamuhbLUVu!YH{hY7^;$BbF(O&~+Z1(BX zkK_PO3sE;^tlm6HE@aRZm%Tf9^1p&XZTU20*25#ld-RiIqoB~|oF|_6H2^7?O=6`s zxgXU@{q#hUTIi*^VB}ab?mP``*dr}uTOH*kLc?}nEAUTzn)YAFLH`|BO(I)e!hfT( zd=j_Oh~=aQ7#HIcrO!#(M~|dnKE~%5GaiF;!QW^okQ5>otQO}QPSE1%*bh+qU8O=z zr6ybTy!&v;51^(Pd%8i_a0>5vzH1RAeyg)y@>-%vs_t+JJl)cS{(@zEt8w|SLf=Wo z|4CP2)$pVTbOu6oJjuc7#oLhPUgD$dMiOkTDl7@pfM zbi`FuReK)oj#@jjsm>lFSCoXrp}_Ud@~IUV?-jcIzv2k<%d1X;zEZPxfl9aX4;y#O z4D}HH6qP{hyhnS5@S08?NYCEaV1a_9ABh2y*!s`A2J+3@fE-9! zLBV&0vtIlDJ+_YdTo^S)4NB=>^SRpR^DfPdk1SzfVI|K@^}07!E$%WcW8w`0DjZ$L z!&@l))S9(#8)X|YmNK+4H9((MgI9j(oXM03yz5oiLVsN4F}6C${AL`_pG^_}j_22l z*Vhd{hQ77dMf&A~U&c@$H_%5smCATM%a?dxVL}@!?Emxt!lx$|=6|AF%?dgux&R{_ zfAQ`x?RVv1NxgueAhL3q=dtTQbDY}4sDE6!+>02(`qy4a#dC{W)P9V&&9mvr_wOB= z*U!*bu0Bdbz`>PK?vO+`Uw-#_KCqLfp62pRJMY2S9>t^Zj;#;J&hSO%3jqA>;T5wK z5qO7$t!)NJ28YOsu4;`TgOnhcxj@OM{J%a)6S2Dzjhk;rtjZoOHp-sw9Hz6D zZ`5#iI{0U-nx5jSA$1U#(a%X#<${cI&Xa`dwbXUCCpn(G7>Y7+R?~{-b@w)p?@P>K z^e}n5tLciXFL?5oiCzgQpE5uQ7eIZ$6*pkAOpP*rRC31AFp7?d#Sl&V%m2vYQ`Lpf zgWgPQO{*m-VH-z+)F=-y{!V-N*9=B%oBc;OJ#U8m%YCsUFY=0a^iidRwdP|a zAG&@BXkrOcrlU@@CQ4BV7iDSl@G3c(awl-Fi^&U_+4;I?jlsi~K+#I|bNUMOA^Jmf za6!#BK7kLL$PTKOJd+zO5XI{|H85H7MwY@+IQKQHoKIA{Qmwn;ML;y~BT<6%NR*vmHzvW`xesd=`qQRfnf1liamPQsB2OlI|m|#i@PE z#i>GLI@jfvEEP7ZVCJ;s0Q!7&B5vDsA<<(am3?E9^t;qCS&}yD$I>?iB2m+{4UVlk z6}ZaaQMK)AkgE~0WRT?DvhL*f@WZyKJ-g1qD#jZaME$-P;@rUyMC^{QuipHb zF2#KVi(Ky{z$nPe^ZWYp)-Ac> zE;YIs%~lu$c0SO)P+a?&;{)BaN6%G4I3(SQt|G= zc$h%NVr-X3sUhTl8|`pcYonmJUx~WY&oQjb`&=Gy@YW0?J8DfEtZrf;A2FoO7!+^>#zg@zIgc{ z*I0!+{sy6UY&3!rGk6TpN!>$vz0QXSZ2S&Q%@(f*;m0v~xVG?Vsy*qL1fjVX{e|m8 z9~c;rBnwld(W!d-H3(t*=u9>|JY0f2esgnk{0wp$afo*%E#CIJP&v$)v46T$%i?si z63Y5_iJVCzCs`{y0I8WKn#?E)#j7&`5MYHd=_z*0| zYdpY^V5D7+(|-ya+y9;a{_EeWTOa#BHH7Xv%~R0x*+`J*#XcZfvgwDNQSI9biW!gx zTYWivynnKHa`d0=7`-6DA8}*&*i%sTrn^4gtp?wMVh4Wh;9}SxcwHsk$0!`6&E!8P zloKgP5n1>lh>5%#kJb5A3O$9S^4?uJLe;wS16 zLt*Ib*&1%Lg>D~%f`ZU6(PJfZY2s=K^`h6r1Kqi0Z%$K;RZIA}F`Ra@UbOcU8~S2~ z3X9XLMTwIN-V8;IuMQkb&ilCrE3ZAHkce_)d|I!0=2_^NwI{RSA&3JY`5{!e@AGxK zpG<4GfK*aq35{Bs?18P3c{oPGN_eeNaWBKq#lrJ~`;9!FAVn*W%Nr-`u@jk|>4#Xo zc_l4(n@tPtsVYg`te0>Q1b3c8&xM9(P*3=ePZKve3*rE!=ZopIgH#^6LXylJ?BB-ii8+A3 zOPMFICL+lcA38MY4S6NLLXypPyCB3A4pL+wA$}+FQ#hN?7HGbVCTde4x>3WiSj8({ z$7#Z(NY?5D!{*zVs4A8z3^~HCz@UtJ|B7Vn^B9o5IV@P{ebmRuTk6fE%f@FseE&W> zg17-;?;9oUrc&BZx30PUQTG(8*_hD}59$xPKXBG2IeC-q@$*aj@>H1n)6bQ#=6r}U z1mo+ELn%V*xMOIwYAfuQJX77Udj@0uChXSKD(<=IBDe<*25-kWcZj0quAyOp_c$}Q ztpKO|QSuaw?X&gNMc07IwL0SNih+dN;@Wy-*puh~>k-e|c$LiQTWrv+JsghjT3pcxTStlclJFTk(Z+;BU+a0NhRM)Z3e)e>`{FuGKoJNN1uA zSG78mr6U}nDU0gblIqe}NE%&8)FK5{K+_STwq&tWsK9}B^hOE}68iCv;K=mW3gQh|#I=HVXtuh)IEhl( zG9NZpwhGRA7@G|_Ph5n|IZkDxn(ldJq5C4oADVX>8U?>Y+qrBdUvX7d8d=HmK*$=) zJ(J;$X1*NyH<{O^Nd*O|cS~J7^!G%m^gY(_fu5##fE2Zr>mXMN-i#gMtKc3h&F0v< z;X8BhG`oQ$4lCQ9p|G-A3Fp{zx8a_C=|tvAmBQrxg?^)xGIgZ5i%!3D;&(}P10Bbf zI+$0saevnPn~PT1at%q@>zN!E(6y(!qI{~(T&CrDU!R5Xxa_lV?Q;G4bE#af)|+^e zH#|TI$^vh?f_UgQVqcy|@ds!6Wtub8fQfRT|LfCMJAJu>PaMq9V=NOXp8Q;g!-xX# zRMQq>dv(hOs$*x1MXjE%XIKt}%cqyz&LNTFYhK)K045%25=QrfR`?2>n&yu;|`G9RkRuUt4PFsolBr?RrX z4)-@m>(&L=tvukjEmbZ_{$!p{{i$dwGj6&pnWVu$CG6zE#uu_3RN;JJS+Eq{NGTq) zJ9hXhjy2ng*F^AeN7}uR%Wux%9!*&N!|U(-E!l`KMa&T3leVHlWwB!ZYJr-f?F^&i zhV27T=L3XV*qC3oc;y0?2d`DX#b`jsSMN=qjSc~dqcKhclB{Lqu&CB5T zJ3$DDt&+gD{ke8bjrwHVGv9tt64@~grJ?i^R$T?LuS)0XeEHMnUv&gec2#zBRIKDs z!^@Vz6K1vEMD7b60l6B!FMTkw=H7kZQFzs`9^2%mYBn0h2MS91{(E-i%L`!eYXd2w zLK?K`z0p;8;PG8$XG)9FTUAHMXPAh_P$|_Ng*IJObymO}@z>XRv>I4y|wR z<+3i6tef|FSalx=a2wr%%gMiRy-kVa8aEz3<4$gA*&Jr6Oz-BpwQ{qkPKJDrN09WT zn{AFjCl;Ru4;3!xZtQN&ae2;mU=EsAJD7!}t*oVhJbq!2)2AYU780WxB>~0a+5V;0 zi=Fbt?9*}aMI}3BLB*1iiB|+Dtv4Tml_|r}a0T;FUl(u6PXq-RppY!50{~3wX#Vzw z#PMo&iwZNY>5T{Ynf-KgW#%_b=~rVEWZAo}JhTgm3>0Qfa-J`8s=F;*iVC$*p6B)o zThhBD!`XX%EG`J_0(Q9nvdva1`8^G*$(aZrxGPd@PT)k9-hQow{Ou=8lTEcncHXh8 zT-5x-TcanFoMt87OYT0|DFirTHTK>~=%V4S=BzM&UcOOgn2JT?Sd^_uG1K$cX+XK5 zD&WihyYP;}l!#kSAnOte^%8|@K9fco!RprjH$2U)*F7$p?LnU!gW~HgI_}q4=CHIR=i~SZKF$DFH>+VzqUpo=GH*uCI*{{`OMF zXp8L8z%J^x$v-ECaD4({$PsqI1*ugq?2!VmU%)WbKT}gv13pVuI`@Bs!k|lT8|9*< zqa#m|j*E|%8oe51YIIs;B9>?p*K(y!i7)zc@RKl8@g-IBPI443D8d#fW@-xaWOv%T zugI-i{oBU0k^jfW+;IsU1{R}pO5@fYrPR-Gy7W=PO=HD_y^?y~z!P9h#LUL=N zpwM%la{>N|r$PT`gyQA$+yAWr`+x2Fe_(eIL7&?b>G0=@cCgv#f9@p9MrBE_!0z8)swr{s+ z`NM0yW_vYE=meYZ))cd_gK<#Ti`5V8Y2oplSX%~f`dP{NcV8hA70;A5XNn&vq-lvQ zOXi1|-jCXhWAOG8(%}y@$CST%9t_{T0)XU~ zliYIjzcj}w=bfgx{SX@^e*}3?h5M}!tj#gE_>irjLayU`W2rn(XO zChYL3|FRq}oNC1MYyLqIBD`}PUHveG5OTR?_k)s~*9oc6l&1ltC$n6?W3jyQ{)grY zu1A3zDiy7FDBr!qTao~w6(ErIY;xjHQ-&Ac|$I-JT>8rNW0Z%=)uRO{inN)>+>JKp})B(v%d z;;QD-GXifoiWN9Ipa-!YlkPkWZd|EU?F8~~S0a+bt+l#l?}Cp9lC&hcnF_{R`0AYb z0&#e^o>}yOI3G!pN(s!dr(S)Twy?X8clwR9g)Y}^36Iy?lHJKHa`S{Tt`>=4JA`x1A%Tk zp@^dd>w)`dGmi+FVYL|BiQ{-c3)}mUIB@4aZ9$aow%llu_XO_Yw8PALv@uxB_CWR^ zWz_NPO8Sj7*QtAyG`-<;joj?(uEgQ(Y!;D8Yc~>FjHorcQE8JKJNnIKu93XC)2sTc zLOAQW0L>spz0-00Xa-X)p^=6=*D{;dl>PuhgZsQm-6>v?bc|jWli{vtH#{-_2Gkw- zvz$-jQVG_mdbcnEde^C)j}PpR-lp$_WNA&igy>IA-m$hl$Pq}pY?tkXoL(>K%yGI= zdT`Ba9A66|4*zLiqDS1C3!%&FpB20A?H~ajzsSMlCvT1ska`W3blz5T?%KX3l!D>E zUUQqy^T!!kk11v0@gC<47uX(Y#`-pE9L#n+bWFUs0Qr)Nw~`s4RN>q|FwW{^S-ZVo zX7gt;n*}y6ZWA=}^NsBs8*QK7mA}|F}rJi3vPaLICS>Fc1qSo*qsa9I(UJ zCvc(|F;UV~^30qIh6!=mir5Al``s`5>C_b#EZT9bRfH+0a0O_DqT!m37%S9cP-G|r z{mEPE_j3JCIxZ+C_J7ybJjw*l&I3vo1LizVM3`>$Wj>%s9ZJlY4znK)Av3RBLfZ{3 zHD0y7jpF{cktAcVo`)8DKk9De;KPZ3GW@%`6gX^Zxgl#j_4&pn)?pp4M&kjRsR}{; ziy0hX0hDVCA2xxUC$;c~5+zV^FqxZPAnj00i3eH)UGw)r#i=*9Nu`|oi`E{p2#6b) z{;*@;+22M9sbts9Q00R87?kS#Q)_9)Lti4SG2b<(J8BC$e0gmwr00th#Pp-Y19k9d zp>}{IKb2}GyL_&x2^1q$?>FySa>a^I%v5ThvU65yB#nCnbGB^B{gU`8g^4*h;0%L+ zXG0Bb8`wk%;&GX^VO#v+b{BZr7Y-o`CiD5y5No6{3%$xh1vbuUBvc)~5QeM!c!%)m z*fbjKX|%$W>-N(?*9eo>@67B>abvs>9>=Wk0>$Ir2{_xZ%3G8V0Hv*DdokorkI#|P zGfxOjS@|-*oxCGFC^3Z{6gb|T5_MrXve_Ao z;A1*1k2p#A8>bEPuDq;ThG!3*s?Am^iX*T8s!U4SC)PkpaIz3%XAl!;Dj2c{R`g}D zmd}JWsH+f7`OMFYU=8t4OAXVAo>OytEh(IrrJ~V_C>aH~6 zaqJis9wNEIi*lVg=UG@w@w;{r&D8fxR1N)Ep@*#&vSj;u5^z2D=BB32>N8vIkipPa zfP01gmE9mm0|!4@$6SN)k-C!h78DhfN4|DvOUqt-?Wb?yCdw;&x0t;fHT#ocw4d@$ zf!B;U>AYWSuJ6Y$Qc|$32Zv1%$WGJ?h?3G5op()*6^W5UyVy`j><;qqS&D_X-V{x2 z*TOc`8f-4$(`m29KW7At6FAIgRjE<^<-f{%JmnEI8a(#8g!xwAfAglax5|Tpxd>=-M+GaeM8r1BtqSs)v$qnC{-?Cn_?aWa_qD3LI+PTh|zF5W! z)xQ|0pn8+mYWgti$7CUttbXW;Q965B3W>k4RN{kATgDpRjLth9U7MKo0H1dREd0*1 zOqKykZ=ZqYO1$i_t{yHJddjIE_%Z?}4SL5MAncji3ttIJTYW&cVQn@-A>Bs_m$8sb zW8NaS&o;$5V-+U&s&XkKVef@&hqo^@aQojV{KB7wmktuzR4a0M%qVT?k-@MRxT!R)rLd`fL{JOlEapJDc_Z7k|B^ z(@0Yp7i=!kcqw6$?*r6KCRcD6i{|f*?*aWo60aCibv@BBm)HWWMtsu!-y0K*rCH(T zc76n&z6f>ce;cE_mq}^9G9#;!Yk?XS>m#`1~`> z{6{o3u=CFMqh5U8u+$NowfyLly!&en(*2*-;7oJed9m{Bs`DYC*Dd`m1EhT z?bH7#n^fV+y)5x&Hi9XS@(w~DY%{&P)J7nYh&xA!&&(89@^tw#)`TfmYhxuqdVntW z>^4vEUdMPHHirixV7$NpLj-MBG6y@L5$bnFnvyTuLokHLbs3%vJ91romH`s+IMSON zxj5hFxF=(!<(A~Lp}V=mCvhwA61=!<=Kha6|BokkUYr;P$XATqRi-1X!g`q%|8rn| zij`mvXqM>}79wk_|8kl!<=5ve!Ts*rdqAjN#p_s8HMD_IGC|0ZYX4JuQsouzNsPvid9vRL%_%O>`D=@sm``=?xhp6t((KuhqNv zKKup7j+%fWgVtm$Mc>hz2h?`!9hct`ZhlKzF>&~bhprgYdcq{i{UsrPSq~1a%KCnS z`}9vX_XRK)?QmYaTZp}IjeHsVmh{oxi$F?<@@G)Eht;3##j|Nac-I*Z$h>j}dsrnk z$s}hXg%6HcfAQ3}J=jd~@JX1wmbO&WgS7Zh%%;V*h#^acUr6!72$vt8 z_z}KFy&W&p<5p)oWN+dkY!B=Ho++Zf5aB}U2jPl%JB+Fw-SXK80$V()zq)Kcdzm}8 zaBc+R_-9hDZYro&?JA3_Pj!D!4L5sYn%8vgwRME+Vb!BQ7JhNn+ihbM;kl9fXyzo@ z#?}!=n@ZWzL3b4@)^S3$St!r_UBNXdPhP8H7TLz|HKf!`(P)fj+c!fFr2bA^UOoBq z61ka@MAl@@!rXa5ZG=C)*=bMn{^OEuHmkFhM*Moft|GEHfh#vp7&7_e;9SIw<<(uT z&n27_s@PcL9lvc^O@t-|>&ajIN?v1kGRof_q1>uys_O|8quE-fIH5LHH{P30&CTo@ zjWXM?M%dGZ1Z`Gx0P5&>l{Zs-Ob)uNH;=_jLSFUiFGnxj3IEF0_OM;Gj?#+H#9_q6ZsMO=#E;R z#bUns+_w|v;z?ggc#)tNiRQO0OYU5pB?B>ksPuM9NYR=d`j=vez5L#F<*vMc z%$YkJSPX7){`o)-QA%ZPGBS&zaCR&sQpJGtrV8oDwXW2lp%GaIONa3f>VHRMvj5bP zD6K4`l~Gs}=%X-6EF-=LI&E>3l&G#qVWRGk3oU$d4S7!h5WSjxh9dOuBsDD3U*TKk z)R&3)TY?RKj{Pa8Z=S#T`YHC^iF-QE8mSqp_;|JKheBoetaH7;6F%_bI!nz+@(dIH zDV#kv9;;@8t}im!_&HWQ(4JkI3P9EJ_qjsreZ(Ty7CUZ3srCPc1~c2rGb;J_v_?w%pHOL4Y)N!aE2%-{ zFL<&dQ6SVjzK^u!Mvrwd@!xUq7ifauCwT9P&|nJGiQ|h@iq+Boeh|>`^pAX{AbEw+ s=9H{XqqBqt!9Ojzbt}G2%+ diff --git a/docs/tutorial/src/custom-response/tutorial001.py b/docs/tutorial/src/custom-response/tutorial001.py new file mode 100644 index 0000000000..bba3f342d6 --- /dev/null +++ b/docs/tutorial/src/custom-response/tutorial001.py @@ -0,0 +1,9 @@ +from fastapi import FastAPI +from starlette.responses import UJSONResponse + +app = FastAPI() + + +@app.get("/items/", content_type=UJSONResponse) +async def read_items(): + return [{"item_id": "Foo"}] diff --git a/docs/tutorial/src/custom-response/tutorial002.py b/docs/tutorial/src/custom-response/tutorial002.py new file mode 100644 index 0000000000..214e642636 --- /dev/null +++ b/docs/tutorial/src/custom-response/tutorial002.py @@ -0,0 +1,18 @@ +from fastapi import FastAPI +from starlette.responses import HTMLResponse + +app = FastAPI() + + +@app.get("/items/", content_type=HTMLResponse) +async def read_items(): + return """ + + + Some HTML in here + + +

Look ma! HTML!

+ + + """ diff --git a/docs/tutorial/src/custom-response/tutorial003.py b/docs/tutorial/src/custom-response/tutorial003.py new file mode 100644 index 0000000000..ba0819cecd --- /dev/null +++ b/docs/tutorial/src/custom-response/tutorial003.py @@ -0,0 +1,19 @@ +from fastapi import FastAPI +from starlette.responses import HTMLResponse + +app = FastAPI() + + +@app.get("/items/") +async def read_items(): + html_content = """ + + + Some HTML in here + + +

Look ma! HTML!

+ + + """ + return HTMLResponse(content=html_content, status_code=200) diff --git a/docs/tutorial/src/custom-response/tutorial004.py b/docs/tutorial/src/custom-response/tutorial004.py new file mode 100644 index 0000000000..b19783c05b --- /dev/null +++ b/docs/tutorial/src/custom-response/tutorial004.py @@ -0,0 +1,23 @@ +from fastapi import FastAPI +from starlette.responses import HTMLResponse + +app = FastAPI() + + +def generate_html_response(): + html_content = """ + + + Some HTML in here + + +

Look ma! HTML!

+ + + """ + return HTMLResponse(content=html_content, status_code=200) + + +@app.get("/items/", content_type=HTMLResponse) +async def read_items(): + return generate_html_response() diff --git a/mkdocs.yml b/mkdocs.yml index 1f2b89311f..7ece1dd25e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -36,6 +36,7 @@ nav: - Request Forms and Files: 'tutorial/request-forms-and-files.md' - Path Operation Configuration: 'tutorial/path-operation-configuration.md' - Path Operation Advanced Configuration: 'tutorial/path-operation-advanced-configuration.md' + - Custom Response: 'tutorial/custom-response.md' - Concurrency and async / await: 'async.md' - Deployment: 'deployment.md' -- 2.47.3