From db7cd63bcd2246d6250bf5d5c9c7922e51e582d2 Mon Sep 17 00:00:00 2001 From: Davide Zuliani INFN Padova - PostDoc Date: Wed, 2 Oct 2024 15:16:47 +0200 Subject: [PATCH] added MuSIC_v2 files for mapping, adapted code to include MuSIC_v2 --- ACTSTracking/GeometryIdMappingTool.hxx | 2 +- data/MuSIC_v2.json | 307 +++++++++++++++++++++++++ data/MuSIC_v2.root | Bin 0 -> 1571468 bytes src/ACTSProcBase.cxx | 3 +- src/GeometryIdMappingTool.cxx | 21 +- 5 files changed, 327 insertions(+), 6 deletions(-) create mode 100644 data/MuSIC_v2.json create mode 100644 data/MuSIC_v2.root diff --git a/ACTSTracking/GeometryIdMappingTool.hxx b/ACTSTracking/GeometryIdMappingTool.hxx index 6a99a06..9b9abda 100644 --- a/ACTSTracking/GeometryIdMappingTool.hxx +++ b/ACTSTracking/GeometryIdMappingTool.hxx @@ -19,7 +19,7 @@ namespace ACTSTracking { */ class GeometryIdMappingTool { public: - enum class DetSchema : char { MuColl_v1, MuSIC_v1 }; + enum class DetSchema : char { MuColl_v1, MuSIC_v1, MuSIC_v2 }; using modules_map = std::unordered_map; using det_mod_map = std::unordered_map; diff --git a/data/MuSIC_v2.json b/data/MuSIC_v2.json new file mode 100644 index 0000000..0b9e02e --- /dev/null +++ b/data/MuSIC_v2.json @@ -0,0 +1,307 @@ +{ + "geo-tgeo-unit-scalor": 10.0, + "geo-tgeo-build-beampipe": false, + "geo-tgeo-beampipe-parameters": [ + 0.0, + 0.0, + 0.0 + ], + "Volumes": [ + { + "geo-tgeo-volume-name": "Vertex", + "geo-tgeo-sfbin-r-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-z-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-phi-tolerance": { + "lower": 0.025, + "upper": 0.025 + }, + "geo-tgeo-volume-layers": { + "negative": true, + "central": true, + "positive": true + }, + "geo-tgeo-subvolume-names": { + "negative": "VertexEndcap*", + "central": "VertexBarrel*", + "positive": "VertexEndcap*" + }, + "geo-tgeo-sensitive-names": { + "negative": ["sensor*"], + "central": ["VertexBarrel_layer*_sens"], + "positive": ["sensor*"] + }, + "geo-tgeo-sensitive-axes": { + "negative": "xZy", + "central": "YZX", + "positive": "xZy" + }, + "geo-tgeo-layer-r-ranges": { + "negative": { + "lower": 0.0, + "upper": 120.0 + }, + "central": { + "lower": 0.0, + "upper": 120.0 + }, + "positive": { + "lower": 0.0, + "upper": 120.0 + } + }, + "geo-tgeo-layer-z-ranges": { + "negative": { + "lower": -405.0, + "upper": -150.0 + }, + "central": { + "lower": -150.0, + "upper": 150.0 + }, + "positive": { + "lower": 150.0, + "upper": 405.0 + } + }, + "geo-tgeo-layer-r-split": { + "negative": -1.0, + "central": 0.1, + "positive": -1.0 + }, + "geo-tgeo-layer-z-split": { + "negative": 1.0, + "central": -1.0, + "positive": 1.0 + }, + "geo-tgeo-cyl-disc-split": false + }, + { + "geo-tgeo-volume-name": "InnerTrackers", + "geo-tgeo-sfbin-r-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-z-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-phi-tolerance": { + "lower": 0.025, + "upper": 0.025 + }, + "geo-tgeo-volume-layers": { + "negative": true, + "central": true, + "positive": true + }, + "geo-tgeo-subvolume-names": { + "negative": "InnerTrackerEndcap*", + "central": "InnerTrackerBarrel*", + "positive": "InnerTrackerEndcap*" + }, + "geo-tgeo-sensitive-names": { + "negative": ["sensor*"], + "central": ["sensor*"], + "positive": ["sensor*"] + }, + "geo-tgeo-sensitive-axes": { + "negative": "XYZ", + "central": "XYZ", + "positive": "XYZ" + }, + "geo-tgeo-layer-r-ranges": { + "negative": { + "lower": 50.0, + "upper": 500.0 + }, + "central": { + "lower": 120.0, + "upper": 500.0 + }, + "positive": { + "lower": 50.0, + "upper": 500.0 + } + }, + "geo-tgeo-layer-z-ranges": { + "negative": { + "lower": -650.0, + "upper": -500.0 + }, + "central": { + "lower": -500.0, + "upper": 500.0 + }, + "positive": { + "lower": 500.0, + "upper": 650.0 + } + }, + "geo-tgeo-layer-r-split": { + "negative": -1.0, + "central": 10, + "positive": -1.0 + }, + "geo-tgeo-layer-z-split": { + "negative": 10.0, + "central": -1.0, + "positive": 10.0 + }, + "geo-tgeo-cyl-disc-split": false + }, + { + "geo-tgeo-volume-name": "OuterInnerTrackers", + "geo-tgeo-sfbin-r-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-z-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-phi-tolerance": { + "lower": 0.025, + "upper": 0.025 + }, + "geo-tgeo-volume-layers": { + "negative": true, + "central": true, + "positive": true + }, + "geo-tgeo-subvolume-names": { + "negative": "InnerTrackerEndcap*", + "central": "InnerTrackerBarrel*", + "positive": "InnerTrackerEndcap*" + }, + "geo-tgeo-sensitive-names": { + "negative": ["sensor*"], + "central": ["sensor*"], + "positive": ["sensor*"] + }, + "geo-tgeo-sensitive-axes": { + "negative": "XYZ", + "central": "XYZ", + "positive": "XYZ" + }, + "geo-tgeo-layer-r-ranges": { + "negative": { + "lower": 120.0, + "upper": 600.0 + }, + "central": { + "lower": 500.0, + "upper": 600.0 + }, + "positive": { + "lower": 120.0, + "upper": 600.0 + } + }, + "geo-tgeo-layer-z-ranges": { + "negative": { + "lower": -2210.0, + "upper": -750.0 + }, + "central": { + "lower": -750.0, + "upper": 750.0 + }, + "positive": { + "lower": 750.0, + "upper": 2210.0 + } + }, + "geo-tgeo-layer-r-split": { + "negative": -1.0, + "central": 10, + "positive": -1.0 + }, + "geo-tgeo-layer-z-split": { + "negative": 10.0, + "central": -1.0, + "positive": 10.0 + }, + "geo-tgeo-cyl-disc-split": false + }, + { + "geo-tgeo-volume-name": "OuterTrackers", + "geo-tgeo-sfbin-r-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-z-tolerance": { + "lower": 5.0, + "upper": 5.0 + }, + "geo-tgeo-sfbin-phi-tolerance": { + "lower": 0.025, + "upper": 0.025 + }, + "geo-tgeo-volume-layers": { + "negative": true, + "central": true, + "positive": true + }, + "geo-tgeo-subvolume-names": { + "negative": "OuterTrackerEndcap*", + "central": "OuterTrackerBarrel*", + "positive": "OuterTrackerEndcap*" + }, + "geo-tgeo-sensitive-names": { + "negative": ["sensor*"], + "central": ["sensor*"], + "positive": ["sensor*"] + }, + "geo-tgeo-sensitive-axes": { + "negative": "XYZ", + "central": "XYZ", + "positive": "XYZ" + }, + "geo-tgeo-layer-r-ranges": { + "negative": { + "lower": 570.0, + "upper": 1550.0 + }, + "central": { + "lower": 600.0, + "upper": 1550.0 + }, + "positive": { + "lower": 570.0, + "upper": 1550.0 + } + }, + "geo-tgeo-layer-z-ranges": { + "negative": { + "lower": -2210.0, + "upper": -1300.0 + }, + "central": { + "lower": -1300.0, + "upper": 1300.0 + }, + "positive": { + "lower": 1300.0, + "upper": 2210.0 + } + }, + "geo-tgeo-layer-r-split": { + "negative": -1.0, + "central": 10, + "positive": -1.0 + }, + "geo-tgeo-layer-z-split": { + "negative": 10.0, + "central": -1.0, + "positive": 10.0 + }, + "geo-tgeo-cyl-disc-split": false + } + ] +} diff --git a/data/MuSIC_v2.root b/data/MuSIC_v2.root new file mode 100644 index 0000000000000000000000000000000000000000..d51f83ccf7da34e9f922537da349eecabfedfc74 GIT binary patch literal 1571468 zcma%jbzGHO*R804ihv-fbV#SPfOLm6NC>EOOLs|kgMf5*gCKDf5NVJS5D;lLA>Et1 zp1twB-}~J^?mfTP*9V?jYpgNn7;~=Y96K8uhilgkRIXjSW_a!4X*l?!3XXZf9~AIM z@Fw^_qiYW*Nv~Za|8fn5^3L;dpHDd3Sz>ZGgzvO&gR}o%|F~U)9wg`Fzh--l74c+4 z=sr|6Ni$0$%;%1(GGh8p>@0TBX#Ura*HEFm5O-d?W)E%>1b+~BUwe4+>;EyNhd+d` z-9(AI_ZxA)FyhU#(ES){QbsnZscHO;9z4%4$fH_IoP>s z%in4;#kjn@bV1ojLv^{YHPKaYy^}uA#aEQRS~E*CEBf=y%mZ0^tN@jt?>^xrb!L6! z*OAuz`QQjOl)qEARc2+@FtwGMcf{T;W5xY&YtL!+NwSO=FYTrK;y~{C-3c8PLakUk zIjkP{*e~cd|KD{QmJ7J~?}F?mDic z!MtZ?AlXIDW%A@~t+b4s$+~min452}{lID_Ea954HTeIc%Inh3(Ezil! zYE~PxC{HV*PWqSCN=K>as5lF~1AL;RGp((fQ19Nlvtu^$NpUdU%FPMm*4_2;AF8ps zJyEP$d*29Wc3kt>F6V6Yd7X7y7BvXqgdzfNT`m!lb8}mz&Eaikz!vSzB%rs!;ysBj2L+@mDV2d~Xg+ z68F9%Sk5KaAsPI6Y_5Zhp$y;WKk#?+T8*`PFan!Hp^SWY=lbWHgl7tNNg4xl60CW0 zS(f($S8)h%?3?{*WZQy5rQbZx3SpPerTqOndPtl=Ck}^=Ue+{QKA`S?=LaQ6p~O+< zG`N_}MS^HM%y%2b^6qA=J8`fVK_ z0ggOuD7e~aSivyQk(Il@pObvWp4T=%-1+pvQT>e=Z<~N#!B?A2Os3WasXdp-PUp=7 zkD#&fY{yBxZ<^Xiza6HFr_VIv?yoo#EzZ*3R)U^Jgna2Dfuuyoj3}@7J2%}(VFt>~ z@vKQY6I*u5_v2YOu8pR&p+$~pb;9g%59O)2YjBPHbuW-5kIH>Mk(GtP?@f~Mk@9dYbZ^6RaK~jqX{-MF20_@;751M{D7D3ZB z$$7?$I4Qla!5@<_UL?Vfos7S8^^#JB36}DYk=qk{BidHX+DS*1yP;3D3&z(JzLi>| zkMO}G7Zl@dun2IZVSj?XVDkUY0nV-_{-mtEM%g#sP@KF>jH;(t_TZ0$q zia{WyDUu>V`nJM>T$j)fqtLpPDijzv@`pgn=c3yuXn9XayTBMG@{I5M9*Krd*f_o} zoq-ui$;g`K3|66|sd(#WLoiUW#|#?j|3dTItO#0j z-4ST#<=z}Qwnmv)?8xs`E9Bl+qUYAyZf-H$6uV%=RA#RXbNFxzdU~FAEY9aztcY(F zgmRf(9>064k&0E4RJq|25h1x*bbI$iG@;(V76Z!-44aW z#!rrv^>%Jb+I%S-U;Ar%YA$td-M_W0kE=mg9yqRKb{dp;?}JS zqGgoNuc@^hyJA|#l5VA;3#O?t0JA?g)oTkY(JL@ftToj=xweF_Tsx3iUP06ka}oxi z6#tTwyg35i6B<$&{GR_u35b#x$aqjQ!$jiFfc+i9-8^lpM!9TS7sV}2I|JkmrSR&T-J&}4mQfCYmlSeV2@%>La02p0ioai*zLIlRaMr9xpaaD z5rtDCh^56*&yYaAosa}E{(ZDpBz@)`J@6wWYDU{JnRHgp4mL_XdP!vy7tBw) zrL|2cLI+Rzdiho77(Wzh*s)VakJ}QF-sm-g{> zGZIqenZT)#(prVG5m!R4vI+yorgEn8k`B+rPR9fgT+^Q$&Rr9?^#yDYQ<#}6wdTQm zFtOttF1#NTek&IMa}cG9W9tnTFKB!ohf7mf0wDJ+J8-5O5qhK21yBG~!CtNGHKidb zq|o1^SmTy<;-;xrU~uWBJvh+Qurc5EyXmVL2mphL&&!+>n`%U98Uq=X;ztOw80XON z7Y0KCL|Yh<5}8MN-JB#PB87|gF_;aZ^4>W#2|&%e<}+I*S8v&@S2Jdq4Ir~psySd` z;wvsS;Xh6k8pNI8x@1Ab0>NmLuIj6oL6W1t?;;mfnvBTKiXv zCjyxsm?MoR(OlCD6U68I25uzP6R-68^cMUB6NIWR7&@!(=%;R_<(#qbwko=3Wv~6r zrHo~$#=e10nZ|Yqk4&lg%5L7$KF^FLH} zwidKDGh7Z%{0vLjo6Z~56yK~Z_pX0_^MlxMFmxo-F+-VUg;(f!QS+R#9R2q5Q9anH z$+Y-Cym-B^ci;+*;L=^xl{=sGjt@&IX&Z%FR=yCG_~;#F?iEft$LVuD<8w2r+lIFt z5Az*rb{)b_uu94#V0@;!m&DVO1CEcmVXQ)lam|j6%T;BxN+2sD-wy>*r1pf+G}Uiw zifJCQEF8!0P4Gz?97qKCEOaj|Q*Y&igrSQV!W$4xV_E$qBP56Ms-9(qsZ)FWLogQN z5C*Md8G-iRUutHIT&LYp<5gXJ_4j@QC)B%RU8WSb(~C(Kthhz_sJy(N78{1nJUK*216sj zSmtN5P}^146TcNXD|~7w+PeOJg5VH7=H%-=;uKhjF=^tp?h;Q{W)OAaB{288uFh0< zP@FwB;_i{crnBIYTf>Lbivn%Dzf?ie~Gn{plJp)VCPl%)SA~`9Qu*)2;f`m~JS`r#W z=;&V!BzhBCD=)-af#4!k_7+;=5D$Tswngz+}Ki5kw`YCbUZ2&|rq|*)R|RO@vl-<%f2Xn?3vk zEI)i=W?Sjk*>QIpN()QzctiG$yw`#EyTpu zOjH-RGFUBk`C5vt`e*lY)Hf{-)6LTK2AwOJy)B2EV!(4Qv5AbrpOLOPj{h^tAx>}@sf>t7vB zxd}@gFYGPLZ6^efP1zC>??CZRjZVY zYToK}^RaV|eHJ$g4}%&4P!|Xg@2FCUa*~``>nvp!DcynA@lP1kULk3@_04W>|vI@QD@2=UML=T#Cg z8pXtz+JQeU>NTT8ZulJen(Vf}3LAQTv>y^&JirOgucbib?%`2NHSyt$#$73B*3i>% zEIIpSTqWXVTk9sEHDAR=Cg(32X0+Acn^aw6)f7*Rn})e;^YPM>T4RvLp~ylZzlMuO z>Uh|)^DEA{YkK(#|BpnWdefPG6!yf4v|_%NX`3P)K7*WgPIe|muTkGF%Pt=fj^k$e0H}Q(F$BwTFKJ#d`?J0+SRVxqsBH(WA)9H9l(v@Lq zEdxpOJWjuytVG9!2;}Q#nu(Ccarhh)GLG$!wV%lIE6bO~-DjP!p+D$iGjy+Z1E@bLU0p zwiF&;u+FtZVc{U%x`=NV1%DKxTTxW1&~bz23$G762bB*?X4WiA1d6*Z@a znv>raZSyH;D<{e>3Y#f!<4pMZ(`Xk!@mLX8*OzrmuK`FXl#Co+(=?daTr8<2b=7IQ zR~P+$J1kZ|2phe7YaY%^1fCsfm6K~xqjzZGC8ywcdG^_(*B+=-glP`Q`SpkZtd&6s zQs3If7#||VSm8nyfaxCAQfgSvtj649P#ED@4Ffr-Qtq1y-ntmD?%aALx>U<0RlisC zo@CY0)VcddF~|%|6(cQ|jJa*C`}Dk4Iet7#i9*2BOV&O|s0w5{5ds`TS210V&_t-@ zG7Ulw#TKMm1t`O1zt=W#S==!-UJa44o05Y~AI(_nMdbEj>F%pE;q}y~EoPoOM!{2M z?UdlEfvPMc`pusVH;S1a_e%vz&33b&V(L*8w9GuyiQ$`sM6DKx+KQ&$!!TeOgCQlH zreZ&dHT!mZ!_gf=Uj{ObM4LeGCb^{Rn6|$Tx&{l zeV87a0B*=`(+Fbez60&zK1KQzZRqN7aP=KfMdxk3_+`9CG8ZAkvQ5h4_(vMx_#<_t z^xTxRaaURcsfgXL2Y<#??dFUcq}Pw1EVI!xrt+*5G+sh6v093l^*{B%QzEB^w@jj%XJ?S3`H4ay+@go z5&4!jF03HoMaK?bR|M)ymTkRP^7fp%%Ttf}5%2u|25Inhw{VSTOW3 zrc9`CT5C<$)?mo)pw5{tda=h})=v)Ai&z!ypX9!lB}|1tmKioS=BH!HZ0hjoC6(@F zo8T8H)jA0wMMgrSfHD^3?u<-5XIcz=2rx^B6;x#FVvDdAs*rh4j`)-GO}t;pS8=^s z9sZ{s(!$Lhz605N{%0#cF-8>dRAGyF-J}DoJjS(b0Xw@n3`Y3~?7Ya4;!KM7?`w{R z0+5p8<`RLNZPYlV+AJ|)QIJzoc$Zl1eGrAy>-#NVqE@&) z<`(q!-~1kdAahemLOw*%Ugo6&^%!rgY}S5ni$ zp1eWpenr*=SLrCNMP4|E=;NlHiC^mmZuFoGa}z!x%(vg8u&D2<5MqRmVMFrGTh-~jBqYwO`z9nN^@{y^1M-uOgSqX2dpwL60++DjRj~x2 z{}e@eZDfwZ;~H%$!KF-bMmCGhO!z^)kzGHZNm46*ZqWo8;WS)wUlx&qDtYlDRvqsp zM10hts*RWh#S}K6Z|4{xQ{MVh4?0?@x~7MpfkI1hVJTGSUR+t&d>eXqj`gKccWB+~(R0HJZB% z`R*eqkP#KYFghZ*Z5yIDQ=^801wl$gBoY@ynnqqi3uyxA)yQ$M9(=bOndl`*si2$K z+20nf_;lpdJrlw@K$QNJY$I+}PqZ`KOOaV<2JHD?%s!=Cc1e1m~+E*f*VgVm4T+RKQl5^>}L-`oXB#{?BUzIY>`0fX49FPatZKux}zg zQbv!r9suGOar{E0ScF_Wwi`l-64V1F2E&ZZb8PAj*h-R{T8sWr_nu8kyI@ebVmi^F zqo$&0n;<*g&?RAG%j|!mFwTb#0cbEO?cBJ(`tWF?Ho7JeCSd*9XAokz-T1#Rz(vd) zv??t#uF^arrHh9^_&f(1$w~PT!Xf*;ZQ8v1KqIDG{Uo#dDC^XbVH4Jq3XTtioSW$e zMlBS@t7IW50&9IxsqE2~zFj$`UCR;z<8*y5eY49qlR2GV4^!hJLDB2owL>eb zttlC*W`N@hvIku&7X+~qs!K-^x&u`%F(t^*0G=jZ5>huhJKaG``yLH^3scMhA}~l!d-bqO+FrI{L^$ZgNNHMOvsoE z%Dl5(^Yknrw-m2&Wf89266j&_`nC*srtOB()|SnLHh%9mT>@hkt5N0yPXXHgXd(+I zucBl|QbRk*)nHOD^}%wiZn^;D^3c)sAy~S8xTbxzx?+2T*w?9+ags$T*bjpn(-kZH zrS%WWdZWd@?l$#(BKFvwb%@oStt41ZlA_gP3irRtfB50ZC$r3 zj0x$cxQ6zMZRu`3qmVVhY(L!nA9xup)UdnJ9BHQG=EbQRy8n`Q-vfPmx9dUK-Z>MX zPFLgE5|P@hnafevyJw0vA8vki?33J~?XiswmyR3n%%EElWuSz5+Ms=`_gPJRs+I-L z-J_n4Jo}Bm4C){E?prxj&W~^zRF4RKCr(n4z3TJk_SkE9aSoa-^t?XU2m!D3%5469 zJHAI|S$quRBw@-*-ih~V(B&bb4b;ty-_+r57hmz0as6MEGwR?8Q$DW_q>| zM})QLW#vGYl0EW;SpcfW;=Os1+IeR`3n9@qgLlIu)hZc~3wy_i62g{rm;-_~>AWY@ zo29(sOy*TwldSBqJpJ3H5MKNo?u#5=LbqvI2)l(4UI;a^o=n9B5IK@Xaymv&d zwi}dF!QK{PD?_(?Lk+^dM!9?9>ZGF*^wJT5rkL{OJfiIgt&x@8)l4}?q~%eqK(TjR zobcbtIpHz@Np16&4*VI|An1>csZ}_l+s&Hz{JEOV;*jyN{+2Wba+5}_=`qsj^c*WA zy41i1tz>)%g{olg-8LD?o8LjRx;hnUgLcN0M{>|wIgGuug+9)SzQXD)-^>^+Kggh} z`n-kuBm@-r-YYtXO4X*ijq{+w?+&qHr6*!LN?_ZY<}M-BI6^m1bL(fn9#c+%TvO% z=e{NS-0q52ZMn8RsA$+(bnWsx@SDY5~Hf!%UKsePobLC@aUCLF|t*k?O4ay ztEs&*|LIq%qDzY)w^UojfjGKK~=Q*Z8paw)`m6>YNq_ zez0Hi`Bl*a`t_rW1-qeyZBlKAe2AXC8n`NzJN7kX3%P)~)1m;j(Cz^-+gVqmfnAE# z{ehD@&71p854)|I3OSF%=TA3V7oxD&|5wNSCDgaz?$KI2Sr!!{S>pVZc(=v5=_#Zp z+W+xn%>Q~a8^JHgrU625wEt6mmVrya#z8I1S$%QMbjBvRNzYF@I}OTJ?R?rB%W#eL z*BI?B<25kdjk)Nv(*J1-=WZC55^$eogxI%DlTeuKGMyZ(H|Igw$sDvi?JX;6klkq= zNL`U_^7N@&h$5Ri1R@?D)Qh%4Y!lZZk@(&uKk^-JPuWS!>z<**xAw3)SZy}Y*S$kXO< zmvD+FWZrd2NVO?2dBSS_hXDzY{(?H-$;#s(PiD244_nh09Mj}2C}GiEdhiLF;i%UC z~4^g8n@fn zs!?!Ca=BsoF!c#=si1+2ESwHN$;F!(ad$2izeVt=y7DA!eoT?)!0Sob0%TGzkR}yU z4miS>LVH_zfG0N)p$oZJ#Jn>$pMEEU7#h+k0p`3Dfe*v0FzY9lQLDoRjW8|59>{&k3w<5#Iz(g+~|q{{IKuXg%&`FB7BO}CcprfGuH4@cw&3o|+F z%%ndH7tCE&D@&KxYw`cPW{@O{uBv5$h2e)8bIy{R45ND5Kf1((UTt7})uXq(_wRQG z3$j;MW+4vo5kk~zAmY_*%RMDW?dIRMTubf}EHsNDyAMaD7O9?LVuVDLL5{ov#~J+p zZH(`8gD+T;46+wydRb|{ZJ}B?OwBp)K>2|N>oIcwBKK4cKo4z9Pdq=&M*3o!Hsr?i zaC{Cz_)4aJ+B2s-kBb`}_+FF=zxtG7%c%YO86%mE;m1eB%|-p)ul}n(X)4+S4sNel zccXdXW3F9n-~l$4>G(Zp+9OTK&nxIknf{&jh^i{m!HsNRVe*w5VH|rc9P+$BSgfbB zN;`i#e*DYveqbSoKHrwS{@|aL!2a~ka@x2bL;oogt(Q%K*xM~xB^Ssf@HegW1_|)* zkfyX}0gWHcX{{=AiXRwEa`v^9QZTTTt7I z?3d%q>Eq#-XTQJmA@--14^;Ga{OkD}G#xwa8WY}=HIGdEv0muFH{#$$S>Q9yIlkXt zAuX9J1N*I5OHKlP>cPKV-rjP@cNGUehPy0GXqe3XTQH}Y?s>=q1;lqSdMur?7e<Yg*~ALzXB5MbDnB*La1T8k)gwVsD%^(T#JG z`_RWdwI81#9GqoshcCjgwh3@Bkq)CGztCXT1;!CdxJDOH-%2;K6#u6z$!(5&A|2~j zRfo$=qY4$OjM11{tiOFb&|vD%UbWojueEk{1PfxT8%aEq#_^EfM4qQeRH;Fi9(0ch zheMg57zJO1h)8t&{5ty)#BrW4!n%pizea|yHhy8+H(A&-1%W=h9SMpYsZX`-doP~d z+UKjQ`4C#hR@4z?Y@x(Z#YJ0$EVB|nT07bjFqZFq{6n!9l5`MGnufLXP3;T?;_vv! zEB{1@AA|T{;y0L29Sr%EORe=Sq=6lu7=ylYS-T$vbDR&Z7~Y!+R~=zDyxI(^!uR7V zsq65tvVCb0aQczhbWTU=4J5=5c1Oo?6e0taLV$fm+l@A#xMp zaO77cuv5uW{7_%l!$ErcMUxqi0ZV~sUhjqlqV6EAP_4Mw?yERhk=kQinZ*Am?cl10 zoj%c${La@dmE^;b^)>P9OBQ_+-HaJT#x0M#dU8wj-*RUr{ngc`s*UT__aw<0&}&Bo z+@AiPF2NW4`tsyUl9vu2qAv53!B@8m+9CSRfWGz-$)PqA1%B|yE&6B{7KdBjv9Y=`1lrh!Oo~UyRHi5vv zD*mG>cgGzr$O`dQUKKUo2U&l=pxJt*j-2tT5)Cxtc^rWeh)iZLh^HzyyPghSkY+Q4qEO}6bZyC1Wb@mEQH{od5)t(eT_xhHB+j}`;_Qk-}V64dUi zYL-tuH8l9l4}2B}ba&Ok37YOaPRkYP=Fsb)rnbpKGV=$iG%n+hbVtsNm5NB+DS)$U zTO1OFID!pa9z0m(oV;b(-|v&slBq$JXROnaRS+RkW zf6G~CLEfwV12_%xB#R~D(==YGbsLjCb5n=0H0^Y^4PvC$lALww98OPAoSPm_|DYIe z3n)XDmb%2CwA3A_QWP31;+b64-mz{G(7yxXHeyvp3`tnsLqy=Nobn-hBfVr-y%EMP zQ zgx7^ZW$nb6SsnkN^_$~H>!bc2{uZdLb!I|ex>BRbeZBLi7j^K>s)N@usulD8>^Ua8LYgq6}rpe~7L(e8ue6u~9AWk>p$+}kaL9Re-Y{KOde*UPJY6ldZIGZ?M z3^JU~oUxoIIJ!8*>r(BP4NCewU}O){rzctx!h8h=g-Wd#D!*V{9M{6;9Dj%Rn(gXF z6H{g|R!E~5-bC5qA!L*GG$0o5`scjBlMr8hLE{Dd*=3~-8H?9|NB1Aui za+}yoDm8U}llptA0^ReUUH?9>xQ7jWn5{B+*g*2`?tV}I*r4~$fyE%7e4A-~G{Ne; z9Tj;R-{s=hs(a}3Iu;lb9cEclS>nPwHTTfj-eUBVWIWsc`A5VUgZc8pX;4r=qoaOk zp+{P{y4Y^>eUIl&ub@)3$S{<-6y}c3#|jDVvFW#NnNq+dlY4CM-N?vDWIiatS6cVe zTKYnJHb&?qWm6xmwUqws%XO8Nj0Pr^)oZo)+!x$rNIXQBbZP>gzWNaJWn@NNSQul6 zr-u?1>kBh(mHCfh*@JSKpKstLZEGb5)9ha@DeQCq^wq+N3`k=QB&S=2F{lAQhU*iigRyB^gN>4G}Z5|dYEQv&B&Ah?M3o><5@+S=OOHLj)}oUflP0) z3st*!`7!qUfKi^NT>&|=`X}Uji3Qlj9~cJ>*8EtEPb($tTy`RE-7*IAI*8?adaq{a z!Is^*>(8aWIf^mSJ43xAn!?3Bo{M`pL!!39*B_#%3%=!zdbQ>U)?PVSTm0tDS|#G@ ze)R!M3akOcX=ou!UNMoU7n%129TTmr-DtQucUrUWtHbmz58D_cnRa}F9U8o?zu>ZK z5VeajxiL;nK%cOU{DDolYjBZ{BsW zm=rKnU&{7*pd#@aMYZvT{9Tq^EB_Qh4};WfCLGkr|-o(^5L*lH4yxbex!n9YXMH78;pJ zee@j{ExTivaKzLM>!Zy>F#9^W--8t|NPL(2G?m#9?UWN6L%Kg`yku{;AsVU7y>r_brKO}+wvF7Qk`e=p)UFx7g-C!ROk;29pMSJ~DG$Yecs2gm?vx7zO zZH*tktHx>UO_%C547bEm$IM_5(C4yy<<*#rClEhEYwEpfafg!p@vY!~{;i#DY)`H- z@6miajR!pr3vW)Rbb}s^s4>qlI4&E3ap*hw!-pCoAZD{=9v=m@Vz*ycVXpc4jS00j znqh=-KbB9^|82ZYBVDDd8EUHLcB=Zo2f_0~+Q*F_@BtO>2GhC_`#;Z>a(!ol7Fr{; z&w-A6Pqjf*GT#Y2oxMe?f-o4pfbdjIXzm^g3Uh~#%eyYM!3c?IYp0_iV(O6tvPTRB zsw){DPapgy_ppFt*}iq8jF|as@9zUQ5@vx&{i_vsZ%(cU2W1NzdN+TR#dUYWJu zY30%hR{Y0umQ5#EOWw|*RrWuZ)3EDahGyB>^_hO68WLSkn$u-1^2@_aJsAf%@tIyJ zkB+o@3r4KLZ(n2%Ae@6o=g2*OnQ3k**n?FQ%`kZDf})FxR9yH8Sh9hhBak}!#_Au9 zhK$1D(FU;(p+Ll3KnCJFt)(Bk?1HSFlVo=CO&NeSSx*h8iFNn3ZlIe~Tm52|sj;L@ z4MpwXP=9`M&wJsS=dZ+HIv{q#5O>TbBJL0+yHRs1$%^A%P4J}Xv(NVO$~SL=5H#i{ zQ@`OA^dl*w09&5w7Z_E1Bw}^RTXM0mIu?IIt<4uhzs~V2ZmAi4hks5 z;S4$yK13jVPOpO?5j{T>i!4`15)w>Heg=9dCjq1!;jd%9FoC#mjr8{Z#@26u3?)6T zdu?jhX36Xvru|TJm&LfoPE3UXtix-5-;b0>&^N*TwfFzSaNK60#no9Aj%b@cc(ln8 zs;A9eVx!~OlFd!Ky@6gM#pFPPkhPZ=Dn&zX_6x z5g#;wK5Hbh>A%>hI<2?bUM zvk^ebfD<>mwD>1YzMa>9@wj7>tY^v}$|7*dg&DG*M05=4H1E(F>DTB(q8c&RSzqjc zae7>ji1({u6TpToTgaW8-GsoErd(#c-P?0BAwXWd!(O^*Q2knwlUjJ@L;SX18 z)dD>2nWZgZc=5=TLLKkksaTsMIkY|~Yt)WU93jy4aWSOp!uu!#@S(ICK19Y4jerm> z_XQ?i6kN&ILQ~jWkTbAf>M=;EoADsY-6^L=JOgOJfE>t80cd7u3=hD74d6NSC9`!r z9`;S~@V#^ty8vxbaM}U~g+N5uT-;}vY_~fUHU41gn8QL=oM5EYtNKkr363d6$-b}D zoJX&ps(mG)$ynD4HIi%ai!4esCh{?M^zc3vVGON2?4P(E7WMbs^?qJtWse|2z$PAK zQ1LFNuKUkwFuqQb?P3aFf3wcr@of~#lww?cNN)WVB}$vuw<=9#M0hEIcs7kSC;ePKl#*&eY-i5jHtT#!!U|@}#=8kZL2(zx=XD2n((eQmbZ#MyA2gC34rp ztNI9T7nxW52FjEe59o=nLz(i|5(AVdZ+s=7KQ=er|3Z% zXlCtbFvi%amjmqn?j8a-^4o@U_9Bb@zOC=OA0DHaSNwvP1^?xj(&RfR4Ythxn+7+w zuoEtztPO04Rb=@l_>tf5f9AdWjB~q?|JZ^@Ti?F29?w*MA^AmhBnprk7tvVBA^+tZ zT&L=C`j5D1`+?XJBT{RCcs;!bF|1Hj8)6vCn+N6<-J-WHvhEy(_;707$`Vqu1$q@$ zt=L`MBXC_?8Xpy~E|2Zsgqd#*=#h{L5K24&6e|N1yU!@io8mi_qilpzdpUm9npKYtm|*9^zP4SpSTXQ) z-ssigZJFm74>vA!KdH3w>8`ZtPTkBn@@)}m)Bm8%^K=Y8&FB!*LjYrUEFvspJjuRv zyU@}7p6uOI@vY*f98Zh+l8SOC%MHbol8SKad4HJuEYBR;v!#kwj;6d9*3Cp`{SE;v zH_u<_6VCK(m9>_(9X@jD(f71)Ad;Frnmry`jEQyz_eNOj4AfvxCGuRvqc6s{ozAY- zqqnkbPk!h06;?PYVU4s7>a9vCQ>=TT;F@yLJU4F|rADK%H0ROpMZh96JLbNB>yENl zG<&6mk~H#PdtFyNuiH6kQ0*2Zktc@`pj|++f4pTn=q*ISubP$C&rGOooh%DTZzLkxjJwc*U)222_5HEMWWzYj6{_z4&?6T7_Ii)53ACTUiba@$RBx7wKvD zWFIVgwYBB=<5J;S$xmFWdKMUp#LkZIp9L8zy`!1)nT=O^_a)b9j4taYYOQZRO#jEI_mgL2f$$#;?lP-4~^^WOIrkhiN|Mfgl7o`>k zB~jm4@n?n6cjJ{Z9Y}H3d8zRV|GYyVJG%xB!~@as`BHK3sP%RDt&b#t1E;Tk>x`^`046yTm^U4H(6DwFq44~?E zu3S4+tlo~#d}3BtX^bv(IDhSBMT6uaE*6c3YBYjtrnYC8E8j!3{xVg3d#0Qsnao-#m8=C{W~ z@YmY;xi?@WzTN}NEPq@z%CmNdOMP~khiZK+I*q7cWCfTm3mWDML$!KV4Ay9$kP2-3`48? z5`uf@0nNOKZl3=;)LK&|Mjj>6&nnoQg@173l`5%lFwNCf0Y-dLXmw41o27r=q1AnL zh|{d~8RwIKm+ zf2wN)!5z4hq4@ZAy5Y{xp5^IZE zYGZA+P|TKq%he z1((QBl8#CtK|GkC2M6=0nCrh(z(L4e%ylJwaKLsSbN%gea4<=LxgJc5m;m}gI+A~U zZtt!R>fc`-kjmbsmZnosD*#D!jkZQv6mU_oHP0Uxk0y;z@-{VHra((H;MV$%^DO`s z)sDP6f{9wltXWe5z)kozKmrl6?^&Ais*M zg^YV3=3*n!9P7}j@ho>G{F*dkAj*MD2BmMKVt~A;cSSiOZ@{2faq!=gSO&lO?#fx1 zIs(bX=vtxIKWQa*}m?g2M?9P_;EXM{mA;U7X)6>^I z-G*|ey6$;Cz7D{m94qs+>c5~rY`%5i<;AiLk9TWpONd=4DPsRU<5HUSYAXosph