From 600600262575d90705858fcdfe3f7b7dfb530a65 Mon Sep 17 00:00:00 2001 From: nabroleonx Date: Fri, 6 Mar 2026 23:31:41 +0200 Subject: [PATCH] feat: add compliance profiles, PII scanning, and column mapping UI - GDPR, HIPAA Safe Harbor, and PCI-DSS profiles that auto-configure masking - Two-phase PII value scanning (pre-mask coverage + post-mask residual) - Custom transformers for Safe Harbor (year_only, zip3, age_bucket) - Free-text redaction, binary column handling, k-anonymity checks - Non-deterministic anonymization mode - Audit manifests with file hashes and optional HMAC signing - Policy gates, source guardrails, breakglass workflow - Local browser UI for column mapping and config export (dbslice map) - inspect `--compliance-check` and verify-manifest commands - 160+ new tests --- README.md | 43 ++ docs/assets/mapping.png | Bin 0 -> 372246 bytes docs/assets/mapping_instructions.png | Bin 0 -> 375065 bytes docs/help/best-practices.md | 36 ++ docs/user-guide/advanced-usage.md | 206 +++++++- docs/user-guide/cli-reference.md | 144 +++++ docs/user-guide/configuration.md | 161 ++++++ src/dbslice/cli.py | 623 ++++++++++++++++++++-- src/dbslice/compliance/__init__.py | 18 + src/dbslice/compliance/manifest.py | 319 +++++++++++ src/dbslice/compliance/profiles.py | 366 +++++++++++++ src/dbslice/compliance/scanner.py | 203 +++++++ src/dbslice/compliance/transformers.py | 183 +++++++ src/dbslice/config.py | 17 + src/dbslice/config_file.py | 187 +++++++ src/dbslice/core/engine.py | 366 ++++++++++++- src/dbslice/mapping/__init__.py | 1 + src/dbslice/mapping/server.py | 489 +++++++++++++++++ src/dbslice/mapping/static/index.html | 591 +++++++++++++++++++++ src/dbslice/mapping/ui.py | 18 + src/dbslice/utils/anonymizer.py | 161 +++++- tests/test_anonymizer.py | 21 + tests/test_compliance.py | 701 +++++++++++++++++++++++++ tests/test_compliance_gaps.py | 328 ++++++++++++ tests/test_mapping_ui.py | 204 +++++++ 25 files changed, 5300 insertions(+), 86 deletions(-) create mode 100644 docs/assets/mapping.png create mode 100644 docs/assets/mapping_instructions.png create mode 100644 src/dbslice/compliance/__init__.py create mode 100644 src/dbslice/compliance/manifest.py create mode 100644 src/dbslice/compliance/profiles.py create mode 100644 src/dbslice/compliance/scanner.py create mode 100644 src/dbslice/compliance/transformers.py create mode 100644 src/dbslice/mapping/__init__.py create mode 100644 src/dbslice/mapping/server.py create mode 100644 src/dbslice/mapping/static/index.html create mode 100644 src/dbslice/mapping/ui.py create mode 100644 tests/test_compliance.py create mode 100644 tests/test_compliance_gaps.py create mode 100644 tests/test_mapping_ui.py diff --git a/README.md b/README.md index eca4b99..e5e2f3e 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,8 @@ psql -d localdb < subset.sql - **Zero-config start** -- Introspects schema automatically, no data model file required - **Single command** -- Extract complete data subsets with one CLI invocation - **Safe by default** -- Auto-detects and anonymizes sensitive fields (emails, phones, SSNs, etc.) +- **Compliance profiles** -- Built-in GDPR, HIPAA Safe Harbor, and PCI-DSS profiles with two-phase PII scanning +- **Column mapping UI** -- Local browser UI to visually map columns, apply compliance profiles, and export config - **Multiple output formats** -- SQL, JSON, and CSV - **Streaming** -- Memory-efficient extraction for large datasets (100K+ rows) - **Virtual foreign keys** -- Support for Django GenericForeignKeys and implicit relationships via config @@ -100,6 +102,44 @@ dbslice extract postgres://... --seed "users.id=1" --anonymize dbslice extract postgres://... --seed "users.id=1" --anonymize --redact "audit_logs.ip_address" ``` +### Column Mapping UI + +Map columns visually, apply compliance profiles, and generate a ready-to-use config — all from a local browser UI. + +```bash +dbslice map postgres://localhost/myapp + +# Custom port +dbslice map postgres://localhost/myapp --port 8888 + +# Also works with uvx (no install needed) +uvx dbslice map postgres://localhost/myapp +``` + + + + + + + + + + +
Map columns to anonymization rulesGenerate and export config
Column mappingGenerated config
+ +Runs on `127.0.0.1:9473` with a one-time session token — no data leaves your machine. Apply GDPR, HIPAA, or PCI-DSS profiles with one click, review what gets masked, then download the YAML. + +### Compliance Profiles + +```bash +# HIPAA Safe Harbor — auto-masks all 18 identifier types +dbslice extract postgres://... --seed "patients.id=1" --compliance hipaa --compliance-strict + +# Multiple profiles + audit manifest +dbslice extract postgres://... --seed "users.id=1" --compliance gdpr --compliance pci-dss -f subset.sql +# Produces subset.sql + subset.manifest.json +``` + ### Output Formats ```bash @@ -170,6 +210,9 @@ dbslice extract --config dbslice.yaml --seed "orders.id=12345" | Configuration | Zero-config | Requires model file | Config required | Manual YAML | | Setup time | Seconds | Hours | Medium | Medium | | Anonymization | Built-in (Faker) | Plugin-based | Advanced transformers | Not available | +| Compliance profiles | GDPR, HIPAA, PCI-DSS | None | None | None | +| Column mapping UI | Built-in (local) | None | None | None | +| PII value scanning | Two-phase (pre/post mask) | None | None | None | | Subsetting | FK traversal | FK traversal | Limited | FK traversal | | Output formats | SQL, JSON, CSV | SQL, XML, CSV | SQL | SQL only | | Cycle handling | Automatic | Manual config | N/A | Manual | diff --git a/docs/assets/mapping.png b/docs/assets/mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..268d415053ec04be818f2156884d81269ed0cf51 GIT binary patch literal 372246 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

5}IF+y^+CS6Ap^)vXl1 zzW0a57iN|-R6&N(f06zcvg{(_MSq;@{kQA*KTh!y-Do8W3|`>&%Jsi=SH`}NE22!q zEm{0<_DK=@*Z6~M3^(ubD@mL-A%*{}GW;jT`CgzA&FBFNOivC&GMUgKH3}vIL7~6j zVgxUHvM!JU?VPBa3E&)y!QA$F(~+1X1rE$k@e)m5v>c4)%yB#p^6h=Pfc=I0~djH|q1PLS z@)ghn=RZFYH2?LHSa{VQ)hr*FXyqGV^gv1g4tYLZ8Lg&Ig%1Q=yZK$7{QX&ImHXCK zj@{+_Hzzs}!Zhj+_rwf~`8=6O0@x(BE-1P5pC|X_NOD=6lf}xe1mZ88J@@G5JbC<> z5Jws3_he1sT~2qMdB5ATTj>Nzx&K)+{-Ls?YBjTx|1R5a8KSx5-?~3-ce=@~jl9Tg za9u!rc`Nd&ueHsbPPb3*OEd$C_Cu=I1(WiRr~LIFvEp0jCOpDL#eb=Eyvio~8P~&O z0gw#VM{X_lrML45)}`u(p9uO|E`u%&5l|lnU+C>&i>i9B+Ij-VuJd$+n?~*4=gI;i z4PWK8_ag4xC%ci>T{zV_hRR@BbQ1ThSi{$Q4%iQmi*3}4Ro=XzIuLz-T+!64cfSgJ zVGBQrg(xfEUfSq&_~kdyhTTWOz4v#oK$nmA&|q6#uX6Ax@1g$PYl|yz{fH$eOg6v7 z^>U?-DaYgNTjWMDk zgq7mr@LXpMneSvS zF{_h&P_U1IDPz&MUFNW}x9Fwv_W7qm+Vk+O%hUTilUmExx=}lRqm-vx7Z|k+XMpix znMjtrAs{n9u6M!z%H-vBucW%77Rr?QrkgxFbh6NogYTl9g|O@3;t95j$@PSux-?ez z#-o2nB*WL5^el1zAo!=&|@o}qpy{{f({N=m{#gJX6cqYqclojIL z?c%Ghd+E$Y`yz)#+cA=&sc*b2#xic29l>=Hz0#>LyG_7Y_KL?EH+&*HBkq zFoSn>p+!VQXh7$IlF?fr6s(E`qNKE#)V;k@PTuuYRMbb#eO_y~W`tXU>w&MpnA^vNVhp0H$(Z)ZMMt~AnVen zXLin9$ZL!#tplT~r^QVyjz<^L#vIZuXGOufcaTK%p3Xt%r?@7k(5>adkI`*UPQYNi zlMnL;e2lz$#N(k3@=2%7Znmns0w>eiYTMi9;)`RK9R=VKuvwU(I$!OW2{hlsz5FnU z*{^eL(eUK~@xJm|Hk^dOX?cW%F-CnCOFNy9w_amrY|~#<-ohvLd4IejHmBBi#*-q? zth7QOZ03`TpVf#$Z$B@^L5wVT>CIx|4TEu zUrtJPc+Z6$QN3=iRETD3Km+u)PIh%ND^~|te79kQZ0*5^H@yhjm8)hQ7pn4^iu{`+ zV|&dKWN5m-JYX$F0L*cvP8`kE#Ui~gmrLWi_q@+8FN?b)@1_*djCC{=0N@U_a{236 zhVSkqBP_Yik#AZ4-R@-HZhovm{WgY%k*Z0IoXm46dGglmw{JfVIcEwDQ}|tR2qOm1 zmVytd?L7)`f;u}>yFs++_qxoV07?~arDMs}FN>wrmdZpsL%JtA<;h>wmqvF)5{bed zg3g9^)iLo<|8Cy{-VfvwyN3$rx<{<}xBJ7lYdOmEVr}N?BcE*lP_S?B_*dr5(NTUI zjiIbxu|U?k$a>-`vIa>{eC=~LK%qwGqe)cb_+!K6S~J8>2#2h^pL_}H@NT8JXK3}IbM+~4+KbYU zuzbv;t#!5;OvQaFtv%kQ@0jytDYPWNv`xmqI7HZF?ukk#`Ick?I|ByoadW8%=}4{_ zOU%r|iLy3xTwNEi$6S4?gT;<`>a=(4b>GNFvT;0YcHsH>N!VXniF^p;7YasdtL)#} z*j6ba2CA*Em5mV1M}qsW49(Zo6^WA!~=H3kEpcE4^* z>M7s8M%K0k7QMd}N}pvA%@GS9pL}I@FEURl;-`L{VkN=JQ}#WD{v&IL{I`+kTqjA{ zOegJOaEs`H5R8=pJhzh&CV0F#n%as) zdUWJUMpor6w)?_Q2dWdduCLG7^G?=!M$KYbbC+*7FIiq~k-cCzxI-Q#%L#QjEMV*P z{Wyt;kc)_o%_s3Y6^E~7BgF(g4gd$PiBe2z8KUoPDPhxvSv1lUHs`xM4DwutU7hWg zt5e7hWg$7oThR5?%<^cf8%Y8K{L^EiQIC$cu(Go9oysQobf~Daprnxh)v+pk|7>G& zaZy3r&<)+t_e7|YIKW~$sTsq?zf#7 z@!7`rEG$Ut;HT~SR17o~i5AQUO?2c6!$WcIA6D1$#XCzNRZ0H7U;VmZEps1k^fy*l z<(x5PHMGq0hR+-S?Rz*FoMs0~vdruP&x9VIL z4ZZ+vmwCQb+e;-`5#AK3v!$ zswS{*_QTxycoLpRP5Xt{%1A|r@vxK>x$8ZTw7u}vXVeCu_DNDG4a3{71gFx|=Y{OI z>JBkukGD6vFmy$GMXn+)gl-z;*x!1eOp2ZvH>r^NV{D_tKD53?b9%RJdz91QA*67i zIK&kD-Vk=}!eoEdNqzO&D5!Sq-I6hd`t`ck93ef2Xr}_jZ<3FA`V)_uPs;SA{SvsAWE;Jn#nC-S6eYh?8(|@Nh zSp_3|_qc6&so#O4a%W?pBL^@nOH%t1|B{zCskTFdYiIyiZ_tFal`p{_O2dhx*^qc%PP9 z4apWzuy?>n4c#_29-x5pLAW?@^`Zh*lDi_8g#(Y;P|(B;;A%2GLBuS=HB*c;n8Fe5 zKXFo6C~s_n0=79M6HcmX7C}s|)xZ1h`*8dG8}5U@-|e2iM=c(HMs{2lMS%7IeImGT z!umood3>GN#kyzln%fSF8lkM93N@{t%z}y}2)LtO!{K(S_`=*VrmG<}7z7?J8Nw)b z7IX2+@@o{hG63f@e}L|Mz#RV=^)0*L%Hhfz5r`jnaLI*N8;Pg933~TlW(0F&t@wwd zi~^~oM3w*&A#{kHhW&?>jff@Cp0I0Av8&GET(N(zLBuHdzz*5o#ga9X75=(CzokLn z+p7w5RC2O1^`YhcD;iTPJT-kihDew0_4&DJOTWcFQzbm9JyvcW*`>|u<=j}UAC`D2 zb|Y9g*YsQILm?%3l{X2^GlJBExXbD37d@6Q*15xOO{0$_BxbWu=4{K@x7$38<`WU; zQsQS_olQ~cPUg*2$hWO=iuh@sMtjM;7psbfTm+j#&o^!+hE~12==1g$8x|VO5#HzI zq;DtgkUkp?pibdflHCJ&NjI-Wt4MY1K~UrKy;0S^vND6nYu0pacOm#A3*S~bFZY@G zXJ68+@c+|jmkgfOBVt`?fmShjM6O`{56`Xv_tbz&vb;?xU}w5W7WqGNM|$YCM9+KswX>Ym(%Jx1i_oD@`rU zcsd%;i{Ll+(8T`k^^Wpk1_2HX;)mq+_I<&_JE`7N)2U&oDGL>W;6Ej-3O+$1QR+Qr z-2G~x77Zg9mj~1y7kbO{^QPz5ViFP3$C&ZO@sq6NbtaUQB>Y|Sw~dN>_wtF*Y|EH! zwi*>Db(~I*ry{98qyOn6{Ca|G%~JYma=be$DV@2z&lv4jkj|&URh^+OeYf?=8d_8f zD-m6_x;Mj04@{~Evw?gf8ZmUqc#&6HfAq;iwm&A7Pg1xMKfun5w8a}OErWvAfJfPj zWM+$OeO=-Z1+oOEv`L%YgFprJ7fSLAqcfT*Ksvxhg-WBe-(SU|>eaHlutTGTr)MN`b-3%Ecv9SRqEYA`^eqyzq%jkI@5zW|5Ow zwmq}XW%A5KVA;!JjZ#Ee55$HeXGkaMXIBQdl9F`Y-Q6We zoOAe;grxWdRp_52cgyb7HO%2;RAIvXdk1G0%n5wgy%atvK&q?Io4|0fR&O^$&U6$y zbni`IU|DNk-eJ0PlJip1rZt7oTuoF89ZfhhE06O8R-Hurbdg;Z*#5>_fMsfhgND(~^&P^peU84J$gj z_~$m2MoP9_!^pwDuAGR~_~K%eC~rnztLjXP>^+yfqct^c^`*TtwH!!!q> z-n5m2#HoUTz77sHn;fi~7JYSD3Q7(##Qb_3z@&HX=<&l1bj8iujD1Q6nO|Ns2M%UN zKsF-pgb=>0=Oq*Qn*1@frov;6TV35y(xR|CqCuo?L}!HoTZr6s5KZ1B9KYI`lf2fii*q8j#M|eEyvv(EuMb#i zKv?jSZ@bNsVXWH8aL|Leb+>FGvpV0CpKPe`W^^uH7JX^x%J&4sl+?u))Rrq2j8m_z zV~pH&qBW`;Az+?uj$B_`UsZspuHXalFCA-Z@RyFdfPNhEt)csZBZ);upAW2^UV-J$ zBg6NnMeUrIp7P_y!Pm;Ie^!JiAT}Ndz>&$=>-%>F^WI;Z*0aV3+RPWGC%8at6M~x+ z8++Evkw<$J8GI|x82C1I_G%hlSDNkd+0$PC6dd2)ewoH$_QLQkb8owC*-+vJhqT~) zkIz#5Bn+l7P;J;C;Mlq|GYN%ONv=KmLoo8cpGj8HV#_0> z?q7GPb)2kAtngrr-q?N!RCkZ7lV zz{bv8IQsQFcgz}atM#HRFfDd=#?vci_IZI4KI_b{>}^S#F(^=7#!KhQ896x_Kf-)m zjA=9RGjU*WpwB$c4_#71s$3*YM~_Q-+}3NIDbI7q7&iJEy8aH<%ua%DY8qO))!21* zTI;{MPQ1RdQaGC6}Rq%8$}E;Ik_7cP$h;}5k~s9ud|z3Z)9`u$tR25l<@U|Jt|SY$QPbf z{TW0ih}m%UpWSnxKGemWS%zQ}7BHyV`{uQb2B!GvrK?Frshx+v7YW@( zZ$I*0M`5AlP~F6kY$B%rALAAKrw6fhB>)O zIJVN1H1=IvR7=v9e8(a2i2Rq`UK|zl!=eFLXsVg<#8bK7TAZ=CjRP~shfrOgu@i5j zGI1XiZTqs6(u5*`RN5%_&F1QQL2#}MefrVOi?GdTyi!qcQa=u9Fnmrm-k{Qkq2%)J}v$}qVG-AHC6Rk{en}TjsHz$ZbitCr-@yh;PhCc>thcwalC5w zB?H@XKK|gEMrcKM>8(LfgVknZW}%px+Q(c=c0VUF0y0_6{d-b(et?6BN+F4eQ1@pe zM>VxCni)w&`lvCVFB|#!TVOpvfncCIWmCp>SH@2EAcmQVMazbDfp!lTBj}iagY?7U z=g-s&*1KVukf)l4t7tn35KxYNj4M!9;QkQ*nxj%tmNzS1ZH4{MY@=`#3Ht&GG* z-Wtn~tbq;=RS4Z9n{R(X4EyU^!bUHTptq}~_k%3{2COVc!L`TrmIHC>eCxj^Oh7MTa(%!P^-KfZ=g{H53@2y^NcvomeP3^tA z5MtZG-d`#es+LD0eB7B%e4qQ^&!mS{44uFC8IL8^FuIa_m?<>=ve})s5`uj)f7F%L zjv+0zlh5e;9|=NI29ApY{ZRW@L3s8DyWmS zuxQCK>{!Kpxgt6db>paom|}3nIaY5vh^A-2f?Mf%j%Pa-*opdnVFR5kbB8T6UYOf1 zx?<*8ru008=hzOOaq{d2U`)MwC|IyAlUy za-}NWkU!k$#aZN@&F|(cpeOX%)X^re#(@x=EurI} zXF2|0!Kut?PE-U8=B1O-H9h>xtKCc(u#c zpxR}tiPoiF`sVP4zp^X+Ak=e>K(GDExK#)3KW31>Fq@zF5)|9wIybaaIySC=kQ#Em zZ@*LJYN#9bk@pQ?5qC2;crtoevM<8T-bljOvbL@(MI(IyScp9&3VShZ#&t)V_px8w zRWHg=7qh#nA30VuNe}yc=2d8@`ba(ZhanTyW?$I!8Z0a~N?>nifXN~q+5E4rm?wa?PZjpb6@&>$H;{OpUXsP7JmJsuk~Bky`LKYP}Je8gicQBT=+dtT>F3hize zq}Z^qjXGIuA~c4AzhJYpUQsFctHpSunqwQ3N#`X+cFK=p5>KYsv)XGhC2CxpbMJWm z7lJIZh-Ny`i*q-Ya|@a$e+Y(_wNNV?&RwtVA{j5!S@9F_2eMYB>trs_BB3+sarJyW z>L(Wnd=4+}A+KZJe#5$G2@MKqwl${>q`XKi8Jb})QA3q-Rg<2ApjbAWP-D0 zNaACf*p(+lXQ9O2Ad|0R!L*)LwGn5gpW}R`JSD$NzNN{;QS2Un|j+1Z| zyqx6L*qGYmFr~F&V<>bRNd`K4EKbO1w~jTFvL+Oya73G56uqX7{&w)>%SbIG&*A3f zxz)_LHDQjl0=YP+Huu8a>Wzl6PT5jfd3$xAaZ^zDJl9S?A4P72IN-gj&6Dcox*a{D z(W=U4)N6XEek2G2+7nl$EHX!{9@3_YEDFnK`#>a@E_!1G4=|tj7}b4DVNex}Xen<} zdpt5FcCic9Cb`aM?(3e&Bu*IZ()XLMY`zGQnn!LkZ(c!Tg2GmVxf!_?)KC z2^^v2o3_Wtp0?#q1wbQq`b(Lew98`)-$uO+-K*342_5d~t4yfAcnjsxgoN@pzw9W~ z=N$cB@2n6A~qFsV0Sm^qaJ_ z7vAxomW-Vbgxh-mUXcsI7qV}Zw{jL*dc9bsmk-N1DIEx6O;A37H7ST)Xy&!k+(X5=_~_r@(+VS+{jZhjZ7PVbvKD?TYZID)eH}N^Yz+Y|Ap$DalH*oY%?q zYUQ(f{}pFwXb9HFkUilxW2jgShErGS*2O4SIpm=y4;O=OaK=-{N^7(G-vP5v1(Gv{ z;xon_G7UCMtysT_6BnKL6nGpdP`?{taqq>y?H2;c_BXL-uk%siF&FN(TSQ$znv0lb z_flmeFOPf_E&4zPJ(Fd->KD;g60hl`&V~hOAcSXfdfxVWHrJ;kKI_NcTw7Bi&)3io zC!2?zrcQWY7C7$$#5On#f`3t$5W1L*brf#-?!-Q9XI1QvF%4{^zn8ofQ_#Rt9R?nZ zeJ&ic9*S{td$6`AJuY=}yc}Pu_+-NZzcc*-^{l=pkCSbQ1ra4L17z(%#^PVZh&o9Es7``GS3>nm}fIw~*->)Zx z^z^8UD#&>a-I{$$vF{p9?~=bUzaJhp+5N!uP_|`yo*fFe5D#W|64>c0Sn^iZ{?fQp zFhhqo92x!!^2xsh)0D$c^-WepyeLY$>|0&~>+2iNq|LW@e_)gXo%jPgomkaT_3*}9 zZ*D$&Mu`l*-TI+e6pz6pq@T=E81CO37&4e9LB$e4pu9$nyL|fVjQb`~)V8m}NHS_c zMMnzhteOBGZ}ptC?U|5}YbkfqSFmYXmRMPnQUMzLiTO1J8I8g)Y72kx2{+yB-D{62 z!t+DPuAbUHF(KDT%=^^w0Y-;S!u1-MLuQ+bg$YNj2`??E3880;f*SFLIg-Rxt8;Dd z5K468L?+(n&I=5Zay>!S{&E~H6Th3l>zjLuWUQ66c^9Zqi5$L5F@N&9aQI7ti|9uT z*Vgo_mh$ChP8W7ZzQIz6eSt?x;o2XaS)-rs>Ob7xn2YH(D!k~SZ)lNZ>dfG zF!ZArTiZpZZKg_fqSxk4dd488(zDN4wrSRU}=ss1x@mAkkiN#Ty z&-PdPp>rD6SBi6!1d&E3w9^}}Zb49`!Fsb*XH)QblFi8z4>q3Zq^8?@f2{|zxA(d% ze_Flf#^gtTGu<$V?!|6%Q1G#WeY%`C_E#hAiAR)YNpcI@nFD(@#@s{Gp>>3@nwyHOTu^hfa0-!&8qyyx2>Dy z8*If)&Q!9L*QzF}9Fc>f`GxFR^R&4ZKEJ-xX>>AF40m{vBYt5lPvtSPcLZd4ZF=?h z_w)Ad+&64@-iZ-J%4r+9@jpJ^`id*8DqK~;DZq&rh@^0AiIzk(O*EgFZA**ZX31$A zsP*R|3boLIJ9(vLEBVxkm~DT|kIK-w`z_N;mOKxrmvMC6!)?~etmUm`c<(|BqG{~v z#LQ;!`9w(8>grSPU*AJ_2H2z1Iatot$p2K7{#T_Oo*p0@J-=Ldp^_B_mi)YAOwSIL zyvMrg>r+`#5cZ(%n;>d)SXj7#vUloJoU2Cr_Y(M6R&P2y zhpQ@Bv`L=OI{1Fv=@kM&hS}C|$mh9+1{&$vl01RBz=pLpUOPi$w1&~Pq!|0E?@5GF z)mcJ*;gs=)^y8Cl3VhNsp`6Iqf*f9GK4{7XV8K}*6&$19^9^g06T;;m#RO3=_*5M} zzc*Dzt`Zx!uWM^-TK6SrUr!XqtKT!{3JPnsvr~Yc457czNt?5yK7hbFHg`zXli{NEU1W0|q5*HTGME33%7 zL_dBIZWfA@5_vSBllJ(Jks)LQt##H8KHO`ZZ>S9U4qdokQd2+96gQpbJr5fx?(6Q% z6n=+Mvvt5(7jQXobk34<85^y(dL0qetNVUoi7G_n<;Qo|){Tg`cuq|k9v&f7J58)!s-XII_@4C4t(LzXPsZ7hUr%SF=h+J4?XnJ-Ci`%H3OX1AvlF?IAbxr##T-@`>r|72AJ`zd!MX<%`-EGV@L(W4vEPp`;UCDCHHo|2*M16x<%pH4BICRS$U(lA_r&O zM?KoL#opJR$KLK9mpOWbKNmO|Z%%r%HL}CXz!(400vH`tIW=eCBuGr`k8GR@S!NqtcQ_(p12p=!^e?$tebtWd!eB?c_$QWV2e795UZ?#vg>FFy2c6~9FRgOok8 zu7tS|C8uIl@tb)A5KyLHFZ#7l3kB*d6h0?HrK1fr)Xcp?i= zNA_+QR}D`T4#T<)1=Q(AEb$J+Qi1JXg;S;bvTU*F^e~28Nn6F`li5dgVm|%!r%Kv0 zO}qRZ@mO+Ex!c5RnoV{e9t|xeM-%1yxmR98wSFC^XQ!jX8pofQw-;*PkngQtPR9&C zMo0yb4{U}~7tBO%DJL6cMd}!f#H76TBbJGe7gA=(nweq$@!@*bZeydE_xWskZ=CBX zSob){UiB5OLF_muc{o<2S3_k zee`6;!6H%Ek;b-FEe225-V^>P+~3yPT9&WY@FaHykK1-1ZGK=CR@SdhKCt1X)x&Xm zab6gg-#Z5Ug2ac$16BuRUS32dtx$9Ed(3T#(mr6I(RE`IG*|aHvQbd5!e=e%gOD&d zVap4Y3Y2P$x_YJ+Bo6p>i_w0KZykSUQL-9AQv1%N)7YF}(;8@e9v~rG_2laGoFXJ{ zn$Q*Uxlcigr?|jdX@Rp&?{xj601Q^dyrc6s3+ii2ewcMmLWCOhc2Wwh68oe`)NxgV zT%B*e*`2Q8B+?VmHWcV%{^)k1#%3Xx&ixGPheV+z;a$f-_kmM+StvE@4Pt~hHIbhj zvY&^C-sQ90PAhE23~mKB24?thLgpNILWaoW#yD)F_H4;+;$~i8q%QQ)NS#=Qxi<85 z>b(fB^I&nha6{s$Gn)^a} zDB0MT+`^z8``Sz6x>7$a(f>2u{W~CUQT`S6c)NS=7P7Qp<2%oN&dAJ|w_7H6dU28a zj&LdD6OPuUBziHCy`5*bytm5xhtZj@KgCc8ORx?Ntplt>c&B=4W2;z zKaOICP-ah5wuE4lV_sJKluVnXD=Ppclr=Tht5`^;wpx;k%B>C=Nvw@i;59^gII$m2 zWRdCDGXcH$a;8}y_mrm#GgFf)l$SIdUctLT77zI6dFUOVQ&h`q=o(2K`qtYi?7yOW zxZGh?Ow~eTgGHL$XXpQ1{vpZEuQ! z?^XTTSTA)Mj@g*Mi~6(3ZTWTmf+N@L=s?H2@-Kn^&ke}I<1eUi!9)!}XN zY*jB0BF`nWSQ&tV2XG41-K5wW_}oPSThY_c*9jPBoBeuB3qHY*cn>-8 zsg7E^^5HG!WQ$q1=Yl2hX2j9hNa00xxdXp9OJ*k2Q;n?S=2PH58l`{puR-%)?P!&V z0B_OA?X_p>F9W+*)541{+A~;y7UK4%qM^Lm0n?8?a9g7~=i|*@g%tZ!=&-0Qpqj_{ z27LR?WT*fF6p%*?7`be?Bey-AmhCSx99a?HL2ZoT-P5brX;W?WmK%=}S=a^RGp@pn z@zi^J7+#uGdr|?_;o_$-J!bjHXCrI*Jxc$Jw6Bhfa@qe^1O*X6Qb0mdTImJ@=`LxN z&ZS{#1VKdU?nXqq8>G7%cIl;;j)i4^kLSkm+!CBQ8;E?mNw9L4hP7%8l1WY`{uWlom@5fU;UFea;yo1Mko zAAxVdit2Z9gMxBdAyVOy(QjNtMshCaSnZwd)>KIYhVV|#I2g!DPPXTsshakwpWZk& zOSC-r2PfENh3sO_kGI{>Xq&qXz+{)Gk2 z#}lK6*4XZM@$HV{c{hSxJ9l4Sucl>4>6{k;IjCli_unuC8~PN_)Hr1_Pb7;(1v7dy zOga~c{)pIp(^Kt~qXtnK%v72eRCJ1T)YQ~Cxa&oo+UbzrZ&Ph53uXybSFI}bUmnvs zj9RFD41Kf^OK{`z%-)6h1j>Eww^605Leq_$p4& zi~C*-1!Az2Pr*r>#i4x6U067NH@n@U!1G+Dk{5}b_S_hO{v&J0`8dmrWZIow7~h!yLJ#rKNGva)F46HOwwHlqa$uZOPX_I95m7 z(~|-N{rw}{gOi*{a5~?#?(mo+LjLZ_(Q|`B<0&9epZcM1FaT#|PRK4JIDw4(qCuz7 z#zxph@XiuAFDtL)sWof(XY81X$&zwb+|z$XhyRBLjLLVHdGxRd*KGe9-Ul-L)@LgU z%uLMpeMS@wjBW(4v~zhrJFq1lAsC;Wh(JfX;rGZ*iZwcxm?gcuVMD=yRwYRhomocK z?CeWPl<-@CXJkcL$C9PS-A%%LN>8uMK<;i@!T&I{fBwbv0{{jy#dI{tzlXaS zqd#UHy&8q`$mt6rO;gOsowP(|C_r5tn02%edpaohH7*l=S- z#~oxr8>p}O-rt`L1n8&Fg&PM3@>?!qxF;sX^vnpbrkPp(*b#tNHcZ z4oT6$d2acqRs}o%54rxT_+HDMy}B{|`9CM~N5fVWZ^(;WSWjos_sY?K?=p#c2*_yD z6ar>R^Np0FJ|14^X@9>wOhRW^>i=g3%4C~2wlzX${$*qS>45*khYNjpK0a4{wlCTK z@Fu?o2mZy+OyhsZ6Zo2v$e(F^zqo7v{P<{&e|YUWGJf%s_J0`vKin#R@v{NW>zM0< z2iMZv{y*mYZxZOs_525jq?NSd&xifrykn9v8s1Rq>UHtsznIeh<5#8uKE3gIH~-V9 zd<@a+zrQnIV&hYilx4BjIiLYzCITAQQ~)I`NfrHjYwNnA_vH;9zN(?6K*}6qeIPgO zFLopUDEfl$l^lVj=U)tyTYs5d9ql%k8K@ z_CAMUMlM&RnIDf{-}9axa@UYh#33VK^<7QKMHAJRMhu2K4X+W751m#3^7kBEG1o+s z{)9JWI-@!A*?FprqxIl2CV;NPL=cRJx1boyrYoK)d7M<(`HbBs@WfVxs*aS5?CV@pdH@QFEL^seZ)`s`FBaWWO#-W{wA z0zF16US983h1)V8vrpDEm}kBFOaynXcldUV&qfMAN9%5%mv6Oi(Vh2bP=_Yz?u~ZT z@PGLo>dKo~Wix+MMnNHKEyrZ03e?o^ctFj``EIv%%UOHBU9%k3+(J33--Wxg=q7ps zo$i+IC-L@19hRJ%as6Vz&0vLVp!mVV>n{%f>cm)hMn9yYE;~!erPzOVyRq zw}lPVS9E1}0#aXPEvI44{^=_~xSmG~LoG6XlFjoqT2=TKiG$%_@7t$yHiHY-h+@PF zc$~(RbZr_Z(IPZA9rkT=Khnmlr5bz_*-T|Qod$jQMCuL#S!sCMFc+0-S3-xRRx9cO zg9VI^P{s^}QV(!!lYi{_wiYh6??}l>)B%q6J-yK z(8(ZzZLq#5@!IC9wAYhx;*uBYl4WvW)|4aT2dp0jkp(w&vmd)p`ep6(^Yhp6t3D3( z)ilG4-W7boCJZIiWGW6_TXzdPX5Fg&JlXI~z5$GWes~tBL|cSmp83jPqI^Q~4Fe{IV%@<^0|JBO2f0*Y3OhUVO`SMF+tuNs zxKt_69zJYQd-X~x5SJ=j;fk*_ru!^}ELz6zR-me$9)oHo3C|Cc2D3HpEt-0I#*4+HOx%~{Cg(XP! zuqZvfC8>>*dg~#B$s>A3`mcgk{eeJq*VwcA*3W9pPwnbGOmT7V#m`J`=zn6@{B7HL zGCV%$)Ks2(M_PVvFc{&FT+Zk-UMrYa(4q23Ps9|l@426FluM3-c0iD<=Xg1)UVaf@ zb?5DdfBu^C_h<+6(@~HzLee0yH^v9EfCK>M64%8J9i+}@r+jYQ7yOvO8^WpiEi=m! zHi|{8XXCjCCcEIP+F2{}>D) zAx5jAS4vo>73ekjl_L{@G0abzi20UNy_KxTcUPJ1+g?)`z(@Oksx{KU_j^GK`XA#ypo99H9UXPJ6cvHHA|P}B?Ey8g83 z2M&_yX?+{^awfbW%~KW{JFD99y&a1W_2M&>I``?C>vUW3)oy3hYv=$%X?;ccfNrRd(#L@UR*)AeK^GIzD`5vnBVAX{|?`SiT%+4cw9sC?S3 zr(azh9~dP|L5*+tP6ZXRGtbor8qxZ5(rTzC-SDQ+!=(vJMU6opc_S5OjzV+q@Zcmz zzFhV`rJVshkx?a9pWP;AdD!BOTg3siab87{I-RBCY((~DgAt*a&;bSBeX%HZx22-X z#f3tryrW!hYLFFMA&YF}eYW*?h{lNkDI>a3%t;L!)k@z7T z)Np+2c&x4&5ose2pY;v{?h;B1qn1X<&A`A>muP2V`4y(iIiBjVxXBVWo@NPgyBvjybfb#psy0(j{R39)tM1(1~0>Pv)2FI!Wt zWl>Gf9#K?eq$GfsYMUeR)G%*N1)&V9?9SGg730s#JSlHU)@;t2D4qq7d%eIW(SPQG zT-C2VUqh*qvy^+VG-=7>3KzE(gBM7es>9d%ljX&b(;Q4fLXxsy3qwT_c-Zr^8#9(o zmLaJ2K~UDlXzobqs=<&8v0f&xTuM{(LLrvcly1ouop@f|_>`{)d60;NyFTK(C?;{FS0H+Ws4joc91ScgW zZ!Dlhvw`@y;o#0W!#!r~t#%eCdUw1@IrK3s%|7~lxn!`4Qoe|6wLK+H%HxO-&%Nja zR*wDWCh{50Z=OVz*>ml99pK_Smjb>bq(A<8`zzXetRd3j6!B2Mvo7j04T>yK}r*qT}jsXq|ru^EZ2 zmd#<&puvmnzvr%H1XWTSNU5fML}Ok4RwGs?%Si_-J+iPNuIJ=I4wAzwjaTZ!lztDD z@EgMJoa+r3xox8W0JGDnN}1slgp#HDdd{_dFzxZxr|Kg~OQ{LX2?^+g?D_sn4#=*t zf|ig#8sBo-xG{WOxiF;gmU&?2^5dOdROZldw=iSbI(4W6WV67-O&tII9YrNZtS*x~ zT7C^Yl9PT`cctssXs%KoWn4PV;*9rn-{6e>Sh=gpNZ!>7`DR`q-&oIJjNFZe)9bgE z=Ctd0kf&BEf%#i?t3E7HoZsDBbHZ=3&C%v4y?felCOQZ^Uil6=&h`*Ue&`@D2#=&J z>nE~n7NZV(_xzcf8g}q^mIBwn$=oVFR{e%l&$XtW%yYi{iJ@MOrk9=5I zyCpr7-07t0vay_xMUC3hKdS5`^e$ce097M#ghZp#HldN zns8DIF{#`O3k?D3wrW*WHjD~^*V%W$iX_LkhdTO*yVk^98gyVzs}UNre%A& z!SVFX*Y3W|8eHhp=O(!&Lr8K5#O891t_Hib=slai;jHg#*f2&@>w)_8G468Gz`gL@y^`o8hjoLYcwz;MD5Gw_5!AX#{hY;C5L= zWuSpd70nVce2?Z@Xv!1ckPrS*SnDfUn>h%01>Ao~t8!meP z9UdLtkNLFQZiSRk{8+w$MEk|Q35F&W$M}HA(s61*m>8#XY~!9HnRELC!Gi&NBG9=c zuRs^WjS?W6Po_=ue852IGMj5U|Lm@+{mBgLGdPfytbID!+4mO336WZ$plnOomORJ_ zHuJO9;U@@9PI^K8&ZuN$KG0QFg7)+IxJw>TYFzE4yGedk-SG&?(Qo(Mwanl3L6tGE za5~1*A6=sIGq;`^6p1WTzdgo;*gm9z{|(p-jMVqq5U2&H<$y8( z5S~s;->|UPs{*<&hTqOsTAP*}lJ^j}s;Fd4x7ND8HE`XaA8T`1S2*E?4(PYH17s?> zFU|-ULrm{EC28To;c!I&y37P$uA28^bk7B;Y)lsDC>ne_lY7sGii(bQn5T-%g!Lys zfAc1N&D~R6IN1_1AR*lJK_uSP)Rg>SYxI1*-H?XToJ%%Vxo0&ZTN8V!n)aXFXI zoKXik*gKeWgX)XRfl4QSu@~|l2`z_%A`-2EjH6l71ZGIY=QUO?6FFKjF$3+|BO(Np zJjZ)Egi>4(cqb797lEgvXmMWb zrDKgA{m$9V#4bioIjVwxVxuWP{*H}Kl{oqu|Dou{nQG-JW>DD7h@jSER))!eN>zxj zkk--0_L_whWe=pfy>AH~sVMP)9Zh%VyxZ)M9)L%$6{ELVR$@js(0=mdr7JzmNft4} zwI_SwRiYg5fTpYe%!+5c40h4@YW<5*w8&%zZt2rEotZ^SH-o1ngf03{iecaeBAe;f zw78jDoV@yc@f8HB9WFPMbR1G(R%v3b9hf~Lk)P{%B5{Dk9$<#+AsO8A_u#Inp9b>VFU9$nbo3RwC({Ufo+R$XC`4AV?(U#*a4^>~c=m+CWWRm_LSo?YKE-Pd3_*W$$$qt# zIDXVAHva|yUT?U-A+r4*G_r*5FRM&WLR#ZjYE`P9h|ko6dwDA!KC9n24Rmsh<9$ZAlwaoL=R33s==xo#*pJzdF*v zz4K}6tvA2$#Q9<;UK1WNm|6~o{8F~WQ!%+?)b1a+lypMYdMpk|u2*B0XcgzjySj%a z3B~{>NVgVa1o_Igk$QRZpQ53OOqs&QH*Hro@2%%XFal_3td?W&EdhaWcOOuds8j;O zNo`Tpzy$B6nK>=vuB3rHFAh3xXf8N(PMRo?D~j*Z;^YGdIl(vU`?lqx1%p6gvH4Py z!pB(nbt3$vZ#D!B>OmmSJq#XpZAu_%k|+v?kki?1w5?a0yxf$Xa+i4u08YySASVDU zY99AoJH=t=>v8wJADUUg;K?VyGMpThmysRkV1N=oL!tSmLXV{d?6*$&Bld?ayd`D&{y zTS}j~ySrPR%903yKtv>A;&nfBXuzABo{r~xsf9Xif!Og!>dMOW-kG;t#i1$yQbm#c zwIq9H%clL1HyE z4%!KcqoYjv{I+(Y)-7T%z7k0DEW3qzDO11p7GH4(C{UzEpiq3e24tJ(hzvG*<|K|8 zdICA`+MeuaZkimK#me{-t3=AO{qZo1ig42>rF>iIxob0Ifk2wnG*I<#pMu&!M-)~T zlnXk4Ro3+d^WflM`$TGFa%{{o7*#3pi9#sh3R!f~H8`jV76g3}I~IYxU54`Od~zeZ zr31zT(S`AXRjT?mff_UO3WSf>I3aHyd=j?(MY%vIFWQ864Wd$6-1{$lp@F(jdmZHiSbMH`vlaeO$BypB-QwxjEVv3ubC? zV2Gf;%Q|a55$`XlyK1BxLu^Y?T_Glgq=ko2=OIlaCp$vtd(o=fZ~|m&%W)X`vS@~ z?qm{PZz`3B->6C1owY=93jkZ#;pK}a&s$yWhY43qzb6dm{n#+5sOl8t(<$>TB4$30e*T&TuA4`os&ef z8K_r&N88!ZRb2p0XZ*)b&nLY#Kmo!$-g{F97t^vEn3Ij)Zn?WpX+YB=v=e71mbTfd zI5xDuS}InWn^nCfU^p?dpj%Qu>W-6@%p9*tq>*?wBo4b?qlhkOatLN|1Y4v^n z@S&wXzB%wKGmHDI-t)#b|2Ok%#Tup!1EWnwBNKinb4qwNzl?A-Uk3t7Lf8H+PXGHK z763lktJ3L=cYH2FZZod-fUo_lq1IaU4w0D0OYjrh9cic1(m3DY~vY-Y-QWZHD}(;Go;Qj2Plbh zk3e;L6vZ0RxFy0!jz4WjyFB_kzU^VBf1ABy@}R8F59=G8? zu$Td?*DI#OyE>qAk%r?5OK!U*bcc=ea|~SrlFu^o*+5B0hkAgWUds_;pjuQJ!)H+< zAt@QZwGrww0RyTD0TqZklvd>VuA)o^Q>2rV_14aE))=lJbRRzlJp|nE4)y3Ja;XZG zl)C}dkhvu3!jnplWdJARHZ0+Qqs886mQpL05^nwhz9VmIi}#t7t0PH|m%cBVPjVi% zvXZb&pH>i9<6ug@6nK~78DOQ~X4AjqcrN@Gaz=ceL%&*klCK18yCI; z1&l(*R|pE>o8jE9Dqm&3f@`b#U|ql3D0k=COB{{GJnwTJ zC#Qt!k4o-?WuU}Sv+M31Pi42d#{VwC`I$BEIYo8kgZi8ndvTSnW~_x{wI7{CY^Zrr zCqI*S)9l zOFO$Kt1yz0b>+PBqxYs#{_wZQ9%!u*K>F$T2IL{a5;SC8H7~=_aQ47@y7n_b2x7k0 zw;}V*d!_5iOucb_&3Z=%!-;THa*mvIW?-zac)mu_qA1_!k-4fFW~hV!NZhuxB(Gby z%N(s?(Jg`I;?i}MFMr(~TBm<};f->SpD5H)H0=DWY&bVJ@~o&4@iKKQ4DE-v>H^*r zT4^({K;KU9*iBE8-%m<21g)^FN)G`lP>f`36{c?$8Dveg0(JKuadZ2x?FC(5B1P>~ zLAkOzasKGA`6*3cisst&1~$$QzjWGM$4dizzO?%f*q`aScvG!Zi-_p(GXVyUJ!z4+7Ra>gU~)f~!E!2_ipJ}NYS}O9 z1eU6LHnqroc@dj0xg_8P9Xb8d{C2L~BSaUdpHt+&OBJRNrs^%B3)4%c|7Dg$0su0CE_dX~s|FW^%r(DTDEp&J7 z-S!>+o(hhwmH~!g2nl2vy!LG0!`{!;D3*r~%|1R*MjQlsii}g(cX7@rX+lt9!{iz7 zc6sn0H7RZkC8nP0$lo$RMZI0iQ66zR?CzgT6x7x>M+L)GuY)3nXX7vLekmwWerwAJ z*;Y~2%Lctn{q9tcwTN3a_tFJoC-j+IEWqoi6`ptSQC4Q71{O0Cfa8f8&~3cL-dtZ_ zC~X@2er7qAj<;ldm8fpHj+(9`Xs+$yTwGS1Nc1$Ap_88}-*|~#o=x~jwpahU-E-v2 z%MRt2NF_o(BmaA9goKikgy_nollPSIjBojtMimUj?COk^ODA|XO~=ALAxCo%_p>(He1Bh-sM@&2#dK*rG!eMLDbg>4NPuZJ1{Gy^_x>K)?!jRkM z*BZRFN|w~f!{FXm+hrHL7#ru`ztf<4ooT=0@OeBhbcGuO?ABXy&5qC}5(|qh#5m4L z8x*x)U0zky+bMeDy^>Tm={9jWHagfd=3Mn5g{TqD)d2EF8WznI3(ml6VCGfjy0yCi>FHGYp6Gf2K`Px0oGXY%Rai3=Xz_C0I6Gh3UNZco@S zMEEn0z)R+^WGIQPj#jB@mR{eKv!zY-%QZdwO5uwdkZga-Gpr}mPKF~90sYhzl&cYO zp9l$7^q3ktIk9mAcrQ2WRIE8;#ZKGdcQrjrdrA-m&cGgAOmf2n@3)53==C2Z5+qjyJ z{mHu;iD2*Q+GQtCNH*-lfMIn8xr7_Cba|HdX?4iT#hYsIxdE<&gp8w11~*l~LDPyr zNMf=LufYRcjT7BHch%!v{b9yOpCp15{3_;Bq-^Za=tkfAgj0uCx4PSTv8$oK4l(B;OqkYc<&N@-n>ulXMRYb5>@n3)d&_ zPWD(?6;;)&KBI4`T?Z*Ru~Kd?5yh%!^YE)74r(3p_Kpr28JSWX%*nL`Y`aTScIi-b%=9+%K!@}=ZJ}GQDGr(YE#VX#9O*zY;5CRyN=6Uw)EWGFG|bG zvTLT#oRD|UhV`zWo<3+~cL4SlPb zHp-_O%ph$%W*Op);JG#9l6JgiP^mByGeA{YE9%+uqU)rH#D7bwkqUv!e?;29C#tqr zUpdiF+bgzzl`h1o=@QSnZ%8B#;&Zzrw6xB=-V}?5{FM5^`i@G|CD;+CIPjN*JILwpXiZ% zey1*JuEsXIxlzNwRcXQ@cDY2pEJ}HUdhaq86pI(h{}1pNN& z-&@TeFf2}qrCrNqXZ*U@MI&04PU`YSmR;Jq~(^ed_jz+mzuCo z${iD;=VXclaKt!NqOvhVA^7F|YvSPFyZmSC@h;lK5-ie&WzpL={zgXf_<B0oQg< zA{n#kmutN*e!L6O!X2?kZBT=7v%4Qcx`dJjWI{DKZwinPo?bFuaoZ6Ee;jJiEWSg^G(D6ej21W|NkfqaVco%LyChJJzxLX;eR)dOLWY%(;JI;|Mp`4r~Y2M-Nq9a z6M?hjKl^=~{Wq;W;P`^z`al2g2K|q*{l~@62@`LLCh3aCy?SLoAi%buWw0M8wEDfy z=5DnpQK#fWix^U2x8{QJx(lTh(nlzV=BFM1ubT^<4v$iajrrlPHr1y@@fTL*FLLQ+ zt64Y~o@9)wWL4$zEg;k$Q2CaZb8l?mT#BOWczc-07yWD3zq2Uy>0aj?8k}<Db^du9`3Hb2uKfghbjZQgsE zj*jky#VJL^T4~Sq+4b)5KJ%f0n>Bc*^${?bjB9!CK(@*0(~XTy%3^0T*SM^Ng;kW3cRcv~8mgjSl z`7dB&^TPrQNk>L$r!5=Q({rXfLc%@t<2mpgTFGSD8;v0=qW*z_vMMqkx%qfybaZBY zkRfYE&dxD}gsfrf>t;-BY>|3(&a#@ClWBSbJ$+I1vLv$B*2zHVRnM)D;M$S5U-auu z*y^f`uGP0~NEwif6}hsq+S}&QYz&1URkSsDr||GCXIOPA)!z1zId4zVtB;TSO^jm$ z+=it?-vro1wTw31t3R) z)`<(ss0dBSi9pdU+6G+4qF3}Kc6JO(4U!O#9rcavz4^XjP}()cYF+m8P}Et%Hv^Xx z+{Hy&diz-yn^+O|)8nlTTB@rsk2S7Isk4#`B|SY_m#e+b5$jz)xZb)YnH6%Y=?tt@ zVex*>@vy*tl&_H;;I*x!#Th|C#gJONb?{hGhmn5TNdpwP1^_QheVIHRtaNed0$}f~ zHdV8^jg-3J)m8hQiq!D+FOLQ*?jDLD))GP8Y*k*8fR)>K2c42{{~6O&KNo<_Xy`DAAg9L0-X2FBC&%yYt~v zX0PJ`wBy zd1v8u|D-5Am?Y`pYNAWm2~?OyLb2g(X}wF_c`99*CP%DaDCnsBh4+L!N^wL{->9^O zr01?GYVWWpQ4WDkZ{3ZSsBYjl$g|a?szL(modJ0bnCy$4odqB47F{vx6QCZcuUj{Hbn!RREiw!llnq->cqKM!^ zg|E&cAyv~So-kY+zNZJt2eVM*Q$Xa!x`Dhi<~JtKo58STL$qBTtDEk*-pR6$kCUD2 zX@0-p9!FxlB^cR0NZjl(<-B3}H_Pp}>;3h2^rR-7yL`UV(Y~T|bZRs-ne^X{8~ZG? zSYCdo&5%3E8(N%b`AtjqC4DqxdG%;+e3&75r(k4w_-*M>#SBM3MDky_CizRyn1T=J z=~&h7iX492=DvQUz{Kq+7b zT`W82%w|hy!{p5}%ihw-DjAOfD}rKu>O9$l?6 ze}8ynEJtLvY;2bh+-l#^GYHFuk4g)?5-w?7T&q8Ic_K72Hbs|;+~ye>8d}K92fZtR z&sUeEEAKYe!4HcKI~DT27RG?$tj^)nwn6o0OR|+;Z5~b8ZnTfQ<<0S!H%gpLb7j-1 zw272kc1oDWd<=pJ3%C{!rA&IW>eows?>k)|RTN`sLheur!wkU2k@XGd6lK26r|#TS zh?Kivzdx8DKVNpubR=NZ|5viwy5cv-km{0FE6=;&u`3rRwCoV(UKY5D`NcTSh09W3z9Pu zlXx85_Qebw6s9NXBIiYE*k8)X7uUE{+BdkaWcOEwn8;Cmv3e2@YmnWr)UkSbd6uLF z$)%qXIOo2*kXBVUi;hA`>7TFZr2zF_3uHqJ7zt#tmjbGR}KyA(t^7f9}_9jJM3(dnE+>S?;w%u&Ko96U2gKp^GtaIK#w9&Ttn zYFXqC^b$;N;5OZ;XTyu;N>Wt^;*!wUFYMoh>y9>}_NNFAw#!hCz%0Gqy5L^>wKDH3 z&H8webUpJeKAiyDow(ihRnSZP2>&yzf zojXc>cO;gLJAM-Ok%g(nh>6d&`QmgO=P5~SN6&`y@xehlT#cNPj77Td0tSG*YAjB+#Hf@ zJHlXeH?S1eWdNu}Ah`h^K-T0IvM|(90Vznf;(xO<^*D91=Z7W(atYPTjU*Q36txM{ zAaK!^KekN6@AG`*aX>#TkBtGZQ#xY0ZqCS7taoy9)YBN48qOw$GDv;caUptkhq(Fa zm+lnrUN*j7gcD4rss==#4ZvtH_p$b`AK5PD3!e^>+kPUMbTsU*bUAxpEbO#U zd8sYz6uy?w-3|*ozH^h$2`e^ozj-@fN8Db2`K|Wr+elwg^`ulD#3OqbLsXx8q$8Fb z_8;aot`uztNB&@7&3}cP{1+nwzy1gJj+3K zAShM|@=H{;H5_bMu_6~XI6-KDmj?`_>ol8D-*I*6Sj0|Co(gXFs)%*96L`28ou;ou zS4lKIYi*?y6;dsoER1?jRsV|Ea~(f#ro=!-AF^E*vR{uYdIQ7Oc7vW|cHtbT)X45K zxBr~L46FWn5`Axa@&%E(GG> z;2cEO?N%B{O9z#@?$gv9^spH1Xqk4&L#v;P?t@ZK%pX{Jrgl8|`GWXaZh>1s8siz` zTmA6DSJE>5CC~XLDCk|iXl&37e`qeFy5f8$8-w@Rr1PdT#M~eKi?Z#DT|Rz{LBz<> zb!<*3#G*&DY?xIs!BWhU#jVC(?0r9fAaH zI$Qg@y8CT^1vx(i!Tak0jJ zlRNFomxkr1>ACqjWFLEtCaI_*DNu(Wl7k|{y^75-+^KGEnP$Oa*@U`zJ;J>S8O zjk5Alo}-7K)|=$k0{2heE1@qsRW8oiXN3$c*Q0fyz*-P)W^+8G`>A&)WW6GuNHowt%0z#6C;v5XXg$l)- z=WF7c7IkYDI#CZD2K084N{ikUVq%4cM5GL`Z`i<(bRA+fWo6ZqjS6*{3;p>A!JcKC zwfUM$U*wicVzxM&++0IL@Id;oROht4YJ z@Z+9{`b)g*LI^c6m_pr>{Sg=;brJa6NrLkQ1Kc}XX1mWjzG>O_^r&-!8bJ%SgV&x? zR_kb61!v2~oR#0f#f`-tFn~D>2s~onz3{4Dcz2krdUAZw%R8mnG|SL3ak|0n<9Bdi zpU3?a4xG+W{{Esaxzoo6m-UxG=0W(Vg3c;1A+hl_S4V|Z-L+0IM3PI5E`CI^-|JzZ(OQ+d&G$>ZH$+b@i966`aYcDRE1Z%yj>u0QttVr-@l|UwF70 zMYYkJNU3_B%Q3z|{$U@8i=(vreP2d*_s2;{u z5tKt}2es_}Nr?4TVc=ur~Xa4@A)VC9AWf!lT7IB-- za#$~$B}&&@$zPO>Yg)}4ZmlIXlp4Hrvz{BDVYqd5RZmzCe>T0h1@8_gf#TtOPj%nd z&YNi*oRKMlKfa&>D-b6j$ox~HQdzPSAx{$TDsYnS(!MBbk}Wd00bRRJf#E<^DOOQLh+D>5ZoIcD*WnIT8kuEpR^66sM;-yst&ZPr`#3P# zydDKUQKH$^7YajOkUHr#l$d2`Y7h(agfnD#m$K>UI_b|>(oLcteuttO>6OP{hF_C# ztGaFEu;Ir>KQw0~np!xY>Ql>`*P$!&+A8DJs zr8A(BGug_>)sJCwK`C>e&D8x+uhtHjrM1EswJa4%T28QP%2xNVL0y*6I!(a@50s8Y z3Kn;0Vlulsm0QovO!rfsp^Nao?i0gzBLog*a?OYb=FA0QJGjDDT%8x8!`gbLr9H8- zYai*?Ec0-f;j^rJ0b|?3)YGN~VSv3Sz0>$SB`13JL`v;#Jr@5UU(3m1-v#%A-mQ zw|KWR7%s?VGQ9;j*8<%LwmpZuXqOG;n^81Erh48U1FUwj>fMQAmle}z#e=5R_n@~% zWpzE?wZ$#$R#x%~=&G5WV1K%5+Q^q%JE5h|F126HWAMAUEr7aoV(<|jxEThYs*#;2 z6j9}EI0@LEclV&MaS6tff-%)PP6bSxT4Z#l<`qOt*}siWg3;q#SIXEq87iWI=ldCI+l z^OGcUy`tuQ*k9O~7m}sVb!ON+^1DZy;cpRM)gRIQ`$&Ta0pzPw$8l$b(h7r-11B1J z`OJ5ViN^ot<-gzHb9EVHD8MOv!NZVx$ zdrvxtj|#Fe6A6gLvid~1jVC#UHiE^+H{!wu7-x*uL84#D8*Z=w2>`sWMZ?_jUWFnp zfxFvL;f*qT*{D#^Dm_5jD++1-rG2YaM?N zT6V}$3-W3$MRN5Irn==7JR&Re3f%f|4YBB79rC-T)qHlFzlo04$IBymgW~7S|J&1E zV5Y%Tf6^wJ+ivrFlRvN_PH$De-@6rFcz;&URPuE^xWnEG@mp*tZW?W1kP>D(+&A(1 z_~%9Ysh8iM{)bkdoG$^HI2AGRo9MbaL6aQb{NIAQagVRVOhXUL%)T>xZ~pIkq<;Jc zjgi|&|Jk$cXYTIqj8-joKK*#)V=fF~G4~K8YeM|(Z)E@W);~@3zr_fBR!RDsOU4$=|8lziu||<9ueH&K80i>#zD;XI#Dp`wdGlsuW`o)&*&fkak*b7Zn)JK$_ zM}2Ljp8zML=yA*bxVk#v$D&S7PS)rrBBBoplIHy&%E&iploJ}h^!)vjjSZ#PxS@#T zix)C#a-UwjthKu4ZJDoATUXoRIk$hGnn^%?2_HYZe*1$XMHxk?-MbC0DS`I^0WuRw zHEVh3{VFe#EYIDk_l67e2ltragwmGtFp1Pb9{Zg z?=aeWRmDJ)#fE^t;OUWe?%skI`Pi;1_zo_oiLtbWTh5Mh=cv^gLR(pb#;Ic5kbfj- zLxzv0E%6$n=U_w`_lxIye}5UBt@RXiyrZOT0xbOOs$A1C%eZa|^c~U2l2<}M9l`&% zRc_A0j~lsuRAyp2-3N@>yS&^;YAPh;E)zR*x$m~a!P?AgL~G#304uJMU~|$kt33}- zz0Ydu4=S`^nHibJ8XARtJt?#z4F8Y4?+j=v-P#op5D`#O5fHE-NLQ+K5D@7|@1Q^^ zp-7h!idYb(NbkM(-XS1L?=5stN@yXpP!f{d?aX|0oH;XdzjN;2`!9iH@4RKNca`UP zmVaYzq0aD`z~bOrXA@ITtczkS$jiwC781r-DvExmN70NPO77F+-b zWCwg2?(V*yFipLdmU74#=j7dw-Ql*4k4U&>pjNs*o6xVv zfFN4nK-Qq=7mOr1L}CVD7@WZM;Ord6{`cp2gNWl<_^8@z@`slR$>el>OcZ>tO zBO^5J)12M6#pvsb38vH2JBf}3g2W%NeLc*U?tIE(Z5((U88Ir`c}OJ{8lqHY?p9SB z?+@ozc=Dt|dS2vR&mJ#6`{V|=3`&v=_IC+-J$=Trc<9o^xBT3t!R}rfiVWDv+OY`K zg4)8^eL0+8aLju{#F2l^5LOBv6;!(IJ{CMZ9sbsW>>UI;Mx1+17xVU%* zJ>!9ko`D7@5pjp8y-fe(YuKcGycEinT1q!|iuv2wA$rH+(tx9>~@BbpISoBO^4;1r96Jn>u`Cfe)A~O_iN%H$Z6Pj z(CQ`Uc5)@iFN}hB0{xW5-!SmKK#*P_ zP?KmIpp#9Bh;iWS6NRG$I9SyRlwWu!laav8EOV_vFDMiz%xsYtcDz&ro2rusx*ON7 z&rA1Ry7Va`5!y;(2#fE-C14?C8X&^*>MNWkAfkc~lv@bhags-g)thw#t3(tzskLUG zy7f}6#IX!+3^?g;3T*kjqN1?bcb+voc)@w1!JY*3z*?oSI4P${f;l!e7V?(Exp{{a z12f(|umW%Vk(-1q@~rdbYQPDxlJdo)t!G4Q0{aalQ7|p-W4nhh`cN)QjwMT!?o_A* zzu_|nM*CBvH;-jjE0<=e``INud;=(yVYwFogd`VQ>kPJN<0#T0VThH^noJ=6`~DvJ z)+AuMQ!vkXLfa%=mt>N=FPoa^JO{)TPMc0XY>kp0$aa6bJxD@J5d^DWgCmF9AQGA2 zi;%!>A5*Q7BhL|vOLRV^3)Bg7^HY-#roG{O_elS96R)Xp(^YX`TG@cl51h93BzV*z zFKy$~!Df|>gKd>`%l7Ky$aL{x5>^^ceNdpEz>~>F>&Gwp7mc4+#DZHZHTgw7zYc38 z8cVPUP6!v<)Y`Z14o9?i4#s;_vs~2YbCQ?y9v9cioIkq*)6zws9V`r>_#za5op0Np z&Ps2YIQvm|+TSlZ(PMaDb+Il5wz!pJuK!J-@znam%w%+e^1kX$(_wDgOv02AQ3L7p zL7M$3Ujcaa7(H#9_}(Ya(}v|lmikI5su{qW8W|Tl*bObZ=RQ1AgD+p9c*rAG);Sw{ zXCR-zbX;tGa+Q=dZzex)Rm3zgVD4-cCN^L@-H!pTC#gxdTp9}8$Yivi+H%z;GgU2i z^SF5g1t@?eg1@FLp0uFF1q)kzW2cmnUd|UjkZi>!4%TTN@RhoZ4%W4Zs09ygqT@$% z8Lh8*Hg5w!8u&bhjQ|ZPP86lecH=|(US0kz{^>C!bnnf zx+Y0=8~gQMgKdaP;GCO%0|~V+62i82yt z3sno{0z%lT>!ks~^W>tYE>J9nevOfG>|M%-2MB>6pEU3Bqk6HmQLVtf>XxI9bGffd zpqZJ*8Rns+8KSVqnCS^n3%;*zUQQgfPEfqcw{1EmF9eZ|8+;pi*K~6&;Z&%7t%Cr2 z^e79a$@16*c?$phr$XERVm(^NuEbRk9Q3QG{BZ37cUxmhhcU|cxkg0sg4mOrF6zk? zn)*bZ;KIVKSP~PfmF0ww2PYMNN0f<9^WC8U0Q$bQ+NDpQBw+k{;^Hnfz&xC>U_CoU z^2*!tu?L-7!cA*@M%%2xv_Oz>P)6GrE_=q}GVJ@=Q;aFqs-DnUi@|s>@A^^ypyd5& zp`(|kgMs#GWdzeX!RBH^Vo6T?_YI*W91WKq!L}_vtMMJ(G}nnKE}^G!r49h4!Tk5z zg86i2ZqiF6xyj0Xjk7;jEire&l?uZCl40#(Lh;YG^t4ZDsTi(aCKTroU6Uq5Be0+S%y{70_3Uxy)9zJ+g8}KF`(;aWy-tZ4+l9>fz zXQq<;gzskqfic+Bg;6?LQ&U~=t3*-41f`~K7U1Y$p+KQVChs@ctrJmPw;AaIU#tTS zZ6A_@9PRQdBOb6b;*3Yf&jXjBL|TkF@PAVT!Zv!8PNph_`5i{E~aIl+U~b(Dqq7*4&)#q9S1;RRJ-v z=Uw~rQ$1J?5z3Wp`9661JiY>6*Vx#*-_la^_&_OeLx9ga$umRxxkfOA?sHpnqZsOR z;i0*WJ2oH~qyx)H`O!Tll6WI5~G5?Tbsnv_)$^-hC`&aFYuXP) zn0|=4Rtqt&%t)j-hm#wWPv|@9R|yf+Y{8>;ABMgUsRZYhaK`35Ug)P7?&KYz;x7Tk zG2J^f7Gkp=?!OQiJrUCaPFPtGed3#jrdurKwk@Ka7uad4Om8QdfA{wFG$*1V;CUJ+ zb~=?$rz+lY?hKKvoZL)hap!jb8Erz5Y=l5!i*HB6si4#A1hd13mG5QwrbU<5nld!Z z?Jh!~i;zlCY<#SyM;h7WgFcqf0A6fip~J{ps+wv6BiduQ=%DRNf9L{;u-7dGhXseDlIl+)9*BAyy@Cro5goZ|86&>asn&VKP1l-i z#@j@t6QNvIH+ODPTN)M>lVTGH5P5OiRcgFLDi`QZw~Y_>vvBeH!iTPE=J0fm*~#xE4E9etKS(F}3bCD)n)yY!T1ze}!+};$GXlDE{Lq zuG5xx=;+8okHh8P(^>g2?DZ5&M(_2D<_u)1?I;6!?kl09zV{@75`W^A?|^#u zi+}L8?o$w>un9F+wg^1^jGllVR zftM02ERWA$^5xTW<0s9#Pjd=Vho?d@1{yIiYo3kGjhg%sUFc zUmf!}QbfEVr>Bpnon%=se(5505;a?wfvD2>DFIDyRg)HkJZ5OovA<^C zfl;9dOj!lAfKZq}C5#vH`(!=gk(^8NDL0{Yf2ZsPo3POpYhCH_QB2N$f3lFNLEk75 zKZli+g9J`p<9XBB|bAw|ek)`8PpjoqR(wKw|VN_B1^ zv~8YQK90Q9FIEcH$b8$dB)o&-)78{|hQ!=hnw(U(N^v&ZU}e_p>_9gVq~E*R0s3x&13x>=w@BO3r7|ol@EBEv^`HO$G6TWk62cm zX#P2s6BkOjI~9L9{vs>tjeJ&PbGy}h08u`b%RGVL`2p1B9%ZqSPWh5`SIJu@Qp;{` zuC&=NGicIU!LUKjak^R7ltRytscd!dc48i1#f)`=aUR_8a>|sOu!ODuM{;sa!PtJmM2Y<*)G=-0OF!-J0=`Do}oP z1%H{I{*KH3-lE;FPzm`p4NF-A$%B#Md4QnCP!+J6FeN^e z(Ki3?10~%DPWsa#0=PjH^bSj%2~l}xrj|}reCzi8_X6~E{KvB-uHf+62lu$e%u?>% zhYcunPDqZ}+^i&V8Z<7mZe73e0Ib#rD3mUpfd(fh;@r%H6<}m z$-+c%SbEDLs{nwgm#dNUqGo3xwq6aK#_kn}hN|VDE87cj@xHuy z9=-dfzB^c?qQUfT+9A;A;RGl>eriP458^`mY0bWUezO;eZy6OnXfknL_s(|n&lU1L zYFvoWkB87xB=sybBXr=!5Xe?J>k6p{uB*jwAzHU9TGxcz1A749i-n49X*%kFa%S-# zyqBLSyf=cNpeII4|5RPcdDj|6l?Izhi-%D$u}2gHJ5#?-xmV6|Z|3S%OZ?gh2$wcu z_bQQ|o=z;jEII9D_d*7&XkIX}>4Yeu_iQz|tO1nERAhao(pOIQ@ie=PCBl7US|CA^ z($=iyTED}#F+X*SFNHS0UW@EZyyxS1Pxts%Yyht<)p#r@c%d26tKNQWG`hIl_Nw1a z;tl3#@(ku&B!y{U9fJ`5K@&WyZExc{Z+xc6$7&LB42?K^;hkpgc#*Ua_3PKK4^huL z5D)fmNly4uGR#_qxM~vqhT{Bbxt!$?&XYAu7CmgZIDCwuJ1MCqprr(T z+SzwZ^Q1jpgUxI8sttE>)K)cz<@Ot^Zs7&ot2zIn;pIcuTKq6P+f{P`IdWN95PeDk z_bNGo4l83+%^=F4gdaQx!JBvhQgE#0CP-(!ipz9t;?TEBVXsu#fvguIUv9j4{JJ;E zMJ;mR+CE0AbU)?%s*0@a0+I!l1WIQrj7Uzt>w#T{_Kot~Sy{JAi437Pt%+X~va6Go zIQ>SYSnO%=oe6)OW>q&bqCu~POsdjiEu;U6-m^hGK11?r)dIoz!Q^W^7y5xz@w-QJF19lofyea*t$%)p= zR#H(!1$5PKV>iwYgRkwZ#l=17Jw=GWZGoLJ?Ek`GP0MNRnReLVWY(t`zJH_AiFEx* zU}>X@y7zs#z@fl$#yq4Mdg#K6YRp~$nr=JESCBu>w@E41lkSx-u>r}n)Fo@f{eW6} z1HuwX>8tM=J#YcLxK0s7z<|n-^Yv?gDn|w=+zPL_XZq;#qm^*7+Y2WcsP}4?^z5%- z{ubtoDda4Qo&awoyZ5ZC<7r2j%41ARZkx8l%$@RhHkQ#-g@}hd@*Ct~FB2X*iYUKD z{lIm4>oxED_qVjHZo;16vf;;Phe*X)t^B1-`|0@AP57E6@hhTP&FMU5jR2nU?rj!D z=K&MT%CAgb?vc5j?L3TBzNr8oMTTSutlr{l^8@}vGPF5*hTj}(wz9ayGkpf_8JmQl zmP&Q&$iIAvp6d;0NxF7w`M!ESrzCqiNCl{k9av9EX+L(|E~*>|udCDZTuXnqk}HX+ z&kYk=nB|1x#+&y{s1LRoq)heo?@~z|)2KD?!%FFS{Y{9zCp%9UL<{=knD8%+*x7wj z&u)xO0evHWI1<;mjcz8;;#&g(2kzD%XOJsj4mP1)Q#;d4`sN=z0%g8{A)A_%w3tlk z14ALGfJ589w94C_zjVo!p9QFTnDV~v&;NcJL(R*(O*ivC!N4Rcy-9a_iAz8q#aHY=xsVHk|2f>Yp;Cp`HM&RQ% zHCUKm_0-awd||RC>vDCUMH)=`K%a%EnS*Vf4>W&bHF+eb2Hg;b;~%G*=;;{T{<>sr8Zr>C$$xZPB-H^}uCz5uY zbpS1sl;p6G|L(tq-apREI7-4f1jF8}TWz-j6I8=_q9lA41>TA+QTY|5oiD0B>zEHj z6_=>Tkv>b`cx?(DH#~gHsJ{+E=aC~%;A5qkZ0;F5-LV$yP@`M>+`^qCL+~V*gdeEN zbSsiU3CXW94>#5u`l+c?{BUyhTjH@j@m3|DbWNt1X%fuP6B7V`XM`hjJC*X!(Zo+t zsM+2RX0a!d0_f!PC)4udt(hVjK(*->mBch-o$r2C+Q{(HfAQ6;TV!8L-(?Bfs|lOk zs!lP%wCwDLR3KuhJd>GbYTNqRCd)AsH!okdYj-L}a+k&g*Lw66jrTHpN|!7r`@Ic{ zw;iserj}YL3{1StTOYSv?kD!cBpZ2^kByJ_7WG~5-0QZ=DlWD+LQ*CFwdBGt2`T^% z^Ezedn|HEglyU_$DoOn;$uGl*I~Q;fUV6~!drjrbjqB8Z7+9Plp}iZ0djp+6!uYvW zwvvU<$Et}5@6_$1mN|@VvI#Eu~JIxW-x#N1ro*8e5I_tx#o-j6!p^{ z#jxpT05ffiuL)O+2IOSq9GX`^WEA4NP`>$kaP5_A3=yNSqL>fdA`1hE{M?k?_&fhp zV!4k!t7?4);^C2d^#XZVl5a%OFU)>34f2PQ-btx)kzN(blz$xeSwc5b${GFTVxg(t z=HPyiL+EChu?P2x<3nBU<6Xb5Bo_!#N4wFb%Zv69I3od^>jc zBqA<$MYz;42D^y~`D!yVGq>d8n?;HU>94UdIxO;UxHnfNH@!h`*|xITcPf*;7O(r( zp5_uQ+lQDG=3Z3*L_&S}Z84Me8+)Wftu}CIf646zl(AT1P2KaC0rIe#n(5xv)bn>9 zTHD!G6gxXt5ZM;%uid$Gd%2=luxohl{8R&C&VTwT*&pWOrw0Jo^*JQ~peM;o-ur`W z;^IkA*Y))cJIPNneAj-YzgjQQ45f-299UiYlXqtJGT=MhB=W1SF?%H}i4*C$=q_Bb z%hmnRtvrjz^q#RjqGHJ-4DG5>nX9hjw@w|=^rD2~Mkx>Hr@SaxfUxQOJ}4ySJKR*L zZFx?@-u-m-k}#GdHR|Yekm0Za+>V^&!s#K0B{WLF^@q~7-ArK%Bb9W zksvJjwJ0BS)JE_QIP~Q$QK-~#CEr~JHg8BFf2@w;;S|SRfMnq6BM!fU*v!IXB;e{9 zAz?9Fl{!!CKnd_ufP6gVC{|l;!_FpzBX-^$bVON1BJJFJ6Y(hj+~WNl07oC3;wu;9 zvn&o;di3sw=QOI*UjFkIut>*(z z3$tgv%kse}M$qsS9k6ih>d~Jo@hos7Ia2lhso%U$rYjTXLbR?{572#TQ){=W1=o=% zn0V^Z;_|_64qf8v;Wh;h!(pAKnojK1#Nqv;gJP@zqYkQMVewjQ|G;IWH*)g^-9OZs z<7$53&RUAIr8CSUnb}#S4d&cNuSLK4MO8pqf&e>}ncY8k|AeLU;~$J;fWo~YbHXsw zQ#6(3IE@7NlvPQ1qy)}Hv=`vuSDZlomdF;}bLQ2xZV&pMQ0lv3@zn%7Kgc&qbX~^B zUmj0+Ed;7+4}!l%@+gFn1(~3Sdo8|UxcNVA-fk8b7mV`-NV^pQ3n@K!Uh)C!d0*sR zM696F{2MDpO`A7k2p&e)gTSz6Yk2(u-iTWmtm`@P0(c@UH+dMZ7(+FUy5GCI1h{N9 z*_Ji?3d;%6AJb55%^x#KMx3x@`fN7{2K6>6u? z+r|$fqEf(o42_h@IU|#2IGb^#z9OAn#6#aw- z4Ira_ffIZ<3)p-TFA6<7+r04CQJnAj2;Nj{v$$yb`}xp0-1<%N$xMo1|D7i`K2y$* zB)MzxgaF>I@KZzyoayJ!TT6K_eXH=dnxC70w!uVE*P^p!?L1SOMo0YAli6j2f~YM@ z)uV6?W^u3K)-6m?^oWKw2Y@Rl7RzRggqT7*3fDlvBO|SnN=pJ%xeFBZ+~tm`Ucp=Y zp=AG{xuNV4Fht$ly84zKu&=Q@UH9HAJrNyl=lj7p1MgzorRmD|pBn1wbFS+XU#50sT(Tpin=zoveegi(SKr}YKwjKgOy%QLcYxT`B_a9L zyMH*y%SlM*Lt{S3l_Oo?*BXooVL2!=23Pbc{9=A7_X9~V z3k$}_=lR=YZB3bM*w)KGXg0Ab-W2tF!%$FRG5DSi5FGyFaR=;xx95KVn>ly@V6zOd zp5U*y_+^TyITlatU)1R*?OZq*c+GDu!OyRJS)+nk@PYB|%uchn&4Pptj;zW|?TArl`!sWB zuM}5+=IUZUGCsBHi4f4=VEgsU$KO7ux)8l-13GM? z(=Pzy->>}-AvgHP)RK@+Go(Dy32D*#gpuz7+>Bo2usSq6p-KUe&+^pEch&5YjZ zr?@&Yrp|^=dG&8w>n{iPubV$4q-K;Vr5--h+0oz}`Ke{Z;!RyX= z9@zcQQ6az1VyoV{@M#F=m35+j@S*81M@DHE)r%MNvUj$^={{IC0!wxW0JpY4U=G^ADzzmQP#qYug zvo2j%zRAZY)8f}@@4U$+q@)!EF0=iaU-5?p00F4_kA@G(f6|fr!~Z+<(-wQkf5gJv zj`%Gq4M3#hY1pb_aBLBuYV>Nvd4NLeIEGcxB7OGhQiRJPd%VlMt%80O&#hY!zNy1P zC=fH7Fbr2cAJJUSNX6!A*-dekF6@3t!#rHy;P@JSo%L4wE$8Lz+E)&eT7go?8Ee@6 zu^Syr(}8~Iu+0#s=-F20~*AMofQSfe1I~TJ5!_j6Bj58 zurH#CnjJIs+h4dW{<~Vrm8?lVcfG;%|%n)_%6y^sYZHuLM?ywp9;^e#a z8x<+V4nIFhpqgSC!U#?aTo8WmR2K(&HRl~V*I2%WYuAOS|KP_tLMttMNQSJeEW3HO z8)raXJQ6;#?1crKDw>-6c|qR+6-;q)mD{&(zuLB1>WBq+e1w3wMzsCRJVgWc1qI>% z>xj<;q!Bx-ta?(!_#NCajZmc?6Q%7*w-S2q`}E@V5Py(YSg>=qqwhZH$#^N=ir+Xy ze`b2xpnfToDOBIj_4VJFaAg``o^yMXEg1gNq<>78@^R0RW%;52`F06l+3u_hTMmn@ zBi27PV82ShQLUEK%v@cO*CQ`AHK!}E*KBXY=AoZJV6~qMu_gPZ&%>ylD`ht)wz(qm zmd`2}>fF3_>y}0%GMqnFn{x88TBwC;pu1q}o1vZi3Ih9K3TmH#9Eu{)%T=LhK2{&% zzj3IQw5yVm%JFTOTl6Sljx;;Ba3;5bgUy6Lus-HX{nX)jbQGYmvO04#AbB7GC^-nf zgOqmMec(~U%#*~Sa`)jH&WPA0 zOObrc2&%vhnlu}Ei8S`XZJ@6FwFim1&rM=Zn&dD^j>Y-0F+FstE&~C+g4FvJ*~K*` zv(eQNEk5aAEG>gD*3oOto7-!y1wDD&Gvy|?`({DKCLkgDu`QANi*#Z{2|@swMNq~w znJkWRyAnRf9ez~F%V*g=@>RpokaeckF*YT|WEfAO4al2jrI`iD%F8R+*u-y5R~t5* zN@RM8@9F8FfckGPDd%tX-;&KA_1~>L_@rm%!jUIH*y|eOVPlJiV2+e>>le)R`7=*n zy*hEny?G-CniH3CPmPMQE=5YdFzfQV)4VpT+qf-9E(dpAY;E(M1C&|2W}BLP;U35- zbEGkpeD(DqEe$Utfdb~qmq*9 z2Wp1>wV){Ag*5?+WK2BzXt_Tay5CMBv-9Mf_+`?&9&_t^%K}15fn+Zaxqk?fQ76r^ z`895Qn9sFrySlkDHt4IxUpCD~r)Pwlp!7t|cu-wmZr*4Jn{fv$nkqFw;Z-wfSnnKJ zKkQd;`HMPdrU~^>BYaS;s|LfgckrzV(C$%fKVxdnr@6A_=qDY~pF_aaP@d*GdX0YB zQSF9ljQH5%wt$e)oqBv~GseF(Ly=w*mvt2W`mBb(dgM@|YgTZYKfkA&2g1@#dn=fj zBTsK)Ufp9(dt#pB{5_S1DD~{u35s4w&q3jDCfh2n*2z{paQMV{VV7wi_;<|Ia=g`J zN-ctdoSxGzk%*h%6oVHTsRa}aV>4Ca!;0e++x8MQZX$_|2pLjehMAtO6OZ@uN|Inc z2-Ae*k)v>xYe;p;fGB%e%|gFlB)4Wq5M^*}R2EmG6G%_|h(bYw%6T%z#R01E%1drq zr+ZtCraMMRvZAo^#<7PTtGTI{)S*wgp7_{B=5!gfp6dG+52*NIf#-cG-3e5SKFQW0 ztb1fBnC<(T25u8`%I`+8&u$u+4e3q0xjvB@EBsO1OZNHUc6n04(P0F>QO}|7n~0MR z)%&%Gq@>$}5=XD1?tv3aOWhcSgoNtxIB$!CyiYMR_5%zO&RVPe5Jh*q({p<@vE8_{ zwcLJEUwB)o_Zh3V5)d8>*n5Lwm?mT6TvdjZDXWyI)>i6(!#5ikar`>mqC3KLYkFcO zE%W@AFVKN6OS|wU_^9dBM*zNGVXV@-S}raLP5d_T)Y#9HAOw0i4j z92@1(M@SB;0Z%PPAG4a5jDB^plAOCh%d)Ol#7MmaMPpbsi4*jOe6@q+EK}y=GdhwuE1t%Pb2fh6dJPBFh!r+FQh7{KB_q3u4Zrwz2Lb+a)JxS^fi|&Hymx6_61U+Cv`0|VK@OcdwI(H z=B1v_0arjPPjboS6%$=By^Ev{;i(QUzlcdajm3cCXY`4mk*1Ey`1)Czhq$@2DwrV+jqYZ8@9xL#iD0iSR|MT%p*hz;vId}oSgPfC!T1P1 z$=7+VT35kF!6y370^|t63p#kB5B1GFJ=nht^ppDZt^Hkh)_ZD;?OFNdJ&uxSpQ|5B zdND|>nwWNtt1*jO%00w%&8MSzyi`SnYE!qAm3}Q(I{OYfn))?DXmv;J{Wcvj-Ha2n^Hz@01YYZCPHrba30Qk}BEYFFp z55kOXA3hk#IM--E+3$YX>@m%-xp=~+X*E4QzOoq1fnyPA#BMrrhUeuysecl`?zYak z%jCBg@76UrsppA65l<||)2P*YUvKrw2u_CLu?8oHjZ79Nd(k7cYL4**M)*UR(lQll zvAx2QLpiKrR;X8tx+4szg8RniUgL=dnnKmT?BI8yXw+WCs7Yc!k9_3%DTM#|Nf}xr z92nqct&kQ#+bRD|P;8YYC1oM+^ujqRkUh<-^Rr_S?0Vs=YHA@w(T(H6iccO7{o<~` zS9|wJP1I=-A5>DaiW|Qcy7>c|Eyf0})_2w)$QPOGyPxN)wA`m>N@!nZz$hQ0q$^7! zL#YR<$Y$@OB+wT63-k8 zs5RO2*D=<*e>kop`;?YqoMj0Mji{>^GxX|c(;H?oHgHE+yqZAGoN>)Lh>R|KhW#?$ zsg!|7)o-0H8jdQHy5?>R--9LY(|i=sUJOxjbqa7IwlTN zkh1W$8J6fv2oV=zlRNaS{!%r}*4?N~3r63-S=xKf?WWQ`ICK;)6V-1IyvFc(xf9G( zm9Q>E@X;Ib%!YP+_-rKIYf#|a1^ZZhAw)9%2?io!ai^H!7^)f=o1cxw>%#7ds4 z@Io2bz)C_6Hm2IoW;#w+O&yE|OvgB@;(b~CaWjt4*e_q0mE5usJKtoqCp?%uF$j+p z>>H-IeUU;ellNg4xU}V-S3im@jY-fhh!(%3CJ_rW;lK+uX;~)2z`h&Zo&Co(1P8s^ z>L)2n`l!YNDNG6bJs(5^#bp}r?-I+at2zy#4O&?_ISI;$1|-SV*DY3q646)jWPq;I zK7w#9G9t9QlPUFF9uuFJRtV7=A0KZqtQmr#6pl&aq{L=#jA%s0H-DGI(~L(h|=PB3NEBA zoUY2pOV128woYs0B(1|!6K=)q*T8Kn7am!H zJy5$*$8N(Di=ImOc4&#v)G-kXq8Wf|Sd)5@tYS<xBD1&5FM#Plx!Nv^Inq9n48JJ6TSk@!^d_)O^t?AfC+4_bN`!Yi z)9l+QrA=^=sl-%r(Nf!{ zVEiWPVxey7B`nr9bDnbOqGfrHn4=*ObF#jXle?VJLi2aourxN}qz@l@D_i+jvig1{ z!?#Y|UR>UCt}$YVz5hAnv#OWUIADsnnwUqp(AW)}jT-uJkGPu~=73O1&j4h?--|pl z(T}`xvzRauGy5_>d)f}7b+Mj%8`lCd+tN_AwLhIZU%)R9Yz9$~%3<qR3k&RDYuV9yG`;1*dF@mm^x+>m;@+LNdpAU|<=`vf zb(vws(Yv4nvrXWeW3OZMJX>PQX(hg0oUjLJpG^{C^eIyPL_%*PNxTQC4T%kB@F*I& zh=Cfi*kC9XHn!sw;kJfP$340uRu-OGzI5#QzP;^`qx7T<3S(o-*Dx~TWW|uI-`sz4 z^~p98ZiSVQe;gw@nGOv^u@T^KIhZlF$ZT0+_nB*~0yU|o0l@5ju<}eRK?o1|&9yXo7 z$RAg-F*s#%gMk51^<3>*dwNGp5Un9hM-PUmw|DA_*A4qyE~XJolykL%EG&X>>U270 z3UBOyR$L;Pf2UjCe`j%4Y?PPd55xNXL{73HB&OA`SRa40n#q@3`*G`DGHY1O&@G6? z5CqnnvAH^F?(?8mRX0@&o z1O%-wWdZR|p+k`Epy6dl9yCTq!$8Z(9y2Xec6LSAsb5=b+}Fn|$(FFwG(sIw!SYdZ z;p||kNu|!}pr7i|S+7l%@zAHnffY+sZ;V{}DOfms+z?>zd0t;_n9)M5 z%$Pe@)!$OSt;GV+%{91ouuLB#Iz2+WnV zd=H?c3^T0N){)o?UcQ_A-t?W|ce_X%2~qBD*IncdlX7q-gKlk3F!koUGq|EFAj`y2 zZDSd2H|aUi#6xeWfh~<#DMzxAaeqA;*A?n$1S`sX4|>m)DWYRg;A{4XMk!H|g0B9v z8bp_aL>S}2hWEV+TH)W@vYOwC*I#kuSR2Vc^#<2}K18&C{hICUkisb5kjP@{vs-Pv z(^TT>2985|7}+(&-^uu#plnHW`p`?uvR^kF47=Aj+|=BBmy=WL`O^37zP+em;}0E@ zK|uh_-ozy3@&t=kMWsuEy-JARc;CM!;*YQRLxFsC$Wl+$Z*d3&XFuPsKfWw zP5WY)DAvlDC34>T@heO$>GE`P(O2moM(n^}v^2&h6?&U`KAx3QRkbF!2qU82R8*z) z%FFfAVA>gQbIW|qoiNc!3rn7!ej$5yl2lOU_Myd%U~qxuWWVMp1_aBGA?4oq_MyvRE?XWc@qKC2uy>x-(RWS# z#E+;Wl))TkJ@SRTue@J(<_3IuHNn2N#27IxDk|DL`5<#^gPqX=6hpdMYeTKG8#T8( zv1Y&e@?h@VQ`%e3y z!$=krYoWfKZ|z^kzsgZELe<<^6W7vmj*8#MwDbSvVgUha2r+x^`+O%|x}OA}e_HR> zc=i|8-E{90grx!RID&iuq8Q4#aI+XKtDru3j%|P^9D($+_gH6ZG`DDF(0%VG>wQ($ zFEp$3#?>SLYnOS;a_e4tcBPw6DC#S`H%>+1u^J@vZXrf_gpDZAESh&yjPK%Ea(l z0T7KaK15zl(mzeZvo&+}GfA?o2lA8K=N=v8SrU)J0ZacxFtrSC5bp&gUYf8yL<-#D-r9XIbA?VndJfxt*{-p70&gObkZik$jN=JF}3I0 zsxXc1?fa11eK*#K)7O{FVsw@3GA-?`I|B?lYTR!^@`APEbkH^=EKS4d;GrI-q>BIS@XKGgr_$Y5gn{FrZ zU>%{K&$iami+3flb8&x)1Ck~u?>2DJ|)OTsm-4ox9O-d|3CH6)i^H9m}9Fp51*zO8A%;&<_Q^v4ExnBFPIxL1b8N4`*=5XXkzIQEP-#x&em!{}(} zF+ar%Nk1Y*>CmDX`rE0z$J@^i<8e*gGJ;Q-7`mYQehZ4aC(J@+UvUsN;vj z$}2+nYpb`Yddn?0sV58$IyDZC%3894HIUf1u*gbmwU$RM%6l2uLf%$vCPuj`g9d%o zxBV7P-fINxFo?Q`qc#P*W{^!B$R_MtV?#)pIh;FQ)UjpOc|U{~g1)jp1;zWHHoeTx z%Fb3o&Wm%P%C$Ik><^%{40RGOhoqcz94&_|+dEWZSU`!<(RXVXoN8yik;WsXrc9f0 zySrq2%bJ5d8FG>{)uo64TKu8+@^+(RYzxFIk(6+6Z{Ko%wRo?m(6Orp63vvAkGSDx zk6*wy@tAjfjQC)sOl@k)G`#5rZiC87YMB|L4-t37y>)!OJ9oaVP!X@!Ja|BA*Er@0 z1;#r-J#^`Bs>asL1f)C*I;=S7p(l~|f9s=SRp_twL1%TOk~d;Nhp>eHU*8P?T|Kus z3F}LBb@iw$S#nLC?H>PX!853&s!2PsU(kGmRY*6wyD|F;{A$p)Ien8)#XyOK2|Gt) z=`ssT;^J0hbs-pHJh6OfjmML1ojs!kZJNHZ>&CLbb!`E5Yf#x zohYJNTk7Rg)sp4HGuQ&fcVzGcPK0)HW${e?P9i%pv&F&6Ln!jid=13-s9EOKSRgqo zAw*3ul=7q6wAY>=jFAi5cl1P3{e|Ea1~KIFau#npjX=*zjqO!tVPWBoNJGRi+MDM3 z^}LF2u}>5g+ldc!lO~6Ur9XfE%xu{F<`x%M@pl_C3W}%th)$h?QoT#fZi#mD8g3J~ z*4CJagoK=u?5gLrA`GTL$V{dYGah}kfKT;Il+s2VKqx64xX|eVZw+*{_toG1{>ZBf z1?bpkD0fcA^}EsgoBaIvtMd@_E|3(`zrJuVPUgh;uSx&ctAI))DJ%Lxu^YPP#L2=E z`!9S#W;Wl74AnmfOx~NBiIHJxjY*IFe3Da7muV%1M2yw~&K^mKks5vc9zvx)DM; z9?g4I*2uuf&ELrlBJAgWZtVi9q@-lr#I798cooQh&XnAutE;Qa6C&2aBe^7@X}5CB zFZ^EG4FFxdNd)0b;678NcU}L_?)&=% za+`qf=bmys5BM)HKygdz3`FK0FUe1f_a9uUm5m2zwZ`W6LGR{&cL6Dxb3jexV(`a* zS8@1X{frkq^Mn-@E^^8UKq{0g{(q;38eDX4z@&rKt63fu0*48)FK9 zk5mLlAFOjpOBY+L^h6h^wN$s1h>GZ$4w~xe>A`NT{maJv-In-$ZGRrWx_m$-yMGIN z=H%qVcyWyHE(#Sb0G^l>sK=oyU{st<#&aumu^ zojaFTk)rrtUTRb=Z3+-&pk(+z?7e3|Q|Z<=3`!9TI4Ux9l_nsdAiZ1YMY@0il_oW` z&>;c}BE9$CyYw20p!8m1fDoiZC{jWRgnXNsbI#+;!Fk^I$M^63351=!?|t8^TRfWz`QPAi%~gUAYOr3U%J`I0#tBf7JmWa{@V`!f{*20 zVUVVKZW&y+zIv&Ok@Z*QNb{6lCF$K_8`E_0I1 z;<)zn=lD#OVjDKihJ=KUZf!2hVh z$y)hGBe_-ccRy(7dn%QPGNXxY+ZUh>&^r~T$k#qgkUgAb zN!@gj>qKRs$qG-if{Tl&>&YSXV_{(-HGFbXf1`1S92kb91$W3^cDl}Hz}$?h{+a|` zN``g;{lr{$c3V{jr1WRM#+lyVeprpE%ZSAbrj(#ric7xj=DE zmNA|QKr#DjuA2Ue5e8h_TZHVPD~TH;Bcm(2*qIrSwaCbdOMmBmT>jr_@3X+1+3kR~HJeZw_i z#)Y|CfmA%LOIcK@`M`j`gi33o-E)^6a2q_?dnD#NR-CqIzifoJFC zJ#TCjW4U|x*|qDD7F^eU8+!WUMbg6H_cov&F)1Cx4bsabaGR6}h5@^p%Fe+d^07a; zzV8y3!z$?|0jqC!=|w836bWGcQ>B4G^%SA!^*n@Yi3{_Kqdv2CL#W(7ljuohY)0cb z`Hv@=*B;4xdC#*Z%hAo!Pbf?sd$eyIY+7T2^Y*MU{G$45v7M7AQ;f>zP86`_)%QC4Ot&DoPAfd<6dYXsx7Tp1-*9D7K*GsM&m#o4@7!ZPm!F@{ z3q5gQ6Xx7*IZvTKPz9t2K>MsWCXW6eJjEL?Z&r%5RNu;eyV5zbH7C%Fx4LTPxf^ zZHCP==V)4>XIE}FeNT@D^e8&ybai#Ju~_Yc18hN!PrY2iMGo-t76x{O0?Zb^+LtLC z`n5X+=H92T#91N?q#6JPWp$%C-8g^8xC+XZOWbk}?O&|u( zJ;>|6JTuKZ(_i={Gdnd~0jSZMY{C^yM$jA$b;>Ur0dSRiX86tP6Wj4#=qTx7M3;qiOze1La0ZMUoEc z`wZcZam81Gq!SoeBd8zBC5ok>0K&%za{7rLAR_8=--LlxR(c=94cvpX;~|BH$qi-$ z1_95g0~kDa)i9)Cq(y`aK$K`drlq4dIc~i4p<8{vbR1D(M$s^XOV}+oPXuC01nh`n z2;HzW-LR0)wxr(>!U%1;OfS-Y>}`e~FJ?6wMwd2oV845_D8_XA5Q7sT(NR&)k3OB* zEH346!Ns2_{^h~z=wh$Q21B`z-7XtN5igc+dEicAXW}~io0>{5L7Y~-5;apmqEqL| zW~`!@UQQ*Wppr-sBWq@AGFKqjtEjtZ5mu6D?lTx#^zBx$n=`+WBg`?QTM7EiF*zFm z8DpCGk>h(bNu!&ODngh$onw(q0EzFJpO{PLy+mA6mzdCK@#!GRVPI{`? z>);Dxh-un_cYc0(FELA5O1S2IDzCeoIzc zd?!$nFdl9v<8|I(vOlDR7t}ygTxMBfmg4bo=M^xPkD-NhaHkO zVP&hKbbw?)^fb&}KJaE!L|EM2)?)q1D!BB{X5&sw(C-gkG#$+HVPwODuhC8ExnWjW zNGTW|wql&J}}8Hyg_qH8Obn88u3or|TSQ z$`N-`p(pP#>E1NTDokg(R2r#Ux5_hxgoL|WQ+2vR-lLw&2H~tDFNUGm0dn5BNJVCZ zvE$!JP>|tqWf zvd^eZK|RF@6s;>Sr45M3a5PAQjOjCr-CWYk07}iZ*)M9;%QJ@u2SVs143b*HBkur< z?F8sPh3A&F{5-WBWez0w*23Wio@!r18Fkp-8gR84=fIo6(~Y_~@;X%>%a&v5=&Wp= z&6IHy0GgD)WN66$)goSWQ=am!;R*5u%&oZ668`mArB=VDq#V$#woJ{+GTPqiNYxGP z2x53j0MqjQhe$<*=QL2k|7Z(U(%z@$cs#%o+xt+@pPVrUNKO@r{S39(-=0X~4@+I# z+`5CPN0ffJ$8v*=H>Y9tlh)3i;`>t?>~AFiy~mAuG{b)qbMxW%rXhw<5ch!CPLaoP zm;bCqB=yRG4SW&|V`A7~Sj99yemYQyzmQph5_FVTQsRX>j40#pTQ)sM+{l;wT}Boh z3#f)jjTh^KbM9%iZi}=vWiMMQ$jiq7U8o~qAQ7-AZqp3I)5ox$9lgG}=ADuBf-kf` zZew}Pm^TOgkryLcj6?D8Em=Viswl3XQi*nZ^Z(U6AXv_q$P3dF=Mm1@utB)wXZ9oRhkpgIqY3ZlDXBV|% z+!Wb4?pL4akEGFM>-_~q7>;cJL` z{)wdS-rlI&kNtGUl*se%$yJ!4%*uP6mj|VHIlZk7e=8DQxxBlNGCcV>+ZCCc5OfgJ zDkdg2-@_vrEA2}XXE~18I~(GB82w+YpJ8V?tam1>yW5|vpB}fVWBoV~J;C(SS4FNd zQ}lJclW}=xs9}R!kF<^YM-#Z!r3!oFbq%mqLT0sPIc+5gDW=Yk<}%oNc6E*gAb@{x zmJ1Wgx7v)!;5!kN`ApGs&{uWk$G)J3YBI0xF0GJtU?i44A0XN|AWck6s&g%1r6>s+ zYRcOuUS8TAot@i)1VVYPcmF$4{15VJYkKh^kZ0wLA_88&er-{tH+>>?3dg_aa35j7 z=%K#ejbv4RNWD`?D=NsN`Za`F2gHYV^-Mn6->hMn+#n(%k^{`N{qCD0fX!eNnY)N+ z^7QYPl6<09ZN*MBIN4ox7MptT+c_5E_vOapVk=&UH_Z8pN-KdfpT};a$R{t%T&dzj z)8puv^z+LgF(l`h8AC|q@otdjXsIffOa}WufTT$w=gjsDpVMrG(22Ro#pt-ax78Y<%#)-O(3DqEi8)V7 zuHa9;zOZUp5)mqK{Eetzv`{iCn3_+I`IYXZbF+3K^(07*eQZS4!!EEJeM>Qv3|&6WP*jL^PFKD;1&W4 zYhv#;Z>C;rwrk)Y)Gu|!>XgErT63Qs@v=L^787W*^78Up;bO0j4_RHjFbP$sSz<(r z!O2$*@gX3h>?*FA9-VRE{U?k#Nd$n>;adi$&T%(4zXzB`eTPE)q3nql4zd^-9?m{3 zF`Z!uN{Wu=q7b{Et9Ft%ItuUdIO}2iIKxu488p{Wb;-tbLKdJP9ow*OzYSdz0ar_= zDvh-Aj*j9<3!f$)?2PahdQc`wE9Y=_%46gnz}T_EiTY1ES&rgX$2INjaaZ4NIFt{6 zgUklm~1byPFD$S905=CfhJ%ShjL5ze!pJid-K& zztO0d<9YH?$;B)M2u2Vo!3z+dJUYA)5*xV^F_;5?QGcY4{SE=khoI{b-bT8&e_@B z9Wfwr)Hse?J`-?~QYI$n(q&TPW0UJlGqC^OpxPC_05njf-W_Tk10t((9IkZTPXR&C zbbg~&;h1Tn@D|pAS$r|Cmb5Y~%v=1+m!8MuxN>bEOIyQQ;WuM>f0S6xf5!I;Ez#xV5N7ERYm_CtshSj`8=2B34O=h6)ux+@BnwMQfi${Ha9S#;IQX-uM7Aw- zW}o=)m{E}ZG91F{3tbMAn4J`OvK=wft7lC$zO%YAJIOt&w{ZQY)t>(p)HjM@e?VCw zybtX0#@Yxm1irj%H}-G^f>h!+1G9Gug?mb3lT}$b1%`%4t@QuGD;ZmZ?{|EpEHwVQ zo6qa8csU>_C=5uZ6`nmy3!>qF^yrb#LK}r-KKw?H7l@mWC*{*kE9-x20kFoturE6} ztO`?3tci1#NfIqmmvQTP0tdNAzw@uDpi@W`cx8%D7v7ievV*^CXLen$5-hgf4RO+~ z_IR(!brGni5Nd+oxi}*qs*u%*5?88%e{Vo@G%-{JR z@GtO=lgekX)d|An4~&&p}y)cxG>dA_PO$7(sNc#}cf5G5_kapP^)H)7VC>5(dv z-{7D2;%gR?^rQ2;*BJ8{xbJrN#kQlII}>tmc6PFD=2e!Ad)6m7QL4VXg0?JH(Ah62 zh;S8}p4v&#QI3sKqaRB=KULJ{1l`V*dryD`gaWUNZR9Zs$*C$o(jX`ojL{D!F0Mnv7tA~53^br(R8AEW}ai8}`ZV-@s( z<`9WV`G0dDm_DC!AoQ01r@Kb@}?BDzKo z{rp&he~SR8Js|SXtK@AnHDTue`XlHsEatHb?;!UmXjDY%8xmrYPWTAfbf~s2lJimz zK(u#PKSm}Nx>VV)e{m(wQAKP8O+v>9fNlxES+NK{&{en?cv57Z+&^Zb%;0?z0g%f3 zem6k22fJSB->{iQa7YpFvT1eC8zSpzb{ff3oB>oZBg3!R%nb<)t-5yeCM$x2KpY?{ zNb`IFFuHT+&uhgTT$7hKuO%g*aSXrg_n&YDFb=uVQiTF)rm(UHiK>N=iswJs*8UrR zkPjLd&Mg;SpZ#MRF2Okr&~e|y;NtjGYh)TB(Y@0_c};}(sn7jaY4Jq!Edf??;XCtB z(LgZw%frc+kn6(Qz=VRcoZA1%?~=$)%h6=c;g)BfjsK-y1>9$zHgIPa0dLMUkw34| z*>?kwudYf#S*MUl-EOzg_a0vDGiiiy-HtEgynq63M1>=#03DPE1t2U==y-+oD;K6}S` z^T`4`if_rlo&|XJ7IT)X)9DqCYuDI?5xVMOsfLAB{_ma<<5E;wtHm22HZnBl>82Cz&B3bGhz2vvV4|8=_GC)?XSf+kWiFv zB>+rO+c&gby>hWulpbK65YoZi9OjEoc zMMo!j_z#O_l-`|9oc2BU>x!1&d`*GZC^d2sD3{3D*`?o@H;K2_=--%~ve*4-`l|P_k8)t=C7lnjNI@v_lX8Lnt(*N5e{_`2_XYgjdl9npe zVz|-Rva>c++!n2}ww}ey7ASUX@`~PV4Ny@o3WgolMQ3Ypu#6s%!bwDz*Eo&5@ad2;}L zXVb1Lyo&WL-$^m@W>b<*_nB7m5dpxlB$6n8C=lUXtmAG$`wM7&s-0``5m z(-<$}lW8_t3OtyXZ>FD}K#TZr1MDnm>x7U?~ z>;=&7(1=~V1W*+|@GTeA{;I_YFlsciY4Uu7g8eM_IZnL|&}2L_H~DCH>1D4(G|m84 zkooa+FVzVnqWg_ajpIagbl_*~(zJ9Uy?6c!2j6aA6R1qB#YQy;RNP|Hzlp=8bL1|2 zA#T`Ne&-?&A-6aF;>R)h(8T12uy{Mupkc^8eI6iqRu<-W(7O5tCGi5N)&*T=l+g5O zg!LhUf|TkOCulh;?@2b!cK5WGzAqIL5$XmSNeiq-qN2}}?8c_GNF6S~7a~$qQBfLv zR6jY)znRjpix15SaQph(CUQ&LhI={< z4!$u}vD!Ov<0YL%TK-EQNy-R-_NyayP%fHDQ!iL{Y#ZlUvlGk#3{*t~xhNH&4tF`^|OBg^YSogM)?6j*d}) z6$FG}q8q0o2PSzxML%&u-#)d5?eB!pyytxN5^+;Wk^5Bwrlfz{|K1`OPAmOBOU{k> zV5_46Dt?;pGqYnEk~fH~i2W{88~ZHbk5Kro<`W#_qy`%j=+tL9{o^kW%+)-DG_EHxQJ?bb(IysnyyWkRRAbJUo>+f!9ffM!St6g zt=au!*S*6a$7tk0t91Pn2$d=i7~plpq-nQayZU?9*TC4%pL6;Wz%Z%5My=i>&sx}u zs%o)rif+BXv9sT;Z18#8Nv@tVy&YY>9|nR+*lKtli}(kcr8VC$HkO}_0YzhV*5+py zZUaQnz>3@k=FM+xu3hGoiE&0Kr}T`;9Dv(Dh4Ws>*LsEI;@h&#sk%tV)o-nIo0B#8thTy52xblO*vD62F{d7Uw6_uauKh{F zUdgJnDrnTDz9}o~NxkzXt0lZd@aVKvCT2AStPS@npIumB0l=8+suUDJu9-`xs3M`O zvHD9KIYIYylO`VO#s5Jsp1JYck1gxl$@NdP^n$aw`48hj1fFl6>$9_S3rPQn7C~s< zC=}2aEYZ+ic31H4|7|gdyjS&uD2F@#oB2ot=&z^2dzHw|fba1{FwI>_1Hld=iOFh4 z%&s`l@WyP|*VtFBC!)&01*YAq~ZBS#{$OM zFb(xe^Bv`CUFv7p$SEVAuf8I|!^sY461=rxUz+mDCc=EIq)S-;g=$FSV;^QmImRCL zET4C^Hex}{^j|4rqa6&Q zngnrUVgxU#X9kC>%J)`kvXzMMP2Nl%g0>{<=#)<#Vbl@3Skl#;Slz_^dbj#_SJpX? z#zdHMg85MXRjOQJCD8c0fR2iSoq>0e+b*U2w_4}CK1}Ce!bMx*wT}$dT!;5qkm&# zKMZ?IzA;YN^@T$pSMA&!7KMC};oA+l+H~?ni80q_3R;<1oO&^5gV!X8*=FMQQL`cU zp?N&e^L3xnN?b`sQdIvY>Nt+ScC6Y6&^AeUxx&OLAXhjI>iZqUlbpvp!gvE@#ty(~ z*OgwWj* zChIB(T5?zu-Ttl;()gRye(^g0<}s>fHlutBJ#0REcgvjiUVXoSk^2_{&yiYk$%$0S z7a>paw`mRCRFAb{j<~6U!+(_dj(G-#OG@AoA{kyIEk9(<@=3WBPPI!Cm5#iUC*;kl zByi&0A&ODrhTLVOcE%>Af11K##E-bjc7O z4iv=#$u}7JOrwIR#npjUFIGlR$JunCb>k@2jp?PU%yCyFn?ggi^*n4}GOVcRo_G>F z<@sGMOcm1L{;MQ__Qo|JiH}&mx37__6l1p(9FAsFds! z&|AO2$m_Ir_xc-fBJAX*mZbIS({j5x)>CZ~W)L!Wrz4e(N=eAjz~wtNAVr}cwGu!o zvBvuA;V@~sfW8&@rW5NQAWmMs6guo#q*h4|;eL!AM8FM~{aKjQ@IYKd>~t{jX~S(m*_N8`fHuTdA{Twu&f@!Up5}WMNfAIjbX@4If!XWk z?E-YM_d3AJi4B!BxSK2jx!<}hasd&KH&w6 zeLJ`ol1^|+1h^WM7f(O{+llz|ez-F_>l#~cDn5x?#_T=Z`$wqwURaQjb1mS-0WzjZ zVmA@KEmX2=_KTwO5ekaBceJ+|OO*nZk;x||rHJT6tyV zXpFYHszZB*?9@euk3s*^oV35D@HZIUSmq zqW1g^kM7%T?L|FqE~+9K(C=r|EgK>lM5iqkoLd%bJ`B&!M|>?oSS@auU$@dR{IibV z%9zSsUcKsy0j6s=Wp*X6=0)bISVy66`oFb09_c3*H#C=mU<+xlogC?(H|^!u zaP+B7^6P$;q^v>Mb#QQ5Hh14ht=l1$mz#|I-3p)ZH68M#Khk!mpEpRGw*NjqZwzWS>FDT? z^&_Xhm(KBgdTg;FYf?l=`(#5GJ7!Efvk6Xk|K6`#SrGXWo~<0`R+zy-NVs6Vrec2< zTK6YxRs<}kAg5&H-=cuaDb z3qT+yFxUNy1)wU%cDSM&y{f96&WF&s2LWk(u~Qi{vd)sMUQnuC)P`jm9~f0=j=S)5 zsrH3^UfWh$#){BuvF`eDT)`kM^DqyWgaFpzOrPG<*WZ%n;?g6<)9S0C-z?d*idgwtp5%nz|f9;6+W z#6E@hmFd2UM}+>hZcpR1u}HJ-*t`hnT2bkMd33!{k}O_xPT}R-n;-X*PR7tzS|%Q% zU?k7qR8WM6hu`Lb9VZ-~R`CGy8qaG|ep!PW$>=d-P`A3;EOP0U0gVk4lKrU0QOSXV7k?J*IXD?zp8`&@z4S4yU3J&PRQgy) zk7L`0E!v&5dVZ}WeMutQ`q&8r2M5Da*|g@F+F@qr_3%me`?ipl zHgLZDFH8Wmpyi@`zw?UFL%(%+R zlG@qXE=KmDuQGgCf^&h4Aga0bci)8Pk9s1r=BNit- zCMs>JE${XB=}7O~XuxhN=z8*2D;-(ia`*ALx=o`1$_Dl28 zv8l0YnKIwv8|vx;{Br?7m-3VbiWKgVHZ_ewSdXyws*lZ2PBp&R+4kA{{yq8}&Yyyo z6=;aT7yzRee3cGND|1Pkym%F}eu`)CEWQkQ&2m}2;e#=eAph;5Q(|{CM0`-M z8K8cn#SB5Ex~dE{5_+EpXz#Q!CbP)vJ1d&o9pWbN$kK=(fD#0j#v%8vpejJl+}*bs z)o|`gH-ra}7f{d-%X&=u#nn(RA8DY};hQP_KBzjyEFodhK=36=;h3nq2;GI&SqwtARVhkIy+treSbca$lg&`97R|Nppg-MDbk1r`jlv%2) zdd$go;e5d+{8PGbwsk`_YhaVnc`>>jpgXS%wm-#wiK>ZH5y)xF?6!t0%$%u<8N`G< z=JTvjO)$06$kt!tFBU*gspop%@|n?63pLNPf^!D3eO@Y9l-nV`!kO`huGT(dM>FC! znJ%-`wF`V!VZq%_p?c1i`Z~Z^rs67#Lha%cdP=h~k->TkGy??uRLZz>T2zYUw)Ywg zzch6qHZOm!E0XBK4`DpM&0(`{DapP6XnNbNYp0>P@ZFq@`7(>7(|A&aU1E$FHp1%W zCYA-NpI{1trhYwMQD-BNu)`89eY)~l<-|BdTWm)Lx7hEro$H`wbk5fQg<}p$l0!tm z3&E}qON*qJSW4Aq8{To9hpThSPc0XXJ8B%{5*ymdSb3BNG&dIMr<0sgt$j1@B>7*W z5m-(dRNkB8*n8zW9y4BoNC9`iFBzY2U)Lv@{Tdop3I#3Vl-OKOW&j?X>phPd-C$g1 zU1;y*<=4IEDWh56PWQiR4KjO(nMPYh3dD|2yH{0Jb@z3tDZxuPI5{=s?d%elh7$-g zGBX}RR_A3v)?fFrx~S%dgves9$!cqO6?{4kU5d}lQ56Ko3E3s^X=b}7w#zbl7UY_q zSf)OP0@!>%%yBqi1hV#SYa9RFK(EmlA#p_a;rxETixeERFRPp=@`cQzMjE3S!#x5p zWOI);8*)J^hX5zHp!?YKFfi3HYo}kdqe#Et0o4B+>E#r+RceRShsoK^AeH`G|Mm=j z#lnHWq4?SlvMZYw1|Jlq|5ds@e|r!p=I~j)@*4O4J>|jAyDN>_`(0CJ(oJ3S;+~eN z-XF4kubNv3-aCat%Au2&zxPo#r%6Ss!2$~udXgmsmTT*-eG}G{4*$;4HI=#gv3oJW z-LsM3VfDuK?BO-B>uRXuV_3?d^zvW=zo1~TM6NP0rU+EMgR27VZ!k0-eE+`apJfs*xpeX!-OQ;C0p=d)*F^^ijMH!lZL#95^pt>NP( zb3r4jT2}CHrm?#yeADpa4lyZdVWF^&8@Aumv=8ibhwIH?orBrar!p2gra2rO6MF>D zE~&^~|4;1TO@4Qiu(pIX_*Rj(`vj_U*f}j(TxE z0&QyQdp)YHBRJ_tB3sh}Y{pxX&5N7a78}`_M>4N4KVA3daH53};A5N+r1AbtulV`1 zw#*ktHMQvjdR{C0OQn^Ut1te8#=r$SNAJav2D)8#yGQ?7<^LdMKR@oT|2km^)WG)y zO`iPvBWFel|MGmmI|b|^Y2#g`e;N$-4_8RToie7N8Zy6Ac?pFEyxY=h30`roR|IgLwbdoI3tl5@t zrUjMwwelwx*88@-o@y*gt?v%gy(E+^*D(wSBfrYDcGvnrfOdvhh!)vW73TvnS{ z?qV~w7@iNn&iICk1WDQ2emZg6NgV^chB*GXS+ut??!r$#;cqK44Gh@aEdG7{XXp9T zU3jw+RYQdh_Z~~96`xCmZbh%v`vBU;RVZ3xgEH zyk1H)Ee8Cp%al8mdf4#fcI!liQ=r2Bynxm0nm^mup6WhCt#Yf{_m9*u%s|~|!D^x; zBUx8@uPnMaenf)Q()Lz{PGh_?Tj&Jf)uW9~+(!}ghEV8J7L2-yUBE?k-gz_LhK^wR zoP<>iGbH8vFTvQ#>d%5LhGk#bD&32^FMW)vG4cP%M?28P-&ES1S|4Y5^%`w)Z?>gY zj7}Obz61VU1~pw-1Lx1s@#(hT)=Y}d{Pz9)jhiT~FVqduFt5S_P7d1OP0ct<+VJ0V z^9W&DaWN}XV16wv5WW`|5vovL~HXi<}di&%0w1@%{I;p*z@ls9fvmLmOj>5BJAqmC{`E8~Sa6>K0!^ zXvLrG*x++RV26S#EwJL!;`}i`LCK+RGgNs4!xyx$>#mKL*;*>M#@YvOhAV=Nn0Re5 zT)k{Ea%Gg|5u4#8O=4=!~T+*^-L`5YI}#x zP!7FQ%7e>Kh>W&k&xOznt^6=d@&6H8Nr@O_fr=Uww>$DRsD8j zNLORyFw*rxT54hUVKs$zk;~$h>^}WfwN2|IY_e<+P3GXI`(wZ7Zc=&Vc3&JIRa&jV zm>&6|OUE8`T;5;a#?pe(r(;<2DnvmU4R02Ep%&jWzUbB1z`XVaR(~`j?nZKrOd6RRWhA7QaN)%^qhBoOI5}C=D2ON>bUYJ0<#-5+?q4Py2pC8t@ zPTuaQ2uN?Fy4^F`-Gr88Rj58&EU%itZqY?A+|1kWx<0lv8jx@@qm12N6;15*k(lki zRE3EYR!DAm4hp4S3wm&n!Kd7^@08mQi5Tzg8mq}hC8AOnh!Q9Fz5|*UsFB=yG%}xl`f6iaZFdq zUfS@K5t#I9=F2JQn13L$7gM-zTPz$sO$O=%8Uzb{X8D0JO+ZxVdWW4)0o{ zr8qu+E(v64XvjwE=}tV@d^Am(u#faGTLZWlE3#%Oiz4e1&F*nU+hki?ZX0z}(J3kE z8mi**BRMKV)-}kiRQ$0$(BLfOIRaGQa+LKST8uvU_~FAdFR!MKIE@@7Z4;B|CfuHA zs9S>rW=tpFy{5!%m}omU$4x?MB=5nmG0h8fB&W`lgerjj?`*a|5#J%=4AQ;m(A3gu z=mS+t!;=#8sCD+ZdLX?vDsh-3Rf3DZS1Q!P~vXD#=l;4!Aya!|*ZYsh3qaIJY*Pd?3*v-jS z-hC@^FTGIK6u(Q%>9{=ybvV~D_m!N_^7$;o$YgL{mVpWhetw_{VrEfu;;OIF`52yz`k-D0haqQRup{a zxg)BAqleQLYs_s}DsCyr>GqNl@-am7Ro8Uy>U6a;$wTO9!Ws^(U8-&ciFE& z202`aeWSlE5NanTQhsJ5{2wur6zR<$>n#pO7JrK;{`I46+y%{>aFhCK>OoH&ZmOcB zINz>3Ve`Pv8?fk4_EerpJ^wIFRbopz&_GjruG7e$!dA=Gg9nO*gyMFIdy>}{lHDEm z^Y)!o7?LSwRHVCA7Qj2b^VStBlhS>aXV6bhU-pKTx9pzCDVWMl3mmTqEc(YSk+iFQePy5)k#67i`NFKPI z4h&avk2^ZFH1u7U%g3}{tW*tHyvhnjLa_mD4G$vFu^K>H_> z60NTHKYO-V0ZJwucgrgf_tE#IPfE%$bBI;m+ENvlW!Civ`-y$psg@G)J@9;E=a9nq zqshs=jSzY(CL4{@I30jTi_@cgOhm-z>A3 z6?U|%DI`g>9)3HVXu%#ji!Tr<2qraONu#*1b$PeS+A3zRys@4D<>#3&fqG#1Dsy$b zKYvKdU+pQ}h{Sw28Qw`UG-b2 zmcx-c6{n*t2bBm<2kG9y6O~B4NPf=|eAD1|e5tGBRy9m^sm*1HHqyjvriEEK;h|cp z$96o>9mnr+aGy(W_w;;=X$x4)KTvrIjCyHYP#YjWGyMMJwE8zlbsT+}x1};UIrA{n zWuIF(e6P3H-qYVc3_`Ya}uHXb0vT0ELo_xGTSM0ITLcHuInCmto zswBuZwQEW2_uitvkAl;vizf8m`Vwq^)JuCIKHf|63RGy``e;$svC5Vu2EQf<)d=ni znjVf20OzlDz)`Bn*X!9|&Az!Jguij6aYl39phDLi#l7`=_v9X65Jr;0rUOG@sC#yf za^ft}psIlPZc~#)g2_2_B2a!j!7jJqUFo*@!GvjNCwHeN%vR_U-4=e>vtQT@eR8xp z62-1TzJzX{Ix`az$~$LLci4ZJfn{?`5(ILAE*pl7;Uuw8te@xttNU^PQ%=k}eQ2Sh zYRR3W-7qLjY3HeEh1c)RI&CGSR?T(7{9@5VbvQarg7a2_~266oA`cClUSebA8dA8jjY`KWDYky1Dsq1N~f0W^yAqp}=Bc z^IJZo)GLc0?*$hQ=4A5JSlX@j)G(qesLwjVB@rB8msAxBdYS-r3{dj~qQCQ7_7z$| zb3iKY;-yO?^Ig}I@9hA}7T{4Q%xaZhy`D*GRTzBc)^Egn|?kv0AM za4#G-e&$eKugXH}lHSNEZ|scJp-5^Y<_2j7eAlQ7*8^*i@lZ`?94!73%R5kG&0{%qV)>P z-3P;{=~TJiza^z{a>74{q&0|_c|Lnx-^C5?@w-Bsyy*w+JuxjIxk8tAJx6scZ-}YNrRy3X z(kf_`<9_00m?@(F8zW;b-0(;>vg4PstEbu9RiWAQ%M|{BEp%sY@#Qz?M4R-|q^VMJ zYRQ-!zXtL}iI|nuhtOpKDXgZJb_qY;6J^wmppD?)sPCcVPpffLp)PEke@HAVd)MaJ zmiV31aER_DTH^Fl*A-B3^Y@F%TboBoa{`>OEA!Rflkf8zD&6}`LmgZiMiPV(4yVFa z`&}KPxfSs{nSBXX+WUTA7--#Agf~`IOkvf`bduf1KB0DSu*;4{=!t-o$1pwg+1CjE za?1_RVY`bf7JMCSoX(a74XHJ>(Ja~B2VT(*eK~!#(xOee%(PD!p;L12_k$d!iCzLj zXEdW@%zH>Hq8$6>MR4!kqea}qIh0eU7hioq777Z(CrK6>KGv**aE*s5i8Y$%`^9z7 z4@i!csp6ah9=*=!^L(JacjW>abHAKXb4exHemh`wytr`0v?s>cxdBUy>P^W+ zo$M*#wqs*CfPIGQP0+yKpFGoa|6%>;woZNAR%{&cnLcg?CZ((uZHn3r`+B@}jfGB7 z;W5u)8Q+J#u%`K;SYy6UIL{%g#!(S^b0kg@v`W;%rjj~CSKZpvmD)S>(QG;oHHA<) zaV)V=GTpyTm7Gt=`gYP(qy{l){R#Im*H8!I`ZQBwTC>tr#mPg|zp_qow1=pgD#wh& zc_)Nbl@VjuV0Lh^VLtC`j)jy-M#zl-_#_0qG@#8XzIbyYQCdxku0Q zzxU(Ir~M<@C3~;E)|_LGIR^V2pQh}hPJuL0;L*6m&7ORZv6{!kISl8?0RH8dxZ8v- z?ewwq%WoKObuT`wf|OoB5MxVxZsqly30Q?|fdy~L^@}6jR$m{Y3FUXOt)to$c}=bM zAnhwHDbXqy7JjohstLLlIIONXS7zl1B6}V@h!$~mO6C^#y4DQSpKZ%CFBgbIUvY-T zuoLDbi5aOeZ#M?!;Hp3naEOT5bGH~vUZ)hLrL8Q2HL#L1-Ik&b3j_Jwv()GZzt@bd zJIgsqMK@7wNJ#W6?R@^+Lpk=g{B&c`0}qd~JvqFYZjt4Ctz7-tTd&nsgmtDH1N(r) zRnpd$i-AM^9vz=~5%4L>nooe&BTBUM45P(7Ls*saCEEwA0jMH5h!IXRifu0n{(AsIU-To)JAap_NZ0CPSx)BT7J{! zGZqxDUyHj=2MTgF?LT^==)O5RkwDnG0~8V2uUz@kg4wJmWwx%N4gTS~K0GMvULte@3Ew9K)T- z!R1~MKbAN>r(is;r8s z;6J`aZ2KeUOG;5Y!rd^6;Y);@n>X(O=&;r46sFG!o%C+laxZE-!hBw&1R8w1de#;y z3YzNkTRGeLA!*R$#VAx|3AEJCYqKMw*rDgiCc3{=h}?D%8**;ilmz!DQ5XlyqZOEo zGqFPAo_k4Ahb(?Vi6^hqIN$|_85%CPNJ$#k9TMN0nFh{>Y!B^d{$oG$_T5S^%*qr)Yx_9;D@&XNVb|p3>C-Mjnvu-IjnQ@c zRH`DrOQ5F9@vht@XF_CJutOj(C)cioocvdz+#mm2I!fUMB*4>RKLYlc4`GkS z3o|l5KJ<8^3cXe5N4Xd@X5V*=CN}RS08aTDDsk(-P*6=D~3&G5j=h zaJ1muV6}?pVs8qz&B(4lfC!U@Nt(WKcNLxe5E>_;Dj}?H1Q&11D4B+@)%&Yl@PYy| z6FasGZs_KED{2AX;hivail=HJ*V%UX5=<{7G!%d`m3aJ4fGbdmj;bSE3Pnr|Y5hhn zWb*ojbY9vC^?7cs)w$}|qL`+~#GF2J&$LV3YKiTpbqV4)J==+@l&Q;qCqD&v27XLZ zk~YI?777B!HIJi+2=6rO?nG&o?(&YARSsm73Ax`q>T{BezmRgx{st#NEV6>}>&8tO z#-*{+V1WL*ZLhDdJMw-Tl8g)q!OFxu-p-0c1xpgj9>nE5DsupA+(1Estlx3+e!y2Q zwjNNh9VsYo!ThCf^dI0rT@RaDymmTz)q7(>Pl(gb-52O>B4AAhC<*Q(zg+)+?B{U% z1j811dl>B726F=a+D?Iy6&IJxZSZlR(w!%?$0r6y_bDx{vUJ)0G=osx2%;cmQAt#< zlvVI#qI<{GPA$!9+Bk+%E+kdm=@akav`IwuheoRhQdguN200R5G^7QE;*}Hcml{Ow~4cY~p zY!~(nNg9vI%F40}2$b}Alo%)}DFK=eW))ExCp_-G$)zA~g>`MArVeAmTU%#}W0ujw z+U%0V{Zn3xDa7mS?D7I_g#HZm+ve?-;_EZhBE+gw%4XnwK9V0swo z=Pi+=Q`jgx`|h%9)WUK?Eu2W$*xBLpT^rK?f5dKy(xF^~c?SAhPwplQNJ~r8-Mp0X z03Xc{i4%d2A72;T9?@>Zz4Y6|;Xu0ZfKJ%yQ)Xsn5e)BDy*)UFZD1y(Yi4P+bq#3) zbsg*BK%ZZxWq-WOzuEHjyW!A%WPyfDcjd-KJ85yyqmChaHP{&ke7R-dVN3Jq>>?xMU&_l&}uDy4i zD%gDpZQpRb0|~?BL<_R6SS2R5|&dU47*D=Yt)O$o-<3rs?JeCt=GS^ zM1%J|SOPcZIUnclx;;?a=d;t%&6eP8-C3*NAa`2O8FH<+1dJRaV{S_#piA2JscfhABZ!DDiap(p?0*_ zH`?;j!Ac!r1d9UN>Ac^Mg2J&~V3e_jFu3~Xl>zen3%fB*ih${g;)hx2UdHRLiq zKZ=f%C(bM|^bF|80?yaje7f+T-mckkVg!2nW`Eo2{5SW; zH;83&>~m^^&Hr_?eyY9y>23?%JV@d$YTx_mqJQ_@UtPz7G1%Wd|I`{gPb3oT&$#mJ=HJM1{@tbd9=QsXUVI(RH2$YSc*vK6brM-W*YLaF z?@Ph+PRQrkJv`>)z0FwYSaK_(D)|AvKKI0%mF!&;xyXkz_BExBtnO!^We5xF& zibekQKt;=CN1RV=iDE#-)bx3fNr;BUf1hi z-_J=0>U3^SZF#LA-1IU!PvzEw0wiP7^KY&L&ujM;d{h(0&!#$SbX*2r7&?{iq6t78 z{aa(>^($AZ8ZLfqYFeC&A!hS+isdx4zkdCfx$@tut;5Y@B8_>%q|V=BPyOanEt93N z&!|CaPD`|SHehf;4!6TqI=;%fFv_oGU%Qf)kH46kh;~O!a6XCBW$U5ECOv@@xug=?467q*~ zQZrkNmj_Ba@|nZ>6~n%`uXkH=*1)Nh^x(HBg8PL!c-TBrjo23CMX`q^JcMVn>Y$a#%Swa_W8D=8WoIT1& zNJu`!geH%Uj$-{OTHNm3sRH3(mU^0sf+{k@b$Kw$T5_nZq}T^oK@{7eyiz`;3Pihu zA$RWkbR2fV$4eCX;Qf0#5!3ua6xO6~t|K$s22p+1I2Zl&(>3Y~)a)!Qnn_8Q=_Kv4 z6%^Wv+)yIaQCOd_@ND6mH`V0vI4eLe&FsM6bXhoakXjVRMGmVQd`vF({?^K>`j{BM zFu?iX22l`i~hO!@j<{R>ZI@mD;N`+!utiUn{R zO1J7B60vPMooGwdFESUcXo}n0#g^ef-CN$--skI4tB8u_mBvU2w^nJ7%xyFVzBC*I zpFTQ1h8>O8we{Gf%JIf~IbpI}(p<$r#u6k=Ve9&sXW|10vtI-Ub%Sgq5*Ev_eU zb0WN8oTQ`HBDJ7hhKf8OuAyuho}prJ1>yg1G6{QV65hXV`<>mb&Ru#WL0{e?Vd1So zzDb%E5eJX2Maeo~+@b2-|Sj1M528;c~jEGBjt>3d} zTSK)3*}gPoe#)0C;y$1UX|){sQov>_R`2fJ=OFZ1y(hi4D9U$xGXrk5TDm#z$KXEx z8N1v8cSDZ_P6x$IdM|0m!wFqQ(5`r_CfCI3IfN{q1ws834cFk3Cd6fAmWH!iEYes} z#V!|ks2Fk?)$HVumrTU)yQ2p?Xo-OU=PI8k4AVk!nDgSqFSP)wbk!l!@EB&&6TAx< zM-8ys%UPt%W!krH8H~G91M)6z6@K5yhri9B>9>wkbv;)nX)d0}!sWW0bpENBN~(S7 zx=_FHV_DDjdhuHpGCwbNa+kz7I`_D_Ee)g=dfJDbmxR~?_QEO6GsN=h{GP1IT8Pjt z9B_atC2nwQsauRsnm#ZBL~UInw&{R$;f>$#cW!;88U8_JWER2L-nftjPdYpw|0#QR zxoD}pG|t$X{&a%F_Cg2Tv3jPSjcqnHsfO>K?HZ3@lt zvZ({gOR&<`M0UNo6;J0d>aBq>$wuYr)#alzW5zB}iJ>O*J$u{Z*t+~PeN22G&c3eB#s5uSYRZ|}DH0)X^J%ZB)7&q7~=81n4An5Z!D2>l_! zE4&H@PoBggfd9N1dIBZV&y7qWCM-zXMFPdT(w_B`&8l0d#tL#hTPo**V<2aYG5D67f_w zkcD!T)n+6JB$Oz#2f(R$dQtNt;38xayk4zS=wm!twb`lls-+!1pa}=uxpGh`%#Ig7 zx0S^SPkXd^^Xn)1Ci+qy4GsMr^i7a|do8szwO7w)l}=z2;=R9H*^ZUSkfnC%NQ%hl z0bs#qk39Sf_fHXg&V>`?c{p^ymvMs}CcmJcBlvEwAC&h%u)fbd7y6C7Psho-lq<_e zAJ`M0#1BRv^3s+Ul-`PJ8_Z}uTIqE@^vT%qui9ZBtU9@ZBi~{)JEyY4=+BRGjhaR? zXTFjUkClQ1!_1qG>+>Y+MXTHT)hq7ISbtI0&O}>CVAI-zZd_o^|s@pgSg4JLp!99L1O@M%3eD{i#;Qjx0$o zOfuN`ORnfkR)4=ROI)jaW+3ya+;FP;JGFRvp4DY;aOSWn4AMrn{Z_{+eS&M zCDuef-6CFJoS zwRdhO2vn~(j;RQ~sj2xTD_ zcGY&9Mc}`9I$UC7lPjEWA9&5C()Y^bC1i*usDU+rSD-q}g zZF%drf|vT$RR!jd!rS}5Y-{>agWfu50^ibyXubJ&O!jk1bC@dqM((Np;*rJ!77cAP z1Y)hEwLKEpNk1YgeV8?74;0)GfQoW2!#P6e@Yd%B(%ZCBwd1Doc}Bf7H{5x@yRY_C z!-`wfRuQpcBFs-2V=luwxrmldGh2IYv4^nvyLOq(Qpldc$>^$%E%eEFz@hP{d1>fW zvKjs~n;ObYk}tiPTj!~*hqE2h(bUb&-^~T^lCI4(}?h1Bx)|GO;40Ghj5reb=2dZ{} zBf;?n<{ctt^D`p3+sh-rb>R{c0X->_BDs872dxl6LcXhxWJ?J9rvljq8CB!4SM7Xm zocL3eA~b%qK+9I+u~#aYH}l6rq<6b%oKcooD1O|WsmrkR8>1RpS6fZvd7+hGnj8Uh zMZ0(tF>>_%*f|F3Rd2!l~LU) zU{Qc8DZ|7uZpz6S$T-e14V_0IXXiQ&mFz~_ERidMGR6Uylq`3LZ)C#YTT@qQPqaak zE*1gqamu{VBa{sWvu_ZtbD*Y12#STaF*jrKvhdU~B~PVFUwJcK5cRdu*kLw+>&f z4_rF+&@J;uUj74o4TlXY?qy1`v$c>46g5UXE6xBPA|c0x@37TTOPG#~S(RlWh>GoH#7icrigXKc5RktYO++VyQ&scYD- z1{Q6(I79jo^l=TMg2G_{fz^0%?1jiqRbiac5->`093ANIUqY1<)7av@D_UTTDFyrx zJJfiS>cx4COW^y21RmUfiiZ4=c`^8qpmvtO_EJkgN4t^Hl|NS{2N((LalKU2t_Z?&Z5XyY9{xc zx0@shH7!Z=Fi};^v^~?^g`TU@p{$H~r+9=^CHGqPbc?+L=Q`ttOlyPGMn?Ied^@Ae zOlsxd-(yK}6g>H&;Pycl>Kk;`_{f}GplB!AGgVbY zl4ctXC)7Q>qG_kQ`)qPdoTdI9$~5JBUYT-wLy%R}BRxU;wcSrCHanJW|51smBOGgW zS|;&G285s6r%_B0-q-%=w=IbFM+@txL}_yROWnnCd&SG&tn|qcws|{fQ0-2QflJ6X zll>#*edDoo@naH4yEh)vd_`gH`%)_Jq?c6$@HuCgS1rb&JiPH9$Dfj^>5#$YeG=ldb?I*$5 z^rc`sLpvaw^!TyDM8N|+f!x0MY^5B%>N`=ii*Hba1_Gk^nm73Rk>jH@GxHhg>D`4< z!sd!97$(&HiSO%H7j4iZ@5TQN3HZJwDc5@#n`zh=ye-tf{Ja8R#T-;gff4t4qvAc2 zwmtfG;=> z5g*RiY?i4&SDE%AN$X=ckBPd8C_nM19Jc6d4dI=C6d~;+KDvv=u{&Ztf<=Z@AVX?~ zYBQ(LhIb?Q`!Db17C;2LEJ^w~ftHvC1)@32GPYhsLAJbM?)bMsJ#7w=$RzpnwwX zPi}a7gn-7RTl}XwhHJk#TE-MT9=-?tiS9Yr4iw+NW+WeCazc`1pCJhvUnK z^Eb4H-ur>(C(jYx+Vox3|eosKc`Vs4K@yi^#|zVsW6R;RARah|8U+f_gv*MDn$TN51` z?0&EG9~7YD+j#02Tlnzoy!F>G8oELgjriJ~B(!E%bqZj*rnD0bk93Oa9DzGk*tp@^ zsp(@sLzU*pBAeExhxY0NBFJ47XF4_+WWSE6x&dKu?$1I2`SrGtrr0D#B%4CTF*8u{JdnI5Xu71Cr4xGkPE~1ojOlTn*=n1EP){-;9NgR ze!Ep7BP;s?)M#D5kg0EP^#wy(zNZu%UX<}aJs5c_S<{N?(H>?DEjIUkw57RO&Dy%+ z-f8Ak3*z<%H&iB0F!IZnE8=UDlKLGKyQQTNyN>5zj!fI^5(Q`UsF@bF=q!B`7}!%} zrGB1f$RMv8V-9(lLitmQ@~26&?lI`sz(0l^j*Dx~U`?F=o91Q%_1-Ixv33dINl$Nw~RiQrtCnnjhZwQ-V5w>Oys;Ev6kIP=ozP( zLmj;}cbF{ZwWRZ+E?4CG+tdlDL1k=B@y^2<&jy3ya#A1VGjKyYmCE*%sY{@apZ=!9 z?^F{rJUdk-YDQu_L!E60GwQnRx+A``NU2TK0+phY&5;V%n3~-U$n4zQVx-B-%CQQ8 z)wuPi8ylOhAfsNeki@;t(q+%E0>vqd53yAp2HNn3R`{Of+WTK19Sef3Ski!qMq(l zXm>&TkR{4=x9^HWw+FJjBzg1X1V>IxLoJ(1a!#H;*;_Wv3PEJfjt*QBtwzzDIg|dn zPbH*7rPghhS8w*gmoFla{jV9V{CRT0Z&#lbd=3*GS+c!{4P4fOSm?fy!})#g1MU6J z(O>qn{TxL)|CB_LA3cW+aaj)N!hLJ zmiix{uWZWps$gUtz!qMBT#v-omV7@KE)k}xBhk0%qLX&NA~{2pZZgnc!Ht-kk_;M@~MLu z@v2;1jq)dPg*Po?M*14*+3lxaJb%9G-dy&aiGzpJmA74RpgXA0VZuf;x_vV@+ws_( z=88^~Xx!VK%SlNc#}@_pxm|y{?>}OEh76Lz+=Ryy7na6WHmt`kiXm6XEW4AA0$1Wx zbrt-BLg&m(>oFPXj`*j4<21kknkea{jC3AkKCM$BHKslN!%f2>|5#=w$LQ<_GuBHI z;;wRqCax60@9;LN69rw`jbk>BEZ<}U8v&QteF@lH&@=v}YtJ`XCo#2P$>E_}#%n&Upzg6*#MQAK{I`>G;oaP3i<8#$GLsE%JNG;XHc@#9g-OD+fgTB?pJctF|NI|7Afmi1#2^FF4idbP%iuT~aeJ z$T16`v24zN{|5a&J-!+%B)v&1+E?U=h`y)(R&^m`DU*ZkL`_e<7qw<;M=MK!(gp0) zQXl-O^C!S$t!yug5zNgR3Q_)Z%>M6K^Jn1w=dTFS0gVYsx;zocK`1Hm^l1lgt<%U3 z>*K26XV0E#YH5wmWUt(ck)AkSudS`kKavVFb98)96^jOcra3&ETN>qGu) z+?4^S$X$Nz2Q8`l^09{{Y;Car)MNb57ymCul+ruqJtlGp|Ld~u?{4NFrC}k41Hg(Q z_nh%2ny}CtfoL4{*R;nzi;_ANCV-9hAEC)a{uE21WuiiLYm(>{{Mc?KaI8j z|KEUUniH=B2S@D1KAPAQls5yddYPZ>Rc`VPQT^<*iO3M<`*qamqT$;~hB$wbDYa@wLo-6#Lx~S`!43@eUw7Z601e1g zrr5g}bjq1ft7@@YwJ6R(!6jtAI!H6WonGW2zB5MYRLZ76o#+J|F`%AqHa2H7o;sQC z@a?o>NN{kllYp&uPiHnOZn$-@-73LvKy(t2C_v2uwD&xaR(J`hj;$s7Dom6Z#0c73xs7*sp9y3Z)M807)2(!i1Fd_Q5jG*AM}YCEmZlO1sC~z0 zXJ-XRN~U4~CoK);gA;NdFEE3I`q-pYOG395`s)tMD<~=srFO(<>gW`AVYtMB4SU{U zd3lc85Jh=;O~t|SWVvTo+P6mw_;tXsn9}HOJ3O^+-ySQnDpY5_crpE2VWUA*RHner zW_OZIk;BwZXGt~FKdS!8J{ zF=hT)wP(+r`zTQjWfv8di_+1dyY-|Da1%a&Bm^>)qb>Vl9;vyFEBHO>^Qq#~LtYU_ zk-wf|Cof!tecMxr6);RN^o*f;i;^%FNJS8709>?GeJU@Z@rE^K43A-`8HAX2b+buu3Lm)g| zJiX6qyZUoeATbQ4&0Sr+`HEfPd1TK^Qf`z2geWTG#%7&#!#OLG$+Y$|Ly%6a$_NO- z)*E=No3dZ5id5d(`p%ryl@YpyvJJNGN5i@4)zBQGHHPUgb|kZOsm`DtR8>*r))+i7 z;Wr&VVIe5arP&fASWZ#Ai0f5^CxNP~EYW=)X;zBEETWj~2L+wCc50EOU6-~Lxe4Xm zmHSVQMJK}afU%3hc}fW- zAGmuAZadFO9`rWk7#63>LTWZzjh3D-swJqKxwG<`*m?R;i-|a+5!=kcev@F-%8vjk*-ftnSbNd#XO-Wc}4u^g}sj6cP(8g z&C^l3Z{%$??Xo3g43H6Iw^X|S$wn~Q^WzceYk}2F<#dg2KX&{aEi!$a>Y7oGD-S$z zI}e^+gbr^R>QV&~Mw({w8KGeaM7_;hfV|T=tjf3Q)~IB~L-k^i#8I-BszP?3DuQWq zXH@6x?$2atnclO5mGy%D!QWY{cvpW7P@SpsF zy+~rfLTDm+9{eMhIk{U$&k=0o%0@%+Y_ffO!*N$iin7s&+4DlnkL*Y7z2=>%+EH1N zN%)Rvf9qwrLPnXPMHHQi*Sxr9cy+y9oG>IEY5~=aeiqio5iU+HO~A>{ zm9fRfi&=dHoTm)n?mk*&6<{ub&vsk6uX!iZ|#}#W|He-$V zcFTmSu}kzSPm6u7H9fC{#+po+Fe{rg<*Q9gO<7#Di03;zE7}i81);}$B0)Dzai^)2J2m|{zCScL3R!6l?}#5{(S@ zM88G*v#~0R7$(55FW$gBhU@s*=%o@q^c&^XY*g^29dhQO;I%)KZ-30vg|S`c^n8MQ z5XdxhEeP9H6VRO_p=7mR00{TJnxy4}&NKTpZs6C}CF<1zFRr?)!D92x!; zyZt+Sh^BtUG^{Pb`p5%EvspBFw7XKFg6w0Leu;{JNrl`k+B#b)?=Z5L@y=~mS1)b; zL2j^q)(aIn{GAEkt|BY_KD^7jBVz(+Jds`R8h9R)tAXre<#b(r;_jR`KeM`sxcBIe zcCZqD@s!qrDb?15*?q}xfsE#JMPE(ohNtAQGZAo2X$6Bx=-kHk8-=A=vHUatATKp`?ndUVV!apbNcSE@fZ@nFP z`yM@V?}`1UfWH5~I16qY2b=}&6~-!Cy-GK;C8ki@iEwnS(Z|3TfyE?Ji-iyBs=Zlx z)jgJLXIVY4-xY!4MJkV8iT;t05T$Mp9&#qJ=C~IV<_VIhB6TGxpW@saEODfgayL7( z(svquu7Gsp-QjCe!%&X&8;1q$Y#|1Du9RN~dn!O5NQK~|<@Bu1%*jJ$XyvE*B&O)< zd1xou&Xi|})W-AYd!jzf@z5^uO=!=K$wnTv6W0rPNqU}tEa1=|F zfbAP#+uUzGv1AWOGkN9pM>m(H!@2Y>i+g=d-*$H%c80J$s(jYbPjdcNc}}5dLj|D^({wSyySrm?``_C`6ZAP4l5O9nL-A40ym{B4GnwJCvtP zf$)e{*dB%22nwMA)T*iJZR$6*j&M%uTPWFQW@|^yqZC^=wpp*%B(xUT8O0ie`WRUR zouX1tF;*>*q2YXo6#Q5yQ!UY>vyn6Dx%_0~JN6PZ&T*pV`RTX(X*ig{Vu@K9#d@lJ2P7kR4XgXhx#~8uTAB()uU#olta1^wdsi?SsJVSxa z-pPZr_Egx1Cu`dKY!v#c`qHNAw8T@Z`D_|*2>tX23ZF#K5rlQbWNMFp|l5S)o*VTBqk%cyJOglXrTTxcV zQ$)Ddk-Gr&Ie=P0e=BX_@G?{pb&!(W237P*X zb+DHD()F?$<%Z=&+9(Q5k;JMy)dux2Z^WhRH@k}}9k6>3lbLSk^W<`KpF7hnk0@z` z=Gza2Ooy+QvzQcX#uOdjQ4WS66jgat$8Lwehh6$UsApd=u!`?B9y0?_ru44ume&6NPeIGys_pbfMa`I^*iHH<*f>E{gsiaCox?{tq zv9Gu0lAC&bx7(QDG8=Bf=BpR2E6x~B)z%ikb!Px>IEhD zFZ@+}}Hq1+l<$~Zmsu};K=Wd8dFt2aM&8pC#Ho5%edj4Z|i)!4S7b_#hJ z6@%?I9gg^IL3vG0O~^~3DcqxbNVuRJFu*}j!D?;J{CeR8LJh-b9lVXup9{IQeuH4i zJxCPGlaO&U&aFYV zXJ?$ZN-?hqnQBGf%W z10G*XtZ@C@G-A;_L&N+o*WztKW_xLte~io4#)r{N>x>Mccdsk2iR&p8ZhYEYBYdAi zFLzsfWz=r*WESHzxOdti-5v9FgnuMh(t6I-sV5?@Ri`lF14V8wCW4L;OaS+X^I@b* zn&!K?)60xbrD$O_>eS3 zCvC2~Ec2}kSugMg)vps zdE=UMjq{M5KXx$wC@E>nyUQ{*2-lm{v%ok{LeIy`tHRXWtnJm=hHtg?$OKw<1UEB$ zzveB2@Rz~(Bfp0LM->uH^vJ&o{Tv$p0k%4PKd};1s*g2v3x6I=dt<(8r|24&KG$Oz zoWerl#6tta%Z|*j<@}M@-J`UwJH_XQMRkw$1b^6nZn}PY>Dp8>>Fb!_h!vdci~fOr zp{>_YB81kbYul-_7O+5E1-80Q0jjO zZ5?r2oBW=wJT_Y-XBSb#@5p-9dn+pKjr*hgrO->Bm7%eZ9H&!T6bBVnURb<=Ib8k( zSC!W(k$#5T)<|G_2$llT8f>{E8yiFy$}Hl(dgbv_vZAeRoDHI?rzMIKAtotlL`Z(t z0VkN%Y%TWbsnGI`wr}EhoGB5Xk7*OPCrF);)jQ3#$QTw*t=y3PeUhk~1ef*g?f1gY z@DRXtz3|p)jWyr`*Ly|o8a3|9m2-ud7pG_xEiGRuMLN7(c#8&_PJ8vDrF~&Wa~%ZG|Kwa3PV?bI;5(IgnD>D&3oDDFzJ9C>ROR=1vE?aH za~Qkx{??zrGH|nN?O$2|{~Reo^+&C5K+-_m|^=+2&A@9=HChfDMOLX#)g=zv-_$VJ|=h&O>@B1?ou>|dS&T7qf zW$8zkU5krZBVi4C37K!V!ve8F>OIl?i|gBTAv8JfS2@nqTxS6b3sZA6qJLkL#jId| z(fw1xs9fnfN3$M^-2|bfgPDm5WTLaoBqlAnyxX^j6Z}1eF5BEUTJ%{zzj;Vz?xly$ zPGeI@Z6!hZus>aLIV7i=^4Kx3x?+|-G6^+zwb|OyrRBl55>#iE!np8HK!VfVf;8nM zPWlm>Ls;5knX(@H3p>L;fLdMo#v8@ie)YyzSy=&O69mwU)sj7e=C@hh@_g{%eR~KD@aK#$Q%)lwFR2`o-d9n=&01ZNw@dHdj-$K_f_Tfisb_qLuc)-<8{ z6{~ZZ1x13|68meCfzP^Qmizi$K{OjmCJEZ>0F6Axx|h}U^5y!6Iy&qxUdVO?&Ck!X z`5rzzC$TK?v-fR~oNs=5jrj;W*>Z5xY@zv2vu6a71y%fmK3DP(&efVf0 zaNS#^r9}z6=yaNhkLrX#mann1@4Z`=MDIJBO+JPB+a&YAwtCo>x}wd;_=luO)6rw@ zyY@VmcJV7Kv2)SGxy#vjtjzBcp)*p6)dzy|_KzEX?*>14h6KpX2DcWWonBqoj@W8A z`tz;%^TYu>CdI&vLfI8O@tgG{7rqOL3wT(>3G6d$!3QdD+m=@ZqCJ9=$e| znVAax#NS9e{D|!)fh5V=I%Sq9$>z;t{}{$>DNl{kZWf|HK5GwkBHGaX@eq8Ixz3E3 zMC#lzciQhUJh}Oo&=(+|XD$p3t=wdJj3=v6FZoHJr|vVmG2Sk}e1M;*GCX&0Qsno6 z=&yh4zgEpAUr@Mfs#kvU`tQH@+fV(0iwb^KAMfyy6z z_vPDv{i5Gq>90RLs^{_1Z_OTRt5!|p-Ns^;?5pC_sR;!q5v2m6x>zGnHo zQpRsje((W94S0n9_RS}L{R97Y--B!ZF$8QqLdVC)XN-u^Tt?pO}4&~+Dy?5_Ea3dLWm`U}g6LEQ^6vZnm zCN56TfAQ9n=esyu%kbwkfr@+oe1rbWQ#$aTbP=N!L>NL<ui^2NzX?eG4K)7eyaFf@CK@0+ z6{xudVk^7pvy>A0YHHomJmwY_Z9tg8t9x1hZ+8A;O8Co`ihytO1u14)+RM`_qRRII z86NYNBBze`9+HnOB1|@2W$8KBaCfM2n z3^KU47^2;?+&vp4Y9CS1%j>+qze&6eWfJ%L00zjntvEi5+;VgL)c5aKfW(+)&{fm5 zN$HTt$m@{7?67YE5%+;z*g&=>ZYU0@Rxr?tdlhXhoHaRJ^qyj_tE;Otu;aHjV1N6z zI(#}71iWm30{-mwkP)?!5pzaPPAFIksG5C%yhXDlaqpw|`nL!Hf8Qgd&7SjdSAn$7 z##SF(+jsiGobJ7QsX2iZ4{PV+qk5D4A}9BThYjaOKd^^tI(X-jy#p(LVR0=Uqc=+l z->nwzYHQQ>oe;lE+7F_xV@_kX?$J-3e0n-M5bf0#U51O}!b;o~3wJ<6G_}3GJ=J9H z5Wn+Wf-EUf&up|P!`uiI3`)qDK#*5av}KgVR1 z)G_4F17F;{VuFOvOqjMIKi+k%lES;Rbw-{lM~12_kD2b(>({p+dAYe4aEGuICl~E0 z37SB&|3+V0cJ}y+Y#tO@bGLkNPOrTR`vig^))}EAPIXGEE-l@C_)z^5bZ3_Yqhc=Mkh)eq_xE3tB!+lw&tsy`Y!j1&j!E%m61d?LRa>oR0r;^h~dUI64i1Wq`-f4Yz1To6lK>Ojt-hN&iS0JBK zNftj8g~_WWs9H;^2afC;!PV7n2v!)g=> zoTf|tg{I$HH9w+pAU{O;&tCk?l=9cf>#tuC`bZ)t_7nybU(Q{;cuC~G_h9zOLp8NT z-fry{VB|JCG9NFfGs9E86>{%{h!o)^z1;_(eXMk>i6`v&bMe%U{Kqny#y+G#)!VZG z^nt0THSK>7;ISD(kpl26)O{j~3pkv=vKcKJ(eK@?EtgEM28u+iYDj=5z~-VX%s>Ml zN1<2T!rQGv^A29+Cr>_pYiMX-5ZsmnT!xb_JVicNu3jCGAgH3sbqUy^T6sgm_?)pI zM$z_BL+^F7&}u`YZdd1dg6ZgKhTGlV%j+)Yc;J-boLjgsWHH*szswh=yx;TLM6P`I z`zhr?c$_dC7?GL31(JoHD?LpeHK3uKQ)C(5&>Mo61Nu(5h%5|{rZRbXorfnvjtQng zKojjg>}|qrg>KCMm+R9%*5kUfR0|$o%||8QQ^)2UnWGOkQ;dkptntA`UvlG=(%0tJ z9NGXlqubdyc|#giRaJk;V7V)zqRgyKtA{zRLxO`tp~5Zj9OI+h01E4!_4RN-=m3QN zqKfoHm-pMtg2SEL^}u^o*5V!IsZ-Q(12ACDM==y5LUv-|nyNVdQ|sC)D{;5U*_;uB zA^^R-j*QMsNz3j_Jt)`pjZCDT%Z{b<#Hi#G6BFfpB7oPyJiBo7E$o%?_7XqqSXGT2 zFikEsuwNv&uZ~-h>?QZhkQAC%+cJf8+f}-uLUQyt zKXn+zDT*bktF9d7G83IX6x-OZGTUSe0|r$xBq<*g@AC@SK!E%Pn;RR8L~ADY}Am5VOP@_vB;0k9_z(B1m!? zA{0R=w~$hMcRuSmgGi68Uc|xF-4Tkl_^elI6Z-YjCmEF~G@7ScGvUnkrZ&EC0yIly zx@z8DqRKeux{wgKswJ--H~e9#|p@X{HQHZ4Cf3n(?J3eyo6 z61x8}xpJ(aeOUmk?HFa-rWgU+kfkNMC?Ev5zdLQIQ)r$;_O|x>n>OVbAlET6s!JM? z1t}f(4n0|6FXCJk5Rf&{?+wJ!6aWSw6DI+V@&NwwO;(l(?jE`33yNX*{(93V#re(+ zgu7%jkl7kb*8!rQVwmA%4v!kg;~t3Nf$cTJi`}L6%zX2?_$VwrH!zaJW)pm{{m84! zUWz+;@F>?E1mD2C9j$=Ps|6cO#X>1*dla9xArwWPk#4zv>K25l=2tLy5Tmd3kkJ(c z>)Y^hK{3l`r6_HIDQ5V4-LQ94F>R{_dEp0`c#@!z)wAZDQ~Vr#?mTbiEHOBrJCuCJ0rh-n+_Bafh@tVSVN_*($OxDT!hMxrVU_sWQ!xsV+p3>bv@W zRT5RcAh{cIx^jDm^*)l$0l80I@SVBvQ*LTwrqeEyn9cLubW=u=2Q8ViiYb}B>(VFu z8&zUmmipzZKW~!JcGo7z@T9`Hl?*515z013_wg(5&rS`p?3qpEZS<>mDRf9q#9K|FMhf#C`iv*P+FJSHY)!Kh~8?Yu~3rO)U8kF@U$YiixPRcRX)P*D*Tuuudk zO7EZu2-15mN|D~XfQX8S0#c%w3s3F8+l!cLQ+QF%OsH{pO3#G0LMhd^RD|lv4-xslVWp9 zK#oe_=+t3%K!|T9`7^>^B;i&5aaV^h=Rrk*jvUqNOyYiZqJ#s9ONt)?zac>D8TrYR zQCzS+`GxKT7C0Q9H8me=%n2Z;Rl0bOmYLaz<(K2+l=h|hJ@t?fm~0`3Fg2mDYC3Dp zAsndu^_dN%h~tjcYz;inSn&1m!Y=!lyFbSM%#Yx5^D)?$56l-}dgl3vgK6yu>Xa*V z!wKiyPQmb7FwfV=ol{nd1HZ6c5p~Bhw(C?$yAz64IyR3pd3Ok&yCtr~EbftV;5_jN zY54*f^n#*e<`QS*l*@VffwbW>{23{<>4@mXysj-D#iZeSKATc(<(ALV+t`E|O!;tv zIih}EEhaLX`;$lXQGY>WnQ6C*jC`nOEd6KvnyrrwUB9|=B*+7scXu+}H?j2yhMGjU zraXB)?()o*uwj`WhtjuPKgT{Iq4SE&MdJ%<=+WvX2`+>BW|k!;y7NXdIRTn>5b*= zw+w!Q`vt6}PIJs&UtYv!dZ2Y`K+TSOzDsVwvVed?Yma<;@?Y78A3?AZ`Q`N^SWqX4 zjH~x2z}WN;E(W#iATx~yC;NxZlDRlJ-K*V;Bg4Z_Q70Bc9H#4~on2fQIXD#g?Z(+p z&~S3YqgVHl3fr~yKuv?&9}lT~Kt#IbP&I>DpX&|Jhrr}PhuVAq8Q$X9jvX~x;)1AW zF?q7GynKv5ev>4qbE?+OO|VJ{iL~zifG5#;&=FJ3krn4xQHp<|>lXONcx2+}mYB8T z@;IOT-Me?0`1pp2zu5TWbZeY5y+40pq7`yB`$baZs7u-#i1~=qK3T zRMM?gBKhnPjocu0VAeP~eOtXPZf4_!zptu!Iiy!9rRKH~NGRqiY!Yc)@s9e+!U%6I zrDQu1Vvb8lc|W+yQI`SgUagZJfm?zru0cn)pbP~lQ)%IAysmX&2bM52*eh>j1fzAIs@*kC>;kg!aFJYzGXlI7MVZHbw4KF#0zS{75x?oj12fXjZ46(Rr!Hu1OQ~4G@`1- z?gTD}2C+`!UIyegRIAwQX~&lRxg=U#<%E5i(!^GsewF>kw`MB&x88~yK%Uc<8zI0K zP{9e}tN#5wHAv%#`RbVZe3W`C@33@4gt|f>4oGZt!xC)Gv~^WfOiFo{jdgJI(-NJ7 z%3_b|gzd&Pc(j4!N(ZvMUklyU1S(EnfmwqjzwOwKDuiD)im&6`zW>pYfuL)Nagjf5 z?rwW2sVV2%Sngl-M}O0F#W0_RsT*?fVV%ED-{W^j``^tjtZ*DsB~Bz)U1Z|Wdvt6` zifr4S`>7vJKSfWm+XE0V*j_=k4$^7`heYa_gL*hbbJQ6$gJc1C1Nl!I8|2>U-uD=qrFM!}ioK&<>DF zMDF=tjERUiqdpAv5eWK3k1b3`_)27(x=diWBznu}Rsz5CD6lnF)g6zOf1OhWX-d7D zj-QB@VmS@j(6IgF0|dd41wc0r;9eZ_aQj5;?ME_)^`H(dnBKJa3hF#cmaK!Y(aGhE z+a7I?vsB_|pvy^)j$_rYYR#8iqu2nuyO7xj7%Qj7{h-_fb)e#e!QfI?rWvO?brzV0iLZqf{hI zK_}AE(!Q>iWw!%zkF=$mway3xxIt@vJGdSu%I?3{jLrlaz!qKa;Wx_aeH-@C{*q#k zzr`3h;=Pc3oj7wGmI4?-Q_%uhmE+?OE!qtNn~+e=j-lR@dXuKRHOpBNw1}!{Zzxf*>WAd{zv83-YUL{~gYK;I?J5CioH=%pE5Beail!g_#D^3sGNjLv87DOI0aL`z_73!w4nC%| z9Q}Ih@d@Rv=A%tG@6Q>F=t$d&-bp$iCS_ml5r^o3f>sGjmr7{Gn}L&UVxt-wc?J0B z*);AthUK)t>FrB0#@_2fn`NCSw#R<^p-H9gDDU=;4(swnfIj6)-}||ovb#!YNcF?C*$fhiROu!EUCwppP2*{*)X|Uxv3~O|%59ukX5i z^k~vo*KO-BFQpsCb!c#%Df;#`hQI?@j#kj|DMllo-4LWFqrL8%?5uiRbdT0Wcb(@_ z=Bj8bIdkcf&1I3tT~cRJPeu(rIsv43_=Z!HQrOXmP>P%jlhC5NRUmv1EoD4FbsdD; z6l|%4tLMTc##Zm_-cW_Nfw@k%?Y%%nC3Zynr(jk8C|#czI+Vq{ksYOGUSbiqmgz9dN`&(H2Em8WtLK5&< zA(ZTsTtErc6x(0H!VMC($a>$Jy##@b$~<{k%_`@9a%cO!==7w|^=H`m`4Ar>0o@@Br zb4JL%dJATj=SjNP86j&N`L)F+{&E%*s%_FI@Gu(it3f%n2P->X$Y$DY`XD8e=(;+l z3YFs-AZ|6zif|()CH)*oC3aY47h19vhTjJ&#)pXCd~!^k@v3QK2Roux_KFmXBS&|8qV%?9+MoI60*@{<(;C7!p-4*xo7L*{-C+n- z3$S2xy;;f=P*B`}>`n`G_B)J;YP9!qg#+qAdmxoK8`iQ85J6v6RqcMLb)@+3q}G2X z)?=Q4bb3jDL6P>Jo)|Hoo%oZoqlW&4O9h*?O9irjWz_EjFaa`D%Z^zexPExp|H<~S zBuP#e-78yMqgHkr^VyZ#Uc~G}^l5w&eP1g0tshr#%dq7Ja`JxY9Z;N!kV}DJBZmG4EfM>8@Ae#BOK`+3Z9P z+=1GayCluk}7OMRcD%u_})^D?@$(6&DMZCdot-IlLOy$lO~pA6L# zx;tmTwzjtMQG#$)S#(>&ZEq^ zJG3=41P$hXNrXDAaX#ic+J-=ukFui#*MOQe+o6fTWT&m%k3@QnO&G;0$}W_8?x}l4$~SAV!kCd+9^cv zYc&|vU6vwil^F6UT{^kR`e0-nD>N}ZQgV)rPS`cvsKob^Cex*L z^w}%AakOfaqz?531qB)oee4l(k*%Hj4p26r2NxYNpmrGhzqxSR0LNab2QUt@cow9^ z+EdVRSE2i#I`(*!1RRP^0?m7XxPl>JVO@oweXZ|O3Y$!yZBv=LP zBh*#nnlT#7iHTjeh3cXrr445nCPsFJj?T`^@;h3dmaW!fJGt2@(V&km&Ut|mGlk}? zGE`EKj{%N{6U3h<*oFiALY53Yrmpi?PP0<87~k@AMGbLwd-I`C`%^5U!H&pY)J}>Rw62Bx%hrR3n2}Qi;X^ zm0Vx+RnKMP_wPq$cWO<|Rf92t!|lPXf09Jv)Z(L86kMDtq3VHX2LsjqCs+J!S}U+- z=H|LV9N40qobXSdGR{|I9v=CBX25^UH~jUpKKf&vsM|Ll{VxmQR~!of>DIqs>h#F} zYv=#JZh#Zi;;T;F4E$f-!DXAnTE30P^X*@M$X|Z?!xzd!KrJ8ju_N_2Pw97W&=!A4 z=NP9m75iVl0qPp4)Ylbr-}v1){rV0XOPB$jqr_cS=a-^DKNLt4(%C?tD%twh zhPyY#yQ#FybbVP?pnp-zMfa}_+wILGN9yY+8(Ke+1asg=p<^|VbU*1O1&|& z%n;S@k{y4)@83>9mLM=qSlWCoV!wKv=H=GSW{F~l#$6QgGE`zT`L`Jh>Fg28;KzibG&o6sfe(_uaB9#GIA`+ck z_6Y1oGdU-SiAh7kAdq(cl*H=M0u~V-Df383E`~Nsm6St0WvOtd<`My464N}!jQsa28bF`S+uhgqc;@pBl z_LZMKlhR!9R-M1q7rTe|JRxfd{JoLW>V18iq9(h79)@;az|r2OznjH1`% zcTn)DRUI(cXU>f4mU0hf*53IBU7NgvQ;sd}`7%(4kOT>UTX1B$Pix0cVFDAMP`|nG(71l3VZRhLd2g-&GAOS_4oiIG6S{m z(_ZQ1Q5^rf${WFKn@{AN-kDis1Xoq{UJW`K_9o)>26uaByM1XAy=6-TiCQLiuQsYz z#aJgC(yA0)H0ATEDlF_Q%{hK}>_7B2fofuTBUV5nCdcWz+30Qq-E!`Pxj3ket{*3l z3Z-8|apT*$m*!&)uK_2Ph>Dew2VR&j4LFF{Gb)RU#9mq`{D1)du|UTSXI_yW z>fZz>)M?i_yauN!fc)deskODGip;FqN7q^9_T%X~dmAE`dZ(Wos(FMP_l=B<$Xm%d zrI#E(aa zR(kRgzHT9*BJKqQe-GitKV_-@vr_xGkAhHtb`5ZJ!t(L-4=C3KjTkPx0#k?&-wj5R|REqr%W0 znVOy*L|d008}#)P%YA7-RrPL#qzAIv31etgm_H`2(5_YEt-{s>9?8pnw4wDxl zd5NC4X<~<+8oy4HTbLK&z**M`(>u&Wy_|lM2_pOaAq_3Lzv|ZmH+1w!G(d?uEX$ZI zmQstReY{@kJPsvIy=RxNL3VwuT3(n6&GmrZPg<#lAVcj4fsE!po!;wR{M@QbsBo|k zO)^qXKTT9p+{Yn*-e$ww^2MLBcC$jhZy~yUGX6 z;M5MU#n;ZN6A(RE@7ZUXrL)T(7i&njR+;Bgl39(Kj*i??(^kJJ0>ev>tax37!4;>1 zzEt7vJj_;B3syF;_2m}$)HxeuZ12hds$rd0VF=a$&|=og)ckmlRq8^sSV( z8IFq8cI;WMIq5{=>q?Lq|8^Lr(++i!{vP&c7=2Jbp@nAkH!9F|`89;7W zTITY#X3?1UDArwljlr;shy#=}I0v}|jSW`uanseTN^1>-JFH(UdH8SsbE5ob-h?JU z&94jUO_z1>w)oyAEJ#ZNP!uC?K}ZKItCZH;GtW4u_P%S_^gzvnYBTe!2i_e4jmJ>b zY2zr?$a zjGmpuM?J$45kQuwU&b6nuJ5R3sKvQ#GkaNFSjz8n<21917=Du>Gp~AxUrkXu`m61P z-T2CzZviD!Og<}|F7`HN9;f*1tB-4-Esia^wPN0)pA_x9XNDmuj(%VxYDkvw=~U9E zGL)E)ChKk{32rEg>PGu>VCv4ah_LIF=O;^utV#MzIgJ%I#EJv-l9u7xzpJt9qV7QS z$E9)Q+LH`pOX6>E6C4XypC;OopUG}jK5%;hcevjGxIjlhD_6V#jZVnG?w2lY2Hqx& z2<$+2qyZCLqmAVt6YHhrB0+MHy^wp$lfQCgy=W?3^P9UY_4}mc7`9<#)7xea7~2)X zq0mVG^uTpy8FBnq9t?H`{YjG~co#LOZ=TL@m9USXVr#@T8k|1;WutY4D`c(Cr0F5% zTY4DN&71nQ9xKf1S&6K5?r47aYGK9lPOsR0Iqh5^72!Gov!||G@0lC-=wNS9^NLq) zdzXC$m-enxbE{&h_qHD3c!#(mzj84=*(+h!t?e3G2DCQ;L9^7956>34V4k(d-y>L3 z{C12nI|-oMAAd-k9#U`n3{=Y5&$&Bn{!~RbKl^9`gwh0!xKk1-JbwE4TH~ABXjhx5)^{3s0$k zfF_|XM;QpG$^z5sx8|O(urvH8whEY2Z^TZSxa3Qu(Jm$EpZv4MR*CW`?&7*ze(VE6 zfE3fUyacSd=bQE`u`%)N6IHEzcVDSAZSo=cka5dz{p0KrIt|vobMet^CvaDSmotx@ z)5ulV-5waO7O8TmaOn7ljhp196U5ugSLqB4&CtCM%tDT*R>{9Up4O{VrJ2`xsXk7P zglpyL9&*50cW;zNQ)VA)I~jLrt|i+gyn|OllH{$d5b;C(M_T94CtR`hO@^AsMwu_R zzu&hHr?*Vv1Ta~@`_nQX+`ICi5r6gA)B{UL2EvfS_SBuib#+#`Ugrz!PEGO?HI!Ji z(++LrrW9S2+1K~Bo3)DL$Zn8OgS0QviOg!2x9RG=%fe4hK()tuudRoV%8pEUbzF@GEQr6_cjBj z=`}z^XV8b*m$`QfvuZaj?#$PrsV1A>U4QwYsz{aXF^=qz3+Z4XGD1aj*pjG`Po}k2 zze3M?v9q%BH(`WD zk`n6bmQLEcu?^DxqkAsZmn2U^#?J7dPWn|y$Jauh{uMQC{hNTTU=oTV`~j3A+){VN zqoI?>ldFnYexxfvJ479f)nXt5n|so3C6M!=Al+9J%_3!AZ&3S2O?N``2zH0d&wBpG z+d33xUGi2HEdE33j`sQJ*ADmIOU?D&@$JIEyvUx_xJl#J?&;!scRzKvbskhzQ!0&S zs_*`BZgP#o>ZSnv*APU~p?()v!1F(*{x zsbBM%yt4KDhXlt!@lh&?sKxU+3fS#YH^b&M#62LD(9dU!2AA{=uAK48M?515xkuI~ zn>XXV&;58t(j_l&0o9qOX_HZ%agUTLufg8%rm9=5D|))ytZ$SGx1yGh_bR4}5r{6_ zyUxt4XCAQoF0)gM_qZ8w+ZBV?3n>i@T;?$nt_vzseP?0bfM3{SewE^fm$t86ekqe* zIl`+oUhtG=2 z_|f5sg>|+^w?}5^1CoGz#t{bZ&1kI(%uYxS)xgd_1SKApmg(QwACa~kHQTm9d2B_M z4D6Pc-9vkIKVT?#f6u%hona|5v;vKp{~EXYjaji8>tJcfUN+0y*0qZrUlR%q=*#j| zd5Vun8#=jZN04>0_T6!Tq+)$CAvNCK@0posLs$BvGqntHY6>E_po%Ob8U=1D;W5q} zqNEZ8&@-UR(OBHyHSvdvg$)i|Lc=@u)|Qu-Z@D=-h6^dn$+_i>2F&Wl!2!qHBZ!O| zgbs|Lpa1W~1+&2{L3pV&^qr}{B(&K?DUq0jG=78vB!cFrq5ECgUmSbZnz-*f%tS>- z+KeD(_(LkPKEL{-251>x&KiZ|-N=vU8CNw+|E8EC`0;R2nmT5EM@EiHSDYN4Em8er znazxy&&kb+^70U6CBh3DrnOQ;+Ecf^4>PKuEHK{LyA)AnW1OzIbi`Z0q0Pj6D(A1# ze}#n3iykvXak;x9MVnQ-mm`9n8#ME)MIyOu>F|hevjOTg|$d~KeLmw1D7ubYQ75%?6}6+v+cE`;@k{LnxfUp zRLgGod%=QkId5tR${TYORO6_6@o?cUK`%<3cKlJuiJiV0z6yJL$jlKT)VfHflKBhc zt(nfWMNz#L4C9)XWL?J*L@}?bTWb4NF8aq=p#^+6&p9bIeYYp#Ix1BX-;7y09CUnn%&EXmR!(QfLU zVq^4M-xMnxto3XT&9p6|!ByN}lypb$)3zk^{{frjlHGSkd1WE!~2BaLh-j zXwk&2c3Mwe-FIs{UGt&O_F0-(qVwK#B_+@>+CO-g>2~I}S~-9#5-{isBtC`r_?64;)hFgWDKl zf~kQ%QYT#O?D=7dKOV;E1WL<#&hKhZg-4lN(gZ&V6e^0-cAL{dtdpyPb zw9qCWEO^E6qne60NHWx;=G0h}hfj7$=9a#!4$3yb$k zGT55WcOF?~$qdZT$1w%Xsd^aSY{L0;Fh@&Em}5wTZ0x)S<`UN_a~soJDQW2HQ|iQ; zOydD%x7({rH(O*VDD3i$@#Y5oYN=EYD~r%ts+u#Ckf0h1w}D3xmE$oUI)KivB zu(jiQS(@&HP^bnyV@*! zU!fPWNkYcH?J*$WAdU#+y8A7qFYO zEzIaLyXwH>Q)?iHfJ z-?;xMYG)q1QuJU?9 z0Hl0Qfx7u2(EG6I;*;-QVY9c(EcHFINU~oS`T6)LeP^c$dNK$XXkz-aoNc$HXd^O< z70Fc)ueHCPSnivKM~)Q8_4YTlNT+4L;Tv4;!rZY|7MgGuh@XboR0HBpx9H_l8Qici zpRYSIcJBU!gbc{k!%H@e!!+aLo~#Up*V-tlQ+lpeVnLpTKOO>_PkMZfg>v`PMybWU zi;tT@4%y*w>~i2&CY#J%CUt4D{1tbA-b4IH|5)a>PPL-hMMLPuS0bx-8*cA@DbQ7x zAJ0=vTSR(e?>lX7$B0RA#zed!f{*2Qc9@S6{G!KB^hT8d=M6><9S}&*pAmCQ1e8Kk zyx;x6d#e_TG>Y%UV-@m^2WRCR-VZQk#9;2qn6C(76ioD)ukYTGh6p~h5!uk3vw z0)7_V`+C}pjOC_4Ug|Cjz5hL}LcMhE&)FSAtdW^6i?`sld`9jl=O?#J*Jm@G+nH!O z;v!i(p5k$4?E~`*`eel`Pj?A^>(R}tfS4O8f#8wy-VKgkw@lZTW(!5|3kMk+z3#7pyAlyTLzjW{ z+k+U04l66$1N?G!7&V<|gWZI?Zsn5~g@xiEhBWrwerxcg-&F`bS(c#Wpfc{&Amx=k+)Iwefaw*b|BKX$Z1d6JX`b?Cd+@b=wr702qO0drV-?;@s&n?0c&?A?buB7%Pl_moST-5 zK(w7cnJL5{_b4}4G(5n_qi3Q*`SoBKV~(~*@CBYv#1kt8UxOP8qvn;NOwrPz1dem* z&&qw9rOfyJ{m;^Uo-(lNj_-Q!<~ES4|D1Sh>5x593hWFOMz&vWdXetsOK!BYNkKsX zPv8HQMZ`Y#>)M!2t-IPB1!mB^(tX;rDa*)mrV5=>X~=qAXl zSK3=Bp3utWb9)z#hu%ZW5yW!YI5qvb#NUZYa8y>f`fx8qse_SxlS)|F9*C^80bg^rGn%P;c_3Zf8x`Zqvo z1T+svy}2N+0VqgJ_M7Lu4uZ2a8liJU=P?*esoxYSEl?lsaF)1dZp2_;+T!Eo)j3%s z(S8#GyXxJQ^_sF$Sx%8BU5rE z5RJ-CS!@S1dM;qPU0I23go{N*Mddx+<=|F8@zweW(B`xvK%lF;PePN(!eo8G)!_Q% z$|KN#7ZDS~34P?#o|_%|PJM`oXsXUF8q>h3LPacUN6+u5bC%@?xRz*gOdP*WB}+4( znPMXHNaTl?E;Ae(L6auv+mSI4ib*j~<5xbq{S}Wq&OIco43_6yDa$l`{DWcysHxpJ zl$)UC;1PmR$ckZJI=gxB#C>#AansCwWa6ZLv50<+Egfuh&X7}6*-9iCe^OSYNHStA z%mj{?I}|xQD5|nhG`bp)Ml?K3s>dx|S5E7KreN;GaaDf=68 zf&z4AT4`GM+F>1F9`x=;fGwsIx{DuHpgVik>{yRms^0_o`>(v;GYTkM4+k=TXTU_l zjlzPX%mwaQH=LA5dUs6@Yhx{Q%zIsConcCBg{YgbmfP^_@U75 z=zL=7#qE!pGyWwV z>}Z94CG22C+Jq2j6K)%#Qa{Ti5*u8SmS%nj#i6^|H2!sAfqqpjavKg8QXCP`)Kyiz z8XQc1&Z6K4;}A+{urK0Ui#xJ;F8fnMKkW2FJ+g%m8|J_+yJtc@ERBGiIbmy z=WpO>K>nwMN|9FA!#{Ur!BFA@;TLhk=g*nZ%jR3;{&3Yq!DH{lUdDBsF}I}%COrIc z{rpvxRXF}!dYf-WUQWkfp(srHhuFt4?SxLlC0qLx&ThW{y?_eKvqLJyM?*8JA8zZ1 zIq?sG{NLYp9|wdN_R|#qII{k4zf~dzQJwPhy3h1K`wM&ubpI(jua+Qz?=doyx)O4F zCxRkP^Jo)Pb{jIRS1~eDTTxk2C{d`TpYL|lx!}GWG@bk<5`&S-o zg8SDBe*Ei8{F2de_(I<~V9tR)p8xss|8SjO-Jae#aQ~XuF8=l*|LfEK_pP{+fX7$& zk&T<|e;(?e4bcDp@Lwsusqjqb=eIApd**`k2zw^InC{9nR%h9m6KNEQmMNo9el_~Z zhD*!NJQ{|Z7|hGhTaziX%=`7nywZ0Xq=P)3v-$o!mXQoP{^p>4`FQZ!RSEwFEutl< zhu5NA_jIBy%x-$j*HY4rHmx31x7n-fJb5#E$~mTJc+{hJC(i}7l_V}bS0sw4Si$2r zsHk#Ga9X>5KK8`KWUTYD)KT7Dj4c$3!29eGx)YCiS@}e?0iGF=9m;1T(3*?jT|9x> z^V2NjhiSNeN>uh;H_}{XA7B}sT<%nP9P;0T_3wv7CI=>6AaSqx56Je131WgEi4ny| zsD&n`QlNcDtXag)Q1i|&be3b9y$pq)!X8?FxQIm3Q4wY&TPTs1^xUr|)0LCjfoN(Z zT73FC>zy4_B0^*6zU7>gwqeelYz1{Yuguq#_OTZ)Ca#QXY1FiRsd*=k7HOeahFo+J zwZu>*2kltZU0=97!lOj7{dRLK`;OC@-*C4ss|1AZKlpq!iInDt1Nz@<3M5+B7>mu< zj=`zSs~YPi#FwVY(dV)UjcO23#DL7g=mT?!B5q7pXO#P_YS9!WX3d7XcftfiNc4bO zcihy2%9#7TgF$yw3M*}F0t0U^R))TH|IOrZG&yw0xz%IvkM!W5Hxxj5x>&c>ZsA*F z->G@vDi*O-05xvwRqpqtK4(+v9cyNm4@P}>bYu;4c~G2aOvp%mb!(nbtoxxv6)9w0e9*PM zF>0r}ymPrXtH<57fsy28kk{};!OFal2o$**+MQv~(>rlyN&=3d3=UR1_!iJpxe{c9 zZ+dt7wZd{ba$w^;g;aOV>0qdau1ZEJombJIFSasn>Jiy4Pv|_`bWG+Io>=in86luf zukGMiG*#a0>tr`BYYE@o+>LePoJ=ek1uD{K%tvai+Kubl84D0TSsp$T+m~;Do@DvZ zp)D5XEDyWTk3D;JG|xrf@L7(xXkg%= zxWUaP58OV0p_qeP4@Z*nKdhVoHqlpg!PExoQ9n&g1Ss7+b%riC9bK=qe!ZUPqumT< z01jcB%SR`?6=UYmY@2jR|2X?-vJIJMQ~nLz`*?)_J2WYMNV+q8+XFE(4Es=Iv@)HX z&!k*`jT*jUo!1|mTnHOvUJ2|Zq+X-Gg3`^xZCebF4lO0QK(-4;p6C0gP0z_LL*Q%CfIX`nnrcsF#}=i@MqRbTGl{361W&WC-JxW?aW zMItdsV$yEc>CsXR%i}jSR0l*viS(<@mqOP3wYJ?BjNp6%y+tUURwFOirejF{G#-Z1 zDOcM>d%A{E6@A)8W}Z%`bWv*Wx<8t=y<(8P`D-7RBgarc2+mjJ%D_LUV}Ff2nV!k& zISKb?i)H5v`$m*uS}i@tq^a%?e?Fl+47T}^(3X4+eVE8tbx?b<_#7S~3@^}b*h;20 zLAZRqLhUHpOl}0pFHmbeXj!w`x2iv&UeyB-ECmu-c-x z*|ER2vtMQ!I4IDAxeJaIwU6(=TzrB(Ng+Wn1EtFl^+lu)&R<+};Tcm;QMXF6`)q%a zR5#2{%SYS9*Atz5(Ro3EWe``{3){A~DML;?3|uOM85U*aK8k+)49z3PZX51{?59>7 z*^=kF4helSMt<^y`ao23S0E)Mhxev3&XVqn=#yL99@UqYnQYbJf! za}}LHu>|3Bc%-wwsy}X3x=8l&h46|k11~K&Z#Tm~lPM~@>;yi0Hnq)vLhPs8;$LWB zTpO&{o$U;PpW+9~SCR*>?kLTyRqcvqc6@xe7!Q9ia>HTRyM=--wYd61bQIb#j0y93 z{dnk`z72m^?l2c_G`H%`0%oQ1@j_r#9>Gc0n>9~?BjNG0)tKaBQ7BnPq*@= zV*ihk9*<{O2gf;{!p6;fjW_l>d-yiA>>QuLvnQQv29yLlZa(#!SgZ>~P_r;pjvm3L zam1A}=+6dGxgJ}xvv`tF;-_prx1S<%bZh78(cUB2jOI4B8`l&P6vBbMFE$zb_<=8^ zKXAJ#vq8Im1f{fzLa=LgJv|E#IyS42>ORQ6Ww%^bR>|56&)r5p84whW%=G=X+$OAx zukyvd9SslRH?Q99blHTCunrR^qWPXqZ;3QcHtYnvAWkV9pZO-+J^wiIr zWO!9GO20@Lm>T`&){OW2%vfnmNFi9k2j4o#6gOdqTg)#$qPNIpV_QdZ+dqy!ICfAm zKL;sCzVMi8TlI~GdTtvrM0|$7WAf)=xg?qrJ?t4)En-6SGt~Ci&vx{|*x{HnelE&P zS^u;9+q~b>BW>+* zW&yx=n{%>SF=WkWg#5-X&m9;A1%*-DuDNA9HN-P12D5!;(@_$7O&#kw?6KA39vLug zk*3T|dx*F+HODTTopNaX(vvCR&)Z=5QpNVzqG8i!5hbejP5qK9yldW&^(o9#KL+N% zM`9W8hsP@&@onk3>yc!G-`}Krx7)%&APL&jOYt(6m1?2DnNAnwR=*^e;8v5&;|l>Nas-tN79jt+fjQ#+%vNol(!mo7&_Q=Jw0 z+qcenq)GhE;$W6c-&RN80qjLgt`kaT<86j!xo(p&%~|o1B*R(yaogIKiOPKE z(Fx*sy4BRzwRzUQ&f7^n`Xp+hm$PAm*@6r{LYH(JW9#p3qJNN;f0R7HechFrB|$o{Z+*`YKOqTO1Lo=o>(`i%ef zS|SgYHDcJ1O`*LnMu*PZHW%55!r|Dq<9Ovu0L_ARz1v^r{g-$jnP2(o&3&Jft}I6h zYrMJ(KW({@)IOU7DO3l0n;ve!M-Kz3N@A_$9;jQ;kB^?SZKXsm=8dmZ<@+8K^P=7T z{NkSsW(v=SHAJMq-J?66U9%h{P4bC(B@R7%nYQTl!QEb@5)|sxv)Hpon&?>W9Y$A_ zI4|*;bcEqeDWa$@Hix3w;pDwtgHirO*S>@(`(4!Z4!t8V+C%J^JXkeBBT|<9Mt9LYePqQZ!v1CFN$1YydPltp-2A;GS9j`w8s6}vp_!APxs$mk+lsMqI-Q8SEA}>zGzi9H9A{7vzD4ih+g(4dl8*(-}KI1S>K^erY8M4^nzS>ZT>=H962`R9M`BV)w=wv)E zX-+g*9q(W(JlOR&P~2Ufuvn${TBlueX`W3>LVdm7%9`e(?138}74PfeyEL`$p5A44 zgR6baw3S<@O$_h9X1l=$OcFg2Wkzi0BR%M@I0t0U#gmb~!yS?TkmlymAAu1-ISxleK?? zhwCmJeapDZbj?F-4*rkR^#}C+@F|OV7YCb-x3NgZ&0C*GlpEf4%Oh-t zOkDhx)#R|0^F;<|`<0sh5g~~GJ~f5Vqb%wR43Q(+aVO3vAS&MVG?VZ6-L6iavR)il zjCaK`z2s_>y(G>E}X^Y{&R$Ak^JT=xN_56YfPT6MnFdg`g{ag#3~089JWO$*ElRl&ig>`*To z=}@ZyZF{Q%X?`i(*6IEgInf|K#ok#vh{x9PVHP@vd{!L+ME`1t+B^)sqHg<_l%cVz z#`^ia4wyP-1DAIouQK>KM9GEnFq%e)eM=O1JT*K$iVh!p%yOz`+3Q_96yyya24*Lm zzodX~L9dNUMykTl<*YqK#FdKXeyW36Yq%%WN9;m;`%*{DoF#P3{S9bvbH;hBH?;?b zO5}yCpZOfW!%XD;AQNDavX|*xLJ!uP2NbflPI>U`n>?dbIRb?uyyItfvjC=bTFcAY z-OZwcxjtKweZN0MTHD$CseE))BmnuK8y)C-DlKzhL@0J~L1ectO5e}E6uYafp!d4; zd{N(SZ~cckOGJOc%C*h?-DQg1#~LXMH3_^h_9tnC%$Bo7P1ow z(E9NV>MJ_dZuRzPl@P7XLw;&O^&P3D2OogM*=F;-rZgWXH4Fk?cnk zEKGu^{No;$Oo+kYqfK{|wDw=uA7kOcCy%==V6QvWbr7#A4_FEy@>g5(^)4fyQin!V zI20D}!>8>|5%4iRGv29-^;{Mp1#%puM7-RSS0^rx*NyQ(So0rmLg`MOv7L@M1sQ+M z21f)}PM+ZR6u)vsl8+B1f#2ClmH2Tt8{-HMA9&w)+hs6fD%$pkg2L0rqtuQ#yW)xy z?(HYHoSaI0l6GT_dnQ)aLxnHUjA9uEg^}Z1KTF#6xslkq+Zw;7nBiz2>)%mV*jHmH z4Vy@vpS7EqnD%F}u_7vt47iKkn^9+{{ivK@8!&N6L1mYPsP|*CK>c|b%*l-TPVMUb3Ks>?ASPztIXrrxcW(Y%&klm%my(y4mxvPg z#V*xv_6*N71)ig$E9^o|Y_HW3hM!?hB+ecD{W1J&-wOz(S@Kxbz>twX?wlm?={}EN zrts+OH9PK5$XhP;?TO8(ph{caTq0Ez$LLQn>|fbIqU$p>r=yDrXv!Va0)a`#q#htp z4Fy8N!t0-?&z?SAWF7gAZLEF-4ivuB44qn{$4kvaz|OS}w2tLzj64I%^i@=HfDrck zr@NBCOLsXhzo@^`ZbISI{ynj+KB6M^dYG}-HlNsDqmj(iNF0x=Rx zS^#n&uYf94bXIn0*kS6%@sB_5$*>5fv$J*x5zBO*`T<5Sc^@kp z_V&&g@g8fNTTFC`iL}BmN;IeqW;57uLyS`izSy{H*L{{?`-eud<#mfNU-hIJuS<^! zA;t%4EJ?1fL&e-bNHN{jVrs0V<$UqDKV<5os8y9*b7GK{`hbq(M|vN=2FxA|)|8Mhrwi za!72{7zk2hj2tnx{T@8`-lONB_x{d5ydKzm{Klu_{n@u42gemaDi8pOc9P3L7^!@~ zA0Ialz-upQeXve)NoWOeX8?%TH(R&^-l|IDj~Myj*LWJE-8YefZp9PT(iT7Q+Cj>u zUsnh=6nx}S8LZg{_pl#Ar+@K5Ic0)^Pbh#(^04l`;8NGGiv57@VVeX~5z@fGWqklD zW^N`u(jylD?4P^KyoZ`4kI4l1OmYpt5%=CM;!VOIJ9kTxZPF3b1>IaoT?NL_SYuIx zN0xl}fMBlb39rOKiUgvn2^#H>AL3pe3l7)AMM^uxxP@o>jkqDPr4O18O>1?DpCfCi z$$k}OyPAr)e*Jn9{>zsK)|?*6UjKsgGMf+jm5s{l9G~I@AAEiDSpJNr%c>D94u5o zIzS>|`epjW2|#ncdBc*CnR)SQq05YzSlNqb2Xp{>R|$|ZCYM31yHl_6*!#XbXvNe! z^Eo{c8uKbXhlP1e&Us8B-vlx0H_}`us8`%q3zpbvlT1o71ni{Ook<8_%rJpaiG}e19{vPJ-$1Ww)*2Ua7vH7hC>vr=>k(Q zB0FqCUXIYR^)(uyZewGv?FkFEYQf5<+G-`PJJ!Pm#Lc&ZnJDIw(_(ZV35=<*oE+`D zckh-E0raTMf>;`wA-PN)V=t}o@o^A!d&Rv=%37Lxc&Rx&acA~(R)$inST*A>3XpfX zfj=+K@uZ{;0P5*ObZ~hi?p7@z9$K9X)H_PSDRBEz^A<+g2`mOLjp%%{k zgUrpiSAexLXbl~{Y>sG|b=W=G_baCPwvE!?oV#geZbxw17B`b}>*_}Bp8+k`E<~Mt z{n>&Par`N3(o%~x4w#bFXC&`B`RqjSwBuE{05I8fq1Hiz~^*~F#`&lQL3PO5T0!R@eel_%nJfn;s$g*jhvke zrKo)Cb<+Tr(9;s>9t!~1%U^kp@{HYLB|?x73v7z1%wJIM`R0<-PUpuE5WYlYeRDdWoRm zm>~a&OcnUpqZPhN6> zx(AeNC5V$xt%VVC!a9^Q&hu6e4>9;S-MpExwT8DZE=Ryrru2c)#IHvE))B^d8BYMD zADievP?Nky4&j!&2_R(l)CcVYIMssJ*`GMi3q7)wJiP(0wP-!gW%XzpT#Z*#P4x## zjS8w4=mz&}?ciw}l49Z0$<<=kUGzhBe$}@UJ63=}8=6J76*iwe>x?6af3m>;>*+KN zy+9x(ok>21;S6GXx!rwhHVbrPsL(8(LK-FU#BB>io>de?Y`=J*LfkAtN-0f4Jqz3% zaOIA0$`%I%7!x9TI28c$MTwye?d8xmW2vIy91`06+Ig#UC9|qlQy#ro1~@QDJ&rgb z>hfhj^Ho8|fx>G$c#Wt$z2Q}sl=T$vW!ooDp3Z(c7ugM1RnQPxL$+mLZpBUJRg*NO zE1Nl8Al#8Gun)OE7abQ!8itz7nY?8Fw{f+rBlz>%ANl5&@Fdl}vY>I=h!c^AEsONq5>EXQd&Q;jd-Tp7wkg94fM2lBS?o&C_cBC<)-Zs>K_BZ*O|?v2=X}PX30BGhy1Ie! z+e1C>h#`Pa>;TwOQhy62$xv7KJSpv$!t%S7{pEY5DS-hb$W67Mf8#Iz;4i`ETn4Aff1G0x7_p znrQOROWHuO^+?qS^rhRs<5CFtz9d*E2t9U+;XCW_Z~sp>BMk-LO>gv<{r~x^``#dX zq)PWYv+=FXoF%+?A`Yq4{UPhAUE8x~9=NE8U!H;=tK=Bl%sM1B>4y@`?^n@XMB^!w zm@$#{`)pI>$}s-=z45(s%qQQyG)4RmuRjy$Z}L@==_gDy^MD5IckkkVp(3N5x}*Yl zamV4^UK6Bx`6&B5>=^lmmiqnNPQ8BPb9h$f?7qjQj-3UluDALya}VpuK=m~o^V>yr zc>z70wD5SX&Y_3e8}T2fgYRD#1qmn{bd+g3yjNFo47O&ruD%_Ic>3-sUv=uO;T1bk zuZNGTR116D-j{8JxN7x_%D41Chnc%V(I~>$8F>}X6AP6rZ~AQerw&<8p+u!I5fXBI z>h=}d?`z&0?~A%2YNa0MKcH>fmE(XK)jp!iaL+yD}3$ExpW9AeLPcZUsevEHQMPS2ZT#}+(1CR#mL+_Qx6pN^jz%L>2@ zArCGhCIt;@X=eQNDneDC^{PdL_EKe|zUD!vw;K?iAz%u@@?oWtb{SvxE&4gv2_Y!RtQ)K8?f5Dnnk{NYl?Qi_lg@K zBy#4&o!+}OtTb4>ceVVo#NJ8qXWRMJJ?_NPxD)$k9Lu-j(T?h`0O$2< zNz(=W#g9jM6Uo`7>H@>+<9);2brG$84>%-lF&yZ9D`x49@4a42wlqJw;k%MrKbIfv zy;)8vZlDOzc3V%PW2giGQ?#oiQLp$fB;cws7s8V>K8{K_J1qN6Zz%bk3 zFZe9mcu|=TISDIeo-vz*fQvd#X8Ak}OknR9C18=k>POQ?402oLzsEw4!%E*Bh3)Y+ zX_=gZ1Ew}?~B{K0TDQ|`m%&NltpX2w$d3)2M8V?2SR^ku&4LqOoV~z8YwKU7BfK(NMBZZ$rsj zpItZiht`qQ+^I&>)PCWztNY>{NSk?D?j|rh$;P8UDQP75xB_)~geIJWvmh4Co!Z26 zV6>G7EF6h6G0x0`cJ6!Ub5nw{GJUh9C8sO1VErP6a^F`obz51%KY0BtAnl1ZgO!_K zMtt)}4AU}j?X?k`ARbuMa3!;2@eDHQR8C!OFe|48T}|$Ox{Y}HLmq_cIlSksf^|+i z9QzxnN$%OH@!*)Lc`v8ijwY`6Ya&uOGt&HSyh%8kS8ejiL%2nvcC;=p(eKk3lRQ3M zM7ephIvIOb8Y>dPUY|7OMk}n7VnPL zk+}OBBV|zYNn758u<=fIcl9QID!;m!E!5wRrihp6F#2&?I1tHj*cKrW`nalvBPD9L zg(ke?E_xA$9(@4~su{FD4dWYB>n(yVX}kfwIzl|pMy)#6JHohG23!}n zlea(vYa+bAdo!4I#!P`379Gag;n6W@9AYKZeKbs$%f4V`>Fookzh+oe2DK4fgH;&w zVkqBr;s46DkalLtlTk@*J4UC`^;ES7#am3AZ_9FHathBNlscZ@{nKpOd4j5>0{t{o z^3eCb8;(WuEmkJnFIn;?cy7)XYkYxJZC=*b$Yhdvlwl;a!aGuVtzWF5mY5PDXuiBQ zw{8OcEis7lMY>`pG$X@!a9Kx2egwV1Xh%xf_6n^Nbt`0&tMSrFpe%=4bi$o#nI{*d zuA&t;;Z8)yJ>r3s5jLSV{`Xpnursw3y`Z*S#;$$b$!-rg{-#;~G@n3`fnN87{wN>{ z3g#WN9_8R>N5u(s$KE@?j)&E!DzLJaZ?gj(dwZVT{yh%e!>vEK;VYCX@PmYKzIb@R zVXi!k^XQNRdwTDOBzV%J1gjQ9)-ni#eu{C%ZERaV88#)^Ul6uhAP&fS>BMw8QR4J_ zLN=j1taW8bJlI$B_dx4tv`0$i8QufFt#DVrx{uNiN3q*j%vh={HDL5!^${a3;(-+% z>PJ)F!kPxwv<1+^Km>xCW=Ksa>5U%-3(ob<&ynCxq2awu!+c_nhVQy$K+Uu3;Yb6D zXRy`D44PjY1UwutHZWE>@jKv~-BtS^1p`LTwgs2p{6Wx{88(nzvkSZU^3_dJ1w~$E z{Fp2Y7jy1BKAvYK+4Drz*vq5giK1F99WvKKs5bBjA#&s?*>V-K$Cb0UendlccMN*l z1G1dz&o&{LhO?DQ*UMi1Xwsq<@g{u97!btaM;|F>idR z0Uw{_wkNHqNeK^OA~C1pINu^qpU$)P$0Bn_(NI6OC>(p^)|0vFtPtBJkw!q%G@F9a zLTFE0OX$Q^Nij|FJ)kq04Wp3c7Am$wcSU`3Awe(Gukhf22|VqA=htf^Tf?D) zipU&P6Yodc9%lkQZrvJVy!Ea=etOf2!dBJ4Wu-MC>wGk;E#p@l6LnCOVwn@g@M8QM zX8>Cc4BW%}N%rIZYU@m}mRW=9g;iC}ly@w&w6yk3Jp|&RmvKp7IFW72V3gCy$DBh9 z4E^N-99o8&?;A5x(7Ingu2whMi;O)#f7{&v$v zVHpLaUmUDs1j9CyYsao>8j)i6Xq@VXROmF&e&4eU3g z*NshLfwikXN6(b1cW!3tK3}>9^0Iq#pZSp(2`U34)-BAp#~GsIq=fDly$Th&&N%)4Xvv}Zm6(RmZ#fipPUc1qr`feFjpI!|t`Uu8qW>3Ijz75QJ_peUrS?BKh4 zp&q^3xfsl?Gd$wP$7H>2FbUCZ1LaNep2n)>o9Q0G$D=eX0q{>9owAv6>z?UB1=5$d z*P~-%9+nlw&pILuBpkb&*X*I@RfBrKY#bfrV>y5gQrs9|Q3HR;#7NrE5IXqZcs1)+ z7?0c*e>M{HV$NH3(L3U_mq^86rPD*n#)HN36WKOKUfyc!OX0)0?$d74r5?D2ur*?8 zr)vPkF>y_TIn{4+=70*@vGF8xkreFWou{K4dEJ%vcLq?O_OJ_ft z#hsIBV?7Q;3KUPFW7c>DL-Re1w_r9*qcu=}rLh3gyZSCyrLWR~Gzs@CPEgh{(e4tyhK5N=2V%WaZ zGFXSeze2#y-#a6Xtw{AqyoZT>5WFlAue`>k=gXy$(OPbzhbcc6tsccp$Qkd5&euFVv7)rLm)x`7GPYMOJDc>9{v_R1_$k92TJBx z-oGq7Jyq6mZFvQJBzg5Tqt7?f3u=^_R;LPqh`oP*QEcyGG)Z>kQ?|_oo(vn@RCqoS z0QQ*Q-#9$KT6Q`fC#z;yv??8bN>)`PGNAyN=P;PJy6IIlRGI7$m8|OU<1rsNQz%F? zO|~teanRq;ZW}G0tZy5t}Ti#tp%V@KwmLZu*^xEpT zx$r?Zbn4~yuvX&EW)lyjswt~#DPk#nmo91NY|iJesw&4I5C{PNc73433W_x=?rdpV z*VNUWpmsP8mKsCK>MVsvCTJ!9VtfWF@Sf1EE4n_OM&Y}hgL`>TJ8{gt)gNRsn{q1e ziG5p{o!b+|Hfbvg6pRWx@C*I#%PN_=cXdCK1eYn@!3_q%0{s&2_`GrCS@G4geePOZ z!gBg_5&8;ql!m63UfLt5myd&l@8qd9Rpp+9==L|zG9%mIr#9P@=Ss&z`W3NougGba zzg}oi!I{Mo`px2$1zm9q%~>F30cpt*vHpd#0ptv@A>|}YX(s#uf|UBL5;&;qth#{# z=E}Yt(Y;IYvjzs8N4eQp1xT$!$vID-#)x3nW{%~2e4|M&w91Ie0NS}#IZ*lcw4245 z@5uMH8e^{nXa1sHe^-K(Jil|Bep;3}cJ_SzrZnuAzENOEW+0j1Ou~L8B6`=$fH*2B zi;h0zA!K|AmTxb!;8m!0|3yh+bo_!IzKjc-TTzmN5JBhqTN@Y9(ClMn<{)Sx8GkS& z|9ZQBk5;-12G#GA!VD$wMJN0L7nJIAn1%I(!b7udUs%zq5{?za0wS*f1ViIA+7mf$hzK<>%Xa{J*nifWxzM80%)1ncq&qhxwv# z(4u9=1@^1X&#pIq(0ZAY^?3B|9ESIv)S%w`oB|>UV->@6h*28_m$go*;GHCNXh0y* zbc}2T&rZMMyTYewh&0Z`o{wfZDa8$o82pP8{nMA){VB-l0?@rtq3^`AQ{Ljv7zBrd z1dLb9ZiTVuzI#)rh?l58n1CEgPUF^wIf#FHH>ug*kK(hwtzBZC%qqS}A%UmtKh6{> zE)1LG@VNQixDmYUT3qIYSF|23ksbcF#sB?BckPZhXpHN008GRn)pMr7m{ePKQ2&;|iapY*LfW7lu|o#MY4(f|5U zp9VDQkkbkk!;bwzmi_#U6ig97J1`b}9ke?s{nwXDvg`yuShSxD?Hc^}?^~L$0Q@YH z${qUuouqzvX~<5?cgP1mp}nsIqcL?xCyy*x)ti8jF*z%y8iPQhBYODDG13^LW$#j$L-~VY^aU*sZ9L+i|%4{IXg4 zp+Lk>OJ&8)5V~W$Bz~hjtu!K!txjt;WQ-+zZ(95$4zK zLTwGwIz|#?%PZ)8p*IYMnC>#%OKts7=Z)4q*SJq~Ag?K6`CbcCit~*WX`JL+9a_u8eIL*SshPQi$pp8XO^b#)*%c}9yqet`#5b} zQ5a2i)yr{%m5o&6!u+VG%@zjD{BA%YhP9SRoE5Aa+vTMY_uF+cw8$WK2re6$CxGkj z`Q*o@p){@W)67#~eHz~m3&UN*c8$vf-O&AOTBCFFzoj*t*ZxdvK*!0~*Z!8*fOQ*9 zmx=`qfk)#rtw*stQA07e2k%H5&3LV?uh?Gb9vjb$!GTyIuVm~HQEYm(r>fT+(odc( z9=@S+v^=+_BJ~bhF7ETZSs)wpZ)<219a{wj0C6P-l?O$B&|pD4OkVI> zOIT>%v%@;ljdD(|?~3$gogI|`neX=a6?KT9Z!GLmMk!pMzZ8naJC);nhfc4WJw~W%$7aKII{=&U(#Dyxp8H@A{!0 zjf&OYi_8N~p$r`<)!82p)>n|kH|k^+0XMGG$KlylJgHS{-p{kKF~0NB7yOM2K!7bT zD)Jc-4m2MZ_?@}YE}>lscdql(qen6WA(UyazZt@R%ARhm9mU4S-zu}Kc%At|gFs|Q zGRsgmU*E5FeDtzJ<%C;eKgo_+*B{M#cgxNzN0EOHb4dIErC*v(a_>ZBO+0S@fZA2P zK|zq5DpTAU+#%+dzxMh$ z<*Qq?ElqPhQ4`RxDP-5+tP@zmcjwY10AqAA=Q9t#Z)()I-^9 z`S^<5Sycq6B=(>jOcYYRkANpX2%e736GSVy9oDp3NIcx>=km1bmQPGcR+CL~t5ZN@ z>=RH&UZPPj5PEi@S)*2O=HsD{EANNLkNjOS4_MUavV!k5KcZ zUQEse)c}bg6D^gKr;C2x=M=U=c5vpY6&&;4m#DOS4)LTWkpg1&Z`)9J@CSJTs(%J_6a8VTUyl*f7wg zECX)04pk~0dwy0`oOI7NZQ=4)VjRr8czRx`^;7<52+wehfO!2-*Elv{9##_ZeCbds zx7ZowP}G~*GPT2Nw z8Ys3=sVeqB%{@=N58d>k>jwP!OX9-yUa1r8K>kT?#H^iK$Nx$!(c<*>De3baRahu6 z)J70D25RxIfB^SW_^W$4zJu_Q&*QeM*_+BmYt@yMcJ>CH1g@yGR1+yreNeI$QE*X+ zt%^*3mzHx@-?TWc`US&_ij+*tp2Y)MZC2;jFN+s~Dhjouo`(2nS64Xl_~veiEkH?~sTwq=EP zls1_jQzEU!SJTWe2U}u*RzCT}%Uj~P2nGw7h|3poXJ4bO1$u6t1XC9Shwd8dA|}QG z`(e{%S=PifY>DrKM{Bq_jwFa%|GLCpQn{}gFaZ|81tw+2j|wqy89p>j!Z^k*6Jtl+ zHdaZ;d7ZIVgX@=p$T@tnAU|1a!I4xL2rV(PC)Gd8-6&=(aGUouXqoh4{Do!ieqks3 z+hZqua#tg1=$`4^xCT%=7G@#rc|qqJ zRe>~AoI^dt!$1FNT*$$MuCqfHm=qv=@{_W&PLW<0*>QrW2`#nJ=b{WQ(s!5Nkrk zfq@RPShygwbHbC5xF(4Uwa;_%OX4YxwysK&5YqCwl2$RkTpVuQK4ikr%u%hDIeRWr;~uwgwDD(D?V zfyk`*mLf9?IMkYMi&*TuwvxgVKX0@KogJ>z8~@Cq0a@;|=}+MBR*La@XsW{!5Z2m_ zy}xA1r4LF0?Mf!!^c*~QCocl|8ZWV{y_kRCO>AuYc9upo6G9+{JaA-m-|I(^k#`r3 zJQQoLNTl4fZ(D7UXj)i;7e7mJo}e3?|H`H1%cgNVyrG{!*2(&0m5SKt64-iRo1^1F zW<@f2irEwKI8I+%#Hh@}tMwMi+;NsE8~IsA-ra9mj0n$@DmZh6^s0L{03Jge>?W830AGBJ+!6-%J-x zIN?3Mi>8C?Kii76jH2&dtpeMJhx8A6=L%lQc-X%x>JA9zuZcvdU_tz5(_4s*k_QCAdV74a6_B9 zwi_V?ISK15Kp@sS*f`^;Vb~bR%-E%F*v%6a$JSciHJ!=LW! zt2q%WuGEIBl{ryxrB|x=fqUDl&-xCJ+Kig$oaD*Fb$}0&uS6~G*TS!?*M+r0UYP;* z?Hqm|iy6&0*h@wO>~A~+>ie=zO=QbGDc|KuAAwBZ%rIpRM7YN$%I1_7ce!vRvGZ}5 zn%LzTewFN%>)8JwR$OQq!dO>cfySCX`s%ny`e=460r9qvt>+f=`GBTbSxdA-nwMLk zwO(ntp?vbOT);;0w)`yLpO@}8Q(u6iuyCZB=wMBonG4<}UmJ2-xM8s42V7qCs9w9x z;E+q?&tMI|MxJ>3SlZ2F%>i3#I*lovZwHCugLf~R_!p}wOqj&Laq~anwF8`@|9ie` z*z^l^L_~chCOW}%5i}S$@qM<-aQAE%&mE9r&cTKRvTCx9kBKK>Q5D#C03`+kpPJ`a ztmC9APADKsvQ<;$Wqt<-=w&z3J+&R$I4vwR=KVE_MkiL)c^j~MM9qEQB~xz%)RMGb zF>A`ZJ$OUMLu-HAKb*#a&pYx9z}k*r!Lrf)-NUYvX2-0IJVC?a{I#7iU^MV$w4w7@(`dW2fu`yK~T{HRdVW*#I;b@}C zc>_g4#buHXZ8#A~&62QHB8XJX zND`6j`Zg0_cZ-mJC-Wbz9aZ&x1m-`Ex$}X8H6k$ey*y91QK6(ybgzc*-!p>I8zVoT z15b%3wlXkTOI{;dbF$|1s}NmviUvCfzD^-1Ck(V`^mK{d0utd^LLuf_a7lr#Yux%> zGV9&6ChqBN;nikqALQ1;TmTpg6aw|5rhNROh?4=HO4n1hhxkb^1#nTV=reW|-WIz;_DmSF@CkL+kxHMi9*-NN^(dRm}(e z^;(?N6%%yBis7$?uD_5hX|Up~#=jgZAj*Bc@i(Zk(hFBmswe#S??iAAYX9rrW+@d{ zVN^Nl%>=z(s;6P<^+(&^Qdm}N-%?mkk6U_}MbOsUK=L#?ki$+OraI{E`vT(M|1E}V^XWNlYWoiu|JZ7|DrSc zd*2$Xo+{97p&m>AWJoO66;qMdr27tZ9wslsYey}F`#mj|Aj;7^!~S2BC&~>t-!nV~ z3p^Z6wh<`@cdYu=0Y(IxD4_a2TG50Mt_@!SIiO9!4J+j?Ky3x)q5mVamjGVIVKiZJ zt*tnQv8<|~VI+(604_LP>ZLCF{eAqXCR0OqIHu{uo7r7CX2+KFM!7W1>=!9ir^Kl4AshzLoa6x#XW!+grO0)90&(w$+) zLT&~LAKqP^%{-z(`n?qVFGaiuN+W@aZ}%I5|1g+&z};zQck5eMe_?_Biz~k4fM$tI#2z|6z@IX%t`{;`iT`_=hI|-GR92s+9|4{QoTb z&$IY7jLDzh``OdX$WGE=Va?3_A8r7Deg`@0TF)=*-T#at{q;#f?9nSDD>o4~3^R3Tt?p$vK#HRP+ zaql%d4e5W{3n6;)fP-;=k=S&SA3T$5<(#Y#iH-FH>+F`je+Do@KKGLYk~}HWxoKKZ zo?%@o`AknF3m4X_iu&}b5txyZOE@Xmn+vPWpdv^8T0FHd0h|HWgj(i19}b-HNq_Xn z2W*hWOsJ~qq>Qkz%d)GVCICppwYC06rcr)RPfv_TORb%Q zLouwvNd>Jz^)*IsFDUweDHMu+rA^Uk5=mpH+x+p8x%+4pqUZ5J^XPI&;uMmq4MQxc zCT^e?g1YE$e=sdpzRc8M`0E7`xnNuDZ!=xNa4$pL!Q4hI;% zwNCcBTLyu6V7t>U!50#8=c`m2&(f>)0R6iU*8Rk&9JSPx$a(mt%V?D~?$bF&bfMV| zO>J!}sCiDZ{}e6$;$_!}w4WwI{>n)IvCDQo;Cx2ol=kXwC&p_r#A-A>x1jQO!Mas= z*XCOMp+ko>p{y4d@OVdXdTFV0OY*}^ai@{_;(Q-MoeJ8-rwn8Ds3ABwc+!zJdwObW zwok-AT_v%Xg_SK$EcZlPd#?sF53(EOID5s-(0LTL7Rh@W^$1*twzW>q0(PF^XlO=1 zl2{bN?UBvLpUZM|42-pYG|K&O5$yf7DQj|KB0V929l%8&^oyk6x#0m*=2uqKk|b5R z$X)-i=*xLUd z1}+RgCBV>9MzI%dbN ztqS0?ce0-}AhT75 z0Ab{LJj3_A2|7QvfoQ-mcwjMs1#^fm%c1kiD?GY#a!Y4a5+*FqzN^U!KKD#ej%^Nl(nhq7vbSW#h(aA&Ik_N%Vv_>045|m!B=0e zK-Z=DVvW3mjQqwk(3~nnPb%dgyXaND5KfQ0N z9e0qqSO>s+S1m2Sg4Va&OCK%?^VipW?m81t#wt_i+r)R_0ugDO zKoUMQHs<-sy=Ri!{vAM-^SDaFfoswuz0f>ldHK-1IPrRpkY3%~W%ZLdy1H4aWJ)ZtL#6I=|z^bF3LP%OUF#JEnR*SCEWDlz}| zL2+ja85g?R-Qfe7IU9v{AX#M(;)V%zS-=>S-Y#cE=&$l#jsrNse8X1a-7pg0B zzV4fZc>{&w=HYWMltfo3)zPnBWmFTOIglI;)8(b%=bn|9YmzQ+OYe1{dWZ&75!b7D}`IsD>9d5{xkk>3` zkH)>z2*{6{xyUa~eW+3{ylUb*4tD?g_2lq0V!YXie%%vwI_{q}V9(^xkOTt#KRhmS z_4L%y(1;4{1T^j-IyCl*TX~A>@{$J`XtqGnbNhdBNU`bs40<@~j_U8n^`l4o1Oh6r z=@|OI%2bgZsGHtAX7bX-|dq zMG+B$ln%-Wr327Ka)7E)k@vMr^s)I)CjD2V?oWnfJRem4Y5?QD6}0a)gn+52%Cn;R z8sN5|2iPWk+nZPrNk+!QNksU!k-;f@%QuMig<&Wc0vq{FUmqof!5Uqt6Zr4wYQ4|BOLT3}YD4Wi%lnPg;Gg4W(JvoLez z=MVRYosnvlLfva^Z$~3WAKs2N^i9UB8lJRDkvJSDE4SI_2B!?=uC3J!Zq2V$y$5Hb zkBKm%$FA)YrQ*PAfHlSm45I^^-`CR0Xb7gabDI;+SHolnAh#4?2GiRXUDLu1q-NW$ zmXg)4z>M$6$cihHR8F6KCi#RC9edYrW8QxyG5#Vz{`j?9XFniHYY%Q;DFULgwO;{P zB7dKLOAqW+r|njMRqRZpgbCVdPc7T( zaxQqLSV>Ub$thVbo*dtvWaQ$4^kaGthwED>`@axzM%2_?SCb__S|H(WkZLSkT%M~+ z<9ubEu}182zHynSK{w^E7+WFjjrkIk6}gmC+PiOpPCt*flmrQIOeDh-um7D`G^uCK0^mh|c9 zXxaPRvZ{b#2dB;CfUrcW#NmxC+QDH#!A?SFiz(qd4|P>P=y8yA)R9T+OyZD8q08Tb z7&BboEHsWzMT1dk@s2CsN1M!PBB&fAm?EM9-Bt{T5;pnsvTN*GW+o2+mtq!67LW$i z_$sbMO$W;AK%KJ(m(S0|c&n;9Rpj-K{s!oEMHS3|@kz(;ma{8u>}sLc@8usG)lu_b zdV+Wr85t?J?OeWm*kiTd-1W-e_V7PRm>|YOtF3#y)zs9CTn3+rH>?QOqOKi!`VYey ztCo9_3vwgVCLJ2ruBFvc&0JyyxVX47bc}tJ01Q3-VhgX>{Kk*}XzP1uYH!yIhzjRa ztvkd*|ES*TuHNrUel*Vz8#}dL5MJ^HW1vx92fe3=*RDOnku-{u5&W^H|u|RfCKqJET#IwgC7?4zwbrCWM}q@ zpv=v#pB~Y#KPWT+2*^|E13K$zqZ<3XT?-a|}6LOKBt27|dXj&N96W->*EgoMoD z<}@qKL&_b7QUNgp0?&y35&SNude*QVD_7lnmp*n=-$=F1_uI^_o|J>vs^ z650OgnauR=u-j})`}nupx}*zC&+`EpT96EBSe1RWQ74rXGi=^}Z5vHVc z*ZcpXoU!R?n9u}oc4nr2u1>!CjT?=EP9m3OM!I-XVsQz6qa!TG*)ubnZ?T?Wsq7d( zkjZqA0b)D-mwwOG^+QLbR!(uPZE(#6Y`h!wIpFb=gv!6R-tt)EVm=82E}eA}-*FXdl@y&eYLNrh8^L(i2~KS|4c`8- zlwbx=Q^b6`O;A{wZ6!eShKeIhrfW3G>?3VfEAM%Arv;}r-NH(p3vIunk06ctTm_wa^N22>C%Cz@em@sQ_~vatEvX`GvD{ z%&prpB_|s%6N%;W8jMh$s7wAUnGC2Jymi|8^78$MzrQ==$x@n_Q&&@?{Oa@P7tda3 z1AT#R;Lk!r9<^|I+u*Gq=MBv8)7(JHsk%hnx&$7C8*?ZiB&>BQ9R_m}kVoPH%UUL0 zZ<2oPsHbx5hl>SLde|D^zHl`O&d>|Q*!s`sWLQp&SjdLoEDZB zSIf)i%aMCm%gV&`i)ZLJH#RQvfwYU3mh7CI%8Nh4>|@XK@o4je`WmaMR+BfiwYN6> z$zl&bsXux8B`60xsM;Wqy2m`caS|P3fk|4+9FP+{SaI`IwQJQ zLgLB!=1UHDirYk1G;1yyso=L!`KgajdC}9q_r6{9{*WQHYhrdf_vPe%F#|!mla3=+ zU;zi`*CVwal-^{|Km_JQ^6T@6XX?`^d!;tbR~lnA#MO$ayNc>6_nz~uXODjyIB>B)Ml0LG4bHdXKTd0j>u4ZPu*iw(twr|};|)?; z9qhneM_;oDss+eT$17*R3xC(zL=>i^+)4zX^;9))dekZQ2=|Y4VWm4yrMx^7?bKOX zvYEJacHh?Egi^VKr(Q*EXzG}0JT_U|P}2f&W_0w_(Dxeg&*T616A`w<2ndQwz7wdy zlbRgYUu|d#xiy@MzGCu*7O$ho8oY3k)_1H2VL&2LxN8KHa3pq_Ez)6Ul2gt z8`Y-cF%guwN%tzFrh25>4GKd^%#{(?-{_R%#!w3*O!j936{Zi1N=UTsN21aFx-RoR z>mQUI3~Q9dH(zVVPd0w|!1BOPIrZ9&+^{fm)a(4Qt)q^LM(9kiPL}daiVdvfl9(3j z*RR#=s0@6vu^e$5QWk9lXN>w@b}Eo)8q8cgZd(pU5b53T%^*UumOO74m&n%q{&8BTgcCFaA8lVZA{V*M&2n4~IU=D^pOO z8h*jrb&^W9ZYMtVwhVXO;JB1eLBOA2&LYkk%M* zmv!+_h@RfMXWp=bi8Qa%y}?b+g<=PCbd~9Il>V)LX~p>?n|E(>+ofdHG`Y=4Kx&{F zqnKU|*7z#@%@3EOGp#RGn&dfZni$){un!Jei=7u$KKAMr5dsVtK6Kc>i$dW1{YM3$ zkg9fg|9--@kC~T?Q;HmK$aksC)T~326tJ@=35Pne+QeE03`3NsW?>e@Z_Dqb6%?>6 zR}o!ubtVCoUVRn+fnR=P4>FYGU5QzE;LSxVcR(Fr2dK zG|7InT@z!}_k*bybmiooLYku5V4BjojP?Bbl}P;B3vq`skx$&@k6em!9`A(_22;h6 zT7tD%m96Qb^Jrch()La5K)(Vg8MD7y(09=*wqx4B3h6n@A!7FU(N>Gy3h#U`1E?MJMd1lAcC!_^JcUP1MnVB z$S%Lm8EV*^y7@RKpzanqQ>74T?OD3@DkbrpCr%sYSsaF z`#pYYQlg}9>^*>>k1pJD|O*8SX9J zzAZ$pRALSYc)qNYS5Z<6d$?dE?c>*8M7obOC`Yl$5aL?)uQ18tbZPbCQCxdhXWasv z>AIww;|VoiasBE>x%C?}F`e2^iD^X07PZdPR$}jZD7Q~jS0TZQHcmpq6AQiqXegDt zDHYw8YCPG9x?=rT=^n&tcm0#Y`p~mJ+?XZ(XI@22P7Gzy-y z2d1{mRr6Jaq6hY_@^s5hw`gHr7u7oWly_uVK0hs@+`CY#3P1r_bi#78-94&(mXR-1 zkMRAVy#M9}*D3~5XXmscLpyhZF@9?G+b>8)w8+HXTQ^$<*w|KFjrK`xCGY3`-cJpx zJ3n^kGIdbPv(-YHV6(KigqoB$E@&R|j<%k%1I&27mEjB8&OWNQvt~+NG$`&FHT(9h zuH{EwvTkLMb=b6~tj~($B)dj3&E>_ndy@67yRnhO7PdQn&fm!F-+v2oVj1&f^gJi7 z^ewD4U!?#zqJE?`9X^3egDZ(uKU&uVYBa1;o5VJ=;3%REy?McQ^dshp(kT;ae-AJ9 z0uxw}%NN)0y0SQs?nQ(YnpngEc8O-Cf2ivTn8(3niJSzYW@M9Qv!PzYC^ta)|Z?*_X%|femaX(R= z@f%V3%BxwWYy_KZ{`|t+Yvep&df?rRwD--2F2_EKVxF8O;Dqfz^eqX;FB_a}iKpib zh*Q!T`S^&3!4Ku#c$W4Bwz_Q7m`o&>DGQ8EQhfQ zg24=2a@WtbglVZeFV?BH{Fhjo(fMw1EzOexA4_+oJkE0X^B&f)SVW zg-;g-g}GT(E37@K?dfx^Rb#diDx2=6b18FDZapRwA9r2fsoe2s)z@RlSU?@|>3Jp< z%5RLs4MeP|KJC|NoKxnT`|^}Q+T(Qr%IJgN(*rtjJ{f$uU4TV9Rsk{M6Bf>YRicn0 zCN6G+nGYk%aN&P6&VFLa-<*5^$!g%;_;xn}(v)}~Y>kDkJ&oMqoz?{j={BZG!G0^;|UT()sRi$2Fv2&}Z z#?3h5(=dHZ%h40TQE~&VS@r{K3!__=wDFR7A&<@dsukpO8z7I6bIK`c!-wJ}9m$v0 zq*c8}uZw<8?z2ESq;OMK9@hrQ-=K+sgR)mFLdN5qR8joxIKfvb`MvmwR=Uwl_r zH{m+AmIjKgeG)RB0FMbG{>9GuiPOq&?7+$m1heMf`)mMzpFOnKsOk)CV6|gA=Y6d7 zj~{;^Np)~veLp7vD?>#Ku;r?cVDSv221Yu`k>dq9dTIXVxb=-UUQVTrg{v_UD^TQH zX-AJD`1C-?D(2{N&R);sA8?|U_SW+uT&iCye#gGBNK;SlzvWTS_J4~%Gz0O6LdnLZ z@1ksHaf#pJ4=Z03t7Oj-eq7uiBCwCfXL{Nk5UEQwhlzNt&>d0V8f*7S#!*RYI2O}+ zBr%g#rQ9iuoA1(y$G@q&D4 z41#I>|8h!>&0gP&w%7Mh-hHw0{`>E$$=<3#%j&4axobp>@Xx*NmaC}jf(%e^#3|ey zyGqm8VmDL7XXFkZL~Z71^lT>IJQ4gp!J$eX(eipfR3T?vbY|}V?VseU@%#7`GGq0;REhF|gK+!>@HS-7hMJd}WkL^ecQTDX)%dcie zsb>|F6D?dEp@o!+&1cju4|-CmY<0MEw$A^b?x^xm5e9&WS zNSdK`8rI0#-RUl*?!k9G#P+x zM>8KfGqjtssnk7lhWkqA64DTGToxR~B*l5L#Hot|dCoIsLj&w+>MXF=SMx2UXEL%Z z*!hi#L?J%-5?!kV6b#;aMokt&x4s;bm(yPojo~gW&o60pGXgATvAGl#gF5j)u~So} z`?B?sd$vqs%T<_Y-_0UnagR%)ZjA>tFnhIZ>8|2?i?%{@^$9ZW$3bQRDMOE+H$5r@ zty$^Z)*>0~&qc5zG70P;8tncT2YU_DKBlssmBhz!-2FHosQajXMAK+4a?A_x0Cdk7iZSL_JO;EzjMb?a|CgYMetJO^OlSrMp} zZpxYrKi5refA<~iv9NzeKra>WBC@N$>UDV$Chd>J3t`@ItqF6D$6t2Y1E1@;o!m-j zE}Ma8FRVD`@zdOIJ)$X2AmFM7(ddPT*x?}bmpUg zG-7lsI(k6@Hr#u_$cV!Y7FF#bBufjo(us)mSha$0O%1_gB7f!GjP3z!SMnauP1e7L zQU7HOKo3!KeePqC^yvy3b?a;!8p^VB^lE#+C+mhiA^zA8^EUrMzDn~a@3 zeHpL4Ru6<;(a7NbxNV`VF6joMM?9{lminROz21wL6v~~obE}3sXO3C#PlW9!@L}AK zf2`PUD=_81|B$9lIgq&n$f?o7);@d31=*764%2pyw9#=d5p^BTSDThpS=i&gHb@JA znNTs=s;J1ww=o-QDkocm)G|&oGGa3_b2T3*dZ&Ovx0TtPpDmS=P5}d+tT5$WYP!#@ zcDE{iS8t<=^Z+FkVdK$^e^W|3|BdgZb-f=^rkdV7*gnm#8B}84D>#z(0BQU+T{)xw zkcYj_?bj7x%hwD7%jOAR^;{O!F{Y)#Ak(bd)y2MHVMFReazoka*=5B0{hc$T^rs%u zz7IcGN5<(h2F7p32q{U$hN`4Gt4Cl7Sy9Z)+2PEu7Wd%caC`G?9GO32MCQROq^~at zg8|KFhabMHA=%d?s8fDhuOw+MB`T-4Y-U^63q?dN4Ijn+!iiGk*y+#`EO#U5FXLOj zD+@(s>T&MCf)`~68hYP_HF@BYuLU!uSm6zM=&wOU26{E`$)q~sC*#h>oYtzPZi8(R zOKc0UW`l*A8U+yahn6IG+F0fmty9gBUhC@WNd>2iLB9evF#^>TeP@K!?kjGyqGChO zFMWdo(;FHWF#TqYaXD|H54=&R4dE$%or#bJax+B%)8Dj_wdpKy( z$zDbG1#PMB|M>BvwWZ}9vnjNY@p}x=VHX&dc+1DfN8Y4x;cv+cKiD{Xsoj&kVYx%% zQM<`@MSy40_;T~W91>FLfmdL5=696T$b!pOq7Cd4n@TTu0WAx}buR$%hwxE1`eTb@ z7>QtIRfjn+@uqE|?)_T@7%hW)9VrltnpQ<8Q9PL+Mqs^IfG0COOD_tnIDuc6~XyrTknLItfIy$(=ll74{5zhI!UcF|kr61&$Tz)I4=_f8d31 zupo1Wb=Dbso197Ni0Y+xT*mXRZkweCu0)Z`S8r)fF#`Op3s~V&5MdLd4*vbtEg~BS?q#_=u=&4rtS{ z)VH0%JqLwA@c~=@_aOW8c{pS>_h(8r9_2?+wduWUhJ;&xVXC*B)v4$8xKSX2(m6-@ z@`!KL^E><~;Jd6|xdR-6a_$bjZI2XQGf(y^zQLWQKz^NnXo(|ro~`z=BP6QHWXgYe z?)6}9Pdj+%LjW*JTTd$|De>qVZSOb3Mkfv9oqo=B5>db&%j zi1}Kbi|9s2!>C)yVOy1QqP>rAw&$aVIO)IG--0V8dwMJ|AW@Pa+_ZF-+u}Y|)Rst$ zWo6N81;~fnTJCG-p1G}jkmJ2p##4R zaX$zKtf~=C!2`R3m~EoeT5=Rf8O+^!^rf#}++4<&M(z13P;tmx_@3VgVQ z&U%$YP@}nY>=mk8$KZUBJW_x2D{Z7JNeReMI_&i^2e$sY}eIE5@}14_4NTy|Y8NZ-eAB)Wf6G{fzfb z&CN`(+8pk>=sj#IP9c<3S+zBYzLhe0#pZ2qpT>L9c^H8RlZPL*iW9t}VUqYF4i@s_ zzL4SY8T*KRtzNpy>=>dn#1Wr1ub0^``AGPCg?m_^-_fP%Pn5*_Wv7fvs2W8<0Z zVsw<*udLWvXDa)>AKSAZt8bKx<{5vpcipoT@7yS=L;&C>J5pKV2T)7V=+sW#nu4LH zxpka;if=Fi2yX!iE^T9?k!Oh2&rWyiU2YJsHDg2Na_*Cd!zVe|?9F`8+Jy}InD%kT z;}?P8h^%bILGseliPMb9Nr`lr#R4ESaly-M5Cn#;u~s~#nxtpW%BWzo&dP*97kLr- zANJO(b^ZdL-?DKteSV@{^OCqvf$WSNa#DlT;Jls8_5i%L?Y$YTlq@=9O%fnOO z`nW20&EfX|_#cQ#TiEY_X{QBHQrBqq{x7`&UC!>5)EPL*Ml~odC&llowG@}>FEKUY z&$|vsw^65sTTHt&7_(SgF9PF0W!#*N8)An$(kEJI_a_QUn;;x>3PmOmj6kLq`s23N zp0)nahlaP(n)!x8^~#-WL&M}pJjyfPS8r!!E#ySTy6q~WznNg8drs~cXdbhy{{ZOd z?_YhF)15`1``FHQ#u{8Ok8qS#{jSpg*!`b+0eD5!0n%nk+k5V_?=I|cRo)Gakb*Dx zqPs=LnQ|nLdr04idDwt-AKkAsPMZdGxx6>IO9R}Vrk*Hf(VD7@@+kAKd3JEZd3&Ya zraMEEusH#ahUe$!%gjU@@p5q~ojrTDv9YyBnFF4+Ttys~u2WwD5-&gavL`fz^4M&C zeOhGIX)d5saBak6Eifa~hP7sLW+pSrzWio?kA7~&YKFK=X{!Q}pNkvUD}WfvNJuyb zTe!&+V~G}jG`dIg-o5)Uy==sYr!p585wCqqmhQ^mQY*fzeL_}s3f)ZOzr(s?INKKY zuA9^cbsywmO)a+REjbtuR#WR~;EB5cg-TlNA-z6(b$v24SkGteqt+f+G6S_yHc%~M zMHutdSp@fgTsV4Yr&!n#jgeXX!sMc%uAaX$6jeh_y5UfQQ3ea7LT9J4FD^VBQK@zP zdP-wclk-}OG-nqnh|sVNbr8MY|` zHn;HUjB4ICuz$IC5m6hA21 zw#<9;%9ST@6u(LR%_3;u>0nia`f8!y@rOd?qkox*H@cz`zF{x;}a88)7%UUj5hT_SCC~X zDc7NtE%ps;FBotzfNvzKUrX2xOm={P$+F=#j>dH-Po3(= zSA6~CNZ4KzD)QJmWP@qZMc5let%&^+to%os{~iDCh|$hu${l_qn%qFx z-t0^aR!Cvs(;E21T{?V{gM))_VtZuK9R@l^HxBmV@X-?fnR_v-$dcAm)9qjH*bV$7Be(7;O7d1A*^id z?R!*&DzkbGVFtXsyv)*%p8?LGK0S8;P?f*!3zSxBYwhuf1u9J!V3KwNSxBG~vPCZF zMbF1oRn@?t9ElP0oDtFzv(mL^df1>M(ZM*EfpnK+RsGoJ2)g1j-~azQcO=L2=g&(% z`yJ<8|42h|R(CLc0~K?3cOSTn<@WQeeZ`<#?7w70kF9)(4xHnUrE+!^63yfR8ik4e@yEE{%Lt9VJ#z=R-0#P5ZZs?ei%~MS04TL*M}+_*Uw03%QqrG6dMEhMi|aB7LK!mQ)=i|OK@(DygY*lFSEselgINH z9sDE1wZV22=dkIkD%=3edi6f9ZeS3v)A&oCG@vT4(7ZBL$^Vp2|1@PT0S~azPSIYt z{^R^sxiu#w`g3)z9>Ne9T$_uTDLu=_rzbh=8tO?L%oMjDk^;o>$3ySKB_P9D5uzMj zgpKr|4@i;()3i|K`XQS@q?r4e4I&`WgVB)X>p(%-k<+hj&9czy zfc%7Al^L2I8~c!ybPdSizQDtSsL@%Ft=O~gchiXQyG05w0W4Al*!817TBP9LEz)7Y zBCV(ATc2FZllc$z5SZ)oyaM+^1{FCjz*>ukl0c;P#!cqU{lZLXR%aF=O4JMPxbu} z4K4s3umnGwS^q@7on4meotY|1bQ(ZiO9vyW~4HxO0RF}_c ztm%8}Ik>?_aYrHfh`6#uno3;c$UF%@+yiJZ8TTf`;3zSxCu(wIQdUx@0eAB0U3FKRFEx-vJjuw!4dz%jh`l%w#dU}yB#SVwJC!?-*W@5yY%<$l z&uiat0RXlwEZUd9D8PsjvX8Hea$mS`LtXt1ASdQ$1z_?^y;U+Q8Y#CsI?S3hH8cvF z+{zun$RTRBU#+Yf4B#tk%6oS^I-h;F<5SY^`LnytdCP40xK8hz-|KjPSIYkDpyQtc z-v&MQ%6QkGTo>C51=A@V=HREKJ(?0Q$czjT0qUd>NL3*((0-m;#2nu(RU14z*vsho zd9JjSv}<8oO0Ss3ulcOBXEgKP86ybn_*0_cn9=E!*Po@H>o6@f{j0d)$dSchQhK*( zOYmulJD$glfeib?X#}pTZ}u^`Z}fZ_Y;k+$_VOMtq>vm}Lpe{EbWV?q*YjeKa(}0& z?2_onbe8c`dd)X6xgkZj#U;gy7fP^8v9X5=ad&`}mx4uU5iF4NlzxD(&}*!`B_lJ< z+7aCJ0;oZd)$njoS4X1br~2fxWy!4Pxwx!n+s@un8O&&jLTrzV0i^`Y61ILor-UL; zcm}|eg8|^1O#I7n1%osP_79M*zDT+ta_*CKNomrx{(k9JY){yZq1{%!cc8;Zz8Dp5 z^DBZsFxr{ZpnZ91XBN#*-1Y$U8};XFmILr!z01Qlar4~OvfpE6_CxxTW>f>g9t+@{ zz@Bax52feOW{y=SyTm1RWqAjr1bIeff1MI90Ozy{PcfAdmWEUB6^M8Cn_v8}k7z@9 zDv6{n2D-6uaKLqTQf--RjP8HL(dQr)c~jZBiu)h{)O|`}{S(?E|3Fk>q$q+vCEM&~ z)EY3tX@S9_Gd8w==roWvb~Mf{lyvurNy3XrU4fEmRUrGR-PDVy^lbKh>eAiT;LLk@ z?x8y&FwrknDW$hZC>u;ux%ZbJ2Tz5a9FUF@l%uKc%(r&Li*CtB_ zt0(#n^bhn_;CxE-K4RW*`d(O#|G0XDRtpHUWjD_;wPJu;k944t=W%#eK8Ty8vSAyw zlnovLru-aZ`v63+xxKK+bkt=&qv+%!Y1+xT2|J6#VAhBPfx@bHVKNxQ8tQ%yQn2il z`ThqG4+^b-*R)-jebZe4wLK6cWsuxs*eIf37&7>AEtMm?W1T;lOw_O=&+>`u+SCTH z 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:=5+JuIyRlyKrg~! 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

+MVMjJT$3zACsq_ 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 Zhi2c-72UB2{C_8|cy#~( literal 0 HcmV?d00001 diff --git a/docs/help/best-practices.md b/docs/help/best-practices.md index c1de711..affa47c 100644 --- a/docs/help/best-practices.md +++ b/docs/help/best-practices.md @@ -20,6 +20,19 @@ dbslice extract postgres://prod/db --seed "users.id=1" --anonymize Never extract production data without `--anonymize`. Foreign keys are preserved automatically. +## 2b. Use Compliance Profiles for Regulated Data + +```bash +dbslice extract postgres://prod/db --seed "users.id=1" \ + --compliance hipaa --compliance-strict +``` + +Compliance profiles (GDPR, HIPAA, PCI-DSS) auto-configure anonymization, run value-based PII scanning, and generate audit manifests. Use `--compliance-strict` to fail if unmasked PII is detected. + +## 2c. Treat Output as Pseudonymized Data + +Deterministic mode is **pseudonymization**, not full anonymization. For higher privacy, set `anonymization.deterministic: false` and still keep operational controls (least privilege DB account, restricted output location, and manifest review). + ## 3. Validate Extractions ```bash @@ -96,6 +109,29 @@ dropdb test_import Always verify extracted data loads cleanly into an isolated database before relying on it. +## 11. Use a Compliance Runbook in CI + +Suggested CI flow: +1. `dbslice inspect --compliance-check ... --compliance-output json` on target schema. +2. `dbslice extract ... --out-file ...` with compliance profiles. +3. `dbslice verify-manifest ...` to confirm output file hashes. +4. Optionally sign manifest + output with an external tool (cosign, GPG) for non-repudiation. +5. Archive artifacts to immutable storage (S3 Object Lock, GCS retention, etc.). + +## 12. Compliance Controls (Quick Reference) + +These are **runtime CLI checks**, not an IAM or governance system. They reduce accidental mistakes but are not a substitute for network-level controls, access policies, or encryption at rest. + +| Risk | Control | Limitation | +|------|---------|------------| +| Unmasked PII reaches dev/test | `--compliance ... --compliance-strict`, profile rules, residual scan | Pattern-based detection only; may miss PII in unusual column names or embedded in binary data | +| Unsafe ad-hoc extraction | `compliance.policy_mode: standard`, breakglass override with reason + ticket | CLI flags can be bypassed by not using the config file | +| Unknown data source used | `compliance.allow_url_patterns` / `deny_url_patterns` | Regex on URL string; does not prevent DNS aliasing or network-level bypass | +| Non-TLS DB connection | `compliance.required_sslmode` | Checks URL query param only; does not verify actual TLS handshake | +| Non-CI execution | `compliance.require_ci: true` | Checks `CI=true` env var, which can be set manually | +| Output tampering | Manifest `output_file_hashes` + `dbslice verify-manifest` | SHA256 file hashes detect changes after the fact | +| Manifest tampering | `compliance.sign_manifest: true` with HMAC-SHA256 | Symmetric key — tamper detection only, **not** non-repudiation. For provable origin, wrap with external signing (cosign, GPG) | + --- ## See Also diff --git a/docs/user-guide/advanced-usage.md b/docs/user-guide/advanced-usage.md index 817b198..6934551 100644 --- a/docs/user-guide/advanced-usage.md +++ b/docs/user-guide/advanced-usage.md @@ -117,6 +117,153 @@ dbslice extract \ Validation confirms all FK references remain intact after anonymization. +### Non-Deterministic Mode + +For stronger privacy guarantees, use non-deterministic mode where each value gets a random Faker seed instead of a deterministic one: + +```bash +dbslice extract \ + postgres://prod:5432/app \ + --seed "users.id=1" \ + --anonymize \ + --non-deterministic \ + --out-file strong_privacy.sql +``` + +Or in config: + +```yaml +anonymization: + enabled: true + deterministic: false +``` + +**Trade-off**: Same value in different tables may produce different fake values (e.g., "alice@example.com" might become "john@foo.com" in one table and "jane@bar.org" in another). Use deterministic mode when cross-table consistency matters. + +**Legal note**: Deterministic anonymization is technically **pseudonymization** under GDPR (same seed + input = same output = reversible). Non-deterministic mode is closer to true anonymization but structural linkage may still allow re-identification. + +--- + +## Compliance Profiles + +dbslice includes built-in compliance profiles for GDPR, HIPAA Safe Harbor, and PCI-DSS v4.0. Profiles auto-configure anonymization patterns, run value-based PII scanning, and generate audit manifests. + +### Using Compliance Profiles + +```bash +# HIPAA-compliant extraction +dbslice extract \ + postgres://medical-db:5432/ehr \ + --seed "patients.id=1" \ + --compliance hipaa \ + --out-file patient_subset.sql + +# Multiple profiles +dbslice extract \ + postgres://prod:5432/app \ + --seed "users.id=1" \ + --compliance gdpr \ + --compliance pci-dss \ + --out-file compliant_subset.sql +``` + +Or in config: + +```yaml +compliance: + profiles: [hipaa, gdpr] + strict: true + generate_manifest: true +``` + +### Available Profiles + +| Profile | Description | Key Coverage | +|---------|-------------|-------------| +| `gdpr` | EU General Data Protection Regulation | Names, email, phone, address, IP, DOB, SSN, financial IDs, online identifiers | +| `hipaa` | HIPAA Safe Harbor de-identification | All 18 Safe Harbor identifiers: names, dates, geographic data, phone, fax, email, SSN, medical record numbers, health plan IDs, account numbers, license numbers, vehicle/device IDs, URLs, IPs, biometrics, photos, unique IDs | +| `pci-dss` | PCI-DSS v4.0 | PAN (credit card), cardholder name, expiration date, service code; CVV/PIN NULLed (never faked) | + +### What Compliance Profiles Do + +When a profile is active: + +1. **Auto-enable anonymization** -- no need for `--anonymize` +2. **Merge column patterns** -- profile-defined patterns are added to your anonymization config +3. **Apply security NULL rules** -- profile-specific fields are forced to NULL (e.g., CVV for PCI-DSS) +4. **Run value-based PII scanning** -- regex patterns scan actual data values (not just column names) for email, SSN, phone numbers, IP addresses, and credit card numbers (with Luhn validation) +5. **Flag free-text columns** -- columns like `notes`, `comments`, `description` are flagged as potential PII containers +6. **Generate audit manifest** -- a JSON manifest documenting what was anonymized + +### Strict Mode + +In strict mode, extraction fails if the PII scanner detects unmasked PII in the output: + +```bash +dbslice extract \ + postgres://prod:5432/app \ + --seed "users.id=1" \ + --compliance hipaa \ + --compliance-strict \ + --out-file subset.sql +``` + +This ensures no PII slips through to dev/test environments. + +### Audit Manifest + +When compliance profiles are active (or `--manifest` is passed), dbslice writes a `*.manifest.json` file alongside the output: + +```json +{ + "extraction_id": "550e8400-e29b-41d4-a716-446655440000", + "timestamp": "2026-03-06T10:30:00Z", + "dbslice_version": "0.5.0", + "masking_type": "deterministic_pseudonymization", + "compliance_profiles": ["hipaa"], + "seed_hash": "sha256:a1b2c3d4e5f6...", + "tables": { + "patients": { + "rows_extracted": 1, + "fields_masked": [ + {"column": "email", "method": "email", "category": ""}, + {"column": "ssn", "method": "ssn", "category": ""} + ], + "fields_nulled": [ + {"column": "password_hash", "reason": "security_null_pattern"} + ], + "fields_preserved_fk": ["id", "doctor_id"], + "fields_unmasked": ["created_at", "status"] + } + }, + "pii_scan_results": [], + "output_file_hashes": { + "subset.sql": "sha256:a1b2c3..." + }, + "breakglass": {}, + "signature_algorithm": "", + "signature": "", + "warnings": [ + {"table": "visits", "column": "notes", "reason": "Free-text column may contain embedded PII", "severity": "warning"} + ] +} +``` + +This manifest provides structured evidence for audit reviews. It documents what dbslice did but is not a substitute for infrastructure-level audit logging. + +You can verify output file integrity later: + +```bash +# Verify output file hashes match +dbslice verify-manifest subset.manifest.json --no-verify-signature + +# Verify hashes + HMAC signature (if signing was enabled) +export DBSLICE_MANIFEST_SIGNING_KEY="your-key" +dbslice verify-manifest subset.manifest.json +``` + +Note: HMAC signing uses a shared symmetric key. It provides tamper detection (was the manifest modified after creation?) but not non-repudiation (it cannot prove *who* created it). For provable origin, wrap with an external signing tool (e.g., cosign, GPG) in your CI pipeline. + ### Compliance Use Cases **GDPR Right to Erasure** -- extract and anonymize before deletion: @@ -125,22 +272,71 @@ Validation confirms all FK references remain intact after anonymization. dbslice extract \ postgres://prod:5432/app \ --seed "users.id=12345" \ - --anonymize \ + --compliance gdpr \ --out-file gdpr_erasure_backup.sql ``` -**HIPAA De-identification** -- anonymize plus redact clinical fields: +**HIPAA Safe Harbor De-identification**: ```bash dbslice extract \ postgres://medical-db:5432/ehr \ --seed "patients.mrn='12345'" \ - --anonymize \ - --redact "patients.social_security" \ - --redact "visits.notes" \ + --compliance hipaa \ + --compliance-strict \ --out-file patient_deidentified.sql ``` +**PCI-DSS: No Real PANs in Dev/Test** (Requirement 6.5.6): + +```bash +dbslice extract \ + postgres://billing:5432/payments \ + --seed "transactions.id=999" \ + --compliance pci-dss \ + --out-file test_transactions.sql +``` + +--- + +## Column Mapping UI + +Instead of manually writing anonymization config, use the built-in browser UI to visually map columns. + +### Launch + +```bash +dbslice map postgresql://localhost/myapp + +# Custom port +dbslice map postgresql://localhost/myapp --port 8888 +``` + +This opens a local server on `127.0.0.1:9473` with a session token for security. No data leaves your machine — the browser connects to the local `dbslice` process, which connects to the database. + +### Workflow + +1. **Introspect** -- Enter your database URL, click Introspect Schema. Only metadata is read. +2. **Apply profiles** -- Click GDPR, HIPAA, or PCI-DSS to auto-map columns matching the profile's rules. +3. **Review** -- For each column, set action to Keep, Anonymize, or NULL. Pick a provider from the dropdown. +4. **Export** -- Click Generate Config to produce a `dbslice.yaml`. Download it. +5. **Use** -- `dbslice extract --config dbslice.yaml --seed "table.column=value"` + +### What the UI shows + +- **Table list** with progress bars showing how many columns are mapped per table +- **Compliance profile chips** that overlay suggested mappings with one click +- **Provider dropdown** with descriptions (not a raw text input) +- **Summary panel** at the bottom: click "14 masked" to see all masked fields across all tables, grouped by table +- **Live YAML preview** that updates as you change mappings +- **Bulk actions** per table: Anonymize all, NULL all, Reset + +### Security + +- Server binds to `127.0.0.1` only (not `0.0.0.0`) +- Random session token generated at startup, required on all API requests +- No persistent state, no cookies, no external requests (except Tailwind CSS CDN for styling) + --- ## Streaming Large Datasets diff --git a/docs/user-guide/cli-reference.md b/docs/user-guide/cli-reference.md index 2ed97ac..a0d998f 100644 --- a/docs/user-guide/cli-reference.md +++ b/docs/user-guide/cli-reference.md @@ -9,6 +9,8 @@ Complete reference for the dbslice command-line interface. - [extract](#extract) - [init](#init) - [inspect](#inspect) + - [map](#map) + - [verify-manifest](#verify-manifest) - [Global Options](#global-options) - [Environment Variables](#environment-variables) - [Exit Codes](#exit-codes) @@ -91,6 +93,20 @@ dbslice extract [OPTIONS] [DATABASE_URL] |--------|------|---------|-------------| | `--anonymize` / `--no-anonymize`, `-a` | FLAG | Disabled | Enable/disable automatic anonymization of sensitive fields | | `--redact`, `-r` | TEXT | - | Additional fields to redact (repeatable, format: `table.column`) | +| `--non-deterministic` / `--deterministic` | FLAG | Deterministic | Use non-deterministic anonymization (random output each run, stronger privacy but no cross-table consistency) | + +##### Compliance Options + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `--compliance` | TEXT | - | Compliance profile(s) to apply (repeatable): `gdpr`, `hipaa`, `pci-dss` | +| `--compliance-strict` / `--no-compliance-strict` | FLAG | Disabled | Fail extraction if value-based PII scanning detects unmasked PII | +| `--manifest` / `--no-manifest` | FLAG | Auto | Generate audit manifest (auto-enabled with `--compliance`) | +| `--allow-raw` | FLAG | Disabled | Breakglass override for compliance policy gates (requires reason + ticket) | +| `--breakglass-reason` | TEXT | - | Required justification when `--allow-raw` is used | +| `--ticket-id` | TEXT | - | Required tracking ticket/incident ID when `--allow-raw` is used | + +When compliance profiles are active, anonymization is auto-enabled and profile patterns are merged as fallback wildcard rules (`user exact fields > user patterns > profile patterns > built-ins`). Value-based scanning runs in two phases: coverage (pre-mask) identifies where PII exists, then residual (post-mask) checks only unprotected columns. Strict mode fails only on residual detections — it won't false-positive on correctly anonymized fields. ##### Validation Options @@ -227,6 +243,36 @@ dbslice extract postgresql://localhost/myapp \ --redact customers.tax_id ``` +##### Compliance + +```bash +# Extract with HIPAA compliance profile +dbslice extract postgresql://localhost/myapp \ + -s "patients.id=1" \ + --compliance hipaa + +# Multiple compliance profiles with strict mode +dbslice extract postgresql://localhost/myapp \ + -s "users.id=1" \ + --compliance gdpr \ + --compliance pci-dss \ + --compliance-strict + +# Non-deterministic anonymization for stronger privacy +dbslice extract postgresql://localhost/myapp \ + -s "users.id=1" \ + --compliance gdpr \ + --non-deterministic + +# Generate audit manifest without compliance profile +dbslice extract postgresql://localhost/myapp \ + -s "users.id=1" \ + --anonymize \ + --manifest \ + -f subset.sql +# Writes subset.sql + subset.manifest.json +``` + ##### JSON Output ```bash @@ -439,6 +485,9 @@ dbslice inspect [OPTIONS] [DATABASE_URL] |--------|------|---------|-------------| | `--table`, `-t` | TEXT | - | Show details for a specific table | | `--schema` | TEXT | `public` | PostgreSQL schema name | +| `--compliance-check` | TEXT | - | Run compliance coverage check for profile(s): `gdpr`, `hipaa`, `pci-dss` | +| `--compliance-output` | TEXT | `human` | Compliance report output format: `human` or `json` | +| `--sample-rows` | INTEGER | `100` | Rows sampled per table for value-based compliance scan | #### Examples @@ -513,6 +562,101 @@ for table in users orders products; do done ``` +##### Compliance Coverage Check + +```bash +# Human-readable compliance check +dbslice inspect postgresql://localhost/myapp \ + --compliance-check gdpr + +# JSON report for CI pipelines +dbslice inspect postgresql://localhost/myapp \ + --compliance-check hipaa \ + --compliance-output json +``` + +--- + +### verify-manifest + +Verify manifest file hashes and optional HMAC signature. + +#### Synopsis + +```bash +dbslice verify-manifest [OPTIONS] MANIFEST_FILE +``` + +#### Options + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `--verify-signature` / `--no-verify-signature` | FLAG | Enabled | Verify HMAC signature when present | +| `--key-env` | TEXT | `DBSLICE_MANIFEST_SIGNING_KEY` | Env var containing signature key | + +#### Examples + +```bash +# Verify output hashes only +dbslice verify-manifest subset.manifest.json --no-verify-signature + +# Verify hashes + HMAC signature +export DBSLICE_MANIFEST_SIGNING_KEY="super-secret" +dbslice verify-manifest subset.manifest.json +``` + +--- + +### map + +Launch a local browser UI for visually mapping database columns to anonymization rules. + +#### Synopsis + +```bash +dbslice map [OPTIONS] [DATABASE_URL] +``` + +#### Arguments + +| Argument | Description | +|----------|-------------| +| `DATABASE_URL` | Optional database connection URL. Can also be entered in the browser UI. | + +#### Options + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `--schema` | TEXT | `public` | PostgreSQL schema name | +| `--port`, `-p` | INTEGER | `9473` | Port for the local server | +| `--open-browser` / `--no-open-browser` | FLAG | Enabled | Auto-open browser on launch | + +#### Security + +The server binds to `127.0.0.1` only — it is not accessible from the network. A random session token is generated at startup and required for all requests. The token is passed via the URL when the browser opens. + +#### Examples + +```bash +# Launch mapping UI (enter URL in browser) +dbslice map + +# Pre-fill database URL +dbslice map postgresql://localhost/myapp + +# Custom port, no auto-open +dbslice map postgresql://localhost/myapp --port 8888 --no-open-browser +``` + +#### Workflow + +1. Enter database URL and click **Introspect Schema** +2. Optionally click **GDPR**, **HIPAA**, or **PCI-DSS** to apply compliance profile suggestions +3. Review each column: set action to **Keep**, **Anonymize**, or **NULL** +4. For anonymized columns, select a provider from the dropdown (e.g., `email`, `ssn`, `hipaa_zip3`) +5. Click **Generate Config** to export a `dbslice.yaml` +6. Use the config: `dbslice extract --config dbslice.yaml --seed "table.column=value"` + --- ## Global Options diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md index d2b8b44..d9d792e 100644 --- a/docs/user-guide/configuration.md +++ b/docs/user-guide/configuration.md @@ -12,6 +12,7 @@ Complete reference for dbslice YAML configuration files. - [database](#database) - [extraction](#extraction) - [anonymization](#anonymization) + - [compliance](#compliance) - [output](#output) - [tables](#tables) - [performance](#performance) @@ -69,6 +70,7 @@ version: "1.0" # Optional config version tag (informational) database: # Database connection settings extraction: # Extraction behavior settings anonymization: # Anonymization configuration +compliance: # Compliance profiles and audit manifest (optional) output: # Output format settings tables: # Per-table configuration (optional) performance: # Performance tuning (optional) @@ -245,6 +247,7 @@ anonymization: fields: object # Exact table.column -> provider patterns: object # Wildcard table.column glob -> provider security_null_fields: list # Wildcard table.column globs to force NULL + deterministic: boolean # Use deterministic anonymization (default: true) ``` #### Fields @@ -256,6 +259,7 @@ anonymization: | `fields` | Object | No | `{}` | Exact map of `table.column` to Faker method | | `patterns` | Object | No | `{}` | Wildcard map of `table.column` glob to Faker method | | `security_null_fields` | List[String] | No | `[]` | Wildcard `table.column` globs to force `NULL` | +| `deterministic` | Boolean | No | `true` | Deterministic mode (same input = same output). Set `false` for non-deterministic anonymization with stronger privacy guarantees | Notes: - `fields` keys must be exact `table.column` entries (no wildcards). @@ -361,6 +365,118 @@ anonymization: --- +### compliance + +Compliance profile and audit manifest configuration. + +#### Schema + +```yaml +compliance: + profiles: list[string] # Compliance profiles to apply + strict: boolean # Fail if uncovered PII detected + generate_manifest: boolean # Generate audit manifest + policy_mode: string # Runtime policy gates: off|standard|strict + allow_url_patterns: list[string]# Regex allow-list for source DB URL + deny_url_patterns: list[string] # Regex deny-list for source DB URL + required_sslmode: string # Required sslmode query value in DB URL + require_ci: boolean # Require CI=true environment + sign_manifest: boolean # HMAC-sign manifest when key is available + manifest_key_env: string # Env var name containing signing key +``` + +#### Fields + +| Field | Type | Required | Default | Description | +|-------|------|----------|---------|-------------| +| `profiles` | List[String] | No | `[]` | Compliance profiles: `gdpr`, `hipaa`, `pci-dss` | +| `strict` | Boolean | No | `false` | Fail extraction if value-based PII scanning detects unmasked PII | +| `generate_manifest` | Boolean | No | `false` | Generate a JSON audit manifest alongside output (auto-enabled when profiles are active) | +| `policy_mode` | String | No | `"off"` | Compliance policy gates: `off`, `standard`, `strict` | +| `allow_url_patterns` | List[String] | No | `[]` | Source DB URL must match one of these regex patterns (if set) | +| `deny_url_patterns` | List[String] | No | `[]` | Source DB URL must not match any of these regex patterns | +| `required_sslmode` | String | No | - | Required PostgreSQL `sslmode` query parameter value | +| `require_ci` | Boolean | No | `false` | Fail when running outside CI (`CI=true` expected) | +| `sign_manifest` | Boolean | No | `false` | Sign manifest with HMAC-SHA256 (tamper detection, not non-repudiation) | +| `manifest_key_env` | String | No | `"DBSLICE_MANIFEST_SIGNING_KEY"` | Env var containing HMAC signing key (shared secret) | + +#### Compliance Profiles + +| Profile | Description | Key Coverage | +|---------|-------------|-------------| +| `gdpr` | EU General Data Protection Regulation | Names, email, phone, address, IP, DOB, SSN, financial IDs | +| `hipaa` | HIPAA Safe Harbor (18 identifiers) | All 18 Safe Harbor identifiers including medical record numbers, device IDs, dates | +| `pci-dss` | PCI-DSS v4.0 | PAN, cardholder name, expiration, CVV/PIN (NULLed) | + +When a compliance profile is active: +- Anonymization is auto-enabled (no need for `anonymization.enabled: true`) +- Profile-defined column patterns are merged as **fallback wildcard rules** (`user exact fields > user patterns > profile patterns > built-ins`) +- Value-based scanning runs in two phases: + - coverage scan (pre-mask) to detect PII presence + - residual scan (post-mask) on unprotected columns only (strict mode fails only here) +- Free-text columns (notes, comments, descriptions) are flagged as warnings +- Audit manifest is generated by default + +#### Policy Modes + +`policy_mode` adds runtime guardrails when compliance profiles are active. These are CLI-level checks that prevent accidental misconfiguration — they are not a security boundary. + +- `off`: No policy gates (default). +- `standard` / `strict`: Block risky defaults — stdout output, `--allow-unsafe-where`, and non-masked extraction are rejected unless overridden with `--allow-raw`. Both modes currently apply the same gates; `strict` is reserved for future tightening. + +Breakglass override: `--allow-raw --breakglass-reason "..." --ticket-id "..."`. The reason and ticket ID are recorded in the manifest for audit purposes. + +#### Important: Pseudonymization vs Anonymization + +dbslice's anonymization is technically **pseudonymization** under GDPR (deterministic mode: same input = same output, reversible with seed knowledge). For stronger privacy guarantees, use `anonymization.deterministic: false` (non-deterministic mode), which uses random seeds per value but loses cross-table consistency. + +True GDPR anonymization (where re-identification is "not reasonably possible") may require additional measures beyond what dbslice provides (k-anonymity, data generalization, etc.). + +#### Audit Manifest + +When `generate_manifest` is enabled, dbslice writes a `*.manifest.json` file alongside the output containing: + +- Extraction metadata (timestamp, version, seed hash) +- Per-table breakdown of masked, NULLed, FK-preserved, and unmasked fields +- Residual PII scan results from value-based scanning +- Compliance warnings (e.g., free-text columns that may contain embedded PII) +- Output file hash set (`sha256`) for produced artifacts +- Optional breakglass metadata (reason + ticket) when override is used +- Optional HMAC-SHA256 signature for tamper detection (symmetric key — integrity checking, not non-repudiation) + +This manifest provides structured evidence for audit reviews. For non-repudiation (provable origin), sign the manifest externally with cosign or GPG in your CI pipeline. + +#### Examples + +```yaml +# HIPAA-compliant extraction +compliance: + profiles: [hipaa] + strict: true + generate_manifest: true + +anonymization: + enabled: true + seed: "hipaa-compliant-seed-2024" + +# Multiple compliance profiles +compliance: + profiles: [gdpr, pci-dss] + strict: false + generate_manifest: true + +# Non-deterministic mode for stronger privacy +compliance: + profiles: [gdpr] + strict: true + +anonymization: + enabled: true + deterministic: false # Random output each run +``` + +--- + ### output Output format and generation configuration. @@ -779,6 +895,51 @@ dbslice extract \ --- +### HIPAA-Compliant Extraction + +**config/hipaa_compliant.yaml:** +```yaml +version: "1.0" + +database: + url: ${MEDICAL_DATABASE_URL} + +extraction: + default_depth: 3 + direction: both + exclude_tables: + - audit_logs + - system_events + validate: true + fail_on_validation_error: true + +compliance: + profiles: [hipaa] + strict: true # Fail if PII detected in output + generate_manifest: true # Generate audit trail + +anonymization: + enabled: true + seed: "hipaa-compliant-extraction-2024" + deterministic: false # Non-deterministic for stronger privacy +``` + +**Usage:** +```bash +export MEDICAL_DATABASE_URL="postgresql://medical-db.example.com/ehr" + +dbslice extract \ + --config config/hipaa_compliant.yaml \ + --seed "patients.id=12345" \ + --out-file patient_subset.sql + +# Output: +# patient_subset.sql (anonymized data) +# patient_subset.manifest.json (audit manifest for compliance team) +``` + +--- + ### Test Fixture Generation **config/test_fixtures.yaml:** diff --git a/src/dbslice/cli.py b/src/dbslice/cli.py index f1e04df..ba6fa6e 100644 --- a/src/dbslice/cli.py +++ b/src/dbslice/cli.py @@ -1,6 +1,10 @@ +import itertools +import json import os +import re from pathlib import Path from typing import Annotated +from urllib.parse import parse_qs, urlparse import typer from rich.console import Console @@ -204,9 +208,7 @@ def _parse_and_validate_seeds( parsed_seeds = [] for s in seeds: try: - parsed_seeds.append( - SeedSpec.parse(s, allow_unsafe_subqueries=allow_unsafe_subqueries) - ) + parsed_seeds.append(SeedSpec.parse(s, allow_unsafe_subqueries=allow_unsafe_subqueries)) except ValueError as e: raise InvalidSeedError(s, str(e)) @@ -348,11 +350,19 @@ def _show_extraction_settings( seed_desc = f"{s.table}.{s.column}={s.value}" if s.column else f"{s.table}:{s.where_clause}" console.print(f" - {seed_desc}") if config.anonymize: - console.print(" [yellow]Anonymization: ENABLED[/yellow]") + mode = "deterministic" if config.deterministic else "non-deterministic" + console.print(f" [yellow]Anonymization: ENABLED ({mode})[/yellow]") if config.redact_fields: console.print(" Additional redacted fields:") for field in config.redact_fields: console.print(f" - {field}") + if config.compliance_profiles: + profiles_str = ", ".join(p.upper() for p in config.compliance_profiles) + console.print(f" [yellow]Compliance profiles: {profiles_str}[/yellow]") + if config.compliance_strict: + console.print(" [yellow]Strict mode: ENABLED (will fail on PII detection)[/yellow]") + if config.generate_manifest: + console.print(" [yellow]Audit manifest: ENABLED[/yellow]") console.print() @@ -408,8 +418,12 @@ def _show_extraction_summary( if result.has_cycles: console.print() if result.used_deferred_cycle_strategy: - console.print("[yellow]⚠ Circular dependencies detected (deferred-constraint strategy)[/yellow]") - console.print(" Strategy: [cyan]Deterministic order + SET CONSTRAINTS ALL DEFERRED[/cyan]") + console.print( + "[yellow]⚠ Circular dependencies detected (deferred-constraint strategy)[/yellow]" + ) + console.print( + " Strategy: [cyan]Deterministic order + SET CONSTRAINTS ALL DEFERRED[/cyan]" + ) console.print(f" Cycles: [cyan]{len(result.cycle_infos)}[/cyan]") else: console.print("[yellow]⚠ Circular dependencies detected and resolved[/yellow]") @@ -485,7 +499,7 @@ def _generate_and_output_sql( disable_fk_checks: bool, output_file_mode: int, db_schema: str | None = None, -) -> None: +) -> list[Path]: """ Generate SQL output and write to file or stdout. @@ -524,11 +538,13 @@ def _generate_and_output_sql( console.print( f"[green]Wrote {result.total_rows()} rows to [bold]{out_file}[/bold][/green]" ) + return [out_file.resolve()] else: if not no_progress: console.print() console.print("[dim]--- SQL Output ---[/dim]") stdout_console.print(sql_output) + return [] def _generate_and_output_json( @@ -541,7 +557,7 @@ def _generate_and_output_json( console: Console, stdout_console: Console, output_file_mode: int, -) -> None: +) -> list[Path]: """ Generate JSON output and write to file(s) or stdout. @@ -584,19 +600,23 @@ def _generate_and_output_json( console.print( f"[green]Wrote {result.total_rows()} rows to [bold]{out_file}[/bold][/green]" ) + return [out_file.resolve()] else: assert isinstance(json_output, dict) out_file.mkdir(parents=True, exist_ok=True) + written_files: list[Path] = [] for table_name, table_json in json_output.items(): table_file = out_file / f"{table_name}.json" write_text_file_secure( table_file, table_json, file_mode=output_file_mode, encoding="utf-8" ) + written_files.append(table_file.resolve()) if not no_progress: console.print() console.print( f"[green]Wrote {result.table_count()} tables ({result.total_rows()} rows) to [bold]{out_file}[/bold][/green]" ) + return written_files else: # Output to stdout (only single mode makes sense) if mode == "per-table": @@ -616,6 +636,7 @@ def _generate_and_output_json( console.print() console.print("[dim]--- JSON Output ---[/dim]") stdout_console.print(json_output) + return [] def _generate_and_output_csv( @@ -628,7 +649,7 @@ def _generate_and_output_csv( console: Console, stdout_console: Console, output_file_mode: int, -) -> None: +) -> list[Path]: """ Generate CSV output and write to file(s) or stdout. @@ -671,19 +692,23 @@ def _generate_and_output_csv( console.print( f"[green]Wrote {result.total_rows()} rows to [bold]{out_file}[/bold][/green]" ) + return [out_file.resolve()] else: assert isinstance(csv_output, dict) out_file.mkdir(parents=True, exist_ok=True) + written_files: list[Path] = [] for table_name, table_csv in csv_output.items(): table_file = out_file / f"{table_name}.csv" write_text_file_secure( table_file, table_csv, file_mode=output_file_mode, encoding="utf-8" ) + written_files.append(table_file.resolve()) if not no_progress: console.print() console.print( f"[green]Wrote {result.table_count()} tables ({result.total_rows()} rows) to [bold]{out_file}[/bold][/green]" ) + return written_files else: # Output to stdout (only single mode makes sense) if mode == "per-table": @@ -703,6 +728,7 @@ def _generate_and_output_csv( console.print() console.print("[dim]--- CSV Output ---[/dim]") stdout_console.print(csv_output) + return [] def _handle_output_format( @@ -720,7 +746,7 @@ def _handle_output_format( console: Console, stdout_console: Console, db_schema: str | None = None, -) -> None: +) -> list[Path]: """ Handle output generation based on configured format. @@ -743,7 +769,7 @@ def _handle_output_format( typer.Exit: If format is not yet implemented (exits with code 1) """ if output_format == OutputFormat.SQL: - _generate_and_output_sql( + return _generate_and_output_sql( result, schema, database_url, @@ -758,7 +784,7 @@ def _handle_output_format( db_schema=db_schema, ) elif output_format == OutputFormat.JSON: - _generate_and_output_json( + return _generate_and_output_json( result, schema, out_file, @@ -770,7 +796,7 @@ def _handle_output_format( output_file_mode=extract_config.output_file_mode, ) elif output_format == OutputFormat.CSV: - _generate_and_output_csv( + return _generate_and_output_csv( result, schema, out_file, @@ -782,6 +808,113 @@ def _handle_output_format( output_file_mode=extract_config.output_file_mode, ) + return [] + + +def _is_truthy_env(value: str | None) -> bool: + """Interpret common truthy environment values.""" + if value is None: + return False + return value.strip().lower() in {"1", "true", "yes", "on"} + + +def _enforce_source_guardrails(config: ExtractConfig) -> None: + """Apply source guardrail checks for compliance-sensitive runs.""" + if config.compliance_require_ci and not _is_truthy_env(os.environ.get("CI")): + raise ValueError("Compliance policy requires CI environment, but CI is not set") + + url = config.database_url + for pattern in config.compliance_denied_url_patterns: + if re.search(pattern, url): + raise ValueError(f"Database URL rejected by compliance deny pattern: {pattern}") + + if config.compliance_allowed_url_patterns and not any( + re.search(pattern, url) for pattern in config.compliance_allowed_url_patterns + ): + raise ValueError("Database URL does not match any compliance allow pattern") + + if config.compliance_required_sslmode: + parsed = urlparse(url) + query = parse_qs(parsed.query) + sslmode = query.get("sslmode", [None])[0] + if sslmode != config.compliance_required_sslmode: + raise ValueError( + "Database URL sslmode does not satisfy compliance requirement " + f"(expected '{config.compliance_required_sslmode}', got '{sslmode}')" + ) + + +def _enforce_compliance_policy( + config: ExtractConfig, + out_file: Path | None, + allow_raw: bool, + breakglass_reason: str | None, + ticket_id: str | None, +) -> tuple[bool, str | None, str | None]: + """ + Apply policy-mode gates for compliance runs. + + Returns: + Tuple of (breakglass_applied, reason, ticket_id) + """ + mode = config.compliance_policy_mode.lower() + policy_active = mode in {"standard", "strict"} and bool(config.compliance_profiles) + + risky_reasons: list[str] = [] + if policy_active: + if out_file is None: + risky_reasons.append("stdout output is blocked when compliance profiles are active") + if config.allow_unsafe_where: + risky_reasons.append("unsafe WHERE subqueries are blocked under compliance policy") + if not config.anonymize: + risky_reasons.append("masking/anonymization is required under compliance policy") + + if allow_raw: + if not risky_reasons: + raise ValueError("--allow-raw was provided but no policy gate requires breakglass") + if not breakglass_reason: + raise ValueError("--allow-raw requires --breakglass-reason") + if not ticket_id: + raise ValueError("--allow-raw requires --ticket-id") + return True, breakglass_reason, ticket_id + + if risky_reasons: + details = "\n".join(f" - {reason}" for reason in risky_reasons) + raise ValueError( + "Compliance policy blocked extraction:\n" + f"{details}\n" + "Use --allow-raw with --breakglass-reason and --ticket-id only for approved exceptions." + ) + + if breakglass_reason or ticket_id: + raise ValueError("--breakglass-reason/--ticket-id require --allow-raw") + + return False, None, None + + +def _write_compliance_manifest( + manifest: object, + out_file: Path | None, + console: Console, + no_progress: bool, +) -> None: + """Write compliance manifest to a JSON file alongside the output.""" + from dbslice.compliance.manifest import ComplianceManifest + from dbslice.utils.fileio import write_text_file_secure + + assert isinstance(manifest, ComplianceManifest) + + if out_file: + manifest_path = out_file.with_suffix(".manifest.json") + else: + manifest_path = Path("dbslice_manifest.json") + + manifest_json = manifest.to_json(pretty=True) + write_text_file_secure(manifest_path, manifest_json, file_mode=0o600) + + if not no_progress: + console.print(f"[green]Wrote compliance manifest to [bold]{manifest_path}[/bold][/green]") + @app.command() def extract( @@ -986,6 +1119,58 @@ def extract( ), ), ] = None, + compliance: Annotated[ + list[str] | None, + typer.Option( + "--compliance", + help="Compliance profile(s) to apply: gdpr, hipaa, pci-dss", + ), + ] = None, + compliance_strict: Annotated[ + bool | None, + typer.Option( + "--compliance-strict/--no-compliance-strict", + help="Fail extraction if uncovered PII is detected by value scanning", + ), + ] = None, + manifest: Annotated[ + bool | None, + typer.Option( + "--manifest/--no-manifest", + help="Generate audit manifest alongside output (auto-enabled with --compliance)", + ), + ] = None, + non_deterministic: Annotated[ + bool | None, + typer.Option( + "--non-deterministic/--deterministic", + help="Use non-deterministic anonymization (random output each run, stronger privacy)", + ), + ] = None, + allow_raw: Annotated[ + bool, + typer.Option( + "--allow-raw", + help=( + "Breakglass override for compliance policy gates (requires " + "--breakglass-reason and --ticket-id)" + ), + ), + ] = False, + breakglass_reason: Annotated[ + str | None, + typer.Option( + "--breakglass-reason", + help="Required breakglass justification when using --allow-raw", + ), + ] = None, + ticket_id: Annotated[ + str | None, + typer.Option( + "--ticket-id", + help="Required tracking ticket/incident ID when using --allow-raw", + ), + ] = None, ): """ Extract a database subset starting from seed record(s). @@ -1037,15 +1222,11 @@ def extract( direction_override = direction if direction_override is None: - direction_override = _parse_env_choice( - "DBSLICE_DIRECTION", {"up", "down", "both"} - ) + direction_override = _parse_env_choice("DBSLICE_DIRECTION", {"up", "down", "both"}) output_override = output if output_override is None: - output_override = _parse_env_choice( - "DBSLICE_OUTPUT_FORMAT", {"sql", "json", "csv"} - ) + output_override = _parse_env_choice("DBSLICE_OUTPUT_FORMAT", {"sql", "json", "csv"}) anonymize_override = anonymize if anonymize_override is None: @@ -1103,12 +1284,39 @@ def extract( allow_unsafe_where_override if allow_unsafe_where_override is not None else ( - loaded_config.extraction.allow_unsafe_where - if loaded_config is not None - else False + loaded_config.extraction.allow_unsafe_where if loaded_config is not None else False ) ) + # Compliance settings + effective_compliance = compliance or [] + effective_compliance_strict = compliance_strict if compliance_strict is not None else False + effective_manifest = manifest if manifest is not None else bool(effective_compliance) + effective_deterministic = not non_deterministic if non_deterministic is not None else True + + if loaded_config: + if not compliance: + effective_compliance = loaded_config.compliance.profiles + if compliance_strict is None: + effective_compliance_strict = loaded_config.compliance.strict + if manifest is None: + effective_manifest = loaded_config.compliance.generate_manifest or bool( + effective_compliance + ) + if non_deterministic is None: + effective_deterministic = loaded_config.anonymization.deterministic + + # Validate compliance profile names + if effective_compliance: + from dbslice.compliance.profiles import get_profile + + for profile_name in effective_compliance: + try: + get_profile(profile_name) + except ValueError as e: + console.print(f"[red]Compliance Error:[/red] {e}") + raise typer.Exit(1) + resolved_database_url = database_url_override if not resolved_database_url and loaded_config: resolved_database_url = loaded_config.database.url @@ -1143,12 +1351,17 @@ def extract( validate_exclude_tables(passthrough) # Same validation as exclude if redact_override: validate_redact_fields(redact_override) - if ( - direction_override is not None - and direction_override.lower() not in {"up", "down", "both"} - ): + if direction_override is not None and direction_override.lower() not in { + "up", + "down", + "both", + }: raise ValueError("Invalid direction. Use: up, down, both") - if output_override is not None and output_override.lower() not in {"sql", "json", "csv"}: + if output_override is not None and output_override.lower() not in { + "sql", + "json", + "csv", + }: raise ValueError("Invalid output format. Use: sql, json, csv") if effective_json_mode not in ("auto", "single", "per-table"): raise ValueError( @@ -1184,9 +1397,7 @@ def extract( else None ) output_format_enum = ( - OutputFormat(effective_output.lower()) - if output_override is not None - else None + OutputFormat(effective_output.lower()) if output_override is not None else None ) extract_config = loaded_config.to_extract_config( @@ -1245,18 +1456,45 @@ def extract( allow_unsafe_where=effective_allow_unsafe_where, ) + # Apply compliance settings to extract config + extract_config.compliance_profiles = effective_compliance + extract_config.compliance_strict = effective_compliance_strict + extract_config.generate_manifest = effective_manifest + extract_config.deterministic = effective_deterministic + + # Compliance profiles auto-enable anonymization + if effective_compliance and not extract_config.anonymize and not allow_raw: + extract_config.anonymize = True + + try: + _enforce_source_guardrails(extract_config) + ( + breakglass_applied, + breakglass_applied_reason, + breakglass_applied_ticket, + ) = _enforce_compliance_policy( + extract_config, + out_file, + allow_raw=allow_raw, + breakglass_reason=breakglass_reason, + ticket_id=ticket_id, + ) + except ValueError as e: + console.print(f"[red]Compliance Policy Error:[/red] {e}") + raise typer.Exit(1) + if verbose and not no_progress: _show_extraction_settings(extract_config, console) - result, schema, engine = _execute_extraction(extract_config, console) + result, schema_graph, engine = _execute_extraction(extract_config, console) if not no_progress: _show_extraction_summary(result, extract_config, engine, console) - _handle_output_format( + output_files = _handle_output_format( output_format=output_format, result=result, - schema=schema, + schema=schema_graph, extract_config=extract_config, database_url=extract_config.database_url, out_file=out_file, @@ -1270,6 +1508,30 @@ def extract( db_schema=extract_config.schema, ) + # Write compliance manifest after output so file hashes can be recorded. + engine_manifest = getattr(engine, "manifest", None) + if engine_manifest and effective_manifest: + engine_manifest.add_output_file_hashes(output_files, base_dir=Path.cwd()) + + if breakglass_applied and breakglass_applied_reason and breakglass_applied_ticket: + engine_manifest.set_breakglass( + reason=breakglass_applied_reason, + ticket_id=breakglass_applied_ticket, + ) + + if extract_config.compliance_manifest_sign: + signing_key = os.environ.get(extract_config.compliance_manifest_key_env) + if not signing_key: + console.print( + "[red]Compliance Policy Error:[/red] " + "Manifest signing is enabled but signing key environment variable " + f"'{extract_config.compliance_manifest_key_env}' is not set" + ) + raise typer.Exit(1) + engine_manifest.sign(signing_key) + + _write_compliance_manifest(engine_manifest, out_file, console, no_progress) + except ConnectionError as e: logger.error("Database connection failed", error=e.reason, exc_info=True) console.print(f"[red]Connection failed:[/red] {e.reason}") @@ -1590,6 +1852,124 @@ def _detect_potential_implicit_fks(schema) -> list[tuple[str, str, str]]: return sorted(candidates, key=lambda item: (item[0], item[1], item[2])) +def _run_compliance_check_report( + adapter, + db_schema, + profiles: list[str], + sample_rows: int, + output_mode: str, + target_table: str | None, + console: Console, +) -> None: + """Run profile-aware coverage scanning and print human/json compliance report.""" + from dbslice.compliance.profiles import get_profile + from dbslice.compliance.scanner import PIIScanner + from dbslice.utils.anonymizer import DeterministicAnonymizer + + scan_patterns: set[str] = set() + fallback_patterns: dict[str, str] = {} + security_null_fields: list[str] = [] + profile_summaries: list[dict[str, object]] = [] + + for profile_name in profiles: + profile = get_profile(profile_name) + scan_patterns.update(profile.value_scan_patterns) + for pattern, provider in profile.required_column_patterns.items(): + fallback_patterns.setdefault(f"*.{pattern}*", provider) + for pattern in profile.required_null_patterns: + glob = f"*.{pattern}*" + if glob not in security_null_fields: + security_null_fields.append(glob) + profile_summaries.append( + { + "profile": profile.name, + "display_name": profile.display_name, + "identifier_categories": len(profile.identifiers), + "required_column_patterns": len(profile.required_column_patterns), + "required_null_patterns": len(profile.required_null_patterns), + } + ) + + scanner = PIIScanner( + patterns=sorted(scan_patterns) + if scan_patterns + else ["email", "ssn", "phone", "credit_card"] + ) + anonymizer = DeterministicAnonymizer(seed="compliance-check") + anonymizer.configure( + [], + patterns={}, + fallback_patterns=fallback_patterns, + security_null_fields=security_null_fields, + ) + + if target_table: + tables_to_scan = [target_table] + else: + tables_to_scan = sorted(db_schema.tables.keys()) + + detections: list[dict[str, object]] = [] + for table_name in tables_to_scan: + rows = list(itertools.islice(adapter.fetch_rows(table_name, "TRUE", ()), sample_rows)) + if not rows: + continue + for detection in scanner.scan_rows(table_name, rows): + protected = anonymizer.should_anonymize( + detection.table, detection.column + ) or anonymizer.should_null(detection.table, detection.column) + detections.append( + { + "table": detection.table, + "column": detection.column, + "pattern": detection.pattern_name, + "match_count": detection.match_count, + "sample_size": detection.sample_size, + "match_rate": round(detection.match_rate, 4), + "confidence": detection.confidence, + "protected": protected, + } + ) + + uncovered = [item for item in detections if not item["protected"]] + report = { + "profiles": profiles, + "profile_summaries": profile_summaries, + "tables_scanned": len(tables_to_scan), + "sample_rows_per_table": sample_rows, + "detections_total": len(detections), + "detections_protected": len(detections) - len(uncovered), + "detections_uncovered": len(uncovered), + "status": "pass" if not uncovered else "gaps_found", + "uncovered_detections": uncovered, + } + + if output_mode == "json": + console.print(json.dumps(report, indent=2)) + return + + console.print("\n[bold]Compliance Coverage Check[/bold]") + console.print(f" Profiles: [cyan]{', '.join(profile.upper() for profile in profiles)}[/cyan]") + console.print(f" Tables scanned: [cyan]{report['tables_scanned']}[/cyan]") + console.print(f" Sample rows/table: [cyan]{sample_rows}[/cyan]") + console.print(f" Detections: [cyan]{report['detections_total']}[/cyan]") + console.print(f" Protected detections: [green]{report['detections_protected']}[/green]") + if uncovered: + console.print(f" Uncovered detections: [red]{len(uncovered)}[/red]") + console.print("\n[red]Potential Compliance Gaps:[/red]") + for finding in uncovered[:50]: + console.print( + " " + f"{finding['table']}.{finding['column']}: " + f"{finding['pattern']} ({finding['match_count']}/{finding['sample_size']}, " + f"{finding['confidence']})" + ) + if len(uncovered) > 50: + console.print(f" [dim]... and {len(uncovered) - 50} more[/dim]") + else: + console.print(" Uncovered detections: [green]0[/green]") + console.print("[green]Status: PASS[/green]") + + @app.command() def inspect( database_url: Annotated[ @@ -1611,6 +1991,28 @@ def inspect( help="PostgreSQL schema name (default: 'public')", ), ] = None, + compliance_check: Annotated[ + list[str] | None, + typer.Option( + "--compliance-check", + help="Run compliance coverage check for profile(s): gdpr, hipaa, pci-dss", + ), + ] = None, + compliance_output: Annotated[ + str, + typer.Option( + "--compliance-output", + help="Compliance report output format: human or json", + ), + ] = "human", + sample_rows: Annotated[ + int, + typer.Option( + "--sample-rows", + help="Rows sampled per table for compliance value scanning", + min=1, + ), + ] = 100, ): """ Inspect database schema without extracting data. @@ -1635,6 +2037,8 @@ def inspect( from dbslice.input_validators import validate_table_name validate_table_name(table) + if compliance_output not in {"human", "json"}: + raise ValueError("--compliance-output must be one of: human, json") except (ValidationError, ValueError) as e: console.print(f"[red]Validation Error:[/red] {e}") raise typer.Exit(1) @@ -1654,6 +2058,27 @@ def inspect( with console.status("[bold blue]Introspecting schema...[/bold blue]"): db_schema = adapter.get_schema() + if compliance_check: + from dbslice.compliance.profiles import get_profile + + for profile_name in compliance_check: + try: + get_profile(profile_name) + except ValueError as e: + console.print(f"[red]Compliance Error:[/red] {e}") + raise typer.Exit(1) + + _run_compliance_check_report( + adapter=adapter, + db_schema=db_schema, + profiles=compliance_check, + sample_rows=sample_rows, + output_mode=compliance_output, + target_table=table, + console=console, + ) + return + if table: table_info = db_schema.get_table(table) if not table_info: @@ -1729,9 +2154,7 @@ def inspect( for src_table, src_col, target_table in implicit_candidates[:25]: console.print(f" {src_table}.{src_col} -> [cyan]{target_table}[/cyan].id") if len(implicit_candidates) > 25: - console.print( - f" [dim]... and {len(implicit_candidates) - 25} more[/dim]" - ) + console.print(f" [dim]... and {len(implicit_candidates) - 25} more[/dim]") console.print( " [dim]Tip: define virtual_foreign_keys for confirmed implicit links.[/dim]" ) @@ -1752,6 +2175,134 @@ def inspect( raise typer.Exit(1) +@app.command("verify-manifest") +def verify_manifest( + manifest_file: Annotated[ + Path, + typer.Argument(help="Path to compliance manifest JSON file"), + ], + verify_signature: Annotated[ + bool, + typer.Option( + "--verify-signature/--no-verify-signature", + help="Verify HMAC manifest signature when present", + ), + ] = True, + key_env: Annotated[ + str, + typer.Option( + "--key-env", + help="Environment variable containing manifest signing key", + ), + ] = "DBSLICE_MANIFEST_SIGNING_KEY", +): + """Verify compliance manifest output hashes and optional HMAC signature.""" + try: + if not manifest_file.exists(): + console.print(f"[red]Error:[/red] Manifest file not found: {manifest_file}") + raise typer.Exit(1) + if not manifest_file.is_file(): + console.print(f"[red]Error:[/red] Not a file: {manifest_file}") + raise typer.Exit(1) + + try: + payload = json.loads(manifest_file.read_text(encoding="utf-8")) + except json.JSONDecodeError as e: + console.print(f"[red]Error:[/red] Invalid manifest JSON: {e}") + raise typer.Exit(1) + + from dbslice.compliance.manifest import verify_manifest_payload + + signing_key: str | None = None + if verify_signature: + signing_key = os.environ.get(key_env) + + valid, errors = verify_manifest_payload( + payload=payload, + manifest_path=manifest_file, + signing_key=signing_key, + verify_signature=verify_signature, + ) + + if valid: + console.print("[green]Manifest verification passed[/green]") + return + + console.print("[red]Manifest verification failed:[/red]") + for error in errors: + console.print(f" - {error}") + raise typer.Exit(1) + except typer.Exit: + raise + except Exception as e: + console.print(f"[red]Unexpected error:[/red] {e}") + raise typer.Exit(1) + + +@app.command() +def map( + database_url: Annotated[ + str | None, + typer.Argument(help="Optional database URL (can also enter in the UI)"), + ] = None, + schema: Annotated[ + str | None, + typer.Option("--schema", help="PostgreSQL schema name (default: 'public')"), + ] = None, + port: Annotated[ + int, + typer.Option("--port", "-p", help="Port for local mapping UI server", min=1024, max=65535), + ] = 9473, + open_browser: Annotated[ + bool, + typer.Option("--open-browser/--no-open-browser", help="Auto-open browser"), + ] = True, +): + """ + Launch local column-mapping UI. + + Opens a browser-based interface for reviewing database columns and + configuring anonymization mappings. Generates a ready-to-use dbslice.yaml. + + The server runs locally on 127.0.0.1 only and requires a session token. + + Examples: + + # Launch mapping UI (enter URL in browser) + dbslice map + + # Launch with pre-filled database URL + dbslice map postgresql://localhost/myapp + + # Custom port, no auto-open + dbslice map postgresql://localhost/myapp --port 8888 --no-open-browser + """ + from dbslice.mapping.server import MappingServer + + resolved_url = database_url + if resolved_url is None: + resolved_url = os.environ.get("DATABASE_URL") + + server = MappingServer( + port=port, + database_url=resolved_url or "", + schema=schema, + ) + + console.print("\n[bold]dbslice Column Mapping[/bold]") + console.print(f" URL: [cyan]{server.url}[/cyan]") + console.print(" Bound to 127.0.0.1 only (local access)") + console.print("\n Press Ctrl+C to stop.\n") + + try: + server.start(open_browser=open_browser) + except OSError as e: + console.print(f"[red]Error:[/red] Could not start server on port {port}: {e}") + raise typer.Exit(1) + except KeyboardInterrupt: + console.print("\n[dim]Mapping UI stopped.[/dim]") + + @app.command() def docs( port: Annotated[ diff --git a/src/dbslice/compliance/__init__.py b/src/dbslice/compliance/__init__.py new file mode 100644 index 0000000..d04022b --- /dev/null +++ b/src/dbslice/compliance/__init__.py @@ -0,0 +1,18 @@ +from dbslice.compliance.manifest import ( + ComplianceManifest, + ManifestEntry, + verify_manifest_payload, +) +from dbslice.compliance.profiles import ComplianceProfile, get_profile, list_profiles +from dbslice.compliance.scanner import PIIDetection, PIIScanner + +__all__ = [ + "ComplianceManifest", + "ComplianceProfile", + "ManifestEntry", + "PIIDetection", + "PIIScanner", + "get_profile", + "list_profiles", + "verify_manifest_payload", +] diff --git a/src/dbslice/compliance/manifest.py b/src/dbslice/compliance/manifest.py new file mode 100644 index 0000000..fb33e52 --- /dev/null +++ b/src/dbslice/compliance/manifest.py @@ -0,0 +1,319 @@ +import hashlib +import hmac +import json +from dataclasses import asdict, dataclass, field +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from dbslice import __version__ +from dbslice.compliance.scanner import PIIDetection + + +@dataclass +class ManifestFieldEntry: + """Record of anonymization applied to a single field.""" + + table: str + column: str + method: str + category: str = "" # e.g., "direct_identifier", "hipaa_identifier_7" + + +@dataclass +class ManifestNullEntry: + """Record of a field forced to NULL.""" + + table: str + column: str + reason: str # e.g., "security_null_pattern" + + +@dataclass +class ManifestWarning: + """A compliance warning.""" + + table: str + column: str + reason: str + severity: str = "warning" # "warning" or "error" + + +@dataclass +class ManifestTableEntry: + """Per-table manifest data.""" + + rows_extracted: int = 0 + fields_masked: list[ManifestFieldEntry] = field(default_factory=list) + fields_nulled: list[ManifestNullEntry] = field(default_factory=list) + fields_preserved_fk: list[str] = field(default_factory=list) + fields_unmasked: list[str] = field(default_factory=list) + + +@dataclass +class ManifestEntry: + """A single entry in the compliance manifest (for external use).""" + + table: str + column: str + action: str # "masked", "nulled", "preserved_fk", "unmasked" + method: str = "" + reason: str = "" + + +@dataclass +class ComplianceManifest: + """ + Full compliance audit manifest. + + Generated alongside extraction output to document what anonymization + was applied and provide evidence for compliance audits. + """ + + extraction_id: str = "" + timestamp: str = "" + dbslice_version: str = "" + masking_type: str = "deterministic_pseudonymization" + compliance_profiles: list[str] = field(default_factory=list) + tables: dict[str, ManifestTableEntry] = field(default_factory=dict) + pii_scan_results: list[PIIDetection] = field(default_factory=list) + warnings: list[ManifestWarning] = field(default_factory=list) + seed_hash: str = "" + output_file_hashes: dict[str, str] = field(default_factory=dict) + breakglass: dict[str, str] = field(default_factory=dict) + signature_algorithm: str = "" + signature: str = "" + + def initialize( + self, + extraction_id: str, + compliance_profiles: list[str] | None = None, + anonymization_seed: str | None = None, + deterministic: bool = True, + ) -> None: + """ + Initialize manifest metadata. + + Args: + extraction_id: Unique ID for this extraction + compliance_profiles: Names of active compliance profiles + anonymization_seed: The anonymization seed (hashed, not stored raw) + deterministic: Whether deterministic mode is used + """ + self.extraction_id = extraction_id + self.timestamp = datetime.now(timezone.utc).isoformat() + self.dbslice_version = __version__ + self.compliance_profiles = compliance_profiles or [] + self.masking_type = ( + "deterministic_pseudonymization" + if deterministic + else "non_deterministic_pseudonymization" + ) + if anonymization_seed: + self.seed_hash = ( + f"sha256:{hashlib.sha256(anonymization_seed.encode()).hexdigest()[:16]}" + ) + + def record_masked_field( + self, + table: str, + column: str, + method: str, + category: str = "", + ) -> None: + """Record that a field was masked/anonymized.""" + entry = self.tables.setdefault(table, ManifestTableEntry()) + entry.fields_masked.append( + ManifestFieldEntry(table=table, column=column, method=method, category=category) + ) + + def record_nulled_field(self, table: str, column: str, reason: str) -> None: + """Record that a field was set to NULL.""" + entry = self.tables.setdefault(table, ManifestTableEntry()) + entry.fields_nulled.append(ManifestNullEntry(table=table, column=column, reason=reason)) + + def record_fk_preserved(self, table: str, column: str) -> None: + """Record that a FK column was preserved (not anonymized).""" + entry = self.tables.setdefault(table, ManifestTableEntry()) + if column not in entry.fields_preserved_fk: + entry.fields_preserved_fk.append(column) + + def record_unmasked_field(self, table: str, column: str) -> None: + """Record that a field was not masked.""" + entry = self.tables.setdefault(table, ManifestTableEntry()) + if column not in entry.fields_unmasked: + entry.fields_unmasked.append(column) + + def set_table_row_count(self, table: str, count: int) -> None: + """Set the extracted row count for a table.""" + entry = self.tables.setdefault(table, ManifestTableEntry()) + entry.rows_extracted = count + + def add_warning( + self, + table: str, + column: str, + reason: str, + severity: str = "warning", + ) -> None: + """Add a compliance warning.""" + self.warnings.append( + ManifestWarning(table=table, column=column, reason=reason, severity=severity) + ) + + def add_pii_detections(self, detections: list[PIIDetection]) -> None: + """Add PII scan results.""" + self.pii_scan_results.extend(detections) + + def set_breakglass(self, reason: str, ticket_id: str) -> None: + """Record breakglass metadata for raw/unsafe extraction exceptions.""" + self.breakglass = { + "reason": reason, + "ticket_id": ticket_id, + "timestamp": datetime.now(timezone.utc).isoformat(), + } + + def add_output_file_hashes( + self, output_files: list[Path], base_dir: Path | None = None + ) -> None: + """Record deterministic SHA256 hashes for generated output files.""" + root = (base_dir or Path.cwd()).resolve() + hashes: dict[str, str] = {} + + for file_path in sorted((Path(p).resolve() for p in output_files), key=lambda p: str(p)): + if not file_path.exists() or not file_path.is_file(): + continue + digest = _sha256_file(file_path) + key: str + try: + key = str(file_path.relative_to(root)) + except ValueError: + key = str(file_path) + hashes[key] = f"sha256:{digest}" + + self.output_file_hashes = hashes + + def sign(self, signing_key: str) -> None: + """Sign manifest payload using HMAC-SHA256.""" + payload = self._signable_dict() + digest = _manifest_hmac(payload, signing_key) + self.signature_algorithm = "hmac-sha256" + self.signature = f"hmac-sha256:{digest}" + + def to_dict(self) -> dict[str, Any]: + """Convert to a JSON-serializable dictionary.""" + tables_dict: dict[str, Any] = {} + for table_name, table_entry in self.tables.items(): + tables_dict[table_name] = { + "rows_extracted": table_entry.rows_extracted, + "fields_masked": [ + {"column": f.column, "method": f.method, "category": f.category} + for f in table_entry.fields_masked + ], + "fields_nulled": [ + {"column": f.column, "reason": f.reason} for f in table_entry.fields_nulled + ], + "fields_preserved_fk": table_entry.fields_preserved_fk, + "fields_unmasked": table_entry.fields_unmasked, + } + + pii_results = [ + { + "table": d.table, + "column": d.column, + "pattern": d.pattern_name, + "match_count": d.match_count, + "sample_size": d.sample_size, + "confidence": d.confidence, + } + for d in self.pii_scan_results + ] + + warnings = [asdict(w) for w in self.warnings] + + return { + "extraction_id": self.extraction_id, + "timestamp": self.timestamp, + "dbslice_version": self.dbslice_version, + "masking_type": self.masking_type, + "compliance_profiles": self.compliance_profiles, + "seed_hash": self.seed_hash, + "tables": tables_dict, + "pii_scan_results": pii_results, + "warnings": warnings, + "output_file_hashes": self.output_file_hashes, + "breakglass": self.breakglass, + "signature_algorithm": self.signature_algorithm, + "signature": self.signature, + } + + def to_json(self, pretty: bool = True) -> str: + """Serialize manifest to JSON string.""" + return json.dumps(self.to_dict(), indent=2 if pretty else None, default=str) + + def _signable_dict(self) -> dict[str, Any]: + payload = self.to_dict() + payload.pop("signature_algorithm", None) + payload.pop("signature", None) + return payload + + +def _sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def _manifest_hmac(payload: dict[str, Any], signing_key: str) -> str: + canonical = json.dumps(payload, sort_keys=True, separators=(",", ":"), ensure_ascii=True) + return hmac.new(signing_key.encode("utf-8"), canonical.encode("utf-8"), hashlib.sha256).hexdigest() + + +def verify_manifest_payload( + payload: dict[str, Any], + manifest_path: Path, + signing_key: str | None = None, + verify_signature: bool = True, +) -> tuple[bool, list[str]]: + """Verify output file hashes and optional HMAC signature for a manifest payload.""" + errors: list[str] = [] + manifest_dir = manifest_path.parent.resolve() + + file_hashes = payload.get("output_file_hashes", {}) + if not isinstance(file_hashes, dict): + errors.append("'output_file_hashes' must be an object") + return False, errors + + for rel_path, expected_hash in file_hashes.items(): + if not isinstance(rel_path, str) or not isinstance(expected_hash, str): + errors.append("Invalid output_file_hashes entry") + continue + target = (manifest_dir / rel_path).resolve() + if not target.exists(): + errors.append(f"Missing output file: {rel_path}") + continue + actual = f"sha256:{_sha256_file(target)}" + if actual != expected_hash: + errors.append( + f"Hash mismatch for {rel_path}: expected {expected_hash}, got {actual}" + ) + + if verify_signature: + signature = payload.get("signature") + signature_algorithm = payload.get("signature_algorithm") + if signature: + if signature_algorithm != "hmac-sha256": + errors.append("Unsupported signature_algorithm (expected hmac-sha256)") + elif signing_key is None: + errors.append("Manifest is signed but no signing key was provided") + else: + signable = dict(payload) + signable.pop("signature", None) + signable.pop("signature_algorithm", None) + expected = f"hmac-sha256:{_manifest_hmac(signable, signing_key)}" + if signature != expected: + errors.append("Manifest signature verification failed") + + return len(errors) == 0, errors diff --git a/src/dbslice/compliance/profiles.py b/src/dbslice/compliance/profiles.py new file mode 100644 index 0000000..fe9b28d --- /dev/null +++ b/src/dbslice/compliance/profiles.py @@ -0,0 +1,366 @@ +from dataclasses import dataclass, field + + +@dataclass(frozen=True) +class ComplianceProfile: + """A compliance profile defining anonymization requirements for a regulatory framework.""" + + name: str + """Profile identifier (e.g., 'gdpr', 'hipaa', 'pci-dss').""" + + display_name: str + """Human-readable name (e.g., 'GDPR', 'HIPAA Safe Harbor').""" + + description: str + """Brief description of what this profile covers.""" + + required_column_patterns: dict[str, str] = field(default_factory=dict) + """Column name substring -> Faker provider mappings that MUST be anonymized.""" + + required_null_patterns: list[str] = field(default_factory=list) + """Column name patterns that must be NULLed (security-sensitive data).""" + + value_scan_patterns: list[str] = field(default_factory=list) + """Names of value-based PII scanner patterns to run (e.g., 'email', 'ssn', 'credit_card').""" + + warn_freetext_columns: list[str] = field(default_factory=list) + """Column name patterns that may contain embedded PII in free text.""" + + identifiers: list[str] = field(default_factory=list) + """List of identifier categories this profile covers (for compliance reports).""" + + +GDPR_PROFILE = ComplianceProfile( + name="gdpr", + display_name="GDPR", + description=( + "EU General Data Protection Regulation. Covers direct identifiers and " + "flags quasi-identifiers that could enable singling out or linkage attacks." + ), + required_column_patterns={ + # Direct identifiers + "email": "email", + "first_name": "first_name", + "last_name": "last_name", + "firstname": "first_name", + "lastname": "last_name", + "full_name": "name", + "fullname": "name", + "name": "name", + "phone": "phone_number", + "mobile": "phone_number", + "fax": "phone_number", + # Address / location + "address": "address", + "street": "street_address", + "city": "city", + "zip": "zipcode", + "zipcode": "zipcode", + "postal": "zipcode", + # Identity documents + "ssn": "ssn", + "passport": "passport_number", + "driver_license": "license_plate", + # Financial + "credit_card": "credit_card_number", + "card_number": "credit_card_number", + "iban": "iban", + "bank_account": "bban", + "account_number": "bban", + # Network identifiers + "ip_address": "ipv4", + "ipaddress": "ipv4", + "ip": "ipv4", + "ipv6": "ipv6", + "mac_address": "mac_address", + # Online identifiers + "username": "user_name", + "user_name": "user_name", + # Biographic + "dob": "date_of_birth", + "date_of_birth": "date_of_birth", + "birthdate": "date_of_birth", + "birth_date": "date_of_birth", + }, + required_null_patterns=[ + "password", + "passwd", + "pwd", + "hash", + "salt", + "token", + "secret", + "api_key", + "apikey", + "private_key", + "public_key", + "certificate", + "session_id", + ], + value_scan_patterns=["email", "phone", "ipv4", "ipv6"], + warn_freetext_columns=[ + "note", + "notes", + "comment", + "comments", + "description", + "message", + "body", + "content", + "text", + "bio", + "about", + "reason", + "feedback", + "review", + ], + identifiers=[ + "Names", + "Email addresses", + "Phone numbers", + "Physical addresses", + "IP addresses", + "Date of birth", + "Identity documents (SSN, passport)", + "Financial identifiers (credit card, IBAN)", + "Online identifiers (username)", + "Biometric identifiers (flagged via value scan)", + ], +) + +HIPAA_PROFILE = ComplianceProfile( + name="hipaa", + display_name="HIPAA Safe Harbor", + description=( + "HIPAA Safe Harbor de-identification method. Requires removal or masking " + "of all 18 specified identifier types per 45 CFR 164.514(b)(2)." + ), + required_column_patterns={ + # 1. Names + "name": "name", + "first_name": "first_name", + "last_name": "last_name", + "firstname": "first_name", + "lastname": "last_name", + "full_name": "name", + "fullname": "name", + # 2. Geographic (smaller than state) — Safe Harbor requires ZIP3 with population check + "address": "address", + "street": "street_address", + "city": "city", + "zip": "hipaa_zip3", + "zipcode": "hipaa_zip3", + "postal": "hipaa_zip3", + "county": "city", + # 3. Dates (except year) — Safe Harbor requires year-only + "dob": "year_only", + "date_of_birth": "year_only", + "birthdate": "year_only", + "birth_date": "year_only", + "admission_date": "year_only", + "discharge_date": "year_only", + "death_date": "year_only", + "service_date": "year_only", + "visit_date": "year_only", + # 4. Phone numbers + "phone": "phone_number", + "mobile": "phone_number", + "telephone": "phone_number", + "cell": "phone_number", + # 5. Fax numbers + "fax": "phone_number", + # 6. Email addresses + "email": "email", + # 7. SSN + "ssn": "ssn", + "social_security": "ssn", + # 8. Medical record numbers + "medical_record": "pystr", + "mrn": "pystr", + "patient_id": "pystr", + # 9. Health plan beneficiary numbers + "beneficiary": "pystr", + "member_id": "pystr", + "subscriber_id": "pystr", + # 10. Account numbers + "account_number": "bban", + "bank_account": "bban", + # 11. Certificate/license numbers + "license_number": "license_plate", + "certificate_number": "pystr", + "driver_license": "license_plate", + "passport": "passport_number", + # 12. Vehicle identifiers + "vin": "pystr", + "vehicle_id": "pystr", + "license_plate": "license_plate", + # 13. Device identifiers + "device_id": "pystr", + "serial_number": "pystr", + "device_serial": "pystr", + # 14. Web URLs + "url": "url", + "website": "url", + # 15. IP addresses + "ip_address": "ipv4", + "ipaddress": "ipv4", + "ip": "ipv4", + "ipv6": "ipv6", + # 16. Biometric identifiers (column names are hints) + "fingerprint": "pystr", + "biometric": "pystr", + "retina": "pystr", + "voiceprint": "pystr", + # 17. Full-face photographs (binary columns - flag as warning) + # 18. Any other unique identifier + "unique_id": "pystr", + }, + required_null_patterns=[ + "password", + "passwd", + "pwd", + "hash", + "salt", + "token", + "secret", + "api_key", + "apikey", + "private_key", + "public_key", + "certificate", + "session_id", + ], + value_scan_patterns=["email", "ssn", "phone", "credit_card", "ipv4", "ipv6"], + warn_freetext_columns=[ + "note", + "notes", + "comment", + "comments", + "description", + "message", + "body", + "content", + "text", + "diagnosis", + "treatment", + "history", + "narrative", + "clinical_notes", + "progress_notes", + "discharge_summary", + ], + identifiers=[ + "1. Names", + "2. Geographic data (smaller than state)", + "3. Dates (except year)", + "4. Phone numbers", + "5. Fax numbers", + "6. Email addresses", + "7. Social Security numbers", + "8. Medical record numbers", + "9. Health plan beneficiary numbers", + "10. Account numbers", + "11. Certificate/license numbers", + "12. Vehicle identifiers", + "13. Device identifiers", + "14. Web URLs", + "15. IP addresses", + "16. Biometric identifiers", + "17. Full-face photographs (flag only)", + "18. Any other unique identifying number", + ], +) + +PCI_DSS_PROFILE = ComplianceProfile( + name="pci-dss", + display_name="PCI-DSS v4.0", + description=( + "Payment Card Industry Data Security Standard v4.0. " + "Real PANs are PROHIBITED in dev/test environments (Req 6.5.6). " + "Cardholder data must be fully replaced with synthetic data." + ), + required_column_patterns={ + # Primary Account Number (PAN) + "credit_card": "credit_card_number", + "card_number": "credit_card_number", + "card_num": "credit_card_number", + "pan": "credit_card_number", + "account_number": "bban", + # Cardholder name + "cardholder": "name", + "card_holder": "name", + "cardholder_name": "name", + # Expiration + "expiry": "credit_card_expire", + "expiration": "credit_card_expire", + "exp_date": "credit_card_expire", + "card_expiry": "credit_card_expire", + # Service code (3-4 digit) + "service_code": "pystr", + "cvv": "credit_card_security_code", + "cvc": "credit_card_security_code", + "cvv2": "credit_card_security_code", + }, + required_null_patterns=[ + # Sensitive authentication data - MUST be removed post-authorization + "pin", + "pin_block", + "pin_number", + "cvv", + "cvc", + "cvv2", + "cvc2", + "magnetic_stripe", + "track_data", + "track1", + "track2", + ], + value_scan_patterns=["credit_card"], + warn_freetext_columns=[ + "note", + "notes", + "comment", + "description", + "transaction_detail", + "memo", + ], + identifiers=[ + "Primary Account Number (PAN)", + "Cardholder name", + "Expiration date", + "Service code", + "Sensitive authentication data (CVV/PIN)", + ], +) + + +_PROFILES: dict[str, ComplianceProfile] = { + "gdpr": GDPR_PROFILE, + "hipaa": HIPAA_PROFILE, + "pci-dss": PCI_DSS_PROFILE, +} + + +def get_profile(name: str) -> ComplianceProfile: + """ + Get a compliance profile by name. + + Args: + name: Profile name (case-insensitive) + + Returns: + ComplianceProfile + + Raises: + ValueError: If profile not found + """ + profile = _PROFILES.get(name.lower()) + if profile is None: + available = ", ".join(sorted(_PROFILES.keys())) + raise ValueError(f"Unknown compliance profile '{name}'. Available: {available}") + return profile + + +def list_profiles() -> list[ComplianceProfile]: + """Return all available compliance profiles.""" + return list(_PROFILES.values()) diff --git a/src/dbslice/compliance/scanner.py b/src/dbslice/compliance/scanner.py new file mode 100644 index 0000000..8ffaeee --- /dev/null +++ b/src/dbslice/compliance/scanner.py @@ -0,0 +1,203 @@ +import re +from dataclasses import dataclass, field +from typing import Any + + +@dataclass +class PIIDetection: + """A single PII detection result.""" + + table: str + column: str + pattern_name: str + match_count: int + sample_size: int + confidence: str # "high", "medium", "low" + + @property + def match_rate(self) -> float: + """Fraction of sampled values that matched.""" + if self.sample_size == 0: + return 0.0 + return self.match_count / self.sample_size + + +# Compiled regex patterns for PII detection +_PII_PATTERNS: dict[str, tuple[re.Pattern[str], str]] = { + "email": ( + re.compile(r"\b[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}\b"), + "high", + ), + "ssn": ( + re.compile(r"\b\d{3}-\d{2}-\d{4}\b"), + "high", + ), + "phone": ( + re.compile(r"\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b"), + "medium", + ), + "ipv4": ( + re.compile(r"\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b"), + "medium", + ), + "ipv6": ( + re.compile(r"\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b"), + "medium", + ), + "credit_card": ( + re.compile(r"(? bool: + """Validate a number string using the Luhn algorithm.""" + digits = [int(d) for d in number if d.isdigit()] + if len(digits) < 13: + return False + checksum = 0 + for i, d in enumerate(reversed(digits)): + if i % 2 == 1: + d *= 2 + if d > 9: + d -= 9 + checksum += d + return checksum % 10 == 0 + + +def _extract_pan_candidates(text: str) -> list[str]: + """Extract PAN-like candidates and normalize separators before Luhn checks.""" + candidates: list[str] = [] + for match in _PAN_CANDIDATE_RE.findall(text): + digits_only = "".join(ch for ch in match if ch.isdigit()) + if 13 <= len(digits_only) <= 19: + candidates.append(digits_only) + return candidates + + +@dataclass +class PIIScanner: + """ + Scans data values for PII using regex patterns. + + Usage: + scanner = PIIScanner(patterns=["email", "ssn", "credit_card"]) + detections = scanner.scan_column("users", "notes", sample_values) + """ + + patterns: list[str] = field(default_factory=lambda: list(_PII_PATTERNS.keys())) + """Which PII patterns to scan for.""" + + min_match_rate: float = 0.1 + """Minimum fraction of values that must match to report a detection (default: 10%).""" + + def scan_column( + self, + table: str, + column: str, + values: list[Any], + ) -> list[PIIDetection]: + """ + Scan a list of column values for PII patterns. + + Args: + table: Table name + column: Column name + values: Sample of values from the column + + Returns: + List of PIIDetection results for patterns that matched + """ + # Only scan string-like values + str_values = [str(v) for v in values if v is not None and str(v).strip()] + if not str_values: + return [] + + detections: list[PIIDetection] = [] + sample_size = len(str_values) + + for pattern_name in self.patterns: + if pattern_name not in _PII_PATTERNS: + continue + + regex, base_confidence = _PII_PATTERNS[pattern_name] + match_count = 0 + + for val in str_values: + if pattern_name == "credit_card": + pan_candidates = _extract_pan_candidates(val) + if any(_luhn_check(candidate) for candidate in pan_candidates): + match_count += 1 + else: + matches = regex.findall(val) + if matches: + match_count += 1 + + if match_count == 0: + continue + + match_rate = match_count / sample_size + if match_rate < self.min_match_rate: + continue + + # Adjust confidence based on match rate + if match_rate >= 0.8: + confidence = "high" + elif match_rate >= 0.3: + confidence = base_confidence + else: + confidence = "low" if base_confidence == "medium" else "medium" + + detections.append( + PIIDetection( + table=table, + column=column, + pattern_name=pattern_name, + match_count=match_count, + sample_size=sample_size, + confidence=confidence, + ) + ) + + return detections + + def scan_rows( + self, + table: str, + rows: list[dict[str, Any]], + skip_columns: set[str] | None = None, + ) -> list[PIIDetection]: + """ + Scan all text columns in a set of rows for PII. + + Args: + table: Table name + rows: List of row dictionaries + skip_columns: Columns to skip (e.g., already anonymized) + + Returns: + List of PIIDetection results + """ + if not rows: + return [] + + skip = skip_columns or set() + all_detections: list[PIIDetection] = [] + + # Collect values per column + columns: dict[str, list[Any]] = {} + for row in rows: + for col, val in row.items(): + if col in skip: + continue + if val is not None and isinstance(val, (str, int, float)): + columns.setdefault(col, []).append(val) + + for col, values in columns.items(): + detections = self.scan_column(table, col, values) + all_detections.extend(detections) + + return all_detections diff --git a/src/dbslice/compliance/transformers.py b/src/dbslice/compliance/transformers.py new file mode 100644 index 0000000..9df44ba --- /dev/null +++ b/src/dbslice/compliance/transformers.py @@ -0,0 +1,183 @@ +from __future__ import annotations + +import datetime +import re +from typing import Any + +# Per 45 CFR 164.514(b)(2)(i)(B): Geographic data smaller than state must be +# removed, EXCEPT the initial 3 digits of a ZIP code may be retained if the +# geographic unit formed by combining all ZIP codes with the same 3 initial +# digits contains more than 20,000 people. +# +# The following 3-digit ZIP prefixes have population < 20,000 per US Census +# and must be changed to "000" under Safe Harbor. +# +# Source: US Census Bureau, derived from ZCTA population data. +# These prefixes are stable across census cycles. Last verified: 2020 Census. + +_LOW_POPULATION_ZIP3: frozenset[str] = frozenset({ + "036", # NH + "059", # MT + "063", # VT/NH + "102", # NY (small area) + "203", # DC (small overlap) + "556", # MN + "692", # NE + "790", # TX (small area) + "821", # WY + "823", # WY + "830", # WY + "831", # WY + "878", # NM + "879", # NM + "884", # NM + "890", # NV + "893", # NV +}) + + +def hipaa_safe_harbor_zip3(value: Any) -> str: + """ + HIPAA Safe Harbor ZIP code transformation. + + Retains only the first 3 digits of a ZIP code. If the 3-digit prefix + has population < 20,000 (per Census data), returns "000" instead. + + Per 45 CFR 164.514(b)(2)(i)(B). + + Args: + value: Original ZIP code (string or int) + + Returns: + 3-digit ZIP prefix, or "000" if low-population area + """ + raw = str(value).strip() + # Extract digits only (handles "12345-6789" format) + digits = re.sub(r"[^0-9]", "", raw) + if len(digits) < 3: + return "000" + + prefix = digits[:3] + if prefix in _LOW_POPULATION_ZIP3: + return "000" + return prefix + + +def year_only(value: Any) -> str: + """ + HIPAA Safe Harbor date transformation. + + Extracts only the year from a date value. Per 45 CFR 164.514(b)(2)(i)(C), + all date elements (except year) must be removed for dates directly related + to an individual. + + Args: + value: Original date value (date, datetime, string, or int) + + Returns: + Year string (e.g., "1985") + """ + if value is None: + return "" + + # datetime/date objects + if isinstance(value, (datetime.datetime, datetime.date)): + return str(value.year) + + raw = str(value).strip() + + # ISO format: 2024-03-15 or 2024-03-15T10:30:00 + iso_match = re.match(r"(\d{4})-\d{2}-\d{2}", raw) + if iso_match: + return iso_match.group(1) + + # US format: 03/15/2024 or 03-15-2024 + us_match = re.match(r"\d{1,2}[/-]\d{1,2}[/-](\d{4})", raw) + if us_match: + return us_match.group(1) + + # Just a 4-digit year + year_match = re.match(r"^(\d{4})$", raw) + if year_match: + return year_match.group(1) + + # Fallback: try to find any 4-digit year in the string + any_year = re.search(r"\b(19|20)\d{2}\b", raw) + if any_year: + return any_year.group(0) + + return "" + + +def age_bucket(value: Any) -> str: + """ + HIPAA Safe Harbor age bucketing. + + Per 45 CFR 164.514(b)(2)(i)(C), ages over 89 must be aggregated into + a single category of "90 or over." + + Args: + value: Age as integer or string + + Returns: + Original age as string if <= 89, or "90+" if > 89 + """ + try: + age = int(value) + except (ValueError, TypeError): + return str(value) + + if age > 89: + return "90+" + return str(age) + + +_FREETEXT_REDACTION_PATTERNS: list[tuple[re.Pattern[str], str]] = [ + # Email + (re.compile(r"\b[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}\b"), "[REDACTED_EMAIL]"), + # SSN + (re.compile(r"\b\d{3}-\d{2}-\d{4}\b"), "[REDACTED_SSN]"), + # US Phone + (re.compile(r"\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b"), "[REDACTED_PHONE]"), + # Credit card (with separators) + (re.compile(r"(? str: + """ + Inline PII redaction for free-text fields. + + Replaces detected PII patterns with placeholder tokens while preserving + the surrounding text structure. This is for NOT NULL text columns where + NULLing is not possible. + + Args: + value: Original text value + + Returns: + Text with PII patterns replaced by [REDACTED_*] placeholders + """ + if value is None: + return "" + + text = str(value) + for pattern, replacement in _FREETEXT_REDACTION_PATTERNS: + text = pattern.sub(replacement, text) + return text + + +BINARY_SENTINEL = b"\x00" +"""Sentinel value for NOT NULL binary columns when compliance requires NULLing.""" + + +CUSTOM_TRANSFORMERS: dict[str, Any] = { + "hipaa_zip3": hipaa_safe_harbor_zip3, + "year_only": year_only, + "age_bucket": age_bucket, + "redact_freetext": redact_freetext, +} diff --git a/src/dbslice/config.py b/src/dbslice/config.py index 3ae619b..98a2dea 100644 --- a/src/dbslice/config.py +++ b/src/dbslice/config.py @@ -323,3 +323,20 @@ class ExtractConfig: virtual_foreign_keys: list[VirtualForeignKey] = field(default_factory=list) schema: str | None = None # PostgreSQL schema name (default: public) allow_unsafe_where: bool = False + compliance_profiles: list[str] = field(default_factory=list) + compliance_strict: bool = False # Fail if uncovered PII detected + generate_manifest: bool = False # Generate audit manifest + deterministic: bool = True # False = non-deterministic anonymization + compliance_policy_mode: str = "off" # off, standard, strict + compliance_allowed_url_patterns: list[str] = field(default_factory=list) + compliance_denied_url_patterns: list[str] = field(default_factory=list) + compliance_required_sslmode: str | None = None + compliance_require_ci: bool = False + compliance_manifest_sign: bool = False + compliance_manifest_key_env: str = "DBSLICE_MANIFEST_SIGNING_KEY" + freetext_action: str = "warn" # warn, null, redact + binary_action: str = "warn" # warn, null, sentinel + compliance_sample_rows: int = 100 # PII scan sample size during extract + k_anonymity_min_k: int | None = None # None = disabled, 2+ = check + k_anonymity_quasi_identifiers: list[str] = field(default_factory=list) + k_anonymity_action: str = "warn" # warn, fail diff --git a/src/dbslice/config_file.py b/src/dbslice/config_file.py index f1a45c6..78a8e3c 100644 --- a/src/dbslice/config_file.py +++ b/src/dbslice/config_file.py @@ -30,6 +30,7 @@ "performance", "tables", "virtual_foreign_keys", + "compliance", } _DATABASE_KEYS = {"url", "schema", "options"} _EXTRACTION_KEYS = { @@ -48,6 +49,19 @@ "fields", "patterns", "security_null_fields", + "deterministic", +} +_COMPLIANCE_KEYS = { + "profiles", + "strict", + "generate_manifest", + "policy_mode", + "allow_url_patterns", + "deny_url_patterns", + "required_sslmode", + "require_ci", + "sign_manifest", + "manifest_key_env", } _OUTPUT_KEYS = { "format", @@ -233,6 +247,7 @@ def _yaml_quote(value: str) -> str: "DatabaseConfig", "ExtractionConfig", "AnonymizationConfig", + "ComplianceConfig", "OutputConfig", "PerformanceConfig", "StreamingConfig", @@ -326,6 +341,44 @@ class AnonymizationConfig: Example: ["users.password*", "*.api_key"] """ + deterministic: bool = True + """Use deterministic anonymization (same input → same output). Set to false for stronger privacy.""" + + +@dataclass +class ComplianceConfig: + """Compliance configuration.""" + + profiles: list[str] = field(default_factory=list) + """Compliance profiles to apply (e.g., ['gdpr', 'hipaa', 'pci-dss']).""" + + strict: bool = False + """Fail extraction if uncovered PII is detected by value scanning.""" + + generate_manifest: bool = False + """Generate an audit manifest alongside extraction output.""" + + policy_mode: str = "off" + """Policy gate mode: off, standard, or strict.""" + + allow_url_patterns: list[str] = field(default_factory=list) + """Allow-list regex patterns for source database URLs.""" + + deny_url_patterns: list[str] = field(default_factory=list) + """Deny-list regex patterns for source database URLs.""" + + required_sslmode: str | None = None + """Required PostgreSQL sslmode query parameter value.""" + + require_ci: bool = False + """Require CI environment for compliance-active extraction.""" + + sign_manifest: bool = False + """Sign compliance manifests with HMAC.""" + + manifest_key_env: str = "DBSLICE_MANIFEST_SIGNING_KEY" + """Environment variable name containing HMAC signing key.""" + @dataclass class OutputConfig: @@ -438,6 +491,7 @@ class DbsliceConfig: database: DatabaseConfig = field(default_factory=DatabaseConfig) extraction: ExtractionConfig = field(default_factory=ExtractionConfig) anonymization: AnonymizationConfig = field(default_factory=AnonymizationConfig) + compliance: ComplianceConfig = field(default_factory=ComplianceConfig) output: OutputConfig = field(default_factory=OutputConfig) performance: PerformanceConfig = field(default_factory=PerformanceConfig) tables: dict[str, TableOverride] = field(default_factory=dict) @@ -583,12 +637,100 @@ def _from_dict(cls, data: dict[str, Any]) -> "DbsliceConfig": for pattern in security_null_fields: _validate_glob_field_pattern(pattern, "'anonymization.security_null_fields'") + deterministic_val = anon_data.get("deterministic", True) + if not isinstance(deterministic_val, bool): + raise ValueError("'anonymization.deterministic' must be true or false") + anonymization = AnonymizationConfig( enabled=anon_data.get("enabled", False), seed=anon_data.get("seed"), fields=fields, patterns=patterns, security_null_fields=security_null_fields, + deterministic=deterministic_val, + ) + + compliance_data = data.get("compliance", {}) + if not isinstance(compliance_data, dict): + raise ValueError("'compliance' section must be a mapping") + _validate_unknown_keys("compliance", compliance_data, _COMPLIANCE_KEYS) + + compliance_profiles_raw = compliance_data.get("profiles", []) + if not isinstance(compliance_profiles_raw, list): + raise ValueError("'compliance.profiles' must be a list") + + # Validate profile names + from dbslice.compliance.profiles import get_profile + for profile_name in compliance_profiles_raw: + if not isinstance(profile_name, str): + raise ValueError("'compliance.profiles' entries must be strings") + get_profile(profile_name) # Raises ValueError if unknown + + compliance_strict = compliance_data.get("strict", False) + if not isinstance(compliance_strict, bool): + raise ValueError("'compliance.strict' must be true or false") + compliance_manifest = compliance_data.get("generate_manifest", False) + if not isinstance(compliance_manifest, bool): + raise ValueError("'compliance.generate_manifest' must be true or false") + compliance_policy_mode = compliance_data.get("policy_mode", "off") + if compliance_policy_mode not in {"off", "standard", "strict"}: + raise ValueError("'compliance.policy_mode' must be one of: off, standard, strict") + + allow_url_patterns = compliance_data.get("allow_url_patterns", []) + if not isinstance(allow_url_patterns, list) or not all( + isinstance(item, str) for item in allow_url_patterns + ): + raise ValueError("'compliance.allow_url_patterns' must be a list of strings") + for pattern in allow_url_patterns: + try: + re.compile(pattern) + except re.error as e: + raise ValueError( + f"'compliance.allow_url_patterns' contains invalid regex '{pattern}': {e}" + ) from e + + deny_url_patterns = compliance_data.get("deny_url_patterns", []) + if not isinstance(deny_url_patterns, list) or not all( + isinstance(item, str) for item in deny_url_patterns + ): + raise ValueError("'compliance.deny_url_patterns' must be a list of strings") + for pattern in deny_url_patterns: + try: + re.compile(pattern) + except re.error as e: + raise ValueError( + f"'compliance.deny_url_patterns' contains invalid regex '{pattern}': {e}" + ) from e + + required_sslmode = compliance_data.get("required_sslmode") + if required_sslmode is not None and ( + not isinstance(required_sslmode, str) or not required_sslmode.strip() + ): + raise ValueError("'compliance.required_sslmode' must be a non-empty string when set") + + require_ci = compliance_data.get("require_ci", False) + if not isinstance(require_ci, bool): + raise ValueError("'compliance.require_ci' must be true or false") + + sign_manifest = compliance_data.get("sign_manifest", False) + if not isinstance(sign_manifest, bool): + raise ValueError("'compliance.sign_manifest' must be true or false") + + manifest_key_env = compliance_data.get("manifest_key_env", "DBSLICE_MANIFEST_SIGNING_KEY") + if not isinstance(manifest_key_env, str) or not manifest_key_env: + raise ValueError("'compliance.manifest_key_env' must be a non-empty string") + + compliance = ComplianceConfig( + profiles=compliance_profiles_raw, + strict=compliance_strict, + generate_manifest=compliance_manifest, + policy_mode=compliance_policy_mode, + allow_url_patterns=allow_url_patterns, + deny_url_patterns=deny_url_patterns, + required_sslmode=required_sslmode, + require_ci=require_ci, + sign_manifest=sign_manifest, + manifest_key_env=manifest_key_env, ) output_data = data.get("output", {}) @@ -805,6 +947,7 @@ def _from_dict(cls, data: dict[str, Any]) -> "DbsliceConfig": database=database, extraction=extraction, anonymization=anonymization, + compliance=compliance, output=output, performance=performance, tables=tables, @@ -1052,6 +1195,18 @@ def to_extract_config( virtual_foreign_keys=virtual_fks, schema=final_schema, allow_unsafe_where=final_allow_unsafe_where, + compliance_profiles=self.compliance.profiles, + compliance_strict=self.compliance.strict, + generate_manifest=self.compliance.generate_manifest + or bool(self.compliance.profiles), + deterministic=self.anonymization.deterministic, + compliance_policy_mode=self.compliance.policy_mode, + compliance_allowed_url_patterns=list(self.compliance.allow_url_patterns), + compliance_denied_url_patterns=list(self.compliance.deny_url_patterns), + compliance_required_sslmode=self.compliance.required_sslmode, + compliance_require_ci=self.compliance.require_ci, + compliance_manifest_sign=self.compliance.sign_manifest, + compliance_manifest_key_env=self.compliance.manifest_key_env, ) def to_yaml(self, include_comments: bool = True) -> str: @@ -1136,6 +1291,38 @@ def to_yaml(self, include_comments: bool = True) -> str: output.append(" security_null_fields:") for pattern in self.anonymization.security_null_fields: output.append(f" - {_yaml_quote(pattern)}") + output.append(f" deterministic: {str(self.anonymization.deterministic).lower()}") + if include_comments: + output.append( + " # deterministic=false increases privacy but may reduce repeatability" + ) + output.append("") + + if include_comments: + output.append("# Compliance settings") + output.append("compliance:") + if self.compliance.profiles: + output.append(" profiles:") + for profile in self.compliance.profiles: + output.append(f" - {profile}") + else: + output.append(" profiles: []") + output.append(f" strict: {str(self.compliance.strict).lower()}") + output.append(f" generate_manifest: {str(self.compliance.generate_manifest).lower()}") + output.append(f" policy_mode: {_yaml_quote(self.compliance.policy_mode)}") + if self.compliance.allow_url_patterns: + output.append(" allow_url_patterns:") + for pattern in self.compliance.allow_url_patterns: + output.append(f" - {_yaml_quote(pattern)}") + if self.compliance.deny_url_patterns: + output.append(" deny_url_patterns:") + for pattern in self.compliance.deny_url_patterns: + output.append(f" - {_yaml_quote(pattern)}") + if self.compliance.required_sslmode: + output.append(f" required_sslmode: {self.compliance.required_sslmode}") + output.append(f" require_ci: {str(self.compliance.require_ci).lower()}") + output.append(f" sign_manifest: {str(self.compliance.sign_manifest).lower()}") + output.append(f" manifest_key_env: {self.compliance.manifest_key_env}") output.append("") if include_comments: diff --git a/src/dbslice/core/engine.py b/src/dbslice/core/engine.py index b447851..e9f9266 100644 --- a/src/dbslice/core/engine.py +++ b/src/dbslice/core/engine.py @@ -117,18 +117,52 @@ def __init__( self.adapter: DatabaseAdapter | None = None self.schema: SchemaGraph | None = None self.progress_callback = progress_callback + self.manifest: Any = None # ComplianceManifest or None + + if config.generate_manifest or config.compliance_profiles: + from dbslice.compliance.manifest import ComplianceManifest + + self.manifest = ComplianceManifest() + import uuid + + self.manifest.initialize( + extraction_id=str(uuid.uuid4()), + compliance_profiles=config.compliance_profiles, + anonymization_seed=config.anonymization_seed, + deterministic=config.deterministic, + ) + + effective_field_providers = dict(config.anonymization_field_providers) + effective_patterns = dict(config.anonymization_patterns) + effective_profile_patterns: dict[str, str] = {} + effective_security_null = list(config.security_null_fields) + if config.compliance_profiles: + from dbslice.compliance.profiles import get_profile + + for profile_name in config.compliance_profiles: + profile = get_profile(profile_name) + # Merge profile patterns as wildcard fallback rules (lower priority than user rules). + for pattern, method in profile.required_column_patterns.items(): + effective_profile_patterns.setdefault(f"*.{pattern}*", method) + for null_pattern in profile.required_null_patterns: + glob = f"*.{null_pattern}*" + if glob not in effective_security_null: + effective_security_null.append(glob) - # Initialize anonymizer if needed (schema will be set after introspection) self.anonymizer: DeterministicAnonymizer | None = None - if config.anonymize or config.redact_fields: + needs_anonymize = config.anonymize or config.redact_fields or config.compliance_profiles + if needs_anonymize: self.anonymizer = DeterministicAnonymizer( - seed=config.anonymization_seed or DEFAULT_ANONYMIZATION_SEED + seed=config.anonymization_seed or DEFAULT_ANONYMIZATION_SEED, + deterministic=config.deterministic, + manifest=self.manifest, ) self.anonymizer.configure( config.redact_fields, - field_providers=config.anonymization_field_providers, - patterns=config.anonymization_patterns, - security_null_fields=config.security_null_fields, + field_providers=effective_field_providers, + patterns=effective_patterns, + fallback_patterns=effective_profile_patterns, + security_null_fields=effective_security_null, ) def _log(self, stage: str, message: str, current: int = 0, total: int = 0) -> None: @@ -371,7 +405,6 @@ def _do_extract(self, db_type: DatabaseType) -> ExtractionResult: logger.info("Starting data fetch phase", table_count=len(all_records)) tables_data: dict[str, list[dict[str, Any]]] = {} - stats: dict[str, int] = {} total_tables = len(all_records) for i, (table, pk_values) in enumerate(all_records.items()): @@ -392,29 +425,47 @@ def _do_extract(self, db_type: DatabaseType) -> ExtractionResult: ): rows = list(self.adapter.fetch_by_pk(table, pk_columns, pk_values)) - # Anonymize if enabled - if self.anonymizer: - with logger.timed_operation("anonymize_table_data", table=table): - rows = self._anonymize_table_data(table, rows) - logger.debug("Table data anonymized", table=table, row_count=len(rows)) - tables_data[table] = rows - stats[table] = len(rows) logger.debug("Table data fetched", table=table, row_count=len(rows)) if self._has_row_limits(): self._log("limits", "Applying deterministic row limits with integrity closure...") with logger.timed_operation("apply_row_limits"): tables_data = self._apply_row_limits(tables_data) - stats = {table: len(rows) for table, rows in tables_data.items()} logger.info( "Row limits applied", global_limit=self.config.row_limit_global, per_table_limits=len(self.config.row_limit_per_table), - total_rows=sum(stats.values()), + total_rows=sum(len(rows) for rows in tables_data.values()), ) self._log("limits", "Row limits applied") + scan_pre_mask_data: dict[str, list[dict[str, Any]]] | None = None + if self.config.compliance_profiles and self.anonymizer: + # Pre-mask snapshot used for coverage scan decisions. + scan_pre_mask_data = { + table: [dict(row) for row in rows] for table, rows in tables_data.items() + } + + if self.anonymizer: + self._log("anonymize", "Applying anonymization rules...") + total_tables = len(tables_data) + for i, table in enumerate(sorted(tables_data.keys())): + rows = tables_data[table] + if not rows: + continue + self._log( + "anonymize", + f"Anonymizing {len(rows)} rows in {table}", + i + 1, + total_tables, + ) + with logger.timed_operation("anonymize_table_data", table=table): + tables_data[table] = self._anonymize_table_data(table, rows) + logger.debug("Table data anonymized", table=table, row_count=len(rows)) + + stats: dict[str, int] = {table: len(rows) for table, rows in tables_data.items()} + deferred_updates = [] if broken_fks: from dbslice.core.cycles import build_deferred_updates @@ -472,6 +523,19 @@ def _do_extract(self, db_type: DatabaseType) -> ExtractionResult: ) raise ExtractionError(error_msg) + if self.config.compliance_profiles and self.schema: + self._apply_freetext_and_binary_handling(tables_data) + + if self.config.compliance_profiles and self.anonymizer and scan_pre_mask_data is not None: + self._run_pii_scan(scan_pre_mask_data, tables_data) + + if self.config.k_anonymity_min_k is not None: + self._check_k_anonymity(tables_data) + + if self.manifest: + for table, rows in tables_data.items(): + self.manifest.set_table_row_count(table, len(rows)) + return ExtractionResult( tables=tables_data, insert_order=insert_order, @@ -504,6 +568,276 @@ def _anonymize_table_data(self, table: str, rows: list[dict[str, Any]]) -> list[ return [self.anonymizer.anonymize_row(table, row) for row in rows] + def _run_pii_scan( + self, + pre_mask_data: dict[str, list[dict[str, Any]]], + post_mask_data: dict[str, list[dict[str, Any]]], + ) -> None: + """ + Run two-phase compliance value scanning. + + 1) Coverage scan (pre-mask): identify where PII exists in extracted values. + 2) Residual scan (post-mask): re-scan only columns not expected to be protected. + """ + from dbslice.compliance.profiles import get_profile + from dbslice.compliance.scanner import PIIScanner + + assert self.anonymizer is not None + + # Collect all scan patterns from active profiles + scan_patterns: set[str] = set() + freetext_patterns: set[str] = set() + for profile_name in self.config.compliance_profiles: + profile = get_profile(profile_name) + scan_patterns.update(profile.value_scan_patterns) + freetext_patterns.update(profile.warn_freetext_columns) + + if not scan_patterns: + return + + scanner = PIIScanner(patterns=sorted(scan_patterns)) + self._log("compliance", "Running compliance coverage scan...") + + coverage_detections = [] + for table, rows in pre_mask_data.items(): + if not rows: + continue + sample = rows[:100] + detections = scanner.scan_rows(table, sample) + coverage_detections.extend(detections) + + # Check for freetext columns that might contain embedded PII + if freetext_patterns: + for col in rows[0].keys(): + col_lower = col.lower() + for pattern in freetext_patterns: + if pattern in col_lower: + if self.manifest: + self.manifest.add_warning( + table, col, + f"Free-text column may contain embedded PII (matched pattern: {pattern})", + ) + break + + unprotected_columns: dict[str, set[str]] = {} + for detection in coverage_detections: + is_protected = self.anonymizer.should_anonymize( + detection.table, detection.column + ) or self.anonymizer.should_null(detection.table, detection.column) + if not is_protected: + unprotected_columns.setdefault(detection.table, set()).add(detection.column) + if self.manifest: + self.manifest.add_warning( + detection.table, + detection.column, + "PII detected in coverage scan but field is not configured for masking", + ) + + residual_detections = [] + if unprotected_columns: + self._log("compliance", "Running compliance residual scan...") + for table, rows in post_mask_data.items(): + if not rows: + continue + columns_to_scan = unprotected_columns.get(table) + if not columns_to_scan: + continue + sample = rows[:100] + skip_columns = {col for col in rows[0].keys() if col not in columns_to_scan} + detections = scanner.scan_rows(table, sample, skip_columns=skip_columns) + residual_detections.extend(detections) + + if self.manifest: + self.manifest.add_pii_detections(residual_detections) + + if residual_detections: + logger.warning( + "Residual PII detected in post-mask scan", + detection_count=len(residual_detections), + tables_affected=len({d.table for d in residual_detections}), + ) + self._log( + "compliance", + f"Residual scan found {len(residual_detections)} unprotected PII detection(s)", + ) + + if self.config.compliance_strict: + detection_details = [ + f" {d.table}.{d.column}: {d.pattern_name} ({d.match_count}/{d.sample_size} matches, {d.confidence} confidence)" + for d in residual_detections + ] + raise ExtractionError( + "Compliance strict mode: residual unprotected PII detected after masking.\n" + + "\n".join(detection_details) + ) + else: + if coverage_detections: + self._log( + "compliance", + "Coverage scan detected PII in source values; residual scan is clean", + ) + else: + self._log("compliance", "Coverage scan clean: no PII detected in sampled values") + + def _apply_freetext_and_binary_handling( + self, tables_data: dict[str, list[dict[str, Any]]] + ) -> None: + """Apply free-text redaction and binary column handling based on compliance config.""" + assert self.schema is not None + + from dbslice.compliance.profiles import get_profile + from dbslice.compliance.transformers import BINARY_SENTINEL, redact_freetext + + freetext_action = self.config.freetext_action + binary_action = self.config.binary_action + + # Collect freetext column patterns from active profiles + freetext_patterns: set[str] = set() + for profile_name in self.config.compliance_profiles: + profile = get_profile(profile_name) + freetext_patterns.update(profile.warn_freetext_columns) + + # Binary-like PostgreSQL types + binary_types = {"bytea", "blob", "binary", "varbinary", "image", "lo"} + + for table, rows in tables_data.items(): + if not rows: + continue + table_info = self.schema.get_table(table) + if not table_info: + continue + + for col_obj in table_info.columns: + col = col_obj.name + col_lower = col.lower() + col_type_lower = col_obj.data_type.lower() + + # Binary column handling + if any(bt in col_type_lower for bt in binary_types): + if binary_action == "null": + for row in rows: + if col in row: + row[col] = None + elif binary_action == "sentinel": + for row in rows: + if col in row and row[col] is not None: + if col_obj.nullable: + row[col] = None + else: + row[col] = BINARY_SENTINEL + if self.manifest: + self.manifest.add_warning( + table, col, + f"Binary column ({col_obj.data_type}) handled with action={binary_action}", + ) + continue + + # Free-text column handling + is_freetext = any(pat in col_lower for pat in freetext_patterns) + if not is_freetext: + continue + + # Skip columns already handled by anonymizer + if self.anonymizer and ( + self.anonymizer.should_anonymize(table, col) + or self.anonymizer.should_null(table, col) + ): + continue + + if freetext_action == "null": + for row in rows: + if col in row: + if col_obj.nullable: + row[col] = None + else: + # NOT NULL: fall back to redact + row[col] = redact_freetext(row[col]) + elif freetext_action == "redact": + for row in rows: + if col in row and row[col] is not None: + row[col] = redact_freetext(row[col]) + + if self.manifest and freetext_action != "warn": + effective = freetext_action + if freetext_action == "null" and not col_obj.nullable: + effective = "redact (NOT NULL fallback)" + self.manifest.add_warning( + table, col, + f"Free-text column handled with action={effective}", + ) + + def _check_k_anonymity(self, tables_data: dict[str, list[dict[str, Any]]]) -> None: + """ + Post-extraction k-anonymity verification. + + Checks that every combination of configured quasi-identifiers appears + at least k times in the output. Fail-only — does not modify data. + """ + min_k = self.config.k_anonymity_min_k + qi_specs = self.config.k_anonymity_quasi_identifiers + action = self.config.k_anonymity_action + + if not min_k or not qi_specs: + return + + self._log("compliance", f"Running k-anonymity check (k={min_k})...") + + # Parse quasi-identifier specs: "table.column" format + qi_by_table: dict[str, list[str]] = {} + for spec in qi_specs: + parts = spec.split(".", 1) + if len(parts) == 2: + qi_by_table.setdefault(parts[0].lower(), []).append(parts[1].lower()) + + violations: list[str] = [] + for table, qi_columns in qi_by_table.items(): + rows = tables_data.get(table, []) + if not rows: + continue + + # Check which columns actually exist + available = {c.lower() for c in rows[0].keys()} + active_qi = [c for c in qi_columns if c in available] + if not active_qi: + continue + + # Count combinations + from collections import Counter + + combos = Counter( + tuple(str(row.get(c, "")) for c in active_qi) + for row in rows + ) + + for combo, count in combos.items(): + if count < min_k: + combo_str = ", ".join(f"{c}={v}" for c, v in zip(active_qi, combo)) + violations.append(f"{table}: [{combo_str}] appears {count} time(s)") + + if not violations: + self._log("compliance", f"k-anonymity check passed (k={min_k})") + return + + msg = f"k-anonymity violation: {len(violations)} combination(s) appear fewer than {min_k} times" + logger.warning(msg, violation_count=len(violations), min_k=min_k) + + if self.manifest: + for v in violations[:50]: + self.manifest.add_warning("_k_anonymity", "quasi_identifiers", v) + + detail_lines = [f" {v}" for v in violations[:20]] + if len(violations) > 20: + detail_lines.append(f" ... and {len(violations) - 20} more") + + self._log("compliance", msg) + + if action == "fail": + raise ExtractionError( + f"k-anonymity check failed (k={min_k}): " + f"{len(violations)} quasi-identifier combination(s) are unique or below threshold.\n" + + "\n".join(detail_lines) + ) + def _has_row_limits(self) -> bool: """Check whether any row-limit configuration is active.""" return self.config.row_limit_global is not None or bool(self.config.row_limit_per_table) diff --git a/src/dbslice/mapping/__init__.py b/src/dbslice/mapping/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/dbslice/mapping/__init__.py @@ -0,0 +1 @@ + diff --git a/src/dbslice/mapping/server.py b/src/dbslice/mapping/server.py new file mode 100644 index 0000000..dd904e0 --- /dev/null +++ b/src/dbslice/mapping/server.py @@ -0,0 +1,489 @@ +from __future__ import annotations + +import inspect +import json +import secrets +import threading +from http.server import BaseHTTPRequestHandler, HTTPServer +from typing import Any +from urllib.parse import parse_qs, urlparse + +from dbslice.logging import get_logger +from dbslice.models import SchemaGraph + +logger = get_logger(__name__) + + +class MappingServer: + """Local mapping UI HTTP server.""" + + def __init__( + self, + port: int = 9473, + database_url: str | None = None, + schema: str | None = None, + ): + self.port = port + self.database_url = database_url + self.schema_name = schema + self.token = secrets.token_urlsafe(32) + self._server: HTTPServer | None = None + self._cached_schema: SchemaGraph | None = None + self._cached_adapter: Any = None + + @property + def url(self) -> str: + return f"http://127.0.0.1:{self.port}?token={self.token}" + + def start(self, open_browser: bool = True) -> None: + """Start the server and optionally open a browser.""" + handler = _make_handler(self) + self._server = HTTPServer(("127.0.0.1", self.port), handler) + + if open_browser: + import webbrowser + + threading.Timer(0.5, webbrowser.open, args=[self.url]).start() + + logger.info("Mapping UI server starting", url=self.url) + try: + self._server.serve_forever() + except KeyboardInterrupt: + pass + finally: + self._server.server_close() + if self._cached_adapter: + try: + self._cached_adapter.close() + except Exception: + pass + + def _introspect(self, database_url: str, schema: str | None, detect_sensitive: bool) -> dict: + """Connect to database and introspect schema.""" + from dbslice.adapters.postgresql import PostgreSQLAdapter + from dbslice.compliance.profiles import list_profiles + from dbslice.input_validators import validate_database_url + from dbslice.utils.anonymizer import ( + _SECURITY_NULL_PATTERNS, + ) + from dbslice.utils.connection import parse_database_url + + validate_database_url(database_url) + db_config = parse_database_url(database_url) + + if self._cached_adapter: + try: + self._cached_adapter.close() + except Exception: + pass + + adapter = PostgreSQLAdapter(schema=schema) + adapter.connect(database_url) + self._cached_adapter = adapter + + db_schema = adapter.get_schema() + self._cached_schema = db_schema + + tables = [] + sensitive_suggestions: dict[str, str] = {} + + if detect_sensitive: + sensitive_patterns = { + "email": "email", + "e_mail": "email", + "email_address": "email", + "phone": "phone_number", + "telephone": "phone_number", + "mobile": "phone_number", + "cell": "phone_number", + "first_name": "first_name", + "firstname": "first_name", + "last_name": "last_name", + "lastname": "last_name", + "full_name": "name", + "fullname": "name", + "address": "address", + "street": "street_address", + "city": "city", + "postal_code": "postcode", + "zipcode": "postcode", + "ssn": "ssn", + "social_security": "ssn", + "passport": "passport_number", + "driver_license": "license_plate", + "credit_card": "credit_card_number", + "card_number": "credit_card_number", + "ip_address": "ipv4", + "ip": "ipv4", + "ipv4": "ipv4", + "ipv6": "ipv6", + "dob": "date_of_birth", + "date_of_birth": "date_of_birth", + "username": "user_name", + } + for table_name, table in db_schema.tables.items(): + for column in table.columns: + col_lower = column.name.lower() + if col_lower in sensitive_patterns: + sensitive_suggestions[f"{table_name}.{column.name}"] = sensitive_patterns[ + col_lower + ] + else: + for pattern, provider in sensitive_patterns.items(): + if pattern in col_lower: + sensitive_suggestions[f"{table_name}.{column.name}"] = provider + break + + fk_columns: set[tuple[str, str]] = set() + for fk in db_schema.edges: + for col in fk.source_columns: + fk_columns.add((fk.source_table, col)) + + null_columns: set[str] = set() + for tbl_name, tbl in db_schema.tables.items(): + for col_obj in tbl.columns: + col_lower = col_obj.name.lower() + for pat in _SECURITY_NULL_PATTERNS: + if pat in col_lower: + null_columns.add(f"{tbl_name}.{col_obj.name}") + break + + from dbslice.models import Column as ColumnModel + + for table_name in sorted(db_schema.tables.keys()): + table_info = db_schema.tables[table_name] + columns: list[dict[str, Any]] = [] + col_obj2: ColumnModel + for col_obj2 in table_info.columns: + full_name = f"{table_name}.{col_obj2.name}" + is_fk = (table_name, col_obj2.name) in fk_columns + suggested = sensitive_suggestions.get(full_name) + is_null_target = full_name in null_columns + + action = "keep" + provider = "" + if is_fk: + action = "locked_fk" + elif col_obj2.is_primary_key: + action = "locked_pk" + elif is_null_target: + action = "null" + elif suggested: + action = "anonymize" + provider = suggested + + columns.append( + { + "name": col_obj2.name, + "data_type": col_obj2.data_type, + "nullable": col_obj2.nullable, + "is_pk": col_obj2.is_primary_key, + "is_fk": is_fk, + "suggested_action": action, + "suggested_provider": provider, + } + ) + + tables.append( + { + "name": table_name, + "primary_key": list(table_info.primary_key), + "columns": columns, + } + ) + + profiles = [ + {"name": p.name, "display_name": p.display_name, "description": p.description} + for p in list_profiles() + ] + + common_providers = [ + "email", + "phone_number", + "first_name", + "last_name", + "name", + "address", + "street_address", + "city", + "zipcode", + "ssn", + "credit_card_number", + "ipv4", + "ipv6", + "company", + "url", + "date_of_birth", + "user_name", + "passport_number", + "iban", + "pystr", + "random_int", + "year_only", + "hipaa_zip3", + "age_bucket", + "redact_freetext", + ] + + return { + "database": db_config.database, + "table_count": len(tables), + "tables": tables, + "sensitive_suggestions": sensitive_suggestions, + "compliance_profiles": profiles, + "common_providers": common_providers, + } + + def _apply_profile(self, profile_name: str, current_mappings: dict) -> dict: + """Apply a compliance profile's patterns to the current schema.""" + from dbslice.compliance.profiles import get_profile + + profile = get_profile(profile_name) + if not self._cached_schema: + return {"error": "No schema loaded. Run introspection first."} + + additions: dict[str, str] = {} + null_additions: list[str] = [] + + for table_name, table in self._cached_schema.tables.items(): + for column in table.columns: + full_name = f"{table_name}.{column.name}" + if full_name in current_mappings: + continue + + col_lower = column.name.lower() + + for pat in profile.required_null_patterns: + if pat in col_lower: + null_additions.append(full_name) + break + else: + for pat, method in profile.required_column_patterns.items(): + if pat in col_lower: + additions[full_name] = method + break + + return { + "profile": profile_name, + "display_name": profile.display_name, + "field_additions": additions, + "null_additions": null_additions, + "identifiers_covered": profile.identifiers, + } + + @staticmethod + def _generate_config(mappings: dict) -> dict: + """Generate YAML config from column mappings.""" + fields: dict[str, str] = {} + null_fields: list[str] = [] + + for full_name, action_data in mappings.items(): + action = action_data.get("action", "keep") + if action == "anonymize": + provider = action_data.get("provider", "pystr") + fields[full_name] = provider + elif action == "null": + null_fields.append(full_name) + + lines = [ + "# Generated by dbslice map", + "", + "database:", + " url: ${DATABASE_URL}", + "", + "anonymization:", + " enabled: true", + ] + + if fields: + lines.append(" fields:") + for field_name, provider in sorted(fields.items()): + lines.append(f" {field_name}: {provider}") + + if null_fields: + lines.append(" security_null_fields:") + for field_name in sorted(null_fields): + lines.append(f" - {field_name}") + + lines.extend( + [ + "", + "extraction:", + " default_depth: 3", + " direction: both", + " validate: true", + "", + "output:", + " format: sql", + " include_transaction: true", + ] + ) + + yaml_content = "\n".join(lines) + "\n" + + cmd = 'dbslice extract --config dbslice.yaml --seed ""' + + return { + "yaml": yaml_content, + "command_template": cmd, + "field_count": len(fields), + "null_count": len(null_fields), + } + + @staticmethod + def _validate_provider(provider: str) -> dict: + """Validate a Faker provider name.""" + from dbslice.compliance.transformers import CUSTOM_TRANSFORMERS + + if provider in CUSTOM_TRANSFORMERS: + return {"valid": True, "provider": provider, "source": "custom_transformer"} + + try: + from faker import Faker + except ImportError: + return {"valid": False, "error": "Faker not installed"} + + fake = Faker() + method = getattr(fake, provider, None) + if method is None or not callable(method): + return {"valid": False, "error": f"Unknown provider '{provider}'"} + + try: + sig = inspect.signature(method) + for param in sig.parameters.values(): + if param.kind in (inspect.Parameter.VAR_POSITIONAL, inspect.Parameter.VAR_KEYWORD): + continue + if param.default is inspect.Parameter.empty: + return { + "valid": False, + "error": f"Provider '{provider}' requires argument '{param.name}'", + } + except (TypeError, ValueError): + pass + + return {"valid": True, "provider": provider, "source": "faker"} + + +def _make_handler(server: MappingServer): + """Create a request handler class bound to the server instance.""" + + class Handler(BaseHTTPRequestHandler): + def log_message(self, format, *args): + pass + + def _check_token(self) -> bool: + token = self.headers.get("X-DBSLICE-Token") + if token != server.token: + self._json_error(403, "Invalid or missing session token") + return False + return True + + def _json_response(self, data: dict, status: int = 200) -> None: + body = json.dumps(data, default=str).encode("utf-8") + self.send_response(status) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def _json_error(self, status: int, message: str) -> None: + self._json_response({"error": message}, status) + + def _read_json_body(self) -> dict[str, Any] | None: + length = int(self.headers.get("Content-Length", 0)) + if length == 0: + self._json_error(400, "Empty request body") + return None + try: + result: dict[str, Any] = json.loads(self.rfile.read(length)) + return result + except json.JSONDecodeError: + self._json_error(400, "Invalid JSON") + return None + + def do_GET(self) -> None: + parsed = urlparse(self.path) + + if parsed.path == "/" or parsed.path == "": + query = parse_qs(parsed.query) + url_token = query.get("token", [None])[0] + if url_token != server.token: + self.send_response(403) + self.send_header("Content-Type", "text/plain") + self.end_headers() + self.wfile.write(b"Invalid session token") + return + + from dbslice.mapping.ui import get_ui_html + + html = get_ui_html(server.token, server.database_url or "") + body = html.encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "text/html; charset=utf-8") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + else: + self._json_error(404, "Not found") + + def do_POST(self) -> None: + parsed = urlparse(self.path) + + if not self._check_token(): + return + + if parsed.path == "/api/introspect": + body = self._read_json_body() + if body is None: + return + try: + result = server._introspect( + database_url=body.get("database_url", ""), + schema=body.get("schema"), + detect_sensitive=body.get("detect_sensitive", True), + ) + self._json_response(result) + except Exception as e: + self._json_error(400, str(e)) + + elif parsed.path == "/api/apply-profile": + body = self._read_json_body() + if body is None: + return + try: + result = server._apply_profile( + profile_name=body.get("profile", ""), + current_mappings=body.get("current_mappings", {}), + ) + self._json_response(result) + except Exception as e: + self._json_error(400, str(e)) + + elif parsed.path == "/api/generate-config": + body = self._read_json_body() + if body is None: + return + try: + result = server._generate_config( + mappings=body.get("mappings", {}), + ) + self._json_response(result) + except Exception as e: + self._json_error(400, str(e)) + + elif parsed.path == "/api/validate-provider": + body = self._read_json_body() + if body is None: + return + try: + result = server._validate_provider( + provider=body.get("provider", ""), + ) + self._json_response(result) + except Exception as e: + self._json_error(400, str(e)) + + else: + self._json_error(404, "Not found") + + return Handler diff --git a/src/dbslice/mapping/static/index.html b/src/dbslice/mapping/static/index.html new file mode 100644 index 0000000..d8b6b57 --- /dev/null +++ b/src/dbslice/mapping/static/index.html @@ -0,0 +1,591 @@ + + + + + +dbslice — Column Mapping + + + + + + + + + +

+ + +
+
+ +

dbslice

+ Map +
+ + + + 127.0.0.1 +
+ + +
+ + + + + + + + +
+ +
+ +
+
+
+ + + +
+

Connect to a database

+

Enter your PostgreSQL connection URL in the sidebar and introspect the schema to begin mapping columns.

+ +
+
+ + + +
+
+ + +
+ + + + diff --git a/src/dbslice/mapping/ui.py b/src/dbslice/mapping/ui.py new file mode 100644 index 0000000..1d4b80b --- /dev/null +++ b/src/dbslice/mapping/ui.py @@ -0,0 +1,18 @@ +from pathlib import Path + +_STATIC_DIR = Path(__file__).parent / "static" +_TEMPLATE_CACHE: str | None = None + + +def get_ui_html(token: str, initial_url: str) -> str: + """Return the complete HTML page with token and initial URL embedded.""" + global _TEMPLATE_CACHE # noqa: PLW0603 + if _TEMPLATE_CACHE is None: + template_path = _STATIC_DIR / "index.html" + _TEMPLATE_CACHE = template_path.read_text(encoding="utf-8") + + return ( + _TEMPLATE_CACHE + .replace("{{TOKEN}}", token) + .replace("{{INITIAL_URL}}", initial_url) + ) diff --git a/src/dbslice/utils/anonymizer.py b/src/dbslice/utils/anonymizer.py index 7fe836e..afbfddd 100644 --- a/src/dbslice/utils/anonymizer.py +++ b/src/dbslice/utils/anonymizer.py @@ -1,4 +1,5 @@ import hashlib +import secrets from fnmatch import fnmatchcase from typing import TYPE_CHECKING, Any @@ -16,6 +17,7 @@ Faker = None # type: ignore if TYPE_CHECKING: + from dbslice.compliance.manifest import ComplianceManifest from dbslice.models import SchemaGraph @@ -126,13 +128,21 @@ class DeterministicAnonymizer: tables or rows. Uses Faker with deterministic seeding based on input values. """ - def __init__(self, seed: str = DEFAULT_ANONYMIZATION_SEED, schema: "SchemaGraph | None" = None): + def __init__( + self, + seed: str = DEFAULT_ANONYMIZATION_SEED, + schema: "SchemaGraph | None" = None, + deterministic: bool = True, + manifest: "ComplianceManifest | None" = None, + ): """ Initialize the anonymizer with a global seed. Args: seed: Global seed for deterministic anonymization schema: Optional schema graph for FK detection (prevents anonymizing FK columns) + deterministic: If False, use random seeds per value (stronger privacy, no cross-table consistency) + manifest: Optional compliance manifest to record anonymization actions Raises: ImportError: If Faker is not installed @@ -142,16 +152,21 @@ def __init__(self, seed: str = DEFAULT_ANONYMIZATION_SEED, schema: "SchemaGraph "Faker is required for anonymization. Install it with: pip install faker" ) - logger.info("Initializing anonymizer", seed=seed[:20] + "...") # Truncate seed in logs + mode = "deterministic" if deterministic else "non-deterministic" + logger.info("Initializing anonymizer", seed=seed[:20] + "...", mode=mode) self.global_seed = seed + self.deterministic = deterministic self.fake = Faker() self._cache: dict[tuple, Any] = {} self.redact_fields: set[str] = set() # Set of normalized "table.column" self.field_providers: dict[str, str] = {} self.custom_patterns: list[tuple[str, str]] = [] + self.fallback_patterns: list[tuple[str, str]] = [] self.security_null_fields: list[str] = [] self.schema = schema self._fk_columns_cache: dict[str, set[str]] = {} # Cache of FK columns per table + self.manifest = manifest + self._manifest_recorded: set[tuple[str, str]] = set() # Track which fields we've recorded def _normalize_field(self, table: str, column: str) -> str: """Return normalized table.column field name for matching.""" @@ -161,9 +176,11 @@ def _match_glob(self, pattern: str, field: str) -> bool: """Case-insensitive shell-style glob match for table.column patterns.""" return fnmatchcase(field, pattern.lower()) - def _resolve_custom_pattern_provider(self, table: str, column: str) -> str | None: + def _resolve_pattern_provider( + self, table: str, column: str, patterns: list[tuple[str, str]] + ) -> str | None: """ - Resolve provider from custom wildcard patterns. + Resolve provider from wildcard patterns. Resolution policy: - Most specific pattern wins (longest non-wildcard literal). @@ -173,7 +190,7 @@ def _resolve_custom_pattern_provider(self, table: str, column: str) -> str | Non best_provider: str | None = None best_specificity = -1 - for pattern, provider in self.custom_patterns: + for pattern, provider in patterns: if not self._match_glob(pattern, field): continue @@ -184,6 +201,14 @@ def _resolve_custom_pattern_provider(self, table: str, column: str) -> str | Non return best_provider + def _resolve_custom_pattern_provider(self, table: str, column: str) -> str | None: + """Resolve provider from user-defined wildcard patterns.""" + return self._resolve_pattern_provider(table, column, self.custom_patterns) + + def _resolve_fallback_pattern_provider(self, table: str, column: str) -> str | None: + """Resolve provider from fallback wildcard patterns (e.g., compliance profiles).""" + return self._resolve_pattern_provider(table, column, self.fallback_patterns) + def _resolve_exact_field_provider(self, table: str, column: str) -> str | None: """Resolve provider from exact field mappings.""" return self.field_providers.get(self._normalize_field(table, column)) @@ -192,9 +217,10 @@ def _resolve_faker_method(self, table: str, column: str) -> str: """ Resolve faker method with precedence: 1. Exact field provider mapping - 2. Custom wildcard pattern mapping - 3. Built-in column substring mapping - 4. pystr fallback + 2. User wildcard pattern mapping + 3. Fallback wildcard pattern mapping + 4. Built-in column substring mapping + 5. pystr fallback """ exact_provider = self._resolve_exact_field_provider(table, column) if exact_provider: @@ -204,6 +230,10 @@ def _resolve_faker_method(self, table: str, column: str) -> str: if pattern_provider: return pattern_provider + fallback_pattern_provider = self._resolve_fallback_pattern_provider(table, column) + if fallback_pattern_provider: + return fallback_pattern_provider + return self.get_faker_method(column) def configure( @@ -211,6 +241,7 @@ def configure( redact_fields: list[str], field_providers: dict[str, str] | None = None, patterns: dict[str, str] | None = None, + fallback_patterns: dict[str, str] | None = None, security_null_fields: list[str] | None = None, ): """ @@ -219,7 +250,8 @@ def configure( Args: redact_fields: List of exact fields in "table.column" format. field_providers: Exact field to faker-provider mappings. - patterns: Wildcard table.column glob to faker-provider mappings. + patterns: User wildcard table.column glob to faker-provider mappings. + fallback_patterns: Lower-priority wildcard mappings (e.g., compliance profiles). security_null_fields: Wildcard table.column globs to force NULL. """ self.redact_fields = {field.lower() for field in redact_fields} @@ -229,13 +261,17 @@ def configure( self.custom_patterns = [ (pattern.lower(), provider) for pattern, provider in (patterns or {}).items() ] + self.fallback_patterns = [ + (pattern.lower(), provider) for pattern, provider in (fallback_patterns or {}).items() + ] self.security_null_fields = [pattern.lower() for pattern in (security_null_fields or [])] logger.info( "Anonymizer configured", redact_field_count=len(self.redact_fields), exact_provider_count=len(self.field_providers), - pattern_count=len(self.custom_patterns), + user_pattern_count=len(self.custom_patterns), + fallback_pattern_count=len(self.fallback_patterns), security_null_pattern_count=len(self.security_null_fields), ) @@ -297,6 +333,10 @@ def should_anonymize(self, table: str, column: str) -> bool: if self._resolve_custom_pattern_provider(table, column): return True + # Fallback wildcard patterns (e.g., compliance profiles) + if self._resolve_fallback_pattern_provider(table, column): + return True + # Pattern matching on column name col_lower = column.lower() for pattern in _DEFAULT_ANONYMIZATION_PATTERNS: @@ -380,34 +420,53 @@ def anonymize_value(self, value: Any, table: str, column: str) -> Any: # FK integrity has highest priority over nulling/anonymization rules. if self._is_foreign_key_column(table, column): + self._record_manifest_fk(table, column) return value if self.should_null(table, column): + self._record_manifest_null(table, column) return None if not self.should_anonymize(table, column): + self._record_manifest_unmasked(table, column) return value faker_method = self._resolve_faker_method(table, column) - cache_key = (str(value), column, faker_method) - if cache_key in self._cache: - return self._cache[cache_key] - - # Generate deterministic seed from global seed + column/provider + original value - # Including column name ensures same value in different column types gets different output - hash_input = f"{self.global_seed}:{column}:{faker_method}:{value}".encode() - seed_int = int.from_bytes(hashlib.sha256(hash_input).digest()[:8], "big") - - self.fake.seed_instance(seed_int) - - try: - anonymized = getattr(self.fake, faker_method)() - except (AttributeError, TypeError): - # Fallback if Faker method doesn't exist or fails - anonymized = self.fake.pystr() - - self._cache[cache_key] = anonymized - return anonymized + self._record_manifest_masked(table, column, faker_method) + + # Check for custom compliance transformers first (these take the value as input) + custom_fn = self._get_custom_transformer(faker_method) + if custom_fn is not None: + return custom_fn(value) + + if self.deterministic: + cache_key = (str(value), column, faker_method) + if cache_key in self._cache: + return self._cache[cache_key] + + # Generate deterministic seed from global seed + column/provider + original value + # Including column name ensures same value in different column types gets different output + hash_input = f"{self.global_seed}:{column}:{faker_method}:{value}".encode() + seed_int = int.from_bytes(hashlib.sha256(hash_input).digest()[:8], "big") + self.fake.seed_instance(seed_int) + + try: + anonymized = getattr(self.fake, faker_method)() + except (AttributeError, TypeError): + anonymized = self.fake.pystr() + + self._cache[cache_key] = anonymized + return anonymized + else: + seed_int = int.from_bytes(secrets.token_bytes(8), "big") + self.fake.seed_instance(seed_int) + + try: + anonymized = getattr(self.fake, faker_method)() + except (AttributeError, TypeError): + anonymized = self.fake.pystr() + + return anonymized def anonymize_row(self, table: str, row: dict[str, Any]) -> dict[str, Any]: """ @@ -451,5 +510,49 @@ def get_statistics(self) -> dict[str, int]: "redact_fields_count": len(self.redact_fields), "exact_provider_count": len(self.field_providers), "pattern_count": len(self.custom_patterns), + "fallback_pattern_count": len(self.fallback_patterns), "security_null_pattern_count": len(self.security_null_fields), } + + @staticmethod + def _get_custom_transformer(method_name: str) -> Any | None: + """Look up a custom compliance transformer function by name.""" + from dbslice.compliance.transformers import CUSTOM_TRANSFORMERS + + return CUSTOM_TRANSFORMERS.get(method_name) + + def _record_manifest_masked(self, table: str, column: str, method: str) -> None: + """Record a masked field in the manifest (once per table.column).""" + if not self.manifest: + return + key = (table, column) + if key not in self._manifest_recorded: + self._manifest_recorded.add(key) + self.manifest.record_masked_field(table, column, method) + + def _record_manifest_null(self, table: str, column: str) -> None: + """Record a NULLed field in the manifest (once per table.column).""" + if not self.manifest: + return + key = (table, column) + if key not in self._manifest_recorded: + self._manifest_recorded.add(key) + self.manifest.record_nulled_field(table, column, "security_null_pattern") + + def _record_manifest_fk(self, table: str, column: str) -> None: + """Record a preserved FK field in the manifest (once per table.column).""" + if not self.manifest: + return + key = (table, column) + if key not in self._manifest_recorded: + self._manifest_recorded.add(key) + self.manifest.record_fk_preserved(table, column) + + def _record_manifest_unmasked(self, table: str, column: str) -> None: + """Record an unmasked field in the manifest (once per table.column).""" + if not self.manifest: + return + key = (table, column) + if key not in self._manifest_recorded: + self._manifest_recorded.add(key) + self.manifest.record_unmasked_field(table, column) diff --git a/tests/test_anonymizer.py b/tests/test_anonymizer.py index 6654416..dc86580 100644 --- a/tests/test_anonymizer.py +++ b/tests/test_anonymizer.py @@ -240,6 +240,27 @@ def test_custom_pattern_tie_uses_first_defined(self): assert anon._resolve_faker_method("users", "user_id") == "name" + def test_fallback_patterns_apply_when_user_patterns_missing(self): + anon = DeterministicAnonymizer() + anon.configure( + [], + patterns={}, + fallback_patterns={"*.admission_date*": "date"}, + ) + + assert anon.should_anonymize("visits", "admission_date") + assert anon._resolve_faker_method("visits", "admission_date") == "date" + + def test_user_patterns_override_fallback_patterns(self): + anon = DeterministicAnonymizer() + anon.configure( + [], + patterns={"*.*date*": "date_time"}, + fallback_patterns={"*.admission_date*": "date"}, + ) + + assert anon._resolve_faker_method("visits", "admission_date") == "date_time" + def test_security_null_fields_applies(self): anon = DeterministicAnonymizer() anon.configure( diff --git a/tests/test_compliance.py b/tests/test_compliance.py new file mode 100644 index 0000000..c50b52b --- /dev/null +++ b/tests/test_compliance.py @@ -0,0 +1,701 @@ +"""Tests for the compliance module: profiles, scanner, manifest, and integration.""" + +import json +from unittest.mock import MagicMock + +import pytest +import yaml + +import dbslice.cli as cli +from dbslice.compliance.manifest import ComplianceManifest +from dbslice.compliance.profiles import ( + get_profile, + list_profiles, +) +from dbslice.compliance.scanner import PIIDetection, PIIScanner, _luhn_check +from dbslice.config import ExtractConfig +from dbslice.core.engine import ExtractionEngine +from dbslice.exceptions import ExtractionError +from dbslice.models import Column, SchemaGraph, Table + +# ────────────────────────────────────────────────────────── +# Profile tests +# ────────────────────────────────────────────────────────── + + +class TestProfiles: + def test_get_gdpr_profile(self): + profile = get_profile("gdpr") + assert profile.name == "gdpr" + assert profile.display_name == "GDPR" + assert "email" in profile.required_column_patterns + + def test_get_hipaa_profile(self): + profile = get_profile("hipaa") + assert profile.name == "hipaa" + assert "ssn" in profile.required_column_patterns + assert len(profile.identifiers) == 18 + + def test_get_pci_dss_profile(self): + profile = get_profile("pci-dss") + assert profile.name == "pci-dss" + assert "credit_card" in profile.required_column_patterns + assert "cvv" in profile.required_null_patterns + + def test_get_profile_case_insensitive(self): + assert get_profile("GDPR").name == "gdpr" + assert get_profile("Hipaa").name == "hipaa" + assert get_profile("PCI-DSS").name == "pci-dss" + + def test_get_profile_unknown_raises(self): + with pytest.raises(ValueError, match="Unknown compliance profile"): + get_profile("unknown") + + def test_list_profiles(self): + profiles = list_profiles() + assert len(profiles) >= 3 + names = {p.name for p in profiles} + assert "gdpr" in names + assert "hipaa" in names + assert "pci-dss" in names + + def test_gdpr_covers_direct_identifiers(self): + profile = get_profile("gdpr") + expected_patterns = ["email", "phone", "first_name", "last_name", "ssn", "ip_address"] + for pattern in expected_patterns: + assert pattern in profile.required_column_patterns, f"Missing: {pattern}" + + def test_hipaa_has_18_identifiers(self): + profile = get_profile("hipaa") + assert len(profile.identifiers) == 18 + assert profile.identifiers[0].startswith("1.") + assert profile.identifiers[17].startswith("18.") + + def test_pci_dss_covers_pan_fields(self): + profile = get_profile("pci-dss") + for pattern in ["credit_card", "card_number", "pan"]: + assert pattern in profile.required_column_patterns + + def test_profiles_have_value_scan_patterns(self): + for profile in list_profiles(): + assert len(profile.value_scan_patterns) > 0 + + def test_profiles_have_freetext_warnings(self): + for profile in list_profiles(): + assert len(profile.warn_freetext_columns) > 0 + + def test_profile_is_frozen(self): + profile = get_profile("gdpr") + with pytest.raises(AttributeError): + profile.name = "hacked" # type: ignore[misc] + + +# ────────────────────────────────────────────────────────── +# Scanner tests +# ────────────────────────────────────────────────────────── + + +class TestPIIScanner: + def test_detect_emails(self): + scanner = PIIScanner(patterns=["email"]) + values = ["john@example.com", "jane@test.org", "not-an-email", "bob@foo.co"] + detections = scanner.scan_column("users", "notes", values) + assert len(detections) == 1 + assert detections[0].pattern_name == "email" + assert detections[0].match_count == 3 + + def test_detect_ssn(self): + scanner = PIIScanner(patterns=["ssn"]) + values = ["123-45-6789", "987-65-4321", "not-ssn", "hello"] + detections = scanner.scan_column("users", "data", values) + assert len(detections) == 1 + assert detections[0].pattern_name == "ssn" + assert detections[0].match_count == 2 + + def test_detect_credit_card_with_luhn(self): + scanner = PIIScanner(patterns=["credit_card"]) + # 4111111111111111 is a valid Luhn number (Visa test card) + values = ["4111111111111111", "1234567890123456", "not-a-card"] + detections = scanner.scan_column("orders", "memo", values) + assert len(detections) == 1 + assert detections[0].pattern_name == "credit_card" + # Only the Luhn-valid one should match + assert detections[0].match_count >= 1 + + def test_detect_credit_card_with_grouped_format(self): + scanner = PIIScanner(patterns=["credit_card"]) + values = ["4111-1111-1111-1111", "not-a-card"] + detections = scanner.scan_column("orders", "memo", values) + assert len(detections) == 1 + assert detections[0].pattern_name == "credit_card" + + def test_detect_credit_card_embedded_in_text(self): + scanner = PIIScanner(patterns=["credit_card"]) + values = ["card=4111 1111 1111 1111 expires soon", "hello"] + detections = scanner.scan_column("orders", "memo", values) + assert len(detections) == 1 + assert detections[0].match_count == 1 + + def test_detect_ipv4(self): + scanner = PIIScanner(patterns=["ipv4"]) + values = ["192.168.1.1", "10.0.0.1", "not-ip", "256.1.1.1"] + detections = scanner.scan_column("logs", "source", values) + assert len(detections) >= 1 + assert detections[0].pattern_name == "ipv4" + + def test_no_detection_below_threshold(self): + scanner = PIIScanner(patterns=["email"], min_match_rate=0.5) + # Only 1 out of 10 is an email — below 50% threshold + values = ["john@example.com"] + ["no-email"] * 9 + detections = scanner.scan_column("users", "notes", values) + assert len(detections) == 0 + + def test_scan_rows(self): + scanner = PIIScanner(patterns=["email"]) + rows = [ + {"id": 1, "notes": "contact john@example.com"}, + {"id": 2, "notes": "call jane@test.org"}, + {"id": 3, "notes": "nothing here"}, + ] + detections = scanner.scan_rows("users", rows) + assert any(d.column == "notes" and d.pattern_name == "email" for d in detections) + + def test_scan_rows_skip_columns(self): + scanner = PIIScanner(patterns=["email"]) + rows = [ + {"id": 1, "email": "john@example.com", "notes": "call john@example.com"}, + ] + detections = scanner.scan_rows("users", rows, skip_columns={"email"}) + # Should only detect in "notes", not in "email" (skipped) + assert all(d.column != "email" for d in detections) + + def test_scan_empty_rows(self): + scanner = PIIScanner() + assert scanner.scan_rows("users", []) == [] + + def test_scan_none_values(self): + scanner = PIIScanner(patterns=["email"]) + values = [None, None, None] + detections = scanner.scan_column("users", "email", values) + assert len(detections) == 0 + + def test_confidence_levels(self): + scanner = PIIScanner(patterns=["email"], min_match_rate=0.01) + # High match rate = high confidence + values = ["a@b.com"] * 10 + detections = scanner.scan_column("t", "c", values) + assert detections[0].confidence == "high" + + def test_match_rate_property(self): + detection = PIIDetection( + table="t", + column="c", + pattern_name="email", + match_count=3, + sample_size=10, + confidence="high", + ) + assert detection.match_rate == 0.3 + + def test_match_rate_zero_sample(self): + detection = PIIDetection( + table="t", + column="c", + pattern_name="email", + match_count=0, + sample_size=0, + confidence="low", + ) + assert detection.match_rate == 0.0 + + +class TestLuhnCheck: + def test_valid_visa(self): + assert _luhn_check("4111111111111111") is True + + def test_valid_mastercard(self): + assert _luhn_check("5500000000000004") is True + + def test_invalid_number(self): + assert _luhn_check("1234567890123456") is False + + def test_too_short(self): + assert _luhn_check("123") is False + + +# ────────────────────────────────────────────────────────── +# Manifest tests +# ────────────────────────────────────────────────────────── + + +class TestComplianceManifest: + def test_initialize(self): + manifest = ComplianceManifest() + manifest.initialize( + extraction_id="test-123", + compliance_profiles=["gdpr"], + anonymization_seed="my_seed", + deterministic=True, + ) + assert manifest.extraction_id == "test-123" + assert manifest.compliance_profiles == ["gdpr"] + assert manifest.masking_type == "deterministic_pseudonymization" + assert manifest.seed_hash.startswith("sha256:") + assert manifest.dbslice_version + + def test_initialize_non_deterministic(self): + manifest = ComplianceManifest() + manifest.initialize( + extraction_id="test-456", + deterministic=False, + ) + assert manifest.masking_type == "non_deterministic_pseudonymization" + + def test_record_masked_field(self): + manifest = ComplianceManifest() + manifest.record_masked_field("users", "email", "email", category="direct_identifier") + assert len(manifest.tables["users"].fields_masked) == 1 + assert manifest.tables["users"].fields_masked[0].method == "email" + + def test_record_nulled_field(self): + manifest = ComplianceManifest() + manifest.record_nulled_field("users", "password_hash", "security_null_pattern") + assert len(manifest.tables["users"].fields_nulled) == 1 + + def test_record_fk_preserved(self): + manifest = ComplianceManifest() + manifest.record_fk_preserved("orders", "user_id") + assert "user_id" in manifest.tables["orders"].fields_preserved_fk + + def test_record_unmasked_field(self): + manifest = ComplianceManifest() + manifest.record_unmasked_field("orders", "status") + assert "status" in manifest.tables["orders"].fields_unmasked + + def test_set_table_row_count(self): + manifest = ComplianceManifest() + manifest.set_table_row_count("users", 150) + assert manifest.tables["users"].rows_extracted == 150 + + def test_add_warning(self): + manifest = ComplianceManifest() + manifest.add_warning("notes", "body", "may contain PII") + assert len(manifest.warnings) == 1 + assert manifest.warnings[0].table == "notes" + + def test_add_pii_detections(self): + manifest = ComplianceManifest() + detection = PIIDetection( + table="logs", + column="message", + pattern_name="email", + match_count=5, + sample_size=100, + confidence="high", + ) + manifest.add_pii_detections([detection]) + assert len(manifest.pii_scan_results) == 1 + + def test_to_dict(self): + manifest = ComplianceManifest() + manifest.initialize( + extraction_id="test-789", + compliance_profiles=["hipaa"], + anonymization_seed="seed123", + ) + manifest.record_masked_field("users", "email", "email") + manifest.record_nulled_field("users", "password", "security_null") + manifest.set_table_row_count("users", 50) + manifest.add_warning("notes", "body", "freetext PII risk") + + d = manifest.to_dict() + assert d["extraction_id"] == "test-789" + assert d["compliance_profiles"] == ["hipaa"] + assert "users" in d["tables"] + assert d["tables"]["users"]["rows_extracted"] == 50 + assert len(d["tables"]["users"]["fields_masked"]) == 1 + assert len(d["warnings"]) == 1 + + def test_to_json(self): + manifest = ComplianceManifest() + manifest.initialize(extraction_id="test-json") + manifest.record_masked_field("t", "c", "email") + json_str = manifest.to_json() + parsed = json.loads(json_str) + assert parsed["extraction_id"] == "test-json" + + def test_to_json_compact(self): + manifest = ComplianceManifest() + manifest.initialize(extraction_id="test-compact") + json_str = manifest.to_json(pretty=False) + assert "\n" not in json_str + + +# ────────────────────────────────────────────────────────── +# Integration: anonymizer + manifest +# ────────────────────────────────────────────────────────── + + +class TestAnonymizerManifestIntegration: + def test_anonymizer_records_to_manifest(self): + from dbslice.utils.anonymizer import DeterministicAnonymizer + + manifest = ComplianceManifest() + anonymizer = DeterministicAnonymizer( + seed="test_seed", + deterministic=True, + manifest=manifest, + ) + anonymizer.configure(redact_fields=["users.email"]) + + row = {"id": 1, "email": "john@example.com", "status": "active"} + anonymizer.anonymize_row("users", row) + + # email should be recorded as masked + assert any( + f.column == "email" for f in manifest.tables.get("users", MagicMock()).fields_masked + ) + + def test_anonymizer_non_deterministic_mode(self): + from dbslice.utils.anonymizer import DeterministicAnonymizer + + anonymizer = DeterministicAnonymizer( + seed="test_seed", + deterministic=False, + ) + anonymizer.configure(redact_fields=["users.email"]) + + # Same input should produce different outputs in non-deterministic mode + results = set() + for _ in range(10): + row = {"email": "john@example.com"} + result = anonymizer.anonymize_row("users", row) + results.add(result["email"]) + + # With 10 random seeds, we should get multiple distinct values + assert len(results) > 1 + + +# ────────────────────────────────────────────────────────── +# Config file integration +# ────────────────────────────────────────────────────────── + + +class TestComplianceConfig: + def test_config_file_compliance_section(self, tmp_path): + from dbslice.config_file import DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text(""" +database: + url: postgres://localhost/test + +compliance: + profiles: [gdpr] + strict: true + generate_manifest: true + +anonymization: + enabled: true + deterministic: false +""") + config = DbsliceConfig.from_yaml(config_file) + assert config.compliance.profiles == ["gdpr"] + assert config.compliance.strict is True + assert config.compliance.generate_manifest is True + assert config.anonymization.deterministic is False + + def test_config_file_invalid_profile(self, tmp_path): + from dbslice.config_file import ConfigFileError, DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text(""" +compliance: + profiles: [nonexistent] +""") + with pytest.raises(ConfigFileError, match="Unknown compliance profile"): + DbsliceConfig.from_yaml(config_file) + + def test_config_file_compliance_unknown_key(self, tmp_path): + from dbslice.config_file import ConfigFileError, DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text(""" +compliance: + profiles: [gdpr] + invalid_key: true +""") + with pytest.raises(ConfigFileError, match="Unknown key"): + DbsliceConfig.from_yaml(config_file) + + def test_to_extract_config_with_compliance(self, tmp_path): + from dbslice.config import SeedSpec + from dbslice.config_file import DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text(""" +database: + url: postgres://localhost/test + +compliance: + profiles: [hipaa] + strict: true + generate_manifest: true + +anonymization: + enabled: true + deterministic: false +""") + config = DbsliceConfig.from_yaml(config_file) + seed = SeedSpec(table="users", column="id", value=1, where_clause=None) + extract_config = config.to_extract_config(seeds=[seed]) + + assert extract_config.compliance_profiles == ["hipaa"] + assert extract_config.compliance_strict is True + assert extract_config.generate_manifest is True + assert extract_config.deterministic is False + + def test_to_extract_config_with_compliance_policy_fields(self, tmp_path): + from dbslice.config import SeedSpec + from dbslice.config_file import DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text( + """ +database: + url: postgres://localhost/test +compliance: + profiles: [gdpr] + policy_mode: strict + allow_url_patterns: + - ".*localhost.*" + deny_url_patterns: + - ".*prod.*" + required_sslmode: require + require_ci: true + sign_manifest: true + manifest_key_env: DBSLICE_SIGN_KEY +""" + ) + config = DbsliceConfig.from_yaml(config_file) + seed = SeedSpec(table="users", column="id", value=1, where_clause=None) + extract_config = config.to_extract_config(seeds=[seed]) + + assert extract_config.compliance_policy_mode == "strict" + assert extract_config.compliance_allowed_url_patterns == [".*localhost.*"] + assert extract_config.compliance_denied_url_patterns == [".*prod.*"] + assert extract_config.compliance_required_sslmode == "require" + assert extract_config.compliance_require_ci is True + assert extract_config.compliance_manifest_sign is True + assert extract_config.compliance_manifest_key_env == "DBSLICE_SIGN_KEY" + + def test_compliance_empty_section_ok(self, tmp_path): + from dbslice.config_file import DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text(""" +compliance: {} +""") + config = DbsliceConfig.from_yaml(config_file) + assert config.compliance.profiles == [] + assert config.compliance.strict is False + + def test_to_yaml_includes_deterministic_and_compliance(self, tmp_path): + from dbslice.config_file import DbsliceConfig + + config_file = tmp_path / "dbslice.yaml" + config_file.write_text( + """ +database: + url: postgres://localhost/test +anonymization: + enabled: true + deterministic: false +compliance: + profiles: [gdpr] + strict: true + generate_manifest: true + policy_mode: strict +""" + ) + config = DbsliceConfig.from_yaml(config_file) + exported = config.to_yaml(include_comments=False) + parsed = yaml.safe_load(exported) + assert parsed["anonymization"]["deterministic"] is False + assert parsed["compliance"]["profiles"] == ["gdpr"] + assert parsed["compliance"]["strict"] is True + assert parsed["compliance"]["policy_mode"] == "strict" + + +class TestComplianceScanSemantics: + def _engine(self, strict: bool) -> ExtractionEngine: + config = ExtractConfig( + database_url="postgresql://localhost/test", + seeds=[], + anonymize=True, + compliance_profiles=["gdpr"], + compliance_strict=strict, + ) + return ExtractionEngine(config) + + def test_strict_mode_ignores_masked_synthetic_values(self): + engine = self._engine(strict=True) + pre_mask = {"users": [{"email": "alice@example.com"}]} + post_mask = {"users": [{"email": "xcooper@example.org"}]} + # No exception: email column is protected by profile rules. + engine._run_pii_scan(pre_mask, post_mask) + + def test_strict_mode_fails_on_residual_unprotected_detections(self): + engine = self._engine(strict=True) + pre_mask = {"logs": [{"message": "contact alice@example.com"}]} + post_mask = {"logs": [{"message": "contact alice@example.com"}]} + with pytest.raises(ExtractionError, match="residual unprotected PII"): + engine._run_pii_scan(pre_mask, post_mask) + + +class TestManifestVerification: + def test_manifest_file_hash_and_signature_verification(self, tmp_path): + from dbslice.compliance.manifest import verify_manifest_payload + + data_file = tmp_path / "subset.sql" + data_file.write_text("select 1;\n", encoding="utf-8") + + manifest = ComplianceManifest() + manifest.initialize(extraction_id="verify-1") + manifest.add_output_file_hashes([data_file], base_dir=tmp_path) + manifest.sign("secret-key") + + manifest_path = tmp_path / "subset.manifest.json" + manifest_path.write_text(manifest.to_json(pretty=True), encoding="utf-8") + payload = json.loads(manifest_path.read_text(encoding="utf-8")) + + ok, errors = verify_manifest_payload( + payload, + manifest_path, + signing_key="secret-key", + verify_signature=True, + ) + assert ok is True + assert errors == [] + + data_file.write_text("tampered\n", encoding="utf-8") + ok, errors = verify_manifest_payload( + payload, + manifest_path, + signing_key="secret-key", + verify_signature=True, + ) + assert ok is False + assert any("Hash mismatch" in err for err in errors) + + def test_verify_manifest_cli_command(self, tmp_path, monkeypatch): + data_file = tmp_path / "subset.sql" + data_file.write_text("select 1;\n", encoding="utf-8") + + manifest = ComplianceManifest() + manifest.initialize(extraction_id="verify-cli") + manifest.add_output_file_hashes([data_file], base_dir=tmp_path) + manifest.sign("secret-key") + + manifest_path = tmp_path / "subset.manifest.json" + manifest_path.write_text(manifest.to_json(pretty=True), encoding="utf-8") + + monkeypatch.setenv("DBSLICE_MANIFEST_SIGNING_KEY", "secret-key") + cli.verify_manifest( + manifest_file=manifest_path, + verify_signature=True, + key_env="DBSLICE_MANIFEST_SIGNING_KEY", + ) + + +class TestCompliancePolicyGates: + def test_policy_blocks_stdout_without_breakglass(self): + config = ExtractConfig( + database_url="postgresql://localhost/test", + seeds=[], + compliance_profiles=["gdpr"], + compliance_policy_mode="standard", + anonymize=True, + ) + with pytest.raises(ValueError, match="stdout output is blocked"): + cli._enforce_compliance_policy( + config, + out_file=None, + allow_raw=False, + breakglass_reason=None, + ticket_id=None, + ) + + def test_policy_breakglass_requires_metadata(self): + config = ExtractConfig( + database_url="postgresql://localhost/test", + seeds=[], + compliance_profiles=["gdpr"], + compliance_policy_mode="strict", + anonymize=False, + ) + with pytest.raises(ValueError, match="--breakglass-reason"): + cli._enforce_compliance_policy( + config, + out_file=None, + allow_raw=True, + breakglass_reason=None, + ticket_id="SEC-123", + ) + + def test_source_guardrails_validate_sslmode_and_ci(self, monkeypatch): + config = ExtractConfig( + database_url="postgresql://localhost/test?sslmode=require", + seeds=[], + compliance_profiles=["gdpr"], + compliance_required_sslmode="require", + compliance_require_ci=True, + ) + monkeypatch.setenv("CI", "true") + cli._enforce_source_guardrails(config) + + bad = ExtractConfig( + database_url="postgresql://localhost/test?sslmode=disable", + seeds=[], + compliance_profiles=["gdpr"], + compliance_required_sslmode="require", + ) + with pytest.raises(ValueError, match="sslmode"): + cli._enforce_source_guardrails(bad) + + +class TestComplianceInspectReport: + def test_report_detects_uncovered_columns(self): + class FakeAdapter: + def fetch_rows(self, table: str, where_clause: str, params: tuple[object, ...]): + assert where_clause == "TRUE" + assert params == () + if table == "logs": + yield {"id": 1, "message": "contact jane@example.com"} + + schema = SchemaGraph( + tables={ + "logs": Table( + name="logs", + schema="public", + columns=[ + Column("id", "integer", False, True), + Column("message", "text", True, False), + ], + primary_key=("id",), + foreign_keys=[], + ) + }, + edges=[], + ) + + # Smoke test that helper executes and prints JSON report + cli._run_compliance_check_report( + adapter=FakeAdapter(), + db_schema=schema, + profiles=["gdpr"], + sample_rows=10, + output_mode="json", + target_table=None, + console=MagicMock(), + ) diff --git a/tests/test_compliance_gaps.py b/tests/test_compliance_gaps.py new file mode 100644 index 0000000..2bd30f0 --- /dev/null +++ b/tests/test_compliance_gaps.py @@ -0,0 +1,328 @@ +""" +Tests for compliance gap fixes: HIPAA transformers, free-text handling, +binary columns, k-anonymity, and configurable scan sample size. + +These tests verify END-TO-END behavior — not just that functions exist, +but that data is actually transformed correctly through the full pipeline. +""" + +from dbslice.compliance.transformers import ( + BINARY_SENTINEL, + age_bucket, + hipaa_safe_harbor_zip3, + redact_freetext, + year_only, +) + +# ────────────────────────────────────────────────────────── +# Phase A: HIPAA-specific transformers +# ────────────────────────────────────────────────────────── + + +class TestYearOnly: + def test_iso_date(self): + assert year_only("2024-03-15") == "2024" + + def test_iso_datetime(self): + assert year_only("2024-03-15T10:30:00") == "2024" + + def test_us_date_slash(self): + assert year_only("03/15/2024") == "2024" + + def test_us_date_dash(self): + assert year_only("03-15-2024") == "2024" + + def test_datetime_object(self): + import datetime + + assert year_only(datetime.date(1985, 6, 15)) == "1985" + + def test_datetime_datetime_object(self): + import datetime + + assert year_only(datetime.datetime(1985, 6, 15, 10, 30)) == "1985" + + def test_just_year(self): + assert year_only("1990") == "1990" + + def test_none(self): + assert year_only(None) == "" + + def test_garbage(self): + assert year_only("not a date") == "" + + def test_embedded_year(self): + assert year_only("born in 1985 somewhere") == "1985" + + +class TestHipaaZip3: + def test_normal_5digit_zip(self): + result = hipaa_safe_harbor_zip3("12345") + assert result == "123" + + def test_zip_plus_4(self): + result = hipaa_safe_harbor_zip3("12345-6789") + assert result == "123" + + def test_low_population_zip_suppressed(self): + # 036xx is in NH, low population + result = hipaa_safe_harbor_zip3("03601") + assert result == "000" + + def test_another_low_pop(self): + # 821xx is in WY + result = hipaa_safe_harbor_zip3("82101") + assert result == "000" + + def test_high_population_zip_retained(self): + # 100xx is NYC — high population + result = hipaa_safe_harbor_zip3("10001") + assert result == "100" + + def test_short_zip(self): + result = hipaa_safe_harbor_zip3("12") + assert result == "000" + + def test_integer_zip(self): + result = hipaa_safe_harbor_zip3(90210) + assert result == "902" + + +class TestAgeBucket: + def test_normal_age(self): + assert age_bucket(45) == "45" + + def test_age_89(self): + assert age_bucket(89) == "89" + + def test_age_90_bucketed(self): + assert age_bucket(90) == "90+" + + def test_age_105_bucketed(self): + assert age_bucket(105) == "90+" + + def test_string_age(self): + assert age_bucket("75") == "75" + + def test_string_age_over_89(self): + assert age_bucket("92") == "90+" + + def test_non_numeric(self): + assert age_bucket("unknown") == "unknown" + + +class TestCustomTransformersInAnonymizer: + """Verify custom transformers are actually called by the anonymizer.""" + + def test_year_only_through_anonymizer(self): + from dbslice.utils.anonymizer import DeterministicAnonymizer + + anon = DeterministicAnonymizer(seed="test") + anon.configure( + redact_fields=[], + field_providers={"patients.admission_date": "year_only"}, + ) + result = anon.anonymize_value("2024-03-15", "patients", "admission_date") + assert result == "2024" + + def test_hipaa_zip3_through_anonymizer(self): + from dbslice.utils.anonymizer import DeterministicAnonymizer + + anon = DeterministicAnonymizer(seed="test") + anon.configure( + redact_fields=[], + field_providers={"patients.zipcode": "hipaa_zip3"}, + ) + result = anon.anonymize_value("03601", "patients", "zipcode") + assert result == "000" # Low population area + + def test_age_bucket_through_anonymizer(self): + from dbslice.utils.anonymizer import DeterministicAnonymizer + + anon = DeterministicAnonymizer(seed="test") + anon.configure( + redact_fields=[], + field_providers={"patients.age": "age_bucket"}, + ) + assert anon.anonymize_value(92, "patients", "age") == "90+" + assert anon.anonymize_value(45, "patients", "age") == "45" + + def test_hipaa_profile_uses_year_only_for_dates(self): + """End-to-end: HIPAA profile maps date columns to year_only transformer.""" + from dbslice.compliance.profiles import get_profile + from dbslice.utils.anonymizer import DeterministicAnonymizer + + profile = get_profile("hipaa") + # Build fallback patterns like the engine does + fallback_patterns = { + f"*.{pattern}*": method for pattern, method in profile.required_column_patterns.items() + } + + anon = DeterministicAnonymizer(seed="test") + anon.configure( + redact_fields=[], + fallback_patterns=fallback_patterns, + ) + + # admission_date should use year_only + result = anon.anonymize_value("2024-03-15", "visits", "admission_date") + assert result == "2024" + + def test_hipaa_profile_uses_zip3_for_zipcodes(self): + """End-to-end: HIPAA profile maps ZIP columns to hipaa_zip3 transformer.""" + from dbslice.compliance.profiles import get_profile + from dbslice.utils.anonymizer import DeterministicAnonymizer + + profile = get_profile("hipaa") + fallback_patterns = { + f"*.{pattern}*": method for pattern, method in profile.required_column_patterns.items() + } + + anon = DeterministicAnonymizer(seed="test") + anon.configure( + redact_fields=[], + fallback_patterns=fallback_patterns, + ) + + result = anon.anonymize_value("82101", "addresses", "zipcode") + assert result == "000" # Wyoming, low population + + +# ────────────────────────────────────────────────────────── +# Phase B: Free-text handling +# ────────────────────────────────────────────────────────── + + +class TestFreetextRedaction: + def test_redact_email(self): + text = "Contact john@example.com for details" + result = redact_freetext(text) + assert "[REDACTED_EMAIL]" in result + assert "john@example.com" not in result + assert "Contact" in result + assert "for details" in result + + def test_redact_ssn(self): + text = "Patient SSN: 123-45-6789" + result = redact_freetext(text) + assert "[REDACTED_SSN]" in result + assert "123-45-6789" not in result + + def test_redact_phone(self): + text = "Call 555-123-4567" + result = redact_freetext(text) + assert "[REDACTED_PHONE]" in result + + def test_redact_multiple(self): + text = "Email: alice@test.com, SSN: 123-45-6789" + result = redact_freetext(text) + assert "[REDACTED_EMAIL]" in result + assert "[REDACTED_SSN]" in result + assert "alice@test.com" not in result + assert "123-45-6789" not in result + + def test_no_pii_unchanged(self): + text = "This is a normal note with no PII" + assert redact_freetext(text) == text + + def test_none_returns_empty(self): + assert redact_freetext(None) == "" + + def test_redact_ip(self): + text = "Source IP: 192.168.1.100" + result = redact_freetext(text) + assert "[REDACTED_IP]" in result + assert "192.168.1.100" not in result + + +# ────────────────────────────────────────────────────────── +# Phase E: k-anonymity +# ────────────────────────────────────────────────────────── + + +class TestKAnonymityCheck: + """Test k-anonymity verification logic directly on data.""" + + def test_passes_when_k_satisfied(self): + """Each combination appears >= 2 times.""" + rows = [ + {"age": "30", "gender": "M", "zip": "100"}, + {"age": "30", "gender": "M", "zip": "100"}, + {"age": "40", "gender": "F", "zip": "200"}, + {"age": "40", "gender": "F", "zip": "200"}, + ] + violations = self._check(rows, ["age", "gender", "zip"], k=2) + assert len(violations) == 0 + + def test_fails_when_unique_combination(self): + """One person with a unique combination.""" + rows = [ + {"age": "30", "gender": "M", "zip": "100"}, + {"age": "30", "gender": "M", "zip": "100"}, + {"age": "99", "gender": "X", "zip": "999"}, # unique + ] + violations = self._check(rows, ["age", "gender", "zip"], k=2) + assert len(violations) == 1 + + def test_k_1_always_passes(self): + rows = [{"age": "unique_value", "gender": "unique"}] + violations = self._check(rows, ["age", "gender"], k=1) + assert len(violations) == 0 + + @staticmethod + def _check(rows, qi_columns, k): + from collections import Counter + + combos = Counter(tuple(str(row.get(c, "")) for c in qi_columns) for row in rows) + return [(combo, count) for combo, count in combos.items() if count < k] + + +# ────────────────────────────────────────────────────────── +# Phase C: Binary column sentinel +# ────────────────────────────────────────────────────────── + + +class TestBinarySentinel: + def test_sentinel_value(self): + assert BINARY_SENTINEL == b"\x00" + + +# ────────────────────────────────────────────────────────── +# Integration: verify config fields exist +# ────────────────────────────────────────────────────────── + + +class TestConfigFields: + def test_extract_config_has_new_fields(self): + from dbslice.config import ExtractConfig, SeedSpec + + seed = SeedSpec(table="t", column="c", value=1, where_clause=None) + config = ExtractConfig( + database_url="postgres://localhost/test", + seeds=[seed], + freetext_action="redact", + binary_action="sentinel", + compliance_sample_rows=500, + k_anonymity_min_k=3, + k_anonymity_quasi_identifiers=["users.age", "users.zip"], + k_anonymity_action="fail", + ) + assert config.freetext_action == "redact" + assert config.binary_action == "sentinel" + assert config.compliance_sample_rows == 500 + assert config.k_anonymity_min_k == 3 + assert config.k_anonymity_action == "fail" + + def test_defaults(self): + from dbslice.config import ExtractConfig, SeedSpec + + seed = SeedSpec(table="t", column="c", value=1, where_clause=None) + config = ExtractConfig( + database_url="postgres://localhost/test", + seeds=[seed], + ) + assert config.freetext_action == "warn" + assert config.binary_action == "warn" + assert config.compliance_sample_rows == 100 + assert config.k_anonymity_min_k is None + assert config.k_anonymity_action == "warn" diff --git a/tests/test_mapping_ui.py b/tests/test_mapping_ui.py new file mode 100644 index 0000000..403f560 --- /dev/null +++ b/tests/test_mapping_ui.py @@ -0,0 +1,204 @@ +"""Tests for the column mapping UI server and API.""" + +import json +import threading +import time +from http.client import HTTPConnection + +import pytest + +from dbslice.mapping.server import MappingServer + + +@pytest.fixture() +def server(): + """Start a mapping UI server on a random-ish port for testing.""" + srv = MappingServer(port=19473, database_url="", schema=None) + thread = threading.Thread(target=srv.start, kwargs={"open_browser": False}, daemon=True) + thread.start() + time.sleep(0.3) # Wait for server to bind + yield srv + if srv._server: + srv._server.shutdown() + + +def _conn(): + return HTTPConnection("127.0.0.1", 19473, timeout=5) + + +def _post(conn, path, body, token): + conn.request( + "POST", + path, + json.dumps(body).encode(), + {"Content-Type": "application/json", "X-DBSLICE-Token": token}, + ) + return conn.getresponse() + + +class TestTokenSecurity: + def test_get_without_token_fails(self, server): + conn = _conn() + conn.request("GET", "/") + resp = conn.getresponse() + assert resp.status == 403 + + def test_get_with_wrong_token_fails(self, server): + conn = _conn() + conn.request("GET", "/?token=wrong") + resp = conn.getresponse() + assert resp.status == 403 + + def test_get_with_valid_token_serves_html(self, server): + conn = _conn() + conn.request("GET", f"/?token={server.token}") + resp = conn.getresponse() + assert resp.status == 200 + body = resp.read().decode() + assert "dbslice" in body + assert "Column Mapping" in body + + def test_post_without_token_fails(self, server): + conn = _conn() + conn.request( + "POST", + "/api/validate-provider", + json.dumps({"provider": "email"}).encode(), + {"Content-Type": "application/json"}, + ) + resp = conn.getresponse() + assert resp.status == 403 + + def test_post_with_wrong_token_fails(self, server): + conn = _conn() + resp = _post(conn, "/api/validate-provider", {"provider": "email"}, "bad-token") + assert resp.status == 403 + + +class TestValidateProviderAPI: + def test_valid_faker_provider(self, server): + conn = _conn() + resp = _post(conn, "/api/validate-provider", {"provider": "email"}, server.token) + assert resp.status == 200 + data = json.loads(resp.read()) + assert data["valid"] is True + assert data["source"] == "faker" + + def test_valid_custom_transformer(self, server): + conn = _conn() + resp = _post(conn, "/api/validate-provider", {"provider": "year_only"}, server.token) + assert resp.status == 200 + data = json.loads(resp.read()) + assert data["valid"] is True + assert data["source"] == "custom_transformer" + + def test_invalid_provider(self, server): + conn = _conn() + resp = _post(conn, "/api/validate-provider", {"provider": "not_a_real_provider_xyz"}, server.token) + assert resp.status == 200 + data = json.loads(resp.read()) + assert data["valid"] is False + + def test_hipaa_zip3_is_valid(self, server): + conn = _conn() + resp = _post(conn, "/api/validate-provider", {"provider": "hipaa_zip3"}, server.token) + data = json.loads(resp.read()) + assert data["valid"] is True + + +class TestGenerateConfigAPI: + def test_generate_basic_config(self, server): + conn = _conn() + mappings = { + "users.email": {"action": "anonymize", "provider": "email"}, + "users.password_hash": {"action": "null", "provider": ""}, + } + resp = _post(conn, "/api/generate-config", {"mappings": mappings}, server.token) + assert resp.status == 200 + data = json.loads(resp.read()) + assert "yaml" in data + assert "users.email: email" in data["yaml"] + assert "users.password_hash" in data["yaml"] + assert data["field_count"] == 1 + assert data["null_count"] == 1 + assert "command_template" in data + assert "dbslice extract" in data["command_template"] + + def test_generate_empty_config(self, server): + conn = _conn() + resp = _post(conn, "/api/generate-config", {"mappings": {}}, server.token) + assert resp.status == 200 + data = json.loads(resp.read()) + assert data["field_count"] == 0 + assert data["null_count"] == 0 + + def test_keep_action_excluded(self, server): + conn = _conn() + mappings = { + "users.email": {"action": "keep", "provider": ""}, + } + resp = _post(conn, "/api/generate-config", {"mappings": mappings}, server.token) + data = json.loads(resp.read()) + assert "users.email" not in data["yaml"] + + def test_generated_yaml_is_valid(self, server): + """The generated YAML should parse without errors.""" + import yaml + + conn = _conn() + mappings = { + "users.email": {"action": "anonymize", "provider": "email"}, + "users.ssn": {"action": "anonymize", "provider": "ssn"}, + "users.token": {"action": "null", "provider": ""}, + } + resp = _post(conn, "/api/generate-config", {"mappings": mappings}, server.token) + data = json.loads(resp.read()) + parsed = yaml.safe_load(data["yaml"]) + assert parsed["anonymization"]["enabled"] is True + assert "users.email" in parsed["anonymization"]["fields"] + assert "users.token" in parsed["anonymization"]["security_null_fields"] + + +class TestNotFoundRoutes: + def test_unknown_get(self, server): + conn = _conn() + conn.request("GET", f"/unknown?token={server.token}") + resp = conn.getresponse() + assert resp.status == 404 + + def test_unknown_post(self, server): + conn = _conn() + resp = _post(conn, "/api/unknown", {}, server.token) + assert resp.status == 404 + + +class TestUIContent: + def test_html_contains_token(self, server): + conn = _conn() + conn.request("GET", f"/?token={server.token}") + resp = conn.getresponse() + body = resp.read().decode() + assert server.token in body + + def test_html_loads_from_static_file(self, server): + """UI should load from the static HTML file, not inline string.""" + conn = _conn() + conn.request("GET", f"/?token={server.token}") + resp = conn.getresponse() + body = resp.read().decode() + # Should contain Tailwind CDN (intentional external resource) + assert "tailwindcss" in body + # Should contain key UI elements + assert "Column Mapping" in body + assert "Introspect Schema" in body + assert "Compliance Profiles" in body + + def test_html_has_proper_structure(self, server): + """UI should have accessibility and structural elements.""" + conn = _conn() + conn.request("GET", f"/?token={server.token}") + resp = conn.getresponse() + body = resp.read().decode() + assert 'lang="en"' in body + assert 'aria-label' in body + assert 'aria-live="polite"' in body