From b300492fd20d10381ca38ce12aac3dcd9aa1ec7f Mon Sep 17 00:00:00 2001 From: Alex Ororbia Date: Mon, 8 Dec 2025 17:37:48 -0500 Subject: [PATCH 1/3] Sync up of main with release (#131) * Minor nudge to v3.0.1 (#129) * minor edit to math in hh-lesson doc * Fix workflow, numpy install, and pytest bug in github action workflows (#117) * Update pyproject.toml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * minor nudge/cleanup to minor patched version 2.0.1 * minor nudge/cleanup to minor patched version 2.0.3 * Merged back minor doc fix back to main (for syncing purposes) (#119) * Nudge of release to minor patched version 2.0.3 (#118) * nudge of doc to 2.0.2 (#115) Co-authored-by: Alexander Ororbia * minor edit to math in hh-lesson doc * Fix workflow, numpy install, and pytest bug in github action workflows (#117) * Update pyproject.toml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * Update python-package-conda.yml * minor nudge/cleanup to minor patched version 2.0.1 * minor nudge/cleanup to minor patched version 2.0.3 --------- Co-authored-by: Alexander Ororbia Co-authored-by: Viet Dung Nguyen <60036798+rxng8@users.noreply.github.com> * fixed typo/error in doc evolving_synapses.md --------- Co-authored-by: Alexander Ororbia Co-authored-by: Viet Dung Nguyen <60036798+rxng8@users.noreply.github.com> * minor clean-up in model_basics docs * minor fixes/cleanup of docs * fixed typo in integration tutorial doc * updated papers/talk page for ngclearn * Merging over v3 to main (for roll-out of v3 upgrade) (#125) * Working v3 * Undid fixed compartemts Undid the fixed compartments to work with new global constant tracking * Fixed an execution bug * ported over quad-lif to v3 - needs testing * ported over IF/quadLIF cells, minor revision to LIF cell * Start util cleanup * refactored/ported RAFCell to v3 * ported over/refactored WTASCell for v3 * wrote successful unit-test of WTASCell * put back in init-structure/pointers * fixed minor error in LIFCell, got unit-test for LIFCell to run * quad-lif test sketched * sketch of ifcell test * fixed minor bugs and tests locally pass for if, quad-lif, and lif-cells now, with minor patches to help fun and doc-strings * refactored raf-cell and test passed * refactored adex/test passed; minor cleanup in lif, raf, and wtas cells * refactored fn-cell and test passed * cleaned up lif, raf, wtas, fn, and quad-lif cells repr method * refactored and tests passed for izh and h-h cells * JaxProcess update * cleaned up dunder repr method, moved to JaxComponent parent; fixed __init__ pointer to tensorstats * refactored alpha and exp-synapses, tests passed; minor edit to __init__ for synapses * refactored short-term syn, tests passed - including stp-dense-syn and minor cleanup/edit to synapse __init__ * refactored bcm-syn and test passed * refactored exp-stdp-syn and passed tests for exp-stdp-syn and trace-stdp-syn * refactored event-stdp-syn and test passed * refactored mstdpet-syn and test passed * refactored stdp-conv-syn/conv-syn and test passed * refactored and passed test for deconv/stdp-deconv-syn and other minor cleanup for conv/deconv support * Refactoring neuronal and synaptic components (#123) - merge from fork to v3 * refactoring graded cells * update refactored models * update sLIF cell --------- Co-authored-by: Alex Ororbia * commented out deprecator in hebb-syn and exp-kernel * update hebbian synapse * update hebbian synapse * working reinforce synapse * minor edits to exp-kernel/wtas-cell * update requirements * refactored conv/deconv-hebb-syn and tests passed * update hebbian synapse reset bug * update reset methods * update patched synapse reset * add `not self.inputs.targeted and ` to required components. Fixing general `__repr__` bug in `jaxcomponent` * minor edit to lif/modulated-syn init file * fixed some minor bugs in rate-coded cells/hebb-syn * update code * minor patches to components, including hebb-syn/conv/deconv and reward-cell * minor patches to components, including hebb-syn/conv/deconv and reward-cell * update testing for graded neurons and input encoders * update phasor cell * update test bernoulli cell and poisson cell * update components and their related test cases * fixed monitor bugs from v2, tweaked unit-tests for input-encoders/latency-cell * update test case for test_sLIFCell.py * some cleanup * made revisions to components/clean-up; added back in deprecators * removed lava sub-module, and removed monitor/base-monitor legacy components * minor cleanup of inits * refactored regression module to be compliant with v3 * adjusted sphinx-docs w.r.t. new v3 refactoring * minor revision to double-exp syn pointing, mods to modeling docs * updated adex tutorial doc to v3 * revised adex and error-cell neurocog tutorials * fixed minor issues in input-encoders, further revisions to docs for v3 * revised dyn/chem-syn neurocog doc, cleaned up dynamic syn * revised fn and hh-cell neurocog docs, added some refs to distribution generator * revised integration and izh-cell neurocog docs * revised izh-cell, cleaned-up fn-cell, and revised lif neurocog docs * revised metrics/plotting neurocog docs * revised mod/reward-stdp neurocog doc * revised stp-syn neurocog doc and updated stp-syn to use proper initializer * revised elements of utils to comply with docs * revised stdp neurocog doc to v3 * revised traces neurocog tutorial to v3 * cleaned up utils.optim and wrote compliant NAG optim * cleaned up utils.optim and wrote compliant NAG optim * cleanup of components, added leaky-noise-cell, minor edits * revised leaky-noise-cell, wrote its unit test, test-passed * some revisions/updates to toc/pointer/general tutorial docs * minor revisions to pyproject/req files * update reinforce synapse * update test cases * implemented in-house gmm, in-built to ngclearn; tested on gaussian mode data * wrote gmm density estimator tutorial * patched some tests/syn/neuron components, added sketch of bmm density * fixed test_laplacianErrorCell and laplace-cell bug * fixed test_laplacianErrorCell and laplace-cell bug * made patches to bmm * updated density tutorial/neurocog doc * minor edit to gmm/bmm docs * minor edit to gmm/bmm docs * cleaned up density structure, use parent mixture class to organize model variations * cleaned up density structure, use parent mixture class to organize model variations * added basic exp-mixture to utils.density * minor edits to emm * cleaned up mixtures and finished debugging EMM/works on example * removed old weight_distribution.py, other cleanup/revisions throughout * minor edit to data-loader * revised tests to no longer use weight_distribution/revisions throughout * minor edit to emm doc * added bic calculation to metric_utils * fix ratecell ug of passing unrelated kwargs to parent class * added calc_update() co-routine to hebbian-syn component * fix weight init * integrated rbm/harmonium model-exhibit * Update __init__.py Added the config/logging back to the init * placed pointer to rao-ballard1999 exhibit; updates to docs * updates to docs/revisions * removed flag from bernoulli/latency-cells for now; minor edit to doc * updates to theory doc * updated history log * minor clean-up of ngclearn.utils.viz.dim_reduce * Update jaxComponent.py Added support for turning off autosave * update hebbian synapse saving * update saving and loading utils, making hebbian synapse use these utils for custom optimizer params saving and loading * minor revisions/polish * modded docs to include v3 foundations * updates to init for logging * Updates to lessons * final cleanup/polish/update to docs for v3 nudge * updates to museum doc for v3 * nudged citation file * minor nudge to docs/files to point to v3 --------- Co-authored-by: Will Gebhardt Co-authored-by: Alexander Ororbia Co-authored-by: Viet Dung Nguyen <60036798+rxng8@users.noreply.github.com> Co-authored-by: Viet Nguyen Co-authored-by: Viet Dung Nguyen * update to rbm/harmonium doc * updated leaky-noise-cell to maintain temporal derivative of state * minor revisons/updates to hebb/dense syn, metric utils * cleaned-up/revised leaky-noise-cell * cleaned-up/revised leaky-noise-cell --------- Co-authored-by: Alexander Ororbia Co-authored-by: Viet Dung Nguyen <60036798+rxng8@users.noreply.github.com> Co-authored-by: Will Gebhardt Co-authored-by: Viet Nguyen Co-authored-by: Viet Dung Nguyen * nudge release to v3.0.1 * minor revision of leaky-noise-cell --------- Co-authored-by: Alexander Ororbia Co-authored-by: Viet Dung Nguyen <60036798+rxng8@users.noreply.github.com> Co-authored-by: Will Gebhardt Co-authored-by: Viet Nguyen Co-authored-by: Viet Dung Nguyen --- ngclearn/components/neurons/graded/leakyNoiseCell.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ngclearn/components/neurons/graded/leakyNoiseCell.py b/ngclearn/components/neurons/graded/leakyNoiseCell.py index 9ccf4f8e..ab6245ed 100755 --- a/ngclearn/components/neurons/graded/leakyNoiseCell.py +++ b/ngclearn/components/neurons/graded/leakyNoiseCell.py @@ -71,7 +71,6 @@ def __init__( ): super().__init__(name, **kwargs) - self.tau_x = tau_x self.sigma_pre = sigma_pre ## a pre-rectification scaling factor self.sigma_post = sigma_post ## a post-rectification scaling factor @@ -110,7 +109,6 @@ def advance_state(self, t, dt): key, skey = random.split(self.key.get(), 2) eps_post = random.normal(skey, shape=self.x.get().shape) ## post-rectifier distributional noise - #x = _run_cell(dt, self.j_input.get(), self.j_recurrent.get(), self.x.get(), eps, self.tau_x, self.sigma_rec, integType=self.intgFlag) _step_fns = { 0: step_euler, 1: step_rk2, @@ -152,13 +150,16 @@ def help(cls): ## component help function "states": {"x": "Update to continuous noisy, leaky dynamics; value at time t"}, "outputs": - {"r": "A linear rectifier applied to rate-coded dynamics; f(z)"}, + {"r": "A linear rectifier applied to rate-coded dynamics; f(z)", + "r_prime": "Temporal derivative applied to rate-coded dynamics; f'(z)"}, } hyperparams = { "n_units": "Number of neuronal cells to model in this layer", "batch_size": "Batch size dimension of this component", "tau_x": "State time constant", - "sigma_pre": "The non-zero degree/scale of (pre-rectification) noise to inject into this neuron" + "act_fx": "Type of rectification function to use", + "sigma_pre": "The non-zero degree/scale of pre-rectification noise to inject into this neuron", + "sigma_post": "The non-zero degree/scale of post-rectification noise to inject into this neuron" } info = {cls.__name__: properties, "compartments": compartment_props, From 63a4e98fdc6cbde614868701dc02e9f83fc3c961 Mon Sep 17 00:00:00 2001 From: Alexander Ororbia Date: Mon, 8 Dec 2025 17:43:31 -0500 Subject: [PATCH 2/3] added pointer/stub for ei-rnn song-et-al in museum doc --- docs/museum/eirnn_song_etal2016.md | 12 ++++++++++++ docs/museum/index.rst | 1 + 2 files changed, 13 insertions(+) create mode 100644 docs/museum/eirnn_song_etal2016.md diff --git a/docs/museum/eirnn_song_etal2016.md b/docs/museum/eirnn_song_etal2016.md new file mode 100644 index 00000000..691be89d --- /dev/null +++ b/docs/museum/eirnn_song_etal2016.md @@ -0,0 +1,12 @@ +# Excitatory-Inhibitory Recurrent Neural Network (Song et al.; 2016) + +In this exhibit, we create, simulate, and visualize the dynamics and adaptation of the excitatory-inhibitory +recurrent neural network (EI-RNN) originally proposed in (Song et al., 2016) [1]. + +The model code for this exhibit can be found +[here](https://github.com/NACLab/ngc-museum/tree/main/exhibits/ei_rnn). + + +## References +[1] Song, H. F., Yang, G. R., & Wang, X. J. Training excitatory-inhibitory recurrent neural networks +for cognitive tasks: a simple and flexible framework. PLoS computational biology, 12(2), e1004792 (2016). diff --git a/docs/museum/index.rst b/docs/museum/index.rst index a0b58557..21541a04 100644 --- a/docs/museum/index.rst +++ b/docs/museum/index.rst @@ -16,6 +16,7 @@ of detailed walkthroughs presented in the table of contents below.) sparse_coding pc_rao_ballard1999 + eirnn_song_etal2016 snn_dc event_stdp_patches rl_snn From 1d706119a66c9db91131d907a46e441160dd93a2 Mon Sep 17 00:00:00 2001 From: Alexander Ororbia Date: Mon, 8 Dec 2025 18:53:04 -0500 Subject: [PATCH 3/3] update to ei-rnn doc --- docs/images/museum/ei_rnn/ei_rnn_arch.jpg | Bin 0 -> 54411 bytes docs/museum/eirnn_song_etal2016.md | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 docs/images/museum/ei_rnn/ei_rnn_arch.jpg diff --git a/docs/images/museum/ei_rnn/ei_rnn_arch.jpg b/docs/images/museum/ei_rnn/ei_rnn_arch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..231f9707d4e3b636666315f22a48bfdc02a8bf99 GIT binary patch literal 54411 zcmd432UJttw=WvH^p5l(pdeL{A~h80BE2`IcSKsKp-2^ofPjJ&=^c?K9jQw1y$9(f zkrp6?8^7=SpZ^(myz%b2@4Ru}+hJwzz4qK|?>XmME3^C-w{y2^019pFnb|l6xY*eFIGCBa z#UJuL5)u&+0dh&mJQ0=_cq}6Prx7edLP8Q^5_(cndf|J__k{nqx7$tt8x}SWE*?I?9YP{v3_(2w02>Pj2OAd$4-Xd?LmiB{ z4#1_vqq-*~k58@hl7QWlMmQ|#^BoR_n(wr_<8aQ$)~~|}iRkXqGcewNz{UNLM?_Ri z{E395;!`DM6;(BLJ$(a1BV!X&8(TYj2S+DoFK-`TKd^s5#GA;d=$P2JA*}{DP&Dj6M7bS)-Y+PI%T!KG*VPX4W3JxVM-aR3FDtR4(m!8z@ z!eMu46p}vId?)01tP7{Lemzb^$0@RYAMuB^zc~A^F&6&+h_nA-?B9GX07!7KFv`QB z1b_e+SKN7_ME{+_8-q~k8RqRiktzJjbUn46EY@}J)c)+80mb_PehcV1^e{tMM8+qX zD!NIxFxbRz19de6yuZdrJ@mQc*hw!vUV%1YzbPR3|Dxg9Hh`Lv@;@}4 z+im}9nk;Y(_r1QyKM%s3{hQ=}eFMW2=8MmN@sQ7jlYNSHpO)#bcT;{&AhYu~7e6u2 z`j3WmQo=?9SpVWf_?5)59F>kv>tBr9u6eCQXLDls`=|byaNoDVlAoPFkF|2Kv2eDjC9f z{+f@|lfHhWDz6%?;%lX3P4*kx#=B( zN?O|K>9*90baB0YTuOoMWM!f<88sPhhKGQ&+|Yoy-yn)0zezWD(&Fg4OCO2aI`z#0 z+grd_p{5S?K2~XDZAr-aZ1-Cdhj(~y_g~lksWRox1%w8SVd(Ngv9b2JG1Nx<8>2C@ zK=^C7DfegTws!n%Oa-!=-a1FBxn#wEu{Im|6OrD#a8S`s5C7&E)(4|WCy_0DMF7iC zgypUG4hm2^~qGZT)rZwbmp`PHWFm>|=irE7j*sTA?I z)k9AtH9<_zGNlIH6egrvBw*hf-@B_>zZmGAi_6s%w#MpHQA{#CJSsfVVR-*}EoFA0 zY|JZ>jNC>})XP22R;u;=%3`MD&%Vc61=ch=N`U`XF}jP8GMtf?SX*2URBbo5tEJpx zxM!q7%BDB_F2uufnKupTwgF@W-vYYD13u4I@@+-!R!)Oz)0AA<8?=VV5jOB#a*MoH z$oEycdXu0)@d#-n2gmgC$BVr_jtu(E+kkK_(!@Lc?h>#$Za`k#Kc&^GHyeadiI(Nx zwPcLDBCNZfKdfz^S1eO|Fwq2riXPGc{^(CfNy*C#FRP+aT)5!T)5y)F5nBD%YO?RK z_-Uip1*y%DE%FxD6Ji=p57M4A`q-)P&|f()^t;ad`nOPwvQRoxsK8=UE;L2?W67T! z#Ch*3qNUw*neuWnxfV-~=bagc8=`a7%Jzl(-DoIcx!5-G`+3@nrLk7y026s%Q4$s8 z6kxCC(>)I;{jrBQ__IDod1g%gJ*%|4Ay!dP$&MR8&<~^WbU$t51q~lB_I_Mdi{)kj z?-r?pwq$!#AfygjH!^{Dge6TrNPEUC^xSgBN78gPcHd4X=y$pXP##H*e(J`7ZtFi0 ztqEc7B>F-`J|r|#4u1W;Zj^MlL6=00^eZn^xgS*JJdE@L@N{y69`&1E9z1(rKB8g2 zy5&F3=)+_&w8x!S!yUJ`N6f2MRb^+K8%dI^+K;7AlI*g5sHi|WNG2URhf*{ zpY8^CLt*c4U^fI`Xh&np4`4+H&9Amovwuj7uPsw|H4L(5+K0QoJhH_qgp@<%!w$_( zbu7)?T59V#Q{T;VsO39uDtW(*GGxFFptLlAS-nBjNRGY<`#SYf)?q%+t!&fl!!6+3 zN;kAHpp90$lv}FjW7lIt2V!{Rh7>ZJYrH;ZdEd9}wXxgD)T`%GkB&e<^8gF5V6Pji z2Qd=*9MKRj{qfnFR-NZoqP*-77Qrm**%Yxmi3sow^m3Qu|=N*db6A?3U<;}!;WLF za^8w^3gT6SttVV!K`Eg~qWGIvE{pro)E31*shvfp+IC5z=quNaUnX$G;?q*f5y=2( zuDGkHE4mTDH{Mn>3m<$mMEv@wyqWBvJFAn$_5SzUMmpd|J+U;^_b;N|S95o|n{be} zIE@M*Ex(Ft${o7w2V+&h_q#(axO-$455f}*NMaqk<2S%b;S z@Pqu zBsx-`oR(%og%|r68pXy_;_VAc)<_x*z@8oYC4a*D z)Q->3&NrpcD^b`th!-I_+E?zv`nGsQbdXj&%6OpHxuZ9Ir@us7LIOARG4u(7JVsO_ zC$VN88KE{+ed@xXHFvu2s8OEP!Px>PKVja?29apv<-C#QnKIjOZ(RRew&cvnlNnVf zPW4f}Ock5fW`rm^OKK{kIHn%Rf_i0jr>M}+?z8bvc1@OoVd`h&rTk6lIjv&XSlRV& z*XUX&A&xSZW;X&?gaW^sdMpipXWM3mSvN6xqD=bRKsw=CQ5`^NjHq#;CKcM>?yhs> zdqVxA-DTt7k}!>0w=CfA%Dk5SN^YBWDaaPl zS6sZG0ea)@(&Spy!F?hA=#y&6agBi%{M1@?ySUAh^~p4-0WIzr(3TpBO4F_{DBGAH zRHGVDd-p*6#YuepCx>rUnJ|^8WAfNKAk+M!mP~5L`$p%a24uJ_yw~&H9Zu%NI}H1B z3OE#*!D6;|JCEgAnxtGHK#5IFm&cE%%Xd%9vRJem zr8k?>yFvsn89(qSZfwx}y2RwGeU&K+)uEN+^}A^ zP)|-Y_!4~QJHe6{W{7i{#A)Ho@05CYySo*9SbD55$Sl{ydqNrhJb)yd%+s<)j+Fo& zXg*V~6)Vd&QP1z7+gcknlB& zr@ge)8rNcPpm#$3gJu72r{C_HU;-;!w0UDoqQ;wSUhlZ&P5+ODMw(^0$@Dl86Gce% z$widwjJpr9Nk#jNKq{SGCzZ&+qPRC##AMZzT;h<&(-hY-w!ifzs1Q$b@xI@1(FLklUig3jxcDiZBJW%ps^pp_LA4tHSuo5k52ls6_He{ z^S6`rxMVYivxaX)yGn&V>x$bod#+C6r*H7(SwXM(Pt|{$nwp#VpXAX!U1YQW$^1(4 zN*llb5Uau&&DuWBHGY<$-m_fLWgC8^qiv_OV+34LC7ynsJn02hla5ncXiBkf5a zG`h^(cVJ%ayGD||s;3Wf>_bnq!cWC`W_1;rkJ%zM4#KD|rOj*XCFuRSGSf zbVQeYPkN=ZRhJBK-3!(NsIX4AWw^2XBHaSlbHby0BrVXzUP0b=;I-_vK@u)Nn(8Qy z(_~j#S(C=FU{~X8@q5HbcYB$|C^Bl6?#44!F$?P1f!8 z(#BJ2SJIiVb<5L7>vXcCJhQ`!)ltKZ2ni&vUdY z`UD-)J4)^k{#vYT9kuUhiGmo_x3;i;H}L5GfMtj!e;Fk?T~_{YE3qALIo*_{M58Ar z&D$Swtq3~`a}gBk;)jzfMmwN=4pLzdy4qZnK72dIn9|))czbp*W&0M;Z{jjH9l>qK zR?2|uR}G@i5te+ktdtkW8?*c8H(P={POQ`izHMZLBh>e`^ps~0a;?{x>qJsrL7_Bg9bu0a_U z%T}+mSZT%EYrIv{6++KUHlFnYMrDv3?(dM4zqG|Q{W*lL@Nh0e>UTwdfw1dEGP?t! zKA2rJ%*xt>=6vXH3_2vwoPYCHuSjLpL88LrxGOaO1O~|IzX9iS>asq)gA1r1;}j1Q z>Y-{a;Q^k#V6nticrtoC#k~7uarf5+<(vvI{TA>!<054;k$1k(2hVE+LfzMOY1#c@KFD$caEj25XTRq}OE$q;>2BT*?Z zSL{Gfk5vech?~nLKVpf+;W!!A_;8fe1z5r^GiE!;Uf>zy5p2=#TS>%( zM>_SoW}-%gos{!6{`6f#rB7PDf_ECld%LslZdde)Mf-BTbg_|f!6ekJ52UJ16XOm2}(&oSA zy|?uY>GC#>-pT9=YtHv-b5_N&fIXj8|FuP<-!~m4TDku@8W40{-R%j_-^e*{eN^k1 zkz_p(kx=n^M`mh0x`CiF&>;1&q0o->*QcMNtpltQ6q}Dkjwz9T&k@fP#L`Q9+ZiMb znMK^@-=A~b0xBn3We!`N;IGdWX&m(6*XGaI-F| zoebRO=_}z?XRsalMe@CY?d90z(?!c%%&2GKmU*(#M*WeO5sq&L?iSlx5cZ6pN@d1M zTX{6x)DZv4M)W=h#eW1b{uRvlKd`U6Cw;IMJ+rQA(8bQrS-=gKj8+65T>0|J`KF5MAV!aaOw}SuWPG?*D zjxFmOYUo%5a#rQvL$=)?4v7~)-7gVIs?Kr}!-Z2P%q-5Xs}dfT}B;Q zV|R-@6$^lkq4CSb2lmISdA_`T<Ch&&E zUc<-xjC(^3eClQ@Os>KdA@-xWJ2EG`hN8eX6N4L-Ov=eDe ziQ;D92J3Q2eJ4^w)8B)$BeUC2@>kYp*5EoSTHa4BV31=(@uw#fJXngOK4Mn|}9BUDTNCd%egsTCeGt`$UksRD~T z<#lOsnWGETh$)V2KS+9F2U2)aG3?S6KoIjT!Az~b$y#Vj*joP7GYXjXDjkGx^gOEy z#j(M!sPgILS2|zxB3lHsYL94|wN%Mp@O-sbix5%fc#ghT`@GiF^BxdRnKKMxoE}Gu zfUUGs4z9wQCfvgo#+UniBX++z028^1^T!>_&i!UG5}KDxEabh2y^|SmN>NJ2xi6Jy zw6Xpwo@jPt&bk)qapJbFS!U`jAU#lPr9GJJiQXA|lNR!s>^V1L4q4Sg={8T`PLcIp^%R4?juE^&G>+f%L~i&o{l>xGtsn^l2O*2dnc7iXmCM%cBB?lv;tV>dUmqD z52XRO1`l@qR-__7WHKLg>~FDofAt8qAF&YXqDi8KkJ6nIEjKnZgjba_s$FA5mrk&VLql3s7q|aVun?A}a|Dm!jO2<0>jv1K5Q>I&2F6Yl35s=Vllo zFf~<{{|^QKOVR%a_NsDh;lkwFPL8?c!U(M{v%uZ#6NNM>6XRc%1*2(N*PO3Ao>87w zd3CemAy}a>ezA=cO}oap7sEV~U&A6s@!PuM&L3`nDADn@ok}sBg>;}s=3x8WPh@m( z(~>mqC55dh3zIu{B3P>nz*^7Kb!L2U8ylFFzYYFaUDiRVpfb7eJTV=QT$V_ie<&IXioFsW+ZBC_v6hJP6-JCW-#@ax@I6o zL>7eZ)gv7GoCfXPh`+ad%^@KB9yyPZFKg_3Z9taIv=7pUI$NYT?!(kr#o8-yDpDUqTc9g|ALbZZF z`|u?yDy_bo3bZqb1`?aq_0bl@cv$880K=*h2(&u;kNq8y^E%WFLR_YnJ`GpB~@?oMB=BNT(*)K&4Ivf zk%CeqEhjqn^pNSAbbPXER6cI~-vCr<=ghMi&J8&fXg>CSuBg*tVs((On*zlNZ0>6s zP`muBxba}R_!eMSRvlBNoGT&xfu<+8!GUAH1)eMM(f)YjAfx^?jg??b(5DHB?GRJo zawNA6Ja#LDuJ=Px4kyU|o(RpaAxT4N2SuWUH#9Wpe|_|9 z*x2+>c9`Xgyaj}YS-hAWIUnlaVv=K?a0*ySuQI#ISD$k8us)jk9o;|6LOxSH_Lpkg zY6S=T#t1}6rH@?)e|y$p{Y!&chaW?pi-k($I&BBKr~iUE;$*ZbVGRv%Xh|)4cL-t{ z9&7erSuDH+FNTe_{ZYHUsiSY#!^+L4E+!guF(uvZoDK5($y(c%DwRkNQ>1)_#)ik8 z{AJ{8y%z0>LF!+E7tvo1mW|q#U6vj)C_Xd#n&4oF(!)W3oD|#M5Y27hU9Fr>bV@WjzZUwoXbZPky6b*uWXHE%{TpRYF}3 zvtv1==x2jc=eGv0lg^dssQ}jK69DDJe|84{&mDVZKSK1yt|f>c2Goymz6i>6yiBt} z|2VynCIT!sH#gSQr|lhq*BWCr)cE3Q^~pA~Q(?^=JwOVS!c-yrqPxVBS4qmfz7$I? z^cLWK3m~68X6>{QwVaj1%mGp*^+0OrX2D2{i2*i`5G`Z9W?=ZyGf{3?5M7UMbp zlO6lBm-i2JDPEKrJ{%I8*%6)?TBi*uK*&*#TUt~FdBM*LN9VkWT{{lkObp>NP)yxv#<8IO8ZKmqeK!#==GHV+@}C-0;mc+vj@$WZm<< z&SBM$C4cqsYW6eOtFxUEo=1KV%)UY>_dP4>QVT`;6+)Ie{!gODVXv7rwQBJu2a~+; zus*2m0Ro?$qIebJ0Kc>J)?~vkKyL7@{1V5z`R@b$HS%&k--}-BD!GI(NHbkU)Ud?nABa zt4Z+e`Yqr{6nD_l>4&UF>fWMJdth})K0$T0jvRAzXb9VGw$#K>!!2Ov>J7(T!{;Gj zXvvxR1q$v`UCoEM=nm{IBd13`(E5Um!?sQ4hEpBSCT2o|;LDd=4ehK!s$j@+YG@Q>^6Ha#9(XV8p*d5C8A%^PgZ6tv16nwggE=TsT~9qE+{v zxu@d)!H8g+@;vw!Db%e07n0=fdKd;H0!WLC{Wq0Mj2=^={2%Pdzw7@{F>cUsc$bJX z|G}`->1%otQ8w!{B@&2;_HZljYP&yS{->IP@n6+)PXAOJkm{LDikJ}!*7NSTRpv7| zak>*AbDR;wioGijkTt;%lGbIeK+)otevAe4M(_P_FkTDu)jKk7oP0!1Z{*i0&^j|b zxcYoF#_oaiQ*kA%<78O`YZk$4p*ZOGTL9s_s31};$iwHRw)%(Sn|DWXICEIzF^7HQ zbFWCf(PVI|=pe%4%7%;>_xk`%zlZoH(53^KXiV08vc88$U*r!{j(-bBJt`F+7B)=k zNt8;;L)wp%@wW_gKNre>Tk}#hS143ekMQi=3ca6KTW z&t+ItD>2RJu8J1i_ibR+N;YkeYZ5fb#uKRBVG1}K*bLG@JnjmiS;tD+0F~AZ ztT4yPsqOk@ZS_Ly31&X!4;cRzCKka?0>^iBiP0|+&gFY0kxOzz-Yv-$b%;t}(rEaq z@TiaTGV^9@Z#7o5Tt^fmEe35mjH+iTO116ejMu#6sK)<)Q$6i+BiXOt;Nqq*vT}sK z&y0xHLoy~+-P6q-2yMj4VBDbPAt@oo@JKE;(~bw$(oR2=v|6Y$`{Ku!_B!ixn{R{X zEdY!CE949M5m-En*Q6dHn(Q5Q603R(2%~^-fz;2=zeTD?@L(^I{Ub4cOjnT3o`iie z^%;xt&=!{v2spUirhg5#YseoWp;q|3AzK9A{<&c2x%AHaR<|Rp@BL%-fIw3J zjvi1{LX~-OthA{3xnCUrE5tCvf`HI`$3i~#1R>@!cn&X)=b&TdY?L*2=qjB3cKGcK z7BLl|O;GYzKN={~AN1ae@Fe=FWV&UCIA%?8|=@95m~bK-_|-Ev!~(PgM9} zjc6ckOCwaV#NcOF#HTTlDlN|-^)Po8ofFE1vVlVhRvWtSKh8xK9%hsj;Nnc_ga(W& z;gI0W#AA+?0Q3Zvm_LlChyjH?BK@;>>=e}%b3GYiVJJ{0@&uN_t)(29agc(IzW-Hmscvw`DT_!@>1ozBG*$dD_IwlnR^RnP58DiwF<&<> z1G9t6Gceet>#F8A=~%v;7X&xmsi@Ej5b|lreX!9M#-@zrnBmteth@!R^ye-; z2jQEZm2uN1{h|!A>=?H*gD@ZsFP;a%4k-k7=C1J%Pi+i+c3STuOuK}NUBt%sDM=QF za|CQ37h3sEn?f&&OMSBYNRv8Cv$zSlh z>6CCF<>0OeVUYpc11flWXbe{D+dmIB6{cH2jQ)HrNzzz)uzbbL+MXY_YsCsq(T*}P z?CLh_n69|zu~dH`r5<>XPZfAE63kl&4jhu6*l6%QqE0fVg$Ln-J>^CaX(^Bw!d zjXPVh5i0D_$}Ha*@I!%N%6MJ@9*HQKGI02@VmR_az6zGYT@${FdB|q~J_qxPe5XY#0fnzJ%2o4m@ZJWdq-Z>w z=VimRL$70g5ihOghY95Iw#ZQJ8>N}NQ6RSV!b?MW2bkCBUc60%d4#m4pc|reQ25RSZj%HN@%jOXVJfA6bZIoG->>}_9Sh^ui;xv zwoMY*9ncW#T7=v%;~%?~7snLQ7}YA-E2?QfL#SdL;qeaAd6(<7iq{NzxZa|{K$e_- z_X6DGJpN%)wnFR475PAz1#4v0{*^=2>FkuKSzTion5q3F=cr^)>q|9HAe096;$vPt z)lN1QX;f0jjCt7NO?B?2%4^k%TL8X^Qx2tQ-AwDt4JNbw<<*_5C&6#&M>UHXSO-5{ za3xvpGdq!J(5RL&0?NuB(U64_;WeeKkCHga(o7omtJNFlueD@b>g^3Lp(7f2t(#UU z!28`H^dzD(x-=gkm>v;SjK-D#>V=t01*s#f-qLrk<&dbeaREKr>2;1Ih{!iq)d{?z zhS^}Z&;G@!?6LSJn=i`pm$FkkU2+(tMT<1fEkuSZR#NJ%Yt2h#Gp~S1vb}+bb+O6~ z!sO$A*#}MSFZ_a&=NtNp=aRyZ+*h-?jv=&Tt>Smn3!KupgHYO>vv;A%tvv+@l;>Be|p>itIPTR`Vqqr7oB z%B?JXoI`l!!NJ=8cWibw$XsttOBjP*uLKybm z?rt%FkYm+`d7%#PG5&oQ;`((5*%9E>J_zG2ii$Qur33k=ga+3L^Ana0mRf>xv$fRE zh`5Pm*DbAl5K=wo=_x&{WTH;iiOL2aNj}&S0B!+gG9mSQG}>bRMkoQPxenNVXY&w8 z2MHvD2(%vL=;`U7xBm!uwHbZ+rP?6B61( z(r9NjfmV*-wZba8$s7lIy{m~mb=u662rcZ+bDRmVYxx0R=&9jQeLV!&^IZ9M3!p}N z^rr`$UZ7bJ`eME#H1`XBrs~q*p!g&tWTeI(x97DM`}GBjBSqYdfJapj;~h-j3que; zzXiO@>E3nd*RvmjybHkdnl7oRCfz%6S-@*3l+6*#;aseB6JLEMWC>>R%+A^uw?u}m zSCcrG7VY2N!mP}pf-bcr6ugtr_Po% z*;3#{rCyW2T*~hLU7ejRot$-fLK%Pc23IX-@03?)#`|so5|YL!g-CE(=1o3EpC; zYUj{8wgt)NLmU}_d~TY7Q{HE$=sr^Q0S&XrA$Or8a%-7=C~bJ8;|k9Nx>3^6+D>i1 zX2*22w}Wt3(py|;C3C(wUX8Z?%hD!mW{cq1$)WiekP^*)l7m#LQ@OhQEx6Nv3t%Bw zX|jrVZL%98(=_g*A?5EruQe~gDQ7BX-awNb_C5s}I6E$S;wEx1`daX#`Fg7iJhQ8r zY~FJ4TKV9$LtD?MYr$n;TJZii1AXnX&-x^oL_STOuE5Nb4knbuq_hQAQw)DvEpQm` zK+(mW1qW7gu_qP4+!4JZ){&{5*~QAEN7mucrMmk2cc{;(Z@IFy1#gAjTj6JA)-WTb+8-&tY>ryO+E)Ij??8^%ZZ^KWs-6Oi}*aog*u-1y^Vws5gQ;-smb@ zFsbQyLh4{cAs83GKOFk3=FqYpm(p~x-vif$Mu_|AQ+lHOP{3)f*;ngI{ej1YBqZBBfx6iUQ1HUiiJBp7#^i_Po_Hrs*Ynip5_kee(RRSS! z3s6Ly^;HIOI0~BBOj$Rw<)<k6UCvY_;t@mZViag!r zto`shx5oR%ADCsm1cvr51U0O%&SEf)^ShZ1b#SOqYln7cl->C#YgYMWxs>U6rO&X$ zp@32KLpJ7oU-r64`|M%?E`egv0OwJ-M>Fx95I z&mWo-pm?AZF3iaEe({Sts{t#k_dq0{Ah0?d2S_Qhy8B92Ilp3V@yi}m@)#4^_R5*4 ztpmn{Fd@Y1t_+g`E~qOsA9_4YQpLr_dLit8dRCF}cx^QN^niiyL7V4zRk6*Lz}?fT z{^w(-S@(Q*o9(hb^npByK7(`#MDPn(?>Ei3o)UjNC4S-|dVlek{KKwxW1J;#-0b{9 z|BG|0K2i^~Y<;k}Qf&L_t5DaK=AUN)-O|iZGtFgOzhH!oOVAdP)4A;+f+TMrj)7Z9V9646Zyq!Aq&I(= zBGd!WPwl{`3?4^jc=M@Vmnk>A4OPH()ZSOC1v1I9Q^K^t@_thH}7lw8IL}U{1&o~VrE8w*SUy$Qc8+3mmkrOc)Im^2 z&h|pE<`=#EXttc>_J1Agp_0|l0`Oj83{(dGFIx4=qltvyWxiE9_ebg!$+O}4`Bla# zdo5wwyz{>dkC&Fn&S|^ZG&P4!?i=nEptcEAouq4plzEQ&d=H?0Bx_U$Wfo;+kcf+7*8lnB)94@hf}t zBik25Uq6M*C}EqDVcwP=lWxO0u`4LHM1HT@(?xX=+Wr1{s`slHEy>$dMclRL+Rlzl z9C*%2H6(G|U=A@oc8Tif3%sYk>l18V(#b4w)&lLa)r5yeI!lfPB3H{h#Qt_iV&S)(!w7*Wep~oS9cohu9Tcd1BKX-(| zC6)CF!Y4qxDc9{$)bA{_OGYBh5~BZ{llxyC+waNV8}|-ZE-W`OeZ;URy_axFoq<_w z_Dx0+1`KxsbgqtIT+eDHJFxpL zKzHht*rm-(OEUO0vvtwhtCmC#)kh99Uwzw(5n;ZG$!CP!d1lciPqmXr%hrqMS|kL| zd^LeI542o50Mw+P8xJ0{&hiZQah5s*~9r+W*y82@?WNSBWi+>o-O-FdWk z?x{&5Tnk7EWquj6jhpD1-L_BAM;8KWpU#W!x=Kh$%znvgTgxo~=QeuT{H|S zt=g63w6rfRHJz^#mflrJIVDIzY7@NQ%OMw-SUr>#MVuGkuMIwn6aSsE*U!@t7uT2v z=2~Yz6mk}md=pW;Aj)QjFyH~Hca)-B;8*HyA}&(P&cD9thqITh%yal{7PYqY8~Xm< zso6_kp_Rn1_4jXBSfN|^+C@WWAAkCyhYWk$FG%!^m+$!R_?yC!CMaA4(sk^TdI(XlO~2gwR9Q{-pCQ7%NAymnt)7@WKRHmm{n|CDzyZeO-1`G(OhKHZP> zjeO@({}y5|-U zn0vzurG*x&i$%01#?h-y1(b7ebkAnr8!LjucsjjWHsd?Q@{f4Q5GDLb9)Qy*Bhhbq z$|7|hSsNr!oI85AeDN6&1g9fL?a$bZ)%~cW{9O3SMw8+a=+Hl)#|*9RFh8**CGYxJ z(SC0=r?ALc?6&rpNx2hN4 zs3;R3*Ksk2N3d;i-=8Ez5Yf?nehqqC*EoGzx9%hL+*q)jH5!dqcb#z{QXPvXn_eep zZE|s++mh=0%@Ew~ii4zsWt)s0*m7FIDp?Fw4sf7K!KSKsd1IuL1Qwu@bO> zIGEOpk|5RlvmF#ZKN>W_L{9LWONYCf-HXgPt6MVr(+_D4D0OIfN;&~Aur%cEzxXrD zB2yV{sQ^ZP0dp1L|2QmgkipELxuF;W!2ew-%ZNCP#GjGMEMbwYcQ11$Z=hi^K620X zz8Vv4%K3x;7nasszqXzd?X`>%YgC)UH%N>u#;`}9SZtP-~D&_ZLlb7;%>>Q*gm*ee6 zW0V0_+3*@J>0Pg;GZ`)hhdy~jO*t>ciUm7LxdjAe=bl$9H-9tJP^+@ANaJ2mC=u?# z`h>MFH`&CmKjkCE!ajU-#`Mk2ZMGuiiO%VE>3OvvB-WA#VMZ@ay&juJ_vAVlj-~Pq zO#z|1(!cWSk~nkenL_zgYLzdODb=|fa-NS8uny3LS=Ib%=R$~KpoYZCRunrPd=0{q zmqX*JBu&+rj?JrYHsL7Wck`XHfnK;T z{DsNl0sF^$gw=QIrbIoW1Il+;*&89X*w1tY*#ts<12^<`r-H#%0aHu$DxX7pdHA~m zLEp1um5jc2)J?hdocmFZGN3sn`e(4owR+afSyT6#r}LHM2Yns{-Z z;KRjC?I-NO2eP{POU!5IC7AW9R^ZjH9Pu~O`m=O{6MeUUA{qSG9q&w!<9->c42``0 z^yycNn9u4PN&I|o!PAHbv85ayYLx^(n5OzCfA@N$S-v#YHoPpEo9izDP-&El5H;e| z+5jT<$N{GhzTqM(tHC}qKt|;At!er1Ewv2sH^S;Um>f3I>7k$wW|+2ED9=LXk8G&= zFe|(YY+pIY8txd)27!ve>6((hm2T&6b-$nc$LBoSd0oJ`;U0pI6b`!dw8DTpXL&zi zqE2$N1>F}$|$oJvEQZ3tmanM6?hy*2I3Ok z6Q!A%xxk^8XO6h3Be)zR+a|c%SBD19$eccSqe>=%0 zfkgNr22Lky$Fgs4MY3}jxL+qDrgd@10U9y@qiEN`?s?78-B+%UyY@L>E4juPg#F;a zDPa$tTCSi)bVM>eK?p$mD-UcgGghkZwNrp8uXcEm7SBK_V`MjEVL?Xgv)9e&w7JvP z_*;PKD}-$5bNr?vD#-2;2vKFyP6B4AN#HTKve39O&BW-{s&nlY@I%Z4MU;YaB-N6u zaLJ)Vx{nyeZTB$h3-|R}u>O8DApafLL4vl{+-|lj2XEE+uK0y1DAUu6SCfP3qa0sP z@+*3>qOg`z{y_xr`T?eKSgK znsYHIe)6EM62-Ls*4&?!W#S!lgDz?Nq|cGAs4{g^GBUF5u!Sys<9?d3vTy|!@N*S; z4~WvIQqZz_!n*^{Su#`Zd&oG02j4IG(L2GxE@L(c>*4k-yK z0R>6vF1cxC=nfT;80pRdln@C4=@dk|yPE;&R+^!Eh8$qP@6vPb6VLaq^~PGvx@HDg z1AAY4|Kk^%iVUQuM*{-d>+V=m`M2bbAB~glnUhskE1(VdzTY~?CNTYAqIL(P&`6oA z{63$&CgN@+AZ)2NDAtlIvEJ47^l5~yd@$c`TRZvI}Su2 zXBQIMoM%^WAkq|&Yws>xw=Dkhlg!W-Eo^KICq#JB^66oxo{~C$2WI0kZTm;+=RtlC z8FI~3c?XQwn3|t4CBI$^25tMCmhs3?K+Kul)A}-bnp?IW%}gCcGQCp5T?q~nahsd% zmBrn*inBMDOi8*mGKvwq5s=YB#p<_Euh~dJ96g=w^UaOrv5NXG2xElqdef}cGgHjP zD+0tuXxBg-I+m8#3*s{dDg(hdjKL{Qx6CtWun7}&qLqS z_kSfK!IQF_ZFRk}=#(Wg9z2hFek2SDb{Tf%CjggGP-x3{I{L+ z8RrW_7W}L-i5b7PdsWRyZB#JI|Jx>BkG{>?dOd?W#^L~bW(Sea%vw`l1 z@mq5(ExHD5I91|T?)hHs!e*phbD>|5qDsca=nZ=#j@kk*6cJe&Va7 zq<+HVWx^%{GwOLyFMJ}`Hf6pjzW~1+kZCbswYDwvvzkrPp3*jv#WU&;7IlZ(py#linxi^*Em8{TSuCRnMI{(>pn6NLwmOH@nY?Heje)k zvf>v`)d5>U3l3@Igcy_?rUh$fvy5{xkP6;Lhcwv+niICkwIM^pTYP3M>0%d51!%5` zPOIbI$%0j+(lGCJhTD_F605-`>9Xw1ktMjV_eP{p-H18+;rl|Jm;yH4%Ko^%Dy7cx z4l65hY{vIG#UtW9%y;E!aSMb8?V!Xh48`BAn#Xwjx?GGI#^U_X$x?Rq{@W_NRatqKzQQrNZnyCNz zno39WRYmrkhDpJ}?@GJ(rF>0#z1Cb%>ChENPD;h^+SqsvT-DqV42MtPzp1w$>qmy# zj26ZBqdA8uH8DX{PYXa8fw%z7osHSZM<*NRPFXir3lTdyboiQ$`yCN+Cf zMIsm3S8aRVa&+vXI^HFNS{j?69*WrA-es1Nc6N>e&A+gr_6s!s*Dnwp5)XK}tYwkz z8ox;^fK>Ec#n*To-_OylS}V5izwQVSKArZ$Js@;#HW|0CzAc+ml|A|f(9>R*-|3Ye zVYHR^EzM1BLFjE}t(g$B!z4<^Ow5R2zV~UhKHM@4N3|d{#MUC|XUCRk5guWyTnaex zZz`)JRVC3As<$Uld04G?(z{v+X+#@wQdcH({OzNe4^2z!$NRX1%x5ph!<_s_L}Zw} zihhBVrqenCxa?Cy>IW@dU>glFC zK<~P^p7Je6|F*IdspWxLd3P2yS^-I%V+#IexNJNB-M`HCPBXd0&6sPgDQ3 zM`|y-J=KP;>Zq~r%2$QBi;mm=9|~Kz^4k(t85p|^6CaoE=S1t8z7Ugd&c8O=Og7Qc zEr=6{%lXtzl>f&aE`rlO9YvDT%{D(H{Kty-Az;?fOkPjuow+}ikuDgQ?7MeG+$Cp z`%2>1D0`IHDI4OZ*S*({FZH189(4bxVg$NT`r-H&2)Sf%S~h{FJ-5WcLK7{7mn#jT zp~P(0R^u8fyXBR6SF&J)itjd#iYiEnTRJds=}(c=Ai>q}deqE7+9$(^WQo}?HJ*b% z72I%`X9k$+BKJ?Td857qSU|{sxug7h+5N!?sCvBO;q@VCv0>b~kuN?ZcUm*)x5fZg z%d@SyVlVX`88IYdOH$GmrLjTS&|A!BDk;%2I-~5zTERYJT)7o9wXKrffQLhLp$pG} zC9_}x&%pK*4B^caKSMxTFKCRq-z_Ryn$ZqvGOH}S!U{rFTp1Kt7#iDoINJK#Qw>+I zv}hMty}hd>zt>O2_C(R1Kml8oQsoH%KI!^mOayvLef1MTdPele_hmj#u%C~&wCq|N zLr^kxw$(0rS$9g1zPEJ#YUHim|K)YcLUY3f`y~;-(_&Ie^qXpd zUA?NKLpsr!>&-NS>N!==nqzpA#k;k8DAA^tY`nKGfo06nfa&~ExEMq81)HZljoi)wNv}10}xjlH?|jR4Xji2?@kL2 zO59?Ic9Mu8_Kq*D7_UFH)Xd>}SjL>pm19uVHh|bPds;9;bTws}K}A<@3SX8QK0M5D zrJy|zh*LtE0Wg1O|u%Z<+s5kxa`9FiFFl5#=Q^- zFjQ*fVq-7$l;!R`EX`|;sxmQ_r@YI)7|ljdyd21BhaEe(D?`V~hU978ED5R^7TTN` zZ=`s>WWdm|ox2P8vDve$S0i!zp!7z|U5{#02VTU2^ADSR$m*HTSz1F|idQeLlzYn= z7Ccn-`Ow~Bw}W!2((KP_{UuduYZ4vBOTQRKetpq49tB%i6Fy1ff5Yt)pL(TqhHfSd zyWM{VRj?56ggCnynsjnE<7^&})!`QQ`a2RCDV1a;?fP84i2zTYNmH!CK8grz8%zM4 z2Whhyg_}_Xx|M5kuM5q$N_a#T)=<|Jx+M0RV5H{=w}6=xNp&z2`fP&CW7PJ+rJ|d zRVP}h1&Mtxz%25i(2T`07=Q4F^g_8EYCgTBP0vU|;%lHmakt_u!GMa(?ak*RPFHQa zt)a6W3;dE3-aJ2LMHSr}7x1z14AA)gD6Q^4l2A3VeQXIkOuvzRetpD8fR`~QX(NTdSFz(v{yOl#LfQwD`yjsXe0wfa`ngT|9d zFr;B?eNGYt<^C>jOL%z`@g0cxYl3N%%n*Vh3y{U>S>W@eAGcwttEc6(kY$oHni?kh;sx6w zk2$+-Lg#H*A)w|6Yv}d4(U}%1CUyiTc54G&`WdazXnEL_50i6$_Hz&Ry2jw+ImtAm z+*EvB0oD6B`nV0OrRt^z!7cdCE3IHn6aP2fr$&Jy=h{S<8eq1p$w+Id=sO-Y#J}$* zqEwo)2R7Cp9)9SfWl(qwkl66c{1_356@7+0OwSre{;GRkfpxq3{Z`JvUl9Y6sRvn& z`4DigB~+TL=Ltl@HdZgU9oL1|TPl5p%0Z@uSRN`6ZJHL*+$Yp*6frXyl#wAT^G{jOIo z7z{q^2#5sVT*#T7NjpTG`~nf9O~>7bm3TOhXHL|oUpv#(X9{#Q?$eOo;1Qe>;QR(= z{$ZW==ejOshGddQ1SdN@5;YEDdYI5Yba~KR6;mz~ILqqz4K0rfai!WU^th!PPw0uA zmyZ=(Stkd`JIjU)U1MCC)lL(oHKh(8**fu~XzN1XI^pjNF0~}xlEs9}$h^9JI29W5 zwI1DId~?AV^$xIaptwEo*{0FNXN%ry)#MfN!DFdk}9Gtb#|_HuJi6Hb#cExl~4Tba}Y$IF9JUM25~SHa6gr%Rs^JU zLIN5Ulg5BOl`q3pnnpvAgyuEV-0C*wbalxpX?^DVBt6i(QZa`yE?hGlREJJW_$Y|w z>Iahi0yTGOA8likfvS0$v!9vJ73KJYiRM(UC{+9!#VQlYo5`(dN0a{QNTLi_v1OZp zEIF9hWBG}$(RR%2U$IFkeY1r-QUyn(y&Q1q^1>D zXWE^RX5A!8+d^W!Iq^;vEJnk0CgEn{hwZFE%*Bfj8?uVnzd&kR0gR~3lipjZ7=yOD z&?V)BaeWq#1araBHYg`(m*JkuPX+~6Oj?zd7`4~>bqM)&1#IW;NN<}U115RxagDD3^V)HV)cY3OS|+W}%*@apJuPPe8iG;0jy zq)Ck^(XTT&Q~D86RPs6Te0B-|qE`RQe1nNR_gU~W`^BX?F2;vSDcH&L&8=^>1v6KH z_$~(|_x~ZL`u{)IdoCZ*_0Cq@A-C29=)h8i;7qtID%;`I3vTB`yy^T~BWpU+yjpx< z&_n0(1*hN~F;6cANnmz=sB-9qE8WgH(S#&PvMy1`TQKAH)ZyUB&u0fw{K%XxG^5-y zA%3XEWoGL>zB4t!>$WVg3&a4|l-~&#nW<@~Ef&~S$f+xrhb@vyc`7y5P#{#BAoi28 zg6V7z1MV$37;D$Z=g|(jTm&R>`Qe0v$uE-t(GW?!={H9iADspg<` zcl_Ua)UKP0jyw9{!xfQRVJwSp52Eykz4W!c9lsoH|BxQ`IS{b1YzSFR6^?sMS)5B0 ziW`h~noZZJ{?|;2pF-}uU8-A~Rn1-_*j;)mx`&b2#vpp9!W_+o3Svy6bY1YWG)=l; z&{9u+c-pZQ9X9Rc&1K#z_lT<7>!gcrq}tuK)XUc>bx^*)=%K8k9LD)CC&s z_$$lAsP696mc*u{a2?&TMAr4oqGz4QPe@$k`k>*_l6p+EX!A)ST9fDF`qE&1o@#>S z#t$(}f}Z00vg90u7t)U!nC|n%2tPNMrtbbo9Gbx`zd22a9vrx%>@F(@)=(DCUs0E( zGTE6GW#pV4r%q)yKtsMr8oTo8k4;9_NJK#H?P#oF=w1jeN}y7mjFgta}T5Bdjj z4t1fVv++k}d6b%xhJTOZpKFODnOD9tqBLgi%(o{fc#9I zWS_I}!-y@=c$gpV24mmFJBS@M=OFwn<%%Q#lPq#!^dvg_u9(>E_HV48oo$WCs=GW zpXwoIy)%{GT^0^Ktw2x*W+H&Q=;P$C9I)#nWirYazm|LFM?U=qUc6vVknR-6w)`ZR zPEd*@>?vQB#WCM?68Ko2$mP_{+z-QwM$yWK*r7Z&Z!fx2-De77^G?rq*aqkl^tc5h z$^D@cch+tHzN6Ly*mq@rW)Yt?26e0A{+wMNdLSE5m$cfJag&7DQ>bSpn(2Bay$)!X z&h6H3g@&#o0~ist%}kOy?b;pg1TyCSRhPiMGFzxXE>Gmt^TiU-B}8`+VaPSb0J$ga zor49Ddpc$dYNQ&VM&hN~iz5dH$2M@EZmL71068(i~fzKI@X*UZ<&t!M#NQ8tq0Lp?(I zm`@n**K>POs5Za~CPQy$9_F`=Hy@Y}U9K;t!LU~?tcAapt@c+CPu zFk5DTg_P|Qy=AVPtmPqAK3__4sxrywRDaCM${vkJJo@D<``J-JL8-AvO-NZR`ASZT z-hIx}XgTRVJ7b&&nksCV^8M#Uj>S9UyW>00eL+)fk^PC+eaE?lu*+?KVzY7)RPpM^ z!t6SvM_BS%DeFaw{7@x{$_0#_q4VXAT*{7+KJ|MkFa&-?Ja0GiLwoJ*xb>sQxJwqh z(&56*a=#-rflv87(7Xi5097qn^_S1jp<=68Yr$T^TN0wZCK;SJZWfF?qj?r2_xAY? ztuDkyWO7+|%=3)qMndv{Td1Vggrh9man<>ImY%fkbp-a&STi#ia2UV@14|VU$oX6bcHrZn9>1ueMoI-civq+CQ4K*0XlltGFW-_v0$7PBrEV(ZeZO?n2ZBBa9`mwobyB3%84r zA*pMQz&744iSC0cO-c0@XM0!n>lG00T2`JdtnkNR;q&~5>%_hUVQ~v$OGQ5967ZnJ z?cYnQ$oN}%zD-@|o=$7<1P0nw%=DU6XP@hRJ*pO`7A|Se*KN#mo{y2Bzq$WFHwwS= z1%EoUwJyl?l&iTJLa6F+xD`$4mE;!J->Iiu_^72_2bEud3O+lH3A-{)x?o_u)$P%W z(Ih>2>rd#~( zcYcgGJI8YYLTXo@V&fKGicuEy?;*rW-rYz!u?~klYW46x6eF zQYrK~=N7yEw+XHOxwdoZW6!;9>8m+Nlz!(-lOQvq^?8; z1c@a0J-NRbp(!vfw%v_B#;5A?BJ53CVw!GW#YVb%dseJ+^Zr0r=OfC%7U$pka<3*1+^E=1ZxW$l$f8dTr&&M#DWM_fw;AUKGs$Gl>nkK9823(9KgGK=0I~;LJvR zdn`hFTTFCMG6>UJCb%jl{iOBQ5jgNEOmE zL#t}|B8?v&zJMPWNydg{l)#k<$6|RxhBHB?2FZ^I-$Mx z$i&F85a;=M#62NUx+Qkx8unVF5TU*f!ZXm#5yu$*oloMd?@`O=H_B&N*SS9e#P`ge zYv0aJLTl!qUHezG>k-*UW~;s%JJ>U@;rK`7Z)}CamS_-@Qa*{Lmx?#Zy|x_a-!-oy2% z{u8>=&Y9QpvrnCvtlrK7f%|Mkzyq(MLthI*8-(o)A*+(GWEe>qM&IeHC%QnCEIlh% zXd4qc&`~sF*9o*R4xc8?8l)$3=_|K^cx)>mwbSWtBI_QyTJBq;BWJ zG6a(Yea9##DDQXf^P6b-&wBF>Doop+soN*>Yr`@G!uI|C7b|T!G*XUe(og*B_EqAS zf*;0s4z;+X?vKtL`GeTS*n$QblS_>^1DN(w!#+q+zbxLhC0JN+WP6%tfbl&VUnZq2 zHSl-S8e7!UFnFGED5?H z4neGn`?x3414nZ8Rz-hf1P1Lj(Z4|8hU%n4@O`D_r~LXH`LtpHl|f@<`ve+t;bOe7 zn@W#XrML|8$CI=Gym|ml1K+ePJPlRq=p|#~JCWD=&^M`fD5RM%~kvVjwv$#D(Lm4)S?9N`Rf64)&B*f>hF5KUQZZ@i-7p+MpN_@ zv4b^`)ei?ZX1E#yRj*>c(T|->|F2tb<3yi=uN4kgFumzdcFcsSO6g+rd2JQdm2-K? zwLI;Be!_p}(SJ5Wms>G}Vpx=0R`rNq+7FkRdNmoFw8=%V^9`gRCs68Qb*UZB>g%~` zLGfe6@pPT2zQgKajF{Q*LME(@#2Z&8MA3!rqDNY=+nlp{yw;GHXQeU5Ww{A{_h*Oc zl~3kR+A~m{gztP(O?BKVPhKN`R3C?vS(txzZ2Up$i9LAjQHCv?n1?5-Wsaxwv8OmU zdwqZsonUablQ%A_*p7MjKiI%8697mSIL5;^n&c%`r83KnuEnSy`9q?h@W^!la6Wo5Z?IW|fh9wpheM1!Pk0!W3{5liq#Ka@vC zzIWS|dt6HRy6OsNeOTf{W(+0XGAU1-BAnYqx?^`IJY)v1CL^tYV@Rs#*JzfWUET9d z=1Fopfstn(i)md=$a~wn;nz2WzL2J~-%-S_=I_9onjJ}%?TMj5 zvB1TIE9S~lH3YdFUdaB8FY`~64Kv=k3&^W!`K<8^9;K~vSj}nU4pn=0lQixCi~pUa z@F2%`(nPhPohX$7bBWX@;259g8%IE`j+U*vcHe=UDbPlcjU}+ZyG5=|ikFsS`-#;f zh6i`A5*AVu+n+o#X{7noxJxaSRk*b?(PW0zooWy&G+i-aPmZU|t<3Y__Jr~4jB>c2 zt99P)OcPG#y=(JkXL^tC0fyCR7qT&o_~@@Bi*{=D`T$E*rWhVYDi?G6Xs$J{I_P`L zJMSyztz)Y0CA9qnqbp?fhFxo>3>xw(Jg0se;8QVV^Tsy9%R`nJkY)=>7muaua!|w5 zEnoRNK(FbeK@33`WyWS$aB%P|+nT6=W#h>l+GAm?+Q6&I6@Pkvu1O)T>r${nO>0|a zT;HzYg}Obv;rwLkdW$lm3f3FInglcn{S`}-c?UVxyB-i=^tlE)XM%QZD9oZE&rsJd znpbDte8bsef@d76S;@{=nNo@^5YxcLIY)qpz)HClFG6#8+>!v z%3SUAYxBaNZ|@+6<_`L5opa|$p^`Y>kM8%$VLbqUCuMLp?Q6{U)0lK099EZ~+ONG& z`9(5mADWhIJGA5+_bO0ZgL7u22lPw~4buZh~46OH;;n=@g z3ylX9FmoCt$@HXqn(ae}PtD#g&}E)rD8aVPA4Yx98Uwq*OpElxvJXXdX?_f^Rh5(u z@+DR23)tynG*(jAT11f|o88)s49Jc8bBBTk-R2kAf*#nh9is)8;Cet^*@t8gsfoE~ z`wgaFOP>Eo9G8^rOn)D$uq=dM*4ObMkU5x?Il>tExd{pGyiB~`$y>k5@;j}`*brgC>%9e+?!?dhJ2LRJB|Z8# znn(n|*(jZ^RL6IxuP18&?d4qR8z!mIo6XyIwSZlOD3HM5{2fewUtgeNx)K8(K@{A% zEB({!hz#!p!DwaWO^TW|c~v|5z&h%>_QDwwx5p55_5S=!vXpy*87*t&YKtSaYIbxD zFhrx@VlkzjzA#bgMi0>A%=Kw{$I!`1pg+d$Wi`HPI+Ag!{*~IBNx&h0u;v# z&t+Op;E$TQClppoCHb742Dh;HMi;@b!gE-u`$|PsufFc=@VS}MtWtcjFs1IeBXEWV z>a6y@_h$X%KI*=PK*}n(nGsw+W{|J199qNCBAwIyI@wkRJt7-5s&l$89RitY3}vAz znv1JpDQTs)NHL6vO)q6g3gBfhF`t6U<@(7Ph?pm;@9wM^5jxd4N_wD)l zFOcV#UH<-Zqna7Fy#r>unfh4u7nTB-yUQGab;&7A95>Ifxu(9oCUNEvZ>v5*ZGiq` z!pm(%FX|p9B0DA$x52d>yU0wY>CsQ;8tMY#TUhgUvCU;-;(PLv^nE$wXnEw)m%{G1 zbxqEn?)_+159(mQsq0g{nzeFtBrd_nCM$7f?kbADW96mY3!IemmOm`TZ%ZbxDImGD z=*pCYR{L9)zL!|h$k(~;U_gDemK^QH()g#7E=ptd@)P89MSDBS5}xcXiFv#epHcl3 zOwu}a9bE*yI-8v)hJejt^-;UR z1d6>a(NcGk&8};Lj|Y%6M)?3=az=D3q@Tx6cukD&cFIkbEVohSZKd%L+lzpU;pqIc z@|P&w(gEMqj|VLJY&$17G176*(xJ<0Fl4z&d9w7LtDU!U@GTumWOvF8oV!PEM)LZ( z9WBd)wq$~3)R~WaVusbX4(5vL`r7xl`KNFg1iIHhi)=2h+)vXUw|^bm^!?*T zKXgU?-PIVEpa=eHW5}Ce-NZ+<22t-GUy*4WB&s4_y3J?RpiFw^GUGO?2HIV+-UjEN z4Eubd(G<|Y)sbVV`{Mf2-kQ};$3)Stqa<`=TJzl$!@{d7*;OG#NM0R9kFh{6xnCi} zx-tQ-Ts8p4@-y|tkaiY<^Y`xggr=~$2!y3#>V2li>9`E_xtVK!^bT>+8owuac z{YYJz?7Q^5E%7gqzb5s*_eD3~2a%b8$F1Y+p3muS4^_G8%!!)?$?sla#h%LQn4g(* zl?IH~#W}<)%sdQf3NIT2_9)s6Ddcr&bR}|h zu7Ztl9mafKI%<__Qwq0z6U!QL8)_rjn*A{^~*K5Rb{hy(xp*Rt=-ILd73f z6wi?W+eqxWq+w;#Cx9g?mJg6zM_et0&>D#JRNR>S+S>OwnK$pxi*m2G5}1_wVc$5X zX9Mk3maRO61W1(7PexaRImKG!i*1_DL;Vcn?evYUMl-My7gl_@GIJkj%-nA8046MY zIpxCHs~_?W{yLM1Lu|${2CWWDs>RUM23fK}DJ(Z-KMbHDaj1}dujU?unM}s<~!m3xhJvivRu@h%UZs`R*n%?4v`eTL%BKeErAGcE7?CNhe>%0-R0e{+CwVkkcJ3hQA@fzpsW@ zo}q5Te0oh&rMb@TE{4t2Vi?gXSl*>@HEoTQlH}&U|06*z5-tQvZPoAis zZNA!>i-Vq41D}=loO==50q29oDAZGf-0q6nNnlDRe?s0%HM!1 zgkfl@@kh;#X+2ko=H4kS!HWaeqc^x~2PSP?h>u>Wy92`~ibTX=Vf0k&ainix^uIt? zS1J#p=kQiSFcs-S6d6GD80IC;LfbEHGT4ts;m2le);@(aS{u>F%afH4ffCPX=s%MBO%QqwO9~rtn_JQ6Ue6s#Iy6*iEr^J$n@x3B8+TOX_<$pR><{WIqpupVq`+FeDh9EDY_^Ra8I(C>+%=v z3m}-}3f*y}dV;rjZKwx9;Bk5v-~-A0A(^RfbC=<=lx`7a+Jd=lMa3BG-=YIoxzEt&65y z*FFp*Ow$Kpw}Qf;>g`^zlX=vTX+%?9W&EBktC+43J{p|r@Nwlp=~}&Y%7Kq(?D@v` zy~+ge@No$419h@t79K7tH+cTD8m^0Hk7K^wF)AU&-R1Jn?xl5Hnh)3stGLcTzSV2D zuu!sdTYEUoB&p3SXbaTO#-Av)jOGrro8H7YyO@wrzYW;;Vp>D#j;N8j_&(_4)#&d* zLDp1Sm`Zk!Gb9dCW}rfbs&|q6;<6b&U^EZYJqzbNwB%H{G+TOu4j`JvxSH_88C&Y^ zGB7SF&^x2OeRdHo6$m}bIon+i#AgQ?z@*(}5+DCK&N^t1lnA?uA>Q%e&y3;kAshaB+Djjdx$YZ1P!KXjp3c(t@@;(psc@lZPAnEYHtl!S&jvWMS zY<&!(S!9-pU1{swEm|YDT(S-$)}gB^CiAY}yo!x#SidZh$R1_X{`r*8fOASK z@;2iahK;H?hs>yG1yfrXEyh-uNLK}AHdlvOocsFB8Yp5|rXyn_ z0I?3)45}*_;`N zyw!vIhS+w-dI>*edxZ#k{PAfiadK=kS;vL5WvhiDl2y=9+Jt0(B^NG@mLpx%3oB>fpUlH3taV9! z)Xa8ezaZinCx2Tv=QSN+{bjEE%RVG(x{Uy(e+!oBbZ{#UbSZ~Co+B-r8IdK@SB5=i zp5(5{cr{^UU)#TRyxI`_JesAGn?#&d3_aQ)wnU0LVhb?KipV~p&Tgx>NcL?aY1czX zVcMGyCG}(>GW~cb6OmFzB>DL*!8B_vPbcm%#|HkC0zp3_%4EBmq>^~&&c6*yFLu-3 z9T-?&Z@dt$N51R1m&t`>3OhXzIG0SLxEnw8p-NQcTEo9XzH=va{4c{bT}6T-5XggS z*DBdvyeV$yGSfq*IAT3UYYMO**@~mOvystyQ#^0l$Mylne15?gnx7M|TFn1#vgwHw zA)G5KOh$mtYQML}WDDb?+cQL!FWGo&TW~A12RN&XXEo(veM76LXk|vJy_bEK4VUAJ5$SI2| zF@nrJZ_CdgdRW_F*1rfVV6DUr<~;K{3Y)VCWg=Vd*6D|JUk!REl5B;4mAW%JO8{NL zX^jYc_IH&<6%V%;y|(D~oO$VTL}mlKhJ3%x)~}^<+m&$DiQZW#80anJ4I@M}YhP;w z3BMCDpRo80tyqYeb@$ZUxMD}^Kq<>kPmbpo6LlFXmH{FdQh1kYd-HUn=h_f0sHP5_ zYlOYs+sm0gXln<=3~y_W-~CopFzqMRdWR!;X#_0%K?-)7$KfsK|8bYF%(aK{@kC9A z(xiHGmR0ZQP|ItM5uBrE>1*4N+>+V;4?@0Z>dUPUd`j$JI&_zz&;4Iv+&n%SzcjcH-7P%`fa08k3 z@4rBkRP}3ybX&mBs0j?`j|S~}kaJP2V(-az-LT>&qo-bO|5bj&FV~dO3owVeVm}Kc zyda1T##@O1toJtC>Ac>Ytma3Ie6gZX{jwzf16OhMk>Iv6B6AH{>MyHRJ9VHBpU~X) ziQe_c+lMTi@yHD7PUcrl*{@|z==H?*%V^8y&(`|&XHqmxOIZ}c5c`X!hJcgtpf{VI zHnfRm<;jS1X14WGb4Buw=7o8sn6sFoj$Y$WEz_^F<`NS$y#*+j4WNP>1Xs0@qVWTC zP`dg}qaSO(TI^?$4s$kk#7WxH`?zld7B>dhU{c894J_-7v%WUEXmgiP(j#+IFZ$u` z5F}}$rd0tR7V)aG*66{6ee}*Z)o8E97C*dPEIWu$lNB zaJ*5y_z|5KmOZwF{&pG^^YU6>e)BQuf8u z_dfZ#w%T7YL2)>)nK)jf3|#wa-Lq(}e8{nh=}@M|7aO>`$&XOB4?+D~O=9j+0>ITDk$xngs!n9YhbG zj@~u1rM?%EVobC;09)$Bt>5*^_GK-~X-OMKwXS9|-X|q9E=TfWCj)*tsWnJBa06E0_Be)V^{LfqtN_%@MI?@do%pGrEGxeG29PLUd#pM?j6_WvpO8ZH6 zh9tdmPn688GO9UW83G|Lt?njdbLu1W=5Fj*D=01MLdCAcP}-b}EV0fAj~>`s#=d%k zryM7smYzA^8ph@`lb8Z!%+FWwB%_ISQN92>U(VKkp3?s;ap-OIo=G6qA%dg)^~qD9 zjYb5eY|0OH{OHDk3s<4qk-fv>bxZrR+M4{iAm5}n(-0l<=>Ag8ASBoL-NW9V2sJ*o zlMtp4w|b}6AvG^oj|gp>R5~FxRP@mySCwePcnistDeZEramE=7oWjL3;q9D=lV}9c zUBXI4E(fn5>!OI$O#S0F@e>Ulo;vWKzl@B|T`piun3(TFnkdp&rF{L1V1g`ookT-= zS8dZzaE-%Hy>##DwTFw`m2^kY;sVo?L-&5H`~}$zObNTc@f=_?VYEj|%&7AysLk5< zu|@S*wbE*={{sDN=RD<-EI4|b-4wnlo@+$Ctpt(m0k&v1I?5S>?{WP4QS&(!va7ME zsWzsGjd3?gdl{2hr?Ft{ARtK>>jOW7w{o8COn2&h3_#zvU@u>-oD}cVeU-U)EcE+d z)A)^+VIbZMGRHeCF87*H#lJ1M;3%&-`9xX@`9C9XIxmw+=}U=bCzmeMh5UF-Ldqfg z;TMQxY28QvhYv-MUKEGJV7`Xlqc03UHBrZ#dvHo065v#{>6|QHZvlCIChwq~kex^u zD8b=ZvvGknaomX2TUwOPHL23=So1SG>LS{D_h^|f0r`b!X|ATSbl4B2^6KoGh}!G6 zl39xVsY~1ans(Q_4zQs-lLqO6VuOl?v>`o4Bl`4{)M8V%d^aFM{RheTpB*!xb4Dwq z>WuyAdvk8A+LJTv7qeuD`fi`m5FyDMK3zj}LW^gumD5na*8o-^2?oQZc(14KPnxf9 zzelcPJ}nbi>Xy>PDkzshEccp8YEONe5Z?0`JF{8mc+m8giwGe~|FSZg)cohL52;qH z96Lbi+Ccl-!y(J0{_$N$LPK03`#?k7#Dq#Eq$`yK4g*fh7t*FdP}bLCtvTVI^`5RIwJ*48*~{2-(essIyyGG1v14a5-I+9&#iXD5*WN-~PfUon zm~_hhriy( zrIjh?t2F}xc0y(N0gJSR$zGa}>ia%**HAGc{?p5LwdI_kAIB&eER^1T|K6EG7g%|U zL?HAb?pbLX_`M8nO(z{kLYQ}c>e#6aU~;eZC8uC;!; zopPdb{LiI%i}{lCYVOL+T_0a21%0l_dPED|Y{a)3lxM-xNNnFk^+I`EQTE#Xlf(gL zqJqLRLfLR*;@-TnFK@8xT`omdlGDH6zOw}ev5f0yewuvw5|3XDrx$+yVJk^hrSLNO zoXxlZj*&zEQQTc zw>j^)pUG=px3u0*K`9R$6IB2QX!B+B%+MfUZ^(%lLXtE?R!a%?3|dt)3El4`QZB&Q zu>j*HN=jw8X z$fp;K|05dS;opcB{mYxoXoN}~WO(f}xtBgA#R@cTBTC&zYX=BBs4r}Cw>VYTGk>hn zl-l&Ar|CWXUUFq&9^SxFeHAte49KG(1y0%WR5O_GewB z$X^T5GV9Q5e&EKRRY1xR`|3n@t4wll_)4bWW(XV;T5ssX6d6>d+)m5dyXP3%!`#&U zMSi?iYV?HhZWS{X-X`p8r8{{k>+@YC2w5ze1-w0YpFkkBb3K73D+G>jjdsTSPOAox zoxasU^zLN205>brcxqNLR;?*i=SSq2(7vUXfdlskt0(sK=*}2NyFzYz!Xh!|I**HC zK|QvF=TrcKi%owM8M!6|()#^cKrnI)Ly?xY7x)7F>|@h^e;YuQ`bPwT zZ_5Gw#1CldFJ4Ux%Ed-p{kdcd%E#ZclupmZ8K=A1yJPNqxvnF!BIoyW4^1q}^l-CR zla95_tN(liJV+=;3UT`Z$qkvQ4`4nNJQ&74{XoCZ z%JAt^ayGT-_2;ky5)OC6j-k43-uU^KgV43+b_wirNjZ7YyHCF3rnB8QrjP)v@p5&C z*wRFC5^vrtR;FRqvLxUWEzR!z_1c{%5)S~6l)scem__px`-x8H0TKwUyh*0b_K8ML z>PD??@e2#*PtxyL#d2BmFzq&}L!^xIP~9pfHzKBMm^LOyT}zR&vD*-jmfYR|+^H79 z648$>1X9gGiOrL`e(~ixwZ7No@F$RRgh901DBVt`d*QJo3r%B<>q!r^=!$9GE1P0_ zBqsuxk`rL;GXZ29xcr`lKV!2AOq$f6x$5%<#%c5)6PRh!KO*_(U6{}BU;Oj447>N! ziha3kc^$q*)39hCu|;AQFsKS)kmOqt-@LB?J3C{)w)z_E5%SsRP#dp20d4)w=6E;h z1Z7mqb>D)2w|D9D=zMo=^HU0N zd}SIffpMVn@F$asBFl4f_4_!=n%|Y3d~}MjI<*&6SB4++vDzH21ey%ROi4kT-`;XU zpsZp?&nj|&v2LZMh53M@Iaq=hdEimnG*c`rk-x1p8I#Lpk)&PHT$*jSQ)3RBWA1XE z`1WE?{XK%8Ko?oJA>;p?z@8ez^aWt z{j+|T{&7>N3>D<11Q$idX@Dpjfj|3o<=1g30Z{+0-scP4cTa22Fz-u09o1C!l}s)p z7x^(vfdg6->%W>#J&_G_d=w8aHRwK$Q)RbqegI?A6GwARt<@xK%x&xOXDm-N^P}`a zO84Q1C8_?C!aX{=`Gfv=dPYAuBjb%loP@MC6)_cNaiw%tYNK)9Jlm*DPfcxzHc|sP zTAKf&+x~yOy?0y`+qN~@2+}ABf|5fkps>j~LxV_`B$9K^L2_<_CgSSDt;&J^S2y&wJl{-~HYn{p+fty4I>i)m(FpIp-L^v7x_z&|aY_EJ6x(s|jCn6g z)>pjCp%YSSeaqe`jXt~ybF*K1eD`a$x? z(m0Px+$jRyFR0?p3D76Edp?i=+m5Ol_sv&Kml}#vEmDMW$uKFDlINSc@Z;dU!h0_d zFwYyrdxgEFH-0+|RJW;0y_H#ccq$BDiwWYw!vaW!?k-G!fkbP9w&g6zp1vp8l=Bae za^Q?UA9LT^?zn75YrLCjNn$3uAjCYGqWefsOK6i-L)t?ZINk(ub|ni+Dlkj-^jRQw z9sXJ&_RQJFrHw*0<&+hqhm>k-!6~t?jMCbFJGNRIx0O0y>z0h2`0g2gtG-=MT2%~u zd9709IRdlhePN#v#JVdoedjZMZMpJXJgT>CU2pg*J^o1OO{0C3*6_Q zFxPl1Q`o6IbSmieq-fHlWI^L>uZK#Ebq7)@oHN><2-HQnu{gXR10wY_|LcEX6^~AQ z@f3|T;H8Tb*^yodCH>!jJF=cDBLR{$2>Ytj-H@EwBa4Gi{JYmX|7bz?|MqwnCRRk@ zr)kGCzTLM#?c^tFmft-cS<9;bQPmhAZ62gaD;X6mP>6$nrJ6#I-qVaxGs}b$TmABb zY+rIhSIn?itv}VvE-GeSuihZE9=JDF@$eIJDDoTBQo8|GXS;?CVF%l;m_v1d6vxX+ zFG8TN|2XeIy816oH`er|Ke8KtN5uvgk6`w_XOgtYMzH@|PtC#I4t3(A6%JZyhIosO zd)s1bFU%K5w^%$}n3ZM|qaaf9pb?f*au*IedV^1l`?niuJYFO2;F)Go>GUN_zX9m> zTZEh>T_Yl0?Jvq&q5kXHcU0bQsHi`mJ@UmnIDRs>`JyJ)_K9(UlGi08GBVnaD!?GL z_HRS}l!TgvqPrnPJUl)e6xoLFu*JO~K%w;KpDA$}Wa;m5Vn}p+ns(TEFBU+(`qR4B znXiC81MBDC`qJU|kE0HMJ$L0FSD-)-k1s>Xt@$vvYjM?oD|LA8&!=Hd%7X#YbUgR3ZwuaHV#5i|GZsv(AuBRuMU5d8=BvHJu!F+ z*Q5xIJKztR;LO&6lgoe;;VS*1wEitHD3U=|4C9_o2oChVMWAEtqJ(pX(6z zk`=bUjx`DRzg!w`^Y=Nx%cKKMYWQc1|1S=sLL)*>rX5Iz=ufCm(XXs)|Ln;Lgdz~2 z6i87IeQX=-Q~aFr0u>EC4uA@rkBEcBFsQ@`JG|A$S}KL8rlsqWx>Y|KmyDnMxD`V& zYPV{YUi1WVUCmZ7$!y5%*YR!dvBAhL*!5dl$4aMo15wi}u2Z*LRD=S>kR9ib$`bC| zkN+|$|6_9g{f)K`NIbz%35U?T_A-DOu)x}DB?J}EOuP@hi;4e=fVN(@#GDQIuq^HM z4~=2_zu%InTb%hr#{dMnigB9H)q~>&SEXYj6@(vp*w`h_NE>`69e?qun&h$j0F@Yu z9=*32v+Zd*QKL9bcO*iLKPt5Em6?+C*$Mz)rei|g5H+2M(gz!hkFxWKAA}#E(BTc* zaP@p9WxJKEMPfTrX;Iws!xZDaXXm0vLqnpPX|2ZReVw2`ui#STz5QmKd zksv88&?-t3LmgUmKT@STUUHhKPKp$aU$FZY5WRy{E`|4a@mawY_?rwLr!>F-pn8otdlQY)q8|XFD)HYzpg2`Gsg(bT!&aoN!nAS~H zP2J3x13KaC@y9#q(T*r7hctZIpfZA ztTeVdR_vX>(G>BMbMUG6vyMo_%>*Y8+H4qzq) zr}21ski#wHq(qdMcwI+Wi&mcT)W#67lF@QLV25->)-{#94Wtt_3=2q12EnxEpg#;xz9|vwrsxJ*uzFjdhI!N_II2ZTG}X z_^xB+=^JNh?eQLx$Q0X6?1<dh095H}y8x6ZvXBMo#W-IQXP!hAL-KDl`)*>&-Oo+A_#Mr&Y#6!CDrK zVZ60hL<7Q|F+LZF1@!zw8ln6zCv*3zi|05;p-+TiLE<4Fl7bq68{RRJc zX{QrDN?O_huNuDx^{~mG(nP}9pugi;^apiPgt_G1JkqpSw6I>o@aCOwMz>q4k0=eI zpc$|S^DU1m1-os>m}>*Xmz~WG>Go@&Q6QHIAiMWBjskG&h$F47*XiHh_3Qs|514*r z?M2EULlNZ2-|b12U6XlCpMl2=$LlOCaN%6VBa^tm!*BJjj29(jX=3xV6ItN3mpy0L z5b}XvzCkQ~qN)7_lA16et!ffG?e<)`F7fi!;O=$jTqDX`Jv8+uM4(?1?*>&&q@t1; zN8Nb6FYIn{@s#lNfbhoe++g6dcK6I%a=h`8QNH@2XH#oeaisZ{kvq=JP8~{7Y#Bt1 zvR;p(X`SP5p2%5b+|ZuOyxkbw5e66Rh}43Ig}7I~nySv`-EVMR;aTAI(mgUHfovUj#A4aazqK`GgR+4fpv%Db)%u@HbO4sBHS@HF)PIg15 zBL^ti*&=T{k$`>VCV~i1r})04amCC2xcQT3ZWy~q1t(zp72+vBBG zAUkE9ql$H5Ua2YOGt+QD{Yw2SPMEQYf6fe=;HNTG^=!lIz!b8MKh{3x~(!G?=9<2 z9eFdd6f*aPco(>kQq$L%TY)${dJ0y2`5jQ|wNoN&;`rk(s$*w6+fhuJm2R~j>;cCl zq$In6Bjyt$;2M3+u6)Z&9w(eGA^9h_Bu2Hz!AlfVjl8Blwgp8pIOX6lHTg~o!>}F- zzor|tq1<(5M%lnOy!w{Jo}cu~HLw)tXlc;{LXP6n+zimCDx8PIv{*9NlHikrO?SzK zF?IGZg3{03zG`X)?i)^n&f-t_l)v7G_b-PSOHY0@*gZ2hm2h7MD2YQawJ_6`D8_9| zvg(>5i)u=rP-DS)nQSCUe~8jL)Sd6{r0|9v99McAn^m`r7ay!+YH~BG*O0&3__2g3 z+M~72De#an5JKeq|TdBrw6(!Pe<=!syTVhx{$fOp1`!scVx2Sn76>(>1P(_ z%}80(s(XryabE$o6IswqR^x?Yl*pr)ju7n|`GHq%Xh?qr{qp^jV}sl1^BzH?UO?vzxNM`9Ur-@QnUx*62YcPCzE*nD_f^p7esQ5S>pf zO1>vV=iqT5MLp5kSqU8BZr$zK)8S*r3PvIZW_SnkthQe~bViH0^mN(uLIenBYU-kA zW2%v2Py{g2bT*TYHEL(elLbpY<`$%w-n(Gd0z2Hr^^gya}Cp0Y1-EjQ%sNvlhf_aL7T%&sxUl`kedDJuA zP_-F?;!Kun2C~%4?GGVO7QSxg2qw)7Czsj0k89oG+gL_=z{jTBe%Eud0@p7opXMzm zn3vi3{$xm4QRQ0Q3xLu7$)`vKMJ(S!@9-(nOD}@Ii|FeZLNAKF?gNXFXy}?H;--yE ze~GA!dzC7LW%)*0{f83Tf1XP9d=M>nGDKD9fxxuXqZg=C8skmpwXTRKpC$3V!_bmn zoRM6d^J@`_!Bsf;nX528ddD3V^5J;5KG>xOVoCOqxcrMgi}}pYGRd|#9&?WFL!85U zj61We8RfPjb7s`mH77<2n*p5Zz0XVV+F-asVk^2F>xyHI>ZUImPdz$yc5%9N^52R* ziSCCojE)Q87t=)*qvT55^KO*p#c9K7&+|eJ zP32$pp^EUDxXfw&_tft<1)u5yZ9LXShP25$m{@YF*4iHu$CaPR`tGM2`HP;-M^84; z1y@}OunXj=F93- zo7zfSp&*wbNxT#XDdS<4X)d&Gcd)woZBFAW7vkI74&Awqmg*jIQNSKcgQJXsJ5-cYXY-bJ+=}?kg+)So@0o<*Deq+EPg`L{I3}m5!Kb*mK2a}v+O@iq&iK+!59wpdshBvhtEXzI3mDj2D@x z@?yw*T#P%3+9t(#k`TEbjoryykUqyM=A&wx-RKp;F*;B1mQA|-2;L5u=!=RZV3JG+(oEDK#Fo`Ozd)QbeaBv^v_B=R^qVMo=;Za)spi?Q%SA zk99L_>9e0p)9`O3Oh*W8}k~u{=st~BFd-5JNL#5HJA>wUpl^4SB9;GDt1i6eWM&wdyA6fE1Y<5eqW2?3E}p?HhWQpswTDMY>2n`us>tyasbPRpP9- z8eF%z0Y2x&EHcHnHU3yfvx@-q^x5W9Jk?(GX+rze7QYe^h-I>tCBQz#Z2oBoI*OxE zqWbQ1i;d%SUfQ#q=X*5yP3%S6SARQKtIsz z#a3ngBd0VcQ+xsz-_mj+m}}Eg8ppB4lKJtr7IjF-cUxu&-;z}|T0Ioh+U!YDo zll?DAiHrky-70v|Iq=-!;F3oNjzXGMwNLB~fJiVyBNe6sXh;FXz2|cJ?KAMCn$q2R zEB*rI6pK;?uBJyY7a~vWv8>53>Ls&sKNu_&wU(D0=7G>oA_E>^)-)=wf3Zc^9Cs$y zR)H1oy}=;LQe;+jy4C7>(SDYQ=X{mKP$z6$stqP;T;K!x{;a z^gf9%mv0(ebF5QY6sbO!vX5XwtqOktc38UZ7ig4Olq$>+p|OCHqk2#`@{`!txO@76 zOB3eIz{VrLSka4psTdJP2-<%2oXb?GopHS=LXmPrk2A1N)WvtN zPnKBEt!EXa(&~Yb`YLi*vf2PfoPj46JDU4{Lrk?HYZ09$Ue)hz_?Qqal{fBglL?;ge zfohG3A1k@S0t-|Y-ZGo(s^gw%a^Ljc%;QBVj_qq8=8UB4xrRkM&llJjdU@T5m#_7^ zwnf$T{6y=I#~Ko(VoVwr;o`|%`!bA67gVzRw#L#(BcoRR^o8V{IxW5G%GXXm5Q;Gz zNm9{=(C@5}NH51S!uwL<{1EI5Npc46(Qj{uU#Xh`nZTN{k(oJbJ zXUs)T9!Nvr3=^A~*OY1PKtBhkS&tTOD+04`-%sn7a|B=(Gs&)5{;VndM{VK1`$hn> zWt_;zB_f3L!#62v8Q*U_6Zs6&ZMvm^Wn@4dUbq17#c_wNJ#CMRc#8?p1Hv=6xZTT#Cpb5;n4b z=>B|eSyH@4d9wEz$EE6p5Mr_^nbyx^DRZq!zcra`I>?)Gjm9I>{$Y(FHo1Jy*28r_ zF9JSc$wyv29e7yoUL9%V!N-!dG0I8j=z|3=mQ5j-?;xxDX^m4cA&qFO$GGlB@|f5p z+tpv+JCEm^)rpkeg6$@^+)`ZY;Nt2&iqe`@toIlCzI=J*c#(sM_448sAFXT4z;n*3 zaHjNRm}Qs?5s81=fOJ?Kp!IN z3h)tQP%nTmeR8LMsKDr^{7%5jbEV^3LdKbY>xKSXFSSGtK&o)h>=N5TyfW(!~W1YXNe0SWE|pXE*drher6?tpR)^u!sKsDx-fc`v00hLD;5^ zq8npwG!as(FDaR8NipT9jI%Wod;9Rpz3r{kSi>AWdI0pnS>QS=QuY_9%H@6GRkQt< zEr}Yw`KV?+_L`Vn9YjxuJh-P2eeadK-3qyJU5x?6UN`Sq0OxQG-=1|D;Fs$^Koaz{ ze~Pm|rYWvuk>Kzvy%10@%qGr|tPnViP>7>1kP?|U!l#1byd+@=um)t3p zAg2^eDd7fi%%p31Q^JqFuH~a74BZNVC*@|^q<7$JgMwQoox_j}ZM@8&1_IVTNZvhH zsTExeD+qfoMxoqBYY`W@9TS_@xRC(Jpr8>}vfeM3c+pvdn~kaYD%jqs67332=VLnV zK`{y-eBbd*yom7d&9&>wOBx+W_&Tqv{V2_meR*QqR08C*LVPBE_lU2!>4EJw}__KSSWfP|6mMJpSrU@PcCLTV+LPib!z(|hy zKH0hEjnMAAnEO^Vmm1$#-WdN{?bSvShKCQX;v3^?#-{%S3jmof|MHOiWB-qm2x<<2 zU^R@#p7;s?cZSzWV0BbJvZn2%Z0L)xNhoCPl`Mg9^J^%a;ere?-}1N6jpiM&NMZ7> z7OwG+^l>79Evp{9`;P^ds@ML$E=RZZ{C?=+q2b#TIU2)vo(ZbwO->5%tpt(0?~5<0 za%h+i7cM|$((H@%!Ss19|eNVYrZsS~L(mmjyO zj1s_pBr+#xElq6mUXtx8EbVr067;k$GkT3U*kVjN=WR)Jof<&LDJ&rp4njO~1CsID z<&A)a2S3$*#|hn3C(`P|cXmk(GU$`RyWZ7iWlpigYWx5w(pTf*kPg=FvOJ)d@tuyB^wos^2> zWIxsk>2kNDMLt^DrNJ=_WBOTp_{9+o8rHL}y+jGG3GsG=x5(5^ zx-`jJlUv|_3p<)Lu1VrzSg^ekCGGaY7bVvxXr|Ngh6>n}?Xp=B)$HBr1ngwqcTMPS zXA{SvxE>esKu8|9X(>b%JR%}*@R5Bs!z)3?Ge-__*f2Q1*wvvsd|>~mB^U)EEQl-4 zk^zw1p|wn!`P7x|dtVS!8pD1lViK1nV;o|kxJ^2~vkW{n1YYD(rGALAd-Wq8MnBut z+N9Z|hlB*StJ;=*_d}Ef)Cqz7&W5)waQDed*n?pg$MVFwcdqe_rbACF?qekE&KM;0 z4kbsmY%Ijw1|0kXrM~kW9;JohBqoYlvYMKSQ`+f<%AoNh?ME9T>kNd50fbmB)aBge*$JT zK=C;eVgDj1Cd6CSrY>E2;vM34s>A89o*M#ZIR9cDdUR-17gQs`@Blx=h345bFM>w$ zZVBm9qH%xmd9|f6}%t>3)oNGZIjUz|EPQNh< z4PQpU9<3~r$t$X*n;3_#>FJr>?L}{&QSQY=H+tnDpUB*(o_f?c1~3Zqg$>N2Eo+g)iQ4@ysXDxWmG?sV#Wfm8=F&Z@_4P{QjZ~2(& zHcDXlBNxM#dZq~QYR+8Z2{Nx;1!j&+n>l_&I#9Dx?=YSnnIM>&>cWHU(b*-rH zC8h9zj=78EJj?pz`Mk>U?32TF-Zwnasp|#Zn2LtFiBHj@h=VF~;kEDuc-2%A^vm&|SJEMQdBNZueQ`O!$N`HDRSCFmIgsz|QuV1p~a9qWz8IG3LFagY5E1v|YVG zz$bBQ#u}@FJd{}dQost4i&DjaSv>!&PX4auEhcz_!5-UP{0-bCV%8FKm02_5>g`Wm z)tI-OyLje5$KB252P#~S9#KE(^aIkEa%n^Rt3T|p5sE| zz_=|jSW8a%E;`#9on$RKcUT;`?n6%oy_kirM(WBY@Gvd z#oakS$nl&>QKpfmwe2)G)iIB5rkO_yu;Y-Ix(s9xE%ov93t<`v;9Tr^;%=BDkJnf) znAp-*~LS^ykbIK}iSZm;{F zefr7fks(hXmnuE~$>8)&mS6erp%|jI{r`UaOW+^}pvw09`h0OUJZM|~Tv?LuY3yvw zfp+i5bs#TSPu#O4rnu$@?|IAAH%*wpkHZOzgk*4O zs1+0K-YXeGkWe`+xPp8rj@@;G%+XO+3E&HjG-48qrpgE z#QbORp2(JShLJNzo+^fKNpG5)v5=F#b%)3X1EVli^VRNgc_BR*!d76-F{G~9&S0mu z=QO@lxl77z1}re|{bwWlzqP;8%&|8Y9R(j&t{vB1`#i^|r!hpvWd@4%GXLhY-&8c{ zD9>KB{$nyr)7FJl;^;>aXNZg^mvPZF=)I#^mXrX(aaB)`XVks3O5Afo=@+#|- zKiH+Mafuj|Czdf7r^f+W6EhSLM{C8^%smc4^G8}F4gVg|A;44at)n-=0Xwe zbY2p0(|%nV*kaz~CNX(bd}Q*0^VJ9^p~mdU`W9&0bsca(be#}xtrv4zR*-pXT9(bH zQaC|Z8&YrpqDVO4Fa7Ks^K>7A zCo$~bX#Gt_B#_O-UHWQGO{fps*)aXf{zzcTGV-dRIeV=XM}xNEtdDtYll@Yscf)*n zQ~3%=9l6kj_B2B#To`=>51-8G={}2}W1P2S{<-J*bO~giu~p?zu zeiM>z(oEXBZ+^loz#8lW6HDcQ<@twG7usk!7XS^72PuDviKU2Ximr_JR)Bxd>Kk2t z7i;xOpYEW=DE;Sh>izDas;HG15Ypy%uvK3#RO^vZGbY2 z!`DPac2suBrefBk*gTwQ3!V;T=Y+bw?txyg9}Fh?U&7KDVg+ z0r?2wTh3+D-9hW=N2|qV^F5wj!3}n3mE#9u%G0(Jt@irgpY_~UaW4RM34lYYa~T~* z1)gI61rpi53g5B*j11%uTai~y^{;;xxR3;b3GB8Nu345Iv;Le4K^X7F5WpFN5#7;P z!`GtFq2`3rFDNu}nf0dU?@YoXe9>f}{mrqZPGQS8Z=fC56)oI%Og=b;)n;`DN+o<4 zmzVig)_>Wt-Wnn~Ak@3Q8-G&~e{#LW=w%VCr>Vh^f1M&PrBpRmxgT*e`&w-Z@tM|X z2JdvN*`uy*T7(@LwYcFWd~fvb^+8|_CD|*%i#r2ZHGx~V^}$GW%;}DLo%+bna}{zQ zU%_UTczM^u*Mua#dy64*yVE^*{4T~cq)n^hvCX4m<8d7~wi8v5>fbGVNyoee?Wo6X z#(28P-g461YL~8#RTYr(^SHYOa|7b6-hvHvEsgMk+IYt|)5*%cv~3&ybk9sq-20C8 zI#%%_^r#RzWpkW7>G@D>dk0C1Ynn5tc;KNHz~bDoTJp8Hb&6=dk#7h7C0P9kM{X2U#kO|fLa%sspm%{IaeSqZX zUqQnXsje0RA>kENhlhiCbGJlpGilGaqXA^xA2Tq9Nb0O67vb_%Cd|!+pu^K3$BSKEAAroz? zr+o3%!e9PW$BLI@@~wUE$GPxWYU7bQ9I%Uz8(-w>TDi_KUGfr37cefgk5w?7?KtgT zsn<}`N*9oQ2Z}P3{q76I5qqT)B_h`3yfUrVqA=yu@BUyud3bB=`yP2mxbG=a^=<#! zQ-4=IZc!VGHgYEN!38{Xs*_d#5N|IQR8QDa*M^=g@#{Ny2A-8NG*kdRat{#Jmr6Y1 z@>pOh<6jNAge;ek{{l_C`goHrt*kkRTVuM$Of;=JzOiiY@Fm!@VCUUUV63&|=S=Qw zwtD%3T8aRtNIb2{qC!bS=PxP_{21FLR8@u2{a!&&mBpU_elh;1K0xFd#q73ri@7Xc z-ayP*!TY-1*QlbTO5U{12(WBnaKNu^_An3?W+M|RXtzaMH})+Rk#J`|$n*`DEp z$Og8x;Mp{?XIb$izs0_3()@f*8g5H)gh7ZsE4hUl9&vrA1P-&%f7ochV*hwiewEov z{_bZTpL4T1orRE{QY{mQgBa=dH$Wen_=AhQN-J+YhQJ4P;>!*4!ug_nx@YnE87qdb zg4WUNguMjl(fhd+gHtYI;4SKK*gV%P)wQHa-NFj>547?I4=5|e<;B)?pa`Wk6*1DM z6lr8V@W&S=nYjmR=DIPouY?{;i2-p*pTcpA3_K zyWCIg9!D*X7YfM-WRgIU`j%_A*b3EUwM4vgS|2Jt2XD@S$jO^Ul!tA+QqCUIqYnTy zh^N|!yP9mpwVH8T=UaA-s-_QPvePVGZYJd{U4l{+al=9zI>@{gO2wXf*YrFMomnmI zxn5IdmNl6+B@j9Y3rN@Yo3W1T|0L_5m0GkbKd zEgf)2l3zyJ`o2ZjwF#8{SC~3+E0N+Sb-25uL?7OrJ{6 zt4gtY%##t{XGY;MfDP*MT1h`WE3Iwa_{bK2G3{h+kEDWeE_bZ_G3tHUAWX9Y(5vUf z-`RRPQIGJ=1 z8lT_A*T}h+t*sRbOzNZstIl)k{GeB-xaV~M*`tB5+IM^wkX+cF@#;|%6w1%k>&GYMRq>EUmy<$;L$pA zS$T99cJq37OuR!@#aDQZ0VaESZT4d(W%QHo%ZUYCG5&6FvDK97zgWPW*ME~$c=gxY z``_8F^GXjDp{zvY=sig}3@&^*LOdXd&bIJfyNm{mAe>N-(nSV#NUbMUMQ5*4xJSyy zF<&ndDJVVlsRhO6;KaotAN~g12T}G2E7p6+@J9?l;eEWxS0arg>QsXQT8ff|04yOV z)hgD=!Yt(X9=XXzPMD#wS7nEXP&i2@AFeUFe_F=ZR@XyOs%(k((8tZs0Ee!ny0W2m zOz&iD6_tS)B20uUJd7JhFY$pR*LL=1sB+Wc&9@EVQyoF&9V?1cI1AD68Np)}1Th%;U znr7VOJ#)hX=x4tFtbexvuc8&`jKMI8oul1Eneh+PH>ggWd!lEgkWVG7ZBTsT9xAE{ z7r94dt0tAP-PKEuM2Xb_AUdn)ra=!_fRNW(6l^W2tl-f@c}eFAYv&)qdwfAfMiO^) z&v=EU_Y^#xLDy8_Rzwz)pIys9i9-%PjKf0O2u-2qYx}zQP9@^i8t^MQdmPwQKb1(+ z0E4Fl&KlKoS+@`GTZzG+x8zM>N+=#H>=051-Fq?PuiRbzubQ}@#3VIIh#WkNeA-6{nj|FikzE+0nB5b ztPhq4au;KxoM;Eg3S(tdSCYH&_&~7^*0~7YFz5Z2V2=Ie*+A9NBiq*r^NnfRBwtF6 zPw)9ivbU}I@c`l8LAq`&=tWu#XCElGb9JPUCXxW_`Z0`bhM;?#i&}ysE7$}ai|ZhL z#s`fnWkbT&gjraF=7I}WS+V7Ccq)2DIxZ5KX@b;P#`t#wgcXSW+zI==pCQu2ss_C} z1-|TzS(SPT*VZNpep-`zP2P&8vyqPh=kV265v973a410F+A4Nwm4vJwlDg21xi`ce z6W!CMC5)2&+WAKG|giB+XoHeh0sWHH#-vmMz(BNcoGWqCi(x8=vp zVw=(EpHUagpJf;<^OPgKbvhI!4d>E>I8SnQQMa4VAw<(jShj&hG3+Q z3;G`5u=!1wPY>RK;<6D-vHcEjx?uNmAlv%V>iYPjQ9}A$zGE%J#x_F_xl8J^84f>} zXgp<%Miai>BTM<~4qQR{z+JKXlgTKc;&x2H@Puemt;aR&5+7M;3@?=o*Vqnv85Y<> z9jr!)B^0Ov%*`pto_04f$3tQZ?|pT*7hMb%$wELGV1J+9=7(bJb)L6Qk4VR-iS69Y*xevr z1SBj^Qy~|COs5ay&X0TfssPXpIuy$xR<_6rHwB!$f95Tixktzg^aNK4a~Zo#7R9l6 zvA;z_A+&(ROn(&Fgw%y=cJ@GG+JnZGsJ0GJ-U;LNbl!9lN_31>gv$L6N@V#XY1}^N zr3nS-@N(qZ?xtgTS1&Bb>OyPl3*qgDc4=Bjc-o$n(H|sLM(04Y0pW~+$f$LVGiLs? z22x(D8pawdM?)2q)WQWMW&)kDE&GljCWcolRbRN+FRlak1A~X$RYJ<;-s$m&G;G)d zq{*-s)u5shwdTiYW93VgJr0>mzC*phH&YC~|GyggX6NaajlDzY{u*EsUo-m<>%rXM z39?OyPY9j*sd8>ZhW?ULkSYU6iMYR;4U~b$g}nI%dI9NxogbxN^Nrp}BG%IJAlGj8 zw>au~$eLBjxOHJWO7(Y>E-q;p8mk(#VQOr+?mtb=X;0*NyILNcrIRhs>sgaE{}`KZ zr;dCL&j7jbozy4v-Lmmz;HqB$kW3t}%rDT7kh^iu^ez#76vuhX=SZ08%(_TJR@b}R zEF%jc?5r-@6NP`Wbzi2%Wrd!7W?aaC z-zD3wj%G+$MC3*|0cc7fDaK<(Jx52+QyrquaB+!on{!H`eSx3#rYknHSF6TqG-$o( zI0J1MktR5S{-Px5751obt)5#L-Yrqpus7EFT5=d{f64xqs%n1;3+a>Rj>(wsTzD&K z!J;A9<%}o~rm(xOtnj`^N6kbZ%Ng6AaM8Lt*)y?p?$YPm(1UhydgCM&{{};$#Npj8 zkmr5xT|}?(+H$a>eMQ?ZQ1()D1PINKjWGhKbJC^j`8H%-cf`!f%t2jSL*qK;R2ev( zCY1~FfF5E{+j;fVavzFJ&{LnqOU7a9NY5a$Mz*QB^13QOC$@J&+bW1sPuviQq|N$ zeDQbmNT$r2#*bat?Kz8r+e*N(nhGioAfkr~k}{WrAdiq3)T3exk>|~b?Erg|c)ZHN z7sIo|$F@1Ruj?S4Ujj`$T`-*V%HXA4G3%`Nr3&P&37f_g;0svERziU|I(R;<>E7cT zaP*#+MF34Mw;b){w|MQ^cM`NF&5lYO@gWo@WQ*|W;IrcgJ8IV=$>c98`T3oaT7Bt$@sXpdQiMXE}#`UT6V8Ia- zFN7Mcae;29Tr0fHrlVKa>YloVJ((CZn2(b9pr>_#ORk5Ks$mO-D z1r@8z%BH70E0hmepflnF=}tW@Ru{K|?P*kFv;>ydFM=wwbK>UnVK@7v#o?Hl3w`k8 z5Uyox3xs8g4wcRy1MHhQzcW~%+u>9Hd3O2xOhd>m%rT%jZa#jF?VL8{GEZwe0+bLO z;aS0(^nqAdT&uT?il)4Q3k$9@rwJ7s%hlF= zbvMQ&G2fY?*&Vc$L3njMpxPuZha45rKnw0Q>A!^^MHEr&X~`$f!#phrKLJ#@grA8! zTEG%7&*59C3Qni(B)(GNuN|oboe+>tJ^Iw$C4$j!n&g4>`s}UecY8hx*5ybTJmH4= z+-3QRY)yTgJv%jXlaXD+r*xpUF5_}#I$vvcUZeF{WliuB{uo~@bxiBKiGJlDz%uEn zyv0wJ1S>o6v($C;sVZxpF8xFD08=(Gn=|g*{}bp6fYM-sLmP=R+{-crHY4<~q>e@w zWb>PERQ-mVIn~d6h}2kiJ;G3$17N1hrs9q}SV-|P8@gYT#(8kKXF zMG6^Y5wiJ3G}vvV+k_L`9}1|%A7D`+0<4(PI|S^5Gt-zkc%xn#9FPt;V)6m#Zd_D> zY_5kwc%|NeaeS3@ee}D@xR1={?8hhY_h0L_{H^(8V99}zhr`^35{{ppD(JO_jF&f8 z)&&9X`za?tNsSduI-h2(7LNY)^Q(Uzupp}Vba~~@H?(l7RjEXA(ErbU(W=y*mVxbm z|10m`7q=P}{YPV`K~3ljM<10ORv*=8>dKuA{+XE(DYA@%KPLW%A;bSE=<)yHb-=%7|1Uldb6x-d literal 0 HcmV?d00001 diff --git a/docs/museum/eirnn_song_etal2016.md b/docs/museum/eirnn_song_etal2016.md index 691be89d..13f85d0c 100644 --- a/docs/museum/eirnn_song_etal2016.md +++ b/docs/museum/eirnn_song_etal2016.md @@ -6,6 +6,17 @@ recurrent neural network (EI-RNN) originally proposed in (Song et al., 2016) [1] The model code for this exhibit can be found [here](https://github.com/NACLab/ngc-museum/tree/main/exhibits/ei_rnn). +```{eval-rst} +.. table:: + :align: center + + +-----------------------------------------------------------------+ + | .. image:: ../images/museum/ei_rnn/ei_rnn_arch.jpg | + | :scale: 65% | + | :align: center | + +-----------------------------------------------------------------+ +``` + ## References [1] Song, H. F., Yang, G. R., & Wang, X. J. Training excitatory-inhibitory recurrent neural networks