From ffa638a46c22c3a5dce57fd56bec3ede08705412 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 2 May 2026 10:09:03 +0200 Subject: [PATCH 1/9] chore(db): add decisions-orphan-tickets CLI (#887) New `tooling/db/decision orphan-tickets` subcommand scans tickets with a decision_ref that doesn't match any row in the decisions table. Surfaces silently orphaned tickets from typo'd or renumbered D-IDs. Makefile target: `make decisions-orphan-tickets`. Co-Authored-By: Claude Opus 4.6 --- Makefile | 8 ++++++-- tooling/db/decisions_sync.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 57ae9ea82..1184b2b55 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ GODOT := $(shell command -v godot4 2>/dev/null || command -v godot 2>/dev/null) .PHONY: help setup build check-protocol client server game stop test lint lint-python setup-venv ci ci-client ci-server clean \ - decisions-sync decisions-coverage decisions-active decisions-orphan \ + decisions-sync decisions-coverage decisions-active decisions-orphan decisions-orphan-tickets \ db-backup db-install validate-content check-fact-ids setup-hooks install-hooks \ audit deny atlas-verify economy-db atlas-generate regen-db check-systems-db \ pre-pr pre-pr-lint pre-pr-build pre-pr-test pre-pr-validate pre-pr-fixtures \ @@ -48,7 +48,8 @@ help: @echo " make decisions-sync Sync decisions/*.md into SQLite" @echo " make decisions-coverage Each decision with its implementing ticket(s)" @echo " make decisions-active List active decisions" - @echo " make decisions-orphan Decisions without implementing tickets" + @echo " make decisions-orphan Decisions without implementing tickets" + @echo " make decisions-orphan-tickets Tickets with invalid or missing decision_ref" @echo " make audit Run cargo audit (security advisory check)" @echo " make deny Run cargo deny check (license/ban policy)" @echo " make validate-content Validate content YAML against schemas" @@ -404,6 +405,9 @@ decisions-active: decisions-orphan: @tooling/db/sqlite-query "SELECT id, title FROM decisions WHERE type='confirmed' AND status='active' AND id NOT IN (SELECT DISTINCT decision_ref FROM tickets WHERE decision_ref IS NOT NULL)" +decisions-orphan-tickets: + @tooling/db/decision orphan-tickets + # --- Content Validation --- validate-content: diff --git a/tooling/db/decisions_sync.py b/tooling/db/decisions_sync.py index 8a0e23aa0..efd622c7c 100644 --- a/tooling/db/decisions_sync.py +++ b/tooling/db/decisions_sync.py @@ -457,6 +457,35 @@ def show_decision(cfg, decision_id): conn.close() +def orphan_tickets(cfg): + """List tickets whose decision_ref is set but does not match any decision in the DB.""" + conn = get_connection(cfg) + try: + rows = conn.execute( + """SELECT t.id, t.title, t.decision_ref, t.status, t.team + FROM tickets t + WHERE t.decision_ref IS NOT NULL + AND t.decision_ref != '' + AND t.decision_ref NOT IN (SELECT id FROM decisions) + ORDER BY t.decision_ref, t.id""", + ).fetchall() + + orphans = [dict(r) for r in rows] + + return { + "ok": True, + "count": len(orphans), + "orphans": orphans, + "summary": ( + f"{len(orphans)} orphan ticket(s) found" + if orphans + else "No orphan tickets — all decision_ref values are valid" + ), + } + finally: + conn.close() + + def check_dupes(cfg): """Check for duplicate decision IDs across all markdown files.""" # Pre-existing collisions too deeply embedded to renumber (139+ references). @@ -508,6 +537,7 @@ Usage: decisions_sync.py next [D|Q|R] Show next available ID (all prefixes or one) decisions_sync.py claim [title] Claim next ID and insert placeholder decisions_sync.py check-dupes Check for duplicate IDs across markdown files + decisions_sync.py orphan-tickets List tickets with invalid/missing decision_ref decisions_sync.py --help Show this help message ID claiming workflow: @@ -554,6 +584,8 @@ def main(): result = claim_id(cfg, prefix, domain, title) elif cmd == "check-dupes": result = check_dupes(cfg) + elif cmd == "orphan-tickets": + result = orphan_tickets(cfg) else: result = {"ok": False, "error": f"Unknown command: {cmd}. Use --help for usage."} From 5aa998cb86ec1b93a425040fbc37fddf93b750bb Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 2 May 2026 10:09:13 +0200 Subject: [PATCH 2/9] chore(db): switch meta.schema_version to monotonic semver (#888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace SHA-1 hash in meta.schema_version with an orderable semver string ("1.0.0"). SHA preserved in new schema_sha column for tamper detection. Enables savegame migration lineage in Phase 5+ — saves can record their schema version and determine which migrations to apply. Updated both generators, check-systems-db-stamp validation (rejects old SHA-hex values), schema DDL, and asset-pipeline docs. Co-Authored-By: Claude Opus 4.6 --- .claude/rules/asset-pipeline.md | 25 ++++++++++++++++++++----- server/data/systems-schema.sql | 14 +++++++++----- server/data/systems.db | Bin 29630464 -> 30384128 bytes tooling/check-systems-db-stamp | 23 +++++++++++++++++++++-- tooling/economy-db/import_economics.py | 15 ++++++++++++--- tooling/planet-gen/generate_atlas.py | 17 ++++++++++++++--- 6 files changed, 76 insertions(+), 18 deletions(-) diff --git a/.claude/rules/asset-pipeline.md b/.claude/rules/asset-pipeline.md index 7a5ff8025..24289ebf1 100644 --- a/.claude/rules/asset-pipeline.md +++ b/.claude/rules/asset-pipeline.md @@ -44,12 +44,21 @@ After every successful non-dry-run, each generator writes a row to the `meta` ta ```sql CREATE TABLE meta ( generator_name TEXT PRIMARY KEY, -- 'import_economics' | 'generate_atlas' - schema_version TEXT NOT NULL, -- SHA-1 of server/data/systems-schema.sql at generation time + schema_version TEXT NOT NULL, -- monotonic semver string (e.g. "1.0.0") — see #888 + schema_sha TEXT, -- SHA-1 of server/data/systems-schema.sql (tamper detection) generator_sha TEXT NOT NULL, -- SHA-1 of the generator source file(s) generated_at TEXT NOT NULL DEFAULT (datetime('now')) ); ``` +`schema_version` is a **monotonic semver string** (e.g. `"1.0.0"`), not a hash. +It is defined as the `SCHEMA_VERSION` constant in `tooling/economy-db/import_economics.py` +and must be bumped manually whenever the schema changes in a backwards-incompatible way. +Unlike a SHA-1 hash, semver strings are orderable — this enables savegame migration +lineage in Phase 5+: a save file can record which schema version it derives from and +determine exactly which migrations to apply (#888). The old SHA-1 is preserved in +`schema_sha` for tamper detection alongside the semver. + The `generator_sha` is the SHA-1 of the concatenated bytes of the generator's source files (sorted by path, so order is deterministic). If any source file changes and `make regen-db` is not re-run, the stamped SHA will differ from the @@ -166,8 +175,14 @@ no hand-edit path that survives regen. --- -## Future: savegame migration lineage +## Savegame migration lineage (Phase 5+) -The `meta.schema_version` field records the schema SHA at generation time. When the -savegame system is built (Phase 5+), a save file can record which systems.db snapshot -it derives from, enabling forward migration without branching the DB file itself. +`meta.schema_version` now stores a monotonic semver string (#888). When the savegame +system is built (Phase 5+), a save file records its `schema_version` string; the +loader can determine which migrations to apply by comparing that version to the +current one. `meta.schema_sha` retains the old SHA-1 for tamper detection. + +**When to bump `SCHEMA_VERSION`:** edit the `SCHEMA_VERSION = "1.0.0"` constant in +`tooling/economy-db/import_economics.py` whenever a schema change is backwards-incompatible +(column removed, type changed, FK constraint added, table dropped). Additive changes +(new nullable columns, new tables, new indexes) do not require a bump. diff --git a/server/data/systems-schema.sql b/server/data/systems-schema.sql index 23ea5ebf1..2c2e9c9b4 100644 --- a/server/data/systems-schema.sql +++ b/server/data/systems-schema.sql @@ -481,10 +481,13 @@ CREATE INDEX IF NOT EXISTS idx_star_systems_currency ON star_systems(currency_zo CREATE INDEX IF NOT EXISTS idx_gate_links_from ON gate_links(from_system_id); CREATE INDEX IF NOT EXISTS idx_gate_links_to ON gate_links(to_system_id); --- Generator metadata stamp (#855, #856) +-- Generator metadata stamp (#855, #856, #888) -- One row per generator, updated on each successful non-dry-run. --- schema_version: SHA-1 of server/data/systems-schema.sql content at generation time --- generator_sha: SHA-1 of the generator source file(s) content +-- schema_version: monotonic semver string (e.g. "1.0.0") — bump on backwards-incompatible changes. +-- Orderable, enabling savegame migration lineage (Phase 5+). +-- Defined as SCHEMA_VERSION constant in tooling/economy-db/import_economics.py. +-- schema_sha: SHA-1 hex of systems-schema.sql content at generation time (tamper detection). +-- generator_sha: SHA-1 hex of the generator source file(s) content -- generated_at: ISO-8601 UTC timestamp of the run -- -- Used by: @@ -492,8 +495,9 @@ CREATE INDEX IF NOT EXISTS idx_gate_links_to ON gate_links(to_system_id); -- .config/hooks/pre-push — rejects pushes with stale DB (#857) -- /pr-push skill — triggers make regen-db if stale (#858) CREATE TABLE IF NOT EXISTS meta ( - generator_name TEXT PRIMARY KEY, -- 'import_economics' | 'generate_atlas' | 'generate_brands' - schema_version TEXT NOT NULL, -- SHA-1 hex of systems-schema.sql content + generator_name TEXT PRIMARY KEY, -- 'import_economics' | 'generate_atlas' + schema_version TEXT NOT NULL, -- monotonic semver string (e.g. "1.0.0") — see #888 + schema_sha TEXT, -- SHA-1 hex of systems-schema.sql content (tamper detection) generator_sha TEXT NOT NULL, -- SHA-1 hex of generator source file(s) content generated_at TEXT NOT NULL DEFAULT (datetime('now')) ); diff --git a/server/data/systems.db b/server/data/systems.db index feabcec238f49a7cac0ab54a631fc82089095631..ede8b6a83f64ef411198063d25b65f97c8015789 100644 GIT binary patch literal 30384128 zcmeFa2YejWwLiX1+MSNEg(S0ACHBHQt8p?c(}oHfXCYG&M>}W>@!|94JpQtjn5d@8Sl`BjFSvQ|E>N$?F0J9w1@Q$ zJ*=m6kJ0cSQ+~G~E&?tBE&?tBE&?tBE&?tBE&?tBE&~6H2pm>a?5XJRg|O;cePd&L zJee7fk57!pQ^{zeZy=S-q!RJLDE;=XI83&mZE9Mz<_({%Qt@mJr`uXzw`L%fNG0Qx zHGx=Id5vIYoGoA)~eTX8O9@T zoMFSxa6?1u^bBuWDB1amG&UA~&bPKo$>j&=6h7d66-BL@y||vrP_d`9#z*C8i4?x= zJO1DxZnrR?Es+>N9O;V=o*o^DCCB>)((z0@<6Uvc9AsgYmnyTRzG+P+h6)_)8;*|0 z`l18l@m*YxSpUDO*v=|d`V1cn6njcqd|o6}HxSo(xdU@us`hcEb!r;D9p5~^BwP5Sw^9{h9vTm)PM zTm)PMTm)PMTm)PMTm)PMTm)PMTm)PM-tGvLc>OEABk{~QTnhv6FvNDjr;(XM>;HR= zKU3*y#o_H;JEH zs^6*a(f><-hrUbuioR7lP9M`Z>g)95^)_RTez^W?z0ugM9jn(Grx}-O-A1$VK7E;f zu<@wAz_?F8$oR66Ha=(kS?kolXC$=0Yk$-a&}D74_KN;z`=Rz-{SxglW0T=AhKx^XU(g=X->v_*e!2Du?PJCv#(JYpyIsH8I8wV&AJkT9 zSL>%5+q4GlBlm}?A*=F& z*n^SwXpGfFuvsFVnZHL<*xPY3njT7~lCjkfUPgbH52aIQ#**=YSeqm+^t2yVR#D-p z@_MRDkz_7i+P0C?HB%jqX8MNX(d2l*J{ycBGqE|BsFT%{M7g(g@uFb)Tq&^BQ^L9P z1w|5rW)fqGXfihL?;MN|jMILQvCMcHTYmPZW6|-EXn!KM`sIRLmOi=9lZmBwA;W#6 z@!he(f#|MSFx1v~4u4?lGVx*0;?iJw$@IJrsA4Oi01e3RI z*_Nf8rsP>%l9#5}CkoS_m!>00hWT5ZFHbJT8sFN6L(3MGV@FGIE0;@;r|TGO6k3x? zrN@ydPU);~Ad#9F3~gUhR#{$N;`Njw8*_6n1(6LrIb2gOUJ<{ju6?=6zVFPZyY8NM zR<5!ai*I|L?Ky;#l{i@kVqVlXCreC(lU%a7R3Coe*cZ-S_&}~~fz#G4E-NpeiFr`- zl$=P+W|*LT#;hZKvF%V%1I-5$L`!Fds6Uo4A&O=Ic`82GN0*8>Eu!z2d%3b4C=v7G z`$OXUg71nPbu~T`Pp#hjsm{OYK&8=jPp8jp>R#nRZeH8l{6CcDnN z$P*pL-Y64^@riUaF&NL_ZYDO^m!_ZXj$3`bQ%N*G@6Xx}{|5a%x_#jrmUxh*idEvl z{1TgNmSc#v`g54kybom;REiQ;*d>lQOH3jGshSd@JDNzKVrMS$uLXdJ%I!70ut zHjora4Le0gIaz3YS2WjLdJBEuS~&rx1szgTHmc}Yo$w~EBrB8M2Gl!Oqgqcav@ov6J;bZ{b*lR5jGk}NaPpP5JxVN2uH zzZXo=)|TPV>^O)&BbAn-KFf2T@ruuoP_sX?Ej}I<9U~We_2)^b9s8mXmg)E|w44Ll zCSTxm*O$Bj5W{&u1bd@sd`TN*PW-T7+Y*t}Q|1XEDhuT~<#4D50+(|*L_h>O&>m>J zqZ|&OqgFq5V@{&i-OCwln-Yq^DRbX2`37h5{;p_pYBV+&%O$^`6KlvNzd%Tbw%9Jt ze&#@td^uO66sYu&vf%LqMeeCDB78abzRrnsYAl*dJTLFLI`n>Z|2dFw*xh+xWH5#N zw5jGtw{N7AM^Bg|Ds>J%TIuMk%#T`?${*d}!0O9D3UKX8B?h8Ub-0QB)l9mxjq|l>RU!q{coK3 zQ5_QyFnFaHA($?w@ z5uQ_D^SdaI_s=)n@5%e{^j^w4TDDEHK3tl|=05aAb<`7?ANK8tLC`urEOgixMZGw= z-ShN8UpY3!sY(^L8td)4a}=gh+wC&w>f7o->#u7DU3qOW=(4NApi8gpM5%vz*(RKK z-z|Y2bJrNI4Biz49e#H`=p}cCLEm#Ht-pTv2S~NtbqDRme&X>UU%7o7)Eepb3eeDP zZMbs(Z6KbhTMt8GN8Pdt^vGLioBLaDUXJrsHyb$r(MP&)-hAUbaQ^-qJ3wPME&=_} z4L!Ktc>Rf>4c8xyE4N&CEa;!EMNvF|ymkxd-)=xfc_Y__LF=xgY`%8&**IT*HKp^) z)hMp7=&A&0;L7c|^3s(Df&S`>(?I|G3T$@odG>M?(R=viC*b_YAEE2Nyg~(i=WY0| z=b78)<6ZeK*d+;3H+APkxwk``CwDK%cmIJ?P^fru5Iau@Cgqw*VgRhKt^b z^D}SVfb(^i>Y(knx8lktE;$7>dFK(JdoCUU?cIZtdM>_W0ADG-7WR{O{auT2<$>#v zbMFy1$8i3_74*fgeuygJu6*zo z%GGr@>;%2=Rw~zTuflh|N8d_m-gm`X(4XBx2(;W(j`LsKHjeX-J5VE@i>{=~zxSqI z(1)+ZcfB>&00+;nuUv`qrW=8_cg^ke%wKK*GTy_kqHkS!6){fr-EBA@zn)65jjGP$ zIhN}E)vHg#-PW7V!1?XhYyOxxoJRK`51xTNK;F9|OZZSp`m^|| z=j1H0Ywa~DvHt&yxa3)3@PSU-X}cXCyXy+cK-(Thw4>ILYXf;Bi$7I zO7McB4;0aC1o!Xlgur=cdxND*mU!QL)HtmOkQtAr`!Z9Q_B5Jtp8GnscD8Tp3~y^+ zv#~Smyc1p~hw&%g>5C7Bw{;%BExcvxhMxAVCxp8@PgueC$1q1RmhMYNM`QeixN5#t zc$G3SJ~fv2|-mDvbPX6p0SUQp4%!*hqY!FN2p-X~)x! zdzip1GHYfqm57hW2k?b6u`q%83TM5hCcI^23R7;QiSWQkl;+RH(tHPtC}46cVCxf; z@Gv2IA~_!3uxVRoSLardZam3PVRHEF&*aTkv|k6R_;i0NmB5_yaNWuXf76~9>3oiA zV1{SS{KZkSsXo-eP&_fMWLB{YiiT;T82A%S#D|lknBwh#P~1UkyW^usciNqCtWtsb zg#`$9q>{KX9!{plV;L?8n5bXmES?;U?Y4^}ZZZq@VU}HVoF8(0#+r5yw9}Z`SWv%7 znx~KNqrCA{I+sCCc4BOh=BoEaMS;R=JJ+>u-?%Njj4qGIM`O#DCR3A3tE=S|;eiQS zrD9+z#}D@7OSf%p@7T7zx6fqrr7Ob2NT4rOnu_&BC&p9!+iZz_qQtSjh}mAu-^Si?Em&Gz?LB|7XuJY6 z^KSmLdVT}Wd-8v5!f0IUI=6Oi>gepvYx~RWR$ncc-L9H+Y?zl+n5o*Vd(=8H4>g*0 z@=$cNKMp?Wizau+V|m<_NKxZNtqxi|Ok5uw$7J2Hkr-BE=o`;9+?j68{5?#Dg?l>_ zAD>{hab!4y)`A)Ged8mTHa(I`$ zlN7dK!7KJ{i&yKak5Y?Ek6r#h@C?nqMKj3QOk-Wp_MWH&OP4SAp10GKAM<39LJ6EKJ%lF3IZ>1B@9Ke5Jz7kZi{WIeVe)P;taRZ zi9oGMkXXc=czoB9?m%jEG@cZWG+RwicOEqE`U%#4F8 zArEGFZFnM@9>nTEnf#k_^%3%$kSD~TsnIE$HO$}2o+gRq$-X5{&M@zqjA8zgXW|R< z-oKA6M1s_`t^G=WG(*rai#RGb|Gv#7jweW?NXPppxEB$9 z6X`T&cRq?FNj?n>#7sRzuHF(VrUrF_KurkoOzeya;ww|8TR)|I-147YMvBl1JX*b{ zHW(~jxzf8&;WTM|8gynP0Asr#9y8M}g!0mzcH68HsAncvP7N*GzJ1%~4V#ccPv<7H zoVH|VV8WX=ZwqhQzH#H5?g==XIVH|cK%f{Mj`dAJk;qut5tlQx9#bkkn5%31J-Z97 zV@;|Ly(F!!+`{Fmj_X3t2-^3CVLJa$dt|02VE5y+t`T+Q`2sQ> zgI*X;gZXN)T-_2VF700OKlERuP~|!={#CSRjh~H`eO=Ca z;(KOI@OfaSI^sM3z8V@qbA+M5061mPjCyz!Fk&f;SUwPf=P6&7#z_5jev9C{7%1DJ$LT7T+79?=S$-KRAB* zWvRql6C5rwo>%{>pJy!51Ny;Od2fq$wEBDX7s^i*ul#5Eck)-|yW|P^M7cP0UFh6U zQ}FlLD{!Csl>U_d1HE6DgX7vOTD_W4KBc@zx=~3fhbRZhFUr4=KP}%U-z;m=kEO?? zd!(zRz0$C>NSZGNLthIG1|K(mZv4dftnt3!nMML@2sY}!&>z)5s((PgNV-sO(+|+r zYUe2XwCA+%Y7fz>f7v>2>Lk(#z5l z(wC*rNq0yS(h1U5saskp>5?b(r_ghu?}xq}`b6lXq02)b4DAT557ma2hQgup(19T( z6bSw;_}{^&gFiH0(_S>5G`?-zVqB^pYrGSy9iE6a3Xjysjk$(Te_4M4D;_?se_8*$ z{%QSw{T%&F^|yLbAHfQWhwHUiDRF^*5LQL}nf93W6|8l5qjt4+k@P-oTDdYHOE)m4x3it;_>o66^vdzCwt z4=B5o6P1lhrDDk6lCP0JB3~%)mER#JezE%Z_-9Xc}j<>1GR zM~u6S(}FkZH)tclj|9&NUL;3@!=cZ-og61_UR?xS1Y89E?Fgv;3f}})o|=dzJTDjd z4R6;bqTTZpe}&h)G37Wv%W=Nbab8Aa_hP%DCJuOOWq-N1A9i$lYAszBr{0=kzv1ih zuAoD=ceywmCJxnf=(sEdQx(V@p162F3uPZx_zMdA>kLzmYte)*KkJVhRH$tw>0tH<*?Kj8U09eO-} z6NkTw!(YU`Ka0bk#Nm(P-XG}D<@vq%^_sZ%s`&Lgaqku8hgPCJ{o>AV#hu@X!yRuf*YbaqqvyuV0E^&(WdB^9yl!R^0o!I6NZ`Pt#$Y=Vx^2@;oIj z{*(?qo}Y+cKNi1!Bo03m7k?mreP8@~QvCX!I6Ogzb)N4!>d5oBxb+=z>)Ybjx5VL_ z;_w(9x;>AIU*8aiuhXH+^EEoG^L$nO`ieMwnGW5aFNu4P(4oikMR9SzIDCN)U7pX2 z!{_L*&huGucvu`hLx*n9Lv-lze3}kjo==Hi4~kz8(4pJ&NpbjuINYCODbIa$smF7# zxO0#A^>Oj*W8&~pI&^vN7WeKF7w_bn-y#^!bGx{AoBD#ugWaB6#dEiaJ2#8NO?2q; z+$etCK!v3%|)+O?U_mox1lx^4+y zZzI}$3}4^CbUo2^U3|WdX(!R{#eCku=WF=9-3VC#&&hR7tLa|X(fq_wOpjz5W_mc& zRYcd#C)(Y@v^keRlLNX&zS%&ur=DqqX&uv*M7wMGyoPAk3Z@71^~3mjHPdCerOfu7~TV!nVV9~tX^(uaFA<^ziK3`z$_R!jZ{Kr?y9hooXClBK5 zCB}u67@yB2+I67upmnAD0KRVIKBe;o&5@XD{KkG^Z(e7fVMMT%p0)WH&uG0ry*&`;EUuJx-wR(q8nDqBMnq4mY7;-ib6E4rYlDez=qGBC$~ zkI$n&iN~MdBGUSc|1p2r%%Q>3MT@+9BkYG_KMcYTJ2Sbnu{SG;G zSph;T?EVkCX&rI;@Ur|&tq42Qua>L#t~`XjZ|5!IQX~30mJ$xWjPrbJUdf$z!prE_ zjAI1Ch2sNk$1ei0^pYJMaooUXt-xD&Bo-Y!13?jl=HZp(@TTxwzlqRg{>%NTLDSO~ z#6{jEtZWB>dXu z*}otj%=?D8)JOFIUa3BHQ89hxtmz*S)ogu);ukbTWrkvy{E$}=5dlZ~Cx?qmo65aY zcKY~m9Ij`3;D-3!GcEbT=co|k+A{my>aA4>4V8OEJfE;N-y(h%ryFNWm{~rTCZ3)W zxSzBT)mrYTRx?e(nc_$HY^jQe9Cl zacM{8tWJNEQ`qIqJhNf%j*4JuWu^DLcL`^|`Gi&7^=2OI5lQ@(<=__&&nRk~<4gW& zxtY(S)8v3zdJ9uCx@Bf+22sX&Dind@t+7;LoHG{+6HnL?&76eb^xi0@KCqKwNQGmm zMrh9&ibuqgLum|3N>9)V-nkJ9wqy|>7Jbq;;90GCs!|@UtGExdx$WH zO&jtepzDi>W5c;8mIq7A%f0V0m+@e%`uXKHK-L2kaLenXv9Hvl6ui6;)^bCCJE1Z??*YKm`09 zV=hd!a@zH>X<3=}h^3LDGN#>g^pWqH7cA{q;>|9$GlAaD9*^r74e7jGI_>k$yN;I_ z2uFI>hjW80t0(3LOWTowIWuQ~6DA?%{6fhaf8Ty*`sXPxlv?%Vfx*(%_^gBf9Qnk! zJ`w*mS%7+|%-lErs`ZMa^7*x8MC}BtVUY$}mb_6s+^Ny`MV!C3Ps|CHw&b@OXRc}B zhM8kg=Tis1ah`dkN3OY=FD)w=3sOCK02(X6s+gsYc*wJ}g66#OXES1qG=12S{bi1k z(&C9~Szh6-3H{1ryllK^{L**^@%Zm!2f)XSuNq%OWd2je{l>?PJB*u+>k$3@u<-%o zy~ewZy@+m48RJIEINgY0x4)B&9mcUnm$Ak;%4jtjj9Q}_`}0*9^NkYY07Jn(d|v&p zh#bG7zl8n!ey;x%qXxdKe^dXO{)qlLM8iL!e;j)YUawz;*zyOl!{7z_KK)(#nfe5F z7~H83=~4Y;{WyKA-lMPAJM^RVRTwF-Qa?-&>lOMz`W#)=gSt=qoAyWTciOMD=e1|G zr!a=$3GG|j*R?NUTeTYyQ@>2RM7vnKP&-#U2crnawWKy;M%cF?#=cfN z8gce|9$gT|_yUTzhY)f9D@H^7R{fRwtol>+`|5YpZ>V2F{QXnved^unt?Kpam59W@ zPrXpxr@m9&t)>x^A5u?KPgJ+5o7DB{8ns!iLv((jTBaVTs%kM}^nX@fRer7fxAKhg zV?^t}rF>2KqVllvfN~FF_BSinDwivlDF3CrTiK($0}=c&<#c6GIaN7c*@{^HI;BlH zTxnElm1WAo$^zve@U(x-Gyt$98E%JMOUIeB<5tsr+{0$U=DNqEa zK$kH^ObX|RGDTbt=Z7#w%nj!VXMrwaiYOY+5s3mtBnlLfD9{B=5%|P8;%cDfOv{)e z5``;>M1httoyQcBC|o&^=^UnrMB$3TRF^*{f=9Tb@)g8RaV|4O;0fmlJb@zc1d6~D zC<0HQ0j7vO;@rp7%M=kXkI(Zu)4wzQ8`Hls{R`7SGyN0OKgy3;dGP$6ue`?eRi?j_ zpR@12%vXNP^f&4uxc+NCe~IafOkZI7E2hsg{confWcnP_Uod@^>Cc%y!}MvUKV$k7 z)1NZ^3DX}l{Snh2GW`M5?=yXp>GzmE!SuUKA7}aeu?QLOuxu; z`}%!+_5cQC!3>1|AJWqJ$Ko0;Ck^hTyPFuk7Xbxf~i zdJWU7nO?>8N~TvZy`1S~Oh3Z(!%Qz_`XQ#5F#RCY4={Z{)AupGnCX8peJ|6Cn7)VU zg-kDC`fjG@Gd+*#xlH#l-OF?j(=5|-0)CJ8T}0kVfSwp0qNE?yWM2;qM6p z>WHi)QcI+U$O;F_#}V1 zB>FYkIL1FGcJA$yKeW>E&?tB zE&?tBE&?tBE&?tBE&?tBE&?tBE&~6H2+*+lu4BRt4XtYo^Sq_LY0Vt-yuPuqy@IkPUc)U|8olMStP2N<__^jy9j59#K4Ykl1s)w+)K6yp(( zEZ&g(rS!p;NXR~;FY)9B^9{;aamZgn&(#Gy)|uZv^Lc{)5{d45Wce<{|G)1ser-H& zJZn5<{Lpy9_?Gc?<4eZpjfad+8uwsU_pQba#?{7U#wEtZ#)ZbY#yQ4W#xCOw%-J6{ z`i)bJ+si*Z(%#R$?NaUi+C|#=+8*s}ZBjc!+o{F0KJ5gpSL@Nbw07+Xtw~#{Rcnj2 zO086zqbXXE`nvij^>^w^>Mzx&)gP%(sNYn-s_s`mqkdBTIMyDxNxeqBO#PtxUiEy; z#y?A)P*ZAL9Z*lfto&ouZnaZgtv0AN>Qc1=D-#&1r23V=DSuF2#tH?$P@YnLpggWT zs(cyq^*^oLuY6RwO}Rn2O8Kzze&s#NxyrkgDJ7$fD#KX8;3Q?cvRT=nbSOtDElLDy z87xt%lyYURqA5YF)bJPiHTgI4^YTxyzQMQUN951S56bt-x5(GYSI8fdFP1OB%>T3H zN%;(UryP^}NUK=dYnJW%`c?|G#broM#ID|J=TtAN*g0>%XQidfedu zKOX#FWuuxO{D0WK?gszgvf%&0{|CYU8{hKa{{}bsPhtCiQ}AE)S4nmUD9bN+Yozra zYOmU(cBx0GP3lUlOjxOws&iCDEmB^`3WdK@UQ&LkJgxjl zc>?S8eO1}7d`9`C@^R%3tXg=Da+&f$<-N-JN>({bnZTNgab-X`MLAA6R_RtcmDO0y zutBL&mMV*s3Z+Cb6gZ&dzsY})U&gwNPsu-!ACe;z9^epJ3qzCpf9{xDWNe2;vt z{4RM)&d8(kupE_7lDEs7tK@QduB^#H*(?1;dQJL`^gPxE{E76W z^ljyr>&*#B9e_o&8gB9bvzJOQbgXey6c%{hi^%ngH z_yN4$z^QD%zh!=aB7ex|WnaWhlK=?kz+$%d^Zfwrt{(tCko}CzKkNr!RMY%!z8~OA zt{(uXzQvOO4*Ngw1KjzR`vH!1{Q&<)KS03mm5OBf2E_kw_WX;n{|$)#|0}Wo8xj5g z$725nBl`b8$NnEi^nd2q|L*@I%fFp%|7y1V|MxBb7ufcHoNfP4%lEVG|7I-z2;2Vu zwB;}Dlwwk!T!pBB6&uH-~;N$)U$W&%Sj!nfqlI0T%%m0T+R{I|3A?$3nJA zTCxngNTx=ki7C$?=J=O-hiD%`TFq0mX*C`@b&h|D56c}* z(8i(knCHQ{{%RjqTC$dq!!@sVkbfnviS7BYvYSZJbHCwV?CnouAzExbw=*`rxXj<+ z6T7AIs#DRy)1$Omna7O!XGUpVD{LT}q%ZvkSo;{Y@K#6tbJNUciu(V+wm{h5 zq+hOWQqJ|gUwSTdXE0DS{C3wF-2A^S5!iD^QAK&xa$|9DQE4RPl`yfT3I$o@@hl1L z?ZupxNL|Ak8r8Wg8cT24*xu2(e)Gn)om>0r>l?beTXtY)fzh#W@0zwX&kfPvB%bYq z{x*Omda*9>U@SH!e)h#Pv=M#GCw9HZS?bt z1I6~7*gG6s&X148!m;FFI5iZGh6kZ1*3hs1G_=x@71*#EJNwf9otZFg#1QVH&qSwI zgeS4Pc`UqkVtil(57EZ3SU(uMh+{FT!4=^IwvxwA^GH4#7K=LLJNPvj&F~Jni7A|- zG%JuHd~70~z&&~ZxrwK-^#N2}EV+#QjN$>LgzHoM+~DCj$1>p=k>F4w6&;PQ{n#T zz)qYJ)Nz1}6rMTfl5l(|Je8VY40eX2{osjkd^|jqN{6|oqJWon=;ddrYI#56!RTlb zm|SQ3kD{k)~fd$s-9#glpn7hM)wGYi8yCV)}wnuUGS;kS0nH|q=+uGi-ZF{f9(4DRr?=)j%4oj?Lncg!O(Lt&~>m#*0(oK`b1f zOpT+dj>oZ`@f6+$8^*B&c&v8sk`PsnVL;?GLFAZ~1CfKu=@OOG&=c*S7>Q0fE2pld zxo2lvr}_>2JsJaQqH5wv?2$|(#X-pk9gPo)8@bBKJzP*XJ?(3@uWvsgJPH|;2_KwD zf$I|Sq1eFyF}w~u2M)1W+6Iw$b0CF%Q)uTF>?}P&l|!WkE`%ufO6=(Z5g;xC+#&2V zkCoA>Q9y7cC`)1NI*bn?`!#6dVpa7)uy!If#*G3Z1-5o96UJ60sAmX3WMPzuxg7b@ zOt`y-7sR*rsJ3vQglq%k{A@glMU=-mMV6Y#H^daRy4Ql*{2fyEG75O*fnQ3iE45JlslMqxD_etiWt+@TfkX@x^-hG=uC z#4a#L?cN2&6&2NsjJY#$cnu@h)V?XTYyWlOZRtlIPGYV@eRFHLt2W#b8}IIJ*wNO) zo#{}Hac9NOZ-bY6xB$CNn|JKbhPQ2f7=6A*msDohOE;u8?+8ryY0(qG$*96%zB4sR{5bcIJrzn=>XL z2+(h%FA>rOj119*MaJo)8I(YtkX$NJ8#y^hYJAF?yNj9>CH<@;DkvEY8nH zu@evKZvdNFWNKKYqsC*3S@hJXR`lah-qgr+#z|msi84LjT#u?9Vf;B-BhkSaXeel(mL9= zv~S(e(N1j)z>Gi+r6y~fDl9iQ5;e|-MIKGKO92a-QEHT01L<8*t5U3$4#i^B%EBqG z7gH%f6M)6Xj>r!R!*lk1(rD_%+{ES zY;l!)v;f4et^2Rsw61gGTB}t&4{dmK{*E(lA=Kki8Oj{?bFp@^sC&QW8vtS*zPEtfjCG^kxfXw5?ZR= zUuH<-qy*^+O5EBQikXmZSSnslX(K*EZ%N$WPc4Mnay&Van#h2!Q^?R*T(BKA4VbCU z?prhoPFL6%h{eDtpe&4X#>CE7By~t0lbpvEdbBklI#4jGxje?+1$sqg&GK@?Td2#I zO8Zt(g+(IGYr50Xo%`>d3?E~PaHjyNZ)y}fX^+myNrYLoof+$ltk&+W?cMu7cwG3H z?VCDSMCb5YVBbS*-?;-;-oRhyo$2$XN7%C6K!4k)aUd2gb zXDnq8-7OoTBM?elZ%7Q*86E>-KnWg!RGJ+RWDQehpo0v=Gh_=9>eg0G4snA%l6(cU zs~ChF>J!gRSsf)RnoLGW!kQ=)c-~ShzlUe0!6!_?hxRd5yZ118miCl0wc5AszcV=! zK4Jgu$^3e$>t5HgqixNh+@NwDF)KMaMIhInavfyu;R4aVZU04^*5gwbZn9+i7+giv zU)h4)28T^mcr;?+N$4XCS|$Mn6&?hHCc)s4&6X#JlpivZGSmzx1>rAZ09gSvdp-~R)sRykquXR}RUcSUxfsHa>@CUefmxf` z(=CKwUHkTlOgy{;xr*j%G^<*=ApXi6I@hd?C}%P_o-U}V?b~}dgm<)W+SYC=GgRZG zyqRr>R2b2`ut#MqF%&*{Q*08QGgTF;6I~`uQ1ql3VrnoiAQyHAI!kbQ8U{05JFMXg zQG~nni8!_;Lw}7&@M3%vwE!iCYE%FVCjzyP+C9-Z73JlYwqo0+>_ZURN~DFQPm7bM z>l&fY9mK2*Exy4WKr$Q~9brLMv$&&G1c#kF}jUI=6Ph5wK-5Hfkl*^Cdh9bcoFHSag&;EYxk0 zWME5INNF_iG}NH-4(4{vKNAoGB#K$3qplgoDnm4Aw|zX9 z#J7e}TUIp;#nb3L3cW0FyjktV^e@oY%}yV(We|3e@Vt$r&@8E*g`!WA;WUHooEdfV zBScL!tp{7gz&?3(5NU=NW=GrVb6B^`vGG4|sjfe+y|;7ormpGePePv-`o=h{Cp2dg z7E~mN!cKBuTP7x9oAXAph<9+ga4R#fa+_!IAzTSC^U)1L;tExsWDs23*WE!qRVPr#N8!#EwvJP2>U{MU1*5h%K66_X( z3m*zA88NUx$@daX4^I%UF?_Kk`9w_R@D*YtZPE*+Zw4kv}cMe zoEcQj+C4i}_QsdYWTvxL4=wS;Sn|wRBIe}Yy5@-KjqhoOrM`4#OP#b{HpOfkGuOY( zZmFNxx#`5tjh&VnG6+T(r%*+jIx|}tAqhi%T~geK;hJE7E(AR!_CT(|ld2vU?nr7C zahMwL(u}j)+tU1jDI`5Prbr^eDkox%>@uZPweOQ%x# z!lJ2u-MXfg>za48bv5uG_lQ=k!_@luET$(D zow3=q!|6uuOla|g+=0{MrdJcf9g>{l|FXBnuMeqTRrblp`<@Lw9IVAcHJ=D%SVX%d zhrr%Ohz)oHN?=?@ghEW53>-s1f;ZQ7@Z*w*`ngX9ZIcslbEj?E;rUaVq$;qjXxrd## zxW0Ykw$62(n{2C-x;}*VhQr7~PT%83OjlVCv_~5ZBC^i~g)mADvvbC>{HT4~D#avh zepq*q;3VwHj3i~0!}l085Chwgs?L4DPBMP*GISlb6e(<d#6qWkF~Y|je63;kkaD3wNM z9zPR0CenjJiVhY}a0iRLu^Wft+H5Keqf6a0v4A)l5o;Sl^42nhdj}Z8)>Z9LRG}Rf z1R7fF5VJn~96asuIFOkQL)+qXJX?Tb`?mF@9EuuM&_$YS?#b+=zFhLG; z;!47uA4Y^0)c|)%LP#;R6Li+F`B@iY@0PZOgHZ>(f>xO%i8vh8+ruG+D001YKP?wamy+R34j%1Yz*O)+nkylKp0$O zD{hbpq{5i$JM>oQ774U!visIyFi3QFZFmDDG{sR(;a^_|F91aVZGYiF3RP$7HfZXJ z3HJAqV~{{ZbS}IjhKR)mk_6-Afrz4-5~PkoiARm*VxuBffw*jp8V95n>|7Eb!z9w^ z0K*9tYu59F^tIIkkBlI7mbPv%>YbCEh{d3hou#j z81TdrDmRQz2ze1WX>3~4or?9x(s@dMU8^8HQk## z*K}^3!A)Qdcp8C~!=0(6Nsw}4y9LNEC9r0nE)^7w0KI1J1`n$WEy-Z zWHR84v8^#VdN?+osok^Ypo+?+%Z*CY9CZ#3+Y=M|NmKjgovCyRva%x)jgRIrb7KU4 zt=gvWj&RI^%pt93fh=c}I-V_nY;*VKt(%wjhC4R43zq`LZFi1h6cdfNngBX&p@oI=s3V7BoRq;n*Dz|&N>*6A2lQRNEgBpG69wz zjaU#doLp=sJx-c9dbgbZZ!6QB(L!s zGL(u>+M#LJ3sH_+TWLr!kg{>*u#OpaC(DPMz9kBTjD@u1jx$|jhCXX(o;!~ z+L%4|+thrSQ_RMOVIR(zfq>K?;mJ}}Fr&Cn${*CY_yo0QaKEK0u!1}m zgX#vQ5cwcgL=2oKC6UA%6c^Y@tfoLD509KHva#7NF2T|HL4y85*xlrii6kTdg>m!hi;9lw{?Q(!`!? znpbL$!L~wgs73O>!euxb!vG!_d?j@i<&|W3OgH%UaA2{ewLLS!cF;D8C-;!o^ze-= zG98%A66(say5rdb{MvihuiHR_pwQQgE{%A>iX`XcU?w_=t8hC2BNz&hn>?jKs6@mt z(F_baLV+JJheN`sV?*0vJo6nwNys|bW*D(R(P}a5Y!YJ^YWIw+G{dfBklA5ZHURc^ z5sS45bn?TlEkgb86b_xdPGXiW#Zu1^w8R7w%LQEkk@y|~MCL5H%F!_kw+n}a1~KRq z{Emwp^CtycARz*^!e@-O>=+Mhc0}}5vglyHq6H%}2!@a$K|vL=48ShK6L6$a=PaP5 zHcX@6b9MtYarn!Kt8(M+pm8vVqm$#@4d8uLk=X`#gxMg~V7hj%QCm?C=jU9nZTphX zLD*X5T=Yh05O82&=0(2mv#FKF5HHVzZWc~_b6xkg4dgvrLtapGq&x#O0HbrKGgdN+ z2A4r3lt!Hnr=w$eQ4*+)+`F?HG>kGLoHAv3Z-(G5pi%VPxM>VEwPj0FbB>iT$5ikW zViZR-oM&FqC?#+=Y_T&@V>yJNI|v6u-e4aZ;sGw9N)mQEJaSaY_JB$V5FXhzfWXR< znu>DFTbN7k=ztY5^w9WLnM+-Qeo3CwI7?RC zFv^y`!u_Cdhmu=_#MLMy{3Nw+9%UuQp^-8btHJsL5KeYyNMkio1{lSp{Z_50DCL$j zLp=#0wFbk0F!VlJP*cr~UF%luSdfFCYs%_kXBrBed$gdY)?m&LhTONqC=pEtes&({ zgi#{>(d15Q>KF*Z1|A7^Ld2F*V)zm`7IlVRlem+GLd{?d>L!pAtqW?XDc7AE3Hxi< zYiE5DejjsG6wMbRb;CIfgsKSYlJ&6YOrScm;+jejn~{Blk;s{eu`yIPWf$+5^ZCe3 z7t;nfGaS(vPa}3bLF4U7*l~@8qcn<_N==%|>gDiA&upLUiBd~yUbO{omsGfYS2Vf* zmgr#KEUicb#vH?hTq9i5)8!mrK@-OC?P;?P^PVoKv@M%^w`~r$W7yOF^V`>MHme6^ z-~mo3H^wxOkAM$O4Jw{kh2H~P}Pdr zb}U^v`i^)TnkG#tC5sSZ46O;HC^8n4=S)6Z(h5fnq7kAaBaT0-x}u__1PWzI34$;o z(~2tLpnNss*WBJ6ix1NOo^Fg$Gbfi&h?4$K?=JlII0L$0P$S))8`iSgOOlu}y@F+O ze>^3okP6AcH!+VR%`ruu(#hf>$Jaw7nRDF&yNjq$YkI-!7=oYJ0t25F+c~}HZ!JW0?ZOejSkyWIw4Pn z5VR$ZcB&?(jL9_v!OZYIrJap|eL`%J+27B=L3%j12uc$@E!}3-Q}}5y@QQ8#3%)}+ zWcel9BTaZ_=Ob}68WM9e={A;u7aoj`M+HOM1Mu4`%Hhl|pH^q)0Q~xTbfpLw_3Xb9 zj?4WwIt~B2rUs0MT}ktI>dAEd#-q9Fnnm@QvASpgKF?t5*}t#5bL0Mf4o56>d@7Cg z`S1{8O9>trk080QR!Kdv=kU;sDaH-}Sdo5`*JB*Z8V`3z$Hrq*#C*LJOk;V)`Y7ou znEgOT1U%)YGZ&xcUKVMAQ^s>9APKNs+|tou^AMqF!~H4h!;yO^Gnktu7zP*2U{i)% zyLM;8AtKb{0OmTcT?_A7d3lwP`;t^yT~+N}RIk?@|)-VGFEbSqEg68cVp0{Jvd!y1H^zYahEf^m!t(_P%F6wLpxud8pa zscWc-G=}Ty4zI5}yrHh3U+LYjb;I^vVRDmpKZb=55<=XYK3Yr1Ass%$&M(GJ#L~zY zmW1s>-Nw!&bo-oT%q}!mdE*qCrpa)m+(r{D+2NO1)4?{@qv6B^RBSkK$;e0uUwSGHmkx4Cyc?%s6njqYz(}OZnI{@H zuw-m(?}(CQ9D!?UD`rfFn zpAfT~XdnP)UxT&G33m)Ka3+P&TyOvtA=U$!NYV-da7Dr?Q@dw%8{+)b@sQ_IvgRHx z<{>IH(!9RDzP%d*GYZUrhAxUE9l4Q3mjkg`(6x10$D;+{cDG}gB5}>w$W(?rWUzM} zvV&PNPZh&`n%DzN8Y~1b>FIob622}$wdNQBH-sO-a(g&f{I>z78gP`eS)CNg93 z3=Of!n?nbiHf08>F^U3)fryc!T6n}Rk8y$U*jsjVMMaI^?!tLJ`{s(ef$pE^$B=?> z2hFyIq;q!DSR0^=reYmcP6qGg4zx{1xBAK4T&y=!H|VL?Y~Q*m+_80YZ|{bgM)VI* z>x7iYS}Vi@+)qPDB6|p$ItQk}NlI{8^Be_-ikWDpyTL4$IkXO{K9qa%?sKR{xIrvI z#1qa**z+(vN8Pf;OtyFpPcEWr!>C9y*-UPtbVRp7s+({cjiC{lf(E`lm% zR2@}OjzH-gbDbE|EMvjL^G)j`4c*b`7(7{PqS3gsQsAP%6!N(aQ8J6hlyk8s@?8cB5F^CSCqR;@m7QAYNs2y|* z6pi6Q@wULkS7Bg_ex2t|WAy~YZN_Obq?o=(u`U?T$h76XvZ7yM1lO?K0-WSzW~YXz z=iPB+ML8BBvE1O!Q1;%%+;}3L$$|95nQ?TzgL!k}>RTe@Ct8;0y5L&kEB}OpsB;t6 zAvtjadf&C}mMfgu6=TQ;Gmf$Bc9>d3Bq2XY-67awyMYfHh!x49Aw@hji)0MuDq&s< zj{*{N$GJBp*~6{~bOMwF3sAD%Nufc*w1E`wSYtX^s)x<{D22O4j@EJx6rv*+`tqymOjYFTfX>4*D#UnPh^2wrY0>Mxj~I)U?STsIsnBq6kGxAy6mRq` zDSkE7<^Q<)N5ilDRr;cIxO9#0F)3TL2ICH%^A&|YAAHgGy58emZ9Em6=RGHINoYk# z^|eWV4;-Ptx5!&uUwoH*L@?t2TIhQD#NsE6hl@X`mHQ75Zt>k~oGU+TbQC>Obc^r# zqVtLp+Urt(z~{X-@J!&!zy*O_ffE8p2C4!<|8M-?@qgBToB#d(v;4#UE&f&hO5f|g zr+xc7e(_t*lTNL6>JLh^c-dT1CqmKbXH z`OLN_`C))x!H#<&G>y>YG~%9)R7xaGfIwbnXRD6qmQ~{Yp{Fx`^LznU-4BR!8a$ zk%p$icS}@$V6FfF^Qwx9u$)d{;X=nJBMpV+4wct9J{f7L&wVmjKIpjB(6}ZLuyW%s zZ+F~+qrvBcnV#-L%(!UY>3mD%qoJvVvr#;M1Lw{xS!-Q;?mNEuzEDZ7>hh}%Y_PDO z6Eth45#P$Id1>Js$Nfm85cXh2fNNHKI#P!PesbR~Dyv4mV4Mronw#5c=m?d=S9&;- zweHl{wOTiV^G|XVg^cuE;Y0H~9rx;+hzV_AN>h#m8(Qk@1Q*sh3(!)?6-D#6IT9tG zcrMXUcrm|QSt+4iL>e1&MdR)pQH%0J#S@~0O?9~^ic2>;b5v*Ns3`DL&w=?3uyQTu zVQv+Dhg=t2t%w8)y`-qZ6R13c9}z9Ep``&8;b?%tvK_c>;n`5%WFs9cI@P0?Uz=|@ ziW-U3gUc=aisyGY?$tLmI;t^H^m&h-%Wzr3`Kjhey#=*YwUg5@d8w(jusO(Oap$W| zIerKhFYpAaM)F>#n#kitwY12AC>GGPJ{&At5h?|bn|#*ds03uY_*~CHx!hZ4Wyd+Q zQs1=3POP-q`IS{I)(xmg9?$$@&ZEWdPHqnre=QHD)0`h@Y_wqtRvgc{HLDT~?x@H> zu*R;g%2WAU)^j8?9Z&ifwleFPLc6Z904=Gs$5D>@)+VbQMZuk5rxWwiCRT8yU0goE zX^Ud!F@rz&Sx>12qT^W6;3!lCV#JYLz%ze=6Sn%+RkI#Md@;U)=sv0l~t2L zX`2TTO8iwG;HXZtY)Cl={>9~0jv_}IT5^3&aoK7I&g9Lo5-*ZI=Va%~q~i+>&GmrI z@rA&GHT(s^tB7ah-3?Z?@yjNw!s%21T#@t(H2nL7B zeO*3!6$d$cC{&6=!UxczPvFm*tlm)X;HP4IX#OdV+l}z-=Mpa}Z*+V&vdW=Q1Qs5~ zw?v5})3g<-{9xy+jZP+17J14FOGv-x4>@wu&{XeGCVZZSCC=~F7Yc)*GC6aiWik@A zS*xxk*Ka^ISm{i&rLgOV#-)7QTCk{mk+VDv4(|4sD!65TA`-C}Z0>x&qd-s{93TYL zQY+=Ex%`xgB-W`aV2fb+QI1c;vEZm6^^?=&%ECjOg=(DEMU^gf<~G-l`WG(Ad$ACW zxn;{7NYdb4tDOF_GRGa7q-os=X-yu{s|53qXpZC>C~OWV`(oKAN6%bTb%X;PvMdY0 zDV`s7q}5Ozg-$g^VBw+n7m=mlk1lM~uS`a%y0 zx%u-PIfaSQlzSw&Fyh3%6;+(47!*~G^1EhF*&N9ie*yhVPDxfZKd)phg>q(I*f&F+6lJTk{K5dZCNs4(oY!mWa3YJmW^sf&%31pH&sk zuVR9B0S4N_BOMskN08|}j6w@*9rq(Gg%U!l8g_i3p@|gl`~<2(jt9^q7d{|W#<&j? zEp@sHMRjZ!C-0=H&yjLNV_jj&a@9u11F%mE3vXzFUeB1Xq_U{P_?mH_akX-m(PykS z76)I}pVuGvzaDr{xk8^P8j$ameuJKc@ZC_kjNd`8c`Ne^!y=|E%D6 zQonD9)Q+9vey!aR`cCNj;`+ehp_2orhpLrVeJ#N!gP#aq64Z*`8Qc(DrdAjKuK3B~ z2aIQn_ZANoZcF1B%f(lR^gy}) zDF4s$U~_-GF#=WDDhJy%)kO-~rer}@G#Vi|np*Q)dhvp+=mE{!)Jr>bp3uT9S$LM) zq?uHMycQFz$`&~?&{#h$0|zX~3O&I5LLIsz#}|sKvcfnOO{%$hS^~vYS*J8>obI{_ zRb>xyW}>B`P~H`nXHVmD2oDjnzN!-Rd+hkKc3$uNWl$%=$yRidH zvMro_;ZbR7ZeCMdOr9N2a9~C|rzE?|`Fu;Au+{zL*^~G~CWv{xbXk_HEh~S`%`F|4 z22fo7PRCn~b?CS(=!@rPkLNF0DYiH|{y=H=WJi&aYb!!F2 zk1z;Iv)xW;8*FtAH6kum zLhC#jR$1^@o;`rm6B%r5bSP~QUSwL@;;}ALC_1Et*`pn~XbEf7;R-)@|;+&HMit!j?($r!#PtT!;wf+b50@lhjz{6DJsp9qs2Ja8aSGMjsObK6UmaIgpBrpanp%DUOINhX8)9j)HOS7auTJJVB+Gbp^BwNG9 zHd|6-t?3(weK?b&XknJT85UbKP3w*zz{qyCztqrd<+8XmTb*~u&VNujX=d}bG8=H{ zq||}u_0al)tg!0L{S?3%UZbO9Ee4bN z983y%niJvWSrH5|>#)vY=@(aKh1D!_+!!g4YoP_%h3xMaExgc!r5u#4bcmuxTZThM zEpXnjdyQgso+s>J@@c0FcX1iT_Zn6e+7(LayBu}a7_p6^AcS8TziJkxCEo`L30}&4 zW!)yV!O|4mHRuwV-`=?Jw&m-1WvrH z(@JbaAflkjNu}8a3@*t#1@-fs`lhT@`@se~odzkqrDj@J-(<#eel55jZZeRKG89 zbU-gEDY{!C?)j7(am1mVl{a;b8RW9&9rJSs+Q&uXaibsA<{-*qZd|lv^{?mQC{aLw7ULluw zM~i+cJtW=eJ4X61X;SL*URhi!RY-x*OQG-iqJdwAZuR$uCPRIpE{q148~lrRU-0L} z7XOoZuM1q`-B$Fa;`PNVef33ai@sQN z*Z*VhO#tL5s{iqs?w+Hkr@NEP%qGjS$%GI>$TjEAY#@+Lvbi@Kl8^)lY$m&t-A#6P zmOXNC_a*{@aww=MXcPnwKoIai1r$N}a)^iss2DlLFDPChD)ReObd7UcGwt>OJ3;zTLhpz9qh-uSR)Sc~$wb@*U;#%B9LqWwWwONh!68 zM}Ap;RK7$0gnW)%lw0Hmd6FEEekVO8-6MU$yH2{ydyV%RPi;Z1b0Q=_EFlWQiqplK zUbW7dO5_u?YCB;p*_QIe7O1t=4^Z~o@S0P&{7`&3@Z}sF`ZNkp$0o68a4TVhYa(oR z5}1I(lP#wMKCRIco8=+RN#_^XaL#PB&_PTwVHE{Cb+pxSt=|O`6Y_Kl2BK~FjVE-4 zo|-e*YRH8uMVE~&W?Ka-0=reQ)hrmdMiiWi&11n(KHIr#x;W(7OcRA?usCb#*-u2V zYJaM!aUv2}(mHICwM;Pr32qb$9+UZ9;4X(0SVMwC~MPMceT;93FDj zMC;Ag^ssoal`F8F0e~k@^VG-a0?XS2p6VYcbP^vv2zA!ItJu+IPcqwn5e5*%V!fu5t%&H3 zod(phaALGW;pv(&930!K1Mg$uI`~lm1`3EjDV7W-*iN9;e1lES%i)+8AoKb8y&3PK-aW!4S{~2HY8nh8Ve_Pt9Ao}9~l+Pscddy8RTF&nTMww z`1pv&X|rV6Uyy`y$w4TlJZ zW_AT?dbHfJR*uREXGO+Vv0%ug6h|i3!h;>uH7nUF$>oWiU48e^@9%1s@i-FYX|R;5 z(wTXw=n{5@rOKr(b4&D73k z2aP;|sSH}p30xCl4MCfd)&@Nb+{^C$rDJoswj^whmx(p<;PT#^=fTc4I3cIjR;P3- z0XOdDEx&;+kaYHubWN7+PZD>Pv_Gj>hR^P7;?XoaZb_S7=~#-(oVUR#?dzk`Ji%qo zmHRn|2Rm#oyl_+;v-r$qzBQ9;oinRqGq}tR&LB@Xh9wmYFe;>~naP z>mha&S83K+n7VxEDDqQ)qO#kPp(m{`8I_iCE_1p(9us-6vm5Ed zqv5DIoTC`5w`f~4`pce;?{5_xTJG`V+1;6%QP~w5kK_kJvJrSxOPkmd*SN`D~e|DF5?|F`|u`7iYM_}BT5lcxEP^u6hO&Ue53J@0@zNsOyd-z$(SxH(rfw) z`osF|fwT4Xa#8uLK1Mz_e5X&A2EwKAhVb#;o5N$Yzi9it_iMLlS8JB^IqgI(uf>&( zp*KQ5m7fiLA#}O#CV8cDS12Xj6_VB8s6SG_q3%=Ws{_h!)P>%i>I^j!{JVU(@*Cwx z%2moaN>N#*WR;1EEWalISpKHGPyV3XFP|(o$w$eC^rrNj^nmmg>EqIQQkS$^YV=+v zO_oC5-+Q0--tE0{w7CAvI5p{soyUHK z?zdcOJ_~OspI0VWi_}TgX<{p9%SE_F4mE`XKa<6jDbKf<#qA2XWT4qoH5PXy!hzBL zfF5!)m#EcgiENEEiJj8Kh`|03v$%sWYzNA4?wF1HR|-$ZEKXK}`pSmaSe(pBRE+dP zvc~eVHIob1GA3@1#a#`Br(zbj$!5!^;h4pV_6_BOUCgTGi0AYGv{=hlOzyF01^Cdw ze!yM1)1oG;5g#fdTo#w&c9RZqH4_moW<|NyIER5u%;JP#SXtOqsI_qHsR~0x(_G!+ zEs1R?xmzjsU^4rGD3EPzF>4cBJMPo%4#cdL96aMp@EXg8e-@2 zh-?ucIbjF8;X$ceAz#dzz?E<`LRdY}WLB%r>d91jlsbk83}NmhdT$V z309b;Tqa$mT&<;XlMQD5n!7_XlGnj>A$HbSw)QNJ__!RY5I?wQv>8#mn=L@@L@EVhyVxqyjm})D-N~28RMiT>mkx08 z5*y}G*(@YGVTheYX{PR)L3VJ-9S9|8NIfxntI;9P+YyxW?ix4Tx!!-I^MUQ|pkcJo*7lVk1i( zd~jxX%-X?XVUj&8;m16)4}F@{SaaDyB*sWK@%5wsX%1;|8YCDk zQOp_rlkca2O%~A~RpmMuE!hoxA99`kw*#?7E6vfiycA*^PDh1*(46ow%BA6`yv4gFa6-VR-K4%Q6@ynQ8Fj3BmanAgp|`a2 zLQkttg_@PSg409W%Kw1>EB*_W$Nl~OleIPewD&mayMER8 zao?%l-}@Hh=KpXh;0q{!kR~d>P##onSFTkqRL)RNRhpGKxc`^s*X5te-<7{CUnQR> zZI-*`wRk}=O&%-#O?pZCq4Z7ZI_bmGPHAVfWH>X{W?kfVJ(q|k1ZXmskF7IEsKCk( z$%`k`{ZowEy4qRrK3hLN7OSfR7#huXxQ=M=?it(--~8>wfhC;owzm;~as#Cv_>zM^ zegyDo>nA=_$TtMaf)5Yk=ZYr!>PcfOh3w?UC%RN@N-iBcT*wUdLt`{9WQIS6=o}H6%f*5s3S2yov^-8#ANaV8382K@1Lv=s&i;Z>q%w`+BJvIEG&SbuuVoM3OL{e zB05Wi=2FoP0SdPd(Ix>3j}Osp0u;_3V#|a^q~Po!c9H z2M{Bz>e{xWNx#RUwwEUR8;;|Ky4vj90hpomb&kFv1h;#}ur!Ws5?V>DF`^5Ep2C1F zcFHK3Q`yKyk?`r@m)x^Fwm~cntAc2QP!%p_)p;D@*9v)HX%+Je2#F0)^h7apqA|L9 z6lf}%7oe#`CfXuG^V!fQ7wJ|A)f3a1*m41!hB05XQN)?ZMwSSqOXZ@A#jFi^vK~$o zP!n^I*a-rdcqoWw1T=VjA3a8dHsqp5h|o+bIzxmuG{)wO)xkO-bU!;{v4vtLtfyE( z025=%XiTgqm5H4!W`^T|(C>sL9XnpgNo?!1@7nLiqsIy8VUZU*RxAY5vRJJECMH?2 zF(MdZK&)2)6BE$rB%#J+Iv1TMKw%3R+bW`f6;dQEOpRn?_ynHqszOm1Hf5ueg?eC8 z7@HtwhDBj?wwO7WiOdvh&xOww*0d?&gaKW2s)#d_3x7u#xag6iWNe5|6QS8A{n(1j zmsp)xE#7*^qN9KzlmtXD3_)vZ#Lb-8B1U~;?TNI0rh9WbOvDO{x>)@v;Kr2xyk{=U zcMtvV*wF$)Vn-JX31DJ)Y3%T@rRX-y~ls zU8{@@1pIG=YJLA9KkWZxXur17eA2wzyVw{AWVIh^HwLGL9+KJvkLrg7CQ8r4JHSHY zVtI`6eE2>+sciIJ6Zo1^@?IByR_pNJrZ1J!q1$xXH%6K6dpmqmc(3ny>0$L~WGOBaNa z@~6EYQr}RY@oiAQE1jvlEv-;qP##sju6$OxL>X4vVE3O^>fsac_wvu=`{l35SIc|k zUi7g^o*~EJ74TK*$I^GC8>K5eQA^y3p_(0MO%zVmSv=pcmI$i?PgP@yoo()Y_*%q9q{jARP%2F@@p888-Xy+-%3Ab07FzGsm7G@Bj4Y91dgF zT#?a01uLC7%AF+^ZqyQaKlE(=3q0h_4gHB)Z6cv?@UzAV;0#V;R#*h5p(a}>fE$tx zQER#Y&XU}s*aNL2-ed}$BRb94P614w^Te!;0-W5e#4M2+lZ(rkB}%B|t}$wfr^`$x z7qtpP+i~v{9TK3p28&t~1aJmhzvU6Zkaa9gXgPV)7PG`t3b{~@TE`1$pw^FB;t7CU zMnx_0WR%S&qn0Rw;@;B}-6bH$)nU|X7QhWD4Be?BxS=U_me?U&WkxMgoPqW_YON5F zKwD#p5*cnOVwNaZk^APD)gn~d0L4tyDvH?iso0>9o7_@HE%7LV8?LA&o=c(Ck6OBb zI|G@<8ZRIxmIhHvJh?R_kzG6^ko%jMwM;-mF0rDPc!Um-VzTy-7+_ldQM>P})o7PGuUZN!W# zdX89IBBxGp(M(iC5>uI&C92?wW0>gKqabZiPv(#ID%NS=fVZJGLq zLfs=CZLAGKRe1NV-ZIL*866g~;{9jHFCdLs;$g8NPdJdMHH8IR#A+9YrXe3%Ittzz zpHi-xu7Q`&5#T@Z~{zC{3o2{579@2@) zR@4#?jmCLm|<#j#mOjMFc71{n6*}H2u%C5vqcQzA(Yr2!BdWaf!MKWcaO&P z#A_6o?nNz89Rm}&aE<#2YE2faA{sDjrATBVzW9Xf#3V1gV6-V|iI*X;#teT_m^)Ex zzF1oVwMk-aFfoi+P2wy`hX3HEZ`2wipoQm@s3qR8z=jikYJ}Q|<)!|87tNxUs0@Nt zYSa>S4lqiMTH^g4EJ=4;jm`~CEyC)>YN?D4bIz(3_rG#OV@v9e++9B4k$<@l#y-z^ z>`M6`{yS=kNzK>L(ogZfr6;6^!WV@H!>0%Ia7wQY2em(HztsLi zyA$vKFVS{r1+4{k`$yo`|1Y5zLXU;M8M-cXX=rz-J=7A)g^md6>RaAz>NIs+@E^ff z{o{h)3EmjIB6xPNGq@%=FL-otT;QF+D}f&cz7_a<;EKRmfnuOF&={D4Xad{t65)9N zba}}46W@Qzr}^&jebM((yhZ5pt??b_JIXg!`K$7xa>D=az*>3S;ZB}BeOh{6GCeD+ zmOYktbocj^$UEWo(iX%c!5^i*>Vds;pu3+&cEJ5jTkr0nuJ+PkFQQrZAkJA|+m_)$ z#1Z2zYTJstx(WaTOBr5lLqsUVM{Gw<#JCx9DrxH|_Pg-Ge_ORV)$qdBWbDOg`gEwK zr_ad-Nz=&{RW~bhKz$HST(dE zEDL-RRAXnhA=DjIVHJ`wZ5#_zib?ge<|Jpurcaql$qQ48e&-Q(yB&`MflZ)KW6deH zAnHoTmcron;*j0Qopwk>BoLaEG=Dc@Dd8i^Z6zT*5r0HzA%g@S6c7?;2tDj5y7c&z zY|!JoE*2>`(`2Qf10+PAHzPYeZO@NHwWn1I+p0ap2&aQ=r^<9L4>?93)T>T~-a;Qn zp#wvXU^a;FLazpiW)T|+tOAJb2v2i62MN^LR*vUgZ3{#7BXChYdD5&bsGgoS$DSGa z1ZdY@>==f(hzkAPbVq2a0*qYHO2kqmv9s-I@0uT@k$#j(Tt$W%EKHZ^89FOTlF5sk z?O4CgTAxrT!fQlII&0KJ!HH;}fB`q&(OwaXi=LiQpsDC~0g7wy$Tp#}Y%ba@W`*TI zmk5QF-zh@VX_vu-J;4@?E9&fRIO$o|e?BL?5tz$Xf)pmU5|J%JQ=y3~2-TCr^kxx? ztHU-Cnn(wK?Agh(7Se+M0nXyO42nuV3F@-W}jgS>)JdqQHtck|R zY7v-D$#H4-bV@cxAPO^rCt)=C#z;~GrXvXfn9E1zh`?NA zwg}8bW{JSmxS2wWa*-KA#)ihoF(NP*UdE{bNZT74T({4JNs`;=@U=qTY*XYY0c$o9 znJNG?xyX?sut9J3oXyH~qyhg^BAv^CkM0G~9z>21+nK`nvNpA(nd!zzT*#TuM<$8D zTx6mMY>3ti(+)1LqKAu6SgO^DP$-EH8wJ`FtrekApHC2>nS5-#TST&LWot$QH$`GX zH*i-I6%nVi(a0#!RBW7x7v{i`u>#&?E;>fQ0A*d&90i(<83JBnvJlfp12;v(B93G- zqKS=2MnghY7+gfvQJ~pqa1>}d8W5ok$*5n1VlnxICP1gA2%RA2r%_qNkVuV{boV^f zz1wmBzh3tK&HJ)HFa5}SwS1BH4C&i)M%f6zch^dPH1-dRyqL zN}vDo(3{E}O_$%$it@AaSGBX$ixE#?z?cv^Dzx7}*<7bzpog?ZU)jZr~g5H!S{pUiJ>u}^AU~UXL2z72kp;cJ@Dz! zL+WAbP`E$b8ot2)m++D5Vt!N z>#%*UXQ0#=Oz@gH>Zu=;Gpws99 zPW_`C?05_~+_A^&$eHe5;bJYa!wtm!qP*OrSB58Yo;wGwtfH16A(P9Y$T>pZL@s)k zn{YS~G{`@24`IX-I3i9*5lh(Tp+Ao7a#w`=@5s4sAROI~vxGez!D+;cp@=2y^U%sh ztm$r?FosZ?xnm$9Rm2ixF(}0&)-<7bs!`d?6(sF0Q35kY?C2aG!qfzb?H1d)_ zVcZi$t;udMaYTS1f9@D)QEQTzGr3@#RWB?{T#bx(=Ox$X2!D42o~~F^h+=>8q#01# z#nMx44F~blP+bod6-QOZr!R9lhKF{y5slFhbV$A3L}Q1AL9`uEUqK1O&+V$NhNzcD zSqj8+3(-ckVHNO20f<_w+?{|K0<18E6B43^$4l1SCt44q+=4IFenz)_iwCctWYM7U}E-Et+ZH z&ql1MJ9{RJrnb4Eh;b3I#<`)eHwx@>&CiH6M$CqO3epF;?}%8skQuKK9^vnoBUV_< z1+#>WZqgC!qNpVZ9>lmPsJYr1wFIGqT;@kDLF%B^09j6owfW^ZOA(e#DtIndM${5y z403lLv4rzKy}uMh8e;Yoyw_89Z$zsjoCBTaZJ{XdzzM;cAW$fmRg<0?*ZB(mq@$MR zrW>(sidur)Nlcp}*70u4uxyH2g4Tu@HibSWG?|#>@OE0H$*|J`6K!^5hW%2+I#qz; zWMK)XI+!U%tQA6DvPy*0GmMm?mLPc&8>Oh#;wA<$QHoea0dpQJK+x&H5-DN{r&t&w zMJz#I0K=lFC1?SNT~X9pCbR-(MG;F-EWxTs`v?)0B37-th139OiW?D$t`oHcbsDjh ziCAej4j9Trt)m1SSU?f$Xd!bNBoR(>F!qU9f?5G)ND*tH8v{%bBbIQwhN)rHnk6&> zmWJBPZaE@qZFOfP79J6+L#QjC7-zM+7i>d5JeLy(V-|1fK&C4(b%?qQROmErzLHwLiAhJ)s&OMB1}pkx zp3}OmZ|zPJ!)DU3iS4X1yuZu0hR* zm}?ogdXBbtk%RwsTd0z{z{JN{O~PDC0@L*e$M(Pf)jFCOY%@nFn|S|{XDD(k(mbci z#>J91{IYggsGur=uX;}P&++-?PyAD~+%u(6S64s7Gy{{zXM;$VDBX{d|V z+TXQ%u)Dp`6YuWZI#9r6_i#Jh>=$Wy(kf2Wj}yQAxUMY@pjq)kydUrWi$H@O6nlz0 zXe&y?gQV{MVyVBU81KQ&E^we>q?5?kSBiI*cEE2yFX;aK`8Vttdn$Q-N=GTljndTM z-l=4i@Uvu~RP5^kT6UNc>BNfd^A{bpmHbpGPlt)v8x#iGyQ(+EqYhHjniXxU*DPyk zT66M}HLcC7RyM6#M8?D>HtvE!hIli%tOk_S51RL)gA6G<;)TI@=RmQD$w7M92kOUn z0yb2N<@odGUkS<$6t@-!$Ynkqghj(cm<-g;0+t8yLO%>9FvnnN zK(Lc()7?%B7I(G7Xu_r>s7j|pdtuPVLRuZi;Ps(ciO{U_~!OLhb<=eUt|5JeZvWyK%Aw6-x15%)r6;)`248OJKQx0aS`%X2#c$ z>3cAX2s!E0C77LQO_5NW23pXryntmxYKeChd-}Hy_c&|FUf$gUWpE!{AW-C3KX^KW z3TKZT)m~RSrPizsOkt@##p9Wwjx3?nZdzC9D|QwJyTE9gz>EeuRxC-ZkFQ-&CN)f2 z@Z9=PITe%JMeKD=tD2WItzC*$5$`Q*2c0m>`Z~d=x`(>Rw1TY)(x9W=vE6afZ>$xY z&V*{cg$^>CO2eI9Aax)3Qb&mt86;#zsj}?|ff1q>24J+(S)|K@l-~kl4NT?165+FC zt#uO~i1;6~_jtC{)lQyaMgr5u6K;WUQG};YBZS)1O9|Du2J5u5xCJ&d+|10RTUrw9 z=QoER!Ox=|#bSTkRxGTc?&1J?RUDuYO1`%4!4lMnMXAEqx!f*#tpU$i(!5|<^SUyd z-vVD4gc%eu|A;b@<@V*(NO&UYI(8qrdMPb2d+|TA`knm*eFtv`c}oMGg}&}HF%t*- z3CkUTzdN$VZJLi(0_vJlU&pLY!k4H`m&1d=UeN8{`1;a7e+kd}`miaqLrdh$ak4^s zOQ^A{)KA$M%#oa(qPP`Oc!;hPO1VK8ZP|MS-41#|Ox3q(%%Sc2ZBH6iuX^e^^>3@{KE2q%fs#KV(`~W)??y*Nk?mqC9E~ zHn#ZS@W77Z?qbJGdy9%=d7m*%#28ABp5j(8g&s0Pim*%cK@=MrCMIH#`v^qpL+w9Lb zI7AFANy)N=mrA4>W+l?Il9_lSF*lu`n@YKcp=r&6)|1vyjsT7cb_UUrR2s*U>>;y| zFor(JafFS6P$2Xm$U`aL1(pEL;v%Ut6`gEDV6GrPDQy$28;g70X;d1Ec&D)Zm2O0P zW`J76^k~tU-Mw21T|0~HWK3o$e~k=+{LVIXfc0FJ#F)IUzArjuS<8Z^r5l>dJQWfa z<`P}Sq_3DheN`!%Oqa5eYMkMC?Oi1>*ACchZXrw%q7Acv>14*HJlxkY0PeRNJ3aP$ z&+gBfEs5q3^ckU^<@ zCmgv0{pcz6)2YmyQ7FskD{U!t03XD6BFT|@oV~ZR&<{~#XeU@44k9Cir_|L=pJ9$A zQ@<+l+Ec$k$0(Iu2zjKmv#{G15!s-{RdkR<)={1QOkUR*Eo@r3vUNk# z$?-MKO$(ROp|TGL9q}!@<7?YXcyT@0Ro&5vIJyO543TCFFz_nJN{bVA*-zxEnaGUZ zW8JiGw-*6M8QVGN4Manz?Jb|4=ExMaxf<}y9+52%^i6n*jrTRO$R7Fd!*&Ox>~A4wZ(R4<^nBQzL?7AT2{oAmDD+US$ zUcZsRF(^GhYahuODp87(HXr!*fXVHmY3oUtRx8#tHBrq*Hj!|SE2W+avFsg~Zt2eQ z>L%J?Y)x1&;MZgkQN<5AIooGPLdlA%%>g=6Albfg2Z5#Rwln!{JB$S#4_JJCh#R90)^{isCOZ*R3{NRZ1$5WPp4yVKe!>$SJ)Qd9pc-7!k!L{CP8Xi>4}*g}BKSFjDE8b<|NkreE+7CGCj zJsTdL>!Ac0g+I)pqtURT)Uy>YvKq_(wzM?NpCmAb1IS8dMd@+iNxY$T$I{Wy0=IeR}l;dM_Ql)tLdG+ z=jb!xWFLAvoEVuq63TV=E~8XUt){Oy+lS&yam3;{Z?0i+OJ;5jL$7~|MXX-ax^{K* z!gcYb%T}(0mY5vgQw?QCK|4a$ET`H8w;=LPCsod4TG`#Luvj9L(oK36xwDLKgHv#_ zy*sprd`WH^2cg?9A*gV%e-zG4Cp?5wP?%2PN;3!(a%3aQgh?kFY2-Qi?4clk+PI8YG8xTgAfg5P78yO5%zR3J9WsA%j8bO7=N=0*4Zy(18m~Nl1Ln5Q6 zH@Z85RCq%SzCx7I-)eM-*@08n=Vd+EOr=@!7yYSlguDn(Lr4mz8%J+Op^JL>8W4F<11of8@zwev+ zPQ9pS^(o=sg+CMiaCn7ws@A9lLr;eip^54{>h*{)_^sf{fhPm|0_XTI@)!NH{dK8^ll(pJ1a2*VFwzp_O+&UdUo2;2YH{LjF*|Lx{~ zm|rw6Hn*E~W?1^FahEaOI86VDzFuDvK3BUl^fo*ToT@&D*8@d$S}+j!e&F&zuR?qU z)cW7`@A9wlt@0hN{8IU>{5APw@_OlEX}L7l`@HlqxmmtJxk5S57xtBWr~5wQyVKuf zHje&Z__pw|VNLsm_W96*p)ZE64t+4RLVYawyWlV3sbGBI_P{d#Z~fo#Hv!K)-%RCO z%H_&=N{2jI9wXJ7ubRggKQk^dHtJsr?+^bdT+;roy{`3YhlPF<+7>d^J?fC!piT(h z6g(^N7JME|_dn-<%&+Y2gM5L!L*6Q#Eggg9#QdmmTu9X2 zo?n^rWT|>c^StC4Cr^{OUEA|Z5%ipNibts+d0ou#ybJHoTCmSQEtAH*sjuY7zHO%=cYMg+YgKO>l% zyK4TU#|8M0N;PkZ2>&dCe(x&(fGhouEB$>D#eMSMi3w$;;&;U?-&MYKfCw|?QeH(Y zb$8`sSp4`8SHnIuDpmhdM&bD;pWlnqqYL8a)1I$Y%HHXl$&Ig97u$2YtMpeZrEe26 z-^yq9M)|bo7T?n_doE+}9wA`x##|-7%%{Dz?%quhaCpApDl=Woa)T?&F=CeM{h#u% z-VMqN(f(J+?>$@u9VUQ0pAkWycC}@;tBam%Mx6qm;){7cDPq1lFx@kOZ})*(KSL<( zohE{g5s(5FGD`vn_G|?LsjE&w&4A-1f2ZG%vTyoD=+|XSKWDe7)+$Gl|Q98eoLi)nt-=~st5bKVD9zI2cJ*!ydg(5)^WVQ0D3Th-V3Ny_Kz2$}q6 z0r3{Z{4<%32^lsEkhXH=r-!!j*!jvgg&y>@GN}LAKY8ryL%-oG7uvZ_JB;fZUw(~{ z|3qyCHElXjJB0$PwBGk7k&ZX)L+t{ z4E{QJeek2fLU46(QsCQxu0R&=>LUTk|9k&6`uFua^y~F2;Wu!|zg_Rp*XfJ&jDDmZ z)s^s{!Y_uO41Yg-NBFw%N5U4~@VA9mh3AE5hU>y1?QQMX+E29y;8E~;?W4h;1|JCC z865DR6*S-(@XLWu20j?r0NaKA{vZ19_TTJ#Rom;Ip$%(WwGG-*=pv5M>a=j^ozQPX zzYIMd`fli}q3isIhpr5LAhaXY8QK_H7HSMl57mZL^=`#(2WHr0z5!Vj6o1~c*9P4V4=kKlpNmmWtS*{Y^ zquqe1ZorXlz+?hoy6ug-0h8Q-iEco>8&F38OxL{Q-GCZ*kqA#M?>Kjfv2MT^H^6k` zG+a0}S32ZMt8R<|H^4o}UfG30a;3fQHhEkC&)-~ic>cz=UnN} zy3+ex>8o7nD_!Z!TTt1oMlW9JA6rZf)lN0!4gijiLQgYATU$_B}xdD&50e86p-*5xI?grf92Hflh z+~fv)$ql&H4fvQF@KHD5!*0NZZh++mobTF5hF$3)SGwp*pXN%R>`HHRr8l_JC%Mu~ zT+XIN(WqNnGlTG;ynA^fM?u*r`>>`xB)+Q1AgQN{Ll?} z*bVrO8}KbR;1h1Z$4TFqzMSVupX*AW?Mk2NN)NiyeXew`E8Xr&pW;fly3#GK^m12v zsVm*=N}u3LAMZ+MUFn1?J=vA6ccl+^rE7HGQ=U)Aixu;G!4LcI@!+pAX-uEYmgx_W6zsZwhP zB=iYiCbUz&#XlMG1CG<*37j7qr(CPPET5_VME$<{1?4;H$JGmryVV~5X=;mloNvE6 z+5fn2um27Cp5TMND}&!KZ}WXVc#d{aus3{u@Obmm;LP9{c|-6Y@-^n!$|dsS;Vbkm zsAsBflZ)JYv|oB$x>veY+9zEuoiFuE zo2Av#d?_Ktr7@Dn`-XSFcmKc8x#RyAO);!!(D6b=%+9iD)A9u!pYsF&r!8hJ10dmp z&8-X|jj#ab$t(b2jZG`SK!}Sj^E4KKr-0^81^`P&lnF5q;uXxyG63Sbc+B{qb2W^n zQHQPz76t3PzB$t-6H{g4!P@8X-0VcClt`uX)tt^`fy3h_V=jXvmB^c?G8u@4=DaDv zTCZ=)wEB8N(M$%)*So(R_f%hk74b4}816!d(N|w*FAOiqb4c>Mr2|h&jbR2q+~}FR zS^V%0YMjkv$Rrw!qnLCun=mYc0lO_?@_4sAN0P_oy*>fwe_9As`> z=bnzap-h`%Bfwi-Wy*bvc??WHU2~$uG%KA;7zrkw%;n8>Y)4a>CL_*fNau|?Y&w@S zgG>PgH%^-}2S}uhA*KYJoEl@9bTXMUb}(ry7-JffPG*||t6ggM7Unydk})QY#beB1 z(+!QmxU2ke%y+zeFj|>3o|hV1*mS1Rn8&0M3fyR9(}}Ec1d~o?QpPMcol6-Sn?`-B znRFWTIfh9m8*+w^O(UqarNCBz{!qph++6kDWm+t?$x}Pi@-pw=xG%|+xt#?dQi$2j0UDarKUay<#eG9RJ2^l)trwX=O=m+#Fs(9D z4CUaP-e_miAX@13a(|5^^Cg*2o158c;Oo+C;{b_t=o=oGbfJGoGarbzcykj2Ab~TC z1q|*~I%%H5Wk_Z9jcgavp+A*Lw}H)wuo&ig9?)c-!~+uADyOWmmZ>zIN|@|yNMb86 zPGmDA8jZzFI@ORjRIQe#RHubrmF_K-O2G#Z#P z2+zif^ z?+KqrnsCNp9!}om#64a@^XR^_Jy%J~W$iNQ)WF}g&Dv`Je=dcB^EeO*%o|O z9iyBad^h-?^3B0}{PP0e3SO$*8ayZ16I`Wy7}5MDDQ5?D?e)NO{#AiTr1Q+*20rcE zBi|k93#<;mCf5e$zzhFo{~P+r%2EEijnj>HeOH-}OP>qg9KJ<=PHrhZ>J%2wZ858 zS-z$EHscriQnODVBlU*=A^$M^Gx=BHdz7W&%akX>=Z1UbKZIM=ndWKXN!q*mhcsQ0 zwa2tuwS9WSf7j^$zlO)KSkV+-PECtl`@}=5Il`X4^6-ypSQ{8_fMCd`HHDeq#Idho zZD+GIri~F+#?50_wpckb2R3FM%@jevZo^^^7VzF{SnS>m$Gygg$`r{p<_)Wj0W{=N zrgbLMGDv$142wNXq_RnDZ>)F?AHRmx&tS^3upj^Sv5nR99~E2m@N4m$j6RTKA$s3j$u01 zm}msa*;5ESOB+^^LDG;1{aC3HzMzefdL~Cchn}+%9sEL@7P~VMm(YgAidS&^Y+9?B zmJkQ_P(m_jb9rE4Wq9Ju-WXwzFsa5yk1@h-V|fUd7JDkpB^!(piA9^s9&bTQLe9zc zL5yVltKHQ#s$)=>rDSVr5<8 zW8AR1nVb!T{;cQ?KfL~1Y0=}YM%rv!^FYE9$m4&ymv1(=6_lG?Ry`a$qEiHuspb_ww*+vWM%D!26CR-!e+^3kFy4X%L?ceI!`4LR44EZV8pCp0-D+oKwuXEl&WVnORp6SN3CwqW-^_ha z2R6I$pT^?P1ukdXYgn7u;t zIP^9xR>ML9ngkP-@}|W~aKwqVX|YN>;=kIkSp5M!!9yQVjih2&tTqE~{!OceSp~$) zd~jb?e_&WEna(!A>9n5SPdRlcT@0jraseR&&dsqkPI#MM1~+1YP>4#&S#M) z(qpYfLB}K#YupYFVOR^i=ElA+$q&xaiIowz4gpR3Z>v>N!YO`$kj+OSyV41#zV zR+{NO{NkGG6{ z7t=XFCbYjoKhv7TB1gz@!(z2}2+nR=N3mI;{nns-VAj83u}3S!p3xG_{4z$^+8d$i zwI;Lppb^me+4h?w3iCaehqrmFo|!)xqz`A)jT$$e#z=_iZa$GStXc+uXb1YpET(*8 zRv%&M*_hJy^X-|zw5Jgoy6_mLf2OsT`AnR_8zU?Q8xxsuf~VIAt7>jcq{Hm`H!W5< zmP=y%MxY9}>5Vm(Z%l>vG4&fG>;XET&ln@DT$ax#j1l%yAfL;HA7}e#SiKDThQ>x? z&^Wxg0Ahq2!pFq+V1R~pxV00ZU-s}X=expNN*W_kCQBZw1&h7BXdqoxUsfT4@FT{EpXpW(Bi8RB?x_#) z$Fx{YB=+Y820tG>EcRT&w9aMQo6Y15Zv0K_Z0>ss>+3AGKUtHV@5V@k!Jp4S+q9bj zwUMbG@&ze=ykZ^47WHOgzsb5hvc64umTsw>q+!DoYC z^8EPq)VWINJ^iRe=EO)7yq}K*O@1oOO4+cea1XvqM_(N*3Z`m!+#Gy z9*$^FX!nPn3f&ZH4=oDiLK6bl1$G3w{Gatb>$}3Y$JgnbCf_OFh_~{) z5IiUFy})gOj|3V5Q~e|U6~3?fg32bvCp{&3T;4JtYt#y zgiZ`i4f)kSsgJ6bno{Gc5qv(lEw~}LD3}aR#EXX|0R`_VzUTjnzvSQK&-=&we(n2= z@{01L@^Se^`A71V(x0XKU?(sL3xN~LGr;~=m+RpIpwQ6UJn_)R34Z z*P~qVIySTCVK(KBvnkI*T)D}_n2SaG1Mc&YT+#cv)c2Jq-QzWt%kVu8)zRFydwsR# zGXM+s&f-$j*_4Nxrm=1Pw(m16<0P5Oqv5%$JX62P;rK=w{Ppr5Un~D{Cs+OsuGsC| zx36-k+kC$koK3i?`V|h_E#)e2<`CWFA1@%{%6*ATebJvkc=j9pn}iJRhJD`uQO{94 z-x)3CF7`S9R}M(|eg5Ac3QDdo*K(IR`v{k^ z$`kwiuv`z%0`}&0UhsM5e8GM>Cm=_>*uTzJEzg#Ju9@#u+No*S`FDtI1~oWkrpf>@ zz+}>AsE@iIa_)Sl$BLkjy?3V6+4A(5jF2-NVbt}!Ui_6o=u#j z4R}^mD){IAVDYwUSGYUPes0lz`QC%$>h5xapiG!$Y+@;n^D_^%?ao|T#3G=!>y)*RvqqVop_@=XYk7g6oSd>Q@W8WXmrWiArb;Y8ZY%CwGLFIWj$vEr% z)pWS=u;;&UnaXx`0-G3by!D<_v)tIIDNF{}_>VJ>b@$elV~lyl0Vrj#WYe8x6=vJ2 zv563yP|csZ>t(S8*o2=g=wrVq=AW3hxf(8EBIERC{}9WVOZ<;|fts1OF${JV~r`BA20F%s~Aw@^w=Gi#(`SELbCgVj?KY)jyU?jS;hlM3Bmr!8