From 8aca3d3804a3bd353fef81fb9bb1d4a5cadd4c09 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Sun, 14 Oct 2018 20:47:57 -0700 Subject: [PATCH] Plot acc example (#1418) * adding plot acceleration * added console --- docs/projects/plot-acceleration.md | 48 ++++++++++++++++++ docs/projects/tools.md | 11 +++- docs/static/mb/projects/plot-acceleration.png | Bin 0 -> 24210 bytes 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 docs/projects/plot-acceleration.md create mode 100644 docs/static/mb/projects/plot-acceleration.png diff --git a/docs/projects/plot-acceleration.md b/docs/projects/plot-acceleration.md new file mode 100644 index 00000000..391f5f67 --- /dev/null +++ b/docs/projects/plot-acceleration.md @@ -0,0 +1,48 @@ +# Plot Acceleration + +The ``||led:plot bar graph||`` uses the screen to display magnitude of a value (positive or negative). +This is a great tool to understand the data returned by sensors... like the accelerometer. + +## Acceleration + +This example plots the acceleration in the ``x`` dimension on the LEDs. + +```blocks +basic.forever(() => { + led.plotBarGraph( + input.acceleration(Dimension.X), + 0 + ) +}) +``` + +## Console + +Click on the ``||Show Console||`` button to see a time chart of the value passed in the block. + +## Maximum value + +If you specify the maximum value, the block can do a better job at displaying the data. +For example, we can tell the block that we don't expect values beyond 1000 mg. + +```blocks +basic.forever(() => { + led.plotBarGraph( + input.acceleration(Dimension.X), + 1000 + ) +}) +``` + +## Other sensors + +You can use this block for pretty much any data. Try it out! We pass the light level to play with the light sensor. + +```blocks +basic.forever(() => { + led.plotBarGraph( + input.lightLevel(), + 0 + ) +}) +``` diff --git a/docs/projects/tools.md b/docs/projects/tools.md index 88952fee..5358f0eb 100644 --- a/docs/projects/tools.md +++ b/docs/projects/tools.md @@ -1,9 +1,16 @@ # Tools -## Calibration +## Sensors ```codecard -[{ +[ +{ + "name": "Plot Acceleration", + "description": "Use the screen to how the accelerometer works", + "url": "/projects/plot-acceleration", + "imageUrl": "/static/mb/projects/plot-acceleration.png", + "cardType": "side" +} ,{ "name": "Light Level Meter", "description": "Measure light input", "url": "/projects/light-level-meter", diff --git a/docs/static/mb/projects/plot-acceleration.png b/docs/static/mb/projects/plot-acceleration.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5df7122aa585e7afe0e28241d86c86d618fb50 GIT binary patch literal 24210 zcmY&fWl&pPw8h=MXmEFT3j}v4PNBHF6?b=cE3{Z~DIP4iwZ&S31Z$zVQ+WAi-n^Oj zBRBUZ=bqWe_StLgbrN;7K)6_xSO^FRxT-2ZJp=?qF8DnJ0}X!FgZ?yxf1xF1(&Nc`f6M`^s}scwxVYl9pZmrvJPD-xp_6e{#)c zR%^j)rwZctg_nyeY2iqoIFI~y5f9-V`o!~j8g>Uwe!k9rHL=Si*Ev*4{jb2IC@X#4 z9hCfd!_aosB6J6OHpqE-wGf+HA17rZ3gYqxtHu5Jj5}LEe+kQGpmJvuST$#8U*Hkg zbbT2T-7iDv=(ZEI1@FX?*Qn?7IET79!<(Cy9k3O|YPQU< z5irBea5cY~l|xW+o}qv3vrKy)G+v5rD;&}TAp|9GwWmO&t`cTthal6O$>!dPkZvfM z2z-=%k2VV!nFSUs=|o%$sC{Pn+aL_dY@)O7wvni08KHN--YTb1=&o^~RE0QlXCNr3 z;>Hl74~GBY&NMV)Z?-sXONL~rcRi<_u9~Xb&K7{@xwfU!Bku!qTlEFuXC~GZAJAqpR(X5s7O#n)VWz&; z#Z0RAva{c!C_9MMnz@g)JVYUc3fbd+5BpP2-Mtml153wk7)fJa;Es9t11)5&@Tr%tM*6~`uHOe>gxBP z%(KC(1xB3TgiGG8L)h3c-Y*Yfrl__8-Zd)evTIzF_cB-=wW%T;VJUL=WeI!V-#(3X9u&z;eGSVu0>~uws6ru2^%dHppeFv% zM_=*NjuivMBK=7-AF#qp4a)KtE7^zBZs;=)mZJua+P`L3d38o46?&nFkj3dmgR0HT zH}=ewh7>>~uMSXmHztgvAkc)^5O6~0=DAn_#yoK3UaTvw{xSTMO29UuvHx;fBF@a& zB&2JKrT8B2Ubh;kC81hl(U*rT+$1M=KQ#FA)sqEFw+OsZU2&=mxzX;Th@=GPvALK7HX2vzmX{F?&B$FeJ9kuS#wL zv|UnCBD4A_%FAy>?}3rMuxh4lU~w}y((l;!T^^c3eG|ny^sLtf4f|k7R0P6CF8uJf zcORCmou~SK^09WO_wdn9u!doKae_o)6eFRE!lZ@f7&qYOP8|@4_{Q(dePPO`Tx=@w z1ThM+hD?rU$&Fu>KFj8ikaV7gh-JC^mp?;1-Ct4S{$rL*%YkRM1IF|Osk;)$aO8{C z%WK&OVDRnr3gG4JHN+uI%czOyF%R~Me7pKlmc~<^192S#oBsPwiO>8+={ayCs)U(H zL0f8RL3hL7OqQc(!+B7V=9MT)S!n|)bNKaz{Lo|vLKbqF_-ZC?k1gMTspfa?;3Y-H zo>_!YI9{0ij2BKuxdMGTsIyCTfm@TDqJq!z9+f7J8;TwySVe|x10+U1jh2vb;@?3l zZ7&%4&R|6_$nt*ZhjI132m#?|(z5|p?;j>%t-?h#<&2KD1;LKN7GLl2E{8A589{_c z#kti6a(cuDqm?gb-}JR}=R~3Axmo+Zt~?Fz{kX-qBamx6po5pvL7=%xjd$pH_q>Dm z3NM%WLli@~sV$yh-u`p&ay1Bl|Klw2nZxeO)9HKwhQlwvP=y*7r`D6es?-d|UNfe+ zT{8y7(8JPy-%`vxNFUA>WnG|372@7(*K^aEBpH~s6p1BpM_p&i7oMGKWIA=9=Q@V8 z(>QRuVQ=;uH5;kvBpP2Pqp5q#lr&Sk@d-}_TeE>3#OXp{r}!Z%ZVuqCVoei@kKf4LW3HSbjL^4r*BR&DCPrxKk?mELHAl%gW>yP+@dHah+ht2 zZz44toi0SDYty~2DzTI&(wNN5mB072YZI1F(y%CJ`eo?ltEttWqR_S5)QTy$-u*lQ z&uzJE+D!Ic0Vq9(9=0nb1v>`5tofR18uhvyw2@j@j>A#3uEaZu{~^gq%n9}N2i$Mk z2zAv|4B#|57@4_s8aJh#t;vQpwZ5OUuX7`8txk@fdq`V@BrP~{R@=L!QJW}0o2d~g zU>(8h;jjNRA0tvJrU?`9!;L7xNRFC7T8o-kGG$+{Vz;hL_&Nji+J`)hDdlAI;4-=X z<|o2@X$ZX|?To~hoXTXRI@-*QmY24lr4YaS>BFgDU@g9vBDhRolr2hA_b-`uknPWx zp+Wt<=$@mx&b>6rBDVdpMB*97=8DzarlvMch*UhRZTZq0#wG`CHX+B^{WAEd#?!Nn zMC{d$`_hPt9%PEEZk>RAm4U&`jt^wndp5<`pb$5s^5}0Z@dRVmMg+qknQ_Bm@X>=Y zP58q+Gt(k&Yo2&G3eqG`VXPeokWBt-+~S)E!Qx2uzu%s(7QXDw%4~DepKf;Z&hX={ z6JkWz9_##OXp+OA$e`FWJ_a#Yb;9 z;@n|LEv}7@%1Ku;@cAMvdxTn?Bf=!AWsw1pn5`wj{ytT$vsnCq#A9cF%%wO5;jqYs zCz~Y`HNhT_QV4P#Hd&ME0|B9?y4?K=5FOG+T^4Y>1$ha46eb|AniL(MwjDZz=+bwX zg2BED)szyxpGrb+*K0A$+_r1;kyN?6>I2Q_Shp~F69R6!cTWRr1KXJyQ{Jabix|on zQTJ$d)J%TE`Sa~_c8AL<55HGsskA)rZO5?G^NC<4mHRo>W9E|9n}xB&SX^(|Cmd5| z>!p!wCbebaguHb$7ials(-6N45n1#8J@k7fzm>DyUsa-n;`??N2PTl0%>>tuCFM(8 zCCD43-N)NakB{2rGHs)Hk`%k%O2o&E+L``o)TvQMipB+@H7rusi;65I>Bn|dHJ@!o zXwI>@*tcp+$0cvsFPf?Am~J*TvaqmGx~Bba{{d0xmS=c}%*C!;<>exkjOlqa#${h0 z7K~D{9i%yLJQqx<03J-BKZ>KoWVNKR;A>#rxF?IraY0DRvoi-4))x^j1{WqA1FA$~P0xc^_^VAp2? z`y@e`)k1+Wf*^4|jI7zL>noSXzG(ZIB!fCv zYfQ+?!(l9EJ@v~)dbn|Qf@9D(5f;SI!54TqJpH@ji+dEA?aF)aWk-VcEZ@YB`IZ}w zK3wX`$}$^N4_4pAY^wgYPSUn5$UH&lnCmeqN4|NiPL zc8>UPHt_au-30M(~iZ| zlEk7;OzaQ2*U#v*fpY#EPIXmo7JAsGOZA({0lUe&ey>Yf%BuSvZ;3%T@U`viqnV2| zhNrvc-FYOoBcT2uy+Nc}w||c$E(0XWz(h%s<8uthV3ArNuG%ryP{4RS5LC%>yT=`} zvpNyw!B71spT+f1UhP*wkAXdeqj|~)Ix^2lTnBY{{Po{;Yxxp5`BEOZs-^iwcO5oi zHNN?mDg5=v-aJWjY~z($lFHCQDA5B1!v+egPF9TL9i+Q}PO_xk1pp60bu_w`or8+h~W z>{VjdpRTzy_tx^?xDKBwvPc~m71ewTCKl?JzWcf2y9HU2(8-U9WmiaeiKBAQAbo4j zPgTXR+r6zPqg%?a(oZY9ImHq=>;BMKxE%rg*9HtSx%cGQ4*`uUkY=3ex^Gwx@Yb9H!mQ=1zKiUjxZ}B@++NfGppwb-QG#%aD7#jGrEo5N!b7){pa#rH^jf6IHc_ zJs#J^a)){|ZhZaI+($XbJ1_bw|>8OB92NN01V9ImPPs@7hO* z?{{2_igw^>=c+9{n&Om=PeN3D`G)qCc$XfY81OyjK(&k+QZ)dyd@+SRl`GYLHkVqf zblREOxR-l+h>gL>H(Bac06hIt1_19=&=E9<7Gz)h`4KH%u{gMYJUyGI%sPDLoEZB!h@jL*KjJe?K)EYv9JD+n`tR_wo$HE?rQ zwtxAIr=1XT^?s*@bgwSC@u4DglSLdx>tIQS+?Ex_r7~u}k(qQ3UwlO=AF6V3Uc}}S z&H&g#wqf11A|V$jAq{0HBq=#kNIGC;IJK=+}4{={B&2XUlRgI_bL?F9M zE`RlXnz(YB*e(X+b8$1JZ(T&j{hX%gFI%jksbyAAxeWy^t#&kLW#j(ydv(Z&bzCQI zmR?Qie19MHht|f>JKMsmu0mU3vjP>p>7UX{!QqX_d;-eo^%KIYZnsbh@iSzohrReh zOADU$$Kk3sB4CB~57$eeeF$T^&}U?xHU^KAs$?DkC+318aqn+PhOAun3e)nQpRyet zsQ@1_SQPSkEK&*uAD)gcFKT3KR{1ikU%0(1IQZg+*aV=bgbJzvf@MP9M2(Kdi-!iS z-{gaD6ys{t8oy5k4_c47ssO8`S8#k4FNq#^6Y1n*dgbs z4?vL+Ago^$I9L>i+}E;)!E*ev8VVWYeV<0_S-ip(L$Ve2bPA?zAD2g`v1R7c(A_+Y zJP$c1U6ORYK3eLX%B|+nAqDT+)sgZuliG=YJG9d1$E!;WXf86%52JS}^~~=VI+A|4 zdD|_E3Lc3W?QhRgmpA%q1&g~=qNQWMeCcKoB(kOM=X=C=S_v%*{55g!J@6uVUYeQR zc{F|d2NN@_NG$`r1fnaISR!j6|W46fg6xJEN(>ilk- z8rdxs?=dk2mw$Mre>EgZddy3*{>t&LAi(RTaiEOwVYYP*dkpMH_`Qbq%ZzFrWI0?~ zv48HBXRC`fDZrEW;%gYkR_f4w>d$Q{_kRz#>jI_gg9+ zq+@3f({K3G*~+jf`?olrV3oQ%iR*_tEJ}XvpW(>OqQL&+pD&^fvWj|%&B-o~;T>>K zf8jICXZQX$_WEJxs^uR#F~thRtXEq}dt-pG(KWqyF$mG;8>ax=KbpV(I}6ujpvSY= ztnkFzn5t^HKeZsTt*IuIK2P-c{Sk3#V4*JQ=aXz^yA^rwHFxGAC^_V*`m7P%d|`Ve zI(4Ox`lA@SpRW9h#7@v_h<3O|zxdv&6w^4sr7aLnrj)AxQZ#}|wc7Y<8HxXXV@FKp z=ZWLGQBZS{D@0DCk<)tOJs9{l%|l*8M80oh?=>V`pZ$Fb^xdPTkq=S!r9)@LeF}4r zO3GM{f*`wzI*#pLbcodt()Z(L-fmAKsPrHDOPGgU0Uk-PC7ZN>EP49rA8SEE@YrT5 zW?VyqHFgwVw!a_8@7ds5l~u6RI}d|@J?1AH5D;_A@@=dA!6tP-aLbd&ue!!%_%XE1|;vc9Oo z*1q4P!5r$B*es*Efsu*YN2j(-C3t4b&#Cpk-VNUYMpvHY*hn{L_Z zK~4Fda+7X_ogm$Y1Tv+=&+r z6ex7)<>m``-40#l4?HByu^b3443?(8@O8#u-8g_OVI(kfB_!#{xJh6H?47mXc8n=3 zTmycV+gis*ovc~euGN55?NHG8mu7|Gs5nG6S8;>8J*nj1k&cP?O==@FJ{Ac|E$+Rh zo6`cv8la%#kNFzk(x0g}x7D}`l++t{x*4?A)01Qjawat(fi#F;Nm{%$*&~rK(o#Y- zR5tH)M{qvuKwop4y4NQjLyeE(GKwAH)h(s8P_W61l~=8|O*;}Sle~09L8a10CS-^jVOO9XNz!GUA-AJCqCid3B9st0BpL4-8cZYMH+GNdy3CxtVhVe zXCeZL5X>Q>Q@_(ZfZYM#s9uOYz_QfJ^Qmi}85S?kgSxNdg3tb%pnv^!xONGr{4 zn~7ZbGuz2&V5JqzO!>_B_oHK1er-W7HGzSrUuMM;&B1#L$B!5_u?y+362~62bxo+J z?>(03 z0CdW}c$}9TKXMVkcVvm6iyD6MG*`es+ELUC2LYNgZ(E5duC0Td8ga-S5QD5j|WNAHKOcS{l7BtrO%?=tTH;xHNrXcKK!#ApPN1 zs8sdw?#x4?z3n$~D#to68O}{f4@sc*Vq0_o8z}hbz6HN%R}a8J7A)rX&Q%n(c#$Y> znGyr5QXh#%Mw|NRsj(hYi1tU54T(MAPEx4Xw{~2=%|51&{-kCSWbLI&so9mF4Y>^m@5S_ z&^+m7^u4E{ocE?{d#Z^_jnCoyL@B~W)x*u-Uz?6Tig7snh&3j$i`QlA9=6#T>cZuC za$lV|Mr*!*0!JzSYhAzsH4~p#ob~MCU9}m183N3v-8T?Wp0=Klv@_W%DGtGTku|Xy zdTtq36QQs88tV4ymV-wD*476sxD28+yOBYlM8dn0BviBy14Q~p;G2u)EXG8%Nd=z& z$Q0EjYf`USlUbdPaIzyex3i2bjc5*_j=I?PiMPCIebCCRVQ|p0njwP{KV-)m3pxlEuJ#NVN|deq^*?-QT8fZ#y^CK}~| zvIjVZV8Uq862HWU76{1!ImNy*>geQTUpM?y~&_+65Lc&ONhdLib1>J|L< zz4RcKAo9GvQSE2tv6T1J-Vpj9KJtr$M;KU%dR5UA<0+`(N|@NfB`-%y)S}J#o??I~ z(zk(gH;NhJAr-lLqb5e}5c49G-Q6$|(<^1^fG5DbSW3( zgwv6>ojBZFqoENGj>4g7JHsGH8Rir2GBE|@nOQUPFtt{_9x2>pS@tpibgc|})lazP z_0nc_YxQLVa0r66W+t89^q-QyXNb-Zac8D4&QSk;+jUS*Nc!^#?rbZtJ#u?()ZUsa zh+~%$a!3=0+^##!?_W8+Pw~K8CsF-uA3|b z&&Fcv4t5nL@1ETNRNqhr89)8)`@+9j_|8)^<9SMuIVeYk>NV`7by5R~ z?Q)D*n?ew42YPRsIT-p>WIhOJ&B;MV;eMXx{34W1!Om;()t7&12Tl>sXxKM$C{>_a zv2gdovl0OMp@<{b)$C4B4euY6%-jkK>tXa0T+e?D6ZI$nwVdB!eY)fG zXJ6V@2S)84-0q0KxCOa62L|4UoLd_ZISM|V4TYb~fDr(yIWaQctpHXc#Gp6qSqJ;$ z=x<%=nD8#W2@Kx73EC8iERZqf?bi|OGr@9s+1uhMHnE?+lWy$$&{wx+pn$>M!;!j^aW z(biorJ!_VC$_>}*6OGd|?>^XmXr-3wh61W(Dr=}GpL?)lNF?^1 z|H*X{KSmE5l4wHIM#=Xsf}fjDe78doML!}Re;b=ozJ6>M_L-a;o`B&BnqVqUkYklc#Drp$TUC8w}0DI2KR6O#8fl z*s~p*PkvUlW7Gz&44dm?u+l8BEm?|rX?lXFBoHhew`a-uFnkC5Kg$7Nzx+4nPzV!H zYL}2Ux;>yk<7`%K5#+fp3qXHC`*KmFqnu-z*J&`4d_zSm1G8Si?mbF!CiR*4LUPEE z8nQR|PURS@*3GLcfQGaw2};9MQqQv=#5`jG8ed z=*z1+t%}eg+vjteETy#fx$)MUEL`_V9EGhj*b2X6UHp0d>_;FV_?)OSU5VoGy}Kd+4O``GP=zx*4on;t_JVns-o z0PemKsw0gT?*-YFYrE!(WyX~H(N_a%IsF@aVF2q z-RYKepw=68xB9kod2okoXUEeAZxHv6cSG8Db#P@iIolsW5hLc*D&#`x>K#Q)$G+$O zI)N^xP>x!pBmKap+axb2Fvw%@;lMsdU5H&vaS!gm7#1*DrI{rgVY9C4u*8w+P%4>_ zKvls&X+)oL9RJNw3~Xe#Y)uhX(ATDE_h zlzy0i{>uo@%b3}o7?;m}>Uzhw7dLF1^waFGaCGS{e+CJ+{olbScl{NIKkac3+Q4PI zunTI{R(dRp*)eVqMZ^6QU**M!$glK;Rz^ALwl|EK6eMB&L4!n9*{`x$* zc5AI88DBnq+b0JQqTb6z!BfdU&`% zI#z<2J2gaEP575u%STtG5j1fC8sxtE{jnEpO`^TA zsTV@>+F4Mq`Yf11k7_yvoZ=ub>X;azeMaL(o$F#JngD)YSk1@|gKAvgOH?P7gtS4D zIFsfxWHOJhR!lT<+;Dc}Luyni_SfeTHSxLmLjGdNXv}W$1?RuT>?vgHQA&)`{~f=V+3R2cUjD$sPji~Cuzs3nL7Lg{`4uv z+3g84#-tuj)kOp;=zVfQ=tWtH`5}aY?OKcAms@!Kts4V5H?3X+iMr0xN@E^7nWCcb;b!5JCxh@Q`XJQF8eEKv|e`_|gKyGRLO=Qwu@QhB^ za#I{2wrLW{5&YsPT5yKgB48QzV3*xDdAD=Q$=zSvPsaon(J)1RrT5`R_?D9Ol+1MPr8uerE1R2|mM;>ya4010+yjlQaKek1H?wot%Yxlg#+R5|X=Yam zaDymI%!_QQ#g8st-bbV|LpmRi8SPGdQviSf_tn;vAgy5ZaR5ktgpPz6t8I>6aEtI3 zluQZow3~Klk=ONdE0&ych1%0DkGaa)!&)%(dWmUB%qB|B# zgxmS~8!Zj$nQ?n+jZf(^kDtzyrz1_!9Rf=9sduFKN6(A-+OyN+dWY3ZQD!H){@JtR zSR#>?6we%+xxFLnV;IA64ly5rO^l)OqrNZ-alWL6XUn10GHxI*j6}G^eVP{s*)B*c zb#179d$~+x;|ea%*)a>FO(^o!W3wBfQ$?yvZQ;WlW#^21<=`8EYi+EB?wwr>$78Ml zl&VO+%XeL5i>%uVmjr4jI3UHL=ntK2-wU61)9u!CjoM#Xn8XgEk7$7eE#i|C&%5Kh zg7#)5Svf2u>h-|)!?OCgEj7|_#=DM~?S)EtE~K|ZV(-<1*6?NS-zk+eibPU)_K>aI z*W-5JZd~_ta7u*4bUM$MODJw3Gx+>e)Ubje*-U_;=32~Wlx($Ch4!xikqtqOAVi>xIT`xO)(?J#ZStQnMFkl{oH%oy{V>m6H_7q87P;K<7YnjE%8oXsI)R5S`uN_X6}|sl@w4iA|3?;f&37)k&&uz>3{}TT zdV<^R%Jxru0B)7Uvp_4yV?|Sx*8>`tDCaBht2u^bp5MgU#sDs6{P$?eL&-_bs%@L@ zB;rNC1jKi=MnGhZHPQa@<=hxG=jIoLSA&Y4Fs`ap(3e&cYwC(Ol>_w8lGsGR-eDS| z)ZJBNc!Rb_Bv**Zj1~H?WE{1O^TV01zQFt`eHh_$>8Q3avqh4IBH>7fcM=D9$+pD( z)lW|~9r}?Xkv4EUlG}1y4M|S{nF*Afpq1w=xG&d?SA&5}HD`TT8X%&YfrEwS!_Lc| zEiXJ{;JQr%SX%LW@ttuMIOQ51`>4*1*(Fs@hV1r@jqs~2iBH>~4_~T(y;v9+e9-T@ zyXqk^M?Q^Z(>dtfCfhEQ12{q*w@UEWfA^4^2gT`H%i13Kl=HEh=wd?IxKjXXA$A$> z-W64yz9(EHB$wrw9QO)487F{E`a}c8p=;cbvOy@|-g#5IEUs z6J(GOaan9STSZMw%rSo~HF;9jIPhpAa2bva40{1Oe8&uKUAdWL|K|b3JnLU63lN5e zRMqz%&8%Na7Rv=oe-I%wLg3OeDYt2(Yq;4(C~r6+i^?ZY&*faW z*i6wfzJa^h!KLPq;MhU7-IrV(`H%(!kyEgJx&(%px3fcipe~i4tJW)-H|MbnJ!rN4 zx12?SP7`l0pN>wyH*Ts3f8+)ZZdll!>@X0|lN9=vLcXErX3&xs-sVhaKc2mCq#qCE z!tDF&nC?>Rse?nsrqg9DZ7;?{mzVBT$xKyj>q--X69ye+oOV{0pY*-~$3j9*J6W>% z@QjHxAWj{WkeH4#HQP!>bCjNQa@HoToe(yzg=JJdylc!^6j4m8EFTeLTcr!07uVXn z?>jM_(`GIOP_6-A~ zZPqdLBT6n50zN0WugkRgjN@qZRYId>_kJj2h<9W4j>y_ZolKCbv%M)Tk}hvR3)pO8 zn51EK=1g|&YdXT5XW~=AYtu*4>-_9VIzI9=XY1nQ&=XVU6e(_k`Ob0(jtyCI*)a== z#Bo^reh@vv9HOXV%9*^-;{oH9D@u<+Z6+x35|cZ%x|0x`7?EK$p>d-M>use@`~uko zi7vElPS2*)1m&n9PIf+aBXeC=@|i)T9lOTZTD5PT1*WUP%`L7)Qmv>olwbo-ua7UsgB70G^mI5r-Z00?e9QxYCO_M8 zx7MmU@x}O!G46J1l2wBJ4_Lf*aP+7T?>mng6RR^52#UxmZL-c)f&hekU+HMsv>uX> z9QOX*B{#OlLHe&AGi&Vf2;utGAyn14?XZj?;<~Cm4ORzk_JWWE08yK6-P`VKow>eu}7AOPx9)% zczKIfkV*dob!P%hzNYFvy?9eXPvsL43p7tOx~NmD7p9##D4 zq#E6o$5y>O$o`-x&!tJ>FLGj{Du3YlJBP81G$hS8JBCQdTwa;=>joRMJ5&8WPX{}< z#X;WJFJ&bkI#}P9{GPJN|8NI^2piBhB6Jk zTxKsls$ZCq5=W`md@;~#m-hl>y%9BGAaN8la={$9;vSjvf(8!soNC=x$5_Y`dUyo{ z;UVc)i=*O446RKNkWcxoozCjPj^53WkW3b2??QN}=XzXr>&ZMF4jS zW-`%tZND-68bEqR>=LmtPfw78%TjEraMneWI1B!`N_tkLx@#e+)ZZzw-rb5(s*H?I z%gg64Vb4&C`)P*38#3o3t%K2IGyE3#$|#*?DDqRs0F}$N1Q*~;BSl^lxQN_q~IC+$!sTDquakyMvX2{=L4g;+Fjk=wuCjIaWR6ly^c_?hnA=veuZO_q$+wHslm&6X z-@0tBhY@mR@;O6Bi+yhBQ#LVg-B`Dn+zv_4#>fq49yR+1zFZ0JxNR!McslE7CupOg zbJ?K)4VP#8e{LsLqEV97AY<0`qW8aZv;$gM1?`i*pReZU=j^*xL_nGADgu}lUovby z7^opJ6g%)}lUXiiGn3!gK75omF;z`{Ef2SZK9_vZ(mpUaO?6v>-P43Wq@3j&k7dI% zrqM_PUxO|?i>f2pALEM>R?CKR#N$q>k?32==O}Os67Av2Ce7>qskboET$CCWklyA6 zvUS^MJL`@uH^~CO!ht=H+OTd-awu2-Hsb}E#t-rAEwg(U$73^RZt6kWq;$?W%KMg{ z!yKEjht^$`t3pckN4|09N`~2MCN?AeKBSyNJ{7maZz@sgZl{J)y>}eiwF3>chb`hT zx~DnoS;Ng+46>QUO2s*#X1BJpeD>fI0j7}(bEJBlVbOoI(d|JeWD{E_rv<@Ih-X50 zuz_hilcq>4>za;rb)EdT0H6j%F z6hONE%&P@HnBWa8v&7*_wF6(4(6ZKZYWM{AIyhOvmO;U{Cr%;pU2f)4nA)1}!~sfC z<}#+@ON6m_1otV4J?*wd4H)GC=(0YY!dD2bG2^P4&cmu3T7#-auDn~atTS!Wb4f+T4mZ$0PAHwMJtf()HW-9qAWwUpr?d!a*$#YSU9x>Tyi9*tQZMFXFRmA}-J z&LC@;llva~Si=i0CCV4(3G}}gQ%8JZCu(1hcY`{i;AY++I#=3>VoYZh zkZ@xT2K~JX+j^BDFPuK(%q)zA$n8?PL09zv@0*e1J5Qf#z@4pR?@jr{D^2X=jUwME z|6us@OVzlAjm4OVRUCIG5c2`|w+Fi^k|2AK^1YX%Z1nN+hHyPwkL6oaq$2cs>B8SY z|DIJZQ;erwW=6GD$Kf|8&OEA?l*BB9Z&V6Z$;$B&alA_d!;_sve-_KRLh~6C7GPFivS7C6Lq_NIL)BA8MI_@b5LeQA_9Ie+-&j0`jBoc1>~ZclHp5-7&c zA>516JD5}2I;^Zbu;L9kUUck^~nl4iS&FH*bHAscEW z*Z;^?UvMDj_K{n^6fA@fFpZpe+F*#IoymTF4(dErD&`y}E|w+-ALzks z9H{qf+||iIPt&&H))ctdp)$d36tn=7b68PE!3%!-mx$P^SGr~qVtznu_=f41jl7PK zh5~B%h&QI|b^@z;BIs;;@+* zAA9o4Q<c!*lMu5Iix8_2n-IGYhfo7Y{%^T$0{!b3 zq8K^S^eob-Ub%o|8*wd12iMhvcbe)F;#nlsZ03XcYmpIm(+?)13CqDv_{pn{CkJ-aJI&T>&jom;AUs>@`W_ zpr--gZI;E1)I~FzD^a0wni^>w!4mBv#*ayE^21L0_Wx~wOHXfX9P@0_?UnX;D+3EY z7DweRKaU4#2qlp>uO-Kc%e)(o0B=#@-$TtyrFvyMlsW3;@`H!o(SH-OzC1AIfpXGt zBvfqPW*RIGtKG;h_l|y-K#SV7P{ zeKf^=b78ssk1tk3S*qA?Q8$!{aFL_Ne(sr&u7pu6O4TtvwPOx3VwpQ{5l^xnZ}>e| zKn>;OP;hkQTsIjqs0Y6}KbHG-d_+F^W7?9hU+wS&I?3!0wUs(~D z|1H6$GmHtGSHv@N#ofJfNDw-?wCwtXk9|f`6KkZRGYgkY6cpZnY)JeTqh#O4`97Zw zyWVaTkciI-pn74M8jbpSPh%S&H(~WszCerwjhMTzOd{~&n(Wr+-KI3hJCXBT&Q`KY zBBrg1-d-W$5KL?VO2G)ecVS2ovTHQhRo>_vS^Wi$-fRn~c!yMF!XA1zs53{>?M*am zSh(DO{wF~mh>%mm9fJ3}oR=<`Eils2V{{e-izDkA8Q!+r56GZ-TKZt~a`_rkrmzD3 zvh9t~7gI-?UNQCI<)DW0R_{~P+nt5AiEhqI*fG0f;_6)nZWBRo&;j>*Ii=*T;d zm_WI;kM|K#RXa?RSlE-y12H*B%hVLu8n*>S_jDFa35nW;gfAV9!{SnK!MD~NdtwWI zV8zCJbC6Cj-)JwH`tXa}nvI>M>$9oY-UC(G(o&;kn8`OD!U4>etV5rPWB*`F!zQap^AdK2S-)t<~R!&mXs7!xvL)?~iH3@6L|cju)b1Gq^o zTqL5K{`8UO()hJI!-~V@vBYH%`tXO>?VSwO(Ceit5mj}8sE)-B_n}{Zhe7w$xIFY( z{_ZW9;%2_{j!l5w-ej5bnrQr{xFTcf@%~XK?;?sLN7jzJuG3BCf&kb;rd(=m{Ab8L zU@oT2$C&A)+^~ngo#S(FOPNAE9*r6ccS5m?%S`aT$OnI3UmVPd7@1VfPm@mLcv;(H!@U#z7 zlaumoZ21*!6D2ZA`2j@Zmt(@1jX=mmRN&_5(NWKGmT2pwQm)`EL|bxS;OnFbjB!vA z%G{9o8kU!ZQbY{uqFn6LiI)Yh>o8N92fJWhU*86$vvGk5dlQxOBv%| z+B+;mX50Y$A*L|b-UMD$clc=@V49UBOO;wj?dN?3#P29f$gNB!?$R7Td7q;*B!vrr zOFaS4A4>gx@ZW?2``Ou8qiL2HX9T ze!mU$$)nS1VDFUQiGbIY!*qU*?n=^na(|n!SE&+49X7!3O2jI^8kp~IdwpTJnqBdx z3NaPiO{8UEou@e6(u z;O0BqTp~?DqN8W$a@QgYziQA>QmTVY9XO)q!jzTv51SA2a%Cz?8pyt+$MtuMj)LCR zi@It@ErQsn#k_Y_M8Fn%+smVjQ>9a-$<7LxQ2Uw>-~?H;i(^5c!7#^e%p$ZpHKHRO zp;POU#U+N*U=aL;l5q*oomyAM8^l)69M0$jWFa8ByARdO1iD~l z2+{2HorNsJU5eCLT`XhSQ6;wkR^(3OkMgoz&J++Y1asm~(qS%shm-ZPe&B%Ahh& zC+|b-a})4b5GOybUQ?J?6Ho7yPL&jq6m4p(EL*w^eAYgp#vq+$}8jLg9KR> z)>Pf&&syo?f{sNU70}U2U3#K>CY-WL?1}NF{z}ES^WG>o`y`pqAA@1>yv>Lmw5S`CWL>)SXzvgB%mNR85i=-?J|W5UnjC(4O!M+U|28R2Vd5&#T|27EHp~T9Q;V(eFoXqBfsC z#}WoGlP87AafAX%5HO-E1P$uQ!Aj!9=h^h_+t)-YZQqwFoGVL~k^j{YKm-0+#|BZ} zA6^jo)*e>3HRH!4+IUD)p3$^D@{7i0%3c~kmwm-*Z6IU z$duly2y_w|xr&aXkN>@7%ew z@xfFD=EaZEocJEHqEHzkLHj}5frQYU80>7HB%}S>YvWTUAhaaMN(f9FR>pCeh4dtE zNDu}5?q+=%^&VM?DkPuky_}+xK?>6_zD7sUypEaQ z$_onV-h4dq#1pDa#CH8w3;G z4&q5#GnnL@QUE_pv1PmhA;OgTOI0#Eh8tqbQTUG1 zo2XTQ1K;(o-1?EV>>0hk$U(Cn@{k+~TypVjwr^S3QsEI@?dYQf=1@C5#>u}AnCK?;x<^*A&<=8YQ%)cOV2chs{ zKz5KG+e32fA5w%Id6+oxGpZRh_(PA&fSs<#{^o2wj;hz6&aDqxkFO8>5B>KS0~eOn zRht!jC_AvS{1u`p(TeHT;s34i)X32S@( ztz)7w=KMW+;psE__18XJkrQgwiuG@%THZDD5J6#9sTh)KPHA$ZFxfEO*dCH&|BxbN zRWOMS(4@+(8DzjQNGDzAJ1K`Rs1LXJgMa5SPv)K5ey@3s44j58f@U%x%Jk{{*6VL3 zqt?@Vm)zw*fGNr9JA4nZ?YZZkW|=J4_DtHWtWEBeYXXN5AvWqi1M{8dMHyV&aoBHW zYfDbPL+|gr_Irvj8BBfHe-=sb`}e-amc$1+VhJTo9gk@=IEDVwhif@&9@vK;s$FXV z`CH5walhv~s=X_gla)quf`rhV(7f25?;$H&_Bq=_a_k>cM3YN-lZyf$!LQ@=20pDC z+28dcE~yVw&&BqDBQkBsY_i+7_Ir(BmNa~e8D`)Kr|b2)?umZ??Zy7~34lgJ`hm-5 zn^stHhNMyax|rp*ZNkEsp!SfGDq09#b=6hQp6@u`DLcvpQ||Uj$$C!_oiOoj{hBaM zhH-)O-e_&M{e?yMJ-UPLJDux7f9Zp@?c#0}sw&YZ9PT&^X>i7B9=G3qyUAuJlh|d0 zSG1!*TFnV_4>J+X3o_$-$f_EpEksjhyyrV0N3O0f4JMzSXG%HYVEcVWcwP-}76P2Y zXi%2xZzdxa)qDDG;YV(e9zfYn+&iB}*bi$N5)Efkrh_QtV%s(<{Fbqk#D|5sPhDvy z;C>C)@nXB5fndH(?xpW+LX(?GgH9VsG-EWeiC6f)NeKOw57^xmV&!{g1fqUuTtusQ zC`oQK!gi>$6^US#qB#Z8Kr}DNEc|^IV8#g?=MWUWmT$Z2%(9I>(E0R%Ic)tH`T3(Z zvitV&8ZFJ}DyGp^3*1AJ593T1BYH2#9Hh@RnKKtHi&{gpBHR5-D|9mnyG+n-x7>0| z>$c?x<1e$NwFp)uN!F!fMp7*c@XljOQvYe&Usy&grl#Q_|2Zds{=!F+w1zB%tl?4? z0!V~fXinVd-_=Yc^O`!h?{3vu<8n1+&d|5^P?0Y?s)n$EZ?hXsDw)aWl3~xxQPhVO z2#JQRqVuSUW*wu~?IL&`AU`};_>mh#=&%r|1GL@0q(awH`dNj2h7cnCxk~K;ZxbdV z7O2RqFBR|ZG}XeL+7N~3ILVWdih=3A@lXA&%b%ss^y|G7JNNY$J}}ji*xls{53r)W z-Ycm&nF!uw@f*xNsSo6OKksC;k|S+VjH8@c1yU+qdy11k{^!XT|Mq0fmF)L7EF>{D zOgV=OKabRVyqxu(G?P&q>oZC|IpKh(zOYo%Vv;9HZYxkGQ@%%!9%U0^AdDR%^^jp^ zASWu3mepRjomBWyLg0k|Y7hJVnu(5?@1ICSh`O~85<%(Ho+k6Q6v2d~(OF%C8^^5v zt7<3HU-h*nk{QVj8nvNnOG_7KCD-hco%}Y;lku;4a?=H#EV-!t-iC$Qn21xW>Fv&B zF}bJSi*N?DO?0v#TRuga1FO`KDu9ob`)0eJQDHmE()#u5XVP_wkqG<7_nRg;)Fx;S;R;tj7 zwJt*L-25gV)4P6I0STJpPf&8|q-y6Hg$J398JAYjrl!5?$>6@8TzI@EYpm!=n>p8%A$!y;seIjt*#KDZu;4ia2z3rL?A)UzV|f@0OZDx|=5Hi~*tH zD5u?UQh#q)s4!vjsn~)Q#+S8^-aChu#hAeTkp@g0-`%FacTF@p`4hEtOfa}buL z$$lkCi$-&lIaD1+b5b?c_?reOIbAI>=5MMsZR9)uni4cCW6mWNw5iem@ucU)o@~FF zCx2?^$?UV)@1;%9l1W0W_A=sC0kv+ip?E}}ACpeX4gqLMm~qs|UVr`dW`PNM!_fhQ zp8Bj&5G?eOwl)BmYe0*!dw(R$Au zlL}E-N<~UUKwgXmI)9RbNIFls8Y?Cp`@(NVS6|2r4GNQwlm#?ne91W1DYm8tw<=mP zHJo4lRqvhSzK%ISZ%zq5;pwmW&&0ORCeiVT5)q?i=~i~2BIDqrP}Ai!gq$EZYnVqIIfeep>EX65)Q+Uz`D!sbjX@@bhQM{32iNmfnP^5*S~U<_sA!#3ZracH3>Ho%l;H zy=2x?2wK}z6-m-ZaFLLrlNL-gV-M4PIL08##4leKe$*1WMLdWyxuSL(aUmpa8A8Pu0o{Smj zn|Tvn_vG6*JQ@0=C%w9PveTBHEHGbbB*jDlNpb&aRYGw(z2B=cBi9m4PAp2{(vV4d z{QfcBz7>;qmcW-q#M^c+n?%RdxTEx*mhg^IYdCyi%Ra+0hiX~Z_|Mn^-69@Tw#P*{ z7%*hH<1@MBl1rKiq*ct(xY}x~rHf!04QjHo`#XM88WrC-0Zlne{gBhIANh`QB6=VF zpC^5LcyiLAp6s}VC!4P0$!6>Nn$%(oCwHI+64qoXg*xY)bBx)5CXDG&lUcb|_-&$2 zPzf^NNpm2mlEV$&o$veUeJj=;rXW-mklK?Lken&Ca*S0X@kJ6<_1k!mV^T~@La@P! z`bEhKp?4PR_uEWL?DeOge!6g!A_&Yp!mgCD@bZ}iOq{N@B`C-Va}K}Lu%|s4aHl8N zo$dRd_S(^tEjQ46vv_(^iV7q}g+3(3!kr}e;#bL6Q&D{1U!R3zaPj@*+l$WFIU+zQ zV4PX+Wgt5CCY4UF>+)?`Q__d&>rw`fWU(efHT{lMv@RxhpopB6ozm zu40Qy;+!`O61NZkT+WB8f&a!dN5Hgg5#Vl>{-UdD+Sye6OK<%S~B@ge=ueRme8k_3T7!O zF`q3Xrg@!dnNkJqmuulTjGe6C5jrTCHpjMm8OZD+-(KXOM_NGgE?*Xk3hkC6&~M^_ z`GND?Hqa0vemm^2gPe8NSw^D@6Belvw3KB)+J1{a=H-7s?$_R>Xswck1STEi^x;#U z^y}ftWhZ-b*q)wjy^$x&E#=AFb7rSC*@Ohd4jnqkrI%hRFTC)AY2ucfdMQB^aLj@F zOdXROnba(Wp9O;2Mibl#A6Ng4xikHh>`5d5`z2L}USTZkfOZFYW=WEe;G`S$dK_BT z$kqH~r$rLYn4B<6U8sH&4i>Mja#(s{K6e6W@WgR&ZfO|)GR@Z7f zxD{|SWO1+Q)QJXAj3lXf#8*=ZuwT+OOj{T|K9>j{@3 zkQ1ie;>Pn>wc~$d++3vj7TV}u&_)yekXi#IL9&VScucM zpFr40wB!PfmYOlLp-CvDaF(D3y{%{vN25i|?aME}T)K7ZW`ZKr4C0iZrP3P0;F?Jm zb`|gveZtHr_Z|_QbgrMM1Ks2kl@LiQ1|0iw-8`v%{UyUii}5StT(=#oNhpfe`;iu8 z)=xM~e{ZWXRKiEQBZVmf{Wcls!NY(lrFhdOf9c@K*8`&`noQ83W_;l1I=$V`lbbH| z{Z0$cUp_Gf8Wa9CiePbs6F4~Npo2`4L)NQ9<4mF%vBbFT7=i4u#~w0yvOfz`n??=W z6<1tgQbEvGIfrPO6aPkd4tz(w8NM*m9w0z|&pFa_tYMe>Dh2p;Oe+(ImW98|5`9Vq z`o}xXB^5}GWXY^R;2^f%Pf2pZnc0yfoj|D;acZs|)8A7j4NB%lZ>9S{V+@X=*D!n$ zy^hoT<42%dBnJ-otO}z^2cRSc@@a7cEW&mqWDa@Ulk3m%*+jK83WG}}DF!|H zV5DYH*LC252bwej3SVg(LPtu9!D*)pL8Z}N(3DtZ#dh34(7@29D9>QASr+mrcS7Lz zM0GJuFTC(VLxQt}Bj0FQPx@Mv<^5?AqEjSN%VZE*~^L~apbeym+LywZYh;Z3nm)0W4ds#7z_6*rpLP; zDIL%pKK}S)<5Vtppy6M7^hV$Rga(D+gdg{+Cl6om$&vedvi|C&*V+X_A8hxgHOq|peCkVxx}ADIL7+xuP?)gS158-FW`AjeLx2gU0)*uDlDJ$D%yNq~lnQ(Ih(1=}Mc0nZ`a?w87;FHwDTWE~$t1Oe_QoSiQJar!4xZ#`S)yzug9xQdb49Zw zi@k!-qf{PfHiHHYGHp<71E~}VoXcyky>_B>3)Y~krXMHk6;rYj%uv>otfsbEb(jS! z)a5>$hSq_pXd6s%f_6YnV$fQJj*UdXh~SZ3AD2;&ti1BdCQqtbc<#C9 z$|fwXnd^e+ms@T*a}8WS38{RB36A!d#*fIh^en5Uwpn#BNLl}}sFtNB+_#tLz|W{n zH*I}Q=DY1!1;NKd6f=v7f_;#+@9I=R&X%PfuVm0x+;vP!lYYu*-9!uY2-O3TvjGDJ zn5DVVjFJ!+1Cnh|Jn=-6YCuFUS`U{^$r0Zv4)TA((tT$2!TAOIM;Uch(X#A z8Q-}`i)~u99}7St6bOH@MIko};+oSp6)Ehc5IU=Y49Hiav7L1g7sRyx%_!)>xtn@C zhr=H;j;!)5z%i%Xr~7qjcGObpgi!(L-fIJ*jJEvhJ+qGeSWTjn1IeEi z@MY=VYX`I~dXTfsH$JI8efpTCkV;A5M0-MuvJFxM(~=B!j)^uhY}hc<>x(6nATkJ# zcF<@>v>QePDaSF*HDJPVT-*6%ElEs41foMbn`Hnok(fy4v>_@TL|JN90oW(zmrMJg ztx9I5s9qaAxol={lc2rCP}#1&y1Q4*yRAgjPe0lMeb0lFpFddCL> zIne4kDM_#$nf&yt$Gj^AXlQ7RB52)X>j1r@DnVEXS`f8} zSvT9mpN96v>On*~Pde!&<2a`!HLY#%H`&f7tw2@;0O&l?suM=*0Y>B5z&>~bp*umA zOOKgVl^tCwzSvUFEyLBoAwLtPbR^6gf+n3~TH%M~LHF1?Kv__w2n&HgNK~yfAQbY| zh7KJncieG@>BB`|{8F9w{EjpROw*jKssPL%qLD?N(mH^@Iol5aWCe%_Kb7@(1;MwL zWkEC`%u@*>@Tj8BP`sJ?%+ z@PiCNy`pn9XSA$CGckj8Z>0U!}g zx-gK>hOqDlX60RX-DQX_cd*w05D4{!v@ACMEQm`@C(}vuOfelxvz|bv4^&c$X>~&% zEf%WC8ip({(PKE$9LSKT!)Te%J+%&uA3xr7_;hI=VPRV|5qw21lZ$QXtzIt(2n-(> z<|D0s$RWd_Pua~Z)gHMXK^Y6Z&d2K{_w`=BALqMUeP?xsQL`ps7Seai>QmCsXb(d= zLM1?so6B!UW5o;-SanaW185Q~#*nll1W`HC955pnS!5BXgBxP&-o1O_XgP8u0O5ZM zqshA>M+=jvQl>dhaLhAGam-5Tn1`y_(Y~1eU}$`mAWFbB(Ji!S`{uSv+$UyImZW=Y zJ)qnNM|GBMYyzQ$O*MKT0nofvuZWls%G~OzZ@vb#8DgY$*~}^S-B|e zyHisU!kqfAObD}85f)|=9X07*fJS5^o>GNWgK~1Qa^$EA(6or&vCsz1^k^?rDa|Sh zj*Hn#uddIQ_5EgF?xNb=y_peat0F7_sjx(TmWi17w=f6Eo634&ZJ#9qk9G!DZVKkeQ6FfPgay#FSj~st>hv(DW5Na-Y+%~Q zU@nrz5cP9GY%~#Md3sj+p)XdR&y*ua{h-wnRumL2LtxYcKK0a7#?RHQTQ}pNr-jTB zM;swtyLL5w(up)u5|blGj{3qZLs&U-