From bc4c35448d9cba2445f1fd81e46c5f68329284ad Mon Sep 17 00:00:00 2001 From: William Guimont-Martin Date: Sat, 20 Aug 2022 13:50:48 -0400 Subject: [PATCH] labo 2 --- Laboratoire 0.ipynb | 32 +++++++++++++--------- Laboratoire 2.ipynb | 64 +++++++++++++++++++++++++------------------ doc/gazebo_slope.png | Bin 54737 -> 16522 bytes robmob/sensors.py | 22 +++++++++++++-- 4 files changed, 76 insertions(+), 42 deletions(-) diff --git a/Laboratoire 0.ipynb b/Laboratoire 0.ipynb index 259014b..f4fc627 100644 --- a/Laboratoire 0.ipynb +++ b/Laboratoire 0.ipynb @@ -108,6 +108,11 @@ }, { "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, "source": [ "# Introduction au simulateur\n", "\n", @@ -142,7 +147,7 @@ "- La machine a au moins 4G de RAM\n", "- Si possible, plus d'un CPU\n", "\n", - "Avant de lancer la VM, ajoutez un `port forwarding` dans `Network -> Advanced -> Port Forwarding`. Ensuite, ajoutez une règle pour `forward` le port `9090` de la machine hôte au port `9090` de la machine invitée.\n", + "Avant de lancer la VM, ajoutez un `port forwarding` dans `Settings -> Network -> Advanced -> Port Forwarding`. Ensuite, ajoutez une règle pour `forward` le port `9090` de la machine hôte au port `9090` de la machine invitée.\n", "\n", "![port_forwarding](doc/port_forwarding.png)\n", "\n", @@ -177,11 +182,18 @@ "```\n", "4. Redémarrer la machine avec\n", "```bash\n", - "sudo shutdown now\n", + "sudo reboot now\n", "```\n", "\n", "Si cela ne fonctionne toujours pas, il faudrait créer une nouvelle machine virtuelle vierge et y installer les dépendances. Les étapes d'installations sont détaillées dans le notebook `ConfigurationVM.ipynb`.\n", "\n", + "## Mise-à-jour du simulateur\n", + "\n", + "```bash\n", + "cd catkin_ws\n", + "git pull\n", + "```\n", + "\n", "## Création d'une carte\n", "\n", "En guise d'introduction au simulateur, nous allons construire une carte avec les données du LiDAR avec un algorithme que vous allez étudier plus tard dans le cours : SLAM [Simultaneous localization and mapping](https://www.wikiwand.com/en/Simultaneous_localization_and_mapping).\n", @@ -200,7 +212,7 @@ "\n", "En bas de la fenêtre principale de Gazebo, il y a un compteur affichant le `Real Time Factor`. Ce facteur représente la vitesse relative de la simulation par rapport au temps réel. Ce facteur devrait être près de 1, si ce n'est pas le cas, nous allons ajuster le pas de la simulation.\n", "\n", - "Lancez un autre terminal avec `CTRL-ALT-T` et entrez-y:\n", + "Lancez un autre terminal avec `CTRL-ALT-T` (ou dans un nouvel onglet `CTRL-SHIFT-T`) et entrez-y:\n", "\n", "```bash\n", "gz physics -s 0.001\n", @@ -273,13 +285,7 @@ "![mapping](doc/mapping.png)\n", "\n", "Vous pouvez maintenant choisir `2D Nav Goal` et placer un vecteur dans la carte, le robot va s'y rendre de façon autonome en évitant les obstacles." - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } + ] }, { "cell_type": "markdown", @@ -592,7 +598,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -606,7 +612,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.5" }, "widgets": { "state": {}, @@ -615,4 +621,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/Laboratoire 2.ipynb b/Laboratoire 2.ipynb index 3ae6ee6..675168c 100644 --- a/Laboratoire 2.ipynb +++ b/Laboratoire 2.ipynb @@ -32,7 +32,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -51,7 +50,9 @@ "from robmob.robot import Robot\n", "from robmob.sensors import GyroSensor\n", "from robmob.sensors import SimulatorSensor, IN_SIMULATION\n", - "from robmob.visualization import Visualizer" + "from robmob.visualization import Visualizer\n", + "\n", + "import numpy as np" ] }, { @@ -69,7 +70,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -100,7 +100,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -129,7 +128,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -165,7 +163,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -218,7 +215,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -248,7 +244,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -299,7 +294,7 @@ "\n", "> **PROTIP** Utilisez l'opérateur modulo % pour ramener l'angle en 0 et 360\n", "\n", - "Si vous utilisez le simulateur, vous devrez utiliser le code suivant pour obtenir le `real_time_factor` du simulateur. Le `real_time_factor` sera un facteur multiplicatif au temps d'intégration `dt = real_time_factor / gyro.SAMPLE_RATE`. Ce facteur vient compenser le fait que votre ordinateur et le simulateur ne s'exécutent pas au même rythme. Si le `real_time_factor` est égal à 2, si une seconde se passe sur votre ordinateur, 2 secondes se seront écoulées dans la simulation. Ainsi, il faut ajuster le temps d'intégration." + "**Si vous utilisez le simulateur**, vous devrez utiliser le code suivant pour obtenir le `real_time_factor` du simulateur. Le `real_time_factor` sera un facteur multiplicatif au temps d'intégration `dt = real_time_factor / gyro.SAMPLE_RATE`. Ce facteur vient compenser le fait que votre ordinateur et le simulateur ne s'exécutent pas au même rythme. Si le `real_time_factor` est égal à 2, si une seconde se passe sur votre ordinateur, 2 secondes se seront écoulées dans la simulation. Ainsi, il faut ajuster le temps d'intégration." ] }, { @@ -337,10 +332,10 @@ "cell_type": "code", "execution_count": null, "metadata": { - "tags": [], "pycharm": { "name": "#%%\n" - } + }, + "tags": [] }, "outputs": [], "source": [ @@ -357,7 +352,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -400,6 +394,24 @@ "> **PROTIP** Il est possible que vous observiez que l'angle dérive rapidement. Ce la peut être causé par un changement de température du robot (voir OffDr dans la datasheet). Si cela est le cas, réévaluez le code de la partie 2 pour recalculer `z_offset`" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Maintenant, produisez un graphique montrant la vitesse angulaire du robot en fonction du temps, et un deuxième montrant l'angle du robot dans le temps." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO graphique vitesse angulaire\n", + "\n", + "# TODO graphique position" + ] + }, { "cell_type": "markdown", "metadata": { @@ -410,24 +422,26 @@ "source": [ "### Partie 4 - Influence de l'angle du gyroscope\n", "\n", + "> **Attention:** Ne pas faire en simulation!\n", + "\n", "Faites de nouveaux la partie précédente, mais en plaçant le capteur sur un plan\n", "incliné (utilisez les Lego inclinés à cette fin). Faites quelques tours de 360 degrés, toujours en marquant\n", "un tour complet d’une pause de quelques secondes. Comparez les résultats de l'angle final obtenu avec\n", "l'intégration du signal calibré par rapport à un estimé de 360 degrés. En particulier, est-ce\n", "capteur vient changer la mesure?\n", "\n", - "Dans le simulateur, commencez par mettre la simulation sur pause en cliquand sur le bouton pause en bas à gauche de l'écran. Ensuite, créer deux cubes en dehors de l'arène grâce à la barre d'outil en haut. Ensuite, changer l'échelle des cubes afin de construire une pente similaire à la figure suivante:\n", + "**Dans le simulateur**, commencez par mettre la simulation sur pause en cliquand sur le bouton pause en bas à gauche de l'écran. Ensuite, un cube en dehors de l'arène grâce à la barre d'outil en haut. Ensuite, changer l'échelle des cubes afin de former un plan comme sur la figure suivante. Ensuite, utilisez l'outil de rotation pour lui donner une légère pente. La pente ne doit pas être trop abrupte.\n", "\n", "![pente dans gazebo](doc/gazebo_slope.png)\n", "\n", - "La pente ne doit pas être trop abrupte. Relancer la simulation pour que les objets puissent tomber en place, puis, refaite pause. Maintenant suivez les étapes suivantes pour chaque bloc afin de les rendre statiques:\n", + "Maintenant suivez les étapes suivantes pour chaque bloc afin de les rendre statiques:\n", "\n", - "- Clique droit -> edit model -> onglet Model :\n", + "- Clique droit sur le cube -> Edit Model -> Onglet Model dans le menu de gauche :\n", " - décocher auto-disable\n", " - cocher static\n", " - aller a File -> Exit Model Editor -> Save and Exit -> Sauvegarder le fichier\n", "\n", - "Vous pouvez maintenant placer le robot sur la pente et réaliser l'expérience." + "Vous pouvez maintenant placer le robot sur la pente et réaliser l'expérience. Faites attention de ne pas laisser tomber le robot de trop haut, sinon la simulation risque de diverger." ] }, { @@ -517,21 +531,22 @@ "\n", "Pour la simulation, vous pouvez ajouter des objets comme vous avez fait dans le laboratoire 1. Voir le lien suivant pour ajouter des objets dans le monde de gazebo : http://gazebosim.org/tutorials?tut=build_world!\n", "\n", - "- Après la création de l'objet -> clique droit -> edit model -> onglet Model :\n", + "- Après la création de l'objet -> clique droit -> Edit Model -> Onglet Model dans le menu de gauche :\n", " - décocher auto-disable\n", " - cocher static\n", " - clique gauche sur l'objet pour le selectionner\n", " - clique droit -> Open link inspector -> Visual -> Geometry -> choisir les dimensions (exemple : 0.005, 0.2, 1.0)\n", " - Aller a l'onglet collision -> Geometry -> memes valeurs que dans Visual\n", " - cliquer Ok\n", - " - aller a File -> Exit Model Editor -> Save and Exit -> Sauvegarder le fichier" + " - aller a File -> Exit Model Editor -> Save and Exit -> Sauvegarder le fichier\n", + " \n", + "Faites tourner le robot grâce à `roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch`." ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -558,7 +573,6 @@ " real_time_factor = simulator.mean_real_time_factor()\n", "else:\n", " real_time_factor = 1\n", - "print(real_time_factor)\n", "\n", "current_angle = 0\n", "last_measure_time = time.time()\n", @@ -573,10 +587,9 @@ " number_of_measures = math.floor(time_since_last_measure * gyro.SAMPLE_RATE)\n", "\n", " #Intégration des dernière mesures depuis la dernière mise-à-jour\n", - " current_angle += np.sum((gyro_measures_z[-number_of_measures:] - z_offset) * (1 / gyro.SAMPLE_RATE))\n", + " current_angle += np.sum((gyro_measures_z[-number_of_measures:] - z_offset) * (real_time_factor / gyro.SAMPLE_RATE))\n", "\n", " current_ir_volt = ir_sensor.peek_data()\n", - "\n", " map_points.append([math.radians(current_angle), fn_volt_to_cm(current_ir_volt)])" ] }, @@ -584,7 +597,6 @@ "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": false, "jupyter": { "outputs_hidden": false }, @@ -609,7 +621,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -623,7 +635,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.10.5" }, "widgets": { "state": {}, @@ -632,4 +644,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/doc/gazebo_slope.png b/doc/gazebo_slope.png index 992f7bd70e5cb85b4cb891e983b543ce47dafdab..b3a9854895a39741bdade0297f364137c90a1ea6 100644 GIT binary patch literal 16522 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 ZW2YVFaSKmR!;jW)Vr*tqW#IVYe*x*O3oZZv literal 54737 zcmcG#cQjo8*DpRo^p+4cT11HmB08hjM2+4FLi9d5QIlvfR zQh-3%BKWw#JKb+7Hb5Y(h<9>wnksT~%&zV(Z{IoEfIyrHfeB#cPEE=P4dWk=9z=PQ z-y0YaGbDeyT%^k>8=?8M7HM%bCS^DF`TI{1!iu|i!BnNBJVQ-lKM6zsl6}ZeO3I5) z_A!5LcW))42P3kd)#;DMx_$u5oMpoTda6U*LsY>Jj|Gmn%Ifdr*%a~go-)fy75zMIZaktp z8|n90GtxQY$ccXNq%@~}A^GC-Nu;ERZVltX^YmMTNa>`Q!(vh!pU#M0N~5|1&J*r8 z1dnk36y=9p%1r59hN7_EVw*I_J&6^nET z^Pg7bsFT4EEURbOcev$3*ywPHRq%RKxaB@8?+7S(A6peWCxRb8wXOG?HhhsOm??>p z_tMd^wwAXJ=-I~;C=q-5g8xXNK8SjW{m&aeEqTwg+pZdJ>hEKLKt-eGSEa#1m%rP5q~>7a`ZORA@l@QS ze?NMJ4>&t;gqU>T{PTi2l@Is~aQtCY{pT;po#4N43VZ=rq}-2xuTWNZEZ%l3z61%{ zfF%F>HJ^L=l>YgrG>_$-e_nikmGiDbG;r79<-fQ3$2tvgQ{ea?*zAzVxn>CE-a_V6d>||| z{>ys^0{u@|;{Wwk1XdSdD+hbc9(S=o?SKDkj=8iO%saQ>Yp(K-2|($m3untJXJZ^1 z|9jVT*f`Dpko>RlDyP(^b%DJGj&?us_#yq5|Hg|!|F{3GyUvQX`~Z9tI6_XmgG4Xg z&Ss*B*#7;T^(?0C`cO*uHUR;bG+O`fgxx=Go5QkrF{Sm>AFV0_0`d9$&j$8?FEIWe ztR;s9y~hyI4A~&O0}A;?@qddQfX7yV6>hhl&jh`WrZe30KStvkv&$Kw=jZ3C+vKya zh*$!)J6&LxH@5MU*Z!1db8jza_95oY&8IFbgiG@?%`^SVmpAiQT^_Q?{p`kO5B(nz z@Bam{32x~7U{g7W8Mcr1d#riH{Hq88E&S0ss`JpiXXu$ibVU??Z?-tg9AF) z!JF1l>V<4{B}K>l|RtF(1@4N->-U5YUw$RM`6kNJ;?iCzav~mKnXZ^<&LyC)8lRwx8m|J3_vi=3v zKSIe_t5u1zgR9I@c=J!zZF0+T0L)3*k&@VXwzIQi zEj;z$DjjW*e1&OlLpfK$Qv-JP;>4qAp@5Zx%9PVtBEIhZun=M0dQV?=(Ea!<_3WR&@O{VbPTV#C$XQ548|MnT|<8@d>Ng`d2`OvLbJl$ca|RHIDcGn z?KE#?cr$!~E|is=MuSFNAS=FVF#*15_Un~A<=eK7KIny5M9sg_v6 zu2lqXhQiAwi1#uRFL(n9ah{!@H(eCb`ab%I>w4CXqc2!};ig{#GT!8JVZsvLT-w|S zDKKlUeCmsbbdkE+bw#I-;53PFTzjQ~$2(*S%v~6Yp1LJJg^OP=*&{6PVgHY{y6uq>8SRuJ1?RZzkFA&6mlqa=8;@#5u zD8Sx-##0&ZcvUD(+N{AUdcaRgxL#c9kGid3HfJA~`@+;dUAFaUnzMvM(2KAIkfwL& zR9SbJVC=)l(KlmxAItSA1-Lteyefy~QXcs1HTOfDjEmBN#paN8(-;vC=tSK#2?;Bw z6KFytGm5-8k}(Y#htvEkRd$0n$LtpKe2YpSWY4yPFX6^Slza2ygpmCqhQ%C*J9i5z zU6cfOjuqCy#WhNyO$1?9Ktc{FA?C$tACVW7;`OX-DGEEmE14Wu&J2Hk55SaKHGHi0 z5e01H$Vk=h*V%cb$eE@!dBGq(FG^gQTibb}|D-MD*MB|W$C~D*+wz~h%qm4^7SXsd z#474+z+0fci8(<4{DrU>38Ln>hHXbAuTa_%Ae2UwTz=U%{H3?1Wk&`xYboW~elMiA zZ~Z<4YE*I+JJx#A*Fbrv{qqFaS|v#?$Ii#v@uVznO`bl;`|5ncc=N$6f!e*_4)TN+ z6Qnd}Jv8iOtu=1@goCBKq4$A52v6*m$!(VEYAhJ9NVN;RYr#fJc-ID~HZ}{`-kDGX zRzE^rn$Swkx?r=bY<0MB3679%$V)N9wkpBif-8`~^mRP0qPcjCGoyxXQ*M2o{g$8; z546}uwr5Y$BlVHVN8Ga@Euw8osnb@|a4h(+UC1`^KUl$z+)Kc%`(>!M3dTx{D_XO8 zw<8aG()!IVx@Y#n(ILy_1FK!+KM2679wre}14yxn!=}`&GwjS;0Hv&&J=zb!1*O@; zbkHp0dwb5}C!8ggqBj1Ib+(>7b`4p$#ryUNf=*C~n7r{d!=@mx8SOOh9^&SZYRN&L z9W@mFI4Sd>tsIo3CRwE!>1rVmgfBr-_h;L3ux_og4npK#DcHN(wg00=Mj2 z*6x6$1M}h*pCZv>i-F#7$vY&|zQ^VHm4y#M7VfP9D4Pfn$Yfllaz5&#v1LqNLR+>K zsMgtbV^Y7f^(7uilSz(3#>1ppy1~m~btNDA&2Fn{PvO}_e$mQ`EJG*%xg;oanjm2o zIJ0?De!*kh&n^jzMsg6Bue@nqF-OaKJ`cGMfxJs&wF|u$2LgSqM*i&}0!8L+KpsOG zUv;G`2S#&EmGk$<)EiXnkB-obe*&OYZuUt|5FLYbAdXj2#t9!DVazS-wuse`xN>%XP_70|cD=v<^e!l*pj_-H{>wJo zDKXC~GwJ;n;b0Ax5wlLS%#|wfs9y(hOb=4D-nx4pvq^gZfD-cY;%GGWfvkBsogdFg zi9b57vw45$0nRw3nxpT??`s;Ts+ghzuTNs!949nJ9Jg*S{vHbysH?wXHqp`aOLJRy z=Bnu>Z+=k$ddRr`f-vm%oDlMkc~;Y9tf`U}o^_r*iz#V>T_%bq2}XIAmgWHX>HElA zk<>S)4GMYksi5XIu6N!|0nUgy$=%A5(>nI@IOyS^5dmCJ+E|Z`2`_{zud9s<>f~>l zVI~zD6O*fsJ`c>NlFGgy&Yac8A^ufkJ8U1k=iX?7X}G$&lKC?H6x#B}6sy2`O_neu zH1A`e(1w!T=}&U6%WLVvZ~_XrH|v$q{vzCcE38l>dp4b(@B3dl&|9XEr@EoIOE}sV zOn4_`7bd)USW`2Pj@gTD__#X4ag&`s@Elz}7Z~ZB-mdm~rVg5lsb1>g&AOJ&eUO`L zdJZBswa)xjs_Ejfkgwc%Q;#J#v9QsC*{Qg~qvJ2)`(=s(X)gLAUqORZa-HN@{j4yD zQA|P8n3K8lcgNcC;G4A#?+^E#ujY+e@X%uj=~Dok?G+*>Z%WROK(Ti{_9Ak7H=@YZ77FUG;IGt+j>l1WpgvVx3{+}aFzJ$&G?FI?}u?2u!Y!9 z)IkY~t80h+-)?#~k`~Kdu3Q>A%G>-)HPg%O(+&g1F=cwC2fHr8;sKY34RZJ_0T{$0 z56r1wqT$bl;{^h#@s%KJ^;e1QK4R=~B|MI7A3;K6!4PZY2d&t6dXHJ!wjzQ+?k5p3 z$YSJ^&^ml_Q>v1YQtIp%S;z48)^N8MjHz+??uEN_H7Vcug&9PI+NsLyZj>&UKWqE^ z56ifmC%3U<0h$vamR_v&g?LizvrJnMpE$*ATNJ(6eD+U1{Urp(A6NuQYpIcj-4|?8 zN2rt1d+A7OdIoR5Dat8&1CHb3ZvMf4zNHa7YfuF{>U$bC13N{d@pKs?b?W7e;7zv( zU1FbeFZh8T3o?&Qj#*}W#~j2r;Nd!Ph(T?NcYR(DWSD(er;#nGt52^9IbZ=oU|L>I z9OT&JOWAGgQW8!=5?G&9$Z<-qTqLf;Z+i!%I=$skNSI5sE(OYY6-c|M)DF5T#bjhL zo%qa$bZ?~to60>UDBGxEj1sc#gK(yY>`r4!Sxzxj4B@&3@{F ztIJd$WR|gwBk=Mc2B%GNav7NCEY)9nb1+$XJa~CvVQb5=v%4F?`Ke=QNc}^e;L{`6 z;C_RInc2-v2JcPVSzW}{m&>cxisp-aI;3GjZ)(O@A2I%cdjhw~tTI;el-$lCvwFdH z-hW#~>)KD`Q-{5cDtC?xUSVXa*7t;}h~wUJeU}KBp}!hC#uk%)W6sDccP7|8{~f6_ z@rEIGwp6@P}+anDldPa)T?8|wggu|L_Z zIA15APG)&BO`9IuMsKGU`Ll0e_nCa4tzL@--;yx9dwXqXJ2&FSyO_h9 zaXItfZH3w9Y^d3r&Q!UwuB6{zAA1wxeR_7yc;aYkDgE-qbH{$sr35Y0Yf~1wA2z~q zn^T>1-<7#+3y$<~X=`ihurn*S*%~j&X6}zqh((ci{DP2~U2inQZ-j1mH@uBr?i4+^ znd-tgS?+@e*;FgzQi`<|kbZcJ#%k@vgR@#VAU@MVXf{`PmFqYa$aK1XR8u+2;e7oy z%ZU1XIV*mQz2C!sI6DZW`lY*tJTzBl^XEcw)MTG}qs%`vs^$B$yCF^Q4#F&_(gEHf zc3~1J8v6D&OprPE7(*C21*;rVFZj6=bHZ{z5?(H#{l1}RISkhUJ7N3n) z|31Zub)W^emsbWOj+WZC=DHwK1QmCi_KNfvU{oP)#a7FcP3DNn4HA|eSc7f0#aAy$ zdyAPnSTwf`O>I zW4({sq#GPzpp;_*o-I(4O|X*HexJR9T`LR3l4fKi%4E3h(u4)1sj74A;9##h*Vf>I z;JfzIVJF_Hu7ET;{>8n$y?H%WAM;!Skf*b+XJ8Q#o!EV<>KjWwhT<(r0DkeFQO7fCI;2Xf!=Z zaev(*PP`QhPfDp$@~^N%zW?!yZ~CU0jWAoNKW3Ll^2K}v{>|J|m>uMI{EMIDthB4G zzTDm{^6woBnhU-jnTZ-3B?jmV)GkfJi3jI4Eb>3A1c7Msi){NHk#(#jSSda0+*%s` z^=62HALMGylAQ)Smm4>~^*i)$I?OfigFsddv&&w7Y#?Io#V9hQW#`g@zyB$Hw>C!< zO7uRMZNTQvRW0Py<=Vyvg=$O$7)u}5Pa>j_b$JpAxGzytIaI3`?x@{>z$a+<7BEk) zG!h3p&c5Nk3}D&C2HBaI=Dt6`3TdU8P21*+yqJR9=#${&kxKGveiXe;1g^ZeAi4V| zJ1|xo?982E8+P*whlOzEz_2QEz}vbqTfIxjyR9b=jdqf`DWtyWZRvAs1*uq z5d&bzBIc*e%91IU!PQv7i0;etfY!-vCa|C9ag7PLQT7G*AK8Sc;dS7J0UqhRK zwKPm?7!Kv_#}dkBeSigO@eB%L1k#!u{tSzZnY62?r>B!)gUez?;MLf^R`;7Kd?h6% zVX0K^TvORQpeD*m)Hn7;rit6CR-W5k+`7 zyt=<_#?;a8n){MBlnYFq1@`wo!K|&>81ST~Z&N}2FB$cv$lkI9SW9hzS#Ut6(PBmw z$4mmo@JKplF(K(~fQ4Fo?!&>!@VhrLAI8kUlbrBPo8`(kkwxYR-C~(cN=7DJQD_-g zuW5^YBh-&H967jzXGdj9%~b`1RCNWa(eJA!>mGG7IgP){-Sgr-F!5lQ76)_&>ZRCY z18%Bx7Mbb>={bumM`d3Ahnm_+_gsveN0}ctep^{taY*8YH}2IG`mv)%xyod9l%9TM zBx$GOS!~h4x1t0@mgUP6VLFXWv%C34(&hlf*_lk5;ka3RZfU+gJM-B+I*w%QOBAGa zqus*2D$Bw)lq0nX?Dlm1%*N9k78dpr#`Kj?gNA154hT_F`n(2jBVSV3h-cAc7G7Ww z-xQQxur79RMWF}?UTL;Ky0>;2Djyrp%MMq7Z@B#C21?vf`<%u=-F8of6~lcPS|Dkp(@!8dhllIznxrfnU_}f=i6E1tN!RPM!zl%;pA_dYse+5_FX1Y&+mOT zU;-5s#&x&eBPqRu3>b``G_?iVRGZkAciM3r5z)*u9)FMAo2!ya=XA}zMeHqyln21D`j{Ht8vlOK|GTQ?*FEcFgEVm~r%eM)MI~^HQX8ca8*=Mt&#ci3e%8 zQ$%gFZr!%|0h6N(N z?wyW`MUmLo?AgGSYHiY!O*X3GA9ObwJ+6LF1PTp|a=g65+~U|0OCL54N$H9IvHxw~ zk1>?JkNLbYdQL0*`ZA-{g3aGJc~VdFK3PLDbz)aG>$#0*hDu2@{>wO?c%5s2udGrN zgEVViCpDic2#nYOdg-MpkRk?yBO8LRy?5cJwzjsG!NF3;O?Ai<{i!+weW-?cr*|DG zal9x+hzch{Itaik*`L0)zWBU!@#7=|3VY1F{(0qoZ_LmU%)T1|VvkiwMFpllfA0(8 z%NTSf22Y@<3kt##S2qTbS{=B7q@a3J;U!$qJFQpHE%!#gA7b?7=QFyQ+z4$}qu^bW zQ!)GTW0%ENhV^4#5pnTmq^{XU-E2MF!fPN{e^s%5&7F2=Xvld^l{!@ON4ZdFD^Row zn_T6SQxix_y{gtk^~+qm;MidMpmDv$uN?JwV`D?VjhaNIiBze&b+v0b3+wPggN3tq zmSalII?(F=wtk$f&t@9G{Z@{&D@fY$!%D6a*p%1xThWrkcFCc`ZeCnmT*v6>sBXUh zWlfxBE?MlRf>e+Aev8M+Ow!Uz2KcZXf$rFH)>9UfwsX%SjBL6zP`5_CypT_HCRUTQ zwIk_7Jp3C?DomL@k;D;N@cO8rBcY7Ke~M3TE4z2N(RnDeCC6GQsm*oYL(ioRzFqqJHwPs~@=O!hvGPAi1y{h7 zR?eZGc^QJjGNag6Z>lzJAT>?vk2l4*i%V@~&3sqCC|ufyhE1wHvM&;i`9KM+FIJQTCk(`=-==5cCQPvHq-em?hu1q zdBUH=2knkmI5afG8W{t&%Nr^NODhKtl$-`K^?T~9%o>09`<@*vO|B@+`bE-wFY|YL z$lt~CD!}S*Q;y9CnZAYN>>$?5?3?yOl0T9kQBG;OLL7x^sd7jAhaQQrr`3IreN$xv zj{X=0EgXoe;XTsTkoEWXhfj%`Dgs^;EqS$O&wWf$hKP&UcxuNf^5ns%K(TUye7_&c zG<@Oh(nVN&j#|T0`JE>-{=?wZm|96i`XD_+Xc1GkTa|%{pt8QxxAIxOjBolZjHiYD z7CD2%SwT)mvqIn=*#(9RIg-~$icgiJID2#0L_6ArY!-DtFLM)6XxZ3hp51I=R~aU@ z{;yd8Od8$$Qc}@m?xbqGzZG{9_&I)+sbpFyL?U{TNLr3#wan>~Z}<(3M9fdQ{~$EF zX|hJhNsd7=zw2Y;NrX%E(l;Nl8$%k3Gf09P)XawUVEwST$Qi)?j8Z`XR_YN=P^;~x z0;i*)Q`AGE-lgD@fu|$MP5$hTT=9qo7xQLX55zfDy_TTzJ@)pH2bodK;h#k-E}B$~ zdW?kRzNO}TOfs6ujap6$q&F9-7p>Aw?_|DGc;V0*dWNnoJ10EqtNxQZD|9EJ3@sA4 zE1)TBW)++r8p5^xdi(;~+CsQQw#&tb+wH_5|Lhy$D=AH0WD1e#M2}h<#8663*lTxq z?&1Z@9HDT&h5j=SmNznHp?3m@;;WAeY_h zZOtHj6izVm>%Dh|_?q1G++ReYCFE0gTHh$Y02q~UD4Ca8gjhdcX}N=BcGT}TRc`#-xe*+07j?O5uPQaGAYjxmaPwM55Wh=YB0IrsbpJ2#aY6TlQ znyPze7c;)Out348X&?u#0r$p%hxge;c`lN%L!S(&Xu=uRwyuhlMV;us3($rqpXceV zznXP#B(9m+>6W-_D5t->zi<9(sU{NjGN|GVT@m`39cktl+()FNdOcU2i+VWHi4{_f z%u23{%67@&OnodHCo|K3PJ|G@in`HJ5S9bqoZ0s12NtJnm2Z0Y6ES97~ZR7!jW#qzmhmK zI`Wm`D-`WTBqVlfQ&k>#q4`zN3m^KQGw@6_k`YkQ)V7kn(D7~!5hJZu*$T6t8WHWi zv5nx^TJk(%@9J%$Xc_ob?Lv|hNJ1E?NiFyy(PL(nu>;A!FFEIcxU31981O!$xpJvE2*grTx`f9$B^A^wFN61e@S_yLqMh< zpvweXh5>Kc?VPH03;a2Fk&;Ptu)MrH%O|B`*4RU+t8B%Hhh-F9Zh9z@!6WAu+TAW3&6}H;MADx=fax8wHwUz66K@}vR+j?la$kOujSlm$2 z5d3=Vy-W*9!34x!k6L$Rr4>^RJ`PU9I>wCe>*VD4tKHA&Mn@}Us^ zOHd@VRMXONA5UA{nb`GQi7eg-mR{1Axu&qlOUpH|aa>xTnyWE2*Hs6Z+at##(p@*$ z^tXEruL~Lj_FWdAcingz;Ko85vaijWv-#eud;fLno+h(wN-EZSR+G0jsdqLyA@e-2 zJ^F@`qiUPCwq<0LW(g1^%Y$C*9kp3uH%qYH96yiLvhv zu>?gu)sOZK<<@BKzimmPZZLIL=qnqT2dP!~&zn061*WTz{zwvR(X9?zKj~KH;Wb+i zkldgD#-!%hP?np4!;Mm8qCeIbA_B1y6r^8Bnr(!4E2J>hRaQJ>py)FbCtVvlI-?Wt z6+T~DvfL9RX5%cbCi&F5es*@o6#@_hOCNwb$l_b>j{FLAPO^JFc}^8hPzE+&Ba>BF zXZe$;ueI{YRDbQ6c5jCL0Ofswn#BiC8d_5gjlmS31pEr48fI(3LR+1c`nvtX;8k6- z{ZJI2zBVRL=I-7!UJh9vBg{o0=Oik3a-}F&>;XxO2`+bF(xR~o%&R=NVQ+hkCp3}2 zuNK@zvc%Hj7#x7w9E}})g0xSXuD>j8tr%K(e0Zu6MTFi5R8T=jI03D_9E4)!EY)dX zpeae*;bo7DAe zG+E$mUUk*qj!W2HfRc5ZeK~)`atR6{ptZ8Hz`lhuwZ|fQj#smfWb!^&R+sgDjS@-L zNCHzF%`z{awy#!7dZm~nlEfNjG9EL^&ZWEmEjfKeGd6#qhEn|?1xe`5lKUy@=7yg; zw)$HQm(ldg8jwBfuAVszg?gT=!Kk~N{2W_D{o=wD)_FLavKvGfl`?u_QB_urCXv70 zEp6>(;V=pm(CMQouw&k)^s2o6Xu}k+!8~_!e$@f@QE{3lS?G#2u_Aado6>@j^xX(F z{UwV4Q#5U=JyPAweS(8ynrt-=<3ncQ7xueh;JXlCtKFV9jvJ;Z{EWTLir0#PG*cye zSDNuLgKHuwjYMCO>7OBU%Bhz8IA940;-!J0l#TPk;m*BwGP$1MjNvTZng6Rc{1nhq z9VgTl2(%V*497wnj%O7vXyUry z&AJn`aS{P%d;mV*cIoKzU!p`GzN@~{Pph=tsIW@Q9UmVr=XyQbr~SQpVusw%vnSwm zXJ*o4oTR3=r+S@jguLGO=HYA2k&Pqn7dU_*)Y`>cZ_-#WMIC%te6g3CkX0rj`o#AL z?P=KkUhOhVj&`ghHn66*{V(cd-1R0OLrQ3+58?eN*l&Dw!4=+?|I?B<#f8p3BAKUK zY5xeutm?DKgJ5NO4Z%EWRhIxVIW;vkEKT2X6Rb3rB+N?{{d#{At&$R*g0}7m_v|z> zkEAWB8ExI2=}8jzsJ?fI>|k}<@V=b0#(q<_^Yg+h#c;Lc!`2~X#*U%w_tgbi)Jwi=5!4wQxUP^t&m zoKAW{Tzc9{_fNjOGhGu+`PeVa;E}kNw%2$sxYas77Ld6EmJ9XI@}0sM_+uKE%s8?5 z)U~4fi!l}JkM^lWgP&J5A=Xxr;8F)QjhMOa%o8=-M~BKpvJty$gH^7su6%z^n`F?c zMgD0leP0|F`)lK2qRZl+YUpkfNg_3}BpQtxRx8yFDV85c`Kj>M?0j@7f{9L@OiWW! z6`_CkPtM&vnaqCFd7q7gA9~!cK+$P5Do2OLqA8Um&YWQFx9W@@mA&f2_*3Mr6fjqH z_-9Fg8>cG9Jv)8qt*(U`K6JtJ019%;5&~{8i)2wzQH}7zKq7?;b_VX-EX_zHM?!T} zOT~`zO3Qst^Gca7vU-pUF6n87v~r09N?N)?z0I{r+w_aYnOT(*PXnG@_!f?2*3eYpnmG{M~q|hR->T)oPML_0_w1!aW6n=!1g;E@^<# zwdlns^+YuF^fSG3A%zjmib|Fd5hw4;drerh5tfp_yN8vduKqN{s?*x0uC4WC%2?lt z%S~K00EXz%w6=rEGfD>dc(LvR?uEf%;ELSE)$^b1@}mAM6p*~`;gc&YEc_xAfPlPo z;i_z+BTeeG?8>gOJ0~RQW6~+Xx!YIoLz~JFTI6`{Eoc_RyMp&Dhn^&L+FO(0bVfNzn zIl{Ywj%~k)j0NRq7QuqPpFX@{3D9zYRJ;247@P%OjLEGUrMUuvg8uH@>io2q-~wE9 z@2Z~u+1|%{9Ve0PsA20B^QPx~SpmWhGlsFN8I%OVk@A`&&Y~_{D^)2j^f1vxn{ULl zE7@)@!5M=ufAj+3EMj^l$r-t12ug8gf(V z#~NpJ4`~Qj>!mx^3^wO&Z`Ns{L^J5{lVo0fvCI^}NdY+Gmm2GYKjVfU! zJ>Ix8pTx;%RzpP_U|a^hZV_8SHyPauRSX7IiwMs-GW)tfskf^F#&HHvWm)k@V%zBx=a>?!ZxZBU^1&lP0*L`*g|~dUbxr5G=I3)|CyO7oiuH_7+VEWI}J} zSs{h1cs15&UVq2ynZ`~ph&SG{VE1kLgZ!N!sqW};`O@CO4pu!(;Z7Wb8wBd+EIId; z#&`+Yw_R6slpG1#1q3pXG1Tmyc&7u)BNf+v`zKv8g8A^|Z2-p=kdaStiw*guH~lO5 zX8CfVEWbWOkZNn0JB?c3;fmEurO4G91mj4Q$fDxWu`t*iYe~^p!|7*XMf|)M@hctM zKM9gbwTEnVy(@;*)IItAO5W{~NV!esGZ0PqY>%~zdt6unoZ^DL$A2KnywD8P(!i>5!{lj#8gXY+&(S#on8n?9} zucXsDhl>;xyDIs8RQ?=>oHFJxCsSAwQ*ch$cltLC89<+rk~HbVASL+&cZVmA_s&=6 zJ}|91)sy|2_#sNOduqaY4&U)|)DQ~{^VT0m{u=BHN9wrkMcDU57p+^pQtOZFISWQ@ zYKe%6@$aaIC3ow2~|@B7rSC%mbD?Wp^4)7FhGN&o$un41DE zUjO{mt=}x1cJ({LUoblTEfub;j8A!ZFlsQOv7`ekutoihL;fGz{r=B7k!;B8G**Gl z1)!rQu%;KI+ew`Yig`tERSgeNpY?Yc_O>!ODU5A`AC4#}RP-NLM6EQhXM_Ez0Of!3 z+Rh*#kS-NNDI3xH1t|V^ep_8kvfobsoHcjy_pik+!|vhncABOz)D0RZp3=bZ=|=@4 zolSqfvStpo60DC@CYjrRZNcPxgCthFey2xrv0JF;m&m4CWapNzSYprBS(lDYVBq_H zsZ-m#LTXG7>gM8g_h#QJvx24_LpS<>{wpGL9jQ6-CeWeynu?bCrZ2lnuXmZSz75+*{1+1&Ea2)ouYAB1q5KQ=H%dkFL@6VIdk)k{#xjc(qZK*$f z7b5rL!rkOjA}`Wc0^R3AND;}mS64GNwk+Y~JiNT{NL)i$KTaD++FXZjnRj;id0KUm z?Y^lO&G({A{@x5;mi@0zKvDhQNbKI8D)3_$nEY%ea9QN==x+&pii}B;c=3D)(s5e> z%X;J##bl*pTWKNPp7^E8j@8Rg&Jm$0R?kSME496_5N&#Tbj0r=-i4RjVwoc_F{#gi z;@MpE{zK#xSx*8~Kl6Ke-yT*S0`uoa(3(}D4`Hi76L(-~JTd;nsg>kq-A_B3^MPYt zDSdp96}h1>&1&mnx2pnnMObh1Dxi13U%m5g7x*Bk<>nd#uZV!dG~i20<7>vKuPqf< zo(K!eBg>9@nP1a%%FPemx#s!4&I!3;o4U`Pl6TbMHkCOU)#W;Gf(4Kj)PB?`4`Ujt zLi+7`pt^TB`>`$K?9tRz0KGNM8$0GrkVW4&Y}#$fx%Ls6Iud=#2gWzLwaD*r-E#X9 zeke{86B8QmLTne<$yA-g*cqJ=?AgWrAkX>ZeANT3g1NUfh9Z)ZqyPtE38w}tEqhOu z*~Eycl2fAm{gcz7IlFsrw9_bC`sy_~zCxM2$X<1MBUmf?1BqSe(p^>p5v{35p&%A4 zkkgi*a|A)=J}^}AG;P^hel?3ytE#1AfHc=)K(w zebfnEo%}736q+g?M4M6++yh+|ssfwcR^e|eRSdWw11JZCBJ5)Pu!)1|DLu~AK_hjv z0)V=oV&(v9P7XAPNc<-#4*7IsBZ3^G&o%-i+Zfrc1s~Q=j-*^>gdW_S&aa_{B`0;xueU_tnD$F6iv=Nr1=Z zI02x@Y4rQ)l)0moS?&SY8h+rm;x)B8;DuJT%hPJv!D&&TBmjRUm57Uv@4Vfp;k3(U zGseND=L1^lxlv7yCWyD2NltVVUkRTdnVEaz=ULC#n>a)*-0hrIG>jb!T$J<@SVfDD z03#my6cHR8MDhMLzkwG~ai7dncVzhM80kF!m|lWVYRPB%CnrfF5m3J?!_=Nv82%F` z`jUy0qE7VQ=ph%c=4LayANzzUt}b@`S;5KKNj#GjDZu`h&dz?GnlYN59B?)d)X&kZ z+i}XxIgS@CHjuNRDjTMUzPi+2F$}~Lfe}Tv#X4rcZT&z= zA~5#LtEo_C!Fox1H}}_HqbE2(H@@GusP@VqL-;-jnC$Pjktbnzkw=#@dTf>P9MkMz zJB?~tU2O;Wb)%fN?xZeRJoyE!4<+OJhrtN5@3ugRciS)Uv9R7{13O2q;P;8a-S5wv z+7b~@8qMi13fd4{3+la1I$rd#uqee*ULr4CI=2uokocG1SoZA7W-iIWWg?mH=1Aq; zD>oK6InaIre*;#8&ib<-#f%@1yuE zv5y}RJ17^Q2?7u(+-(*Qhg2EN(eT*c;?AjRe5YB#7;WqKOQ9(W>uE&)f!P%%kDRF| zv8U3utt5I`w`uT*JChsZkOgHZX~@iw&|ts{sP*jt~?B20KAEdLNbNQCz#zqsJb z-6WSk-0ujzcC7Jfe$Z$I8``x|E_Tlr1@HOI712t)HORAk$P|G)A077o5#pIc#*CS% zW9@rk1MBj(b}Z$e0mrXdViYv?9#{Aepq?AGHrBSi4$drPb&NKu0A|b7+hAz#pBO{> zKPyQ|4)BI8hccAc6cCR6zbm!|HND3WfX+NPSn4cQM3!w(YUz*2)LRz;JqK@rTv^dD zGKy-t&cyimK>WPt&J9n7O-IlyKN5ka&jE8|&=$-0YNQQAHe~$c6oF7%D*?$@T>%=- z>RlW>khF_D{k1vDMK?OM2|tUEmsjFDA;AY>2Nz40XOR2D#a11N@6|Fr^}_^~0W3-Z z&lpl0SU&e{d8KK3x88w((ZPrr=c{CiO={YdO(3?%$Y1+nRE(13UOI`tcV3K2zE3v+ zt#Gv%Kc#pWnh9w;@4>r})*n!!;RKb0HGi%ns9wq7izn z_({l6@2k#z-tznFY2vEKCtLV9F~*}nn0PXxu#pBC<}AcD4> z;GUV=_R7UAd21Ybb;lTy;Mk_{20<5SG4%7i%#5-Ksfh_Tl7X(W8pj)4!-i8 zKJR2eP=#F7f`|NL&4RB^$Yt@f1CCU#DWpg&?@`s)1va1C=oV|}req#|6=!P0C*BJP z;P__pt>rAxtuQ!)&1xt@jRXUYB)>j6bOVsK+-y8>=~r0nE|G%2d(4wn{9J>Pd*<;{ z|G!F8x{b)>!b27RZ9?IF><6%?4ak7Ibeb13`=N)9op}fsE`&28i-4V&9{Im!0i1@S z?@8SNtr$QNm6Ef7!;Pn&*KgYLf7kK%;wvruV8tFgCVnSGa+)0ncxrMuuH^z*s^8X= zE4%Z`{Ngn}OZaf`_3;ug!x?Wbbopo?d$98|>4e0F%*Dp&|vcu@V%4>t;~-&Mu$-b_VCyFPTzE6ZN}k-q|zrLYc^i z(3bmIm#D&}s8Zc&-;GQMgbNZTDytkppg?2`~xu#&$;O{!en`L?Cz>iXHY!4IFM<#{>{f*`lUqn5_W@#ZXm)Vi)m?98k`sv z&t4!{^2LYn?1v|<*}{mkNb*x<#^KjMsmc=Qho1*X&g6PT(zy@3tvO(l@FCy3+EiNF z$yg*dzy2Fmhp6oR%o@J4@NjFRb|%A$7y38xX>D9rp&h)*EF>lrI4k*v=>@-AS6 z^Ux{qM8Eaoh*e4J=gsI9eXgwEpCJs>JlRq{d0c#)c}#QSYoTO|b}yFMR-SnR-aBFB zvS;P}i%oumnf*bLxV_n?(LF2w5!CKho*KynqGn_)m)qwOz;sUpK>tg3XTv@JBuoa4 zdTGSbcRmypHUHH_INtU7kuH5DvK3R0l&`QMAe~pJ}=7JP<=G_p+pL8;Y-eA)@T>-U|$|0JMDXTY<)7b z+5;vgPW1Z0oBOL^dlncC<@;BP69nOH0tXjO$;w&N5V@cGEzjVNHTuuey z-B|T5vw9WFfy#90M)y0zgp*0-Nyg6mu^#^FU;&y=UyC}UdHlmf1ph)%MqH{_1dZ=T zgxIjZJ~by${o0*x=yVwfVh!*(R1+VeyXA^ADIc0--{Wa-xxFw#7`{aBY75_59|Chj^B7bp|#lg0wyPa$siwn+N8XA{#D|f z13MHL@Hss-bF3GUSGM=~!wH#ozFwwsp#U}_*q@LjvRQ3qWqG_%16sc!gmBMLysGef z^SFO$xb?`kGhZr*aveIb`#8Dff((!*6{U10p01MT{lVwFaCDXb*g>NKH!j2}QQtcw zG`cA?wnds%Phk3kcU}g@^Nm#S0qWOapw!{qe$eGS0HaKoV|Yukg)ZStZAUAy+unzL z3TF${t<-ySe$TOvGWCIIy!!um`VMfa->`q7kUc`S2$hU7j=iE`CrNfFdvA^t4$2lH zdz77%l|7=IYzoJgWN+s!~T97l|Hw)A$%Ot{9^#Ad@@N@|^8NFB9Z;-Ql zV&p&RNBm>vi2!;n9<(3ePXhxGsDRkFP+uR2Z*(xmf{h(oxFp ze85?b35s5~u57d|VV*qDK1*ytH%tS}(`{qj0yABf;IZ`QPv@8W0`Is;9WNJzOB86C zE;$Lq=;|eF2AjkV^aL$*#|T7195PoikV&1=WT^<*rtx>jNn@(md;wL%kr8=mX|^hG zrtT;A1Ec+Ms}rYVv!nC(;SMu0w0QLkBzQ9AT2(ne+1p3*M$@aD8Z=#?+0L-^6)7z3YAX7HJ*|$U z01oOR1~b;Kcn66@<|H(9ROQB%o%t}j0kGM_&yUq@p&jaaq8at}=G~93x!06rrvcjS zX9`Wda+8aTE3TMUKO^a#o4Jh7Af&;4)YZ&ibJq+JTSIZ!&U-9FYxr>}q3CRak;})o zK<*=-`Y!wq=T}u*q-ro->;7^4UeA(j*AHhlXW{)8NNd1Jz~9~AysgMJv|(doBPB72 z@y^4WH~MZqZES62xkfT3>i-TUMzfe*vUGtAa7|cvl!BznqaIqyD60fv)~3JQ_dV2M ze~yS}z+G{B^4Yo9fS>1A`Ox-g+QTR+Q`&_6rC#oP))HIWS<0%1Hk4UaK^CcUo%A+U z)MyT!BA!G^mT7E4j!ZXY8}o!K{L7rdJzp8?C#LDwmUM-A@PDXz;q;-)5gvQ75fw>) zhH4c|h80f!2@aeEu+BGzENw_5(~;sqCxj+V0Fjy;`paZl(9*Mm%NDYy7J$Pzt~iD6 zeWL)#l=9i}Qax-KZoO9%(Xx5vPQ6W@Itg?ESnR`~T+cPG#!%!EG z+>N9szT}+ztz5nT0C+U*v96(jjJu;#`m2Sns*c880paYS!<%3H6jT9PSuIo&J{y&&!)j^fBI^`mupMm7g zmtP^F_CvMMj$pq5j2`X1trw_mb*)+X+7(~EnmHdu6~v})rG!<_aI5D8e-5U4T^E)IX1GYisie47?h;A8Q2%<-8E0D`+x2#q#>QO%(qp>k(nz z&Czc3K=EcKkwZE;+s0g6u-na3-3Ev*o0Ai|Lk**j8TtO->e$~q zWX>o!*UT1-uS?QgH9mT!9qO1EogdR3aeN*g;W)m1XXXUBEsqo3E1W2kuULb70Cy0+ z3_7lS`yF$kC$ou8&oWSM%-|H?d)A*zCLAoBbE$J@Yb6TT#dCleNo^F_4H&U zk{ZF)n4SO%CN1a%u?l!Gnm20PDeVMT$#-ooVgnqD^TJ&^wSy=NrWYhePkh?pU=glW z!7-NS|18L^G_jUfa5Z0+!sum032|huuln)yeVy-@r$qVsSIl4hZTqZn-3@Km{lY7F zW@7oU38i^@icI9Sibt~{OuXn~kDJz)6F;GTq;3WT!8q0DhNy33UY6i7{}>*1k8?dj zp9h{|21IW>W!@ECxxEchj+f7smT~{huk`^vQj8J~wsqlnya6uI2iW;uH$CbSqo#UX z`|z#(jS562K70UeRMue(bxS_FD~b7s2<{6(eOVbw+T#6- z%BH9k-&1O5jwWZ`y6BMnO}^Ax}35yFX| zL4j6|%dXJM4@w(oQuXuCRix3a-umM`pIRAgjTrX92~-hgib(|Bo2pH$poitv>!+vY z`Ksu`%si9B6J~EezptKe1Y+`>aXbznMHXFKTMMM{Lko?DUVMbA&GQ-g`T1U%WM!A5 zwn{QOob^k{cR0onHWzf{0L(A&bRE?Kz{$r6}#We{!|<<&DI|x$}l={VQ|v zFZd?)HTbCo!Zxd63M?nK>1{J2-7x59VRb@;KGsiv;_gfc$Bfcd4&Ch*PZj{S6n=UB z*(WhLj3#k$y}n{&#r# z@iTh8_Mi)i`2NY$(T$Z=!q%!uC^l^`Ee~qHhgZwnG5=%%@=UxTiK+6W@w)w!n4^M= z92=)nga3IN6Q-pMg!qnq*{2;?=ML7;BY&9e>HIEXzCI_^iH*bJBCGMvv)i?Kx zZo-pzMWuX`PY&}!2-EtwqI!vffniq-xJ)-Z4|Y9dxulESC3qn(ip_x-nt_bTTNJIF zbWYHMCYV`U$I;PKe)wKX2fk&|{cNzqQQODEy4(xtG_kaweFdlz5YzkT^ql`v(mkNN zLnqcf+W^0Wz3}Z@-BFk?n%kvzJ9=cZ>qKXljK=m!Nx?;G{#J)QV%{FqYkW3;a+wwP z$;3w8LWyaEhFOOEvMm*JkB7hfxKa@2XA|t+!g{|s>~?zp9;k{VlH5Sb=3kJ5j>Swt zSG`RFoT^){^dGHu9jG}mc3f)F+q^7VE^|OBnz=v$zw~>So}2<3R(V1frEF(7-XzwS zJ1jGv0#Y+Uyw>bR*dP2Fd0kPUuCoHlm)lUVmGoeSLDa{6%tl>a@#ke`zZhthab3{K zv%l_ECsTXf@MDFrlf+^|PN%YjtM8$~x(0o`D`Nbh3f0``=Io4bV7z&+<0Px22}r7Y zC_1YPo@>E^^?g>@92Lr4TIInGg(P0}?rPmNt9P3;;xU)lJcqlF zcfg(1z;}MJ<3t;SyhWMt?fS-WOEV^ z&RB;__HmntXa;q_4XRuY5!P{VEa~Tb|C4*A+iBzmIv^-mXtn;q4!!5n2+(iw485U} zXHWwV)mB1Q#_nqyD@r$oka32nxI2daP2Q2V;e>)JDF2*B;kt*~myt?KIMwaJJdYYh z5ag$%>}{%?AF>@T9+YCWa?4j+ufg2^&c13Ve-R|izR!H#6{nMwcC%;@DNp(Fp z*elTM5IuCD2LQ8_SA?tY9A@^vSLEU+auDzP?TKNM)#+chTRCJFv2nY>pXRB)|Mk1E zaQ*F3^iA|l!C~Dl_+=}08tr>&(84mX3p}j8GLt&cfH>c8VFshsT_F^97Hd=~(+cOH zGZlTC7>(_{dCi6GnTGofDzh*z6(DRsI(#v9A}{^j8!+Gdz?`mVz=7*DJ`517z|omM z2j6=tJc6VlA~YAp_XkEoAQ<vq zR@H7k zF0Yfh=$vLqme!_X2{vbar#%Z3QB>08mw_TkF;S+b!RmG8v<*iIPBXICHCrVFw8Mpj zRkq7zwaiu@(jqHo#A$->O@tasJ$Z9BCEMPVsRUy=OHnzpiWehJFAGaw@D1}dFj+i* zA3ZcYOsutNcJ=`|d;oztGdsG^uov;aY{VPND~@cw#+=zK@HwBa*$%TX`yM%;Q`*QE z*m5$fBz_|#?nIwVDRQ+1v2;0$^Xf-2j1Ik8W{>=GS)4R(SFAl)iR%qai(j!Zz(7Rj zO*BM4@bKTpYR-QPxOfRF@7GAy)`nh^S^cRCn^`gc;M;!sjXsnCIGWrGn!So{jhpfr5IAq?&Qv^Y;oFc3m7fP>WsObQx@R<4F(bc3J{hdI?iw+;#(+-5!vN$Nb#??t_eNEm*gkjta=v~wWsw1j~Bu!U;Rd3(b%~^$=F7Zb55`o(7h6Oqz*drpo zB8~Zy@YZkY8mumiQ&x;xd0H=OUb_LDm2*!XRD)T1-m@)$&6-GV?%uPO8 z8Q}RqM-%HkD;Ami#k?K7Eu^jp68rnKU$*aI6{2Jkc`<;#Zm@flqD&tt4WgE5#S$5! zC5}>hv2^qf_?BOezIEVM7Z*gIe&*$qq19&DZS5g=tG#Cvo6>)m(AAw9?tmGBVvtDBG|(UKASkUEzJ&F$!&Dv?sXP9 zmFw<)>>F}ESS&O zOg-rHJJwXkIlEI;20OuftADGu7uCxau)k({QH|s+Q&OaeX%Go(_ynchwXP5Ti%%*t zjf_R#9d=YvOK9b;NKI|Y8?TNfuC}KLdTtkZRB9TsSb`$XU6n57y9^tXmS**$$(-L< zxWyB$ByfudehXXrs6rP(*7y(Nw6Sj-f*HNPSd^$7g!PA=^jig?d2%@OrRu5eAGMfm zssCY_dgjNHFU`6iUra25>Zuvw(WJwDGh8kSTSF3&~c z+ZAk_IugCx-^=^Y^4`MN&1~leU38PlV(1!fBkQlKMpo6PpAD$T<$gw-0f?ZDo*xb) zpkRaB9}IlR0y-982C$HZ8KsL<#&nZL%F>U0Jah^Srx=8#0+Deqr=G~U^@WomwN)tT zNVLB4HA?&`Rp7g-@yF{K&gqeNhEN22SmnGGBMI*R?A%Zg=E?fMhQPeg2Nd(Jk~wI zp6u#gSiC@zVlI)x=*ESGD;(j+PBN#n?~Z*gtsE`z?uLu4d;@**e1Vw|hC&d1sHln3 ztPRZgA1*%?&!Hxv+vAY$Xk8=zo+i{nIqH`(?9HDD34Z(wq@Ne#WAn3ld-t=KRxO;J z*fkboW&>erxTK3M5Ph zl~S3Ad9ofmikxF#?|>!~`m1>vN@g)C%WaVBA4{iG{*Ix{OdfbXD=Za}@>nd`Iv!oJ zhQL7%cVXrF?tB~d0`$n@7(}01O7|V*ABdPSW6KQv=i={`)NHDEkPj&dujO>g{SumA z_l-qYbr>ULEu@dDyg<1eYG&ZVucM?wC-fF1A#sAzHuKk|)Icamg%K?Csp&{wx8rtN zcDwu+pt5h9Fq6vMAv^IY&75y@gNy#nt`t~AvdwHy1jW{hrfU;qAle)v0EqbZUMVwN zJ3Q`Y$L}KAjH_pY(m4j7&I!lIlMm2aM(SyW57X>gJCKH!9{J*09aQw7edGy<`MX;D zcXJ2r%ZF^;+}*o(Lyua%4SY_!dUalN|{0m%t7VD1!`78MwzejV2bvf&eU``eIPk; zg8-6ZZ^!Snyt0qiBbLR3fHgmy9PPSczAzpr3IxbCXa4*1HtkGFqiB(st;ZScHtPC9 zq*Jj=sTvVtV!6h`6dF`FLUHRQuZBOkR^|x(Nca@WOq{BpW6CmrnsndL(VTTb)zXcG zCBx6(DnfLNc3ysz4U422^A(-iz7q=SjFuxWO~poxSSwCnzEPt0@p?|aq5r;8n9=!MYQio1#Gd;ZN!~R~93vP>nVvuSy1J1pnknzQ zdms5Bzuo7BvYZ{HcN~MxnRch3_1R*-ct`76@a)1uv)CAjhs%lf5{~s4Xi&yAL znNnV^RKeS&0ZAFfKG3@;yDFhZs|@h#)V3dac$2e7KoX!qtv2afI;D489j-Ns;IG!e z&Uw%Gc|l=>B3|KoQIxHejr#oH?3UVUl$b7$b3&~RQU1(}hvq0d&JGdXR$%$`ZqKrR z`_#r~F@%#(=Ub7w{?7%p>3UPww0RA_wD==LnI3(j=+ZFrWy&RY$eF{J9{HyW-c1yk zX~;Y|#S%XRyas>*Xq$1r8yw`VF~9Y@#etRn#mN|`*GAPYO&HwU4O6lS_n`&MPHkS8qqS%6;H9u1 z#}kOq`*k-6V~tA*GF3>&*W*W_+!_vJb3IkD6J6v57cBHz!SV&c@*PZabl+gDVCNVW5|U}-RW~>o&%@tecABqXGmBQ2g4Gv`5D97{rCxhK zN9E%=0KBM)%|lcBM2A<(`=UC}K0l45S3W%l4O4$pFu$#PX@?7tb$9f-md6w9*!DPV zym8VOv`gdll`-8ZtTg1_Ol-eMWifAEiZ@Co4xSbvk9E&1v?8^Lhqf@U0eqY5-c(Up z5UY@#xZYH3U{E*c#~=xELZKZnziUnH?R5O`FV94Cq1R5wdZVY~Q*}lA!^sN1?GcX+ zSF%&1r9s2=E6Z_$YtT{tOKAny6UuE0R=0n@u7lBWlSbH5nB_kU>))|2ap%9SCO1)t zL`#|q%SN==w6U`+&y2L8kB#4-!@NJ%9DpxHLNIw{TEq~A;^lAAs=svgEB_&aa`6P3 z)Os*la?15c-E)1iS|O}TBzR0;{6NgkH~mc+?nXp8#g9eJ=C!{e0XD2UnAkto^1yDB zbQ>Q1x4V1mC3$o^P>4CN#)o3k*ey@UM{d@g4{=D)S)gM4QQ2*IrAui_8;NYu9ohVr zA7jNH8`FJ}k9b>-aE)P`ZnY2xDHA3x@InOYKZ|jC&_CV2z|hZOkGk#le5Br`1J1ww z1ya9=tmj!3KEjIgKU1xSDz`nbXOcOIp8bcT)jPMPlkJYf4wpTA9pu zLCk8n<*F8M&a{Hf1KNh)&Kedf(Oz@gU=(gJimuc_c*K^UMLp|q%Y&zK>;Co5F950m zC?hNACa|5a&3$*Zz+QuDNMb&JHB>i=dum}1aARYH8f-L^s1rmtnjD5WN z+Ia#vU5x@OQVn9J#i{->Jw5$=T&B;JXJe*xLUbrmuLEyA5e+qX)^N5MiC`aNtHol zi$Fzh9pS+q=C!e2rzP3A`{U&RjTy)_J$(1Y5JYK zOkfYOQ?K$O8P1wF|LpAStSwb2UIGoOrHm)m2D4-rS5}0MoJ%nGA@-i3eWb0A9_)io z449B;>RoM(n8L`fSq@{q2(@1JD4{mFO~s!{3B*Q3z}sw@t4cxd7?4rhbWyp7fRID- z4*w~aQ0lh&12%IcPYMBNvzBzERFilkn2w)t=kGTIC zvCg_~e}se(q7TAjj5alAbVp&h>k@W;!V(zUhRQ8Ql`NkOK1lv;B&)fv=+Eg>9>>?o zY^)y_mS)^LK3^Y$U=^njY}@}JhmtqIibjNWrNHG?d;s}WX^0Y|V#*wgPP&Fav!lB4 zT7K9UjQRu$+(?!bDrRzuy2UR#h8EO_GH9ZAUWtS7eM%LIi^e=g*yrV!I8FWi{nJQO zL6)c}u?aZ&K-J3QEGgwktj#k;oLSWC&nPuUP<#asOXe{M+`QD4$Jw~d686Vy>764} zIh`Yj3S05uC((vcRN-V%ALBVOy7Qg8e}n7lzkJ@TKRp?Sg<{WRN#AZQZBWXTD;Ae> zjh7`-@q_X6FX&2}wl_6VxzD#cx+b7L-nc}i>vZ$u&#LiS+(>$%xUBM_wl&QvJvfnO zDHgy!w`nq$e@{=Nti!-HLIHx2CM9MZ6U$h&D%WG{QF}hmMuksJ`g;zFJQek{nCc7bR^HsV`M zp$Ld$CN}G9?o(X4B1H630a7A#8LUstJ?wqkRi)wsEsfw@lSmj2ne<96X`HAIwF_pYEm@6U4VMRV7$ust=b7TYolAbQawx$j6!vIVZ2Bl zmVhdypw z&l>hs(f>`oCT6*tLH1h6(tmt+3cFcRlOnL|8OVP>=Tmu1ZtbJj$tdTdN2V2u>U7p? z%_7b|0XtU&RnakSxYfA;S0`aj%JGQH{1;b=ER8nMp9U!+5{#*R+6~8a2|=s}rq^zd zM6d2C9xA#$K>G5MB{lchTP&czj2W>Z5V0s1?&?!Xqf3DBDQ)p zJUT~~rO%?eHBYW5t}p50%Tmpp6uz%r%is7L?0eX#Xv~=y?Gd^V@6D4=%N4`p&;BSC zs=`k})BXQlv5wuzJ`NCGlti{ptj+b+~PB_%^$rk3dNUMz<@5ShF$ zDYn_*lmUMUXbLJ>S=pk@B5Ee~7I4rbbo@U8cR$Qg#Z8U%@wAD^huKq{^rwq=yU5() z!bA(VwK7{`?b7|<^@r}-wg_y<7f9*`66ngKC<0?oF_$_)V&?b4OaV#vFXTK^J1Q`7 z^Ps7uvEPPrc<#s10Cu_bSN`ejrKJ*O83mIYL0i>1TXRP{w_X# zJibogLO!gA>+we`{26|?TR1P|@%p}ml+n##%-_B5o_eWj>Bj6&&BPdD%RF>(*7a<>1Glh&U4>}J?^*@Y0J6FHJ%RaJ=rr1YUuH1>H` z$ZdOc_?Ds|bl}rqkA9%b{7!5)viRHgYKsCWtz4#4O?ErX-adWS(oZOxNsA@t`v#q0 zc0O)BJCwo#@-^u;4rBdPrWI21?^pE~wfqa6NxP3n9yQMGeR;vTRd!=X+sTc@E;4+_LDLRmBoL08M7 z+rd7EiRZ_OyBd^>dFLm2-719ND!OOtpiGyA%yf-UQ~nRofLoA=CP-`PcejKP7#qffdqc6aIsiB)>w&`vY925mPb-XtSAzy?*EceF&87rw)VqaCy3eha;U8h&qjxop2y_njXO@|UMxzY` zI3Zj-cmOh-9>LC!Mt5z}FLfRx($u5(hx`-do=!NtiGN><=2jy$0#LaT3v$1dW9;$` z$V(UdMBuinFzSAWeK){yOAK5LT2L81&RRHKadZg_8w50?7k)?qo z2w(vB;lVq*J)2Ak8&ctH8Pd1j{nFb<_>$dP5MklC?-|;mF0@&!p{_i#^XKJyzqPS( zO&(rjWZX?@UqaI34bAm>TXd7a81*QrGj-cfLH6;7$~sJ}F+jcbZ{ z15*dX>m!uk#Ar!yD&mlpXQoA4=$T}aP6OcJzv3;o|ME_kcs!K8G!!U`k>C{67$f^+vDvEl7 zktb*3;_(mE?arEnjx_wz9dll@FZs3k4R*E)TM2zv)OSR}-pm_%%s)Fn|1|WJh;RxT+a&yd4fGqOb@y=GFBlF!3&CJ z8J$xpc?_ZLjCr?B$4cJa*4W@3{Z3LcCplU&Pf?Po9^pLX?=)5BlK<3%`$3D8b!PF` zTSOn37!Li`S5X?g6|<5ywTigYvDMvb_wz8UKo56aHQ@QJ$(+u~?BD6vEHnV+wkxW~Y%o4~1_cmo^9gR!kTn!k7c#x~;gmzOT|nW&zP4%g224?(+RErM}xyH!6Ap_6Ki zI@u9{rpA37_N(uvPzLs)rgd*B?+jPkR^52;dKE3y;@!DJ{xc!cM^W(MyWsdW4fK}a zLpW6`?}KRJ!vg4Zv%YX-O_=4;&YRXBgnDA&}!%2aCM6tHHxi6#nU`F65v9p(f3 zoSF3`>H<@3S#tAg{aY*+OR8<0Kv?+S4dnJ~vDod2l&~pGN#7EjFR3i?4paX6^KsRB z_eyWi56t9MLuHxFo3`J-h$v|O#s$%RzWbo`@q~ke?)zF)B&M4kC=(d$Ap5TSj;Yjn zCk7;Ns>wN6uG%Ig`4bv3nWLDhw~Fbh-Z!&Sp5|oT zi9c-OEZ!@CBy8)w&X&`gu}@536pHildiD%r(3jWhp z0g&-{eoiU0I7wU9Z9(bDwaU{F^hm;foqgTx1478(@d-EDmz-nW7C5;579748iE&C9 zMp1)?vBuVJ%Q>lBff+YOj-NCi52e@Z$et@FUvsN zd*_sKDF>48K9!Igr3yZrbde!?hXeI`+(qf+9MP+3-oy0BuBe(hHe%Y3_*><4Ph;I# z6o-=pcO>2>`&nW(vWn_;-Z1wRJ>&xK(8XUww9lVdm=UDcK?Z?V){Ww=;|Ky769K*N zB{%*am!gdt!l^R3ZfzdQfA<883m&a=w4daAA~#wwcwXDGyD6-vVIh>Woq#2#x6B;b zkdnktgLrWG(bf1S6?MO%!Xe+It<1G^-ye`LFF)bVeaUwTDPn#%z*iwnBfBK!iRtAn z^tkqs&2kvrOZPXY_|z9y(GLBV>kbFFJ6MK-iX~<4hIO?6zC7q?#76v7tv@Hr3DJbs z39HWs^FOdI^`0p2fVBu=v|pF6aXrrFUT7lzMt-tudtcAYkOQTU$Z-!ib z+-RzWmwzylZx=RN>@9 zA6jx1V1rpm)1C)%J+`<+hMZ^ymZ$B=?&QXG$s!x5u!35ybOyv7P-=Qh# z(R*?wz)E$Ud=3-~fv|4ry>^-w3kJANfK8?z}Tg#CeHgY-H7q?BnO#p=M2$h8Ev!QRGxQo_c178R9or>wvX| zTIqf%$eyF}n9p#OHvr&GE8p!6e?G`-CtKlQCMh@3`Es$@;%OE2s{%0&9#C_R_ISyA zYrl6Z#akFNZ#w%-IyA*fPXCxJ^K!l9J+lgH0Ew8v-%{VAmTVmxW_*8HvqqK2*MQ2W zyI0age-Tf*V5_7Q`YuzR&DD07w;+zumBUOT`TvC3a1e!K#c}b-TC}wn`w3(}pZJ+T zp7B*1cika;FcoAJo>ru7(q%*3GG{;W>6ETXC_-ATspP})G`M$tRO208rjen1?uA)y+7)!b*<*XEb&KeA62@N zB8axJ@>Eb_>tyFTdfsTI!+52$q*bOxs8~3`7DyG1V?F??oZF6sbRb@aq8t8yUR)gS zF`VBayFhC6EPI^sf#Ab~vC3T>j;M@?kTFlol*=P4q(PtbH_7zb*MmF%PC%~czTww0 zgo+0CXzb8=OT)CNdP|FP5g~iF#TSVN{aOq!PL&M6Dh9&PE8qAhrN0d$he6N}vZK2c zL+mQGQb~Sy4QmTsX8r!L19SnUdZ1t0(}zPWSQX-q8Wqa)Vnx zaJeH+0OBrcAJOP7)DH#yxEdyFMDoi(A8lFH8Ic(&IK$$`#>Uhpmr=?x!_aP`1O^lc zcTh9^xs#63{u83Rli4Vk0eMyBG6Wt4A$;+o^vG-m<6k3=pLtb(Dl6A0Z?>~(=|-^Y zh6V%bUQ@Ac*!QM966Oa6Qn|QLG&(hF0Le3BFOl5-6@&M?8WOVqgRTBQoEYS3pNct4 z_3R5iASnf5!>g*0_3RUmdBw4&+BqtNVMue`)~HA~yyl&z8>I7uy04o#iH}Z<*T}Y2 z=1?-ppvrOf*TOlAd&pNtosTfsBw0Q^zq*m`dwq}_Ek2_RCoe@k!(SiSHa|&~Loc>A z_0596_?V#`TA1_Ot9>3$6&b>*0vE&HX?jd$JQC*e<5h(&l_%WMVl^FSGsWGHvjScr zNJ%eyt+yf6Ms@ePLH6tnDjp7RPn9k|;Gx@oZclqrB3I5kEfBr<-{A9#xKxy1U&!Yjls(bFIopQ$_QUR6rM^seg1+H$)1I$+o9T z{vC^q@zO1^=!pC5cX<6CWkFMo77>C22q&S{b`oGP8eeBVpYTbkc956C^l}Kh-GM&5 zLAsPe?B(V5iSnSKL9E90*!;8oGz-CLD9K@BwG@fIczcyaU41}#vjc}$lMugpLo*%y zW8L@CAgdioVC-RHO?`+=cV?5itM4-x{_?+oYP>hzR{z7y(+{sqa-2;*xaZ-f;mlIf zUlY=loTPO`HvIGL7{?Tbwv=CEdp=lDVk~(3rLVLl_!ttkrW+Th)pk~w8yvXF01fE^ z^~rXy;ppY#*Fhj2L5VvUa3Rwk)nII@pnZoERaCeyp`y2f#~d<}j>^`yNW4I!cur>^ zF8HMZcH2kHeYVtb&7^M!Uor!q8}L}nt*l@M0u5Wz&nPXbfPP}L3K<13!OYAIkwfzE zJoh3Mc*zhX*xD?kr(9&p<*cmyb)UG7e5S%S_B;bZ2Qa#2uM6#eWe!tm6JJI6X}|^RgOgokj<_gJn?d@4*f9 z%EHu9b>H-{LE1^ceD-PT40yuh|F{6Cm2UMpZ~%?k{X7;dL^0i#JAG1DeQ7YU!Kda0 z8>y7=Ts#AEe>6+XXoq+7qm<&BMj{*_QK0mINa1;yF5Sno5Kit8D(1LDIjF5&&F;P3 ziZVW{qF>G~9~h06GTDs)3weSq^~%U!xKO8ZK^K`lM=>&#Vbnu8&Fc+X*468~VXI;H zP%Q$*BX)t+&ve==4Y7?Z05$}U0CqA*LdQ>+#=o*nB#6wa^>{O#7~#C4vf@J8$YeDY zP|=PkUIhd7v8(x`n)##rd?}bL(wsB<+{o?Yb9s%z$w_*8094iJT!=t=xqT=Ct}7N# zFj@k=j~V|$LW2YvW?X?E7OC=QkzS$Bb$+C{aE_vfT1o|*DjB}hGdG4bH(Ad7g|?Vy z-K~-uw>#O`xY-ICpC8!A)4`5Z6~H9@rgBt`yblXcg3{!I=UWM>P5A4G&%GXhe=N$1 zJ)cc$Q?t*jx;e9Q8*Uu~#L*3zdq-p)_?c68(ava_U7lK@c3Z0uJfvn zI0c9E=2ru1cy9p!dUp|r3?7vhssPzQ0cFCb33JC z#PM_T#5Glpj*lAy^o|jibnp6@$kYs2hy z)EB1HFRk@h9^qI7$J#g-JI*#catY@^Sb^iLoDre>Sv{VjODICBpM0yI!FXEZpE29Tct80B|QQPtgNd5<_E_fUL9 zF-05(6XA$OVyxQ*kdj8g)gn?x%p4u&R-LtjZu`)}-H-*&d_DsI)h~e;5AxZJa5j+) zQq|8C6cco~3g$dZ;}|iknUK6;>Flkrc5=$H{}D=JF$eLA{R;G*qy3yXo~^{HB_(~% zCa9`X72U(@bBpK#5Cci%oP-^z9rvSqmtBp@|K%;Exk7HnXJ zZ**wO;0bMjmVxbwyYKK?qCidk&0;N{1SiXrCK(=T z!5jZ0bj{4PNXTEn+`=LfSh*;$nQ8<0#6bf6>Up5^>uz6FzuUmI==N)&1?lXNugdH| z?Xe#mj+PV@1ZPTWcmpU$5WW^l>Tq-c^GfmMuuYfZ8dCZWcVboi+~&-GRG7c9;v6&a zM219~G{@3uhr|4b2D%5xe+z`Ug>g%wOGzo1e=6@-b(zpu^>TNUHPgDP<;@0|a)ra4z zrMnj8Z77{DLYAMe2SlBHQMi!F4<2~p|Gr3cpD?x;iov<)%ZtVLhJJXQvJ6Ob9x#}d zHViHq-_M}F?TwPeB)+a%OD7?`@F$hh$WXl<8{Zzy0EAfOhAlZE?SI`!+ohWOxJJ%` zUZH-XzjJohZbD$hNysD)HsG7JN)MXF*Le*wt$os?6Rl4>$k*7wp@NsHgX%j=@4_Es zjS{&8V0S@eP0X4mEY0pN{w3WO`wFgfXyPysVDPJzU+IM`DU_aR!}1o(;Ak395Gegc z1oZje*yR&vIyZ1zbT9v$nb)Lp{F0#`=dhBU(Oczp$5ksc9bKQSjz?>Q_3UaD#qbe$E#Z~m28{0cUPwq$#O7Q-`R($VP zNmf>dqJFic^qAaJAa9FtMz(d}(Yh{h>BUJSi~R)vW)ua44!6w9AV_2MpV^~xjt{CT z>k+}2{Kx9JT4Dg+8H>os$f?2S>r+$klN)hW^s#^QsH*63?67kmBl zXTBzZ%$+@-SUWqL2lYlt60W%WG@H{-N4GI%Tu47*Ra!U|#_QU9J*TXB=m_dZI72vp z0t)l2J}La{5#lpgBW@+jz3WvT^y%?oHxFr`?1EKW5Wr)-TZ50pLe5TB;|T*q{{+;t z^l>adL!gFNzIm*36gjvdVBeQfPYF!<=Ku=~M-})(`yskc`NRTK#P4DxnK4}n0 z5ZjozHT+f~y#$c3#yE+vo=K?c=)LEZl5zVLU^2m591WQG8Z9KU%9DDo@_xeShjggx z>(l=L$`4${*~8vy=|`iRU!I1o3||DH`w3vLv@=X^`wa^{SMJp@N(tq^M_4ksD!`6C z)*X)T+40F~X~|!=09o;Cz|c*Im)f0jv`A$8_AZ|5qprKAJKubs4m1lf=2W&Jt-t;H z7iW^2`mcuGc80&l;abFjq#@iLRc+bj@xQbH-@vp;z;?2pEefzZv&T{#wg>{&500oo zNQ|arhB%L=>?r>X4WGL9rdsD_jL@L%Wqxo?7q!_`d&HrsQ7oXTBp?a=te@oKfcUpP zuG3p9hus@}Ui|iu#=LKb9FiyzmcptK-9j%K`lq|s(@KNVJ`Pmr|F7-YlGkwumi4Cd z6B{>In(i+Mq$gLR+qRbr!K*Q<*9^&3WuNf*Rg7h{m#&l&9U%1?m8s=}XKp{GM09f| zvMP?u-)pa8c+mkK5CRWaDJl)SH3VbbbtekWQ7iuiqRM3-N$a-H&XfVQGg#pAN3=8A z$(qJFqp&{0OP5CNzw1WD{D-`YJlA4?UPXyd_4S$lAGG?LtpH0t zl&Kkehy#THrbGmk04_rx2X}IUJ=&SQ-3Wi(pf&f#^ZO#Gdz^nEUllIs@#$oI0j`Qz zlEkbe)I~PAXH241GABWQ$?g=8{8T1UpbI=87U%F4-1Ac;^N?H4EYLev9NbBrl5p5*6_h0+v`GhcVxS*ZcA71z2r9ma6MG1ENKFMkcL& z_hqSGhJ=?NZ)X4!%aD14n*R^RGbe!_x$Z*~cpuREXaF7(`t~|G70J>k*!O_Y#HmAR z1Dy;Bb?_sNNGwZcAvJ$SrjH9XW3d1y-^X*Mj|PhXt^pf(3mlURZ;RiBZjjs1{S1wn z;KJRP8V0eHR)z#A`0-<8z;FAw9tb0wx&-;dcW~fw|AokW6&4hKz#c=iHs0RMz%N}m z(R|9jfUHvKlvrI^@uP9%ezN@hBMc5SahilpCo_8sz4fVW>#luVvBU|h`p6i&6#~Vd zV4LTXol!tR1^lM}T|T%bD-Ll%N>A$OKBzYd0r&u7)Aia-{-dxZ7@~D4#XV? zeGqznN=6|NN^evm4!?oIp)~1o>o!Z3|JUAIMa9`P|DuBg2?Pk91WjOo1a~J`0>MH^ zg1fuB6Wk@ZyL<5976|U{8r&UDL*DQG_F3!PoW1tdUjOF?W~RHJ?&_-Qs_I{L$LGT} zjf}k$HVkiwHZ0?U3C4n=u6PTcwr#Dw474qHu{<2FheDdg(N{n23GN*+1IzF2c_$z5 z&7En(#oFXJNKKlSR9W8HF}AxpEmW0z1YlG6K4BniTPsgNsQ8AkDEe?r+-D0c(IAp) z4N#h3!D|^$O=XdRif?T8B7lxMXwI^)hj&$Aq|Iyc+<-J|N=sYYvjWeLta861p5UQ< z^Vz=RWApqtw!!QHAJbtyi|?ae5bZxk^##@std;;9?wh6;e)B3NkUkYLA`C1^z{eYc z(z_oN1wK`l%Jah52|hdKseGG)JQ;uO!*>1K!?)EemD2a)SPmyYtoSzy(!yKO4QCJaqi~;XzCH8PiW%#Dq#YQOmg|l2z!Ng($WXO}afflc z7&M@JIsdb6luH&JId2fBDq-1sB0r&{MMJEGz;y8KdU=1m^Q`G76?$;U5#YqP8O4vh1soV` zG+}DvDXX3d+(V@P8X&&Q=il}=FVUA9cI)O^e*n{GSV>oF??}Qv@ym|}{aU5r(i0UV zSieeSECV?a0<@PXC^3EKvK>er3>>`Vo+7p{fiwBfZjL2I>vNe_yW+dGEBf98SIHeK zwF&Q^T&a78MVebh+ZSw^u0o(s6p}KB&Z8-PFV?DR;kK9>8qH^e;tt-x4vMN)V{3K2-zIMp~NNg^J|0y%By3(b}|1BE=mHD!Z)kpSj<;v0ZNw6n9@_olD$GM;nI9`7wPkBAdM3QMAZM{X*$ z^g2QK*tQFwl~YdNybHH5^2pVp)Fug%m+&TmBBhqf3*-T$JiftndwoO!Iu!S{^?tB2 z{dnE@FxfqH32#zvgsnic%cVvjWQ|HXbmVn{2>FP3U-sQUWuMi}?rzSI8o>uAGI=7= ziz|C#fS4FK&&vBA)YMOu&%pB0ssT8>IgHtpJ2p~vMC#iH=vdpl5Lyn?2`@;3MW0!N z+a}G#(JdDbF}7$p*?nD*bP|;7-hK4si~(E|@edM{Oo;$G;S5P|+y$FZ>|Y$_%=#db zJf=TgZa8g&(im7mZRZB)VAzH4?O%FiT`y!CV#sa79Vp=dZzA@hMsm|*nLNqqkyEhJL=cWQ+M5=?95q)`u-TZDc`5B5*W z_+L7F{0V4}lM&$aKzDMM3BvpM68PL?te%l62_V5hS^=^+c^1)~!6B^5ObXqB4dN~X zxMIYd=;=#HG`>No8Sqd>9MJ%2*rNeZX11LEKK#TUOf%;mabM7$$Q%u(kENYt5gacD z$+?>{u!Yq;UD|h>2jF3VgpEJXM06eW>|b!(lm;C*Qo{7WfT<27N#y~t1o1}rg-?JC zI{hu4X%=Lg8O3@n6n1X<_g$5FF7o)P8)qNI=8WeprT~OKaw`#ZU^GAm>ih-jv<{E% zb7!o9c#{U0GMh}a1%x@x2~fz~75b=z4Y4}-k@(}+u>jX_f(>W6`kbp5Nm$$jlDqy; z8ylXtj)2^8oW%fVy$a{10KD>S`^VUY68S|^A%!x($MQOpq>y0f>kS7?s!&A3W3uUA z)728m+21KM|N5@zp#!{5W^0o{JeZtm;0Z{kj#?W`DzMb4&?uG@6)6IME=HR2B{{?z zU;%;BP=`%F)DWSo%(oDO8V4pazI!{oj=PSNB6*KYRw=C2;ZdrKDpW-uFS&oM`P|QT z$44VH_b~_jNIcD(=0DU`8U1jYiPUevYwcY`i|hJm-X;Q9!For*`o_VCFkbmLQIT#4 z&;0lCin`f8`$swdMhVvlS}6epKjEv1XfmR=__J3jo0fqXFnWgs#oWrpox~G@ z{}{mBu+#-4uvndmHm;TwK{?S)Ns4v6l&+dUg|&g1xJo1Cc;)G+LR0kd>dvHMDN;`t zAfTVptWGSKP%uPRaUZMx<2b^MLasmec>r)G(Y zm18_gdqj>6wd3_B`!EvaT<+kG_G2@Pui*Hn)-JiZGhFUK%hE(1wEIcoo(Ho7oHMBd zn4ly>cx3uuYm?E6-BK3Q$=b7tBb-9_6EVmXJKj`c6Fw5wJ62Mz%$aar^kqdo-4M7& zij>WxATZodwF|gpZYZOW!gTD&6Cy( z1ieoV4Nu7+>qX8-W9h<%3!?@n+fL~WECVAKUAyq!k}+==SHzNiZUIYgEd6{X1eyBI zvkv*eFb-~kc`gH2SiRw^AOzX zvA?fSKl-I6la@jXkX!j*a$BMgTwY}BB_R$RKQ|INA|izk6ns!MA}#RmQu{2#gd?({ zSKL5!t?GSM?(NrQ0AF8t0;51K0;x@alhB?e_jGgd`!`kvhaeo&v@#-Xk{is64qoLf z_cnW-i4=C=5!gt|6uTl9x4&`Po}uw{TV~eO@%2RhXny!vH`xd5W12ZT-{)=vV`g(6 zY&eLr#vn{()-Vnr0)>ul`Eor)XME7!5UjG-PTV?tT8{-u#N7~};+;^jFHn)}V|#ik z*gV=8FQm7`_Y#^I3sLS1I`;ds4z`kNFGpBT7dfvcj^s^;5rCus?+aDU!>XXabunY( zyMDY5V&kt1{eba>K5>I z6?vf4LhO?J?b#5TykA>$%uAquA{}p1oUJ>Vthih8}A^Uduc&?z}T|S)?q6ot$XUH9wDu#-mdM> z=^cS^G8>6O!xs3I(JnBRAL)7{-5ZiY(g7Z%RylgT@M&;i@6p)$B#Xl!XZ^;7Cr0Pr zjaLvd!Gc2SlUA5#*PDgBQ!!sc1livsW4bjYrOy<6JFKuDRFFp+EVu`2q>OtaH>pvu zSs&X|#{EJf+BjO0^@X4=as%eNbV{-a_RtyI6yDMy6=L~|PXXpm1yMbjI0VX(%JCq% z$HEREChgYnA-qk3Gv#cZ>OO{Jc$#N;)_USNYV9<5bVBNRpRxlwwIZ%{Y@cEpFb532 zsNb2Ik2X$fUVD;=Kp+Z=b$Er@J_G^)kCctBCwDi<2JW#(p`g3u9{A2I+M(01~EKYGV1Z804~~p}4Fs z8Qg<&a8PQ6_VvdaodYi^d^9E$5~yV{WK%^F6)QuFA3<6=Ux-WTeG)@|Q)vr%h zK3XrlDnF{q+q!GLg6uvb5r@P~c#`ccxk}b#ZnvdxIL4cO#{#ngi0m!W2(P9mxsyo0 z)-iJYjUL7=0!o_wU2$lg6uUuI0A4KzIM|S#!ruTXBodx6SQCxmk>`mF8R5JbSWi^~ zn@DxDfSvdiiti%~D41@|VCBcpd%$}CS-loRV&G|khj7N5{g_=({f#XAcdL^<_z%=Bpbl&=AKBmsG- zx5j@UCfCTyWZ;7gk?@z>sZoO&?r7QdJh*c?x~xXkAfx%z4?@d6&$Ew51aZn|7?7>!kCG$lPNgWn~Y8L*{HW_g>3c?Rd{|+qR z1PJ)EaRa;Xe>kJM$FA(po`KiWANn;@H4D~mNK#e74~Nocsg2@C_olp8m#o24Za{Zy^<4T^*XaVv)wPx8rFM=D}+zvUV-*L(UnFbtEVDdw+$ z+Y=N5K7<4ft;1Z3f+p_gW8%SidHB9QwIA+>Ajq(ycluXmPf!anK$UO6E=hPF3K91L zRj~Cs#N$Cvo5-xbm~>?%@qz_Z2Bc2WXIe{!ll3|N0M}zfLYYYWZ(}*LXFjpoQC`jg zX+!{nCI`ln3<#hb-;YHpCHP)34*US#5XcZCfr$y+vDr#M6gQB#FLM9hAKZiex6eFy z(U}c_F-qxA0N0dppJ<^(TmQ64Ya;RO3(yY;&*+zApP%bmF~G~fzR;qjAFcQ{i_9zm zxD2UKg}Vj4c*7&+~0v2f@}y8u0|c(pI_7iszE~gvd6dX?R}g4Pr!Txgbu~S*f;`; z4Y;_MWVCKNJzyII0%_W?8eJ#d*NS!6wdLb^nbO6A#@5F0p3u}Ep^KXUkhr4)aA-35l+YJYCE33($MII3a zZ-6|ZT>wdyv@}&<0~~BkP~8wWq8K0zZdt&K59RCp!S(mm zYHk57+sU~NXZ8?1e-~s(J8;-(ft*6{OB;^uK~`JcMGANe|NUFI6^(T6!~tg?PXdj4 zpJa#R1`Ce*0M_&R2ilk59gx0zE!hkQX}SP79?@{Uuld0w_ouy;NAQ>2fTMICj#wZBO9b0DkkbTu%s;#ilO+MF46jMVF<8>x6PZ5uk=1Gc zXPF14fPrj8Q~HB7a}AmRF8>B|k`5M4QpzfLi6J_eg`XVYjE;o+Ie>f|ZsESt&D*pP zGXafcgB9NLp7IcduevpvM*AO+>rd>}3V@1WccldkoPAGm$gxvt^4a`@Vs>Y+fJ0qi zw4pG2ecy{F--lj5C<1dtv&DqwU3f{-dkVzl6kT$!@K8Vo8dfcy0Z3H1`R51HEaY%r zaeJzb!$pJmUJ8*pfe)GJV_QZ6u!aEw75>>c!tk&V!Ns^B7Ujd}+>&zAXND%O9uoeQXbGtyPe9d| z4^{DVe!8jkI1@R2!c9pu1bb#H_ZkG!1Rt2%55k9#oqtYty+0lTLF%FZO-#mT_DHEy zMTnr&Q&^qmpwsrz6c5cU7~Km(szOa>ua3;Q6J+GCx$TL}{m?9=uqI<>$kg>}8l%O2 zH3}XblCAiVlVs>5h4jG3kmJvZt5Idmf`ex!K}JcZDP0+WehLd@bPvV2k$NM^w8%K}_SQvXXe$Uq6_CAVkF4Cald zZHv`|z(G=UYhPEbc+;;F|ffuJkRbiK2S#N6%lVMEbR%Gxo`=fl9zI}??w*7Y z{0zW_5)5|ti#B-Z9RLG%BcKb52V6Wttux!g~Do<6E)6Bg_8h z=eOwhB=-Dm!}HH8)E4gbo4`R4;y?Wo@5!wra#^GSsmS2*2Qi+1e)uT)AO#S}_rC%O zfn@&Eg|}4yDe|B)LAC!Wa!c7J6A_rA_7^5xwBhG2UF(fdfN~fj4J^M z8H18{x#+9T!zdveT#5#ZqP!J3$vmTMGSyDM)$>2E$-6$`Mi&}#nWx47qFV1*C5u{W zt28pqkY`UI<(NUnB(cG`n!B2FK16(rN#bte22a1TahAI@63V_|**D$qIJauw&++m< zPk2N)@_+sZfB)y>|4`#!cKAQa493f79}BahcDbGg?CTIBJ>rh5mU~ z;NJRq-b8=Mj7doN%>V0*j2!DfKMC*XG6%GIaCvZP=d#ytDzQ;szC;x6f)Atk{Pk-G zI7e5;k{bsHhnkjlZDy^_53721SK`iQcZS0`_N60bd@p9uI~Lz59~gtzkuMV^Wj=mP zfrJ(_2b9)?(S|0S0OD^@(9r<8K?FiBgLU# zF#M(3>vGU?(0rFv4~i!~QTzH5U;r{C{lJu`PT;imZ)s`CUa~`NU6?4k8vswjgTg#+XyEw)qoMd(cxU)#JLLoWW-?-H5 za77fne$FScjNz@v$cnqN$%4oH2f22#)BkIW`$j=u zso0(T*A*WR7P$W^f4>Ksf5n>|vYzA^EEY}6Ll`-&v)mKQl)&Q{^^x*NRkHHu{;;C2 zXp#2j@)Dm8=x^JlFN>rwEXK{Ry}o*^--VB!GY!Q4z#X)@BzNfHZLn7NNAFg6-YUbd z92C*i+j-@zyCceLG1EFxQ;v#|w94;}V=KxbJo#k}Zf~8YnaV@vRiHQ>mZ-cLj_lyX zlt_&t$IV%BF!Mo+4;Q^@W4o6hCF0XnDcSmNya=dYWF2Zq?^1|%Nv&9pzR9YYpJqJ& zJX&SHXDlJ1x&?y}CdHh;gF<}%fl;(if8C8q$N@MeuFK^TiW;Z7k!ql6%1)@Eqve^q zN-sJr>0a#b9fi{aO`$IHeP3@R-=D#kO9mf+i0xL>|!w zGvo!^S%~@381{ibk%}H&7dQcW^mKB9F#=15`m(icSj`eoMtWXcM!We{{#4lkx%bsB z1|?5-?phi}f*R+->HJb!^^6ZWdt>h1mCFy75W}lODXb(yO)CRGHSTZio0$cberr=N zw;?+I3p4Pxx=~1NLu!^XO6D<9S&w(WWP7^$`*qoW^@+x9Vm*e!jj6*8eNCuRBet;6AhMLY>TTkH1HV|Ni) zU1hq?Efi*|da*~@yzO|r*4`Q~V({@NDNzKY?RG*Mnzzyyof}l-bL@oYFd5 zgjdG0?<@Bx4Z)^C`k3J>E?cv!!rdFnY_z%(dDI>w@6X)gYWm)T&FVU>S5DJ;i)ovg z#4C2~tUPv1eG@f}D>jTDD77%TO1AxjYMJ<2a-VO#ieM@ov~;@azziAX`GGy`bci}S zY+8yT(qQ`S{CpeYyv*SAWQW;dh*~O;!3-sscU-&_XRlL<`pflNs3%Ja5)PAK1Ei8Vvm5VXiEoZo*acl8;F^?tQA3AhO>6nS=atO>S@ zuu^*3*pz`$YbSH0ie-WMljmATZ1r$Ruce2#V`q$C88=f`+X!qJb9GV*v3ZMmylEqk zKo9%G>HLHVL$69D%N4oQ1qB{L4F_gwMsCD1?~B|~QSbLx_&*ZU>bl*ZC2CtSit|fg zB@(^JZ9>J8ft#tU;TSBb{4){Wt45WVS<&akf~9V*k+A3jcb5Bg*C#1fO@9Sf@C|Es ze!d>(XSd~lR)&X#!NtW*@?So%i!aE zoVE=PorR#zSa-5Z6YDOt5Jr_7Cf?eSh`k1f=m#JY7f&`JMVs`5PMn(_kn|sOVllOC zeceV{UWmn5JS(ZY!=Jml#XBowI1C z2rg8#DNPjG=Nx8oF_`{9q#&KpRagHsUe|z1P*f2yC=xB@dyA3hnRm9F9%cGiq+06T z^VTqn+9bnN_E^&^!fht@zR?B_0*TJeB6CfxZ{lbYm{djCbw*wdgFZzSrQ~a0CAv8k zIX-K^JwEu+exMqwV^iUt#<*3qRhgd^KRk-iaY_AN|EXu+JSl#l=H+90o4N;0E%g!c zuw%J?Sd^BDkv^b)6A1@}E#{YOOiiWjm!Xlvg<@VQ|It| zm*T5i4-s>yriLqZl2>T&s8b`qFbYdBk47!P?=ze0Z8Ao<)9ZYp^3G0L&PJaPdGmos z%VUoL7d0#m15u66IHls)1^c5Gf;<5dmZ(SnBQ?zUXKIvk0^@#Ae-^RQ&YO*1Vr9J0EO@iXnrOJ2sx4U~s6@0aQ2Dl~Thl|OV zKG%s6k#fWGJ$A%*cX+ond*>2OAKG&pe@oq*9}&>LZi;1oJ#0>Cv{WY1NM_AY+CaU{0A(nKLb?8f7WbQv=Lt(^Sh zMe~@puh7lLvChxubBL>4K0Dpo_Vr4v;t@D3mTOjAt3(vIO#F8G;kR2iJ@3lTD29}9 z3axBeKdoA7_O>C<)%S5#$+)>!Ex)>!>zukMp1Y(qed5Jn{&8wXSoVnY!{dUCmH_d& zn)W6uy+SO*lfi2x^dN0vy98E|_xO#+(B(O%Ix!`35BOyS;V129tvzN}`!yZ0=$;I3 z#D2sX@D;V&V0qc~)DJ zAtvoJNl*p*$T^32XQMy~f+1P&`~Gq#N?@|+`6R+NBKJ8RZAm^2+^uZ}El(!JB7 zk8UOM;Fia4K091ajelICX;SaPRIP5WL0Q)NBe}03%R&^5^GW(^)}C3qY52fRY%vY)u%`iA6^mQD zjNp4IiYGWK+mraWH4G;6&(-bgEw!*&%n$9bGQA#E6MXHl3T)b@XEO~htF3ghi*IMi z|LEW;tExvb=NfgS8Af;#W*Ob+{(GlINm-rzt624qEcjEj9b_Fn>uLs;Ygo&{WeRO?E?#-|G;Q#Tn%n`+9trw?Fzj zST*d!YP`sbh@FDH9f&oLE-od$5V)RTf614%KRR6VY-dGm?H)muZf!qoBF_qcMqQ-w z8l7$UvoAJP zuSsE5?;bbWX?ltCzjEEVyQH{ICqCy^Jr5B6(6G06bg(pj;p%d0jr&RM&GC|N!K0M& zBZ>|=E}V^cWYmLp1Cx3 z**!xLQE#5ULB72xzGeS*x7WB(ey8J|vzfNo$@{z5<*;?;vU}^i*Qql%S~-9+mc-&M z0UBarVxm;<6&B?6>(_clMp{-@$6d8}rFBYmORFmf%T6nZit-6bY8uzHb6hY99WVpHh`jV+2%O1=KWw%t63<`Av_$%&qM&mP zA_a03g*X1s*baxX2nz}9y@{_k8^+p08Rg(&Xtk=Fte>NFfqbFO(sJ*Nm8l+8Qipjl zfPCIxL|md`rP|};5n3c~N6e(Z%!*`=`;l+z8fXPJaN$ZGk1Pz0-)U9M?xrsu&#x>~ ztl2FG3~MpuoDZmG-%RZtg_sr;6b^+1AFbalKju5Ea-h2XZK`R@N&2+r?!3i{{YPb@ z^smj3`ldG58{xkGV&~|t$#SRVZPj&MDdMG&4&Boo?y}8e2aA_tId?2`M10XVh4(J4iue<26xTwh0j%5~wdjJ~8rZ5tBuTA|N0nOPn_<&EJY1%-ce!Hhsr4-y{!t- zcmaQdh1yHJG;uU9HP{0WE)y50>$Hm+N5PM(crX3AszRDSG_?i;N^3Cv+^k1=vG8`Y zqUhKF$#D{WP*K)P)4~HD8kVX5ax1y~k55@G9uNoIzJVV@WF3r@$BkkQ%t<PRQ2iaH1T`sr?m&7ENYux%mJ6-JTLRSR>DN-0Ax#S(twC~mgsd^OhyNM>I)j7L%!Ao|5 z1Bc95aN`Ui$3xO<6K9yN)i?ch)!N$5zdwh1)d;iB&R{C2U8>BfvAETjC9QvOo{&rC zp4MRKU7NJ}*3wEi^1@9w3If4W6BXkBJc(C*I`(9@0|r4+xjmnv&X znSDCxV=s1H*Xa0eES**Z`j0M?odZmhiAh6Ys9Bf^Y1bw?`TAvVPdifOVU)O=qP62m zJ;Gq)*k&a4I$DGXiMYQuIeiG0S$UTJRbHzYk!F%QnpWAtfXEzv;p~dT_4Yccz{1Ha z&HTFj)w%BbXL&r$`PmMe@+vD!-8RlRaAm(y6YBf6J0fYbL|-RO+GzAMOVE$`3{PS# z<2AGj*b@fz(hxXjMppWXCDieXIS~^-+A(9Nq@$ZZT^AD*Ba7%#cFxM&rsO-;e7~2h z%gNk1(EbATvRv(8=}noMZPJR5>+wp*Bq>s@`SZ{wQF%+eM4vbNxD%yXLkn&>qZai1 zk^Wd>FYFT0P(Q`Qv;m?95Y`dW+nS*%I_b*a(c=|M8K3jY2o0;z6l9j?d;JL)P-2bv z+~Ke8R~$4*BmDiGT4;|Jb5flEKMB+66#GrU?USw?GO+-coP))3LA4N#ZZr1Mh?lW5 zC6e|xPa&1CT)4`tXIlmdOb4;93L|7h0q(6er{XGDzo5Pp&FWQqJ1zarMY4)r&mz2^ z_`rSYB3rPh_m#?OTC_VBF7@W=KSi+dA#4>77e8FsNy^2h8upk~chxeBx4rs#<-~ou z)Owsy^eRy#oYhFqqg81aefflwsL@2%V`itW{ky#2+2A|>osh=A4zd!WMVqDrV0$gt zqp`Z4`MoS{hRx-~eRYRqL$zhcMB9dX_ukd!t;2;A98EuEH9Lba@3JX4715s&?KIPK zY<|EX08Y{e6y*ugh*CNFuZ4Aboiy0d*!=sfVlTda))EY$ZlBIQwJ#MfG@48j7LYC} zu6REQr>qpAVXhS_EQ^vom1hR=F))nzX&+fSXx|+?R#5-m9XtOOTTQ)Q_M#r1wIVO^ zy!Y^O`{uzXrEL=X16&!)r+Lp&nl+k91Ra*~n>SnZwM4Uq;wmTf`*q`8jyqVF_{*Bf z2<0`Fx+P3#ij2RP&;OWKU%4d2+_chZRc1mO0sKuyi<;^HEE%`R<_5|37CA|jg3bQ)P+iA-&5@t~Rkmr1Kcy~?<@ zIZBA+ZA(t(uS7L7XwB%k$?sGbefg(CtaAqOq_xb=JDH+T1(mg8D>fM>`rmR+cisCc zX(?G*YhlT~eSN!}VI^ae#7ixsR7>w*PU|gWW7|k z^&C!ryImNY+v)Nh|J=?KQwAdFK4SPt?HIHx;`U36x6ix1^a#l@r|CVl8syim9?VpRn=sENt|53|U~9d4!E$?kP}u zMF+>G`7|vnNT3RCGPUq>Fn-FnLQ9Z3f;7_isaOVaq0jV5Jk*wBj^Xh>c9Q|6&|`Eo zH={s3)C8QO_gUdbs#2)pQZQpiF=~`z?U$P2;e(V^0Vq|N$Wq){=&E|5> zZG2ZjmIZOobawlsr$^n_`*GRkZ|X&#-wnv$PRsUN?qJ=8C*L$f=dQkSKy}5=-y~+@ zrz=vt9Li<3@!7c{MA1GX&h|B8v3MHB!^FeWyRfhTHo&^H!jIPbv4Y;6Z8HTe;YucK zq-8dEcl$qnZTOtsBJJCUSKUJvF-D9cBs!US6#GJvXGJqw0`Vkj(7& z3lk0R!M9UXS$lu`C*SJ)G@FZ&iK!J_{G8<)pO~nvv&N8o7UPG7ihy*kTVtIYLavJi zuEQ?gWfX)LfEFzY_c^g+`({|s4c#L2N7VU`LUP{ZE}4ls zhe$4H;kg0&qF+BfJ9n$Ut5<9)sZN9!K_1Oy+EI+FW2>^La!q7pDVI2PQCTf}U*f?R zqgCszeo3j40atfh+MtF0ZLO>8E9P&@O7`pA&gG?q=x9uSNU2Sak7QbBsvQF4%RNp{ z<4!~edpoNmYK^_K@Krs^1aT%X)ms)T_`;sd%kDbo8A}sR)NzK=5j}~=vgL<)baq!= zqBwqA-=y7nxX-XQOBDV_W+qWttDTsnq_(X`k54lnK^RB-%1O56>&{($JB^C}jGx2- z)?**PY)h6^UjHY2wtIn0jnB#O<;d~-d8;e6Diy?!eih*GyCV6&rkvkr#}!k5v|2>X z?`ns~@Ux+MZRy3&!S(C~GbWa+17EyWLBD=}CzrrdFUX<@{@peHG754+LwJRYtWIQC zoy+!@itiY8#IlPbf!}Lv3fyCnv+%y|Bf_3Xuj3Qr>yRqH6~4F>OGv~acwL2+^jyP< zL4>`!?R=k^!Ip)ES3-VUxk65i72bn1O_3b)v}|6>E+_9my+D$ly+(kNK+Q$#`^Asw zI0L#4O(m%Ua+c3EOFcn>^u$P53b9&xjBfQy7=J$Pd4aIQjjet8<=sjI-6cJJtm~EH zag}RA@ijwH&rKbN*!-o%qTbnNLkw>*9mrCKYo-Ngz){9NfpFiUrlm6*~ z=O5Y9?YLY){X3%k+(Ala9a6IV=7i`PUV9EiPYXBt;KO(@Q4wk!P7HRVl?b&|86p;! z+5_NW-Fa@50%FPZd4x1=nTWD+7)8_Eg%RjZnSR8;L_Mpu@oCYNIBuBmj74I!*G#JU z=o^Nz{)=EUt>y+kND^gI3;S;Ng}At->%Nvw!FgQB;8JNsP$A>=8LhMCQ}L!H>a^O- zNRtq_H~LG>pxG0K2#*#x%3(*pZ*g&P6k=rDGd{>tW;;6M#k{tGNwGMz{T(sSlQK@k zx%!hCt1WH)*sVy{X;Gbz_z!zm*NSn6EK_y9!e$;rY$IpX^3(SSb5YTD znXMfgT&CuojS)xmX2gFoxR`o=9YdU{Q2Lf$b8^N}j>Six1xe4eSkg$s2IPA#>6hSq z92=0#e5&ol5hyxXZu`l83x_MX--$t=id)<^x@&&|zG|Im;_-(ZuAvV%tgrH~r@3ol2c~m~25vCSqp;nz7Y}qj4 zzchjRK2gzDUpB=Z8Fnl~E-syZkW0I3&QLz0vul)B5&nzGu{y7#$iCsc=YNV**vYO` z-Y=@mRBL_J$lkGU!Nb$pA8Hjuk0Afc|sEx*Vzg@Dj%oc#7BnQ`(S$Hj-h9>{ABG$)(uauH!C%aA4 zQ~WzVprpS2{$nwtZN2RmyogTIr~gJRw{F%cG&3`5e9(U5N2EK8XP3!sKf;!+9G;ac zvyqje7NOL}Ol;_l+?062K$9IJv-Ke&*e6Ccjx+i38#;s;HsR~2)P+IrbP3w0vKdF_VH_BI^B@i<8m}PF|a;B&kyr*V&F*4J8t48#%abEkjwQ zkWXd{M|gI3zI`Q@;7P=Pg%x_;SD&Oes>^HL z@-AB_xV*Q1Qb${S@}8qT;g64xg67X(7fZbOoOB6)cfMz{SP>)V%iw$we|^Q5Od24% zGUd90ayK7xUC{szTm{rBCsMbx(9YuQ_{zj!n`fAcg@E+%rzwW;xP z%Kj^w6({+fx&NiU1iHA%s%Y+@KMt60ak^FtC$`cm!(aMBNvwNt<7mgu!E$!5nvbTYE6|IH3 zIy$?>8q>ce#f|7;`jZeRMyMZ z@!wBL9()MFDWeKMAVJw;;+l++VR4M4z(A!0hC&(si!VII5QcaOb+Rv5n3_(zfU{*(zx~Sgm|E zk+EKs?x`q0<2SSNYohUjJyh!)1C3q=OYa-)&~C7~S=#RJu#K)u9OV|98vO~^>r08(^uE&JG9dn^JXE|cKv zrxfg1s#l5ItO5E&!Ch^r<9*6m<=Nj}WyhPvm|t7MB{Z`1bfZxe27-vfE)OiX>U$ka zVz8;M$n&}K_~T^R?D*KPF7(wr3d!y`M@qv!ON}vsyy;-+S?_Jp7bU;@=hIz=U){`4 zp*a}ZPJ#Q#lM0Bl>pa$y9>?LJNO9kyHk=CcUQDI)`JLSnCEs2=ac#VUs@@I7J2?kP z#k%Z_UwDmI8kfe_og-f72e_8>wzUwL-tFqzU)kC+A~Q6NyWU1uRgb7H&)ic2>w4ewT}uB{*~@ahT4QUx;8hLc{?TxF^TVtE2ydDU z0HDYZ?5=Y~>0Lg8BMp>jqaO|v?i^nPAF)YhiO0kLN| z$^N#|gdYhp+8dWtOEcv#o^nurfckQ$W>bYhRwT$EN;MX%n{PyzTJ|UJx=I8-@RCsD zqC9%^2*e8+V^JpycB>}yEh-cW*$IN38&_2isQhg~4+%eB2mI5X{o5}1r%%J2x6il2 zP}9z_r3o>luLCs1goJo8#_e(3|HaYy`mUt?ZzA-5A-c_)$dcwH2%q-eXnBlpwKGdZ z{@d^`rksWb6|C8-9+N5=Rn=mT&^^&g$Gc^a)0{nAyYO#0?r;A7{u{fyU-^B1HB`Im z3b4j&o0v%czmbMBQc!SoWRY@R7Ut9cK4B8O6j(~Mc;F(1^Bb2)|9{)`^_@9uggH2o VDmvBoVZDbViwa8$6$z+${6DG98F~N! diff --git a/robmob/sensors.py b/robmob/sensors.py index 4723eed..50abe5b 100644 --- a/robmob/sensors.py +++ b/robmob/sensors.py @@ -104,9 +104,25 @@ class SharpSensor(Sensor): SAMPLE_RATE = 50 # Calibration table of the high range sharp sensor, for 15+ cm. - HIGH_RANGE_CALIB_TABLE = np.asarray( - [[15, 2.76], [20, 2.53], [30, 1.99], [40, 1.53], [50, 1.23], [60, 1.04], [70, 0.91], [80, 0.82], [90, 0.72], - [100, 0.66], [110, 0.6], [120, 0.55], [130, 0.50], [140, 0.46], [150, 0.435], [150, 0]]) + HIGH_RANGE_CALIB_TABLE = np.asarray([ + [15, 2.76], + [20, 2.53], + [30, 1.99], + [40, 1.53], + [50, 1.23], + [60, 1.04], + [70, 0.91], + [80, 0.82], + [90, 0.72], + [100, 0.66], + [110, 0.6], + [120, 0.55], + [130, 0.50], + [140, 0.46], + [150, 0.435], + [200, 0], + [np.inf, 0] + ]) def __init__(self, analog_input_id=0, buffer_size=100): """