From 8111c0b6fe7838c2944de89cd55d2c4dd43cd41d Mon Sep 17 00:00:00 2001 From: Larry Peterson Date: Fri, 24 Jul 2026 14:15:30 -0700 Subject: [PATCH 1/3] trial takeaway element Signed-off-by: Larry Peterson --- _ext/__pycache__/takeaway.cpython-313.pyc | Bin 0 -> 2724 bytes _ext/takeaway.py | 50 ++++++++++++++++++++++ _static/css/rtd_theme_mods.css | 30 +++++++++++++ _static/scale.png | Bin 0 -> 46667 bytes conf.py | 5 ++- introduction/architecture.rst | 5 +-- 6 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 _ext/__pycache__/takeaway.cpython-313.pyc create mode 100644 _ext/takeaway.py create mode 100644 _static/scale.png diff --git a/_ext/__pycache__/takeaway.cpython-313.pyc b/_ext/__pycache__/takeaway.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a47b74dbfbfbc9f91c378dcdaa6c41dc0f2416bf GIT binary patch literal 2724 zcmcIm-A@}w5a09d*@v-lLu}HbsBwT+b*0!u1*Q2yjg+X(ms@e+B}O_O_5zn4XLt7? zkg9F+l2El$=>uvX`jAMK(!BLg=$`-*2(%(ked3MA^u04{pM&fW^(7DU1!P0C3g*&`HU2EhBR&4cjlOF%eZaNRV(uz$_d;4YToghBPrXS zcDV>V*JpkehBLM;0w-|Gwi5*0oth7rux*ZL)zKN5FH8u=MZxoG1#3wJY))LN)p*q@ z&lb*HDcEc=D1;v6YfBt+qZm3SkUb=ln!G2}zdGP|VYoA3%pNx^%A+$zE-H`QYKGoI zZ?_BVZk0pa;Dg|nn5_D@z*b4AH8u+0NWL~f#v={+ARkA|HiDU9u^kuz?JLS@LJNx| zOD42}HbkCjkQW7pG!SJb6Fvh7D|XG{g2`C9>IcjZWKUDDtJBkh1FtO`(!6|{D<$B>9(2pDgJ$Y%RI4eo_I{3CY~hzsBGmg zt>-WOHL_uTw*6Lmd0{!($PGqR%*8k&%JE$AZe+Ns?4EUm-Sm+kM|Bbznly~jH-02! zxP(B%hh)3A@Ba0Fsc!T&CgPm(LGUqEDqZJ5SS0{0yxVCUXS9)}jW$!8B{L)!Dc(DF zq2exN%bp{|#euLU2gc$E=Tx<_B%@BP#{3F@2bK~CQ9Zig3OBGr8+$gG^Y|dl>V>DC z0d}8kQ}fZ)2UoXfdYz`%GKEb#tU`KI(ZntkAe^x{&%*YdE~hIDim2V^_hD`yJOUd? zo6jq^H)-~bx}1qmPO%x+|2hP6s=D~ip#ijE?!oz32uCe3vEhMTCPh}a+ITi8YM&~dCXbPIqy%&m?(ReoWcLIhNo zX!*5C(+#f_|e9&T#QdB~G6pg@bdzL~6 zC*#e<@TW zhP3F=?gT>FygLlITIOr~JZR8fd=3n;k3G8a;Kq)b+37jCF?ePz`SDI_aO1smYdz;% zn!PS!9QlVBMszPh40DTS)@f$t&c?t;8+2s**zrFvuXmqaqi0q6in)|DE7kIR;Cg~% z?qpi1zn(m*@~t6Em5hDLd*cFe>!EM+GSY0NsjamiLb_YrGLgUY8jDG@)WANe& zV0*fzY0pXjb27Xi)wHgaE5F?Q`R3!%rx%}G+$W&eH=|nLuc>_kuNS?VcKU^>X(y2> Rsen=+vP|7HwR0-Y{{SS83k?7O literal 0 HcmV?d00001 diff --git a/_ext/takeaway.py b/_ext/takeaway.py new file mode 100644 index 0000000..2cbc03b --- /dev/null +++ b/_ext/takeaway.py @@ -0,0 +1,50 @@ +from docutils import nodes +from sphinx.util.docutils import SphinxDirective + + +class takeaway_node(nodes.General, nodes.Element): + pass + + +class TakeawayDirective(SphinxDirective): + has_content = True + + def run(self): + node = takeaway_node() + self.state.nested_parse(self.content, self.content_offset, node) + return [node] + + +def visit_takeaway_html(self, node): + self.body.append('
\n') + + +def depart_takeaway_html(self, node): + self.body.append('
\n') + + +def visit_takeaway_latex(self, node): + self.body.append('\n\\begin{takeawaybox}\n') + + +def depart_takeaway_latex(self, node): + self.body.append('\n\\end{takeawaybox}\n') + + +def visit_takeaway_text(self, node): + self.new_state(0) + + +def depart_takeaway_text(self, node): + self.end_state() + + +def setup(app): + app.add_node( + takeaway_node, + html=(visit_takeaway_html, depart_takeaway_html), + latex=(visit_takeaway_latex, depart_takeaway_latex), + text=(visit_takeaway_text, depart_takeaway_text), + ) + app.add_directive('takeaway', TakeawayDirective) + return {'version': '0.1', 'parallel_read_safe': True} diff --git a/_static/css/rtd_theme_mods.css b/_static/css/rtd_theme_mods.css index fd5f88f..e3be688 100644 --- a/_static/css/rtd_theme_mods.css +++ b/_static/css/rtd_theme_mods.css @@ -84,6 +84,36 @@ h3 { display: block; } +.admonition-further-reading .admonition-title::before { + display: none; +} + +div.takeaway { + position: relative; + background-color: #e7f2fa; + padding: 12px 16px 12px 3.236em; + margin: 12px 0 12px -3.236em; + border-radius: 0 4px 4px 0; +} + +div.takeaway p:last-child { + margin-bottom: 0; +} + +div.takeaway::before { + content: ''; + position: absolute; + left: 12px; + top: 50%; + transform: translateY(-50%); + width: 28px; + height: 28px; + background-image: url('../scale.png'); + background-size: contain; + background-repeat: no-repeat; + background-position: center; +} + aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; diff --git a/_static/scale.png b/_static/scale.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc2fe3631ab3e8e6caebdeee393e61b6bbeb484 GIT binary patch literal 46667 zcmeFY_g9lk7dD&%L8XaEZ&IZ9-cghisv^BB0@4H(5s;Et=p89i6#@d%lp>)^|)- zS&lqCC;HS-=2+ROdC{0F*g|>^E>``eD{P+UZ%7KNC!MPL_M)1uO*GyIRxgS#tQbKhF}?quyOhG_TEzuTDfS-rLLb*gUL{uDY*=>Prqe_aAv z4mN>spo!D+9Ha12-cjysxG$COC~=1w%LG}tveY87X*Kc05Vin~0G%%b|GYnqPV4%N z$`nFdOz9*0s0&7juNiC6`Um6Y$OEcscr~(`YNdNV(&13MERAYw&V*MuJIm)9+2fc? z*sK(f8~+{}Wl}V9w7*#@*0Ud`QLTacVGdmwRyxStH{?Js_^WzK3PKw z#d5=Dj3B1%_*AyHiZMEw{d(qZ+2M$oBiouc{{2FKV%bv<>NOqcvx&js2>P<~88uJG z26@3n9Sr&_ea0d1)V+kg5}(iOU-}kuGFZVY^YP)&My~8${hJ>;RI=0`$77e}*>w*2 z{dvupU@@JGz8G>$HFdBfoif|v-CGu0-7x0zBd?E)UcJ^XMwyGNOn~>EYW1?L|4i*H z|KP^qh8CzsL|50cNgVZTs+7&NFOlIvpyJ z6=@>1v4f2NW~lCHxs|x7p2GC2Q(=4fSk!{o;_1Oeq9w|YmN#_Fj4=L!$(lzA~?F?ogFHkf1MU4GR zV}@!vSE+P$g2u!*bQb)k-eGX$G};1Jg>^v`7tvlUEQMV{C*Lum5E;Vr#TL3>-7}X7 zaIIq&rJT^x-GFH-Pp;}`A@r%$ycpnpKkUJUG$B298dB6&OirA?psRL(-+$Q1-w2uZ zWO=;(^2q3unsfkzM=GAKfP1rXDx#QnnzgbUrXN}@rcD(>{~lm*!U&-&@)a_{Ic=HC{vS2^Kl9zxVN8C&9RZ(*URi+VO**wvitkilVICa z-)J4tWBoGC+fQdZ|8mzH3VGpg3=#GDf;^3C&X(w;t1oR>qN1_Ho-Hc(x@+`V-nPS8 zPkRv7Oj8&R6JFT2BXr%@B$a7;ac>n~Mx^ws9-0hG*PU4Zw{*f&NZ~nIURX3@hmF8K z-Xrds%l+{jMP_23KSIZ*xn!2Fimm<9M7e3DV>b~={$*-P$?sAq+r-^Gu}+^Av>{u2 zhZos@p6w@B@#!Bb3Z|6h<;D8QvR5K zq;7FM91g!nym3wGPMSyZA^I}LN;*{R?f=nq9nbst#K}cCLeswI>@FSl@O+-W)LX}= zu5ySz$DG^XxObLAKZG^t;If(9VbB?5Dimyehc`0&N4NhPhfH~aT3DYpQk~YWesi&UTW#Zb{_g}o` zX*pz@AxNP0Dc+?S>vU6NFN}mC-dL1r`?UP&-;LM!r@6%c{>sORfnany- zJvVPgL`zc`dz61J#vi9>tWxV25&ezH^SDk@&rSEFPN~Du$LW+&7FNzF?DUFZ6M{W= z>Zx%Wu9=gSg5^Acn)`wFfpCr{o+ioW7-45e_vx2EkCwJ5VKu^0_#Z7fxjmgqy(uAzy$u8$nMlAGs zUSRJF(vj8ayjh%j9VPB{Jvtm*HcU=t=}Cm{%?sST83L#*9iE7law3UweYP*>FY?uO zzyIA&t$1X)m!r(=T6o0a}(JDAtpk z#E;1I;&{O9(BW}Q%IGWA`l){`eVj++j7n1E!$XmebzBqjdzdRakV);0OfyDUIhJyc z=tEW)`l+|Rzne#>KPl@}Rr=p$rRUkcL>DRFdAW4~>^ceotUP`}VZ)*$O7CK>hMl-~ zdUXuFDbR!kWhYjBgj;d^eES3-=gMCz-yEa;zsqEW!R`fd(ofE18UWJ${nX%OziKHY zW#z$G-00{(=a`b~%0?atp~d+r!lKplvp)IaMS8SAuOio>b7VLiP_Di5mCRIz2Sr<# zZv!p|f7bP`%_H`{a8VGH)Erg@g7L0B3sAG(1cw}>o@Q^6Gcy3dgF^tEY_Pl7@zIR; zqaNTW<9|7FMM_vRaoOs%2m_2ArR-#9YbH1HF6X$@85+9c?8IgPX-OG$no$=8X}XNH zLg2uk6QrLYJuZCKn_$yt13smqoif^01h}dNP~fSx1ALxb5B)zlD~X|xS68f!3r)~_ z%L_I`A8z)T&FKtZoVtdXaW2412WcJw#%@ytY8L{`MB42jTs;7Vwg5sr58H~fyi{j_c zU96%0uX3$dfSJX%6w!XVcrkgom%>fMAvdqN=3}Lc7{?I~dTgob=ZeS(?lJj4E3FYb z25kKuPXSA~vd*7$WCIdAH11abWF7Ivw4dH7C!V}`u?G3yRhiex`<=sl@7KG!bQ;)6 zKmEi>Cjg9!Ln|^K0U+uKBBwZA{4oMWne=uDvO*|Hc#M@^_fx0c(IkwvWG7GppI`n@zMSUiNw$%C@mC0m;3Yme-c+Qg?8*N z#m%aa-E0s%G?uU3WB0;;-E7sZ82?g5W5(KBWGBtXq!aPiJ?p^)cQ>x_9-< ztvZ_WT~@82o{dvqGRFH46F_%gg}A?E=0c^)6AD^=15H0*n4olQch2*dlkGU8^4-yeD!NR$*l$gv^ zjo9w-fyv)gUY}9C5b@|gyZ&6VpU#y){i*oPg-J!eAb*i#4C4|9p1*EwtN5rvHi;{h6 z)zt3a0KNcB6359fO@(n76(Cwa5InA$Qhh^^s$iXRk0hy;IXl)5)tvEO(G?syTk?}36WU;_dha9ps*)zU=2S~cbm2ktBnfm zI#k@D;%4$^_Zr_EFbc6d?Zvc!iH5pkwy?MI&Bq&lUMJY%m*fvc(6xvF>A8NYmzK=x zrpaMmY&F_?hH*WSLm?ny{0BGq?e>G@<3?#XQAQ+J8mFCj^)pb5J?wvY$crAkxxIr} zXjH0K0dr1))*;!PV6iX8VZ|RcHEfXWIfd#VAos2@=>mZ+OS__K%>(&EquilxOvrzz zu)Je;Wms28`aJfwWJ*DpLdEjj8ziVUCfJF)u(?Cl${UmTTSG4GOfZ=6&YuUfZm0Q> zqrJdmq%UfT!^zN8irSe@lbu|B;F~9`^wWe`dXg~(^8((#j0h`ak4RQ)oHt#-u`i}1 zx4_%IPSDxEh2n>7?|tQK${@}rq8F&mXoR=!;18$&ay_|bg%`ZvZ_2f~G(o*IzO_V| zFJv{r3JrCrc$pm7QRhAIc}8Ipm!o#V_DtBVkM#wc*oE+X;4J|eoHz$O>^{*Wfy0p( zwjDBT_piQU&=7Tp%H_{rUUCP6;65OVx8Qgk zuB=D-t(;2RBuwE$#}6~#D~Al;yUXYm-8`=!7u&rI(NWf=9h+wl^ZkOGIAU^`{+FL| zrmhrdy>TTjy$#0vFSarFG0$TCv$Lmv>bg<^;^!18C84GFI4lw-tjAWQJI0!QG>?z0 z6mb=DaPX=vg=fJX&V!+G+H6KgwtuU|imX)VLx)b0M_1}~!p}o|-TtBy>mQeW6C}N~ zK#XVSMa&^qse^Ya@Z{x_6lX-6zo&XOW8*O@ zNVhtU#H|>6(~xwyyYU;+MjAuO_M}Z>Zxr1b&O9nvA)%M%l2pL zX(;n?;=f=i`CC3)eBUOWcU+=d(3cA#lFpit%=@Ntvy-lqLP%)na{xZaq@O-X^48IS zfXw@YmoH(=Q-gF8c)KNU1!mqq)c>!U$qp6emtFTEpE{m`3zsmL&^~wclKrgbJi|%_ z59f&ci?30wCni4iI9=Yaz(4+7EI|ug)#&uv{lNJ~0}BKjT1`eWPkmwcu7(AD3Uxhp zP1TEk&%Gmg_rk_W>G{J_#9lG?rcTZ5V2PHuN^A# zsNC03_e;JsJiBq|Rrx(lI%O@W`f+j`g_nv)zymy(*Z=6c;pv*b6peed&tiL)q{d;= z`%i=_Wr{@xDUFEw=z5daYddvV{fO;((rYi37U=p{#^^&D_a+T{?$4w2->9YURoxk? z(86}c=ol=|PH3VIHJdSI9_#N|pL+>gt%)kuZA7h{+IMV7cXsXk?~D;)$Y`32ZTZJ0 zh&)Pu$0iI&YCa-Uy>6!tnFtBT5~K7qcKLhXdXEG_GaZF*tn28q3%U&{pvU1kXg>?K zUhenqZC9#6`M40!(|wnp?}9*h82h?rRj0XFs%DS5nrOFQ;EIMnkI~7h`T_T~K6C;E zd-CuPIad!ew+kwTLi=HjIqf$&K?(-;w>&YpIq$1;qDTeA%`v0iUav!| zw?OBagxxR7$a^%fKJqmRYVRl<$G+swPWv~srY!XXGi^elBrS^FsBf<#|d`Yw5cUTP(AyYAb9!r z9e1*LU1#2+4if{Gk(Le>;l1vBC>zXJ3{_a4yZhv=(tirxhxJ_R^s(5Rw$}}6e&0?V z=8V^#`}=d^KczSe9)w22tt{FNjX*5-aJPHpVJwgpd_-By`A~*QiWRSca$n z0OKbcm?Y3?H?M%&47Zn!^5u3q&#YVR}I{}!6%9^~BJ zk}sEB5iR#qm$~R^>I`6x_UnN{vzLR3ynat79kZTjf)Y-F$u2F>G65B97EQ8Ru#!~!`C7s<=7WxX3Pv&!o{SC|#}gcm59BI&FiZ}6ZvQS1DSr= zfa{EW*<+(mQu9&7zFwLY?;pLl_rq*vrT{eg$)&V~PgH7-#T%8ET(VrFCn5_OKDhN$ zUptem&vxO&0N2-=GC?tw7aH*8+I~ zg3cf}xalV?T?_SxZRsbBy{}byc~4@J2aVDOMaW7hQ7Yf2W`HqJZ5ORR#Aj&b3VxVV z>oQ=gH5IIJo?GQZ?xRQ?O~;55Yk{55(}l`i$=dmKjmx6g+qB)=0N;aC@0>4@pw@ zaU=XpJTqps6-rpel@6CQm1YW+N0Dl!(G~ZlFjkH|_ja#zj7Ln0uYw>4v~QB|BgO7t z0j@^AYF(otkVG*!Z4l~uoV4!aKNigeJtbxH1qP(s zS2m1g7UbG@U;~t@gZ`Rwz=?(a%=ujPfyb(w#YAUwFh@Q8IzfQY)Aa5h+1Y8en-Gw= zPP-!iZzgjC$OJvTpcCsOu?u0W$SE2I>L^NuqokM+cxj8)_4K-mx3F^GS-l|T^^us^ zo^y~Glu3?77WAK~%!IU*S;NnH#HEiE3A`yF`gEKW)WR9iB_s4tp)F{3;|~NE%Mg9>cw>KFqPdY)99WKnJ%^`HE zOzf1Tg1#S%`)wQ=+xAs%sE?&g)cFkQx9hJ|5llL!oFe4hVa4hqe_xXpJgx8jI0D^t z4b7z*N&aO=Rc7)@I3Wp48&jm9+ppZdqHAt9?xUEqN}v%82YE3*l!0phJSj0=E;)@; zG;Wi3x(4Z%ndWiT58SAv;l}Pt2gt3fh<~ii-FYG^h?xzZXk!!Dah-I#YB-dG$QP@>ns(2~E3r-DHnYd#_&mqZVWe zy|4Wx)ZivUxCQyF-ND2yS3x_)@nw&{LsHN-sO$a)Q>k(grEBGzSkXu>hR*`wsC>AI z7wIoEbPhMA!T8~kaJjfL!VD%YqV#<4kA5XvQ^D5dE72JH)AYWyglLdcOcikr7_C5d zw)sJH>vNOY*0*F9a(JR}MI19zOz-Pjn$qG5Jsw0?RBqW|7tij z;j~Q=tw$t9_C4COgEnsrilrMWI2850mRp`(h29y8-#dz%n!Lq9^4aqs^o-_Z4kj}} zo}X5PU$Lpujy_4J;a@mNfPL%vqJ4&)Io};8WBsVDhB>k|k;AAL=^-fAm5O_8Y1dME zfLa>v7fi7{mWvok>5Gn~xuKjn=w*;H%pBADSXMZm#QD=t#g%1!ZY=w$2g{n2>p7v@ zUDxo7(#a!R#|SO?8Yj_uuV}vpb>+6KbAK&Irg{4^g7m`wRKh>%G6o?WC`Ub#nzC@W zq`?}~zh=RoFlPHc{>e%ZtooGHXu+%N_`1)YcL)c@6}df_zL_hH?s!^F zlqO8mWQ;fBvS9r1?q*J;vuTc9ZGG}Vl{=0xWyWyoo|zws+rWP0n&g5h50vzuUV!ij z1^kLmu5!e6gh}rV;pQ59t;Sk#AV162QM|CE`xnzt$vq}Q|L>QWE&Je{tsJ|v_N37RJ0a@bAnMQ@3%PX*ts*9~=03bBkhmSE2k#{aM@b2mL8TW$x=Z1BUPP@CE z2vEw8l!|=9Oe0br9AWyICgwWcG!OSQL@a=2U4`1iulUzE)Rx+aDd;B+vh-f<8ld`X z0#auKE(9Y}q?yA%HXu{hOc0Rj3s78B^YvvBo5bA?EmhLGn`STfm^5t8D=LBgyPuvxnM3F6jW_Y>;DWMeTV)r?CphrKGJJX$QLz-voA2~1oQC**_$>+}KlRb%NCmhEY?Tw^(aO)>W z4h`?$o|`CHfwps5M(*5ee7N74MJ~Bkp9OLGa7MwN z;0y8$!3o680kdjhznLm54_YmV+fk+PleBR zqiwq)#Q|&XHsCF)tw##sHsOT_bzj!(@@8Li=_t&4cU8_SDs@aHuD zF`cB){#yoNW6X%Bj!=mLk7^-tQ*Jbj{||q8Nh~h+4egDdO34ig{FPw~D^nb|`BG)B z`A_*1Y3~yS_vuR~w^ADaRBu+hR+MI?wDu=PBxa~}V^)zgGdb2Fs@SdPX+b>Co%KCk{{w zqa*}-;olTP9+licErYhwuDo2d&tC9mO3e-EZ%5(kQ)h`cSG8oRhxP1hp3(VaZe=BV zXvv0VwixExOP<;f%Tl5>Y>U@_rM7Ls)N(xAn6&6EyITXE$}QjtIL$u!os7jBV~t%t zr~ppw_j03>{8DCb@4P|Q@P{z3&qb8k8F|Mfd=B=F^AI82obJ3^_L`Xsk*|o|68+QA zQTXTOtQkRxSdZx{rzIZwxgYjRaL(ePmKiDc^M#jG!EUp~0zW;)7uXgprd@R0Ki`Hl z3{~uYy_LrI*7lE_Wd;2+q67V6QR_ILI$0p23O+T4NWW^etu&b%s zcl2B&+>K(B4jV@1 z19edcX#_+2L;vn+r4AQ`kP1OkY73?YnareP7V@*ODd4W1FI8CP#)>s- zhBINLi7EC9ok;liwglpc?(nWj)QnL1lU7qwt|_k_Ls*`ol6BYkdHnWQtGtXf&*89` zsaJpbZQ!IwL?6*rNty`#oEO{;!_y47ovhrPLEDl_0i^{?=^4xpobf~?eTEbpf~H>Q z2mZ+to#Q#u?Lq@H^2Mh-Rk&+qy!>4hQ3mJ%f3z>gk9XFr}=g! zH2l1ajeEBaMkSS#!GhJ<@VD}wt&W6Y+uhSc9Z{BdwGx#=9t7V1&Z)s!iNv^E%%8MZ z&v3`xzN_pL`N;}l6@F4HzLJVHW%z@GBPKL1r$kk-E)KMmVHacCK6Yi&V3QG-#&~aw zedQ*qt&iLkxoM$%PPp8Jp;%kx=LjK3!+Y`wL6jiV;qu14djL|wB#!gm&iLmVxMr(S zx%BNVlhvd|*}i0o=F10L)L({|8DD#QOL~RGi%a9b*;Id2N-i1OlU?`M%{O9P3&+1= zws7%C(}p#P`uzd#21k9rZkIi;Y=jk@+89w zFGB~&mDBs7%a$u2WY8sJf6S++64W2FK;^{QXE@qmrT~V8{=)giILCddIK7Hz2R?7Nuc)J#}vv!MdFKiG5WD(~rKyaYNdgQ!ws=E+eW z^6D&V=Gn$$R32=?h}2*^OhSz|Ok!<*hUE}_`X31<&ol?$Ryn3x5bEzN`>68N^4sk& z$Ek+u{fD8|ayz26Zm1cNa^3xSqRO)vNq)bXl;vBK*}+UHdIV4||-jq}Xa-}}3iWpv-1 zam|yU>Z*IUz2+VldT+vN&h!#*Cy&qR-^Bo)>;BgLd{hypIR#Z4W8B13Yc|t05QilD}RiJes{Rklm>^WSR4eM(#qrwugcUiHsoS$IT`7h_4O)2u&MmZ4Ags$+Ze6% zg*q&js8S{H!=6w@OtiN1)wLh_)ptf_eZ>509fBw?Taust#6B0@5_C=;Id>H|%tJ-W zCoVP~drXseHgwDPJlEWr8$rlcxTNs@UTiP2$@L9R88ktu)D&Gky2j(U^DIVLQ0mAZ zkqLUK=fDTkG+v+4H1zo_9PYyz&XY?FV`R&*{u2fF|M*qJ&O zT%0v??S4vEf!kB(%|$HE6+(Xu73c>;+A-m1+SNZz7TdcLYi~3Aq6S~(-{^VWJZFOc z)1YWOgXv3AhQ+iNJb&~7*W;V?fj*&#PNYYf1oyJpn)fL(1TSxzqu2}~P)$?`?9*3W zTj1~6+f~6A`*ii4#3LZjv><_4?H#Mnns^n=w*YYo4HzSHq+f3DTws{Y#h^ySeim`D zIc@<}jnHOTN~#&xq^Ds(?bGOVD|a{G5_yEYJ~?Bjj&Ei05{}_@M;z#{$226pz z2>q2`6yE2yQPRS79xHtn=z-hzHMZ{**i%=@?|!xR;_S~E7tDBU+sEg5B8J9C-llKu zS3Tu0-P80L@FtLWN4PT|z4#m8lx}@X!%L+z3pqohFsh`0-KrXVhB3ze>?mwk|H0|H z%G#T(c+z3!{mSisMqY%Jge3~}u-Y4uemh4`nA>-+*y1bgU8az^rehc8Uj^qk<|y1K zhNIOUQ%{^FaXCHSP%IbQ6eH*nmvz||&V6|Sy~1(@L|HvkU<>Bb7Jt(FIF@$MTCD|& zHO#M5Tce$>`P=Ny8vtMP!hbG8BlF8RM+@pFx;UWlj>2O3lC1jP{6SWY1@93Q6w>r% z)Ae@>>%F!dMdU0e;W|DycqoBiYW6Kxt&iXvU`sp$D{cW8f5p3W0V#5$SGkcBM2z>ny zB^|y~rZWZRdnqZ;=ncoeUT^H}G1U%o`L-0GA?Muo6;iWOj|lw!3AYe*{JC|5@MvBDr_F5=S{X1m zud8@X0&^PI_aYu$=*F7Ps^{|Rbwi$K?|jbry(?F_y=b8RL>+U%aDELQ6`Qy%4FY{- zi+L*QL+4#Z%Qj&x+I=6_T!Q_tYpS&u1y4X3xK3*DG$4Ssh<4Jq_umXAOx<|8F3&j- zQ|R}6h6|!WySz0%H(l(~^bA zslG+moO1_n5-;T$gE_ofc&47>pgThzLb5_W9A~omUImP8BL281_|PyFw@>*yGfRa1wXHq;ZP4)oqSaKOX_-;-XtiEf_ax3ItcTM^xf)!~Cbz+B zP>mwX)ywu76%`VOJ05)R`ksp)=du+~yH2olH6VDtYcRBH<_u<8K(3Y(f$IP&%B_F1 zEr~br&VpUA(nN71xv3^jI>c@HD%V<`Plnad6fimhU?|$QK)bj_B8)IX`~IL;o%dl6l zNO-0m8$N(oF5qkTo$cjzf3W7xAiKk}m7Wgo$f zwY*Y|EqQ5w#@p4;c7gT_a%oCyN>Vi;F?E4oFk9(+?^$*P638#hSjy|j<;VhR@X zw?Rgy4zp_OG_iUa0`x4+z6jdMO8!m*cVA_~M}J<%WWnZO66Ykqy|;Ui%o-X$H(~>C z6I5!#RaVYEeskG{-62V+T&5VKk{*;ES5WHHmHQJXwr@bN$6D})J*ZUzPd!7OfglpB zeCV&aap_wnRquOuX`yng@;z|%S!jPYMn5V{>lUpWlgCV%;<0%vA|?=9)C3BUB# z@#x#6dgf}Oa@~(`e|YsNCF!Eb@7dW~X+f8FkJqxK35-JCiQu8tCqby{LkJ4=Qmi6{ zr8hDDus8hZiidvKgD2T47lr>+hG?!KRU7QZ?+LW-j6vR@MH*)-XlU%7XBHYLxu^B+ zN1+u&4f$aD4b!~6*nOUP{E4~T@G`p|HTD9EG88|-Wm^TBe7#PQGd`Ek`}c`EH0e&E zSRV`{LLpVii>DaVj^TsR#vYWokM%i0Bj_okBwdS(Uk}+^9-|9p^J?t9)Y0aWy}hYI zC~g{jxFva=QKqWl1kp*b7<&%1g|)B0s4L2$aYQ-NIU*)_fHKe)Wzm=cPHf*YwZMh#1?6#EqvJ4+45nG6qIr6-WGcz^k!NDmh+Ypujm#b$1`dAttct(`+AeZQu zriiaaWF<=LjY5zC3}1MhVl0CIg{O0xMzmcEmU1F?VwR%ZG-T`pdoU zi=;_IJjy@=sZq6g%fQv~8LcGt6}(U|v4rwQOy9#!nC#c1vN!YApEM4g@bBsSW0?5- z;n~~d*Dk*2hJ~9e@Lrd>RRfp<%t7hpZ*`qlC=ZLi+ioHVf11`4|KUAEP*$)xChsqO zQ%b!Y8(^?QsXX`Uh79smEi3ybBq3B;WSvmd|h=(8@{U4#(Vmb^i`OR7Yfk7hX$ivZ{Mv`!0b@ z@FY0sxh8jxW&~);iZ{nFED9_eih3Of6qYsM?95K*!M8kbisHW zt)8-7+{JjV;i4gjvTw)44JAg8Szowtaa-!D*1LTsM6~1sQ`X{p)D;()B#K_SP9F27 zE-#CrrDhUO{Q%<^dL7BmmMJuncgtfo+)1HkZsz+r>YKgsb)S_sU(fy_e<70dN-5x` zy1k&n>A9Ss1>IzRk;&02~C#~DnpgDx+`biHK`_EXpOeu$JT z|NJ4SJqfqjKz`XaVucM1FtOwmGNjmlhZ&3CdNEnM0C`bJTKNkH=&Bc4@F9YX4Gg6K zUB8_8<Ga+9;xR9&|s zA1UcI@j={v9$NV9FS0QWfXnAL<2*Z%8*zenqMZ@qmYNoVb)Bjp7wL zmqO#*A2KnNF)m{oGD_9|ApDIC6sI$wH+UwC9&T4O*X$Jyxd^iEwtTPOG)r)i@nWX@ zJS}&Fc7WWHSrPT>ady*RY&cj^1%~>5UeQpC{;t(d7SQ*zI_U~JJg0`b;F(*F(v9hL zYO*2}CYpFKZg{4|P@T1+zz3FsG`4t!*P~`VN1-5!eDv}WKoZvm11C;qDt`itO{5zy zDWvxvC$~2hd#MAl^fz6?%smstjj2Lu`%57}urc>;Lt}yG-)XwW2a?~51(K*dN(7G$ zeeWc_< zA1e;oEW00lFu1Z62zqkTP%Avp;s6u13$-@&L<)l#(U_nGa4ZaPoW#mHzKS@2htU#) zno54qLlKl?&=1L=N_11k(4J2>DDuqi8Xh=$b|kv|OeI>mbN zV6nSyo;z;Kz}SMH`OAB)4>)YuU${Q!1He#S$gGzb=q=TinjE9cPNx8CYMG8Z18n6& z80g#c$%5}t+Y3*(K;1xl^xl#E(!U*Oz7?$0cAeJ zO!@v;ts=Eg)qFJ}bo{$$NpP@jbYEgE-jwwBF7`QUP~Pqh!T?8Z;~cy-P<9|ZvnW{9upfV#^qU@-K__c1ol1dp{+k;>Nk zNGF@F!=x^)>k`5jj)?sO&(t4!2R4g968oh0U#}une!q6Fa7Mlrq~N%~{t?6c`{3k* z*ErVJZx&Ok5WbAlm?rSDz-p!U<#&GHeLzbnZsjdX^%T#=0FAXF>4UFa*xWx^c;*9| zU;9=c@$uTk%H3o{3_n~5+tS?jBWXYM>L$ts0! z0$kh!g3AGL+Qd$oPxonUN9#D$aX?}efSZmDLug=loful-UC%xm-i6D?I^6VcPk|?t z9I!48tW$zsUm|XHXA{i^p7fv^520&8fz`<{L~uY_rhB$g1#M{1Sh+T^d#J>#VU(4|OAW+qh3&bw$B7 zLcNIAbBExTpzvbA`ozbz^|CXp^#ADvFaR!2DH?W{V*aGyIKG)INa>RK!gD7KBTf)^ zc7qzH|KTarO*V0O#FzWYw=@FIF>0IXEFV3LAovFfCBP+oD^A{g!5f|z!CAaNFjP`N z)}WkGykCuubzA+K7V!NRo!@{5h`F~4cUkT4Y^Ej#C2L!^Em4!4)O9&e0_{=XMg9S7 zL?9fe+LP~S1^6)PIO}l3-fB~nUM*=v6ZpN7H&RpOVM!c-l&Go}&zFY^*xOqB*~WKC z>wA|ktCKrS_3AL~cqZx{*umILa)?rZO|p(hO$#$IH}HYt5nz-{9`IFDgOeng06RYI z6?Z5+oY>S7D3rfSj!(ZDVA%ypqPB?2h4oHHW3Jryn|L_>6xgoT!SHYV@=e0JcG$!a z6hdC4$fGJn;Vm)eXkH5NoF|*g%=!LYadj`$4yp+|LIf^%&>w91*#prDY{?oqx3fMY zLu37WeP-wVKTsnDE`DEPfrF2^7mtbF+j?Qs-}c?M<}=I#c=3o^n3BsuCw|K`7E-OO z&UCsQ4Xa4zYhw$7C7F_a-GZ7j4G8wfh7ogHySF5%3zjzLvMatq%E0{;0$khrnf=Ww zt)gLNBy8rHuKFLJ@}XS_>jTHMOm4?&0U;GqM|_*>yCD-`RjAWxxqKu{m52X#I#QDU z`Od|ID}VF|21uf&4s|sbH1{}83v+G&e1M4#jbb%R(7t=7aLx_6r+G;(s%BlOgY{7|X53!(kY-t7egf%}l1WG0 zG}Wi|zXY;Y&Y-)nXdsCQIB6WCGj|)}LGI@<{|+Mf11G0L*4|fS@E!Fc!U)8I?Ynz= zO$Xbj!4wUbp~x|@N$!`9>zuE;$Z-aI=-BAVf-HuVy?5};s2%}eb6KfsQFrM7>Rbt~ zuve`BpSXKvFT=RWk@85B;?`>$*iN+eombx&-;#v~44gil2U85}B^l1g7_q;JHMm#U z#w7w9FClwk{XsFH_n3RMn5k&(9cJj^)4s{71z_X+z*^gXSc3gzP`q>z`vw?uDxF9b z4?G9?`wj3#1+os%^uhf69(8M;?xlB-{2B?s%NW2*vUGsMb;y^eR*~oITm;-4xGdH$ zy9J<$&MQD0_Swkbq~qEB)@nvr)FUHvIfXrR`qzW6OjEINM(S@{1)xnG6-Q@n7?>3m;|p# z0xQl@e()U5Y<9mjdcBP1%XW);FGOLOLvX=<)3o)Lr;Y~^) zEn%dj12U?R#Ui+bdJI@#S$iGWfpVmu0P$RvDwvW&dwr5B+8>FU31rZ#=$Qs5vmaf{ zit~<4Ni#BgwqH1NdNAbIl)bAR2*;ejk%Dwku_FkT1jJTJrJbKN8qa8RX zzp2%-45`HQD+locI1&>fEwDq_5uph(6;%|-)5(i*W=P=BPv#*jjSPG{(xDA-+*z`Q z2{2=jt8sqyf~VS;4?Qk=}VtSNyIsI70M1mhP?@I!R(Mh4c9-#%ov^lCcGs$ z-E$AvGl1@bqJ877C%0l}a=;u-*KTqqflt{zQtJR%8G!r&lM+}K04~3Ix)(SPHLx%V z6$E^pBlSdn()|0DKzpA?iGcHD^YV%@L9*fmn*nCNlzbQrN#A{zOQR_R4w#9QY`DfL ztHaa(@bm)asHz0e&%i?1DhP;*w`q_yW`G{!L}t=FJ|AiTn}JVYK)Rm(6C5s-4VbeF z&AtMU9DIuAIuODV^`K7Y6hvT2KD zXCyc9qTpL|ejd5AQodK(ScC7X>*mnW*n0Q)VEzL5OT7&bKGzDHNCo1K=`8|n>bQS= zz7NyQKzo55LiGV$OeznDgvj#^0JQzSqmsB@7VP<_snKUsY6$Pq6(|+(OoQpe2@01# zyq~wvM0^ec!$pSL!L-Tp1EFTtq%V_?SRmjysQF6wX9~cvy_KT(%!?dQnyE?IxM%ZQ zBfgyZ%tuQ~fo6<*t-{UZ81{hqqXVB+{~G3}g!B=MgYwbIJ+jrDeDS9F_=%E>Vo1I+C6guCDtl3Mn~s-Jc)@hWU^q&jj}fp@d<;0i0Y)0H=_l zK@RP8czF19Y3-mOL#^eT+P;O+swodA=%CFR&gH8W4UgiC-cPz6$?!19$F6eyy$w35aKbf4r2{{X&xT|pXCF9#%2EQJXHlYiIW zkh)uwFz`B}&4YG9^CD3032ufZU?5GLO%gnEr`k}}hQJPwgn>fWF98UCJ{*b%G8=*4 z0esGzsUP$zjU!bR$=bDyWi|8WHK(B)gERFwkOK>SlN=9IfMCEaAP6Zam*Va(OZol^ zm*hEq(;C!(QY6wfD&VF3?1O84zgM;WeF>b=L)LH7;M4p;nSUetQBac}*}X$B0Ec}A zj|661&;!r(-Z(~>1i#$HN(?ZawL#ngmdAi}&LP)x$2f}j@B6VLK^)W_9@yQfaiV>7 zyFUix8#$6s_6z?h8H^? z6CzCn)&@$|MP*r~sPwuviU=r3ZxK|aN9i>|#j*%kR#2))Pbfip4_H{0B81RO5T%5w z5W&#Cd4l`C@9(<4f4oe1PMtY(&)hTT$pIW5ro7gPC&%fYn|aL<9kU7OBtlfj_T8$f ztvh2Al2IP1$Y3I5GlC~h3zqHFm3`F^q4F`m+~Kgb1f3 z3W?ioDpDCQ5Z4tZ_>)pJ$uk)Xs>dan0db}Xy}85550TaYSgmGBfIA?Hy{ON(Y+X9SP%I zfPr*%-bC$XZ}mA!$D1(BvM~s`l+sV#E}{jVoW88)r$JsjSY?keK?8J$!zd`5jh@_zpT26-Pmr}<-4%U zja?L8*fp9jmlY#g$bZO~b2EPTn^XloI^7_hyOF${55XY#t8ixlR3!a1I*w~35b^D~ zXTg|15}FMoAD0e>^shkZ(M%Mr)R2fF$n@@wu-I5>Z^qxaI#DVdb00;T#Z7=S+B#2WE z;&5y|#Uj4;H($y__2YJKzpeQ*&Fs-nf}iA z%|n*Nyd(^1iH1XZZ5b3)X9iQFhHy8yQ|eCl!k)8+2mMj=EMz?$x)2piGy;H3-HWS~ zIRgCR8nYeo6|NV}lnc$um$9L{1YJy6f&($jS#VBoTV)$Y2mH!a@%bv>+jkN%N0=WC z33%j~qCyXeALX!79r>nDKf_i`7i*q#U^94ETB>0$>+{HgMu}|E=^* zp?6OIg6|H=Bpxu(e^fkU-Tm|R=c9Ds%NiC4)Q;^U4j?2!X^54pfjLrlx(yKn7?7R_ z7Iz_>4Mh)uW`LDE&bTZo-DXop{mm~I5dgmfhn3kU1orB5L$G?hpd0z!q+PvZainjG z0z_>G#Ww+*3juJaS?)~$7fX)$gu6k=bO@20{|pUFDdLm&w);xYN5TgQN*b~`ir;Ni z_XlZ;E4*yYSU2kwrstgqqYFL__B;V_D_5o_8#)69A7+*@!(DR}1jsj^@B8LnmH4t7 z2zxgL?2U*vEXmLtvkrPSA4bpeeZy1DTLHqJ7or=n$9QGab527_T;cP;t}cCKLT)1` z7jP|6vy%X zvoAq;;s_SvXsk9k_?a@`&g8NQm)=Q~XXpQg@l!KE$U|#KZZBiKYq!F;hJu{uchGAm zc}m;Raao_|2*@5Gq`dk`Q9nK=9{(SZ-|1pA^U$9u-*76GigruI95Fh>H+Rl;q#?Ak zbY9DCMtZu68Mx+f|I0IQUHS7 zVqweQD6&c0(&69iM3;)dc0x`A%>`QIuo-`caxR}xKl!Ai(O|k70}Ows1gPFUJZc>r z1$ebg9L!+`vD~K{94HaUPIl%Yy}YBM6CMlI;j_UxIRwt;p~klsw>~v4kt2sW!TC?^ zMsXt?8i!qK%%^`qK{kBLInqFQ!bEM<4xD=mv8Puv zl4TKtfa|2zf-24djtCdd4FNo*OYVrk8lW81_jWMDiJk@@5Z{WY6xhA9Y=>)CUe@}h zyN5Piga$En6Mb+ul)r95`BwTm(h#v9_inQJeRjhbZhr(kM3%uAX)U2};EZ7P)Z=%6 z?e=WG+KGSO8H_bhKN(iE#R?47Gk$O?&#!^rnJH&Si<+0?UV9t0swPWcRIs; z2>qTSaNe4MdjJ@Qo}Ga% z>L>l+yhitO2O=?=KmG6|4|6a+!WO#cMin9vL=_V$kJ5%bSJhxTf!}<)L4N}6O;40V%jE@@5 z5uWAQ1oVs1LBKBFyLkl;6f_N1AD-)jY-|odYsr4T9DI@eRv=zJQSyETu#cja%<22Qajg~g4$(x6^Bdp+PvVS04P1L9KLg^j02 zvVomYhF~Yfiw_HD<;7F?a+;(IHK@@XLGlX3jat;k#)2&C(K?2De|$#MkHbRQ!6XsR zxz^xHgfIkB+JdX9;%Uz`BIH48KOGAa2m zd7+{99P|ysLBcN#M_TkkMh*V-dZLC2?0EE@GoARhluU}*B#(J|q|u1btV}lgI^p0% z%?j~HYUEoWU2YSh=#l1f{-T@Lf!4gPrPHbd&4uPFDD79>)e_9YMlbiq4|Lj1B^d4Vks;At)k(siJx zzGR9Y3>yDQ?W?U+GrDVn6+%Z?-r+5EPh!q9z0h?4yn&ecF2tc>RQ|H@ZjIKUByeue z$6@l?X^j9rw{jSt8g~{8g^vU7EdAojIdM>-VN}6(?#PI{e^O0=tV?z99f~k7c0{Fu zrQO?&3V=BapdBDpdcZ)-N1a)pB9iU%$K%fEgNP=|Xg0dxDdzYGXz+$P<;oK7l~OuD z;T5r7hyiB4X+^9UXFW#yQOtR>U%uYf8aT7S>ZZF0tLv?GHNUlZa{XwsGr`?|+dQ0C zC|h|&CFDc1aZEi-LdFD*n0sZQ>Hh8HhAFn$0r!2nfwQ8=?eqVFx6E^N(qo{^FiD9q z=by--B*0-1;|4M{B~?= zN`Ax>@a{EXj$f}a>O&_TaYeK*gNEaMYY8)3#o$gF5E{q$fpwi|1kWs?>{;vA+e(QT zAkfnqZV;5z*;!(HRSoeMW69_|BwTs9erp#XrH}Zw8g)3M=Ja|Pt#4CRsz$02OX ze2oC+>4pmwFU0G(*x7jBWt<}xX|n0qjic#ECML#L?jZ0F%-#pByZM!D1(P7GIuG1F zSo%$%#zQ-YL=0j|rXt?LRBErQ>$oe4zHV}cRDkav^GGl81W9n+JK53euIUGfji=g# z&%K^XCB(yVSr><`7{+59A+V|05on2=1T8(j?4Vc>;EvW8>qaAIR7dx?h5Ou%kIG+k zaRCJX)Hs(1RXmryvBS_kFsfNniaWe8Ua)9(Ar53Tgu~{qv{j8!-AYFO(M; zziGkE4Eg$(Mey-jU#HVic>S0rcB>1CW*gOM-R+exPn@-egm_`f zO%PWTtnJxmbe_fcq4jsQG890uwi*^4;1S+df-C zokGU;V##^LLti3n=Q7XwG^>V*o21W`{s zYuGwhPL1L=d^iFRS%KB9!nU+=cyS{19Wtqz2G($m)>wN(2;<(dy`#8H-~fq68h^9u$CW5y)Pro}oqdaZC1< zh(`#*5tQJR19w&Q`eq_5a5Dx!HGL5hB&QqBbZ#V_Nq6OE`|dvAOPw?uN0B_U(fx>< zzvs7WzFG(~{|CHf5Q*+w^^LNRQ;5AbK&;*_;r*o~9H1MDN&@6QCCsyAcG?6SSk9>2 zjUC+(_`|#QGlp3E6o9^-x2BIn&SqygcOL8kK-d;BZ0Xb~uvx$GJ>#Y$8mWD9&>!y$ zgW$=Q4@h#b<@@|D9VLV7NYBEJLKF9J1h%PY(|E)tU%G%ub-&L(I69{rR3he}#zAg? z*DevJ%_$Za^XUuhJ5?j18~m|#sGEY^eJ1eepjW@b?~dR0A~jN);`@v!2!L0}3@C70 zdEO{`8eABe+A9>kbkM-9A;niY()|Y?eHa9^rDXolo!SUUq$h}RTg~+HEmyRBVIhO%xUPOW~6kWL|Pyvj>FYM;m;O~Jj z6t1`d&7#O_a$zHD{wk~mva+7f`8>ePstO9*mcpg83t&5b)x$+6{KD-cATu-Erjl48 zto)&OXbX+9tmwBtfaF#@^O1lYZP{(b2MvhrdIWp;0FEe>@nwMmK8DpJ7{X)p0F&o0 zX0#U1Z!a)_{Bgp8{sI120Lfp#C6VK7=yluBJsLuDL-?M$e|Xez+Wg6@iKsZj=6#T27`c5Utzu<4mn84^Bb zR$8MdQn>8uv1G9NciMv0RZ{cp`IefV9FTDhpx=XyI7_EOFM{j*Q2X(czK>C_lY%3d zSF=<3z`5GR#XMwP=47YA{(y=@u=TqW4cDZjlaZPR{V;M2OC>TJ4JP_eAA))LPs$?n z38hh>)6(qxCz1t6j4!dXi*g^16~eCZE|%h+PyYgReA(XQ z!y<0wisJkDDQawThMiOQggOj$Pvdc$wFIbyf~qRC+LP9{(3W@eN9`eQ)z}4e(n~r* zQS!K=!ucUUeTj8}Se|HF*ON;PiHJwyCmuk>hg@HpVDo_n=a@t4^)5aVGG2gWsXpdQ z7CGyU_qk*{k4#p{{PE#NXLu{rEw)SjE2?%Sg!8P{!zQIr8YX!>0hU=cd!fz=A=uqv zV9I|`J`LJ>AeSSX9bhx-Mb9vlfG2YmATy|q@`ilgYyYs)B3J5Kkou}!KX%Z`&?lx7 zud^>#a$S5GP87Uh1{6dq9+OuE*XX3d+PTyJ_PxF9#{b0JH`!4LQrHMqieMptv3(}+ z$w!Ss{Kx@CP+cA}OiBEo%#WM3E57s+L<9D-!yO>VA-|pR!h{215yg0+x@h9L7?$Q7 zLa%_iI8%V6mzmc5f3x4{P1t59X7o>xa`E@3vT%{mCOuL(2?$oGZXiGPO$qGEi;So^ zU{G7e$sFdpp#{>+xKJ(@sEG*Meen^T7y;RH0o`ars4F@sME#kZW6c+T!0>UW;a!Y8 zQkB97Vf21;I@?Lz%FgIcw81cGk%@ASh&6op=XL31=@&}wBj>>i1iK=n_~;}m_jeb> zNbT|3YWW&%A?}7J9k1v)+t$@M_lAws=-$m3JA?xKckb^x=sJWxK~m;v0^C+XE0`5P zDTu`&D)@83j}6p`5t~3w5K{KE=~;cul^;1AB_!dfdlQpaBNV#fH|x)NN6@o!z?t1**ekV&3;B|6Nuj~;rj}^r$sxn>`%p9Univ_< zc?8`B5;Yut;jdTr%aqkMQ4kL<4W34JBRGWk2$ZR{z~4j(kU5350Ne7HaOl!g#p|PNXcqg7 za-V1CxIaB~>uj8h;e!ice!sHVJ1W4ADNTq{0ss%Zw%!HLJ+F46X0Y;V0EZ(ud(l;Q zSl*p1ugwg17TuSD7pFF&m9U6JbIQxyZ6f7^Ld$sGAs;zjZUPW|QWf6-`LF11A(JAsUeI0--Lkh$O}N0F|Bt8ztV9`dwU38o+oUQJn*K50igU(8Nqcl;K(OC^$d z1fCwG3#zd^5qt`3A7jq`f6_@}LZOgL!3N_VBKLN$6^7A9l=t7om%BJN{Z^C&e6 zqu!z*I)CjQ)zp0xm2Fh5Agm$;ppk+!cFn@WJO66=dQCVK+eb)sY)@}QTWpl#)En4* zX2-+I=+>RR2{W8x&kzgCCo5*H1J#RnK0QaGqnN}-%m|9K0TvtxlQ|2%*b6}3{Sd)! zz}6uo438^MnBa1-`b&z@2yj_6M{m>+IHc^X_v6kGb}`LX0S*VG%FJ~q0>@sPaJ>I( z78%8DwN~~ADB*QRy-92*k?HHDZCxFNXr!`J0HeOX87chXalIENv3z}V2ynS|*!dq$ z!B1*o=S?^AkP4w)Vw}?e%?DgDV;pVZwk09CYyDFmT5!nQ!K+wlhBY^HXMureMW=wK zo$^w`od9uc^5GdSy&|fR4I(GBq6|&(VMxjnS&+65fhKu8Vkbx&YS_Ss*j|*xy8G6L z02wfdTwAU~0_5IJb`@j?PvAC{NIh_r)>Y964wG-PqUMVS(sqs^HvH}^_woI;m>VoM)t}pr-6g*OHAGH%cVBn{^iNYU&V&rkXJ%G@} z?1_DkJUb_jqy{g{a{^~^ThWP~oq&w?JXnYW1|>cT_ufF^-)CeaP zhwpXzIruU2ffspy@m0S4Cfa_yEtBvX!5CY=4i z=ICEy@c_d2E`b*o@Z*I~@%w~9K0C0+x&v1zNH8r$5Jti{DOYVIex^f(0#ULk^UJL)|3Q5`qh3E+9ztAM1WVa+LROvI`p@TN$mrzN``%0_x&jGJkUJ zcP!j5+41S8y&VMqz;_2U95i_C%*Uwb9u4lR@GubBJx*9Rl%M~&!(Zc35tXNHT_ zwmi^6D5^3{hXx}!`dj#$JPHcS4y?UD3rb69b}Q&KzwwY7}ltTT|T&3l&0VJq7btIRuHZXWg%nal#;E#17)5O?RLow zssOQjR4EA}!nOuxr3c_-3Q0@>!xbzukA%Xt6mtj@M43wJ-UB(1&(Z<{>iZ8Q-?D3! zZQEU+6mZPKr<(XyzHI<2o)1`a{KdNh!QQ$)fed`7(TEICZb1OVOj|Y(ml!}GB$LLb zl_1Ah%#N9{NDOq+w0$>a13ZXD6r$vgbEJTl-8q=gJ6Eh zWfzYlC1pGYXP_7yXgBc0|3!Cwfp^t|)0|}Da_?Yncq}R&dc4XZjeyrFXZ2*XMN3!5 zyDM--wKaXco8qRCJZC3Aq7x5#i?Kp{&TaWs!~+2BO`Kb2z@( z$j2G#GrTp&VRnb<4A47+6`^0n=YZ-qa6Cf_(LsO`kw@ zc=tXa5U{%q61y6+$a9SeFZzUI6OO#}5zI?S<_G21Pk8LtiNCz0h;;y#uQLg5&A_2! zS0m^rydvdp?7E;5Dg7_nBEX+B2AmmoeaOSkoou&vYYZ1VTdi~jx$OCpev%FqK^Zc( zNWmwDs<&3a4a!^>iMK{0X<%-qkx2V=16+jxtU*3Hlb++MJ8jHrG>Ax!uOhXC@6jzndMkP*Ex9Zq@*=RUE~ z9!DsJ3!aZVY?j3xkqSlgsZz>17#Mch!DH6g3MG1THgG&g*|$}94G0WC@ZD+YxCIH1 zYo4_7?J{_rG6N2lWrGvKaGN?-viTlQJ3bxF(M~*G%)qQTMcM1m{>GM|g9f)sHK08H zCH5fsci5o0I?&w~A42IRfMNg!K~$=Np1#Pv-IO($h9J5cvEt^>`GEDmfJ17)p$XJ+ z!FJ)y0^v%iXAcJ!T!u}8wBxTlE;*PK`)UvT_E!%ZisuiIHNj|LH>=hvWNLT?$SLmZ zd$365_|e0;<#8Aw(6_>!0vP)-5vNH;!bZ05lo1gm22~2cN6jBnr34r3jF^F0%ASik z$n0WQJ>L|MNQZ-!QPG0b3d_5 zPlnCCzC(LVLFy_L`G1c?HrKb|t%ZoEtR`2svd*Z@*X%aMWkW1BLPhHPvRbJOURK_T_E` z9?t&S$XG3~e8If)LrAD__a#6MyYvxGML1+n#WzceXF1oQZZ&snJO-%@jX^me=}`X8 zUxnWcorrTC*b;dC_Nwn+Mq*gM2grrOt5Fe3uwHY>EJ1qineke7)!E0vE{AY-AYa7C zI%%r3nYgTxREgYpgBF5N3$l;wD!~1@fBp}Vjk&&qj1=-91PiqLuT0ISV|yu%z?pr1 zgD)>C0@7xWiQhHUP2RYdX))*C89vVP0z_UK0Ytu=0ZvamI6Wrll+>7pB)*wyZU)gpZ3^(j_lsNPa<-n z=*`6agF;S<4R7vzwR-s&+rV+}!f)s^5udJ3aGVm|gT?lxEHu?N$xOdW8Mk(~U$U86 z3$G0?tUci%k8dlTyP-9_Qdh8&#E8;WK~v6ZdHQ1bmhZRoql%eNXd~@LNtE)hY4fez zR$gV4td(!={72}M>7pp?6$xvtK;NCx^MW*_Wph_z!p5nQ;)U~pKT<30Gxf|eRuK&zInvab6GH7yEu4qLRYt!cJOwpP1yRx zA^7PNVaouC!7V65W{LmO5-(x9f3SOueeFnSNcBoF<^k>ovrrFK*)dSUVze8frk_cd zycUcMIQpjY3e!A25!G|T(JWc5iWe34IguzD@ueg&h zgbl)Is${c7jw7h9x!jqFQzQ0#WMfj@C77?q^gxzlD5}TK(K=bFikBc>S`1^zQi9L= zB_e~8`^`;6V3OS5OJJL)E0RP1s4+x$r44wX$FSM;DIDYx39~_Oq$e+F$*psy1STgf zJKBqbpqY2(Oa#M$8(tzAP;QBy;- zbY#6cKV4|{hp|Lwd`zN@%TrIu+ay(vzMiqR`U^pTzBL~T>?=S*RcEi%I zzuhSBqudrNX>-S;uqE2>>-P+zP<$bwexvM1vM)L+SKasPjYLg_)AEt-r7NBN%8>~^ zY>M$h5z_mf*YXDJrv&#*aG_MQ?#9A*krfV@W~x+Qw1#3k9yn}VFsk>2Qlg8>63&~J{>7amO5w_D(O=$=qbIz-^sX^Z>04g^5L2GQCP0=LB}&cA8_*LTvYZ6$W78s>B^2&t zytoW%%vE}F%7PkOuq2ze?IP~s6Cb<)ffiXR}y4?vueb1+gQGA3)?8j8DqQ_ia#;DL| zWiLlFb%b#Xv>v;EtP{0xfYSH7WTEykwy3#@9}&el=|3iXfWTk8*)vfNQGnFTE?#9Q zTS}-1HpPF8zt^6ZJai0pRr`G+BB;jZZ1xzP*$=$1My(_XjjH?U%h&vRCk_$v1Kj-5 z+l|ED{zNRurEyD3i@UliH^eP33WN6b@VY3rZTni&&Y$;Dj2pjuj3vk_Bss!)CNt|Y zS#9Zws(-6QBRXVnS4*lIoX{;8ZDhp30{k0oiJ&Fdp(Ahc!8cXYA9gfWa#^K?kfV_~ybup?Z+-PKrhK3BOomEt#}_WUEq|{pK21 zK*f84eZux>c60L`E;@|vI!M!iiS1I!(e`6E@?IF2o0m0m|AFoi^9k#i<3EC>jRhw^ zpYjVj=zowx3?7}}iW!N3{VD6SOBI^w1Q8oHGyAlw3Fx&7*`yQJu}^z6dccyXBp!~-y@*~8{#fb zlu)a>@4Va(`bTz&H!p-$9o2O6#ZbCfN$vb%uS19dv0hHeTdYP0)6_$dX;+z0$KQ@$ zE9kzAit#S!o~vBH$?H*9>EP&av?{`{KNB@o!#D-ng(JK>Y9}( ztZDzL08wlhd!`EAQ{O&Jcbr-OFjg(tWru&iMY-RuP*!89ga;ed%oNT_G+#m_?l)@# z#`C`Ovngia6)Vi*DE~@RP@aWx42Y9H^QqHwsxdVJWsQt=&(P6V3R@ zV9BEELIw(Y5|l`ACHYsy*F;n4LC|kSkPG%MrOX%QL!pwG_W19nB*mkLZp99V%2-t zm*{|7S+V&o?c5~GXfLPR_S?t~3h?YQ5jID3E`xDcSLM1GUK@^ToKu0|0pr5D%OKl# zAt%{q@^uvPb$a5SOTw7Ea&zy!(Ct8aFa_!MM-Jl$vfK@-K)5U?*04nh)bzsy7a@A- z3+z%;Qepk!(kO^;L-wYL%He+Vsq1b1*~dp2s>!JWb!?iy2XEm>L@9UWlk{S}KCAls z8`qLx(|3L>%qviV(XD)5sImTXGD-&J5jzeCLUq=qN4qftS+(beE>M+mN>@YQbj~ zRABT20}rZ0$gFT=AhVJ zD1ouJv`FN+Yzy$WwkU*Tn>(sh-5;%}VZpB}J~%{4D9=_IZVTX8zy&Yht2CF~Wl<{u z*31>8O`?UP2FT+_is@i52=3eX&wU->`4tj}G?6aMn7cuaS7)XYx~AG_Q^aoYh6qm+ zR&M?6qCBVaG@{73pbq9Ot*|sTZ8IGV`fdwiiJ1FPzZ2)1Z2>+VID{>T)wzMc7QO}=jDur@n!XzVWq)B2u8&Zm`CA50!UXp7n+))eBm23P{PpqoD&s$s0Y9IHJiO8ELS zvzPiNIl5`mZ`QKYd^zDvqff5o|6I&9X4l<vGx%epk8Ui!)a!VRk#0z#78&6z1X_o&g^8QAy2nm zS@0*=FAeuS2x%xz7<$Ly|60a~R3H%T^<_)Jwc{3d^OI3iPu8-tzTWm(qPE~A#jt8# zU5mtp0sE9hSroOuB60rwvRtpDkpFusaRr2lZp%j$U2O+8?9~Es7|s-jSAWU#Rz8If_6!of9kwMDM6br3TSnFA> zDpmq4<(gSRGAeH-w+fILJk47E#$#G4Ls`MUkV3yN1K#A;l$uYBMXe3>g zBEl15YN3}x)pqPbua3o^1C@o;!eDD=2O_D%I%*IeX_cr4z!)DwJ(--aA)m7BRGvSV z_hfBbJ@ikx1Xg3sbhJ=Ds%zBZ_!f`ca+URGwO(rzXYrrc)H;{1tJ!GzJk?RO9mm5T z>@&144EmgLMm_NHr#AKJIywvGE+i-?+||;!xE3}l`1uUuZ$`1@v8|LpV%=9uue1kW zN&FVKXJJ3Z<^d|ob3Q0q=jzf89SuLF*Qjkc_|-0Adw1NKDU#*!ZT+uzG&+M3Tta4O zK$BOLRpC$`&QIu?^!|I!v+61b#c%C8qJKvw)_?xF-{Xl-f0D4)(8aaBi9^?4-W84 zq;12Hxm+y9Rn~1@U8_AB;#hPb@rO{Cbb$$BX6wgrE3&JXb#3vt?pPSM;PQbU&dp(! z<-JzFRmZc+k$FX~8;urK{v^jl7e59o2P(=4^Rv2jx%AnwGvL#s@}}#jzdJH7k~uitDIh!!`O@ zT@I_VRM%Cele}M$U+VwU#YDF#e%oB8w$-5DK`HbRsyK;H1mDtQSc`*?dYakaxPLk@ z;I&|l16rluy8o{2!rQ;sCmU|DirS7Xif$!pcP)C&F;0;7Y@<_@zbTDJeZO)@z<6`|3~mv;*j(wl>Pja?Oq>`FTXe5B zj=M4M?UK?ucG$hPc+yo^K{6nBsC#+pwZoK##nC;}V(2cXEmj^RQS*(SW#^zm=1!#V zzrxAiy6@C>-6h)QJ1Nks3LI-ozj3cQOexV?;&j9)+5@j9qomRc`9ks+NK^|2iD`+= zeu@jdR*Pyb39&nwzA5RwdbBpRDu?x8_XBQR=n_%8XW1P_vV?__ z$u7$42YS5MzCiD)Ri|ie%Ih`5-fM|p1$i|#1yN1sGBR}2mF!;0<=g4hpgx!%Y&qJt zw$`~)d|l&Ka>v;06`w1085~o%9MP(fno$l>(~QUc~1mEcr_Prb@=7dw);*~NPw z5xmD-`A~mJ9hcx8O+9w6d-bhp=>+2@gBq{>C%JmI_o}>T%`5c)=*)1Ql4Zh((LNzy z+UDBV&DT>uWnSOAyzq0MpDXjl6~S$Gw>B5iUZ}FZM@K&_BY3exkJG;mlknr2XqYj) z6`*F)@QZ@s@bL1JFE5xnBx<~-9Qm-MJi$S5ESglAWcYk&AoMtPEPm%;{taa)A zC`a{|Vp5a{UJkyn8VrXo4E@eBEu(d;1#Iv(gV)|WWBO;aJez)QG-}E?F*jF3lCZWP zT6SK82~r>HW4-GtWVT3z2}qXQ?(w+oLljh5zpZv{EzIxk!B~C|l7`aEUL{tI);0TQ z3n|Rs*j7z$CGDN$6nFk>qr-}Xx1nKFOR`>SHFv&?dtOAgR+qitxHns3ku6kq2=GHgP=iidX*lR=z)lH51NW|xORWzTt`6xW^n>6j% z$0t($?Usr&yeh0!+pBBUnK8c|**u|kGhH+dQT(cW@%rk&ZJgDgVXDgO1GZPg$WY^v0F?%26Xz+I5AXL?BR2=z zGUu-d>}c-1MO+ZUx5^e5PO}@d8Jx3$EFi1~PUu@s52y@8{JotnFwWwgexqj-zRBqjlQj>?KKc z;rBBsDk*12n8?%moX+;c*Qw*18VDRYHpZ73>hm2Z-}?lRhzXx=3#>sdml zvrk>ax50uS2a`B+Nw;7HkLNoQKO4|iMDVkDMD6o~VXo<%qF*u?0V4PvRggy(N<(IBw9bicbNPIUqJJLU+8N@(ERWWi?Kbx&%~rq{G`5A}3|Z2GWptSf zTk6;)SHkzB)z_J~j6PcHNv=#0Q>{My+Ynb}OBFqvZqn)3m1?nM{f^#nVW60m|4wpz zDsSn_)E~{8_|=mt>9!j5s+IK@^TBlNTeqaX#rE_i#dRx3m$gs}{s!K`?8!rltlRc3 z_6}?146`_e@blDuy?Rso_T|x#WIvz)4?d90OJFNfPkkyt*Q?oJcd9N`T0C_5#VK06 zlBeNOR*yr#np3NkRnHnxPfe|uXJ#H_G+HO6+g{jWNoV=DMjN&j zy}72*x!4}pKK}7uuqU-HHCrrjSMM2V^H`Dt_^Uyu*J6`2$S!c8-Bx)uUuw52j#P|B z=smK(9?uX?sPk82EsI|ewh&aE|D%z$+2Jj<+)1Oq+sB)8g2R|!R*$thLAd@(1|=Rg z9YY*`|C3|o2ZgZ~t@B8acF@R>Z!Y*##AWxv;>p8*#4D`_ikk~7)|T=np58ok0|vA< z#r2xK*5l@oG4ZDqUDmKKWX01&Meunsd5#8woZSAgjO1vYG`+6fMv1jLa-x$*g954J z>3~4XV%BrSSwBkA?d_Y#=euV5xAE4Asuz=_$REj>j6<|ang)0UF$Eh5T7_8GR#z33 zHVvCv;^g5yb+2B97`ykijnJZX1jf&M=gx+{*dBR(v!fflMOm!VRMBaPn=@I}iZgpx zirz^^`Q%8xH{3z?bulk=U**+~4-Q~%SOlp5`{LDh?NU||qZV{*%(O7qE9Bvc$cA52 z3iGL6divQJ>^Ubb-X&ec8)=&3@EmQ4JoEPaOJCwZ48g z?zvk2F-aCo+WEo7J9C7Iz5?+ zHVTOfGpPGsCRt9b%VSkCR^M%ec-;WMs;QP=$79!Kzv07OB}>$a1rM{S&spWgDZPuA zGR=M{uWHPFVW4RN%3(E4;T9`}uW3ulgN6}%t1d7_qwB3a3~Nb~%mJUoxO#i8jf*DLjukx5MW0Ta!*8D}HW#(H8f^O25Ye~BPP zx%vb(Yih}pWz)7sT#@`aXPsh5@-AFon9#+-4fc}j-;-9Ys5|G>)H)Y&Sg&+6C>3yks@k84J=J&N&l0n{4S@dS%@vR$E@%>|$J30*5~ zbkmQ@SD@gDjoudJd;420DlbuYR_ZyxZ^^$@FP!9By_3cFHArtgw5>{1^F_Z!fNRyG zAs_>(MnB|e2AGvT&W)bMi{CRLjf^4&yD+U`MDM)=AIsFn^|dBNHU{q|+|27%Y{@K4 zFiCX`a~kBApiI(|tAdTg;1QtV?~K6aw&tpw@N)c z9|$Xjxz5)jGb;Gn!Em(150+fHS>9$j-ptsp$4DsfNYG1ltW774x6iru&5jNl`7mPh z(wdGZjJ0(qn+<18=6}{uX~~D=M!g|1+kC^%S1J!CR$W^?>Ap{=uO#+K)MW5r&Loq* zl0wHX6=nJL35)++AQC69hMH5D-wMJx{DS?~r0_bKlXq;W>a3}__g$Lyy(O0?t8K&X z@uH@O3zcR4RwQZm+)J7th)(&(Rim8Dg*PG)5?%+WM6yS2oI+WGg!Zd(())T_34G0I8adD^P*zf*tLXsnmGF3fBwRc-IN zUf;jSsW-A4e&;iw$3E{)Z3+fw5Uq11NBa&3V@s{Y|#LSfhslqhf9 zr*U&FaloSHlsuc)xYI==#1}iVYE$rDux|kFDq7i-yC>owcx~~2GptyP{+S1S8_Mwd z2?*57|B{m!;G4erk%aFqY2WyHE9BB|=&spdA7(FYBauJjlDS-dU16{lGpnH%h5G1s zg=)J`Fn8SxCr@s1==V(t!~4DMvDjlkDD9VXXL0nod?E3ZJ@Ea$>1z?U-=N?jd#xN- z5+Rm^{L#+aa2=?zsrexefKn?}aKD%50DivnQ)C{pU5l z=|OYBTavvczQ3*CM@3Bq8#058RP0l^@4O8qPx8N$&l^&%5Jq8Zh6`q`*FL~`zO{PE zFIIEg*q$v`VjsO#Y7M?m+iB9R zmH$CStp!_B)z?YNg=Os;{bM*w{E3M~($WJ@ZdA|7w)|P@qVfk(?j;V=d`#A`=$!SM zF7^9~9$~Z)H?u5@ucJ0mduM2%hXxL7ng4#HBpUu=DqZ3ofB*}d3V`buH&rwn48ugQA4K9`&1(VbUg^n{uX^iBAxZ1jK z4-Kef@T&-Rp!R=`%?a1(_fr@;OoHffXjh5NpZ|W~C0oTWSqu;Fx*Qh5{PC!T{A8$a z(Rae%D2*6)5Csd2r;QT1E$W{~7g-m+HtK()S>ig}GycVWG4By7%5O!Vxzor!U9!LA zLZ+xZ=|+XC^ACB?KE2P@G`+k2TTnP$VP0KLRT%Y7ueW&L|JUBN$2E0i{|O+dpwyyb zjlf#gvMf}z3Q;kp)+)6$QiMFf0&%GVm6t+5f`o{#tqQEAMGFG0j|fSC-~*75hgzl9 z2V%T{yp;-a1BnQiM%_y6y&-hb}r-ZOLVoSDhYnRC8hnAfV$5T}*upI&D^ z^sTEjU-ft(&ucQ(N2`1Cxx@9208@OxmvbN1w^Gv!s{d~&TY(raSm|>rRTZ&Cc&?{|M#cm&BTv&#@EK z^ahTu)Ydbt@Av(fD<%JrsD*qktz4yYt(C{r>9KwJ?3!k`#XRPYxR&C#K|!7BNBqs4 z6YMLqqW_2sXe8|wt`7yF{Oyo0_-34+62KiljXP3SwbAoe{#N+c7@@K<>VEO7!*b<} zZ%ol8-VvWTUSC268Z%qc(`2sSPa5&YTe)(Z6ETA=&V)1OkQb{e3Zq}G8PurORoHUU z{psqyZ4+4)0|@nBl75oi>uD++`xP%@WtZs-tWG72w&2H@(?XBf7M)GyNk}RTkKhqm z&+cQUypEm}E^!lM-n+3)%ZU%&X<})q2_9uDsVxf-YD!EASn~F^^Yr*)EW+#26{mo9 z#^J`uI6Xc-?DT5+D({a)cPkYa1h38r*!*vZpYVjNXXes1$N5#%m6Fg(unR>&{C+RoP8h-}bvGUy4~|x?RX(KtC)!iyXPVckP(%9>I%cj>)@q!R~whFIr@*J?WcK=v3>y$$7C%hWS7Z9#K zcqNne(mSM^(RpKBIA`!XF)?I_6+BJAS|d58-l06zyR#9p;sUi3oY4Sh-T>qe?GbuA$izYuhM022zs->3m}rnE6YbT3vL?O969-T&J&Pd za9#UAV+J=~qXn0Ie3*x<;U)^Q<5A$gY99ay;o8gmv+|!E_U9z||NUVAQ~-$z;`j0= za4+mbNq*SH*qtHMzfS8<1Q!GZ@5;$!{&-LsKE(lYK zjVJI&*bf(%n)4L1<)}G(jpRh2ZK=L#VQ@jt#9YLgh~%6IN)J$85~O|dAsV^mu@t$# z%w_ui=-6_75>UPOw|JZJ?9zS`L=hb9RDMRO8|)>TZSU|X@oQaJMI8%+>1D=;hsMlB zuO@gz23{{=Ltr!lCINpOigFi#>XG#dVOJ1ww^IJ&O-&X~~A@op&yQp+IwE7S&PSA~0C0g+0QNmyz zu8;s;+Cp>$7USr$fIP2=>05X%Y0^!>ZXyO_!0AzBB8B3*Kt@pezC>pvr_84fWD@Bd z1KGTZzkpiz2o@s%km(>iyos9@L0DryfD)c9Ecy8_z9fDZSCz$*$FJtZX@${<6D0b5 zwF`-cwyW_a7M63h)V2y^9{vnpF&?~J)1P8)%~Q>1^|GgzhuK?*SmXJ)R08-{ z3sLxxMJ4$6BDIw#`9R;DXQKA4xJ;} zj`{rw5*>|x&Wtw?211&=Bj6yvcP0oh^ajtxoS-Lp_VDXt>m0FD(pJ)DZjBYI>bHA( zWb{W;9ur4gRW6#hupCM3dAI;G`+Na-gyavqQCSxzoFe&n#u!5C3vgx&g&-kZ)c6fA00g>nq z7(0ZDjZej*p5GiwM_Foan!na#HR`Y2f+?j2$&|QV<)e~Bz4rk^HvDq&9AcezqE33V+yaSA-WQFG%%Uab(v@%oi^>uBKA|*c z=d*j+y`EF5%Eud$-#cQ3P%6LJSa8qppH2P-nXr1pK38Weq!k;oqXerCM0FeZ(y|A6 z9l@4Jbi=5>=XabFQeNzM*29+~4~E|;3-XVnDpsRHy2~T#Awpe89iJpIJ`^&EOYU|S zJY_64e9z!z6;xkuT7*QN)w_w~_xwa0|MJqp@0iaiOLQaHHHqKasgCNC#zx2=B1Gmd zg)bHT#z^9{1qVHR5F%y7Or{-pPJD}Rg2XFA)wwQS!lzK;5hRb+e}?3ro{*H6b+nG9 z_I#u>K+5SDfelFx|U`%t{+7yx)2Yh=d5kP1d9us&+?QvhmS z!wATSBl+T@08@Ck;qrrGUui1jvk_|ElP#G~6JAJtVvHwV`8rY&w`y0Qx^rv-{|Mjn z{K&gVw4!>m_JE?nuI)(U1F5%1N;IsITOip2fT=pi>yJa;HiK__1QODAtw$QuWjjJf zG)QB!v0AXN+i=6GBs;Kb*V}3+vPIuET%v2RYc&D-h_*5<5b;7|wZr1U*Ax29I45`0 z-{F{dy4O?qiK5f^8FB1^)4S;0Wh#4GIyl;Cf;{yLKyV;b*>RD|__00C6i)Qb6uFTj zoo*YOcq7y;g3R?ykw#Z+-%`ezc0Xm!hJ64jLDcRaGu2Lps>0fgL2#^n0h(mjYZE9&Ut0`=zfWwaRj)t*srElh<++H7Qy1HW@JqGYmNW&g$ zyywRq-D%Gn4Zi;w(u}MNGzE7XT2o6#18Llu%FlO{bhM1k(OuwgCB|4b7AX2>trYTU zQ_8c(9zbFtL>+Kj%J6UZrH2D}4(-xa#x$}iy&Mt<21Clt9}XO;%FEpXb3b7k56@Je z^#~5D1)Lj#{h!_KQhch>EiZR7LK8#Z-|MWmFI5LOECI6)7q*Vg!QY4cZvbblC6fCJ zm4lcXnRAuo{U%5^`|pxGImGYB@Y3-jPFb-7ex&&x*e8 zbVFRR4+kO**$n>>$hXeO&Cdq{#>!4>haJNPIBP7BTq~3ej*f4|sT@x@&^+wyr3pW& zfq&S>ng>&%TE~ftoK#MIN}MF0(a#q^bK(Yo}D{7mR0qFb#w9#vCeR0o|XTx`#nW@yz6sO$}qI(}Q?S ziW|@%dN-C2+BI}zC#0>i{wr3fOjk!upJw>e50b^vwS>Jx>Ax9=NmZJL^Fhk0!30q^ z<~LK8msI$4Y|iUJoX!l}YK9thilq$Ob)ib<2eT0TU7XeOuy(B4D?_&wG8`MbM& z&Fb93oGnl@#f9S(Ir;k#mv|vwVS_YF7;R(YBC8ODy!8t*iw-)LPu;u6$_U5yr0fE7bjquPcJ<*{efgVSOSCw- z36JmYwXBo4l<9q}&Rxj?V7q)90I)Ot()RALKTH1>jpDJF$0k~3 z&XKBts)6Jc8!gO}j;}bXS-B4AHVC=JKPJ_XO~@eWX-IAs!MZ~71s&kq|10!)z&~fn zAzkvnHwQ+@YMY^&ncoK#Q4D{A9HS%9%d@ITZk6WbxnATA@@PelBp>u4-qu)PY>4>a zmjl=fyAJ^T89!KV2Wl(Vl$fK+AE8}4Ncj#3B1ErAaNxPjmWyJNXZl6sCkqj3dILejnx*1j(lD`j>qyMN$ z-cHaBOGnGnuWD8_BJ0_swyrwP|(nUgNaD9Y%+2rHCdQA8)+Pa zq_JxiqjTcBQV!4h;_gLU`+7DK(GQddJ2_BRd4%#P0TuqGY|ge52u)tJ#fWbb5@%~_ zm&iq~L1l}jITv98Pl~!&bFOrSZV)?@3XESBNISCTQ&98aQap*D42u6|>CTg|B>|YWVL3wSa&}0W@D0$50NUgDNE7l_o<$91Z){Fb0 zr=nqw#><9_ysv%vVUKnn;>8^*31#U>bN{^l=z%d?A;sRuZ1?ob?K<+!_N_ZUE&GI* F@oz+%Bb)#L literal 0 HcmV?d00001 diff --git a/conf.py b/conf.py index 4e0617d..8954f06 100644 --- a/conf.py +++ b/conf.py @@ -17,6 +17,8 @@ # sys.path.insert(0, os.path.abspath('.')) import os +import sys +sys.path.insert(0, os.path.abspath('_ext')) from subprocess import check_output, CalledProcessError @@ -62,6 +64,7 @@ def get_version(): 'sphinx.ext.todo', 'sphinxcontrib.spelling', "sphinx_multiversion", + 'takeaway', ] # Text files with lists of words that shouldn't fail the spellchecker: @@ -89,7 +92,7 @@ def get_version(): # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [u'_build', 'venv-docs', 'requirements.txt', 'Thumbs.db', 'private', '.DS_Store', '*/README.rst', 'CONTRIBUTING.rst', 'software/*rst', '*/*rst'] +exclude_patterns = [u'_build', '_ext', 'venv-docs', 'requirements.txt', 'Thumbs.db', 'private', '.DS_Store', '*/README.rst', 'CONTRIBUTING.rst', 'software/*rst', '*/*rst'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = None diff --git a/introduction/architecture.rst b/introduction/architecture.rst index e987699..f4dfea4 100644 --- a/introduction/architecture.rst +++ b/introduction/architecture.rst @@ -304,7 +304,7 @@ prescriptive since we can't know what applications and technologies will emerge over time, and (2) it makes the job of architecting the system easier if we keep our focus narrow. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: The separation of concerns principle can be summarized as follows: When faced with the design of a complex system, carve @@ -418,7 +418,7 @@ network: This is why we highlight the fact that there is more to the end-to-end argument than the popular one-line summary. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: The end-to-end argument is one of the key principles in networking that helps a system designer decide where to place a function. It @@ -430,7 +430,6 @@ argument than the popular one-line summary. it only in the end systems. It is a tool for reasoning about tradeoffs, not a hard-and-fast rule. - As we walk through the system components that deliver the Internet's best-effort service in Part II we will see numerous examples of functions that are From a2d829ccac43c87bf6bd8735e94f3f44228f5c21 Mon Sep 17 00:00:00 2001 From: Larry Peterson Date: Mon, 27 Jul 2026 10:51:33 -0700 Subject: [PATCH 2/3] scale -> bridge Signed-off-by: Larry Peterson --- _ext/__pycache__/takeaway.cpython-313.pyc | Bin 2724 -> 0 bytes _static/bridge.png | Bin 0 -> 31044 bytes _static/css/rtd_theme_mods.css | 9 ++++++--- applications/anatomy.rst | 2 +- applications/dash.rst | 2 +- applications/web.rst | 2 +- capacity/scheduler.rst | 2 +- federation/hetero.rst | 2 +- operations/config.rst | 2 +- operations/telemetry.rst | 2 +- policy/routingbgp.rst | 2 +- routing/distancevector.rst | 2 +- 12 files changed, 15 insertions(+), 12 deletions(-) delete mode 100644 _ext/__pycache__/takeaway.cpython-313.pyc create mode 100644 _static/bridge.png diff --git a/_ext/__pycache__/takeaway.cpython-313.pyc b/_ext/__pycache__/takeaway.cpython-313.pyc deleted file mode 100644 index a47b74dbfbfbc9f91c378dcdaa6c41dc0f2416bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2724 zcmcIm-A@}w5a09d*@v-lLu}HbsBwT+b*0!u1*Q2yjg+X(ms@e+B}O_O_5zn4XLt7? zkg9F+l2El$=>uvX`jAMK(!BLg=$`-*2(%(ked3MA^u04{pM&fW^(7DU1!P0C3g*&`HU2EhBR&4cjlOF%eZaNRV(uz$_d;4YToghBPrXS zcDV>V*JpkehBLM;0w-|Gwi5*0oth7rux*ZL)zKN5FH8u=MZxoG1#3wJY))LN)p*q@ z&lb*HDcEc=D1;v6YfBt+qZm3SkUb=ln!G2}zdGP|VYoA3%pNx^%A+$zE-H`QYKGoI zZ?_BVZk0pa;Dg|nn5_D@z*b4AH8u+0NWL~f#v={+ARkA|HiDU9u^kuz?JLS@LJNx| zOD42}HbkCjkQW7pG!SJb6Fvh7D|XG{g2`C9>IcjZWKUDDtJBkh1FtO`(!6|{D<$B>9(2pDgJ$Y%RI4eo_I{3CY~hzsBGmg zt>-WOHL_uTw*6Lmd0{!($PGqR%*8k&%JE$AZe+Ns?4EUm-Sm+kM|Bbznly~jH-02! zxP(B%hh)3A@Ba0Fsc!T&CgPm(LGUqEDqZJ5SS0{0yxVCUXS9)}jW$!8B{L)!Dc(DF zq2exN%bp{|#euLU2gc$E=Tx<_B%@BP#{3F@2bK~CQ9Zig3OBGr8+$gG^Y|dl>V>DC z0d}8kQ}fZ)2UoXfdYz`%GKEb#tU`KI(ZntkAe^x{&%*YdE~hIDim2V^_hD`yJOUd? zo6jq^H)-~bx}1qmPO%x+|2hP6s=D~ip#ijE?!oz32uCe3vEhMTCPh}a+ITi8YM&~dCXbPIqy%&m?(ReoWcLIhNo zX!*5C(+#f_|e9&T#QdB~G6pg@bdzL~6 zC*#e<@TW zhP3F=?gT>FygLlITIOr~JZR8fd=3n;k3G8a;Kq)b+37jCF?ePz`SDI_aO1smYdz;% zn!PS!9QlVBMszPh40DTS)@f$t&c?t;8+2s**zrFvuXmqaqi0q6in)|DE7kIR;Cg~% z?qpi1zn(m*@~t6Em5hDLd*cFe>!EM+GSY0NsjamiLb_YrGLgUY8jDG@)WANe& zV0*fzY0pXjb27Xi)wHgaE5F?Q`R3!%rx%}G+$W&eH=|nLuc>_kuNS?VcKU^>X(y2> Rsen=+vP|7HwR0-Y{{SS83k?7O diff --git a/_static/bridge.png b/_static/bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..732735b6c77e450fe739a60d27dbb7be81b8e8d5 GIT binary patch literal 31044 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 O3DeTMQF_hh;r{_!$iT(` literal 0 HcmV?d00001 diff --git a/_static/css/rtd_theme_mods.css b/_static/css/rtd_theme_mods.css index e3be688..b9efc90 100644 --- a/_static/css/rtd_theme_mods.css +++ b/_static/css/rtd_theme_mods.css @@ -88,6 +88,10 @@ h3 { display: none; } +.admonition .admonition-title { + background-color: #6a99d0; +} + div.takeaway { position: relative; background-color: #e7f2fa; @@ -104,11 +108,10 @@ div.takeaway::before { content: ''; position: absolute; left: 12px; - top: 50%; - transform: translateY(-50%); + top: 12px; width: 28px; height: 28px; - background-image: url('../scale.png'); + background-image: url('../bridge.png'); background-size: contain; background-repeat: no-repeat; background-position: center; diff --git a/applications/anatomy.rst b/applications/anatomy.rst index de9193d..d9f69da 100644 --- a/applications/anatomy.rst +++ b/applications/anatomy.rst @@ -350,7 +350,7 @@ questions. site often in close proximity to users. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: An important takeaway from this discussion is that arbitrary computation can take place throughout the network, and not just at diff --git a/applications/dash.rst b/applications/dash.rst index dc212e0..f77b9dd 100644 --- a/applications/dash.rst +++ b/applications/dash.rst @@ -268,7 +268,7 @@ annoying. So this demands a different approach that doesn't rely on TCP for congestion control and reliable delivery. We will examine this problem space in Chapter |Stream|. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: The development of video streaming over HTTP and TCP illustrates the importance of looking at the interplay between protocol diff --git a/applications/web.rst b/applications/web.rst index d9eb8ad..164ca93 100644 --- a/applications/web.rst +++ b/applications/web.rst @@ -417,7 +417,7 @@ transport/application boundary. .. The following is an example of the new design element. Exact name TBD -.. admonition:: Systems Thinking Takeaway +.. takeaway:: An important lesson from this discussions is that layering decisions can have a profound impact on system behavior and diff --git a/capacity/scheduler.rst b/capacity/scheduler.rst index 3f54213..f97be5f 100644 --- a/capacity/scheduler.rst +++ b/capacity/scheduler.rst @@ -319,7 +319,7 @@ priority queue is empty. This approach has been implemented in some commercial routers to provide one low-latency queue and a set of DRR queues that share the remaining bandwidth in a weighted fair manner. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: The preceding discussion of queue management illustrates an important system design principle known as *separating policy and diff --git a/federation/hetero.rst b/federation/hetero.rst index 5a94bfa..c50a780 100644 --- a/federation/hetero.rst +++ b/federation/hetero.rst @@ -505,7 +505,7 @@ only need those same four entries. This is a good first step (although by no means the last) in achieving scalability. .. _key-aggregation: -.. admonition:: Systems Thinking Takeaway +.. takeaway:: This illustrates one of the most important principles of building scalable networks: To achieve scalability, you need to reduce the diff --git a/operations/config.rst b/operations/config.rst index 9fc5b0a..dbbbdb5 100644 --- a/operations/config.rst +++ b/operations/config.rst @@ -390,7 +390,7 @@ with the system described earlier in this section, although it ends up being more bespoke than off-the-shelf. This makes it more cumbersome to maintain and evolve. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: A lesson illustrated by this example is that there is no single right set of tools for any problem space. Instead, you typically diff --git a/operations/telemetry.rst b/operations/telemetry.rst index 2fc0e7b..619084e 100644 --- a/operations/telemetry.rst +++ b/operations/telemetry.rst @@ -191,7 +191,7 @@ displays of the collected data. planning. -.. admonition:: Systems Thinking Takeaway +.. takeaway:: This discussion illustrates one of the key tradeoffs in monitoring a system: our attempts to monitor can themselves have an impact on diff --git a/policy/routingbgp.rst b/policy/routingbgp.rst index e3f1627..7bf9617 100644 --- a/policy/routingbgp.rst +++ b/policy/routingbgp.rst @@ -168,7 +168,7 @@ have no-one higher up to depend on, so they must carry all the Internet's routable prefixes in their routing tables. .. _key-scaling: -.. admonition:: Systems Thinking Takeaway +.. takeaway:: The design of BGP illustrates again the principle of hierarchical aggregation of information to achieve scalability. First, the diff --git a/routing/distancevector.rst b/routing/distancevector.rst index 6f38d6f..4781678 100644 --- a/routing/distancevector.rst +++ b/routing/distancevector.rst @@ -375,7 +375,7 @@ networks—those with no paths longer than 15 hops. .. _key-routing-alg: -.. admonition:: Systems Thinking Takeaway +.. takeaway:: One of the most important tradeoffs to be made in networking systems is between distributed versus centralized control. Distance-vector From 3022229c22f66bc8ff6b0b874d4abe206efec983 Mon Sep 17 00:00:00 2001 From: Larry Peterson Date: Mon, 27 Jul 2026 13:39:27 -0700 Subject: [PATCH 3/3] update ignore Signed-off-by: Larry Peterson --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 808ea55..2b65252 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ local/ scripts/ _build/ *~ +__pycache__/ +