From 3a6d11086da4b289a555329f406004e47785a764 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 17 Jul 2024 18:01:28 +0000 Subject: [PATCH] Update documentation --- stable/.buildinfo | 2 +- stable/.doctrees/commands/run.doctree | Bin 12708 -> 12716 bytes stable/.doctrees/environment.pickle | Bin 322241 -> 340100 bytes .../.doctrees/methoddocs/application.doctree | Bin 108120 -> 108128 bytes .../.doctrees/methoddocs/exceptions.doctree | Bin 137487 -> 137495 bytes .../.doctrees/methoddocs/middlewares.doctree | Bin 161449 -> 161457 bytes stable/.doctrees/methoddocs/runner.doctree | Bin 189457 -> 189465 bytes .../methoddocs/subscriptions.doctree | Bin 197757 -> 197765 bytes stable/.doctrees/methoddocs/utils.doctree | Bin 205123 -> 205131 bytes .../.doctrees/userguides/development.doctree | Bin 29603 -> 32152 bytes .../.doctrees/userguides/quickstart.doctree | Bin 13743 -> 25592 bytes stable/_sources/userguides/development.md.txt | 18 +- stable/commands/run.html | 3 +- stable/genindex.html | 1 + stable/index.html | 1 + stable/methoddocs/application.html | 1 + stable/methoddocs/exceptions.html | 1 + stable/methoddocs/middlewares.html | 1 + stable/methoddocs/runner.html | 1 + stable/methoddocs/subscriptions.html | 1 + stable/methoddocs/utils.html | 1 + stable/py-modindex.html | 1 + stable/search.html | 1 + stable/searchindex.js | 2 +- stable/userguides/development.html | 23 +- stable/userguides/quickstart.html | 77 +- v0.5.3/.buildinfo | 4 + v0.5.3/.doctrees/commands/run.doctree | Bin 0 -> 12716 bytes v0.5.3/.doctrees/environment.pickle | Bin 0 -> 340100 bytes v0.5.3/.doctrees/index.doctree | Bin 0 -> 3675 bytes .../.doctrees/methoddocs/application.doctree | Bin 0 -> 108128 bytes .../.doctrees/methoddocs/exceptions.doctree | Bin 0 -> 137495 bytes .../.doctrees/methoddocs/middlewares.doctree | Bin 0 -> 161457 bytes v0.5.3/.doctrees/methoddocs/runner.doctree | Bin 0 -> 189465 bytes .../methoddocs/subscriptions.doctree | Bin 0 -> 197765 bytes v0.5.3/.doctrees/methoddocs/utils.doctree | Bin 0 -> 205131 bytes .../.doctrees/userguides/development.doctree | Bin 0 -> 32152 bytes .../.doctrees/userguides/quickstart.doctree | Bin 0 -> 25592 bytes v0.5.3/_sources/commands/run.rst.txt | 6 + v0.5.3/_sources/index.md.txt | 31 + v0.5.3/_sources/methoddocs/application.md.txt | 10 + v0.5.3/_sources/methoddocs/exceptions.md.txt | 7 + v0.5.3/_sources/methoddocs/middlewares.md.txt | 10 + v0.5.3/_sources/methoddocs/runner.md.txt | 10 + .../_sources/methoddocs/subscriptions.md.txt | 10 + v0.5.3/_sources/methoddocs/utils.md.txt | 7 + v0.5.3/_sources/userguides/development.md.txt | 193 ++++ v0.5.3/_sources/userguides/quickstart.md.txt | 2 + .../_sphinx_javascript_frameworks_compat.js | 123 +++ v0.5.3/_static/basic.css | 903 ++++++++++++++++++ v0.5.3/_static/css/badge_only.css | 1 + v0.5.3/_static/css/theme.css | 4 + v0.5.3/_static/custom.css | 311 ++++++ v0.5.3/_static/custom.js | 36 + v0.5.3/_static/doctools.js | 156 +++ v0.5.3/_static/documentation_options.js | 14 + v0.5.3/_static/favicon.ico | Bin 0 -> 20915 bytes v0.5.3/_static/file.png | Bin 0 -> 286 bytes v0.5.3/_static/jquery.js | 2 + v0.5.3/_static/js/badge_only.js | 1 + v0.5.3/_static/js/html5shiv-printshiv.min.js | 4 + v0.5.3/_static/js/html5shiv.min.js | 4 + v0.5.3/_static/js/theme.js | 1 + v0.5.3/_static/language_data.js | 199 ++++ v0.5.3/_static/logo.gif | Bin 0 -> 11889 bytes v0.5.3/_static/minus.png | Bin 0 -> 90 bytes v0.5.3/_static/plus.png | Bin 0 -> 90 bytes v0.5.3/_static/pygments.css | 75 ++ v0.5.3/_static/searchtools.js | 566 +++++++++++ v0.5.3/_static/sphinx_highlight.js | 144 +++ v0.5.3/commands/run.html | 218 +++++ v0.5.3/genindex.html | 496 ++++++++++ v0.5.3/index.html | 177 ++++ v0.5.3/methoddocs/application.html | 339 +++++++ v0.5.3/methoddocs/exceptions.html | 222 +++++ v0.5.3/methoddocs/middlewares.html | 219 +++++ v0.5.3/methoddocs/runner.html | 220 +++++ v0.5.3/methoddocs/subscriptions.html | 167 ++++ v0.5.3/methoddocs/utils.html | 169 ++++ v0.5.3/objects.inv | Bin 0 -> 946 bytes v0.5.3/py-modindex.html | 196 ++++ v0.5.3/search.html | 166 ++++ v0.5.3/searchindex.js | 1 + v0.5.3/userguides/development.html | 342 +++++++ v0.5.3/userguides/quickstart.html | 292 ++++++ 85 files changed, 6176 insertions(+), 17 deletions(-) create mode 100644 v0.5.3/.buildinfo create mode 100644 v0.5.3/.doctrees/commands/run.doctree create mode 100644 v0.5.3/.doctrees/environment.pickle create mode 100644 v0.5.3/.doctrees/index.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/application.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/exceptions.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/middlewares.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/runner.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/subscriptions.doctree create mode 100644 v0.5.3/.doctrees/methoddocs/utils.doctree create mode 100644 v0.5.3/.doctrees/userguides/development.doctree create mode 100644 v0.5.3/.doctrees/userguides/quickstart.doctree create mode 100644 v0.5.3/_sources/commands/run.rst.txt create mode 100644 v0.5.3/_sources/index.md.txt create mode 100644 v0.5.3/_sources/methoddocs/application.md.txt create mode 100644 v0.5.3/_sources/methoddocs/exceptions.md.txt create mode 100644 v0.5.3/_sources/methoddocs/middlewares.md.txt create mode 100644 v0.5.3/_sources/methoddocs/runner.md.txt create mode 100644 v0.5.3/_sources/methoddocs/subscriptions.md.txt create mode 100644 v0.5.3/_sources/methoddocs/utils.md.txt create mode 100644 v0.5.3/_sources/userguides/development.md.txt create mode 100644 v0.5.3/_sources/userguides/quickstart.md.txt create mode 100644 v0.5.3/_static/_sphinx_javascript_frameworks_compat.js create mode 100644 v0.5.3/_static/basic.css create mode 100644 v0.5.3/_static/css/badge_only.css create mode 100644 v0.5.3/_static/css/theme.css create mode 100644 v0.5.3/_static/custom.css create mode 100644 v0.5.3/_static/custom.js create mode 100644 v0.5.3/_static/doctools.js create mode 100644 v0.5.3/_static/documentation_options.js create mode 100644 v0.5.3/_static/favicon.ico create mode 100644 v0.5.3/_static/file.png create mode 100644 v0.5.3/_static/jquery.js create mode 100644 v0.5.3/_static/js/badge_only.js create mode 100644 v0.5.3/_static/js/html5shiv-printshiv.min.js create mode 100644 v0.5.3/_static/js/html5shiv.min.js create mode 100644 v0.5.3/_static/js/theme.js create mode 100644 v0.5.3/_static/language_data.js create mode 100644 v0.5.3/_static/logo.gif create mode 100644 v0.5.3/_static/minus.png create mode 100644 v0.5.3/_static/plus.png create mode 100644 v0.5.3/_static/pygments.css create mode 100644 v0.5.3/_static/searchtools.js create mode 100644 v0.5.3/_static/sphinx_highlight.js create mode 100644 v0.5.3/commands/run.html create mode 100644 v0.5.3/genindex.html create mode 100644 v0.5.3/index.html create mode 100644 v0.5.3/methoddocs/application.html create mode 100644 v0.5.3/methoddocs/exceptions.html create mode 100644 v0.5.3/methoddocs/middlewares.html create mode 100644 v0.5.3/methoddocs/runner.html create mode 100644 v0.5.3/methoddocs/subscriptions.html create mode 100644 v0.5.3/methoddocs/utils.html create mode 100644 v0.5.3/objects.inv create mode 100644 v0.5.3/py-modindex.html create mode 100644 v0.5.3/search.html create mode 100644 v0.5.3/searchindex.js create mode 100644 v0.5.3/userguides/development.html create mode 100644 v0.5.3/userguides/quickstart.html diff --git a/stable/.buildinfo b/stable/.buildinfo index bc58d078..dd6f9865 100644 --- a/stable/.buildinfo +++ b/stable/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 041b978ad7dfbedc4d772508d4dd16cb +config: 99fc6aff81c34ee67384ad25a009edab tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/stable/.doctrees/commands/run.doctree b/stable/.doctrees/commands/run.doctree index f0224f583c9366a4cd0659e3b90665d14d7882bc..b278f4c6b1013c2cf3db2a689bd59e8bc09bd2c3 100644 GIT binary patch delta 430 zcmZ3Iye65YfpzM_jV!-~1Pd4$7_4#=GxPFNORVzpQ&J}j2#c_Q85+V$D#fV<`8k=1 zU>SuPh18Oa)S}eVTq|Vp$s2@~>NE0lQj4=IF%+VSTS58AW+8;EVA`#6@{<#DU_7|3 Y7y@u*jH#1(MCyi>Z&Eh@7F{U~035iRWdHyG delta 420 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 H^tkXpcQ1C( delta 14528 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%0Ah;?-?g!tT#=QJRAH$ED$$ULTphBFLJZPpE zUE)C6mn37?c=!w+<)X{AXj|dr%iSw0BK3pWXK5y`x14I)IYSt=Pzqu{+L}&KgE91r zrZ8T8h4k0#uGY0-)LgZF{0Z)x7&S&UX`9Hk5e-y7)SUd3E+p+b7{<*N?1RtfPzmGK z4JNpBb-6R`gAGqy{v7wuLpt2w1h`%Qp=HwJ29l7ndl|J*dW8MxPC#%MC-4S8o?#@N zJ<>5AXSmdfZ}3;X7P5m~BjI0fU^-P^#y{m?7a0gXidR|J?d|6t$8i4zjHb0hize=q z@6ZxBaS?M1m#aQ-Pa*zk#O+_4&IakFGa;+841q4%MJiK@bSKq(tn2!mV%P-@OvZqJ5-7auO4AFSQ7gIQs zw)A#ACoH}EW`9xlMB`iCbNd44H@V{r!5#dn{MPq))AJdxxe#hkS;W`+v{e-zxC1T|Lj4>T=#u#@UjQn5F z^{pbtlfTd?Jl2}*XmrES=lGgm>5XKE2#|h-+N5oqUzpNc$2(U^?ts3(p%b4H<<|a& zPCRUuJILjPMUhKSy-GvKzeVXcuTrb@p4sfT4YQ@=tX?P`gbC+y6WebJ$oOm2N<1rt zpuT<$pNnXvX-AeSwd2fw2BRO9w`!1DjCH?oGpi*fj%10Trz9nrWSBvRRGQX1F8wS~ zqRA9dI!9I#$V9VrrDhT-uM}Qm5Yjmhh&lVhJ@F4PF5Qh=)H)G?0KIo<7klkjK2X(*6hTjOzET@gqXTn_lzEha1{JHI{uHoo5eEd6Y2LF)z zPdnXk*X@m@{dL=}8Iu06!drp1EX68rmXaak|^c#NFv<+x1d&&FlG{LQ$`3#x*Zk@!@)Iarz07K;p<)jZ4}{2vA! zc(YpT()yE2>lT;RDwo!3m)5N=t+isSwZnIQePiwHmd38RAxf?kTU&)mI|NNp=VHy# zsXt${r|AlHK9VZb1y%6(K}trX%3BM0`3&!`$9lWE2+NtBYGV})2vuUFXc!)<!p{ANFzn5J zW@l?_2T`^6_9duvWoL)yqQ-fx+Q*IsbMVtn2VGRtvVgz9>m0rdYMN);m$cTf|B$1} zj$y%U=PqyOp={@oZ0CV&=W)a@U7UwSv7H;y&TVLKLt>q7kAfMoO0o`OgN?CHL>v4oR;h6IB*i&B zZG*NrWvsL3M4U2^++PJ3;*@Om8y&99fQdO@`isj!JG{q#tQy%!Ni)q45IuKxZBV)qZJyc>=rC_#z7 z2%_`yk6^PMn~`Y_J+EKdG_UsqF>En;UM#4_)(qA{u_ejM PBr<Fpk{i4#mywsv8Sr$wT43qyplb9^HR*9DxalqDQcR$eZ3#d$&(c}#DUx@Bc`XPU!0j!mRgjQn4GO& zQdy8%tXEJurAJy%Z?ZtGG>T^qZ;%(4MAcB7T2hjkmtH*iV67L>qv4ZpY)WS=-|Vn? zo{(k%BLjm~Zek|TFC|ua`6;OiH3~pKrWU1^=AwvCWb>g5T zW9ejv&H9^9KjL6yEZuzN@pKTC^HiLX7nH`b9tblq#7@!hn|x7Ja`Vb(Tx>w~Ti!%6 zmQUt;>jPx-y%n46{ZVRi_uHA=pd^~rF9IY=C+okH1FG?RcNR#>ynhHJ|GodoRLVa& z;cF03LjX|goR2err0J(`KvL&3kld{NtZ(v0Gg;2;waU|?vQlBFgI3^_?bFuQzuE?jyWLwk)!5RPn delta 1213 zcmdr~+e;Kt7@wo=B`n=bUKVA&m1#XJrD85bYhaOG9zwcUX6x>xJMHes%-QI{byuXI zTGRSQrYAv)o?2=hVqY?{2P?3LD99kp%!D9awFnBr&dlbzi~m9M@SXF!%sJoh@J&ys zCnwYyLDgV+BxAM<*6{H6bL(qQ~7P=cy6MXbHz+yy?>WNklI|I#N^Ir!sVuUIG z8K?^EC#pt8U!=WQY7F+Jqg~Qu?@C2oj)%q_tkcOlcnf{WL3d&o>*a;eMhENh*u75P z!uh;HNS|aQgqP-^E?fr7_w!+5E+2ZsMl-WJjiN&NNk-n+#ydEda-<}Lf1^q+o1zZX zzZY6-t4IGZIDu-~zAC@RwPrg5(FaGNc%%?|{4H`qKqEyUcAtRUh>4^*N%%%3oh4#U zPN-HA^6+-#0^%f_G-S}b5k*-&b{AwfQui$XB(?fGsnU)g)0yIs8fj38c=HA-$q_CK zJ;I>*9;JMKp`(C#mJ6?AX7Q;OX&N>Wf+3fh{2wxyuTWaJBNYIn13t(c7-)1h|=apHCZ+KX_MF(5u& zBX@e0!O__qbWUYb-btsUs4D_fZX(aMFTUr*mI9O)m$US1@>qP&iG2xqB}uj$6e}l= XCggCOQVyS5mFJ0!xTvZSoxb)LZ$Y*A diff --git a/stable/.doctrees/methoddocs/exceptions.doctree b/stable/.doctrees/methoddocs/exceptions.doctree index d99be75fcff8fc2971e411838de153b9b5278f85..7a17d250f661f53b625c0d54c6632738341cca5c 100644 GIT binary patch delta 1721 zcmds%{clrM7{~8Z1}$ve3+yGuZ4NLx_G*GrsUc*-GDi1{Fl5}OWiX?z@?R?HHbglaj><{;I zzTfklx92=P$Ioi$Sxs8|@{p=8O>Kltkql$3l$>dQq9Tyzaq-S(kHyTpst(+b1Dae?I)yP0p5NbxtitUyMS!)7zt%}Ss| zrUrDx-@Ya?+Wrt;Ageg8uIAQhIDgoq7J>=otndnALP<`qGH*Qcea-J=&Re&V^&gi? z1AE9H{#ugWnM2IJH{dlzebtdq-uCNATW2xheLKmE9c#$be&e#jsw$dO4r@UoJA6gt zJ6|n1;Wzdcb^;I*zEB-$IC^sR#uhw--e$7kvD|vQ!_1c)DZ%6NPTpfn@rkx){ZlT! z#bLFWmINmIB-FFM?V!WTyAHj%B=A4J{*g{zbkWj39K5Hz5P$fskM zU@iT22uiVAF``4zpT}xlXnh7htj>iF))MLHMJUGMM=n7b%^ikg*giE3QwZ+}{EahW zPcNe6GMq&8UxxdLGouXhXFtG8fQw+vZi~%0MlLX5jnm zES4LCN=b|XFe}XupdNy>?*TNnv22OLiY(>du7rrf#uQbPqPC@|+7wlnqUuwWAz66> z+GeZcz&^J__CJK1_&m_PbFfvzHuJiKJM5ij3o`= SG8ZRG_8TAhvLQ`1nENlrDsD6Y delta 1783 zcmd^9?{8C87{2dy(zxp zvULm4(!sgQF^;(phJ>imNP~46qu`bykPT%KiF0AW%q%7%egNFo&iCB1{&0VSU(WMB z&-eA%_S@1anE{7nSUJtnJyJWx3=O^z6E6LX23X&hZJ9Z{`1F9qW z99O^jqS9Qw?(2jYO|$ha)1s1QFWN-4d&=45tsyge>J2O(RgB>kRaGY0<=!p$T5R@R zCRyEmu=JW22^kydI_w}j zdiDRSO~<+po68_d^j)Ud)z7s6(b!C!GB`AFCxZ{aELZ{x%hTxsUPqpp)RA*1D`NMZ z7`q*m*zDM{H6`M{@A3gSj1kb z*pE>loae`9sl2Ti#YjH=^LMDAD~Dk}mOnZSlL-4x!9RRdO>Lvtp^RSrUTtYS4ew&- z6Q|)C!WU;4#6LX?HNY!3?T?H=BQ6Ll>Ep2xC{iw)WFZDR-AEiNfme>AG4Tdc@on{(J>Ijk;+)#tE=9A?R8fpDSIEwwcJ zrFi%TT);mNb@88~0amc3V9(q5GI&%!p`+r%t9icmfW&m-)fgDnVO z&B0R$+5}h-tO?kTa5SM#m`%VYWHm{64&h)@bxx#U%{+c^g*xY9E5g7$JON4%&m%c* z2Ki!ZR&M=sDR@-6>+)}FJDV4UZii-sUB6YO2w-Ga+dycmi}O2#(z&LR{iZ+ fdTU{Artx@IVl-<4SClD~ty^#E@$Gs1;2r-0J8XnK diff --git a/stable/.doctrees/methoddocs/middlewares.doctree b/stable/.doctrees/methoddocs/middlewares.doctree index 0861999dcbd1c27a87db7e3b664197315e2031e4..6016fe5d5cbd93b2ef9c5ef4f0c7d6ac20f7e7a3 100644 GIT binary patch delta 2446 zcmdT^`%~0a6z80PUDjPh5M)Idz;k-31}*59pWg=kqy_d(QXX zbMK*^khY$Xz%4)uG!~YxV*LdXtf_D*i`TRUHF|36+-$Tqn;p|=*q^yG z+1um|EnEnNtnEN1Z?$1)`!Q|vQ;^wi3%iv(KDyrSsc}|UJFDDQcjIz*m8-VFQ|olN zy{yF(&E{lBva{LxsK{Yq_BB;@Ukt0xo~YASIqT~y9o25DtI@&sWv8`2%03BGO@RRc z#f6;*;pEGWDk*75xl*@Dh9Tv3ZIg^cYOlImG7qW!ou}Bql;RK(z1y4IGM^nSm=$ba zWp{YotT%TyJDwB49Ck*Vn0QAMSlc%g-HI5~0099uQOaTW*c{GkJA1D@ zBFM)Q79?uj_6BENZKcn!XTjJ&B_^&SadVBc&hB2hR`JAdh^Hg7yX=kiwtv_M^}mFW z$u^j7t8-RW)(xtm#hx$>g@K)|tJw5E@4vdec44O;l6(i^a;pK7+ShxyfQVJ&1f;Ca z3Svd>bpGiH(6S}pXxk5MNQwkQd&iz~DAP$F z4L>_tDsjw5`XO) zq=A8-yasV#SH z@v}YDL{&HJq9$&3!&NciH{b!aOP&J+&R%$vKz$SL5)3FH-~9uo0ROrN%7)sD-lfM-UfKtG+4dI{`Hb?bcVLH~CfP1jK-}wJ;ZhJT_S5Mq z^jDWJsd0@ziKvPHoQ5iyX>c~s5zw~G<5^lPCr%p{D<9S(&7P5W>M8WxD==E_)?ulz z?7I(fyv~9~dE;oDOcwb>7_JhS8jia}#Q7-7c{Cfw%l#2JU0BFt;=8RFC2xxgTm7ES ze$ep=$(Sa;5RY^H{*M#z9f%d*sT0fv+_gD^go#<+G7LXV!{G~GbTD!1CKW2 z^8|~{itn%)OGw={<2-_yDYRb(zApvy2`;DLe1gnW-zq*hmx@!!7?Or_2wqI1b2ab} ze9)7I;_hoLRL{suEtF^EZ&@&lpu>X21bQpgGjh9CQAd30ffc8cF+W|&+meoxLd1Qp zStglB@dhi7<=>@aGTr3+=~zZknt>GrA7&`3F9WCKDsRHx5K0QJ32ydyw|b?RM0ygw zOb-Z1_PrD33B$c@>?&Hcr$N$5wrWvB9P4do6d}ACtzh{h`QG$`Eu!>Tg GYx)~5>k^az delta 2442 zcmds1=}%Nw6rXbhXB^g%tuPr2GlDaNEMi;3E~H8mz@lZ*R>T2DRbtqZZL!PBYt_VPMD7O4+`Q73}fy z09M=M&+etKV5;o#s{4 zo#C#v+jZVxRpLKx%?#nI@=@m+IcQFEGvmd3ISP{(hC-CuO^Xe%QRAi;qCsZ^qu4KN z-h+LCV3ZGVu&W6l9)|Y?wjYB_TEf+R@Uzf{Z$K7!`J8)wC+8*C1RC z(Y*I2#Bmsb;Mfo;!=h5>(b(yfQc3T0nx%BbpISC^9D!Ic@%RzQ~IP z5&XmmnE9bmFtM|Tec52^T&@|VIHQOQP?0XlwBkAB>F8+K6Xfp_3Bf%>ih`T1Q)1wLPo8z*mn;yxtv0X;5|@d0Q+ zP@SxQ2-P0i^9c5OsPzf7xGDGXLcKirH*E6g!65YKXWpR{E&o7~Cw}-Dbb08maTxSa z+XOh=w0{^o+)SJo$J&mn+{%IVlIqmY14f8PF z6GSWRK;MKO%*w~dz#=|OF&X0Nm2NagA6$9)%~tAUY=(mA1(RrDt*jm4?aH zN@m_@!fg7=r%hPcE+(^E`j$qMe#Xj%Zt0I1>d_4KWQKY=Lp__J#%HLB>8iQYud1f5 zysW8C?pTOd08HE#gP9s}nNp`@<)6pkT6!~Bgeg>0+9LcD!bMFT$_+b|iaL~nI;fsh z3w42&@3+tkS@};E`gT?xX~owG>{iV4RfeY0KvQzlz|SRMu+n@QsWMTeGE=(eR(y+M z*Tm8rTKQ+Om`QLW7K;c{7rPI4!{x=8N~SIjR})mk;Tr^B5X2}sT7xLZonX3XlXJII z(i=&-lPJ?#9K{bLn z<|I;?M!r80lc){8OQbT*y-To=M9~r~Avoz)n55h_BMA)@zg~cuw{d9yeDG`szP? b4Yd(n+9V%ZioIdf8<4HdZ#(*kkN*zIQJh=zq}uu%Gie=X}ri zyzaewE*gUujWJtd{hCuThC=cnJvD6(wazz@hf&I>UlcAjdb~ETkmqWay4OI>Ow`1^)|Z%53MX(NFG(sCWX_A zca08*ljBX*&c;TYqsBAC?Q=-9IAo@G z+mpl9_TS0cUY$l$`q1Y`$*WKLv|=F2-1l{eQj|&V4$&WFLEUvR7-joEKd)RFi4s2C zLI)kCdVY4dl+!(ut9HE5Bsjbt`l9O*TJ20$O5Wv5q$Mr`&39+fmt2*kTq!Kul|)m$ z3AE@+Jdx-v$3)uXT%;D=<4Q92D5>z^73jZ|PIZ^+c{(GSNLvkF6P@c_th9K*lT6?A znUP!QUEXZ^tvi8!4*%jhysGFcZL#_R4lDtWDUWH+a&gudjPJdzjP>C2?Qdhh1L z8kd%rN0W4Sjgz9qPEZE z7QA(WTktiG(bM?uDJGBLa@y-{iX%PLog5pHj9pXO>YR4L)6jfJjN9}DDj$8#f2x9! z;{|qSwaq@lq6yuhh`JGh)^8xi}}n1TgABQ$PW8$4!iTD8XaYeMw`_(^^(4m2 zWY!Rv<(18_{5ItTc0L4J`SR1SS3TL$3YDt((=#KPFk?G*A|ah<83r-R=h~o1bwW!U ziQ!GYt#6k)paMsS-JK|}*^1pj(%yq%mM21jOt--b)X2lzp@n1RPH5sD-*=(M3m=kH zIk^+FMT_-0=;DYLjtqG&vwu%AEZkmA`M zf%ilBq)5zg99AQ2I1Wn?jzr+c~l$j_^1s%JB7) z8YswaorH31%<3VmC&-Qr;UgcEZw|o@f@wZ;8Yc3LI0V@%r@@E)oe_pKrHA4Qy+*S` z5*_m~e1$=gdzmF_z8+C2=3=92-W@e}MO2FU#)$cR)O=->xz-dpE#C;kl$rkmkGOR3 delta 2700 zcmds2`%_a_9?$vmNC*LW6+{FB9V@5>i>#du2)-z`5vi3@r3eX0gj_=|+}vQh+ZHHV z8%Py%g2%KoeT-H?^0q$?lNo`&DgZqw4eEN2xU2+e`r; z)Zum79iFltuhX{ABU>do=+9i74Lj61m~rnv|kZI^HQ@_5CZd3tGiNQ^HTfqR5htc6j%H^ zbjn?)8qYa?E5&9N?-2YO?OC(>Fd39^u3;Rx~037u9XVZ zPMqtlrw@qwxDg>hT~a+YO6DZK83yz3Qb%w|PN5%omZ%XLMKfI?XVO~FeY9WJ(p*m_ zX;Qu3mkhY!GPJbOplqSW-lgp=k==Yav4hFVE-fwdI9dxz+dT+Sc)#i~saabci&jmhKa7F|xO8iLLaWySM7=`V(g zOt+$%T%yhDx+Tr$@*~ABab+$T!VRt;llnm+-y`PigTu%KPIlz&A6R}^tPD+y4$^Vj!q|vXxR5Q}h-+sB} zoCp3IkAAxoAd9beFM^M?gx#ueqcWZYR~8ed&^53M5Z^0@xYZ=cK4^uzNr+u*g#r@b zkZI5e$JS~zW{uY)Fjd1gwZXlFGNT2u*+?6#W6La%!~WC;o7kT%a3^)oX0S#JtilNW z7HB1myB0CSQZTTWav+gqT7hllFOTpFhE`u4VTv>UY6#~!O})DPS3N!XVyb=)M;i%`0Za5UB0SOLAX}JuaL}_L(*rU|9 zAD)d+HL8M9r3EtIWtsB%&ma`_AASN_qV&d-(0@zY2m7O|hWntHZOA8DW%B?u5S$bC za3}lfX=s8#q=!oLAl8bOw*@F*tA9t5S7z{uv zK_!MLP-ZAtP*BoG;T5hNkT9`d&cJf^O$F$bACAF8+`QvB#3kqR!(|5bWSNP2tjuZZ znKJ9~6!)Bf`*G&yPe5ZI|KyDbxhd)wMqMx>RK-Y*F;Y{Ev@1qxj*(hoq}GL!*Pqhi z65HEkQ8|1PeoqKxdrv`)jwiDxD1_MLDcFVWNjwcEEOp~)xSY#N@~H{>)Pj6!Jw7aF z-58c0V!kohfbj7cG$9m@!xn_Sh*eF%HUwV;KAXV%5n>rjz2!wft_)~ls|i@onm z>`e5@_;w4A-i151R`JrK*)Fu2&=9pUHuoBM)y50;NgB;FLBY+feGyJsLl|-*X0!gb p`Fey?);DjiNWN`87U7gl&zrwkV8#cRZ$#N&&`hZEpD+}y`5%fVq=f(g diff --git a/stable/.doctrees/methoddocs/subscriptions.doctree b/stable/.doctrees/methoddocs/subscriptions.doctree index 62bed6a0a4f0460e78e2fae6725cafa24e84fdfe..f9f789c463f26f8ed143b477d0ae1f0f11bef6d2 100644 GIT binary patch delta 2813 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 UB>~Ya=NeJdqiR*J-B;)LUm~&40RR91 diff --git a/stable/.doctrees/methoddocs/utils.doctree b/stable/.doctrees/methoddocs/utils.doctree index 24684cd075ba9d84da6e027c87cd08f21a98f7ac..ca37ea677c70cc0a2d0e5fdfa5d177f34c9ba26d 100644 GIT binary patch delta 2959 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 irFrE3xt}|EV&ucq*Cx2*wQ{JFuSPde>5{WF=& zywCgb%ro!IrJt$u4=CnM=G^Itt4w`!x;30E$r>Ml$iAt_M5IVy!W+=ryzx{-NbyF5 zlC7&YW3@=g4Bx^=w^AdgB2iRMU>5EidnSE0dCwjpS4a}_8U;tAK8P*dfLh#JE!VxJ zsb_^ep;*WXT)_yKa-qGK2{b3b#693`N8K4%bvxj8>k;Z(@N^u2f$U`KITN}BXKT`_ zJ{W2%qgfqh+7!wL_VyKeB^l0SJPj!wZfX^y+|Cu#sgckrp3p#g@m2-7 zSarCz87aJ~2Q@Uv`i6OlgUasehUn4(b7>!`R8}}%L7I$0itOW66%hthO~$S?fj6C~ zNFGA`N#3VxqU1*!4xpBRtLGIujRC2rj^4|_-Hammp{G0ZeY3PQCVJ)ux%u!;cm5Lz zy1=-*#~f_TD1pkV-PXS~iqwh?@-B{HH5 zF9e<=Vsg~&SbpX1nBGzmVHJM&7Ei_^EyYzF_y|wqSMz+Qs9}j{adD8NW4Fno7`2MQ z6TCtsfkxPIgs(jsla*n_s`$i1ypPCD6(t`}M2D3^&K`}4!O0-D9mAUBI9|fyRCrBS zBs9<{OZ)(?7weSeh;E3CSf8e|K{IyA_9pVLGM)VAsqQjU(%7_z$ejF7+1xqBgoAG~ zuT%V{z)Xe>er(92JBd796&KBWM+}WS=lGjL*c5mZ1NXhI)R>1l?1A*&LbLbA1ZD(q z)XiY;n-9QS@NsvTvct(<2d$H4kPFv(kJD2|QcqqolbSHIhh}Fk^m?mou?-Bl?0t!P`}1`Yfey}=lt zhdcZsnz4`zXT5IjZ@|=$9R`N7;wx)-#YZi|eR@Bn`Mq?3g*dd`Fab^rT=9QRAGDCK zfbHhyD$W2F1wVCTAz%D}rqqR{;d@Eh?n7m7aH!# YpDya2NH^+!jYK2v15V4r5rw1v1Xe_=4*&oF delta 1019 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 S8-H7&65-D(5adwu=Klaet|Bl1 delta 1977 zcmcIl-A^1<6z9&c;I2@%l+uM^m%D(4?iafvBKUw?T4@X2c3WC3+Js$p*x4z}klh&( zquI8`hm}o(oY6E*Od#>07`4Uy1N=;C`k^ro1s4L_P&HiPIN03Pj?P1!BaHG8b@=VCp^6H@HNpu_!6$IydAQ*4+DtEt;H&W+ z@Qq`USs}x46TH-9t6U@@;B$1Kcgqo+2Et|7u(v~9v!}zHS)nOf1Xhg;jd?Vny{etl zUe>xuHUf(F2d(DDEWFt)pj&XidDMP`22oC~kyf%Z3(s<4#KBwKc>P@iPjE&AS454A zi?HhKMfb|tv>R;h>h+l3onk#7w-lHvhSbvxOHMn|!y<%zxxnu>~sfkz!k>=`M2mB2S>&e_D$A5al=(bABhSt9 zlA^ngB}v%QNn=lB@6Hme7xQ)CIzdjMN4Q*9*@zennhTEskF@0RJJhj++&FP zOQ+vwxJP??OwF@&T+|#n;{v(MsKbw+Nh0kc> z2V|*qrYK|rl2HlnQyp$|(rqol!OmEayGlYIi1`T%ld(P3N65N3%ED5tAsZpm5l5)` zk-n9;sd<{ZL)2WO<}+&QXiNwh OsS^|H*@6~Npg#fhXjwY| diff --git a/stable/_sources/userguides/development.md.txt b/stable/_sources/userguides/development.md.txt index 87fa4d5a..a62514d2 100644 --- a/stable/_sources/userguides/development.md.txt +++ b/stable/_sources/userguides/development.md.txt @@ -141,22 +141,32 @@ else: # Log what the transaction *would* have done, had a signer been enabled ``` -```note +```{note} If you configure your application to use a signer, and that signer signs anything given to it, remember that you can lose substational amounts of funds if you deploy this to a production network. Always test your applications throughly before deploying. ``` ### Distributed Execution -Using only the `silverback run ...` command in a defualt configuration executes everything in one process and the job queue is completely in-memory with a shared state. In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate. +Using only the `silverback run ...` command in a default configuration executes everything in one process and the job queue is completely in-memory with a shared state. +In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate. The primary components are the client and workers. The client handles Silverback events (blocks and contract event logs) and creates jobs for the workers to process in an asynchronous manner. -For this to work, you must configure a [TaskIQ broker](https://taskiq-python.github.io/guide/architecture-overview.html#broker) capable of distributed processing. For instance, with [`taskiq_redis`](https://github.com/taskiq-python/taskiq-redis) you could do something like this for the client: +For this to work, you must configure a [TaskIQ broker](https://taskiq-python.github.io/guide/architecture-overview.html#broker) capable of distributed processing. +Additonally, it is highly suggested you should also configure a [TaskIQ result backend](https://taskiq-python.github.io/guide/architecture-overview.html#result-backend) in order to process and store the results of executing tasks. + +```{note} +Without configuring a result backend, Silverback may not work as expected since your tasks will now suddenly return `None` instead of the actual result. +``` + +For instance, with [`taskiq_redis`](https://github.com/taskiq-python/taskiq-redis) you could do something like this for the client: ```bash export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker" export SILVERBACK_BROKER_KWARGS='{"queue_name": "taskiq", "url": "redis://127.0.0.1:6379"}' +export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend" +export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379" silverback run "example:app" --network :mainnet:alchemy ``` @@ -166,6 +176,8 @@ And then the worker process with 2 worker subprocesses: ```bash export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker" export SILVERBACK_BROKER_KWARGS='{"url": "redis://127.0.0.1:6379"}' +export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend" +export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379" silverback worker -w 2 "example:app" ``` diff --git a/stable/commands/run.html b/stable/commands/run.html index 3349a836..7d19f4cb 100644 --- a/stable/commands/run.html +++ b/stable/commands/run.html @@ -50,6 +50,7 @@ + @@ -146,7 +147,7 @@

