From 0c8cc751d3225b5c1a5298e108361a0406b74ff5 2014-10-16 21:19:57 From: Thomas Kluyver <takowl@gmail.com> Date: 2014-10-16 21:19:57 Subject: [PATCH] Describe nbconvert in architecture doc --- diff --git a/docs/source/development/figs/nbconvert.png b/docs/source/development/figs/nbconvert.png new file mode 100644 index 0000000000000000000000000000000000000000..e9864b9d10904ef6a5c4b9fb9969d3946baea0d5 GIT binary patch literal 23877 zc%0n3byQSe*fu<Xh=Pc8gOU=`ohsc3D4jz}cbAAX2uQa`DGft+3=JaE-QC^q9)HiX z*88pX{rCO%&04e0nK}FHeeZkUab0KMCq!9M3KN|K9Rh)1%1Dc=Kp@D`5D1d)qle%h z?M<E}aCqSORz~d+_;@`s4hFv;+evFWLLg6+5MQJsHk&T+C$W=+hLftTsgtXrg9*gd z)s@A<#?ldLXlKG=>tL3$Cqx2)Jcr1Lzfp5b-I;aO_^`U%b$CATOd3_EMtx7%E^ke; zFD|#h!ot*~V7KtbXSBTkT~*~xylBPW%1Vnh=2tK-v)m-l<qxTaXnXUNkNlr!`?X&* z6!&c}@vjRF9lv>cuqd)V)1_gFjrho5@aCZegOBuCHVy+7_*mrr|NOYNxROE&O-30= z>;Ky6ZBjJ5>+}d{BAS%gvdGcareDJ#9Ew!l6#LrJa#vpw4WXrwq2cImjX(@SIySc7 zn?#zu@vpS`9M|O84dU1(B~--4#mm1jzoSAyLD8&pDi~oe|JHnW6*g9+?Rc~zgD(Sm z=y7l|R3LZ{`}qDtk(NZ6Q76PG%=mo}Gz6#~!WgZY9Qp&C8NUaossEiyFh)=M{ddX@ zPCx&5N()Yd|2xG8r{VvdqJq<}|4#W7XgN|;qVd3x^abK{?OJkbYHG>pxHvd%(bQ5L zFW<doi~&km!i(!R)~R=iV9~9!+x(NGX5DPmiT-i)XXn}OG$-HWyc&&!xOm57#%KnO za^uGX$=u7ov&493*QQ{WPe^&fGc%t@k_*PWFBYpJ#)|IG#YuX?%F0T@{jp;(P0(Vd zhQ0abNbbA!Sc$&UY@Krwk2MJ-O7xD;db(<0C;y)eF$HQ=v5Sj~txBS|9ezkCeBM`F z)>D;+do#5Vpi#Due_tl^+78Y&dKM^WA&cIg;Mz8x5{QV1M6NW-L>I0|6Cw0EtVX4} zu)8}zpW)R;YTMx7xBA`p{!Zwy1DEUL-{8aLE?jc*fnaRvi6(EsS6Y>J0ya9)%o?T7 zJMen?DGBg_>|{!`9C7I$TMSM2cb@2YFI%Q<n+Nur?-c{l@iiJfxNVznd8%g|!bY%{ z)rz#@WaGFX2ty*4qUFF8aN1}A*CiuJxFJMBZfvi#tDN}a5bm^gY$x#g!{MY^#^H8J zGhKZ|bu}+4I-bGr%s29hZ2rU9QjRwl_Ci89cf2Aezs1x_^n|IGLlG+|OM6ro$E3~y zg@<#AvY!3ixd2Mf`)9oT$+9cXU@@pUI5>3memQOa**p?J7`0{`xDfCV(+G60*!2vd z7y>852!vz*NRs{W-|?wgUMnzMjS5pt&$FGyh1P%v4<0CIy+!>vRwz?#Gi&FlN>2zB zGV_L(13!{NxVJl+I!V-5WNeD2x<IpnPBm9P%lrB)DOC|H56y9bc<#bdXISOO(NGk$ zrwe;~iWQ~<FI97&AR!@r{`~nF8Cicax8+0`6fI4_+30j@l*@K*W^)1|F0m{v2Wph? z84=o3vP`)ImWJ~=&u@(H8HafiSagk+IzqxJMbn$Sugg8p_n4hY#S!j#f-td!zD`1Y zuQ$MAfnawEVOb?5tR+oXjG&!K>nBvJxrQWyS6apnTD8&abgatwFVXQ((6hsOIQnQ8 zR!)7<ieU6)gR#~`P%poa9Xr(${*cOf(|D$v#(9dWF$!nCDCu}GOgOoq%QFH3NiZK3 z?(&H$Yi$B%jTYd}@2SX*!WkYpq3t10A<Yfa;Xt7MrVC697>G!*-t#e>z3DZt(b@F# z*FhZR;M&s#IfE?N8CKpgaN?_N9%7aR3<xW0iJJBP=H}zq8X6j3Ok#czLv7gM;mA*s z@6ntjQ8}0%KhQ(E<AV2d!e_ReG7DRXmQBLllM`>xaE)Ytpc{|9!zIGB;)Q#egcoc% zJ&!IFr;hH)2kS#YL18sf>c6qEftPonS?}@+;_vUDgsoJ}33o!xMd@5-E%{JO^Tv8x zrAo~(^x=hSi)aZal4I8I-;Wg2pDuP3U=&W5reyd|2KM2j8u*F4#)9_aEr^ayy_9Mf z=pY)2PZV|Qh3o5OdA$>W{gS#YN5aE6$TRTw8hp?n*w#kH?=J8;Hc#y0v|6}Ot3IH+ zyJogR@OLNCF~vbRjHj*k2bE@ktT9JJW243Jchp}Wik3p?(+!SRdSoJHC8eZ}7lSA{ zEXSCUk&(^+=0~GgIMPG=r459}rA8YYgxsy{o{3RzyzbNv<0n;I`mEE?`^k3f_)iBa znW#O*bF2d)<#8g%DA-v{#beF{_O*8l*2VWv&JOI>v#zJvt)!)XzGvCA;tO#+{KMU( zTON`?&uTpH9}C%QvCE8P&&`9K6;?c!NHwwH**DB>sAY%xv%h)shFQ1nZy8w+zuf`^ z81V9+963B@jjw|H4V=SxqH^)fi@-&Qpc)Ns?7+qy1b7sZxeVLCU_!)-U?XXRvDo44 z`zTQzB73uq47l(aIiRwqxiKrBzepUcd4{>4MzGcrkWkdS(f|IV<vG`Co&+a4CSgY< z@na!JNxC_L{8VFJG+>lb6#pD%abF!?hAXoEXZ80)Cz>C@*pvZUb_fU-9QZz0oAeZ( zJM1odGwvhSvhmD4KV)Jz#!K|+=;~`z^{67)m5^1Ro8qmfJq{qcdW{yOD)Z6$^7i@c zwbIhYp<`K?&x22eFcvhZ2_LloxdEMDO3ET^_}0xvoEOpb7Iw}zyPwv-=WX9;kIU{0 z38XvbiYAi_s!&}#o3=H(KHKfj5Y2Gj9xL;`_lYFqe+$xEzD_NN^VVO(g%<ydiwiz- zZgn=e6NFAo-v8!oWPRgrae8|J&8w|(h9O(g2Dml(eV@Nr9%Kq)i{qHjCdC2gqF$TP z4QKC9IegGq&+E(=_d{Y-mUgn#L8z!M++><E2top(#CA+CkuJ{0Ns_g(u{qfuXYC8; zTKfPevRx1}8dNaqWjZf-ZK~Rde51)_OQSFqwR9Ax>}Lp1bRV12PaTY(3uoVJd15q( zx|*}@`3to4X{tUrO*ONaI71ywZG2!C#l8l$+{MYO2r=eSIHaB&V9R{+y2M6-`0nfR zdPc9PdZR2ut`aeh?=VeXxpC>64*BPbL1WGr`xV0Ek<|B+lYb-<56`F%2^F~D8|MWp z0#lnK&zYIS=Y8+fP%#MDEdJ1#4kUMiC<(ws_{gvWDpcNQLBdbST_}<7OfLvm#$&_P z)sbYhgy{N!2il*exF%x@PZVmAd*(>7vc3F}FID=F*tjC5`RsSeop!C)`e@6+d~bnC zeE<IaVj%$QrFIoFSeG2v{kd>5{+Krb4~NT5<Yd3SY|V}m>D?U3ON&e%nSG20L70VZ zU|PV;0oofyOU)ub90<yug-p?wNvZ<%=Gtk(e%L)*-flG&gGz|}8z(2OG(p!j;IC^Z zn<H*+Zp!7xGFzh{Bpj_Co}Iy09S-lV_f@kcF#$+eb6QE=DW1UE+jp#w<)=x5ebfsm z&k5@gX=o>kt(z7%!P13_)-)?Ip+TiRe(C24!7Mul@aN$~%j?Dz|A57($GCK*PMa!> z9}2tkGJJYLa^!Q_A=0k0T5R!0L7*7$&!0MH%fWPEx%npVkkH;Z-i2;uIFZuA(_nte z0=?a%r}Qx=W4n<L%P7~-v;>K08=X;JYCNZWmAqB#&aZGTNDB8MI_H$7sa6h=Zv_cE zG9!bsFM&1BcD^ZOPXijB1%L~)X8C7$1ZjoKu2z-p{GRd@SrOk?tW1-Nk58qd!|gmP zwhk#jxG+k2aKJB+b09XBI;dD!u838vH*7B2RC|g|pD#`ay}!HFsj>548%R-Y@;ai{ z*VEHG*&4<0E7Gnum28-y+jF7Fk;QZ12r~YvLW}FA>)5-iT{*vI#|!dRTJMXc2LQS~ zK<k=`%M=g!dn>}E*TCmD7}ig8=tE5Cgt&`THeU9JF$V9AkV?om9SK?vV%Wz~WP`3q z@`5RmGd7pqDHtcSD$5$_^_y1Y%hdiC#4BG)e(eub^_d=Z`DEVmnALT5VX(3eO#}s| z^;5-6B5>ONzS3%MoMy9+@bUVPlFKyE$Kjmk{^I7Q%rZQJlOZeE*dD$Ki77Zajn|Q= z7M5?Vv>4g=orQ9HeQq|G%73yk9Kd1H`|R1X*V59DT3cJ0^%@cZqQ)U0fOmx8E<d#l z10ZEZ4IobQ@nZ5=dL`4p`R@>oI>QL*YtvFvNU?-Zo(+jyThY-Y;BAkWKx!H~z>Zu1 z%ouimeE}d8xvi}&L`Yb;KqUvg(evE&cx~Wj-}k<qh<rdggng}NTQwutm=vCf4NpW? zTz`h$!^j1Khe_|Z#Q-c3NQ+iq5~tZqwftv$d&%doie_eJw$^%L&C1wwi$MO`6rw6n zBfl6U8ky4~U2_8HGtYwNh>{Hs=9GziiB(%)UmqA4$UPKGKSVDnRvpvGg=R_$J*iL? zcM!gPjwj``KSvIdKS<LQxT%9wF%SFv<6B4(48uNI)|fF($UWx%?!4J)Zzc(Z1eMI! zNR01)ii7Y<%wwhTb3Nu8(fgljhCMN~>F~t72=*wxG%1?6r^spkFW`yvsZXh?mT1y& zlhCuJqD(<j{TxUugvm%l^BF+4GKW=Juvo$#XFEMRlNHM>4bdyJU=2aso^Mny(Nm3J z?<#_Yr4G`>;8^ZTLi>eV)ZvNHv8g~sGaPLDPqN17xe6)p8vA8Pz7~uT0QzizJ@FV+ zK4TEF*Z~|1U?m*jV0c>~hP|t+*<6ErovdJ-$H_*kwr%6;-CtFuS6uMQ(y_bvvGEJ< zF2h0?WTkIgVKXLhY5vVynpsUtLQ*IN_1aB$?AR1c(Ja)N`GU-BNLSH8cUEhagEu^Q z#hfv^Cpa>4Es#(TvM}p9Z!%G8C}VSe)W>?f93}dv*3nGldWSRJ=gNYF$0{-D9d1Z? zc=&B;IeTtgz&jium6DzB<YIe}<Hdntl<T~=Yb`t7Z>@UKS0#iK9yIUX4ckXWuyfg} z#Eo}hX1==(-TbD-p}AOCHIL&+xw9~VHa3M7!Jgx98_r&>X?gF!GBvN~y)2jOTS?X9 ze0H;*luBpKV?C=B;DMhS`GTt82Y`{f^)B|8M<&TU)*d6s#J?0$c!bU-pbd9d+czL_ zMkaKB{rW7N9puMwNDS6KgpxAjK@`1G`i{#=cXUG-!K<r7k7%Kk`0@G*F>gKM(I7FY z!P29=-TwO{!cQJey_DN}d1@hVH<NWaB&ZiG^TcQjO>cml!{cEqI8b?2%Uziu2il_% zSJr5HrL#-y=GF6n$}Ns~rY=)KatU!2hU=Tp_AQeY?83Q#lom`i`P^PTPG7GK#b+uv z8=`Q1-Zvy+9Bv4lmjduIhANZ3_|<VKm$$0dH^_JH1=_#JoGs(BuhTFYRDZHjcMY1{ zB{U!Om$E=U2T3h$Zu$claTCZyCgSmhF;3PlEJ}T5TU@+m!u5b=wHHsOl<c{{6b|ub zTVG%7hIwE5ZR^Eab0AJ9&X6eieIv_foz>sbBO!B40#oJt3o_{V-BMYfE@N+RB2hD_ zSC+VY6EL6eztRgC%Mc=OgIO-lXce2|3`O=hE*w}03C{qL?7ll-*Uz=jMu2QXqbX7d z+Yxm`pT7}#fOjZYIky^0B`_63AB6^1erL)t_2#mHLAy?RhNnv@b$#Zt?;DF|BA8|D z^|$8gF&8D90A}Myr9>BlL?gXgo}HVoArZ(-OKBYz<luhsy6@eN-uL17<klg<PK%q1 zk@fYYEb4e;pYrkq7Z;;<gzaKtIx*<3oiQ+?jPF}xfv_({=G<|LqJr%f_x8Sk<_RUA z%lBJk7{9T8vGt)e9lXW1gzBM4bIi}7(7)8`!18VWOk4>2ELF24GT$yWWVh+?lKWTO zSb+o;v9!7weKz3kHMO<&0B-><@9W$DZUS&|W8*?HCZ%*Cuk%?~ciA|`_p^O{maWZ6 zVI}I-xsV;fgYy<;|D%9JZd>ly`P+D-_d&|dqtbU%xQ<R70#ipzHSQPjjTs~g8Ew`5 zw?apMgY27sLqv3I;u~@vmimn7{p9jU{TPw)!}v7lv6XNPkc-Cc-me$yXpx@D{rI*M zujuIcsdj{MS8=xe{^=H}{*v~Z$WJb>)HZyyk($}CojJn(2m;pmx06#*Ds^khA7{_F zP<yeA?-I6`#_j>`bk-7*JN$|DF6+)tcATtt3nqx$0RQ3IlqH>mRxr0B!^lna1~Gw~ zy=wdIc`sjfq&Vo9y3GaO-ReUQpI&wQ?IKviaWgI6OVMCiOiAU+-e(_qeZN@ylF1&3 zEbHBW5_pxq+LEQJW_d&dv++zO)Vss;+ZDu8t-s{__Ve%&V*FNZwBh_+jL%<8?rYbI zU@QwZMn362HsL*gd{g&DokEdUAO0~r(0&|`<z+>J+KXvC-<r6e1bX^5HIQLA{Ab`> z;o&1h=bx&de)qiZ(P@e~*snh(EVdg$v5jdy@&0Rd#?@r9x89VcifgS7Mh^G9#W3|f z<Lvw?B!2sWS`%i92GFa~RJe%_24+{@MdJltbAl4#op<sk8f8gG^UUj?JRYAuRg1h% zXu{=pz1u$);k6a?Q#$mVgst;6qBY9Y3PcSvZ-_E}r6OjQyDxRr8vZU(d%ah$S!s@) z!ejj%AVc2SGXUnij(X_7vFfK6>(-kZ^`>^t&u38jT(mN=v6bpdOLub_Y>2w29TOTo z4Csw#Nj11ER8n^Yp_;Pk^bu_+VW!8Z3Z&uaim*ZCR6E_HlJnNH+IaR$Gtt?M{L%Wc z=}{lbQaU9*zQVW<uKQ)6r}=a_ouCW(YHL^C$nhQT#0j*Gfpwilqc0k2cDXPR#Gv{8 zIqYWwlF^{1r^O#+J&z_{;X1Chm4auIk!fPbiuWe-Yp#dKji|wwofEKm@no+2enH%a z*vcJIrzvNDe!MY(6zgDSuckp?YBoH_5cNq$UkyF_>npMrIag9<HZuK<@m(-x$~lL_ zjt&Lc@AyS5=Z@9TwJvT!bGO@uilS+(qrdr4#1kd>N<t3w!^6XX*TxEP_rkp?_HXAM z(%tL{s44g1jg4B*91a=p$?u6@?GX*6E7+<wY|K-a1x2N2?FZP76zJ;aDo~K|$_gHo zo!2<=e>2e!|L&Cpxw|-iRDVXM<WR{dSU#r51D|<(gD#Io;l%ex;eD}kYJz@4&^o-| z@bV{*leuotsHH2%bwx%Jpay^#Vps2im??C)#4O@={Nm$#*7n|vyM;qSk)=aIQ}*N8 z=4S4F61F5!S4!yFiQ$8>+PHycN`s5;q?zLuZLj-FjK_1nlUUPy9yeqqQKYX|(K`$D z*FXIHz|!LgT`M&jb*Z}H!uG@IL`Ocj9B)24h^1t!@g@Bt^4lM{`9aIUIq}7WCv!3{ zN2{gi(O)zWd=3G3T5gIGr&-Py*CQk$kp;})lL?$?&ga@%F-<^1S@~JOL(HW}!99Rn zaqt+`g5?re?6>|hfb7%RpTt?~amv^i|B6~EJ@qhbm?1|l!4yDFJ;14nclP#tUNSO% zG}21<J-OgdCp%@=(@Q_un`3UR1M7D*{-ye*KF@QT$x+KidG~!mfvTdu&+O;O$`x7` zJ{J~f`#v?_?6a?E_?X>nO9+HG@`WLBjCkvS{R-W+NfqkV$9@>NrwF`rUZ%LaaYhH% zln(T4<+a6|>r*(lHYp%#zjR_)%|yjOpgOwxD-rH_NCA;-<cPYt^wK!%e0j7Qk;L=U zqP^F?g!?udKb7Az#CA=Du-Xeg9i<F{S1uU;F?7%5d@gZ#Knl$@^X$|}qgnB?W;~eu zmJE=ut-s-#`Xy)c+u7g0|9dWw?JcZFI?HNvsa}zh<u)4RwtC8%#N%!^bM(9PQ8IUN zTT01X#=^b#`JBPkxy>6uJD2X}9Y`#9A4BEo4bs@xf?;PS^v8cK?&Lp3*SHjYWOr8S zAKxmF60A5#Iep@5LznVF!C+&A(_EtjSxIz^w$)NxO8f3wUdhAB;z@_sEC4e@J43#v zZ5uuyV?s}-(r#}0SVY`?iM%~#2(KZjjYroo4rcfJD#WM5JX@_~=$nd~R;T0dVs zujA{5HPd{p0^?6lmg!i3s01$cyV08pOt#cjA6*Z&Hwan00H&X(wc1=Q>U>2d=;Mxp z6~*lPFiJWy6UTiv7@Ing9V!{K9nP*{>AoDn>$V(`GM`UnJJ%3S%=twomhN4x!)l5R zJ;N{EdLDq4j&>%>mVdz$sTr)B-7X2Xs=VUAhK=+2EP3_wf7pMT^Y-%d`Xe4&74A3w z4<;_h-?8Y`N#<yW(evSX^}TX`)a(<f9`Q2=w?Wd&+P36z%UPNf&bRJdOeT6pxq27M z<)s|UO568>tw$=f=<l*WTKHUAyUvsYkIJ0gg)O14M2uNqU;uFOIZ%SGdv|klFrz*S z$?n>Ev?pUI$dl3|h@oUoNjXK}ai~OC?&!gBW8gJKQZH%AOc(j?Hm!#5#RjorYTfJW z53@K8)y?{PB)s|Gp4%2)?^z_7Yp!Qr^(R*+|DnY=oCqLS6`<spE+5<DfIFdn(3!Ut zOYQxWr9eJ2doMyw<3dB$GCLcQq#C3GGI=uUZ4gS3QknZ`$AjrE*@otEqqUj$2)N@% z<#SVKj|JJ)rk}|Rm>NShIvcs5Enh0?#KG%c(WxWrjntK@t+$MQaP7A9P0x2vBtBF8 zY}Y*n{f9K2N{D>m1f>Q8!eQsVjxn)BE;40}1<a?bUR9V5I5gkiU5kc<hRUAtI7)<F zjMPaeAfsQaz*J;xnu`QbF;?U%b#KH<%Fgygky^f;H$i(n=V`Tkms33@&@bscY=dhr zXq$ep)PxAnGZ$c3gc2M=hfbLZS#_6pYWwh*wld7?YsLlaV&oFUEJk*7#J3R-YhF+O zk+@h)85ZI*5=iri$derX)4)?lsVndhS-ITpjn9qg6D$#tv_Wq=WgrOrzM9q5+2)(k zoDtHU)m;3A*W!|l*Bob_h^+s;S6g2!A;)4-2{CX?xX8R<PuS;jLCak&Xg|c@>B5Ay zFnzPo^BxRKqtSe=<QL~K6OfsO1o(oJM`h`2b)(xJpPx^J{WLm1zeQ6*QqF(f=KVwZ zh5pQp{LGbxjJN)b{0{#BMziivo9#Hgmhah2&V#7fsq_EhCa+=J1IY-IIF^$4mF9oc zyJe?f*3<Dfm&emzzkU_yu^!KyD++m<MMql@O)!7MzOMKx@f0sD02#OFylzo;m6VlW z!gpikbX<nd`rQqa9JG^Q+A?b~WK6e~gur#wVotl^;J|KOYh!>_2w|Fx_;RJz11sX& zGfNS4Jca81^W*ZSn^@Bq`xiqSQ?^w5jd#z*C^sM-WOH-n9#nnmw}Tsp86(S0<L=k6 zH{otIxTv?b>E}mrziEa99p#pczBE+3v3vJElN6o}=-Kz_OW9{NJ*^YHG}&Zw^H}SS z&K_;yZ<(xZim|_I!zb{mNcVDY)V$dB(DTW1jqzokxo{S-dzp&|_nGgQ&$|`6pJU-- z{<LA9VoquAD0h46aCzJr-qy_V6H5teJI1_m9Wy&p#@jbc8b0hg;~a>N|6QlnVe@Do z&i`yR14Ib)-RWv9EDQ|o$Ho)PJ?|Mib)-u@ZQ17Z(nIcM-2%;ax=jirw2g{;SydSq zC4^*}#!tft?xq}tT93NBU!GC$5xZW@wzsDN+)%zeltS54qE$-+^7;!#MuB&0KXNxV zC#qPQSv&)$xO<P9HACpL_kPzs-Hwl>F5N4Vzc=TH#4*LU5XHV^Z7CM+DsZzb!xLS< zkWFCj0667v?bmsQ#kLR6eR^FIRyi&-9P5C*G>vpEu3uJC=pGw8nq{oS4L^Y?6nn_` z+lq_lIeqFChl_7iqxq||>-Cbx$LG;$zMcJ&cFPR3yvu8A@e8>~kk!72UjeW2-4#w> zInR~N4z4&Mf2kSMx4KkZzZW{u?0cVKXlN+x|2Iwb080(PjH>E!qpcu0T>Op+M~vm` zjge8{|C}Vm#KfJ1VLV?&Gn8Vo6L}f6>mC6+OS&5leGt@~H=xm5dz|3zW^i3&a(?!) z6<&0GxmDl1|6tQW!v4hyBP8m{M<ut<VT4`YvQ8)S_rfm-OK`l7ke_jWTyc=-EOK-V zOUh<-!P{I|9C<uO3bk`}3?mgj8rX05^VB*zyve|kPdMqh$>4LlaQf81>$v(+LnmD$ zJ)Oe7BqNpxI^%!oNB<imSoV&1P@~d`(~+>yaB1T1FL1~ZC^Yx)rAtq)__ShL8CUU4 znxJnI{;z7)?2nr@j?A9Uma?z0MfK7vzXm@dd{&VWnQ?@F=i^?xUThko$H~wcc7;no zLCpK-F}trkW^Ku<4BuO(Z5|q-d!B-Q1?(Ojfz&kFF|Dye&Gx<7dc@8^R#ujLGM9|H zk=fVQ0JQqCVqH&0X6C{G7!OzWx@QWHJ6qbdeCCH^vwYQTX7^){GGKs65;qf9BR?KY z6JQ+VeaxmepUI>Wycd8sq0lD@Z2Hp-waQz3{TA`RwE(@qT80b8-4NtuP2s1*)`^7A zba@oOt5o>|^HRGR<il|}qE^d${<g}$Jcy6xmIn5`TjhyHqR`MPbKc#CHk^3b!WC~) zSqX0?S3^5%0SE;&=eXy(y#~y?;oP_Ha-|}}oJ=DG_~T^V?epuW=_}j(L&)sM`vZx$ zC=n=3(V`hx&HH>EpkuGYLr!~sy2!=^1XluyMvLc{WOwH;L`ngWKT|2{8%A4?>I*gN zn+M>|cg6D9AVzomgb8lCNVPv8lvsJTj|}tA9h+iO98}dP?ENa<_x9-k)ymR)3imCP zWbU7B0Vq=t1mHCFu1l6mzxqm`@T*hzVr6l0Fz_oAg02DfYkCWBL~I0wyHbRZW}O4u zxo<pvbo-@2Y!t4fT>XK+YF|kHAOypUYj+rr{!f&%)b*9T*EOlu9RHX2fuHuS<8&t* ze-ab)Yk~%*pW1n@v;Y06_vJ0>vE#vk#V4gy`jd{ClglBTXkT%}Hp|_mS-RWO<0_lk zWP?klk_H@gDlAG7`O~e@0<{91=_+eSD$_`Ij}vo2-@BV%*x1-bs*cy~!$Wgv3%w&L z#HUVC57afg)N_m;`{;8fO=jHo=N6$o!idTowdUUNRv!_cZn`nDeM%|Zcg|GxyUbd* zPX4L96YLa2Y0i1X!m2j`)8Ke3#EZ)nKgCz{HLN$sZB^78r}0a50=;FEZ&EGB*ugej zSf`dmG9l96Y4_sXE9c(3iau>>)MU7PU}uh09)NuJrD(wo7peXNx1lHdZ-*hGAlRh> zNa^8X-48quu8@7S@>`HW=cOosJ?mQLe6xGz-Qa>sqijLV`AdR@p{vyr4$HZZKGO|R zAbYSK9q!o^u6KN#ZFmSLI-0ZNcE2n~Vop8f61}-WGaJ<V4xpcqo4&S(i$!WST>uYU z2x|sqW^H8`OArlJg==Ar(D=6Ynn-NVRw{#HVCn8Yg8gQ`UM%UnQ{ZmKJA9f%9mz-% zuQ~mgtU~lUNuPIbu}S3B=EyS7))-^LhH&*ASIDJ)G4#C2;Nh8d=j?1UO>(i>#Mj7` zp@fqS$3D|h4K7<6edZ}Y7|))f6hI%)-5C4+dk6Au-rZFID7Zk<+jG71uCoYPLM7%b zCp=wNP@<(G9{O?CyZpr65ei3!e){xDqt2-S${$l<J<XHMV=b$pLA1BGhsX3G{Oi|e z#d?jst9=PQ3H$rQc|6urr5{Hbd2Hv%TrtG+)bf>)TwPtyb|#n2BP)~Hp%2A^o<`W! z>bxp~ks2kCLLVYiBK4;ny3KewC0PuvTM`{~*B9z?u<Rui{>UgjkoF3lC%ryMv2vOg z3unLe$MSnRHU&G3cSUPLcDs*wVSgNEiZ&FPKCrDyXn(mu&zoi{Yve}QoN$m>uWemA z#$zuKC2cw^ZH&IxeDBlN*0wR<EQ(97_ybU|O56GLI3{(vsVdD1(?Ts+C?+WnpB~kV zHHx_*(ffuG_L#pv-!log>?9gYp3nOZ{mv50)?raExj<EM$k~Dub>()+z&$K?#}5gK zpi{`4en^KHKZ2zd^Kg>F9oGlTysurh#)|s7D1B3x{^E6pcIp(6kfmNwbSDk;^@a5% zupY0a*xGQz$(#g~yjT)`y-*hL37M(1z!mm50U9dC9-FeYy|e0}wL$9TCtrGq3Gsbi zEKUObh@y|os$ogUhcExHMx|$>mUHdt;|LON+0hx(@nT&RqdlEvE`5D{9TvhCw6Up8 z#q|(YrF5YR|GTm%ED9m%pr_<i-@kvKD<5mxH>fnmXZd!2h5AyUGT||grsXvsIh6>s z|Adqx;b9Y+sg~uu6Wx0_1IT|MmRXRHW7jgobsHlV)(@e`Qj>6n6r<d(eDxB&FDAVf zgK2_NDLmF~Vq#*=_O&{i#}n7i<kMq0%ct74GJB@shiLJTW@IHnGJ3Hmq<^9f#RPI2 zvVvE%u5dYtY31U7827{=cA7?isngf*_Qo+?E`_lk93H-4V_UsMMtv(L_81)<UDW+( zCAYM+6ltvISA)1p4^eDTVwlO>V16tPfxx`r;1y|-5cyWm{YI(ty;+O-CSkz5zdLV_ z>C`;qv_C>Tst>`XN9<c?c%Kmu4-X@1QrZGln;d0q2+7F@gwJPiYrzsy1Ek=pWohf< zD;izc4xvQp^fw)wVhcJB4(5}j<v`V~cQNVx#?WxkhT(Ow7=-xRZ%<WOlb)Bce+i=W zNnC6X62#`5zFY{vdW3<2@fZus7FyJ};Y1OwwuPaClB{7lBuFkP-XZgEGe_v~!S(sR z*~P))-(p?Cy*6UtIfz|9UDw%8cm!#Zh_^>%vJgKt81@yHkWfP!?87-r>`n(}&4`v~ z_vUjdD#a0LW5&3b?>@QCxzq0*CUKe_93PKZW8M3AcXwO9CbZmj$*Tzd@rLGipH}@O z;toxJ*%eW>AJW)))W&AeB3MEFiZ0DIQOWHG@fBMjRk-DN@w;N3TDAF8ldF?WH&4$B zx5K3;it&w`gk{E3Q??S~IDim+fyK86VL1XnSF_gtsm9RO-agr&DOHasl`&Hdk(Xln zPzW)~EkTr%_4GI?u3)n0H}#X+HXyw=Hl~4SS6LYX2FvR`2-bbF+yujNtPm*^5CP(J zPQuXe+vh?vtHw`zo-Zy&A5u!rS=C$7&H1FLiqM9z3QR2lKqb<!W=w$CE_Dz1{abm? zZ5b2Dj8kp3Jyv8jTgUx=$aeH6zOd(6f4*DoWX}XvWXA6kFaBXn{qb1dX_k~>pOp4A zA@a9sYBR%mspa#bKSE_!Fp-gw5mi}o@yv$saAJg2s^rMh3f67x?kZd!ts=_28a>b9 z0}5u3jr|rtr>Gf@|8^joid+A;*VzN-_y27}J{A!XL2LsG?$rc@;xpmk;dKBmpBfoA zO&)b?u&yta*8hUocwPVTTG|jp?C%WZHlz|#5z(F(E_<>E$I_yyH0r}&H4*hA?)SIn z7NbAoM&3CHTkg^tP`9u)?=HUWevjB}y|&SuDSSwvv1;(m30f5K@B^~dyn7;bmkRGl zfHCF#t9hLJMUFg&V7@m91Fmz*^1Z)P?D|Tik5r@c&g=MAGOt2fK)~?~NA$j&>1+{B z<|5c{3l+U^7=B3aC@oO$Mf+`4^p4`%E(&(0M1LG?%tJn?7%;(9dcHH+4glceM~^b! z2BQBh)Qq*6t=rV;4nL=5qgWVa(08ycA#n4k6C{)Q)Ba1fDcm=3n^4iT2NLFY4mp?E z_v#ZvnYIs$N*GC^A(!`9*Dlt<4D(JLIn$2DD-h3Z8_t#@=69euULWexN?GCIwj47C zz6XN1NbJZe#n{v=JdxEe{rYL@O1sjBqm6~<dC;C_Cje#UGHQj+7Tp(opTcEa$EI-M ziJC17xOprGW7qS?ORBE?<Z^d83$cWW9J}=sLF)dlWZ~3HkK(%VbQ;{EKNM-%FSH=d z%+6Yj6%qq)fARdeA4qzi0s=tRz!Y@Z$yCi#EYxdEUK>aeBp0Oj#NK%5cH??uhInQf zT20_65PKuWqK=24-@(B(wW9j4F+C>^)rZ6=Cn#QUrOTMXH>U-<*@YuXE0pD9M;n}+ zHHfMh^HA6abyK<G?Bx;$x1F*sJ^;1BaxH=^baQh&)Stu|#GsnX=C~#w&!XE4!kOD) zCt*lv=y%)sCY}1+OH<BJm<tvg{=!WllhYoj|JSg(Zn}Dsvl)4x8+WOl_SqILv}I!= z%Uyc|s+Lj9MW;={XjL-@BlSUYxcr6Co%>{Ki!q|00t7l@mV_|Yri)L1a^yID@4RH= z7~@u4nwpv#uC{)iY>kFNyCOH|CW-g?7tH)-uRmG1j`Iz)CJX?Bdg8fve=%Q(UlzuK ztXl+I>=AlZPm0F;kk4U<*}AT&<1QeNERx2;u*jtU^AIsF|K3TLa%Mg3tURDhoGknQ zQHxfy8n3M~(_}qe1u1B%kGSC+o049zSzv2fvqm%jeRX-EelAPka@8*}HOn1o!MS8A z7V_{)htg!QtXS!M1Zx8IV0{nDWpyni=R2`x#U>Mn@j`ub$`*%JNsGw$@VRACZs=DX zImBeu``xwl^a|=@{)~*^`hhfqSM|-ePs{V6IqD6P-B!PZmNRjmFjhlP`Yk=#0G$lN zClcsbGL04<`DhXH;`ZWa2Ekkk0){yTPA?Uwk(=Mhvv2;j6q>zOS{s_>xA>5qN=?<) znX=ECs}g{HxXyuza;0r4>d2NHyzFGC!0~acFeE4ljg-ggxqyH`CxaK@R2Z)f3=B*= z`c4aBLE-GxNRIw2V_G8jSL#g~mHr<FEPunGC<0Z#<R(=D508$V1Z;|N$*uXF=|01@ z@0X@&Q!Z>K<4K3~h2Qp%Ti1(WliS~Z+@1E1@)Lo~do@Q($ng$0$h;RoL;VAQH{&<f zp9Owo21TnUlX5rZhP?W|&C#8G)pmPcpRz~k{p$;1+vK4yV@wiL6f|QQ{uK?&D=R;f zOE4Yq5B?tn_yvn{aHS_UmMktjGIFgQOVoJdcNSvL-23`0TGZDE?ay72Oe~$%L@AO% zKFp;q+mIuX9scaN?*e~ejAl$V-$3MO{rH8zRPC)WFR<&imCdggj-qf^OgG#_CvRhx zaSpf>njXqeI+%#B2qii}cS3EJL)peg;w=vcN6#%!Y9dCn9&9XqXvUaIGggvHl?@7i zvNigvtA4+!Z>H9<_IOYbSK+Y2xCbYajQ<n+7vRtQde0q6NskkLH*7mfi#&PqaH~Um zXwor(-&1kDNpOdz6yi3Z^~>=o1fV{6qC^Wyi`eVu21euhO*p-)Oj(MZa`E-`f)o@M z_xL#Y`1r0rm3i#rw|NCh$0%F`!lgfa$4UC6ZQB?J5J-F%g=cu0peu*x*$z!LlV&+h zES<u45KEF$m5nqlsr_92T_e~{{8?V>W_FzV`gB~Qz9MD}Pb^SUgn0Vzht#HJefeZ- zP!xeI@<4<O{_VMGvvte-b&;s1UGqRJz0$CV_mvw!KZ2t}A>rXaKpKBmVJmK`R^|I5 zHPM@gi0=_Is!#15H%>HZK8UWn)$@aAyVHn*SCBIiRXSw+4xf!WL*Lapm~8zmXm9aH zIXpbH7x<~;>fK@RbA(^~Pn#C0d_TEo`HimU(fZK6>S}MCw#&{0I~dV**ihSYSDzS1 zUYsLB)|j!jwsyEgU-as9d)*09zJlFl5lZ>50-rNZ`oAOjVC4G6;W8OOzxvIJqd(st zo}ViPiT|tbjg>VP0wG{Y^!{?F*(XgRj9?hxGbd>pL?JbIfjE45eO(IR231%Q`$GVH zk5>D-URBSu0UR$6Ajrf2N@hsZsFsO&tccpbV9Jd+`dqFOe!(OqP=9XuH~$Un<0uDJ zI-+zrJ`2P0E(<J#JxH@74epMB@rIU^u&U<D8v>RKfN$%j+ka)e)X^3z4z-B_&Wuoa z_#%joM9`Z3rt3sLd#cV*d`E$Q{pBi$$Oiye!|8Ql2egCq8c`4qZmFJiNonr^(us2< zJT=Q}J6!JCoUUd?)IoJclH<Kp_OlqtEwdP*!$&BnCyon5!{FdYb6&>^dhV<E0N;E{ zNg)kD!!o_OIK*SonfOnt$af(PA%Ko?8g)E!*`LFFoh=!GkPwg?C%z;^DfF=u-}S>F zEXrJ|D2fNDsAZn#HlcV7Z2*jDH2XB7Bg&<_ok>E%*HdhpvOqTZ{N>Bi-rgWcJjA>< zsWyf$!6*(W5#sO)XxCE!$o&)R#|w38V?K`lT-@FcOGqHJv9Te7s@$B<y3X_8{2SAl zIYNA{<MMc&-}eqME5xkJX+Rg8AOF5Agxz21uMeiB-KqW4#<%~i*#7@`)Qqp$UECbW zyS&;iNsElm)~T^;-F$?wm;jRyoLcAY4|{dnEP2p>?|(4z>r$0K^2i3ij_5iH_#uk1 zgd*dmEqAwDwiQhgCFRkTBZ1rq4ab-=M*qJb74_3z0c-urp3A1ZWxDO{<#luymQeCB z{IIE~?vdqg#{CjZf+jX!JTzEZ<*onW>pU9uFJJCb#_t#l0^x~$V^b7<vOlDGGTSFX zcfqhT#^0kOBgart(dJ;Veg;Jf2m6=n8A>CT9-f}`9ucLbY#wJj#G9+D&SP4hDKHlk zxR)eV%$ypPggA}Nn3lS@ct;D9da=Cu@b^H=;qMZgS675AI+^c(eOR3Ly}w;NI5@Z( zn-cwViYZPbR)7$zT!&>m5zIblALwTMdcWCrWSJZBoCi2fJGkY%C@U)qvj`?Nvg|BD zbNp{Ap@lHc?C;;}B8k|kyjHrS-;LcJvmo?~jDpf0MJ`yy$Hi3{2jih3&kmKQW4~WR z^9Sl>fhV>IxgQm70ASY?C3-i(2`H+C$6dKe-^N^Hec!4><F-R>des#zO^o$F*^-H% zy`G+)_Y<Xt?MsMFucPB*xzS^hs}1TePlyo#_p}mrw)-TKfr?l@r~>Ffp%8}F-qwc9 zYcq2p1stIb@!H0cBRrCvRM@!tYj=Krz6j%2D*gaTps^K7cDS3TySw+^`ueybV(%3M z1=-4ozEz{{uP=&0!1*E}DLH3Yq`UlD4Z8<|SoNbQV(5&JkkA|mxkFz;Tyn1h9&0lj z$D|G>;n^_-vm6Qx3aW;U?K!ah4E_P4907K;Z@(5PIWh62hPnAher9H7KELA{#O`QC zCYi^YqzS-g@5RMMe}rIB2*GG{iJ(_C_4PwOM?LhjqPHg_!GN6Jl2B00jcR#LZdy^r z-2GefSt6*GyPF#`2i%L4n3(^!7U`xF9d-{9LQ>6C_BGW^g-}vca+}vqbd3oZL{>$* z@iP1LRO9Y^<gdlWRn(rn+;R$L-m!$ryW-14_vhd+P{k-bA!75R5cc3Br<Mc$PX?&k zp`?Tg%?M&ijB!C=%kw<nQ|#(iv1z__0rMqnmUgKaV{sKokhaNW@BsvHno&6u0?hD- z&+Qdtu7ww#`1ENPP7nS+nYF`S#rXUCXHqf5Sp55AnhDYRLt#ysbd@V#ymaKhH<$R| z;z%561F6FQy{N@6xs$c~5R=3&^oR5pl@L7aXfi~x20qh=4%V1?BIp!9nH){myMGtf zzff(8^#}g|O$GjIDg)$){xhjad~F(lvmW^p_EaHc!u}_M)baVb8KRmuY=sI8>8nJm zA};RGKqE;*NDQ6g16^yYB0AD(9U6)PWB$&6M;*)%GhZMbdgF*tc8ul4<z<=Ir31Lz zDH9=ZZLdP8v1Sl7#8~iOgKb0uz@#UFL|!8Sm~AYF_`9|PB$30jGsOg7v7o2US0k6> zAeF5<J&3j%Xy1f@`}n_q|NaOI>wdgsd2cT=BST++1}Az)9tcR2U_MpJ@asd7Y-vAH zKy@{5UjnNcAe?H28qoj?D8oL!N5^OU41guQVyeMVx^RD*V8X(J0l_ORM3p7^6|*?a zFJ&;T9$It)W@*q7&a3;?1bw&7oP>?hUxWzaHSlVaGfmH9lUBfWPabqJS!sa_Onq>n zgDNI&GgTU>WN%bmpO%p^w0h2CI~NtFWnds;T+cHC2*U~3lf3*(D$QsRpru)=?UyCd z30dSraA;L#ssN{eSj{!?XG24z2@tRQ#PnTWT-e>+xU=ZieOs!!KHo=c>FZ<qzpeuY z7{0M#E*VJ{0z1o{uGL|Yj37aMCit#8c*Ur$R1#=}l-=lozRxA?NS=}zNV^DA)`ES+ ze)h}{7SCxmSn7T4f+#^R)~)Z(5EVsi<c^d{bQu0y3Z0Q$g(P<9LoCr7Hs6~=v?1a1 z8HMTr(C&C`Alu_~D=AS~yqpT*(AW>35Vd591rY&$3bP!CkB{@(==vk0=Bt-bur}Xt zNJWw@4hrr&u@wXx<C6dtV?&UUkrUYrk#XtdAq#DR7{I&fUw)&aD*G>VqoU*434AhU zgUXXHC}yH7<Ge(gSu)R`S><@<bvv)PAPBJ4prouY0z1h(=i^HRpxPejiiFGjb%9Dw zY9!5OH_<Yd5ZVmJH+#Ow*8^^pN<8o#R1u`P$}v6Xm#RMzf&0<BckjGThNTcC1q%xc zHLDe7L%F{9clJ?eSQPShc5H~>c8hI_;&Hy9JJcsAdJoX&YUTz8lq-Wp_4FucI7ecC zWXmO#*uS88r&RbL9EE}t9*%0NVVTV#sQvNZ7$^^)7|b=eGuWtq7k_LznA!uNxBJau z7w3zlA81f{VgqbtK^M)YhPel@0<rbX*He{+GCfPE_O9cnRY|Xegkqqr>zbD%E=}51 zfpNd8aS13MD?dqmdcq4osT@mp;ju89(gx013(z~e?VOO8x3~K)Z2V$5O4JP;V`i#= zY9NJLFh)-5-e!Yvi-%S#9{wkXgYAygb@nS!=b9IXBTsh5LpgHLf4vsy=<AC`Uky7t zXgOm}=8XwxR)TJzkRKe_Ma}-;FC8XQ9dAvP`9nbs%<q*(Da0=jgYXEjan%Y_1pt9F zRuEO9s0#opCE+XGp+e<_4N#v!luKOP?{x0zaJ%N@knS4>zr@nuV;rnEj#C;>55?xI zWx4GvakR)n`-`4R%8CDT<>>}@P9GniO3QJUPV3njBOhxTS5NUCl5qA;KigU#m~#e2 zb(zg3UvC`45`xQ;yq7zk?mYxL#I4VNR@zMzYqB<j2zEWIH@CNd0LZ^*2Xcxc<%8TW z*%jm4N(A*|^;3bQ1t4FZv}0emt=sb?{s?K-*K4|UqER6I5UHz1elgK1{TQ)|D-IDP z+)E(1_XG2v+%1I3r}AO@wY0SK2h-i_*k%&H9+jm{x^8`B<dI{{>we^Ru)1UR@*T6y z+}IvGaXPIZPwwBeK&U0s)6;uGA(RNReg#0D-@o6bzoVg{`HXmpAs38Wq$L3&ulqqO z8o4}k56H;RI3=DyGUO={g`sG;J<ac#TQacbJoxUu|0wb5GnQP30eEQ*Pt1A!+p?q) z4knrLVxQe|jQJrjVkal3PpfltbDskPJB0@mSSjV=nX}xF*N9`NIRgU&7ngC>i?=i_ ztND}Y8;PKMsB4g!S=eI?Q{h!RDjC+I`lgO8m>`t0s(P&0iQ``~{_Kx}cGN}bYX{IR zJ>L$o_H$t&p_==<>&Xf;rO20G`E`aSu<nlKhgPa$t=4L>b(ckV7S$p(lC5;a#Uc56 zjRF`1%!t=u0CF$)z4!T^on4?)%Yo0R)-p0OvKbtM3=QY~jkGZ4AW@)NQP>_rBMhr= z<hk>4e_ZQ^pNVmhAM5@vNFdqT+Wvh1OA>&T)JQ6e@h9CFzjLx#e0nW}gl9L&)H3)p zN|0WfgcsNp-HsFp38cOPMyrr6l(g6$l=pEOP{coFP^nynl=#+y70OUj4=d&BPqF+o z0e^q$(cOtj1tq@+!#LCeE|Is@GzpOi#Y2E1kTrM%RC`3#sLldnIxz&2#5kl2Z~~V^ zne8ifIRX&a`^OZ}QE+4=9Su##=F6B$BYR4`Q`dh_M(_Aux*(bjB1|)|%4)JLM=k+U zW4DML9UWb$*LamXEhQy&yq@8Ew3(M-R1{GkRAtO>uP$m~bC}xG$JB~y6REe0Km;)u z!Z!!)Rv_iImX8%_=UrVYiCh|cNZ~|VNg}YHLlz)^sgH5#l$(8SYfOOE@!qa4FN@{K z#%=t`!9cuFOD^DK$JQ8Zj7suPn%)G~q3&pE#6!m2DHs%Ry;Nb(v0-^Yl}rKp-I=bA z0y)F3i`?~hleec7Cw~u->Wr3W+a?(mZ+7&*+!v>=m!*;;8`<b9E&ZrH2rCc#m~k8u z4kzJ8B*d@?QeL`=V%PmS#B+3qoNQN*KKTq{sH_0_+Z9u_f9eKzl$j2YNX<=aA>QUe zFh!u6i|cFEa^pXZ1^UfCAcb>!p6$phZa!gUEeQqIElLFSN*kn#!HYvkQ4D<O0_09W z3*~+HlQ_-Foi<ev@5KRRjnMRd^Sw{ZG>_%j6F)#Ij7`P6K=!Hk^zis_batj^96l^e zPuqupPS`pu3DoCs0E6)%j%)oghem0Be!xLyA3uFM7;diFhIqT-L!m~Qr2ElI(y9|d zG-<)VU{OZx1z=*&$@yHZBRxbRnM=lg+H$<uu!vT_$%~krsqdvm>2m-uj(|t%D=8@r z9V)J4hba9E5uPAwADo_=03M;!=)tWzU;j36@-kip0wMc}s0B#87R=y_K9cCxuC}2S z5J;|b-ZphAWX{p4bzs(Sn(3RJy(NbBiy=DvhhO_fi*-|+x5o^_vp}ks&k#ui4BKIE zhX3u`w=p+_BqYf!`?EFnP>7z_p#*S7+d5qh4UL%x>#wvbr4!Bv6#<F4-1=1_1l&BA z7`o>q5cSAB9ieAi0Is|MBO(*__y)icr_;u7ybMma0|V3k#KV&L>tQKMle3*k#M^<o z^)Bq-!eE9d)@zVg=e^I#r>kwvw*D5R^4Wjd8vSL~J?n6^(sNuF6*bi9<h$tmf`j7^ z>)o<qngF}^l~a@yh5HHyRNm2YH#bF?w~0x;-F$BIe!Bj+^ykmpsAXF^Bzwp^q#!2r zrNWo|YeL-lNx8WNabijQG*6RqEwnV(gq*K)Obr!H3T}%<8*{VbW>f8#LLYrc{>}&K zd2)S@<`D`x#B-}Wb{8IUrx?`SF1!`?i=sT!v)tW;OiWBH=oND{jS3Ts)KEupoiTjr z?bLb+mRh4W!}l%;7`pb#1Pcp`)ns`fpbF1$aM~uypbFLq1PX$A?m9?ihzEW2^m$Yz z(1jNNG)7=HE6aE9!G+p%EK;8E{QQ?efMM;Gmz6zcdqVxal)b#X{4qbVM4k(#Tc!J} z$TYs8s{zrY!(`n;og?)2htAA@lIN4Elh9ZD*p?)=XJ5|!k3;}~C40NqIc@%taJeDj z{%E(<@fZY%uHHB%e$O-Jva&LwFaGuQf?(*A-RT67hX|+9kIJB3B3zEI%m$K8JOPkO z0I<zrX!p7MuHM{utuD$O(K#2Sz=Bw<;2a${4~^Z)0L{wEDzva^RNrfeNeu6Kk^dTE zbbc%>tcJ$M0T19(gcg`pRaH+&xPk%729^aFF~NATF13hA`t9{OE)kJ=^s8VBwO{Hb zF6NWvIe8To$BLw+q!mg70{jAOrM8wfbTd?IN0=kqhU-R~w>LsR$0$SeN5+Y`E%0TU z*X~f3>l^9KZ#$f3yuYaA%rOZ~+CD{#N~d1(BC}5S3hT~iV!kpLytAf1JgSL8nz$J7 zsS_3q`dw;Xcaj`YKctK-AaA<Nd+iv}xD!j>AhZW%k<`z&+;@Gcy&I_G?Xn{x8I(7d z`+eRH(eUobmi-C!I8joPX215?tBC2wNbS=X7Z1Y?!4-ww9tMl>q=w|=sPG)Ec6DNb zHEJB3ScP3p&B+FCGiq*1;;>)mVShhfk!0)ZOK535gqRI={;@m=avSwYLgx+|-YT=O zy12^I;r6QXVT}?Inf*&qX|G>=1}1S)ohCjr`XF~uFG{K?VFTy^!lGZ>v!EWY0=ttQ zIk&j%O*=meXdH5)11yb#Z*XvsPf$?1E*vesu~8UA31_R}?-Gr{!NIK7R#qM)U)~+` z{<wjcR<sWe5}Z5mo5c-Dz=wa#ZgXKAm<(zU*)#FS)yh?s+1^`3J{an3ZH>$iQ{SAs z_pYn7?JlovmzI}ZyKfTwA}1r2nkL7#wn~3-D0-hG7xd+1Yb+dn)zPL3*Y{Njd3}^U z&k~0in#;oETv1~6iS`wiw)m#XpwMIvJA^&KwsbuxmQ2VaQu6c{yJc?$m*o=1%7bB~ zc0x`oWhp)KvABcazJ}8|y0$jxrQ4!y*qD@pR%dVKYy-y+rjiJ^n1k*<H}{&Psf>+l z3d6;+aI&em-nd@&<6Bnu@B5xR^OsK{l+1Izo)}GrYb#BE&wj~oB$*FNb}Vfq9!vGd z4h^>U4Eww0p5}cH5Ei{5lQmtloxeIKv^JcoCrxDgiRNG8vV2hX=u5cXoBmZ&d7mQs zua0zlE5>*wiaIiXJAcU&jiy~W-yyZMBqTheuuo#}S6W`v3e|s_LCgJWHkESMJNp?R zzI0y<pJ8La(a<0=G&G!;o?c#F4v311lGrbK<sQePo4nt2Jy;+UOQ&0`-`w<o$h%}; z*kwt`at!U*jovraCMdgl-6td>0#mR#`Aa|mIV57sbEJGbrBJIrNd1e`qVa~rpFbRK zzHrCCzjX1RkI!^bM4=%NH-7rw7}q#^MFl3ZlnZp_cdEi_kkGh4<Eh?aK&Q6+3mk{G zo&Fy0B=%a{;&a6$SmfX?$wAK&cJBD@j#UzeB{@_|=uP9)dwx%r__#OqN!+WNbE&@t zht}t6=|6j4i(S&0#}qV$uJ#@Mb)+oy+<z<pvus)X`sn}ka-C64bnP}+K&dtaL_sOi zA&B$<iWH>_3P|rDy@w9U3k2ysbWw<n-Vq@nD#Z|bFOd#XLht1}!~5s{ymx(T-K>>A zlgybjPuqK+IrE&k(PuLJ!+QOjj38GCaG~G*6ZRg1?#7Nv;R=FE^-stjyMNUD;BL2J z{#mw-QR!7)*5g*8RDU0P?+`Gr4@G&?SR0wqXSf?C%rAeFSQ0e4wM`E@o8^69{T2;* z2vB?^uGa_8k&<5b(r*-T7={DYlO}9uwLKUf9=<eGHdmB<VS2P?7Eij+kN^EUVyqS^ zDdIGK$Sx^ayMbIhkjeIM-ZoUMaTR_gG$DBZvvCwVkw&nBIKte<8s)D-a^?2hr&Jl4 zO2s=LdO)mEfO?;!^3pmq`WQ9COfBT=feaJbQZXJG8tN_&r>Wh^!u1f7a%zZ1?t&6o zAYTy#tYP7Re$_`+&&tO7qa5Iuq^3KUEvy+4BRnUBm_N+w6Msy??1thG=Q>}&dipgL z)iXY5)sni~Yh`y86`8H$1ki_i>TNYgl{NmU-S~66118&H#!pN97=TYH^+yP^2~1J} zS-HkqHhsK1uRr$l*=_(_xJe!UrzAQ`rHF=M@QzN<x%t6LX&&w6A620o!3P!XTN_@T z5JFtw(atyN{rI$D*}-IVY;Ap=MMx-Na8TEA{97x~`VS(m^X*PX2++e#f?iB1%FB0w z0?qQNLOF&1@PKf_A764z4Q=ZIkfQ9qGP?K3MDgJfxA)gIR3O!7Z7%iYw50jroXeh` z;>xV|gvzSvZ>eX0a3zShfI{+%>dRFIkMpn?a?7Euc6SA}-G4Bdn9dwksqt*VPWRRt z_>6%Y!J!5FN|dl7hTCGqrhQMVtGmTS>$>b{ArbK4{f!zU8k=Wl_4OIG4r*G&VB9*~ zDa18ad^6yP@}OMfdpu`s@zm-?)Qd_=wh~1ANt$K$lF5&V%+x&vnYKiHs!@r<n1uqi z{*AN%e?v!eM5@zfULY}}EF_N3abO|47H>sTUnAXoE2(b1zs6_b@m-aJjFe`7T%>q9 z`pWKo)-X@L?w{)N@^>`leze^J)Mss~SqqZ(ICNv|oky$d>ur4;2t)=gk9M*1gseg& z{lgxN>e^Oa)gPD!_#cog+H6}sUS8K)#R54NfhBpLzLWFQ(;M!4z3(2#+fXiX5VN$r z%xTz`ivB&YQU24QUJV#kwIf}4ZDw_cx!8P15P(6)`xtfWj{Yi}o>H|OkGmhHvqq3y zvl5k+B8mK4BZmWrrQMl947bv2>#M(91i^>#94O_7jeboEEz=4|OeJy|#&_ps)Ob32 zyt3W}SdJF^N+y8qObra!cd}|f;<nD3UD<JQE`A^XfzdcnI_~NR0r*C+00Z1lknVkv z;7gnqCidnn-!b<Z=G(KLV_2Cl7tykZ#F}Ie)4uMwZ{j(kZr2@6dvl-v6DnV}8Jx4% zZ}&tmlaIx0CYj$*Nl)(v6o!BRdY@qnDk>5HqR?a(m&(S@zP2})o$e8-S7GaNe7MKr zeeV2u+CIe-eYBKs<>hPF64R2C`!7G{-=sSK(Xgy^;R^AVi_TTCzzOb(Bks9{6Hqk+ zh6Nc1O4;{pM*?BRW$od#3=A*!n5KFI1!jE$=I6yfKXVn>j4x34PzQG2opD~-UqN86 zx*qwt1t4RxP&j0Uo-j|`rXBggc6R;Z+U>dStwnR+Qrm^cvT6!0`?x%VWvai&!R^_q zP`>G6#jQO&9k5E`9=FI(9%W8cE#^O)cOib9SZ?HqP+aZa$W)n<vAG7+P5x-kqp;$# zvZ<Q6ES_@W+lRqH8D%ME-q0>AC+v}@m5<MULa6CK$4Mo3BUjWcdTB)h(}g%hBu7jd z*H3<qk4Nh`bv#A*AmS-fCRK@02}?|L=dPa1|IYvPJCmpm9rewN9Fij~ZjnRGjv@{p zt{zTtsb$yvpg21`v#_Jc&wh(x&CI%zC}B(fF8m3X-?v#wTQA?v0=uiQVHv#`z4|1y zm=wz41c_R*51vlEAD#W?j7f{zGS{5;8wR42Sx0>Wedt34h3kZ6DNwn^ccKUY4HA0^ zc(j5cPP|6HM3#a7rvboC!ZuP}?a9>N3OVj^qY$H7E6c3;QS?@N;QdVDsHob;Vbueh z9UH?N{j~=}yZ`*K*gke2E_Zkeh6dCC{VT9@-n9~iN{R>%&jHG2r#w$BPf6Tb6VS+r zT3)Ung@(2C(tcjr+S>iMo8SSvU#7N}hvG#!<hq<%&Wsu;$N5M;E-;daPm>n6-UVZ) zHHgZ*x3xrqx_-%fg51OIxnKbssh8;k-|POH0>@n@Y#xW)WsB(xm`YGhwZ@V3w4=W- zF(QL23;x1QpT+ooCXT&4TTSmDwO?>oqqQfBXD$3$!4e+R_X;DFN=@x~&L0tK9mbzK z*HBZP=*}k2o=HbqKGkDcGzpYLx;EK8n;)7IQc@A6mP+v%@uUqktiPSzJWMAyJ1$Dn zDM#5dvE5~N+iO$BsQQr#(1=nqNhxmNwII6#h;<g+zoDi^?f30Z6<_GFb=U7r#?si& zTZ)=sB7@b8yP~UBTixHCIDB}-qwsZBQ<~jt+rCcmNlERY&!<)veBH5Jr_z9w>c*v; zH&qM_401N8Vwh#99{^q7E*))3e^bmkNW$Z<21W&+nv|G$t-HG$ccZznk%W$pt}NyR z>AEy1=(D|)8kdwL{1YCjid@uh`x#EGYJVGwoN#+W@Gg@PkRpT!D|S2u#}yC#T^*hX zIa-Jgm*+nktkJ!9@7^b)0+s^(UVO#8`9!Ti=Tr&o9sg_{rL>2i0O^+9qn1`qTQ8m5 zpR55j{Fc~FKMp2h;z?$3TQXN`zkt!)?k7&QP@`PnL8g~W3Dzs-J-?(g_Pt3?#J!S1 zF06gjP4<lG7p_3s4g?92(Yb*vXAv-HEXbz-*ThUN|3qN@c9?tvB~(X~&M76ivH*<# ztn<a@hUDSumFSx>Y+PLD)oFBws|r)TgmNd1?wKC&LWg+~p=r`a_Z>B)2Ilg$D-Z;y z^f<e5wrSpgug+%YWtcBaS()7fq0))5bm%eYAd8aC1yO4^{!P5Gu`!ZSG#V&x+G_Iq z?Cc>fQ?7Vax#QUI(i9|#p?BB{4a7k}ySTcV0V$ntR5zUOlJD=aou`~KKU`s_r=akw zZE0y~FJ!B#tSrxe(I>=1=#zHEnZD23oW)WNScR;<=D^+(ha*4Z4!p>!)1RoovqZm< zFW|n&?a#l|Ez-+L3CYY<njTi0k7-Nv<S+gekB>%l)wt9<#0u$@6hCmZwpIp~yw7Js zkqdr0f2{HiF*-l?e$TKuP~%@YDLU>IOvNZtY}!PsmW62j(-{0or^u*~FMyf}(E@lE zDmoeiZjzGWUhe9vleco=8D+w$si~N{J*I1X`jxoyii&p0@Q&92V(dj6M{NiN`l3B{ z7cX9P|J%zYEGX!rV`Vj~OOed+4zOjjWdlRQp=uXa|NYI0>DC05EJRI1JqZa(zJ3+8 zq~wO^113pN-U9uqUn3*w@$AZH;K&sNjC!_Fi=-P*^vE3y1`~bmJH@gWv$%vrKxSN= z=~rW8A0G+80o7}rC%%6wFE0<69iP?6{Rm~mh4ysOIY1eC4ZkJ=!5i;3hj%&h!T;?B zT6t=2u6cE$i2-iXkUhLP2&c5_$Wkpbs^ipIsiI0A8yj;$A_Yo2*642DqntwLMeIt^ z(WOL68Z(AALQAkN^PM?^y}iB7lueH-EF5NiN|nv)FQ!=x7waE0L0E7O#=*gHS2gWN z?vn&qwfBZq9G}@mDk{rgkqpqz6JR>D5up|-kdu=`$t-=-*Y_ypS!`<phqcpC>C6DQ zkLXZSgEDui*{>-z(d(;S($G^i0UezI7X9=7*2=eKu%kQIjt@6Fp!K|kg@wI3)u5T* zDP_P4k>KpYP}6B_L?!C{e24Vq%Uqt0j^bJe_zZFL2_+_eXlaR)laq&s=S!6-eHgD{ zObhYUUa@7)tel*vOi5&#qu~6XKS5PhqT}P^n+rW*AF>1X)!W1KUzFWtS5CGVsdU&} z8cMKgPn(#W{QgPn15CHlKK136rzx~%3+#w1oG>l7YQGT_7iwx><;=z6eM(MiJ(taZ z=?uQQbE)gAs8B*1g2%pk^cLu+Y%LC?*A00Mm0Cjm1hqb>S%Qn$k5uyM9E@rIbMiEW z-!Pv=4wILc2e^4%dTQ!kc%I$m)|k_jq@be8Q_q%WyL(p?WS!5>it6%k1w?*XS%cAN zdg@yeKem@g#Qpd0gIJkscy-px$0yArgG&q3`T04Ii2Yzg2nAhrz>&nn#Ke#0=AQDG zTJ{b^hqQo936Eo3v){ahrDef=$|(osfjgR)AeF+ivr<cpN26O3)TLVoj02<Izc;Tx zDm1E7`k<C6<}!H>Y9Lm(GcI(X3#Rhku+|eZ2OX*yFk%%G8!SiWPHO}ul4WXJM}Rau zOGXVV_SyP-<}BNT5OUhxIhm8xMXA8&gnEDC9%U{Hp}Q%d0~qO8wF|Vnc5=dH=YZtw zea8$p^@-ixT^8}mloUFkK!3W@-MGwUL=K`w8&4o)@9ugzj(vS@LqMS}!2S*t8Cx{( ztgY>7@zl?(Y)U0fVxX*?`4z>e=;<jEK_^geC({H+i#jn?R#rwbN$pEN=de=xwjuB8 zn#R5uYvy|Ns|XvIrmKNHct~L<Czo$f<v50xMDlB4RPL~`{nHps1_|J>FtXOxRsifF zv9Xu>3k`om?-zi4{-|HYFX}Xo6H0#n{yo2{zBVpX;GKC<PqnFsazD$@Kbk6qwMM_L z^%4U#P}eS(xI#g2w7&&x4{a0zV(^)XF(V`6uNdYIw4nLA1GBL0wcp8nJcXKh&KQl$ z9wj!j1#Q7IW}CrRSv<t`AqJ1|irtv&AZQsk!CP8dILBX47m0b#MP&L$zbK{Vy4xs| z^>xEi#CiC2-n<G3qze67Pd+X#F8O=fsrM}3Slrxmqihm$FgJIjULD#xa*5aK=3FpX ztyEoi4hJ;n_$=n2<HVjmR9;<_=d_;s4h<_ZagPKw^p;bKI30ulVO-%Zr773%xc_R& zehS~?fL!#I`Ir4DKYk4Vf(7U-6YvfFIgVwO!32i$3cR|okb0e8@r|sk**#|7ai6)D zH;Nly&%jQd>eTu6A@pQBKR;jgAT%tjr{3Q;nfHY&Gj{^;T;wGa)(3!BUeDh(rqE%N zH|-xSs`ivx!1u&ZHdULn`aFPi&EGr>=AQSu1>oR67kc(OdOGlUtFCwQP)|+&gYB_7 z@)>nBwZ$0~U*uWBiSy^!mG#>P`y<A>yIt57gz6a_*2Q1&Uk^dsX2!-cLHKs&KDi1Q ze!^nDg|05W!$>7N93DG8Z2`Shg;C42ZG4jl2i*6p5UjMcbV1aeWR7Ku*C6STK~a{) zd!lcKKJ+F3v{)0oP_GmtdCH~@PL7Yn-DWAlHCUyjGC`5)ekV^MD=UkZ36wrQK0e&+ zQGfPHGXzxmGXDcl+uo0+3#ECNLQTJs`H@@-<O`oQ#2g3s(tBU9-y3*1?2+AARHaG$ zR^9-Q>`TsH*f}lJNF-9b(4aL&=J@e@g(xxi`AcAAl?<`C$Vke&D(D9`Hk@_7JC*LA z%(5mLjDqY266U)PZeehGin3;<A;05mA(s9$LA&c<&l^h<tN-fBbzUACs6Yt5?E6gX zHj8Tnsj#UxhtGt{TAor;sfp#fHGOCtx%>Hkn1z+q+VML+XrZx7@no{?`G)qa^4go| zI=tkD$P^<ynf8n4@$r>ymOl(l@KQcqBc@>vO*uIjDm>iuaCgmqwEA)oC~i=fCeNk8 zhXr~Ska2=ZsY;!b%=nw&-LLM5h=|;2uz&mPu!8Lj;V|-IkIV<}2daPyDYC1JBBTts zW+tDtpfsOdNzkmmiA+!y92l%4o&#Pv8Jv-TkHaH7cr}bBD4RMT(MWA}PLTw_Bw^+N zN)%jLaJc)|`3-Cm`3;9*lsY;(=Iv?1p{De|01!ou*ZDF|FG<?CFAa7<-E>QOU9fq% zxoBy+KTZgk%;IDKjH$u(_7pPPFouj6NA7o_`o%tS){({#e;ou?Fd5BV5J0)PY*3#m z;Cru$5W1j@+99Y5XcVKUX1$;H_R`QJ5F9V+_Ftur2w1@>S@H15r$GYZ8;b!fb4)lh z@6-k+6G{z`7f(V>M~j_Rk$Jy|KoYI|?fX()Q&Zx#W=2ZGl;M;eaJ1i*^N36#hN&H+ znm&jPlz9|JUDuJM^i+_Nl^jimD=R7CQdj%92}6*GD)(E-Q@Zl&7}p<(+0p+}{he&V zbczTAfcw0D{d#qC^P3%(oR+)TWlCXxYq5EvDU7J)p*c#~gd&^dGYmuc{i_zMU8Zn< zPjEsVtKfT0OPFQ7xHIE)yQp9~gle=<^k-#dK`#Li0DM)I*>th6ux{83pJ@Q&u5E5w zfEf6xn}<SBx<lpe4G5<zbaYUsz72;HkRH&Joz<<aJb*0T!wCrq;Smw6f`TR0%CvE0 z8F)FUBQ0tOnv9&>4}0>{ZGL7VA^&3vC=^=tOBtA~21ta$!a{E&bu~58w}B_egClcC z0xVKeb%S<S<HCYZ=i7$I-@S7ur(qi~jIm~0xoOi}2w&tsYZtVE37@QsNlQ!1Yeb<C zxKj%}1~qn`fW_whz7&Tg;mbd5T3yEVzns?{s5P@34uUZ7vC=|a`@fvtKHhyEg=(qW z17^BNO<n2E5Xd+*G?dK$a5@JXay|9}1qCZFFRt4Xg*vUhG{JojiUAW$k0@~`VWDAU wY=ZL|21A1(EXs=&{+r4Cm-q7jdwS&wnVey0Q#zR$4-9;s$g9Z}%9_0X5BnYq2LJ#7 literal 0 Hc$@<O00001 diff --git a/docs/source/development/figs/nbconvert.svg b/docs/source/development/figs/nbconvert.svg new file mode 100644 index 0000000..149f7a5 --- /dev/null +++ b/docs/source/development/figs/nbconvert.svg @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="738.99115" + height="392.50452" + id="svg2" + version="1.1" + inkscape:version="0.48.5 r10040" + sodipodi:docname="nbconvert.svg" + inkscape:export-filename="/home/takluyver/Code/ipython/docs/source/development/figs/nbconvert.png" + inkscape:export-xdpi="80.024559" + inkscape:export-ydpi="80.024559"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="258.16627" + inkscape:cy="42.987401" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1680" + inkscape:window-height="1014" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + fit-margin-top="1" + fit-margin-left="1" + fit-margin-right="1" + fit-margin-bottom="1" + units="cm" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(6.8705709,12.370571)"> + <rect + style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:3.07408524;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2987" + width="136.5" + height="77.142876" + x="186.57104" + y="59.505043" + ry="17.142857" /> + <g + id="g3951" + transform="translate(0,-380)"> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="rect2993" + d="m 29.807988,404.31302 78.763442,0 18.76344,18.76345 0,128.76344 -97.526882,0 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.47311282;stroke-miterlimit:4;stroke-opacity:1" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text2996" + y="89.071426" + x="-541.26105" + style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + y="89.071426" + x="-541.26105" + id="tspan2998" + sodipodi:role="line">Notebook</tspan></text> + </g> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="190.29956" + y="102.81281" + id="text3771" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3773" + x="190.29956" + y="102.81281">Preprocessors</tspan></text> + <path + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.33420539;stroke-miterlimit:4;stroke-opacity:1" + d="m 127.2381,90.36977 43.55684,0 0,-7.7067 13.61068,15.4134 -13.61068,15.41339 0,-7.7067 -43.55684,0 z" + id="rect3768" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <rect + style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:3.07408524;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2987-2" + width="136.5" + height="77.142876" + x="382.36203" + y="59.505249" + ry="17.142857" /> + <text + xml:space="preserve" + style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="411.20285" + y="102.81302" + id="text3771-7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3773-0" + x="411.20285" + y="102.81302">Exporter</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.33420539;stroke-miterlimit:4;stroke-opacity:1" + d="m 322.9901,90.36977 43.55684,0 0,-7.7067 13.61068,15.4134 -13.61068,15.41339 0,-7.7067 -43.55684,0 z" + id="rect3768-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.33420539;stroke-miterlimit:4;stroke-opacity:1" + d="m 499.2791,261.98048 43.55684,0 0,-7.7067 13.61068,15.4134 -13.61068,15.41339 0,-7.7067 -43.55684,0 z" + id="rect3768-2-9" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <path + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.33420539;stroke-miterlimit:4;stroke-opacity:1" + d="m 458.31874,136.85255 0,43.55684 7.7067,0 -15.4134,13.61069 -15.41339,-13.61069 7.70669,0 0,-43.55684 z" + id="rect3768-2-6" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccc" /> + <g + id="g3882" + transform="translate(-25.169808,-387.70536)"> + <path + sodipodi:nodetypes="cccccc" + inkscape:connector-curvature="0" + id="rect2993-4" + d="m 427.01841,583.62909 78.76344,0 18.76344,18.76345 0,128.76345 -97.52688,0 z" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.47311282;stroke-miterlimit:4;stroke-opacity:1" /> + <text + transform="matrix(0,-1,1,0,0,0)" + sodipodi:linespacing="125%" + id="text3876" + y="467.78186" + x="-657.84564" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + xml:space="preserve"><tspan + y="467.78186" + x="-657.84564" + id="tspan3878" + sodipodi:role="line" + style="font-size:28px">Exported</tspan><tspan + id="tspan3880" + y="502.78186" + x="-657.84564" + sodipodi:role="line" + style="font-size:28px">file</tspan></text> + </g> + <rect + style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:3.07408524;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect2987-1" + width="136.5" + height="77.142876" + x="558.65106" + y="231.11572" + ry="17.142857" /> + <text + xml:space="preserve" + style="font-size:19px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans;-inkscape-font-specification:Droid Sans" + x="561.46796" + y="274.42346" + id="text3771-0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan3773-5" + x="561.46796" + y="274.42346">Postprocessors</tspan></text> + </g> +</svg> diff --git a/docs/source/development/how_ipython_works.rst b/docs/source/development/how_ipython_works.rst index 515dec0..e1daa33 100644 --- a/docs/source/development/how_ipython_works.rst +++ b/docs/source/development/how_ipython_works.rst @@ -69,3 +69,21 @@ notebooks, so you can edit notebooks even if you don't have the kernel for that language—you just won't be able to run code. The kernel doesn't know anything about the notebook document: it just gets sent cells of code to execute when the user runs them. + +Exporting to other formats +`````````````````````````` + +The Nbconvert tool in IPython converts notebook files to other formats, such as +HTML, LaTeX, or reStructuredText. This conversion goes through a series of steps: + +.. image:: figs/nbconvert.png + +1. Preprocessors modify the notebook in memory. E.g. ExecutePreprocessor runs + the code in the notebook and updates the output. +2. An exporter converts the notebook to another file format. Most of the + exporters use templates for this. +3. Postprocessors work on the file produced by exporting. + +The `nbviewer <http://nbviewer.ipython.org/>`_ website uses nbconvert with the +HTML exporter. When you give it a URL, it fetches the notebook from that URL, +converts it to HTML, and serves that HTML to you. diff --git a/docs/source/development/index.rst b/docs/source/development/index.rst index 5771c25..ba7dea4 100644 --- a/docs/source/development/index.rst +++ b/docs/source/development/index.rst @@ -19,6 +19,7 @@ on the IPython GitHub wiki. .. toctree:: :maxdepth: 1 + how_ipython_works messaging kernels wrapperkernels