From 6ab8d24d728dff360c5a91f89ff2a2500bae362a Mon Sep 17 00:00:00 2001
From: Andrew Gerrand The golang-nuts
+mailing list is for general Go discussion. A list of the most popular goinstall'd
+Go libraries. A list of external Go projects including programs and libraries. #go-nuts on irc.freenode.net is the official Go IRC channel. The Go project's official Twitter account.
+The Go project's official blog, maintained by the core Go developers.
+
+Posts labelled 'Go' by Russ Cox, one of the core Go developers.
+
+Posts labelled 'Programming' by Ian Lance Taylor, one of the core Go developers.
+
+Posts labelled 'Go' by Andrew Gerrand, one of the core Go developers.
+ Having an issue with Go? Check the tracker to see if it's a known issue. If your issue is not listed, please file a bug report. View the status of Go builds across the supported operating
+systems and architectures. So, you want to contribute code to the Go project? That's great! The first step is to read these contributions guidelines for information on
+design, testing, and our code review process. Features and ideas being developed or discussed by the Go team. A summarization of the changes between tagged releases of Go. The golang-dev
+mailing list is for discussing and reviewing code for the Go project. For general discussion of Go programming, see golang-nuts. A mailing list that receives a message summarizing each checkin to the Go repository.
-If you're new to Go, we recommend following the
-tutorial while consulting the
-language spec.
-Then read Effective Go, as it addresses many
-common beginner questions.
+If you're new to Go, we recommend you work through the
+tutorial. The
+language specfication has all the details should
+you want to explore.
Keep these under your pillow.
-The built-in documentation for the Go standard library.
+Once you've learned a little about the language,
+Effective Go will help you learn the style and
+idioms of programming in Go.
-The built-in documentation for the Go tools.
-
-The official Go Language specification.
-
-A document that specifies the conditions under which reads of a variable in
-one goroutine can be guaranteed to observe values produced by writes to the
-same variable in a different goroutine.
-
The first tutorial. An introductory text that touches upon several core
@@ -51,6 +30,11 @@ A must read for any new Go programmer. It augments the tutorial and
the language spec, both of which should be read first.
+How to write a new package and how to test code.
+
This codelab takes the reader through the creation of a simple wiki web
@@ -63,13 +47,24 @@ and closures.
An introduction to Go for C++ programmers.
-How to write a new package and how to test code.
+Answers to common questions about Go.
+Answers to common questions about programming with Go.
+
+Answers to common questions about the design decisions behind Go.
+
@@ -86,39 +81,40 @@ A German translation of the Effective Go document.
A German translation of the How to Write Go Code document.
-Answers to common questions about Go.
+A Chinese translation of both the Effective Go and Go Tutorial documents.
Keep these under your pillow.
-Answers to common questions about the design decisions behind Go.
+The built-in documentation for the Go standard library.
-Answers to common questions about programming with Go.
+The built-in documentation for the Go tools.
-How to contribute changes to the Go project.
+The official Go Language specification.
-Features and ideas being developed or discussed by the Go team.
-
-A summarization of the changes between tagged releases of Go.
+A document that specifies the conditions under which reads of a variable in
+one goroutine can be guaranteed to observe values produced by writes to the
+same variable in a different goroutine.
-A demonstration of the practical use of goroutines and channels.
-
-A self-describing Codewalk.
-
-Articles about Go from external blogs.
-
-Posts labelled 'Go' by Russ Cox, one of the core Go developers.
-
-Posts labelled 'Programming' by Ian Lance Taylor, one of the core Go developers.
- Is your question not answered here? Try the Programming FAQ or the Language Design FAQ. Is your question not answered here? Try the Programming FAQ or the Go FAQ. Is your question not answered here? Try the Go FAQ or the Language Design FAQ.The Go Community
+
+Go Nuts Mailing List
+Go Packages Dashboard
+Go Project Dashboard
+Go IRC Channel
+@go_nuts at Twitter
+Blogs
+
+The Go Blog
+research!rsc
+Airs
+nf.id.au
+Resources for Developers
+
+Issue Tracker
+Build Status
+Contribution Guidelines
+The Go Project
+
+Roadmap
+Release History
+Developer Mailing List
+Checkins Mailing List
+Introduction
diff --git a/doc/go_learning.html b/doc/docs.html
similarity index 74%
rename from doc/go_learning.html
rename to doc/docs.html
index 78a1ba94b0..ae27dd2de0 100644
--- a/doc/go_learning.html
+++ b/doc/docs.html
@@ -1,42 +1,21 @@
-
-
+
+
+Learning Go
-Recommendations
Reference Materials
-Package Documentation
Command Documentation
-Language Specification
-The Go Memory Model
-Tutorials
-
A Tutorial for the Go Programming Language
How to write Go code
+Codelab: Writing Web Applications
How to write Go code
+Frequently Asked Questions
+
+Go FAQ
Programming FAQ
+Documentation in languages other than English
+Language Design FAQ
+Non-English Documentation
Eine Anleitung zum Programmieren in Go
Frequently Asked Questions
-
-Go FAQ
+Effective Go and Tutorial, a Chinese Translation
Language Design FAQ
+References
+
+Package Documentation
Programming FAQ
+Command Documentation
Development
-
-Contributing to the Go project
+Language Specification
Roadmap
+The Go Memory Model
Release History
-Videos and Talks
@@ -170,30 +166,6 @@ does.
A short promotional video featuring Russ Cox demonstrating Go's fast compiler.
-Codewalks
+Share Memory By Communicating
-How to write a Codewalk
-Blog Posts
-Go articles at research!rsc
-Programming articles at Airs
-Origins
diff --git a/doc/go_lang_faq.html b/doc/go_lang_faq.html
index b8deb15343..0eec50b005 100644
--- a/doc/go_lang_faq.html
+++ b/doc/go_lang_faq.html
@@ -1,5 +1,9 @@
+
Origins
diff --git a/doc/go_programming_faq.html b/doc/go_programming_faq.html
index 9ef5168253..736578ab5c 100644
--- a/doc/go_programming_faq.html
+++ b/doc/go_programming_faq.html
@@ -1,5 +1,9 @@
+
Pointers and Allocation
diff --git a/doc/godocs.js b/doc/godocs.js
index b2fc1b357b..8b451547d6 100644
--- a/doc/godocs.js
+++ b/doc/godocs.js
@@ -11,17 +11,32 @@
/* We want to do some stuff on page load (after the HTML is rendered).
So listen for that:
*/
-if (window.addEventListener){
- window.addEventListener('load', godocs_onload, false);
-} else if (window.attachEvent){
- window.attachEvent('onload', godocs_onload);
+function bindEvent(el, e, fn) {
+ if (el.addEventListener){
+ el.addEventListener(e, fn, false);
+ } else if (el.attachEvent){
+ el.attachEvent('on'+e, fn);
+ }
}
+bindEvent(window, 'load', godocs_onload);
function godocs_onload() {
+ godocs_bindSearchEvents();
godocs_generateTOC();
godocs_addTopLinks();
}
+function godocs_bindSearchEvents() {
+ var search = document.getElementById('search');
+ function clearInactive() {
+ if (search.className == "inactive") {
+ search.value = "";
+ search.className = "";
+ }
+ }
+ bindEvent(search, 'focus', clearInactive);
+}
+
/* Generates a table of contents: looks for h2 and h3 elements and generates
* links. "Decorates" the element with id=="nav" with this table of contents.
*/
diff --git a/doc/ie.css b/doc/ie.css
new file mode 100644
index 0000000000..bb89d54be2
--- /dev/null
+++ b/doc/ie.css
@@ -0,0 +1 @@
+#nav-main li { display: inline; }
diff --git a/doc/install.html b/doc/install.html
index 25be700d66..d184a7209b 100644
--- a/doc/install.html
+++ b/doc/install.html
@@ -1,4 +1,4 @@
-
+
Introduction
@@ -8,6 +8,8 @@ This document explains how to check out the sources,
build them on your own machine, and run them.
There are two distinct ways to experiment with Go.
This document focuses on the gc
Go
@@ -64,11 +66,20 @@ The full set of supported combinations is listed in the discussion of
environment variables below.
The Go tool chain is written in C. To build it, you need -to have GCC, the standard C libraries, the parser generator Bison, -make, awk, and the text editor ed installed. +
The Go tool chain is written in C. +To build it, you need these programs installed: +
On OS X, they can be @@ -76,18 +87,28 @@ installed as part of Xcode.
-On Linux, use sudo apt-get install bison ed gawk gcc libc6-dev make
-(or the equivalent on your Linux distribution).
+
On Ubuntu/Debian, use sudo apt-get install bison ed gawk gcc libc6-dev make
.
+
+To perform the next step you must have Mercurial installed. (Check that you have an hg
command.) This suffices to install Mercurial most systems:
+
+sudo easy_install mercurial ++(On Ubuntu/Debian, you might try
apt-get install python-setuptools
+python-dev build-essential
first. The Mercurial in your distribution's
+package repository will most likely be old and broken.)
+
++If that fails, try installing manually from the Mercurial Download page.
-If you do not have Mercurial installed (you do not have an hg
command),
-sudo easy_install mercurial
works on most systems.
-(On Ubuntu/Debian, you might try apt-get install python-setuptools python-dev build-essential gcc
first.)
-If that fails, visit the Mercurial Download page.
Go will install to a directory named go
.
Change to the directory that will be its parent
and make sure the go
directory does not exist.
@@ -129,8 +150,11 @@ and the details on the last few lines will reflect the operating system,
architecture, and root directory used during the install.
For more information about ways to control the build, see the discussion of environment variables below.
+hello.6
.
+To build more complicated programs, you will probably want to use a @@ -208,6 +233,28 @@ about contributing to the Go project gives more detail about the process of building and testing Go programs.
++Start by reading the Go Tutorial. +
+ ++Build a web application by following the Wiki +Codelab. +
+ ++Read Effective Go to learn about writing +idiomatic Go code. +
+ ++For the full story, consult Go's extensive +documentation. +
+The Go Playground is a web service that runs on +golang.org's servers. +The service receives a Go program, compiles, links, and runs the program inside +a sandbox, then returns the output. +
+ ++There are limitations to the programs that can be run in the Playground. +They must be single-threaded (but they may use many goroutines). +There are also limits on execution time, and CPU and memory usage. +The Playground can access only a subset of the standard library +(notably absent are network and filesystem access). +Therefore, the only communication a Playground program has to the outside world +is via standard output. +
- ![]() |
-
- a systems programming language
- expressive, concurrent, garbage-collected |
-
+ The Go programming language is an open source project to make + programmers more productive. Go is expressive, concise, clean, + and efficient. Its concurrency mechanisms make it easy to write + programs that get the most out of multicore and networked machines, + while its novel type system enables flexible and modular program + construction. Go compiles quickly to machine code yet has the + convenience of garbage collection and the power of run-time reflection. + It's a fast, statically typed, compiled language that feels like a + dynamically typed, interpreted language. +
++ Install Go now, or try it right here in your browser: [How does it work?]
+ + +Go is …
- --package main - -import "fmt" - -func main() { - fmt.Printf("Hello, 世界\n") -}- -
Go has a small, simple feature set, making it easy to learn.
- --Go compilers produce fast code fast. Typical builds take a fraction of a second yet the resulting programs run nearly as quickly as comparable C or C++ code. -
- --Go promotes writing systems and servers as sets of lightweight communicating -processes, called goroutines, with strong support from the language. Run -thousands of goroutines if you want—and say good-bye to stack overflows. -
- -Go is type safe and memory safe. Go has pointers but no pointer arithmetic. -For random access, use slices, which know their limits.
- --Go has fast builds, clean syntax, garbage collection, -methods for any type, and run-time reflection. -It feels like a dynamic language but has the speed and safety of a static language. -It's a joy to use. -
- --Go for it. -
- -v^o@ z5|6bzj~`=-$=FO#e*WyPLplXnH2gloRn*yPw^%euAsSUNi<7t?`jJ);_F}NK42sy^ z2B%pDKjeEsBC=cnE~ue9sNi>8n`y2)c&Ma0|L6BF% {sEG`H=e)qfI z1%ia|^iN;>!ascW9}A6&&l9GTZWt2Vgx9@J2b3UISt02^sLwo|YN;8l~fV4DzJg|&sD zY1&j5+ysQwako9stu-ftG`VzTsnu~8_RLt7a_o6xm`2lN)0I3xLUb}{;!qnzz{6~B zZ_Uq4udj3+!(d53t$Me!9aeR~;-TzfCF(eAmJP6trpZw@=`$R8p>(Wv$aYJRXD4S2 z&rL#O2j;4A8Qn%Zt82jG-}_4+*>ke};BWjPM7o4&JdA@u;&xE%0LbrZ!24pfuiO9{ ztXsv+?aiG_TU^Hg0&3GUJWlIYx$E`+=wlzd?#3HM;;Cr&`<`WJNg!Ij49j$VH-g iM&$!?0@>uB}Wro_pc>JMVc-(RSQH0Q(52Y2fxikHRP_ zlqwq4`~5z|R6mR+rl-%IJ@d_PKKRSO{EMId^k3g{!%a^<_0*LMYZzIkFpY3(y14(~ zJkfBk+ildQJ8=M@#@3zXbEi2<>Jtl>maiOc?hC5)LVNof`;Z@;wON1z!1%}qN0;XF zx-6eYR!29F^@FPuh!t>6(Jr!q@_BSsKEyQ3)x{wK90otsi)OMz`d9rQ|CQe)&4cI9 z|5XJ%z3 T-{iM4QRW)oz@O+k_2&Ja>YV14C6wfD33Nkk^B>e z(Z%!UR(HCM=EQs6^Ugzu4t@I5e}C-Q^)I||%J+lq_1@;@`YT^`*I)hB$6k2h>FMdI zdUa}ZYqd~ns)kQ+8ouwtb>#VVK<$lz7kgn?)!;4=U&I-+6ptoYDcRN0G~Nm|Jf&pV z`#k!*lDuSr lJs|j&b6~6OL_xkKJnZ&RxEAYoh{OLc|A6 z XEUc0T^1*25zxNglb4X4;~J-;{TdqP?IJ3F@Hgh^DaR6hC_9|!sdG5N%a8!g)o ze0YO-?Al{d5Cb9g2Y{QB>8U-x^b5aSs}z@3PQ!vyAeBjCi9dE2LVS(HClCZd!7;W2 z)b)bNdPQSx(G->^R>Zsj-PKgM>vLuBuJ-C-Ysv65X7$f7&d#?NV_iA|P7dtY8-(kd z=$;S!KexQ{UIdK#nI|W>zSlr6F0Y&{t-kX=eDK8WuWqewJ^t(&b8^z!+IjAq4;`4P z9z1fma@{^MS&Cxc-~(_?O}m7S&%XJ@!8d@f45HNAO1ze77d3+(+&7bkJ>Tmh fr_aAh7PRWrY{}^DuMlB*TBLp@}#5LPi2r)@`u~^cG zi9)7zeBSdw7p-c=DwNwVF0B@4D;xb*$^bW~;5-TV@_=k@ZaP%2SS7GUFygCM*FkIE z_T%rk_eWlLWo2V-ZjMQi0D#%D9pPis^r@$wx&4mYy`TqF6`^{!o0h9HUbNEh^(8?x zz@}TRZE-9$CJ;@rh7%2UBixUvu1^rYo}_tQcl 4La|uw1RKD?E9H9Gau6H%Vpc75 zU9T{?_r?=PMXv{liBm7|rS1lVCP6d++p5 |XO`KY(V1?Xklf32p zhx#N`r%cY+^E1@*j{_Rdx~cCO&(FCe*@>xKo?cw4)?fDH@9vzvR3_Hp!zZrlR_{w+ zeC+Q|L;vBJ!$DV!sJ72r+p+_FFqu3G0az|# FCaUi0 z20U@4Tq!%n{-CD;{4&f^vDE4eCYqC;?*Xq}zPjvsF2KtVe(1m5_kSORT>=`vuy?Ug zDnIe$)1K$udFRW1?Cn2Zt(M?s*WY*yf?ASlJFPAS63aE FVV= z0jTM1CtK_0)HJLm==E&72#mYa=@jgeL9}ky1+J2k)YK8yfhX!oEcQ#-C8pxETak6v zH4NB2jeIaj*j3yfc%2Z@P8iKk%x-LL0Ddubb7`m3tkfFi8VIsbsV9sufTq4@SOuG< zJH7V)efuEV!ft?qP^wK$PGL?e)e5*2ARb97lw@&n=H6G`@yNp`4_*VoGSxMr@@@HP z(h$XC_$TEBpxHsH_fpjHf|^bYQ+~Dz+I2oGA4{H%k}SiIaH84x%kV@#HLW4~uT3qE z5+(&N+K40MyQtglZ(O`M03aA8X1xgv2zS +C87X=579F2IZIX_>SnlQu!A!pq_5rEu4 z?m&J3f#~@RdT!`;oJxg6t%A$j7cNcCEYxi$N;nWU*aXJ`3ebf}G|_BI3NB_>;Tyn? zAUBbz!NOWVvjJ*o)I>pV;KrVARho@@;xX{tEw=#~GUm;5V19q(!%zBduU~}7W`nR& z3j$ZUy0g<-U0W>_Y&Y 2)2B_tYAw@7;9##7)Hc;-CD*nY}aBMq#VH)c4y_uUD@$e(EQF_PU!F z(cDbfS_5_Q`#u%TB*ci4Uawc4Xd)9Bp(#gPqBp$mp4E%3fBo#=ox9p;%uiz=!w%46 zV`F>E1%TrRmT7^&)Mv7&Gy9!_1G@xU2Z5K0qYe|T$F8B8Z6&1N?*(A;Alg)$wd_;p zpH;_}$0Uj=;6=cehEcW>x0U$YTI%*Yn}tfjE(Dy!9k RPk3A^0q*8;&?%Pn?RFoONJC|pX-08sE!-*g zlj`J=C_INrqREfH0 mBNCVo#qZkDU?lq z3`gLiCoWySb7~(u{peF){F2w%uFOwwMV+Po#cw@+_So(Bl#8YBKJvX!e) a+iLODg0Qd`WPEin00^QI- zqF2{emrq}qotp 2 rU6#iIq3RYT3Fu3@mlrQS@Sv9Rh@eNl z@vURG-V7)q@CH{}+gGl<@SYF;{*5oa^JQ;*_2hxY@>Juwjb)dk&c@dC;W;l(8^zk% z<&{IX-13S4^>@wvGe7v|11p!Vv^Lt5BOS5TD;KZ7;d(9br>2{3l$?3~ lSDwP2!MX@Q(Bq$7j9Na%nN(*!2fqx6|qNcRGDQp}r5{m)9zF_`6c6_4|X1moJ+< zotd5M_6I@48dI|!H)O=F)n;CH^9>6NbK I?OWfRn3T^>rt{PG z{9 fb)|$$hia_4(=5!S >neUp8b@ Xlr}3*XrMJ(+SuQ z;NXU3VWjg^uT>h=YU8(m>yNH3b$u_KnwqIp8fVX3D3_`b;T9+KH17Lu-}iPVr>FnF z5B;3~EAP8_{?bQ(=XWD-P=`p&l1{f31)*gZO{?Awbvq*UN*MrGknmPS+exunn$~u< zHL)-t<~WIEzFM}NC)ieJ?E!^lz;^)%O1ebCtVo%CFq- pZ>J>@xi~`f8YF(BOm*Rf2=R;1*Q7xefPid^{>6_-q%Kavx=E!S~nj& zuy<-A?fb3%lC!;CJ-A<-u>t%e1k9n`{mR>3a@)1P_=`&qeC~lKAARublUFKr^!gut z_x?ji1o+gntwf}%FE4L={|7%1r`+~8@Nd5R&dpfgBE ySLmxob z{>A;U5g@a(=gvZKz5CYNudc3bw_44~$!cTb>bl6r0)ze4pZ)dQZol=RhaV~y?CY+- z_T0HMcfI1ysi`R-c8Ko;!Nn+Q+j@!c5)dICv88isAAJAM@2sqEhVf2WcNP}UJa=wx za>6Xmz-HH~6-Q$Z^^9PnjNOBad&}JzFslU!0TY%a@Hp~Ju~@UaSoU*>0;c?UDTP68 zK(=x~P$F-Q$o#rw!s=6WD7-2@HjU_VwkA69ws-8?e|YWk()QYpp%=dW^{+qlwXcbq z3en5c2jBlYfAH6z{MgRPNB`4%-W{N5IUaoYBcEYaEv{9o#l~!DV*Ao%fOrQEFPf93 zQ)kXi)~DBBT$Uj>2G4Nx=pHu-jbKn1c)# _30{Pc^epPrH5?r=h3? z2|tu1;8-Hib#YjiE{+Nfqj0Ca!$ZFJ@LnLNz{vsi3TEYpO_8}{X)rjtZ~v($pML30 z$LAKN-uv#ifAZ6x+`m|k!WR6x-`})s-7;$^qDdHe!8+&Z-fIrN>*wG1kAM2n^-DlK zqNR; nv;@P96?xL>jt+TxZ|gP>Zb?oHY^aHPfU>M0>OrHWXpro zvroDj_TPzfW8~-bslh!J}PX zIcJO07JAbMr%j@*E-hoqI>C;i)qQLSgnjyRpa1Z0{JOt=75QO7x1#M<7(|tRzdAK( zRf=LRCkl~{ |Qdg1^wi{7eRpPc*2xBuAvpZSOuM&MLs z8$1v-Mww7nQTON$cGPF40ix;ly6~kHfE~>Yf&g&41u{XXXi_W2Bn=vq^*{LUzwjp? z`*V)^Yb#g({fmEBESdfGIa44L8(dWaTH<>qE$Vs!C81{PDNbJh*0;_#rtbUF7dE*2 z)Tt*sr&p&4T57#eD{0)aBb@@N)T*WR<(&hEjz97IBin0hH01`^QOZR#1Q&Hj3s kl RWmW62n1N`EKcy|(qw~L zwWt>z$0H?UaccJPk%f`wLgF|{W`|s`ZqqgQ-2buXzyA<1 Zt&VTvN z-~9df#%)RS0uO#6Or3f=a$;kkst*l_CQ9qYL5QO_sUk2wMzpht;`Bli$Yv?9+w+%Z z#>b09)Y~I!#q<+9QEA`iOX*UWq|>vrMY)*x0pJ6_>xp3^r|F)J8mZ-1@nO z<3;`a_4{tV^Dn=!_l6s*>r0XX$R&h7nLtD=YAf~WnN$piHf={Q%1fN8=!N1A!@T&$ z8^z!<1rKa@?)mt=T;dN56u2 UYftXH3TD-45H z6pRm#{^6Iu_@{sVKsWLPO%Cx^w_E8i*nq&P4=Hs=0N{v|l!+TyL+Y8?;IsejbKm&p zclK=9l8OsrXd4pWT3qPb^--P@-IP^JsuVcb07!?^2sTiHEyU>vDHav@K7jPugHLQX zd?Kb+cd?VnR@k-Uw551qYWrIxp}8;zK&_7m7T|XYTkibULML!ePMj)P;`RI9_tE?A zx#hN7hen36ISH#Kp1X+GPk;rmauw0pnKRW&zhYT9e4Z+9$8FXZ+l@uK+*+E2BWFDE z*pK^n+)x-Czi{#_xQzb(DrDUN_Q1ilnr)g2vK(85zP)#SLXwmdGmV9MSJN~z#Ld7U z&0tHb?K8^*ucJ^VU6-;DNGvV8GBd$Arg*%!muUYQ6)It+r;XQ$WUSw|<4!}_wg(>H zS15@wZ4o_`g`MxeWoYC0SNB~9$D?SN=TA=9OU*BQ< mL}{bMvj+wr$?Ab(3f)oDbPykgJj#0M(5W z>&(Rw(6bZAOC`O(R;7Fxxm45oLMpd|Fb-pda#9G8(pqXQjcptkb=h-li4Bf2V&Fu! zipZvf$}v l(?!6W2Xhr~1CMC=2GBq|px7a qB*HnxY<+b=NwUV}dPU{F@y&0H^_ASYOJ#+zQp8caxl}3^ zinW?nt-v1+n{Fs$n4+BH0?LyLh4%dP|M}u)*N={nH; DC+X{>YtUV}nk6nZ((` z%=}xgymrZJ8iu)U!^V-(vD(nk@aS;4Qh~gT_2I#13uv=0W>l5I*QIV7?9*x6m)!^% zXiuCvetGuPAAaHUPN%Mw%ouQ^CMd;9r6^~Dgwoq7j^0{Zw&8qeoakC*g}Wuq35yU{ zNkZ!RDJN+IBRO@dR4A>bHm5n+9m+Yf88V(*)v#pq!#zpqUbobWBs0y@RWcj4>wI28 zRSePfqL|MNP4N?oMffxWD?{N?2my)~;XO=}go!GFr&JNmGL1km6L{?~O sa{l6sb-yBus`)%pZmM7{^?!&_syO@&Uu|$ zrCjQ(1)YVoo&>Q^(?l -WnxF*{S?S*1UTn1 ;}qSEiTO$WJ4*iTG94ophCv zFAFF@cNEZxk_gU)Aj%n2J(VOGqN_}#I7t*i(sd;YA}RoY0=%pwQH**Am_160p#>R* zbTy2ke9jHh9XJO$DfCjyE))wAPh*;DM26o6XQJadnI%BT_@f8DTK~Pz+ yrKaz1Sf$bwY;Fp;Czl9f7z^ZPS_%zdorUPIQFoDPT=4jP_4=} zJ5j{?jRKcR17SloCd1&pmRi`X5qQnH`Gt#@WkDSp9^1TW_qoM|Hx3^A?sp%WYAi#X z+PiOmxZDIBC1OJepT#-3OGbs>Xl_EOEQ+e80s4Snp{OJP7)wN0DIyaBpOyBcS|MB2 zh=%V3j#7qMPsZ{Gg1DwfG|A_Jk-5jrb>VX<_^j8n+~fI55m4krhq>d0vy|^9U^LS- zvAUDQh9tppkC03VoQ?=DmHH7XRp4513M5}KMcPg5`yqlLMtI6oQACvvr1*&=%w^!y zMgcO{Ah_p@N+H0HgxS95g@P<-h8cm^OfuJtqm29OZ+`dW(PN*u@1qs7*laJFGTv_# z@!bZHec;WQsSApns+uTEjp?b2rw*>uIoM-z!}fJD=TaB!HB)#3o}3GO*n1(9;9bH2 z6Y*kHfIJi{T0!W~HJ0l0^|_fa2nI&hk8R!Qhsmpl-}>RBj~{sDz=R!*jSrulo`b|% zu`1_ZKhQtE4uWvx`lJHsFGRWo> =E66Fq1R*8QP>@X4B*_OH5yuktV5?}9I8&O- z^zbQDJGYZGaBN*yP0fG|F7#q2>ByQ27+I~B?WHax@;^QB#=(OJKk=#iuDNF0qTMVj zrcu!0Y(#EE<$$S9Z~~j1KKR_vjFi(Us=AUsHRPNnQ7wsrgqA175Pnr%11N#oyncjT z#UXVX%``}yZg=s-L>T*$rVS0PH!8JDjpdgQ9s2RZKR9@5reqqMwv3!Qe*yOT^8D=R zU}?+NT}Y QbvisV9KZ#u(cpPBtuc+HQaA|2{fa;cmTS|N6cmIh9JB zAfvdbZ}^s0uu>OXO7O}*e{cJ+DEaVPeUjOo6u_h$BZmpR^C-dmBMKx)%eoGrrnKAW z)R#NUt#-EyUOuoCSZ9bER8}rEmY#X`*`GfC*m5Uz$HZl@>TaE{R fCgLotY%{~6JR}7asq5IyBffgf z=RHA;$cA5iG zsV@KYdk?MylnRGO1pf&>A+Z;i76ykly33wb9*&pV5-9|pLjpVY!`ShcF3mUQ78p^P z2;QW<>?j4pRITaD^FRCfzrOJND_+VOeNq#Gn2+QxncLb6_M6<>(aPE C# c`AU2WT~x;3&U6h-)Hr?qNDS|bH8}**pVZEdY*jdg&8}$ z?gMv^$SU0 zR&sgOC*!l$HXLUw?Wrpd%-K {@{Ynjg|4+dtLK7N36f$lPTJacLM 4RI^JX!%MFol3 zAY?-{ LU~B2jcr7DNb16e(vpum{~JXu2h8db`t! zqo7Cl778dmm_^#QVZCTgv^!!LPM Yq6J`fE@B T+LY zlvg>%)d#Hp`>NBhx_MW=ljj-2l{QnpCw#l2c;9 )U&WdeHuZXx7@k5x2tKvoNdvhBIc?RL`b6pgCu z1-#YocY{DRH*egMg~4K@J1e#)mXlg(9p`IUN|Y-klDBQxb<>-Nk6pX>Ubo{MJ9Oy$ z BiRWTOs|leJ|?9_1T3@>o?SD zqi1Ja@j~PB#M!Z7e4l5}W#qvhzLKi) 1e6`rA041w}it){73zXrKL!SlW4#YOm01zT(&0pMvEL8$hTEkK!DUg99E8 X9BF%;fTj<9jV3~{|VT3S@X*$Lc zYJfDnswkFTkYtS%s#dXhVd_G`GzJQNZN~<5UKtviI6aZb< C-44mb9am~s{otcoV-CSZL&F|6Xq&=CB}xl1$f zQ7WckgA-4(I1C}c`Mv`I6elxWuUxHxGl>={66@k@FlL01cS<;F$-k=&U9}n63W)zz z8}qA>=T* {s#)7>xyR;B6lE6#k*z|e!eu*xKF)VN#h%;vs%IyjVwv2CEJbRMsy4UU72Me#4 zw07iBS1D_zkYw#<8xmpovOQnW4F$7b1-z&r8O-f-DnwAgT4}1oSw$W|ImEh@n$OvD zJiA+$L df;p{&VQVBeoA0)aN zd#(l#Yc)Au4hxo?#vXwbGl@lrMJWUo^_7$9 f m^J1TIPv zWL0sn{S0-XA?39!tJ!Wl5|_q4;l;RPUp{?i)7Z|#Nqv9G+w-C8mG1F0GRc4Z(4Z_> zkiICgK(h`NQX$$pMDyqUd9THYE#ij;{^%t>{ zBN!*`^^38ADhAtn-KcBeA7Zm4p?O^+O5u=7kZ6FLjVL!Ww?Ie+A)v8nzi0O@q7XlH zWI>g6h)FS)E=3443J&>GH;qv`A 61sg@^Jc4MNi&-U*NsNp z`oVRQxkxyZ+<(IuAvzo@z=?5&7v-ri=yb)SFQ3t6wN~katO6W-5Ql95H)*U@Gzf%U zy9-ALOc3yDK6ov%dvwfd@d8{xf?$HTEwFiLZj|OFE`jge2jww~O;^jvoPo1+oa08X zzwy@2U7G;Ns!BXJw_IOb8e3l_qT#p{ukQGW;6$Y9&F%5R_D1Z9)Z7)A@;_&h5Pk(zM@Pfbl z{LVYC9ee4tzto<)|JSwhPUm<3qPpBhO Ku3Et)mZq z_dES%D{@<`2Oje21RM>R1)nluYk_APt|9 hb_#4 z6daF=V_&i|&|i}Utky+A==uJ+$zy$EH7fFQDrUh97IL-VB#~5(LfYsufwuuvT 86`^(oBNH^z^w!ONk~Y=63EZm(7wWQ^>FVFb-j3 zFTBYaeH>o_$KGwXc&Z28ZsHY#`Retz2p{-x`A;8s^6}%>2>rv4Kl{Uf`u2zK_}5OB zIXqWpIU-j30M06ei(_y$BE?25{>A4GeB~>D@rwg5tQ)B&ZkNZ|GMp?YJOWoKA7o6C z-4vER0*6JjkjB2>juKnsbsn;R8GD}a0tf2@DA(GI+HrvGKf0>IkD?%gmw;6@()7@w z *%e#OATj7OW5Q4%oj4QxdEZ^KaK8Bt&LpCi!OLgu}suhqi3l z0WTBa@KMfj!ae`O%aUwVYvsmb{NzthA9(S!Bq f7rVu5T2ex~2+fD}(w~m;i zG!_klEQ)!W`C-WBZMlx!ou8iv7afEl*nq5 {mlx4^ z+yb(Eai;CJ_4Vr@MRmh4aGZi+^p&dMH3Q$qZZUTAj%}n6#vnRSqzFnFxl_i*l#sKC z(hwU7qTD)HrgNDV1r8zS^apr9fY(eSS1OjL&d!dHm!br}bN>81$0?^yp1<*i{Q%Rh z-+RM9J@jl}Ro%M1AAaR^d$0S!Loa2V&8L?)tlzr-hW&Azszhln+vlg|?)uRB{rj#r zW$fd_)$gF5WXtdfO`Ih34E$W+FYyH8eIu9px#E?~ zhe-zOmZ0PlWLhXTA;BqkTX^LWTc|rNVbi9NvF_zk2|x!n;6$-7fG*B+;2&?mG&kIF z)8OJ;0$mCMY>NR*XTcvz`b4E7k|I(eQY4yPxO7Pp_@UYWK$y1ccyX*Ns$~@cbAnq< z*;Z+)ibHF7Q%e|3&w4GLsMN*o>f^)%ONAVf($!nNtS7FD7r1bi8RrSZJt?>U=KYWS z=;`@71U%6T=r0ewb@J5NYX9)j t!w+DQO %>kw^^H zZZtkqP%De4l8`}s>#q$OhOxN33 z`@j3?L$6JqKht)c4yW>d>;kSYt=oFJqfhwOX|Rhv*o8*MH)>W|OuI(dbQkT1pZ7YA z@H=0=?e2lY{qBoTef?IyS%36EH{u47> qrM%6ZiH>k60S`W!rxOB93=#E z8S)E7U}L<7ro)L}SZst*v}5a5J!qxPsUknc` Rt`wTpe#`zTuCiv{$9ScrLMns7*O{U;Mq8Pko@x9mnTi^5Ht$gs7Jvqh2$L_fv z;)o;*@ZmLu|L}+2kCjN8+IHu;7mwa~=WW0L2mkqB9{bthgU9c UL;6rh$8Z*IAH7^UyTv~eN^`p982&v=wo&KUokzWOKbHm_OLA1RD zFP#+PrRj1fF%|rXklrb%XbWf!)f{k^UJOh=Be5?8U`U|@z*4u`2{nRP)>Xqao1J#I z)vgx%HtrbdE0$h3@QXW!_K&U~C(bl@%sLL^@#uszRJ=#gJ_x0O?_$KwAXQZAkUcm~ z#gq*lkdZpK+zc601^ivf2~bj+Po+S-gnboQ=>hw3sl+~N`t}=x9`j4~_EL3rMFtFO z?{L8L(biQtLq=sNtX?DJHEMuokW!tUoVfnF-G%k#o!d4SiUylN1II4daSIk8S1AV! zuSe=fH l+mL1w-QmHZV(i(tk_{oyV&!1+b=R6}Io$F3IxJrCD&z!-Ex6 zN{k}gal|BHy_^!u?J`z-!afSbmTW%+%qKXkyzt1$8)a(?U{`o1^Sgpxnvu7#thq=) zOU)Iw*cg7^v&*`)GgjMVZA$_V0ppV&zh|jF4?bjUWUyQ@k=+d&aj3u*5>5mFK|~om zAEb+a@?WpJ|E^KPCp@W&ni@m^r?v*pu3Dd57P(4|{`^~evb03RUAo3OPQ*(oFFVB8 zSy50W6u=-&B{1>X`R2n9{piO}d_Q!Y{%Sdi0mVeVm`XZ$M6S7%KoW@)wHW=Wrt<;E zce@=^Kpj%NIAqsUluuBu3>!fN1$%}NT|g`Z9H>dekhRQrqEx7q`xL|SqG00O6hz|f z8#mc=Nfcxq+SNJE_mP4W&_oOeLeWeq^F*R%$Xp}Bs`b?d8m^lm3r7jN?ciKxk*cW3 z%ErPN(uqluNW{Dz$gz$yFh|%q 7S<11EprAeM&OBu>tQNY68!iip{_my8A zq-oZZBW5LMc4L &Cmb?OW3fJ2`Zr(iIBSrY$)71t_Mh6 z7zrGX0 iTV1b~pz~ z x5XVqP zJe%=rYu0P}#?}&7^tyGKsiyfL8ACwAYJHCVMabKk*nXl9&r5m v*Q9c?(GEBT zDH=0F(zsmvNq{HEisq(ds#>iUEWKHu7x<`9D2Awp3(2J#Msetb7z=a-;t8aDkVIM~ zm5&2H*F9tMdB&m ;mVyxUZ`W~CLegQtfB}EfZKd}B7nF|luXj$*_r^kmjl_fpvrJa6`~0u zUN|E=2(MB>R26Q~Y4yRHYeo1au={)<$9|$H5fPe!HV6+?F%=XdFPfab^!h84MP>Je z Xt!PkAetSJ$oH$M~IKvVfbMFkrQAx~#F8c6%jDATBjM-hN6 zgt{2ZIg~LsadG6OUD0<#Hwap8r{%fU@UUf?^@Vy#GaxTWV!F7{7*RTunmjLgj!WX$ z*NuLFmMSazdwv*DXSp%2>Vtzr+7gpjhfvq)blM%;5BY(D#nN_03(LXNV~CLo?58ZH zVG6q%<2ZwmPt~r-)%ECIvo#l|X?_*XuF}{YY(CD(5!O4J^FIsht9Q9aDO2qf^W(s; zY@w>losKW@QpW17@V_7o2~rT_7_fjsNvTL+v($M{AbN?*e7phV;1nzHQ%mNYR p&?G_hJ$U9E8}bV;2cf8xG>Xv 3mV=fH=2rPHwN?)JWR~Ct!##H9SlA;G~I}PSXb!E6Ls%eX-wvh?{Uw{Ds+a(CS T5A$Y}00000NkvXXu0mjf=&L0^ literal 0 HcmV?d00001 diff --git a/doc/video-002.png b/doc/video-002.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7c5d1849970925d48ee3710f3a9391b5994c3f GIT binary patch literal 22027 zcmV)6K*+y|P) t>DXAxdY3Fe8iyaP{0iNYJfdxd{IqL@-1yu_o5 zP(g?!L}*>WS_m37cUeCeKBj#Z^F{kD{6p*I)AfJO9}3r`_DManI`!jgqO|jRb4&O` zqNH6J`*X8`3LipO=351Sm6EWYjQqu)|DXT)i!J<%E&Pi=|6l*%sC;#;>2<5}(GVJ4 zPiq5Ko2%N?Ia*#fMu61Tv@v7$mGBi>9-@`~Sz{0xSf=h%8SU&}XGCdhg1~Nhgep}@ zRe{k`V6d1pmIsa?{t(TWH&S2-iC^iUEZB0kS}oJnY+B~hBVOPKgCvfVaP!C}!#|Sh zO356q$%sS?MwPK@V7VpU4%lkugSBbyp*DM@wS3Lv+a Kg_%||hfOA7WJutT%x7SJ@XMVoi(b{)HyDP{o-qJY}^lI{y< zqpT68)T7P0uy=qrp)73CnlvD(dAq%B+5sKS@BrbV(z?QLJ&p&A3N59g()Vbkgr>3b zhRc q#k2Y6pzQl!EhAbSmH)bCgV{&h$lXWcdt~H(!d;M z4Ty%DgX$3tcWzfe*9%nd26fiM0dMv<27KWaXni*AA7*hGo;m9L1$ZLu2HHzC$f#aG zIBRf>ET*#`hSzA$HM|>s#ydFKo~j09k`Ac0aFL+^;pedC=Ig!hKD*lzi#<8Dr>kBI z(%ej0U)nxyvvc*w=?0!rdn)ZI7TouZOe)wue3j%vmz2jI-@3IkfBu 2tmZVbA zFj K$ry zu8~UBzTU;z3LlB$xdXT@jaY) HZCw+6ySS*%GGjVdX$5}sE6vLN0
S|@Fb!{gMfNE?;?aJ$Vt;`o@ zNmXYQ9h6`fhU-q>HG4yyD1j@2ojUHtRq73EAX%+QJAhN^S}CvwuUPTpb>zib*=7SR z-f`}U+G{g3+xQ>^HAg^nSY)$1w{M8*G#D`EgGn0%KAa1g_<|E2_(xZZsVH+;PEdtR zD3HpK1&ZCGUcz|H`8WuIyezNX+!ylT$hX}`P(0xv0tBky<1|`p(kv-Cgtc3l)Xlf< z*Px|f7qt_nYE-BNM!Ma3BRt9#U+n;QgGF_xL>u?Pm0sSV7;2SPz3^}hNhfdi&aI88 z9|>3AQ|1AU;gwulS;QNH-wAURVNLxO$k-jS4 Y+F=%6<$}oskspiw!GtXar;@ch?hVv?&C*dSp6=6K6sySs|yL{%rwTg-3`hqKB zgn`x(GBDGujw5nr07`wRJy-{`$L8&xvg!xmJ hAay;4C*xEd@zC97umLMC8Reba2{&bd=g_5|F z;3jIYtbmEjN{Cfe O51S=~gXi lLeqrm>*fp q~0V;5GXKjb0}TqSx$|*P+eUeaFY+O~|-5Hq=@j>eXh&i56fe8f}y?))ziQ zRaLpnmT3Ws4}>o$%OVWGrX6gI qzdL@CRR>Xj(PG%H2nc|HTT zBweMY$iOg`RnD?oH?ChlaqPXIl(nkB`Gke@JYM5W+Ug$Sc)bmdL}e&j3*-dt?foE)NF)N9(62DJBp^w zA2D#Bo6Seh5>KaRUL(3}P8+$QCQ^cj%p5z05}Q>;UNYe&up!gg?LiofJTe(g)+cL# zK}m=n9YH^xjFVt(l!$Cz<|@k6GM%UMd0t4wcrs&L1bzqz`PTJYd8)?4P>DI*iw2j4 z`INZPBklSE=6@LYLt9?Qz>Ef>ou5@hR$aSsn${+$fs4A{zZ!zJ@3rD+ms;vNIMss9 zI%;E=n|Hyz4m&gfmnMABL{;2nwK+xFssTo aI&&sNtr z`lmgZO|%b=9 mxxbwInwj)~NCS{kn+8&8FqH>wucc42N~D(mE@`9IdixXcx; z{bgOO0hNA(s&(fy8l!DD-?PzebGxwW((xm8yLlc$_}2OLbe9Wl@Pg~iVrUf10=`Tt zX$&sS%Y2!ZsV-#&u!IOM2E#SLF@fhvk$ViovkG61d+7OI6oo`p_l+l8gLo|p(mbU> zEOZHfIj3{AarMHDJeA<0;F^JtXky_^w~|NSEk5lT+yQ7@SU6*psBZVK@#~dcS_~H8 zQ%j8dP$!H<8!Ol$In^K^*{DK$%{u5|1Q9=rw`SLTp4S>--B?;{{MyfRta{JKq_hpT zTa$Yzdgw&4&HI)01+@!H8-KUO3vGmfcAkwg@ilmNCGsMr3su09bMRgKU@#hvC+h)x zBXR*~l6#!MHV8m3>+4$)kAx75#cIfdL7XV?CC3vl48dLok^juA*SY^(SqNAcV{y$& z+nDts722F{d(OJph*sM1;v3CDbsZXPbWZK N0h$WR{oBL3sY&J!^ zEDK75<_Icl?`r_40+g#dSm9VT(o55+7X7vkehqOwt1nyKSFe&uHreH(U5uRc(Es5; zjEiM@xTbeZ?|SSyey?jlrHRY2X`&tGK~x)-Yqc+_vx>~5s8qxgDcEMTF;!C?dnBK2 zjM$k|XD6eP&uG9y1j<2DWmP4Y0ND@)Dll0R e*y#m+sa$apQ1Vx`K`3qni-cy*Snmp5xuLr$!;fne`)xZmZt6DKO# z#W9@NqV>ONlO{5{y4|w|tXPXixg)Pl;ESTqp{@PwlEJMMy3e8;G~C;scRQOdqN`m; zb9YQPnbL-DsGMM2`><#;i(=`qtuUT|Pq2IS+IIZ#{f|C!oS%u~a4-xeqaob5#{iLe z0u< 1FGARMnfUgn6qjkWkgG7{Nx?JVU+b2(*91TIx7eN?v z?pKwlLul=hY6IRK03?lyqj#NQ-6UB^9Yu2hpzg_ND`v#ig3X62C* OzLg umTFj@{uk7yM4hQ2fOrkh^;K7IPyXXGx zGbb;;_|3P!@xsoXn{={y;(_;pyEqw7PM&<= )FvC)9)G4y^r$h&nz(R^ zkV7PkJ`<)TRkR!CMh3LAC=LaPY1fi#>u$nYO6mJ?slW*=l;+#($JDI6aqfBfU|3BO z76u-u(I}4mWS#hg4er_I;7Hur-ATc36fzvd>&Ne3J9;14T369%e|~UhXEE?dmdz;m zmTT(|Kl*LsO)ce$D1e$lk>?m7#Z;?4EMIkWiM0@s^c-K(5N90rL7R1HPkie$*iF*9 zk6$b@X?C#&qOH>Iv?#ohH^-#SW6&15w8?~8K#2`u>lSY~z|{#K*4m@X5>tBU_8dpc zp>$ZnT+64i=b?3V0L5X@(u?B38n0kw$znF0@9)0n *Z9C2D42lcZ?V z0QB-_exmQByYV67rpo%lp$~mwHLd&J?jlZ{-%028vLg0G8>sC$l%Xaafbp9^!4@H= zQ868b)tcJX#a?mG#~v%EcPg0&aROpW_>lNRqPP$#6;iD-5Tz_j!I|gdA&ElbuN8Yc z`!{dx+_)slEDVEWJU(&iOs?;w)$Ky<5+9Z>RH7m}=WuLD)FOb+xu9sW9lhgnWLleN zO@K#QucUq&*~bkvpu_N?4KCM_I@KxM`iHnGN|yDW+OS#!XWnJ=EZfD6dba}CrU~2J zmAh?+uG0pP-euP<$FPmqzDuaS)4ZZ8(NCkws-8GW;u90H$q6V*0qRxdDpjySp~rA3 ze9k?1TtF*;g7V!t3m9i3a1n_XVHghMFg|sk?}G~h4rCaNCfV$!6IMPHGU~&|#!Kj{ zP1=WY?FrO98bV(l+JruF((643Tlc>+`(pQxnOrpdo@+~{Bb`&(h_grC!jwAX)*hm} zxUA@|>MnRqo0y!#X={0lc$$=MlO*oeHY^TJX%86z($pSee1$t!N?wvkkvPZ}2aE+C zlM0b$$!M-68Udu6!fKXcc4s%8Psi&Ml4k_GcV4J0C#qN*Pr!DPvc!E&3vdCA-L+{y zX`r~*i4=7~MjN!Mb%c2q-Dv(^Y~)>yWxpQia75)U8R(?E4Q00i2I`r&j+blBD0MRi zq__5UhE_AyaS`0~f}=HiOyWM{rVcwDA{sZxQ@0*!8!z^d0n8LZ+OJgQD&H4*!F9ZM zd%kgG8?0AVf#w7tS;z`09hKsqrp0QRt>*C2JGXA!dFgsI9&a5#y*ii%Jc_-5Ym+CE zI?D>s(k9Pkv#`1aXtYNkb$us#NU1Q^Sk0E4?SOEt_1)W}4`pyV=U6*ur9C**RlhAf z ^`J><1_v74HW)pH~o1x*|VTYVsEG)&uQQ~hH%dTxFz+vrTIrr=)*+5+R- z#$Yg3=@J|~RZaKy4#Gi5y@^yr$jVa^j+n;*YI}>>zO3Y6JgLg^`n4+;&%bp1%tHse zyQ_o!`yYH<3?^lfgCVRckl##!SX(V!(;lsd>^IbC+7eJ27N2$#+U?oXw2NbEa!4o- zgUQxHb>S<*>aePoZK^{z3a}|lGX$I37%Offt8QXlwNgm#a?z|+s!=s_$^uDE)^kIG zt)uB|wnK6200L{nr?!T{kznl{0#eht7&w8Z nbsR 1WZ~0Kom4C zyh4D?W`!Su-|rWaluCukc(`_K=lYecWA`P4WPS4(SXHLdT&~h`A5(@zGE+t&h_oBW zFwi3z=_311l)2+((x&i3H|Vh+ognYFqu;VRrm4Si7qkQCo!8!^%4^r&)qCHn>ZWDT zxGbjrzRE-V^Fz?`uFx=RX+_OhvyZ15HjnFk5~&0;q$y 1E`NNtu;)l1sva%j@yachUxtw~#0qgtvFy7ngW z;>LYiPOIvj0$pc=7!4e0I|P?)CWXAqCf?;T7?PxF+-2SP%J7Zv=84;A52veA2#-eK zn@hZr0E=Tp;Sn$KW3Y^o4~~Zf_r78!2w~y}yLWc; ANr)g^+$1>-Zt!EDk90v7vn7>&5Dda-P*iXbs=TVA(QvYH zEcORPc~x$_28rCzyhwNUZ&cIt$jMC){si3fxpYvN8zs@YSAFTm0`H1}Fsn)1x|GK8 zsF6WiG}&4%t-Hhwbxf2a8J$4X#)#D uCdp6plA#BQ zm56ZGksXuf*?b0yR0}a!-yRMkKRP0rD0H@19l#bd?t%HNEsbu;lG;5(J-DC`Ie(<9 zL(|mpAE^WNNtfL>sRrwZ&?Zf5ImH$X>jv8%ikh4KW36{zI~AJrlV6S}($SB*3_I)X z=;2_3zAHzl-E-0CYuaCi{&kuSb{JqLS`=`qL{`j0keR^un2*G Ygy2SmsFQVS2`_CNyr0r@&`--2 zyqn0?-w#*2YW=R6-af6Paf0<-Ti%3T?I$R;^gzbEOk%+{(-QE@7*1pqZ^B+y0n6!Z zwVD$aX&zNsR*IDtfH_Mzq#W$OZweGt6^^*lad*w52c;3zg3e~nyvA(ByM{tjLr8W&D4n-+rmOxKdi!ZlG1IuO81jOF0AGC3Nfd| zs>^V=B3N&h(t`G>HBHRWg<XD*^sR zLZi(hmDB5c$B&;3LsBKx{9th~+o4{pneRsd!wLsVeGi0|#v@Uru!S-T!g#b?WV3@= zluSlzkq}FwQ-WnH+9}jJl#g*rIXmfTOhsqCv=g7AUExFhW-KMRtCUa@;vn#j59eg! zwNtv*B`a!XAwQ%79W6< ~6m6uqmD zfoo9jCZ3T)p;nitQD-V>R}t9OyXbF0eLajlbxYnp3}+5+kppU}dq>*QpNBuXyRs}< zn5_BHxYYW} )E&PZUpdwW2&2P1cv`YC4@Nux)yX_@2_D0DV+o zWjg3z%8FnPK1P=1Sy?WZi?Rg6DZsRX|L|_+xy5CN^{2zv?(brY^7J9!u0^1(GGvES zGPUR60tB<`ZILiyRMn{o1an= nS(uBtNlk+cCa zCv>X~jXWn<>FFDeHr%D4w8TCZ@Dp^cDgMRdA;D1t8 79qC?HFv=IGB$HW(e(rB>;|KJ4mhmk|Zq69pW^kbC%aG=v*gIdsjYo`_(ysoi3eg{(!_Yb%uS6P=)&vdn+LUzYsuaY7EqgLIF& z+vAJ6HUCbsw{!2bi$LzWnwudjNkA;?*Z8tRN~|YgJj5CXUSSUka0=oe7%~mUPrmTx z%`blb-+kkoWKocKW3x!$zSDU9R5%=zs`3bUiyrf290h7Ppj<9fCCjQRasmHlG-K2= z?NbV`f_*)6&x3<#^kYBq*FX2AFZ}Mm{#3B;{pg3k ddm3x>X-@T~ zZSCM;Krb-Qj3pZ$t!)^yxWf`9v`f}?f-PMsa1(RV?Sl2v+x=uiFKD8BHm6HmayOXn z>XC-{Tkn>p+Oeo^ezDg7jP^)(x??*XVsqDDNEVn>B`i!?SL+kx@se_vf{z}I0zMWb zSuCr|7cX6U>y0nGdg0O~Qh6*nac}Mo=F441%N(|!heBr_Rh|cahZeByNyL10bf`rY zRvA`Yn9tFMfTxpii|AsKjKeUD$6Fgm-uLyd{!4FTa{jqbef0aj{X0MW!Bh8~9 96%H+Prmsf~foGh$N0 zWl_MtU<8s-E6!!$AuV5e*jh#sDTGfaVFVuve>Eu8WmdA$$s!!>OY+BGeEIoTUi -># avYNhN?-iZlS(fsd&Q%s*jel81%=rvHHlhEe%J7-(MVfCQ8H*%!Z3g(9Pi zoE{nYTbFMg-29X0UV7oRCmwzH$@f2e@0mxE;bkF Pb91zVR(f4vx?oF7aAJr1 zK=jmUt8#U70!ZYCpp}FSskfy`a%*?_;`7hG@Z8I99MG)NB8 KGtIM`d)hHOBcU!?#7AZ_k8?gTSvCHHo)k{ zpp)lCG1JA2W7Sk-*9Ea|*SgAWMA~N{^q3F*1U=~`-8%M$ez(2@T^OWE!~Nn v4= zX;){a+D;};;HUXP(>=90P}-?r(!IzE?E*i#^E7ECJ;FDZW%Bx)cmD6se&r87^~L93 zy)#!qrcdTN&Ll4twvh!O=kYS|3SFk)-f6}QFm7eVgM_i !H%OnWb G6s^_oRQ>d!cK8}S zwn|gY(vXH_%O&TX(!496LLG!z*R&ZbDQiMw)D3hKr@Y1KpXM4uH!4_=!As9Q|JAR) zaOpAt16c4=Vl>PHU+twH=dq_NwX8&n4VnP{RYZkb%c9UigGhp-vB)wJ4D=v=_0{X| zT)cex(bL?N?Snk!s}(+|G!6x2AgUaoh-cZ20OBh@S)=jzw|?{Y{^Zk754ImtRi)K3 zh{|X@sf2fXe+Tf27g8O>J2G8gf8yoyyRV%4)PrY(k9_9`-~aI0t;qy~LDg;TGMKcc z?^@c_fp#|~(e2`0eG0!-F4*k`)XVO8zwpx!+iW80LTVBb)P5^<{qs7B-LMR#d4VY! zHe?fROQD%EEf^Xn(7aw_hcL|Yh)NB{NhxR4_v7Tu>*x1=`QLou>2uewA0%vaHb_p3 z%B%7ft@4zCqLY<0rJ6cmG@*1v*cf&p x>rsG_$PI-5gs4on3yjmlTAODFkYAOBq_TSQ@h9K&o(JJ&)9GT7ic;~k ztYFhMA1H4iXk5@p5ZJ}Rul?3 *ex} z6yW27?H<6r&Gz@MUcP$%)z=R8mm6EBqa^eLbkoz-%$i!&uoo!lINL@Au|ut8T+XfS zs?(DHn!@?RME! _0# z1wKVKiWdZvQbgxof9FsB^eb1dk!&qcuz#L!wji&-qX%fkz)cKv6Vb=kTS{P^rdbb$ zQUZGk-kG5FkGy0wIe+1;=U#mI?Af!))_Za?DQAm2^LeonWszx_C&_>Z!S4R c0{gFOhP^Z@#Jt0NM2?c$EJ{YRy=S@0K4* L$m&x7r^Nyq6oCUA>SVj8Ps17|*w+Dw3+W`TPrzrAD32(G<_SHA9{pP>< zgEy{)(Z>7d< ($})$eQNj5@{|`PXj5x>h4LG$jfi;PVR;DD4{A3Uf{hUn?zIkNp;6vZ>-XHkr zM^9}h>GY)}Dx_F }->=(6S1TS6kIeJ|rMm8}Iv zs`Wr?H%0deYhCrO72&462B1gSgJ7_^GcTU`#)Zq*DIdOPUU3P28SY P6 z(yJ=dWs`BxP_STd9S~F4$s)HkG_bA4L9k?VdiBQDjg9T)E;;|!T&ksJw|H=&(j>yz zE8&a;5eede4L3m{0AeMPH_J*+#b_|Z9P(<)xEu^ZB+p4~by~sEkpkBz03{iqvBe8X zMe;%xrBY=9+aC|v(d5X3^Wxx-{^*U>Z1j^q_T9%ekIU*DA?sa*SX;f_(iGjQwMNO+ z#CEqfs>$@W$i8zBYctkKv+V`vatqX9VhC+)sqU9f9hO;XJ3e)MQECd3F%lDa!_C)T zd-K_I=Sgyg1u?7!7QLxlgH}^%(;^EN5ta&DX)~{8`7zHh(Fj*EgO#PKZrK6Hx~gD3 z^EjR?(u1NZ!UW}BfuIJyfM1n73_YyErtmRfk~0OW-e QKAox<8PujMrM
So_ zw5}MoH2%&-H0fwc>qNKxKTVliEo?*ygn$Lwk8d92pa04;FI||i@MKYDkq=7(n^$6o zL!C*Hmf$d8H-oS)+i#|6w8RT+Kw=sKBf&!0QeD6@<-u~koTr1>10`zuXeiADn6vR< z-A9XDfh&(3Pai=Q54jMFVHn1MKeHSJe=r;baafXyWA+=L)CL4V_|R2^BN=#7W6S`B zQTPltQF>klrW6zfoz0g~Jc`0(=i2#=_2CDe{J6+=b=Q_qQx{Bhc^aoBUd!?(PJF-= zOAx2K1??2BXPQkh+lB=FLWeoux2O70U1aMrcDcR7J&t;$3R`SO%c}IolUJU9<{K|x zQNf15euay2bxV>BY8C^us4TH>Xn 8Eqd;g=D&7LNjazIe;z6XBEI4K7#wtmh&nkVLZ|+ zBuxSI0@na p)G&{{HM34MmTj>sD zfo+n)m!O#fuPk-~SjEa`Dxv)P!Q#YcK6m+Gc|1-MDXs&0ujC2o >ptl9UA;3=pjX4j&Q+!2yRw59?zy+V*WkFbHe_AKO1k z7An) Tg1at@dyfo}&%kQdo%xd60} z$dpR(DY2}n=?)O0SC4SU?ldMpo30{mJjiro#43J9JkvYCt1~SK5}J;#hIAyV3e}dz zYl6B46eB{^(h__Zp fW7oR9uA2p(=4mBDwYNI3!l#q{_JZ{zyH2d zM~@$YvnK@!d5rekGe)iHHck%l;SaTGw^_$SY5R6yK@$n;LY6kocZhD( ^G zwItZZ#bUNvE)|a23gPEw3#pkhMWZ+ZX$BDlBx1JECAM}sR_4{aY` Fk~> zsZJ3_E1C?Wir5fC0(=0S3Wt!!ER4^;d~p7JRnh@Ee&99;Oc)dzz)Q_65I7D5_YW2s zH0OLag)M{+38NrRhEW{UYga0`D0~nSfP=uC0Nf`4L5JEI+q<_OI_rW}tZB!9hEpOj zyoSxT!v~s*N`O$}W^*3L1GBHPJdj0J`iWuzCVPcgafEd&Pw#+6)i_|yUy363N8$Rh zEKi^Q+G`I!_SD%k8@f!*mGR_(sM|ShtpvGk3cAfzx@*qV??>Uz|Ijt-j5!<*r@y*e z#-Q7*bZ;OEbrX*5Z>fjq0*|K&B}uSF{v@yXm%jSaJcEUwtg;jt72sx3urryR-ByCz zUxA L@hz8(ib3`6W#S>&J>0Xd_9f@s=H zfzjqvRU#|#Pqn|8WjR{ZD>uo-OS>$X06eJ5l+`s8%xRiV8>2wqrNa>IsTATE2p2cH zfj8FUdg_LbPRYCQecLpp8#$_JQ^<2QL6r)r@QMSfr{3D-tGmxW`-%!j;L4}fycD26 zbtzO<8q5iHtSZ5Xf>gnsz%s$#IQ9pF(P%h^<+HA#y>cb6cQ4?Y8kW^XOw9C;1P|V~ ze`) ww0FDGa=6-B3Ahx;` z#He-}FaT~cOXuKzs`&Uj*KbtD_Y)$+ycf1L4cl=Zx@~6f4kpl~rHA#~>Gp>SIrXdU z+d1i17HiTq@ps0U94Z;?YP8x72VH@u+4TM-(gz@(%lMhEJ-44}5_yQ_d<@h8eh|{L zr~*|Q2C`8f!m6by7(X?dtbwruz1p_KsJ(b8J+yw{J9 D&S7xrWJKX{R6 z9=RUfQ)54j wSh53`&zW^?WP?xQg U?aH+mZG*O@Ksh8V21(H z2+6WkBKb(DV!mKyp{rG~+Dr4|_Rh`OVh>gxP8@O%wKg48I|jEt+~~07*7o!&?Uhzh zm)@$Ikc**IF)Yb6d1%aRp?jtPZlMEZy4N@Ta_Zm$Gb6=VjSlKh#288-3I#Yk7|*NR z3zWyImtJ}K%0Ahb0K$hn9jFDY;IN>k976CY7-lPQ>2Xz8i`9HSg9Tk%+k}<(1HXcc z_@HLf#bOs_8?-N|e4nqX%#UNNQS+j}A1H7n!SxC^C>s?OEv4{6zo-iE^*n5Y5tKQ) zv*sLtdGjR3fhxiS=3&Q5aAT5ii2Z`SSg_fu+_^J-hx$4k3_xmj_NJxqGLq>?7lNeo zsSgf4_tC|Rg4r?+!7Ze;fb+-r5-b9Eay%)?mD|(xSKk`R=#-!{@M0OLdW;z2G$;%; zgZ9DHDtcWe_uiHPDL1fXM&rQW%KeMelj_PrOvJ%o+h@NWJ<&9CcdKu8zsaFK^lztN zg@g?R7p P>l(m%_(7U3;P)xm z7|{425x&1ZT9+bcMC8Tpjhh!n0|3Is&080CcHW8;FYtXpvpy