run

Override the default network and provider. (see ape networks list for options)

Options:
-

:mainnet:geth | ethereum:mainnet:geth | :mainnet | ethereum:mainnet | :goerli:geth | ethereum:goerli:geth | :goerli | ethereum:goerli | :sepolia:geth | ethereum:sepolia:geth | :sepolia | ethereum:sepolia | ::geth | :local:geth | ethereum::geth | ethereum:local:geth | ::test | :local:test | ethereum::test | ethereum:local:test | :local | ethereum:local | ethereum

+

:mainnet:node | ethereum:mainnet:node | :mainnet | ethereum:mainnet | :sepolia:node | ethereum:sepolia:node | :sepolia | ethereum:sepolia | :holesky:node | ethereum:holesky:node | :holesky | ethereum:holesky | ::node | :local:node | ethereum::node | ethereum:local:node | ::test | :local:test | ethereum::test | ethereum:local:test | :local | ethereum:local | ethereum

diff --git a/stable/genindex.html b/stable/genindex.html index 7c180f83..8f9223d7 100644 --- a/stable/genindex.html +++ b/stable/genindex.html @@ -47,6 +47,7 @@ + diff --git a/stable/index.html b/stable/index.html index 4f3225d8..26dda1f4 100644 --- a/stable/index.html +++ b/stable/index.html @@ -49,6 +49,7 @@ + diff --git a/stable/methoddocs/application.html b/stable/methoddocs/application.html index 56f3887d..b1a52907 100644 --- a/stable/methoddocs/application.html +++ b/stable/methoddocs/application.html @@ -50,6 +50,7 @@ + diff --git a/stable/methoddocs/exceptions.html b/stable/methoddocs/exceptions.html index 8ae7d0e9..081483ce 100644 --- a/stable/methoddocs/exceptions.html +++ b/stable/methoddocs/exceptions.html @@ -50,6 +50,7 @@ + diff --git a/stable/methoddocs/middlewares.html b/stable/methoddocs/middlewares.html index 678a959c..8ec4dc74 100644 --- a/stable/methoddocs/middlewares.html +++ b/stable/methoddocs/middlewares.html @@ -50,6 +50,7 @@ + diff --git a/stable/methoddocs/runner.html b/stable/methoddocs/runner.html index f8cf3fd3..5152a74e 100644 --- a/stable/methoddocs/runner.html +++ b/stable/methoddocs/runner.html @@ -50,6 +50,7 @@ + diff --git a/stable/methoddocs/subscriptions.html b/stable/methoddocs/subscriptions.html index d035a1dc..412f5dc2 100644 --- a/stable/methoddocs/subscriptions.html +++ b/stable/methoddocs/subscriptions.html @@ -50,6 +50,7 @@ + diff --git a/stable/methoddocs/utils.html b/stable/methoddocs/utils.html index 40d7772a..090d39d3 100644 --- a/stable/methoddocs/utils.html +++ b/stable/methoddocs/utils.html @@ -49,6 +49,7 @@ + diff --git a/stable/py-modindex.html b/stable/py-modindex.html index 3921fad8..fb1f3bc0 100644 --- a/stable/py-modindex.html +++ b/stable/py-modindex.html @@ -50,6 +50,7 @@ + diff --git a/stable/search.html b/stable/search.html index 84c0e79d..34ed196d 100644 --- a/stable/search.html +++ b/stable/search.html @@ -50,6 +50,7 @@ + diff --git a/stable/searchindex.js b/stable/searchindex.js index ca997c82..c227ea7d 100644 --- a/stable/searchindex.js +++ b/stable/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["commands/run", "index", "methoddocs/application", "methoddocs/exceptions", "methoddocs/middlewares", "methoddocs/runner", "methoddocs/subscriptions", "methoddocs/utils", "userguides/development", "userguides/quickstart"], "filenames": ["commands/run.rst", "index.md", "methoddocs/application.md", "methoddocs/exceptions.md", "methoddocs/middlewares.md", "methoddocs/runner.md", "methoddocs/subscriptions.md", "methoddocs/utils.md", "userguides/development.md", "userguides/quickstart.md"], "titles": ["run", "Silverback Docs", "silverback.application", "silverback.exceptions", "silverback.middlewares", "silverback.runner", "silverback.subscriptions", "silverback.utils", "Developing a Silverback Application", "Quick Start"], "terms": {"silverback": [0, 9], "applic": [0, 1, 3, 5, 9], "client": [0, 4, 5, 8], "option": [0, 8], "path": 0, "v": 0, "verbos": 0, "lvl": 0, "One": 0, "error": [0, 2, 8], "warn": 0, "success": 0, "info": 0, "debug": 0, "network": [0, 5, 8, 9], "overrid": [0, 2], "default": [0, 2, 8], "provid": [0, 5], "see": [0, 9], "ap": [0, 8, 9], "list": [0, 2], "mainnet": [0, 8, 9], "geth": 0, "ethereum": [0, 8], "goerli": 0, "sepolia": [0, 8], "local": [0, 8], "test": 0, "account": [0, 8], "runner": [0, 1, 9], "runner_class": 0, "an": [0, 2, 3, 5, 6, 7, 9], "import": [0, 2, 8], "str": [0, 2, 3], "format": 0, "modul": [0, 2, 4, 5, 6], "customrunn": 0, "record": [0, 2, 5, 8], "string": [0, 7], "customrecord": 0, "x": 0, "max": 0, "except": [0, 1, 5], "max_except": [0, 5], "argument": 0, "requir": [0, 2, 8], "quick": 1, "start": [1, 2, 8], "develop": 1, "run": [1, 5, 9], "middlewar": 1, "subscript": 1, "util": 1, "The": [2, 4, 5, 6, 8, 9], "contain": [2, 3, 4, 5, 6], "high": [2, 8], "level": 2, "implement": [2, 5, 6], "user": [2, 3], "": [2, 4, 8, 9], "meant": 2, "us": [2, 5, 6, 8, 9], "expos": 2, "method": [2, 5, 6, 8], "handler": [2, 8], "other": [2, 8], "function": [2, 8], "class": [2, 4, 5, 6, 8], "silverbackapp": [2, 5, 8], "set": [2, 8], "none": [2, 5, 8], "base": [2, 3, 4, 5, 6], "manageraccessmixin": [2, 4, 5], "singleton": 2, "must": [2, 8], "initi": [2, 8], "prior": 2, "usag": 2, "exampl": [2, 8, 9], "from": [2, 8], "app": [2, 5, 8, 9], "connect": [2, 5, 6, 8], "ha": [2, 8], "been": [2, 8], "can": [2, 8, 9], "call": [2, 4], "broker": [2, 4, 5, 8], "e": 2, "g": 2, "on_": [2, 8], "broker_task_decor": 2, "task_typ": [2, 3], "tasktyp": [2, 3], "blockcontain": 2, "contractev": 2, "callabl": 2, "asynctaskiqdecoratedtask": 2, "dynam": 2, "creat": [2, 3, 9], "new": [2, 9], "task": [2, 4, 5, 8], "handl": [2, 8], "paramet": [2, 4, 8], "type": [2, 8, 9], "event": [2, 5, 9], "sourc": 2, "watch": 2, "return": [2, 4, 8], "A": 2, "wrapper": 2, "regist": 2, "rais": [2, 5, 8], "containertypemismatcherror": [2, 3], "If": [2, 5, 8], "i": [2, 4, 8, 9], "mismatch": 2, "between": 2, "should": [2, 8, 9], "new_block_timeout": 2, "int": [2, 5, 7], "start_block": [2, 8], "block": [2, 7, 9], "timeout": 2, "accept": 2, "whatev": 2, "ar": [2, 5, 8, 9], "poll": 2, "number": 2, "process": [2, 4, 5, 8], "latest": [2, 9], "invalidcontainertypeerror": [2, 3], "configur": [2, 5, 8], "on_shutdown": [2, 8], "code": 2, "execut": [2, 4, 5], "one": [2, 7, 8], "worker": [2, 4], "shutdown": [2, 3], "def": [2, 8], "do_something_on_shutdown": 2, "final": [2, 8, 9], "state": [2, 9], "on_startup": [2, 8], "upon": [2, 8], "startup": [2, 5], "restart": 2, "after": [2, 4], "do_something_on_startup": 2, "startup_st": [2, 8], "reprocess": 2, "miss": [2, 8], "on_worker_shutdown": [2, 8], "everi": [2, 8], "updat": [2, 8, 9], "some": [2, 8, 9], "extern": 2, "servic": 2, "perhap": 2, "inform": 2, "on_worker_startup": [2, 8], "provis": [2, 8], "resourc": [2, 8], "add": [2, 4, 8], "thing": [2, 8, 9], "systemconfig": 2, "sdk_version": 2, "basemodel": 2, "model_computed_field": 2, "classvar": 2, "dict": [2, 7], "computedfieldinfo": 2, "dictionari": [2, 7], "comput": [2, 8], "field": 2, "name": [2, 8], "correspond": 2, "object": 2, "model_config": 2, "configdict": 2, "model": 2, "conform": 2, "pydant": 2, "config": 2, "model_field": 2, "fieldinfo": 2, "annot": [2, 8], "true": 2, "metadata": 2, "about": 2, "defin": [2, 8], "map": 2, "thi": [2, 4, 8, 9], "replac": 2, "__fields__": 2, "v1": 2, "taskdata": 2, "label": 2, "ani": [2, 3, 7, 8], "circuitbreak": 3, "messag": [3, 4, 8], "halt": 3, "custom": 3, "trigger": [3, 5, 8], "silverbackexcept": 3, "importfromstringerror": 3, "notasksavailableerror": [3, 5], "nowebsocketavailableerror": 3, "apeexcept": 3, "runtim": 3, "fault": 3, "startupfailur": [3, 5], "intend": 4, "improv": 4, "usabl": 4, "whole": 4, "integr": 4, "platform": 4, "well": [4, 8, 9], "silverbackmiddlewar": 4, "arg": [4, 5], "kwarg": [4, 5], "taskiqmiddlewar": 4, "post_execut": 4, "taskiqmessag": 4, "result": [4, 8], "taskiqresult": 4, "hook": [4, 8], "complet": [4, 8], "side": 4, "It": [4, 8], "incom": 4, "current": 4, "pre_execut": 4, "befor": [4, 8], "which": [4, 8], "mean": 4, "pars": 4, "taskiq": [4, 8], "modifi": 4, "pre_send": 4, "send": 4, "right": 4, "sent": 4, "varieti": 5, "differ": 5, "scenario": 5, "baserunn": 5, "3": [5, 9], "baserecord": 5, "abc": 5, "async": 5, "assembl": 5, "Will": 5, "listen": [5, 9], "against": [5, 9], "context": [5, 8], "them": 5, "kick": 5, "over": 5, "wa": [5, 8], "dure": [5, 8], "pollingrunn": 5, "singl": 5, "live": [5, 9], "basic": 5, "memori": [5, 8], "queue": [5, 6, 8], "websocketrunn": 5, "websocket": [5, 6], "rpc": 6, "node": 6, "via": [6, 8], "eth_subscrib": 6, "subscriptiontyp": 6, "valu": [6, 7], "enum": 6, "enumer": 6, "async_wrap_it": 7, "iter": 7, "asynciter": 7, "wrap": 7, "asynchron": [7, 8], "hexbytes_dict": 7, "data": [7, 8, 9], "recurse_count": 7, "0": [7, 8], "convert": 7, "hex": 7, "flat": 7, "hexbyt": 7, "In": 8, "guid": 8, "we": [8, 9], "go": 8, "show": 8, "you": [8, 9], "more": [8, 9], "detail": 8, "how": [8, 9], "build": 8, "have": 8, "python": [8, 9], "project": [8, 9], "instal": 8, "pip": 8, "easi": 8, "do": 8, "so": [8, 9], "through": 8, "up": [8, 9], "each": 8, "time": 8, "encount": 8, "specif": 8, "emit": 8, "make": 8, "bot": [8, 9], "order": 8, "perform": 8, "autom": [8, 9], "necessari": 8, "chain": [8, 9], "interact": 8, "howev": 8, "won": 8, "t": 8, "veri": 8, "where": 8, "ad": 8, "let": [8, 9], "u": 8, "specifi": 8, "our": 8, "To": [8, 9], "follow": 8, "handle_new_block": 8, "insid": 8, "logic": 8, "want": 8, "detect": 8, "serializ": 8, "structur": 8, "store": 8, "databas": 8, "trackabl": 8, "metric": 8, "get": 8, "captur": 8, "failur": 8, "similarli": 8, "contract": [8, 9], "token": 8, "address": 8, "here": 8, "transfer": 8, "handle_token_transfer_ev": 8, "again": 8, "heavier": 8, "load": 8, "like": 8, "handle_on_worker_startup": 8, "db": 8, "etc": 8, "handle_on_worker_shutdown": 8, "cleanup": 8, "close": 8, "cleanli": 8, "come": 8, "note": [8, 9], "ensur": 8, "multipl": 8, "properli": 8, "telegram": [8, 9], "api": 8, "sql": 8, "nosql": 8, "someth": 8, "els": 8, "2": 8, "These": 8, "move": 8, "clariti": 8, "variabl": 8, "also": 8, "made": 8, "avail": 8, "quantiti": 8, "maintain": 8, "its": 8, "own": [8, 9], "instanc": 8, "access": 8, "depend": 8, "taskiqdepend": 8, "block_handl": 8, "onc": 8, "mai": [8, 9], "histor": 8, "sinc": 8, "action": 8, "handle_on_startup": 8, "process_histori": 8, "last_block_seen": 8, "last_block_process": 8, "handle_on_shutdown": 8, "chang": [8, 9], "behavior": 8, "decor": 8, "signatur": 8, "now": 8, "onli": 8, "program": 8, "realli": 8, "abl": 8, "valid": 8, "doe": 8, "what": 8, "expect": 8, "includ": [8, 9], "cli": 8, "command": 8, "take": 8, "care": 8, "proper": 8, "signer": 8, "testnet": 8, "my_bot": 8, "acct": 8, "enabl": [8, 9], "mode": 8, "might": [8, 9], "lead": 8, "transact": 8, "sender": 8, "would": 8, "done": 8, "had": 8, "sign": 8, "anyth": 8, "given": 8, "rememb": 8, "lose": 8, "substat": 8, "amount": 8, "fund": 8, "product": 8, "alwai": 8, "throughli": 8, "defualt": 8, "everyth": 8, "job": 8, "share": 8, "volum": [8, 9], "environ": 8, "higher": 8, "rate": 8, "primari": 8, "compon": 8, "manner": 8, "For": 8, "work": [8, 9], "capabl": 8, "taskiq_redi": 8, "could": 8, "export": 8, "silverback_broker_class": 8, "listqueuebrok": 8, "silverback_broker_kwarg": 8, "queue_nam": 8, "url": 8, "redi": 8, "127": 8, "1": 8, "6379": 8, "alchemi": [8, 9], "And": 8, "subprocess": 8, "w": 8, "all": 8, "todo": 8, "backtest": 8, "packag": [8, 9], "deploy": 8, "deploi": 9, "your": 9, "respond": 9, "librari": 9, "leverag": 9, "framework": 9, "ecosystem": 9, "plugin": 9, "simpl": 9, "yet": 9, "sophist": 9, "excel": 9, "case": 9, "involv": 9, "continu": 9, "monitor": 9, "newli": 9, "confirm": 9, "log": 9, "pool": 9, "creation": 9, "deposit": 9, "liquid": 9, "measur": 9, "trade": 9, "activ": 9, "popular": 9, "larg": 9, "swap": 9, "group": 9, "read": 9, "userguid": 9, "learn": 9, "python3": 9, "version": 9, "10": 9, "greater": 9, "dev": 9, "reli": 9, "heavili": 9, "worth": 9, "familar": 9, "yourself": 9, "releas": 9, "clone": 9, "repositori": 9, "most": 9, "date": 9, "git": 9, "http": 9, "github": 9, "com": 9, "apeworx": 9, "cd": 9, "setup": 9, "py": 9, "checkout": 9, "sdk": 9, "design": 9, "suggest": 9, "11": 9, "speed": 9, "pwd": 9, "home": 9, "haramb": 9, "tokenlist": 9, "imag": 9, "publish": 9, "consid": 9, "beta": 9, "break": 9, "occur": 9, "comment": 9, "question": 9, "critic": 9, "pull": 9, "request": 9, "welcom": 9}, "objects": {"silverback": [[2, 0, 0, "-", "application"], [3, 0, 0, "-", "exceptions"], [4, 0, 0, "-", "middlewares"], [5, 0, 0, "-", "runner"], [6, 0, 0, "-", "subscriptions"], [7, 0, 0, "-", "utils"]], "silverback.application": [[2, 1, 1, "", "SilverbackApp"], [2, 1, 1, "", "SystemConfig"], [2, 1, 1, "", "TaskData"]], "silverback.application.SilverbackApp": [[2, 2, 1, "", "broker_task_decorator"], [2, 2, 1, "", "on_"], [2, 2, 1, "", "on_shutdown"], [2, 2, 1, "", "on_startup"], [2, 2, 1, "", "on_worker_shutdown"], [2, 2, 1, "", "on_worker_startup"]], "silverback.application.SystemConfig": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.application.TaskData": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.exceptions": [[3, 4, 1, "", "CircuitBreaker"], [3, 4, 1, "", "ContainerTypeMismatchError"], [3, 4, 1, "", "Halt"], [3, 4, 1, "", "ImportFromStringError"], [3, 4, 1, "", "InvalidContainerTypeError"], [3, 4, 1, "", "NoTasksAvailableError"], [3, 4, 1, "", "NoWebsocketAvailableError"], [3, 4, 1, "", "SilverbackException"], [3, 4, 1, "", "StartupFailure"]], "silverback.middlewares": [[4, 1, 1, "", "SilverbackMiddleware"]], "silverback.middlewares.SilverbackMiddleware": [[4, 2, 1, "", "post_execute"], [4, 2, 1, "", "pre_execute"], [4, 2, 1, "", "pre_send"]], "silverback.runner": [[5, 1, 1, "", "BaseRunner"], [5, 1, 1, "", "PollingRunner"], [5, 1, 1, "", "WebsocketRunner"]], "silverback.runner.BaseRunner": [[5, 2, 1, "", "run"]], "silverback.runner.WebsocketRunner": [[5, 2, 1, "", "run"]], "silverback.subscriptions": [[6, 1, 1, "", "SubscriptionType"]], "silverback.utils": [[7, 5, 1, "", "async_wrap_iter"], [7, 5, 1, "", "hexbytes_dict"]], "run": [[0, 6, 1, "cmdoption-run-account", "--account"], [0, 6, 1, "cmdoption-run-x", "--max-exceptions"], [0, 6, 1, "cmdoption-run-network", "--network"], [0, 6, 1, "cmdoption-run-recorder", "--recorder"], [0, 6, 1, "cmdoption-run-runner", "--runner"], [0, 6, 1, "cmdoption-run-v", "--verbosity"], [0, 6, 1, "cmdoption-run-v", "-v"], [0, 6, 1, "cmdoption-run-x", "-x"], [0, 6, 1, "cmdoption-run-arg-PATH", "PATH"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception", "5": "py:function", "6": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"], "6": ["std", "cmdoption", "program option"]}, "titleterms": {"run": [0, 8], "silverback": [1, 2, 3, 4, 5, 6, 7, 8], "doc": 1, "user": 1, "guid": 1, "cli": 1, "refer": 1, "python": 1, "applic": [2, 8], "except": 3, "middlewar": 4, "runner": 5, "subscript": 6, "util": 7, "develop": [8, 9], "prerequisit": 8, "creat": 8, "an": 8, "new": 8, "block": 8, "event": 8, "log": 8, "startup": 8, "shutdown": 8, "worker": 8, "state": 8, "your": 8, "distribut": 8, "execut": 8, "test": 8, "deploi": 8, "platform": 8, "quick": 9, "start": 9, "document": 9, "depend": 9, "instal": 9, "via": 9, "pip": 9, "setuptool": 9, "usag": 9, "docker": 9}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"run": [[0, "run"], [0, "run"]], "Silverback Docs": [[1, "silverback-docs"]], "User Guides": [[1, null]], "CLI Reference": [[1, null]], "Python Reference": [[1, null]], "silverback.application": [[2, "silverback-application"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverback.middlewares": [[4, "silverback-middlewares"]], "silverback.runner": [[5, "silverback-runner"]], "silverback.subscriptions": [[6, "silverback-subscriptions"]], "silverback.utils": [[7, "module-silverback.utils"]], "Developing a Silverback Application": [[8, "developing-a-silverback-application"]], "Prerequisites": [[8, "prerequisites"]], "Creating an Application": [[8, "creating-an-application"]], "New Block Events": [[8, "new-block-events"]], "New Event Logs": [[8, "new-event-logs"]], "Startup and Shutdown": [[8, "startup-and-shutdown"]], "Worker Events": [[8, "worker-events"]], "Worker State": [[8, "worker-state"]], "Application Events": [[8, "application-events"]], "Running your Application": [[8, "running-your-application"]], "Distributed Execution": [[8, "distributed-execution"]], "Testing your Application": [[8, "testing-your-application"]], "Deploying to the Silverback Platform": [[8, "deploying-to-the-silverback-platform"]], "Quick Start": [[9, "quick-start"]], "Documentation": [[9, "documentation"]], "Dependencies": [[9, "dependencies"]], "Installation": [[9, "installation"]], "via pip": [[9, "via-pip"]], "via setuptools": [[9, "via-setuptools"]], "Quick Usage": [[9, "quick-usage"]], "Docker Usage": [[9, "docker-usage"]], "Development": [[9, "development"]]}, "indexentries": {"--account": [[0, "cmdoption-run-account"]], "--max-exceptions": [[0, "cmdoption-run-x"]], "--network": [[0, "cmdoption-run-network"]], "--recorder": [[0, "cmdoption-run-recorder"]], "--runner": [[0, "cmdoption-run-runner"]], "--verbosity": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-v": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-x": [[0, "cmdoption-run-x"]], "path": [[0, "cmdoption-run-arg-PATH"]], "run command line option": [[0, "cmdoption-run-0"], [0, "cmdoption-run-account"], [0, "cmdoption-run-arg-PATH"], [0, "cmdoption-run-network"], [0, "cmdoption-run-recorder"], [0, "cmdoption-run-runner"], [0, "cmdoption-run-v"], [0, "cmdoption-run-x"]], "silverbackapp (class in silverback.application)": [[2, "silverback.application.SilverbackApp"]], "systemconfig (class in silverback.application)": [[2, "silverback.application.SystemConfig"]], "taskdata (class in silverback.application)": [[2, "silverback.application.TaskData"]], "broker_task_decorator() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.broker_task_decorator"]], "model_computed_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_computed_fields"]], "model_computed_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_computed_fields"]], "model_config (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_config"]], "model_config (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_config"]], "model_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_fields"]], "model_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_fields"]], "module": [[2, "module-silverback.application"], [3, "module-silverback.exceptions"], [4, "module-silverback.middlewares"], [5, "module-silverback.runner"], [6, "module-silverback.subscriptions"], [7, "module-silverback.utils"]], "on_() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_"]], "on_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_shutdown"]], "on_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_startup"]], "on_worker_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_shutdown"]], "on_worker_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_startup"]], "silverback.application": [[2, "module-silverback.application"]], "circuitbreaker": [[3, "silverback.exceptions.CircuitBreaker"]], "containertypemismatcherror": [[3, "silverback.exceptions.ContainerTypeMismatchError"]], "halt": [[3, "silverback.exceptions.Halt"]], "importfromstringerror": [[3, "silverback.exceptions.ImportFromStringError"]], "invalidcontainertypeerror": [[3, "silverback.exceptions.InvalidContainerTypeError"]], "notasksavailableerror": [[3, "silverback.exceptions.NoTasksAvailableError"]], "nowebsocketavailableerror": [[3, "silverback.exceptions.NoWebsocketAvailableError"]], "silverbackexception": [[3, "silverback.exceptions.SilverbackException"]], "startupfailure": [[3, "silverback.exceptions.StartupFailure"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverbackmiddleware (class in silverback.middlewares)": [[4, "silverback.middlewares.SilverbackMiddleware"]], "post_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.post_execute"]], "pre_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_execute"]], "pre_send() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_send"]], "silverback.middlewares": [[4, "module-silverback.middlewares"]], "baserunner (class in silverback.runner)": [[5, "silverback.runner.BaseRunner"]], "pollingrunner (class in silverback.runner)": [[5, "silverback.runner.PollingRunner"]], "websocketrunner (class in silverback.runner)": [[5, "silverback.runner.WebsocketRunner"]], "run() (silverback.runner.baserunner method)": [[5, "silverback.runner.BaseRunner.run"]], "run() (silverback.runner.websocketrunner method)": [[5, "silverback.runner.WebsocketRunner.run"]], "silverback.runner": [[5, "module-silverback.runner"]], "subscriptiontype (class in silverback.subscriptions)": [[6, "silverback.subscriptions.SubscriptionType"]], "silverback.subscriptions": [[6, "module-silverback.subscriptions"]], "async_wrap_iter() (in module silverback.utils)": [[7, "silverback.utils.async_wrap_iter"]], "hexbytes_dict() (in module silverback.utils)": [[7, "silverback.utils.hexbytes_dict"]], "silverback.utils": [[7, "module-silverback.utils"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["commands/run", "index", "methoddocs/application", "methoddocs/exceptions", "methoddocs/middlewares", "methoddocs/runner", "methoddocs/subscriptions", "methoddocs/utils", "userguides/development", "userguides/quickstart"], "filenames": ["commands/run.rst", "index.md", "methoddocs/application.md", "methoddocs/exceptions.md", "methoddocs/middlewares.md", "methoddocs/runner.md", "methoddocs/subscriptions.md", "methoddocs/utils.md", "userguides/development.md", "userguides/quickstart.md"], "titles": ["run", "Silverback Docs", "silverback.application", "silverback.exceptions", "silverback.middlewares", "silverback.runner", "silverback.subscriptions", "silverback.utils", "Developing a Silverback Application", "Quick Start"], "terms": {"silverback": [0, 9], "applic": [0, 1, 3, 5, 9], "client": [0, 4, 5, 8], "option": [0, 8, 9], "path": 0, "v": 0, "verbos": 0, "lvl": 0, "One": 0, "error": [0, 2, 8, 9], "warn": 0, "success": 0, "info": [0, 9], "debug": 0, "network": [0, 5, 8, 9], "overrid": [0, 2], "default": [0, 2, 8, 9], "provid": [0, 5, 9], "see": [0, 9], "ap": [0, 8, 9], "list": [0, 2, 9], "mainnet": [0, 8, 9], "node": [0, 6], "ethereum": [0, 8, 9], "sepolia": [0, 8], "holeski": 0, "local": [0, 8], "test": 0, "account": [0, 8, 9], "runner": [0, 1, 9], "runner_class": 0, "an": [0, 2, 3, 5, 6, 7, 9], "import": [0, 2, 8], "str": [0, 2, 3], "format": 0, "modul": [0, 2, 4, 5, 6], "customrunn": 0, "record": [0, 2, 5, 8], "string": [0, 7], "customrecord": 0, "x": 0, "max": 0, "except": [0, 1, 5, 9], "max_except": [0, 5], "argument": 0, "requir": [0, 2, 8, 9], "quick": 1, "start": [1, 2, 8], "develop": 1, "run": [1, 5, 9], "middlewar": 1, "subscript": 1, "util": 1, "The": [2, 4, 5, 6, 8, 9], "contain": [2, 3, 4, 5, 6, 9], "high": [2, 8], "level": 2, "implement": [2, 5, 6], "user": [2, 3], "": [2, 4, 8, 9], "meant": 2, "us": [2, 5, 6, 8, 9], "expos": 2, "method": [2, 5, 6, 8], "handler": [2, 8], "other": [2, 8], "function": [2, 8, 9], "class": [2, 4, 5, 6, 8], "silverbackapp": [2, 5, 8], "set": [2, 8], "none": [2, 5, 8], "base": [2, 3, 4, 5, 6], "manageraccessmixin": [2, 4, 5], "singleton": 2, "must": [2, 8, 9], "initi": [2, 8], "prior": 2, "usag": 2, "exampl": [2, 8, 9], "from": [2, 8, 9], "app": [2, 5, 8, 9], "connect": [2, 5, 6, 8], "ha": [2, 8], "been": [2, 8], "can": [2, 8, 9], "call": [2, 4, 9], "broker": [2, 4, 5, 8, 9], "e": 2, "g": 2, "on_": [2, 8], "broker_task_decor": 2, "task_typ": [2, 3], "tasktyp": [2, 3], "blockcontain": 2, "contractev": 2, "callabl": 2, "asynctaskiqdecoratedtask": 2, "dynam": 2, "creat": [2, 3, 9], "new": [2, 9], "task": [2, 4, 5, 8, 9], "handl": [2, 8, 9], "paramet": [2, 4, 8], "type": [2, 8, 9], "event": [2, 5, 9], "sourc": 2, "watch": 2, "return": [2, 4, 8], "A": 2, "wrapper": 2, "regist": 2, "rais": [2, 5, 8], "containertypemismatcherror": [2, 3], "If": [2, 5, 8, 9], "i": [2, 4, 8, 9], "mismatch": 2, "between": 2, "should": [2, 8, 9], "new_block_timeout": 2, "int": [2, 5, 7], "start_block": [2, 8], "block": [2, 7, 9], "timeout": 2, "accept": 2, "whatev": 2, "ar": [2, 5, 8, 9], "poll": 2, "number": 2, "process": [2, 4, 5, 8], "latest": [2, 9], "invalidcontainertypeerror": [2, 3], "configur": [2, 5, 8, 9], "on_shutdown": [2, 8], "code": 2, "execut": [2, 4, 5, 9], "one": [2, 7, 8, 9], "worker": [2, 4], "shutdown": [2, 3], "def": [2, 8], "do_something_on_shutdown": 2, "final": [2, 8, 9], "state": [2, 9], "on_startup": [2, 8], "upon": [2, 8], "startup": [2, 5], "restart": 2, "after": [2, 4], "do_something_on_startup": 2, "startup_st": [2, 8], "reprocess": 2, "miss": [2, 8], "on_worker_shutdown": [2, 8], "everi": [2, 8], "updat": [2, 8, 9], "some": [2, 8, 9], "extern": 2, "servic": 2, "perhap": 2, "inform": [2, 9], "on_worker_startup": [2, 8], "provis": [2, 8], "resourc": [2, 8], "add": [2, 4, 8], "thing": [2, 8, 9], "systemconfig": 2, "sdk_version": 2, "basemodel": 2, "model_computed_field": 2, "classvar": 2, "dict": [2, 7], "computedfieldinfo": 2, "dictionari": [2, 7], "comput": [2, 8], "field": 2, "name": [2, 8, 9], "correspond": 2, "object": 2, "model_config": 2, "configdict": 2, "model": 2, "conform": 2, "pydant": 2, "config": 2, "model_field": 2, "fieldinfo": 2, "annot": [2, 8], "true": 2, "metadata": 2, "about": [2, 9], "defin": [2, 8], "map": 2, "thi": [2, 4, 8, 9], "replac": 2, "__fields__": 2, "v1": 2, "taskdata": 2, "label": 2, "ani": [2, 3, 7, 8], "circuitbreak": 3, "messag": [3, 4, 8], "halt": 3, "custom": 3, "trigger": [3, 5, 8], "silverbackexcept": 3, "importfromstringerror": 3, "notasksavailableerror": [3, 5], "nowebsocketavailableerror": 3, "apeexcept": 3, "runtim": 3, "fault": 3, "startupfailur": [3, 5], "intend": 4, "improv": 4, "usabl": 4, "whole": 4, "integr": 4, "platform": [4, 9], "well": [4, 8, 9], "silverbackmiddlewar": 4, "arg": [4, 5], "kwarg": [4, 5], "taskiqmiddlewar": 4, "post_execut": 4, "taskiqmessag": 4, "result": [4, 8], "taskiqresult": 4, "hook": [4, 8], "complet": [4, 8], "side": 4, "It": [4, 8, 9], "incom": 4, "current": 4, "pre_execut": 4, "befor": [4, 8], "which": [4, 8], "mean": [4, 9], "pars": 4, "taskiq": [4, 8], "modifi": 4, "pre_send": 4, "send": 4, "right": 4, "sent": 4, "varieti": 5, "differ": 5, "scenario": 5, "baserunn": 5, "3": [5, 9], "baserecord": 5, "abc": 5, "async": 5, "assembl": 5, "Will": 5, "listen": [5, 9], "against": [5, 9], "context": [5, 8], "them": 5, "kick": 5, "over": 5, "wa": [5, 8], "dure": [5, 8], "pollingrunn": 5, "singl": 5, "live": [5, 9], "basic": 5, "memori": [5, 8, 9], "queue": [5, 6, 8], "websocketrunn": 5, "websocket": [5, 6, 9], "rpc": 6, "via": [6, 8], "eth_subscrib": 6, "subscriptiontyp": 6, "valu": [6, 7], "enum": 6, "enumer": 6, "async_wrap_it": 7, "iter": 7, "asynciter": 7, "wrap": 7, "asynchron": [7, 8], "hexbytes_dict": 7, "data": [7, 8, 9], "recurse_count": 7, "0": [7, 8], "convert": 7, "hex": 7, "flat": 7, "hexbyt": 7, "In": [8, 9], "guid": 8, "we": [8, 9], "go": [8, 9], "show": 8, "you": [8, 9], "more": [8, 9], "detail": 8, "how": [8, 9], "build": 8, "have": [8, 9], "python": [8, 9], "project": [8, 9], "instal": 8, "pip": 8, "easi": 8, "do": [8, 9], "so": [8, 9], "through": 8, "up": 8, "each": 8, "time": 8, "encount": 8, "specif": 8, "emit": 8, "make": [8, 9], "bot": [8, 9], "order": [8, 9], "perform": 8, "autom": [8, 9], "necessari": 8, "chain": [8, 9], "interact": 8, "howev": 8, "won": 8, "t": 8, "veri": 8, "where": 8, "ad": 8, "let": [8, 9], "u": 8, "specifi": 8, "our": 8, "To": [8, 9], "follow": [8, 9], "handle_new_block": 8, "insid": 8, "logic": 8, "want": [8, 9], "detect": 8, "serializ": 8, "structur": 8, "store": 8, "databas": 8, "trackabl": 8, "metric": 8, "get": [8, 9], "captur": 8, "failur": 8, "similarli": 8, "contract": [8, 9], "token": [8, 9], "address": [8, 9], "here": 8, "transfer": 8, "handle_token_transfer_ev": 8, "again": 8, "heavier": 8, "load": 8, "like": [8, 9], "handle_on_worker_startup": 8, "db": 8, "etc": 8, "handle_on_worker_shutdown": 8, "cleanup": 8, "close": 8, "cleanli": 8, "come": 8, "note": 8, "ensur": 8, "multipl": 8, "properli": [8, 9], "telegram": [8, 9], "api": [8, 9], "sql": 8, "nosql": 8, "someth": 8, "els": 8, "2": 8, "These": 8, "move": 8, "clariti": 8, "variabl": 8, "also": 8, "made": 8, "avail": 8, "quantiti": 8, "maintain": 8, "its": 8, "own": [8, 9], "instanc": 8, "access": 8, "depend": 8, "taskiqdepend": 8, "block_handl": 8, "onc": 8, "mai": [8, 9], "histor": 8, "sinc": 8, "action": 8, "handle_on_startup": 8, "process_histori": 8, "last_block_seen": 8, "last_block_process": 8, "handle_on_shutdown": 8, "chang": [8, 9], "behavior": [8, 9], "decor": 8, "signatur": 8, "now": 8, "onli": 8, "program": 8, "realli": 8, "abl": 8, "valid": 8, "doe": 8, "what": [8, 9], "expect": 8, "includ": [8, 9], "cli": 8, "command": [8, 9], "take": 8, "care": 8, "proper": [8, 9], "signer": 8, "testnet": 8, "my_bot": 8, "acct": 8, "enabl": [8, 9], "mode": 8, "might": [8, 9], "lead": 8, "transact": 8, "sender": 8, "would": 8, "done": 8, "had": 8, "sign": 8, "anyth": 8, "given": [8, 9], "rememb": 8, "lose": 8, "substat": 8, "amount": 8, "fund": 8, "product": 8, "alwai": 8, "throughli": 8, "everyth": 8, "job": 8, "share": 8, "volum": [8, 9], "environ": 8, "higher": 8, "rate": 8, "primari": 8, "compon": 8, "manner": 8, "For": 8, "work": [8, 9], "capabl": 8, "additon": 8, "highli": 8, "suggest": [8, 9], "backend": 8, "without": [8, 9], "suddenli": 8, "instead": 8, "actual": 8, "taskiq_redi": 8, "could": 8, "export": 8, "silverback_broker_class": 8, "listqueuebrok": 8, "silverback_broker_kwarg": 8, "queue_nam": 8, "url": 8, "redi": 8, "127": 8, "1": [8, 9], "6379": 8, "silverback_result_backend_class": 8, "redisasyncresultbackend": 8, "silverback_result_backend_uri": 8, "alchemi": [8, 9], "And": 8, "subprocess": 8, "w": 8, "all": 8, "todo": 8, "backtest": 8, "packag": [8, 9], "deploy": 8, "deploi": 9, "respond": 9, "librari": 9, "leverag": 9, "framework": 9, "ecosystem": 9, "plugin": 9, "simpl": 9, "yet": 9, "sophist": 9, "excel": 9, "case": 9, "involv": 9, "continu": 9, "monitor": 9, "newli": 9, "confirm": 9, "log": 9, "pool": 9, "creation": 9, "deposit": 9, "liquid": 9, "measur": 9, "trade": 9, "activ": 9, "popular": 9, "larg": 9, "swap": 9, "group": 9, "pleas": 9, "read": 9, "userguid": 9, "python3": 9, "version": 9, "10": 9, "greater": 9, "dev": 9, "reli": 9, "heavili": 9, "worth": 9, "familar": 9, "yourself": 9, "virtual": 9, "choos": 9, "releas": 9, "clone": 9, "repositori": 9, "most": 9, "date": 9, "git": 9, "http": 9, "github": 9, "com": 9, "apeworx": 9, "cd": 9, "setup": 9, "py": 9, "checkout": 9, "Be": 9, "sure": 9, "usdc": 9, "yfi": 9, "sdk": 9, "learn": 9, "visit": 9, "pwd": 9, "home": 9, "haramb": 9, "tokenlist": 9, "imag": 9, "publish": 9, "11": 9, "fail": 9, "fulli": 9, "common": 9, "issu": 9, "when": 9, "stem": 9, "unlock": 9, "desir": 9, "support": 9, "host": 9, "need": 9, "kei": 9, "attempt": 9, "suppli": 9, "traceback": 9, "recent": 9, "last": 9, "ape_alchemi": 9, "missingprojectkeyerror": 9, "web3_alchemy_project_id": 9, "web3_alchemy_api_kei": 9, "web3_ethereum_mainnet_alchemy_project_id": 9, "web3_ethereum_mainnet_alchemy_api_kei": 9, "dashboard": 9, "copi": 9, "anoth": 9, "look": 9, "interfac": 9, "symbol": 9, "both": 9, "give": 9, "hidden": 9, "folder": 9, "mount": 9, "flag": 9, "1inch": 9, "eth": 9, "readm": 9, "check": 9, "exist": 9, "yearn": 9, "financ": 9, "id": 9, "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93": 9, "decim": 9, "18": 9, "circl": 9, "usd": 9, "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 9, "6": 9, "comment": 9, "out": 9, "two": 9, "exec_event1": 9, "exec_event2": 9, "under": 9, "prepar": 9, "break": 9, "occur": 9, "question": 9, "critic": 9, "pull": 9, "request": 9, "welcom": 9, "contribut": 9}, "objects": {"silverback": [[2, 0, 0, "-", "application"], [3, 0, 0, "-", "exceptions"], [4, 0, 0, "-", "middlewares"], [5, 0, 0, "-", "runner"], [6, 0, 0, "-", "subscriptions"], [7, 0, 0, "-", "utils"]], "silverback.application": [[2, 1, 1, "", "SilverbackApp"], [2, 1, 1, "", "SystemConfig"], [2, 1, 1, "", "TaskData"]], "silverback.application.SilverbackApp": [[2, 2, 1, "", "broker_task_decorator"], [2, 2, 1, "", "on_"], [2, 2, 1, "", "on_shutdown"], [2, 2, 1, "", "on_startup"], [2, 2, 1, "", "on_worker_shutdown"], [2, 2, 1, "", "on_worker_startup"]], "silverback.application.SystemConfig": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.application.TaskData": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.exceptions": [[3, 4, 1, "", "CircuitBreaker"], [3, 4, 1, "", "ContainerTypeMismatchError"], [3, 4, 1, "", "Halt"], [3, 4, 1, "", "ImportFromStringError"], [3, 4, 1, "", "InvalidContainerTypeError"], [3, 4, 1, "", "NoTasksAvailableError"], [3, 4, 1, "", "NoWebsocketAvailableError"], [3, 4, 1, "", "SilverbackException"], [3, 4, 1, "", "StartupFailure"]], "silverback.middlewares": [[4, 1, 1, "", "SilverbackMiddleware"]], "silverback.middlewares.SilverbackMiddleware": [[4, 2, 1, "", "post_execute"], [4, 2, 1, "", "pre_execute"], [4, 2, 1, "", "pre_send"]], "silverback.runner": [[5, 1, 1, "", "BaseRunner"], [5, 1, 1, "", "PollingRunner"], [5, 1, 1, "", "WebsocketRunner"]], "silverback.runner.BaseRunner": [[5, 2, 1, "", "run"]], "silverback.runner.WebsocketRunner": [[5, 2, 1, "", "run"]], "silverback.subscriptions": [[6, 1, 1, "", "SubscriptionType"]], "silverback.utils": [[7, 5, 1, "", "async_wrap_iter"], [7, 5, 1, "", "hexbytes_dict"]], "run": [[0, 6, 1, "cmdoption-run-account", "--account"], [0, 6, 1, "cmdoption-run-x", "--max-exceptions"], [0, 6, 1, "cmdoption-run-network", "--network"], [0, 6, 1, "cmdoption-run-recorder", "--recorder"], [0, 6, 1, "cmdoption-run-runner", "--runner"], [0, 6, 1, "cmdoption-run-v", "--verbosity"], [0, 6, 1, "cmdoption-run-v", "-v"], [0, 6, 1, "cmdoption-run-x", "-x"], [0, 6, 1, "cmdoption-run-arg-PATH", "PATH"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception", "5": "py:function", "6": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"], "6": ["std", "cmdoption", "program option"]}, "titleterms": {"run": [0, 8], "silverback": [1, 2, 3, 4, 5, 6, 7, 8], "doc": 1, "user": 1, "guid": 1, "cli": 1, "refer": 1, "python": 1, "applic": [2, 8], "except": 3, "middlewar": 4, "runner": 5, "subscript": 6, "util": 7, "develop": [8, 9], "prerequisit": 8, "creat": 8, "an": 8, "new": 8, "block": 8, "event": 8, "log": 8, "startup": 8, "shutdown": 8, "worker": 8, "state": 8, "your": [8, 9], "distribut": 8, "execut": 8, "test": 8, "deploi": 8, "platform": 8, "quick": 9, "start": 9, "document": 9, "depend": 9, "instal": 9, "via": 9, "pip": 9, "setuptool": 9, "usag": 9, "docker": 9, "set": 9, "up": 9, "environ": 9}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"run": [[0, "run"], [0, "run"]], "Silverback Docs": [[1, "silverback-docs"]], "User Guides": [[1, null]], "CLI Reference": [[1, null]], "Python Reference": [[1, null]], "silverback.application": [[2, "silverback-application"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverback.middlewares": [[4, "silverback-middlewares"]], "silverback.runner": [[5, "silverback-runner"]], "silverback.subscriptions": [[6, "silverback-subscriptions"]], "silverback.utils": [[7, "module-silverback.utils"]], "Developing a Silverback Application": [[8, "developing-a-silverback-application"]], "Prerequisites": [[8, "prerequisites"]], "Creating an Application": [[8, "creating-an-application"]], "New Block Events": [[8, "new-block-events"]], "New Event Logs": [[8, "new-event-logs"]], "Startup and Shutdown": [[8, "startup-and-shutdown"]], "Worker Events": [[8, "worker-events"]], "Worker State": [[8, "worker-state"]], "Application Events": [[8, "application-events"]], "Running your Application": [[8, "running-your-application"]], "Distributed Execution": [[8, "distributed-execution"]], "Testing your Application": [[8, "testing-your-application"]], "Deploying to the Silverback Platform": [[8, "deploying-to-the-silverback-platform"]], "Quick Start": [[9, "quick-start"]], "Documentation": [[9, "documentation"]], "Dependencies": [[9, "dependencies"]], "Installation": [[9, "installation"]], "via pip": [[9, "via-pip"]], "via setuptools": [[9, "via-setuptools"]], "Quick Usage": [[9, "quick-usage"]], "Docker Usage": [[9, "docker-usage"]], "Setting Up Your Environment": [[9, "setting-up-your-environment"]], "Development": [[9, "development"]]}, "indexentries": {"--account": [[0, "cmdoption-run-account"]], "--max-exceptions": [[0, "cmdoption-run-x"]], "--network": [[0, "cmdoption-run-network"]], "--recorder": [[0, "cmdoption-run-recorder"]], "--runner": [[0, "cmdoption-run-runner"]], "--verbosity": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-v": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-x": [[0, "cmdoption-run-x"]], "path": [[0, "cmdoption-run-arg-PATH"]], "run command line option": [[0, "cmdoption-run-0"], [0, "cmdoption-run-account"], [0, "cmdoption-run-arg-PATH"], [0, "cmdoption-run-network"], [0, "cmdoption-run-recorder"], [0, "cmdoption-run-runner"], [0, "cmdoption-run-v"], [0, "cmdoption-run-x"]], "silverbackapp (class in silverback.application)": [[2, "silverback.application.SilverbackApp"]], "systemconfig (class in silverback.application)": [[2, "silverback.application.SystemConfig"]], "taskdata (class in silverback.application)": [[2, "silverback.application.TaskData"]], "broker_task_decorator() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.broker_task_decorator"]], "model_computed_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_computed_fields"]], "model_computed_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_computed_fields"]], "model_config (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_config"]], "model_config (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_config"]], "model_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_fields"]], "model_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_fields"]], "module": [[2, "module-silverback.application"], [3, "module-silverback.exceptions"], [4, "module-silverback.middlewares"], [5, "module-silverback.runner"], [6, "module-silverback.subscriptions"], [7, "module-silverback.utils"]], "on_() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_"]], "on_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_shutdown"]], "on_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_startup"]], "on_worker_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_shutdown"]], "on_worker_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_startup"]], "silverback.application": [[2, "module-silverback.application"]], "circuitbreaker": [[3, "silverback.exceptions.CircuitBreaker"]], "containertypemismatcherror": [[3, "silverback.exceptions.ContainerTypeMismatchError"]], "halt": [[3, "silverback.exceptions.Halt"]], "importfromstringerror": [[3, "silverback.exceptions.ImportFromStringError"]], "invalidcontainertypeerror": [[3, "silverback.exceptions.InvalidContainerTypeError"]], "notasksavailableerror": [[3, "silverback.exceptions.NoTasksAvailableError"]], "nowebsocketavailableerror": [[3, "silverback.exceptions.NoWebsocketAvailableError"]], "silverbackexception": [[3, "silverback.exceptions.SilverbackException"]], "startupfailure": [[3, "silverback.exceptions.StartupFailure"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverbackmiddleware (class in silverback.middlewares)": [[4, "silverback.middlewares.SilverbackMiddleware"]], "post_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.post_execute"]], "pre_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_execute"]], "pre_send() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_send"]], "silverback.middlewares": [[4, "module-silverback.middlewares"]], "baserunner (class in silverback.runner)": [[5, "silverback.runner.BaseRunner"]], "pollingrunner (class in silverback.runner)": [[5, "silverback.runner.PollingRunner"]], "websocketrunner (class in silverback.runner)": [[5, "silverback.runner.WebsocketRunner"]], "run() (silverback.runner.baserunner method)": [[5, "silverback.runner.BaseRunner.run"]], "run() (silverback.runner.websocketrunner method)": [[5, "silverback.runner.WebsocketRunner.run"]], "silverback.runner": [[5, "module-silverback.runner"]], "subscriptiontype (class in silverback.subscriptions)": [[6, "silverback.subscriptions.SubscriptionType"]], "silverback.subscriptions": [[6, "module-silverback.subscriptions"]], "async_wrap_iter() (in module silverback.utils)": [[7, "silverback.utils.async_wrap_iter"]], "hexbytes_dict() (in module silverback.utils)": [[7, "silverback.utils.hexbytes_dict"]], "silverback.utils": [[7, "module-silverback.utils"]]}}) \ No newline at end of file diff --git a/stable/userguides/development.html b/stable/userguides/development.html index 019db1f4..ce880197 100644 --- a/stable/userguides/development.html +++ b/stable/userguides/development.html @@ -50,6 +50,7 @@ + @@ -260,17 +261,27 @@

Running your Application# Log what the transaction *would* have done, had a signer been enabled -
If you configure your application to use a signer, and that signer signs anything given to it, remember that you can lose substational amounts of funds if you deploy this to a production network.
-Always test your applications throughly before deploying.
-
+
+

Note

+

If you configure your application to use a signer, and that signer signs anything given to it, remember that you can lose substational amounts of funds if you deploy this to a production network. +Always test your applications throughly before deploying.

Distributed Execution

-

Using only the silverback run ... command in a defualt configuration executes everything in one process and the job queue is completely in-memory with a shared state. In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate.

+

Using only the silverback run ... command in a default configuration executes everything in one process and the job queue is completely in-memory with a shared state. +In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate.

The primary components are the client and workers. The client handles Silverback events (blocks and contract event logs) and creates jobs for the workers to process in an asynchronous manner.

-

For this to work, you must configure a TaskIQ broker capable of distributed processing. For instance, with taskiq_redis you could do something like this for the client:

+

For this to work, you must configure a TaskIQ broker capable of distributed processing. +Additonally, it is highly suggested you should also configure a TaskIQ result backend in order to process and store the results of executing tasks.

+
+

Note

+

Without configuring a result backend, Silverback may not work as expected since your tasks will now suddenly return None instead of the actual result.

+
+

For instance, with taskiq_redis you could do something like this for the client:

export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker"
 export SILVERBACK_BROKER_KWARGS='{"queue_name": "taskiq", "url": "redis://127.0.0.1:6379"}'
+export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend"
+export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379"
 
 silverback run "example:app" --network :mainnet:alchemy
 
@@ -278,6 +289,8 @@

Distributed ExecutionAnd then the worker process with 2 worker subprocesses:

Dependencies

@@ -152,6 +154,10 @@

Dependencies

Installation

Silverback relies heavily on the Ape development framework, so it’s worth it to familarize yourself with how to install Ape and it’s plugins using the Ape installation userguide.

+
+

Note

+

It is suggested that you use a virtual environment of your choosing, and then install the Silverback package via one of the following options.

+

via pip

You can install the latest release via pip:

@@ -172,24 +178,83 @@

via setuptools<

Quick Usage

Checkout the example to see how to use the library.

-

To run your bot against a live network, this SDK includes a simple runner you can use via:

+
+

Note

+

The example makes use of the Ape Tokens plugin. +Be sure to properly configure your environment for the USDC and YFI tokens on Ethereum mainnet.

+
+

To run your bot against a live network, this SDK includes a simple runner command you can use via:

$ silverback run "example:app" --network :mainnet:alchemy
 
-

NOTE: The example is designed to work with Python 3.10+, and we suggest using 3.11+ for speed.

+
+

Note

+

This runner uses an in-memory task broker by default. +If you want to learn more about what that means, please visit the development userguide.

+

Docker Usage

-
$ docker run --volume $PWD:/home/harambe/project --volume ~/.tokenlists:/home/harambe/.tokenlists apeworx/silverback:latest run "example:app" --network :mainnet:alchemy
+
$ docker run --volume $PWD:/home/harambe/project --volume ~/.tokenlists:/home/harambe/.tokenlists apeworx/silverback:latest run "example:app" --network :mainnet
+
+
+
+

Note

+

The Docker image we publish uses Python 3.11.

+
+
+
+

Setting Up Your Environment

+

Running the Quick Usage and Docker Usage with the provided example will fail if you do not have a fully-configured environment. +Most common issues when using the SDK stem from the proper configuration of Ape plugins to unlock the behavior you desire.

+

You should use a provider that supports websockets to run silverback. +If you want to use a hosted provider with websocket support like Alchemy to run this example, you will need a Alchemy API key for Ethereum mainnet. +If you attempt to run the Docker Usage command without supplying this key, you will get the following error:

+
$ docker run --volume $PWD:/home/harambe/project --volume ~/.tokenlists:/home/harambe/.tokenlists apeworx/silverback:latest run "example:app" --network :mainnet:alchemy
+Traceback (most recent call last):
+  ...
+ape_alchemy.exceptions.MissingProjectKeyError: Must set one of $WEB3_ALCHEMY_PROJECT_ID, $WEB3_ALCHEMY_API_KEY, $WEB3_ETHEREUM_MAINNET_ALCHEMY_PROJECT_ID, $WEB3_ETHEREUM_MAINNET_ALCHEMY_API_KEY.
 
-

NOTE: The Docker image we publish uses Python 3.11

+

Go to Alchemy, create an account, then create an application in their dashboard, and copy the API Key.

+

Another requirement for the command from Docker Usage to run the given example is that it uses ape-tokens plugin to look up token interfaces by symbol. +In order for this to work, you should have installed and configured that plugin using a token list that includes both YFI and USDC on Ethereum mainnet. +Doing this will give you a ~/.tokenlists hidden folder in your home folder that you must mount into the docker container with the following flag:

+
... --volume ~/.tokenlists:/home/harambe/.tokenlists ...
+
+
+
+

Note

+

It is suggested to install the 1inch tokenlist via ape tokens install tokens.1inch.eth. +See the ape-tokens README for more information.

+
+

To check that both of the tokens exist in your configured tokenlist, you can execute this command:

+
$ ape tokens token-info YFI
+      Symbol: YFI
+        Name: yearn.finance
+    Chain ID: 1
+     Address: 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
+    Decimals: 18
+
+$ ape tokens token-info USDC
+      Symbol: USDC
+        Name: Circle USD
+    Chain ID: 1
+     Address: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
+    Decimals: 6
+
+
+
+

Note

+

If you want, you can comment out the two functions exec_event1 and exec_event2 that handle the contract log events from these contracts if you do not have the configured tokenlist, then your command should work.

+

Development

-

This project is in development and should be considered a beta. +

This project is under active development in preparation of the release of the Silverback Platform. Things might not be in their final state and breaking changes may occur. Comments, questions, criticisms and pull requests are welcomed.

+

See Contributing for more information.

diff --git a/v0.5.3/.buildinfo b/v0.5.3/.buildinfo new file mode 100644 index 00000000..dd6f9865 --- /dev/null +++ b/v0.5.3/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 99fc6aff81c34ee67384ad25a009edab +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/v0.5.3/.doctrees/commands/run.doctree b/v0.5.3/.doctrees/commands/run.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b278f4c6b1013c2cf3db2a689bd59e8bc09bd2c3 GIT binary patch literal 12716 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

rpmpypX$8ol_4#Nboez+d)>kK@b@(`KvwLlN zI1_Tfxv5+Bkf?R@Nq-nd8dD%wY`DW|A+Z2Qnd(d_Hx{$DB!?5XmH=3gqNn9a|YE zp^3RMKd(s5BT;%}VR{%7vIrK%Q;t4@MKVMdbZ|nsKpC3Q2Jn9>FKRVH4Pin3?mNKC z_fJ!CUgRiZ=a2A-wsp>w*QX{+QpI&%BvS^5;}KcAzt^M(C?N-4#VyB#k)uf3b)RN! zkfQyQl~JcOM2l<@~ln*^61OP$lXm>#X6Yi)L%V@nb`M-0-U{#bf26H>pB zx@AlM4099n=lY%<$|jZ;_yd5|p#%K;sgaXZ3q*T70WHwt4j!Au6faK?T|%aKY3i1b zOQr}>86WGMDL$GSIdj1j-q;&{A1?01@0B zlwuj2y&mqI6@QhQBuQB@7d3mehGKEvf29W|A?N*^TRt8vl*jwSZ>i>J>ty}zj_02z zqKUb2jV^CT--rQPR9}}K#DrAOrEb~MH|KB@^Jkf?vDm}1N}ddmI?qWQIMdTR!fXA;cPaPUp;Ue`>^Zn;D`kk^9m^mXI0lP2F+?Gh{F$v?Zcu zr3_7&mPm#sG!!Z$Awv@yiqEHBS@+OMP#~>@)9s^DA|jPqO(eVoEldN=_0dA^oEXp zV>}*2I;{48(nFL`N&O&o%a)S*9ybvwL0yl(J%;vsbDi!3(^C$PznIL|3ln_mh45U? z+0(HN^B6SI4a?S&(58s21UVskY!+9XnI5`?Tyc8pmXA4CEV?;gstfwx(mDNaN{xr4 zn&7cP8#X|H9)(5e9qHjnNa?MqTR!HLUbAzO4k^14rycG`ns<5J7X2fglfIrBF-b|k zA%gVb!?Jkc?(~2qA_0K2WwNee9Zaa6y7P`n7R?u z1P-whEO4-M7Pu`nMv^K7u{R}PFc{;psJ|~gLg;JmOyR%*0s~M zO5M|{dLp#M2U4TfV|yKI{EO5WOGurjFe3xZ5!k^N7?!0h-jg1%gv#Qb@f42Uo!IqA z;<_*j_fO#<^C9oJ3S%R}cRMHex6>#VGA$^KYbwG9mT9n!06c zs`xTD5vd8f&L(Ta*`(@3aLKA$JGLKJpownSk2aTx9SQBZL=VztlAiQHCS;N&sarng zOmc1{lhmB@sG&!$?VLllq()KFiQ}?#dITIoBedD$iu4dBWRFWzw;aJ98Ei#uZmM}K zLlfHEd`DJgsG(5yQb$nyZYNM+Wu1##&7aZRrViZE)Up*W7&NMO_U`ktGNQJ3pUq7~ z+Pl%#Q1=bqo^AP>v(K)q_dsfldg7+d+_$DiR6?RO&k1TPRTi*6Fb)rr-K|n$Z%z+M zLap?scuLNny|PM=zaJPe=AJKfPR-Ay$6=@qYl&F%39;0q(b)6MXVOEHkfNVV-Lf^$ zd^~FtTEi>8>PW-Co}rjO4qUOfQYv9(Hbj}M*xRvj+=C{%VI14+C-TWXWg>@S>60bt zfl0`Hi&D32abFv{cYg|5*;;K0A^n!lNqPepVWImG`SqTZ#6f3);ym-GgC~GGAWO}d?YO9Z@ZrRdS4`ppa z>j}kR9qEZb>I4et39i>Ye|jRm#`~%#bw@wYpxWt&73eFSz3p*;)(<`0M5KO*j&gK8 zn7=w-n=TiIj-V3yP_gcqg$gfDjaN%UY)p-=a1CLRMta9w_rKp5jqM$8NDoay#jrkg z%a&qzA~!LA#_Y-o=bn-2x>FmXlVgm)$Pj=@H|1KSe`;!!Bqja1K{Hm7UW~;i{2l3G zNl5r7r*1id@EO#(o)MHv$dA(VP(Ro?Cf}E} z2`wA%RmA9GRV7CGncJ~vj}8~b>A^Xagbh7e>05J#{Ik{-y#D+0<-R~&XIp=MBP$Ly zLw_}E6LU_6RfEov+_qAsa40u$7^f9T=3lsPj`T)z^}4ciqz?zi77q2{ux{$u;{OxS zdxz%c{~Wi7KZOv_D9`P#j7zjXan8`blF`lx?<-Na7Sh*sj`UpCCK7XdmUuO5ozuP4 zSU$3RzgK!#Lnw z=qc+|vD8QnGS)dN3-PGzrpv+{y4*t~7_}~ARx@*k#}z&v!Jz2W(h1M+9F5P(+Jx2# z_h)TFy9$b!9k~j_3`N(;ermu33KOFDquV*L;G3td3s^sqlJw_Uk*}4~yR$aYVu4pI z*>nQ`=PD{>Af)C6r6V&m(E`V9V;W~xrf1QbDVfI8l}0tvIR3$$vBcSQjvN8dM*zfI z$KT6JRm~XR<|ZO%tFFu1njOU&_KS~Doz~pIJx&2(6yr$OCHv<}+|F1xs(bHK+2z!` zrF0hogbuCW1zDTWEdJ}Pkw@q020XA zC0S{ydCNw*=(Rf)2ao!GRs#KXKl~=Fi>Jv`zB-y>Ce0{7^ofKyJ9dkyM^Vi`x zKm|-+z0wC@`f9DCtNNyVU@Uoka#rkW0`1S*gh`+b!lva_Mc*i7q-?krclXJ%v#GwI;=T zY7UP7s#hu{spR(X_ZjdNM)(U9;R&X>A^b`vd|)UR{kL=98OEdOe?!(LO!}u`eQzMz zYE+ZH%eq07rpPibQk_!Ctby!Qr%2tE>w21!9tQ6Bke|pv?<{aJ2 zVH2VjYtF{^TjmVkFi^PDD1`s7tk}{Be?!(L<{aUV-S5;nigDXi?hXnV4wMfUtCcd@ zy@38%z~|QQTE%t7clEebd12RL-W$E^B;I3yHz}oa*Fw%4+qHtj9lLrO z%~Pmtod2zk{-&nYEgTpZxU~vz)vJy(R4f-tjZp@HyS@vMT)Pxj?e%mSq07B=c{*L5 zL6`gK@@%?17Z<12Ts2lKAqlcx8LB!Xjbdq(heM6L1dY*nUdpZMzo=RL7qzedqK@=m z)T923y4HUY4EiquruA2&xnjIj839Z@%G&HpW}BqzCWGpqmJ2KhaL zzZVzbXV>v#8IChA<#C=ld4Pk>C75l>`AK}@KFAHNEY|ip!FOhwCl3`SfX}K^p1o_f zxnd|^u9UayJB^X%lFEpSv)+l!6F8Hs(LA{@kuQ%sP^CPMCElN{=SvGkFVKR~(kJdB zAnv|d_ZLg(pGI?GVQPv#buYgSB;Ewj+$-=)j@rE%w+7v7=-ND)M|f-X)+r3@6dX@T z@l9thhB{fpo#pDjoPL6?Ughs(>)!R3O-Tz1ms zRU7CH+G%kdSRP3W#8YP}!d&D3X~HQPK-hv54I%hiDrR#-ou zb?X?j*T4>HU=-9-4Qxr$K>tX!LI(`jQ8ji5;#`5mSE{1f2Tn(`uQ|(awl`6;bS``l zwl&0~{{|jaux(1(NGoS3*x0X$*PjhuSB-5<+?aQGY_P50Bat}+(xTeBB57OZnZ?02 zpGd;@K&#Em)3zA`=7ZGab?5qE1~cLXa|F&N6!;$}-uOObUk&rBD3Ai*N1QJe9O$n} zw>$~Dr43cXTIKVJf{o=#M;(BUO5K=uzD=;PQPOo^ZjJZci1GTTK?z*_j8x={!1W4{ z%i4UK08eiwef$4b`z>xr+Mhr(rTuqkc>PeSyaK_<-PNWtzTz z+WPFG@Xx|a&j;ICxDM^S02kGLP~8N&k1kmrZ0nWO);*X=Ra+4-g_pYywsVx`;uV;N zV_}LelN@a89GcDlSF5e{;dt8LS`i*-RSpie@@{Hn05*YwC^&ruu!J1HDx#cz-PvFR zx8Ym&*%$Z?MAi57J|VlqT}}3eX44=x+m(0oC7#>aOzk|g-|za$00!E%BZ~B1G5Q@iEFD?xYW&c7+dUF789FK@jZqm6zb-&tB?(98}(3ud*;n@Y^DF z{7IOV3PVq@J2r|s2(Z6K_ULobz54q6wqIMYUk78>J=|&`ddIs5H1EKF4B5OI%|Qul zvl%+r$`)#6H7sNX-rcbUe=1t?_T5*L0j)a;k|caTW$@!arjP&YY9BF=4F`sqjTz*SFMia|eR zu2xT5T&$5GsK)$hem#whNJxPSd({r;uuH^2X{f&1SK+`ky^qu>4o>NmeX z6S)73!2Rz8?td|G|0H;zemlYYPYK-L&%Ybq_?su;=m`g_Sa67%OUE6gRgOCM%({=o z@Ft$xT;X{|*a(v^If!%&9jNBZHMQ8hw_3S}d?Exb+$*4gnoID#Q_YuVn~QgHGcTAO zdBJRRDSSNDEbu$s*ZOPXsqW*^jsLlu!ynD%iobHf22QFu`D$Te*1eFS3i)c;etsjj zmljb}uc9k=qZ-d?d)cka8J#pJ`=wIWsNnH?NB~05!`JTl+ywq2C_GT`7q#p)|NL2I zvgTs!*G7N>F^@*`q~auCs=<-;P)Q;<+gx=cB3l%sxvgBhdj~f8Dm=bq7J--15{JEJ z-K)`b6G<#b%B4zvl)k8`*P5qRs>ShQIbRy$=7$>9BD!myOaYN0FXGf(R&~aP3NYK8 zdx+(mrz3brctm6lG#;uK>&o$No+%$t?*tl+pt(jqn}i30kQ6<6tbD@F4F#T`C7&Zj zA<(7qv4Tj)ESqP@j}eQiqeuorWIt*FyKEBP3k?||$=T+a{MS^zT63!X>SjMhHCGlYlapAR$X5>yfgh%4XCM?~lm743zzYs)K|S5NQ?9X+K=|(z zq|EYd?AWj8Aw17L5p+A128{6CAw)0mdKJW)J=$E>sFsFmg$YNYx7U3k-W_yb#MdTY zUrg7AqMjFxK&0h3BgQ=H4Do)o+N}Euw17x3(U)SU z6Ha~BToGP-dv{!Y_$%GG!AO%jI;%c0xgOrXqqY!j5G=QVk~&OycYxO_3 zZ%Puy{FG%`p)zi~>t`yha$Z>fjeq+~f9)T+fo7LRRXXL~twAFtAv4Vj|IE8lP`5&w z)8_oP;i(m>Xpd8mwrKmAe?$Yd~87xFpR6P8{)d{3pu2UTcpe!}PB3NI_X z@bOk#CBq%8r$aYL+Dp@h+iLE5?lz?;xIeEZ%)hKF!;)IwgL4lH>o?h z)T}JI_N<$xaQTw!@zeFzmcxByn(X|Itzo1_}Lo)YJ&zu#R39vwV8NG+9 za7MoYWZrkfcR&2#;m3T6m8O2d_x%j!)ko=$^RuD z0OwxLEvc-AFfu7c%IabV)kjEm`M;%_x9|hC zwj^*8(gqAPUE1Ax*lab88?Lbvc?GDxPaBaTZlk&jxt8tdaX7o~Mrox3FD5Mu?ky#e z4PD=GYeg{w*&o7tWbdg~h2`KMxAhs570R@vf7(BHgBb_6F{?DnJ;)eX)Uv$9VmG=; zVEY2gon~2SiPaF@mjw0-Hy3QNh7!{MBK(;`xprJX-AsJZBQXYcxU%Qbg%E~5aVwFM5yFq2ACqFwe0^bjAZzf!8 zr4s@xNDvVUhuBh!7fx07wv}FO#k=E`ofQ-GcQ=YgZ!WMr`r!7)%1L(+0x-xDAwLoU zc{h}-m{n}Xk?suZJK$>fn&zp}Spt>^IN&C{ByLhWxvrQubkl6fBRbin7OGCb*?tRa%x zl!z3c{h?Di0h0sbR@0WytRvV7d!z3>Gmc*O$opuE9ahI;Sf zHENf@=V53mz^0f1g;M0g`i~CYa-))$36c`&Jp{8CBol_aht6=XleMM!`FISmIW23F zI#qf$_Um z^!%7?F5zro*#s?=g%`Zm*T9skC`w_ zG2Pjd@P!$7;J&-6Dhg3Qs4eaG-1<9l8on34;@FEP;ooLu$O+GZd&vh|&Vu1t_-7by z5W(TiO>$Ax!!Z48Io!DQC#}CHt-sHA*Voow>GBoEUgflMcW=cS=jt$nzjSB%$E$Am z`3`PSh3rq4XWdqy9Axqu18xw;Z~B(Jaf2YRS0yTX?djWvp*Qfqr#<6_U2xZ@hp9k| zgmS@Rlmrf2>cz5lB~cFFITCEI?fRll<$Y_$isEDn}l>qB>M*^d)B$mM9&RvL=1Rhx8DsogZvu=|H6L^w!q&>;2r#BW6&SbVN0~P#JjDyhWKtX hrlX~10o^-UcnccZ40DOw$*&9^Pg!A>xc1fL^gnyHrE&lO literal 0 HcmV?d00001 diff --git a/v0.5.3/.doctrees/methoddocs/application.doctree b/v0.5.3/.doctrees/methoddocs/application.doctree new file mode 100644 index 0000000000000000000000000000000000000000..553df16562c5e03d791e054b6647b4286faf9141 GIT binary patch literal 108128 zcmeIb37i~Pbua9ZG`nWgZe-alFKA@XV#_Pz1Nn^rBHw|O(3i<5Xd9!Tf!scVZxG-{IbANt!3^M{*_TU;y_W^=qWl|X?t2b>eslh}N( zY=}N~E#}apTEiXjdb9oz+|^!}?D@2}rdTLBjp_PK&g;w7YL&uFy@nCf2v-;KRT@qA zY%y1@;v?QWOSuK{)|0O<>L1kAiZe%f>Rxv(H&00ocgQ_=Ux&NRyJgZXFF2Exda2}8 zCXbgZMLXU)^Ab7HYvb&y1($+)>vzUWk{8T`$ZQDr4FS1)m@ z$Q28{9= z0Pc2B+XeV{5&rGKznws?dx?8Bkc$4eW2$fH)h6$z<-ztlkNjFScFdc+jy_A`q0@<# z7(6&u5RDrk(gfR8%T?wb%|jFu@T>B+3Hlt5Cf`Obj1I4}P(_i(Ny5whm}pMgiKbha zGzfWOacPR?9r!?Lp2%NkGv`r*Pis9F&q6;+dFO;dk%GPXBWvn-Hzrx7z*)(tw`MU{ zs5HED#pth%ZS{!THC=1uXt48&6>vg4ci&kcLRYZnCa~HY@2X;~;J@CaCZpYpieOl& zMs+Ilu+b;=bz;9v&b%ZuT`oD9>-nFZlI1|+@rH7xQdw|5qc`5JL)TqUgTR@}?BEdD zal=^VI@Pgkbul;VOlABmnH@LW09L_8+a|A*moTR8>%nGv-3}#16{<$vLvF!6?w)K9 zhwjV0iTz8}nzOK{T$(G)r@`F?2As?pVAhj>y2pa_HtKrngLjQt&FIBrnQH!M79zb0 zC15Ip`8AfQ<*G-swWUP|NGleqwL|!NSfS(zzor!h|HlFTxB8;QATWVP6YU)tjzw^G zylE!*-_06=a>DC44h|I(7N5pE{dj#Qo?UvqCl-oRoQ$AFEmj-|+G7qEG_OP14~zD^ z%G1Kw0#wAg9N5ZP-dZs|pbnB&qlwqs979A3bg}6gpkI#%=&09^xjzn=@OHfc>IR=t z{I_Gm+WjBySBWqFg@&2?HDc3z0KI$w;oh$`iBxqt_)+)sDO*2#sGp*fJ=9cu|Nb_z zf9rVvNS}kY5CNS2wLZf-@apq|;V>8RN6SfrBt-gMJf zBs9I)-1M$M)4%5fDVlMyJ=PZ7FGX=KIWBfS%KG)M2A@{+vv$!b#~7ebwD1Xl|7tkC-`;!-)iMXgG}W?s`bku+NLDmsp;=a>BGL5uUy%g%7(~z^ zMGqZ^jP5^)tnqA(*$^aKiG)&UYX7OV6;o83Q#%nzyp@%NkxfRDS|*iD2x^5Sk~>*!SwZdAk3^X zv4o;v?}>`tBi1Hj6gyFQfNlG#TaSW*!F^w2Z=_xIO*dszPe>jHc%;w$wlX=8G&0Xbtzkwi_GH}f=r>GRh9w+*I{s{0jdD{Vt5QPpjkmd1R0 zV9Y@B_pRMe0i@)4{ZG~=+L+fPO{~lq(5lrzjV{Qj+Qvsjn=4Af(U!<2>tIq~C&b&M zTe)z#tr*rtXo*ybPI#{k(a9EwB*H>#)q@X7RXtHuTxacZ3`t#sLQPik_5Q55-XNmq zTkE&NU9^%sEAF#4VI2Z23xbtaXsAuoidhCebWwH?ND{Up>%=ST!Xuy;u|9l>T}~I~ z;g8r_%9KXSV*}L6F^t6v`rYI7y~i4Ch>9FX5z^3MRQi+!db(+ot>E@P0Z*>M%dF;9mR0{ zvYIe3{cs4=h=3U45i?mb(y%sy2pq$~ygs6Lir^zSnx?3ep?2cAD5)@yQtqvcItN7$ zcCUtjt}@(pO=;mJX=QEQO9&L!)`PM?Hfxu9GE7A@>J5Sjn|Gta!tV7Asj&M)`kUE% z(X`hMlyZMF`z`v(*L95F-KDZv^FQUSm9Mm_~%AlnvR5YfYdix(|NT z^!Z1U#M-e6zv!3sUU~+tLJ2^=&Z&*T4ay8UBmx5Vg4qd0U^Jv2M4NtpypTdj?? ztxB7XwW~u%f-G9QowSZ31<2wBm8soo7QntvgtiRr_Eu|;V`jr16iTVx9<9Q|JPErs^msNBG zh30dTcLBpzT~@|?)e*h{eKs>!uJE8;E(Z~J<(BKkJcZ@vOqCb<2{JBFlp`W_4?$-n zK|*5U$l*i2bZEyq#hn<={&8)iA@N@?2kGCA*wLLB}$;w6$vSEq|CTtFGTf(KM>-kF8C_ zNIFq@de!w`?Twr{)m088jp{nw85H9|UToDmY~Tv7TAXWbrfsEFG}ErS+5(t%S^M8M zm_n--H(Fb18%oPswTJ{#^s2=HYxh$CDOrP^u{P1hyzcc`n4#$`+FNONVjFF(D9J`! zSg)`SA_X==Ziwhso>*=x@k*I#$7#vP{*t(ESU4SjaEB2@ykkmBrcu3Rrrl*Z#Ht@T@xEm}z) z!WXSgScd?0>5L&rYi2ai)-BdZ%F{&4J_m9m=AO&6FJUlP)&R%auHdu^LUmnpE6O=A9B$vJ zbVI1pR4}HVa2T(P7>EXJxWlOdyCwiwYcaLtrRE#l0%{hvv4IsiZ|}xtFq-n{kSWjn>99Rw}_TCw7;X zPV=5hb{MEIC10|zcS0pX^DlZU5;YSh7?T~E3f=vF177LrS({UMQF|u;r|-Iq-2y2C z#$(epPkFIFoG6#ZsQX>_dx6QKK!LrGOoM_gQ8hxh)p4~wy5}O4R)5ePIGNA^Tl8#n z2Y%th=aLpESt!K8J%MsFBkRTv4!=^h!!fjT@$J@eu=S{-X{(aly7*=kwRvkL%;nZa z_NzR5u&2HLgq7n6Y)x7twn_*jh#wjOzischZC~0)MNfk6n&?&E&)ZwEZ4?r%Bv1XX zSeuB^^W_i%;NorvnnKYYwUF=Qd-i7AwYd|0AC?VV-{N=)vOep!ApwPWDVu@jNR!m(Wu*E4U zIDI*jI1)zD{>!4Z_bFhMOvx{{HW5R~Rs?{K4ZG>2z5aAm>a9jxo!Eq?Hp2F4Wwl}R zUA9WB(N4v;Sx1oq5kVGg<=KKw1Phpi8p*R0v(s+RXvIz!Wd|T%mhC#~;-S3kS5TMm z5q%E8<3Asjfw+{UTtP~~MDOmwXEF*BT|q0gtMd;-SPiHJ?d|IP3RNlevB+JWUkx=G zlz^k`5(K8E+SB>xsK};U`g=OrHB_a!^X9Knw3Ypv>;}}pI2NBvZyd8XQmtvWYn};X z3dBUXwV8fIf3#KeCxj3YVDSZdUEWsB-71na-BwLyM+IVRuT1a+`0=%YHiG^ErpAIT znm45hv{gNct2`-q;oPJOFegS`Z9>LuzLZlZCRHnv13dy&?Zh~DmM2zdn4(ziRM!^bW=7}f;gbD zEtB&>a;VGGU*uSVMsu|8dzW<>DbNuOv9N{kB5O0IP7#m~Ny=}sg|Kpvs#u56Hl#vU z!XwsJ+6GjjmCz2HqAi7nbp$Eklx!)y)7nHE6WqG9=)?Bb+MVeUZLai`kG3E_Zyiqx z1f>do_{wry(Z)b{O;0(9X^W;7p=>L)7!H1DVTt5NH6?K+|M^Ie)r%APR$E(BOSy)uxr zJM$uBS4N>CDv(;21W2S&Xe=fFXWE@P79yD70(IM)F|PA+m;Y-w! zn=!*Z)if1m56YhEBzy^bYNzav%}k}9$jz7v(=f^u{=)`b!e&enuznEDik0bm=#8&T z^S9Uq-?xI!xWTlIiS92aVEr0p0@5~!*h6}hxfHPc#?o4TVgsLfuCr$Pt=)Y z=WSFS_iY(bE@a*XH?2skF8EO!bBmHr+A-#eep&CqGi1z3z=dqM#R-0$SqNMwEdyYD2?2A*c)kAkJC*pLw%EDNn^2n%sLFK8exN2^me4rS{pMN zc}sSi+1N@$En4aQnsp#4pcXH0Om$Q<0roJpxD0jle_MMTGbetCLMheJUs&t6LPWHZ ztd92f1y#t98W0^RBP$P|7($<0S4Si9p;5`^Q0oe+qcJi`XrVg*4O0sZ3LzDoI*MFM z`BWqXrJx{(pQL>LpRt{CGDJ8*wX}uplvjr;3Q?fJ^9@CmTIY&r`t6kA4r>yN(@tGN zsL)QwWG7QuPprBI)W5%O4e9=`h!|#NMDH7SZ(AQxl3k~y_I%nxY5=! zjH*b4L>pBXTgQOYue4`mJadtt1bjXl=qe1Sm{r05#gJL_=)d zFpZ=(O{lB@54?srd%$U(Ld{tpC5n(1i8>O?uYTz~mcV*FCvn9hal}=h_ZUd%g1xE>Grn)Zqtq zk2}>`Zeg)8javfwJ=9s$eH1_YFp<>aCkAmutB1(=ihF zb$A1GQ+27nkUc@?qc!kl5Sm3{k*@5Zi;=6Sa;x~_h^vyT+2e(po1K-HM59Gn!2hro zyQ0gLT9)6j+}O9u>vMBO|7WK+;+!Y|R=9e!UR9Yoz0SNdQ=dn3gLL%@U9yIHo!kPx z^wuiaWKDx=ob(0@CEO*F#W}!bx{3{<_4V4^_%*mg7w_i;6SGdGQm$m>UCe+pb#=DZ z@P@DrKUhmAuchH_3#EjrU?XcG`vyh5x(}-KIl+WbVQ-kmPz9h|xpBPV4HR>w`Fd{N z0mSpT>}?gU6!+Fw92~)%&*mMva1PDT&AG-k zyIzl?XVu9Xb^{k4n8cmgpa@(V-0*H_W5rU<0baoiR-|LOMQ0MH_7Q#5s*^Lg5Q$fQ z|B6&Dh7TH>lsCDqaK{&NB|x`Qot$;)Iwu0_ffebvL|2}Oh*x`4o7EE6sTCFkP*;YO z)M1O0{0b`?^X@iC$-Kdr>bS9uI-C=;&LW*5DJc5dHmacWv3Y67TQgU{rP7daUY9sV zlK563pT%vibA=P|DSLytdaaz*pS)ECu>OI3ePJ=HrUtP;{-FTLP$}h##D9nQ7tnaA zN=#aRTC6(td^w8?b&+dW+&`Z+OLAU5Tgx6RU_RrrQ`D8s7pl3LBC#93`akV;E3xH{ zd27LPs<>HN+~Wz}F0@tJ^2tZJfMnV)QU z8!0F60CHw=|1(bCsDWwr;QRPRmtFyQ4p!!7L)Ft4UH!9F^>iQ$F^;27WuoBJ=6D+r z&XaC!p@_zMYq=T7x_r%T?CbHiL2@i)eIe?fMK5nsKIIKpmrAwViL6_gcZ>K3DYK?n zCIPj!x`4~#vJccDeX9V}dj4Dd%ofYDISJZr-~+_SoQjZ&fHDUmN*}E+;-K|G^iCXw zFQoM;P)~WbfTK;d_+Cc>y;`3MQpM+9@4tc#c}d<8~mMV=N}4HC$lqDImA>EyqTox9#;j7$OA@C}>XwC^H&vCu$SK9ng2Wxm5yFeyr9PKmlNK>y3m` zZn0c+%Fq>tWtEj$K8u5eaACFo3A3YKEns>!9B%_rbr!cCFXXspm@Qyr4R7_||MJUl z*X&}Y%Z7SY)@eQjK*$L4#_>Rsj%9E3gw>rYL7|wUHwpHe0Oc9ZDwtCqURGkd6LK?A@Q; z4@O1<8jxylwLV7-_94J}%|r!i&$PFCVga0>hvrSbe7w}CdpJ=E8c-!m0CwlSVIMO1 z!fyrylLc8#K%Y2XuAG=Cl+iT~F#%FmC7M{vzs%*13E1_^w+Z}2=XheVJdgJt`ZF6*z9 zt`urZjXN@{tB<10W=?UrVv*0$YL*C+LLYqA7;tI?&;D--3ga`KL~>O;DVN@LBxjpZZ9(9iIWK1I_o5 zstTowQtDpUF=6?jZgw19VJGNuKOWQYBRxnzUSfRlMkJ*|E-BK4Xk9~HZ%~OP%KTz_ zd=w9S@w%n*1`(|4r5%Jt2PiSWbz=JEmdr1`{7ZIj0W{?o?NR!AgFVaaSifN85U&+3 zC%YA6&-q2S2w-JZ4IHQZ7z}UIgB6%(4^2F%(jIycXnUyPm(9#Om=PyxS>UyNJUdr^ z@r#$TTqS@6@76=y%1lNX>PyvU8)NmaxYg7-tVakK3 z)H-wyf)wPCpSF%HU2zW$)DDQ}K=|1_=z|+L=F_!q>|a3cTQjiEi4e=g@TGKs^&g$(X6vr z024FN#lK?q1;4K2Y7xm?=#AOAVs73<(IA);$u7lZ`Sr(sSJsvw`m0c&NOx#VPt$B2 z7T*jZ`Vdl(uol+RA{nDxNi^nTsZd*lFvUeQJl~-Foh{6lNKhOW#Ww^$LqnW*PN>8# z!RHJ_ua}$;Di1kFV26_y*rB@4euI$oZh9!V4uM0uS!AApn8749DjVTR&I16nVx_wO z{i+<8gF)PVwPH03&Q+LOGQRfHSD5h7y`eb!ZTHooTx0SF;6A+6dT|oisU8dj9ebLU7P}VisI(C-iT;@`p;WK--+iz_agBo zCHAEQzz#hqWt~pR8WT??%Yua(7?hAeDy5$nlzNU3MJh@3Q~^Ya1C=NwExH3wj0?># zSX9bkUxW#XrOFQRHlbPKs%NaJK)>p)myVW5lko>6`c;K92MQm%$sB7BFJ6anDZVQT z6@#25wY9O+M~wJ7kL-@|Rd&DP_P@1TboivYY*>y#DgS0-Qx zRxM}PYClB`kW!#lYo_lPs6qk2$iEkugM8%B2D9AUG0AEJPg;O|CM+Ro*Xj8yM$Gv> z6g5(9g!QFCE^=V1!7c;;M5ojshk50&1ZLqmB2ydWb7+oaB}M=%=kS(hQ>a*}O>RMDLxg_5Mr- z?7U85PIv+Q`lPaoj@7cf&KL@N4gGkn`Q?rD<4xw5chZk{ znO_?8;|<0aPk;pcr;=*|$woeAIACkp`XYI^pn-7pP60(I!BxzL8JKL~dH(1{QRpMU z67JE1Ek)AE%(0$VE({8ykpd0|1(m3(MZdHKrjuBm`hUzEgi!oVVpG*fEa0;8nj}Qr zWPzf@=0qB)#>%Ion->NkCvc(UaTkD2-^6>bld{sVf>l)mFZbIJqokf;0>TZHtIWEj zH3$2^oiwrrt+R;!QNyZsohIt#{nNU=?jF2CuwO;@d7G#~*u^@JPoT$@QlZm?9Y%AI zB$IAdfF2mxkT3{LS(|QszLzk$^~r*Wr5_s0^O>Kj0T)Ufatt0Hgr!U z07QDkd=*^~0MCN`Rlvs~842$acjQURO9mIjE_;HA>-8puox=f2mKit9$XIkrWvFB1 z3~I0(i4=uX(KOdopru1%qiL;ZaL`_nCH{r)ni`?9)m#Ra%MDxaTIG0~&6g%v702Zk zj#VZ~PHnQZxBz!B&wJzLlTP)@Ng!!_VWBuaOPxe!4MnbJQKbWS zVo~LVI~$Ha8ovs-LZO8$alK{L3lCAg!$v;8I#3O1XBt(ihF!iFwW;#UBa)O2C&>r| z^apC)zS~ZHTC9mxX7;W>QIdWm-VL0Fmku#`yNF*yM#Pv!zZ3eZ7nxM=+WCMVt&V86o4Q>-tP8m9ui zq&z3U>|uY1?`Mk=welig|Ae=c>)5nZDcjv3a)bp%pjtx_Syd{_Zmkyuc^XL{7!=TP zM7cqcrWR=-m&A9Rfk?16fi zJpHnaP(FVGP9eU_{t0bF&rgvkp&d|FM2hS>@XZ&M{jLua4}*p~dsG{9qQq96qEt(h zTADI(rwLdiZYscS1@MpiZ4By~NXf_45QWdy-|3bDGHzWb$88k_Sz6za-K#jl{jje? zls1xR`3%xU;oeArqY+CF)yBTgrb4;WEVL|07?H9?w>1qMPCKD-zWDm_htI#{h-UBu zJXgs%POw3aHT4p_-6s)4oIDKt(*MCuatg6bYPYXk|53+$E@_TZPD3ei^}uk zbzG*i4eD%sQ6{pTqcb2+IFTvx$6##Zx|(5K4KmY8O=LwCXMrN9g6W%eS>ae!-20S2 zn6q^j+(C&YugZd47&qE6;D!aBMM3ytkwL-E=%!d+kX|R1KBU``2Ktb}$DarE=^<~` zdC3SM(!zu#pA)9B9=(AFKbvs#LMo_sH|e@K2w(yUoquSuUad^d6mXJafr6HF5d&&| zy`s#BUq&V9QW@Qliemt$;LBTC3U4BpkLuJg$V*Ucz?n#1dH$Uf>j(*=U@kBVe+?88 zNHS|~z446ErmapVA*?Jw!(?~>nh#B%KxcfjVOS>fMGn}Qrl)_cOyjB(Ow$tF5684c zw82b{GK)6w1wrBNr!~=Rxm1Ka_L<%QPoJM#2q$df2_nLSFC)rz?bjOegJ)5=5Fro& z`+}!OEk^py5A!UTQ!r{tqZFQIEa}x~J-w4#jd+1ZUnthfw7fej&EW}1>KgB%WAFJ0* z+@eZfO8~D}D4cMx5TM}Y=TvL5+Dh~DY*n?PMp8Q{5?ARRCfroE1uW~s=|myFfhofW zNxdRv0!w^I^?G$petQ?Hiu`;aKwpK=s#CL9)1sPR$OjNtZlLLatp=!hOLMIoFUe3;gCAt4c; zPqBP@qU)YS{cKmUtTLBBn_hv!(#oEs-e+$qJ~+h!;JWK?WBM!VCz=)k*`XCXdJWj@FRD;9#FH0 zjCn2Gc3Yr1xaB-epGgw*YC#gLcO!sP;p@EBNnF~AeF)&JFo;HsB9(dxdrlhS-1Ut{ z0=#T8RvI#etN2)SFe-#f?G($4BJgu9shYV`zB-Bekk6=Rp^%612tEtK_lAuGv7_N} zYzq7Y#z&zBGOiKvoD`r}otPz9ZjnIpKVoYKR^br1ih$$I;lzSm!9<#hQ1uHU02NWa z8$w0I(2)P^Py)*x%SnnLl!j7CH=yoq41E_ic4Ob_ruGqHLj}U!s@C%Kxl7d3*!P^e zw?W#yB!@vsV)+qqy6Xbpu`Y#R7sP-m6&TXupRw@?kYtw;#q6TT0eT#y$31wQV)x>C zlHEif_RwQD9@FerdVL-}ZsETN>6OQU{Sw|zvHkpcAAk1Zxv!JmfIlbMG@k5EdJqp{ zhv^{#tInoZ9xrzX-cHuN9x@4tOd-|~`3L!P>+Wy7r{mKP)Vo>T|5X`#Ij2RD)~LL^ z?jf4Y+!NCe=X6oHz(7&`QsC0gYHX$wp($8YN78B{lGo#QkGlnV(`;Fp9SzN!WB$|b zZP_$2VaBHt+ZLN6wgwY4JK)<(R&Kmt8?>(RG;E1ECpaSVD?q6xqlgdb>|nCmpTX0f z$-8MDuX;UFJ%ZZ*IO%n-$Aie;8^E$HIX!d5@ z-WIW*O9@ShV#2zs)ctev-249E?@@PHeehP3B#>um@^`%*{v+s~dk%Xa{n-|E5RZA% z2<^8V!XDTUnuWaUTZ!+-elabbc)&PLZdip)yX|%Vb7oJ{cK=CZu*UA_?RVEpnf<== zi95R_QD(4XfXqY*!xT9+gumQs7je0W#F#j5jJgW|^d-`V;DXSEY_9+F8BJw$tmrQ%2!Rxca{}^nOM)wLqWjpQylA zCUDF?BRWFxbJcW^^W{8>_T4r9!EZWfq_;-%{A}B_;TaW9%jne6}Hr1!^7w>m2qf#&C9-{!;b|!JnDMt zgST<~*jQ#<*Mf!qdv3o$9zde+N?AqS5qApFtA^@UYSRYQQP+0M=4P|Fk8E_=zlbyf z#`c>-ldJSrjb;4N;8l-im)V^tCeUWn8j$@4tW_TZ-*jhgOzzC`KZk6) zbaEGLm$=5ELT||*hWq&3E5@=iOtOdw1VGecSY{W10O2_v}Fo z%~09m`%akjby*J-<@K%M=R*PwnySi`b#3O;t_h|Crj|RxT6|`vLIOO)5cdXZJDn=P9S}n`RZFV8l%a; z&R5@P7Wc_xS$s9QN_GXcDy2k#uYT0*PV0O%w&}L`>SvNWW81@>L?*uu5?mX03&vvRRZNPWm?dWuL_(k&`x%Ns9kx94Gz0?pyQ}GC3GY zi4Z6Kt}dUFlN!)i9w+@bG%YykztbD%r2Or4a#ARo=UWs_1o%><8yt{9VXeM%4w*}@ zd9EKHmqjzz$(Lrmv)9k0B&+d73(d_VJ{d-%+RiQ4o5dr!rPmkgB-ADIlkUnzW?ikb zy11_Bsm%t_g8hUzF^}2Vlrc#c8rJ=doWbTvZg<@YYlF7RXAr`G_&mNSmQh%Qr7=fpeW5Cvyb*uvK~$7EiTyBm)~TBXo%BPL9-3!1B^oYc`bj>-7i}@`DG5t&ix2 zBBzn29vU^@++1_Kg$v487urydAZs^y1HsX1Dv9W`#&Fn5vj1*Zsux}f`@;BJS`JQdi=^7O~oS%pJF_J5{~ z_-pNrxNi|_=~J|902-SrA)+Jmk_;9`;Qp#Fgukob5n1qQs*1C$u)5q-OX$1GXVxOK zP%YT!=v0p`HPsUOuJW0+$ShQgDn7-7ztk^(U`-za*`}swi!N0oKFeRabofIcn*PzMrsdZ!OgLy->Wikq&uA1Ygaw(tUDNtqvv{ng73ieU zwER!HD}Q3v)w-q?*A-2F?6=WEDoyLNlrc%u`lRk}q^9M@`H@MpkQdY$bu5qWe~iuu zy8nB6<8;s8PBYzaw^$fRqNoLLL(ssGpIfE+&Ew=oM}?W|#9t9r*G&06Dx=bM^ao9B zJ?p^i+V^v>F^fmj{ZLdtLHteMb*DC&wYEM3;yPu_fd3%EPT@0PedtQ!4Cv7Pjh+F% z*5O^YyOa?zYZ=5YW(pRmXM&^d8>-O*ilU^-$rkIcJsH>IlB|qt+7=vv~JCJe~WeN zoffu$BV5LH_)&v>fZ*EVBFjbNCus3HSXJgaIvqw=-OLzPjiZlhG5dtU`9G;~8%-N_ zM(}a7cqAiec`-Y=%J@Z>KQp`2Iwy&3S}(c`hheY4+MJ*n+&7cEWm|rU?Ur7C8HpwV z@Z5+L-La>VJ7!yyiR+l=yrZ1Ry>o(MFi5>AS7<(kzOui@BXNc1BYITP{5gfyVbrla z4z_l^;$Q>x#yJ>&OUJ?3PZ5OUhpzPQMi?|d#ZQr)@kOI`1T9%L_YlKh;kX~Hs%(p8 zgFL({tQR2&YFxx!5j$*QMP-d2tu^ZUla%eE@e6JzGHB3Tkpvn$zq`~dzB2qSu1a$f zU4mw#V8(ZyrdiYUz>2@BbKtQ(-j>SNj zs1RkXR>9*^l>x7!`4BD|^j?_|_pb-xxv481?57CDpJqSfPYTOtKgUCIq@ii{Z#?1O z`SU;c^DIOo=i!FjOYmI$z<_VWADkL5cP8ka3VZRL-AoU$ zM?vpdxQz<-$bARVl?6Re8fE1pJ-5%yw5rKx!sBO;w(S;ucoOprn-Skns zvxjNAJcvit>!r^;G#{CG!l|me{UO9(P&%i19v#OvQw+e1=)vD8vV&0w2>UDljn;%2 ztsQfpB_rP^Bi{`p9}gpokCA1_6%a<63i~-d_#5$4MvRx;uHNe2fWJu@g|-f=d;(nN7m*J@#EJR~Gv%Ux=swT7A@tGD-5aQ}SGCFutqasIHa=mK&&F_F zGUY6<4@Z}9XF5>KUIXpH>)u1Yb^Lripw7eT2eIV_`^~Uny~o#!YbB!8iCLrUJ4ETxf&+ze# z!etcnXl#l!HYMQzhUuuSnw*42U!) zE~3W{dhEo*37~KIt|hv`rA-Wup}uAeZUhF`QA&u++rprs5gMoEjPuQjTER4u=zLt< zR^bMeP0km^G~6l}s^F{PE}GL$Yl<{|G0gv~DUxCtqbU-M3{8<;4`u8>fwIV6g?>*n z4^ObA*WeFSHE)OxYT+8jxH#wuAyu0L>LHXyI^Tc}$I{Zz>)55lI^KjJ$6R`nTMP?Y(1u836GTSVg9#GiNI50Lch;?KLp zpLdHtzbXE_SNwS&{y;#zpZ-8S#vk?}JcMe&VQ=4A z^(x;!{ZNBF22hZRa0-9-ZDhYfe~^p|ScJwwb?|N2def%Vv^ELb+Q;{638*2yYce%r zV?)pvxcchv0QD=2(MCbUZ%tY8HMBjax#CUw)UF9raQYp8Z@T(%SrA>@6#@&RVe>KZ zesZufs4Ly=B@-mFD_9)Kx-B|DHobjN1^nNkVZ_WOw*Aa z^HA5^rfgsqy|AXFMx@z;4`pMIEg<{H2_vU1!{QJ%+z~_uXdP#0aBA@S#8Fmca$>!e zB=MI}8S4BZjonTL?DHb)XL(lkyZEDciRdVMviZ{&nm_$f(eg=5}yl?X zVaWc0+9Fdig>86^07VOiTkNpAKyBe+_tLkRVfRtm%GtxLpXv(?n_6hL70B9K!C{|E z%?2F<>=ODGGi)+oR&v}pJjk0*>MT4FXq$-C%+XuWG9*gr#a_()RA>v7pMU5P6$h7<0w#!0F{g7|~2fHp5vFqE{YxGXg)RBug`T$$91M3n4GsNuAt zQB<_k_E=0c&!FE=iKx#c zj4Umpu5KAo%@gU3$XG4kd+DWUzpk_MjAb#qk`v|~DK z;NY7{T}i~jHxg zrxg)l`Ep%KL_8;95NR1vT0}IhDgK1wM6+W%qe^g^ zKdEuaz1dk8ki^P1 zg`yAOf|YV|eY=gXoq&3AZXskBY$OND^NeMNc7* z2)C+xt8wKePku9I9(x#rXK%rqF>v+{{GMk2g`T+FlkO+HvvMb03^xdC9apl{oV(~| z8(bNKOFiWmZ1AHiWZub(zKfn1Jo^p2oMP|B^KgUxCjWy7^ow+t-FYG>*;5Ksrk`{* z#bNv%p*<7p>G3*xyq+FIv{T}D=y4Y9inx~^AEd{J=`n^H97*bY(x4jmnET36_vPNr zF{?>9{?0%C-Hc)iuBK%~!0*n6HE4Uk331Xbj%*2Vo;Ccg z9h#Xk(}0V69kGv6UJ9k=>?uC;PVtF%s;;;ab8s@CEj6 zqr5Wr2hu%T ztmqG#D{6h>nHBy~bA>I>D6_slX|AvBDPq?9=gsxDOY~;7|D(CuI8(!PzXfRKeQYo0 ziy)Zi#8F(7KP+hOn%z1`^YOPZA4RRPD2}R?TR>)IPtv^p80K}$l}Rn$tn72dAFlGp zdtS_VmHlV}iX9-f@)S1EijG{FP&UTOHhZ(0c+@@MQKH7Nv^6%tXpZ>Y{or#gRTKfA z0_tGjRAa2OuYG(VKozBct-|0{= z^__O3s_%5Lkor!0Q`L7m)k1xz^I+6>I_M(m`z~l^>O1XXeY8AbC!$L;iw zHD+)DdJm+Us21>D8ux!;7xi<|3?jXFakd*jytM+E8MA_}s*|hCx(&9E_bQ@P|9+k$ za~C$I%2oqSvAe{0*2}$Fp+*n_PiBAy1s}fz0swb2O0!#d75GKHkX^wqs##V~U=`Z5 z*NO0Q=;+wvfE@>g1-@SvSFwv55BbI5-taB*veSd5!UKE71#W=FYa6gY@HTKg5$k);4Yyjlncr&AJG~jH=rjOySkh)vYRhOE8_Tz|&2J3X2|T zD;#%q1^No3Ozi=WNb)<|&v%%J8z>u|xKWw!Tdquqj}vrEGA#Ey^01?@byY5aDiaK+ zG~v3ea>=+i9P`4zD%=~1x*gmb3|$D$zB&lJt)l_Mh&>8@OaZh#&8^AsfH=xRFDmaykmZdD+wpy z<0zCSZUXN=ib*2!;QVWzi3(M)XQw(bgNvvqD4l-ZOv6W>=`wBux}N{pnHj$!^Dr6( z&zRVQ8Ii-K<%bT1zZ@PzCiJQBzyuFAo!DJnD$Prf6&$%WjOLfA>I+u6+F7i2CS_n_=;?fk9MX2^T64fYX%o-?{ z$Rzv=;T;0BcyUkw{l^@&!4r&9&_euT1KrX{^`9l`|1_^ZNZ3~!e6@*(TKHuo@%wct za_rS#G|IL-%f`v91Kxn5DT)8t_Ev1fFIq_^{wu6a#1Ow6LV)-$N(Ffd^2n(%7_7mV zp|{vO+3p0{o+yKH?K9?A^h9Bu=#?=kST}wfGvOxsIg^Zm7uW|E&3;7XArATyMY0_) zF@Wb<>t{A1N;`yO)+Sqy>@BrR3Ahf|A)_T$(Rw-v;Z63jEt?SD zW37Kh2;t+_CfXo`HKg7e`2T%-11a(U#_o`)6wNGqvInJD3Mr7x9lmKFa5Pa!{@iUS zAYRAyK6kj@0O(WJ`q_F^5!QcLmk`CGmEXnjoM!|WAE3t16+jPsf@?z9gWkwn#v(pM? z6C^fuwP_9xK}R(W*X6L>i_pa;9qW)k0S+0Xx!yV&D_3lxm3_-@B~niIM4;z>Yg5l$ z^ayVQwjXyKHqf(R9Zl=#8S{x?%xLAo<+hT{1y5Ov?SOyD-=n(7~`#9_Orktif*~_fqabhXmwzl`FyIZgn419u?u$K)3{i78^mI zLkY&E<+tr!!oope7GBAv%xuL$a8)LUdpM70giA3)B!xRXah(przw%go;a{rcpF48I z_edQ%GQlS>UC?>$GO9G@$d^O(+`2nXq!^BNKH6lG%in%N_WJDLEpQ462Vk7*P{r4idkJiH}ozLUcjj%@k<>?L~s3>#CB4R;()&>59lSK27|L_lwCsnaMj`xcS4Q} zC!`Y^7N1l*_?Uvl&3ya_GC2PmJl-mxpI(Wg+MTLGsklw(oS?;nLJgi$^0yw(RdC!c zy8)fzoR>Y9-pKvKZlsP{9Iw8AXdC+nqQi6dt(KS|cynxQvlES`{xFu3SjAShHUT=+ zI~myB%dp4;YBE8(rP^JX>^kGU%*EP-rGd_lwwwgJl8F2WV)x}s*~|`FYl&( zL;-wRt7I~~zbi$p^3GM_mEjvq&FMrS<#(=bW&g;tCNuZ$yQMiR*@6FC1L_SS9M}OM z+4>VyD1ogTw0rgL%v`<1j{(ZabE}2+alBA0W-88n0b8~!_yj5?%|s|A6+x*Winhz^ zVZNu8VM5ezW$#LlIReKDW3FFdj*BxjB?I5|&_377(3D_)k_x5Aps~WOtYEBc#~DRx zEqjxV3K_-3^ z6D~p(vY<0hOX+39PJ-&z>(Qz=4>V zmea4AX(P(SsY*|;qzd4l*3b6v^x)={DKbEZlnnMa@;fKGZx0lrR% z-(F`m!&KiAz+?T%1o(n78tU${7a$2BE}ApFivse4iTKU zdv+GL@Z3>2Q78!-BG*&5tivFow}eP2s5M;PZfn{b#okRV2>oGQbLWh%{AQ>tL9%H< zb9fgjvU0_E&EX>`+PdaIAr)b3`q}A_V<-?_^$Y|E@=!n!AJIXW$V0-LUz+zhLK5BV zv6a1vUWNIuFYvpLJV!?S6`~YN^EmpwT$;$-fm_BQm2p=wE^){e3ophse~Xm@gg7kf zI)X$MLtb7bnqmEs?4g?dL5hkP-Wf$fBs_->(p6d+=R^)$dz~pi+Hf%V-Izw-Xm!x+ z>jJ0b($Rfj-$szLFE$^atCSavh*Nc=e8AV=*9XKSs5kI&bZ1}R#Kc4|nIout0{b>cQQJ;mEynhRThB7R%&>6sj>naq;P|UbHX3gup*cTvm{M$|yO4TG_T)eea?;qOgZCYP3 zqS1dVKoT5_zCN>3LFHq#ER&s~V07#uS#Zkr+7!qu6l^}0;k%wizKHaloCle~$G6ZIHj%1H%XXvflAC!1oCU&0*kge1>90ASD<+yVK~a-G?hn2jV^r zeOf9f#uts@oj#UYjuyWNMVo>-eEuDX7QfowiY?Yrw357zf3vlTxOIFngaF{qO$F;_ zvl;4Ve5CBX_TII-;D34}W%qOFB!m8_eQ?pSaH8^5k+MtH`mK=!X@~HbwTT$&kwb_i zh1f{hH`rThml95Eq^uZd&_J|CQHn_$EMRJ*N;8m~2etzy;3R=vF&Cy0c2SIPq^Y11 zZV@S(5&kzTUaX`2gy?>nZ8LvhZ^gz4MJvg(@oUy5Vn|sIA;1Xxv~D5c97*Y`kFu; zE7tn0awF{!zGZD9h5+OcQpt@U+Z#xU;+2;hVhlkZW0f0er&LeIChTJ%DyLK$xv|Mw zzg2Fe9m0jyChS8y7t?Z4woA!AmV_+LRt377K{9e3M1+V^bQGcj7Hf3A&P3l{XD(MS*05m(;mp{;0xl&2N3qVfqnfEY zwHlUgQ3iokRHNL5nprFt>DXnzZltSVsX!ofggZ%k+9Oi5!SDwmEZRXRiQ;n{gi*0X zloBF}SB;)7uzlx|UuzX`df?%nCezrHeAIRTwLoK4!>Y@eFd|YD^dt@vBZ}d9v3g&o zFcTsNDdcFK*g{)$IyD6W&?+6m^&$x;U`a}n34GHq`$-79c34Pa`H>=)Rhdykl+tID zQUZ}Ma`p8rZ&+=5!6ABB#4ZH(H*;%B_BiDC>)sx$-QLqq%Dt7X!XIlOOZ(w{tQU2& zTd_nff(lIPXoSpy|>q36t%dr~UB$PtI-!)1y)b-SRdgMT58_i}?uvzOa`pepB zcmjpeLYSR{%uyR_q5~+|<;dOwgu%T!)ZMvs>R6Z_qqti{o_kN%Ow}k3x0=kUe#obs zo#q3a%37t`5%RhewaVziM|f6yt#U`mLp*Epjt~_JE$6%Xsljv%_)k9*q`Ft7LJ8`g zu^;4~+e$bUqLANX21thjqy3G1TIYi*P%78xU_V?GX@3j{y;X zc5Lg4IaqRNK)t3VKuIqCDik_RGuJau<2FK{<42onnm@*S95sz8#iSJE84>}{KJE-b z70%tJ&G(^DqxRV;ZN6~Z=;?L}ySG!5Ms>Knbw={-53fkTGf65r$!YE+#4xIDUt*G5 zTUQ~($~;s-KK4SxtAI-FGSE{wB7~Ua3Hy7vLn1&=hGDU#xS-9{BZ7e%WUNP($Z{uEL$mT%g6p8OqQE?&;GbVO{5g?763pU5HgI zAEv|M6MuN^QL6POFX~j7jZ|+cZ8ESan(nmFVce|AC%%%0_Kcv5HbJC^kwDWt zh0)~@E9f3QJ9bt`H|dq=ev_LtK=#UAYQ585xlI)zfCv7AB=khL>BW1nbAgOX=Y%th z+ix@F68`UG#Puy1oUNgzr5_>QN)bJ6Z%9o|G#s2#!G1zx5aI6E%EI76I^4bW@a)^$ z?E{5p>pld-v+uo821hGEA?h0bnoPc&t(GZ@8WwuiU~i*4r}&m18JK-H9iN=f%+X=- zWZ4r6=137#Z1A+zFK~mAy#QcoAy``Cg@UCuO!O>@a5byVJ&G!UTt%y4one%3m1F;J zv}Aq&J!M=nQwAZK`CAIfEa{0PSz7_ve;Om5A3jskS>0)rB%Fh{by4s!cOcalQ_AK( zT|&{M`AJXllh)~Fm&~v5%X()Xpvw`=dLZmqX-uai!BJ| zNT6w!!swQz6%@={ngz3*O!90j^u9?hn>4S)^0VS9f-0w^vZ4a8%a=*SB}(PJcBx!n zgp`((I5UZ(Cxk~hH%I4BU>^_GBFg&QiIu5LPxC)bO@2y}KSCvhB>!U{1j~}--)y%J zB*}Fjf|8v1l3Y+joFJE}5&^_bYff0GOYc1Gh_7O+o%GPF#UX!B|I^u|FYliM@LG`f z5_=@?HRSZ|BLPRf#kpLLs0&o z^yR->ujO&8Tbu%*k|QMl!A0Ee=48n7hf4+e7&q&k%CW*MZgX06DsFDEiVgR)Y+ooL zwgboM;I_UD-{XCRS17~M;NE}cbja5oUJSsupgTy+lkT9Qt|zcXcTlts-9gQW7~SC) z(YnLy&{N?npbSEH;BRSk2hs1gb%(FU=nk(u!@5ISm%){>{7PxYsl56l1_xD5i_=IV zQZ$44uhz+J*BgGrFY7&HfV~{GL63+1HVy4Gs10B6LH3MQ8$OFJwxBjd0!?!rMznzV+9iJ+8*?FrQyJ_bb^V6(q2v6-kdM7af;bOteN+w(EBUYTYA zKTb`PO2_ywR6^(&f9Hc>SvtnQw%Z5NF?1h-I!4vkF%&0_UM!HQ5gNuGIC$V)I98~V z-T>bZKNz<iLBD^E>!6%|0o9e2RV$4h%RX-u^fR`iS>y zL~lHDUvHxbwX**@T$S)@Q8l}STH)f}{h$7t{^qKG!9(EUQRR?{P1me-+S>b3_q*=* z0x>bFZ+{WpH$R4hpJpxt@&*E;%ZQ(PVM60Sb$=Gw_}@l1t}ju&QpL;%uhUguC-$q5 z`oQ(K9BjeE9sJ?NRM0Jm?P^@DEtWZr#|F%c>%uR%@kuy-WouFa;6x#t*@Od-}MpwLOHfs0UC zkz!x;rKi(SPSlaBZ{a9R2JXk~V~XCbD=H7sNA%r}pS9L+-L0E;2!Cd6B8EQX5SqhY z;Rgwy^6*#o22$d^DKaVfl!rw828Di#Ih{-p|7;&@G(pJOmS(4J=S4PYX5FcqmSL>7 zHW5P*atP^n>Tb8T(#}p@(S;yR&E<6!UM9~9DgaX{tW=8Mi;(h0Gp|TCPWe@`{Q4)i zi{JeuE)y9b6^tK=N_UGqD(-FKNn|Iz3M#QuE6@k7d_t^H|6+Kqt0c~`R_|u6$)2xd>yZN(+5>~NZ`qRn!#Gihi zw3a^y@I1)|@nl2v7^cSvJ=W1#{oRqL3-T7f8UGeNp>H9zaLMSVeD00-}i*R{~G+keVE=57IyNp z<$9?$PH)u)yKRGyeFG+xxL0uIirZuAbeM z8ZP$uD;lLn*)v}G8|$U=F|Rh6%O4%}PUO8=DqC++0ervwpm%~0iTms& zErDV8Y!3J|TE#)XCmS@NxXkaCcu)At%cY9fnrKeu{N7xnQ7cV08)z@JZ&|5Or?#xj zmvi+x9^!sQB{w7PRu!7F`UfFe^QP#VroXb0o2FN-Vt;Y#zOLdH|F*GWb;cX3H7gab zHg>#PJ36KtXx;+J`q+%uC{_#nR=0h0rqC)571tCmEG}zK7MJ)dN|l0l!XTQUXYnH7 zUfc#cU4nm?;oo-r+d=IBDQYE-{jk4$Hdm^({4F!pLbL4MkkROv^!6_l??>#fi`^5A zR<2pRqBx>ZD{d+7LZg=e#Ze(AiqR<%>#mn7(+~!~Z%?U~Z` z0T+hbH4L$<=cc{!46xY2I|2dd=Kyk*O0|)TbT9w?Kj^HVd1@Uliw4RYRL`-CLeU*gUfkWt)uuhIAk;g}_#1O= zLb;+;hlsUKkq}Lzr{vE9qguRI>b^8qyt#Py{KU1m*S}y-wbIBzi_{Lz&3bpCJ-J4{ zcw4Pjh0I>5<;mz*qX|Xq^83(PAWI@vLYDW3yYz7JpnBjxGrmp3ja>a`wgKvlXC5*L zLQm?W2l0|9w=0uZgv4ifhrTwtyE3PQ{aHa(XGE}n1%h2DZkZ@v$_?Dq|A&SE4)pN^{Z+eQAE=_neq1kMm9n^EzAe>R#=b z*P^n|MA?T$ef|?bHo7>;)(B+;pMi{@RuTRtgXw`%sgEiu#=X|0eJq}|!~SaM&k<0E z*Xpk&B)G-qzde(n#dj6oP1Jjjre5*4NEvYSdpP6iSKF6lSZmtpiL=vK_2vLFM zDyl0U!H-!HT*ncFPXqEcyjr?_hCKjVsLsHQwfv>Cb8r^%fb=t5Uf!8naQE>Uz#fA zTc`aV_)fx!jCI$c+vdhaEfeUTte@~6Vyp27etB3u{-}+5QVinNsOt4!1NXiHGJicF zbDv>xU}>Z%Yc})*@0Iu%Pc)sMoJ?mc%IsR+y5ipj$k=6+-JT5m=WX}IZPAi~~5@Mu^80Z)K|QQ!L_^@a5j0%@+1h0=snjR-v!;tJ`s#|X?2dpG{H zNth|}-CPmpp)0MU07B%Yre?nfXhxqRP0PqRZay0G4=~7+8Dk#t8AgL<-N+>E;z_yTNCLtT>RbQM?>9AkpR(@ zK?1ggz=)XY;|e+U6C#n&vO?swKd{SD?dOW0w^oZ7$zH8Co9w5kR#;BF3T z4zrH}Y+7@ACt#&Ar|i=N)rfM~vrx1X+sVEF2!i)tq&qGTUm~bG?8@6l1u}3vy4k{h zj-t|<5|5H}4V4ns)GW1I(lM$1R8kn!KpG7hjn?TftL!hS-4CEz_E&WGAl?0SaQ7qJ zoo4@?U;l=#)FljCsc>J2x!kySX0}>u++M5B9N>fTa+viBI}7Yz+YRd6*)XUv2)QgQ zdnxgn56hp~QBZ~{z>s%cbXwOpMM{LbvwgIKR}+=KIP3b#paTEg@@SFG?FWK(i81Fe z;gZd*rU`pLfr*-1B`*kSV!DjBzn^g6kz{|Zco_EA2kb?%ztkjQf4@q1^i$bix+i5r z_E(Vu_V;CYoYMZzI~x6_tV4ODVe^_0jfSn~4+u;`5c(I9Y9g}IkEQu(TB<^WPE}FKZhJG-m#wKlGjb^HEF~Pwu4~S!QGF=VJ;Qb=`i_~9*zxYRV zM?aOnNcYNLydC$_<+y}yx%1#0ubH>M_*q$pG6?hZ7r#ni68y!lMXCuiy|XcvuK?CO z{lz~=(a!xv&M)pSavmo5ix*Qfg}+FIO)`Oozi5>DV*-%gUsMtTe^JRzw9Zui;*#ac zU+khg?l1B?r@tt1C)GNy^h!)QY@Dc4c0qmjv0SN~n=C6|F=h?S9ty=9(~qAp(%zC@X1%QC2b*A{u9;-xE}Dc7|(Wd2j{{^%sJ+b#ACNUD%%xn5d!tO?oJYYvS9ajrE^8a7i-O zR$L5Y{SLrhBx6m@62|)P>5hIXV@>zUSSymiSicL8QyS}eN45V`)}i{%JfqrQ5SWCh z_CF%kggaYj2KHY8Yn}$SXT^LBEaw+Du$+epQSE=GW(osJgiX>Eh5IFy}aXm?$8K(Pj z;*l`;FQ!{D2N6mTy^7>96UbX;s#?qBDsvfaIx^T?pi!FfGE=!`xuF+V&ZDH(1-~QF zQKB1`9#cCT&AG|e9IXVRb4gTEdLpWa!V^*bHcG-&p2!z~f$&7WNO#;5;df3?MB+}S zcfRB6eFv~guF;&m9mDIirax}qg2-of|KqIeTM)&><$CzL!X<`x>ICI+Lr5Pq_bNEU zPRfrWlIjlK|1nY`BHQ-KVX7u7l4dthlby6I;4gv-&d&A|VWymcczs2;P)>Gjkesoo ziNTf=n5cj9T_Tn+Wzi0#)zNwf0!glk9RZzFabc1WM>8wjAJgU>gTb=o>MWL>HLxLs zu_(T4r&?5sJKe^eiEZ?|s%^`X*)SCuVwd6%^p;Ls=+)g)Rb@WXbv`Ar&X^1jS)DV( zeJjJgt*RVS@z%>yyWgp-aBBsaiLM+w}JfCrVFbvDaCt+@9 z@G@+$V<7*V$?)gPT3*Y7m>Th@?1?-=)FYo7I4gTai98v!G|9bJ-%=uvRh#N+*q=e2 zFH)dKmO%u1Ujc%QeyTu^?%_W2#P8+AC*eeYACF@Ly>Og&=H@5A9+8`nu=$HOKlweX zM;J~=VE=;%Mq!7ivrzEQ04qsW5<QP;OU%pwR z&GWLsR(WgG6R~BUzpCyv8rYKry8{l==6Za)zo{DE382vOyYI`Do7inGaC!PC{GMqK z`($xX2tNurY_-?O&CIqYu!#@fNiYl8NAa^){%qFD__dbyC!j6%=q;*SAy#Ai>!zyJ z2DU!)jFeJ%KQJriCYcv~}BTHea2gEez`bIV7HVWsg6}9xpYDS-y53 zD5FMMK<@lE;jgKAwDK%l_Ktbw*1n~FZxM^0)z20Fpm(AKT45KqW?esBQSc_4(}34U z3-D?G7Qpp#GkDU|sA2OpYExMF@)vm%0l}_=K>2+FuEs%?zA*eEQrI7$Hq=3= zB1lw5n_B+ba;`Gn#BOzdMipt{ppZ{k3D| z(&X4Ie@ss?kKXV`u;txRU{)W)I8u0vzn1^hg^u>O{2S&0f;J&{28bWwAxlEc5_yC#B(^Uu-mH>*Hf%cud44 z;TWyfrpK_g27Sp9z?a#EHv_S4KulNR`N(BgUJH8m)u!?h@bpB3zg&Tb63bCn#uk;M zC9g5X>wr2OD>i1zs0>?OO+vdA8pYPWRsI(A)tPLdwt@!8P3BJf1NAxVCU_!SEKL{7 z_=kSIyj&%fum&3oLIK_1gubhTQ0w_`@iSYl=5vy?Tk=J0xRM9sg&qQxISEnvXmb|3 zTF~CCe8W|#A5TMis`*l73NoM+<~mZL_2y*cyV4AG>T)$Fv=nWgdb9Ig4#%v3VVBp?b<6lpDc9Sj$sF-JkZCd6i==f1TWQ7C%Zb zBYd}6f8drTww1ljc%%%9zbrRPrlXhIQ}et6ZD_hbZT~}|`dD_7fEx)mW5=!>y>9fH zu~7*V8mhZq%X84XIsx5c`$(y-l}(b}#P8lC`b*G;o+`Gvt(DMUu;;A50zDW!LYuH} zr&p=-O>ar%t)7{yH)x9g-%i$nxOTS6+S1t_&tCo>8s+a^}v1w}QaHxd^r5 z(;NnWe2`3}zk%8!(auW8!Gi?#sUBMgLC~$Ry&`rnlD)Xz%8?GsmzxETUX%VKjWg_b z3uXhK(OVB>4?vMogVst%qu!h%1$z=7E+4JI&`kKtXv_sv`}WS{U~_7; zm2j&#;tvFr!4t7}T0e=^C`=3X_&qUNssc4mF+o!HGLnfk{K-`An4sNic{hrmK#spG zSEq5mivEmFm!?1({+QGcS8i)ekp-vtTXH^1w2zaZ2^2Da0D|=K_xXBVE8yOIv)-uA zjN%~)9(I>3RcocjTtaS#YvGE)l0oZ1Y8pi1Vz1wO015`;ow`9tSc@)ATqYiAvDeU#*BVd!K`E)QOG-3h zT9*^*Eh_OU`uNp!`64cO;;%$ErS1q5tl&}*Q})0T^Vte?zZ`aw(_i)QC)ueP$W%~t zmGY2U>}C_O)k2ZOywSTZ6_jD0x1N3mSrLAAvt< zNI3XK?34;yqcHRb=o_&!8sD7Ke7BBb3$d3P+zy!MP|1th-)8GYkWN&D{nGfR7)sKn z(5TZvwQKm7Lc7&l`gz~%+_Z=~xXDCgl$5Ot%znULh@Nb@X5*m#44yFOn`Sb5JyG@z zbWvdYm3GWd!qiL?`P8emM?E-0GCDDl9IQ8IY0KHVetB49unE-UyJn#W&CC$tg@cMu z6y#oL(X2OHf)X>>#h;@0g`ckDZV}mB_>I}Aat=YIW?vta6WK1MW%*u!n#vWJ{yH2e z+OfVhF+sg`Ks+OzC5`Awyuph#Gr7tvx&PcrH2Pzu)R=`a#jaocyFU3li>B_FzaJX1n8nAFFf-_+ z2CzZ?%DW$gR;pCvzgm@paxf^@+bGww&|IadIpgVSdWxV4zBi(Ppzhu#oQo`ogB|nr z)76HXX~0-#JkG+~B-Q9IyZ=^C%g6@v6KRsg&iXw{KXDzml;vPIR&iGhN|qbzW#AJ$ zU(!`AuNk1YMTk4x%GqMBUV^XBBhF&AT%eM=i>>7*itHuVjNBezhLt3Mzfs!!j;F5T zCmvvvc6v@a555F`y_N;}Sq8!asW+>6LFwlRQ>0!AOcg<- zIZ!W!r3E^OeT(q?!bPPW4osM^SgLG4uM?gn(gLPR2|DAh1KIiS90gLiLV)lzPPP z(M7dI5MH@;(E`4pAyl>OVapUKUo?>3z^&FAB`8pb1Avw`_AVkVxuSut?&nS$7kTAB2JhAx z?+l?2)Vz4jh2Gp3IFo@o=O>1UQGfuRbXI{_BP-7RNL5Vu(Gi2m-b1Z;uhA6tZu;?C z=93T7j}MtoK1M%2Za#S*{dm9e#1|xi{;B2KNV1W)8AD!;Y;%@IG2wx5_f8Q-IKg%F zhDn5Ma7%;Mi=yyHz@;kOX~2dxGQU{Qfs25GWTZsH8>a#Q0xunb=~wI(g#RneMhM5> z6gGvS@%`0+s+2|@cT0zax)LD%mDT#ldi?KOHB6+-+f(C2jmf{2UtH-Ug2 zS5Ad~C*m;bgJhX>wSp{>VOGTRVgNR1mFP=wnJ@~8!DEClCToRk2xo!pzarhz(TpaX zWPm_EFdG^ZNdWQQ(q9D%g5X)GzZEF+mW$vYZJDo6zv<}Q1TgzIrr!Y8%IXELTsl@8t$2;G%IwUT{PwBWjCu9z#=xYJnVIrPo{+@Hnu^@dBA^xu^{EP_ z>ZZYirOzJ5F!r-|w7j4-0SF9*!V8(>e#_ElAENIL8{Y-sAT{KjX;vu+R|li0ZNRUw zyizfo6eB2rAA%#qzybA&qDF2(^t(0cU6XA3>7dLy^_)gq}XA zn9TFkXIv+$fRe^^Hs5~lop)v?cHebd=EmFZ+P(MAr|!P>)_ZO{aNy=vfWk&yT231@ z!~oEpyC?3rclRAAdgq-_EthC$)hM=xMr}_ZXq%=ZoG^q@K;VEUB+ej4zj&>z5cexF zXw#>Mrbg-G@K{x32&x-yXcMNhfutJ_v{wM7ftl8Xcr+j$VJwoi=qF{3&7}FqL*fl7 zIdM0G%uI~(l$$fyj5&lQeRBfJ9`T2GzFCxLRA>2&6Glt9k4=+9vfd5ii>RRpfi)bF zrIo5gYrQDQ-;wn}Kmi{|lB&>LGhjs+Q`07-DcHfwR#i} z;Rs{}eAJwL`9ocq35+} ztfJ7P`3;F)%@e~9*Z_?a!gxiQy|6Bd_r@DKOpIcmeK=2z#NK$7tK{Kj!NQ0)=j)o} z8%+>@>2tOz8NX0}hpAe~E={_?RTCK8@zmNUc*rDx_MnGI9|jCZ{|XKL;%F8%4xAx< zL4$C)eO*C!T1%z1kV+xEfS%6a&@UzRG#mzcS7}pjQSEwhN|> zVe&MJp$OCX*kB$4=wGzI;$_f&FJt)ObmCVqw7nK5JmtMIEH4;R*P3CSs?MSa2GqOu zex=^nyK&G4O(SgGFDJca*W9Q;RH_(Zz)4hPj4d@4q0U!t^R+6*a)Jq`Kq{yTOk4}~ zLQ_ZRt1EZjH1g2JR~*p_el7p1;vFa2;EUzW3P#HV{lA{Srct)Qdm+b0MO1_$uR{)O zgd7|7Q7sq!)mg_6E$}KauLtrpXbt!Ms5ggR!VmKs_E%!! z0>`aUEBRd&qwC9|rZ8o=k}PVOY(fu(cbLDV`I1#M0EE-oFdl)d06xS{#{t$bGq2z7)w@Z< z;v_%_Bz*qq_A_hf`s1Zac|_rvp{?h`^L z2pb0EYZ~+v=f>%xYveobIw3TzVEEyfj)*pxuWez`20kGuhWlwwG+V8dVUGi)x0b)3 zo|=ii*u-Cm3=ckyD2L=g6V;RWbL4o~GS?O`uS>;ql94^#sIP_qag{*?CnoO2E%w;zw2lH0Bu; zP(Ili%FwB0;RIo5#b1*vWBO#$Lo7AOI=lt$FbKT z8q?TqH9@L$n=H-q@FBS%iZnk9F^xT`7lVCDMlLkJ6MTgeDFjguk!%Tl#phbpL_IM| zW4BqQDrKjuRh$p4X=i+Ne((|0Fh;Kf`WoMC4Zcx12PI7Eiu_-EZ_s#K+n1P!K1LBS zPZoB4%+El?0KetqO9RN{WakQ)K<9dx=5=8qkr7R~e7d7+Of271{$}r4$ubB#2mm0A>Xb6CWI;pmJn(HE` zNd>c}0oOHAC<)7|4$L-tULV5{4blvV$n{zYL{L5DoiybApXs8;vIjBbE3)E(WK}&& zU?heK4b<|tsbTA&9J0g4Sba=NbgF2pnYmip^MPef!3r_%36LOM@r z=ZQ}k-V|wn!Fa{WyJb?IN;zZ?Q9GVTmmqTohoV*aakO=KG{gS+#@TaZ=+%TIRPRO* zr^e@b>tpvfkuiagm_p$}qlh@>9`gytGxE4$Zp5_ar)i;^Jip%GWI%*Z?Uk#uBJ*<% z`I^Xbua5y>7}`v!fanp57LxA|7}ba*@|QO!*;mj&q=Tu%MkI7nhF*O%PsBW5QYm~mMH2+egodA6xE<0GEkA$yCG79hcEQ~=Ew_{JC>6oK|GDTCFg+9 z+ZcH+g6!75Wo`8%$A$_-(W*BJ^tfBVY3+MT)88NiUoylHB{BbqMBR0v=a`s6whNNL zln)GZF(fF-?jn(ypvx>>?x#x)m(#3{>nZjedXS~dVO%Cyo^A_tndHB(rdyr}HiNs< ztjezqejUMe-wO6D{5i!KuIwmXNC~kyx`@oGo9Omtx|DD^)$~_UOh9TLb`7b2FhF=O&`f+=Awkv7^^Oe5i!WuYH5El zxKHOTi%b>FvE$V;5}8M_TJRp!PBl>Pxpz^PC(xP6rTfQ3@2158{<9VZE-iZ?hk;VW z>ths0a^TNg6yRcU1w?F2N)?B_X>`=gS0y#hmpk}F;TIT$M}`yy6pP$mXc3y{sE=WM zvsB^04=zf3C6fxYvW0`aFx(+#o{!>`qP4gT(yd16HQ2Q)a(fh>;f&CV5a7{SSp zk;){vFXtVGg!_!Gy-AjZI1zd|RDks35TCpUJ&-+)3w20;E#{YLbT(H$o|_}X=5NYU zjvvi#LuJswC}qJFJ?IYqd@=D%FWO!T#Zp|V&R>vg!B>ZW4;Kg21AiG=EV(L^-|MB~ zUjcf>3)$!C&lcN0Pv&+Kv=px&%Wc1C7V>ZEWFZ1NySAb{vmJ{cmtsx${LufQiAh@Y zzh^Wyy#99EJt29}~BDT2}yOI#5G9GoZ5s5nxj^A?6-#Bt?S7t;*L0-arcizld zK3ohAJN1_mI$}vS-D;}d;G*hqF=-2vCz-_qW&`E-D#ar;(?xKGirbKea0$)HCY{^r z2I()|l?hsdTiu#_Omu9jV4hWLLasJwt#AlE)5sigBeO8l`rQV%v5TJisZpr7QJ4=a z^sWlSTxk9CBBCG2w8!}!bJ8t$mHE5?2G)n!O+c1S;^OhW6?X8GY>VC07w8y0Lz7&q zn}x8-b&~BUO`v1G{I+}U*?-Tj%rkc1GqHE#j$N4p_wLz)te;((y%V?Z-<84kWw+jT z%e{9fu69~XQ~i`iFO@x2C#f1Oe2E5;a!tQM6N6ao%lem5Am(=qMTNWdgY&+p)*LiNYbuxD45!ngf{9} zT!mgsRy0PdvKOHYz5WCIW#7lesZT$IkECn$MAWC3&Dz}-iI#+mcsOS#PMo~lZ zrc|Ogv!~F9F2CqXjjy#IM|Kpxdq08?TIioa0tT`R`IKHpF%rYvlwx=c?`xx(;kxH# zj$outy{{txsyB}CZC`~mQQyJ&It+4N*(qehhd-@Tv!~IlXRsGptMUWrxO4!Ai+CMJh|o{ZfsC;zcrnP74A(On(BGU5r^s{3ol( zDA!p0@+>A^#%WLwayMQ@bLMC4P zwef&+JT&UX-b5VZPT&9Mh>*Rr%Mqje&^E^?Hq0N*gNmht*|82vh87M?C9>%nnBdq;2@DOg;XXuW*Vf^kK zx?#C|zKSi<+uShqd>(F?ESkAd-dNqR0KSOw;D)IuS`5FhS*#cqR{hCt*muq1v2Iuh zN#TYCk2EU(V8ZI$4U0oX%OCqDYDndV{g6I%xnbYd_*&htqB$5E?QBx+4HyfP`+>De z?g#0P%RRq4!*ahZA^gBA?74`H`Ec|hA9pJC=Z(;KI{;>G6n{mwV7uh6QXeXhM?cWQ zwi8rJoMuRt`^(MZcDe7j;R)eyd#;gsvI({G9uS9=(F3-jhEzRZ7k%jJ0hefetvw** zd-zxFu4F_y9_`MbDOJd;M&e0k`;B6UoSVmQ+{5>Vx`*@m=Ix4s*Tt3m!Si1mQ}zeX zf1MEl+^rF{Yq@CmY&W)dX%H@3DEqcSorU%7X;dw2T9NK}-{yB`xNl#AeikziHX^pv zq~5(L(!2Ryn|RS_|K5mhE6bwi$h-F5-K#%S;$c40o#_RdVRoJ;_wbWuaeEJ69mNy9 zJM>H=^D+}!=RG?P8KY;PKnT~#y3UJzCP4Hk%W`jxfN@J?meDR+}6Vt zfN&pwr$*V%Z+9Pmy9SZ6j~jGaSRelwsuq3x<8;USIKMlSecUnGjpc}u$!@;FT}*cG zNKg*gre;K^RJGWbh^`&Z$y_#af@ZwKpfWeo4mcWgyLwnU0vy#0_zA-Vd|UI@E*{D1 z;Ok~_t2*d-2HXuYevanHCOVz#lh~^D9L+$K_KK|SFSMHbcQ;x|vo*13>Dih=y9hw@ zTHa{H*7P~uy`(vuIK;I69p*yrUl=xqVd+gdq4OOOku3qj&Iz5bYI0k(beagnfUz(Q zHVTY|1{LjC&fh>&V2hS4gz1+p zv1*X#WJSFrWKNBUWGzyM9ZbC}4^q60d>?j@+Ap-7_&}59J{M_{_1!&Y@x{@1aUji3 zbQh|%(TuOGO*0?LN#b;G_UqPJJ5D%o8N3HOXkZ_RLI&*PQmKT}@ybW~xYSvUL_p-5hR3r^q6bG$@UID#F18stj}zyXY%4BOFZEBbZT!W> z{CWw$UdpeR;mR(j%XVC_)8?@Fvjcx7*iL@Ef?s#hi=|AiI~b*3E7%x+btS)Eh3hG% z*DPF%-~6Bic0Juai7rnLo;`)`#_4hcU2dd{Uaas-_&LEh1fO7c;vV~)>BSWL`OCZc z_38Y255FGZ*Mt0eFTdW0E2j~A2LJubxE^lFMH7ec0}XyQ{$PK6xdcNm$vA@NEJqiy z7(*}4@TlM_xxiwYz9`a#FR(C{VwCalG!rW~DpaIPF5s{)1`*3T_#!eaXIh2jU05uM zcoZiLU~vrJ&PA@tq{V>P72a4+ObZ?uG4UYkBD)`ZjA0_PVf#)mfp}1#n zq3-e~TtYc4tSz-^-h2K#+2&23a_KV<-rjQv; zHSJP@U)F_hD@jR@Px@ex2`m2#m4suRM+-^mujf zm`luRwNjHd4MwS6zTQHt$(jgeM)-Q4PLlNd4+I-DWNxJ;MAC-0J=ezMhhQ8k{4V`T znY>Tw*jxPTI!f8+%g1Q`z zIw^l8QtkQP*GOiXh+F0NFuHHta=nMKnf@BdD781(Fk9Xaaqq^(qmA@Ws2z~8)lN=q zaq6$W7YhnAchJtUSWvZmx?G*a`m^pLR`}u67@SQZVFnLYi7ghe9(^C=j%O;=#a0x4 zFU}6p?chIEJ!}n-pme35a^A5Y)1R&TmZSau3%61GgcJxt$&uqVtVw_v=1i&)pnoC= zA^yPBOR#{){wLlmPg*d6{jBX#Y-}L;!j=MU>@V$y7eivBeYT3fVLR|A$9i#vMqZ6S z{@Oiv?#*zzYgGvO(h2Tk9D}hifq6iwhNbbBCQ277t))E5ohP) z;W?!XL^W=aDaop3Q7RWjwwtKC zhc36#+rOQ5Cyb${a?w+HwYUato3BYUT;6`xpT6(h>95g&aV_%>Vz6w)2n8qvG z2^i;c6hqD?*NdXR3<-rQ^lB7Ev)gG;k@^{$`Tspdax7y!MWT`6DY9phTPIf7K9QY8 z_FmvU!5+gEYUzFW16R%Or!8r?hcP0yv_h)Yc_H@@P9yE)Knu0C_4B)~R%RV{!jPjc zl+hP#3$WU&F{PF<6q8CGPVJyZN$iq?eaDXC3#Ih^F67ONVFBC)bw3zaw*_8&?M?Q9 zILfdRYOrGW0A4iNhj>BuJL1nr#GgZW#eSJkV;|K|grm%#b4R4k{y@C^xcKu)`~j2x zi}>>?@#oXx&u7J-&x=1_z#kZ>FVY{l$N0m(f{Sns+1GFjINuO|zJ)&%?AzkUcj$-o zxo`jv9fL&M9+6`VBTH+pJMsB8=}oytjkSh~PjRoc2ly_K2-v)h{&eI4-rkW1Xc!X% zP3aQ8L*oDvycIcpfyjO2Ad*Xu*c*8yBPMt;nTY-1v3{LrqSAW85x&PPO$&?T5V>nj zt9U3?mHyEd4cqIzhQn-NwJS5@VYzUoQO!*9PYZM_&XL0_7_&k~o>o}TP@-#AFLqT`WUK*@3;)A z;KNjQh#5%oRMlG+Mrur{)ssm8LUr{zKRI+J8Kwznv|h1D`v|f5w;=+CM7mg1@*D|X z{4GL)aW1CXRyNd&1Mfq*8rWo{jv}p7NRxYr-klC*nvHZ#n( z2&4IBI{|jI{7da`Mnixi=?SrDC#=c6H3Sfu^Wsd}@ytU80_y4L0r?vFxf4~aRJ@7* zQMvTbQgY{CedxwZXw%y9%y!p|JBo%|8ofpf;A56SNDG(@uMY6-gzP};_5hUp0NA$Am{lj3b9m|w%U)BM|_MspzA zlVwA`6X3ks_(HKH^h|T)5m!5kKZ-V@_@}_?MFOk83+n6|S2f{I!+(_%{?FUs|E-4a zR1I%)!ndmiiNB^9QtOel2TQ^R3@2CmL7OP^zGgJ*x1H4*E6)8MOelzby;}STJvzX0 zif`G+w+-d*gMBioA{@qyDTrAwj~&3VGos%E_eVG*NI0}>1v-agZd_Qv338VE$ypv^ z@8^t)sLLdt#(R*7Qn}G;P1;1WSAVAD#eAd%=i5#S+Z*w9-rk~9Fn{EPZx>7n-zk_s zal*F?ri8BrvxnBganme_X_rrNNV_KAszGr7!jPSf$iRFBRMeCpq3kngdWB2jmRm_({yrM-TknnHG{v0+4bh8utBmzbHcv4S_ zd}`37T^+c;{Sq`%oE6ul*=3NRIh7@jtC*hUp zfRtJ6Fpm=yX-Rb*Yu~M7JE0gQ6PyQwfrh7~C@^ZRD-zxs&B930?J352LP*8cv2_AO zN*KVn*o<7_fbgLO9qnw4X^-e#F>ke1eoQk^MZb}rmbeeuyUpVMsk0xW#!*QGg?bd{ z@;x|@u6|#xc8K>#WBxuOY>F5$Uvqs6p43Kl>cznF<(-Nn$7~5)~^e+wY{?^O0Att5g&G&vx@mr$?3y( zEK9orM}L>mC9ZR}AW4?oU3-rce&=0#uuYX24SKq>!uhhqQthHju|3f6ob5?ukfBWM z@aqeLuVaSjbeD=wXlyrRH`(u#YKdB`r4O8xzPZy{ywr)YU8EjCxp3@zQ_v-DG9>7A zPWX0;OZZOw-|2*(i2o*^Xr(nZRT~*;SQuAyY4&!oYN2tU2mmP*^wW5JB2@eo8s&#a zv5|vj^P5|b$YAo1QA7okO2i<0@6?9O8cc@M2%fn+LxvD@G&lm0<~fy@p5b14hG$>% zxqM9Jmuh%j!%+;gbgTfDogQgZOh+=+Nrnye>w2F5rUg}DF#ZeejAv8G%MONw*IV#W z5^qsvTBN?#4ms>5o0B-?z{nk|2qW~cO@5DVwuWlKSBqLyeHa1QJEXnx0i*O+us5*~i2 z#c*(ao4yPSck;@#wPtbudFL<&lw{ths|MMd!Toz*|-h@ zy$s5w3G}XZ!nd0~0pISD>(EQ{_^Hl%=IaFN+7{sZNpcy!nLW@u=xm1F6GInI~!5~>>{dh0q*RtIWe~PiC;mvH16yho$&1x zk?@`F?7N-t6Y-C_vsCT8+}Sv;Xr8i_fW3(BY=VUnUhHR3U(|~YnX(PLL%T;jT~M`#D*Cc+vl_MuyR~af9F?^<)r__S-)x5!w)HWN zEaAW%*{u#5=&CGeYspLSZhHttF}?5wjcrQr){qZ)w@Ps4<=y@ql?(6oU+9i|xBM=p zcPrYl2;S{{r$ajMZbcP|vmo>JZWZYHc(zoXxPiC`sgsPH1?}I_68N1y5+CCDWX<37wNEGNJK^vx@mrX`vGu?L@Lq zXuQGMf+QljCp6yWgx`7B?g>ng8L0Z)dZF?+i27Zge;{#YFr!`R9y5+Bu`P z&MUT!lRquJtQWA)aBM4`G7;Ne0e-~9w(>g_+wQ`bDz;T!2eIv1O$=*n8_Dvk-{m!O zIPx`@$xT+9SagZVR#Zf1ij*qY9t$zAj(2-!u(*e!T1?{b@8sMK4{~o;E~6Ra3TUIj zJ0ry1w}_P+D*l>wnGT1#tB(ZOh}1=zTL~T+kZx#)6n6V#0$sv@2fAB~K-WSDEyEU^ zwG<}Axoe2sBF?>1BMZ)lmhoPFuvn@?#o@5{yjRa0xr-(|MzbAr<0A*07OI94#zo`s7l@ zPzo(SnDA92OE6Q7|Jbht*uONup5Mh{&)3EeF}|2nu8>~X;?tc6u|n`x(s?P?on90( zyQg48hCAl7i31pnFGmSLV+2g2uOlIT4%cc81>5 zUMSLW?al;M7L_Pdvzk8RTg*EA%GsGHR17*Jiy1#@w#YVWl6>xMh#>3}1WY*5I=y$5 z#$ROg>IYgae#wnS(jvxKH1s0ID>@Kw>3{3xft{>k{7Y9;5?3*PAElE9ij_3dD#q{f zZ;e%qd~-nFe`O2wil^n&wUzx7KQ#4!;X*lP!Q#&a0!BDzpMqY!sjWXpx~4sjkno*x z#AYXad)JrnHI?{)M(PENS2(MkZ#3^5SV>q8wjEftNsxUtl4yUtB~BE!P3;zfOhcRG zb&Kzm?5Uqx`u01?XvcmZZ>T!~;;<9GUHT+^r}Q0l!naGGgs-KqPup5eN&CQYbR_ho z6NmYVqI)DXK^EuQSY%I%c!d*vJBtK-JBcErpl^0oF<%NTq_egY$UXx4K_~V}1ado1 zpLD{v%WxtCAjC#s^(AK&DH+hDv{PFCt(JH9YR@!jm3Pt_+IBwJ2PS{$Y(x?tBAPZy ztwlaHNYk#A-QUs@(KsJTmu7E(JzwZ}lUgGB6~GdsN=%pyC zS3;#-BFg#7mxyv+r(Pm@F2W{=7x6hM&Z7ilxjgiG;*1#AT1~eLULLwzC9|em9;zay z(9+QB9Ag1->j*=8X&KGIvd~-7r28sl;^4coBDT5!L{cMSmITP26!TVllLs`z)VN@z zS0ye7-ES86Uwn2W{8$o4@_`q5Dd?2hX4@D*%%ZwUluMI2(Qv}II~M|eNEs(C1%08j z9#b85vVlyx%n4G6=2B2;=hUt-l3Yf#YgQt zE=^Ly%})6CE+OGNhlB2P!cW9MnmbR`M#7VYaYdJAd%>!O#(O-nBN{gA5Jw z^&Eg}3FuLLu7X7+T9COrwH~kri{UBg|C5%0*4h~!P9T`~642+iLk_#f=Cl`uLvjfy zVZ^7ltxG^H_-YZ0stqH^+9&k{m|4|`B}K4QSk7o0?8n5gl8b0~mud;<8&J8J(S9S{ z@fmG?7ds~`mw@tEY6}zXSV)rmlT~y`>oH=NfT}Pm6cp}C8x)F#g$c3XQ|1*53b3va zaHGOK2yjHXNaPn@Mk52h@IxKv{f?FyyWvbuivNIF+<)L4#d(r^k??Lo%RN79HmrkS z?o%k2CYbw%6TaQN3Ha%QxxaMQGhatw2(dCJ}cRxP5-8e^G+r#gdnn4W6b6sc6$3cgYfsuCpl zG>_|!pTa@?zhjwavz_r_*R_LXo+sO3#j7*JStT5}vzmUHrv+^-aS0ymV^VE^+ck}C zN)OhM4|uRjaOUN~{yHib9_*Xxj(f2DE~N)6+OY^8tVl9GBOa^(9m#hL&t}ZWgH>QV z^Y8=7 zBatD7^032yXhHDf{V_AD3zng0ED}s=5iHm=9G zQoJW)1h9kw4`5R--?ZSYr7t0VeZN$Y;QZG#vf%t#Sibo)U7-qo!gQYJ^35efZT&bE z)d?R?_2lK77PLDdH7(x^kvh4soa{2XC58%Af1TG*!8VXb3>92VcYLUT-=!QX5F(Ry z`KFQ43&d5bZw%tG%Qx9rfb^9C()=zK>9|#!@#NO0vC}EIq#L`~W}GoT!7kv}Av$mT zBDz>k^p?k0+Yh4_Cr}r+;oxt6xT!cPa|NBC(~FBg9y5h^AUHY%hm?*^)~ZLnTDC#Q zOBOtAQJia3akkpQU}NBaP4WFOFHVP~g-;ZvC-qU9q&tYaUFu9_uZGWZvmOrIspO_{ z%;jjlh@+NAZz)&vN3lU1ox6;)j~^5tVLQ1-El1lTPvU4E+E$MLyzQ8WG&fK)Gve3Dbh7L+v#}j)*nUQnEB`A9S+GF6WO6 z#Ek&nF6Wgvz>f~__)!C4RYn;tXqNTYm+b#>co$&1nC9N#%cfwD? z-!2QwC#n_C5P`$aI#P;2+oD!cQ_{e1sxBWfUWq2asiKcNTWhDNP|=Yyz;6l^gn3ZU zOI%eX?w*m>);#K}C1&F}3BQM(T(xA$qpcwL63mhri%}W*4OeCUTI_a~YnB_?W4UtE zYlRN)_Se^&v$NG&BU_)z)f)FVs|~N-I!(HrkbvhQkcu$c5W99S#r-WU7!HLo>^`y# zVl*9l#1*`HK3nq|&03}2G6->JG>BVxSZD8ut5n=*bjCk&5!%dePMSMx>x})8V09tt z_Y=S}99P&g2fyiTja@yah5uIzf}fr%|I1mAA*)XyuGpusR&AM|1JlkG`@HC;g~4~K z@JpTW?J8X0Z|C~?aRW0(-@MvcZ%QfH7Tx{fG8zVOju96o!dG5>S~G>8V@e$0TIoQ?7?O96g(2gUIGRB>gA zibHKD5p$cx-Uty$+=xTQRX9_KRonwM+P0U8zWct(sHW=N#4?`W=( zDdsALGIp(`Cw1C)^vDsqUnhUQ50=@U9oM)VjZ`%C=3 zGAgL$%2}j8R4da)O}-(RYAckWB15=7)G3)hKm~@_WB9{Gbw%a}&wn&yK%_U3A^ec> z@-G?B(|OwCM;?kDgcRHJhWa1-48axC2zoqK^ZRq{)rR@q*`6+c%-a`+5OQL>u?-Ry zZnfCUd!cvDEe-w~igv!I3#o6$_jKXfpYQ3CFiIPYFl}KzwS4QoWs)nB_MACelEp|< z&%(46I%bIdmV-=$=DP?#Y~;#6W$(tHu!#tFhrPiFD|LtA@OU6*vqD2cJ4E|DKGRjN zHfwqGnQG>Eu8}XwUcx?TROt5v(3SQuo@jFXf>0KF&!kfxvRC|^w-K4gZM}ltL?Gg` z8yD0*jjsiID)#+^;~OvKZR|^i`gUsM5PNG1sISx7HaaV9b~8fY#p2UnV%pHNvBr!qE6<4Xv za-JmU!g8hw7@yaUOt^P+W=S6axFk7B*d6UOiY|^Ny~sf}Jxv+d)0NO<2493wm>!PCtMJZnxb6NCz_gn(kV5iC-GU%`FO&c9;Y~Ndo>(V z@5F4mlrJ?}r**esZR0lP*?!)Myf;e+T-JHskewTmA)Hg}3m_j0d#oh2a?0~l9Cw=+ zL~kOph0iW>aN6i|769So#nr|jf#Q@A3TejtLpv(*)TYMCEjcV0pb0&J5O#)a;Ew78 zNrFcPq^^tF=(Yf4hm!h-rjVtjsr1_)Iz-pdZ=^Fi(r?KKJWqIv#xR5O-jmD8Y|klj zUzOLdMgY2^_zkn~18ctOE26yLi>`VQw(uq<<$k#ALb)|%1h}RA6;uUs3u9)KH?5W1rsp|HGn=7Q`2xOuuDPe)O$OVe)9N)yDqrCh3%8l_yh^jw@jHCrpe4?r~EL{6(xEXRhX@(}!Gok5* z-d;#U=BDt&;T^rbqobpl%q29^Q}IOTT+G!W9&q{$0YS2Ku7ZDvqvhOz(8%?SH#$9< zIRfCL)k=04&~^mY^@)d=kV%m95m2^1883x0nSd<;q2XssMy!Z3qBt5JT`OLM^!MU6 z1f!SWpE2*?uS9xyt%OkEFh1Dp-)7C+9^MhVsX&OC8A1FVEj|NQ3~hI12#V@#jN97z zqIwPSwNu3WVJ(lNh8`LXwSz<^ve$tH{kG{ZV>!UP+u#icF5O~f_2axK?|62SRs&=k zr5O)L_>H4)M6&&HNBO4o?s#2YkF->L*I~tET;uG`SJP7|K`Nb)XnC6(nSci zwF}xF&Y#)*<(~=eI;lU92|PcgQ*OwyY!^Rf0q+}68?5+h|OOf zcUCrEVK}4t%Yv4XSlXW0Dmqo(vf~psih~m*F!*tNYIC4X&G`mdvHs zcts0H!#*V#;#nXofhM`6TV#l(&GOTC;TM*(^-s1 zopq$-^5R84L|*ZpPN^cZfqqHJ zVOw4?y$Ny_#Gow(JQgdj*aAI;qz|zhIljqVOs0iDg@5Wy3;*@D!5y9+u7@m;3cmlC zSF4o@USNijrS_8ER<_*8FiAw@0K?@x+u4EG?|c6Mv9z}V1Ap7 z(3^G{dFk+(BHj<4|GG}er<-pP+P7Mnsq~iA9np#H-SrnIxg9ikUX# zEL17uhNMHC&xGbQ!{GpFgubx z2H5PckisR?9LeF*xjbafWtyWP8v8ALuZ)qu3@cQWC&KSFZ$3q+tL!rC^jgFRk!_XL z40P#ggv|@roH#u5^?BC)Rg_CioHFOBK8cU{aBZqARQ64L-T|GV*t&Kk%cf2DSwtA0 zJ>yJuU(Iey#i{hzuQ^Cg0vOU`$x!8zoa<9Sl{x3+fw>aD6Bbj&0mRfXQ(^-WA$Ly%uyq$JifuH`u;AC zv8`j%n}|BaXZ<3TJm8?AFf0Y;8BHE+uR7io8PTK#1E9RkEnJ%O77)q(U#>aX;ov-B zDf>V5sgC-8G6FIu+lW0?ET3FX=42a#6uP5Za$PWF>& zlw^yHtmd1rb_4RN>cwWGP(5DhJaNrjuaTIzrm9FvVDq1Mj&iRwa;_tP#@Yt3R9Vo@ zvVkqvon{)_YJ=QLv4)=M4)s=7UrtVIdy`rGi9lL@pruZ4TZ*ASZgu0bK-GvSjdF$> z!yc!m@pL)%adRGUAiB{MufP@;Z1Qb;MSaX9nadA09rjj51`ro%gGo+>lk74?uhk0Gi|p_;8%DH|K35LrVJ z4(}M}>%L@m{XMjgcOf%Xs^rQvdO>`dqV*X{VV*Jgf?;UfvP(P4c$aLVjQ0>(bRV;g zy-PpBkXiTX5jy$$H!H>8AI14{wi0=3{{`@YTAHhT;7INa>IPsM7x|_3|yAr0C zp6p798WKH;ht8EJp>T6K678w|ns90Sh+a)<)ho09 z7ve;O+QRlw%g%rkagRx{C#(}O0W3RkBH~D=6&$+)5Es#jIKSQU%f2Nhn`@}9&4)0% zfN~)&hy!GJ5K0!HzehFu(s&TJCVLRgS$Gt(XJ^K+s|vr*sK@~z|w8LWmEbwK27 z32p6A$AV8eW1{Bnf-Ne}W|e_&@)}UFgVlJFndF;dBrSwfiBNpPD+ya9s-1-F!cRZ=CM-mf#lt@j9zRJVr$X98@(dDyT-=;|; zAX1KjtZQe5@?mVRv_AW+OMfK$GM_Sw`%fIQFT|$_wTXR$T6hM0n!hqB_k{InegG^x z@M+>mrxhdnI3O;fPZM5GPOCm69Y~IkbYEuiZERgb`8XH5duFgxu96YhgFn=4P2=nA zviLfbnKG9&UeZ}1-Pij;gT%PSTrf^^1aidWlhh{RyR6Y57Vf)j(ZD+LT_ir_yM*xx z`7Wmd-z6A|w>vNDwZ&_>ceX%7B{af<@hmu)eE7tx9V_K=d>gj+E9PeF*s_9BKuQ&) z4Pj3!?5>pI8zLOx0A*Grrhc9{2nBx672rSzevc$P`8^@R>+YT4_ZU3`evj%ho%=nv z0B7O%?4djE_wc)vevfFxLj0cHhL%x&afkaR_}6#p_Q*&rVXp=MCFj`dQ7F2cp6g;& zYe3C3<28eAY)~$b<&D;Yhh17H+2eVpS^SAZ@`X4&p(e4T)W9>~@I2Qf+!NN}IR-2{ zaCqWKr!^uw0Emm|@Lc5RJksBJJ!)+m%dzwe57Mx;GXdL@oa4&sD!w+R}S;;2lV zVBHd}yW;D!_yjx8Vc?_Wj7HOWY{@7F4a%Pv&0nj_?^7cVo-c6U4>v362m);Gy z4AA8b8*zCHUG|=b%YM4N=X_i~K$pjHggg6fT$=0;`j#v?*o}$@;czIQPaXP8LTznwTZ>XaRb&v$wt1*-|?-MQ=;DMBY_J z@)G%!4f(9AmbfMI96sw{iM*?#c`cFWSVTB$$e6O_bh7$I{M&FQi_N4`@@Smh*EO*f zP$}-XmmjFjceyKe^F#2sDHiz%d|zccAL-#1dp(wQsKd7T>2%8105XQZim;1PxHTH& zoXb3~75pG7+ZNvchL#KW`WJM^-D`dq>t4UDA07!#Iif#X*oW!Q)_v$0Y%^NTw$tTh zW+F1C3kIhq&n>kzJND=yM?>z`oT_=}7A^%8!)lwU8ym0eDk?YO|J9TtCf z;Lilx$*))N>n?h+l#S4z6>L=e8RM_6GDgsOt5|YdMBN&&Hp-2DY=q_&dR#gDcC@z*l9kP#fMz3WO?&0x!PyCi_4v2{xbxD|VOSMU#Dq7i7O9 z{(MCI>BcLzj8J1A)lW{>i`x(q(sQm7>SrTJ#HoXQ^*J0UHItpeDrD>kZX5_G*NmDe z&B3mvd!B~#S87<)jzb1>wP~-BxmdV?BU(F|y60lGWQmR(sd<&WS5W(7Km|?^F%mYi z4(1Vu*gkxksGwGqF@RTY?d$TF(|Il}fBD{t+xNG$;`$$uEPpvr_wW%x-YY;dYrsr; zk-Zg{lda}t(_e)&=^W3hq$364!|WA!bh7351R~p_-m^mV znSD$Bl}du4>+Ae1K(M_69Pk;N#ov7!+5Pl~UVj=UEBYGUSH5og-HlQMN1jp@>`_!) z98euHVAZl(v!c7i2^4jZy4VjDK&`L<>pu`=+GK96=Ia{pOHu-+!w)Th4Xb9#jfVfq zl<(&3>&$7+AO$q&oG9{`^u8SqzOp9elq-8#k3 z+G^HHEiPVuZ?2LrRxyP=;~{y9de83x7`pIBsEv*;{5#^)5Asjb5rBOdABRPn{eIgc zOpJ$H_#J$*2rcxNUqYS7Xy&&#?(zODeJY#z^%S4VW!Ya%@u^&vEr_SxLFM!ruAN%! z{l1h?Wp7W%km1xEiB}aHhUdc_(n#_0Hwc(1<*$!_YH98;`x)$USlZ$bL+D0-#CZrU z-tYC%2y7YImo=qIzTCv(ni6Se)I zqzEssG7an7Ts5!9A*Qq0x;Wk^D|BJ&6yYuj{gzG$old;$biPdcz`Jo`P|P7X+O_;@ zdisCaMFp#8)=vK$QqkXzy2+I%hU~Ij=9v{mmYKB;$+fqIUuw#DLL?vF^X{bl0TKM#hc<>iv>B{YYyp{5KB5q-FD^v1~RmBr?n4y1#Z+?BwZRa0r%YZg`PBxQk6HkMh%s zvos`%S)f98s^pb16%}-`^LD0o=r-Wf#qb}-)6hN!Z-XO)E_9q6>2p9Zdf96J=^`^~ zvz1ZdzHuumP71~eM;VLmb~Gn#--!3`jJ^@@hoft-H})XB@YatLR^7Hw7d2l^t$4*j?EH2;dL`6Rik_3ujUm~#l3y(1H*@zc%6QgBkvOVs(NmPRjjpwzdgRLeI@ zjazW)5(Zqf1Mmh10Z8nm)BRdUyHe6BJOQNhZAK#~Qq3|VeU+UCnlH0FRVA9*l6 zN9G(&Nz0MAK4Qnz;Knf*0#0t!9T3hmH#SdHpW#i`ahjIbh~vn+(sSe;j^?E0NL(L@ z$JXG=+gwOEx$+hVgfq<*BW>fh6LbI{_J`0;)YsGV%1ck|;%IJDFg-a)*>!#n2H3pO$msQ!oYPkWH&r$v~R)JBn*uDWCi0|ud z`h8RaS#=_zj@BoLN0`wx9u45DM$PlGGAWt9;{Xq1-N|w!oU(4Z?4ZkTy6mCLZFISV zE_>;+4;QcQ5AdAmY@?d3d6Ugjxxm*%5RjM2)iW>W(DW|?tA7!E{fjEnzolVY z2nYR(kO_V@{k4>T4V-u@>#diy{6W!t%rTlzdkfW>T&coW0D-oCSDvuP8FtlbBU_)F znXHyu>@^^<-+e&*dbA}I%7-TWHTBXY79LISo~$18TKe}bUb%W4zgOTWQe>1*_^S&Z z7Mj-hMu7OavQW+QB^R`Bh2LMQ-{YAdU>SZkUj!wQkKQ`m^4Df_m1<>=eu5QrE31UT+N#ZG^%}DT#*uA9bFU#Wy z2zq@lx;cA28qe;-ozZaiEc~8ehv@3}@J8;h?Vm-<`mpqDmX5T%8?BwGE zzu944^f`1z<5?Crr`Zu)54YGP|AVFEmuZxXBL=2R!DaeMOQR0s?^UaT+%U5*^f|h@2s^nnyt7w=6Kwdx7-X5h%Pw}LeON|g6%xpK>2v6q8+ zq&4|S3rqg01pyZHof`>$VGEI^qkLg0FV2?ZhrdR!I%5Lpu6wy!zSv@Y_`+Ih^#T4x z=5E@mLDU+mimm4*{q=Wqhb$AR1k2YcG|;5r?UzIVL06$P>){~qi?EQW;1@xb;2&-& zQS(<|p*Z|@?2drV2ud?Rs}3(vQnT48fkp$jV-YNcFZWhT_uneEN&qQe)zmi#j^DiB>4UY z#I!_81gv0lHdwFkpBH{XwG(R80)J!p-3;6h1Z(tWDEx+l%Np;`55Lcq%SM%v!U7{5 zp!=J`g%POH#uXf+_E!P2t7qVPP?IV5*guc|!iwa&R~r=%M=4N6G=EnCu@xS}4$-G7 zEc5%3L_1Th%;aiEap)gkN4#o!YDV1;f-V@F&eE3k722MaN5y@GQk_4p&s7>Z^q+t1 z0pHe9gAv#sMQ|Z^xW~=`tDCiQww^C~g1p1*C-`=P{ghvS#;-r8Yg2Gfh7t$?*GIBjNMOYOOIXxwtfn+JdW=6vJFxJB_92r@(1_^9$D;q zk`)_xwDx@lYNI(>N97Q7A`lxS0DX9vEqLY9ObML>Pd9O}M4!^s9O`}UbLRxLK%{jA ziqWzlVD)%b_RCZLp!u|p-5y0MDwTo_2Sb)wMpD6RZxwG_V+dUu>%m&Mv;M0 zr~H0-o8?@07Sv`Rlr&;eRikJP3#nN=KjDI9(n&@C{sd5YwjGoEm z6g#8ff3|IdofFLDnkvDtCfy6$H2@Eupt5!|-JX=vLLR+*bb) z8W#OxOwj>qtFP#k*IKgRr8?r#^-WWx7}n8D7r9zYm`%3!gU@M;y$x17hqn3#KbnNL zx*HbmM`>E&W8sf`Vd36+p{?+gvkHgTG^(GiDcNajeGZrDFb}6fs!AzhlXZSj0TpN#P%sZgx5*t;+ z;2KNwn4JxHn`AYr1~yj&)VR%#5k9`UPK^d*Gd76y+?Bj7x^fQzpX}y!rP{)=O#Ef7a%UaEp4$C$2yTEt=4+j9w*tGmylf(mI<@dkrgm8(3=szMM8RZ?ZCF3sAidaQp?z)vPybS`(8%+R?!!{jhs${8ll znY?5&Pv`O?laEZkAW5GV?yIZh&JTJ$0x343vgRC9cDa+vLRnP}buM6B6~eRDvRG9O zz49N#%EhH0#Hwol3We3rL0!S5@f|vzh{1}{wQm6Hqr8GA1F*8_5PkJN#Cz$ho5;wa huQrjTZ?j$reU;x>`YOLyrN4q+_2NcVVZa)l`wh}==9mBg literal 0 HcmV?d00001 diff --git a/v0.5.3/.doctrees/methoddocs/middlewares.doctree b/v0.5.3/.doctrees/methoddocs/middlewares.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6016fe5d5cbd93b2ef9c5ef4f0c7d6ac20f7e7a3 GIT binary patch literal 161457 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 aFK!{}WG21=8jqFz#`ERiG6ZTE==~r6IQ<6z literal 0 HcmV?d00001 diff --git a/v0.5.3/.doctrees/methoddocs/runner.doctree b/v0.5.3/.doctrees/methoddocs/runner.doctree new file mode 100644 index 0000000000000000000000000000000000000000..049b037d25f09baf0ba6a3ce3ace15ade432bb7e GIT binary patch literal 189465 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 E0$}morvLx| literal 0 HcmV?d00001 diff --git a/v0.5.3/.doctrees/methoddocs/subscriptions.doctree b/v0.5.3/.doctrees/methoddocs/subscriptions.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f9f789c463f26f8ed143b477d0ae1f0f11bef6d2 GIT binary patch literal 197765 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 dJ%dlY)p4L)QduwV{rwZz^MRhbkv)h0 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%0DXB?X*zyY(t^WfpezF{7XaN~uno}!%hmh< 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 literal 0 HcmV?d00001 diff --git a/v0.5.3/.doctrees/userguides/quickstart.doctree b/v0.5.3/.doctrees/userguides/quickstart.doctree new file mode 100644 index 0000000000000000000000000000000000000000..62646110475a108ab1aa6ba3fc9a37ba320db6fa GIT binary patch literal 25592 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 S8-H7&65-D(5adwu=Klaet|Bl1 literal 0 HcmV?d00001 diff --git a/v0.5.3/_sources/commands/run.rst.txt b/v0.5.3/_sources/commands/run.rst.txt new file mode 100644 index 00000000..75a12f64 --- /dev/null +++ b/v0.5.3/_sources/commands/run.rst.txt @@ -0,0 +1,6 @@ +run +*** + +.. click:: silverback._cli:run + :prog: run + :nested: none diff --git a/v0.5.3/_sources/index.md.txt b/v0.5.3/_sources/index.md.txt new file mode 100644 index 00000000..d6177851 --- /dev/null +++ b/v0.5.3/_sources/index.md.txt @@ -0,0 +1,31 @@ +# Silverback Docs + +```{eval-rst} +.. toctree:: + :caption: User Guides + :maxdepth: 1 + + userguides/quickstart + userguides/development +``` + +```{eval-rst} +.. toctree:: + :caption: CLI Reference + :maxdepth: 1 + + commands/run.rst +``` + +```{eval-rst} +.. toctree:: + :caption: Python Reference + :maxdepth: 1 + + methoddocs/application.md + methoddocs/runner.md + methoddocs/middlewares.md + methoddocs/subscriptions.md + methoddocs/exceptions.md + methoddocs/utils.md +``` diff --git a/v0.5.3/_sources/methoddocs/application.md.txt b/v0.5.3/_sources/methoddocs/application.md.txt new file mode 100644 index 00000000..7d7d70e5 --- /dev/null +++ b/v0.5.3/_sources/methoddocs/application.md.txt @@ -0,0 +1,10 @@ +# silverback.application + +The `silverback.application` module contains the high-level implementation of the the user's +Silverback application, meant to be used to expose method handlers and other functionality. + +```{eval-rst} +.. automodule:: silverback.application + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/methoddocs/exceptions.md.txt b/v0.5.3/_sources/methoddocs/exceptions.md.txt new file mode 100644 index 00000000..efdf9222 --- /dev/null +++ b/v0.5.3/_sources/methoddocs/exceptions.md.txt @@ -0,0 +1,7 @@ +# silverback.exceptions + +```{eval-rst} +.. automodule:: silverback.exceptions + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/methoddocs/middlewares.md.txt b/v0.5.3/_sources/methoddocs/middlewares.md.txt new file mode 100644 index 00000000..4f76353f --- /dev/null +++ b/v0.5.3/_sources/methoddocs/middlewares.md.txt @@ -0,0 +1,10 @@ +# silverback.middlewares + +The `silverback.middlewares` module contains middleware intended to improve the usability of +silverback as a whole, and add integrations for the silverback platform as well. + +```{eval-rst} +.. automodule:: silverback.middlewares + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/methoddocs/runner.md.txt b/v0.5.3/_sources/methoddocs/runner.md.txt new file mode 100644 index 00000000..b977d057 --- /dev/null +++ b/v0.5.3/_sources/methoddocs/runner.md.txt @@ -0,0 +1,10 @@ +# silverback.runner + +The `silverback.runner` module contains implementations for running Silverback apps in a variety +of different scenarios and trigger methods. + +```{eval-rst} +.. automodule:: silverback.runner + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/methoddocs/subscriptions.md.txt b/v0.5.3/_sources/methoddocs/subscriptions.md.txt new file mode 100644 index 00000000..fdf71f2e --- /dev/null +++ b/v0.5.3/_sources/methoddocs/subscriptions.md.txt @@ -0,0 +1,10 @@ +# silverback.subscriptions + +The `silverback.subscriptions` module contains an implementation of a Websocket subscription queue, +used for connected to an RPC node via websockets that implements the `eth_subscribe` RPC method. + +```{eval-rst} +.. automodule:: silverback.subscriptions + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/methoddocs/utils.md.txt b/v0.5.3/_sources/methoddocs/utils.md.txt new file mode 100644 index 00000000..e04fcf74 --- /dev/null +++ b/v0.5.3/_sources/methoddocs/utils.md.txt @@ -0,0 +1,7 @@ +# silverback.utils + +```{eval-rst} +.. automodule:: silverback.utils + :members: + :show-inheritance: +``` diff --git a/v0.5.3/_sources/userguides/development.md.txt b/v0.5.3/_sources/userguides/development.md.txt new file mode 100644 index 00000000..a62514d2 --- /dev/null +++ b/v0.5.3/_sources/userguides/development.md.txt @@ -0,0 +1,193 @@ +# Developing a Silverback Application + +In this guide, we are going to show you more details on how to build an application with Silverback. + +## Prerequisites + +You should have a python project with Silverback installed. +You can install Silverback via `pip install silverback` + +## Creating an Application + +Creating a Silverback Application is easy, to do so initialize the `silverback.SilverbackApp` class: + +```py +from silverback import SilverbackApp + +app = SilverbackApp() +``` + +The SilverbackApp class handles state and configuration. +Through this class, we can hook up event handlers to be executed each time we encounter a new block or each time a specific event is emitted. +Initializing the app creates a network connection using the Ape configuration of your local project, making it easy to add a Silverback bot to your project in order to perform automation of necessary on-chain interactions required. + +However, by default an app has no configured event handlers, so it won't be very useful. +This is where adding event handlers is useful via the `app.on_` method. +This method lets us specify which event will trigger the execution of our handler as well as which handler to execute. + +## New Block Events + +To add a block handler, you will do the following: + +```py +from ape import chain + +@app.on_(chain.blocks) +def handle_new_block(block): + ... +``` + +Inside of `handle_new_block` you can define any logic that you want to handle each new `block` detected by the silverback client. +You can return any serializable data structure from this function and that will be stored in the results database as a trackable metric for the execution of this handler. +Any errors you raise during this function will get captured by the client, and recorded as a failure to handle this `block`. + +## New Event Logs + +Similarly to blocks, you can handle events emitted by a contract by adding an event handler: + +``` +from ape import Contract + +TOKEN = Contract() + +@app.on_(TOKEN.Transfer) +def handle_token_transfer_events(transfer): + ... +``` + +Inside of `handle_token_transfer_events` you can define any logic that you want to handle each new `transfer` event that gets emitted by `TOKEN.Transfer` detected by the silverback client. +Again, you can return any serializable data structure from this function and that will be stored in the results database as a trackable metric for the execution of this handler. +Any errors you raise during this function will get captured by the client, and recorded as a failure to handle this `transfer` event log. + +## Startup and Shutdown + +### Worker Events + +If you have heavier resources you want to load during startup, or want to initialize things like database connections, you can add a worker startup function like so: + +```py +@app.on_worker_startup() +def handle_on_worker_startup(state): + # Connect to DB, set initial state, etc + ... + +@app.on_worker_shutdown() +def handle_on_worker_shutdown(state): + # cleanup resources, close connections cleanly, etc + ... +``` + +This function comes a parameter `state` that you can use for storing the results of your startup computation or resources that you have provisioned. + +It's import to note that this is useful for ensuring that your workers (of which there can be multiple) have the resources necessary to properly handle any updates you want to make in your handler functions, such as connecting to the Telegram API, an SQL or NoSQL database connection, or something else. **This function will run on every worker process**. + +*New in 0.2.0*: These events moved from `on_startup()` and `on_shutdown()` for clarity. + +#### Worker State + +The `state` variable is also useful as this can be made available to each handler method so other stateful quantities can be maintained for other uses. Each distributed worker has its own instance of state. + +To access the state from a handler, you must annotate `context` as a dependency like so: + +```py +from typing import Annotated +from taskiq import Context, TaskiqDepends + +@app.on_(chain.blocks) +def block_handler(block, context: Annotated[Context, TaskiqDepends()]): + # Access state via context.state + ... +``` + +### Application Events + +You can also add an application startup and shutdown handler that will be **executed once upon every application startup**. This may be useful for things like processing historical events since the application was shutdown or other one-time actions to perform at startup. + +```py +@app.on_startup() +def handle_on_startup(startup_state): + # Process missed events, etc + # process_history(start_block=startup_state.last_block_seen) + # ...or startup_state.last_block_processed + ... + + +@app.on_shutdown() +def handle_on_shutdown(): + # Record final state, etc + ... +``` + +*Changed in 0.2.0*: The behavior of the `@app.on_startup()` decorator and handler signature have changed. It is now executed only once upon application startup and worker events have moved on `@app.on_worker_startup()`. + +## Running your Application + +Once you have programmed your bot, it's really useful to be able to run it locally and validate that it does what you expect it to do. +To run your bot locally, we have included a really useful cli command [`run`](../commands/run) that takes care of connecting to the proper network, configuring signers (using your local Ape accounts), and starting up the application client and in-memory task queue workers. + +```sh +# Run your bot on the Ethereum Sepolia testnet, with your own signer: +$ silverback run my_bot:app --network :sepolia --account acct-name +``` + +It's important to note that signers are optional, if not configured in the application then `app.signer` will be `None`. +You can use this in your application to enable a "test execution" mode, something like this: + +```py +# Compute some metric that might lead to creating a transaction +if app.signer: + # Execute a transaction via `sender=app.signer` +else: + # Log what the transaction *would* have done, had a signer been enabled +``` + +```{note} +If you configure your application to use a signer, and that signer signs anything given to it, remember that you can lose substational amounts of funds if you deploy this to a production network. +Always test your applications throughly before deploying. +``` + +### Distributed Execution + +Using only the `silverback run ...` command in a default configuration executes everything in one process and the job queue is completely in-memory with a shared state. +In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate. + +The primary components are the client and workers. The client handles Silverback events (blocks and contract event logs) and creates jobs for the workers to process in an asynchronous manner. + +For this to work, you must configure a [TaskIQ broker](https://taskiq-python.github.io/guide/architecture-overview.html#broker) capable of distributed processing. +Additonally, it is highly suggested you should also configure a [TaskIQ result backend](https://taskiq-python.github.io/guide/architecture-overview.html#result-backend) in order to process and store the results of executing tasks. + +```{note} +Without configuring a result backend, Silverback may not work as expected since your tasks will now suddenly return `None` instead of the actual result. +``` + +For instance, with [`taskiq_redis`](https://github.com/taskiq-python/taskiq-redis) you could do something like this for the client: + +```bash +export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker" +export SILVERBACK_BROKER_KWARGS='{"queue_name": "taskiq", "url": "redis://127.0.0.1:6379"}' +export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend" +export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379" + +silverback run "example:app" --network :mainnet:alchemy +``` + +And then the worker process with 2 worker subprocesses: + +```bash +export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker" +export SILVERBACK_BROKER_KWARGS='{"url": "redis://127.0.0.1:6379"}' +export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend" +export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379" + +silverback worker -w 2 "example:app" +``` + +This will run one client and 2 workers and all queue data will be go through Redis. + +## Testing your Application + +TODO: Add backtesting mode w/ `silverback test` + +## Deploying to the Silverback Platform + +TODO: Add packaging and deployment to the Silverback platform, once available. diff --git a/v0.5.3/_sources/userguides/quickstart.md.txt b/v0.5.3/_sources/userguides/quickstart.md.txt new file mode 100644 index 00000000..c7719d82 --- /dev/null +++ b/v0.5.3/_sources/userguides/quickstart.md.txt @@ -0,0 +1,2 @@ +```{include} ../../README.md +``` diff --git a/v0.5.3/_static/_sphinx_javascript_frameworks_compat.js b/v0.5.3/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 00000000..81415803 --- /dev/null +++ b/v0.5.3/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/v0.5.3/_static/basic.css b/v0.5.3/_static/basic.css new file mode 100644 index 00000000..7577acb1 --- /dev/null +++ b/v0.5.3/_static/basic.css @@ -0,0 +1,903 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/v0.5.3/_static/css/badge_only.css b/v0.5.3/_static/css/badge_only.css new file mode 100644 index 00000000..c718cee4 --- /dev/null +++ b/v0.5.3/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/v0.5.3/_static/css/theme.css b/v0.5.3/_static/css/theme.css new file mode 100644 index 00000000..19a446a0 --- /dev/null +++ b/v0.5.3/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/v0.5.3/_static/custom.css b/v0.5.3/_static/custom.css new file mode 100644 index 00000000..bea5d91c --- /dev/null +++ b/v0.5.3/_static/custom.css @@ -0,0 +1,311 @@ +@import url("https://fonts.cdnfonts.com/css/barlow"); + +html { + font-weight: 400; + font-family: "Barlow", sans-serif; + min-height: 100%; + background: rgb(244, 244, 244); + font-size: 17px; +} + +#version-picker-label { + color: #000000; + display: inline; + font-size: 16px; + + font-family: "Barlow", sans-serif; + font-weight: 600; + width: 100%; +} + +body { + font-weight: 400; + font-family: "Barlow", sans-serif; + min-height: 100%; + background: rgb(244, 244, 244); + font-size: 17px; +} + +p { + font-weight: 400; + font-family: "Barlow", sans-serif; + font-size: 18px; +} + +h1 { + font-size: 60px; + line-height: 54px; + font-weight: 600; + font-family: "Barlow", sans-serif; + text-transform: uppercase; + letter-spacing: -0.05em; + color: #000000; + padding: 0 !important; +} + +h2 { + font-size: 32px; + line-height: 32px; + font-family: "Barlow", sans-serif; + letter-spacing: -0.02em; + padding: 0; + color: #000000; +} + +h3 { + font-size: 24px; + line-height: 24px; + font-family: "Barlow", sans-serif; + letter-spacing: -0.05em; + font-weight: 300; + color: #000000; +} + +.wy-nav-content-wrap { + margin-left: 300px; + background: #fff; + min-height: 100%; + padding: 20px; +} + +.wy-side-scroll { + width: 320px; + background-color: #ffffff; + position: relative; + overflow-x: hidden; + overflow-y: scroll; + height: 100%; + padding: 20px; +} + +.wy-nav-top { + display: block; + background-color: rgb(255, 255, 255); + padding: 0.4045em 0.809em; + position: relative; + line-height: 50px; + text-align: center; + font-size: 100%; + font-family: "Barlow", sans-serif; + color: black; +} + +.wy-side-nav-search { + display: block; + width: 300px; + /*padding: 0.809em; + margin-bottom: 0.809em;*/ + z-index: 200; + background-color: #000000; + text-align: center; + color: #fafafa; +} + +.wy-menu-vertical header, +.wy-menu-vertical p.caption { + color: #000000; + font-family: "Barlow", sans-serif; + height: 32px; + line-height: 32px; + display: block; + font-weight: 700; + text-transform: uppercase; + font-size: 20px; + white-space: nowrap; + background-color: rgb(255, 255, 255); +} + +.wy-menu-vertical a { + line-height: 18px; + padding: 0.4045em 1.618em; + display: block; + position: relative; + font-size: 90%; + color: #000000; +} + +.rst-content code.literal, +.rst-content tt.literal { + color: #000000; +} + +footer { + color: rgb(0, 0, 0); + display: none; +} + +.wy-nav-top { + display: none; + background: #ffffff; + color: rgb(0, 0, 0); + padding: 0.4045em 0.809em; + position: relative; + line-height: 50px; + text-align: center; + font-size: 100%; +} + +.wy-nav-side { + position: fixed; + top: 0; + bottom: 0; + left: 0; + padding-bottom: 2em; + width: 300px; + overflow-x: hidden; + overflow-y: hidden; + min-height: 100%; + background-color: #ffffff; + z-index: 200; +} + +@media only screen and (min-device-width: 320px) and (max-device-width: 480px) { + .wy-nav-side { + display: none; + } + .wy-nav-side.shift { + display: block; + } + .wy-nav-content-wrap { + margin-left: 0; + background-color: #f2f3f8; + min-height: 100%; + } + .wy-nav-top { + display: block; + color: #fff; + padding: 0.4045em 0.809em; + position: relative; + line-height: 50px; + text-align: center; + font-size: 100%; + } + + .wy-side-nav-search { + display: block; + width: 300px; + /*padding: 0.809em;*/ + margin-bottom: 0.809em; + z-index: 200; + background-color: #000000; + text-align: center; + color: #fafafa; + } + + h1 { + font-size: 32px; + line-height: 32px; + font-family: "Barlow", sans-serif; + text-transform: uppercase; + letter-spacing: -0.05em; + color: #000000; + } + + h2 { + font-size: 34px; + line-height: 34px; + font-family: "Barlow", sans-serif; + letter-spacing: -0.05em; + } +} + +a { + color: rgb(93, 0, 255); + cursor: pointer; +} + +@media only screen and (min-device-width: 320px) and (max-device-width: 480px) { + a { + color: rgb(93, 0, 255); + cursor: pointer; + } +} +.toctree-l3 { + color: red; +} + +.caption-text { + color: black; + margin: -10px; + font-family: "Barlow", sans-serif; + font-weight: 600; + font-size: 24px; + padding: 0 !important; +} + +.reference { + color: rgb(93, 0, 255); +} + +.wy-menu-vertical li.current a { + background: #ff969600; +} + +.wy-menu-vertical a { + line-height: 28px; + font-weight: 400; + font-family: "Barlow", sans-serif; + padding: 0.4045em 1.618em; + display: block; + position: relative; + font-size: 100%; + color: #000000; +} + +.wy-menu-vertical a:hover { + line-height: 28px; + font-weight: 400; + font-family: "Barlow", sans-serif; + display: block; + position: relative; + font-size: 100%; + color: #000000; + background-color: rgba(247, 247, 247, 0.961); + cursor: pointer; +} + +.logo { + filter: invert(0.85); + width: 250px !important; + height: auto; + position: relative; + top: 20px !important; + left: 20px !important; + margin-left: -10px; + z-index: 240; +} + +.wy-side-nav-search { + display: block; + width: 300px; + + z-index: 200; + background-color: transparent; + text-align: center; + color: #fafafa; +} + +.wy-side-nav-search input[type="text"] { + width: 80%; + border-radius: 25px; + padding: 6px 12px; + border: 1.5em #000000; +} + +.wy-menu-vertical li.current a { + background: #ffffff; + border-style: none; +} + +.wy-menu-vertical li.current a:hover { + background-color: rgba(247, 247, 247, 0.961); + border-style: none; +} + +.wy-menu-vertical li.toctree-l2 button.toctree-expand { + display: none; +} + +.icon { + display: none; +} diff --git a/v0.5.3/_static/custom.js b/v0.5.3/_static/custom.js new file mode 100644 index 00000000..3539538f --- /dev/null +++ b/v0.5.3/_static/custom.js @@ -0,0 +1,36 @@ +function getSelectedDocsVersion(pathname) { + if (!pathname) { + pathname = document.location.pathname + } + let parts = pathname.split('/').filter(item => item !== ""); + if (parts.length === 1) { + if (parts[0] === PROJECT) { + // '/{package}/' (return 'stable') + return "stable"; + } else { + // '/latest/' (return 'latest') + return parts[0]; + } + } else if (parts[0] === PROJECT) { + // '/{package}/latest/more' (return 'latest') + return parts[1]; + } else { + // '/latest/more' (return 'latest') + return parts[0] + } +} + +$(document).ready(function () { + // Version picker logic + let current = getSelectedDocsVersion(); + $("option[value='" + current + "']").attr("selected", "selected"); + $("select").change(function () { + if (this.value === "") { + return false; + } + let current = getSelectedDocsVersion(); + let selected = $(this).val(); + $("option[value='" + selected + "']").attr("selected", "selected"); + window.location = document.URL.replace(current, selected); + }); +}); diff --git a/v0.5.3/_static/doctools.js b/v0.5.3/_static/doctools.js new file mode 100644 index 00000000..d06a71d7 --- /dev/null +++ b/v0.5.3/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/v0.5.3/_static/documentation_options.js b/v0.5.3/_static/documentation_options.js new file mode 100644 index 00000000..b57ae3b8 --- /dev/null +++ b/v0.5.3/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/v0.5.3/_static/favicon.ico b/v0.5.3/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..05f17aa6ab75d43d3a9e87760cd2919fffc8d3d2 GIT binary patch literal 20915 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"Yq4&OE@>8tQjArj%e{Hr*X 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 VW@&8pv;TSu&5f;35c7M{{|5?#y{!NM literal 0 HcmV?d00001 diff --git a/v0.5.3/_static/file.png b/v0.5.3/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/v0.5.3/_static/jquery.js b/v0.5.3/_static/jquery.js new file mode 100644 index 00000000..c4c6022f --- /dev/null +++ b/v0.5.3/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="

",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/v0.5.3/_static/js/html5shiv.min.js b/v0.5.3/_static/js/html5shiv.min.js new file mode 100644 index 00000000..cd1c674f --- /dev/null +++ b/v0.5.3/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/v0.5.3/_static/js/theme.js b/v0.5.3/_static/js/theme.js new file mode 100644 index 00000000..1fddb6ee --- /dev/null +++ b/v0.5.3/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/v0.5.3/_static/logo.gif b/v0.5.3/_static/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3a1bcc2d7f73a117c68f028d5fa07cc626fffdc GIT binary patch literal 11889 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 literal 0 HcmV?d00001 diff --git a/v0.5.3/_static/plus.png b/v0.5.3/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/v0.5.3/_static/pygments.css b/v0.5.3/_static/pygments.css new file mode 100644 index 00000000..84ab3030 --- /dev/null +++ b/v0.5.3/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/v0.5.3/_static/searchtools.js b/v0.5.3/_static/searchtools.js new file mode 100644 index 00000000..97d56a74 --- /dev/null +++ b/v0.5.3/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/v0.5.3/_static/sphinx_highlight.js b/v0.5.3/_static/sphinx_highlight.js new file mode 100644 index 00000000..aae669d7 --- /dev/null +++ b/v0.5.3/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/v0.5.3/commands/run.html b/v0.5.3/commands/run.html new file mode 100644 index 00000000..7d19f4cb --- /dev/null +++ b/v0.5.3/commands/run.html @@ -0,0 +1,218 @@ + + + + + + + run — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

run

+
+

run

+

Run Silverback application client

+
run [OPTIONS] PATH
+
+
+

Options

+
+
+-v, --verbosity <LVL>
+

One of ERROR, WARNING, SUCCESS, INFO, or DEBUG

+
+ +
+
+-v, --verbosity <LVL>
+

One of ERROR, WARNING, SUCCESS, INFO, or DEBUG

+
+ +
+
+--network <network>
+

Override the default network and provider. (see ape networks list for options)

+
+
Options:
+

:mainnet:node | ethereum:mainnet:node | :mainnet | ethereum:mainnet | :sepolia:node | ethereum:sepolia:node | :sepolia | ethereum:sepolia | :holesky:node | ethereum:holesky:node | :holesky | ethereum:holesky | ::node | :local:node | ethereum::node | ethereum:local:node | ::test | :local:test | ethereum::test | ethereum:local:test | :local | ethereum:local | ethereum

+
+
+
+ +
+
+--account <account>
+
+ +
+
+--runner <runner_class>
+

An import str in format ‘<module>:<CustomRunner>’

+
+ +
+
+--recorder <recorder>
+

An import string in format ‘<module>:<CustomRecorder>’

+
+ +
+
+-x, --max-exceptions <max_exceptions>
+
+ +

Arguments

+
+
+PATH
+

Required argument

+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/genindex.html b/v0.5.3/genindex.html new file mode 100644 index 00000000..8f9223d7 --- /dev/null +++ b/v0.5.3/genindex.html @@ -0,0 +1,496 @@ + + + + + + Index — silverback documentation + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Index

+ +
+ Symbols + | A + | B + | C + | H + | I + | M + | N + | O + | P + | R + | S + | T + | W + +
+

Symbols

+ + + +
+ +

A

+ + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
    +
  • + silverback.application + +
  • +
  • + silverback.exceptions + +
  • +
  • + silverback.middlewares + +
  • +
  • + silverback.runner + +
  • +
  • + silverback.subscriptions + +
  • +
+ +

T

+ + +
+ +

W

+ + +
+ + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/index.html b/v0.5.3/index.html new file mode 100644 index 00000000..26dda1f4 --- /dev/null +++ b/v0.5.3/index.html @@ -0,0 +1,177 @@ + + + + + + + Silverback Docs — silverback documentation + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Silverback Docs

+ +
+

CLI Reference

+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/application.html b/v0.5.3/methoddocs/application.html new file mode 100644 index 00000000..b1a52907 --- /dev/null +++ b/v0.5.3/methoddocs/application.html @@ -0,0 +1,339 @@ + + + + + + + silverback.application — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.application

+

The silverback.application module contains the high-level implementation of the the user’s +Silverback application, meant to be used to expose method handlers and other functionality.

+
+
+class silverback.application.SilverbackApp(settings: Settings | None = None)
+

Bases: ManagerAccessMixin

+

The application singleton. Must be initialized prior to use.

+

Usage example:

+
from silverback import SilverbackApp
+
+app = SilverbackApp()
+
+...  # Connection has been initialized, can call broker methods e.g. `app.on_(...)`
+
+
+
+
+broker_task_decorator(task_type: TaskType, container: BlockContainer | ContractEvent | None = None) Callable[[Callable], AsyncTaskiqDecoratedTask]
+

Dynamically create a new broker task that handles tasks of task_type.

+
+
Parameters:
+
    +
  • task_typeTaskType: The type of task to create.

  • +
  • container – (BlockContainer | ContractEvent): The event source to watch.

  • +
+
+
Returns:
+

A function wrapper that will register the task handler.

+
+
Return type:
+

Callable[[Callable], AsyncTaskiqDecoratedTask]

+
+
Raises:
+

ContainerTypeMismatchError – If there is a mismatch between task_type and the container + type it should handle.

+
+
+
+ +
+
+on_(container: BlockContainer | ContractEvent, new_block_timeout: int | None = None, start_block: int | None = None)
+

Create task to handle events created by container.

+
+
Parameters:
+
    +
  • container – (BlockContainer | ContractEvent): The event source to watch.

  • +
  • new_block_timeout – (int | None): Override for block timeout that is acceptable. +Defaults to whatever the app’s settings are for default polling timeout are.

  • +
  • start_block (int | None) – block number to start processing events from. +Defaults to whatever the latest block is.

  • +
+
+
Raises:
+

InvalidContainerTypeError – If the type of container is not configurable for the app.

+
+
+
+ +
+
+on_shutdown() Callable
+

Code to execute on one worker at shutdown.

+

Usage example:

+
@app.on_shutdown()
+def do_something_on_shutdown():
+    ...  # Record final state of app
+
+
+
+ +
+
+on_startup() Callable
+

Code to execute on one worker upon startup / restart after an error.

+

Usage example:

+
@app.on_startup()
+def do_something_on_startup(startup_state):
+    ...  # Reprocess missed events or blocks
+
+
+
+ +
+
+on_worker_shutdown() Callable
+

Code to execute on every worker at shutdown.

+

Usage example:

+
@app.on_shutdown()
+def do_something_on_shutdown(state):
+    ...  # Update some external service, perhaps using information from `state`.
+
+
+
+ +
+
+on_worker_startup() Callable
+

Code to execute on every worker at startup / restart after an error.

+

Usage example:

+
@app.on_startup()
+def do_something_on_startup(state):
+    ...  # Can provision resources, or add things to `state`.
+
+
+
+ +
+ +
+
+class silverback.application.SystemConfig(*, sdk_version: str, task_types: list[str])
+

Bases: BaseModel

+
+
+model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
+

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

+
+ +
+
+model_config: ClassVar[ConfigDict] = {}
+

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

+
+ +
+
+model_fields: ClassVar[dict[str, FieldInfo]] = {'sdk_version': FieldInfo(annotation=str, required=True), 'task_types': FieldInfo(annotation=list[str], required=True)}
+

Metadata about the fields defined on the model, +mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

+

This replaces Model.__fields__ from Pydantic V1.

+
+ +
+ +
+
+class silverback.application.TaskData(*, name: str, labels: dict[str, Any])
+

Bases: BaseModel

+
+
+model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}
+

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

+
+ +
+
+model_config: ClassVar[ConfigDict] = {}
+

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

+
+ +
+
+model_fields: ClassVar[dict[str, FieldInfo]] = {'labels': FieldInfo(annotation=dict[str, Any], required=True), 'name': FieldInfo(annotation=str, required=True)}
+

Metadata about the fields defined on the model, +mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

+

This replaces Model.__fields__ from Pydantic V1.

+
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/exceptions.html b/v0.5.3/methoddocs/exceptions.html new file mode 100644 index 00000000..081483ce --- /dev/null +++ b/v0.5.3/methoddocs/exceptions.html @@ -0,0 +1,222 @@ + + + + + + + silverback.exceptions — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.exceptions

+
+
+exception silverback.exceptions.CircuitBreaker(message: str)
+

Bases: Halt

+

Custom exception (created by user) that will trigger an application shutdown.

+
+ +
+
+exception silverback.exceptions.ContainerTypeMismatchError(task_type: TaskType, container: Any)
+

Bases: Exception

+
+ +
+
+exception silverback.exceptions.Halt
+

Bases: SilverbackException

+
+ +
+
+exception silverback.exceptions.ImportFromStringError
+

Bases: Exception

+
+ +
+
+exception silverback.exceptions.InvalidContainerTypeError(container: Any)
+

Bases: Exception

+
+ +
+
+exception silverback.exceptions.NoTasksAvailableError
+

Bases: SilverbackException

+
+ +
+
+exception silverback.exceptions.NoWebsocketAvailableError
+

Bases: Exception

+
+ +
+
+exception silverback.exceptions.SilverbackException
+

Bases: ApeException

+

Base Exception for any Silverback runtime faults.

+
+ +
+
+exception silverback.exceptions.StartupFailure(*exceptions: Exception | str)
+

Bases: SilverbackException

+
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/middlewares.html b/v0.5.3/methoddocs/middlewares.html new file mode 100644 index 00000000..8ec4dc74 --- /dev/null +++ b/v0.5.3/methoddocs/middlewares.html @@ -0,0 +1,219 @@ + + + + + + + silverback.middlewares — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.middlewares

+

The silverback.middlewares module contains middleware intended to improve the usability of +silverback as a whole, and add integrations for the silverback platform as well.

+
+
+class silverback.middlewares.SilverbackMiddleware(*args, **kwargs)
+

Bases: TaskiqMiddleware, ManagerAccessMixin

+
+
+post_execute(message: TaskiqMessage, result: TaskiqResult)
+

This hook executes after task is complete.

+

This is a worker-side hook. It’s called +in worker process.

+
+
Parameters:
+
    +
  • message – incoming message.

  • +
  • result – result of execution for current task.

  • +
+
+
+
+ +
+
+pre_execute(message: TaskiqMessage) TaskiqMessage
+

This hook is called before executing task.

+

This is a worker-side hook, which means it +executes in the worker process.

+
+
Parameters:
+

message – incoming parsed taskiq message.

+
+
Returns:
+

modified message.

+
+
+
+ +
+
+pre_send(message: TaskiqMessage) TaskiqMessage
+

Hook that executes before sending the task to worker.

+

This is a client-side hook, that executes right before +the message is sent to broker.

+
+
Parameters:
+

message – message to send.

+
+
Returns:
+

modified message.

+
+
+
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/runner.html b/v0.5.3/methoddocs/runner.html new file mode 100644 index 00000000..5152a74e --- /dev/null +++ b/v0.5.3/methoddocs/runner.html @@ -0,0 +1,220 @@ + + + + + + + silverback.runner — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.runner

+

The silverback.runner module contains implementations for running Silverback apps in a variety +of different scenarios and trigger methods.

+
+
+class silverback.runner.BaseRunner(app: SilverbackApp, *args, max_exceptions: int = 3, recorder: BaseRecorder | None = None, **kwargs)
+

Bases: ABC

+
+
+async run()
+

Run the task broker client for the assembled SilverbackApp application.

+

Will listen for events against the connected provider (using ManagerAccessMixin context), +and process them by kicking events over to the configured broker.

+
+
Raises:
+
+
+
+
+ +
+ +
+
+class silverback.runner.PollingRunner(app: SilverbackApp, *args, **kwargs)
+

Bases: BaseRunner, ManagerAccessMixin

+

Run a single app against a live network using a basic in-memory queue.

+
+ +
+
+class silverback.runner.WebsocketRunner(app: SilverbackApp, *args, **kwargs)
+

Bases: BaseRunner, ManagerAccessMixin

+

Run a single app against a live network using a basic in-memory queue and websockets.

+
+
+async run()
+

Run the task broker client for the assembled SilverbackApp application.

+

Will listen for events against the connected provider (using ManagerAccessMixin context), +and process them by kicking events over to the configured broker.

+
+
Raises:
+
+
+
+
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/subscriptions.html b/v0.5.3/methoddocs/subscriptions.html new file mode 100644 index 00000000..412f5dc2 --- /dev/null +++ b/v0.5.3/methoddocs/subscriptions.html @@ -0,0 +1,167 @@ + + + + + + + silverback.subscriptions — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.subscriptions

+

The silverback.subscriptions module contains an implementation of a Websocket subscription queue, +used for connected to an RPC node via websockets that implements the eth_subscribe RPC method.

+
+
+class silverback.subscriptions.SubscriptionType(value)
+

Bases: Enum

+

An enumeration.

+
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/methoddocs/utils.html b/v0.5.3/methoddocs/utils.html new file mode 100644 index 00000000..090d39d3 --- /dev/null +++ b/v0.5.3/methoddocs/utils.html @@ -0,0 +1,169 @@ + + + + + + + silverback.utils — silverback documentation + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

silverback.utils

+
+
+silverback.utils.async_wrap_iter(it: Iterator) AsyncIterator
+

Wrap blocking iterator into an asynchronous one

+
+ +
+
+silverback.utils.hexbytes_dict(data: dict, recurse_count: int = 0) dict
+

Converts any hex string values in a flat dictionary to HexBytes.

+
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/objects.inv b/v0.5.3/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..45e9f3711e1d5740ad4928956caffdf247c51e7b GIT binary patch literal 946 zcmV;j15NxRAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGk&X>4|7 za$;d)YYHPER%LQ?X>V>iAPOTORA^-&a%F8{X>Md?av*PJAarPHb0B7EY-J#6b0A}H zZE$jBb8}^6Aa!$TZf78RY-wUH3V7PRm`!urAP|P{`W4KiSGmnKH|J}TLppAgnI1J5 zHa24fDj?hX_XS}|SYL@9xi=f$eRhG}1zR(|1+~OvGs9WN8Nr50fwJNzl{DvoexMZ0 zT2d;B{vJqXYm@RTFN(jRIMThO*=s#K&oaj)9BYlPN3oyf&6Y}TKqUt2O+tZ4g^g5Y z^d)^NH&P@Qf$DW`sN9LmzztR=&o08=N#*waqVZQgCR|3L4WxHcytCC5sTkm9wi19R zM5bA8fF|z@IMvPxHb$|f9h}%vwTR2`CyoEjmghY-c!E8zP#4|rj*|)Zy2bu-+^{E* zxmi8bv>U}(&kj^~Op%W&+e(k--boDK=#Npp={j|Ae`j z1oWI{Qkh33(^q>MVl`ce&ti)?qemMt9sQ?td8OxD%s5{1Ny&d;sU_Kfxd6Rs`VTc~ z60W~A9&Nz6g7c9nqm;uAD;O-VKr&Wep{!Z;OFcT!8$0w9v9nBSlfWK`>nsCz=+~Vn z_%A**2zssql?&m!S>Gx8*|7sWC~mQa-!-b|#6r?X2sbjco{u>T$+_)OUyP~`rlVkZ*L!9wwgccy-TA09y5S!cOlf@;-XG9 z4DfvL-9yYQo#S_#*Q86U=^KwkT{6 z;@H|HZ5(4lWG+l;Pf{wYYrm7*SM_Xchibd{z)A5wZspJ^xP1*0VBC+{lL?hw#Zm4b z4tmIyQ$V$0O=@!PB#t+$DDJqWW~Mk9w5=H1^G)|>pU7hV_H=r7s8w7V+8zv8k@azY z`msZ!^YaV5f+*LZRym`fzf;%(mstvj+&olMzrvI5{eZpY5f1z3Jm`3V{okCCP5Fn( UfP+Th`M=zERKAv@f7T0eim2$pv;Y7A literal 0 HcmV?d00001 diff --git a/v0.5.3/py-modindex.html b/v0.5.3/py-modindex.html new file mode 100644 index 00000000..fb1f3bc0 --- /dev/null +++ b/v0.5.3/py-modindex.html @@ -0,0 +1,196 @@ + + + + + + Python Module Index — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + +

Python Module Index

+ +
+ s +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ s
+ silverback +
    + silverback.application +
    + silverback.exceptions +
    + silverback.middlewares +
    + silverback.runner +
    + silverback.subscriptions +
    + silverback.utils +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/search.html b/v0.5.3/search.html new file mode 100644 index 00000000..34ed196d --- /dev/null +++ b/v0.5.3/search.html @@ -0,0 +1,166 @@ + + + + + + Search — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+
    +
  • + +
  • +
  • +
+
+
+
+
+ + + + +
+ +
+ +
+
+ +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/v0.5.3/searchindex.js b/v0.5.3/searchindex.js new file mode 100644 index 00000000..c227ea7d --- /dev/null +++ b/v0.5.3/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["commands/run", "index", "methoddocs/application", "methoddocs/exceptions", "methoddocs/middlewares", "methoddocs/runner", "methoddocs/subscriptions", "methoddocs/utils", "userguides/development", "userguides/quickstart"], "filenames": ["commands/run.rst", "index.md", "methoddocs/application.md", "methoddocs/exceptions.md", "methoddocs/middlewares.md", "methoddocs/runner.md", "methoddocs/subscriptions.md", "methoddocs/utils.md", "userguides/development.md", "userguides/quickstart.md"], "titles": ["run", "Silverback Docs", "silverback.application", "silverback.exceptions", "silverback.middlewares", "silverback.runner", "silverback.subscriptions", "silverback.utils", "Developing a Silverback Application", "Quick Start"], "terms": {"silverback": [0, 9], "applic": [0, 1, 3, 5, 9], "client": [0, 4, 5, 8], "option": [0, 8, 9], "path": 0, "v": 0, "verbos": 0, "lvl": 0, "One": 0, "error": [0, 2, 8, 9], "warn": 0, "success": 0, "info": [0, 9], "debug": 0, "network": [0, 5, 8, 9], "overrid": [0, 2], "default": [0, 2, 8, 9], "provid": [0, 5, 9], "see": [0, 9], "ap": [0, 8, 9], "list": [0, 2, 9], "mainnet": [0, 8, 9], "node": [0, 6], "ethereum": [0, 8, 9], "sepolia": [0, 8], "holeski": 0, "local": [0, 8], "test": 0, "account": [0, 8, 9], "runner": [0, 1, 9], "runner_class": 0, "an": [0, 2, 3, 5, 6, 7, 9], "import": [0, 2, 8], "str": [0, 2, 3], "format": 0, "modul": [0, 2, 4, 5, 6], "customrunn": 0, "record": [0, 2, 5, 8], "string": [0, 7], "customrecord": 0, "x": 0, "max": 0, "except": [0, 1, 5, 9], "max_except": [0, 5], "argument": 0, "requir": [0, 2, 8, 9], "quick": 1, "start": [1, 2, 8], "develop": 1, "run": [1, 5, 9], "middlewar": 1, "subscript": 1, "util": 1, "The": [2, 4, 5, 6, 8, 9], "contain": [2, 3, 4, 5, 6, 9], "high": [2, 8], "level": 2, "implement": [2, 5, 6], "user": [2, 3], "": [2, 4, 8, 9], "meant": 2, "us": [2, 5, 6, 8, 9], "expos": 2, "method": [2, 5, 6, 8], "handler": [2, 8], "other": [2, 8], "function": [2, 8, 9], "class": [2, 4, 5, 6, 8], "silverbackapp": [2, 5, 8], "set": [2, 8], "none": [2, 5, 8], "base": [2, 3, 4, 5, 6], "manageraccessmixin": [2, 4, 5], "singleton": 2, "must": [2, 8, 9], "initi": [2, 8], "prior": 2, "usag": 2, "exampl": [2, 8, 9], "from": [2, 8, 9], "app": [2, 5, 8, 9], "connect": [2, 5, 6, 8], "ha": [2, 8], "been": [2, 8], "can": [2, 8, 9], "call": [2, 4, 9], "broker": [2, 4, 5, 8, 9], "e": 2, "g": 2, "on_": [2, 8], "broker_task_decor": 2, "task_typ": [2, 3], "tasktyp": [2, 3], "blockcontain": 2, "contractev": 2, "callabl": 2, "asynctaskiqdecoratedtask": 2, "dynam": 2, "creat": [2, 3, 9], "new": [2, 9], "task": [2, 4, 5, 8, 9], "handl": [2, 8, 9], "paramet": [2, 4, 8], "type": [2, 8, 9], "event": [2, 5, 9], "sourc": 2, "watch": 2, "return": [2, 4, 8], "A": 2, "wrapper": 2, "regist": 2, "rais": [2, 5, 8], "containertypemismatcherror": [2, 3], "If": [2, 5, 8, 9], "i": [2, 4, 8, 9], "mismatch": 2, "between": 2, "should": [2, 8, 9], "new_block_timeout": 2, "int": [2, 5, 7], "start_block": [2, 8], "block": [2, 7, 9], "timeout": 2, "accept": 2, "whatev": 2, "ar": [2, 5, 8, 9], "poll": 2, "number": 2, "process": [2, 4, 5, 8], "latest": [2, 9], "invalidcontainertypeerror": [2, 3], "configur": [2, 5, 8, 9], "on_shutdown": [2, 8], "code": 2, "execut": [2, 4, 5, 9], "one": [2, 7, 8, 9], "worker": [2, 4], "shutdown": [2, 3], "def": [2, 8], "do_something_on_shutdown": 2, "final": [2, 8, 9], "state": [2, 9], "on_startup": [2, 8], "upon": [2, 8], "startup": [2, 5], "restart": 2, "after": [2, 4], "do_something_on_startup": 2, "startup_st": [2, 8], "reprocess": 2, "miss": [2, 8], "on_worker_shutdown": [2, 8], "everi": [2, 8], "updat": [2, 8, 9], "some": [2, 8, 9], "extern": 2, "servic": 2, "perhap": 2, "inform": [2, 9], "on_worker_startup": [2, 8], "provis": [2, 8], "resourc": [2, 8], "add": [2, 4, 8], "thing": [2, 8, 9], "systemconfig": 2, "sdk_version": 2, "basemodel": 2, "model_computed_field": 2, "classvar": 2, "dict": [2, 7], "computedfieldinfo": 2, "dictionari": [2, 7], "comput": [2, 8], "field": 2, "name": [2, 8, 9], "correspond": 2, "object": 2, "model_config": 2, "configdict": 2, "model": 2, "conform": 2, "pydant": 2, "config": 2, "model_field": 2, "fieldinfo": 2, "annot": [2, 8], "true": 2, "metadata": 2, "about": [2, 9], "defin": [2, 8], "map": 2, "thi": [2, 4, 8, 9], "replac": 2, "__fields__": 2, "v1": 2, "taskdata": 2, "label": 2, "ani": [2, 3, 7, 8], "circuitbreak": 3, "messag": [3, 4, 8], "halt": 3, "custom": 3, "trigger": [3, 5, 8], "silverbackexcept": 3, "importfromstringerror": 3, "notasksavailableerror": [3, 5], "nowebsocketavailableerror": 3, "apeexcept": 3, "runtim": 3, "fault": 3, "startupfailur": [3, 5], "intend": 4, "improv": 4, "usabl": 4, "whole": 4, "integr": 4, "platform": [4, 9], "well": [4, 8, 9], "silverbackmiddlewar": 4, "arg": [4, 5], "kwarg": [4, 5], "taskiqmiddlewar": 4, "post_execut": 4, "taskiqmessag": 4, "result": [4, 8], "taskiqresult": 4, "hook": [4, 8], "complet": [4, 8], "side": 4, "It": [4, 8, 9], "incom": 4, "current": 4, "pre_execut": 4, "befor": [4, 8], "which": [4, 8], "mean": [4, 9], "pars": 4, "taskiq": [4, 8], "modifi": 4, "pre_send": 4, "send": 4, "right": 4, "sent": 4, "varieti": 5, "differ": 5, "scenario": 5, "baserunn": 5, "3": [5, 9], "baserecord": 5, "abc": 5, "async": 5, "assembl": 5, "Will": 5, "listen": [5, 9], "against": [5, 9], "context": [5, 8], "them": 5, "kick": 5, "over": 5, "wa": [5, 8], "dure": [5, 8], "pollingrunn": 5, "singl": 5, "live": [5, 9], "basic": 5, "memori": [5, 8, 9], "queue": [5, 6, 8], "websocketrunn": 5, "websocket": [5, 6, 9], "rpc": 6, "via": [6, 8], "eth_subscrib": 6, "subscriptiontyp": 6, "valu": [6, 7], "enum": 6, "enumer": 6, "async_wrap_it": 7, "iter": 7, "asynciter": 7, "wrap": 7, "asynchron": [7, 8], "hexbytes_dict": 7, "data": [7, 8, 9], "recurse_count": 7, "0": [7, 8], "convert": 7, "hex": 7, "flat": 7, "hexbyt": 7, "In": [8, 9], "guid": 8, "we": [8, 9], "go": [8, 9], "show": 8, "you": [8, 9], "more": [8, 9], "detail": 8, "how": [8, 9], "build": 8, "have": [8, 9], "python": [8, 9], "project": [8, 9], "instal": 8, "pip": 8, "easi": 8, "do": [8, 9], "so": [8, 9], "through": 8, "up": 8, "each": 8, "time": 8, "encount": 8, "specif": 8, "emit": 8, "make": [8, 9], "bot": [8, 9], "order": [8, 9], "perform": 8, "autom": [8, 9], "necessari": 8, "chain": [8, 9], "interact": 8, "howev": 8, "won": 8, "t": 8, "veri": 8, "where": 8, "ad": 8, "let": [8, 9], "u": 8, "specifi": 8, "our": 8, "To": [8, 9], "follow": [8, 9], "handle_new_block": 8, "insid": 8, "logic": 8, "want": [8, 9], "detect": 8, "serializ": 8, "structur": 8, "store": 8, "databas": 8, "trackabl": 8, "metric": 8, "get": [8, 9], "captur": 8, "failur": 8, "similarli": 8, "contract": [8, 9], "token": [8, 9], "address": [8, 9], "here": 8, "transfer": 8, "handle_token_transfer_ev": 8, "again": 8, "heavier": 8, "load": 8, "like": [8, 9], "handle_on_worker_startup": 8, "db": 8, "etc": 8, "handle_on_worker_shutdown": 8, "cleanup": 8, "close": 8, "cleanli": 8, "come": 8, "note": 8, "ensur": 8, "multipl": 8, "properli": [8, 9], "telegram": [8, 9], "api": [8, 9], "sql": 8, "nosql": 8, "someth": 8, "els": 8, "2": 8, "These": 8, "move": 8, "clariti": 8, "variabl": 8, "also": 8, "made": 8, "avail": 8, "quantiti": 8, "maintain": 8, "its": 8, "own": [8, 9], "instanc": 8, "access": 8, "depend": 8, "taskiqdepend": 8, "block_handl": 8, "onc": 8, "mai": [8, 9], "histor": 8, "sinc": 8, "action": 8, "handle_on_startup": 8, "process_histori": 8, "last_block_seen": 8, "last_block_process": 8, "handle_on_shutdown": 8, "chang": [8, 9], "behavior": [8, 9], "decor": 8, "signatur": 8, "now": 8, "onli": 8, "program": 8, "realli": 8, "abl": 8, "valid": 8, "doe": 8, "what": [8, 9], "expect": 8, "includ": [8, 9], "cli": 8, "command": [8, 9], "take": 8, "care": 8, "proper": [8, 9], "signer": 8, "testnet": 8, "my_bot": 8, "acct": 8, "enabl": [8, 9], "mode": 8, "might": [8, 9], "lead": 8, "transact": 8, "sender": 8, "would": 8, "done": 8, "had": 8, "sign": 8, "anyth": 8, "given": [8, 9], "rememb": 8, "lose": 8, "substat": 8, "amount": 8, "fund": 8, "product": 8, "alwai": 8, "throughli": 8, "everyth": 8, "job": 8, "share": 8, "volum": [8, 9], "environ": 8, "higher": 8, "rate": 8, "primari": 8, "compon": 8, "manner": 8, "For": 8, "work": [8, 9], "capabl": 8, "additon": 8, "highli": 8, "suggest": [8, 9], "backend": 8, "without": [8, 9], "suddenli": 8, "instead": 8, "actual": 8, "taskiq_redi": 8, "could": 8, "export": 8, "silverback_broker_class": 8, "listqueuebrok": 8, "silverback_broker_kwarg": 8, "queue_nam": 8, "url": 8, "redi": 8, "127": 8, "1": [8, 9], "6379": 8, "silverback_result_backend_class": 8, "redisasyncresultbackend": 8, "silverback_result_backend_uri": 8, "alchemi": [8, 9], "And": 8, "subprocess": 8, "w": 8, "all": 8, "todo": 8, "backtest": 8, "packag": [8, 9], "deploy": 8, "deploi": 9, "respond": 9, "librari": 9, "leverag": 9, "framework": 9, "ecosystem": 9, "plugin": 9, "simpl": 9, "yet": 9, "sophist": 9, "excel": 9, "case": 9, "involv": 9, "continu": 9, "monitor": 9, "newli": 9, "confirm": 9, "log": 9, "pool": 9, "creation": 9, "deposit": 9, "liquid": 9, "measur": 9, "trade": 9, "activ": 9, "popular": 9, "larg": 9, "swap": 9, "group": 9, "pleas": 9, "read": 9, "userguid": 9, "python3": 9, "version": 9, "10": 9, "greater": 9, "dev": 9, "reli": 9, "heavili": 9, "worth": 9, "familar": 9, "yourself": 9, "virtual": 9, "choos": 9, "releas": 9, "clone": 9, "repositori": 9, "most": 9, "date": 9, "git": 9, "http": 9, "github": 9, "com": 9, "apeworx": 9, "cd": 9, "setup": 9, "py": 9, "checkout": 9, "Be": 9, "sure": 9, "usdc": 9, "yfi": 9, "sdk": 9, "learn": 9, "visit": 9, "pwd": 9, "home": 9, "haramb": 9, "tokenlist": 9, "imag": 9, "publish": 9, "11": 9, "fail": 9, "fulli": 9, "common": 9, "issu": 9, "when": 9, "stem": 9, "unlock": 9, "desir": 9, "support": 9, "host": 9, "need": 9, "kei": 9, "attempt": 9, "suppli": 9, "traceback": 9, "recent": 9, "last": 9, "ape_alchemi": 9, "missingprojectkeyerror": 9, "web3_alchemy_project_id": 9, "web3_alchemy_api_kei": 9, "web3_ethereum_mainnet_alchemy_project_id": 9, "web3_ethereum_mainnet_alchemy_api_kei": 9, "dashboard": 9, "copi": 9, "anoth": 9, "look": 9, "interfac": 9, "symbol": 9, "both": 9, "give": 9, "hidden": 9, "folder": 9, "mount": 9, "flag": 9, "1inch": 9, "eth": 9, "readm": 9, "check": 9, "exist": 9, "yearn": 9, "financ": 9, "id": 9, "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93": 9, "decim": 9, "18": 9, "circl": 9, "usd": 9, "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 9, "6": 9, "comment": 9, "out": 9, "two": 9, "exec_event1": 9, "exec_event2": 9, "under": 9, "prepar": 9, "break": 9, "occur": 9, "question": 9, "critic": 9, "pull": 9, "request": 9, "welcom": 9, "contribut": 9}, "objects": {"silverback": [[2, 0, 0, "-", "application"], [3, 0, 0, "-", "exceptions"], [4, 0, 0, "-", "middlewares"], [5, 0, 0, "-", "runner"], [6, 0, 0, "-", "subscriptions"], [7, 0, 0, "-", "utils"]], "silverback.application": [[2, 1, 1, "", "SilverbackApp"], [2, 1, 1, "", "SystemConfig"], [2, 1, 1, "", "TaskData"]], "silverback.application.SilverbackApp": [[2, 2, 1, "", "broker_task_decorator"], [2, 2, 1, "", "on_"], [2, 2, 1, "", "on_shutdown"], [2, 2, 1, "", "on_startup"], [2, 2, 1, "", "on_worker_shutdown"], [2, 2, 1, "", "on_worker_startup"]], "silverback.application.SystemConfig": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.application.TaskData": [[2, 3, 1, "", "model_computed_fields"], [2, 3, 1, "", "model_config"], [2, 3, 1, "", "model_fields"]], "silverback.exceptions": [[3, 4, 1, "", "CircuitBreaker"], [3, 4, 1, "", "ContainerTypeMismatchError"], [3, 4, 1, "", "Halt"], [3, 4, 1, "", "ImportFromStringError"], [3, 4, 1, "", "InvalidContainerTypeError"], [3, 4, 1, "", "NoTasksAvailableError"], [3, 4, 1, "", "NoWebsocketAvailableError"], [3, 4, 1, "", "SilverbackException"], [3, 4, 1, "", "StartupFailure"]], "silverback.middlewares": [[4, 1, 1, "", "SilverbackMiddleware"]], "silverback.middlewares.SilverbackMiddleware": [[4, 2, 1, "", "post_execute"], [4, 2, 1, "", "pre_execute"], [4, 2, 1, "", "pre_send"]], "silverback.runner": [[5, 1, 1, "", "BaseRunner"], [5, 1, 1, "", "PollingRunner"], [5, 1, 1, "", "WebsocketRunner"]], "silverback.runner.BaseRunner": [[5, 2, 1, "", "run"]], "silverback.runner.WebsocketRunner": [[5, 2, 1, "", "run"]], "silverback.subscriptions": [[6, 1, 1, "", "SubscriptionType"]], "silverback.utils": [[7, 5, 1, "", "async_wrap_iter"], [7, 5, 1, "", "hexbytes_dict"]], "run": [[0, 6, 1, "cmdoption-run-account", "--account"], [0, 6, 1, "cmdoption-run-x", "--max-exceptions"], [0, 6, 1, "cmdoption-run-network", "--network"], [0, 6, 1, "cmdoption-run-recorder", "--recorder"], [0, 6, 1, "cmdoption-run-runner", "--runner"], [0, 6, 1, "cmdoption-run-v", "--verbosity"], [0, 6, 1, "cmdoption-run-v", "-v"], [0, 6, 1, "cmdoption-run-x", "-x"], [0, 6, 1, "cmdoption-run-arg-PATH", "PATH"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception", "5": "py:function", "6": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "function", "Python function"], "6": ["std", "cmdoption", "program option"]}, "titleterms": {"run": [0, 8], "silverback": [1, 2, 3, 4, 5, 6, 7, 8], "doc": 1, "user": 1, "guid": 1, "cli": 1, "refer": 1, "python": 1, "applic": [2, 8], "except": 3, "middlewar": 4, "runner": 5, "subscript": 6, "util": 7, "develop": [8, 9], "prerequisit": 8, "creat": 8, "an": 8, "new": 8, "block": 8, "event": 8, "log": 8, "startup": 8, "shutdown": 8, "worker": 8, "state": 8, "your": [8, 9], "distribut": 8, "execut": 8, "test": 8, "deploi": 8, "platform": 8, "quick": 9, "start": 9, "document": 9, "depend": 9, "instal": 9, "via": 9, "pip": 9, "setuptool": 9, "usag": 9, "docker": 9, "set": 9, "up": 9, "environ": 9}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"run": [[0, "run"], [0, "run"]], "Silverback Docs": [[1, "silverback-docs"]], "User Guides": [[1, null]], "CLI Reference": [[1, null]], "Python Reference": [[1, null]], "silverback.application": [[2, "silverback-application"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverback.middlewares": [[4, "silverback-middlewares"]], "silverback.runner": [[5, "silverback-runner"]], "silverback.subscriptions": [[6, "silverback-subscriptions"]], "silverback.utils": [[7, "module-silverback.utils"]], "Developing a Silverback Application": [[8, "developing-a-silverback-application"]], "Prerequisites": [[8, "prerequisites"]], "Creating an Application": [[8, "creating-an-application"]], "New Block Events": [[8, "new-block-events"]], "New Event Logs": [[8, "new-event-logs"]], "Startup and Shutdown": [[8, "startup-and-shutdown"]], "Worker Events": [[8, "worker-events"]], "Worker State": [[8, "worker-state"]], "Application Events": [[8, "application-events"]], "Running your Application": [[8, "running-your-application"]], "Distributed Execution": [[8, "distributed-execution"]], "Testing your Application": [[8, "testing-your-application"]], "Deploying to the Silverback Platform": [[8, "deploying-to-the-silverback-platform"]], "Quick Start": [[9, "quick-start"]], "Documentation": [[9, "documentation"]], "Dependencies": [[9, "dependencies"]], "Installation": [[9, "installation"]], "via pip": [[9, "via-pip"]], "via setuptools": [[9, "via-setuptools"]], "Quick Usage": [[9, "quick-usage"]], "Docker Usage": [[9, "docker-usage"]], "Setting Up Your Environment": [[9, "setting-up-your-environment"]], "Development": [[9, "development"]]}, "indexentries": {"--account": [[0, "cmdoption-run-account"]], "--max-exceptions": [[0, "cmdoption-run-x"]], "--network": [[0, "cmdoption-run-network"]], "--recorder": [[0, "cmdoption-run-recorder"]], "--runner": [[0, "cmdoption-run-runner"]], "--verbosity": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-v": [[0, "cmdoption-run-0"], [0, "cmdoption-run-v"]], "-x": [[0, "cmdoption-run-x"]], "path": [[0, "cmdoption-run-arg-PATH"]], "run command line option": [[0, "cmdoption-run-0"], [0, "cmdoption-run-account"], [0, "cmdoption-run-arg-PATH"], [0, "cmdoption-run-network"], [0, "cmdoption-run-recorder"], [0, "cmdoption-run-runner"], [0, "cmdoption-run-v"], [0, "cmdoption-run-x"]], "silverbackapp (class in silverback.application)": [[2, "silverback.application.SilverbackApp"]], "systemconfig (class in silverback.application)": [[2, "silverback.application.SystemConfig"]], "taskdata (class in silverback.application)": [[2, "silverback.application.TaskData"]], "broker_task_decorator() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.broker_task_decorator"]], "model_computed_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_computed_fields"]], "model_computed_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_computed_fields"]], "model_config (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_config"]], "model_config (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_config"]], "model_fields (silverback.application.systemconfig attribute)": [[2, "silverback.application.SystemConfig.model_fields"]], "model_fields (silverback.application.taskdata attribute)": [[2, "silverback.application.TaskData.model_fields"]], "module": [[2, "module-silverback.application"], [3, "module-silverback.exceptions"], [4, "module-silverback.middlewares"], [5, "module-silverback.runner"], [6, "module-silverback.subscriptions"], [7, "module-silverback.utils"]], "on_() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_"]], "on_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_shutdown"]], "on_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_startup"]], "on_worker_shutdown() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_shutdown"]], "on_worker_startup() (silverback.application.silverbackapp method)": [[2, "silverback.application.SilverbackApp.on_worker_startup"]], "silverback.application": [[2, "module-silverback.application"]], "circuitbreaker": [[3, "silverback.exceptions.CircuitBreaker"]], "containertypemismatcherror": [[3, "silverback.exceptions.ContainerTypeMismatchError"]], "halt": [[3, "silverback.exceptions.Halt"]], "importfromstringerror": [[3, "silverback.exceptions.ImportFromStringError"]], "invalidcontainertypeerror": [[3, "silverback.exceptions.InvalidContainerTypeError"]], "notasksavailableerror": [[3, "silverback.exceptions.NoTasksAvailableError"]], "nowebsocketavailableerror": [[3, "silverback.exceptions.NoWebsocketAvailableError"]], "silverbackexception": [[3, "silverback.exceptions.SilverbackException"]], "startupfailure": [[3, "silverback.exceptions.StartupFailure"]], "silverback.exceptions": [[3, "module-silverback.exceptions"]], "silverbackmiddleware (class in silverback.middlewares)": [[4, "silverback.middlewares.SilverbackMiddleware"]], "post_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.post_execute"]], "pre_execute() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_execute"]], "pre_send() (silverback.middlewares.silverbackmiddleware method)": [[4, "silverback.middlewares.SilverbackMiddleware.pre_send"]], "silverback.middlewares": [[4, "module-silverback.middlewares"]], "baserunner (class in silverback.runner)": [[5, "silverback.runner.BaseRunner"]], "pollingrunner (class in silverback.runner)": [[5, "silverback.runner.PollingRunner"]], "websocketrunner (class in silverback.runner)": [[5, "silverback.runner.WebsocketRunner"]], "run() (silverback.runner.baserunner method)": [[5, "silverback.runner.BaseRunner.run"]], "run() (silverback.runner.websocketrunner method)": [[5, "silverback.runner.WebsocketRunner.run"]], "silverback.runner": [[5, "module-silverback.runner"]], "subscriptiontype (class in silverback.subscriptions)": [[6, "silverback.subscriptions.SubscriptionType"]], "silverback.subscriptions": [[6, "module-silverback.subscriptions"]], "async_wrap_iter() (in module silverback.utils)": [[7, "silverback.utils.async_wrap_iter"]], "hexbytes_dict() (in module silverback.utils)": [[7, "silverback.utils.hexbytes_dict"]], "silverback.utils": [[7, "module-silverback.utils"]]}}) \ No newline at end of file diff --git a/v0.5.3/userguides/development.html b/v0.5.3/userguides/development.html new file mode 100644 index 00000000..ce880197 --- /dev/null +++ b/v0.5.3/userguides/development.html @@ -0,0 +1,342 @@ + + + + + + + Developing a Silverback Application — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Developing a Silverback Application

+

In this guide, we are going to show you more details on how to build an application with Silverback.

+
+

Prerequisites

+

You should have a python project with Silverback installed. +You can install Silverback via pip install silverback

+
+
+

Creating an Application

+

Creating a Silverback Application is easy, to do so initialize the silverback.SilverbackApp class:

+
from silverback import SilverbackApp
+
+app = SilverbackApp()
+
+
+

The SilverbackApp class handles state and configuration. +Through this class, we can hook up event handlers to be executed each time we encounter a new block or each time a specific event is emitted. +Initializing the app creates a network connection using the Ape configuration of your local project, making it easy to add a Silverback bot to your project in order to perform automation of necessary on-chain interactions required.

+

However, by default an app has no configured event handlers, so it won’t be very useful. +This is where adding event handlers is useful via the app.on_ method. +This method lets us specify which event will trigger the execution of our handler as well as which handler to execute.

+
+
+

New Block Events

+

To add a block handler, you will do the following:

+
from ape import chain
+
+@app.on_(chain.blocks)
+def handle_new_block(block):
+    ...
+
+
+

Inside of handle_new_block you can define any logic that you want to handle each new block detected by the silverback client. +You can return any serializable data structure from this function and that will be stored in the results database as a trackable metric for the execution of this handler. +Any errors you raise during this function will get captured by the client, and recorded as a failure to handle this block.

+
+
+

New Event Logs

+

Similarly to blocks, you can handle events emitted by a contract by adding an event handler:

+
from ape import Contract
+
+TOKEN = Contract(<your token address here>)
+
+@app.on_(TOKEN.Transfer)
+def handle_token_transfer_events(transfer):
+    ...
+
+
+

Inside of handle_token_transfer_events you can define any logic that you want to handle each new transfer event that gets emitted by TOKEN.Transfer detected by the silverback client. +Again, you can return any serializable data structure from this function and that will be stored in the results database as a trackable metric for the execution of this handler. +Any errors you raise during this function will get captured by the client, and recorded as a failure to handle this transfer event log.

+
+
+

Startup and Shutdown

+
+

Worker Events

+

If you have heavier resources you want to load during startup, or want to initialize things like database connections, you can add a worker startup function like so:

+
@app.on_worker_startup()
+def handle_on_worker_startup(state):
+    # Connect to DB, set initial state, etc
+    ...
+
+@app.on_worker_shutdown()
+def handle_on_worker_shutdown(state):
+    # cleanup resources, close connections cleanly, etc
+    ...
+
+
+

This function comes a parameter state that you can use for storing the results of your startup computation or resources that you have provisioned.

+

It’s import to note that this is useful for ensuring that your workers (of which there can be multiple) have the resources necessary to properly handle any updates you want to make in your handler functions, such as connecting to the Telegram API, an SQL or NoSQL database connection, or something else. This function will run on every worker process.

+

New in 0.2.0: These events moved from on_startup() and on_shutdown() for clarity.

+
+

Worker State

+

The state variable is also useful as this can be made available to each handler method so other stateful quantities can be maintained for other uses. Each distributed worker has its own instance of state.

+

To access the state from a handler, you must annotate context as a dependency like so:

+
from typing import Annotated
+from taskiq import Context, TaskiqDepends
+
+@app.on_(chain.blocks)
+def block_handler(block, context: Annotated[Context, TaskiqDepends()]):
+    # Access state via context.state
+    ...
+
+
+
+
+
+

Application Events

+

You can also add an application startup and shutdown handler that will be executed once upon every application startup. This may be useful for things like processing historical events since the application was shutdown or other one-time actions to perform at startup.

+
@app.on_startup()
+def handle_on_startup(startup_state):
+    # Process missed events, etc
+    # process_history(start_block=startup_state.last_block_seen)
+    # ...or startup_state.last_block_processed
+    ...
+
+
+@app.on_shutdown()
+def handle_on_shutdown():
+    # Record final state, etc
+    ...
+
+
+

Changed in 0.2.0: The behavior of the @app.on_startup() decorator and handler signature have changed. It is now executed only once upon application startup and worker events have moved on @app.on_worker_startup().

+
+
+
+

Running your Application

+

Once you have programmed your bot, it’s really useful to be able to run it locally and validate that it does what you expect it to do. +To run your bot locally, we have included a really useful cli command run that takes care of connecting to the proper network, configuring signers (using your local Ape accounts), and starting up the application client and in-memory task queue workers.

+
# Run your bot on the Ethereum Sepolia testnet, with your own signer:
+$ silverback run my_bot:app --network :sepolia --account acct-name
+
+
+

It’s important to note that signers are optional, if not configured in the application then app.signer will be None. +You can use this in your application to enable a “test execution” mode, something like this:

+
# Compute some metric that might lead to creating a transaction
+if app.signer:
+    # Execute a transaction via `sender=app.signer`
+else:
+    # Log what the transaction *would* have done, had a signer been enabled
+
+
+
+

Note

+

If you configure your application to use a signer, and that signer signs anything given to it, remember that you can lose substational amounts of funds if you deploy this to a production network. +Always test your applications throughly before deploying.

+
+
+

Distributed Execution

+

Using only the silverback run ... command in a default configuration executes everything in one process and the job queue is completely in-memory with a shared state. +In some high volume environments, you may want to deploy your Silverback application in a distributed configuration using multiple processes to handle the messages at a higher rate.

+

The primary components are the client and workers. The client handles Silverback events (blocks and contract event logs) and creates jobs for the workers to process in an asynchronous manner.

+

For this to work, you must configure a TaskIQ broker capable of distributed processing. +Additonally, it is highly suggested you should also configure a TaskIQ result backend in order to process and store the results of executing tasks.

+
+

Note

+

Without configuring a result backend, Silverback may not work as expected since your tasks will now suddenly return None instead of the actual result.

+
+

For instance, with taskiq_redis you could do something like this for the client:

+
export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker"
+export SILVERBACK_BROKER_KWARGS='{"queue_name": "taskiq", "url": "redis://127.0.0.1:6379"}'
+export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend"
+export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379"
+
+silverback run "example:app" --network :mainnet:alchemy
+
+
+

And then the worker process with 2 worker subprocesses:

+
export SILVERBACK_BROKER_CLASS="taskiq_redis:ListQueueBroker"
+export SILVERBACK_BROKER_KWARGS='{"url": "redis://127.0.0.1:6379"}'
+export SILVERBACK_RESULT_BACKEND_CLASS="taskiq_redis:RedisAsyncResultBackend"
+export SILVERBACK_RESULT_BACKEND_URI="redis://127.0.0.1:6379"
+
+silverback worker -w 2 "example:app"
+
+
+

This will run one client and 2 workers and all queue data will be go through Redis.

+
+
+
+

Testing your Application

+

TODO: Add backtesting mode w/ silverback test

+
+
+

Deploying to the Silverback Platform

+

TODO: Add packaging and deployment to the Silverback platform, once available.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/v0.5.3/userguides/quickstart.html b/v0.5.3/userguides/quickstart.html new file mode 100644 index 00000000..999dd6c3 --- /dev/null +++ b/v0.5.3/userguides/quickstart.html @@ -0,0 +1,292 @@ + + + + + + + Quick Start — silverback documentation + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +
+

Quick Start

+

Silverback lets you create and deploy your own Python bots that respond to on-chain events. +The Silverback library leverages the Ape development framework as well as it’s ecosystem of plugins and packages to enable you to develop simple-yet-sophisticated automated applications that can listen and respond to live chain data.

+

Silverback applications are excellent for use cases that involve continuously monitoring and responding to on-chain events, such as newly confirmed blocks or contract event logs.

+

Some examples of these types of applications:

+
    +
  • Monitoring new pool creations, and depositing liquidity

  • +
  • Measuring trading activity of popular pools

  • +
  • Listening for large swaps to update a telegram group

  • +
+
+

Documentation

+

Please read the development userguide for more information on how to develop an application.

+
+
+

Dependencies

+
    +
  • python3 version 3.10 or greater, python3-dev

  • +
+
+
+

Installation

+

Silverback relies heavily on the Ape development framework, so it’s worth it to familarize yourself with how to install Ape and it’s plugins using the Ape installation userguide.

+
+

Note

+

It is suggested that you use a virtual environment of your choosing, and then install the Silverback package via one of the following options.

+
+
+

via pip

+

You can install the latest release via pip:

+
pip install silverback
+
+
+
+
+

via setuptools

+

You can clone the repository and use setuptools for the most up-to-date version:

+
git clone https://github.com/ApeWorX/silverback.git silverback
+cd silverback
+python3 setup.py install
+
+
+
+
+
+

Quick Usage

+

Checkout the example to see how to use the library.

+
+

Note

+

The example makes use of the Ape Tokens plugin. +Be sure to properly configure your environment for the USDC and YFI tokens on Ethereum mainnet.

+
+

To run your bot against a live network, this SDK includes a simple runner command you can use via:

+
$ silverback run "example:app" --network :mainnet:alchemy
+
+
+
+

Note

+

This runner uses an in-memory task broker by default. +If you want to learn more about what that means, please visit the development userguide.

+
+
+
+

Docker Usage

+
$ docker run --volume $PWD:/home/harambe/project --volume ~/.tokenlists:/home/harambe/.tokenlists apeworx/silverback:latest run "example:app" --network :mainnet
+
+
+
+

Note

+

The Docker image we publish uses Python 3.11.

+
+
+
+

Setting Up Your Environment

+

Running the Quick Usage and Docker Usage with the provided example will fail if you do not have a fully-configured environment. +Most common issues when using the SDK stem from the proper configuration of Ape plugins to unlock the behavior you desire.

+

You should use a provider that supports websockets to run silverback. +If you want to use a hosted provider with websocket support like Alchemy to run this example, you will need a Alchemy API key for Ethereum mainnet. +If you attempt to run the Docker Usage command without supplying this key, you will get the following error:

+
$ docker run --volume $PWD:/home/harambe/project --volume ~/.tokenlists:/home/harambe/.tokenlists apeworx/silverback:latest run "example:app" --network :mainnet:alchemy
+Traceback (most recent call last):
+  ...
+ape_alchemy.exceptions.MissingProjectKeyError: Must set one of $WEB3_ALCHEMY_PROJECT_ID, $WEB3_ALCHEMY_API_KEY, $WEB3_ETHEREUM_MAINNET_ALCHEMY_PROJECT_ID, $WEB3_ETHEREUM_MAINNET_ALCHEMY_API_KEY.
+
+
+

Go to Alchemy, create an account, then create an application in their dashboard, and copy the API Key.

+

Another requirement for the command from Docker Usage to run the given example is that it uses ape-tokens plugin to look up token interfaces by symbol. +In order for this to work, you should have installed and configured that plugin using a token list that includes both YFI and USDC on Ethereum mainnet. +Doing this will give you a ~/.tokenlists hidden folder in your home folder that you must mount into the docker container with the following flag:

+
... --volume ~/.tokenlists:/home/harambe/.tokenlists ...
+
+
+
+

Note

+

It is suggested to install the 1inch tokenlist via ape tokens install tokens.1inch.eth. +See the ape-tokens README for more information.

+
+

To check that both of the tokens exist in your configured tokenlist, you can execute this command:

+
$ ape tokens token-info YFI
+      Symbol: YFI
+        Name: yearn.finance
+    Chain ID: 1
+     Address: 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
+    Decimals: 18
+
+$ ape tokens token-info USDC
+      Symbol: USDC
+        Name: Circle USD
+    Chain ID: 1
+     Address: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
+    Decimals: 6
+
+
+
+

Note

+

If you want, you can comment out the two functions exec_event1 and exec_event2 that handle the contract log events from these contracts if you do not have the configured tokenlist, then your command should work.

+
+
+
+

Development

+

This project is under active development in preparation of the release of the Silverback Platform. +Things might not be in their final state and breaking changes may occur. +Comments, questions, criticisms and pull requests are welcomed.

+

See Contributing for more information.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file