From e368caefc37160bfb3200b254f760a6eba02e209 Mon Sep 17 00:00:00 2001 From: Seyed Yahya Shirazi Date: Sun, 19 Jul 2026 09:59:02 -0700 Subject: [PATCH 1/2] Update paper: MNE wrapper, native engine, Newton note --- docs/guides/validation.md | 11 +++++++++++ paper.md | 24 ++++++++++++------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/docs/guides/validation.md b/docs/guides/validation.md index 9209cbb..2f4773e 100644 --- a/docs/guides/validation.md +++ b/docs/guides/validation.md @@ -55,6 +55,17 @@ distance: The fixed source-density families are bit-exact against the literal Fortran score/derivative expressions (~1e-15), and the backend converges to the binary's solution within ~0.005 log-likelihood on either dataset. +### Newton-enabled runs and the initialization basin + +The comparison above disables Newton (`do_newton=0`) to isolate the algorithm from its starting point. +With Newton enabled (`do_newton=1`, the default), agreement at the full 2000-iteration budget depends on the initialization, not on any dynamics difference between the backends. +From an *identical* initialization (the same starting mixing matrix and densities fed to both), `pamica` and Fortran converge to the same solution: +mean Hungarian-matched correlation ~0.997 with no collapsed components on the full 70-channel recording, the residual being floating-point summation-order noise between two implementations rather than an algorithmic gap. +From *independent* random initializations the picture differs, because the two backends' random number generators do not share a state, so a fixed seed does not map to a matched start. +At the long Newton budget this occasionally settles a few of the weakest, under-determined components into a different but equally likely (equal- or higher-likelihood) optimum. +Fortran is more robust to its own random inits (run-to-run self-consistency ~0.9997) than `pamica` is, so the effect appears as a `pamica`-specific spread on those components, not a divergence from the reference. +It is therefore an initialization-basin property (like the non-identifiable multi-model case below), not a parity defect; see issue #145 and the optional init-robustness follow-up #198. + ### Source-density families are bit-exact AMICA models each source with one of the reference's five `pdftype` density families. diff --git a/paper.md b/paper.md index f46b1fd..c21c067 100644 --- a/paper.md +++ b/paper.md @@ -75,15 +75,16 @@ logistic, sub-Gaussian, and the extended-Infomax kurtosis switcher), a mixture o and the Amari distance [@amari1996new], a standard unmixing-matrix comparison metric that needs no assignment step since it is permutation- and scale-invariant by construction. Both implementations were run for AMICA's usual 2000 iterations with Newton off (`do_newton=0`) and otherwise-default parameters (two separate configuration files drive them, JSON for `pamica` and Fortran's own text format, with a transcribed subset of settings; a shared-format reader is planned). -The single-model headline (Table 1) uses an external recording (OpenNeuro ds002718, 70 channels, $k\approx153$), well past the ~60 threshold where cross-backend agreement plateaus (documentation); -the bundled 32-channel sample used below sits at that threshold's boundary ($k\approx30$) and gives a consistent Amari distance. +Newton is disabled here to isolate the algorithm from initialization: with Newton on, independent random seeds (the backends share no random state) can settle a few under-determined components in different but equally likely optima, whereas from a matched initialization the two agree (documentation). +The single-model headline (Table 1) uses an external recording (OpenNeuro ds002718, 70 channels, $k\approx153$), well past the ~60 threshold where cross-backend agreement plateaus; +the bundled 32-channel sample below ($k\approx30$) gives a consistent Amari distance. Score functions and per-block sufficient statistics are exact to floating-point resolution against the literal Fortran expressions on the bundled sample. A mixture of ICA models is not partition-identifiable, so exact partition parity is the wrong bar for the multi-model case; it is instead assessed by whether the two implementations sample a similar distribution of solutions, across ensembles of 20 bundled-sample runs each (\autoref{fig:ensemble}). -A run-level permutation test, which permutes the 40 runs as intact units to respect the dependence among pairwise values, finds no evidence that cross-implementation +A run-level permutation test (the 40 runs permuted as intact units) finds no evidence that cross-implementation agreement is worse than Fortran's own run-to-run agreement, so single-run values reflect intrinsic estimator spread rather than a shortfall. The multi-model log-likelihood distributions still differ slightly at a matched 100-iteration budget -(`pamica` reaches Fortran's mean with about twice as many iterations), so full-likelihood similarity is not yet claimed. Per-run detail for both metrics is in the documentation. +(`pamica` reaches Fortran's mean with about twice as many iterations), so full-likelihood similarity is not yet claimed. | Regime | Metric | Result (mean; correlation / Amari distance) | |---|---|---| @@ -108,7 +109,7 @@ On Apple Silicon the MLX backend is the fastest option and is flat with channel about eight times faster than double-precision multithreaded CPU; PyTorch-MPS is not a win (at or worse than the CPU). On NVIDIA hardware double-precision CUDA is the reproducible path and is overhead-bound at EEG scale, so single precision gives it little additional speedup (Table 2). Native Fortran itself scales with CPU cores, unlike the CPU backends above: -with enough cores pinned it beats the CUDA GPU on the workstation (Table 2), though only by dedicating most cores of a larger, hotter host than a laptop GPU; +with enough cores pinned it beats the CUDA GPU on the workstation (Table 2), though only on a larger, hotter host; it does not catch Apple's MLX on laptop hardware. A data-size sweep further shows cross-backend component agreement rising with frames per channel and plateauing near 0.98 once the decomposition is well-determined, where two independent double-precision implementations (native Fortran and PyTorch-CUDA) agree at a mean of 0.995; @@ -128,21 +129,20 @@ single-precision runs agree with double precision to four to five significant di `pdftype`=0, `block_size`=512; warm, minimum of repeated runs). CPU, MPS, and MLX on Apple Silicon; CUDA on a separate NVIDIA RTX 4090; CUDA float32 is comparable (~36 ms). -The two native-Fortran rows are from a separate core-count sweep (documentation) on the same two machines, at each backend's throughput plateau; -the other CPU rows above use the platform default thread count, so they are not core-matched to Fortran. +The two native-Fortran rows are from a separate core-count sweep (documentation) at each backend's plateau; +the other CPU rows use platform-default threads, so they are not core-matched to Fortran. Unlike the correctness comparison, this benchmark uses external data (OpenNeuro ds002718, one subject so far) and specific GPU hardware. The correctness harness compares `pamica` against Fortran with two metrics, Hungarian-matched component correlation and Amari distance, and never uses synthetic data; the multi-model and score-function checks need no external download (bundled sample only). -The full per-channel and multi-model performance tables, the per-run Amari-distance detail, -and the data-size sweep, along with the step-by-step commands to reproduce every number here, -are in the documentation (). +The full performance tables, per-run Amari-distance detail, data-size sweep, +and step-by-step reproduction commands are in the documentation (). # State of the field -`pamica` complements rather than replaces EEGLAB [@delorme2004eeglab] and its Fortran AMICA plugin: it reads and writes the same output format, so results move between the two, while adding GPU support and a Python API. +`pamica` complements rather than replaces EEGLAB [@delorme2004eeglab] and its Fortran AMICA plugin: it reads and writes the same output format, so results move between the two, adds GPU support and a Python API, and can run the reference Fortran itself from Python through a bundled dependency-free native build (no MKL or MPI runtime). Two other Python AMICA reimplementations have appeared [@esmaeili2025amica; @herforth2026pyamica], -both of which provide MNE-Python-compatible objects; `pamica` instead offers a scikit-learn-style array API and byte-identical EEGLAB I/O, and does not yet ship an MNE-Python wrapper. +both of which provide MNE-Python-compatible objects; `pamica` leads with a scikit-learn-style array API and byte-identical EEGLAB I/O, and also ships an MNE-Python wrapper (an optional extra). What distinguishes `pamica` is the rigor and scope of its Fortran-parity validation, beyond what either alternative publishes: source-density score functions exact to floating-point resolution ($\sim\!10^{-15}$), single-model component correlation and Amari distance against the reference, and a distributional-similarity framework for the non-identifiable multi-model case, From 4e6087f51aba4338df69ab4295687010617859c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 19 Jul 2026 16:59:46 +0000 Subject: [PATCH 2/2] Rebuild paper.pdf [skip ci] --- paper.pdf | Bin 373443 -> 373110 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/paper.pdf b/paper.pdf index 531be446718439a461888bf19214e20c51ed93ef..759d3381db7ebc348f1f39171714f5833120ed73 100644 GIT binary patch delta 20817 zcmV((K;XZ_=XQ+%)F_5DHM0N{xQI zXWyOSm5uI=AB^rz|9+D}MlgbzsUhWspi(A>VDK;)6Itq{PWtq}|6RW7AAkOj9}52L zPgH%P`%4}4VzoONtrwro>FyOi4&q^7ul(psClus;w`;Wi<`fX!i-@opS?e`z* z1?K$J&MqdTllN%}CUx%QoSlOr>`!>5eSjZ6FEQZbKmF$)`gHwQ>3gg9(N|iO3#Xqk zs>Mh?}=`yTDqTD1mzUuuh38z^#}M$`N26nTg3dm2SAO*BGpy?1DNvnOoJpONx^^6}Kh z1>fT@s1bYZuSOM&#nXt5sMENyJ!J(7%AVYkqpGvSR*csLoOXo+e`o$zxKc|_Gp>wU zqR-eKFfDhM;Dp~g(bqBr3oO=blGVpg_|fptcn+hrFxrU4D&MgI^IaGDNAewY=Gqs% zr7kR+8=TGY7M~)rT3-$cWytb>SZ7U1tz!!c{bjU>7=Tsb^|{f-#&hem1lAg2s`i}* zDqNzz4QFHT(J?f&wliVnC_3b90y^9~=uky=D@W+~ZUgp_G1s_0A++?T`; z$MP_UK*I1S7$t!KM*l1rH@3i#%eNb%>NZJl1SPDmDs2@>X#BMc38z=mUY+@S)d1Z~ zRs__xZ0Jny?^pF__O^b1Xb*uhkx8veE#H-BAJJoxVLjaW^w)~6IPpx!0KzZp-J)P7g>#=zZTLJX&m@1F z6E-(0YzeJa=ey5IK95RmPsNHL$1X69y;xvaxH0WUtu&H5J;N@4j3Dq0^sM@XxZ`&{LLJtTCIA4S;yZ$;eCMFK_$TBC zwpOlf->EZ7>VfXs5paVRW4bGg>RTbI;mI+*86^#Jy2+1(>q4PiDo?Io7FPq7p&2KM z1vOLeNz*JX>S))AW%=gne^aW(Pqt8|k}6S)lFa%taJt4yvN*;je@sZ=Zj z`zjAU4Rx_MQ(n8J=-P8HY_Z%W(%WJI#yD5ERm$fojVfV>(I^`QG^RUf+@z48=>4Kp zpaB*(eP>{u%7ty8=`OnlvU6UXS~Vy2`o1;cmQ;aj4cjw+aIsd92)IJ2UHyvFVTyuf zOrGheFz|g#zc?v`NDSYor-*;q0&d;eQmF$`4sS@wg3rFaOqAJ>m*CS(nYv($LJ&8j z2B|}1u$u%vV~MAD;;dhiS zGZMQpMOyi2=dMVDw<~4RqVhTv7q%*>#65gb=dp;RVm?frR};Zmu6Yn4&v1a-F!?bD z%6?Rs?bjT@2JcIvz8RsFS?cJn2yvM-Tn6gQS0mehO8XXCcWoN@SC?*F4a>~WF&rMm zlp+1Z40bEZ`@`6l>;Y_FUQlG#nv5+^a}cVrLYYdE?V+MU5^rT!s*Cl1ZUupRk6UHTtMRlm%yyPU$zwNC)D7q7j4bN@UPIc z+)v#!;HnYF@L1b5c1hmPv*)L6A))Mk$B83<`vAb1S0vDCdsQ_MLH_IEzVFQE1905+ zi&DjOod#vHbjwPY?}mI*`jg&<{wb|hO9uW1F+i>ExNSR2Q6Q|SsUFb8>NkmLb|?ay zv5Orco_t63&^h-Ynjb>+@chg90sz=IB#zI1Db3;rbdi#h42|G%YlpvfZRN0Xp-}jL z<=SllW;1|1iX^(+ge~Zb_9OT;9DPL89DMS8z8QL{hQLRE^1-~c9UsBn(_z{`rC%0X zn}Z=?<=TPT6>sFU{AN3UbABBJh@4QshkHdp%-%bnsx3}{bKLA>?5*B9cNSp-zQr{C z;d@9xQsIUpq>o&Upp97DZBg;LYjtOTNi(!igD#WdJ?(Akb-Km|s`VBs* z^9)ZfL(**2KgumhJg_Ssb#zsaUa;?KN~KiUy;iL~V_iCB`?_|@P2ncL;q`SqD999k zT<5L5dlovmo{D2yHWI-8@HTNnl8JAJ&9aFG7?3?`XgC{|Y{Ef9 zLtBcdhth|gnj6uOrqDVz`*G6SzK76FD0JIfj`_^}473)dXW_07A#FHS;&7@UrMU7; zVvZE@O!3zJBRYG3`-w8mW^O$6W(c$F|e zI4%J0j1k4;6X9pKb}ebn46ke(6)N$BRWd>|_O)8*W-?bD^9GEt@rL!_R@whBtF6wI zp9xMJ3Jz7VHa@;+B%iv`JDw5`5W<$uhYXr7@5ElF$pbLFlNjq%K}Zl@ z3ew^1$cWf~ckWb0XO$=osj|Qjo=}Ts1v?%o;#v0)3J>f zx<-uzcOz}yO`-&fDAvQZNUcS5hNz!YbG5#oHE|RuVqyU&ujIQbI|0R}yi`{;A|)`Z zh7JPhby^)uAQ1P+sfN3Ms$OYv@z%`4N)Zw!jfbSkmUH@T zTQX%!q%70)U8d)AKcNyiXOmx4&T|(np=q^ba17JwCdP{`%RCM{5_IU%lAacqnPOie zfR1)GDVjquI|#pN(15@6ik!+b{$gB)+@m<{#xRFx&`W92{D(>U>Q^x_8+h6?Ix%d( z7@?hi(~82Bs{+|$SA1hWTOMXLM$L^{l2YJ4RHFfrFFEjvQNsD@lv});Ta!=>(<}`7%3nzzmqU$gI{zO`qMapIEQ)B5N@G5 ze)7SK{5 zXwPgHMMT|LZ+NuW#k=BMw(2HZ!SS?Id7LwgJ@_bI5EiCRivx9{Ux1584!ge=A zn!3v}J=uOJvPbGQsqr^nUI?PAL@3on$5Y~=LNVi3>NG-2{GJYYcuvt1UR2Jkk;1Nr zL@6rc+B0@Mj6BUGK*PLYo>`NZ@|hEVTk1kE*`UcWCkpn{t|r^_eiC~tq3Ki}lLO!E zsEp#tm4Z?I41Dipk}{n-L+|f+u6l_>5(#_aQnIzjblHY~HK<~#8G+Y<*pla2VNMh-R&rHr46;1V0Gej8kLuz z!qo03nEkQnZBEt9YL9cxGC}WuW@tGNmjq1IQY8|xXUSY!W0?D~4O%QsM#6L@NP7!bnAivvMWZNx7vur%i+Q?) zWT&A4?jaKdaNqLffOP#3^ERX<6tjF{R?9-kXO?6Tc|M||d_=Y385PkLk$0%>L}z+` zccU}Sjtk!7Dbrcf9@ecV1_1iPJIUiF>BXxd^CAPA+jBy$-E(@&Jx&YzI$wJ9#cdH^ zbJtMuxy<&=ruw~+PQodF6P(7Ut6V;6olH($eOrhUv-TmVl{$S{k;;T4CCrB{M;h0) z;G3tG3*z20$EFzu$h_j~)+>n>^5XqCk#gPkU&EFIoO~vQdTe2LAEP%V6 zD5@SvP-ZEbb)ciUV_FE}xpYq@oKk8|j-eKIl03LI#(wd0d<}emQ&5oLwT?g?g^iqL zfXyo@zdFpY@p17viGxgjvKublw>BqDe{@#O2t&taPHdxwf|0} z)aE;?8NWvjwkkiHUl$;GCsvrpQVgy@uxDt zcERlUIh|GUc`4QBVVgLTIQZ7p2WOr*1d|P*b%^UrOhkDBqaP+X|xNGH+gMceo zM`1C|Vt&<;9VUNdbrr=J$qO(xml0kjuBOfVT=UCe>9iS^P8(|$V^#1sPuj8hDXwEo zD{~cYY>h~EPXPMz~J$l1g4n>D7|!f@q8>(Cttp!(5r!CksuHs zgsWPA3Giok_rLmnCc%x`w&M!UaUl!7eVDkWi_U1`Jdjt@fg;_ym6l@2POXVm#gEiD zB=a>n9Hs*UgBj~A0=fjl@=HtvkA{W9Za)jW@*vc)6M%2vQ1SOXZLb6~N`pXwn4tLy(~`0L-w^M91jZ^be(#RB<1DEY_9Yr8mK>;3cemmk0P zf8bryVnpIzj^-2cj4KU-(eN4+{JDWMIwQ?5kKdbknZ1&hi^fE zP1(m&R#PA3w3=|)*OgbcMM>5OU{9=}TB+31Q>|FoV7o^j(st{AqEHX|cX~5-Z&n2sf3;mpkK@P^4F^n$_k-%`m55%r|ooPwW%t zyEJ-HE?le)i&LRdC&p+@X+pl1ThhAn!^XusxcrAd{VFfFf2Xm3J{&77!nn(K@5Q1< zI>jYAe~`K5&)at`W4dAz-Auk}(&yt%m1{12KGP@B z)f#M>TBHl*j`g*b%}L*Os}*IyKv-mlvSK zwKgr&3a$CAbww8g*COeP^oi3b%fnx~J*_Cglxv>=S43>fN$qTGBjriwXYVjie=A#0 zYwg*F_T3ah%mp^FSm=vcq8FKoWG7gegidq*$~3(6`<;#QA{QYQ5txuJdnFccBXn5k zy^7n1A`A!dFpY&OHX+M5P}0L~f0 zojM*Bt=e0nxk~MIgezRQ!yw$bf0e%i7xw!#zVX(yyAHnNGor1-w%&%BmKorPfsc6m zXj_8x2eMJ-a#}V z$+pR*&foF5d!vu3I|nvu5kPFT5_V`HA!9&o>D!hQZ9|r;Wq6N+fZj4PWZw%}fax;k z3$216Kd=|m?l{^nic{^)Qr%-fPjtyFk8BpxcG3-|SSF)Um(^~pJuNIFZ;PUowvj_q!&wxxzxHJU2@2!&?#9z_7b&Y6uS;*0x{auMJeN_D0~LQ9js`fA zEX+)${&Z3Y+BMlI{pBlmE!Ih}_54wI%rpthv&?F&JZ*3$>p+#ywnC(!QAm>j=O|ne zktmni2FE=sD~z>8R@NsDozy$AQk1*6V3rV3_-tr=A{4T4*l0cFz2wXM0RYSW4_*vh5UqiKnndsQm9}B+1#-8sX8k)NX2~Z z&_5lo=pEc9Wbi&od|VPObovZpoRw?Qt52vEu2sBRqV8IS9<3r$sz?EPk=m+p+_%MG z%o;^p$CHY52%D#LI9h+G^1-MDHWzErwY$|E7Q1FH-hEU()p>!9;E8|Ql>K1DcDJs& z3NME-QGrnfN6wsX`@;N()41xrcJ@eUmURwjxq3|DuxG_+WP1@K^^6!Q@Rsm-E$H#B%w#Obu%x@Rv_)cpcCvQpYT%A!=R&}9p{S@p`6j7bTYn9GiFV$4 zZjpQtyK81yYr50*cBi)%xU+72EsVv(T$|OkZdV}C-jSf(6ghuSL)Z0b#Is^Ea=D0& zc|vTsPwli{gx4rFuz1VNTBGURM*Lzx+CgG!J8&al+f;|ia0{_EHiV0&(YxH)y5M4! zAJCiTZgsiRy(@z}=nimohUsz!4l&z_Zk?iig8^yAW#Y_Lv!LKWdvag7Pd&WfBn7UFg(siu?E5uC$XC|U^Co0)*@M8|0Z$m#)6-IEF2 zZJQHdu(xaXfmj8%`YB=wYL4PHcS81NN7hp!f~-UeI`$>NhIm69x7%7^i@@&R0NR7l zA_ZQA49?2T$l}64|B81c;o9QZ5`HV^)+aQkd$L}k zpolvHMTmd76Wg&R*4&GqDkwUlEu+O|IJE0`;t1mW3IRO)8ury%vC4cJtEj#RS^UmY zGjh31?O|M(W4boPMOhTV!amo*_X{&pW7Bya+lorO|c1WC+7Vj4o zJxa?4bV3d5$=P}vsOzcEG@?yp*Q`X*uhqd2r*{mScHPiBoz1(qm$0~~wB9k^thH$* z1Sqt6D@sCVVG{tcrNssXk%u~drFcjbcRH}XmC#Gt>zlqGiIoN(D>d#q!q=nw)y#JX zPJ@3R%zQtKhL#>{prj3c7!UFsJu6p4L^6m=Vv>(uQV!~v!xDkh;9aGYAPxPVhK_0I zd-#%?CP%}R;yuZG3sc^XCt`F+M|I?nf27rfB+)Vby(J3WW4reL^@Lm~DEe$d@_`8j zmt@-U$3uE_P5#?^qE1MRSl3Fak6WYE{h@!!C2lWLnd#(QlVDwr!?KH5;z62~F^lsQ z(2pD}zc-Dl)Rh^7Jbo@cIh(Z%Be-3`TZ)??(1K0-kw$PnV|j$&2G8^u481zI6mk=C zmSIRC*bQ*Y;{bPa`IX&6d8FTrQxFjuNCa}DP?0v!!%oa2^K+))v|hZFsDyO3+1h`? zixn+xi}|nZZwZRp-4F&uzRN<|jc)w+Q+p3X=YOPX> zx9SMh1pU5==4%SQ1P;BF;97Aa2DE?bsi1f6#?nAc=@gG5K(p%AV}!aRTc!08AW-AB zW@F@-YX|QLhScUbV&;ahd4O;#(HxCxP5}zf7;zuH>4}lmcCU<_#ZoRlYHqmkI5wKO zReZqAWr;BjnN@x!tjci&QqdTN=R$So$RyF<%2DH9aes5Z!64nJ#M~!w4-bEF59K%M zK7KM&YPgrypCkpy;EIpb(+ad~^Sf#B%Bh=i$!>|A(%-<=?etQX}zvz&QgC%4~a9i@0h>< zsbr3a@0vU=M0dqJIJ&E0KE^E`?XP+G52tmQ&NA9=dSbif2}do}Y`(sPIdHxPU0FU~ zZIV&Z>9-qC*AHp+VRH$%YCh-u03CpgO3qp+gpX@%0tN`XMsO zDVdV(g-{+vLp38uH*|mW#?bg$9FN?Myo}(jKU#*a%TPl!lrKf5W5@hH96z_P&d>M= zFHMyG0bYhZUKX$-#1q^cQvRM-E>TB)q+2x6EqnS!2e-s-G-U39jb0Z*r-sVj@1=!P z>Yo=&FT8p{EPY#?-aR99kc-ml)kBp79m-vjCS78edg@5F;Dmo+(UC9g$@WxaaLK&Y z#OjP=GD-)LLLx-4Zh+T>U2;v@C#iMnJC1)IJ&Ency?DO}M-qG6$psRAlZy%H7q~2)oY>wH&&ZPJss4~=)3YbR z@SfWVV{V)s0jQXzRzoE5=(QR8B24m43JxGQ8FC`*WQZSEEC~i9o|Tw^yC^W~6@gKH zNy=-;K4D^jF1shY#q1Vc(7jj|qS^Xw8Yy zG{={O#c>X_Ky5g%jM${7(WFt!QN&();z-e59b>F$nIk>pemE^EBVSQg^eeI=?b74V zxOX+pVQuQw``L0!j2tKvvNC53+48i%)}_!iwKl9 zi|M5pTb0LyV3?cI%=S__V!}{4VXw0g77c$Gc03!r$DUn8BO-Ql*0|Zr3Titnwq;o} z+LHVx&rCUs>8)l6SU3hmQHO%8dbkL!4VD43dzV%6q5LY zL!x9d-n^Mbw>MQr$|8f^^$Ulvws<6)+?a0RV?l%CA@M03K28I`P#hjouxkk1K`81Y zpNtqH?Jo-D7)2at?m zalJlcdH^{?x7`cb^R*{1e~{G<^H?O0IxChXocZq#tsSyPZRHY@lh4-(SQuC_ZbaLQ z%JQ08F#5ngrMZjA3^#E@R7eLrnrqI(RMKze8u!r<5UM&~!{_TCm~T*vvyy)gDh488 z+C>+0;29<#RtX6`Yoi5nP6|4wp8{cj#?<1edNR1hb-!bT6i6W7QcIxhh0iK8;=Z?` z$3(Cmbs#EbNW*hLyG`Z>zB%PMK4Fp~kbFf?IzC9C#O5U}hIfaXdt*Uvs~a5V+&Nml zy;gh^+Twet978!iDF)PWp-z7=%W#oaMpN}Lrowf*qtEG8Oqme{MNz#_(kQ)IJgG+_ zP#Bos;y&UV!|`M~*lS88V9zm3`siA9dB#R`wPM>d)EpyMZrup4SE1mtFi}=9pgrIm z9@;6`YaouYoYXVcW+L)o=I@l^1fdu?4D%Xv!+3^rpwGSxNau6HxWDvilz_9cIMDls^EXDZWl7J6Wz3M`U0 zChCUkSFt?$3JTCPfY@0}J=cn5%rc?qE*6`5^OeM&S>{4(aqD2q3#F4FFe7hKVC>mK zZR3-2)47lbrLdPY>C`3}yH3k6OvZ~v7bu%Pr$2L&WI4x(37CIZ2s8Ipf_0u zIv!;m=&!R5hWFR(q^!&e>BIGzoT&KQ7;GckP?p^@FSy}Iid5-u@FYYBijL6@k2O8p zpItH104o-G-6nte@x9oSswVzkh_EfMF(1PdsOF}?niixw0sWb|{aI7Md1;Y~r!qhA zZIAFm!!8c}^^@cUHk8HUfxsMppQreb z>7?64Zu3ws{Jd`Yu^i2k4srg_8p(_N3J(WUhm1%a%jtjP{G!qU#SfvP)#rZeyIL{d3@tox5X)8Y%jhdiYG0EVmGmms z*^5fB8kBz?s9NkDs0vU5s){YG$}mW8$hRoJ_TwE>Jfx1(vp4r5k&QCV>A+S^@z>w$ zTZp~NKPw%X1ug9g$py`du;`$eq^WmiE7M#tMPNLd{oG{M*u`~~IH_%-8OvLPoZl_V zg2mQYx(ir$<8FejpLd?}Y+9rwd?XD%71C3ZJ>`E(F-ScX^TLWk6<>^R&54MiyVBdF!5VO&|6sv6UaLU%a+gIPGzF2)!(nJ<%YYFwfM+W}~Od8Qh3T19&b98cLVQmU!Ze(v_Y6>wl zHz1eEqXQ`cGna8z1r)ajqyskr0koGtr30&fEJxTQunpjo6)_qBS{eLSh}KE($KsY5 z)cNYM85&yvo$Thq&orv6;QJ>ptiE>28-xJtcI&tR^~!jzufVduE@pGg%3QLuLIr;X zR@gz?_NNm$ustP&#y-CH^PB)>=>98^eX}q~rG=6!B$nQ_)g(e##$`q+2cfb*h(6amRl-jp%I54w%3 zwASM(k!#2lozAg;e*pb)lzWmRK9C&SQUC?wK)i!;6--%_vIO#y^;V2oIg&NCE(mKB zC;xkf7xL#VGh@o|qb|P@)b489m|tXnrOUt-omIEi(s|KMtJ*iVdc#$;Wlfui%xim= zPiG{MPxS#I7CD<{ou9&xVMmoh-KlcLfl_ZO1!#+VIIejO;oJa@Ob@hXZPi$Yk03$7 zD%q!pV@%lB_J)W!n6+G{CLgp@)p8$A;g&7i5rHkq3g=Z) zzyCx*1hTAfgifV>6ZHMFXZ;i8Ot$)!3LH7PbfIlr7230~ZwR?=K4#>NL}3qz!`o&w z;#1p&xFQ@ucMRp^)+KW>s`>VR#E_lYP$}{VG)mC`i9mC2&`$?Im>3e9M$A~=3|oRs zJk6yuZIMguXSmb`Aw6<_arP=R_#wcX9ac!8^F+=mQpAXN|(CcJteAP^wXQ*L#HdIj4m2p3i?TZ?m(EI0HgPycgwE zn`#c2&{^Ts;Ov0nabH6wofmD@waSQskMFVpqkmP;Dg0il&Vy&Z=)Iw%L>@zA6(ZU^ z$WIcm);};9R>(h*Uhq-(S>;o zwBZsFo~1rNN7@Y7r*+O_CSYp@Ot8F{ZmI*10kW6=sslBDLuT~j^ zQd=S|a*?L}rbwf2HHZ+)BiFY3G!rmz>c*35uD5}f<`$qq8=;-+?r4>!4bJpyC0hdz zPt`bVZ3{-Ui}-{{wXiAG00$n!4SO-%)_QU`@F{bPsw1l*@U>y3os|dkIwOCXv+}?u zD}q7S67p7mHP=O%XDi*eXBdM>FiL1;_z=2-ty@13#;_!k(k%C7N)+!Z5<_A%b0%=l zvL7jIVkF1=Ml!Lw!5PDtuVgq_6QqBTFEj$WLZcKL^ig!huFENx!@gjYL`|`v9$#np42_Y5Q-e$ zXmPb$O9;*MSnbL9*4C{98!nIv1Ajnz zlF1l<<3xVT=CUscz$gZr!9OvH$I3n{lbCR)9W}NwQVFr!j}4*r z(R4}u4h+^Y=l(IR=IJ1+uB=4tSFFswGIJ-7FD?~=5< ztS=<`q>o0Pq7!_WmxrAc(T1`)1?3%oI0wL8yy9<)t}F1a7<_p5O3k>vWXp>cqvVRw zBvXruj%dbe$W5BDJ~3(}V&^)!so&eGpBz!|xiDGpw#S4t6?|cJdQ;1yV7L&kb9iQ~ zaK`D2%S^Qo!o~UI4bjeyidD5r52*+Nw1r%L@IkDJ*5Yl|=bebnG%JfKy@RLWu47vh zFcUHXG=?%X$9x^V@ysbo6i0u-HEmgb=`9z|-gn_>nW?qeaCR%|-kOp#sVBGUI9aH^ zS0wF5S*==KQBfvWy@5K1M6UX{ekL=(P(=n@&iX{!IpNJX>wKf-8dPy(CDp?c-|0;I z#@Pva^?{*Tw<}3T-76~~VKHqDpTZ&EsRYQZ@hdXC(08gNz4p4A&J2G*1eDW$ZtKz` zpD9=o(%#fh@YM_miyqWh3pNu(n8g}7d22|Hj~V*(Fd=guZiJn#vn$hDxh~oUlsT5~ z`n@*k$9%YPc5--cWaqFtHsrY5nOaC!=PZdvD-_VPWN z)CPj3MIf)7QDaFJ9i;TGv>3c`)oMdN8 zZX~vI??~NQ7MT|nndEd$vd)Hnh|>uYNUk>TsByr<`s1oR4v+L?tgQlJcNi6(5(&?7f_S#X$bxhG(*KDmBgD=UhgLBgj z(UxH$vLg%+{nDiN>OQ7kUEHwTy?D*y84X7aQl5%wHOU~W z(`tJIoWq%Pd!+X1qy%N;MJ97+9RwB2)dl*=_|${aA(Nfw#6ccB941B3dWF^t4R%e; zHLckqca;xyW0ra1V188D(;4=7LPTd3;rt$*PB6s`2$_Gvf3bD1eBSduQOV=_PFw7J zLY7;wIye?NXiw^0MlL~hP7jll9xXrL+pMZusV&qZ)?2$c-Py$r@M;&QoeIX@{6Pg{ zm2wKwK#y+$>(?Q<$ifa|w8_;b^7PKN1ZNm)USMRba9Y~9QYUC1pHG;Mals{y+ez8S za>+?yo#KCkKQ_s{aAt*b3q?LM$AZW-T#eXI$ydu``_2GO4%oU;+;PknGhUb?hv(71 zy3!Hv_<_K)?K2JJx$0CPn{_&HYl!{!!a|m zaVy7(!2qmU8~SE1S3EnFM-HgL#UuLxkktXTg*tzr?pzU~JybSs%u}f}L$6q!?=U&T zL-TSDm*dEdIED*EZH3Y-J&1?J{4h{gq#H-drUQWVaNoG_^vSCycdCODGnmKtirm*{ z&B#8u-FtS{2j=8-=O0TAJO^;UGW33}m%(ctTy~#5UyU90be4Z+;N#%gX=SRkP+`cI z&mMp0!*cxWViaP`;2)|>t3+~!cWWB$k%G=$Gtu~ntQeK4$w<_sJ8>Go+S);{=16p@dTc@M#-Pu>teAPksL z{nE#KP_f_IL++sUxl^(KD57Gs{TYm5gxY@!eiZj&ki_EP4?-a)<=Bi5^2_u0mfU`o z|KI^@!iACUk_~2URQZ1x{`$B4{2%%ATi&$Vrpy1;mVaEFGS!Timw#UV^6hu{4;#!S zlxq*Pfl7`vLv~ImH%hTc;uBAG7qe)=GjDLG@^s_JxJl$rjI6h4C&%~7gdsOn;$45H zSMp#=))F4|?A$phUES|9X?pTrq)XF$*=D3m@0n|8e{7%fb1Qw*yKJBG8@CqRJFw|! zNm2c^UxMtms-!er%b3`e!+3@gPq12CCvq`y`ws)!@8xGqJaZ80rcj*GoQ%Sh>#QbD zd-~{MfzNh>b;8F$Zwy_Zv>jKBY@L6!o!(Z9jycg&ejl?7Y&XHqFFQ{MhSp>dP|{$p za)YE|y+XMSw%?pt&&ZUc#`3}V*|aF9x7qlqK`ZQA@2InFL)Fqi$<2m3u4;>_`=ZyQ z&K}2qGD4}ct!OPn=9N}M-KiTNgae!$?nIJD1w_nT$w~LX1avlt5V-8zb;t;_K>vT2 z7ewlpk+%a~mm)s}6_*3J10^3O5+zV{YTvKFXGn^clG;`*x>gN{Ujbpb* zxC03Re;7yO6<%17q~JxwD;nc7Ya{cYxU&NnusXQ#=t_7eU@Zx95JPZBr0`3zO8~Ize8N1vG-hBwkt~h(N%?5cr>x<_p|aSgs?2=ztD5h)%eO z{E!FI4BGNT>li*?Imi<6SSqmibRq?2kZC8xe^2>7sPh|)$r=pdh|ytIWLkKf={+FK*C5^u11|Y6yBEYQ&T_y~ZDPrXJJZeEpND6&;pOR_ z1n-%E{RS@H&9S!63p@ z&WEddo9tw0{sHY@S>-G7PGqmkMtorUf868!&9V^L+x!B@SBt7Cs%8Zx+4X!^tQJ@G zq*$>AZSVYCOw0U-#Wlz=HJ6;!thg-6m_QYjYLI|h?E0Tn)dB>u`MHTPe`Q<4*U$>> zsUvK<5wY>xlkZNUJ9V^7N5girupJfKQL!Br-=8{Swm)?=ZAa5~G;K%Ib~Jt0f5mrQ zTu1Z627lUVi0p?&JuT{A8G-tc{Udvmy+Q*D>;v;^(ts=4Ckd-SPAVvP9niuQy-pGa z5HztSS7!}~X8$a!PuXi>vy+!E+hMYkcJZ^*?BDO+@bATC(=1ni%d$m1DW`H#Uu0NY zb&MY!!w!XG7~5aI16Q|Kb9b~Rm(9Ba9)HRRv-Jdcld|zRS`+udYm@ZY9nMARB3m~l zEeyG18G+*2pJPK!;?&G=ZH7iDvKbtWf^ zdA3*<)kmn3Dxa;!z=?IY*zAy2_+_|jrGpe79!^ElIe2ASQea;cP3W5a*WKwzdw=2c z5)LPHqLqf&8PpOg9Lf=l#D01tz>ka7N;a3p;v?f6fq&MxR(-;yl!n6t>!gqFfEJp! zG@NnxrBWekfWIn(;dseHkDA8=sxJYXFv$43JT<}Ct1}@xB0gWQ^!?~A^SUlq5IBX4{ATQ(5Q8MB$2B$^Jk;c_*glta zlUGH>=vI?*c{jRU++A$S#7QX+#TT%caBZ-b1Va*Z8bML7CX*^#p8Wjg)yc>j&qCfJ zG+lztYmGB}$TqnFX6o>e_?PCr13Uo}mm|IdGa6xNvYCnaS{K- zO;3E?mvFuVECITgoxTG$Y4(xVlt+3qXH7OddRs3hrv)!}_V&lu5R&4$;ZFHQ@#=vb zP)uLufMVDy2b98X4k&e#OdZnHF*J4g8rMAw-P@sq5&IW99;Pl)6T8=A$Cubqi5->L z^^E?mT+ZV*uMzIwZ2!->E+fOH121b?mD2_*cs8KvaP3T&L`Y}>|;6FHNH1s?GAj?!-UW<>#icf&OEYrX95%oR|g<$d)N=o=h(YoUaa!ws?KMlFDqh2XcmOk z&@cfZH#V{2FbA$^(mQHo6|3TZ_h$4RYaw$wvU^O}xiDom!awIS1ngLocI2D~wtaz7 z+qhj)7o~#g&}_#L>>IdW5w=2e@PAhTab8|r)rFko%i9m%f5pHd#&3mOXEYlQ_ZAVe zRa>lDRkb5#%pZ{;sM?!WOGQz;)QGJ@RVh)mXY8OvYqVw&vnXmcRn*p6wcnoif6o7X zzrE*vdd_`5-gD1A&%Mv3<82B#Du{Tfc#d8;&zNmrUVj{Ngo%P1>-@D2*vrsRDkF@UCFMO%`8j*P=ueI?-OQy`;8`U z&nw3hP8NLLbz_dd%axpO*F=7&#{CnpI-RGg;d4HI{Wnj32079lEc3XK;CA{g1`T|x zi=h+8CfbC5q4&X24N2Dwpz8)SRvUc3zOT5Cp@W_^rZSugjFn3f?qdwVc6-_8(+XR7 zkN7Z;7jbQsO#(yu8IMR$g?~*&3rt4ev#-lqMZhE)KW~ds!VKsx*yjtE_KTjY7Pd&b zCof4y4$C~g_{^mtt#!tc{(e5pvx2#M>#L3EW`kR<$RlEj3DJKm6v(i;DYpcTYUj#xWval;DnU0y@^3ZW-{JC7&1U*s8183Gh^PcI zz1uDJDsW4^STf-yxuAISe9bOdRLH-r(e`y%g%Fc7swOdz7Lyy~Vk3q02)#|h7wblD z29!FZI!>wD3fZR0PS3HVE0PS;8~WUsQ>jI2yx<>3;m8_nzqW6aKJ}W9L0Q|n@t2Dm z4?3C&V@OHQrO2q{QRQbGRZA*z&)Yy18Ug4Lll7up3i+m3dHU>Fv3Qp#^owfr!9STGQ2;j_=ncHyz(Tk3W8P<^;XIJGOG8pbQ>cEy$oEWGlNnarZM>5%mcg z<@fBqxn)g7<4#UM@|K26BgZUPUDIu9!}g(49?;D$X1nRUe(E>Esv# zcy@p`6Z<@pXIp2NhVC7wOCN}hzmeTUYfm!;y~dbELaNSOEWX*^D9k@0SE9jPP15d< z#d1fI6E{RcTPSf;>Jyj1_aOZ!9I*?i2b7hC5-GcZ7pZ+CRWf0R4Y*xR4Vd^uICj1StPsn0Rmk1Osl!!4&=-QjmMfP$_w5S!Jnv&Wcbe z2t+|%R{4Rfva&LiD0>DR1yCtNm1K#a3m|cfSfxOf3c%(50a6ns#;JN~0kHpD{ZP+Q z#Q`u?n*+SUYW8rmYf=dBa;{Xq5)-9wp{Rw7k{BU579TDJ+Hpjp`0~1I=jFhSt2~B( zUF%s>Cqj%&55DWp;F1Zb-hh#I-P&o-7rO z*H|7Bu2Vvj)HqBS_O@d7Nw2qcj(z;u58n?B2?`>AWs~21)=mOL0;u}PJ6a7nhmB&d zF7al=1F3@#vNaz37*MKhwTv$bAkShxu=YOpQI1Y1*r0rhH`@MqJgPy9TQd$#veRj$ zc#;34!2Q(mM@bSP?yEo z;nNhsm%o3oS*$_)Ob}jfk#v)NB#R!j2r9NgvQPJqlA-2Ut^pC4s*k8!PLPU0v zgyu5e+){(>#wi>yAJ}TcGn4%kJm#h~l@z zY8?uI0PL6JPBWdwSGtm{ijL2$PAa9I2@ir?;wD%k1wVC2gOXE!xy3Ch#<%_%6xZqsOwwXE zI~sYiS2hhyWiEJz@vzT9`ZEP}wx)bt`N!2VcVRfdcLc{mdfR)2nCL#(WJ@`m7PaqX znsUp+)<%2T#Oa#tO?#nXWwJ$NT3(oa9mJ+!vH^TPFQNtP4t=r4912MLhl2Mt- z&~>{0g$}Wda0S-2U0s@{s_$K|B}B5DI9992MvZNMs_hD}Jt?1QWfhElJ~3TDq1lU< zKUnC$UCey~e0U(P^(aW_X(kM!#}^|h_KDVpeKqX;%@urO$s2cO(J2{NlX}LseDI%y2&D*2%GQL=mqd|6)8{Xh>zbg!}P-}LgJp#A~Ob)vb z59g5DvN(YxY}g$KKJ)Flk>sCv&8E`g_{vY>;@+Rdy@N*!6rSV1H8YRpSQUjhvBwuq zB&WRaZ%5j%X9QBmOIm@k7U=HH>^n957`{5n)^ytvTwYtlSPi1~uy|Hb_@)NW2>8v*H;|(-;@!5 z-fCtpG;MB9+2?4Y&$|=Kf)L5`{9US1urjnd1{u@64c@4j1X3GT96s$$n3?`RLN6S)& z2Fu+x1ontbPJF#q74K)P?Axq!suB!8Sm!db+QIwCh3Gr7@NzowIn}`p)X~(7%t(ba>_v=Yz;sI%iTwiAL=l}zBkG8r8pCBm+6FHS+ zL8F@4_d9{dCiPhgSoDDxIN+~T<+>Q0Y3mw)fq_pCaS&UVsdQTaazv^EkQ@*fTMS~t z=@x@D{*D=O#UM1L9EA9*7!(2c>u>cf1zi9Xi9Tf@S1KBqtfB%;P64-23F7#Fa9Rnf z`bz|u{?)zOsz4A7A$5xTGgdrFQQN^apilSht)&tg1X|v(D zBx>_n^Kfwgi=@K`Nm8UySD|G3CIlton+T=VzRlRHx_j`LNN3JC?01S+JtnoRhIbDU zVjMt^o@X=cDg+i^u+hz8jrrO~rsJjP5YyV(?bhwv^4s*qoa;F%=BG^Fp}2r*kg`0N zDlY6pdvM7_aLf0mmOG=i_Jv;Azr>Onf7V6pSqB~+B4d8B4Ld`1|1ilq{}d5Th>n-R zk*h)C7^<{3od;}cyr?U&4yl~K-qN|(m^Cfsr)kWOo%mZllDfB<*E0vcEwUkhmdz{3 z1Itij9|ExNQ4W%+K;L0;DGi{9tcCp}1}vY35jSXbe>A2KQWtVEO1D!iw+xjHx2%U; zijDxMk>scu*>V}D4}$HvX5O#v*l_U-ZB4REVJ-mIc!H>YMX>PG9`&8Gea4W7y^%Jj zNxuB~=YVaNkPYgtt1K=bEihdU+8W0lb2$vzCWmnH*9K%0W6bPbo6%SCoz*UhPn-qp zon3b}?>3WudPLWXtN22rYu%lHNJbZ7AHHbh0{sh8`C$RL6lm`&)&Yq1L!sGmI~Iyt#s=am>aKm3;EAc?R%u`)Qg^3hv| zH`55uJ3Z*(x^&_wn&)t|gW16>UY@pJ48x9$JI7_q*tFlVu0kE6{Fp@xKDk&*rGHy7 zsH9@K``Wckia`rpp+LeAB_n9x>OoHC>UA;;{ycO2BxMkVXJqimydnl+{VYJe24R2- zu-4yI9E|kHWPqhG97FgyK5AQ2f$oUcK&HMpP?CBO7#N*bv5h5F56czxNe^#B^p@p% zWjYq{CY5F{pNYeOsr5^laM>ohLhlzief55*VP{&Gq9JbAya{vt@JI92E!8ibDz~D2 zr)l5hQ;HYRH+`gknTxc;Q(1Pn{?)zis(VDFOLqG_9Uk!;&V}y>^6S6HdCmU)rl5+5 zqYUx8+I_FGFF`lMGoFuNq>Wq3n1lm2qvi=T+y(6JBK`-lMqW{_`1|@bvt?29k7@k1 zIrl$mC{xhfi|EHRIeZ-(Pu93WrkhPHV{L0hyovF8VuMtDy78fH^lBS{|0JLPt4L7a zhg}h_gL&fFp9c?+c^k^yW*h-LQ0A TRy~NH9;yVP7ZE`iBkBJI2M1s$ delta 20702 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 Hx{Ut?%g_t3