From 6089c5fe0ebf1e6a83ac5543c6f93425a2b626de Mon Sep 17 00:00:00 2001
From: Matthew Webster <mwebster@fmrib.ox.ac.uk>
Date: Wed, 18 Jun 2014 14:55:53 +0000
Subject: [PATCH] This commit was manufactured by cvs2svn to create branch
 'newnew'.

Sprout from master 2014-06-18 14:55:52 UTC Matthew Webster <mwebster@fmrib.ox.ac.uk> 'potential fix for weird child process bug on some accounts'
Cherrypick from master 2013-07-05 13:32:37 UTC Christian Beckmann <c.beckmann@donders.ru.nl> 'fixed f..... up calc_corr in econ mode':
    Makefile
Cherrypick from fsl-5_branch 2014-03-25 16:21:51 UTC Paul McCarthy <paulmc@fmrib.ox.ac.uk> 'Melodic exits early if specified time series/session design matrices do not match the data dimensions/number of input files.':
    meldata.cc
    meloptions.cc
Delete:
    doc/anim_gui.gif
    doc/concat_diag.png
    doc/gui.png
    doc/index.html
    doc/mel1.png
    doc/mel2.png
    doc/mel3.png
    doc/pica_diag.png
    doc/tica_diag.png
    dual_regression
    fsl_dualreg.cc
    melgmix.cc
    melgmix.h
    melhlprfns.cc
    melhlprfns.h
    melica.cc
    melica.h
    melodic.h
    meloptions.h
    melpca.cc
    melpca.h
    melreport.cc
---
 Makefile            |   9 +-
 doc/anim_gui.gif    | Bin 50608 -> 0 bytes
 doc/concat_diag.png | Bin 27772 -> 0 bytes
 doc/gui.png         | Bin 21901 -> 0 bytes
 doc/index.html      | 260 -------------
 doc/mel1.png        | Bin 12471 -> 0 bytes
 doc/mel2.png        | Bin 8175 -> 0 bytes
 doc/mel3.png        | Bin 7037 -> 0 bytes
 doc/pica_diag.png   | Bin 27267 -> 0 bytes
 doc/tica_diag.png   | Bin 1182593 -> 0 bytes
 dual_regression     | 128 ------
 fsl_dualreg.cc      | 254 ------------
 meldata.cc          | 103 +++--
 melgmix.cc          | 687 --------------------------------
 melgmix.h           | 207 ----------
 melhlprfns.cc       | 924 --------------------------------------------
 melhlprfns.h        | 133 -------
 melica.cc           | 484 -----------------------
 melica.h            |  66 ----
 melodic.h           |  88 -----
 meloptions.cc       |   4 -
 meloptions.h        | 543 --------------------------
 melpca.cc           | 127 ------
 melpca.h            |  55 ---
 melreport.cc        | 807 --------------------------------------
 25 files changed, 49 insertions(+), 4830 deletions(-)
 delete mode 100644 doc/anim_gui.gif
 delete mode 100644 doc/concat_diag.png
 delete mode 100644 doc/gui.png
 delete mode 100644 doc/index.html
 delete mode 100644 doc/mel1.png
 delete mode 100644 doc/mel2.png
 delete mode 100644 doc/mel3.png
 delete mode 100644 doc/pica_diag.png
 delete mode 100644 doc/tica_diag.png
 delete mode 100755 dual_regression
 delete mode 100644 fsl_dualreg.cc
 delete mode 100644 melgmix.cc
 delete mode 100644 melgmix.h
 delete mode 100644 melhlprfns.cc
 delete mode 100644 melhlprfns.h
 delete mode 100644 melica.cc
 delete mode 100644 melica.h
 delete mode 100644 melodic.h
 delete mode 100644 meloptions.h
 delete mode 100644 melpca.cc
 delete mode 100644 melpca.h
 delete mode 100644 melreport.cc

diff --git a/Makefile b/Makefile
index 940ec2d..744fb65 100644
--- a/Makefile
+++ b/Makefile
@@ -16,8 +16,6 @@ TEST_OBJS = test.o
 
 GGMIX_OBJS = ggmix.o
 
-FSL_DR_OBJS = melhlprfns.o fsl_dualreg.o
-
 FSL_GLM_OBJS = melhlprfns.o fsl_glm.o
 
 FSL_SBCA_OBJS = melhlprfns.o fsl_sbca.o
@@ -34,7 +32,7 @@ MELODIC_OBJS =  meloptions.o melhlprfns.o melgmix.o meldata.o melpca.o melica.o
 
 TESTXFILES = test
 
-XFILES = fsl_dualreg fsl_glm fsl_sbca fsl_mvlm fsl_regfilt fsl_schurprod fsl_bwtf melodic
+XFILES = fsl_glm fsl_sbca fsl_mvlm fsl_regfilt fsl_schurprod fsl_bwtf melodic
 
 OTHERFILES =
 
@@ -65,7 +63,7 @@ RUNTCLS = Melodic
 
 SCRIPTS = melodicreport dual_regression
 
-all: ggmix fsl_regfilt fsl_glm fsl_dr melodic ${OTHERFILES}
+all: ggmix fsl_regfilt fsl_glm melodic ${OTHERFILES}
 
 ggmix: ${GGMIX_OBJS}
 	${AR} -r libggmix.a ${GGMIX_OBJS} 
@@ -76,9 +74,6 @@ melodic: ${MELODIC_OBJS}
 test: ${TEST_OBJS}
 	$(CXX) ${CXXFLAGS} ${LDFLAGS} -o $@ ${TEST_OBJS} ${LIBS}
 
-fsl_dr: ${FSL_DR_OBJS}
-		$(CXX) ${CXXFLAGS} ${LDFLAGS} -o $@ ${FSL_DR_OBJS} ${LIBS}
-
 fsl_glm: ${FSL_GLM_OBJS}
 	$(CXX) ${CXXFLAGS} ${LDFLAGS} -o $@ ${FSL_GLM_OBJS} ${LIBS}
 
diff --git a/doc/anim_gui.gif b/doc/anim_gui.gif
deleted file mode 100644
index e8be7a74f85b186ee9e0d9d8a4d46bde700c4b17..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50608
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

diff --git a/doc/concat_diag.png b/doc/concat_diag.png
deleted file mode 100644
index 252b34034c426ffa797762ae538f090312dfb208..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27772
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
Ja7_06{9oumYw!R7

diff --git a/doc/gui.png b/doc/gui.png
deleted file mode 100644
index dfcab87a5fcd4683f8b5d33ac692e4bb53f39036..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21901
zcmcG#bx>T<*CpDxyF0<%gIl1HB)9~3cXxM(1Px9gxI2v#EVu=C2=4AMH@|P@y|3P1
zuV!khnp2m)_a5DQ?REB99i^logN96u3<81BKFWesKp?0>;7=M69{6S$IxrXn!jQL;
zlvMgCDM_j1>|kzXYX$;&W~FF&@&9p{7hC5X5N+agA4sHq>NF!Wr58dn8Q_|;I{sWT
zshHfLjKw%D!H7hw6ZT0ts_wb2NP_Bf%<hBaO<UETU+x`b?P`8cbbc>u0&?bJFz-hJ
z(tn2?haUwUShCOGdgP80+?>E3WQM5;1;eid9}12yOmA!9?+$2~)d&QE+Lhi-S$=y<
zzw07SJw4e*31ol)vAN=8LV?&UaoT`u&Uk!;z)&bqJgIa(h|&s_C+Fco3r#r-3PfA&
ziv!A~zEx15JY~cH6s07Hu+tLxJ#nBJI><x<DV`R_Fa;`5B8pZ9$}j<xr&f?}%m5O$
z1LcVqO>Kib&7s8mmj}~ow7AUBx-roLy{;12b&>OS@dLmA5fgpz0ZGsV9_hSYu(m-%
zgAiY}Y$H?YKp@I2e9))~>OdVSXhb<MP6B@02QH-6i9FB>Hjg!tR8jHXO&@U@<$QfE
z)92Mp4iSV5DjfJ5if*zNBGB)g-56pQ`9eL2O(68;t4_2`*!<UttaYe8wvDhm0vZ(M
zFe|Fsd?(|Jt&iBHiRqy%r7Q<9TnJ_u4g&8yq&szgXkRSNNf)y1K&3d%s=K+PS;@1q
zVw|XDJFm)kAHhe5(-d$oOUu*9mzp=T@<+9?IA~wl6)#^emo8E`-yi?o&}|D@em{Nk
zEuzHY=e!6-g+uqabr<_<Utma3$A=YDi{Ysaiyy~EyMOM_mm)71UM)wygO_Gk9gL@(
z4lkgP9-=&w%vC*A<)<xuhNs)Oq`ByC70xo3yS_IjcVyIG5D2DSQ99&^ciz7X>(z#n
zmKjB{i$CSx^;)?Lef#K))yTi4)@OA{Wc|_8YC%gS-2t*J@Pu4{MNELpyi?w!n_NYw
zi`~WIE49JofTqa0_kPz#th#!hb^UvnfS#CddDrI9$@oA~QR{BG2ivO1yz}MS=3I!K
z)`^dhir~Rr0R>nr_L#~I$LCxGC&6BL+|ziTc|qu^;Z^HPu1%Ne+w)ZuK^Qv>yc&FG
zhqtgM57@i%^6@A$q8E-jr(ml<)#QD^%=%&Hi{P5@H$f|Yh~O+oHm}KR{DIzt?W<2Q
zhA@S`FH6Q%4nYQmHpA=R4u%H)bBN=RRk{si@AF*r1G34@n)Yz(_~X`mh6C0*Uf0BP
z$pYdt<HHr2310|ci`*AKE=KudK`4C82qetQ@J|}?idm|<)wLZfC&F&+c)o)V^-fXH
zSoeCt;}T#a7%V+yGtT!;>PUJYae`BlOB*_4qbn})%^;PRhseXxhdOR4k;CpxYh`MU
zrZ>8ADr4}K7E36t?cPg|_VA411aa_jTJo-P9+|V>C$Ljks4J?ps+TnvcNftFEcuHB
zZrUPG5#8(@WrRsZ61?N?86KzI*UojW<}ns<7CtRek|<*bJ4CQVl&bXhvdj2JCdS;x
zFcx*>Uk$bn;thy>GL?6h70tS&bmKbN&QUyICNkjeI(dQQ3dC?{ipksu-W$|G4iV6<
zST5}_1SoFV&V{fwWd(@+S$6qPU|&q-lwCPb)czcN<qo1<D`c~%9CjU1A1_s7$kk}i
z(=1h@^-ylo-c39<OJ`2h=(h%2hgBo#5tMAV_4p;Vk^97y2OaS`P<MVT(b|vS*OQ2O
z7McB$%^Tt#gI=t#{v<?U8zAf1@@IBNZyM+3_jB#W_5(eJx1va#xAZa2na;_XpZ*2a
zMd3`~b@y<2PEX>G@AJD3p6jvb24o*e8i}^aNM75v?Cx6*@3+9)f4`O1Sj`aiq(6Av
zStxcSyc*sp-)~1i+O8t--ThQvuKj9{uBK?;%=&i<**(5Ef6<!@os*tp?o{b24bXY>
zzmwSwpH)1bu!t=gdo7szjz4AaUCd}#YgcP;abO`rK;Kz(*ScrUIql-_1>L3cJ(=Sn
z^a}LIy?+n0gw`*As>A%z{1D@mtqbfgi7SZ(p`S__tR#tIN0}Et>rC$m|4qTu#9L!@
zx2yaj_>;7_PIXp7UR_TvMBYT+MZ4UfO@6P{zEr=;KNxCgvd40nH<)w4bIP>)I(3or
z3KoTFYGiup)4H~O+gG&uv9c4Nw)xvtbhLPNh5m5}+eaY@J&{$?l{n#K5!#OPHC<7L
zT=vd04~6@V#hd9azC7-8@>1H8bl(tXQGUKqa$-z#Np%#0D8netsI2J2giZq0&*ck#
ziLV;AD!Q8O0l}*I9}~6f)R5WmvRkum-6v+QeTX!;63)gJ2<p}aJ`0iLhWxD{`~GIb
zbvM@2*<SU$D>;v@L6A&3#5~IXNl04Y)alpbPxo)OwcU)nss;**xkO9{tQ{V=)>>8%
zwJwWzR(mFFUzs|}+;tl&d0T1xh}aTzAwG>Q;rd6u@;8FFj}m%kai96F4o&PK@Ap>*
z*7a>jt*ousI+Fa;{z$Yp7p6em>MH9y%BaheT-Wb|euvCP`01srdWp~`EKw*58wuli
znNRL5=iavemAV^w&@c`em-MR6MZHRZjpuzCd*d~E9{Iawbv)Xym4?wyVK6rDFZcj)
zgt!*k+wGEU%4|%y!owI|oxp&)_n~nIVLTIHTE0Nz+JYDyp*PB*bX!0xXrKcI(BDtI
zl=yI6>lh$$DCYBE*pfiT7D<}F-CiviGl)X@QTOix-o^d)N#-AhaU;Bmj7k{_XG|!i
zU=1$HJDNl_x7fWJHQ;3XKEh&&kNugX9QVk7PK#HjNzfhZmgQCeojo31L4I6?4Zq5>
z3aNs-DNHA-?R!KReX2#)d{}dsVpR3_+;p*=0OGxH8v-Q)hQX`N`U?X%YPfae2SgE^
zHMSMHI{BX;)HE8jM!^-5E7I+XzjTbX6WN9+|9<``yPDjTLZ0?9rGIG7&S|lZMuWzI
zO04v2wPhZE{Y_|M;dGsIN_1D*SL<Bus@4>E%LYqxOD#)oE02BCBf<TT`vunosPJe)
zvG(@mJfilAb{UrV_6ki4Qm*w4wRJVTtM=w5<~HWdt84u|^PCG&yY1_RmNMBk3Ck@A
zTa0Hr``P=dn?n189V3&uq>jQhAq{e=#rFsVVb|eCCCj}o)ZPW2`64F6R=NATwO&pE
z^p^Cyba6jRev->($~TWPj6HWwxCE#+nJPR6@j;3Z9Cn__@R<o2gxy&7Lq~@&`WuU9
zK9f#drp4vj@Ed4;gjl+Kyg@!ayju!8I<uFXO?W@bTeY%j`_0PDI^kf{Q)z8>h5I&i
zr_?+5?uwed4S};ds@JQ4+F^%ox(I&F&aZ24`)}~-R-svZ%0gqQ!<^VD7h$Ftk|6@r
zS2#V#K*I%;y*!*XYTrmC?6Bl_Fbr(TXiNw<U!&rN(n}+)NGn4XK6r4Va7J+QnbZ(6
z6~#z>qfOhPE=REu$%I{oYMMCiJYFRgB*n|}&3Y2hfJi{r46|!bRs>hlyi7e6t}f5X
zH(rL)x|{nHcPIu=`Z};3u{}eZ2bxicQFxILkXG^Mu&eN<Fd=kh@0J+Mspc5%*+nU_
zC~GOxr46ZZKij2PC*6L{NgDc=^3`r>3u2~TCA%i;ulY_@S^r{jj)pc^rP;Y6I(hi>
zEX#Y=M#dW|G?F+pAY@qr5&T^?b!)u0XNUR=QpjL9nlwRkHt+cRkDPHlC>(cn3m+P4
zd77r{=hmw13T(<vENmT4Hn#SUaJRCK6T1qA8)xk%{l-*RMt%tm7cbmJQCzXP1yl#Z
z1l{~Z;)*xM$s$)F5R^<oqL)gRikFJ%hn-~dVDGaYpdDOS?4$FdOZzETd~iDSF(8K#
z!sl$Dim$=TSbW>vtUDOO2gEKrTs4A63LMebzkgqiJ5-r1h(8sK;0{|bR~g7waFy?N
zU7rrGX5h?Y9|qemtxtDUPW|+jY3py9ZOfjvdKEAD{4?TeY9Q&R7{%`_H^A$`<m-0h
z@0#0^`SsFmyd-w>$@(P<s@+3^IZ+b!Gd-`)s{6Rt?Va3Lmq5zjK~VgXgr*;8U3-Ls
zWg=x+RKj9^z$%lMQ2ilHB2^`wk!&Co#1iSQn9z+k8vJRztMyBhP7_9JaKXJct`?zI
z(M3rBUjRpdNEf0h+!U-6*Op>|Fu`+1E=p>^+C}{)T%{zgXb79j-Xia)upjLBHL~J&
z;Jy(ji4(Y8o=R^zIFQcuBiXk##sbQEs%6N|Pu);qWvJ?Nt&5?#m`^?_FKTjXg|pxP
z6wUhZSo6d*+*(KM^B>sH%uLR6bMW$T*RAfF$#F$-$a5?^`2X6Xx+pS>m<_y<A!(@m
znjPQKCRwqqT<pEKNk*t)*9^LYP9SIRTVA2>Z5~lHObZF{7B|_D_)3*7QHq>{mVy%V
zlUF8>dbMC&D&WWBSyevwmhV<3c32X2Qf{$zaY~^H*DtQ8TdOnnk%3(rQo`|7{~D3?
zt4Zw-MnC4JrnZUb3uDN$qWP({r~OlP$DOJUd_8Ha%Gw04>P}N28N)Wog8d{YH}BDg
z;%>*VJyNxEn%3+UPrrAZU2oW@dEf2GU?(Kp80XN5>73qqy<Qi-iZ4>4KD2j=#*$wU
ziU{%EesN!M*qZ#CUHao7#iK>5@XnkfOSE-dU_yv(!H-Mt&$FDSvB6`*%3Gm3Z9qz^
zdF^<;=<Us6bMje}7;HeSee&zEDF=vmj}`<nq#pneOd_F!N8a{o?$%kDxL%v#F+h$g
z+qSDvAOw)#J69VGPz@-sbf1#m0<-}m{x{g9a>d{11+%R2#GJ)gCdS1H0rU>k$45K5
ziUK@|D3WEmcZp&lEh8uZ0+E9R<dB*g9`SsF$j=U;Ky@HlKX7aZGsqE|QnF`?ysNRu
z7-z-*N`sN+vkwRpM%+l{SENFwZ!!-*2#X~MWEvSH8wn+-^aJ6yI07~p25Jo&3b<nG
zlOX*{NuC%8`X(N>iix3?C(hCL8l4a!ix}>i7xMmVAo>qXRHiQ6*W!43IViG{H-r#m
z+(@Ln(*l`Q#E%T|A9=4)RlD+E^<NM${cBI&7~mzZbLBD*KXlDo3N+AZBiIG;N@wPw
z1qKcjNQuK$#?8rO7RXOYTaq>O%s`f10_w2e)Wq+ToRIf19~~OY#1VlekuXtfF`>A{
zBT7JrodH{hE?*Ep-RGcWSZGi~Rk8W&Q%5w4LNpABa$qv?;Ll_Yf3QFtK9L;d0C;L^
zJNRH2cG<G7jO&A{o*n{d!{D!$+^6x|pJTvw5cCoJLCrJkWYx=4ch-;Z{OtHimV3!;
zD6@T;%dp$<7DV?w`77LSY5Zv#`RUYMH2DniHHpgszo({#j~U4gS{Xmzy$h5Kq6-by
zlC*_^GWpzO=GDxyxKy|}@3SuU*TwgJ4$;`}#NGJo7vTxvREyIrpVM@qJHEY@b&>f%
z)E>igrlcWP?!b{)>20Qv9;I{$Di+q1X-S!2KEtp+XnFeJI>1LbN28&dq>rMvw-<#4
ze<YU#HGG0Gdg}`=Ty*}ZXINCEr8_rq+!mIK`pwgj>7{|6=sM?ys}eCWafSm|`YT3Y
zLX;s5d0AO%!zCEZ<3orFZ>JPIWeFSjCRaT3wtRL+!3QHQnEi^Pt}ZrU2nK^^ShE!@
z;ENL&qo+|eM#9(D*5cqpHl08?=!=bwjhm3YoZj1$<*BJDD3E5YF&wY$LSP&TUp{be
zfB0mrgM{67H9C8_X?wr3mW!Z5H{LBxFWjcOi`-_uDqAgGr`di?d*X;*Yu6Sh3e3U5
z5varf8}cE3OF~_pFi!fR0Nh^0fGkXoVQph$RKNI1#eyoskEf&XYgyUZ`|I1=*Mcd_
z=Ob4^G<9{C+pqo?F$RVsCJ8^9^0AND_$lJz;*_AWjt_ctgx00k_Yv(oPI!I)Qd2Ot
zaCQ0azq9rGi^cQhzGnBATS@vnB23`xDfzM2lbtIXn(;P*XduSAlT449==G$e=k=7#
z=G~Li>%(4wlRh;neBKin!~J9_tf%M0ivQC|OF<-;ML|;&@6Q=47X5a@DN9`V5Tg~C
zz!ie&10GUz1at~f)TAMvQVI$%crnr>e#kU9p8?~0($HTsx+J8svfX1^k?R<P4TQH#
z_Lj}M5vN`>KEuU_y<Ux-h#t$n-y4*3Y<l696QVHzPq)oKN|;11H!&17zeP}ZBTfk4
z`{}w|6t+AU#aXs)_<AzEfC4wpF~@akQL9B?NOK<6x}eIUG4L^u$-VdAJwJuK#ouUD
z3=YVXIIU$|ZQg10g5W}Wdo`C@Q77K)naQ6|?|zh7D?_<9ai+^f_8TLHNjM5-JMxoy
zr6qu=Wa*M>7H#3^yRSQ6VaeCrapMTq!<X4}`A!>qn)c4G*2(+&DPCyUaxGxCRz0u9
za(+<;@`FgW2;(%iLvq_-P^RK!y54YiSKYlAS>T2Ae_>GgVy^r6lGI#sJ>L|+A$zR(
z3o!LTFI{dsE!dK)y>Bo)=_fGk7lz<^8wB8DoaIJL_+2|^X{nOhO^Ae3yq;Tl`YwxB
zv>#`;IL@l*KD-KDRL!+I-4LF5qKkQ%6E^#ux|@D!yt|RPaNHC2Jw>-$++&KL4|w%E
zHt;18&6pZcE%ewcSa=R--ng(^uDPtc+YHHl<q_?y#oP6DK&I%sdz%nhc%I~KzfygR
zb@078zU9{w%(;K<?GB^(<uf;LrW3de;uK6$C}!toimqcy`80GTo1U=R=CRG!<qexQ
zX7h{oz1#ORh2FK*kiIp)$i}mv#&VLeQl7c_Kbx0D=Fhhp33-*3tTtLpTm}yhy$dyY
z<OJ1KJ?+HZG5X&nvN^(Tdu{gn+le<4XB%6bmC5v<fQLGK?n2F84>h_ZdNbhvRF#MQ
zz#?qS0xLGatWGJwj*4)+hnhXIo@^;1#}E^CO0Rz~;!2<V^9MF<B#h!^U*^7#UNnfn
zz!wV*4NbGf@rQ3{uTevDbMJv`erf5)Q{gaS@8wq#4B>N7=Y6&X2iIvMX4C7rg7A6A
z*gj!wyhs{pU+P%q#r+gvS;ZI4N^;N2RPJh#8ltwoI-&%at`3Sly#RzYYhSS({|hN$
zw~4X)69TcoS&}z$8RNsn9SyI%f!3NG_S5d0w2FasVP|u({pA-J;qzI)$l*)H&B1`B
zV0jOJxYx|H9+wG`xF^v&(a{9agu#Gyzb|_2DdxiG-2@l=%P>UMaT|PRPgG5%{+h+t
z^>X=7HwfpCo81j3%t1L&S$7w07h7ireST+m+nqvun?V|iJN}B7h^GerXuL9O2?QR(
z5h!>5SZU8gA%wr{j%_erX<v=6VD5J)d_KQsZxpy<NGUrCqE~Xkl;E;kmX;xh^aRek
zAB&s4QEHRy_CS0HBsvDam0bTqgaP4MsY_YYAX=<*d?}ZXy~fyTBonIfzB$ZNzBnNh
zQX(VohTG%ob+8U8ZN|CyipN1XI9K`82$6o1d$6_@3Gq61<78gHH{-pHb1KAS5FK`u
z`kbw~V7(J1oBC-Ar?%IUr`Hgqa)2vw!2o}P^gXp45j}pR5otJU4D4XhAC1>?P?YJo
z)ra)F%h&b6#Dse7VcY{6<n80*bboI2XLi<T^H&%lF|kCGA1y)svcT<Nlfh;q4n_Zf
zS8;$2M$@)TLc)tx|G}kPAo7L@#T$!goy1d;c34?_2VL4Mu^(CPTRnx*&ML<CkFHkV
z<9VOYDE?1R+U-ZfV*P0ptw;&J&hm4YVow?YVS}AZ(QRj)NNE*ffp;u5J*JhgUo?$W
z)Js6|A}_2fcVgWl7+paV`u>k;&zJ98jt}Kc8b>M=PYUnT?w~zHu8~E3E__TA7-nCX
zPGQc^<3>>IyMFOIjd;Xwr`o!uQ?X`>#^7Jv1-Ci9CHRNF9qfmAYuU~1_yoMEJ|hN1
zpR9MHU4a^&kF}0<ykW@wjwJ7o;Virh3xwWa&fePWK%nNmm7{9EfL*U?=O2}PUwtyo
zaj<L@%6ZI-0&VKgaHV>d**juW&<PI1pA65A;1x(ioSzYslU9`!Z$b3&5+Y8h<7@VR
z&~J?(y-~LW2IJaAo}}IfW)<3h!G2>L?YrpT3)&3P&%#)jkZjs<=JrMTx7s!uUGskU
zBaY}~@n3Jnc#Zg)J&ib4Id|)FM>d>*q>WDqKe`&zxPc_26k_Rwu;kn*PxeD0{+RK2
z=<V$%h3#hJyAcaSpp9YX>b@fROb&kj$l_doVxQaN4?M*EnGT&u#WPVc?46oy?6)z&
z<h2}uc$z_eo`1tSE+1fYD1M1nfIxj*hqxme>nsx#p1bdkd*OYzO-Ky?2s_wzqQ5;|
zG1t7jMmSQIF^XYLwXcWV1w3%tg3iz9ZfBlEK#_K&1I%JiaE`s^zNV7$LCbbMI~1=}
z=LQ&Caj)DHXMVdD-QfX!g6j)!5qGcnxfx;<S9=qK&x(E&2*JjSl>SdQ7#l|k?U8Sf
zPb3@xuV|j!C6rTLB<r0=;k7%!lX?lqDI;&Yuge!HZ%g#^?|nD4R@{1hA;;@)^Y%30
zmwbft8w_9Mg!Wrv|7XV9R|k_b$DmxRe2na;K=qL_XBM3ProjMI-+QY2ewS3Q7F(F}
z`}h!xRFu<!)#jB1_SZ`y-#wA;iv`HpOnO&)y-4+)%#UTBO!D+)^PGJRaDyNFuEzY2
zCDXvRX|#xS1Rp85QC?<LP%;>sGluL-67rQS?vDm6V7|wmj{2NU*}vG9N!hJpw&O7_
z=&ExF_;G04aS);^%{cw+4RO>AH+ql2Nqo6oX(4!->Sbt%fnQxMX=jHkS`9^Bj6tq}
z$6}6y%0XF5V-%NR#Dmde9ZQ8*(bsb;Vs^u9&1BWQY~8puK;i(_&`3LGW!0*KRVc<u
z({o?c>Jmh;<Hq}7xGm#!XU4ucb0?ahN}(Soh`PmR;0^tD6oIkzyI2e(@=^`Y9)z&A
z65nJAmp?>9+Bi~U{sE41F3oK9n-Y7?mSW9xIaR%OId3O|=eZedB9od+JXbsOMQ2=h
zTFz?BH^nTmFX8-{eF@uzC*1>MM;pScE=-|s&za}s&)noMFCT1M3gN{0$lo5_eJ_jG
zgVoi)9j`@S**}wZUdE)IR}(B<^l7m5yWQ~?Z0lqihD86^UcT6-a2On@e#Y!tZpB6W
zg7-we8XItW57M`L!(5@Jcf_78ZkFtyTqE<WXM_SOJOnDNdg2jne^73Jd2Ng&^MucB
zc~G28x+m*&J3^);>e;xpxF}rC>EG*mG4Q+@!4md-kvYF9=i5r7(Enx<qr!iEd&KWt
zhtT!%oHqHClDkDuV(oH_@G;ao2rZz_(e^tw$S~LjYw}`RKh}5GSB)~3zU!Rc^R`#4
zuggI*l64)<chS3thd#ZZ{kLuzE}nmV^l+=TC$os-<BMYpv!PQg+*dWOpcWfktTs4a
z8IUA>gmSv*)d&wsKuYi-abErsltUqgxuS^SokZ<|ArG{YvG^aTr${_$8(8%Zc<P<5
zYh0UOl(rFw%T~|5vr8P+dr!&&XKmpO#ksP<47;IY_Cc%IQa`o(Yoh_E@8`k*-Q3(P
zG+5!Zwzbu|>?!=2pEr4Vys@Aak2H7>S50l%<2Anu@B6~-x%1oN!vE^*g4Gw1UAF~u
z9V)M^_zuskLbU7o%z*N_73Z5Qd+N$HT7~s3Xn3JVo{hQR>HOqGe5Y-|-^{FH{m>ak
z$w&p4L108_06ojvw<2~1;jvb~M>9M4!qn+0$_Y#KJ`C@EgCM6@gpWPg=k4=7hHanf
z(V({ug8n0Cppern75!sG;FbLYwBufY@dV#m)Ri9cAIiXq7udJkgK|?c`7&fz+upU_
z`OU-Gm>N`LME4304X;NRBIYND^Dqp3L=4bGS?0yW`ZJ#W<Mij2J--npGc_#ub4YG`
za9ec-0%fc^b71qOy$Lo9g1gDYH&Iv6{z5ZG#1o&PmwJ<0MC~Ig0#(K(i>0<R<N2H>
z35AzAcjx)aUd_p5qf+wy!g+;tM*X@JvBR%CwV77pR3)*j*_4us%ig1#o~_EjAx>WH
zsy=Ml4EdVx^0Gv6HK-Urn%vyh$VO{z@mS_W7nq+po;o-@nV^a>=wi?~2m@V75w#3?
z2o2wd8`j7Fg0KXnm*ZE4ueu|r<PhJNGi|utZ@POKHZOq)zse38p=28Ik{E(P?m84-
zSoFCqx)2xrQv^xTE41q2mzy01>jBaqhC+}Jfjm^);Vqd*LmTqLTl5P05_NC0w}+Vv
zLqE^1THZ1s!qknROMSrXp6|S6_4S3wtA;zbQjXOn!hL3M$Gu+$VMhm#KKH!#B0zzh
z#-7I6sDrwlKxdkui2SVhxZ;q+sc0rpk7oP+i|N={E>!1>RJ;3@WXW4@HB|0BXR0=C
ztepZ`VD3hdP_vN$=-yY;{{VTR4--D{bGh&K9OU};Euu^8mG6GEts2@<<n<wHti`L5
z!Xmhg@D)_E0#{Ba%e*THV&B$0S3OT3T!NGhFo$HQAgSfdvT5V%-mfWcN`M0V=gIDi
zQ|346c#PIz_{@j8Rr63`Qt<7*B5j{ocz{M6BHk~B`@B9IfkrNx1KdI4h&mpi1t%O)
z=jXQjW*>*p@{-h|Me|>Ie_S8nLvvQ3+eT143MtSN5YD{~9R)!lP~n!Sbkuo-sEC7!
zk<v-u@5a%*y87^J*kt%$T}qmyOYFr^^)XP{_)yX54Y|bQ`awz1aPSOHcs-VU?KW$f
z&7(IXY=djR1AZClgA(eo^{Wx=(-6?xVBlv1TM`4Opi9c2E^2}`?-}Nrbww>g5(!7}
z;1LjNeeUdeczL&`KePAuVu;25i`w$?@|IRaLSvO=PpqMY`kxrc+qd8RL2u`?7)A(z
z0p9j_$$kE?P$kh!FbT-w@-%r2siVX39Yur_+8(pPH=tLj3AdG?JJuOGS=jSw6EV2d
z^%%McXxf~P*z=tAt<0yOwpaJr0~eLUbeQ%+B8>ph{jAtCDVaw_e;w6j3#&ZIdErj?
z9r-hU207HJpYMt01L)5^BgkVjuK1O7?SjPn(Pe15p#INxhrtVxeP=nwgzw%b-wP3S
z%hfBiQN9E?m0Dk_D(Fb+Qlw8so`~Jve{7cDeM|npc=YJZ$-BA4&N|p7;)eWAYN$jE
z#9y<K-5tN@{_b%qr5Hy9x1_h*t+^t!Un!3LZHquwi$#_WDuy;NwTkTiZs%?*hJv3W
zl|@89L&up;FmkZfrdmov3QwAvlaP$OBqfEzQzUQ%%~O~|%`@+d+OMrkD$;~a&oGKT
z10TCJE)Bg$^aivqCJY%8!>7<pz8v@Mf%9;ldK{jsffES*2Lp~gVXKnwHN6hrdyTYP
zzX*Ljt(4|Z4edStP&gm)DUE<UiA2Ai1n&z06Z5m9;7X)alG3BK<BrtBNY)sJo%kmj
zY|ot(4a4T;iz<%}luTZ`Uw9h2LF;d?clWDj{t-$HG-<4dq2)#MwdZ9=3Tfx_Ee%76
zw52(0iY#L83Z(%XG}7=2n}14c2gNzk?;3}1D0*Jzp$s}60yZB)V3cs-hV~hSuM`7<
zo^lXgPbt=XS_$%4O+YZk3LA07oe^$lZ5a3W9_O`gDJCb*k1W46vtwH>xiO$Uk@?nd
zJr>+uK|`k4QyYlrofo+Nw`wvuC)Is7xm{#W6c0o>gM&`9T+P0AQ;ie|=j`{x6Z!+P
zJW-}RkvL=soQc9Oi?Q!xiz*nF4A#O!U_KC%iL&VWbAyCp2WEo6B3BTW&ciQ;Z|2W?
zBM9HraA6f~dqeI-5<Z_oP-m(3<8AJ2k7h&@`KP9w9$g5T&-UJ0C|X?CG$&M$wjR!2
z-iy8|PEdM2iV&<_Ql2mQdHU`#GDHW5Oavg@ofyOmRqG-4?+*;S9ZfDRMY|noPc3<4
z;j2NXRp=zlh0Sg!s^5Rl#8^}vPO)!syf7wxn3Sp69$b&8t|fPKo2^+QGdbvlr=FIk
z#-4%=4}ofLt;V^@y+_4o)sF>JedESv(_INJ*z?1l=y+iFlu^ecE;}@OzhJ}#ftn3$
z7z(9HBt#88f7TJHsq8>OAz&ZUF(28&U#YoPyts@Hkg{`QE%R;U$RKshAO)ey7R!qZ
z$18c_`gpi*Kc<SwjKG?Wn@2m-alC9|1OPd-0im@E^aWd97J#_%t$9+%Q;5Y|<aoi4
zjg5KUwXL&a_`=Z(me}WQxlRW<z%+?oFo&+No|iJI&BER-NN`Q{AZ;MzdJ*{NF`B%H
z=$y|ie|>5c`m%X@))_tQupTkdb>uu&&bMt4P!Dsac|5B6>eh0Gptv!|oH~Si?&Jn<
zXxjqsVEcm9=`)eta+NJc((D)T5K`&2od1xRSxcVq%VmO&hh&1rn2@BZC!W4D&S(9K
zNcYmi;;_wZ@2!`qKsIPT=U&6f^C<g%+M=&+#BoBA92`;>&suCHV{_G3b3@<T@;dIZ
z*=EfAc4=^tEi@PZnW6T3pPC92i$$d(bF>EUdT@1DmEDrh`6xkE(8cv5ur1)r!Kfmc
zH`fVp=Bs+!m~DBx*5P&V!aEYSpf3P@?3>-fwk&CnoN&uec8BQd=q!i&1kWG!zX{*q
z!t1X^7uqA>S7^p(w0eJMp}W4j-tx4dM~4k5Y1tB7xj*%w#zd6URIZ+ndGmVwi0UB{
zWL6$1HIkO!^aBb2=+_{9S2BUXcs(ZJo3jBSht|Rku7IaD`r4~MNtW6sJ;VL1CDm0S
zi<SeWuTaNlhv4}&{x9llv6*~$Uv_QXp6{Lh%+3AUbTnM=^waF{e*dLPm(f6x2K#=8
zJs>Lg^}1NI(^ug2c;Xc`IzO+v8Uxt;up5oJ#K?qWA`U{eY*b(T;_2U!34g>=fT2r5
z!+R}d5Q~$gME!2(C`eCEA~(2=IJjNo)qyjC_${6qGrrf>rN>HWKBEW=DHZ@Ym?q>u
zp4nj?%v_<JQ#`t_#GV3rRCvE@fK+O*e~y}(+J>nj#_Rp%XT(z*8DCQnJgBNna3QU#
zyMJCk;_=ZtHa;G|{j!#;?P8EmAIyIZKV3@R4dTzbGHlcjjhQnLE9LU>Zmm5TOPeHn
zrv5dQ#6gI5E=a8GU=T6F&eWMxKeg83Gqt>ok~RV-rEJJU{7oUjj5^wY2S{NWBQt>z
zVWBN8ExXIq%RgzkQDyX_3VEE45+`$2)xmM3X74yd3~M#NekvSbB|(qCij$715{D!U
zEcb0Y^%>VX)d!-$hd`B;NeI#Bdya29I;J{KcPw(@^6OYQO%BJt4;OpANRaaLHs;kx
zva*$>%vO*b<q*}{QK7@alCMTm{Z;?5ct%zKn=@llWMomoLyCqzqZ?UdWF!dpyPph@
z>&A&KtO8+See2Exvf8aZ|G!HkHaEDUB_Jj9NiVE@X?gjx9vl_bYKEH9^ivSU<a&>o
zL1v1ik3x!W?uf26pzBc0Oi|Ud$XJX2=&gQzt|xG;>-~H#mCdzWO}ga5WVXBpnS<|V
zD&}P_ZXM@ok~E4wWV9l=!3enTP1Z24W9xc$erP6#NpyUBxq|`OciemdJ=#qi<iBKv
z{<jw!Z0#f$@m5rsBC<bEKryNcH0-J2EHgIwu{C|D9WEUkF0JBbt+!)n&Yxf$yUDg;
z8r@+p-)D^u2!hQ2Kdm>6e#0KFDslO=0x7~@PO{@5+WBL?qoy&9pkMs|og>a8bJyR+
zjg4+AZ_7(d$o`7&MzFD_An8dWv{;5*A-GsrDRarU$yF^|$e`}>>duV2M&FUKWFRHp
z(9{H+2E4cVI($ro*SeyHee(0Yx?QSP6GQXlgn5x@Z>epF#G&xw$*`|M>7A2*XIQmr
zwH>#H{AWeRE6Ir_oc$9Rybtsm?4O=|J9mmgnmX$IqGAePROHPdGgeH8f=N$$jCU81
z#|Qj;(q;21#vy@1-7coai5(w*!N{B$HCDb=pj*-P-r4<4X$;gF6YlvF#ou>|M!-+;
zmT9&k*Ah+T3+`;@dXUs?CYQ~tu`dL6*;gq#r*_;r^2-9W7w_b+nQ7+JJc`<Whtcuu
zGhVz~|7zLkKJo0lM<Oxwe2Fi3&56?`in8e8JZqBwsDQhH>}BxoXxPnAh`{9ls4vZT
zFm`d8w|=n!ws15%|7$jl0cJ*g_s`-DF07L@i~OcBUe_`|%k{LQGz;?wNN4-vA!l~i
zqf3fN`W1HnoJPC8rBCvb?V~TfPTFGK*~I&q3_p#10*|6Wk9xSDqb|~muj9=tuGlB4
zzsGYR6}N9mMAi(uF}&Hi+u$xu6uVrBk<mg@bm5)n2mGa~us>!^$4@R}4REw4A2@R*
z{G;S%BUrF;8={aG^(XG`z|{vma!pp8M_CH#N9?9g7FRtcO@5u)d)jG>E4=j|hN@ME
zXK!|@<F|0RL-X|9^W7&%4JK|qYL9Z6_Ug{$Zac!7WZoTRu(_OEWgqY9kK1u)5-lw)
z{gJ@etv8Rew|K_mo1A`nNp7-Tgx(m%z4Zp{`+CJ?0_r=2_d6Owbh>@Li?V`SwpG5J
z=TY?YDB!nKt_-^?P*?{DA=qP|P{H7x(!YDjfOEsb(^64Qqy49h%db1Tu3D)(i;Ub2
zHjW>wr<?k428CqE#DFy>vL)mBW3VefL`8t~`6k{@7Mx5r!3dy%JqN@8PC1$ZIV%xP
z=>>PyBNew$b(kndS;lW1U#p=ns4}^1xf6PGr7uoCp!j<qIElR*4i}-#P<ei@0Nx80
zDb(6JZ9B_JbrvC?Xh{AHPDTsCmM{7GqmfmosU{5!-iz(^P-~c*n^VyUiZo}0r)7#p
zltq;T^N@YQPS)1ZnGh_=9{FHjg#J}k?@agTJF<SY$EV?`j8i-I@Ou`zvR>0e&EGzC
zjZ#0{n9TK1UwP)wvs8kB7pLat+~=+qbC?^`5oMS5ELzdH<^^Wle$V0;R^Uw8D%Wkc
zH8nL=7}%e<Ed8K5VV~6Pl6JW<bxui_Z!&0mSW9})?z}Vi5!E1iXtJUT63;8yK>_Ma
zy;8PL?=j4u;9YkKJEjP;b*Xys$@i9PFpx73pk$&qn^DC^fIj(Pl;4G-^@Vw!{d}~}
znX$+o(&WT-mTB+ZcFuJbXdvr@*BXHPsHOO2SCG5;oq^s0P5~tE=Lah$3=m}a_iedz
zYv<@g@R;cc&JFtxlx#xj+5@x#+k-yyPrqV8OjG#zp{x<A47=f?VjiuXR~r=!K;WiV
z%%kkUomOhuHA=~)p8N4#P~+srXSMN9IoLT4#~p;;<Hi}stv9Y4L!)dnPY-d%K5}8U
zGP_<4zEGu;oBCA5iXI|`L-3`xl6w8<0Xu>kPE~YeIz^){$f{atL&NIpDu0;g_mZnS
zqF2S}W>A<+*N1d1I=fu5&xV^&r)-TZZERFgw3Jrv!s`VHELt&0sgR5W_c~|%cOmHQ
zO8{@W#X8mCmOQ3UO7F?u*Tro+OYyyrAO8GKQUeT5>d)gDGvDs<;kC!XItV!(XZ-fM
ze<DarmC-?%Y#w#ce)f&LT9qn)F{;<29uxwPHHLr8m;%vp=y3aDTICe^H4=22EQ_!(
zLroPVLd#Tod+V+*Bnig$`2+_4BtiW@D6^ib<T}oOp%hj@PgS^`G|oeV<|?$fS$8JF
z(_e~F{xv}CvFbM8kUF7tab==dI=bq$m;Iloza62EtIpPM`t{Nc01;U2Cw;E(WyPL7
zWG5B-kLj(E5)~EGuOvm$D4(;AyNW$Nhqcje9yoJhhQ_9*_@{t>bZ|tmVHDD-!Q#Po
z#N?h0R`UmoFLn9}@!Gba0_l>Zw>99^g?2BOxjRlxJbUR7l_r>`9P};kQUt669dq$%
z_#(MXK8LwkCxtWDB){U54^drLFPU}^zGp*Coug3D62<>Z3ow7#!8d>TFjuKpG%2`S
z#*TF$(-g>ad*%)bj}0g#Y!xj|wv&~Adh_iPy+j){OZ_Habz@3$h!e2q-MIjy)?Oq3
z!gGS}exa<xo=dC+03)iKc`KGU5M(gpo<(rRlBLsD>?9vGJ>*fYp`m&i;uTIC+XYV4
z8ms-#=JngqK<uvU;r8KY*9zC6gglYEO~;b1+ix9rYt>L2qs&Rl?jNkmCLp*v`b|3%
zjS3KN8}Ltx<`riYUWc_<G!ovw0>!So>kj@`nfFWconH>E)3S-kI!D~k@kA1Q5zJ3&
zQr#iO>zS40VX&c5bLq?l9QDUh-de|DSSb-v(9_{)X;2HmTd9RaV#Ud4-I*tirT%Qo
zHcR5%vqvmV`rw}i`OU6p9ZbBo9CC!;7j&5P7ik4YrR5wcnb=K;JaH`6l`n>w7{=yc
z?rc}t@)!40b?i3<HmuaXe29va#kiMre&k?Cf#|B9;7tA5WTiJ(SS$>kA)4{y=Azn?
ze=sNZ`DAvuWK+Gvni5r{<>Mm+kRbpRO%#k2qaq_+Lx5WTFO_@`)J%!w4sl~7Q&YA*
zIoQhS+b6A7yg<8_iKm@Ur&f&f+ZS@5A>f_B4^gra04b!`H6KZ3J*J(i=-m{`=K^-G
z+J{V-V~9Xt%Ep0;3X0kdPJ}B2K)s$Ehc$q$nn0T#keurk`K*Rj1kj0QswC^7R?jn2
zs4}`dUDtJhX9`XCl7W~BiuD`nTj!yxm;W>+U8o-*aN*qn&}@M>F)au*rWi)Xm}}a8
z-V2pAOxk@jaDaTo1sNW8a~#u<-gRD_V|>lk@_#pxLQ>n2ZkJ}4$z?F|e2nZRCdR#Q
z`~oh_E6+<l3QYD=5}r4>NIHo!JzBNG2n-X}IK8w}ZJNJql;pJIniu63(a-zLgX4;q
z9IgC&q4k!M8wcV0sNl|{oBru#;|nAwWXpm#ymXC6BgIT<`29~+>qT^9@B3Mi*-JYa
z&JF^R$s>z_qh!mfj2p&H?wc4Lo2J6^UF)ucL(U6sk|b8iMm3^zFt?P3NMTeWA=iYe
zsn3L3#h&iSpPZ+RQ6(kLA<`Mz`Nu0e)y{cmKliZdD+_!?*nz@eMX6mqb3LwH`ix3c
zJ3Bk;cPLdr&Q#o}7a3fiE-UeU9CFsMUa#AuDdanNMthKQ--#=j^io05NzLT3Sf>zW
z&J0hR&($3Wb_uH*XT+K!1Zb}dUI_LSjr^Wp!uLaY7rcnGNV=d8A(q}X#Q<0V*qX9v
z51t7X`F~l*e{qlhUd9Qe`DrK+(Bcbf;Ew6-G>Gl}ddX^7P@QJfN04-Zx^o%k+4KJN
z%XRELYs6LmMUiLb$%SoY;y`z7F;5M-J(FP!?%#io_f?^u2+A2KExD?kgvp=43C-(t
z8P+QkrJCI2{~-e2rau1pT;n@8a{AR8qT^=i5@vG_f?YL>!)({$KZ;>KHoZtaEy>OP
z_-@91^!?~%=0d=9S<&UBR~6!5GxpbCp?)wnR~4I&*~ZRJ<Y>Tb>CM6i(AcH#;MS3H
z+=ik4vonKzuCQSb!;AwGNXkgu_NOV{J*xW7heNU1C+@F8lxE8j#m?(<(=+}GJB7zM
zWPRgei)4OGoq_$6GXyF=fs;)pO(A8TtQth=BbFGSa8lkYKcpWG-LB~_C!Tdc=5n=C
z-Jj|z>6hL2d<;bQTE$?#_7o*wH{_~%O{pslyHU<`<{S}N?%E{1xCvx`C{rU4#OD%D
zJ`o4dC`y#z!lP+|alXetf6b+Hg42K~snVzRXlTX$#0Ceh_h2davlXxI<mbYI@;tTu
zuMzGKrT1n?SxC~V?|r|?m#P?YFVh)(oo=#fy2DrT2eA98z37sAv~f*hgzW|@KyWD^
z7chc735^d{T*wb8<p7y~jFSk5Gz2kTL0o>^y-?;lFXg(Ve|{2>@2Ernq<YbxJ)Wb?
zi*uv$$&QOir9X>(XwD|H>V&Q7SOp<ir8<D=z)y_+g$eLGn|A%@O7(pL;j5pHO>#ed
zN95c|>O>5f(oZyP4Vg?e*)$~j)X=oda%LDC+M^EDetXmD+#M|Bx(qd9DDHGt77o5-
z4NDFMt2E&(J-ixN3M73yiYf8)XYx^1brNR=HZwUR!rw%ve6D6)^6xBkEZ*(ltBgZV
zKZnhgPCC=Ku@kh}iZ0&HOWa<S@+3V8jFFr16-d78`a5DoNVEQ-6<1qlLN}`{O>hjZ
z-Yj5T%Hc`iz(5Oa9VzKyr(DLnY|r#4zu1mJ<KNA~l_N#&a+VMk$kq)B4}qgtu?wd~
zhzjHB(=S}j3^wo91gtw3K>{-m1uLfW&yw{>cNQ7)ySj=8b2<*J`&**<&fPER=9vPE
zs#H`|e#QU?pjtKjKPbPu;M8Gb;cb-`=LGi{f<WKL%uC9UWBP;DnBYJh#Bnv+l{L#J
zpg>I)cy)E7Mr}YAgPAaB#6g(HfUKr2C73PEl@10<!R&BAr!~bt$F8J~XI@VPq&a{O
z=&LNvSA}9I(19y)ttKi6NNSjpp~1scd|@6n=f;kLm7`12ExvUK>7g9?qK@~Uq{c5x
zo?$!O5i5hX!?JSoyuv{fV0gn+<O#j@&D7Znz1EGxFfIHoF)*H7>B&%^Nhi_ZLs0qg
zW8i=`qVs=uCw(e3^(rfa4n$R<`U>dci1O6b!+JNxg~=oG8JxY8DPsDmMgR@qg{N++
z4F@66rN2+d?n1y|m{N!dS^y0i&^3u4n7V9fx_5H_X<R}XmnP{WAo&3#Ye0=ao^nx@
zD|3wN9=HNhGW?|I!0kR`PR+_Mz{O7$MnEbEJPO>R!A2sI13L^`^8B*pl~l&nWWguW
zjg_WWDNQ~mi`qz)qXU$Brive7e*n5XU>1DT^9g96OQtNrEchY4n}I{762K@YNaCb{
zih-QeuLIZNlPs%$j8rS~2lu}>@S?yHx6!~{R(vTxW{o2MN|=Mw>s6{|ty|r1%L}Mr
zfZh`+^$CK0Z;D>X7S90dW8Vy9m0)@dF;h}ffYk+5YCswt_@-118OVhLAJJTlA4-Vd
zWWiOc%D9ktOCDq?<qc;@UKx`uFNvCZN(UoW-lrgdR4|~NU}hnrQYk^1^jc7XAgiZN
zXLty1Q@zUS>bG)zn0mtGGJth3r6h{bOi5yiFivgPE}tMq^a7@}e|QMw&FD8B`IS^v
zLw0w~Jv;PE%AzfKq8<5JB1lwAaRD(P3qH!$MN35t17ErvkWKtep1No&&4S;%zhAO)
zoBod%Cx`9dM7n%1F8Pewuf>vDKMoaj_0jlVK5GQ)Bg)bbuC~>9O%}Q|f)4VwRkn}}
z;B}@H2^#F6S?d(2;?7QTKpncjzb`H$g8=Z!2)CoTAHbJvX(+(-M1i60n|07dq6JIK
zqQO+0Y)}%Y6w&WKV)1<b&){QBxfmnn!3mP6Rzz{q0?8K5%UH-^8}4m8lUbV5G(3@%
z1%Bv(sP4dwk|!Vlb*ihYU-~9#$}r$29x2dZJB#R76NH3>>>nKTTx<{4nvW6ddLI;)
zR96p9707T33&*+&vW6%LlT*w;0ZP?K=>iK{ElV6GbK($eEM<J-76sEE{l=V&%fCnC
zaiZXX2GAoUb8@kI{k9x9V-aHESR;C&q?9pZ`VH$B4I8yN1qG3Td}P5CV)HUu(hzL!
z1VX`7q^n?@IAx$LO)wxQ1)V>=5R#Jib$5f-{GaRqlh*}yCqReNpg3@mhpvp5Tx0-y
zo0Ga824j56^cGDb1X2rim_tY))5E6y#mK!rx6kAWGPh+7d&b~1NfvtO;FiuI^ZKFD
z4p|y17zI^TobZSUqvqwQ$;m)4)w?7{z}tXzW@2UrK!t;gE4ZwTsYRFV{>7hE*b@`L
z5Dh&yyu+g-APMTU(G8Ve@~)}?d#|d`J^IhBCQG;_k9J*N9}$qeti#+31XE&8SXC=y
zcaTk$V@E*)ION`@M@I_yEZ}(Qr>x^7>2h>{6gI!B%K-g^jNcJ-;YkW)o@Mw+2hPtq
zn3$LxFaHiXK~;2hQIwVCS5=_{E2i1*$(hQg7kzkWoh9go{B(B~0T_{;9V<SYE`#cC
zsb~n`sEf9#y`EI!QC9{_KjYK;{$rOthT=5X9{}6$HQaRcTnQ^(`s46ziFLZqr1m>0
zGI!>fBSaU#S1u)B4P8AvMqJN&BQOfe%TWN4;R3{k9+09<Ei6P<Rj~n(a_=j8yxv6t
ztg)Y;-}!?tzxy#E;Pl3|gubE_0DkRG<R+x1;sf~I{`z?IPq!v7j|M1#H(detDK!is
zRKSH&^~qLa{FlTrd*>|$ID4(8T#>_|F=skICHe~B?KvdTKw3Sb_wxO>Li%x}8(^X;
zE79l`bHHY1v|AVa0C`u|(TP!G3Im)pJRJUbu^s`KK)|+vJ^?~kE~lOy=XaQhlqsLy
z5u#GzBL65ZM)2>V2oeXmxw&y<j(z8IAO}W;g$mCZ@ans0@~L<RkjjEU0G;<yqS{vS
z>9j4n$ogm7`FGTbpgtF>xMkzo?xPz3!vL%W?7}MtK2W$sC|kh`%Z?IL92g@o{CHA<
zU=4jQI08LaEL}DNg)IIcn<~gZe_&;0B_t#i2f(!7xMy<mE2=ittT1t0ettf5S=q0%
zI}<}g5Fiu+BqAl1mHkzEZKj4IUY9h$ScyqU0F&e7;Gk6PHmM~9qQUV+)aI}X+B)aI
z3H*^gMVT%)%wvURIDOF2ZeLPXhFq>uJ&-RI!@<K73fMZkIT<;5>cq(k1P2ICfV>*e
zjlKio%0ItaaqL9{8kEx0BP%N}SJu$@cjQ1S>Z@tKbaQ<TOyA~T;6#BqjvwgDKhqQO
zxiy^1m-;6fXKO!~0OCyh#Q+Hap#Oku)qZet5)&03rmFMNngvj<0Eh<6>OV0ud<a+V
zhb(%Wphn#P_$gp*pz)ud|1CKuy|=P)D><Ogd~Y*HiHp4X`x`YNUUqJ=H#LO?Y9J&c
z>e=6Cc=i`VCld_a8A&Vn@#8}d3N)n;S9SX(GOkq6%t10i9l4M@Dj69W(AV!`0ivy~
zt&`K!!2qIc4<_`UxKpRgZJlrS^1JS10wYgl(Spt#3m+d>08?SPy15y>K0o}M1sd#c
z9S|V?WscERD+4%dF{Z+)`d|HBv;|S_MdAd}636|rZUn3#J(ZO$U&Lt(R^M|I4se<R
zU?mlbRdaOe7Hv7w<w{CQ0%xuJHvkQIl^!$w2fZ$TktX}qXdqu0+ve9l5J$4<4EcvL
z85zW+K-a&N;{m(`uutFv1U*2D4q*O2PatrH=mJ3zuqs+Wk^lvwSIFva_quXC-}oQ^
zrnet^R|ngF!tp663jJRsMv|L3;0f-bT(Rc^?9bZTT1iVQ3fR}StlE2#57;*s)Ys!U
zv|qrZlkx}7>-(U!xu5(3@CG0PK;?jkPR-1Ow6+SOqM`z8{{uJ;1I|7FEx=r*j<T{c
zRKj2g;MxEJ0FvVouUp_KEh;)1SxrO31dyl#>kLdH97rH7r)BN8Ew72ABPQUHz)%3s
z`^ODVfnEV0AaVmgf@on(1V4KJPY_5XYCy0~7^I#lJ8^G2mXGuy16*E0U7f|ClN9(-
z0wFoMw1EKyK-Rug>!amPL;!dTWX1%t0NMg{E2uywfr>b8n5g6F@$sKlT1xr+xPIcF
z+XL{b!20*<0YKA_>7Gzo=>ih4e@;*B1$<g$fB&;hFckn7+ePxz<5Ou0#ek!Io<99A
zQq$HPZN%ynFYBX&^v#YQ{cuY+apvG3{s7=SxxStt_PmL)P;ZgY9zJw-R{()%jnA<b
z;R3kD4;TeN;xse}1cijK5(a^3t#v(60qm^DmUsJ4sVcwY28a|rLe3bI;3;~uZ*$Wq
zRN~z~Oa+24U<bhRi-?E-G4|3}d#WCLZv^0`EAcA-$n~%U4N;_iWXsvt-c3S2oe)GN
z&|h$=dm9-r!vI#7R8)W&a3z4O3lPhIZvOq6_xq3pKwvkw_kbCqG%v@Qjiee4CDH;<
z_ANEq0Fkc7{X`pxasS*EfQ@hfoucuW{~lxJ$5UxSch{MXm`;=cMl+Z|Ap?x)_G}#k
zh}6TwpS*rl@Sb!e->Lqi{=*Wei%}?_`&V4@=V|E7-V>raFN~eIkJyR;1Rk&ufS7t!
zCNdN>Hmal7_HR3p3c4Z!rcqg0$$!><1+cj+1$qGIz9|$dtEy7t&;fnNjFa9`%5P#@
zdUyl|1Ki{UbhE%OH&`@lK=0qbFDWk%Sw0y6$jUze2M8O{AHd*&@FPr~Ab0)UYP6FY
z=#^<rp$g-|iF-OC<?F2e2sN8<WqG-ziwieCt2V453rB@!t;8)Dz!jQmPV6BR=>n|P
z)z$su<Gy|Z15|bOsl`PkfVf2T1_4CSp`AV)S1Mc&h@=3QG&3t4{fX1-2`p9wI$2_e
z5HL`w82ooBpNs&r2b>t7TC=mW{LX(7e{FIAT?4G%SJYsrO8r0c^>1%M)Cl#PWW#EL
zJ!+><<Xazv>RZ!^tDxEWN8oIFo8m1Jh-+T2vMUPEAosI1G~jp~NDt-#=nlkv84r)<
z_Kr|Q8o*Eh(hLOIe_ot8^fL?c0anh?_J8zp<>657eSd7JW1VE_9Lh|#2pOVKPckEA
zvXq@vlcloGkY${TN@I+&tI1L!LXxb7kUb2JI!tP0m~fb6Ih>l*`@QRV{(7(Ly`I0`
z>vGLMGuM5a-~Ii5w%_+RN_xuD+u&aTQh|a3SOhhNd=5IftE;Q7+l6r8YF&oa&+daF
z0C(g~ty0pEEB*sJg7OOr#jyJ0Ir6AIeqP|JK$8?7EAsB|<cCiH9k@R6-e8+!8aI66
zk_wQnj`PF)P+#G5BR~33N%AGJad6Nf+dOJxLf*-+Fh^Ta9X+mmYa}cRXnCL@pu@(-
z#zm?|TDMwolpfVNFZWITt4!e^TJp{NZLHtu-NZoStn3+&Xq|=FSRsUCC@fPH?zEkn
zg{ZI)h;u~4;XOQl13?B=<8$t_n4)J4!nOL(|H;d)(SqIw^s=<H1hSu=olT1<lDAAC
zX&0oVpqYu7pz|Of%svXc8Js@~9sT9YmyUOsT1R#S()xSiPnj5m6*ZnNRnoAze-yM4
zOa}vbg9my6^V_f)J}^4U04D4*Yx=Tw5ufh>Gy3DxgZV&e*7uJhyXgS?$U&pr+$~_0
zNWfzVeCyS{7Y1Ox3sMBB4C=BLushfatAhuH-aquZZp{j*e@E${I60C3dbOQ-)gYK-
zo|u@}98}x0<f4&wh;zy%%gErT&K;1Z(eH{T=2!yWQ2t?^+}Y(;BM=C9_Q%2Gz|(Md
zcOQV$T~}IAMMK-?9Y^23P3-8fLfQ^27YHs;lL%?s*~!2s;TwfaTsO(Pe_w2EZ4FKh
zf%1Y^%26k>M;IDkwc!`IyH}FhlLcUw+qZ8&1~gk<UQV>(%1+&EBP!fScIVUM-UZz>
zS(ck}1sS58IplR`av@UompJ(IF2^rFZfh?C6^vZJ{vCv&N-8RGLo-*~Nh$20eRu2%
zeYXDVqH^%_&l-rz5R*`NUslUWorP`%y#&I7Hawege$eaFEX*U|m^)!*KuW`zvptnj
zs<O$3*$mFzIv>J^GLwHh5^iAx$tr|=J+-9dvFi>TD!#riq5f5Z*`I|&XXoBjBc4iL
zUj9r_PzPO3bEmmE<hTqd4FE!L%ur#HQc~TVLx80hF6;$y3*<Nmyh3Zm^xLrmjE#2f
z!T{eKIz@PKrE?<Xm>QcO4$2sr70hGky#TcW&y*)tLvnTS)KZ2ukX#2gRIF&oEj4_q
zy%LDJ;Ak<q(vPtvnH>OeMXJytbIr@HIA+^DOWFXNy`464J1fh<&29VC^V#`%TFXgf
zJ|pDs*Dj!AUapD@$C6FBr4JsUP<yVY^!Zw9XS{$0o&5bgm#U2dNsdE{#1MUDWq_`o
zN}aoNlf$Q3kXEQ|U`_AG7i<HWBJFq9kK??Fz@px541%BlgqZRkiYRb3=tHRB{Xn;X
zI@i|(tF7L+ZV6KB_)c&}6#;DAEuscO7SP84!$6*{PbumOJ6u)EHQ~IXFbdiML{*f8
z6gnM%58ePxEs@rJ6-*0Q0!bN}9ye8B@#~;7@%e+~*n_>hF*SsT{)Oa!Zh(t7FslO-
z(>c+Svh5(C(xg~1OyxX#=FW-kB2{!@_JLDu8q=o<0Kl&T$}q3(h2w{CZOAvESKh-Q
zp9w4-GG7h3$L<_k#KzW5=P~S^oZ^t9T_Y8zA$mA-?%aVL3YG*yT*HWy<ZRpl3_Q~D
zuS@-%KzQ~Z9y-U``Qc_z?WU%t1H;3bw5{#04uYlil}|u<{_;~FU~~;UEYF{>&gN<Y
z=1F)%`jcJY)LX@;JVito*jP|0wPP1OG&VzI0;T~u$rBc~3A!LZKR<Fzz@eGVHyrbY
zvmYU&qoWlU1mTj>(pZq(ZFD)DrETx87^=;9h!RlyR89oqR(vjlLTv$T0lW%<xh5kc
zqb{?)gsKII$QbRym262`YYW4V9>0uNGeRjv*sLe-O&aAR(h0((1NV}%jk|m+?-dq;
zA+hmFe0F9K3%(kbt!wr+2<8wtZS>HiRvM9fTee*5oQQ2FS?o|qQ{?Vj>NP~9GqN8I
zl!&5WUD4TXpYuSuC_~#SFbIWA&5ax2YeMTl{KWit+|6x6B|8yjDuatLHNT;XHp7m;
z9N(PM%-p=C?Xe3`3OIW>uLI{^)*~}WfU=*cjT2NASR3H>v|5Y|cm|)Z*G)LhtQ@n7
zlP$t9#s#Z$Dl$?D825nDuNjRwPyxteR+eVEZ-JAjkW-xQywNffM(Vtwf~z)9u~t=J
zbY}_Zs*a!%3kx-(bTj&V(+rQrdv73reE8Ff$cl#&93}~++~&YaHb@aL2iT%5I3^J%
zkXGuUigbKDti#d;yT0T2vrQlmpyYu^Q;OdMh6q;pX?u&U)r6bIlD>Vr7-_yG>Yg5o
zS)!M!*H+d?yLN4I*FmlVA9NjrS~fTJ2-uY5VLW|?j!%~7F=n%O=Zm0IZp3d^Y1<+G
z#y_oUSclGuTgf{{zG#&W(FD(8j2|wdRIgBc@178_CJH$v1~+kZcFrp;wb3{b@1IJg
zQtcfaFg=D$BCO#etBT|sOpXpiCxfO3toF_U_1JK~9`ZX-EpYqR7_9vQ3oyu(RPD}#
z?L;NJWo%nDfvfr`XS=7Th*~DPQ4u5_Ji7iPPd)XRm|Cb4WP~oL_B5v<>Opa_1ymuo
zox$VlfM*0_in`OUc_n4{C0=;__(CL%m>J-3*r|z92x}By-0t(;>`e$+hOu7=DjD{o
zb`>mUM=oNmp%aX=q(BxlGqb+Yn+SGVOI-JqU7C-AHy&D#nw)z}(z0K+hI{amPwrGo
zw~W5&Nuf84gugCv0)_&ViYX~^tqEXC?k7EP@buIvB)B(3RuBcwPENKcoexV(k>=Kr
zZ9T&nbeG;j=c)0%QmZ$jXR_C8lfJ0%8z@Z6XzuSRyYHw`k3u@LP7VDE&%NB$E7$5v
z`XFY|`{&4r7VSOwPM~RU-IABF_gZ`_F-&4!ZLK00Q&bEnw5qDAX5Y#dz^2h^85x<R
zdYdw^qm8=_zG~K7VMo9+WA)Vfh&yF1tUbfD3zh!heCiJ{?upS5zICfWzPV1qv0AY<
z!E7)gmk7D=;F+sEyvuNb+J~}BV^DLD79m0kngYxUGN@QmQsQmb36dZz1bh%w9z3cu
zM%pyx_O}sSjceQn*Z){5R9lOC^x}!EeY&{!_%G)n{i$RW4b6~?Uqd*(UyXHy?v*s1
z0}g(3LtCH7#6sO%23;bY(82k(CIBA<C#QLH<5+v`1Yw}P;4DyC<4d0>SK_@KaZH4_
zTU<n6{xl^PqH1U*{9{?mU~HWGa!5?Yk`-2o-mETckHoF=fx>a?g-P*tqNWSA5Y2Z^
z0H|03wZgD1fIM^@1SigA?&>tzSi=oc+<kVW!qB8n5opTxC#027^lk!)*25#^L967#
zKrlHXTi%j_@-7#PY0!N(eKtPS7Q0{(ZCBVUz|k3w<Egi#P$;np<aYrGGQ_MM7-2kU
zSZs<?gdmJO<;q`6t};>EWO$LWJr!C6fH80IfwJwU)~ncLSa4>n=AXxZB0S=mL(K>C
zWmj$gkbXzMR9!sIjnV&5G~~+{@=MjiC(9|mPf*pme7WxYI@IziLX<7@t3AzXms8e<
zV?WW`){z&=r+3jgOzV+>!g2<C8-71;4{SoJptq0Z(Xdnt?$;aZ6|nD26&OM>L~)Z}
zuTwaC2Dfc&(OUXgjjfBP8J8)?G`N}o=y`kNbNz)`1x1Wdw>(J$N3Cn)ZB>Wf+%0Le
zcP=RR*r5Os{|J9&b71h#Fq|9{QI8<i;s+|Xkc#S%YCNmIdskK;^aJRj#gqE+j{bqz
z*se*r9y-IV`tMJX<|tL#8eadP_vG1V3+yzQG$;+Whg{2%x1#o<#^{snHH3VJJxBf^
zP9*+_8b+PtMQW#Y>8H#shyf*iiE@p~frsl>o@t;RQC<F-RfY%Rn+U4tr78N-L2RX6
zG`hTogYq_gYTYLLw`}8M2$cPd6@~hEl<rV_QU~qdm|*fQ>{xN>PR)w{HO%<m4}bpm
zpLBSY<2T>*{oC1+b!fB$dhh*}m6e%?;%GGb$KG_Yjs+es`U!GC^vrs2C+L}V|BtWN
zq6%H=eEV)Qy?iWwjIhR$m*3dNo%FC(so_ml@L9*Vze(P!j#?eNbP1Ns|FLe7^eAO<
zBz)?TW8m(Iz3LYFO(YoCJNlRQ<o%oB+M=VBzaHyqCIv=(Jj}i}_kRx3r5~|B7Z|9r
zdUtNb>e%U$(O|txTbN_-=x+`PzIX<is0vo5{L|P2Ug|a*^sW5;bztg2<M*IPJppnx
z=ox~60JF+|S{6V(%*4q&pHs;`Qsq#y(j8FRJ3Nxf=AG*a2<!;&)gRt>Yxabx$D<3x
z(Qw|M7kvhgy`(i>F@$S%@MH2+63%Yr&xStLt?aHY_lef4RGE6#Yb?vpENiUl3EA4)
z_?@_XTz7b$;<gT^Ju_^!^%r;wX^mQ7hJ|9q2e~}|%HFLKp$?DcwMF{do`_`yT(Vn!
zPI1Vzpr2Trqg;5(SbOdD$Skz@v5QgEXX;_23igPvPn0eF#Mfej!Il`l`L2;0?6a$T
zzYUn1wEND?xVbH-KgrP<lpgmnOTsDg%!<<4UUE`JXU6{J;#1>O!O!yFn!|V^wN-J6
z^YppCui;=swP#b04>~=j@;4{Jcgnd>Gnx7$#N}1IPp^7h)#*o5mFl;8dB(a`y6hmo
ztZ4yrz7970sV<qVz#B$pNW9yJ<BeEuL?TFQlb0WmLd*~^eQi3kii0-?(>>tv7I0ji
z+;w~z-F#E7X6V(a|5V4K4vf?a=9`)}mFk)W6cxADWSa)`be|sOg-;J)P%-z)%8uxg
zkH^QKQK)b)BS?*@fH_RsyQ1`bF{AuP$!D-yu83Fo^eFtkn080BIXwi%ywHLBOCaO>
zF^;VcPGygtDn0ZtB8ZLhK`VdyXCf&{!Wy{@>c=>;;e-5q5j*pRtCH5@(#p-{m)87q
zVZ%6&nW3+W<m>3ZTkwMjAEc0XQ9rIaG}jy}68Tqg(c-#-6W_lKqmVCu=2zY?`=7G5
oldZ(D*xN_jS<`p_{x0-I^!j4#i;8dXGpndW1Y7*011B&45643mxBvhE

diff --git a/doc/index.html b/doc/index.html
deleted file mode 100644
index 66af2ea..0000000
--- a/doc/index.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<HTML><HEAD><link REL="stylesheet" TYPE="text/css" href="../fsl.css"><TITLE>FSL</TITLE></HEAD><BODY><TABLE BORDER=0 WIDTH="100%"><TR><TD ALIGN=CENTER><H1>
-MELODIC v3.0
-</H1>
-Multivariate Exploratory Linear Optimized Decomposition into Independent Components
-<TD ALIGN=RIGHT><a href="../index.html"><IMG BORDER=0 SRC="../images/fsl-logo.jpg"></a></TR></TABLE><HR>
-
-<IMG ALIGN=RIGHT hspace=20 vspace=20 width=90% SRC="tica_diag.png"
-ALT="TICA diagram">
-
-<H2>INTRODUCTION</H2>
- 
-<P>MELODIC 3.0 uses Independent Component Analysis to decompose a
-single or multiple 4D data sets into different spatial and temporal
-components. For ICA group analysis, MELODIC uses either Tensorial
-Independent Component Analysis (TICA, where data is decomposed into
-spatial maps, time courses and subject/session modes) or a simpler
-temporal concatenation approach. MELODIC can pick out different
-activation and artefactual components without any explicit time series
-model being specified.
-
-<P>For more detail on MELODIC and an updated journal reference, see
-the <A
-HREF="http://www.fmrib.ox.ac.uk/analysis/research/melodic/">MELODIC
-research web page</A>. If you use MELODIC in your research, please
-quote the journal reference listed there.
-
-<p>The different MELODIC programs are:
-<UL>
-<LI><a href="#MelodicGUI">Melodic</a> - MELODIC GUI<br>
-<LI><a href="#melodic">melodic</a> - command-line MELODIC program<br>
-<LI><a href="#regfilt">fsl_regfilt</a> - command-line tool for removing regressors from data (melodic denoising)<br>
-</UL>
-
-
-<A NAME="MelodicGUI"></A><hr><H2>Melodic GUI</H2>
-
-<IMG ALIGN=RIGHT hspace=20 vspace=20 SRC="gui.png"
-ALT="Example GUI view">
-
-<p>To call the MELODIC GUI, either type <b>Melodic</b> in a terminal
-  (type <b>Melodic_gui</b> on Mac), or run <b>fsl</b> and press
-  the <b>MELODIC</b> button.
-
-<p>Before calling the GUI, you need to prepare each session's
-data as a 4D NIFTI or Analyze format image; there are utilities in
-fsl/bin called <a href="../avwutils/index.html" target="_top">fslmerge
-and fslsplit</a> to convert between multiple 3D images and a single 4D
-(3D+time) image. 
-
-<p>Structural images for use as "highres" images in registration
-should normally be brain-extracted using <a href="../bet2/index.html"
-target="_top">BET</a>.
-
-
-<H3>GUI details:</H3>
-<UL>
-<LI><a href="#misc">Misc</a><br>
-<LI><a href="#data">Data</a><br>
-<LI><a href="#prestats">Pre-Stats</a><br>
-<LI><a href="#reg">Registration</a><br>
-<LI><a href="#stats">Stats</a><br>
-<LI><a href="#poststats">Post-Stats</a><br>
-<LI><a href="#buttons">Bottom Row of Buttons</a><br>
-</UL>
-<UL>
-<LI><a href="#output">MELODIC report output</a><br>
-</UL>
-
-<a name="misc"></a>
-<hr><H3>Misc</H3>
-
-<p><b>Balloon help</b> (the popup help messages in the MELODIC GUI) can
-be turned off once you are familiar with the GUI.
-
-<p>The <b>Progress watcher</b> button allows you to tell Melodic not to
-start a web browser to watch the analysis progress. If you are
-running lots of analyses you probably want to turn this off; you can
-view the same logging information by looking at the report_log.html or log.txt
-files in any MELODIC directories instead.
-
-<a name="data"></a>
-<hr><H3>Data</H3>
-
-<p>First, set the filename of the 4D input image
-(e.g. <b>/users/sibelius/origfunc.nii.gz</b>) by pressing <b>Select 4D
-data</b>. You can select multiple files if you want MELODIC to perform
-a group analysis or if you want to run separate ICAs with the same
-setup.  Results for each input file will be saved in separate .ica
-directories, the name of which is based on the input data's filename
-(unless you enter an <b>Output directory</b> name).
-
-<p><b>Delete volumes</b> controls the number of initial FMRI volumes
-to delete before any further processing. 
-
-<p><b>TR</b> controls the time (in seconds) between scanning
-successive FMRI volumes. Changes here will not affect the analysis and only change the x-axis units of the final time series plots.
-
-<p>The <b>High pass filter cutoff</b> controls the longest temporal
-period that you will allow. 
-
-<a name="prestats"></a>
-<hr><H3>Pre-Stats</H3>
-
-<p>Low-frequency drifts and motion in the data can adversely affect
-the decomposition. In most cases, you would want to motion-correct the
-data, remove these drifts first or perform other types of typical data pre-processing before running the analysis. This can be done from within the
-Melodic GUI <code>Pre-stats</code> section.
-
-<a name="reg"></a>
-<hr><H3>Registration</H3>
-
-<p>Before any multi-session or multi-subject analyses can be carried
-out, the different sessions need to be registered to each other. This
-is made easy within MELODIC which performs registration on input data as part of an analysis using FEAT functionality. Unlike registration step in FEAT this here needs to be performed before the statistical analysis so that the filtered functional data is transformed into the standard space. For information on using multi-stage registration please consult the <a href="../feat5/detail.html#reg" target="_top">FEAT</a> manual.
-
-<p><b>Standard space</b> refers to the standard (reference) image; it
-should be an image already in standard space, ideally with the
-non-brain structures already removed.
-
-<p><b>Resampling resolution (mm)</b> refers to the desired isotropic voxel dimension of the resampled data. In order to save on disk space and on required memory during the analysis it is advisable to resample the filtered data into standard space but keeping the resampled resolution at the FMRI resolution (typically 4mm or 5mm).
-
-<a name="stats"></a>
-<hr><H3>Stats</H3>
-
-<p>The Stats section lets you control some of the options for the decomposition. The default setting will most probably already be set to what you would want most of the time.
-
-<p> By default, MELODIC will variance-normalise timecourses.
-
-<p> By default, Melodic will automatically estimate the number of
- components from the data - you can switch this option off and then can specify the number of components explicitly.<p>
-
-<p> You can now select the type of analysis. MELODIC currently offers three options:
-<p>	
-<table border=0>
-	<TR><TD width=50%>
-		<UL>
-			<LI><b>Single-session ICA:</b> This will perform standard 2D ICA on each of the input files. The input data will each be represented as a 2D time x space matrix. MELODIC then de-composes each matrix separately into pairs of time courses and spatial maps. The original data is assumed to be the sum of outer products of time courses and spatial maps. All the different time courses (one per component) will be saved in the <i>mixing matrix</i> <code>melodic_mix</code> and all the spatial maps (one per component) will be saved in the 4D file <code>melodic_IC</code>. 
-				<p>When using separate analyses, MELODIC will attempt to find components which are relevant and non-Gaussian relative to the residual fixed-effects within session/subject variation. It is recommended to use this option in order to check for session-specific effects (such as MR artefacts). You will need to use this option if you want to perform MELODIC denoising using <a href="#regfilt">fsl_regfilt</a>. When using single-session ICA the component are ordered in order of decreasing amounts of uniquely explained variance.
-				
-		</UL></TD><TD valign=top>
-			<IMG ALIGN=RIGHT hspace=20 vspace=20 width=80% SRC="pica_diag.png" ALT="PICA diag">
-	</TD></TR><TR><TD width=50%>
-		<UL>	
-			<LI><b>Multi-session temporal concatenation:</b> This will perform a single 2D ICA run on the concatenated data matrix (obtained by stacking all 2D data matrices of every single data set on top of each other). 
-<p>
-	It is recommended to use this approach in cases where one is looking for common spatial patterns but can not assume that the associated temporal response is consistent between sessions/subjects. Examples include activation studies where the design was randomised between sessions or the analysis of data acquired without stimulation (<i>resting-state FMRI</i>).
-	<p>This approach does not assume that the temporal response pattern is the same across the population, though the final web report will contain the first Eigenvector of all different temporal responses as a summary time course. Access to all time courses is available: the time series plot is linked to a text file (<code>tXX.txt</code>) which contains the first Eigenvector, the best model fit in case a time series design was specified and all different subject/session-specific time courses as columns.
-	
-For each component the final mixing matrix <code>melodic_mix</code> contains the temporal response of all different data sets concatenated into a single column vector. The final reported time course will be the best rank-1 approximation to these different responses. <BR>
-			</UL>
-	</TD>		<TD valign=top>
-								<IMG ALIGN=RIGHT hspace=20 vspace=20 width =80% SRC="concat_diag.png" ALT="CONCAT diag">
-			</TD></TR><TR><TD width=50%>
-		<UL>
-			<LI><b>Multi-session Tensor-ICA:</b> This will perform a 3D Tensor-ICA decomposition of the data. All individual data sets will be represented as a single time x space x sessions/subjects block of data. Tensor-ICA will decompose this block of data into triplets of time courses, spatial maps and session/subject modes, which - for each component -  characterise the signal variation across the temporal, spatial and subject/session domain.
-<p>It is recommended to use this approach for data where the stimulus paradigm is consistent between session/subjects. Tensor-ICA assumes that the temporal response pattern is the same across the population and provides a single decomposition for all original data sets. MELODIC will attempt to find components which are highly non-Gaussian relative to the full mixed-effects variance of the residuals. 
-<p>Estimated components typically fall into 2 classes: components which describe effects common to all or most subjects/sessions, and components which describe effects only contained in a small number of subjects/sessions. The former will have a non-zero estimated effect size while the latter will have an effect size around 0 for most subjects/sessions and only few high non-zero values. These different types of components can be identified easily by looking at the boxplots provided. When using Tensor-ICA the components are ordered in order of decreasing amount of median response amplitude.  For details on the decomposition see the technical report <a href="http://www.fmrib.ox.ac.uk/analysis/techrep/"> TR04CB1 </a>.
-</UL>			</TD><TD valign=top>
-					<IMG ALIGN=RIGHT hspace=20 vspace=20 width =80% SRC="tica_diag.png" ALT="TICA diag">
-</TD></TR>
-</table>		
-
-	
-<a name="poststats"></a>
-<hr><H3>Post-Stats</H3>
-
-<p> Melodic will also by default carry out inference on the estimated maps
-          using a mixture model and an alternative hypothesis testing approach. A threshold level of 0.5
-          in the case of alternative hypothesis testing means that a
-          voxel 'survives' thresholding as soon as the probability
-          of being in the 'active' class (as modelled by the Gamma
-          densities) exceeds the probability of being in the
-          'background' noise class. This threshold level assumes that
-          you are placing an equal loss on false-positives and
-          false-negatives. If, however, you consider e.g. false-positives as
-          being twice as bad as false-negatives you should change this value
-          to 0.66...
-
-<p> You can select the background image used for the generation of the
-  spatial map overlay images.
-	
-<p> If you select the <b>Output full stats folder</b> option, MELODIC will save thresholded maps and probability maps in a <code>/stats</code> subdirectory within its output folder.
-	
-	<p>You can specify a temporal design matrix (and in the case
-	of a group analysis also, a session/subject design matrix) as well as corresponding contrast matrices. If these matrices are set in the GUI, MELODIC will perform a post-hoc regression analysis on estimated time courses and session/subject modes. This can be a helpful tool in order to identify whether or not a given component is task related. The matrices themselves can be created easily using the <a href=../feat5/programs.html><b>Glm</b></a> GUI.
-
-	<a name="buttons"></a>
-	<hr><H3>Bottom Row of Buttons</H3>
-
-	<p>When you have finished setting up MELODIC, press <b>Go</b> to run the
-	analysis. Once MELODIC is running, you can either <b>Exit</b> the GUI, or
-	setup further analyses.
-
-	<p>The <b>Save</b> and <b>Load</b> buttons enable you to save and load
-	the complete MELODIC setup to and from file. 
-
-<a name="output"></a>
-<hr><H3>MELODIC report output</H3>
-
-Melodic will then generate the results and 
-your terminal window will tell you where to find the web report. 
-
-Each IC_XX.html webpage shows one spatial map thresholded and rendered on top of a background image
-followed by the relevant time-course of the ICA decomposition and the power-spectrum of the time-course. 
-
-<p> If you click on the thresholded map, you can inspect the raw IC output together with probability maps and the Mixture Model fit. 
-
-
-<p>In the case of TICA or simple time series concatenation the time course plotted is the rank-1 approximation to all the different time courses that correspond to the given spatial map within the population. 
-
-<p>If a temporal design was specified in the <a href="#poststats" target="_top">Post-Stats</a> section then the time series plot will also contain a plot of the total model fit. In addition, a simple GLM table will describe the fit in detail, providing information of the regression parameter estimates (PEs). Furthermore, MELODIC will perform a simple F-test on the estimated time course and the total model fit. For task-related components the model fit will explain large amounts of the variation contained in the estimated time couse. In addition, if a contrast matrix was specified, the table will also contain Z-statistics and p-values for all the contrasts.
-
-If a group analysis was carried out then the report page will also include information on the distribution of the effect size across the population. A simple plot and a boxplot show the relative effect size across the different sessions/subjects. If a design matrix was specified in the GUI setup then MELODIC will also include a GLM regression fit table.
-
-<A NAME="melodic"></A><HR><H2>melodic command-line program</H2>
-
-<p>Type <b>melodic --help</b> to get usage.
-  
-<A name="regfilt"></A><HR><H2>fsl_regfilt command-line program</H2>
-
-<p>Running MELODIC can be a useful tool for gaining insight into unexpected artefacts or activation in your data.
-
-<p>As well as being a good way to find structured noise (or unexpected
-  activation) in your data, ICA can also be used to remove chosen
-  components (normally obvious scanner-related or physiological
-  artefacts) from your data in order, for example, in order to improve
-  the FEAT results. In order to do this:
-
-	<UL>
-
-	<LI> Run MELODIC single-session ICA on a 4D image file
-
-	<LI> Open the MELODIC report
-	  (<code>melodic_output_directory.ica/filtered_func_data.ica/report/00index.html</code>)
-	  in a web browser and look through the components to identify those
-	  that you wish to remove; record the list of component numbers to
-	  remove.
-
-	<LI> In a terminal, run the MELODIC denoising, using the
-	  commands:<pre>
-cd melodic_output_directory.ica
-fsl_regfilt -i filtered_func_data -o denoised_data -d filtered_func_data.ica/melodic_mix -f "2,5,9"</pre>
-	where you should replace the comma-separated list of component numbers with the list that you previously recorded when viewing the MELODIC report.<br>
-	</UL>
-	The output file <code> denoised_data.nii.gz</code> then contains the filtered and denoised data set which can be used e.g. within FEAT. When running FEAT on this data make sure that the analysis is set to <code>Stats + Post-stats </code> as you do not want to run the other filtering steps (smoothing etc.) again on this data.
-
-
-<p><HR><FONT SIZE=1>Copyright &copy; 2001-2007, University of
-Oxford. Written by 	<A
-	HREF="http://www.fmrib.ox.ac.uk/~beckmann/">C.F. Beckmann </A> and <A
-HREF="http://www.fmrib.ox.ac.uk/~steve/index.html">S. Smith</A>.</FONT>
-
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
-
-</BODY></HTML>
-
-
diff --git a/doc/mel1.png b/doc/mel1.png
deleted file mode 100644
index 6de5835db8a62e54cdd441c61893dc087cc32b03..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12471
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
DE~5s{

diff --git a/doc/mel2.png b/doc/mel2.png
deleted file mode 100644
index e61c591c062687ff32674e385b8a035e481b28d5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8175
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

diff --git a/doc/mel3.png b/doc/mel3.png
deleted file mode 100644
index c3850b8f214535bcc7f2980494a48d2ec7965ae0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7037
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
BHfR6<

diff --git a/doc/pica_diag.png b/doc/pica_diag.png
deleted file mode 100644
index 120863cc9c8b60c640ad1a7521d954eeace1cc6a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27267
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
W7OV6|!|`=d6wld%Q|=hF=l=lwSsI%F

diff --git a/doc/tica_diag.png b/doc/tica_diag.png
deleted file mode 100644
index 0e9199cc5d594731aa618cdd1735764ff9894b7d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1182593
zcmeF437k#k8^@o6P$Cqf$QnWsDHO@r%NCMI8xm=^uPvgY1(hWwDj`cE*|m^R`j?We
zl#pGvsJ#E@_tv@HZD#JBnLBgu+~528oVjOt&%1ojnS0N3o^3>nW({+nQ{)^G$=$e7
zLMxH1%S4=NIkW4YTwfe|SwFJh)wE%Perh>YZ}DLLIQzjyw>~0LC_fgb>+Ap1^CZWk
zjc=--<NKW13ueFgxoitch!mH`33Xfdab)GN+I<~k44Pme0TLhq5+DH*AORAHQUbT%
ze!J<`t((-SQNxMSA#zwGKmsHX)daFc_2@V_5+DH*AOR8}0TLhqnKo^j?AWn`BuIb+
zNPq-VNFZAZ&*N#Cion)fmz8#H0W#IZI2jTk0TLjA7$R`|_;HyzbEet2aid&%>7~-5
zMT;31TyQ~KcM5;}@rOPB%{Sjjks?K;Y15`sx^!ue26XP+xu$aE%Cdj|ewjaizMOsb
z*>cM*w@9&K#T*=4vu2G{sZs^!Ip>@MyE>7D3m2M_B}+<{ELr6J_urS_fB#+T)vG7h
zU3Z<QUDOM;??3<iQ|8T^C#O%JmR7A=NtrTbeA>~mO`kn`cAM?nw@a;BwWMy{x=yZK
zxzL3z?i_-(bK=AanKNgOIdkTWeD>LAa^Zy+n(ME>-nPGK(<bx52Omg|969918*h{n
zB}(}8>$cBN5+DH*AOR%+vu7@3z<YrA0Pg|b1H1=#52W`!uxr;YQ?X)217WU7lO`rl
zo;;>#(W2(N@4nNa7}>jb@473lxWeSko7bpdXUdl^Z&Y|S5Cq+^qJG=9ZH)@cMukq>
z#wC|rVmfy0XjD)(&6+hc*|TRiH{EoT=NuJ;O@|I0>^Ulg8f@c{Xz0+Po;soS-K$qG
zqk^uv?Y7%Y*|KGAJ1bVK@U-*QS6|t2s6cM#h`FkOYE&2=?mdUZ+S#{n-}Hop1mif4
zsZ^<w>DRBHZ5wk{f!ARCS6+FgJ^tjAPkQ=w+vX?#uXzvf9^gIj&pkk)mx4d<0p0^X
z_rNEY9-8jj0`QBHKbE`)cn_r4J<z#xXH&d*adY6nfiCFt=+UE6s8Au(zI}V$G}5zY
zPm?cSKBK0;cKh$Y|CTmw+L*$H3ma%fQ3paW1WRaeu?@{G1lp^wzS^8Rb;|C0{`u$4
zS!bPP4jw$1fI6<wtD0ZiF7`pV%$hZ;`Qe8j?7mR@hJd|u=T1*M5Y!=*qfIOr$F<j9
z>zU(`BS)YeHjNuM_SC@~l4}R!f9IWd>^T@C=J@v8Z+qIf<BmI^(e`ZXitV4D<iLA?
z_W<vKf9?VL{^~CW3ki?_36KB@kU;tpz=POZZ@p#BnDgh)KOViGd+xdN=9_Pd3Wats
z)2B}t)qGkLX6%5OvIc*W-Me?or=NZb;m?+K?b=E1+_~+#niX5qUljyJg-N?l&6x!z
z#j0^#{LdKz^I=hqu*XdJ-h1yA2-fet_nxg1YTs&tEEipLk*A&d_3MjjwQU;^P+@lc
zzylA6J4e-U%iVY1EgyaKkrnja@g&ubTgUxWO?OwAI)C})mx31nD6hZ%y0dNDHqSWR
zy8I*o5+DH*_=f-mU)~8MKmsH{0*MefeCuI7@=uO{M5=H%38Vo5m_I{+gYf5F8Z>C&
zsClx3V|(`Ou|lx-@j7+tII5);_|dvWg-~}@a17<*i!b)<gYfKM;OpyMR0Hd%=GL|w
zPTx8n?`Eu^?(W#KWs6-MGGvITe=>ZO?J{A)1c5KFnpt}U`J~!$+jBo5Q1|WIS5&KQ
zwdK$xLlX=ko`nQRfCNY&H~|L03eJUlNq_`MfCNZ@1R_Yl6;NTC9IU9BuN7ipChT2K
zo;-OFLL-i+roc?vzaRh?#uZNAu7=saEo^7Y_RnM16Hh#0HQWAmR0HkN)+W`C|9RLR
zJb1998f$|<UrU!RwHoD-BS)I`>(_hQ40ay(kpKyhK)ezNd<7b>BsgypAOR8}0TLjA
zL<t=0^vi%q*#bZSggNk%B};tz@87?_Y1ptKe04<wSp^(lym)awm`@{0bZW}-<;$&E
zwA+S8o;E-K{Ih5fD=P%2Mc-%(MNO7PO`{!m!T7)a`fKry{_Kt;l+SO!{niW{Hp~<(
zSkSrauDcvHC3nCPCedrxuJve?Lure3NPq-LAZ`e(99Fw8CE>Wa+?*&0kN^pg00~4F
zfo|Qp*}Ow4wONTxon_5SFTEs}U3Qrr=zaIyCo5O3ltqgc+2d*}eDH-AUJwllEj4S_
zOqHth*s)_WeE4u{FO2np0|#0)t=e6$N9SqLH}Vj{nYnA%uCS@LbHH40z4cbfnKNhD
z7sGY-)#zaBHB_~{@x~jrO{mfJt$=M$?V`hOmnV<_36MZM5TNaIJX~eYkpxJ91W14c
zqL9FV0Rx=Pn>U-PRjUd@J0Ci9NHjdMJpTCOR;caKqlW`^tg3<K{PWMZ$2DBCjZPKJ
zkvE(vwrtr_rc9Y4BSws{p`no|c<R)tQlLPAYG@~|`W`oK9KuvfsZympbG+e(8$|7v
z!xG#zw~;*b&_h<O`^qb?Si5Ic`O3o&KWxXZ{AARqQRpYEcEe$2>pnW?F^w_CxBy{;
z;|U}{0?|akf&C2&36KB@kN^pg010FiflZq>A>l8=Jc|m%n&;M6j?=KlM(uq?llemP
z>xAnp>pw3f%hd>5)`@oAx^*@Jm*yubrAdbW3#aw(NomnHB2vL#S=$oT2qW*3?*#n^
z7-Sm`%c==SjwiY5s;lhz-+%wTQFfyFjx3iTr*RhvkN^pgz`q12`0`dD0TLhq5+DH*
zh${lF;HzfOVGE$?3F@}nZbPDAsb0N05(h)zJ*1Alv};b!i@?5;BG9k<Rp-$bASpsT
z7PSOu0v)xNh65u35+DH*h&KWVYn)os-gsk{ndb|Wa3l%F@^8skym)Z~q1atipm$Ol
zLCbBFpCmv6BoGe-DEP+1RpuN?fCNZ@1frGzgk9vT(M66PJt_}A_@F%X)KgKdm5f@L
zAr9>R`|r2r$01gas%k&|^pjwjK7G0!m*#0Q6)IHl2*MDEb=z@sE=ASgIT#Wkfy_&w
z$;tAc#E>ljO`tRHt;m^?011!)3B&+_JMOr{%$qk)diLxo`}gmcqD70!V~;%+;Qtx}
zQ}G$%?%lhszpl?tZiGcZb3h^BRaobs@;T?6BM6w~YKZZPDAZv$#1lw>1V|tg5uo6k
zi7qCmLINZ}0wfUK1WukjDTpxamd`)`+|;O1Lq7iaW4Z3S>oS#K^5&awnogZMxl`q5
z1`|NiVQ)cL*GFhH?LHYiEOt)<BtQb`Mu53~(+%~a@1MRihHL@SjSD*>0TLjA_#@D_
zZ(q}_Su;(zVC2s~|Fi&L%8CMw@9ER0kptIgsvM({d`+cFm5iGY*H+>m5=aFBSQac;
zut0_k86r)ZG!YewduysByr?kx5{79&Qo)v|k^l+B2!WNuYWJlII7TiOhe-k?KmsHX
z+XTM)>ML{2HP=Y{_U&c)^5s_Tn<r16QtGU^4UWHm{q>ieI(14KH*PHT>(`gJ-+o&V
z`AC!F#-wVPD&Xk5U)5Py%9SgJFw%CZR;`-Nmy{z%j_4aKM??Z7Kmut@fRV4#7$}<~
zfn*4bPRKWgwgAaM;$afV>;x)Stms^O?X~8OH{Ote0|z3}trc!JZroUE{P^+PF1_?p
zsadn8C&x|BoH<R89z9|f3xuuv?z=B$#~%#?|KNiU<maD%PSH@1Kv`A1J_0X8MW+ZQ
zPa**l$Rq@){mmp7lG7jo5+DH*h)x2qX+Ck{M9JTN`)wNpK?o#2{`jM)HrP?^uV>J%
zO?39`+2zQQBchsO8`gK`%$YH%{q;<YD=8+RHp=G14?hg)eAv%>Yjst#TPknfyxT)M
znUzR@1V|tb2vGYQ2N#)BBmokLQUbqhop&j10iyKcr2Vi)jT&V}j2Iz%_wJR8F1kqG
zdFLINpsv6C^2@7s>(<S@_10S+0as0<%@05PAa&~0kr^{)NPz+c<ds)mSs%`*4jw$%
zC4c_><HI?Jbz_e}!GZ-nCd~f|z8<TA*qaSUOadf80_j75LU8(UW-lZ_0wh2JaYo?T
zXP-4sJn@8$G*rHPc^N%=w9RXz0&TS^Q>K^(4H}3ph&*J4--jQ5SbF#FEh|>6kgi?3
z$|H|F;vj!baz!H=P1p9?EL^xyCQX`z>J)sFgBC-_Rf8+=(Z%9wcU9Btd0`SmQ{hla
zfCNY&LkZCAIYaTYa}po{5+H%hNB}0xMT!(Lg9Z%})$9fpQu_4iW5$jhD;m~W%9JUy
zYxE_TxwZiIw;ATqp_DUc&dB1$i_L4Vy(V+#&J~zVfAYyEQn_;F&>9G(6V}Oa0{iyu
zTc=@~tA%=BWcYwN01_Yp5{O~~6oRAp;&5mrKmsH{0<lTp*s)`hJ9logXwf1>arO~L
zw{G2PKKke*>C&Z(4T5#}@L`*jRRv*Dq1mUd|LipYl7WWz_19nb1VchJU(J_<TsBFb
z>)#f)Nq_`MfCNY&o(M4cZ#-RX&Xoj6fCNY&T?m|e?zz^#cgd0^0sT#$JXuupD-c+x
zO`9e#Yeh0vq(TZ-5Hw2zUztXY8krI$O32WmLp?$->cgCxLT@l~F}&~E(=CU&wg53a
z4Gx_INPq;Ql>mKzqxH&gTqHmOBtQZ&LqPNMCVcnZcZ=0G(}4*xO84&F1-`$k<u#gm
z#-o`nUAnX!KYrZi`BkCTS+izM(0OWm)~s3c=UO2-SS9rjPSnIYSbgpz0TLhq5+H%N
zC9rZ>?Y^{qj@!%6iIV^ckN^p!mH=#=J9qAEX3d%<P}L$*l{);&GtWHZ{PD*hh*V@w
zojN5*+^V6T9XFp*@#4ir^VxVLVs{*9@7;IbwNmfu)vMjzK|foyYK73yPL?dR<_Zdk
zJ4qns3A}UQM045##QbIC1fr4vRlresSvV*XAOR8}foLLtaLpJ`$BrF+1lP80+uB@3
zYNsrk%SbfOkv#wW^GNV(H2kvzJLrZD8%m{0m83$23TFHE?Q+Q_mskg0@A-ZH`R8Wh
z#EB4q1%hyLrF!-1GIi?IbQOR%Y}jBv{q)o1hQ{MDMgU=@HPN)seH~*{;BZNR1V|tx
z0u+2h!o*4>KmsH{0`W{>)22-}3Gc19-YVI${qxiL<BvZY)!@p41q-Bc<HlBSfRiq4
zm7(QD2<XCv3p*+>ifV_AM!XW(J-2Mx(t-1@o3980ui80>j2BM8^XAPvboSY2hkQ<I
zDnhIM)KgEHVZ(-DJ~q5`YTDzu8B5^6fdhhQYdLb{u+HSL*U#7yv3C+6flvsv&HdF7
z+5&_^DzrK@fewumYmop6kN^q9F@eAS`U`^XaE(~i=kLG&cJmCG+O=!TmMvSPSg~Rb
zavHty#v3wz{CH@59TkR+Ispe2F#i1WPtk<HX4|%HVNpfItW~R4;oP9@hSgXImB0Gx
zD|5#kci5;~&}w6yC3Xpn8#hiKee_Y>KZ1Mpvdb<@m-{GoiE-p4KmwVG03C)h)79i$
zNPq-LfCM5!02<%(&p*FU^XAP>uU@^Z3G}6xUJCPOE9lm!QNw)k#TTN2qO@+^+EJ5a
zgQ!%Am9x$|OQ7`)$8Q(sz{fZ}gkA{dLxv17Ft09Jw5V*{xRF9{Viz+8_W$(LPm++3
zAP+q7fb{FvPt>p6q0k!x7mh<D0TM`40+~nf{phxiztR>UO>Yi1Mgk;20wj<)fesxy
z$crz&DD&sfH-!ona$pjzKE6`7Ze3Zqa;2kwy;hrs@Xon%<x0FEJ#zi^*E>lG%Kj%$
zm@onTL|j`3jj#HH8q5=YB6wGkB1Qa%!|fO$0F5tv&yOBGDqnv2rS$FF*P7tR$nZH#
z5+DH*NHYSNM+i<cBy5NTNPq-LAl?X^IB^2Os?=TADt0~7SB<WLCU@Psb@o8JcI}+I
z?z+orLU-@p?eT|&)_32&eYVbLpM7Q?fBbRj+O?~voy1n4U4<WTa%Iq<LDH#Hr-%x@
z)c7WM6=LhSzs6V1<*D(FtxL$!k^l*$H39s{b0LFFb`Q+oeD1d%TYyY9H~zo!JB#-~
zgzo`pJT+;r88Kpnetj65$_VDp`upoyunl1uk(tYuEo<u4t7qT`tmeT+16vtHd(NLf
zzfrShgOo_{7f$TE2-;y4l09vE_v62=8fQDE#M(-W{i+o-8oAo2Z?Sp(_1DoKOAHfu
z_0?C+x#yk>6Ly39Q%j=vB9D;`?*ZNe@p2FFi;zDCya#v>@E+hjz<WUN0ZmtA)W6oO
zS+m9r9z57UxP?FrL3h%mNhWvh+(v_0Sz#A~qDIa&Pe1*%J}(%7kgL&{&E(0Gkpju?
zOYA{n{rdH`ZGQnb*mj*db!^_?#M(;jenfS~T-CSPG;P|{{QB#!7&}Xh5<oO^ypX}Y
zsgb&qeEFhN<o`Vx@E+hj5LfqrtQ=OmZ(Plo-}L;Y<2?{x_rTs8FH^NzacP`Tw>7VQ
zd|mt0Uhgw!&LEeODOIYJRh_}f*SpPS%a&R7E~H)Thut(JNF?s{u9w(4)Wy#{^Nf|Y
z{iR-YCN@>8R`pQ{LlQrD@L)n>?WJ}<)xJtF6BVj``F*FiGoSIvfcHQW_W<)A>C*=b
z36KB@kU)GB`2F|a1<7;|9XfRIiYu<jw`b2DQAb{>S+k~(({0C&9ibMMZ@>N4{(jzg
z<BbN1fpwpgCr_S4A@1C{)7*ah?XrCN@_;(3dWDMlkP6=U5TQtu0!x7c1w;jEDOs|l
zPyYcYr(g#heUZ#p7vyKM;j0<hDg_{;<P<pi-gD1A^696aLY*%fo}7`bqU73e7$iUf
z(M5ofucGUEa5N-90wh2J5h3u#>1KDkwg8ED0Ilz}*IsJ|3>aVv7A%-wllI!&M(@A>
ze!xi(8X@$aI(5p{(FCgNPo6v}_uhLiG`B&^%$YOcTpJ(&=ggT?Mvoqi@X8MQz3{>d
z9fVuP{<(AKMnnLHT{lBJ2fa)&xs#!tWAd_b&?G<t8AX655;PIvJ-~Z__W<vKc)tf!
zfVGjU7B60`D2zPz*keYu!DhpT4R+h*Gjile8y(6!s@1#izH7~uq2YDw;S+ggG*q;Y
zDYO38+ile_CmNCHyYIg9X~(<Gl&;g!7f3Ttp`$Oqv-NJKc`F(49tiUup!PST-Z-#d
z5+DH*Ab|`c0MlRZf}BD~-m7NK$X~QhO@f_@6)Q@E1`TA+oH;i7)QS}=tf}xFciiEV
zs|Z3Rw6uTx@rS2L<V&hjrHWB=X3svXXjo`@@WBT~qiZFagQk4>@@Z=7Of9d^C9oT>
zI@$GN{Sy};@M!Gpp~g3Mt`$d00wfS!1SkYY*Y)6NNPq-LfCM5;K+TqIU@PQ<@$TxC
zS6*?>Ip-WC_N}VHtmK_{-VvBIw{G1Ue!-?mlP1!>eS3NCx#xU@R1Nnmsy!ABmgT^N
z8ew;9)v6_1w{G=rUJ4g3EFXRJ5rSno8lKnZSR^)>%r_ELGp<c0^UXN+?3n~eAaf94
z(5uXG9XSgUAOR8}fe;BG>T=z>b&UqNlC^8sI?&v@<&#f7F|}*ghHwfktuuA%RHKP`
zMI$4N28MDp_mNvQ;B&{09R}KCZ6n~ACJUB{6DQ8N;DQU<1{{pQ4rqL#rT+QnpY2?*
z&Jw!>pyhq^(MRR7%Ptd5$c#^)moKq9vuGIkl<oyvWCmM+Xkf`PkU;DZpb#88*NP)0
z0TLhq5=aFBXlAoy`N!z#mtTG{>VGTk+O?CHUw+v~pg;gD6^?D>Wi?}VG+MJ!q1mU7
z|1eZjY`S&pCP$7O@i_!-vL+Q46{M3q-{+)MY%r>GD&R%osf_9zg%^cGA^{SJSpqbB
zj@e7cfs+6UkN^oJM*za^v(G+jG?KDW&8_L*zrQtgE?TsxquN+eQ)lbj>)j5t!7BX9
zm@#AQ?xciXq)O6MMh524{zC7SS6*qg#_1*Wdi(fdZW=`z8f)*VaXp3z(62X!E*6KH
zX$Tze_|bQ?1;{j)GwF$}99Fw;wxp}@Xhsr%lNz36;3%dECZ$A)5>|z9?AS5Ud>p1#
zt5%LCr!*Rw#U_eu(V~SED^|>-W<Y2_)PwyV+Ne{fj#RH+-8t*5vwWttWXTfq@y8#_
zx#ym1BfeCwT-nnGDkA*pqD6}Yss-fys9LqE26FMK;?o{CNPq-LAX*3@{PMhc^Q33b
zo;IoOdFP#H!)4+-4Bw$DrJB3%zFRK6^il)cQbfAK_u+v92b^5FawR#9RjXE+4jnp(
zhT`?92Q~8}k350|y8+*~J{8kw1K-V0KKZ0k$7A~){o#inQUXpRwi(fkx7v5ekRb>~
z&SbtBaUs|z36MbMBfz-n(HS>hAIOXftFX5-sz$K+IPhSD>!s0DY~GCf?z_*ZGnr}J
zxUtcQDkfjPd<G9<r~|bJ_N$O<V8^FIuTiyzx%%p>4UVA>7PZy0{b-0&Q@V6%qtRZ>
z`0?Xy8#w;ri!Yk2S+g1ysErD}CVTemcu4ddM;$I?z<YrAKs4S1t5>hK-<2xJ>hOYJ
zqZ21ih$iE;--9)4*0kS&s`^c|KH5Rfqrrm*+wVqwDzJUHpBG<zv01ikS(4``HkOp^
z*B6^eCTw#tA$Jo?Y!gtE1fwsZjlQH#G%r?4?h~F9{QsX^$c6VneBA>f3oWnSu(642
z3&5Ks{caKsC2Ak4-hTUS#r{vf8o|VrELqZSyF#$q@tM7Q_pU=7*y2H0#)9p2>(<#e
z;FN}KEN+6zEnBwOeX7y5brvpM=&6H#RO4aueV`u*(N8?_gmDvHu3Wj&o}*DXJm=_2
z$oCZMk`?a(-UI1%58(R`!YLA^o;r0(=FXjKG?cSZOB$p3jm-M>>vbqbAP7UK)ksxl
z_UzeqUt(k2wr!iKQKN=!*A;x-PqcmT;K78%&P~hx$h$OX&>$<cH*MO~{QB#!7&l9d
z67Wvu`}EUKdwz3uI{bYl1KtC?2Y3&p(LF$rX#_GYf1K3Zt_w838tTy;KYl#m8o7dR
zj~+en6Yn`ba^y(+Fb2UExjGPv6k$%?I!IuN2Q)Z|VIQ2<3KlGA*WEg5Ze=v5hdF%s
zut4C2!`#uMM?Gzzo|-*djk9|WKmWT1WI-0Z2cqX5(D2SB)dALik0Ec7nj;$si7&kH
zg4M2-DN{x-SLow?^UXJHTdtt%enMOK+H0?c)mAwD`q!n#7pOB&p~g4#|3SU#KF=fE
zCJ){Nya&R$2k7ssPcG3`^5@S#zHi^Y<5cjJS6_V<X3K(H8n@hXi;vGw{rdHNhOVZ|
zc6<Bw?V={k0*yewe*Mh<{`Wso-(gXWfKPoDkgX4}_s&Z$xx|5=8VZiXL>gw(-gS2F
zEO2=5$F42FPFu(OIM+#l1V|v-2;|M1ce^I|Ev0T9+tjyL)WrFazWB?Jal$1;UnGV!
zWPK@EQr$(iO`A3?puU=_%3E)}h40^p2SlKcZvg(7-a#MVn7(`*JPD9M3=*Ia9Hkdc
zP4Jw1@4eT|pFdxgE?p`J$^z}Kn(28SuKYud!gLQs{dcX|^9?uLAZ}g{HIEY{tyEJ#
z&y3Zl*9yv>9eyilr)=4>GJN=OzawG;WCiTx4iX>%5{NPa5Pp00>Sc5ML2yLDcc*HA
z1qpeREASh}OGqTq^)3i()u&G%89H>RgYU{n7w=@g2<_adQ>RFG$@U{iKwoepn3YZD
zi@=mj<{LrSY?=f}fCT;}z`RFMcq@GS?YD^936o?;Bb7R;O>i_Kv(2BONhm#<*u{$%
z`;30Uf(3RPnho`H6Mf(lO;qW0@7~?H=9+5)k~>4F)#C!wXtyAGH2jKTI*sGM{q~!v
z0PU!z*|R{K4F6&l5&(fgjW(!6P+S@()NM^7BoGS(G)Ixq??m&^Ll2n>6)GSgAo3rr
zPi*XncYu6J8iX)F0M>wjf{6Qw>>OzU7=k<elA&eRcn_l5Yzn}MU9=e34~=g^LV`T_
z;DfloM1xj36o6yk!f}WsKmwVAKsff&teZae^$28z2+NZuO;Y4W{`lh$`{1K@oPpo3
z>-(#zI}C(Y)KS6IAmS+e+OR!#>{#ogrb6sNY@?nEv)1?54RQs6TGM_QB*uiP^R8XH
zOuc&b41#GvFy6CgkBvatxpQahgN&dthy)FDLHG!xT`pw6dw};qEZhTMeDQ^iq^~L6
z%;S$g9yG3kJCDtqH=C=jy2^fE;(OP7x%JjtZEOU$ZX`eH<EwNtQK647zbo~2=5rGn
z@E*v(dw}pW5Pni$fSQ-mK5VH5*C1F60=JABH42Xao|H!qJn(=`(}6m8Fso9fic!-%
zTL)%+`WD$n0=?*>i_AIaoMRxgUU=b!CQqI`1`(yv*67irZ5ku&Lu#W!g$g0hr9Fn@
znj_PuQbN>c1a`rvI}RM@LI%7Ccn|z{4|JRPQd8F!AojT+kQJiedkel;$M+=yVEs4m
z$j#L|s<Y;NXH;iUkKux-&Ugupz?O{a9J&7+y+!zZLI%7Ccn>6b56H@4wfhFx#_F#;
zOOz1!{`>C@qF1S1G8}n5j=#vefhbp++elRHE2_#Bm0(3x8;(k<KBI?CHKJdsI-@J1
zYe7<mvk~l?^$E|`Rh9EWZ7ZMtGK<>RIdByAE(rgO{2=&LX&Zfd#^PO%>uF2imtTG{
znx_TV#9n_~9~KfIfyfZhd_`TfjC=3B_X0Z5h*>gq>QvEuNfH0<^LF%wlQJEB11?8Q
z?eKQ=)qH_;^o^;j$H9^S31l_`6ntawih2vanu93f4`MNhC{qj>w&@UhQPdV5FE*?Y
zjD1+t(OXT|dHFNN#pWb3l)$oO%Z%oM3kZ>q=zs$U4wL}{2Ka>DkHlcT!#Ou<)JVpS
z8z*Y|6N#?Uqs@Z{9@^^K0;ETOQQZd|eG$D<eUN0xkRgb874iEis)2BDBtQZr5CsGx
zAG0zFCdna?K&%shEu=ay+Qpp<9Kcnp?-7i#t`E(Wid{hbB!LhKj2SZ~Kmb-vugzyv
zqehL0|4(^qd>Ps~#ETZi)x0&n4DB4n7m7n80TPHi0&$`Jg(FC2(vl(hq(;!#cITaU
ziaPX0{GlxF{wtzn!rt27P=^FFcvm}&&uZ1G1(>mi+7|1PK)et*aNxl3N|h@0-o1Ob
zoig$qY4pH||L<fnjc>f%E{V>QTHZv^H0^Tz4%z}F0*AXvfCMs%K&BRg^?}Ab`skxF
zd-iO(;DQSTem5H4IO>E(HFq-_ZZxCr0rnfE1Q2dpLvp8TbVyKIu3R}E!T9paFAwk$
zPgN&8nFKNc0nI6AZn@<adHLm+rCqyr5&xa=*7(xLH}-EJZ;dZ~d}IH5at0(o0-2LQ
zrV)Hko;)cUCfRe9kh7;&ty+>VUp|4Bbm`Ki^2j5Pi0+H{1C3`8A+A)cSkWMfBMS+n
z2LU8H_4gw#Q>IMR{a>U93-&<*-UN`;Tthp1?@IG^Z;daK3b$y{B9?u8)0|H%Hu%jq
z-&mKFp+kp?zHFyoZ!BI!jyb&u47%dhJ+uW#FWT%UNdlR|_qT7~z6Mc{7cE-k;GqK1
zkDqzw8G+_&`SRt~jIDe3?n#2+K@x};0!SvkWy=;(-(mZ}ueq&Y9g(0fjF!X;1J08K
zf)R+c0F3{=C!To1XtH)ekSi4YW@$wJV8h|Q7$H!&aABd3Z;V_l4wD2(Ag&2y3hgh<
z$F8~N8fo9YJp^6R<hAn9Ll4Q$ojYaq>eY^>vY0+)%9J*m$W}IN*dUrf5lL?yJoraL
z(R4=C{zk)vh_W%jXZ_5XGpQaG9_FvS@=Bz=f-kWBOpnwpsUA2RAOR8}0TLhq5+DH*
z$eaY;nl^Gp2HFB-3hl3&5Ifgid#!onjW=wnieklzIhxACv~JxR0iw+Q{rjz^OZ~Z|
zY15{7`z}R`7Bx>j^;EKEpYR{nH@nH!OU>Q+_19lVwEfhKjpt?@fs_Qmf*SzLo4p0z
zvSrIMO;W~PM)phsBtQZrKmsH{0wfR(1Xd2K-8WN6zdLs9FaWAit!$nOM7wI<yt$)!
zV$6~yO9bj+l?EI*KB6pGu)u8JzTK_|`vd3U$&)9`{Q2`mRmZ`qa32X|I04xBYsgw3
zNw-3U3Qo3cnd09%!})RmBtQZrKmsH{0wh2JnTJ43+ddyXder7Kg3}_(zJ2@FX*k=e
zH{5Uo1YnOU6`^x;<j7&`sBN@q*s!4$Xf?d2r_SGh|7`{0*Is+g3cT5~XO|T#R#<`A
zo|vA0#x@$)FavD?(sQcpD>MS$DquLXmoH!5W5)~?uiDQ$?mZq_i>yTgBtQZrKmsH{
z0wh2J@kt;i)kNyh+ofmEp5vxZpDqZcnUIhmx?aCPfdbW3TWcCLXdt?nPMtbAzyA8G
zsZpbbsBN@l&6*YU1W~YD0eIWCZD!J>NdmiRH^&Tw3>Bg?MgWe_`;fB^LZDEgLNapX
zNUPngQl*OHzU&E7mAgoQ1W14cNPq-LfCNZ@1d<>SbJ|~o$E;nuwmE(Jw9R95?AS4x
zGiQ#B9XnQv7cXwLxqbTdG1x{3M&xrDGiHn#KYqNNfByM4B9;op&a7Fp%*2Tkt%es7
zhP=!3&p$5@KKP(VGwgkg>m-oQ1kC3jKSo=CbcW9ENPq-LfCNZ@1W14cGB1Ic6M{9g
zv#DFRu4qK6Lj?;K%pdI1KqHJuSceZEmg?23LlBlhg9bSo`q{w5dFs@uf@8r7G{Y)1
zQvePIhx<r?1W14cNPq-LfCNZ@1V|tT31o@2F{_!fO;Q?6=$$cRhFP_0l|e9|Y15`j
z-n@AsAPcm+n(xJ^=_rKSM1@}DLwfPW7b*0{+D*anl0du===|BrGPDJVm#fWrk^l*i
z011!)2}FoM)C<9f4joGP?6c3T$uk&~D_716vFp~Y^R-*nV*>^Z5STin{PN2$qWNA#
zg<=^pWQeR^zuxXo><<KF6`URT2eXg>36KB@kN^pg011!)36KB@WF7)hYxWGE-p-vn
z8}-o@`1zi5&N<SpTQ?aoVuYin%mx8~mMvT6BdBWdD+6sW%$~Pw*%I<q(&WGL`RAWY
zks?J>r1^zEG7AZi011Rk0594!8*{j)u|5faK-168$wgZL-U}o^0wh2JB#;6E85;Td
z<jIrLyLWGcJiWz=74vx#Y}>Z2`Qe8jWaiA7qA87J)TmK{z*PFcXw*#EMti>FjyudN
zue@R-;;vk|(kxxNG;9R9bLW;1KKLNT0x&wf<dRE_8#OxY0q_J8Ac43g@X05iAWnhL
zcVFDX;KWIQ1W14cNPq-LAd&=D4y)ZaL#1D+K9FGd?6c2?YS%N@AAkJOeE8vqNX9FT
z8#lI3hK(9EGH<^5rW`qPL~7Nl<-pmuef#!E)N7!^{pOo*q+PpqGJE!HL9*XaO15m-
zMB9OMovNo#I2gBS(?+ho`sz@+WgQYAfjB3C@2LL$`^Py2PM-uwAT0<~Tea^~+5)5n
zNwz@(BoI#oGE@l8nKP#>S+eAiChg4+buffsl$|?w+E0XSh7B}w8X-CFgb5R*VZ(;b
z%P+rdG)%LzW5<pzZ@>NaIM_^2o;+D9SFY@g9zEJ<VqklIa(|E~3GF3UFO=h|29~N-
ztA<jQbx42&;+z1!?^sBH1W14cNPq-LfCSQyK!!)YLKtU_Qe{e%C}EJ(2vfiG(o3yV
z9HLm&s8Pdw@x>SN)mL9h>(;Fu%~@m~dE^mGD1ZL^<9qbz;izEjK<LFzXo3;`Il0oS
zS1;+(rAwL!y~*{(<0L==BtQZrKmsH{0wfSw0#g>19!gt)$TDW@nT0@x3&8*h=U;V#
zliO~)O%5JB*riaRLe8zX-YU;N`>Y_*uR8ZSs$I1L>+$2qC08zu{NYzloH&6fS*B&n
zmNp8O-(jCkm@5w-KAZxu4;5~Z011!)36KB@kN^pg011#l<|Ght!50FlMyyizSl={7
zs?jyj<huEb)TFt7mMmH1o_p>Y2h_uc4U@u!3tO%4zJ2@b$;f~7_~VaD*REZCuEv*N
zerc|}@=EjStFQX(54NG&WKkbtbvvfq8;lS4kpKyh011!)36KB@kN^q9Hh~MitTBeR
z0Eu72hzr4+H*Yp-q6|&06=ad0s6~qw2En2_cI+ruU3Hb+RzKh+Z@u-Fy#N0Dq9L6P
zw7u#VEI<GJGeR@V`RAW+YS*r9gIqoF#1mG6J#*%aZTFgMt`UTa_AY8#Ee#qp@ZKdQ
zOO}+mbLXyy&oK)LkN^pg011!)36KB@kN^pgKztC0c+e~O<f@6W(fmeo{q@%yM04J>
zX_M9JYEUa@`t<4Mfd?KCHCM(lXW+nr=HZ7Qmg}y&&Qz>e(Lr5}0&UbBS|H%6U$7N=
zH87UB{r1~s`SRrfSE@;qCi430uOHHc!TGCHsbaQn-75L=<+G8bHNaN2fD`<7XnnJB
z<3_)|iEsY##~*?|KK)dKFS3vT3B)ad3of`o%9Se@xAW)3Nq_`MfCNZ@1V|uS2{``d
z$dMQ*`e@p;sZs4OG`BK%@L*Bl)MIz7!mCM0NPw^kpI=9Pe666ncI{fnjR5UEE=>Y#
zG+>n+I&{c;w?LEo%rno({rBJRX?x9@HRgsJZm>dcojP?q`(<zcS}%uS3jj?u0%RdQ
zQYgjcNwexuXt53nWKIHq|NS>!-pSCRLzA5#B0uA09h3hii;5LUfCNY&Bm%H5)bCUS
z<;WFRTwybN<j$Sjp8MT*-<e&zc0rlqXqrr`=ukzAv~Ang$(}vCr+qxnsTHD8*E-3O
zBZufSq*Sk7-SH2ss@91J+A8Osd#<%Kbc3*>A+({EhDM)fMT5JFrtg%CFTVJ{XHidY
zTp<AxNN)n^A_QYnd-v`=s9!|+_Uzds>ccBFYu5Dn5>OLpgXqrRe*3M1NYMDwy5*Kz
zU;^!_htx(7KKP({?X}keIBD))(ey`Bp+W^ueYX<w2<w+mz<&3*|0e`r_z?%|$G<MO
zNq_`M00a=E58qJ~e0e{R011#l`Vzo%Bi!l!`s*(Us<L6j1_V)+)vH%S2zH)+`e`#`
z#tf@0IdbHPb*F>Ho>~aXqD6}w2(Yfg1}=AKD{I!QqKXtNL~A>qm@)U=cb}OwX_6I+
zw{PDrKmGKRXev(W+_|%ZobJt=H#Z-B^pVu6RZ9^6=IgJ&mJdGoKpHo09P)E$`qE=>
zBoIdgRt~G(H{wpe`}gmk4yMR&q!FiVJ|j5x`WH>SYi*+O&7rxAoQV@B3M5dxo<m(k
z%7PuUzeEaEt4hQ;?gW#3ac(%0FY2?z6M_1JtDhf&EkHaW;ao|81W14cNFYWDOrAVh
zkRC*X!PHl&(^2z7Cr_R{g1|Cvfwo2c@2tjU@#4h}Bw^&(95ZH&eda_&RrR|=q*SPq
zofRuqIA|Br@V0H+Y#lw%sD=hAUQub+*|KGe)1gBLdFY{s<n-y&wk@cjp+eU79sP7v
zau%dC`SsUdZ5!@*_(=jJkp2WBDg^77j458cc$?2Z|J?qw*RNmSdGygo<)xQi!YeVK
zF91~$3v5(ed*fEES~;5R*Q!-C6tuysG&tFM7lemixNsrDOFOVpVIct$AOR8}0TLhq
z5{NGXYFjMuDbbW7i!pNz03&L0=%{a;kJ?pJj96t1>Qt>-)j{;tci(*%o7RMI$BrG=
z9@_5EKkl<7%zIEYZ3&b*)~?#_&_6?l46&v^=pRC}Mt6m3+0!o+HNXG<yQt9Yp2ANO
zAb|`b5K+Mw|M(j1O4_$?Z~y5r$ETip%7LQ=!ZFX8Gsi&Nt8dke?w336xWn3-pdP|G
z<BLLVp{0NS{??ua``x0pCGx-j{cnc0<N0!NkMWZPNPq-VLg1|ZU)@bxfRvEqIV3;=
zBoG}0+O%n71zJ33YWfg!*IjqPiPuNjk}Fp(>j3OMV$_E%GYSIAK!e+_Uq7P(8jPk4
zG3p@fU0qb$Ywe%CcOqTMBab{{warl0z}HV5f{nY}eDlqM9G|;)@Af{8>m)z|89*Sk
z&`x0t43P)CBLuwh#v3!#Ik$}_>^1Ma^Nx)kpr6+10@_^_b`8F4?!NnOdG5LAJOV8e
z120>)EI|0h8@-VuN6NkT-s`Cw#_(8`1W14cNPq-LfCNY&6A^$=s{*H^j=u(0f%E6j
zhjv$BJ=nKzU;DfWp%&>nyq{6wpzB&4s^-{6O+^5jcJ129ph1JIRU#BOZh=!U+6h+R
zl856egxko5{&h-~D&@b6+ay2&=}aI^wZCJ>jx`z{&mi)ETQm<y+bL6~h~_s!cxU_e
zP5=2FL<xX7$@kxXFTefvn=^X!Xa`>y(D-UTBh#r<rvRb%$}6w5J`@ysUAp`v0TLhq
z5{L|eW^*6;iM9ZdVarxYAaVqdPjl9+S<tvTefsoq;Jb_bn&ZZe^K=R&4J;2mJ9GuY
zvgX#byP%-Sn>R0VYdYP#cXtpf+D-4_o>R7LS(|$k;r`vC!nf5Ft7h1sEgXZ(pSx75
zR7sXDT`Iv+o49T8lLSa0eF&t9_7~>LFzG-ZBP99NH)clPxOud*_3G8bmx$5aL<on6
zF9rk&a4x#&BBNg-o_ecRtuhE6py8T*W{<Yjq{Ny}d%v~wsg%S9zJw62FNrEXhY+f7
z-@biT%j|Q28zeviaYsNcS8Q&JxSKd9Oadf80x?1W3Y38Z2Z~x7n$o39JNgW_4#BFB
zklni=Po_SHc2NO$yoPW#P{gQ}qOAh$?BT<Q5jOfDg0|wB6m6oYvc`U@5=IdES!2!^
zm^!O}u|Zx>D1V^f!Lx3+Zr!AI?b=4ooiUDs@Haks^r#FUKHT%XYa8Pq5+H$eCy-*n
z7s9TZ9~+n;;~yGM{qXBmEv~^oxeCEBAMyN?>l--HW7d>JgJ1~~tZ9;8dmMu4lTSWr
zo_OL3`=-pB0s<Kzh=5zy`&g*!80+});{~QGc$=48ffgEd{gVqPcOH+E010Fs0x*X|
zbWpWMq2QZ&E-Pn30x2Re?bXr4X$z1dbm@MQMpkx4j2L0HuPVSAC^BHmjOReN;MuZR
zv0?~dHBQ~>#^E_ug;voVoc6gC${AQRs)8n8p+bcWo(DB|l4#;!1jQ0f=4+}|tLA7B
zR|vqO&#wm2rXgq}zY-KSYQ^Y$^UXH~X3*!Icb-8X+LkO>u)rM#KS_WDGLS%ug<u2}
zm^W{p^z7MFG{q7A!ENHSJMX;H(L`!ii>m>uro#jp^HZ(udJP~@718sMEnEW%*e@C+
z=DqE<+iZe1e-7{sR+E*k`Sa)h@0-iNQW)EJXn-yFg0PSP36MZ?1P}-XF$q{mfCNZ@
z1frV&e1BDw>mbtzgx(r8YRH8bUg%N8VDwPFXbL0;L9GzHN;Soz&!wI^NRhO0<3>jV
zuNqBHBpMakK7VQ?X9Um^6^L!!9zA+EDhMA`U*UXk<<n%t4l<XZK=>UsYLufXkPKd;
zV!tL5b`ZCQg#<_-;|Zil@WmGk@}GVD@yBxAb=P^mG~DTEzFr48di5<@o0&6b3cipu
zBz#r)?y4r&aeW@tC)nU^8{UX{7i1rQ@x>QKh3kN}z3XwE1W14cNPq-LfCNZ@1Q5LH
z+H0>(_PMb_g$j-?i2_sWKbxV%t)N<B2b$vlO35WhYX4^o0266d=KOcqZ>?z2qK+<p
zd$}2D0`LKU`|Y>!;sGxw1loEi=~zg>Lty2w+I>?b3IFudPqq>KXCn-rhT1cTbhUo{
zdMoupO2*xHz2-mCZyOul8OeRsnZkPhtAj;Jb&%LLZQ3-?VB8hlt;kXi2M%{1KS_WD
zNPq-LfCNZ@1W14cNFXr+uvecucdlJfM?-QW(2$jcAzxron|KH204(uIAVq?2qehKN
z6)93=8|+5Z+utVeZQQuAAiN#~Uc`&vym_;uHY7G8093w@J@y#F>N%=5hH6-T{`qGg
z;;<Kilkm`?Lmf8;y-x*hkN^pg011!)36KB@kU*FOpoj@208E(8vU-#gK*;V*n>N`6
z!Gus$=tXF7A7L2s3G!BjS>7G?>7xH^0m3|))ia(ziiBYOBH6A2ZYhl@unjTZYu2oJ
z2zDTtjwbRo>KtKbhERB##MiDPG~R##0}P@FAS#u2fqe<;1+%I4uE%u}AOR8}0TLhq
z5+H&2B>=$&N|ta4z!6uUF$K=O;he|1u|)um+sPGJt$y*v7j|*$B1)M$eESH-g$oxB
zTPk+j<7e~|NRi-+=|K4H)vK3HhK3|+C`XPQkr!TgL7F#jZnxb(TeogC?c29UxIA~4
z=M$P@I1JM$--CoJBtQZrKmsH{0wh2JK?vZP6G?PgNFc2UKz`AvymoQh)DYpuHI>FE
z9EjZrXKo#S#vXwb3%>4DRiHIL{P2U+sZ+<sdM{9*fV}d`E9<wdeWsniEdY|M!896S
zpS=sh?2Q>S#uIPe`&cOJ{rmSfZo;<Y>f=ozk_Ky@C82qBa<q7y1Tr^)X3d)6dna>G
zlCvWL5+DH*AOR9cF@c>scM6tSvu4>g)K$}zD_72Hh&9KnXl^S<EnZXHK2OXT0;v{)
zAAa~@>D{}xtXQ!^x_0d<$O4Y|?wT~bi<WWkz4u<g%n*+rfvrlED3M~50ywtghHKff
zWkCDfK>{Q|0>KDqI7mT)Mivqv0TLhq5+DH*NR9w<TOoNg%%ZWV7Ff!cFYh2`5lie5
zNVVXrH-WQk*)pG*>$bW5_S?nZ?mlbQtnm4jfddCRSWj)yWNvcfjW?#Y8J-_;0^_dy
znQ;LkPMIBqM_}pFrQw~x+9W^%BtQaDMF7GF6(CV{Nup*jKmPcmY}l|N#p8j6DDq=@
z3%qJ>@4$kTC36r+wGbQ(!|d6!0|a2z^jeLtYJO9!@eS4&_mKbzkN^pg011!)3B(5h
z2q$Wa%4f;=xZGjQa@@Fa=H7en4e1<2dPX`VXmedbS0h3@$X3IWc?m>B@O}2#XPxEC
zmm7`7XUW00ZtU2xbQaIN_Yr4C0wEJ<-aSEmA&N`mgu1OmK8Y1cfCNZ@1W14cNFWUe
zKpE$nFypgo)vA<H(tvBsHL-G7?Y<F_gyEQrB)|<CG_c{IHN-Pt)y3TH!2y#136KB@
zkN^pg011#lY!N6@q==8Ct7_g6=bwLmpV*oOM;i$O5fOYb(918s-1+IJpKNrhNDQ29
zk^l*i013n}fmH*qy@|E}F?<0zbP^x|5{O;`Nbi7!iF>2>8fEmzA|?c5V&TLCKXvMq
zY~H*%<ZR>z4jiyyT(@uEp3w~1KM9aP1`>c14{VxPNPq-LfCNZ@1mc$f1>X3*_My%^
z%>-X{`ZfFa@AvdOV#J8BOr3Y^*kM#->^VQwmAmi0JJhPIM*<{}2?-#SJhIiZkN^q9
zEP-#Y`}j@T0>td)<G@LP1V|wE2&9=1JbwIm*}8SBhky#fp7n56R;^kk#flXR=M>f@
z0TPH)0*e+c5=}B5r?cm@Nq_`MfCNZ@1W14cLM4!-;Ct-YF$AtMpM3I3nk4HDWl)6*
z6_SfCx+s*YtV04M5a$Fmh((+e;Pgp=1V|v05%_g#ixad3$Yd9l(;<QABarQvUw$zo
zM~;+z`}PHl?)2%?vU>Gu>CmBrL6-4{9(o8#vcfWL4rr7+NPq-LfCNZ@1W14cNFW6S
z)~s1$cJADnf-`vv36MZM6R1?Fl4OI>`_4P>NUd761i@px%b$P#X*d7);}3!0d*;j;
z@55Xt0TLhq5+DH*AOR9cV**f0%$++|zWnk_*|lqzU5*|-Di>aOp&*^hC6`<x4I4I;
zx^?S1*|TR)<KCmYx#ymHPG--ZEje=Ji0*-MbZJ4L&~<-ip)EjKkYpPk0w+(Nl;OjN
zOEzeIyLIa(Lxv3Tm4LPC;lqbZ=F69F+l(1AoNU>Ww3hZX%oP$K0TLhq5+DH*Ac61*
z{Povg^4e>!nF$jn$olo`rFik;Qm0NGSlwCIuw1!v$=<zt<+tB{ldrz|N?v~XWe9@i
zrkie({{8z)`SRrhp5wwBLHgJJ@y8#{o;`bP$Ho|`P@#fz-g)OGJCIJDI)PQP^;m%f
zNPq-Dz!PM7<*?d)vrU>bNj1O0zcBOW&AVM+Ia2cFjY9$?KmsH{0wh2J5h5^W&K%RH
zPalCK*rP`e(PuL}tp$HL`*#e-j~_?qdoya(D1lAiU3cAOh7KK?p~+4m!7p99)co+n
z57un3bm`JkuU<Xp?6c1fO759wo{?8yebsXe^Fe*j4z7>@36OvixU2Nqr_$OMAj`sq
z3ys><nEd(k2VFE2v%#0zlqpk8o;-QX;>C+YPSDG%Mgk;20wh2JBtQZr5S#!4t!OSs
zbIUEaNQ)LNWc&8*U7vjNNhdi07_C7i+`M^nXXVP3&a!38WW$CHa>W%_$j2XloFUI?
zs+KmY!ZnQ=HIhdkeN_7P?JH1Emnv1teDJ{sLC55;gn=5Eg#<`|1R_Ns8+5^V`<7He
za?Pu+zFP2xQEh9Is>)*|KmsH{0wh2JBtQbm5K!N<bvNI9bJZO?c8I3gkm}W|r&#M*
zyLN5ov(G-0e*OBH`t|F}m@#8a=gyr|++H$64>*iKF|As)f{-iEKmR;zwyovh=bwLW
zRB<Bh+O>mVZd4nbZet1<BzKSi3B)~tY$ZyRaPGP1o@7B>dg-N(F3Hwog$y82?A*;c
z)7lmw1E#?)Nq_`MfCNY&-UysHaRO1SszPI{f?}!!V3*xlXPqU_KKrbr=Env}(R1d^
zX*zc7m@Y!6M(eU6nZN$}Yey{w-62_F7*5RU&}`<-n`hIAcn)%f1W14c(wTt9RAV6l
z5+DH*AOR8}0TM_r0(ahdr&{<LYZj~;VA-~9TbkJWKK9sSX8H2vqMxGLU*xV#lXjEi
zf+(u+?@cTuGlb#&`}YSlL$l`qB-}v)BoILY+2+rmZxHf1siOWT41ARoARZ%u=pnGI
z+|z2!QCu1))NLI-qvA+NfCNZ@1Of=W@WKn`!w)~S`HeJ}k<+G48*}~j*NY0TsWK7n
z)vK35Fe$Ws?X}lB>Q`)Fmb_`xCJ7~^a=<{t*ipH1Wr0RpUFD1l;6Bff3l=OepMLr&
zHNRo-WK|L%fyfZZQl?B9>DjYqz@k1Va^S!Lx&QwA1-`#5BtQZrKmsH{0wh2JDJO8~
z(4hoGXMX9Wmjr&WFjYow$*NVW3WVRSTeqf2Tid&LZ-YEYDr8!r7bAoTG_<ao<T6EV
zhBHeD@Ph^og72}^tXb33AAFFTHf<_c5TMJyO=^GriEx_)NFb5~vcabpQTc+E_uhNY
zAc<UJ$Ag{2eI!5vBtQaDLg1#Z|5Mu@+5$w$<=`+#z?;CZVZ#;|DN;mkzx{TPK<Em>
z-dbQ)P<W1epC4>pBP^S-W5-$n_`2(^^PGovpMLsj>CmBrbno8XTzv7xo@2q<N$oxr
zf}Mnf1haPST2E6@sAy^@x$(vuRo;zg_ntnvLINZ}0*Mhw()U;2);Vha43inpo4mvt
z;(ih!0TLhq5+DH*Ac5cnjvYIOh|Ds0@L<W3#rN^c6@IH#t7f&pn>TL`>A4G$o=1-!
zE$YrDi2m%~vzk3S$k>58=}}bk>!|Q8@4ox4nLK&2K}x5_jT<|(B1{kZ?1KbIAXx${
zht=+z<?p}$mXjw>1}wk*_M3sd%%6Y$X`>k=+Zrp7011!)36KB@L?MA;5A3~zwgAy|
zVHPf2XwEt39MPy(0TL_5=}N;_U3Hbzty@=;lZMq?&%F5Ji=v5jZJ6c6=Gwk}dzn3Z
zc4CLqY(K(IUvteh1~%Qud8CoP1X8h@9U9C%SV#V9VJ80#Mv41KfCSQtK$cmvX5ouC
zV7c(Z3k6OpZQHh$;>C*x{gO_rL9iVXAOR8}0TLhq63EO1U<2H!QKKY-s(1^(a0rGl
z8H~w*0RxOi(6U0W)=Tmk4dJD?Y}q2;efM3^wt}@E?mj3?&<~OTPna-4e*E!AgnRBf
zefo5%RH>4EmehR_>p$G_vOWorKztI&reOgEN!Yv#-ngw<vqmOOnk1Sm&ifG8Nq_`M
zfCNZ@1W14c!X&V4*)kb1VnniMxxz1;fT8)-^GvyN<vhaez<~pehE}#huO9d8Ppn}m
zFUpoJYx5ypcG+bzx?$z|k+cQSq`&6-@4uIwJ9kRq!i7EK)A@{V*|MeR7;N%iL|tVe
z0TLjAj3ST?Ur-v6AfW%7Zn{b8)vISTT%RDRTVe^_0#4)(5+DH*AOR8}0TLhq4}rh_
z`b+lg*#i?`&%UHq`~_j;M1ml!&ckNp$dOh6zTt)&JOXA?ZQ+=PXSPCVa`jSr90G5?
zeEEEYUbn4m*|Ld_J!t<ldv+=DlLSa0JqY-QUhwNteNG&hutd^S#;;3mk^l*i011!)
z36MahBA`OA8rB(sOIfJJ6@IV2`fBU{i?Gd_%g9>ng(LK$zl$!qNOtYo6>8UE*Q;2u
zqRo{F0p0)P-Me?2RjXDB>aau`f&Wc@?_eZt0itcb91jWnM<Cnb!-q?%KgPEIcKx&V
z`|rQY#EBDa5C%1!3Hc49e>>bJ0TLhq5+DH*Ac1%$uy^lXJN*I$3WW7M1wmN-XPwJ0
zzuYGG#dDcj=7rS;I)?E5)mL9d>=Gc6@ol%=W?)TNzkYqwuwg?%fG?PRfArBuQm9ZN
zY2CVYz__XXjo2k&!z4fgK?r19ym;|81hxuRF1X+VK^Aj-d9jcH36KB@kN^pg011Ro
zAaCBh_9Rs*AjoKd0GL#Znk3ll*s(*P1x7GZ_4hR;OO_0)jUz{nh&zU)`by0)4R&RH
zj9-5FWtls7u5IeP^UkvYuZ9d6!e`0Uz~#9lkPZY|EPPO{f{RPzgu1QMp}P$4A{&yj
zB^Fj6K@;%ik%a_EfCNZ@1W14cqLIMZv14tj#s?pKFf73^J?B!SND++9Xllu@%%D|x
zGzgmY{`>DEeUPK^SPUXUuUN4nEI}B4$NEec(J7yO_SvGrxg1^O=+UF1{>};N54<Fz
zow9KfAOR8xgFu#Z&plVllqust$USl5gnaw$xAN<+zly%GJ4B&343ex$0wh2JBtQZr
zknRNFSNh2(pQL-g;dGcYXHFXwYTLE|FSA6OafM!JQq`2$K^wa6AbK-|-|gGC2l&}0
z))=(MDtsq)IL-Ix&Yc_cO;+fo*>jqsXM-d_0!a~AIjnZyY^bnc!2;8xM-Q8z%{?J&
z)~xyNy6Y~))^{Kw$8&jnT7i4w$rd1<uQlgR0wh2J(MaI<@#8Xc=1jA3<3<}cxJ8Q=
zGt@uH<G6$<l{o&*H{Vz(r)krs0!K`DF6!`UjvYHD8pPw!j2ScXAqrB11`VW6ojQ)5
zWAo5JZKsZzQnYAMdmf@*qTV&vT;t51J=^w;=tb%;<z&yE-EG<?c@3rSDpjgDn)KFe
z+O!Fdt5UmmZAYIqJnbMdluCDI?b@|cqC^Rs9QWdjFZRp<$0}E@EJ!Yke2u41pO#jw
zTG==FXk^i%MdqiUezM2ke*0~MaU$IC!Gj08eE8vq<B;?gbH;qKWJxmcr)Nx&TG27c
zk|j&*_>=3ym4cBlSjX?-0clwGIhso-WL5Bi0|$n~`FHf_(aCk2s^i6q6-!bwNB^qA
z_RJ+!o$+K6AOR9c0fB7zk;9LkCS}79h&=VwQ&9ifP=U`s|GcPL*i4-|m0wgTfXh=z
zfCNZ@1V|ty1Q0S80^9!m`{l|juat4)#>wN4Ki)>82$}Nb%R8EnaGk0Jt3tJR?X}lh
zp|D@Segfgo6)yC*TR!{jGYEnCR3MhETer&a;lt&D2Ocn!CQY&-g+KrNbLrc+FLLsf
zR0q-RP&cZOEGl3bIE_MW_~MH%iaK=~eMYb^#Y62|pD!RFn>=~);90`<eeb>ZnlWR>
z*k_7Ur%pi-GKh>+t5z*hK~=hT?TVZ}27X!KcK`kN%dNNGDk_9a_3G7S-MV$sr%xYi
z`wIbn{`~n+h02*TXXN$QUl$~ooi=Tnx#NyIY_1)IJx0i6B%D=MafbSH>5B__=9y=b
zy&WL*;yOX-)d*4n&tKsRzsj|@M%;n}aX?$i4knBW!IJsHq)@L1UU&#zV6cz?36MZW
z63F(}TW?8)3KisyH{MVa6bB)m4Za{Bd+aesLj;=JZ@*piN6P*nX5>KGHwi=sf#LOj
zEJ|B|=(rXf1qs9l0ZsBM(A=u#w`>0V`Nv~j1zGdtlTQkM!}YW3&p-bxUw{3zsMgJa
z5ZJC=JJYROH>>T0Ru^T>nl(02tZIfGB%swWyaqz;_uqdHjk2RjTaBI%A#>ZEciw4*
zBxnlp9N<19tY5$0AOe#<7Z?>lolyH;xNxDUbFSQX-+i`SB(7EKGAjrox+dDwoH_F4
zmtP9B#2Bv%y#_+B&fBN}YxlkI!V6Z=b+;kVBGQry!4S|LeNkYb34ias_iTL#z0I06
zlUcK7*=-2bH{X0S`oTQxKJ=B|1!K~e0D?S08p$f?I9vf3LVu%1je^#}xO3#lfotZd
zCOla!Fz%O|Zn{Y#t^I!V(MN-h7m>S4l`3WMLI+8Ry$kK2y=icr1V|v#1hT*x1#g!9
zzkJZKexcegF@3Wdy2nbSN6hv~fCNZ@1V|tg6M!i&gcX=EL+Hg+;fnO;n{SG0MeWQr
z7mg$(Bv_#rJ0R3RSXHgDeER999`jQ*A(kdhn%LiRm;*zD3g=M>y*Ljh#u@;`o`-F>
z+;h)8p67z9RjWEzU3Hbb`|i8;aHxI5yjg|uu5O#Et+v8ELLg%w<^zqWEA(QYMz0d&
zUDVVR*t7-Xb%kE+Ks!k#vc;T#`Q;Z;&A9DHbMZK;X?8MF=*75IvEV=ehm~Eh;tIVg
zu;V)0>l3V=yAQ%Ig!@XBD%ooq%pq7`d_Ze2aC6J30_{JvztGgPkN^pgKt>YC0{<Ef
z9VmbQ{dd4PR<2xW&6V^^HQ6uVfRnj{1W14cGC6@9)t75zm-xvMkjXD+R8CI?JOh(q
z2!GxMKA;^sbg&UC5zZGvuy=t;Fa%GS1iJ+$%-%1#aU5pB-o@J&7yEPN%4L0Jz3adn
z8|`9Tq4o{o%oXC%mbdm1f<8>LVWO?3vGDJ;3xq_}gD~$FXnDPhcRSwu-F29B!!%s;
z1c?goMzxR7JWh9yXXK~mGm?)#{#fv=<vk7vz)wH@G&I<rmloc~6I*u$VNDJkR1iie
z=JxH|%N18#5%FiblP6D#{{pK8wE{5kd3G%lyyxP5Z(=|03l<U}0TPH5fo$-zQPU%-
zS+l0mH*+)45zL|BpQAoR_H8o5Kt~Ec+a&=KAOR8}0bc^HAPV2uU<JR)r~}_z@1jD-
zL6|?M_BR`WrC>(v-3|m^Xph6`+dD{>_c*Z*fd_Ly+!57I`yYmxtY=?R?RYAAt*9@w
z1MTn9rAv)2^4e>!!PL6V>eZ`_3WyOG0KJA1u!?jW`rKvR%QkG-VDkcb3%xK;4>&2A
z9j@@JFAaQ5pkI0A6@#$Yc&1B_qNePLO06(=zU7u%(qkCxg9J!`1QI2XMa`WYL_@@z
zS@rvAgPJh6La>b9y?Y}%VAx;6iT1_=BtQZrKmsI?DGB5oRbLI1)7lmQrm`>_g~rUg
z^zYx_Xh0+bK@>uT|8X@N&Ij$8nm2o&7WO)#EUSf>k3a+SRkWLyeWN{Cp&`GIyWqJ5
zf@?5MVJH)Uf3s>>4a|XI`aN>wNJrNljhHP{rc4Q?iHO(H;8u=m#YHo1EOrH8jiN0u
z)lO;Wcu@e~X9Sso)qt*>haY}eCQO(hc;-uKyWyON$lU&m3gWONuqM#(Q4gm*)+GTF
zAc3?dkOd9mM|R@GiTJ{F5S#$%0}dZP?C6iIzM$pzR9Zu4dn7;tBtQZrkQ4y~uX_Le
z_idmi)PoP_OE0~I2*&m_4I~BAS)1|)JNE9~dl12))VvkeT&e!yMucLd4T3gVpAXEx
zR$*z{clYkyW&HT@Hf<9GcFX}j$Eu~3!i5WmH3w*?QJ|p)7nu9P1Q$i4MH`rEL->t`
z0<&^lTg+3Vc?*20H7HeB^9?o+2)`;oJDTFkrm;dKW|+wbs~d@Z5ZwJ2wIp=(dN_EQ
zf%H}W{rW#+((Kuv5VuKy1k#d#&HL-!V7Nav-sf_i1W14cNPq-LAoT<W3>e^S-n`jp
zz$wX>FP}Md=#Wiqq=J$aWHgA8gNVqg0haU6Ki?i#lUnO9nw&pua-&1gC`5oRSg_zY
zHDw)l^ypE6klL|h$29G`Q>RWg=P*p4HPxa)KN^i%7A#nh+z@?^BXB3I)er?*g<R*6
zM;@`Mk2Hmo$(=j5^-)H&V-*C`O$cm$+1g7&wFN+)Wu3E8q0znw(DYB!y>mMIOg4-S
z4Txos(yB|BE~37~={EPIh6v%jTD5963c04cN~$W4kpKyhKx7H599Fw;fFvB*F4;N>
zkN^pg011#las&|W8KHeQZQ5jzL>H1N!Z5okGdO)}0$-SFnQy=S)+XsibR%zPS=jyh
z_oF$00`{pdl+Ql2q5e>gCKERBlR{J_jUwf#lhVGSn)X)lL1NcDNX|nKJ!Ft;2~sOU
zG$SXHTQs+mr(bv9^Upu;sEw^r^|3)XYrGXu`&ye<2V+BoFg0acr+JP540g8;66Qu*
zQ3>8zyLPQX2yDG}Z8X6%q~U=1hBEHoe*4Wp?Tw_)$SswgQolPsy@mlQUf8y4IC4b4
z!kZMgDnChp1V|u52vG3N5bW%f1W14cNPq;ACs3|jIY*a7D{6!&$2&??q7_qcphATT
zjxLFwnO1#61*%J;{RBGzVG8!yD2TWOH86x=jo4*{VNGq}Ks_Gq1^Jv10vchdp$e~9
zv7%A+zjXk1BcLTU2YoSM;8+X0c-$vQpnTnR*QH2!PO6_!j^P>vD{vIo<i$ZlS-UTC
z-1EF&jJW$^`ZNEZ1*(K<3lP&2<={ym_6Sf2j=gKf5t9H3kN^pg015m{0M5S<im|vw
z?TD=~48a(S=0BQ|7PiH1`)T=!C|`(%rCMw=XwV=VCRz6x<h80-ubz!^2K#V04#Sc8
z*I$1XwF<CNrZj}KjYtMZYRzxtu?|Sf@rBx!+U*Ces@&_VEx&IVx1cq-lLSbB1R_g-
zf^TH`vUL(50TLhq5{MZB2p6o5voSN?#0IJfeyt<1mosr2HQn|RhGBM`($Lb0^_!ag
z>UizIY#EwdB+1oCQFdJuKznjrL6fS{O06)A<j4qPts3JD(e|oSdV)qrTkOs`F~@V%
z(FM-k4$S$zOQzTUdQX<?@lK$9v$g8<p4K@6;+<+L=1(Cw74Uc}36KB@kN^pUOF(^f
z%?&r)5bkN|T7U51!2y1p={kU9Iy-jkSTZ#N4{QD-!7^>yG<#4(MH>|$t#;Ve5^E$a
zClu4;z}C}l4+O>5ty?>~cp8O<`}pzW>r|6k&0lczR7&TSS6_W~vHFLH+^hPN8)&FQ
zK7kcUfCNY&jR{cjO=F;Jjs!@61k#hh`t|FL2FsC@2m&b`C$u~;!_>s84uTA^ghv2L
zY4`2h7v4#%o#q5^9bh($1!lu2YFcbVZo7goJ~g>=h6`&51g1;1G>4Fi2JgJ{P6Qb9
zv;a-?>#x5q2<xl~oDtGnGzqoM@r3Z(s;$m&j-J7Cg#<_-E(t`9;QQy`JjG}W5SRBL
zCrtt*kVXV%&z>z4CQL}9)<SOvg0MaWLwm*t+t9JGW|R{+b?TJ-{`>E8`0!yt-l+oz
z4hV8WWwb^(8nLM<wgYo)6hxj@ZLlm`w#+B_bhBp7ME#l9saCye%a$#T`ZD``U-)aX
zGhG0zXuNP76A8pIfv6FJ<M<kI>Lfq{B#>ePPd@pi)2ml6M7%wi;zm+%qWXvC_fD^q
zf+phj6bMn!jIpGgz{!&*<@D*(DQ`f}#LJtqWy>NUmQ6^D&&ri6M`e1XR82G;PS(^-
z0zYb`wes(-K!F0)l&x8@VucOj<$s*pBtQZrkX{5R_@)<W_7etyUGH8}lePe10Ap1W
z@DRw8Cy(fo-?M`&QB9yyrAiL8i!3Q8(7ShU<EB3fwG|D3<q>uv@FD;fat*Vjo&a1T
za8G~p%{K=3w|9$2j~=yV=176WLINZ}0vSqR<*?d)DG6ujC1B?yKmsH{0wh2JX-z<r
z>iS5!)v8tNnm>R3f4qFtx-+(CRp(WzR54AOG?BaSzT1AnX?fA2MKX2jRG6qpixw>c
zNYVB=010=H00~5p00rL&!e!GWKmw^Eu)onosv2XCfK)-`$s`a@1T-YFN8nXq*V;7~
zE?n404H-{7GGeaC%`|7u9J%kl`()_Qp>}b{p{jP7KYzXyD^`rx#D&675+H#LAwVHG
zL$I?`5+DH*AOR8}fs_(J*kM=5End7h1*(*SOvCda*naTA2eNbLPP2LQW<hvu*qfIw
zT{_Y0L+x)GUH~>l0wj<u0Sdm!B4Py+AOR8}fea_m?e#`oX$z3ymmwMl;2%af8pjx~
zW7@lSug&oVvuBt=t8grgm=~{i1LsWw(M5nlaCBV{j)nwCfCNY&9SI=MjfSN)ZkOsG
z3bWZnwN-9Cev$wQ_!9WxhaXI*PMu`Unl<(SG`q-Sq{)+QP9%+d#s4c`WZWVF5=dtP
z6nxVeIJ+YO5+H%JB=F8V@0d}eM%kb;Y1wX4ZQ+3y0;2XUvF=x?30;kMDB3!8>Oc@q
zYWh5u@dQdu{$102F)l#HUx^?i`18*{<>s4jmTcLw*<|Di2?+>E-*xHIrQ_aw^G#{n
zwyk{q_1C6Ei4s17FioI?z~n9xAc2Sxpb#7}v}~9JNPq+)PXGx}4<0-y$BrF~d}sgm
zfTXEdpxKGmGI#D=vwHPv89sct&x3Zfj+f&ifmkL0q4xXlzlYzi&x^4(ZQ6`)*|Mcv
zcG+cS-n@CzvuDp(o+igm0wfUQ1St5%_yy$fNq_|6n}C`bIxsbi$FgL}5`%Oq&^Gy(
zty{Osu3fw2mtTG{S+iyp)jCB?0LIIQ6DLlT^dAGaW0yeAoH@7a61x*f=aEC;&6h8q
zkI?H50b1a4<;q#1*xi?=pRZlK_j%d^q$yH1Mgs9bfI@IQTxHIY1W14cG9dv7{{;&c
zw9#e#rw76K@4x@Hrr{8RBU#>f;|<fbtA^)d$utCd_wG&0fiSLS#flY0-3es*^5v#(
z-MT(6oObWtZC0&XC9PYx4rq~P&jCodg9Jz*k_1)`tKFB<ZzKt`Z4w{>5+H$y5P;qF
z{{8!9(V|6Cp+W_pr)_jNVZsEnV8H@;@4fc|jzwZXg$fn22~Q)@Hrq^J0!UiR5*`8M
zHoEP$+sutO-YE6!*EbCtHnicMmn~Z+AAR(Z;QvFV-*ow33~%JDop}gMxohbR+5%*r
z>lyi(Pza7ZWA;D-BtQZrkj4a{I#S1H=j^l34%+gaci!oA?AS5ru}JJhUYBdGxh4`#
zv(0oSpb?wWxyQ`WoxXT-%9br_UViyyQ3rfGsq@Y|&qlo(GGvGqiv4Fw6|g@MZj%5B
zM3Mjn-$>GB+ay2&BtQZYBakasu0-30(;*fX5+H%}A%K@q0|yRtbdjS+kIG+v{gt3j
z!AsJoclMH*2<S@`IeGGAsw1T#8r$N<i=}+|@~}$COo%v_WC&Dt3TtGPq;mvhNu~`R
zCIJ#40TLjAs3f2oUZc5~5?xgLYvWV5YSqeUuBPaXRUMUdIVciHIf2}{b0aDi1>lq;
zjO#P|_U$VVJn(?*-MjZtYCwGP#TT}nDO0ATrWu}_i3sr3cqY1-oC*n$013ns0hl${
zs#Pn|DHktZ+#c)FrHeFg-aOHIJU{{@ka_~eiWN)p<<jWUqw#;}<Nr&u=hSnL)fS$6
z?l~DSV1V@L(??(y&q4y}L4bm9dQgtGK7PFZ%7w|<0z})GIUW)q0TM`pzzsLt;OLS>
zjeia`YShT*!8_R#Sb+pcAZ!BuiG7h9Y~{+8c7Z0Za^=clx5*PSF9C$-KXvL9OyvV6
zxq0*Eu4m4iNx0yG3)%!6<PH)@1px}dses2*Nq_`MfCMs*K(}t)%>4QD6CD7e&ms^{
zq7`_61V|vw2t4}eqXGYG{rdHjUw{1-xsarD=gw)?7aPjl1k{~nT;`r3XO~d~DEMX+
zdG<>J(Lvy@g(ohcEkJZ!3yvZc1e!EyBBe@|@@e6ZKmM>$XOS8yJtIH+41yaZKmr~D
z7hQCbQ@wh1GjHBJdFY{sJo~Xi6KEeC5!-m}wb$hR_urRo+qTJBXPsperr&kfUDC8^
zQ=dLHk-7Zv!w=G{SFidfPMlbb?G-ClAj-a6b=6gJ^UXIW8Au9&tDy1Uv}uzZKYm;;
zzW8Ff?z-zlUs$d$P@q6nbOwLk=bwK*-{+ryZu{1R(E?xJnl)?6O*h?S_dWge)AIZ8
zzY9M7ODKK#pA+i#x8Hs%Z@u-Fz^VuVvtD@N1v{UuTer%US6*p<QxXyqY;zMQPPD1L
za1PRY!Oh11{&xG_vSo`PB02(cZQs5fe(|1b;2)SPHP-<BC|kjp_Uzds`oAYvUwySa
z^2j3|{_dFK^^-zyyk2?En*>OJ1Y(?kJ|sErgOc}D;7@kTEw>m%{H$HOw)Y{flK=^1
z0D-k@*Gi>Il`^1bcBwBN1pHC(q5(P6H*DA-vu4ebhaY}eMvffmfiz>r3_-s11`Qf4
zzWeUG<;Nd?^c?&0%P(d8`0+A$@L;=m4(Q5nzx^i7nl%#ynQ{yIf&jc^$r5?xl~<}_
z3=o9%rDVS0!-u=oWYwxwcDeul`#pm1m@#8y*REX<Bo7rVSTG+dhtr3r@i12)^kZx=
z$%ddhXU-f^O|%vKAxuu2HVwJtW#-J8GI{c3L3%U@_?RaIel^#|Tzz`QHaO#@EJ~Iv
zSwu~`Ei1H#->WB{c*1i|O0NOh>d>Ks9XlEWe+a^OaiK2@s^a=xa>*s0e&Tke=dc(1
zGURjIUVcuT1W14c{v&YS{F<{ft1UpwmMvxWY@Hqp36Ma#5KyVb_%G`CYc9L&G6M-g
z!>|X8gDT(vBx$+>s#Qp!MT-`---nREpn@Dabg1oT)TmLiapT5-K5?y%962J8${;yI
zqEfZ6T}Q+!?DsB%1`V>3okl{Fci(*%QtP38`}U21+PQe~;#M8`%rno}Q}lk2-Me>7
z|Ni~$Hk`w;{nAS>c{drb9!?(tCx^KMV}aTi((i!-2Lw`NjT$usPVIR6ir*G2V6<b$
z4!P%^du$Km#`&6W<Jf}_K4_)j`|i8XGJ=$iHxaJ7_{k@qL?0vkhZxQ^ICSVxeZ09q
z+jyh!_19lpX?xM4MN+Y1MJvfa_Sj?oUBu-!h2Xfn?3^?SkN^q9J^?(0AVH-6q7N$u
z_HpN&b586}k~1KI7$LB3-8%7KATU7n3pG@kGGziBgkxlCF*{6fM?pg77A;!X^%5mY
z2!u#PB16JvTqFMifet1#ty{OYhf0?&Eh9#Z@Cd8kDoa%O_~ValJ*YF=wrwj=+n#^^
z`Mn_|LS>8sVazQTUU;D(Hx|md=bkIrPOgO8M{?~YbsR4UpysVmp@OYerAif>Kgm7k
z*=L{i@PvKwQ%^m0C~MZN9`(9g5BA;oor3Ch?AWo^ejLZHxZ(=IO9$6?=YRkEUvKvu
z_cNSppsM%9YO8MhfzW>W<(J!LU{{T6jq9v^xJ}3PCvBhO`toz~BtQZr5W57_&dc~~
z9^BdBA!O>*sqQ8}!y+(YN0zpk)fONu5UiX+0-t>Hi4}6ycGke26k&Z;@RhP<%ToAF
zA=A{J24M~b+FSqf)mLBn@A7OnZrs>9yn1&0yP}cKN~w^w?VE4Du|kzAY{51dn#W+a
z?kWu1vt2u2|29M2PLDp^u|P=G`_|pGpY`h1gUZ{6qi)ltO?_Qo>{fu#kGVsu>pf3(
z79Ifs7q-;F%6aFVXLoy_<JJr38o1XPfiK`-?b?o`Egh>}+;-#rlR|L3-vOLI36KB@
z#3+H@y?e{;x8LqFdT4^@&Ydf(SFaX*=<v18^Qp-V5+H%JB=E~GznHFFyUK?je(2Mz
zM&2>6zWOS(jR68M&7OTwrTGRlzHrKgw(`?YKNUo~LR6=cB}*pRS7Lz^^5)IE4H2N=
z><aT~SMY@?vv<*u-}X2(j))$W79~CUaK{NpW&h&lV1l+<BUgEZUbkNM?AhH_&nGnC
zuHf(Pgef)L0AP|FO!My63+EcBNp>lXzO@Zb(kig$gCj7alwE)Q^=@<g{FeX)U)~BN
zKmsH{0x?OTYSpR%57L+j-f*jLl~F&kHVEIzLINa^asoGY9iVY|i%a8#y8qa~Cesu&
zfA}9n$X=MLLJI}6Tlk5-_~MH;%&?lkPFF!fZ46k_ivWCo5v2)2FkTE|L4l7hge3T-
zV%@(a6)g$Aysi-JeIB&4i1-AvU-an~M2bqQk{*3vto|=&QZs(|^{N?oZ@e5rR5AEc
zqrh4TZaOes4pzds26#Dv=w<LhhE^X@#IPXLH(q++WpVrV?Spj_cl+r38+VtS6D9!?
zAc4$J068?)tXY%!C(0R;Kok&wzdionKKS4R<hgO6A<LF68+=C{wZ`bGL3t1)$eN5s
z!Eobh2nedATES9NrcANI4}4XB{`qH{9|r-E5PsReBqofZ-l<ckY;_1#Zb5is_z5pt
zwoIy3t0sN=^s(WQ;R}xN&uLN8qmQ&0r*|7L57(Eqz2Wx@%Oq%J;q!~6^&04Fy_!;c
zSNB;D_ZmPe4{b7noWTdXR;^lAfdA;DkL0%7Zu9tY`*aeA8`S>B;YH_^Nq_`MATtp7
z>8GCz9;p2bl3F4_3mybmNPq+)PXLi||4m{VV3DD|j^pdrtve28vi`+iv*v2U{OfT$
zbp)UhgwTZr1zLHyjX*n#D8Qe6_L)xy-uaGv4#@ev#ufk1768{B1wpY;aE+0076k#f
z{7rY0GV`@3h43dm`UqhdVON3H9nqf~HEI;#8la8YWXOp%n)vk)8<iU8x!1tE4ZMWF
zf`W+9nzw3kzkdB}?j{5^^G`PHeQrFgQ~MhaSDAAp0TLjAOh^DJI3VcyFEGDEf<>g#
zU?Bk#h&%!KlH!Gw3OWDSbb56OQ)mc3&_=PO9|27{v|f|=N|Po{0y>3o>L&d~;#&VQ
zefo6&U3UBX@4xr>tClZc-tJqvbgBJ>d9A<DivxT1?6JpF^Cvy}NX_^XJJ%gI1kYe4
zDK_C;16)g7YyY5+@KMIg4p++@>{<sKS7zQv!8bEsUCxaJNPq+~F#)7@K=2U%1txv!
zTj=P6c7P@-6XW32NFc)qXi69df)BJw8qCKEzsHUpgB6BR?UO;u71aO-{6A9r8@WqX
zpg@7D(C)&|6uzMT#f<=6u3S0)L-srMx#yk>*x#c^51T`_dGqErhc7C)!Jc4s<6qS8
zdj?E!lPd5PPp+i4kL22q)Nyy*h<@&0CQX`TO_crjyW99(3-ub{9B6Z4ULCAxKsviS
z*tHH;Kh%A>Mo+ltKU;uM&q{H<A?Ba#St)KH=!vw04vK|4Nq_`MfCQqQfF_J|kTg<N
zPYD}0Zd{Demx#)up*sVfxTAe893Kh9IstVwbTrJfLC9a^je%qY)mOuY4Mm+#N94+t
zE7qqNbK^(EBS=RrTeg%gUAjp1>eU5FW#OpnO2_x!dvCzJkdFuU(Fh%lw;P&EN8Wko
z9ntSu$(b{!z^T|Rb?Vfy$z@^Vi+<n;tWvnFU%wt|<~Huz4um~M#4OZDag(zn3^MMK
zB1MYGrI%jnHtX}5(ms3|$$$;yE<!XgB;eh-bElm<LSrL$-}~>sFB%EXMu~g(-FF32
zDiSlhC7f%}s#Pl)I&`SDYe%BuPMtbQ;lhRO^}}_B>KD%5@ox7FwiJBbJB*(sKmsH{
z0x?AZ&Vs65FmO0SR1vpmvO_a$*f6>K?z<@fyHNN^0ud&FNLQ*NwEuGm`K!*MM*kO`
z+_`f{xMwz>7y*R+g`hQO&Kw&8*t;GCtEZoSS~_;@=)K#nj~h463TF_|yc4V=JoKzt
zv#b#1o`jc;sNbzyH`@>Tatk6ZjUGL^zB;`wh7gTBJc#-Pdu;fqXaZqtOReSsa{vAJ
z3(R_gm6Y}otgZCi_wvgx3!+~k=M)4}w`h(cEBNAn1}r8|o-E&e_nj3~-8$i10|?A-
zzWJu$B?giXWAQF{aq#-<uY2!`+jR=Q5xDd>kAC%NI@$t6U<PcG1W14cVvB%A6)~_A
z!-JkCxm;hSOqr@0<wKS)UoJ>Os&Cef+Urpej;+he(Pjby(DarnRVvy4Jy$d6PMJ}#
zToP&bsbRO_7a|D73?C7M=7!J&Ep1{2*Kg*`nf4rn6NbhZnq%0y2P+Vy;be+X!y28?
zCKtZys;lJRguRO)7(;kIc<`XL3_u&O+<{gS+DXj~<kL0;_kT-1cO@l#Knsc`)Ph`4
zN!^1<9ZM|Tz$c%4Vr`Uh4gUJ;FB`A|&bn@a{W7AGRjO3U-DN++y#`41j0Kz#HS6%<
z!-CvNu*AT%VEKmtg<#$ZBtQZrKmsvIVB*Ay^7!MAOXtp=?E|(xL>riVwQbwhQ4=!*
zb3Zt$v5)`>M4o_Z22E1Es1^|akI4$dNwvXaDI);k2TQocJA80*=fZ6H&O7f6S`8++
z-Me=WI0gYc*#3Zu|L#ahABnY<p8H{LoS4aRLPCOINvwo(4bTQmpji?pK*2Y0Hks-O
z61@e>4-#yW$X(!?!OWXC&%QZAJx$^#c&JRSAhaV)JWvn@^2Qr)^qhjXjov0Po&*1`
z;O#HIAaPz&IZF^m4}K@`kMMqT=HFhZ+xlj#l$wle)BFscya1t|n{>U$rr!G^Z2^*I
z#G@pTIs$kLk2l<Ieh2^7@D|_OKh6I*w@H8m(w0Eao;`gUJbn7K_4S0mCql7Tu3XvY
zI5$Xu1V|vg2~Y@5Z{iu$A07Y^N-mUAwrp9C5Deb~_-UXtYt~FOdwsG^3?4k#X1+(o
zn{K+vM+k<AOQ^X>)P&K7zC*wMW!ki90?iK+*`<XLtN|UiVO%iLag*cu_sMM%Ac5#1
zfEQ*k=~}X6i6^In_vny#l6h9ViEy0+B1=I1I0H1h2zsR^tOmZFYNZh{0Gd4qAmI)Y
zAb|)Hpx_%pxY5{j)22-Wd<y)>i70)+%EE;UgY6F3hsb@&6~uyn_~C~Gs^Jasu3fvV
zu#K4fFyDYC`I`T?cP~Iv6lns-vl&JaR8(*XVLa!69eH`2pu@;(c&dQHiKv{4fsfS@
z^cD{VAK(lt%0jFU6hsbBz3>s@s;elvt{8!wu3p6A0|enhR5p~+!-W7NL<6NRzY1!i
z-(A&J)m@K&MT|4uot2gO%aNY1>&wjg`i!zcenRgsuYUaTNAoMl?WAp`6}bJU$}Qvq
z_+u`Mr_7i!L+L#<j3rB!n16uFJU6|nsUh=!tq<`0xjMBXfPfu=Zr!>i^t@3+GRtnd
z=_Wg;PzC`65b#BSAlMhy;8rS&988}+-EjjYsFMlwvN~P91q5W}ISFK~^0_W_<dH|3
zD-Py*UA8WfN&2#3*=@JoW-elrt85UT|LLcnlzed@fPjAjdX>wB-p0X@MX#)5?%cUb
zRtc495<`a$&A1z7mE$`C2$W7h7EVfE)JLw)-QUuUft@SKD*BSar?(#Jq049P=4+=C
z%D56>3|#RQJek0^AQ1&bKvs}@;)y4eq#Nf8e66MNWuX}fl8ZfLIr!PLXRBGWW@Rkh
zUTmG5hX4Z66OiCmf0-SVEj46&71;wg_&t62`L+j3oeR)xGzA}q7Dh!t-`>qw1?$kE
zL*~-AG7pQ@d4fOENt^Ey1(#{K7z2OdiG=<2jZE#5hb+6K%VayfKK<fOojT3U);Y<6
zmd)V?4I1Ps5|+Aq_Uvh1Lh^~dI%M5{SrJUur<aeO&pPWYCA-2~yRYZE&Z<?b%oRLj
z0<&ytSY2Iht_r3%yW6Pq#s^yGJ@d>n=0<M^59&X0^&z*T+O%ntal6}YeOA4EM*xAs
z0(#Ma5JbR*`#}i=!YCl`uh|Z{^}Axl3dR4Q*>rdg0R&1ZK;T<S?GRr}f;ZWr{N8)-
zmCeNFW?R9+%6pb_>G@2>bY1UTVxH#J>NT>8mn=ysx!Kn7{`>DM*&y_ud+xEGO8G81
z*s}7L+*+~@>6-+=@*#kJGao29T@nb(Axm3Zx54GHo`@*l)GfE%a-CjUdZp9)%#-;K
z0tg_0KvV^e{N&$0DRnM@@0NO#Q^y}drT^WKZ*x`OJHQ1HKp^r0Z6e=8I_R0eC6`=c
z*0p-|>a2BI!JpoEGwbV4pIo|BZyuzN@#DukJvF1e-0jtq1<e3h?)GlpyxH8@Ty`6m
zo!4_MNqy&?cbWmP+|ibP>mYXT?%lf=uUWIkoMiaTH{Y}dx^ht+Q1@tQX;Cu4Sq_=N
zERQ7smd8%(lXEx_KmY**5D2q?evdVDc34JQbeQ`@+Yvw@d;;A44d0l#YOyT0DEkoP
zI%E$andqDCkd>%phjQ6ZMDG){x2me@c&nUjo~z%~cF2k|dTB=`8vy4!<PPlO#fvkF
z$ZAm%EXuO2I=$N5K|R|t(HSQec;b#b?l4PScG+bq>DaQ<xGXO%^DDmp{(CbRPOfUh
zh7IP!dGqF}!vVeYd9Li|WVP?(k3VibMX&f}&XKV`#kTGWTLqlfXPw7)1Q0*~0R)07
zpqE`&4?OUIk?Xx*rcFs&v|bp*7(95enmKc(<GaH_?YpP#s-D`ZcjR&bJQboc1UwTU
z2=<IJ92LnD&hnM(*t2I(u9wW`B@mS0_4((YKVJ45u?~GVbcY1ClKyPxkYM-LTW`%<
zR08tH9(ycr89OiT-Me?JUJCY2N#kyAZq7JG?*3kV_0{qQp7GiXFT5aos$^ZZQqO-j
z%R8By>~(z^4dw|15I_I{1WGKRrxO{n*2UPdW3#TMA&Xzhni%qaX|0VRO|(8Rwwg=Y
zvn9cI1Q75;fWX%e)d1JIeED*7gUn)^D5=j9_(}?Ja^U;ibI+Mo+D&<u&41;NYWg8>
zjxy(0?*7UGTK)U?SIKu*)63g={Ml!py(#5RKKbO<g|yPo8$Nt^*1)$<pFSx?zyA7b
z_4((Yt4*6WWi6jlILiaC>&tQpo<aZt1Q0-=qypc4_nnzV_4@0tXT7Vd17hRKE3Z_S
zUV3TP*Gt-1E`~rj1Xi?J+ej{ek7Gp;>?3Xvt1h&{aiKP!e){RMdZU>(yldAk)wOF^
zxtrWW&!OER>CtDLaYmsk%-3aZ?ELxjbC$j9uDg^3j1p`<{`li&Ds;}m1zz~#i!aO)
z(!N~BDW{y0>m?<3Y-QC-Su9IdeYTEck3H7<(b0FW>vME*3L}630tg`BvA}ufotKb1
zzqt;bA(p7Dtju_syT2JEJb?fLJ_@ktm5;blty=Ez%3WG(k*k+qe%VpVvmF;nMV>l!
zs#!F7)nz;9rkBz4am}ZagVyvixl)&9-tm+vQ_St2B&e5EZQ0aV<}k_1&rT1o>vMX2
z$|HaP0tg`BwLnEhg_-WG7lr)mC!c)My112|N_DN?=hryusH0Tdw%lv++MW6kK){(m
zX#W-Z_1}-^S(aRYW~0d&aSTdJF7(}Z-)-hX%d*K<L~J()+AfiGTQ=W>Wjl3s@7~=k
zCi%;`4(m2?^6OIm{`>DYpOTfoBv(55$hF!>a+&0xy{<30Zhl4p0R#|0pqv7-#PcJM
zJffPKnpD4j{nUa53yejJ7AaZqWAfz5hE9J<95`@5J@n8+#?L?hY%Z=L@2$zlv(G-O
zKKke*^L1IYLzg9QIvI$c5kSC|KxiXjSH0$BR|2wweed4A&0JuaoGW_=_2|(<4IDVo
zRlVsa%bT7Y`}glpf639~o;`c2qmMq?T&{WT+O=xJgb5kv%bRWbp;yZ?pBgo4R7TJ%
zFUX!pP7bf@b8>CUB7gt_2q55>z^9*nYCQPhgXU_L)2B~Q=sf}rnZqPoPRQQ|`Z=|2
z+cu+DuU-jRL?qWLo3ikSe90kmtvC=s00A!r$bI%wGe&jE-CbFlQC6~WvedH^B5Q(B
zt~W@tt|7*+^+rTBYTTHSQ*2g#!wol>C1rU^{pOr<mTcrJ!EyQ_D|N}SV~4q|QOe7D
z#g9K^Tg5A-P}&2p>r1PihX^2m00Ib<ML-9*O6DBtzYp}B-h}y{D!I@44sb%xX-dex
zN3Xv6s@XQ#Ptnd{cR>+5bx{TZ1P~Abf?$3RiV~32XE{Fn@I&*v*D23ZsZ0WvWAo<C
zN|s%AbKHFM&5JvC?yR<K*`nl4S61DU6}7It_F75DGE=nDR|RWmXi)OTy>sVIb-@J}
zsHdNP+Wb^n(zx^|*cZtr#d7G$PU`Kq-%e?sRo8v@-Dj>6CNH|FFQsxGAb<b@2p|w3
z0hwMT>CN&bhh#eq9Xhmi52Stj_9<EMQjWU1I`ey>|JV(X3)REx2q1ufB|zY7N$}l~
zfTTT3`m-F8R_sT5lDuikAuCqRo;}<Ax!C{c&3Wg_YE=UU3{VoVE?l@!U3Jw}YSpS$
zX500gqwD03Z1VDxH8nMA<;s<+Lx&FPrI%h(mtTIlI_I2o)a|$5uFgI8T%}j@7%Ok!
zKm7268ZlyodhNB>TAL?j<&bs{8#YW*ysmRoUu(tukWb*`)h{h@m<y1vI$lEn0R#|m
zDxmi(OdNmw@k)P4Y`pvKyT*$zzNoIa;tI1GeMi`k56txv(dJ{jK`?iJosI(K5kR1j
z0CRr}2}R`f?c28()e|dCDci}iCsD4Wv9VFfSNd`G*=L)n)9KG=dt6;zowKY2ukz*O
zkVUjMZro_jS(YWG4<0<Ih71{^>g(&Jnw5L^?#-xf+O%nE^yty*jW^y<Uw-+el25qh
z6Y0a7_`WH@vAn@cnzn3IY#mFNE;Z*E>puX@RIn3HIANu{R&0G%y?jRi0R#|0Acz7w
z%Sy=>2RhZ+{J>dfg(ak&8#ZiEG7nhqJ!n4Gfv>#T>e)-Vk9O_aNmiCwK6fczK>z^+
zoCy&4I`g7*1Oz0|Jsj-X>Wyq_EOVT*9VeZ1lA1YlX114<1o`rneiU0@dObWw0D(LL
z&-`lY(c}W;0pcYD{1ecNT_q+?oM_00!urGF)&N$opV9iWT)nEQ>I9t`WylB1xeobI
z*;)%ER~ep1009J?3XlTrRE+WnAb<b@2q1s}0vQ5&7l=f1(3?@<@DqhnpGkSnCCBp!
zAmB!Tz}Jl)=OTar0tg_0K+pxQ`~9Oe<;w+VHkyJCRQC22iiBAKtL#HW0}zO$0FiJc
zhm}qtfB*srAb<b@!4xPI_;L$4nBzvP5D2>ffp6GHkoF^h00IagfB*s^63|;QBq}N@
zvbI>ZT+mxgq)ZgfTCj*GfBfC$AC)f`poj)@3IYiDCO{DE8!Z(hfB*srAb<b@2&4;0
zpxd`^-}I-=$Ff&pn>PG;niYp95kSC|0ROVM;^Sll5I_I{1Q0*~0jC1FQlCkAb}C8v
z;sjcb`M)>F1t`ug8fOs%M`Il61p){lfB*srAP^b>g5b~$6%9ooG6Dp?kr_%lf&c;t
zAb<b@2!ul*SK!M^&*2z9T8Tgy1#$(xHUD&|o?L)1jwo$L009ILKmY**LL|_yU%y2A
z_U%(z+_7Uv)w5?$UlzYgxeyN!Kp>U^xq{$WV$f*>5I_I{1Q0*~0sjSL<!4#oD)|^V
zaG**gh<lSw_!$8Nyc1~aq^kMz=Np?gZOVE|OG``2^OGh`GE$y6{NThBPgIXS`Y8XZ
zWy1;TbASKaDZeRmE<m%<6jUABg#ZEwAb<b@UI<7o^gHjo(^?fPV6{^40|E&6AmAtx
z{^gfn)S5MGY&9cSxr;8k$kzE3LI42-5I_I{1Q3X>z@R~cQaZ=v-xLlWAb^0!0*-Q@
zM~oQZ`tl=3j&xlI6(E2>IRsu`b@!q&=K_?Y+guX?1Q0;LcY*Yku(<o{J2@9XAl3qo
zg5V)Th9oL0D_wyR1iRwnWCRdE009ILKp+wVH8nK}nI9)d=gys#JdQ-i=mY`?1X93J
z;M<`?2j%9|xGr6~s9wE#@sC;{e-&sH0tg^rU*Lf=+Wwhb0Q+8)L;!)p0@fX1H-Bpu
zz6vD}KmY-y90kDw<|Yl=&AAK~0tg_000IagfIzea2z;Y8p7aKRAPbZ<@NH;l2(krj
zLjVB;5I_I{#{!eKf2)_!tWo2}jGW^5WKKY!Rlo{@S^TP%gdY$<z$XF6L9m<ozuf)x
zX%wjz0R#|0009IL2%&%uco$2vNqY|A;L&6RLMGri@GW-!Z&g*5>fO6H^L|723qo@d
zKmY**5I_I{y8=(Xv#!3_T!2oUI^8;K*f7<#YggBQFE$%ZcAHE&1Q3X;fa6G5po+Pb
zTg*9e9TfVF00IagfB*sr#6@7nj2Ut1D*Z$NfiemZ_?8i$OCx{)0tg_000MCrxbVUY
zUElJJyJ6t^|EvAGKP)yEAaI?bK~WSaDhMuS5-@jvqxkDXpAbL*0R#|000DObm6et5
zD&TAc5J13&Kv99O(@DTg{<Sd@6hQz11Q0*~0R#|0009J|CGf$czxl7g<pLBH1k1QM
zxtr^xY_!Il-XMSg0tg_000IagfB*srlv{wnx7;JZ^$|b-0R#|0009ILKmY**d=)4<
z@O3ihmpi`s$MD>5C;fNeasl!;nO6}&009ILKmY**5I_KdPztmyw$;}B-}l~oFK-ph
z`_0S4iwGcq00IagfB*sx1m1e<Eu~kBc5nto5kMf$0y}r^G`nAP;45d#UEM-~FL!?9
z{A)(voeM0S^pAT3lMB#nG&%19XCQz80tg^bGJ(;fN2}wGJFaBc<3b1^5PpG+FTPmy
z@84g!j)WI2T9j9VNH{MKFCu^d0tg_000Icu6liR0WTRl4Run@3fmDH_Cjd(|b|wK6
z_@;vM2mu5Tupuy`>qec|SEI&_89Bv9af%>-00IagfB*sr*cEVf_qWg_U?%_C9R|uF
zfIt)kKKS4Rb<H)`6zqy&7zN8v009ILKmY**5J12?0at;qG(+z0=9&b|onP+;ikc8W
zAov0`H8pD5v}v{*D&;v4C@4_3?unbp1t`cw0R#|0009K-3V0F(=bHc9(9mGF9h5@=
z0R%!XP+ME8=FFMHytL4dBppBi0R#|00D-6pxSIPb82RS^a`!iCzb^C#0R#|0009Kb
zD6nVkpVyNMP{sk^(g+|B4FT6dur>cTokQmR_UY4yyCCT>JVpQk1Q0*~0R#|0009IL
zD5-$!z*kzE?Jh4V&m|p4E`|UC2q1s}0tg@wCxI7ME&MuIxd6>ZQ=A5XzJ^}Fw@5f!
zbR2puI)DHI2q1s}0tg_000Iag5IO<ZD_=>E4^IL%4jw$%3P9l7O2H2ZAP{1KJ$v@p
zYW;x&2UNRu?QE5$5CRAwfB*srAmEL_rAs>gEm*k#-t^1gT09AYtx3SvUPw&-^>@&y
z9RUPNC(zi~X!~N5Cr`FrmVyW%fB*srAb<b@r4#TZ@RjDu-Cis3W%6(729PTufPlXO
z>(;GPUAlC!b&-x8JK8EoAp{UW009ILKmdW#3V0g$S{wfcEamz4C*3iQT!7O4UU4-9
zA}P?TS1;AATQ`=nkL2jmDFhHe009ILh>L(Hi(Uy<@+QCm3xeY^mh=+=1Q0*~0R#|0
z009ILKp=~NXMwLZ=a;#@S(JGyI0DxkH!Wa$1O&&1mLPxt0tg_000Iag5CZ|vQlQ03
z?)p|&SI2;jE+T*c0tg_000IagfB*srghhbBH!LGXI}t#@Yk~iGcx`O}*9B-cn!N5Q
z^&x-&0tg_000Ic43V0d`%Ov2Mni?bZ5<Efx0R(~}aOlt>wPVK)^~x)+6l~D$-Mb5x
zp#TC1Ab<b@2q1t!I0QTmd}R`FZEY<}qlRPbX(a-&6Oh1n+qP}0rKQDI-(@aGMMZ_J
zvJ?uhz*}#f|9Aj%0m2JP%Mm~T0R#{TxPYfYaKQUY^AJEF<^o3?afG`5`s>w_B}@3Q
zF6O@rbRPi(5I_I{1mY#&+49fvVxzYRAb<b@2p|wWfv5g+{l(-0L~mT_5dsJxkSahB
zoa(_N1Q0*~0R#|0009ILKmdV=2@v>3Y(VJ_0tg_000IagfPi~}2XDJ*47mXA9jO6<
zAPNu!2XRzr69NbzfB*srAb<b@2q1ufX95Jio>5W}0tg_000IagfB*srL{H$xSEtSn
zYA!&t(G)%K()5VspG)J+RS-bHCjr^lXx_YewrZD+e@BlVZL2JW5I_I{1Q0*~0R*BW
zK;Rplv7{#m#8M!UNT}0JJIz+#rCfb|y{)noLI42-5I_I{1Q3XhfCqu^^#2_@J*c?=
z(HSUuf&c=A1=_S}qgJd~!DhaNsVIQ}0tg_000IcaR=|TGIJS0l903FnKp+GHk{Z8k
z*)l^P8Li#7Z(quDUw!qJTDo*;W<g!5wzgJ{8#j&*SyIG!fB*srAb>zP1PFY?F;1ar
z<&72pJcnF>&<qz1MId$pk|D5i<w~`6>(+vOm-*qdX3ff4ZsEd(5(H;`jVBR6009IL
zKp@xxEdLzr@u77HAb<b@9tbovG`Oy1#E22D>!1Pz5I_I{1P~~X0D*6L+_@?OF%THG
z`n1c*1&F~whpvmGMvZdS=JxH|tGc>6(w|)^axwx4Ab<b@<r5$XE}uPDMgRc>5Gawr
z@ZrPvy1CTQp+i+=Wu==cI2Qo~5I_I{1j;B7xVgWlo_cB-Ik+?e2!u&M7BP~!oE*Uy
z_}5i8t_?~qKvh-M34QzaHMVTo(hB!>)9~ij2X=n&B9Ge6btr=X0tg_000RC91SS&h
z)~#D&&6+h?m)!KH>(q(>0#Ohk5{|+smZlFffj2q&b#hfE|2om4ECL81fB*u)69`P;
z+o3}Tb^iJ1GodPYzaz8=0R#|;gn$IE%a<>A+!vYfd*+#E^8VylF3SnG{rl$Af|3i6
zrFlGs00Iag5Dx(o2;(u%^b!FC5Qx1%v6Fy@3>m`Y-`M~50Du4j2p|x40RrE!k09+w
z009ILuqAMK;;*f;$%ROHPS)UO1UwTMv*2IuA{W3jPAWnG0Ve_k!A`U&ivR)$AP{PS
zVivC=2oCj-(|80BKmY**OaTI4ei0Br009JIBj7ZMW!`UWel_SQ0tl2-U|E-C+sOqe
z=Lp2^+62L|8*(~~00IcaS3uwWb+idE^M2#|yF$+qKmY**q9s7!8?EuAHwYkr00Mag
zWd3iTK7I0(NPWra-Qv`<d4vE02q1s}0uBZCZ<sU2|6G8E=JicP!VZUq;s_vs00Q9_
za1z}*DI0DTT8{t%2q1t!v;_!!qdmU#4gmxZKp;)PZZON_-!wQLB7gt_2p|w*0RrD}
z4PMiNt2X+d3lJ_7T8jVz2ox<~cM>p@e~TvOL<A5(009I7CqNJ!xFMlI2q1s}0)7hE
zodj(6F0r3&rEUZeKmY**5b#ETz}Fi`YC)j%0{8B?^cZphO7G4UBPU=dz_n8*axioV
z0R#|00D*`K5ClhbVCfbD2q1t!Zh=BUE%SbJ+wlql2q1s}0$~&&@D1ar(Pjh?Kp<71
zdi>dcB^Myo#P*{?^M9H5YnzgS2q1s}0tkdcfFL*&!$czyKmY**yc8%j|5pdbUS5v6
z5I_I{1Q0-=%mM_yWgY-7j{pJ)AW$BGe5ud*UMo*)9bEN_H`o6$B)I_1Mw5e%Q4|3L
z5I_I{4+V&XJ;bCc1Q0*~f$#|Aigso4Z(UtoB0N2zr3fH^00IagP)LBlw~!F8BY*$`
z2t-mK*Tmn!g9oe1%F0OgnNGz?p#5Kt*%^{tfH(~ceMJC)KnM^72Vxj#1Of;kfIz7Q
za!mrxbyv95?c;g~Ab<b@2q55{0D-S}mehm*0tg@wGJ$L>ToL$&Y!GQK0tgfo*njN(
z50eW}kck2@5+DeU(O}b61Q0*~fmDI?fR}l{sXjbH009ILKp-jt1in!jN&0~R0tg`B
zSU?B9dy`LM-fyx7KO=wu0tiG;VBH5d9!D+!L2&ebv*{562q1ufO@Z|Jzv*{_ZB|1u
z1Q0*~0R#{TxB!7~zz2xtA%Fk^2>2_I9PB3l?C({n9RUOoKmY**N-03#o2k8T;$Qw4
zrd)t#qbai!Jc9rN2p~|TfEE2R`L{?wPD20z1Q0+V1Oi0DAs8f@hyVfzAmE>XwFxkj
zfBiG2W&{vG009KbEkNK~?h)Ynffe}Elka~Nrd)u)Leek<LL?xQfP44ut*pDiA!<5J
zMF0T=5I_I{n*s#EHlZkn00Iag5M2QYdI@}^JHGS`0R#|0009DDeg_ah0D*!6+dsVb
zf5-(W$P|$R6DCYhb#--#h;)Z;Ab<b@2q1t!nn2sM$2>#;0R#|0Aa(-d$B$3wBX<3!
z!w4XN00IcaMS#1%aT#g)i2wo!AdpkQNznVd)l;^U3y_nN7Z5-I0R#{TyZ}LP;D?9?
zB7gt_2q1s}0tg_000IcO5g_n&qsO@jAb<b@2p|w+fiD_I7@^ArXf~Q+JY;ko0R#}R
z1c-z!3BDtM00IagfB*srAb<b@2t-nVz&Db^N~aJ&009ILKmY**N+huJzGvEpE*GFg
zHe3dQKnf592Xa_w6aok!fB*srAb<b@2q1ufR{{jSUP)390tg_000IagfB*sr#9QDG
zC*E)_xd4Ix9Uuq}{1DMV1Q0*~0R#|0009ILKmY+Z0tCKp^f(s*1Q0*~0R#|0009IL
zKp^k}We9xFTl?`@<N^f#H-iQufB*srAb<b@2q1s}0udA_Ll7K6MY@Cl0tg_000Iag
zfB*srAP`sq0^h(6O*|U*<%KuT31==qv(XffA)=QEAb<b@2q1s}0tiG;fJiucV@i(@
zKmY**5I_I{1Q0*~0R)l+2z-+;_z?jF$|UgZg8AdanF~-RFfNM#0tg_000IagP^<t!
zaItcnhX4WyAb<b@2q1s}0tg@w3IPJ&Pz)1|L;wK<Vk7YK@_#r;E<kLCn~oxY00Iag
zP<jD^;L@9OMFbE)009ILKmY**5I_Kd5(*IbmJpjuA%Fk^2q1uf1A(V%&uT|5fCDg!
zB7gt_2-p#5Yo`!p5I_I{1Q0+Vx4^DlyHxk?-E$Y<mCy*Zw6v)D`ufncmxdyM00Icu
z6G#|_VXq{m5I_I{1Q0+VLtyLHt;YKG>ocC`iSP;x7%)JB-$ZzO5XqMR>88zhDb;r3
uxG^KAgsy{$Wfe1j4qdBhFai-5=z88$vqx7x*+sfJZtTP{FOHi2+y4h`_1!f9

diff --git a/dual_regression b/dual_regression
deleted file mode 100755
index 4806200..0000000
--- a/dual_regression
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/bin/sh
-
-#   dual_regression - take group-ICA maps (etc) and get subject-specific versions of them (and associated timecourses)
-#
-#   Stephen Smith and Christian Beckmann, FMRIB Image Analysis Group
-#
-#   Copyright (C) 2011-2012 University of Oxford
-#
-#   SHCOPYRIGHT
-
-
-Usage() {
-    cat <<EOF
-
-dual_regression v0.5 (beta)
-
-***NOTE*** ORDER OF COMMAND-LINE ARGUMENTS IS DIFFERENT FROM PREVIOUS VERSION
-
-Usage: dual_regression <group_IC_maps> <des_norm> <design.mat> <design.con> <n_perm> <output_directory> <input1> <input2> <input3> .........
-e.g.   dual_regression groupICA.gica/groupmelodic.ica/melodic_IC 1 design.mat design.con 500 grot \`cat groupICA.gica/.filelist\`
-
-<group_IC_maps_4D>            4D image containing spatial IC maps (melodic_IC) from the whole-group ICA analysis
-<des_norm>                    0 or 1 (1 is recommended). Whether to variance-normalise the timecourses used as the stage-2 regressors
-<design.mat>                  Design matrix for final cross-subject modelling with randomise
-<design.con>                  Design contrasts for final cross-subject modelling with randomise
-<n_perm>                      Number of permutations for randomise; set to 1 for just raw tstat output, set to 0 to not run randomise at all.
-<output_directory>            This directory will be created to hold all output and logfiles
-<input1> <input2> ...         List all subjects' preprocessed, standard-space 4D datasets
-
-<design.mat> <design.con>     can be replaced with just
--1                            for group-mean (one-group t-test) modelling.
-If you need to add other randomise option then just edit the line after "EDIT HERE" below
-
-EOF
-    exit 1
-}
-
-############################################################################
-
-[ "$6" = "" ] && Usage
-
-ORIG_COMMAND=$*
-
-ICA_MAPS=`${FSLDIR}/bin/remove_ext $1` ; shift
-
-DES_NORM=--des_norm
-if [ $1 = 0 ] ; then
-  DES_NORM=""
-fi ; shift
-
-if [ $1 = "-1" ] ; then
-  DESIGN="-1"
-  shift
-else
-  dm=$1
-  dc=$2
-  DESIGN="-d $1 -t $2"
-  shift 2
-fi
-
-NPERM=$1 ; shift
-
-OUTPUT=`${FSLDIR}/bin/remove_ext $1` ; shift
-
-while [ _$1 != _ ] ; do
-  INPUTS="$INPUTS `${FSLDIR}/bin/remove_ext $1`"
-  shift
-done
-
-############################################################################
-
-mkdir $OUTPUT
-LOGDIR=${OUTPUT}/scripts+logs
-mkdir $LOGDIR
-echo $ORIG_COMMAND > $LOGDIR/command
-if [ "$DESIGN" != -1 ] ; then
-  /bin/cp $dm $OUTPUT/design.mat
-  /bin/cp $dc $OUTPUT/design.con
-fi
-
-echo "creating common mask"
-j=0
-for i in $INPUTS ; do
-  echo "$FSLDIR/bin/fslmaths $i -Tstd -bin ${OUTPUT}/mask_`${FSLDIR}/bin/zeropad $j 5` -odt char" >> ${LOGDIR}/drA
-  j=`echo "$j 1 + p" | dc -`
-done
-ID_drA=`$FSLDIR/bin/fsl_sub -T 10 -N drA -l $LOGDIR -t ${LOGDIR}/drA`
-cat <<EOF > ${LOGDIR}/drB
-#!/bin/sh
-\$FSLDIR/bin/fslmerge -t ${OUTPUT}/maskALL \`\$FSLDIR/bin/imglob ${OUTPUT}/mask_*\`
-\$FSLDIR/bin/fslmaths $OUTPUT/maskALL -Tmin $OUTPUT/mask
-\$FSLDIR/bin/imrm $OUTPUT/mask_*
-EOF
-chmod a+x ${LOGDIR}/drB
-ID_drB=`$FSLDIR/bin/fsl_sub -j $ID_drA -T 5 -N drB -l $LOGDIR ${LOGDIR}/drB`
-
-echo "doing the dual regressions"
-j=0
-for i in $INPUTS ; do
-  s=subject`${FSLDIR}/bin/zeropad $j 5`
-  echo "$FSLDIR/bin/fsl_glm -i $i -d $ICA_MAPS -o $OUTPUT/dr_stage1_${s}.txt --demean -m $OUTPUT/mask ; \
-        $FSLDIR/bin/fsl_glm -i $i -d $OUTPUT/dr_stage1_${s}.txt -o $OUTPUT/dr_stage2_$s --out_z=$OUTPUT/dr_stage2_${s}_Z --demean -m $OUTPUT/mask $DES_NORM ; \
-        $FSLDIR/bin/fslsplit $OUTPUT/dr_stage2_$s $OUTPUT/dr_stage2_${s}_ic" >> ${LOGDIR}/drC
-  j=`echo "$j 1 + p" | dc -`
-done
-ID_drC=`$FSLDIR/bin/fsl_sub -j $ID_drB -T 30 -N drC -l $LOGDIR -t ${LOGDIR}/drC`
-
-echo "sorting maps and running randomise"
-j=0
-Nics=`$FSLDIR/bin/fslnvols $ICA_MAPS`
-while [ $j -lt $Nics ] ; do
-  jj=`$FSLDIR/bin/zeropad $j 4`
-
-  RAND=""
-  if [ $NPERM -eq 1 ] ; then
-    RAND="$FSLDIR/bin/randomise -i $OUTPUT/dr_stage2_ic$jj -o $OUTPUT/dr_stage3_ic$jj -m $OUTPUT/mask $DESIGN -n 1 -V -R"
-  fi
-  if [ $NPERM -gt 1 ] ; then
-    # EDIT HERE
-    RAND="$FSLDIR/bin/randomise -i $OUTPUT/dr_stage2_ic$jj -o $OUTPUT/dr_stage3_ic$jj -m $OUTPUT/mask $DESIGN -n $NPERM -T -V"
-  fi
-
-  echo "$FSLDIR/bin/fslmerge -t $OUTPUT/dr_stage2_ic$jj \`\$FSLDIR/bin/imglob $OUTPUT/dr_stage2_subject*_ic${jj}.*\` ; \
-        $FSLDIR/bin/imrm \`\$FSLDIR/bin/imglob $OUTPUT/dr_stage2_subject*_ic${jj}.*\` ; $RAND" >> ${LOGDIR}/drD
-  j=`echo "$j 1 + p" | dc -`
-done
-ID_drD=`$FSLDIR/bin/fsl_sub -j $ID_drC -T 60 -N drD -l $LOGDIR -t ${LOGDIR}/drD`
-
diff --git a/fsl_dualreg.cc b/fsl_dualreg.cc
deleted file mode 100644
index bc0fb91..0000000
--- a/fsl_dualreg.cc
+++ /dev/null
@@ -1,254 +0,0 @@
-/*  test.cc
-  
-    Christian F. Beckmann, FMRIB Analysis Group
-  
-    Copyright (C) 1999-20013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#include "libvis/miscplot.h"
-#include "miscmaths/miscmaths.h"
-#include "miscmaths/miscprob.h"
-#include "utils/options.h"
-#include <vector>
-#include <ctime>
-#include "newimage/newimageall.h"
-#include "melhlprfns.h"
-#include <iostream>
-
-#ifdef __APPLE__
-#include <mach/mach.h>
-#define memmsg(msg) { \
-  struct task_basic_info t_info; \
-  mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; \
-  if (KERN_SUCCESS == task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t) &t_info, &t_info_count)) \
-	{ \
-		cout << msg << " res: " << t_info.resident_size/1000000 << " virt: " << t_info.virtual_size/1000000 << "\n"; \
-		cout.flush(); \
-	} \
-}
-#else
-#define memmsg(msg) { \
-   cout << msg; \
-}
-#endif
-
-// a simple message macro that takes care of cout and log
-#define message(msg) { \
-  cout << msg; \
-  cout.flush(); \
-}
-
-#define outMsize(msg,Mat) { \
-    cerr << "     " << msg << "  " <<Mat.Nrows() << " x " << Mat.Ncols() << endl;	\
-}
-
-
-using namespace MISCPLOT;
-using namespace MISCMATHS;
-using namespace Utilities;
-using namespace std;
-using namespace Melodic;
-
-// GLOBALS
-
-clock_t tictime;
-
-
-// The two strings below specify the title and example usage that is
-// printed out as the help or usage message
-
-  string title=string("fsl_BLAH")+
-		string("\nAuthor: Christian F. Beckmann \nCopyright(c) 2008-2013 University of Oxford\n")+
-		string(" \n \n")+
-		string(" \n");
-  string examples="fsl_BLAH [options]";
-
-//Command line Options {
-    Option<string> fnin(string("-i,--in"), string(""),
-		string("input file name (matrix 3D or 4D image)"),
-		false, requires_argument);
-    Option<string> fnmask(string("-m"), string(""),
-			string("mask file name "),
-			false, requires_argument);
-	Option<int> help(string("-h,--help"), 0,
-		string("display this help text"),
-		false,no_argument);
-	Option<int> xdim(string("-x,--xdim"), 0,
-		string("xdim"),
-		false,requires_argument);
-	Option<int> ydim(string("-y,--ydim"), 0,
-		string("ydim"),
-		false,requires_argument);
-	Option<int> econ(string("-e,--econ"), 0,
-		string("econ: how to liump stuff"),
-		false,requires_argument);
-		/*
-}
-*/
-////////////////////////////////////////////////////////////////////////////
-
-// Local functions
-
-void tic(){
-	tictime = clock();
-}
-
-void toc(){
-	cerr << endl << "TOC: " << float(clock()-tictime)/CLOCKS_PER_SEC << " seconds" << endl<<endl;
-}
-
-Matrix calccorr(const Matrix& in, int econ)
-  { 
-    Matrix Res;
-	int nrows=in.Nrows();
-	int ncols=in.Ncols();    
-    Res = zeros(nrows,nrows);
-
-    if(econ>0){
-      RowVector colmeans(ncols);
-	  for (int n=1; n<=ncols; n++) {
-        colmeans(n)=0;
-        for (int m=1; m<=nrows; m++) {
-          colmeans(n)+=in(m,n);
-        }
-        colmeans(n)/=nrows;
-      }
-      int dcol = econ;
-	  Matrix suba; 
-
-      for(int ctr=1; ctr <= in.Ncols(); ctr+=dcol){
-	    suba=in.SubMatrix(1,nrows,ctr,Min(ctr+dcol-1,ncols));
-		int scolmax = suba.Ncols();
-
-		for (int n=1; n<=scolmax; n++) {
-	        double cmean=colmeans(ctr + n - 1);
-	        for (int m=1; m<=nrows; m++) {
-	          suba(m,n)-=cmean;
-	        }
-	    }
-		
-	    Res += suba*suba.t() / ncols;
-      }
-    }
-    else
-      Res = cov(in.t());
-    return Res;
-  }  //Matrix calccorr
-
-void convert_to_mat(volume4D<float>& in, volume<float>& mask, Matrix& out)
-{
-	out = in[0].vec(mask).t();
-	in.deletevolume(0);
-	while(in.tsize()>0){
-		out &= in[0].vec(mask).t();
-		in.deletevolume(0);	
-	}
-}
-
-int do_work(int argc, char* argv[]) {
-	
-
-	tic();
-	Matrix MatrixData;
-	volume<float> Mean;
-  	
-	if(xdim.value()==0 && ydim.value()==0)
-    {
-		volume4D<float> RawData;
-		volume<float> theMask;
-		toc();
-    	//read data
-    	message("Reading data file " << (string)fnin.value() << "  ... ");
-    	read_volume4D(RawData,fnin.value());
-    	message(" done" << endl);
-
-		Mean = meanvol(RawData);
-		toc();
-    	message("Reading mask file " << (string)fnmask.value() << "  ... ");
-      	read_volume(theMask,fnmask.value());
-
-		MatrixData = RawData.matrix();
-
-		memmsg("start");
-		Matrix res;
-		convert_to_mat(RawData,theMask, res);
-
-		memmsg(" Before reshape ");
-    
-		write_ascii_matrix("mat1", res);
-		write_ascii_matrix("mat2", MatrixData);
-		
-
-    }
-	else{
-		Matrix data = unifrnd(xdim.value(),ydim.value());
-	    outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-		
-		data = unifrnd(10,100);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-		
-		data = unifrnd(100,1000);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-		
-		data = unifrnd(100,10000);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-
-		data = unifrnd(300,200000);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();		
-		
-		data = unifrnd(500,20000);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-		
-		data = unifrnd(500,200000);
-		outMsize("data", data);
-		tic(); calccorr(data,econ.value()); toc();
-		
-		
-	}
-	
-	
-	return 0;
-}
-
-////////////////////////////////////////////////////////////////////////////
-
-	int main(int argc,char *argv[]){
-	  Tracer tr("main");
-	  OptionParser options(title, examples);
-	  try{
-	    // must include all wanted options here (the order determines how
-	    //  the help message is printed)
-	
-			options.add(fnin);		
-			options.add(fnmask);		
-			options.add(help);
-			options.add(xdim);
-			options.add(ydim);
-			options.add(econ);
-	    options.parse_command_line(argc, argv);
-
-	    // line below stops the program if the help was requested or 
-	    //  a compulsory option was not set
-	    if ( (help.value()) || (!options.check_compulsory_arguments(true)) ){
-				options.usage();
-				exit(EXIT_FAILURE);
-	    }else{
-	  		// Call the local functions
-	  		return do_work(argc,argv);
-			}
-		}catch(X_OptionError& e) {
-			options.usage();
-	  	cerr << endl << e.what() << endl;
-	    exit(EXIT_FAILURE);
-	  }catch(std::exception &e) {
-	    cerr << e.what() << endl;
-	  } 
-	}
-
diff --git a/meldata.cc b/meldata.cc
index e1fd9b4..fc1ee3e 100644
--- a/meldata.cc
+++ b/meldata.cc
@@ -56,6 +56,16 @@ namespace Melodic{
     	tmpData = RawData.matrix(Mask);
 		memmsg(" after reshape ");	  
 	}    
+
+  // If a time series model design was specified, check 
+  // that the data dimensions match the model dimensions
+  if (Tdes.Storage() && (tmpData.Nrows() != Tdes.Nrows())) {
+
+    cerr << "ERROR: " << fname << " " << 
+      "- data dimensions (" << tmpData.Nrows() << ") "  << 
+      "do not match model dimensions (" << Tdes.Nrows() << ")" << endl;
+    exit(2);
+  } 
         
     //convert to percent BOLD signal change
     if(opts.pbsc.value()){
@@ -79,7 +89,7 @@ namespace Melodic{
 	if(opts.remove_meantc.value()){
 		remmean(tmpData,meanC,2);
 	}
-		
+	
     //convert to power spectra
     if(opts.pspec.value()){
       message("  Converting data to powerspectra ...");
@@ -115,48 +125,18 @@ namespace Melodic{
       message(" done" << endl);
     }
 
-	//INSTACORRS
-	Matrix tmpTC;
-	tmpTC = tmpData * insta_maps.t();		
-	
-	if(opts.insta_fn.value().length()>0){
-	    dbgmsg(string("BEGIN: INSTACORR") << endl);
-		if(opts.insta_idx.value()<1 || opts.insta_idx.value()>tmpTC.Ncols()){
-			cerr << "ERROR:: INSTACORR index is wrong  \n\n";
-		    exit(2);
-		}
-
-		Matrix tmpRef = tmpTC.Column(opts.insta_idx.value());		
-		if(opts.insta_idx.value()>1){
-			// swap columns
-			dbgmsg(string("INSTACORR: swap columns") << endl);		
-			tmpTC.Column(opts.insta_idx.value()) << tmpTC.Column(1);
-			tmpTC.Column(1) << tmpRef;
-		}
-
-		if(opts.insta_partial.value() && tmpTC.Ncols()>1){
-			// partal correlations
-			dbgmsg(string("INSTACORR: partial analysis") << endl);			
-			Matrix tmpConf = tmpTC.Columns(2,tmpTC.Ncols());	
-			tmpData -= tmpConf * (pinv(tmpConf) * tmpData);	
-			tmpRef -=  tmpConf * (pinv(tmpConf) * tmpRef);	
-		}
-
-		if(opts.insta_varnorm.value()){
-				dbgmsg(string("INSTACORR: varnorm") << endl);
-			Matrix vscales = pow(stdev(tmpData,1),-1);
-			varnorm(tmpData,vscales);
-			varnorm(tmpRef,pow(stdev(tmpRef,1),-1));
-		}
+	//convert to instacorrs
+	if(opts.insta_fn.value()>""){
+		Matrix vscales = pow(stdev(tmpData,1),-1);
+		varnorm(tmpData,vscales);
 		
-		// Shur product
-			dbgmsg(string("INSTACORR: SP") << endl);
-		SP4(tmpData,tmpRef);
+		Matrix tmpTC = tmpData * insta_mask.t();
+		varnorm(tmpTC,pow(stdev(tmpTC),-1));
 		
-		dbgmsg(string("END: INSTACORR") << endl);
-	}
-	//END INSTACORRS
+		for(int ctr=1; ctr <=tmpData.Ncols();ctr++)
+			tmpData.Column(ctr) = SP(tmpData.Column(ctr),tmpTC);
 
+	}
 
 	tmpData.Release();
 	dbgmsg(string("END: process_file") << endl);	
@@ -650,6 +630,19 @@ namespace Melodic{
       create_RXweight();
     }
 
+	//set up instacorr mask image
+	if(opts.insta_fn.value()>""){
+		dbgmsg(string(" Setting up instacorr mask") << endl);
+		volume4D<float> tmp_im;
+		read_volume4D(tmp_im,opts.insta_fn.value());
+	
+		if(!samesize(Mean,tmp_im[0])){
+	        	cerr << "ERROR:: instacorr mask and data have different voxel dimensions  \n\n";
+	        	exit(2);
+		}	
+		insta_mask = tmp_im.matrix(Mask); 
+	}
+
     //seed the random number generator
     double tmptime = time(NULL);
     if ( opts.seed.value() != -1 ) {
@@ -687,8 +680,20 @@ namespace Melodic{
 		TconF = read_ascii_matrix(opts.fn_TconF.value());
 	if(opts.fn_SconF.value().length()>0)
 		SconF = read_ascii_matrix(opts.fn_SconF.value());
-		
-	if(numfiles>1 && Sdes.Storage() == 0){
+
+  // Check that the number of input 
+  // files matches the session design
+  if (Sdes.Storage()) {
+    if (Sdes.Nrows() != numfiles) {
+      cerr << "ERROR: Number of input files (" << numfiles << ") " <<
+        "does not match subject/session design (" << Sdes.Nrows() << ")" << endl;
+      exit(2);
+    }
+  }			
+  
+  // Or create a default session design 
+  // if one was not specified
+  else if(numfiles>1){		
  		Sdes = ones(numfiles,1);
 		if(Scon.Storage() == 0){
 			Scon = ones(1,1);
@@ -697,20 +702,6 @@ namespace Melodic{
 	}
 	remmean(Tdes);
 	
-	//INSTACORRS
-	if(opts.insta_fn.value().length()>0){
-		message("  Reading in " << opts.insta_fn.value() 
-		      << " for instantaneous correlation analysis" <<endl);
-		volume4D<float> tmp_im;
-		read_volume4D(tmp_im,opts.insta_fn.value());
-
-		if(!samesize(Mean,tmp_im[0])){
-		       	cerr << "ERROR:: instacorr mask and data have different voxel dimensions  \n\n";
-		       	exit(2);
-		}	
-		insta_maps = tmp_im.matrix(Mask);
-	}	
-	
 	dbgmsg(string("END: setup_misc") << endl);	
     
   }
diff --git a/melgmix.cc b/melgmix.cc
deleted file mode 100644
index c8a8707..0000000
--- a/melgmix.cc
+++ /dev/null
@@ -1,687 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melgmix.cc - Gaussian Mixture Model
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT */
-
-#include "newimage/newimageall.h"
-//#include "melmmopts.h"
-#include "melgmix.h"
-//#include "melmm.h"
-#include "utils/log.h"
-#include "miscmaths/miscprob.h"
-#include <time.h>
-#include "libvis/miscplot.h"
-#include "libvis/miscpic.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-using namespace MISCPLOT;
-using namespace MISCPIC;
-
-string float2str(float f,int width, int prec, bool scientif){
- 	ostringstream os;
-  int redw = int(std::abs(std::log10(std::abs(f))))+1;
-  if(width>0)
-    os.width(width);
-  if(scientif)
-    os.setf(ios::scientific);
-  os.precision(redw+std::abs(prec));
-  os.setf(ios::internal, ios::adjustfield);
-  os << f;
-  return os.str();
-} 
-  
-namespace Melodic{
-  
-  void MelGMix::setup(const RowVector& dat, 
-		const string dirname,
-		int cnum, volume<float> themask, 
-		volume<float> themean, 
-		int num_mix, float eps, bool fixit){
-    	cnumber = cnum;
-    	Mask = themask;
-    	Mean = themean;
-    	prefix = string("IC_")+num2str(cnum);
-    	
-    	fitted = false;
-    	nummix = num_mix;
-    	numdata = dat.Ncols();
-    
-    	//normalise data 
-    	datamean = mean(dat,2).AsScalar();
-    	datastdev= stdev(dat,2).AsScalar();
-    	data=(dat - datamean)/datastdev;
-
-			dbgmsg(" mapdat; mean: " << datamean << " std: " <<datastdev << endl);
-
-    	props=zeros(1,nummix);
-    	vars=zeros(1,nummix);
-    	means=zeros(1,nummix);
-    	Params=zeros(1,nummix);
-    	logprobY = 1.0;
-
-    	props = std::pow(float(nummix),float(-1.0));
-
-    	Matrix tmp1;
-    	tmp1 = data * data.t() / numdata;
-    	vars = tmp1.AsScalar();
-
-    	float Dmin, Dmax, IntSize;
-    	Dmin =  min(data).AsScalar(); Dmax = max(data).AsScalar();
-    	IntSize = Dmax / nummix;
-
-    	means(1)=mean(data,2).AsScalar(); 
-    	for (int ctr=2; ctr <= means.Ncols(); ctr++){
-      	means(ctr) =  Dmax - (ctr - 1.5) * IntSize; 
-    	}
-    	means(2)=means(1)+2*sqrt(vars(1));
-    	if(nummix>2)
-        means(3)=means(1)-2*sqrt(vars(1));
-
-    	epsilon = eps;
-    	if(epsilon >=0 && epsilon < 0.0000001)
-      	{epsilon = std::log(float(dat.Ncols()))/1000 ;}
-    	fixdim = fixit;
-			dbgmsg(" parameters; " << means << " : " << vars << " : " << props << endl);
-		}
-
-  Matrix MelGMix::threshold(const RowVector& dat, string levels){ 
-    Matrix Res;
-    Res = 1.0;
-    string tmpstr;
-    tmpstr = levels;
-    //cerr << " Levels : " << levels << endl << endl;
-    Matrix levls(1,4);
-    levls = 0;
-    Matrix fpr;
-    Matrix fdr;
-    Matrix nht;
-
-    char *p;
-    char t[1024];
-    const char *discard = ", [];{(})abceghijklmoqstuvwxyzABCEGHIJKLMNOQSTUVWXYZ~!@#$%^&*_-=+|\':></?";
-
-    strcpy(t, tmpstr.c_str());
-    p=strtok(t,discard);
-    while(p){
-      Matrix New(1,1);
-      New(1,1) = atof(p);
-      if(strchr(p,'d')){
-				levls(1,3)++;
-				if(fdr.Storage()>0){
-	  			fdr = fdr | New;
-				}else{
-	  			fdr = New;
-				}
-      }else{
-				if(strchr(p,'p')){
-	  			levls(1,2)++;
-	  			if(fpr.Storage()>0){
-	    			fpr = fpr | New;
-	  			}else{
-	    			fpr = New;
-	  			}
-				}else{
-	  			if(strchr(p,'n')){
-	    			levls(1,4)++;
-	    			if(nht.Storage()>0){
-	      			nht = nht | New;
-	    			}else{
-	      			nht = New;
-	    			}
-	  			}else{
-	    			levls(1,1)++;
-	    			levls = levls | New;
-	  			}
-				}
-      }
-      p=strtok(NULL,discard);
-    }
-
-    if(fpr.Storage()>0){levls = levls | fpr;}
-    if(fdr.Storage()>0){levls = levls | fdr;}
-    if(nht.Storage()>0){levls = levls | nht;}
-    
-  //  cerr << " levles : " << levls << endl << endl;
-    Res = threshold(data, levls);
-    set_threshmaps(Res);
-
-    return Res;
-  }
-
-  Matrix MelGMix::threshold(const RowVector& dat, Matrix& levels){  
-  	Matrix tests;
-    tests=levels;
-    Matrix Nprobs;
-
-    //if only single Gaussian: resort to nht
-    if(nummix==1||props(1)>0.999||probmap.Sum()<0.05){
-    	if(levels(1,4)==0){
-				Matrix New(1,6);
-				New(1,5)=0.05;
-				New(1,6)=0.01;
-				New(1,4)=2;New(1,1)=0;New(1,2)=0;New(1,3)=0;tests=New;
-      }else{
-				Matrix New;
-				New = levels.Columns(int(1+levels(1,1)+levels(1,2)
-				 	+levels(1,3)),levels.Ncols());
-				New(1,4) = levels(1,4);
-				New(1,1)=0;New(1,1)=0;New(1,3)=0;
-				tests=New;
-      }
-    }
-
-    int numtests = int(tests(1,1)+tests(1,2)+tests(1,3)+tests(1,4));    
-    Matrix Res(numtests,numdata);
-    Res = 0.0;
-    int next = 1;
-
-    for(int ctr1=1;ctr1<=tests(1,1);ctr1++){
-      if(4+next <= tests.Ncols()){
-				message("   alternative hypothesis test at p > " << tests(1,4+next) << endl);
-				add_infstr(" alternative hypothesis test at p > "+float2str(tests(1,4+next),0,2,false));
-				Matrix tmpNull;
-				tmpNull = dat;
-/*	
-				float cutoffpos, cutoffneg;
-				cutoffpos = means(1)+100*std::sqrt(vars(1)+0.0000001);
-				cutoffneg = means(1)-100*std::sqrt(vars(1)+0.0000001);
-	
-				for(int ctr=1; ctr<=tmpNull.Ncols(); ctr++)
-	  			if( probmap(ctr) > tests(1,4+next) ){
-	    			if( dat(ctr) > means(1) )
-	      			cutoffpos = std::min(cutoffpos, float(dat(ctr)));
-	    			else
-	      			cutoffneg = std::max(cutoffneg, float(dat(ctr)));
-	 				}
-	
-				for(int ctr=1; ctr<=tmpNull.Ncols(); ctr++)
-	  			if( (dat(ctr) > cutoffneg) && (dat(ctr) < cutoffpos) )
-	    			tmpNull(1,ctr)=0.0;
-*/
-				for(int ctr=1; ctr<=tmpNull.Ncols(); ctr++)
-					if( probmap(ctr) < tests(1,4+next) ){	
-						tmpNull(1,ctr)=0.0;
-						}
-							
-				Res.Row(next) << tmpNull;
-      }
-      next++;
-    }
-    
-    for(int ctr1=1;ctr1<=tests(1,2);ctr1++){
-      if(4+next <=tests.Ncols()){
-				cerr << " false positives control " << tests(1,4+next)<<endl;
-				Matrix tmp1;
-				tmp1 = normcdf(dat,means(1),vars(1));
-				Matrix tmpNull;
-				tmpNull = dat; 
-				for(int ctr=1; ctr<=tmp1.Ncols(); ctr++)
-	  			if(tmp1(1,ctr) < tests(1,4+next))
-	    		tmpNull(1,ctr)=0.0;
-				Res.Row(next) << tmpNull;
-      }
-      next++;
-    }
-
-    for(int ctr1=1;ctr1<=tests(1,3);ctr1++){
-      if(4+next <=tests.Ncols()){
-				message("   Local False Discovery Rate control at p < " << tests(1,4+next) << endl);
-				add_infstr(" Local False Discovery Rate control at p < "+float2str(tests(1,4+next),0,2,false));
-				RowVector tmp=dat;
-				SortAscending(tmp);
-				RowVector newcdf(tmp);
-	  		newcdf << normcdf(tmp,means(1),vars(1));
-
-				float thrp = tmp(tmp.Ncols())+0.01;
-				float thrn = tmp(1)-0.01;
-				int ctr=tmp.Ncols();
-				do{
-					thrp = tmp(ctr);
-					ctr-=1;
-				}while(ctr>0 && ( (1.0-newcdf(ctr))*tmp.Ncols() < (tests(1,4+next)*(tmp.Ncols()-ctr+1))   ));
-
-				ctr=1;
-				do{
-					thrn = tmp(ctr);
-					ctr+=1;
-				}while(ctr<=tmp.Ncols() && ( (newcdf(ctr))*tmp.Ncols() < (tests(1,4+next)*ctr)));
-
-				tmp = dat;
-				for(ctr=1; ctr<=tmp.Ncols();ctr++)
-					if((tmp(ctr) < thrp)&&(tmp(ctr) > thrn))
-					tmp(ctr) = 0.0;
-				Res.Row(next) << tmp;
-      }
-			next++;
-    }
-
-    for(int ctr1=1;ctr1<=tests(1,4);ctr1++){
-      if(4+next <=tests.Ncols()){
-				message("   2-sided null hypothesis test at " << tests(1,4+next)<<endl);
-				add_infstr(" 2-sided null hypothesis test at "+float2str(tests(1,4+next),0,2,false));
-				double mu, sig;
-				mu  = dat.Sum()/numdata;
-				sig = var(dat,2).AsScalar();
-				Matrix tmp1;
-				tmp1 = normcdf(dat,mu,std::abs(sig));
-				Matrix tmpNull;
-				tmpNull = dat; 
-				for(int ctr=1; ctr<=tmp1.Ncols(); ctr++)
-	  			if((tmp1(1,ctr) < 1-0.5*(tests(1,4+next))&&
-	      		(tmp1(1,ctr) > 0.5*(tests(1,4+next)))))
-	    				tmpNull(1,ctr)=0.0;
-				Res.Row(next) << tmpNull;
-      }
-      next++;
-    }
-   
-    return Res;
-	}
-
-  /* GMM fitting  */
-
-  void MelGMix::gmmupdate(){
-    int it_ctr = 1;
-    bool exitloop = false;
-    float oldll;
-
-    Matrix tmp0;Matrix tmp1;Matrix prob_K__y_theta;
-    Matrix kdata;
-    RowVector prob_Y__theta;RowVector Nbar;
-    RowVector mubar;RowVector sigmabar;RowVector pibar;
-    
-    do{
-      oldll = logprobY;
-
-      //make sure all variances are acceptable
-      for(int ctr1=1; ctr1 <=vars.Ncols(); ctr1++)
-      	if(vars(ctr1)<0.0001){
-      	  vars(ctr1) = 0.0001;
-      	}
-
-      tmp0 = normpdf(data,means,vars);
-      tmp1 = SP(props.t()*ones(1,numdata),tmp0);      
-      prob_Y__theta << sum(tmp1,1);
-      logprobY = log(prob_Y__theta).Sum();
-      prob_K__y_theta = SP(tmp1,pow(ones(nummix,1)*prob_Y__theta,-1));
-      Nbar << sum(prob_K__y_theta,2).t();
-      pibar = Nbar / numdata;
-      kdata = ones(nummix,1)*data;
-      mubar <<SP(sum(SP(kdata,prob_K__y_theta),2).t(),pow(Nbar,-1));    
-      kdata -= mubar.t()*ones(1,numdata);
-      kdata = pow(kdata,2);
-      sigmabar << SP(sum(SP(kdata,prob_K__y_theta),2).t(),pow(Nbar,-1));
-      
-      means = mubar;
-      vars  = sigmabar;
-      props = pibar;
-
-      if(epsilon<0){exitloop = it_ctr >= -epsilon;}
-      else{exitloop = (((logprobY-oldll < epsilon)&&(it_ctr>20))
-		  	||(it_ctr>400));}      
-      it_ctr++;
-    }while(!exitloop);
-  }
-
-  void MelGMix::gmmfit(){
-    int i,j;
-
-    if(fixdim){
-      if(nummix>1){
-				gmmupdate();
-				add_params(means,vars,props,logprobY,MDL,Evi,true);
-      }else{
-				means.ReSize(1);
-				means = data.Sum()/numdata;
-				vars.ReSize(1);
-				vars = var(data,2);
-				props.ReSize(1);
-				props = 1.0;
-				gmmevidence();
-      }
-    }else{
-      RowVector Score(Params.Ncols());
-      do{
-				gmmupdate();
-				Score(nummix) = gmmevidence();    
-				int idx1,idx2;
-				RowVector pitmp = props;
-     
-				pitmp.MaximumAbsoluteValue1(idx1);
-				pitmp(idx1)=0.0;
-				pitmp.MaximumAbsoluteValue1(idx2);
-	
-				if(props.MaximumAbsoluteValue1(i)<0.9){
-	  			if((vars(idx2)>0.15)&&
-	     			(std::abs(means(idx2)-means(idx1))<0.5*vars(idx1))){
-	    				Score(nummix) = Score(nummix)/(2*(means(idx1)));
-	  				}	     
-				}
-	
-				add_params(means,vars,props,logprobY,MDL,Evi,true);
-     
-				gmmreducemm();
-				means = means.Columns(1,nummix);
-				vars  = vars.Columns(1,nummix);
-				props = props.Columns(1,nummix);
-
-      }while(nummix>1);
-      means.ReSize(1);
-      means = data.Sum()/numdata;
-      vars.ReSize(1);
-      vars = var(data,2);
-      props.ReSize(1);
-      props = 1.0;
-      Score(nummix) = gmmevidence();
-      add_params(means,vars,props,logprobY,MDL,Evi,true);
-      //identify best MM
-      Score.MinimumAbsoluteValue2(i,j);
-      means.ReSize(j);
-      vars.ReSize(j);
-      props.ReSize(j);
-      nummix = j;
-      int index; index = 3 + (j-1)*5; 
-      means = Params.SubMatrix(index,index,1,j);
-      vars  = Params.SubMatrix(index+1,index+1,1,j);
-      props = Params.SubMatrix(index+2,index+2,1,j);
-    }
-
-    props.MaximumAbsoluteValue2(i,j);
-    if(j>1){
-      float tmp;
-      tmp = means(1);means(1) = means(j);means(j)=tmp;
-      tmp = vars(1);vars(1) = vars(j);vars(j)=tmp;
-      tmp = props(1);props(1) = props(j);props(j)=tmp;
-    }
-    
-    add_params(means,vars,props,logprobY,MDL,Evi,true);
-
-    if(nummix==1)
-      probmap << normcdf(data,means(1),vars(1));
-    else{
-      Matrix Nprobs;
-      Matrix tmp0;
-      tmp0 = normpdf(data,means,vars);
-      Nprobs = SP(props.t()*ones(1,numdata),tmp0);
-      tmp0 = ones(Nprobs.Nrows(),1)*pow(sum(Nprobs,1),-1);
-      Nprobs = SP(tmp0,Nprobs);
-      probmap << SP(sum(Nprobs.Rows(2,Nprobs.Nrows()),1),
-		    pow(sum(Nprobs,1),-1));
-    } 
-  }
-
-  float MelGMix::gmmevidence(){
-    Matrix tmp0;
-    if(means.Ncols()>1){
-      tmp0 = normpdf(data,means,vars); 
-    }else{
-      tmp0 = normpdf(data,means.AsScalar(),vars.AsScalar());
-    }
-    Matrix tmp1;
-    tmp1 = SP(props.t()*ones(1,numdata),tmp0);
-    tmp0 = SP(tmp0,pow(ones(nummix,1)*sum(tmp1,1),-1));
-    tmp0 = pow(tmp0-ones(nummix,1)*tmp0.Row(nummix),2);
-    float logH = 0;
-    if(means.Ncols()>1){
-      logH = sum(log(sum(tmp0.Rows(1,nummix-1),2)),1).AsScalar();
-    }
-    logH = logH + 2*sum(log(std::sqrt(2.0)*numdata*props),2).AsScalar();
-    logH = logH - 2*sum(props,2).AsScalar();
-    
-    RowVector prob_Y__theta;
-    prob_Y__theta << sum(tmp1,1);    
-    logprobY = log(prob_Y__theta).Sum();     
-    MDL = -logprobY + (1.5*nummix-0.5)* std::log(float(numdata));   
-    Evi = -logprobY +nummix*std::log(2.0)-std::log(MISCMATHS::gamma(nummix))
-      -3*nummix/2*std::log(M_PI)+0.5*logH;
-  
-    return Evi;
-  }
-
-  void MelGMix::gmmreducemm(){
-    Matrix dlm(nummix,nummix);
-    Matrix mus(nummix,nummix);
-    Matrix rs(nummix,nummix);
-
-    for(int ctri=1;ctri<=nummix; ctri++){
-      for(int ctrj=1;ctrj<=nummix; ctrj++){
-				mus(ctri,ctrj) = (props(ctri)*means(ctri)+props(ctrj)*means(ctrj))
-	      	/(props(ctri)+props(ctrj));
-        rs(ctri,ctrj)  = (props(ctri)*(vars(ctri)+
-			  std::pow(means(ctri)-mus(ctri,ctrj),2) ) 
-        	+ props(ctrj)*(vars(ctrj) 
-         	+ std::pow(means(ctrj)-mus(ctri,ctrj),2))) 
-	        / (props(ctri)+props(ctrj));
-				dlm(ctri,ctrj) = 0.5*numdata*(
-			 		props(ctri)*std::log(
-          std::abs(rs(ctri,ctrj))/std::abs(vars(ctri))) 
-			 		+ props(ctrj)*std::log(std::abs(rs(ctri,ctrj))
-          / std::abs(vars(ctrj))));
-      }
-    }
-
-    dlm += IdentityMatrix(nummix)*dlm.Maximum();
-
-    int i,j;
-    float val;
-    val=dlm.MinimumAbsoluteValue2(i,j);
-
-    nummix--;
-    
-    RowVector newmean(nummix);
-    RowVector newvars(nummix);
-    RowVector newprop(nummix);
-
-    int ctr0 = 1;
-    for(int ctr=1; ctr<=nummix+1; ctr++){
-      if(ctr!=i&&ctr!=j){
-				newmean(ctr0) = means(ctr);
-				newvars(ctr0) = vars(ctr);
-				newprop(ctr0) = props(ctr);
-				ctr0++;
-      }
-    }
-    //cerr << "ctr0   " << ctr0 << endl;
-    if(ctr0<=nummix){
-      newmean(ctr0) = mus(i,j);
-      newvars(ctr0) = rs(i,j);
-      newprop(ctr0) = props(i)+props(j);
-      
-      means = newmean;    
-      vars=newvars;
-      props=newprop;
-    }
-  }
-
-  void MelGMix::ggmfit(){
-  	// fit a mixture of a Gaussian and multiple Gamma functions to the histogram
-  
-    float log_p_y_theta = 1.0;
-    float old_ll = 2.0;
-    float g_eps = 0.000001;
-    int it_ctr = 0;
-    double Dmax, Dmin;
-   
-    Dmax = 2 * data.Maximum();
-    Dmin = -2 * data.Minimum();
-
-    //resize means, vars and props
-    if(nummix > 3)
-      nummix = 3;
-    means = means.Columns(1,nummix);
-    vars  = vars.Columns(1,nummix);
-    props = props.Columns(1,nummix);
-
-    means(1) = -2*mean(data,2).AsScalar();
-
-    Matrix tmp1;Matrix prob_K__y_theta;
-    Matrix kdata;
-    RowVector prob_Y__theta;RowVector Nbar;
-    RowVector mubar;RowVector sigmabar;RowVector pibar;
-    Matrix p_ygx(nummix,numdata);
-    offset = 0.0;
-    float const2;
-    Matrix negdata(data);
-    negdata = -data;
-
-    while((it_ctr<30) ||
-	  ((std::abs(old_ll - log_p_y_theta)>g_eps) && (it_ctr<500))){ // fit GGM	
- 			it_ctr++;
-			//offset = (std::min(0.2,1-props(1)))*std::sqrt(vars(1));
-
-			//make sure all variances are acceptable
- 			for(int ctr1=1; ctr1 <=nummix; ctr1++)
- 	  		if(vars(ctr1)<0.0001){
- 	    		vars(ctr1) = 0.0001;
- 	  		}
-
- 				p_ygx = 0.0;
- 				p_ygx.Row(1) << normpdf(data,means(1),vars(1));
-       
- 				const2 = (2.6-props(1))*sqrt(vars(1))+means(1); //min. nht level
- 
-				means(2) = (std::max(means(2), std::max(0.001,
-	   			0.5 * ( const2 + std::sqrt( const2*const2 + 4*vars(2))))));
-				vars(2)  = std::max(std::min(vars(2), 0.5*std::pow(means(2),2)),0.0001);
-				p_ygx.Row(2) << gammapdf(data,means(2),vars(2));
-   
- 				if(nummix>2){
-	  			const2 = (2.6-props(1))*sqrt(vars(1))-means(1);
-	
-	  			means(3) = -(std::max(-means(3), std::max(0.001,
-	      		0.5 * ( const2 + std::sqrt( const2*const2 + 4*vars(3))))));
-	  			vars(3)  = std::max(std::min(vars(3), 0.5*std::pow(means(3),2)),0.0001);
- 	  			p_ygx.Row(3) << gammapdf(negdata,-means(3),vars(3));
-				}
-
- 				tmp1 = SP(props.t()*ones(1,numdata),p_ygx);
- 				prob_Y__theta << sum(tmp1,1);
-	
-				//deal with non-modelled voxels
-				for(int ctr=1; ctr<=tmp1.Ncols(); ctr++)
-	  			if(prob_Y__theta(ctr) < 0.0001)
-	    			prob_Y__theta(ctr) = 0.0001;
-
- 				old_ll = log_p_y_theta;
- 				log_p_y_theta = log(prob_Y__theta).Sum();
- 				if((it_ctr<30) ||
-	   			((std::abs(old_ll - log_p_y_theta)>g_eps) && (it_ctr<300))){//update
-	  
- 	  			prob_K__y_theta = SP(tmp1,pow(ones(nummix,1)*prob_Y__theta,-1));
- 	  			Nbar << sum(prob_K__y_theta,2).t();
-	  			for(int ctr=1; ctr<=Nbar.Ncols(); ctr++)
-	    			if(Nbar(ctr) < 0.0001 * numdata)
-	      			Nbar = Nbar + 0.0001;
- 	  			pibar= Nbar / numdata;
-	  			// 	  cerr << "pibar :" << pibar << endl;
- 	  			kdata = ones(nummix,1)*data;
- 	  			mubar <<SP(sum(SP(kdata,prob_K__y_theta),2).t(),pow(Nbar,-1)); 
-	  			// 	  cerr << "mubar :" << mubar << endl;
-
- 	  			kdata -= mubar.t()*ones(1,numdata);
- 	  			kdata = pow(kdata,2);
- 	  			sigmabar << SP(sum(SP(kdata,prob_K__y_theta),2).t(),pow(Nbar,-1));
-      
- 	  			means = mubar;
- 	  			vars  = sigmabar;
- 	  			props = pibar;
- 					}//update
-    } //while loop
-
-    props = props / sum(props,2).AsScalar();
-    add_params(means,vars,props,logprobY,MDL,Evi,true);
-	
-    probmap << SP(sum(tmp1.Rows(2,tmp1.Nrows()),1),
-		  pow(sum(tmp1,1),-1));
-
-	dbgmsg("   mu: " << means << "  sig: " << vars << " prop: " << props << endl);
-
-   	if(props(1)<0.4 ){
-      //set up GMM
-      message("    try Gaussian Mixture Model " << endl);
-      props=zeros(1,nummix);
-      vars=zeros(1,nummix);
-      means=zeros(1,nummix);
-      Params=zeros(1,nummix);
-      logprobY = 1.0;  
-      props = std::pow(float(nummix),float(-1.0));
-
-      tmp1 = data * data.t() / numdata;
-      vars = tmp1.AsScalar();
-      float Dmin, Dmax, IntSize;
-      Dmin = min(data).AsScalar(); Dmax = max(data).AsScalar();
-      IntSize = Dmax / nummix;
-      means(1)=mean(data,2).AsScalar(); 
-      for (int ctr=2; ctr <= means.Ncols(); ctr++){
-		means(ctr) =  Dmax - (ctr - 1.5) * IntSize; 
-      }
-      means(2)=means(1)+sqrt(vars(1));
-      if(nummix>2)
-		means(3)=means(1)-sqrt(vars(1));
-      
-      fit(string("GMM"));
-    }
-
-  }
-
-  /*  INPUT / OUTPUT  */
-
-  void MelGMix::add_params(Matrix& mu, Matrix& sig, Matrix& pi, 
-		float logLH, float MDL, float Evi, bool advance){ 
-    int size = Params.Ncols();
-    if(size<2){size=2;}
-    Matrix New(5,size);
-    New = 0;
-    
-    New.SubMatrix(3,3,1,mu.Ncols())=mu;
-    New.SubMatrix(4,4,1,mu.Ncols())=sig;
-    New.SubMatrix(5,5,1,mu.Ncols())=pi;
-    New(1,1)=nummix;
-  
-    New(1,2)=-logLH;
-    New(2,1)=Evi;
-    New(2,2)=MDL;
-    if(Params.Storage()>nummix){ 
-      Params = New & Params;
-    }else{ 
-      Params =  New;
-    }
-    }
-
-  void MelGMix::get_params(int index, Matrix& mu, Matrix& sig, Matrix& pi, 
-		float logLH, float MDL, float Evi){ 
-   
-    }
-
-  void MelGMix::save(){
-    
-  }
-
-  void MelGMix::status(const string &txt){
-    cerr << txt << "epsilon " << epsilon << endl;
-    cerr << txt << "nummix  " << nummix << endl;
-    cerr << txt << "numdata " << numdata << endl;
-    cerr << txt << "means   " << means << endl;
-    cerr << txt << "vars    " << vars << endl;
-    cerr << txt << "props   " << props << endl;
-    //write_ascii_matrix(logger.appendDir(string(txt + "means")),means);
-    //write_ascii_matrix(logger.appendDir(string(txt + "vars")),vars);
-    //write_ascii_matrix(logger.appendDir(string(txt + "props")),props);
-  }
-
-  void MelGMix::create_rep(){
- 
-  }
-  
-
-}
-
-
-
diff --git a/melgmix.h b/melgmix.h
deleted file mode 100644
index 357eaae..0000000
--- a/melgmix.h
+++ /dev/null
@@ -1,207 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melgmix.h - class for Gaussian/Gamma Mixture Model
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT */
-
-#ifndef __MELGMIX_h
-#define __MELGMIX_h
-
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "melodic.h"
-#include "utils/options.h"
-#include "meloptions.h"
-//#include "melreport.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-
-namespace Melodic{
-  
-  class MelGMix{
-    public:
- 
-      MelGMix(MelodicOptions &popts, Log &plogger):
-				opts(popts),
-				logger(plogger){}
-
-      ~MelGMix() { 
-				//mainhtml << endl << "<hr></CENTER></BODY></HTML>" << endl;
-	  	}
-
-      void save();
-
-      void setup(const RowVector& dat, const string dirname,
-		 		int here, volume<float> themask, 
-		 		volume<float> themean, int num_mix = 3, 
-		 		float eps = 0.0, bool fixdim = false);
-      
-      void gmmfit();
-      void ggmfit();
-
-      inline void fit(string mtype = string("GGM")){
-	  		mmtype = mtype;
-	  		if(mmtype==string("GGM")) 
-	    		this->ggmfit(); 
-	  		else 
-	    		this->gmmfit();
-
-	  		//re-insert mean and stdev
-	  		data = data*datastdev + datamean;
-	  		//threshmaps = threshmaps*datastdev + datamean;
-	  		means = means*datastdev + datamean;
-	  		vars = vars*datastdev*datastdev;
-			}
-
-      inline Matrix threshold(string levels){
-				return this->threshold(data, levels);
-			}
-      inline Matrix threshold(RowVector& levels){ 
-				return this->threshold(data, levels);
-			}
-      Matrix threshold(const RowVector& dat, Matrix& levels);
-      Matrix threshold(const RowVector& dat, string levels);
-
-      void status(const string &txt);
- 
-      inline RowVector& get_means() {return means;}
-      inline void set_means(RowVector& Arg) {means = Arg;}
-    
-      inline RowVector& get_vars() {return vars;}
-      inline void set_vars(RowVector& Arg) {vars = Arg;}
-      
-      inline RowVector& get_pi() {return props;}
-      inline void set_pi(RowVector& Arg) {props = Arg;}
-      
-      inline RowVector& get_data() {return data;}
-      inline void set_data(RowVector& Arg) {data = Arg;}
-
-      inline RowVector& get_prob() {return probmap;}
-
-      inline float get_eps() {return epsilon;}
-      inline void set_eps(float Arg) {epsilon = Arg;}
-
-      inline Matrix& get_threshmaps() {return threshmaps;}
-      inline void set_threshmaps(Matrix& Arg) {threshmaps = Arg;}
-
-      inline bool isfitted(){return fitted;}
-
-      inline int mixtures(){return nummix;}
-     
-      inline string get_type() { return mmtype;}
-      inline void set_type(string Arg) { mmtype = Arg;}
-      
-      inline string get_prefix() { return prefix;}
-      inline void  set_prefix(string Arg) { prefix = Arg;}
-
-      inline RowVector get_probmap() {return probmap;}
-
-      inline float get_offset() {return offset;}
-      inline void set_offset(float Arg) {offset = Arg;}
-
-      inline void flipres(int num){
-				means = -means;
-				data = -data;
-				threshmaps = -threshmaps;
-				if(mmtype=="GGM"){
-	  			float tmp;
-	  			tmp= means(2);means(2)=means(3);means(3)=tmp;
-	  			tmp=vars(2);vars(2)=vars(3);vars(3)=tmp;
-	  			tmp=props(2);props(2)=props(3);props(3)=tmp;
-				}
-      }      
-
-      void create_rep();
-
-      inline void add_infstr(string what){
-				threshinfo.push_back(what);
-      }
-
-      inline string get_infstr(int num){
-				if((threshinfo.size()<(unsigned int)(num-1))||(num<1))
-	  			return string("");
-				else
-	  			return threshinfo[num-1];
-      }
-
-      inline int size_infstr(){
-      	return threshinfo.size();
-      }
-
-      inline void clear_infstr(){
-				threshinfo.clear();
-      }
-
-      inline void smooth_probs(float howmuch){
-				volume4D<float> tempVol;
-				tempVol.setmatrix(probmap,Mask);
-        tempVol[0]= smooth(tempVol[0],howmuch);
-        probmap = tempVol.matrix(Mask);
-      }
-
-	  inline Matrix get_params(){
-		Matrix tmp = zeros(3,means.Ncols());
-		tmp.Row(1) = means;
-		tmp.Row(2) = vars;
-		tmp.Row(3) = props;
-		return tmp;
-      }
-
-      double datamean;
-      double datastdev;
-
-    private:
-      __attribute__((unused)) MelodicOptions &opts;     
-      __attribute__((unused)) Log &logger; //global log file
-
-      //Log mainhtml;
-
-      void gmmupdate();
-      float gmmevidence();
-      void gmmreducemm();
-      void add_params(Matrix& mu, Matrix& sig, Matrix& pi, 
-		    float logLH, float MDL, float Evi, bool advance = false);
-      void get_params(int index, Matrix& mu, Matrix& sig, Matrix& pi, 
-		    float logLH, float MDL, float Evi);
-
-      Matrix Params;
-      Matrix threshmaps;
-
-      RowVector means;
-      RowVector vars;
-      RowVector props;
-      RowVector data;
-      RowVector probmap;
-
-      volume<float> Mean;
-      volume<float> Mask;
-
-      float epsilon;
-      float logprobY;
-      float MDL;
-      float Evi;
-      float offset;
-
-      int nummix;
-      int numdata;
-      int cnumber;
-
-      bool fitted;
-      bool fixdim;
-
-      string prefix;
-      string mmtype;
-      string dirname;
-
-      vector<string> threshinfo;
-
-  };
-}
-
-#endif
diff --git a/melhlprfns.cc b/melhlprfns.cc
deleted file mode 100644
index 76fa04c..0000000
--- a/melhlprfns.cc
+++ /dev/null
@@ -1,924 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melhlprfns.cc - misc functions
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#include "melhlprfns.h"
-#include "libprob.h"
-#include "miscmaths/miscprob.h"
-#include "miscmaths/t2z.h"
-#include "miscmaths/f2z.h"
-
-namespace Melodic{
-
-  void update_mask(volume<float>& mask, Matrix& Data)
-  {
-    Matrix DStDev=stdev(Data);
-    volume4D<float> tmpMask, RawData;
-    tmpMask.setmatrix(DStDev,mask);
-
-    float tMmax;
-    volume<float> tmpMask2;
-    tmpMask2 = tmpMask[0];
-
-    tMmax = tmpMask2.max();
-    double st_mean = DStDev.Sum()/DStDev.Ncols();
-    double st_std  = stdev(DStDev.t()).AsScalar();
-      
-	volume4D<float> newmask;
-    newmask = binarise(tmpMask2,(float) max((float) st_mean-3*st_std,(float) 0.01*st_mean),tMmax);
-
-	Matrix newmaskM,newData;
-	newmaskM = newmask.matrix(mask);
-	int N = Data.Nrows();
-	
-	if(int(newmaskM.Row(1).SumAbsoluteValue() + 0.3) < newmaskM.Ncols()){
-		RawData.setmatrix(Data.Row(1),mask);
-		newData = RawData.matrix(newmask[0]);
-		for(int r=2; r <= N; r++){
-			RawData.setmatrix(Data.Row(r),mask);
-			newData &= RawData.matrix(newmask[0]);
-		}
-		Data = newData;
-		mask = newmask[0];  
-	}
-  }
-
-  void del_vols(volume4D<float>& in, int howmany)
-  {
-    for(int ctr=1; ctr<=howmany; ctr++){
-	in.deletevolume(ctr);
-    }    
-  }
-
-  Matrix calc_FFT(const Matrix& Mat, const bool logpwr)
-  {
-    Matrix res;
-      for(int ctr=1; ctr <= Mat.Ncols(); ctr++){
-	      ColumnVector tmpCol;  
-	      tmpCol=Mat.Column(ctr);
-	      ColumnVector FtmpCol_real;
-	      ColumnVector FtmpCol_imag;
-	      ColumnVector tmpPow;
-	      if(tmpCol.Nrows()%2 != 0){
-	        Matrix empty(1,1); empty=0;
-	        tmpCol &= empty;
-	      }
-	      RealFFT(tmpCol,FtmpCol_real,FtmpCol_imag);
-	      tmpPow = pow(FtmpCol_real,2)+pow(FtmpCol_imag,2);
-	      tmpPow = tmpPow.Rows(2,tmpPow.Nrows());
-	      if(logpwr) tmpPow = log(tmpPow);
-	      if(res.Storage()==0){res= tmpPow;}else{res|=tmpPow;}
-      }
-      return res;
-  }  //Matrix calc_FFT()
-
-  Matrix smoothColumns(const Matrix& inp)
-  {
-    Matrix temp(inp);
-    int ctr1 = temp.Nrows();
-    Matrix temp2(temp);
-    temp2=0;
-    
-    temp = temp.Row(4) & temp.Row(3) & temp.Row(2) & temp & temp.Row(ctr1-1) 
-      & temp.Row(ctr1-2) &temp.Row(ctr1-3);
-    
-    double kern[] ={0.0045 , 0.055, 0.25, 0.4, 0.25, 0.055, 0.0045};
-    double fac = 0.9090909;
-
-    
-    for(int cc=1;cc<=temp2.Ncols();cc++){
-      for(int cr=1;cr<=temp2.Nrows();cr++){
-	temp2(cr,cc) = fac*( kern[0] * temp(cr,cc) + kern[1] * temp(cr+1,cc) + 
-			     kern[2] * temp(cr+2,cc) + kern[3] * temp(cr+3,cc) + 
-			     kern[4] * temp(cr+4,cc) + kern[5] * temp(cr+5,cc) + 
-			     kern[6] * temp(cr+6,cc));
-      }
-    }
-    return temp2;
-  }  //Matrix smoothColumns()
-
-  Matrix convert_to_pbsc(Matrix& inp)
-  {
-    Matrix meanimg;
-    meanimg = mean(inp);
-    float eps = 0.00001;
-
-    for(int ctr=1; ctr <= inp.Ncols(); ctr++){
-      if(meanimg(1,ctr) < eps) 
-	meanimg(1,ctr) = eps;
-    }
-
-    for(int ctr=1; ctr <= inp.Nrows(); ctr++){
-      Matrix tmp;
-      tmp << inp.Row(ctr);
-      inp.Row(ctr) << 100 * SP((tmp - meanimg),pow(meanimg,-1));   
-    }
-
-    inp = remmean(inp);
-    return meanimg;
-  }  //void convert_to_pbsc   
-
-  RowVector varnorm(Matrix& in, int dim, float level, int econ)
-  {
-    SymmetricMatrix Corr(cov_r(in,false,econ));
-    RowVector out;
-    out = varnorm(in,Corr,dim,level, econ);
-    return out;
-  }  //RowVector varnorm
-
-  void varnorm(Matrix& in, const RowVector& vars)
-  {
-    for(int ctr=1; ctr <=in.Nrows();ctr++)
-      in.Row(ctr) = SD(in.Row(ctr),vars);
-  }
-	
-  RowVector varnorm(Matrix& in, SymmetricMatrix& Corr, int dim, float level, int econ)
-  { 
-	
-    Matrix tmpE, white, dewhite;
-    RowVector tmpD, tmpD2;
-
-    std_pca(remmean(in,2), Corr, tmpE, tmpD, econ);
-    calc_white(tmpE,tmpD, dim, white, dewhite);
-    
-    Matrix ws = white * in;
-    for(int ctr1 = 1; ctr1<=ws.Ncols(); ctr1++)
-      for(int ctr2 = 1; ctr2<=ws.Nrows(); ctr2++)
-				if(std::abs(ws(ctr2,ctr1)) < level)
-	  			ws(ctr2,ctr1)=0;
-    tmpD = stdev(in - dewhite*ws);
-    for(int ctr1 = 1; ctr1<=tmpD.Ncols(); ctr1++)
-      if(tmpD(ctr1) < 0.01){
-				tmpD(ctr1) = 1.0;
-				in.Column(ctr1) = 0.0*in.Column(ctr1);
-      }
-	  varnorm(in,tmpD);
-
-    return tmpD;
-  }  //RowVector varnorm
-
-
-
-  Matrix SP2(const Matrix& in, const Matrix& weights, int econ)
-  {
-    Matrix Res;
-    Res = in;
-    if(econ>0){
-	  if(weights.Ncols() == in.Ncols()){		
-        ColumnVector tmp;
-        for(int ctr=1; ctr <= in.Ncols(); ctr++){
-       		tmp = in.Column(ctr);
- 	    	tmp = tmp * weights(1,ctr);
-	    	Res.Column(ctr) = tmp;
-      	}
-	  }
-    }
-    else{
-      Res = ones(in.Nrows(),1)*weights.Row(1);
-      Res = SP(in,Res);
-    }
-    return Res;
-  }  //Matrix SP2
-
-  void SP3(Matrix& in, const Matrix& weights)
-  {
-	for(int ctr=1; ctr <= in.Nrows(); ctr++){
-		in.Row(ctr) << SP(in.Row(ctr),weights.AsRow());
-	} 
-  }
-
-  void SP4(Matrix& in, const Matrix& weights){
-	RowVector tmp;
-    for(int ctr=1; ctr <= in.Nrows(); ctr++){
-   		tmp = in.Row(ctr);
-	    tmp = tmp * weights(ctr,1);
-	    in.Row(ctr) << tmp;
-  	}
-  }
-
-  Matrix corrcoef(const Matrix& in1, const Matrix& in2){
-		Matrix tmp = in1;
-		tmp |= in2;
-		Matrix out;
-		out=MISCMATHS::corrcoef(tmp,0);
-		return out.SubMatrix(1,in1.Ncols(),in1.Ncols()+1,out.Ncols());
-  }
-
-  Matrix corrcoef(const Matrix& in1, const Matrix& in2, const Matrix& part){
-	Matrix tmp1 = in1, tmp2 = in2, out;	
-	if(part.Storage()){
-		tmp1 = tmp1 - part * pinv(part) * tmp1;
-		tmp2 = tmp2 - part * pinv(part) * tmp2;
-	}
-	
-	out = corrcoef(tmp1,tmp2);
-	return out;
-  }
-
-  float calc_white(const Matrix& tmpE, const RowVector& tmpD, const RowVector& PercEV,  int dim, Matrix& param, Matrix& paramS, Matrix& white, Matrix& dewhite)
-  {
-
-//	tmpD2= tmpD | tmpPD.AsRow().Columns(tmpPE.Ncols()-param.Ncols()+1,tmpPE.Ncols());
-//  cerr << tmpPD.AsRow().Columns(tmpPE.Ncols()-param.Ncols()+1,tmpPE.Ncols()) << endl;
-
-//    
-
-//	Matrix tmpPE;
-//	tmpPE = SP(param,ones(param.Nrows(),1)*pow(stdev(param,1)*std::sqrt((float)param.Nrows()),-1));
-
-//	RE |= tmpPE;
-//	RowVector tmpD2;
-//	tmpD2 = tmpD | stdev(param,1).AsRow()*std::sqrt((float)param.Nrows());
-//	RD << abs(diag(tmpD2.t()));
-//    RD << RD.SymSubMatrix(N-dim+1,N);
-
-	Matrix RE;
-    DiagonalMatrix RD;
-    int N = tmpE.Ncols();
-    dim = std::min(dim,N);
-
-//	cerr << stdev(param) << endl;
-    RE = tmpE.Columns(std::min(N-dim+1+param.Ncols(),N-2),N);
-	RE |= param;
-
-//	cerr << paramS.Nrows() << " x " << paramS.Ncols() << endl;
-//	cerr << paramS << endl;
-	RowVector tmpD2;
-	tmpD2 = tmpD | pow(paramS,2).AsRow();
-    RD << abs(diag(tmpD2.t()));
-
-//	cerr << " " <<tmpD2.Ncols() << " " << N << " " << dim << endl;
-    RD << RD.SymSubMatrix(N-dim+1+param.Ncols(),N+param.Ncols());    
-
-    float res = 1.0;    
-    white = sqrt(abs(RD.i()))*RE.t();
-    dewhite = RE*sqrt(RD);
-
-    if(dim < N)
-      res = PercEV(dim);
-    return res;
-  }  //Matrix calc_white
-
-  float calc_white(const Matrix& tmpE, const RowVector& tmpD, const RowVector& PercEV, int dim, Matrix& white, Matrix& dewhite)
-  {
-    Matrix RE;
-    DiagonalMatrix RD;
-    int N = tmpE.Ncols();
-    dim = std::min(dim,N);
-    RE = tmpE.Columns(N-dim+1,N);
-    RD << abs(diag(tmpD.t()));
-    RD << RD.SymSubMatrix(N-dim+1,N);    
-
-    float res = 1.0;    
-    white = sqrt(abs(RD.i()))*RE.t();
-    dewhite = RE*sqrt(RD);
-
-    if(dim < N)
-      res = PercEV(dim);
-    return res;
-  }  //Matrix calc_white
-
-  void calc_white(const Matrix& tmpE, const RowVector& tmpD, int dim, Matrix& white, Matrix& dewhite)
-  {
-    RowVector tmp(tmpE.Ncols());
-    float tmp2;
-    tmp2 = calc_white(tmpE,tmpD, tmp, dim, white, dewhite); 
-  }  //Matrix calc_white
-
-  void calc_white(const Matrix& tmpE, const RowVector& tmpD, int dim, Matrix& param, Matrix& paramS, Matrix& white, Matrix& dewhite)
-  {
-    RowVector tmp(tmpE.Ncols());
-    float tmp2;
-    tmp2 = calc_white(tmpE,tmpD, tmp, dim, param, paramS, white, dewhite); 
-  }  //Matrix calc_white
-
-  void calc_white(const SymmetricMatrix& Corr, int dim, Matrix& white, Matrix& dewhite)
-  {
-    Matrix RE;
-    DiagonalMatrix RD;
-    RowVector tmp2;
-    EigenValues(Corr,RD,RE);
-    tmp2 = diag(RD).t();
-    calc_white(RE,tmp2, dim, white, dewhite); 
-  }  //Matrix calc_white
-  
- 
-  void std_pca(const Matrix& Mat, const Matrix& weights, SymmetricMatrix& Corr, Matrix& evecs, RowVector& evals, int econ)
-  {
-    if(weights.Storage()>0)
-      Corr = cov_r(Mat, weights, econ);
-    else
-      Corr = cov_r(Mat,false,econ);
-
-    DiagonalMatrix tmpD;
-    EigenValues(Corr,tmpD,evecs);
-    evals = tmpD.AsRow();
-  }  //void std_pca
-
-  void std_pca(const Matrix& Mat, SymmetricMatrix& Corr, Matrix& evecs, RowVector& evals, int econ)
-  {
-    Matrix weights;
-    std_pca(Mat,weights,Corr,evecs,evals, econ);
-  }  //void std_pca
-
-  void em_pca(const Matrix& Mat, Matrix& evecs, RowVector& evals, int num_pc, int iter)
-  {
-    Matrix guess;
-    guess = normrnd(Mat.Nrows(),num_pc);
-    em_pca(Mat,guess,evecs,evals,num_pc,iter);
-  }  //void em_pca
-
-  void em_pca(const Matrix& Mat, Matrix& guess, Matrix& evecs, RowVector& evals, int num_pc, int iter)
-  {
-    Matrix C;
-    if(guess.Ncols() < num_pc){
-      C=normrnd(Mat.Nrows(),num_pc);
-      C.Columns(1,guess.Ncols()) = guess;
-    }
-    else
-      C = guess;
-
-    Matrix tmp, tmp2;
-    for(int ctr=1; ctr <= iter; ctr++){
-      // E-Step
-      tmp = C.t()*C;
-      tmp = tmp.i();
-      tmp = tmp * C.t();
-      tmp = tmp * Mat;
-      // M-Step
-      tmp2 = tmp * tmp.t();
-      tmp2 = tmp2.i();
-      tmp2 = Mat*tmp.t()*tmp2;
-      C = tmp2;
-    }
-    
-    symm_orth(C);
-    Matrix Evc;
-    SymmetricMatrix tmpC;
-    RowVector Evl;
-    tmp = C.t() * Mat;
-    std_pca(tmp,tmpC,Evc,Evl);
-    evals = Evl;
-    evecs = C * Evc;
-  }  //void em_pca
-
-  float rankapprox(const Matrix& Mat, Matrix& cols, Matrix& rows, int dim)
-  { 
-    SymmetricMatrix Corr;
-    Matrix Evecs, tmpWM, tmpDWM, tmp;
-    RowVector Evals;
-    std_pca(Mat.t(), Corr, Evecs, Evals);
-    calc_white(Corr, dim, tmpWM, tmpDWM);
-    tmp = tmpWM * Mat.t();
-    cols = tmp.t();
-    rows << tmpDWM;
-		float res;
-		Evals=fliplr(Evals);
-		res = sum(Evals.Columns(1,dim),2).AsScalar()/sum(Evals,2).AsScalar()*100;
-		return res;
-  } // rankapprox
-
-  RowVector krfact(const Matrix& Mat, Matrix& cols, Matrix& rows)
-  {
-		Matrix out; RowVector res(Mat.Ncols());
-    for(int ctr1 = 1; ctr1 <= Mat.Ncols(); ctr1++){
-			Matrix tmpVals(cols.Nrows(),rows.Nrows());
-			for(int ctr2 = 1; ctr2 <= rows.Nrows(); ctr2++)
-	  		tmpVals.Column(ctr2) << Mat.SubMatrix(cols.Nrows() * 
-				(ctr2 - 1) + 1,cols.Nrows()*ctr2 ,ctr1,ctr1);
-	
-			Matrix tmpcols, tmprows;
-	 		res(ctr1) =rankapprox(tmpVals, tmpcols, tmprows);
-			cols.Column(ctr1) = tmpcols;
-			rows.Column(ctr1) = tmprows;
-    }
-		return res;
-  } // krfact
-
-  RowVector krfact(const Matrix& Mat, int colnum, Matrix& cols, Matrix& rows)
-  {
-		RowVector res;
-    cols = zeros(colnum,Mat.Ncols());
-    rows = zeros(int(Mat.Nrows() / colnum),Mat.Ncols());
-    res = krfact(Mat,cols,rows);
-		return res;
-  } // krfact
-
-  Matrix krprod(const Matrix& cols, const Matrix& rows)
-  {
-    Matrix out;
-    out = zeros(cols.Nrows()*rows.Nrows(),cols.Ncols());
-    for(int ctr1 = 1; ctr1 <= cols.Ncols(); ctr1++)
-      for(int ctr2 = 1; ctr2 <= rows.Nrows(); ctr2++)
-	{
-	  out.SubMatrix(cols.Nrows()*(ctr2-1)+1,cols.Nrows()*ctr2,ctr1,ctr1) << cols.Column(ctr1) * rows(ctr2,ctr1);
-	}
-    return out;
-  } // krprod
-
-  Matrix krapprox(const Matrix& Mat, int size_cols, int dim)
-  {
-    Matrix out, cols, rows;
-    out = zeros(Mat.Nrows(), Mat.Ncols());
-    cols = zeros(size_cols,Mat.Ncols());
-    rows = zeros(int(Mat.Nrows() / size_cols), Mat.Ncols());
-    krfact(Mat,cols,rows);
-    out = krprod(cols, rows);
-    return out;
-  } // krapprox
-
-  void adj_eigspec(const RowVector& in, RowVector& out1, RowVector& out2, RowVector& out3, int& out4, int num_vox, float resels)
-  {
-    RowVector AdjEV;
-    AdjEV << in.AsRow();
-    AdjEV = AdjEV.Columns(3,AdjEV.Ncols());
-    AdjEV = AdjEV.Reverse();
-
-    RowVector CircleLaw;
-    int NumVox = (int) floor(num_vox/(2.5*resels));
-
-    CircleLaw = Feta(int(AdjEV.Ncols()), NumVox);
-
-    for(int ctr=1;ctr<=CircleLaw.Ncols(); ctr++){
-      if(CircleLaw(ctr)<5*10e-10){CircleLaw(ctr) = 5*10e-10;}
-    } 
-
-    /*    float slope;
-    slope = CircleLaw.Columns(int(AdjEV.Ncols()/4),AdjEV.Ncols() - 
-			      int(AdjEV.Ncols()/4)).Sum() /  
-      AdjEV.Columns(int(AdjEV.Ncols()/4),AdjEV.Ncols() - 
-      int(AdjEV.Ncols()/4)).Sum();*/
-
-    RowVector PercEV(AdjEV);
-    PercEV = cumsum(AdjEV / sum(AdjEV,2).AsScalar());
-
-    AdjEV << SP(AdjEV,pow(CircleLaw.Columns(1,AdjEV.Ncols()),-1));
-
-    SortDescending(AdjEV);
-    int maxEV = 1;
-    float threshold = 0.98;
-    for(int ctr_i = 1; ctr_i < PercEV.Ncols(); ctr_i++){ 
-      if((PercEV(ctr_i)<threshold)&&(PercEV(ctr_i+1)>=threshold)){maxEV=ctr_i;}
-    }
-
-    if(maxEV<3){maxEV=PercEV.Ncols()/2;}
-    RowVector NewEV;
-    Matrix temp1;
-    temp1 = abs(AdjEV);
-    NewEV << temp1.SubMatrix(1,1,1,maxEV);
-
-    AdjEV = (AdjEV - min(AdjEV).AsScalar())/(max(AdjEV).AsScalar() - min(AdjEV).AsScalar());
-
-    out1 = AdjEV;
-    out2 = PercEV;
-    out3 = NewEV;
-    out4 = maxEV;
-  }  //adj_eigspec
-
- void adj_eigspec(const RowVector& in, RowVector& out1, RowVector& out2)
-  {
-    RowVector AdjEV, PercEV;
-    AdjEV = in.Reverse();
-    SortDescending(AdjEV);
-  
-    PercEV = cumsum(AdjEV / sum(AdjEV,2).AsScalar());
-    AdjEV = (AdjEV - min(AdjEV).AsScalar())/(max(AdjEV).AsScalar() - min(AdjEV).AsScalar());
-    out1 = AdjEV;
-    out2 = PercEV;
-  }  //adj_eigspec
-
-  RowVector Feta(int n1, int n2)
-  {
-    float nu = (float) n1/n2; 
-    float bm = pow((1-sqrt(nu)),2.0);
-    float bp = pow((1+sqrt(nu)),2.0);
-
-    float lrange = 0.9*bm;
-    float urange = 1.1*bp;
-
-    RowVector eta(30*n1);
-    float rangestepsize = (urange - lrange) / eta.Ncols(); 
-    for(int ctr_i = 1; ctr_i <= eta.Ncols(); ctr_i++){ 
-      eta(ctr_i) = lrange + rangestepsize * (ctr_i);
-    }
-
-    RowVector teta(10*n1);
-    teta = 0;
-    float stepsize = (bp - bm) / teta.Ncols();
-    for(int ctr_i = 1; ctr_i <= teta.Ncols(); ctr_i++){ 
-      teta(ctr_i) = stepsize*(ctr_i);
-    }  
-    
-    RowVector feta(teta);
-    feta = SP(pow(2*M_PI*nu*(teta + bm),-1), pow(SP(teta, bp-bm-teta),0.5));
-   
-    teta = teta + bm;
-
-    RowVector claw(eta);
-    claw = 0;
-    for(int ctr_i = 1; ctr_i <= eta.Ncols(); ctr_i++){
-      double tmpval = 0.0;
-      for(int ctr_j = 1; ctr_j <= teta.Ncols(); ctr_j++){
-	if(( double(teta(ctr_j))/double(eta(ctr_i)) )<1)
-	  tmpval += feta(ctr_j);
-      }
-      claw(ctr_i) = n1*(1-stepsize*tmpval);
-    }
-    
-    RowVector Res(n1); //invert the CDF
-    Res = 0;
-    for(int ctr_i = 1; ctr_i < eta.Ncols(); ctr_i++){ //Should this be <= instead of <?
-      if(floor(claw(ctr_i))>floor(claw(ctr_i+1))){
-	Res(int(floor(claw(ctr_i)))) = eta(ctr_i);
-      }
-    }
- 
-    return Res;
-  }  //RowVector Feta
-
-  RowVector cumsum(const RowVector& Inp)
-  {
-    UpperTriangularMatrix UT(Inp.Ncols());
-    UT=1.0;
-    RowVector Res;
-    Res = Inp * UT;
-    return Res;
-  }  //RowVector cumsum
-
-  int ppca_dim(const Matrix& in, const Matrix& weights, Matrix& PPCA, RowVector& AdjEV, RowVector& PercEV,  SymmetricMatrix& Corr, Matrix& tmpE, RowVector &tmpD, float resels, string which)
-  {   
-    std_pca(in,weights,Corr,tmpE,tmpD);
-
-    int maxEV = 1;
-    RowVector NewEV;
-    adj_eigspec(tmpD.AsRow(),AdjEV,PercEV,NewEV,maxEV,in.Ncols(),resels);
-    
-    int res;
-		PPCA = ppca_est(NewEV, in.Ncols(),resels);
-    ColumnVector tmp = ppca_select(PPCA, res, maxEV, which);
-		
-		PPCA = tmp | PPCA;
-    return res;
-  }  //int ppca_dim
-
-  int ppca_dim(const Matrix& in, const Matrix& weights, Matrix& PPCA, RowVector& AdjEV, RowVector& PercEV, float resels, string which)
-  {   
-    RowVector tmpD;
-    Matrix tmpE;
-    SymmetricMatrix Corr;
-
-    int res = ppca_dim(in, weights, PPCA, AdjEV, PercEV, Corr, tmpE, tmpD, resels, which);
-    return res;
-  }  //int ppca_dim
-
-  int ppca_dim(const Matrix& in, const Matrix& weights, float resels, string which)
-  {
-    ColumnVector PPCA;
-    RowVector AdjEV, PercEV;
-    int res = ppca_dim(in,weights,PPCA,AdjEV,PercEV,resels,which);
-    return res;
-  }  //int ppca_dim
-
-  ColumnVector ppca_select(Matrix& PPCAest, int& dim, int maxEV, string which)
-  {
-    RowVector estimators(5);
-    estimators = 1.0;
-    
-    for(int ctr=1; ctr<=PPCAest.Ncols(); ctr++){
-      PPCAest.Column(ctr) = (PPCAest.Column(ctr) - 
-			   min(PPCAest.Column(ctr)).AsScalar()) / 
-	( max(PPCAest.Column(ctr)).AsScalar() - 
-	  min(PPCAest.Column(ctr)).AsScalar());
-    }
-    
-    int ctr_i = 1;
-    while((ctr_i< PPCAest.Nrows()-1)&&
-	  (PPCAest(ctr_i,2) < PPCAest(ctr_i+1,2))&&(ctr_i<maxEV))
-      {estimators(1)=ctr_i+1;ctr_i++;}
-    ctr_i = 1;
-    while((ctr_i< PPCAest.Nrows()-1)&&
-	  (PPCAest(ctr_i,3) < PPCAest(ctr_i+1,3))&&(ctr_i<maxEV))
-      {estimators(2)=ctr_i+1;ctr_i++;}
-    ctr_i = 1;
-    while((ctr_i< PPCAest.Nrows()-1)&&
-	  (PPCAest(ctr_i,4) < PPCAest(ctr_i+1,4))&&(ctr_i<maxEV))
-      {estimators(3)=ctr_i+1;ctr_i++;}
-    ctr_i = 1;
-    while((ctr_i< PPCAest.Nrows()-1)&&
-	  (PPCAest(ctr_i,5) < PPCAest(ctr_i+1,5))&&(ctr_i<maxEV))
-      {estimators(4)=ctr_i+1;ctr_i++;}
-    ctr_i = 1;
-    while((ctr_i< PPCAest.Nrows()-1)&&
-	  (PPCAest(ctr_i,6) < PPCAest(ctr_i+1,6))&&(ctr_i<maxEV))
-      {estimators(5)=ctr_i+1;ctr_i++;}
-
-    int res = 0;
-    ColumnVector PPCA;
- 		RowVector PercEV(PPCAest.Column(1).t());
-	  PercEV = cumsum(PercEV / sum(PercEV,2).AsScalar());
-
-	  if(which == string("aut")) {
-			if(int(estimators(2)) < int(estimators(1)) && 
-				float(PercEV(int(estimators(2))))>0.8){
-				res=int(estimators(2));
-	      PPCA << PPCAest.Column(3);
-			}else{
-				res = int(estimators(1));
-	      PPCA << PPCAest.Column(2);
-			}
-	  }			
-    if(which == string("lap")){
-      res = int(estimators(1));
-      PPCA << PPCAest.Column(2);
-    }
-    if(which == string("bic")){
-      res = int(estimators(2));
-      PPCA << PPCAest.Column(3);
-    }
-    if(which == string("mdl")){
-      res = int(estimators(3));
-      PPCA << PPCAest.Column(4);
-    }
-    if(which == string("rrn")){
-      res = int(estimators(4));
-      PPCA << PPCAest.Column(5);
-    }
-    if(which == string("aic")){
-      res = int(estimators(5));
-      PPCA << PPCAest.Column(6);
-    }
-		if(which == string("median")){
-			RowVector unsorted(estimators);	
-			SortAscending(unsorted);
-			ctr_i=1;
-			res=int(unsorted(3));
-			while(res != int(estimators(ctr_i)))			
-				ctr_i++;
-			PPCA << PPCAest.Column(ctr_i);
-		}
-    if(res==0 || which == string("mean")){//median estimator
-      PPCA = mean(PPCAest.Columns(2,6),2);
-			res=int(mean(estimators,2).AsScalar());
-    }
-
-    dim = res;
-    return PPCA;
-  }  //RowVector ppca_select
-
-  Matrix ppca_est(const RowVector& eigenvalues, const int N1, const float N2)
-  { 
-    Matrix Res;
-    Res = ppca_est(eigenvalues, (int) floor(N1/(2.5*N2)));
-    return Res;
-  }  //Matrix ppca_est
-
-  Matrix ppca_est(const RowVector& eigenvalues, const int N)
-  {
-    RowVector logLambda(eigenvalues);
-    logLambda = log(eigenvalues);
-
-    int d = logLambda.Ncols();
-
-    RowVector k(d);
-    for(int ctr_i = 1; ctr_i <=d; ctr_i++){
-      k(ctr_i)=ctr_i;
-    }
-   
-    RowVector m(d);
-    m=d*k-0.5*SP(k,k+1); 
-
-    RowVector loggam(d);
-    loggam = 0.5*k.Reverse();
-    for(int ctr_i = 1; ctr_i <=d; ctr_i++){
-      loggam(ctr_i)=lgam(loggam(ctr_i));
-    }
-    loggam = cumsum(loggam); 
-
-    RowVector l_probU(d);
-    l_probU = -log(2)*k + loggam - cumsum(0.5*log(M_PI)*k.Reverse());
-
-    RowVector tmp1;
-    tmp1 = -cumsum(eigenvalues).Reverse()+sum(eigenvalues,2).AsScalar();
-    tmp1(1) = 0.95*tmp1(2);
-    tmp1=tmp1.Reverse();
-
-    RowVector tmp2;
-    tmp2 = -cumsum(logLambda).Reverse()+sum(logLambda,2).AsScalar();
-    tmp2(1)=tmp2(2);
-    tmp2=tmp2.Reverse();
-
-    RowVector tmp3;
-    tmp3 = d-k;
-    tmp3(d) = 1.0;
-
-    RowVector tmp4;
-    tmp4 = SP(tmp1,pow(tmp3,-1));    
-    for(int ctr_i = 1; ctr_i <=d; ctr_i++){
-      if(tmp4(ctr_i)<0.01){tmp4(ctr_i)=0.01;}
-      if(tmp3(ctr_i)<0.01){tmp3(ctr_i)=0.01;}
-      if(tmp1(ctr_i)<0.01){tmp1(ctr_i)=0.01;}
-    }
-
-    RowVector l_nu;
-    l_nu = SP(-N/2*(d-k),log(tmp4));
-    l_nu(d) = 0;
-
-    RowVector l_lam;
-    l_lam = -(N/2)*cumsum(logLambda);
-
-    RowVector l_lhood;
-    l_lhood = SP(pow(tmp3,-1),tmp2)-log(SP(pow(tmp3,-1),tmp1));
-
-    Matrix t1,t2, t3;
-    UpperTriangularMatrix triu(d);
-    triu = 1.0;
-    for(int ctr_i = 1; ctr_i <= triu.Ncols(); ctr_i++){
-      triu(ctr_i,ctr_i)=0.0;
-    }
-    t1 = (ones(d,1) * eigenvalues);
-    t1 = SP(triu,t1.t() - t1);
-    t2 = pow(tmp4,-1).t()*ones(1,d);
-    t3 = ones(d,1)*pow(eigenvalues,-1);
-    t2 = SP(triu, t2.t()-t3.t());
-    for(int ctr_i = 1; ctr_i <= t1.Ncols(); ctr_i++){
-      for(int ctr_j = 1; ctr_j <= t1.Nrows(); ctr_j++){
-	if(t1(ctr_j,ctr_i)<=0){t1(ctr_j,ctr_i)=1;}
-      } 
-    }
-    for(int ctr_i = 1; ctr_i <= t2.Ncols(); ctr_i++){
-      for(int ctr_j = 1; ctr_j <= t2.Nrows(); ctr_j++){
-	if(t2(ctr_j,ctr_i)<=0){t2(ctr_j,ctr_i)=1;}
-      }
-    } 
-    t1 = cumsum(sum(log(t1),2).AsRow());
-    t2 = cumsum(sum(log(t2),2).AsRow());
-
-    RowVector l_Az(d);
-    l_Az << (t1+t2);
-
-    RowVector l_lap;
-    l_lap = l_probU + l_nu +l_Az + l_lam + 0.5*log(2*M_PI)*(m+k)-0.5*log(N)*k;
- 
-    RowVector l_BIC;
-    l_BIC = l_lam + l_nu - 0.5*log(N)*(m+k);
-
-    RowVector l_RRN;
-    l_RRN = -0.5*N*SP(k,log(SP(cumsum(eigenvalues),pow(k,-1))))+l_nu;
-
-    RowVector l_AIC;
-    l_AIC = -2*N*SP(tmp3,l_lhood)+ 2*(1+d*k+0.5*(k-1));
-    l_AIC = -l_AIC;
-
-    RowVector l_MDL;
-    l_MDL = -N*SP(tmp3,l_lhood)+ 0.5*(1+d*k+0.5*(k-1))*log(N);
-    l_MDL = -l_MDL;
-
-    Matrix Res;
-
-    Res = eigenvalues.t();
-    Res |= l_lap.t();
-    Res |= l_BIC.t();
-    Res |= l_MDL.t();
-    Res |= l_RRN.t();
-    Res |= l_AIC.t();
-    
-   
-    return Res;
-  }  //Matrix ppca_est
-
-  ColumnVector acf(const ColumnVector& in, int order)
-  {
-    double meanval;
-    meanval = mean(in).AsScalar();
-    int tpoints = in.Nrows();
-    
-    ColumnVector y, res;
-    Matrix X, tmp;
-
-    y = in.Rows(order+1,tpoints) - meanval;
-    X = zeros(order + 1, order);
-    for(int ctr1 = 1; ctr1 <= order; ctr1++)
-      X.Column(ctr1) = in.Rows(order + 1 - ctr1, tpoints - ctr1) - meanval;
-    tmp = X.t()*X;
-    tmp = tmp.i();
-    tmp = tmp * X.t();
-    res << tmp * y;
-    return res;
-  }  //ColumnVector acf
-
-  ColumnVector pacf(const ColumnVector& in, int maxorder)
-  {
-    int tpoint = in.Nrows();
-    ColumnVector res;
-    res = acf(in, maxorder);
-    for(int ctr1 = 1; ctr1 <= maxorder; ctr1++)
-      if ( res.Column(ctr1).AsScalar() <  (1/tpoint) + 2/(float)std::pow(tpoint,0.5)) 
-	res.Column(ctr1) = 0;
-    return res;
-  }  //ColumnVector pacf
-  
-  Matrix est_ar(const Matrix& Mat, int maxorder)
-  {
-    Matrix res;
-    res = zeros(maxorder, Mat.Ncols());
-    ColumnVector tmp;
-    for (int ctr = 1; ctr <= Mat.Ncols(); ctr++){
-      tmp = pacf(Mat.Column(ctr));
-      res.Column(ctr) = tmp;
-    }
-    return res;
-  }  //Matrix est_ar
-
-  ColumnVector gen_ar(const ColumnVector& in, int maxorder)
-  {
-    float sdev;
-    sdev = stdev(in).AsScalar();
-    ColumnVector x, arcoeff, scaled;
-    scaled = in / sdev;
-    arcoeff = pacf( scaled, maxorder);
-    x = normrnd(in.Nrows(),1).AsColumn() * sdev;
-    for(int ctr1=2; ctr1 <= in.Nrows(); ctr1++)
-      for(int ctr2 = 1; ctr2 <= maxorder; ctr2++)
-	x(ctr1) = arcoeff(ctr2) * x(std::max(1,int(ctr1-ctr2))) + x(ctr1);
-    return x;
-  }  //ColumnVector gen_ar
-
-  Matrix gen_ar(const Matrix& in, int maxorder)
-  {
-    Matrix res;
-    res = in;
-    ColumnVector tmp;
-    for(int ctr=1; ctr <= in.Ncols(); ctr++){
-      tmp = in.Column(ctr);
-      res.Column(ctr) = gen_ar(tmp, maxorder);
-    } 
-    return res;
-  }  //Matrix gen_ar
-
-  Matrix gen_arCorr(const Matrix& in, int maxorder)
-  {
-    Matrix res;
-    res = zeros(in.Nrows(), in.Nrows());
-    ColumnVector tmp;
-    for(int ctr=1; ctr<= in.Ncols(); ctr++){
-      tmp = in.Column(ctr);
-      tmp = gen_ar(tmp, maxorder);
-      res += tmp * tmp.t();
-    }
-    return res;
-  }  //Matrix gen_arCorr
-
-	void basicGLM::olsfit(const Matrix& data, const Matrix& design, 
-		const Matrix& contrasts, int requestedDOF)
-	{
-		beta = zeros(design.Ncols(),1); 
-		residu = zeros(1); sigsq = -1.0*ones(1); varcb = -1.0*ones(1); 
-		t = zeros(1); z = zeros(1); p=-1.0*ones(1);
-		dof = (int)-1; cbeta = -1.0*ones(1); 
-
-		if(data.Nrows()==design.Nrows()){
-			Matrix dat = data;
-			Matrix tmp = design.t()*design;
-			Matrix pinvdes = tmp.i()*design.t();
-			
-			beta = pinvdes * dat;
-			residu = dat - design*beta;
-			dof = ols_dof(design);
-			if ( requestedDOF>0)
-			  dof = requestedDOF;
-			sigsq = sum(SP(residu,residu))/dof;
-			
-			float fact = float(dof) / design.Ncols();
-			f_fmf =  SP(sum(SP(design*beta,design*beta)),pow(sum(SP(residu,residu)),-1)) * fact;
-		
-			pf_fmf = f_fmf.Row(1); 
-			for(int ctr1=1;ctr1<=f_fmf.Ncols();ctr1++)
-				pf_fmf(1,ctr1) = 1.0-MISCMATHS::fdtr(design.Ncols(),dof,f_fmf.Column(ctr1).AsScalar());
-				
-			if(contrasts.Storage()>0 && contrasts.Ncols()==beta.Nrows()){
-				cbeta = contrasts*beta;
-				Matrix tmp = contrasts*pinvdes*pinvdes.t()*contrasts.t();
-				varcb = diag(tmp)*sigsq;
-				t = SP(cbeta,pow(varcb,-0.5));
-				z = t; p=t; 
-				for(int ctr1=1;ctr1<=t.Ncols();ctr1++){
-					ColumnVector tmp = t.Column(ctr1);
-					T2z::ComputeZStats(varcb.Column(ctr1),cbeta.Column(ctr1),dof, tmp);
-					z.Column(ctr1) << tmp;
-					T2z::ComputePs(varcb.Column(ctr1),cbeta.Column(ctr1),dof, tmp);
-					p.Column(ctr1) << exp(tmp);
-				}
-			}
-		}	
-	
-	}
-
-
-}
diff --git a/melhlprfns.h b/melhlprfns.h
deleted file mode 100644
index 1ff66df..0000000
--- a/melhlprfns.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melhlprfns.cc - misc functions
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#ifndef __MELODICHLPR_h
-#define __MELODICHLPR_h
-
-#include "newimage/newimageall.h"
-#include "newmatap.h"
-#include "newmatio.h"
-
-	#ifdef __APPLE__
-	#include <mach/mach.h>
-	#define mmsg(msg) { \
-	  struct task_basic_info t_info; \
-	  mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; \
-	  if (KERN_SUCCESS == task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t) &t_info, &t_info_count)) \
-		{ \
-			cout << " MEM: " << msg << " res: " << t_info.resident_size/1000000 << " virt: " << t_info.virtual_size/1000000 << "\n"; \
-			} \
-	}
-	#else
-	#define mmsg(msg) { \
-	   cout << msg; \
-	}
-	#endif
-
-using namespace NEWIMAGE;
-
-namespace Melodic{
-
-  void update_mask(volume<float>& mask, Matrix& Data);
-  void del_vols(volume4D<float>& in, int howmany);
-
-  Matrix smoothColumns(const Matrix& inp);
-  Matrix calc_FFT(const Matrix& Mat, const bool logpwr = 0);
-
-  Matrix convert_to_pbsc(Matrix& Mat);
-
-  RowVector varnorm(Matrix& in, int dim = 30, float level = 1.6, int econ = 20000);
-       void varnorm(Matrix& in, const RowVector& vars);
-  RowVector varnorm(Matrix& in, SymmetricMatrix& Corr, int dim = 30, float level = 1.6, int econ = 20000);
-
-  Matrix SP2(const Matrix& in, const Matrix& weights, int econ = 20000);
-  void SP3(Matrix& in, const Matrix& weights);
-  void SP4(Matrix& in, const Matrix& weights);
-
-  RowVector Feta(int n1,int n2);
-  RowVector cumsum(const RowVector& Inp);
-
-  Matrix corrcoef(const Matrix& in1, const Matrix& in2);
-  Matrix corrcoef(const Matrix& in1, const Matrix& in2, const Matrix& part);
-  float calc_white(const Matrix& tmpE, const RowVector& tmpD, const RowVector& PercEV, int dim, Matrix& param, Matrix& paramS, Matrix& white, Matrix& dewhite);
-  float calc_white(const Matrix& tmpE, const RowVector& tmpD, const RowVector& PercEV, int dim, Matrix& white, Matrix& dewhite);
-  void calc_white(const Matrix& tmpE, const RowVector& tmpD, int dim, Matrix& param, Matrix& paramS, Matrix& white, Matrix& dewhite);
-  void calc_white(const Matrix& tmpE, const RowVector& tmpD, int dim, Matrix& white, Matrix& dewhite);
-  void calc_white(const SymmetricMatrix& Corr, int dim, Matrix& white, Matrix& dewhite);
-  
-  void std_pca(const Matrix& Mat, SymmetricMatrix& Corr, Matrix& evecs, RowVector& evals, int econ = 20000);
-  void std_pca(const Matrix& Mat, const Matrix& weights, SymmetricMatrix& Corr, Matrix& evecs, RowVector& evals, int econ = 20000);
-  void em_pca(const Matrix& Mat, Matrix& evecs, RowVector& evals, int num_pc = 1, int iter = 20);
-  void em_pca(const Matrix& Mat, Matrix& guess, Matrix& evecs, RowVector& evals, int num_pc = 1, int iter = 20);
-
-  float rankapprox(const Matrix& Mat, Matrix& cols, Matrix& rows, int dim = 1);
-  RowVector krfact(const Matrix& Mat, Matrix& cols, Matrix& rows);
-  RowVector krfact(const Matrix& Mat, int colnum, Matrix& cols, Matrix& rows);
-  Matrix krprod(const Matrix& cols, const Matrix& rows);
-  Matrix krapprox(const Matrix& Mat, int size_col, int dim = 1);
-
-  void adj_eigspec(const RowVector& in, RowVector& out1, RowVector& out2, RowVector& out3, int& out4, int num_vox, float resels);
-  void adj_eigspec(const RowVector& in, RowVector& out1, RowVector& out2);
-
-  int ppca_dim(const Matrix& in, const Matrix& weights, Matrix& PPCA, RowVector& AdjEV, RowVector& PercEV, SymmetricMatrix& Corr, Matrix& tmpE, RowVector &tmpD, float resels, string which);
-  int ppca_dim(const Matrix& in, const Matrix& weights, Matrix& PPCA, RowVector& AdjEV, RowVector& PercEV, float resels, string which);
-  int ppca_dim(const Matrix& in, const Matrix& weights, float resels, string which);
-  ColumnVector ppca_select(Matrix& PPCAest, int& dim, int maxEV, string which);
-  Matrix ppca_est(const RowVector& eigenvalues, const int N1, const float N2);
-  Matrix ppca_est(const RowVector& eigenvalues, const int N);
-
-  ColumnVector acf(const ColumnVector& in, int order);
-  ColumnVector pacf(const ColumnVector& in, int maxorder = 1);
-  Matrix est_ar(const Matrix& Mat, int maxorder);
-  ColumnVector gen_ar(const ColumnVector& in, int maxorder = 1);
-  Matrix gen_ar(const Matrix& in, int maxorder);
-  Matrix gen_arCorr(const Matrix& in, int maxorder);
- 
-	class basicGLM{
-		public:
-		
-			//constructor
-			basicGLM(){}
-		
-			//destructor
-			~basicGLM(){}
-		
-			void olsfit(const Matrix& data, const Matrix& design, 
-				const Matrix& contrasts, int DOFadjust = -1);
-
-			inline Matrix& get_t(){return t;}
-			inline Matrix& get_z(){return z;}
-			inline Matrix& get_p(){return p;}
-			inline Matrix& get_f_fmf(){return f_fmf;}
-			inline Matrix& get_pf_fmf(){return pf_fmf;}
-			inline Matrix& get_cbeta(){return cbeta;}
-			inline Matrix& get_beta(){return beta;}
-			inline Matrix& get_varcb(){return varcb;}
-			inline Matrix& get_sigsq(){return sigsq;}
-			inline Matrix& get_residu(){return residu;}
-			inline int get_dof(){return dof;}
-			
-		private:
-			Matrix beta;
-			Matrix residu;
-			Matrix sigsq;
-			Matrix varcb;
-			Matrix cbeta;
-			Matrix f_fmf, pf_fmf;
-			int dof;
-			Matrix t;
-			Matrix z;
-			Matrix p;
-  };
-//	Matrix glm_ols(const Matrix& dat, const Matrix& design);
-}
-
-#endif
diff --git a/melica.cc b/melica.cc
deleted file mode 100644
index 3d6ed12..0000000
--- a/melica.cc
+++ /dev/null
@@ -1,484 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melica.cc - ICA estimation 
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#include <stdlib.h>
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "meloptions.h"
-#include "meldata.h"
-#include "melodic.h"
-#include "newmatap.h"
-#include "newmatio.h"
-#include "melica.h"
-#include "melpca.h"
-#include "melhlprfns.h"
-#include "miscmaths/miscprob.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-
-namespace Melodic {
-    
-  void MelodicICA::ica_fastica_symm(const Matrix &Data){
-    // based on Aapo Hyvärinen's fastica method
-    // see www.cis.hut.fi/projects/ica/fastica/
-    
-    //initialize matrices
-    Matrix redUMM_old, rank1_old;
-    Matrix tmpU;    
-    //srand((unsigned int)timer(NULL));
-    redUMM = melodat.get_white()*
-       unifrnd(melodat.get_white().Ncols(),dim); // got to start somewhere
-    
-	if(opts.debug.value())
-		cerr << "redUMM init submatrix : " << endl << redUMM.SubMatrix(1,2,1,2) << endl;
-		
-    if(opts.guessfname.value().size()>1){
-      message("  Use columns in " << opts.guessfname.value() 
-	      << " as initial values for the mixing matrix " <<endl);
-      Matrix guess ;
-      guess  = melodat.get_white()*read_ascii_matrix(opts.guessfname.value());
-      redUMM.Columns(1,guess.Ncols()) = guess;
-    }
-    
-    symm_orth(redUMM);
-
-    int itt_ctr,itt_ctr2=1,cum_itt=0,newmaxitts = opts.maxNumItt.value(); 
-    double minAbsSin = 1.0, minAbsSin2 = 1.0;
-    if(opts.approach.value() == string("tica"))
-      opts.maxNumItt.set_T(opts.rank1interval.value());
-
-    rank1_old = melodat.get_dewhite()*redUMM;
-    rank1_old = melodat.expand_dimred(rank1_old);
-    rank1_old = krapprox(rank1_old,int(rank1_old.Nrows()/melodat.get_numfiles())); 
-    do{// TICA loop
-      itt_ctr = 1;
-      do{ // da loop!!!
-				redUMM_old = redUMM;      
-				//calculate IC estimates
-				tmpU = Data.t() * redUMM;
-					
-				//update redUMM depending on nonlinearity
-				if(opts.nonlinearity.value()=="pow4"){
-	  			redUMM = (Data * pow(tmpU,3.0)) / samples - 3 * redUMM;
-				}
-				if(opts.nonlinearity.value()=="pow3"){
-	  			tmpU /= opts.nlconst1.value();
-	  			redUMM = 3 * (Data * pow(tmpU,2.0)) / samples  - 
-	    			(SP(ones(dim,1)*sum(tmpU,1),redUMM))/ samples;
-				}
-				if(opts.nonlinearity.value()=="tanh"){
-	  			Matrix hyptanh;
-	  			hyptanh = tanh(opts.nlconst1.value()*tmpU);
-	  			redUMM = (Data * hyptanh - opts.nlconst1.value()*SP(ones(dim,1)*
-						sum(1-pow(hyptanh,2),1),redUMM))/samples;						
-				}
-				if(opts.nonlinearity.value()=="gauss"){
-	  			Matrix tmpUsq;
-	  			Matrix tmpU2;
-	  			Matrix gauss;
-	  			Matrix dgauss;
-	  			tmpUsq = pow(tmpU,2);
-	  			tmpU2 = exp(-(opts.nlconst2.value()/2) * tmpUsq);
-	  			gauss = SP(tmpU,tmpU2);
-	  			dgauss = SP(1-opts.nlconst2.value()*tmpUsq,tmpU2);
-	  			redUMM = (Data * gauss - SP(ones(dim,1)*
-				    sum(dgauss,1),redUMM))/samples;
-				}
-           
-				// orthogonalize the unmixing-matrix 
-				symm_orth(redUMM);
-				if(opts.approach.value() == string("tica")){
-					message("");
-				}
-
-				//termination condition : angle between old and new < epsilon
-				minAbsSin = 1 - diag(abs(redUMM.t()*redUMM_old)).Minimum();
-
-				message("  Step no. " << cum_itt + itt_ctr << " change : " << minAbsSin << endl);
-		//		if((abs(minAbsSin) < opts.epsilon.value())&&
-		//		  (opts.approach.value()!=string("tica"))){ break;}
-				if((abs(minAbsSin) < opts.epsilon.value())){ break;}
-	
-				itt_ctr++;
-      } while(itt_ctr < opts.maxNumItt.value());
-      cum_itt += itt_ctr;
-      itt_ctr2++;
-      if(opts.approach.value() == string("tica")){
-				message(" Rank-1 approximation of the time courses; ");
-	  		Matrix temp(melodat.get_dewhite() * redUMM);
-	  		temp = melodat.expand_dimred(temp);
-			  temp = krapprox(temp,int(temp.Nrows()/melodat.get_numfiles())); 
-				minAbsSin2 = 1 - diag(abs(corrcoef(temp,rank1_old))).Minimum();
-				rank1_old = temp;
-				temp = melodat.reduce_dimred(temp);
-				redUMM = melodat.get_white() * temp;
-
-				message(" change : " << minAbsSin2 << endl);	
-				if(abs(minAbsSin2) < opts.epsilonS.value() && abs(minAbsSin) < opts.epsilon.value()){ break;}
-			}
-    } while(
-      (itt_ctr2 < newmaxitts/opts.maxNumItt.value()) && 
-			(opts.approach.value() ==  string("tica")) && 
-			cum_itt < newmaxitts);
-
-    if((itt_ctr>=opts.maxNumItt.value() && (opts.approach.value()!=string("tica")))
-			|| (cum_itt >= newmaxitts && opts.approach.value()==string("tica"))){
-      cerr << "  No convergence after " << cum_itt  <<" steps "<<endl;
-    } else {
-      message("  Convergence after " << cum_itt  <<" steps " << endl << endl);
-      no_convergence = false;
-
-      {Matrix temp(melodat.get_dewhite() * redUMM);
-       melodat.set_mix(temp);}
-      {Matrix temp(redUMM.t()*melodat.get_white());
-      melodat.set_unmix(temp);}
-    } 
-  }
-  
-  void MelodicICA::ica_fastica_defl(const Matrix &Data){
-    if(!opts.explicitnums || opts.numICs.value()>dim){
-      opts.numICs.set_T(dim); 
-      message("  Using numICs:" << opts.numICs.value() << endl);
-    }
-     
-    //redUMM = zeros(dim); // got to start somewhere
-    redUMM = melodat.get_white()*
-      unifrnd(melodat.get_white().Ncols(),opts.numICs.value());
-    redUMM = zeros(melodat.get_white().Nrows(),opts.numICs.value());
-    Matrix guess;
-    int guesses=0;
-    if(opts.guessfname.value().size()>1){
-       message("  Use columns in " << opts.guessfname.value() << " as initial values for the mixing matrix " <<endl);
-       guess  = melodat.get_white()*read_ascii_matrix(opts.guessfname.value());
-       guesses = guess.Ncols();
-    }
-
-    int ctrIC = 1;
-    int numRestart = 0;
-    while(ctrIC<=opts.numICs.value()){   
-     	message("  Extracting IC " << ctrIC << "  ... ");
-      ColumnVector w;
-      ColumnVector w_old;   
-      ColumnVector tmpU;
-      if(ctrIC <= guesses){
-      	w = w - redUMM * redUMM.t() * w;
-      	w = w / norm2(w);  
-      	w_old = zeros(w.Nrows(),1);
-      	int itt_ctr = 1; 
-      	do{
-	 				w_old = w;
-	 				tmpU = Data.t() * w; 
-					if(opts.nonlinearity.value()=="pow4"){
-	  				w =  (Data * pow(tmpU,3.0)) / samples - 3 * w;
-					}
-					if(opts.nonlinearity.value()=="tanh"){
-	  				ColumnVector hyptanh;
-          	hyptanh = tanh(opts.nlconst1.value()*tmpU);
- 	  				w = (Data * hyptanh - opts.nlconst1.value()*SP(ones(dim,1)*
-          		sum(1-pow(hyptanh,2),1),w))/samples;
-					} 
-					if(opts.nonlinearity.value()=="pow3"){
-	  				tmpU /= opts.nlconst1.value();
- 	  				w = 3*(Data * pow(tmpU,2.0)) / samples - 2*(SP(ones(dim,1)*
-           		sum(tmpU,1),w))/samples;
-					} 
-					if(opts.nonlinearity.value()=="gauss"){
-	  				ColumnVector tmpUsq;
-	  				ColumnVector tmpU2;
-	  				ColumnVector gauss;
-	  				ColumnVector dgauss;
-	  				tmpUsq = pow(tmpU,2);
-	  				tmpU2 = exp(-(opts.nlconst2.value()/2) * tmpUsq);
-	  				gauss = SP(tmpU,tmpU2);
-	  				dgauss = SP(1-opts.nlconst2.value()*tmpUsq,tmpU2);
-          	w = (Data * gauss - SP(ones(dim,1)*
-				 			sum(dgauss,1),w))/samples;
-					}
-
-					// orthogonalize w
-					w = w - redUMM * redUMM.t() * w;
-					w = w / norm2(w);  
-
-					//termination condition : angle between old and new < epsilon
-					if(((norm2(w-w_old) < 0.001*opts.epsilon.value())&&(itt_ctr>10)) || 
-					   ((norm2(w+w_old) < 0.001*opts.epsilon.value())&&(itt_ctr>10))){
-	 					break;
-				  	}
-        	//cout << norm2(w-w_old) << "   " << norm2(w+w_old) << endl;
-					itt_ctr++;
-     	  } while(itt_ctr <= opts.maxNumItt.value());
-
-      if(itt_ctr<opts.maxNumItt.value()){
-				redUMM.Column(ctrIC) = w;
-        message(" estimated using " << itt_ctr << " iterations " << endl);
-        ctrIC++; 
-        numRestart = 0;
-      } else{
-        if(numRestart > opts.maxRestart.value()){
-	  			message(endl << "  Estimation failed after " 
-		  			<< numRestart << " attempts " 
-		  			<< " giving up " << endl);
-	  			break;
-				}else{
-          numRestart++;
-	  			message(endl <<"  Estimation failed - restart " 
-		  			<< numRestart << endl);
-				}
-      }
-     	}
-     	if(numRestart < opts.maxRestart.value()){
-       	no_convergence = false;
-       	{Matrix temp(melodat.get_dewhite() * redUMM);
-       		melodat.set_mix(temp);}
-       	{Matrix temp(redUMM.t()*melodat.get_white());
-       		melodat.set_unmix(temp);}
-     	}
-		}
-  }
-
-  void MelodicICA::ica_maxent(const Matrix &Data){
-    // based on Aapo Hyvärinen's fastica method
-    // see www.cis.hut.fi/projects/ica/fastica/ 
-    message(" MAXENT " << endl);
-    //initialize matrices
-    Matrix redUMM_old;
-    Matrix tmpU;    
-    Matrix gtmpU;
-    double lambda = 0.015/std::log((double)melodat.get_white().Ncols());
-    
-    //srand((unsigned int)timer(NULL));
-    redUMM = melodat.get_white()*
-     	unifrnd(melodat.get_white().Ncols(),dim); // got to start somewhere
-    
-    if(opts.guessfname.value().size()>1){
-      message("  Use columns in " << opts.guessfname.value() 
-	      << " as initial values for the mixing matrix " <<endl);
-      Matrix guess ;
-      guess  = melodat.get_white()*read_ascii_matrix(opts.guessfname.value());
-      redUMM.Columns(1,guess.Ncols()) = guess;
-    }
-    
-    //    symm_orth(redUMM);
-    int itt_ctr=1; 
-    double minAbsSin = 1.0;
-    Matrix Id;
-    Id = IdentityMatrix(redUMM.Ncols());
-    //cerr << " nonlinearity : " <<    opts.nonlinearity.value() << endl;
-
-    do{ // da loop!!!
-      redUMM_old = redUMM;      
-      //calculate IC estimates
-      tmpU = Data.t() * redUMM;
-      if(opts.nonlinearity.value()=="tanh"){
-				//Matrix hyptanh;
-				//hyptanh = tanh(opts.nlconst1.value()*tmpU);
-				//redUMM = (Data * hyptanh - opts.nlconst1.value()*SP(ones(dim,1)*
-				//sum(1-pow(hyptanh,2),1),redUMM))/samples;
-				gtmpU = tanh(opts.nlconst1.value()*tmpU);
-				redUMM = redUMM + lambda*(Id+(1-2*gtmpU.t()*tmpU))*redUMM;
-      }
-      if(opts.nonlinearity.value()=="gauss"){
-				gtmpU = pow(1+exp(-(opts.nlconst2.value()/2) * tmpU),-1);
-				redUMM = redUMM + lambda*(Id - (gtmpU.t()-tmpU.t())*tmpU)*redUMM;
-      }
- 
-      //termination condition : angle between old and new < epsilon
-      minAbsSin = abs(1 - diag(abs(redUMM.t()*redUMM_old)).Minimum());
-      message("  Step no. " << itt_ctr << " change : " << minAbsSin << endl);
-      if(abs(minAbsSin) < opts.epsilon.value()){ break;}
-      
-      itt_ctr++;
-    } while(itt_ctr < opts.maxNumItt.value());
-    
-    if(itt_ctr>=opts.maxNumItt.value()){
-      cerr << "  No convergence after " << itt_ctr <<" steps "<<endl;
-    } else {
-      message("  Convergence after " << itt_ctr <<" steps " << endl << endl);
-      no_convergence = false;
-      {Matrix temp(melodat.get_dewhite() * redUMM);
-       melodat.set_mix(temp);}
-      {Matrix temp(redUMM.t()*melodat.get_white());
-      melodat.set_unmix(temp);}
-    } 
-  }
-  
-  void MelodicICA::ica_jade(const Matrix &Data){ 
-    int dim_sym = (int) (dim*(dim+1))/2;  
-    int num_CM = dim_sym;
-    Matrix CM;
-    Matrix R; R = IdentityMatrix(dim);
-    Matrix Qij; Qij = zeros(dim);
-    Matrix Xim;
-    Matrix Xjm;
-    Matrix scale; scale = ones(dim,1)/samples;
-
-    for (int im =1; im <= dim; im++){
-      Xim = Data.Row(im);
-			write_ascii_matrix("Xim",Data.Row(1));
-      //Qij = SP((scale * pow(Xim,2)),Data) * Data.t();//- R - 2*R.Column(im)*R.Column(im).t();
-      Qij = (pow(Xim,2)) * Data.t();//- R - 2*R.Column(im)*R.Column(im).t();
-      if(im==1){CM = Qij; write_ascii_matrix("CM",CM);exit(2);}else{CM |= Qij;}
-      for (int jm = 1; jm < im; jm++){
-				Xjm = Data.Row(jm);
-				Qij = (SP((scale * SP(Xim,Xjm)),Data) * Data.t() - 
-					R.Column(im)*R.Column(jm).t() - R.Column(jm)*R.Column(im).t());
-				Qij *= sqrt(2);
-				CM  |= Qij;
-      }
-    }
-
-    write_ascii_matrix("CM",CM);
-    Matrix redUMM; redUMM = IdentityMatrix(dim);
-  
-    bool exitloop = false;
-    int ctr_itt = 0;
-    int ctr_updates = 0;
-    Matrix Givens; Givens = zeros(2,num_CM);
-    Matrix Givens_ip; Givens_ip = zeros(2);
-    Matrix Givens_ro; Givens_ro = zeros(2);
-    double det_on, det_off;
-    double cos_theta, sin_theta, theta;
-
-    while(!exitloop && ctr_itt <= opts.maxNumItt.value()){
-      ctr_itt++;
-      cout << "loop" <<endl;
-      for(int ctr_p = 1; ctr_p < dim; ctr_p++){
-				for(int ctr_q = ctr_p+1; ctr_q <= dim; ctr_q++){
-
-	  			for(int ctr_i = 0; ctr_i < num_CM; ctr_i++){
-	    			int Ip = ctr_p + ctr_i * dim;
-	    			int Iq = ctr_q + ctr_i * dim;
-	    			Givens(1,ctr_i + 1) = CM(ctr_p,Ip) - CM(ctr_q,Iq);
-	    			Givens(2,ctr_i + 1) = CM(ctr_p,Iq) - CM(ctr_q,Ip);
-	  			}
-	  
-	  			Givens_ip = Givens * Givens.t();
-	  			det_on = Givens_ip(1,1) - Givens_ip(2,2);
-	  			det_off = Givens_ip(1,2) + Givens_ip(2,1);
-	  			theta = 0.5 * atan2(det_off, det_on + sqrt(det_on*det_on + det_off*det_off));
-
-	  			cout << theta << endl;
-
-	  			if(abs(theta) > opts.epsilon.value()){
-	    			ctr_updates++;
-	    			message("  Step No. "<< ctr_itt << " change : " << theta << endl);
-			
-	    			//create Givens rotation matrix
-	    			cos_theta = cos(theta);
-	    			sin_theta = sin(theta);
-	    			Givens_ro(1,1) = cos_theta;
-	    			Givens_ro(1,2) = -sin_theta;
-	    			Givens_ro(2,1) = sin_theta;
-	    			Givens_ro(2,2) = cos_theta;
-
-	    			//update 2 entries of redUMM
-	    			{Matrix tmp_redUMM;
-	    				tmp_redUMM = redUMM.Column(ctr_p);
-	    				tmp_redUMM |= redUMM.Column(ctr_q);
-	    				tmp_redUMM *= Givens_ro;
-	    				redUMM.Column(ctr_p) = tmp_redUMM.Column(1);
-	    				redUMM.Column(ctr_q) = tmp_redUMM.Column(2);}
-
-	    			//update Cumulant matrix
-	    			{Matrix tmp_CM;
-	    				tmp_CM = CM.Row(ctr_p);
-	    				tmp_CM &= CM.Row(ctr_q);
-	    				tmp_CM = Givens_ro.t() * tmp_CM;
-	    				CM.Row(ctr_p) = tmp_CM.Row(1);
-	    				CM.Row(ctr_q) = tmp_CM.Row(2);}
-
-	    			//update Cumulant matrices
-	    			for(int ctr_i = 0; ctr_i < num_CM; ctr_i++){
-	      			int Ip = ctr_p + ctr_i * dim;
-	      			int Iq = ctr_q + ctr_i * dim;
-	      			CM.Column(Ip) = cos_theta*CM.Column(Ip)+sin_theta*CM.Column(Iq);
-	      			CM.Column(Iq) = cos_theta*CM.Column(Iq)-sin_theta*CM.Column(Ip);
-	    			}
-	  			}else{
-	    			exitloop = true;
-	  			}
-				}
-      }
-    }//while loop
-    if(ctr_itt > opts.maxNumItt.value()){
-    	cerr << "  No convergence after " << ctr_itt <<" steps "<<endl;
-    } else {
-     	message("  Convergence after " << ctr_itt <<" steps " << endl << endl);
-      no_convergence = false;
-      {Matrix temp(melodat.get_dewhite() * redUMM);
-       	melodat.set_mix(temp);}
-      {Matrix temp(redUMM.t()*melodat.get_white());
-       	melodat.set_unmix(temp);}
-    }
-  }
-
-  Matrix MelodicICA::sign(const Matrix &Inp){
-    Matrix Res = Inp;
-    Res = 1;
-    for(int ctr_i = 1; ctr_i <= Inp.Ncols(); ctr_i++){
-      for(int ctr_j = 1; ctr_j <= Inp.Nrows(); ctr_j++){
-				if(Inp(ctr_j,ctr_i)<0){Res(ctr_j,ctr_i)=-1;}
-      }
-    } 
-    return Res;
-  }
-
-  void MelodicICA::perf_ica(const Matrix &Data){ 
-    message("Starting ICA estimation using " << opts.approach.value() 
-	    << endl << endl);
-    dim = Data.Nrows();
-    samples = Data.Ncols();
-    no_convergence = true;
-    //switch to the chosen method   
-    if(opts.approach.value()==string("symm") ||
-       opts.approach.value()==string("tica") ||
-       opts.approach.value()==string("parafac") ||
-       opts.approach.value()==string("concat"))
-      ica_fastica_symm(Data);
-    if(opts.approach.value()==string("defl"))
-      ica_fastica_defl(Data);
-    if(opts.approach.value()==string("jade"))
-      ica_jade(Data);
-    if(opts.approach.value()==string("maxent"))
-      ica_maxent(Data);
-    
-    if(!no_convergence){//calculate the IC
-      Matrix temp(melodat.get_unmix()*melodat.get_Data());
-      //  Add the mean time course again  
-      //      temp += melodat.get_unmix()*melodat.get_meanC()*ones(1,temp.Ncols());
-
-      //re-normalise the decomposition to std(mix)=1
-      Matrix scales;
-      scales = stdev(melodat.get_mix());   
-
-      //cerr << " SCALES 1 " << scales << endl;
-      Matrix tmp, tmp2;
-      tmp = SP(melodat.get_mix(),ones(melodat.get_mix().Nrows(),1)*pow(scales,-1));
-      temp = SP(temp,scales.t()*ones(1,temp.Ncols()));
-
-      scales = scales.t();
-  
-      melodat.set_mix(tmp);
-
-      melodat.set_IC(temp);
-
-      melodat.set_ICstats(scales);
-      melodat.sort();
-
-	  //message("Calculating T- and S-modes " << endl);
-      melodat.set_TSmode();
-		
-    }
-  }
-}
-
-
diff --git a/melica.h b/melica.h
deleted file mode 100644
index dc95940..0000000
--- a/melica.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melica.h - ICA estimation
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT */
-
-#ifndef __MELODICICA_h
-#define __MELODICICA_h
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "melpca.h"
-#include "meloptions.h"
-#include "meldata.h"
-#include "melodic.h"
-#include "newmatap.h"
-#include "newmatio.h"
-#include "melreport.h"
-#include "ggmix.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-
-namespace Melodic{
-  
-  class MelodicICA{
-    public:
-      MelodicICA(MelodicData &pmelodat, MelodicOptions &popts, Log &plogger, MelodicReport &preport):  
-				melodat(pmelodat),
-				opts(popts),
-				logger(plogger),
-				report(preport){} 
-      
-      void perf_ica(const Matrix &Data);
-      
-      bool no_convergence;
-
-    private:
-      MelodicData &melodat;
-      MelodicOptions &opts;
-      Log &logger;
-      MelodicReport &report;
-
-      int dim;
-      int samples; 
-      Matrix redUMM;
-
-      void ica_fastica_symm(const Matrix &Data);
-      void ica_fastica_defl(const Matrix &Data);
-      void ica_maxent(const Matrix &Data);
-      void ica_jade(const Matrix &Data);
-      //void tica();
-      //void tica_concat();
-      //void parafac();
-      Matrix randm(const int dim1, const int dim2);
-      void sort();
-      Matrix sign(const Matrix &Inp);
-
-  };   
-}
-
-#endif
diff --git a/melodic.h b/melodic.h
deleted file mode 100644
index 3e3e32d..0000000
--- a/melodic.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-                 independent components
-    
-    melodic.h - main program header
-
-    Christian F. Beckmann and Matthew Webster, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT */
-
-#ifndef __MELODIC_h
-#define __MELODIC_h
-
-#include <strstream>
-
-#ifdef __APPLE__
-#include <mach/mach.h>
-#define memmsg(msg) { \
-  MelodicOptions&opt = MelodicOptions::getInstance(); \
-  struct task_basic_info t_info; \
-  mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT; \
-  if (KERN_SUCCESS == task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t) &t_info, &t_info_count)) \
-	{ \
-		if(opt.debug.value()) {\
-		    cout << " MEM: " << msg << " res: " << t_info.resident_size/1000000 << " virt: " << t_info.virtual_size/1000000 << "\n"; \
-		    cout.flush(); \
-		 } \
-	} \
-}
-#else
-#define memmsg(msg) { \
-  MelodicOptions&opt = MelodicOptions::getInstance(); \
-  if(opt.debug.value()) {\
-		cout << msg; \
-		cout.flush(); \
-  } \
-}
-#endif
-
-
-
-// a simple message macro that takes care of cout and log
-#define message(msg) { \
-  MelodicOptions& opt = MelodicOptions::getInstance(); \
-  if(opt.verbose.value()) \
-    { \
-      cout << msg; \
-    } \
-  Log& logger  =   LogSingleton::getInstance(); \
-  logger.str() << msg; \
-  cout.flush(); \
-}
-
-#define dbgmsg(msg) { \
-  MelodicOptions&opt = MelodicOptions::getInstance(); \
-  if(opt.debug.value()) {\
-		cout << msg; } \
-}
-
-#define outMsize(msg,Mat) { \
-  MelodicOptions& opt = MelodicOptions::getInstance();		\
-  if(opt.debug.value())						\
-    cerr << "     " << msg << "  " <<Mat.Nrows() << " x " << Mat.Ncols() << endl;	\
-}
-
-namespace Melodic{
-
-const string version = "3.141";  
-
-// The two strings below specify the title and example usage that is	
-// printed out as the help or usage message
-const string title=string("MELODIC (Version ")+version+")"+
-		string("\n Multivariate Exploratory Linear Optimised Decomposition into Independent Components\n")+
-		string("\nAuthor: Christian F. Beckmann \n Copyright(c) 2001-2013 University of Oxford");
-
-const string usageexmpl=string(" melodic -i <filename> <options>")+
-		   string("\n \t \t to run melodic")+
-	//	   string("\n melodic -i <filename> --mix=melodic_mix")+
-	//	   string(" --filter=\"string of component numbers\"")+
-	//	   string("\n \t \t to remove estimated ICs from input")+
-		   string("\n melodic -i <filename> --ICs=melodic_IC")+
-		   string(" --mix=melodic_mix <options>")+
-		   string("\n \t \t to run Mixture Model based inference on estimated ICs")+
-		   string("\n melodic --help ");
-}
-
-#endif
diff --git a/meloptions.cc b/meloptions.cc
index 0d96dbe..72835c3 100644
--- a/meloptions.cc
+++ b/meloptions.cc
@@ -157,10 +157,6 @@ MelodicOptions* MelodicOptions::gopt = NULL;
   		}
 		if (insta_fn.value() > ""){
 			varnorm.set_T(false);
-			cout << " inc_fn = "  << insta_fn.value() << endl;
-			cout << " inc_idx = "  << insta_idx.value() << endl;
-			cout << " inc_partial = "  << insta_partial.value() << endl;
-			cout << " inc_varnorm = "  << insta_varnorm.value() << endl;
 		}
   
   		//in the case of indirect inputs, create the vector of input names here
diff --git a/meloptions.h b/meloptions.h
deleted file mode 100644
index 020884f..0000000
--- a/meloptions.h
+++ /dev/null
@@ -1,543 +0,0 @@
- /*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    meloptions.h - class for command line options
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#ifndef __MELODICOPTIONS_h
-#define __MELODICOPTIONS_h
-
-#include <string>
-#include <strstream>
-#include <iostream>
-#include <iomanip>
-#include <fstream>
-#include <stdlib.h>
-#include <stdio.h>
-#include "utils/options.h"
-#include "utils/log.h"
-#include "melodic.h"
-
-using namespace Utilities;
-
-namespace Melodic {
-
-class MelodicOptions {
-	public:
-  	static MelodicOptions& getInstance();
-  	~MelodicOptions() { delete gopt; }
-  
-  	string version;
-  	string binpath;
-  	string logfname;
-  	bool   filtermode;
-  	bool   explicitnums;
-  
-  	Option<string> logdir;
-  	Option< std::vector<string> > inputfname;
-
-  	Option<string> outputfname;
-
-  	Option<string> maskfname;
-  	Option<bool>   use_mask;
-  	Option<bool>   update_mask;
-  	Option<bool>   perf_bet;
-  	Option<float>  threshold;
-
-  	Option<int>    pca_dim;
-  	Option<string> pca_est;
-  	Option<bool>   joined_whiten;
-  	Option<bool>   joined_vn;
-	Option<bool>   dr_pca;
-	Option<bool>   migp;
-	Option<int>    migpN;
-	Option<bool>   migp_shuffle;
-	Option<int>	   migp_factor;
-	Option<bool>   dr;
-	Option<bool>   dr_out;
-	Option<float>  vn_level;
-  	Option<int>    numICs;
-  	Option<string> approach;
-  	Option<string> nonlinearity;
-
-  	Option<bool>   varnorm;
- 	Option<bool>   varnorm2;
-  	Option<bool>   pbsc;
-  	Option<bool>   pspec;
-  	Option<string> segment;
-  	Option<bool>   tsmooth;
-  	Option<float>  epsilon;
-  	Option<float>  epsilonS;
-  	Option<int>    maxNumItt;
-  	Option<int>    maxRestart;
-  	Option<int>    rank1interval;
-
-  	Option<string> mmthresh;
-  	Option<bool>   perf_mm;
-  	Option<string> ICsfname;
-  	Option<string> filtermix; 
-  	Option<string> smodename; 
-  	Option<string> filter; 
-
-  	Option<bool>   genreport;
-	Option<string> guireport;
-	Option<string> bgimage;
-  	Option<float>  tr;
-  	Option<bool>   logPower;
-	Option<bool>   addsigchng;
-	Option<bool>   allPPCA;
-	Option<bool>   varplots;
-	Option<bool>   varvals;
-
-	Option<string> fn_Tdesign;
-	Option<string> fn_Tcon;
-	Option<string> fn_TconF;
-	Option<string> fn_Sdesign;
-	Option<string> fn_Scon;	
-	Option<string> fn_SconF;	
-	
-  	Option<bool>   output_all;
-  	Option<bool>   output_unmix;
-  	Option<bool>   output_MMstats;
-  	Option<bool>   output_pca;
-  	Option<bool>   output_white;
-  	Option<bool>   output_origIC;
-  	Option<bool>   output_mean;
-
-  	Option<bool> verbose;  
-  	Option<bool> vers;
-  	Option<bool> copyright;
-  	Option<bool> help;
-  	Option<bool> debug;
-
-  	Option<string> guessfname;
-  	Option<string> paradigmfname;
-  	Option<string> axials_str;
-
-  	Option<int>   dummy;
-  	Option<int>   repeats;
-	Option<int>   seed;
-  	Option<float> nlconst1;
-  	Option<float> nlconst2;
-  	Option<float> smooth_probmap;
-
-	Option<string> insta_fn;
-	Option<int>	   insta_idx;
-	Option<bool>   insta_partial;
-	Option<bool>   insta_varnorm;
-
-  	Option<bool> remove_meanvol;
-  	Option<bool> remove_meantc;
- 	Option<bool> remove_endslices;
-  	Option<bool> rescale_nht;
-
-  	Option<bool> guess_remderiv;
-  	Option<bool> temporal;
-
-  	Option<float> retryfactor;
-  	Option<int> econ;
-
-  	void parse_command_line(int argc, char** argv, Log& logger,  const string &p_version);
-
- 	private:
-  	MelodicOptions();  
-  	const MelodicOptions& operator=(MelodicOptions&);
-  	MelodicOptions(MelodicOptions&);
-
-  	OptionParser options; 
-      
-  	static MelodicOptions* gopt;
-
-  	void print_usage(int argc, char *argv[]);  
-  	void print_version(); 
-  	void print_copyright();
-  	void status();
-
-};
-
- inline MelodicOptions& MelodicOptions::getInstance(){
-   if(gopt == NULL)
-     gopt = new MelodicOptions();
-   
-   return *gopt;
- }
-
- inline MelodicOptions::MelodicOptions() :
-   logdir(string("-o,--outdir"), string("log.txt"),
-	   string("output directory name\n"), 
-	   false, requires_argument),
-   inputfname(string("-i,--in"), std::vector<string>(),
-	   string("input file names (either single file name or comma-separated list or text file)"), 
-	   true, requires_argument),
-   outputfname(string("-O,--out"), string("melodic"),
-	   string("output file name"), 
-	   false, requires_argument,false),
-   maskfname(string("-m,--mask"), string(""),
-	   string("file name of mask for thresholding"), 
-	   false, requires_argument),
-   use_mask(string("--nomask"), true,
-	   string("switch off masking"), 
-	   false, no_argument),
-   update_mask(string("--update_mask"), true,
-	   string("switch off mask updating"), 
-	   false, no_argument),
-   perf_bet(string("--nobet"), true,
-	   string("\tswitch off BET"), 
-	   false, no_argument),
-   threshold(string("--bgthreshold"),  0.01,
-	   string("brain / non-brain threshold (only if --nobet selected)\n"), 
-	   false, requires_argument),
-   pca_dim(string("-d,--dim"), 0,
-	   string("dimensionality reduction into #num dimensions (default: automatic estimation)"), 
-	   false, requires_argument),
-   pca_est(string("--dimest"), string("lap"),
-	   string("use specific dim. estimation technique: lap, bic, mdl, aic, mean (default: lap)"), 
-	   false, requires_argument),
-   joined_whiten(string("--sep_whiten"), false,
-	   string("switch on separate whitening"), 
-	   false, no_argument, false),
-   joined_vn(string("--sep_vn"), true,
-   	   string("switch on separate variance nomalisation (as opposed to separate VN)"), 
-       false, no_argument),
-   dr_pca(string("--mod_pca"), true,
-	   string("switch off modified PCA for concat ICA"),
-	   false, no_argument, false),
-   migp(string("--migp"), false,
-	   string("switch on MIGP data reduction"),
-	   false, no_argument, false),	
-   migpN(string("--migpN"), 0,
-	   string("Number of internal Eigenmaps"),
-	   false, requires_argument, false),
-   migp_shuffle(string("--migp_shuffle"), true,
-	   string("Randomise MIGP file order (default: TRUE)"),
-	   false, no_argument, false),
-   migp_factor(string("--migp_factor"), 2,
-	   string("Internal Factor of mem-threshold relative to number of Eigenmaps (default: 2)"),
-       false, requires_argument, false),
-   dr(string("--dr"), false,
-	   string("Dual Regression (default: false)"),
-	   false, no_argument, false),
-   dr_out(string("--dr_out"), false,
-	   string("Dual Regression output for MIGP/concat ICA"),
-	   false, no_argument, false),	
-   vn_level(string("--vn_level"), float(2.3),
-	   string("variance nomalisation threshold level (Z> value is ignored)"), 
-	   false, requires_argument, false),
-   numICs(string("-n,--numICs"), -1,
-	   string("numer of IC's to extract (for deflation approach)"), 
-	   false, requires_argument),
-   approach(string("-a,--approach"),  string("symm"),
-	   string("approach for decomposition, 2D: defl, symm (default), 3D: tica, concat (default)"),
-	   false, requires_argument),
-   nonlinearity(string("--nl"), string("pow3"),
-	   string("\tnonlinearity: gauss, tanh, pow3, pow4"), 
-	   false, requires_argument),
-   varnorm(string("--vn,--varnorm"), true,
-	   string("switch off variance normalisation"), 
-	   false, no_argument),
-   varnorm2(string("--vn2"), true,
-		string("switch off 2nd level variance normalisation"), 
-		false, no_argument, false),
-   pbsc(string("--pbsc"), false,
-	   string("        switch on conversion to percent BOLD signal change"), 
-	   false, no_argument, false),
-   pspec(string("--pspec"), false,
-	   string("        switch on conversion to powerspectra"), 
-	   false, no_argument, false),
-   segment(string("--covarweight"), string(""),
-	   string("voxel-wise weights for the covariance matrix (e.g. segmentation information)"),
-	   false, requires_argument),
-   tsmooth(string("--spca"),  false,
-	   string("smooth the eigenvectors prior to IC decomposition"), 
-	    false, no_argument, false),
-   epsilon(string("--eps"), 0.00005,
-	   string("minimum error change"), 
-	   false, requires_argument),
-   epsilonS(string("--epsS"), 0.03,
-	   string("minimum error change for rank-1 approximation in TICA"), 
-	   false, requires_argument),
-   maxNumItt(string("--maxit"),  500,
-	   string("\tmaximum number of iterations before restart"), 
-	   false, requires_argument),
-   maxRestart(string("--maxrestart"),  -1,
-	   string("maximum number of restarts\n"), 
-	   false, requires_argument),
-   rank1interval(string("--rank1interval"),  10,
-	   string("number of iterations between rank-1 approximation (TICA)\n"), 
-		 false, requires_argument,false),
-   mmthresh(string("--mmthresh"), string("0.5"),
-	   string("threshold for Mixture Model based inference"), 
-	   false, requires_argument),
-   perf_mm(string("--no_mm"), true,
-	   string("\tswitch off mixture modelling on IC maps\n "), 
-	   false, no_argument),
-   ICsfname(string("--ICs"), string(""),
-	   string("\tinput filename of the IC components file for mixture modelling"), 
-	   false, requires_argument),
-   filtermix(string("--mix"),  string(""),
-	   string("\tinput filename of mixing matrix for mixture modelling / filtering"), 
-	   false, requires_argument),
-   smodename(string("--smode"),  string(""),
-	   string("\tinput filename of matrix of session modes for report generation"), 
-	   false, requires_argument),
-   filter(string("-f,--filter"),  string(""),
-	   string("list of component numbers to remove\n "), 
-	   false, requires_argument),
-   genreport(string("--report"), false,
-	   string("generate Melodic web report"), 
-	   false, no_argument),
-   guireport(string("--guireport"), string(""),
-	   string("modify report for GUI use"), 
-	   false, requires_argument, false),
-   bgimage(string("--bgimage"),  string(""),
-	   string("specify background image for report (default: mean image)\n "), 
-	   false, requires_argument),
-   tr(string("--tr"),  0.0,
-	   string("\tTR in seconds"), 
-	   false, requires_argument),
-   logPower(string("--logPower"),  false,
-	   string("calculate log of power for frequency spectrum\n"), 
-	   false, no_argument),
-   addsigchng(string("--sigchng"),  false,
-	   string("add signal change estimates to report pages\n"), 
-       false, no_argument, false),
-   allPPCA(string("--allPPCA"),  false,
-	   string("add all PPCA plots\n"), 
-	   false, no_argument, false),
-   varplots(string("--varplots"),  false,
-	   string("add std error envelopes to time course plots\n"), 
-	   false, no_argument, false),
-   varvals(string("--varvals"),  false,
-	   string("add rank1 values after plots\n"), 
-	   false, no_argument, false),
-   fn_Tdesign(string("--Tdes"), string(""),
-	   string("        design matrix across time-domain"),
-	   false, requires_argument),
-   fn_Tcon(string("--Tcon"), string(""),
-       string("        t-contrast matrix across time-domain"),
-	   false, requires_argument),
-   fn_TconF(string("--Tconf"), string(""),
-	   string("        F-contrast matrix across time-domain"),
-	   false, requires_argument, false),
-   fn_Sdesign(string("--Sdes"), string(""),
-	   string("        design matrix across subject-domain"),
-	   false, requires_argument),
-   fn_Scon(string("--Scon"), string(""),
-	   string("        t-contrast matrix across subject-domain"),
-	   false, requires_argument),	
-   fn_SconF(string("--Sconf"), string(""),
-	   string("        F-contrast matrix across subject-domain"),
-	   false, requires_argument,false),	
-   output_all(string("--Oall"),  false,
-	   string("        output everything"), 
-	   false, no_argument),
-   output_unmix(string("--Ounmix"),  false,
-	   string("output unmixing matrix"), 
-	   false, no_argument),
-   output_MMstats(string("--Ostats"),  false,
-	   string("output thresholded maps and probability maps"), 
-	   false, no_argument),
-   output_pca(string("--Opca"),  false,
-	   string("\toutput PCA results"), 
-	   false, no_argument),
-   output_white(string("--Owhite"),  false,
-	   string("output whitening/dewhitening matrices"), 
-	   false, no_argument),
-   output_origIC(string("--Oorig"),  false,
-	   string("\toutput the original ICs"), 
-	   false, no_argument),
-   output_mean(string("--Omean"),  false,
-	   string("\toutput mean volume\n"), 
-	   false, no_argument),
-   verbose(string("-v,--verbose"), false,
-	   string("switch on diagnostic messages"), 
-	   false, no_argument),
-   vers(string("-V,--version"), false,
-	   string("prints version information"), 
-	   false, no_argument),
-   copyright(string("--copyright"), false,
-	   string("prints copyright information"), 
-	   false, no_argument),
-   help(string("-h,--help"),  false,
-	   string("prints this help message"), 
-	   false, no_argument),
-   debug(string("--debug"),  false,
-	   string("        switch on debug messages"), 
-	   false, no_argument),
-   guessfname(string("--init_ica"), string(""),
-	   string("file name of FEAT paradigm file (design.mat) for ICA initialisation"), 
-	   false, requires_argument, false),
-   paradigmfname(string("--init_pca"),  string(""),
-	   string("file name of FEAT paradigm file (design.mat) for PCA initialisation"), 
-	   false, requires_argument, false),
-   axials_str(string("--report_maps"),  string(" -s 2 -A 950 "),
-		   string("control string for spatial map images (see slicer)"), 
-		   false, requires_argument),
-   dummy(string("--dummy"),  0,
-	   string("number of dummy volumes"), 
-	   false, requires_argument,false),
-   repeats(string("--repeats"), 1,
-	   string("number of repeats (multistart)"), 
-	   false, requires_argument, false),
-   seed(string("--seed"), -1,
-	   string("integer seed for random number generator within melodic"), 
-	   false, requires_argument, false),
-   nlconst1(string("--nl1,--nlconst1"),  1.0,
-	   string("nonlinear constant 1"), 
-	   false, requires_argument, false),
-   nlconst2(string("--nl2,--nlconst2"),  1.0,
-	   string("nonlinear constant 2"), 
-	   false, requires_argument, false),
-   smooth_probmap(string("--smooth_pm"),  0.0,
-	   string("width of smoothing kernel for probability maps"), 
-	   false, requires_argument, false),
-   insta_fn(string("--inc_fn"), string(""),
-	   string(" file name for instacorr volumes"),
-       false, requires_argument, false),
-   insta_idx(string("--inc_idx"), 1,
-	   string(" index for instacorr calculation"),
-	   false, requires_argument, false),
-   insta_partial(string("--inc_partial"), true,
-	   string(" switch off partial correlation analysis for instacorrs"),
-	   false, requires_argument, false),
-   insta_varnorm(string("--inc_varnorm"), true,
-       string(" switch off varnorm for instantaneous correlations"),
-	   false, no_argument, false),
-   remove_meanvol(string("--keep_meanvol"), true,
-	   string("do not subtract mean volume"), 
-	   false, no_argument, false),
-   remove_meantc(string("--remove_meantc"), false,
-	   string("remove mean time course"), 
-	   false, no_argument, false),
-   remove_endslices(string("--remEndslices"),  false,
-	   string("delete end slices (motion correction artefacts)"), 
-	   false, no_argument,false),
-   rescale_nht(string("--rescale_nht"),  true,
-	   string("switch off map rescaling after mixture-modelling"), 
-	   false, no_argument,false),
-   guess_remderiv(string("--remove_deriv"),  false,
-	   string("removes every second entry in paradigm file (EV derivatives)"), 
-	   false, no_argument, false),
-   temporal(string("--temporal"),  false,
-	   string("perform temporal ICA"), 
-	   false, no_argument, false),
-   retryfactor(string("--retryfactor"), float(0.95),
-		string("multiplicative factor for determining new dim if estimated dim fails to converge"),
-		false, requires_argument, false),
-   econ(string("--econ"), 20000, 
-	   string("set ctrl parameter for helperfns econ mode"),
-       false, requires_argument, false),
-   options(title, usageexmpl)
-   {
-     try {  
-      options.add(logdir);
-	    options.add(inputfname);
-	    options.add(outputfname);
-	    options.add(guessfname);
-	    options.add(maskfname);
-	    options.add(use_mask);
-	    options.add(update_mask);
-	    options.add(perf_bet);
-	    options.add(threshold);
-	    options.add(pca_dim);
-	    options.add(pca_est);
-	    options.add(joined_whiten);
-	    options.add(joined_vn);
-		options.add(dr_pca);
-		options.add(migp);
-		options.add(migpN);
-		options.add(migp_shuffle);
-		options.add(migp_factor);
-		options.add(dr);
-		options.add(dr_out);
-	    options.add(vn_level);
-	    options.add(numICs);
-	    options.add(approach);
-	    options.add(nonlinearity);
-	    options.add(varnorm);
-		options.add(varnorm2);
-	    options.add(pbsc);
-	    options.add(pspec);
-	    options.add(segment);
-	    options.add(tsmooth);
-	    options.add(epsilon);
-	    options.add(epsilonS);
-	    options.add(maxNumItt);
-	    options.add(maxRestart);
-	    options.add(rank1interval);
-	    options.add(mmthresh);
-	    options.add(perf_mm);
-	    options.add(ICsfname);
-	    options.add(filtermix);
-	    options.add(smodename);
-	    options.add(filter);
-	    options.add(genreport);
-	    options.add(guireport);
-		options.add(bgimage);
-	    options.add(tr);
-	    options.add(logPower);
-	    options.add(addsigchng);
-	    options.add(allPPCA);
-	    options.add(varplots);
-	    options.add(varvals);
-		options.add(fn_Tdesign);
-		options.add(fn_Tcon);
-		options.add(fn_TconF);
-		options.add(fn_Sdesign);
-		options.add(fn_Scon);
-		options.add(fn_SconF);
-	    options.add(output_all);
-	    options.add(output_unmix);
-	    options.add(output_MMstats);
-	    options.add(output_pca);
-	    options.add(output_white);
-	    options.add(output_origIC);
-	    options.add(output_mean);
-	    options.add(verbose);
-	    options.add(vers);
-	    options.add(copyright);
-	    options.add(help);
-	    options.add(debug);
-	   
-	    options.add(guessfname);
-	    options.add(paradigmfname); 
-	    options.add(axials_str); 
-	    options.add(dummy);
-	    options.add(repeats);
-	    options.add(seed);
-	    options.add(nlconst1);
-	    options.add(nlconst2);
-	    options.add(smooth_probmap);
-		options.add(insta_fn);
-		options.add(insta_idx);
-		options.add(insta_partial);
-		options.add(insta_varnorm);
-	    options.add(remove_meanvol);
-	    options.add(remove_meantc);
-	    options.add(remove_endslices);
-	    options.add(rescale_nht);
-	    options.add(guess_remderiv);
-	    options.add(temporal);
-		options.add(retryfactor);
-		options.add(econ);
-     }
-     catch(X_OptionError& e) {
-       options.usage();
-       cerr << endl << e.what() << endl;
-     } 
-     catch(std::exception &e) {
-       cerr << e.what() << endl;
-     }    
-     
-   }
-}
-
-#endif
-
-
-
diff --git a/melpca.cc b/melpca.cc
deleted file mode 100644
index 1b77439..0000000
--- a/melpca.cc
+++ /dev/null
@@ -1,127 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melpca.cc - PCA and whitening 
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "meloptions.h"
-#include "meldata.h"
-#include "melodic.h"
-#include "newmatap.h"
-#include "newmatio.h"
-#include "melpca.h"
-#include "melhlprfns.h"
-#include "libprob.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-
-namespace Melodic{
-
-  void MelodicPCA::perf_pca(Matrix& in, Matrix& weights){    
-  	message("Starting PCA  ... ");
-
-    SymmetricMatrix Corr;
-    Matrix tmpE;
-    RowVector tmpD, AdjEV, PercEV;
-   
-	if(opts.paradigmfname.value().length()>0)
-	{
-		basicGLM tmpglm;
-		tmpglm.olsfit(in,melodat.get_param(),IdentityMatrix(melodat.get_param().Ncols()));
-		std_pca(tmpglm.get_residu(),weights,Corr,tmpE,tmpD);
-	}
-	else{
- 		std_pca(in,weights,Corr,tmpE,tmpD); 
-	}	
-	
-    if(opts.tsmooth.value()){
-      message(endl << "  temporal smoothing of Eigenvectors " << endl);
-      tmpE=smoothColumns(tmpE);
-    }
-   
-    adj_eigspec(tmpD,AdjEV,PercEV);
-    melodat.set_pcaE(tmpE);
-    melodat.set_pcaD(tmpD);
-    melodat.set_EVP(PercEV); 
-    melodat.set_EV((AdjEV));
-    write_ascii_matrix(logger.appendDir("eigenvalues_percent"),PercEV);
-   
-    message("done" << endl);
-  }
-  
-  void MelodicPCA::perf_white(){
-    int N = melodat.get_pcaE().Ncols();    
-    if(opts.pca_dim.value() > N){
-      message("dimensionality too large - using -dim " << N << 
-              " instead " << endl);
-      opts.pca_dim.set_T(N);
-    }
-    if(opts.pca_dim.value() < 0){
-      if(opts.remove_meanvol.value()){
-				opts.pca_dim.set_T(N-2);
-      }else{
-   			opts.pca_dim.set_T(N-1);
-      }
-    }
-    if(opts.pca_dim.value() ==0){
-      opts.pca_dim.set_T(pcadim());
-      if(melodat.get_Data().Nrows()<20){
-				opts.pca_dim.set_T(N-2);
-				message("too few data points for full estimation, using "
-					<< opts.pca_dim.value() << " instead"<< endl);
-      }
-    }
-    if(opts.approach.value()==string("jade") && opts.pca_dim.value() > 30){
-      message("dimensionality too large for jade estimation - using --dim 30 instead" << endl);
-      opts.pca_dim.set_T(30);
-    }
-
-    message("Start whitening using  "<< opts.pca_dim.value()<<" dimensions ... " << endl);
-    Matrix tmpWhite;
-    Matrix tmpDeWhite;
-
-    float varp = 1.0;
-
-	if (opts.paradigmfname.value().length()>0)
-	    varp = calc_white(melodat.get_pcaE(),melodat.get_pcaD(), 
-    		melodat.get_EVP(),opts.pca_dim.value(),melodat.get_param(),melodat.get_paramS(),tmpWhite,tmpDeWhite);
-	else
-		varp = calc_white(melodat.get_pcaE(),melodat.get_pcaD(), 
-    		melodat.get_EVP(),opts.pca_dim.value(),tmpWhite,tmpDeWhite);
-
-    melodat.set_white(tmpWhite);
-    melodat.set_dewhite(tmpDeWhite);
-    message("  retaining "<< varp*100 <<" percent of the variability " << endl);
-    message(" ... done"<< endl << endl);
-  }
-
-  int MelodicPCA::pcadim()
-  { 
-    message("Estimating the number of sources from the data (PPCA) ..." << endl);
-
-    ColumnVector PPCA; RowVector AdjEV, PercEV;   
-    int res = ppca_dim(melodat.get_Data(),melodat.get_RXweight(), PPCA, 
-			AdjEV, PercEV, melodat.get_resels(), opts.pca_est.value());
-     
-    write_ascii_matrix(logger.appendDir("PPCA"),PPCA);			      
-    write_ascii_matrix(logger.appendDir("eigenvalues_adjusted"),AdjEV.t());
-    write_ascii_matrix(logger.appendDir("eigenvalues_percent"),PercEV.t());
-
-    melodat.set_EVP(PercEV);
-    melodat.set_EV(AdjEV);
-    melodat.set_PPCA(PPCA);
-    
-    return res;
-  }
-
-}
-
-
diff --git a/melpca.h b/melpca.h
deleted file mode 100644
index 346e9a5..0000000
--- a/melpca.h
+++ /dev/null
@@ -1,55 +0,0 @@
- /*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-              independent components
-    
-    melpca.h - PCA and whitening 
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT */
-
-#ifndef __MELODICPCA_h
-#define __MELODICPCA_h
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "meloptions.h"
-#include "meldata.h"
-#include "melodic.h"
-//#include "melreport.h"
-#include "newmatap.h"
-#include "newmatio.h"
-
-using namespace Utilities;
-using namespace NEWIMAGE;
-
-namespace Melodic{
-  
-  class MelodicReport;
-
-  class MelodicPCA{
-    public:
-      MelodicPCA(MelodicData &pmelodat, MelodicOptions &popts, Log &plogger, 
-				MelodicReport &preport):  
-					melodat(pmelodat),
-					opts(popts),
-					logger(plogger),
-					report(preport){} 
-      
-    	void perf_pca(Matrix& in, Matrix& weights);
-      inline void perf_pca(){
-				perf_pca(melodat.get_Data(),melodat.get_RXweight());
-			}
-      void perf_white();
-
-    private:
-      MelodicData &melodat;
-      MelodicOptions &opts;
-      Log &logger;
-      __attribute__((unused)) MelodicReport &report;
-
-      int pcadim();
-  };   
-}
-
-#endif
diff --git a/melreport.cc b/melreport.cc
deleted file mode 100644
index 417f3ef..0000000
--- a/melreport.cc
+++ /dev/null
@@ -1,807 +0,0 @@
-/*  MELODIC - Multivariate exploratory linear optimized decomposition into 
-    independent components
-   
-    melreport.cc - report generation
-
-    Christian F. Beckmann, FMRIB Analysis Group
-    
-    Copyright (C) 1999-2013 University of Oxford */
-
-/*  CCOPYRIGHT  */
-
-#include "newimage/newimageall.h"
-#include "utils/log.h"
-#include "melreport.h"
-#include "melhlprfns.h"
-#include "miscmaths/miscprob.h"
-
-namespace Melodic{
-  
-	void MelodicReport::IC_rep(MelGMix &mmodel, int cnum, int dim, Matrix ICstats){
-
-		if( bool(opts.genreport.value()) ){
-    	addlink(mmodel.get_prefix()+".html",num2str(cnum));
-			IChtml.setDir(report.getDir(),mmodel.get_prefix()+".html");
-
-      {//start IC page
-				IChtml << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
-					(string) getenv("FSLDIR") +"/doc/fsl.css>" << endl
-					<< "<style type=\"text/css\">OBJECT { width: 100% }</style>"
-	       	<< "<TITLE>FSL</TITLE></HEAD>" << endl
-	  			<< "<IFRAME  height=" << int(melodat.get_numfiles()/30 + 1)*50 
-					<<"px width=100% src=nav.html frameborder=0></IFRAME><BR>"<< endl
-	       	<< "<Center>" << endl;
-			
-				if(cnum>1)
-	  			IChtml << "<a href=\"" << string("IC_")+num2str(cnum-1)
-					<<".html\">&#60;</a>&nbsp;-&nbsp;";
-				else
-	  			IChtml << "<a href=\"" << string("IC_")+num2str(melodat.get_mix().Ncols())
-					<<".html\">&#60;</a>&nbsp;-&nbsp;";
-	
-				if(cnum<dim)
-	  			IChtml << "<a href=\"" << string("IC_")+num2str(cnum+1)
-					<<".html\">&#62;</a>";
-				else 
-	  			IChtml << "<a href=\"" << string("IC_")+num2str(1)
-					<<".html\">&#62;</a>";
-				IChtml << "<p><H3>MELODIC Component " << num2str(cnum)
-				<< "<br></b></H3><hr><p>" << endl;
-			}
-      {//output IC stats
-    		if(ICstats.Storage()>0&&ICstats.Nrows()>=cnum){
-	  			IChtml << fixed << setprecision(2) << std::abs(ICstats(cnum,1)) << " % of explained variance";
-	  			if(ICstats.Ncols()>1)
-	    			IChtml << "; &nbsp; &nbsp; " << std::abs(ICstats(cnum,2)) << " % of total variance";
-					if(ICstats.Ncols()>2&&opts.addsigchng.value()){
-	    			IChtml << "<p>" <<endl;
-	    			IChtml << " &nbsp; &nbsp; " << ICstats(cnum,3) << " % signal change (pos peak voxel); &nbsp; &nbsp;" << ICstats(cnum,4) << "% signal change (peak neg. voxel)" << endl ;
-	  			}
-	  			IChtml << "<hr><p>" << endl;
-				}
-      }
-      
-      volume4D<float> tempVol;       
-      if(mmodel.get_threshmaps().Storage()>0&&
-	    (mmodel.get_threshmaps().Ncols() == mmodel.get_data().Ncols()))
-	    {//Output thresholded IC map	
-				tempVol.setmatrix(mmodel.get_threshmaps().Row(1),melodat.get_mask());
-				volume<float> map1;
-				volume<float> map2;
-				map1 = threshold(tempVol[0],float(0.0), tempVol[0].max());
-				map2 = threshold(tempVol[0],tempVol[0].min(), float(0.0));
-	
-				volume<float> newvol;
-
-				miscpic newpic;
-	
-				float map1min = std::max((map1 + binarise(tempVol[0],tempVol[0].min(), 
-						    	float(0.0)) * map1.max()).min(),float(0.001));
-			  float map1max = std::max(map1.max(),float(0.001));
-				float map2min = std::min(map2.min(),float(-0.001));
-				float map2max = std::min((map2 + binarise(tempVol[0],float(0.0), 
-						  		tempVol[0].max()) * map2.min()).max(),float(-0.001));
-	
-    		newpic.overlay(newvol, melodat.get_bg(), map1, map2, 
-		       		melodat.get_bg().percentile(0.02),
-		       		melodat.get_bg().percentile(0.98),
-		       		map1min, map1max, map2max, map2min, 
-		       		0, 0);
-				char instr[10000];
-	
-				sprintf(instr," ");
-				strcat(instr,axials_instr.c_str());
-				strcat(instr,string(report.appendDir(mmodel.get_prefix()+
-					     	"_thresh.png")).c_str());
-				newpic.set_title(string("Component No. "+num2str(cnum)+
-								" - thresholded IC map  ") + mmodel.get_infstr(1));
-				newpic.set_cbar(string("ysb"));
-	
-				if((std::abs(map1.max()-map1.min())>0.01) || (std::abs(map2.max()-map2.min())>0.01))
-	  			newpic.slicer(newvol, instr); 
-				else
-	  			newpic.slicer(newvol, instr);
-	  		IChtml << "<a href=\""+mmodel.get_prefix()+"_MM.html\">";
-	    	IChtml << "<img BORDER=0 SRC=\""+mmodel.get_prefix()
-	    		+"_thresh.png\" ALT=\"MMfit\"></A><p>" << endl;
-      }		
-			
-      {//plot time course
-    	IChtml << "<H3> Temporal mode </H3><p>" << endl <<endl;     	
-		miscplot newplot;
-		
-			Matrix tmptc = melodat.get_Tmodes(cnum-1).Column(1).t();
-
-			newplot.col_replace(0,0xFF0000);
-
-			newplot.add_label(string("IC ")+num2str(cnum)+" time course");
-			//add GLM OLS fit
-			if(melodat.Tdes.Storage()>0 &&
-		  melodat.glmT.get_beta().Nrows() == melodat.Tdes.Ncols()){
-				tmptc &= melodat.glmT.get_beta().Column(cnum).t() * melodat.Tdes.t();
-				newplot.add_label("full model fit");
-			}
-
-			//add deviation around time course
-			if(melodat.get_Tmodes(cnum-1).Ncols()>1 && opts.varplots.value()){
-				Matrix tmp = stdev(melodat.get_Tmodes(cnum-1).Columns(2,melodat.get_Tmodes(cnum-1).Ncols()).t(),1);
-				tmptc &= melodat.get_Tmodes(cnum-1).Column(1).t()+tmp;
-				tmptc &= melodat.get_Tmodes(cnum-1).Column(1).t()-tmp;
-				newplot.add_label("std error across subjects");
-				newplot.col_replace(tmptc.Nrows()-1,0x808080);
-				newplot.col_replace(tmptc.Nrows()-2,0x808080);				
-			}
-		
-	    if(opts.tr.value()>0.0)
-				newplot.add_xlabel(string("Time (seconds); TR = ")+
-				float2str(opts.tr.value(),0,2,0)+" s");
-			else 
-		  	newplot.add_xlabel(string("Time (TRs)"));
-			
-			newplot.add_ylabel("Normalised Response");
-			newplot.set_yrange(tmptc.Row(1).Minimum()-0.05*(tmptc.Row(1).Maximum() - 
-				tmptc.Row(1).Minimum()),tmptc.Row(1).Maximum()+
-				0.05*(tmptc.Row(1).Maximum()-tmptc.Row(1).Minimum()));
-			newplot.grid_swapdefault();
-			
-			newplot.set_xysize(750,150);
-			
-	        newplot.timeseries(tmptc,
-			  report.appendDir(string("t")+num2str(cnum)+".png"),
-			  string("Timecourse No. ")+num2str(cnum), 
-			  opts.tr.value(),150,12,1,false);
-
-			if(melodat.get_Tmodes(cnum-1).Ncols()>1)
-				tmptc &= melodat.get_Tmodes(cnum-1).Columns(2,melodat.get_Tmodes(cnum-1).Ncols()).t();
-	     write_ascii_matrix(report.appendDir(string("t")
-				+num2str(cnum)+".txt"),tmptc.t());
-	     IChtml << "<A HREF=\"" << string("t")
-	  	  +num2str(cnum)+".txt" << "\"> ";
-			 IChtml << "<img BORDER=0 SRC=\"" 
-	  	  +string("t")+num2str(cnum)+".png\"></A><p>" << endl;	
-	
-			if(melodat.get_numfiles()>1 && melodat.explained_var.Storage()>0 
-				&& melodat.explained_var.Ncols()>=cnum && opts.varvals.value())
-				IChtml << "Rank-1 approximation of individual time courses explains " 
-				<< std::abs(melodat.explained_var(cnum)) << "% of variance.<p>" << endl;
-			}//time series plot
-
-	 		if(!opts.pspec.value())
-	   	{//plot frequency  
-    		miscplot newplot;
-	    	RowVector empty(1);
-	 			empty = 0.0;
-				int fact = int(std::pow(10.0,int(std::log10(float(melodat.get_Tmodes(0).Nrows())))));
-				if(opts.logPower.value())
-					newplot.add_ylabel(string("log-Power"));
-				else
-					newplot.add_ylabel(string("Power"));
-		
-				Matrix fmixtc = calc_FFT(melodat.get_Tmodes(cnum-1).Column(1), opts.logPower.value());
-			  
-				newplot.set_Ylabel_fmt("%.0f");
-				newplot.set_yrange(0.0,1.02*fmixtc.Maximum());
-				newplot.grid_swapdefault();
-				newplot.set_xysize(750,150);
-				
-				if(opts.tr.value()>0.0){
-					newplot.add_xlabel(string("Frequency (in Hz / ")+num2str(fact)+ " )");
-	  			newplot.timeseries(empty | fmixtc.t(),
-			  	report.appendDir(string("f")+
-						num2str(cnum)+".png"),
-			     	string("Powerspectrum of timecourse"),
-			     	fact/(opts.tr.value()*melodat.get_Tmodes(0).Nrows()), 150,0,2);
-				}else{	
-					newplot.add_xlabel(string("Frequency (in cycles); ")
-					+"frequency(Hz)=cycles/("
-			    +num2str(melodat.get_Tmodes(0).Nrows())
-			    +"* TR); period(s)=("
-			    +num2str(melodat.get_Tmodes(0).Nrows())
-			    +"* TR)/cycles"
-					);
-	  			newplot.timeseries(fmixtc.t(),
-			    report.appendDir(string("f")+num2str(cnum)+".png"),
-			     	string("Powerspectrum of timecourse"));
-				}
-				write_ascii_matrix(report.appendDir(string("f")
-			 		+num2str(cnum)+".txt"), fmixtc);
-				IChtml << "<A HREF=\"" << string("f")
-	  			+num2str(cnum)+".txt" << "\"> ";
-				IChtml << "<img BORDER=0 SRC=\"" 
-	  			+string("f")+num2str(cnum)+".png\"></A><p>" << endl;
-      }//frequency plot
-   		{//add T-mode GLM F-stats for full model fit & contrasts
-				if(melodat.Tdes.Storage() > 0 &&
-					melodat.glmT.get_beta().Nrows() == melodat.Tdes.Ncols()){
-							IChtml << " <TABLE border=1 bgcolor=ffffff cellpadding=5>" <<
-								"<CAPTION><EM> <b>GLM (OLS) on time series </b></EM></CAPTION>" << endl
-								<< "<TR valign=middle><TH ><EM>GLM &beta;'s</EM> <TH> <EM> F-test on <br> full model fit </em>";
-							if(melodat.Tcon.Storage() > 0)
-								IChtml << "<TH ><EM>Contrasts</EM>"<<endl;
-							IChtml << "<TR><TD><TABLE border=0><TR><TD align=right>" << endl; 
-							for(int ctr=1;ctr <= melodat.Tdes.Ncols();ctr++)
-								IChtml << " PE(" <<num2str(ctr)+"): <br>" << endl;
-							IChtml << "<TD align=right>" << endl;
-							for(int ctr=1;ctr <= melodat.Tdes.Ncols();ctr++)
-								IChtml << melodat.glmT.get_beta().Column(cnum).Row(ctr) << "<br>" <<endl;
-							IChtml << "</TABLE>" <<
-								" <TD align=center> F = "<< melodat.glmT.get_f_fmf().Column(cnum) << 
-								" <BR> dof1 = " << melodat.Tdes.Ncols() << "; dof2 = " 
-								<< melodat.glmT.get_dof() << "<BR>" <<endl;
-							if(melodat.glmT.get_pf_fmf().Column(cnum).AsScalar() < 0.05)
-								IChtml << fixed << setprecision(5) <<"<b> p < " << melodat.glmT.get_pf_fmf().Column(cnum) <<
-								"<BR> (uncorrected for #comp.)<b></TD>" << endl;
-							else
-								IChtml << fixed << setprecision(5) << " p < " << 
-								melodat.glmT.get_pf_fmf().Column(cnum) << 
-								"<BR> (uncorrected for #comp.)</TD>" << endl;
-						if(melodat.Tcon.Storage() > 0	&&
-						melodat.Tdes.Ncols() == melodat.Tcon.Ncols()){
-							IChtml << fixed << setprecision(2) << "<TD><TABLE border=0><TR><TD align=right>" <<endl;
-							for(int ctr=1; ctr <= melodat.Tcon.Nrows() ; ctr++)
-								IChtml << "COPE(" << num2str(ctr) << "): <br>" << endl;
-							IChtml << "<td align=right>" << endl;
-							for(int ctr=1; ctr <= melodat.Tcon.Nrows() ; ctr++)
-								IChtml <<" z = <BR>" <<endl;
-							IChtml << "<td align=right>" << endl;						
-							for(int ctr=1; ctr <= melodat.Tcon.Nrows() ; ctr++)
-								IChtml << melodat.glmT.get_z().Column(cnum).Row(ctr) <<";<BR>" <<endl;
-							IChtml << "<td align=right>" << endl;
-							for(int ctr=1; ctr <= melodat.Tcon.Nrows() ; ctr++)
-								if(melodat.glmT.get_p().Column(cnum).Row(ctr).AsScalar() < 0.05)
-									IChtml << fixed << setprecision(5) << "<b> p < " << melodat.glmT.get_p().Column(cnum).Row(ctr) << 
-									"</b><BR>" << endl;
-								else
-									IChtml << fixed << setprecision(5) <<" p < " << melodat.glmT.get_p().Column(cnum).Row(ctr) << 
-									"<BR>" << endl;
-							IChtml << "</TABLE></td></tr>" << endl;
-					  }
-					}
-				IChtml << "</TABLE><p>" << endl;
-			}
-  
-      if(cnum <= (int)melodat.get_Smodes().size())
-	    {//plot subject mode 
-			  
-	  		Matrix smode;
-	  		smode = melodat.get_Smodes(cnum-1);
-	
-	  		if(smode.Nrows() > 1){
-	  	  	IChtml << "<hr><H3> Sessions/Subjects mode </H3><p>" << endl <<endl;
-		    	miscplot newplot;
-
-					//add GLM OLS fit
-					//newplot.setscatter(smode,2);
-
-					if(melodat.Sdes.Storage() > 0&&
-					melodat.glmS.get_beta().Nrows() == melodat.Sdes.Ncols()){
-						smode |= melodat.Sdes * melodat.glmS.get_beta().Column(cnum);
-						newplot.add_label(string("IC ")+num2str(cnum)+" subject/session-mode");
-						newplot.add_label("full model fit");
-					}
-					newplot.grid_swapdefault();
-					newplot.set_Ylabel_fmt("%.2f");
-					newplot.add_xlabel(" Subject Number");
-					
-
-					newplot.set_xysize(750,150);
-	      	newplot.timeseries(smode.t(), 
-			    	report.appendDir(string("s")+num2str(cnum)+".png"),
-			      string("Subject/Session mode No. ") + num2str(cnum));
-					newplot.clear_xlabel();
-					newplot.clear_labels();
-					newplot.set_xysize(120,200);
-					newplot.set_minmaxscale(1.1);
-
-					newplot.boxplot((Matrix)smode.Column(1),
-			    	report.appendDir(string("b")+num2str(cnum)+".png"),
-			        string("Subject/Session mode"));
-	      	write_ascii_matrix(report.appendDir(string("s")
-		 				+num2str(cnum)+".txt"),  smode);
-	      	IChtml << "<A HREF=\"" << string("s")
-	        	+num2str(cnum)+".txt" << "\"> ";
-	      	IChtml << "<img BORDER=0 SRC=\"" 
-	      		+string("s")+num2str(cnum)+".png\"></A>" << endl;
-					IChtml << "<A HREF=\"" << string("s")
-	        	+num2str(cnum)+".txt" << "\"> ";
-	      	IChtml << "<img BORDER=0 SRC=\"" 
-	      		+string("b")+num2str(cnum)+".png\"></A><p>" << endl;
-	    	}
-   			{//add S-mode GLM F-stats for full model fit & contrasts
-			  	if(melodat.Sdes.Storage() > 0 &&
-					melodat.glmS.get_beta().Nrows() == melodat.Sdes.Ncols()){
-							IChtml << " <TABLE border=1 bgcolor=ffffff cellpadding=5>" <<
-								"<CAPTION><EM> <b>GLM (OLS) on subject/session-mode </b></EM></CAPTION>" << endl
-								<< "<TR valign=middle><TH ><EM>GLM &beta;'s</EM> <TH> <EM> F-test on <br> full model fit </em>";
-							if(melodat.Scon.Storage() > 0)
-								IChtml << "<TH ><EM>Contrasts</EM>"<<endl;
-							IChtml << "<TR><TD><TABLE border=0><TR><TD align=right>" << endl; 
-							for(int ctr=1;ctr <= melodat.Sdes.Ncols();ctr++)
-								IChtml << " PE(" <<num2str(ctr)+"): <br>" << endl;
-							IChtml << "<TD align=right>" << endl;
-							for(int ctr=1;ctr <= melodat.Sdes.Ncols();ctr++)
-								IChtml << melodat.glmS.get_beta().Column(cnum).Row(ctr) << "<br>" <<endl;
-							IChtml << "</TABLE>" <<
-								" <TD align=center> F = "<< melodat.glmS.get_f_fmf().Column(cnum) << 
-								" <BR> dof1 = " << melodat.Sdes.Ncols() << "; dof2 = " 
-								<< melodat.glmS.get_dof() << "<BR>" <<endl;
-							if(melodat.glmS.get_pf_fmf().Column(cnum).AsScalar() < 0.05)
-								IChtml << fixed << setprecision(5) <<"<b> p < " << melodat.glmS.get_pf_fmf().Column(cnum) <<
-								"<BR> (uncorrected for #comp.)<b></TD>" << endl;
-							else
-								IChtml << fixed << setprecision(5) << " p < " << 
-								melodat.glmS.get_pf_fmf().Column(cnum) << 
-								"<BR> (uncorrected for #comp.)</TD>" << endl;
-				  if(melodat.Scon.Storage() > 0 	&& melodat.Sdes.Storage() > 0 &&
-							melodat.Sdes.Ncols() == melodat.Scon.Ncols()){
-							IChtml << fixed << setprecision(2) << "<TD><TABLE border=0><TR><TD align=right>" <<endl;
-							for(int ctr=1; ctr <= melodat.Scon.Nrows() ; ctr++)
-								IChtml << "COPE(" << num2str(ctr) << "): <br>" << endl;
-							IChtml << "<td align=right>" << endl;
-							for(int ctr=1; ctr <= melodat.Scon.Nrows() ; ctr++)
-								IChtml <<" z = <BR>" <<endl;
-							IChtml << "<td align=right>" << endl;						
-							for(int ctr=1; ctr <= melodat.Scon.Nrows() ; ctr++)
-								IChtml << melodat.glmS.get_z().Column(cnum).Row(ctr) <<";<BR>" <<endl;
-							IChtml << "<td align=right>" << endl;
-							for(int ctr=1; ctr <= melodat.Scon.Nrows() ; ctr++)
-								if(melodat.glmS.get_p().Column(cnum).Row(ctr).AsScalar() < 0.05)
-									IChtml << fixed << setprecision(5) << "<b> p < " << melodat.glmS.get_p().Column(cnum).Row(ctr) << 
-									"</b><BR>" << endl;
-								else
-									IChtml << fixed << setprecision(5) <<" p < " << melodat.glmS.get_p().Column(cnum).Row(ctr) << 
-									"<BR>" << endl;
-							IChtml << "</TABLE></td></tr>" << endl;
-					}
-				}
-				IChtml << "</TABLE><p>" << endl;
-				}
-	    }//subject mode plot
-   
-      if(mmodel.get_threshmaps().Storage()>0&&
-	 			(mmodel.get_threshmaps().Ncols() == mmodel.get_data().Ncols())&&
-	 			(mmodel.get_threshmaps().Nrows()>1))
-	    {//Output other thresholded IC map
-	  
-	  	for(int tctr=2; tctr<=mmodel.get_threshmaps().Nrows(); tctr++){
-	    	tempVol.setmatrix(mmodel.get_threshmaps().Row(tctr),melodat.get_mask());
-	    	volume<float> map1;
-	    	volume<float> map2;
-	    	map1 = threshold(tempVol[0],float(0.0), tempVol[0].max());
-	    	map2 = threshold(tempVol[0],tempVol[0].min(), float(0.0));
-
-	    	volume<float> newvol; 
-	    	miscpic newpic;
-	    
-	    	float map1min = (map1 + binarise(tempVol[0],tempVol[0].min(), 
-					     	float(0.0)) * map1.max()).min();
-	    	float map1max = map1.max();
-	    	float map2min = map2.min();
-	    	float map2max = (map2 + binarise(tempVol[0],float(0.0), 
-					     	tempVol[0].max()) * map2.min()).max();
-	    
-	    	//cerr << endl << map1min << " " << map1max << endl
-	    	//  << map2min << " " << map2max << endl;
-	    
-	    	//	    if(map1.max()-map1.min()>0.01)
-	    	newpic.overlay(newvol, melodat.get_bg(), map1, map2, 
-			   	melodat.get_bg().percentile(0.02),
-			   	melodat.get_bg().percentile(0.98),
-			   	map1min, map1max, map2max, map2min, 
-			   	0, 0);
-	    
-	    	char instr[10000];
-	    
-	    	sprintf(instr," ");
-	    	strcat(instr,axials_instr.c_str());
-	    	strcat(instr,string(report.appendDir(mmodel.get_prefix()+"_thresh"+
-						 	num2str(tctr)+".png")).c_str());
-	    	newpic.set_title(string("Component No. "+num2str(cnum)+
-				    	" - thresholded IC map ("+
-				    	num2str(tctr)+")  ")+
-			     		mmodel.get_infstr(tctr));
-	    	newpic.set_cbar(string("ysb"));
-	    	//cerr << instr << endl;
-	    	newpic.slicer(newvol, instr); 
-	    
-	    	IC_rep_det(mmodel, cnum, dim);
-	    	IChtml << "<a href=\""+mmodel.get_prefix()+"_MM.html\">";
-	    	IChtml << "<img BORDER=0 SRC=\""+mmodel.get_prefix()
-	      		+"_thresh"+num2str(tctr)+".png\" ALT=\"MMfit\"></A><p>" << endl;
-	  	}
-      }
-      
-      { //finish IC page
-	    	IChtml<< "<HR><FONT SIZE=1>This page produced automatically by "
-	      	<< "<A HREF=\"http://www.fmrib.ox.ac.uk/fsl/melodic/index.html\"> MELODIC</A> Version "  
-	      	<< version << " - a part of <A HREF=\"http://www.fmrib.ox.ac.uk/fsl\">FSL - "
-	      	<< "FMRIB Software Library</A>.</FONT></Center>" << endl
-	      		<< "</BODY></HTML>" << endl;
-      } //finish IC page
-      IC_rep_det(mmodel, cnum, dim);
-		}	
-	}
-
-  void MelodicReport::IC_rep_det(MelGMix &mmodel, int cnum, int dim){
-    if( bool(opts.genreport.value()) ){
-
-      {//start IC2 page
-				IChtml2.setDir(report.getDir(),mmodel.get_prefix()+"_MM.html");
-				IChtml2 << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
-					(string) getenv("FSLDIR") +"/doc/fsl.css>" << endl
-					<< "<style type=\"text/css\">OBJECT { width: 100% }</style>"
-	       	<< "<TITLE>FSL</TITLE></HEAD>" << endl
-					<< "<IFRAME  height="<< int(melodat.get_numfiles()/30 + 1)*50 
-					<<"px width=100% src=nav.html frameborder=0></IFRAME><p>"<< endl	
-					<< "<CENTER>";
-				if(cnum>1)
-	  			IChtml2 << "<b><a href=\"" << string("IC_")+num2str(cnum-1)
-					<<"_MM.html\">&#60;</a>&nbsp;-&nbsp;";
-				else
-					IChtml2 << "<b><a href=\"" << string("IC_")+num2str(melodat.get_mix().Ncols())
-					<<"_MM.html\">&#60;</a>&nbsp;-&nbsp;";
-			//	IChtml << "<a href=\"00index.html\">&nbsp;index&nbsp;</a>" ;
-	
-				if(cnum<dim)
-	  			IChtml2 << "<a href=\"" << string("IC_")+num2str(cnum+1)
-					<<"_MM.html\">&#62;</a>";
-				else 
-					IChtml2 << "<a href=\"" << string("IC_")+num2str(1)
-					<<"_MM.html\">&#62;</a>";
-				IChtml2 << "<p><H3>Component " << num2str(cnum)
-				<< " Mixture Model fit <br></b></H3><hr><p>" << endl;
-			}
-
-      volume4D<float> tempVol; 
-
-      if(melodat.get_IC().Storage()>0)
-			{//Output raw IC map
-
-	  		//	tempVol.setmatrix(melodat.get_IC().Row(cnum),
-	  		//	  melodat.get_mask());
-	  		tempVol.setmatrix(mmodel.get_data(),
-			  	melodat.get_mask());
-	  		volume<float> map1;
-	  		volume<float> map2;
-	  		map1 = threshold(tempVol[0],float(0.0), 
-			   	tempVol[0].max());
-	  		map2 = threshold(tempVol[0],tempVol[0].min(), 
-			   	float(-0.0));
-
-	  		volume<float> newvol; 
-	  		miscpic newpic;
-
-	  		//	float map1min = (map1 + binarise(tempVol[0],tempVol[0].min(), 
-	  		//		float(0.0)) * map1.max()).robustmin();
-	  		float map1max = map1.percentile(0.99);
-	  		float map2min = map2.percentile(0.01);
-	  		//float map2max = (map2 + binarise(tempVol[0],float(0.0), 
-	  		//		tempVol[0].max()) * map2.min()).robustmax();
-	
-	  		newpic.overlay(newvol, melodat.get_bg(), map1, map2, 
-			 		float(0.0),
-			 		float(0.0),
-			 		float(0.01), map1max, float(-0.01), map2min, 
-			 		0, 0);
-
-	  		char instr[10000];
-       
-	  		sprintf(instr," ");
-	  		strcat(instr,axials_instr.c_str());
-	  		strcat(instr,string(report.appendDir(mmodel.get_prefix()+
-		 			".png")).c_str());
-	  		newpic.set_title(string("Component No. "+num2str(cnum)+
-				  " - raw Z transformed IC map (1 - 99 percentile)"));
-	  		newpic.set_cbar(string("ysb"));
-		
-	  		newpic.slicer(newvol, instr);
-			}
-      IChtml2 << "<a href=\""+mmodel.get_prefix()+".html\">";
-      IChtml2 << "<img BORDER=0 SRC=\""+ mmodel.get_prefix()+
-				".png\"><A><p>" << endl;
-
-      if(mmodel.get_probmap().Storage()>0&&
-	 			(mmodel.get_probmap().Ncols() == mmodel.get_data().Ncols())&&
-	 			(mmodel.get_probmap().Nrows() == mmodel.get_data().Nrows()))
-			{//Output probmap  
-	  		tempVol.setmatrix(mmodel.get_probmap(),melodat.get_mask());
-	  
-	  		volume<float> map;
-	  		map = tempVol[0];
-      
-	  		volume<float> newvol; 
-	  		miscpic newpic;
-
-	  		newpic.overlay(newvol, melodat.get_bg(), map, map, 
-			 		melodat.get_bg().percentile(0.02),
-			 		melodat.get_bg().percentile(0.98),
-			 		float(0.1), float(1.0), float(0.0), float(0.0),
-			 		0, 0);
-
-	  		char instr[10000];
-
-	  		sprintf(instr," ");
-	  		strcat(instr,"-l render1 ");
-	  		strcat(instr,axials_instr.c_str());
-	  		strcat(instr,string(report.appendDir(mmodel.get_prefix()+
-					"_prob.png")).c_str());      
-	  		newpic.set_title(string("Component No. "+num2str(cnum)+
-				  " - Mixture Model probability map"));
-      
-	  		newpic.set_cbar(string("y"));
-	  		newpic.slicer(newvol, instr); 
-
-	  		IChtml2 << "<a href=\""+mmodel.get_prefix()+".html\">";
-	  		IChtml2 << "<img BORDER=0 SRC=\""+ mmodel.get_prefix()+
-	    		"_prob.png\">" << endl;
-	
-	  		IChtml2 << "</A><p>" << endl;
-			}
-
-			RowVector dat = mmodel.get_data().Row(1);
-			if(dat.Maximum()>dat.Minimum())
-      {//Output GGM/GMM fit
-				miscplot newplot;
-
-				if(mmodel.get_type()=="GGM"){
-	  		newplot.add_label("IC map histogram");
-	  		newplot.add_label("full GGM fit");
-	  		newplot.add_label("background Gaussian");
-	  		newplot.add_label("Gamma distributions");
-	  		newplot.gmmfit(mmodel.get_data().Row(1),
-			 		mmodel.get_means(),
-			 		mmodel.get_vars(),
-			 		mmodel.get_pi(),
-			 		report.appendDir(mmodel.get_prefix()+"_MMfit.png"),
-			 		string(mmodel.get_prefix() +
-					" Gaussian/Gamma Mixture Model("+num2str(mmodel.mixtures())+") fit"),
-			 		true, float(0.0), float(0.0)); 
-   
-			}
-				else{
-	  		newplot.add_label("IC map histogram");
-	  		newplot.add_label("full GMM fit");
-	  		newplot.add_label("individual Gaussians");
-	  		newplot.gmmfit(mmodel.get_data().Row(1),
-			 		mmodel.get_means(),
-			 		mmodel.get_vars(),
-			 		mmodel.get_pi(),
-			 		report.appendDir(mmodel.get_prefix()+"_MMfit.png"),
-			 		string(mmodel.get_prefix() +
-					" Gaussian Mixture Model("+num2str(mmodel.mixtures())+") fit"), 
-			 		false, float(0.0), float(2.0));
-   
-			}
-
-			//	IChtml2 << "<A HREF=\"" +mmodel.get_prefix()+"_MMfit_detail.png\"> ";
-				IChtml2 << "<img BORDER=0 SRC=\""+ mmodel.get_prefix()+
-	  			"_MMfit.png\"><p>" << endl;
-      } //GGM/GMM plot
-      
-      {//MM parameters
-				IChtml2 << "<br> &nbsp;" << mmodel.get_prefix() 
-					<< " Mixture Model fit <br>" << endl
-					<< "<br> &nbsp; Means :  " << mmodel.get_means() << endl
-					<< "<br> &nbsp;  Vars  :  " << mmodel.get_vars()  << endl
-					<< "<br> &nbsp;  Prop. :  " << mmodel.get_pi()    << endl;
-	    }
-
-      { //finish IC2 page
-				IChtml2<< "<HR><FONT SIZE=1>This page produced automatically by "
-	       	<< "<A HREF=\"http://www.fmrib.ox.ac.uk/fsl/melodic/index.html\"> MELODIC</A> Version " 
-	       	<< version << " - a part of <A HREF=\"http://www.fmrib.ox.ac.uk/fsl\">FSL - "
-	       	<< "FMRIB Software Library</A>.</FONT></CENTER>" << endl
-	       		<< "</BODY></HTML>" << endl;
-      } //finish IC2 page
-    }
-  }
-
-  void MelodicReport::IC_simplerep(string prefix, int cnum, int dim){
-    if( bool(opts.genreport.value()) ){
-      addlink(prefix+".html",num2str(cnum));
-      IChtml.setDir(report.getDir(),prefix+".html");
-      
-      {//start IC page
-	
-				IChtml << "<HTML> " << endl
-	       	<< "<TITLE>MELODIC Component " << num2str(cnum)
-	       	<< "</TITLE>" << endl
-	       	<< "<BODY BACKGROUND=\"file:" << getenv("FSLDIR") 
-	    		<< "/doc/images/fsl-bg.jpg\">" << endl 
-	     		<< "<hr><CENTER><H1>MELODIC Component " << num2str(cnum)
-	       	<< "</H1>"<< endl;
-	
-				if(cnum>1)
-	  			IChtml << "<a href=\"" << string("IC_")+num2str(cnum-1)
-		 			<<".html\">previous</a>&nbsp;-&nbsp;";
-	
-				IChtml << "<a href=\"00index.html\">&nbsp;index&nbsp;</a>" ;
-	
-				if(cnum<dim)
-	  			IChtml << "&nbsp;-&nbsp;<a href=\"" << string("IC_")+num2str(cnum+1)
-		 				<<".html\">next</a><p>";
-	
-					IChtml << "<hr><p>" << endl;
-      }
-
-      volume4D<float> tempVol; 
-
-      if(melodat.get_IC().Storage()>0)
-			{//Output raw IC map
-
-	  		tempVol.setmatrix(melodat.get_IC().Row(cnum),
-			    melodat.get_mask());
-	  		volume<float> map1;
-	  		volume<float> map2;
-	  		map1 = threshold(tempVol[0],float(0.0), 
-			   	tempVol[0].max());
-	  		map2 = threshold(tempVol[0],tempVol[0].min(), 
-			   	float(-0.0));
-
-	  		volume<float> newvol; 
-	  		miscpic newpic;
-
-	  		//	float map1min = (map1 + binarise(tempVol[0],tempVol[0].min(), 
-	  		//		float(0.0)) * map1.max()).robustmin();
-	  		float map1max = map1.percentile(0.99);
-	  		float map2min = map2.percentile(0.01);
-	  		//float map2max = (map2 + binarise(tempVol[0],float(0.0), 
-	  		//		tempVol[0].max()) * map2.min()).robustmax();
-	
-	  		newpic.overlay(newvol, melodat.get_bg(), map1, map2, 
-			 		float(0.0),
-			 		float(0.0),
-			 		float(0.01), map1max, float(-0.01), map2min, 
-			 		0, 0);
-
-	  		char instr[10000];
-	
-	  		sprintf(instr," ");
-	  		strcat(instr,axials_instr.c_str());
-	  		strcat(instr,string(report.appendDir(prefix+
-					".png")).c_str());
-	  		newpic.set_title(string("Component No. "+num2str(cnum)+
-				  " - raw Z transformed IC map (1 - 99 percentile)"));
-	  		newpic.set_cbar(string("ysb"));
-	
-	  		newpic.slicer(newvol, instr);
-			}
-     
-      IChtml << "<img BORDER=0 SRC=\""+ prefix+
-				".png\"><p>" << endl;
-	
-      {//plot time course
-				miscplot newplot;
-	
-				if(opts.tr.value()>0.0)
-	  			newplot.timeseries(melodat.get_Tmodes(cnum-1).t(),
-			     	report.appendDir(string("t")+
-				     	num2str(cnum)+".png"),
-			     		string("Timecourse (in seconds); TR = ")+
-			     		float2str(opts.tr.value(),0,2,0)+" s", 
-			     		opts.tr.value(),150,4,1);
-				else
-	  			newplot.timeseries(melodat.get_Tmodes(cnum-1).t(),
-			     	report.appendDir(string("t")+
-					   	num2str(cnum)+".png"),
-			     		string("Timecourse (in TRs)"));
-				write_ascii_matrix(report.appendDir(string("t")
-			 		+num2str(cnum)+".txt"),
-			   	melodat.get_Tmodes(cnum-1));
-				IChtml << "<A HREF=\"" << string("t")
-	  			+num2str(cnum)+".txt" << "\"> ";
-				IChtml << "<img BORDER=0 SRC=\"" 
-	  			+string("t")+num2str(cnum)+".png\"></A><p>" << endl;
-      }//time series plot
-      
-      {//plot frequency 
-				miscplot newplot;
-				int fact = int(std::pow(10.0,
-					int(std::log10(float(melodat.get_Tmodes(0).Nrows())))));
-	
-				if(opts.tr.value()>0.0)
-	  			newplot.timeseries(melodat.get_fmix().Column(cnum).t(),
-			     	report.appendDir(string("f")+
-					  num2str(cnum)+".png"),
-			     	string("FFT of timecourse (in Hz / ") +
-			     	num2str(fact)+")",
-			     	fact/(opts.tr.value()*melodat.get_Tmodes(0).Nrows()),
-			     	150,0,2);
-				else
-	  			newplot.timeseries(melodat.get_fmix().Column(cnum).t(),
-			     	report.appendDir(string("f")+
-			   		num2str(cnum)+".png"),
-			     	string(string("FFT of timecourse (in cycles); ")
-				    +"frequency(Hz)=cycles/("
-				    +num2str(melodat.get_Tmodes(0).Nrows())
-				    +"* TR); period(s)=("
-				    +num2str(melodat.get_Tmodes(0).Nrows())
-				    +"* TR)/cycles"));
-				write_ascii_matrix(report.appendDir(string("f")
-			 		+num2str(cnum)+".txt"),
-			   	melodat.get_Tmodes(cnum-1));
-				IChtml << "<A HREF=\"" << string("f")
-	  			+num2str(cnum)+".txt" << "\"> ";
-				IChtml << "<img BORDER=0 SRC=\"" 
-	  			+string("f")+num2str(cnum)+".png\"></A><p>" << endl;
-      }//frequency plot
- 
-      { //finish IC page
-				IChtml<< "<HR><FONT SIZE=1>This page produced automatically by "
-	      	<< "<A HREF=\"http://www.fmrib.ox.ac.uk/fsl/melodic/index.html\"> MELODIC</A> Version " 
-	      	<< version << " - a part of <A HREF=\"http://www.fmrib.ox.ac.uk/fsl\">FSL - "
-	      	<< "FMRIB Software Library</A>.</FONT>" << endl
-	      		<< "</BODY></HTML>" << endl;
-      } //finish IC page 
-    } 
-  }
-
-  void MelodicReport::PPCA_rep(){
-    
-    {//plot time course
-      report << "<p><hr><b>PCA estimates </b> <p>" << endl;
- 
-      Matrix what;
-      miscplot newplot;
-
-      what  = melodat.get_EV();
-      what &= melodat.get_EVP();
-
-      newplot.add_label("ordered Eigenvalues");
-      newplot.add_label("% of expl. variance");
-
-      if(melodat.get_PPCA().Storage()>0){
-				what = what.Columns(1,melodat.get_PPCA().Nrows());
-				if(opts.allPPCA.value()&&melodat.get_PPCA().Ncols()==7){
-					what &= melodat.get_PPCA().Columns(3,7).t();
-					newplot.add_label("Laplace");
-					newplot.add_label("BIC");
-					newplot.add_label("MDL");
-					newplot.add_label("RRN");
-					newplot.add_label("AIC");
-				}else{
-					what &= melodat.get_PPCA().Column(1).t();
-					newplot.add_label("dim. estimate");
-				}
-      }
-			
-			newplot.set_Ylabel_fmt("%.2f");
-			newplot.add_xlabel("Number of included components");
-			newplot.set_yrange(0.0,1.02);
-      newplot.grid_swapdefault();
-      newplot.timeseries(what,
-			 	report.appendDir("EVplot.png"),
-			 	string("Eigenspectrum Analysis"), 
-			 	0,450,4,0);
-
-      report << "<img BORDER=0 SRC=\"EVplot.png\"><p>" << endl;
-    }//time series plot
-  }
-	
-	void MelodicReport::Smode_rep(){
-	  if(melodat.get_Smodes().size()>0){
-		report << "<p><hr><b>TICA Subject/Session modes </b> <br>" << endl;
-		miscplot newplot;
-		report << "Boxplots show the relative response amplitudes across the "
-			<< "session/subject domain (" << melodat.get_numfiles() 
-			<< " input files). Components have been sorted in decreasing order of "
-			<< " the median response per component. <br><br>";
-			
-		outMsize("Smode.at(0)", melodat.get_Smodes().at(0));
-		Matrix allmodes = melodat.get_Smodes().at(0);
-		for(int ctr = 1; ctr < (int)melodat.get_Smodes().size();++ctr)
-			allmodes |= melodat.get_Smodes().at(ctr);
-	
-		outMsize("allmodes", allmodes);
-		newplot.add_xlabel("Component No.");
-		newplot.add_ylabel("");
-		if(allmodes.Ncols()<100)
-			newplot.set_xysize(100+30*allmodes.Ncols(),300);
-		else
-			newplot.set_xysize(1200,300);
-		newplot.boxplot(allmodes,report.appendDir(string("bp_Smodes.png")),
-  			string("Subject/Session modes"));
-  		report << "<img BORDER=0 SRC=\"bp_Smodes.png\"><p>" << endl;
-      }
-	}
-}
-- 
GitLab