From c7ac450b9c58685e89828585b8d0f4d0284b29fc Mon Sep 17 00:00:00 2001 From: Henrik Stengaard Date: Mon, 18 Sep 2017 08:49:39 +0200 Subject: [PATCH] Added launcher to start setup, run, view readme and much more. This is to simplify use from Windows Start Menu --- .gitignore | 2 + fonts/TopazPlus_a1200_v1.0.ttf | Bin 0 -> 24676 bytes hstwb_installer.ico | Bin 0 -> 53443 bytes launch.cmd | 44 ------ launcher.cmd | 1 + launcher.ps1 | 270 +++++++++++++++++++++++++++++++++ 6 files changed, 273 insertions(+), 44 deletions(-) create mode 100644 fonts/TopazPlus_a1200_v1.0.ttf create mode 100644 hstwb_installer.ico delete mode 100644 launch.cmd create mode 100644 launcher.cmd create mode 100644 launcher.ps1 diff --git a/.gitignore b/.gitignore index 5e5e9a9..668800f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ hstwb-installer-settings.ini +hstwb-installer-assigns.ini *.msi hstwb-installer*.zip *.wixpdb *.wixobj *.wxs +*.log !hstwb-installer.wxs /packages/ output/ \ No newline at end of file diff --git a/fonts/TopazPlus_a1200_v1.0.ttf b/fonts/TopazPlus_a1200_v1.0.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3bd7e141fe454e3551659c1b3f175ae2559d77d7 GIT binary patch literal 24676 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 rrYebl5A`?(=8T=nT{r`^lp#UK7 z1pxT?|2t-f005WofAjx)KRQr`3jnV_{5SvqkI@0(KJvf$|2wuv0f55z|C>(_l(7H+ zR_g!F2gl&N#?JqnPY>851Ax&u07PrQRK~%i{O?9_R8CGX3SB}?Kk6-!)26YJ<)f}%Kt&$$!-=1!^ z{Ol1FpS%vZliyby32|_cO;E|KUDnmLYbA$Gt$#WKJypN zt2lF`&9f&SS!~>VnGRKBMkdH6swn?Z@YBQ9Bp&}mfHL1l-1qflQ&_OUO}+3`MgoK8 zX2Auwnn?KD^1aLqb2Co@${>WF>~bp-ESaBSi7XH>N0nn>?zw@Qrz-Sit%s1HXzSJ$ zz=EZfsi+XhfUC)^mK;+-r)m_{nb@A`1@~DY!ju@f`sh$kR3bC@HSi4rwBWSyvL{Sc zEjzzHqH;m@54K3{^r4T>JSBu=up(USVLJM3(pW&WLe3{Unfc(|&W{0-Rc4QvS55Eo zE}l6($5wxw$;EFwm2(xv24tZ*GX>MH8*!I|TV_5T%kn`kfGk&XwZ_#6%*b_A{u~IF z!e{FS%9=_5NM{{ie?Xl;Ap>x5U=~FvbIQsgTFfZAIxK}5JRa{DEDLh1;fupadZl|II3xXR?zZOJyN1#0H)yAuBmP^_< zfgZqnI;T=kemKS#>9ro9Z8r|{p3yYdOseIIVU9UGcY_>;3E3dSeg@lnu3uPC%$hi? zeV_Kz?Ih3>eZT-hArZuZ9R8Y`^kZ^ow|o6tLr5dcZ7%DFCOKl#%f>o=zklN+9{Daf zUW2dlj+S?>ZxJ0-3VABXS1I}fcRPGLcT`lx)mq57sQC}~>*)R`e&&j*K`+tsDmd@` z(?ytw3%)HiN4xU3>0k2&&MWXiJPB5MrR|qnW~~IN*8q-FY;*gA@E=O=W(1jTf2nVD zU!z{b(^|I9Np5DLXna%#+_D_c{xRY= zIT?L)s=&NEmEUK}#b!;MjFkJ8PL9dYUAnStp<0*W=tTil~yJ%4IMLd ztuhrYBeJH=#q6hhRvd&GGHcT_A7tjfDd)9*GYkX+^GDuki7Y@L8fSS z62@j8toP4qKnF24RysNs}c`9!$&d~(h zT1ZD{wB+yq#X*K3)nrE&pku&(=%c5sa7`<408agp;Lw&>7}Kd{sVbP6%WFx<$zy$QNtT9`M(LkQ${-1{YmVzl1QFgoBXLn^Q0#>Gsr$5e027o_Vcd59*Gun@hN z-}7N1f}05+yFptNZy6e3U>g5V}Joe~g( z64kf#eZU4_=7zInr^0+k&vV0(ZwHiBYepVoBTYOTf;m#Dur5C(S`+R{BRG=$UVv*W zz?Y{*SJwN;lWdoZQf-9xw)JJjVzw78DJBk1ol85))lM3cuyFW{r@KsDi{1;Q<+B^M zr1JeJwug5EsCv*cvc8}1gnMn%++bO8CzSfQOKzrkMTWxnK7u^4)v1 zQ(tJbbAo6Om!DRHu{T>?I&qGt^7BeqKNP}0erhn&BaXt8g8A;G9NNQ5f~6ktmp)VQ z^c1MWuXPb9SQ{@hm}fFR1f2w+?fGi_$Mp?dTN7D?T)CyRMVLF=>u58@3Dgek{t zgE|F?7ErSluT5;WDoxTSKYm!6V2jn0X2GUc6Xv~>qP_bQzGgzFf`#zu#e!cg2SboD z(k5EMPWIpH=?=-ko;!!#eIqi@B@Y9R79dBdMsI1A=JtF(`%;6U-nFI!Q^H(kvhqm^ zQx;ge^k&lxxs8+tIwnS?pJeHwapd*=V&~&yg9?qohkm86bf%Fv1V0E7ibba5(H98P zdt3@;%at2+8g!8#5NW}rp4#qx0_b@j$V}1U6XL;7kK&|HU-H-udmyaP@0QwhzVypJ zo1#;Gr!cgJg%}25u zGy)#H`MIa!U(LZW%rJXqxy_}ws4$g)$NA{}Rsi)QUn}p!SgLI2Zbr`HWpLAJZje+} z=P~r|65eszdTs)Sfk!KG+*z{+#>apP%u6)7UNC^FcUn@R}J@ z5s=A1#(jZ4*L^*3d!P^If3~{Qq_#axEn2yDutUF!L~S=oNPw~#H|66Oc!zxSK3e?1 z30C0S9TDuh8hLIL%p>qvJhl6A+lke4n(J3nm3cCw{DQW#UPsyC@wzJ0Wg?JKFjsay zU*dt^eug#PCb+V)KVLgWf!uT=~tTtFnkPa_lc{OR6?j7@DPfZz>@<>kR$1rlzXHh>t_psqxI6NVbE z!K@;JeHDfv1{#5|DgSx2U*m{%gk1NnExSt>1Q+?E-c9c%kAa|_no;)~FlZF$aEzNC zLA(#+cjcXUk|SvotG^4#z~=|EMRn%R*$7>~NYfsNVbCL9WY}5=Q`s))o8esI1+i=V z&iB!n^O}kw(I({$^Y}&}g)yv1^i2F^?lxW^Ki662dR8@oB-)#oZFPsjfGsQIAA9CA z9^1L-eTd4Y%hAtQH)-6#-j~0%NxAna`q6$31ns8RJ)Izm(0bY2_s_#CKx6flyFF|3`dRftD#+6@^SB23xx&KLtkqvS~W*ra+H%EQ% zAgi7>ioc%ea+P%|e}&=tQkrJBFiy?Ip951`0&-qRa7#>MbMfM0lR7{s>l1I{!29Km z1g1@DAL9%mV|^u(GXiVf@Mo3^Pq||jk3Fxa{P!8!B55<;;i~x3q&CBATW1#=drP2v zshzCasmSqSP9=eR6GX&{w<3bAfxPJxJvL)`CT=Lnt!oE5o66j%*R!uJz$@Q%%9f2Ree{AY|CkqgI!_%9 z!;`?@4aEz=lc=-#VMPzbC=q~F#E(yWIb}#5kmMud&;}+j(!^xAlGoc`5ZihKT~oW6 z>A|k#mivi>m0~wo-99|A9uEW(YuB}Q*0W& z2MwJVK>XhUBDR6MpDuk?Kbo9t$~n!Kr?ezVEWxDK>+)H!%C_`sW8Sg6A%P5dprXR$ z6>1?3RF0LWyX(`Dbd0W7i+L$rHV}2K)ER*>&lxh)_?)L#q=5i>q{SOulF~~4_=B45 z&`{Y$$M0i;u5psjcj5(6@s3TQr_C^{IK{J_G^2Sa@S!>?FW0|;Ik=)?#9R+Ly*Lh0}`R zMjF@o))@323-VU-gZ*E&x@I;bJ!vj(_t3L^3mmg3u)WVYje?y9X{2d)2f}})@?Nge z0Ra~T7fCM<*0_7*LMSA>tEl;Qe^L>1>6avZdDG0lx0%$(5J~^r6kT+ZLTj#FZvShdp;h}U4O_i~u4!+(UEX?dxa2s`|ef=<3X5z=_Aha+{%+!lnm zDil?aVMh-5qcDX=CqrNvLimXXr6?)sxy$jxiw+Ey%TFS7|7P(&(e#avy=b}>#%Xe* zf|@-E44-5z&ww$TGW?tPNpjpNQl6GnaNw*?ac1TeWuhvx)RXAy?eM3YI=dd^2{AOw zMS*v?flnV^R7@KR*uRIK^hy(|r*2;?yNhC54IoG9R?gKT|HZtiw-3b23V_GMM=s?d~qUNK6}a{Krxo2m|r^_h*!Gx47Aa z*kBsIN3;1A=0NaC5Z#}hv|=k?_?%}*5`KG9@Vk(qIOVfNyPbLuS2^&bxAH=*nG6da zw-oBl>FaV@oRUH{ypP8bU7Zk?t$z%R)PXmfv$G4LvNKIyVi?lE?5xV>dP}wFz)A4+ z0u#v$FWD5C*)X~)OTW6Rk`QO+SE*AV(P56h-V){Td;;n20)j`wsYxr1RL_JA%>xfV zIv?Yg)vJ)dO&VbIrWGS3J6Dio`;49jW6qCn|0ikrmbHf@u=9P_7_Pjq^pnY9jNi|u9sU(;F7EL zr+yySpC7OJa!!$UI38dZYWL?jqd3{oRrn+9%2tI{qg}g{-&&o+y|!Wn(DGf(D1_Zt z=coqkDeZUE_LZpPz7GVHCKuzph;Q#4b*=3NSfZRITzj4 zgxuvT?oHN^z-Z9G{da) z!ckq_T@8(|@wtDATyRTde*GBZ8e?DcAIP= z&)kbN?$}dL#lO6HTo3APGjTr;pZ_LL_pG1|NvShLF4ouuXKmXeMro5aK!`9Jd7LdL zUJ9zH8c86Yu&O%EPROO#x9aC2TGKgz5qXW)H6fRvGOdy~#G>+BNI}xV<-NV=tkBt@SBpg2a%or>YAv6UrOMeV(i=`3YY_G;uc-{ok}l{V*m-HLg} z#xpDYI310Yd^-0iA(XJ;#}1`J6<+X}6-0G3tb?^4x!w#PoA@v9>qt%sXxaw@ zW%>PXY?^Xs&GQNqon;lHtG!>Vo4B!z^&__vS$^Fbyu^n#d9Yp7TYbvl)43XEPb<;P z+^&0N>&hRsz0`d6blAuDO>Q{(PZQ}T@V%U3zy1g|XaQcgU|f07%WTWvkwY;-lir=; z`>F}}RHyZXZHu1}`_PyGXwc%{;cdqKS*y1T=Tzi_5&dPA@OX0$Qu(u^)_$uY=m;~p z?+j*S9D4*`-Vi#hKxd(k<8Hp^s)7nvofHSvrmgr^8u0-DD|wwyM~>&z3M)x8;g~24 zGDfYVb?=^WGIL?H;H>$%Ft2@JlVtvVtt>1I!NK{ZdgMdsj57|i8L_C0q=u#jppkvu zJk{qQ90{)CQMHENMmYM@YD2s6=dg z`S4*+#e5@F9nF*ax+D{eJC~7yc9W@9rUROiM&Si8Py@b8Q1*7As?G^A;K?SVs|&a`kjD0)UyPq7 zICoP~Qc;$@Ahtvk9jUGk$VtZ-Kl^h-Vp!eJb)qqmi$^P3x1*`fJQHN}?}vvI4=85R zulZ@&n%d9`k|$poN{PI*Vp@qNO7K7bd4_$@fw_M^nIA{-nj&1fSOx(4xSJOW9_qw`LR^2voNGWp5co? zZpv3-2fdB1bM#GDXE*zK6iTZ8!AN!S$`rbcNbGlyjdFed2j!_uU%5l4#k@p6MdZ&IzDfbg*@3nO~W@!@Q$rvw0xF6fLtb2#`O@qbV znak>*NqQ{`K?e6vXp(?Fj7ZhLN<4YX$C!fDB{D*zb2`e|dx8JHTYD@ZeGPN z^%vGEdj>ttKk(LGMrDgP3dd=qAIRg$W{WlMym~1?uxp0k)I|_xZ_n^{sXh-*(n^he z#mRt{_eKa%gn+t|Kr>qd;snxeK zt@uDEZvws}QmL!vPqPIt2Y152d6erDyz|?=*JNdR_SHMh_<27wK_NBOTZj@h8T>{c zXEf_dHA62e&1?d~zAj%$Clf*;e;?O9CTTCZec0G36(2tF#mpQwiy4!F`Uvt%aUR4H z=5i`Q_;ev;IRZ@dv_a8olt@d(9VrhWW1rr)0;Wtn(6Iv1?!SEcxH|(Cw3DiNJdMoH z8e`+ZDl3=uKi|!1ZViub`RXI@#*eElHpe%e&SLv=6J^<=^V40MRdW#8BDCCd8JMs7Z-SS$Db)kpm;%}+DTqCt* zBki~*^ro0H_NhHy{aVMB4p1y~tT<>F-GJR2=*VTk!~dzVCh_$woL{xL1VP-dbH&M) zQuISAD_|w8Q6lRa>#pN{h$pniFrr@sklICsv+&gEOzv72Ex8$(3}Cr48ngHa>66^X zzg4dH3Bt2BG+|=WP0@{@^9N#vEGDuruEU7(G&6sUa@AsAkAISqxmG~IR0DbjLnxwKL&?@)^nN*8TX!l$7~R-4n7LjpAyHT1>t|=jY;4(qkoW`Gj ze2BKN4~0zT!>vtSiKfW?)vB7fPs`=HVwnZOxV2!HgHi9vVZZ!*&US)% z=Q~+xWgj0V4GH^K)V%kU^MbinCO)g(qvPpFI=U%FX417SYaeem|2+SF;T^QpLu2_p zW0K7jMGVTt^-W6ecK-d+tltl%f^pBRtDEwHbLzIVs0w=mEP? zV*Bu^gRTO`%bL!<=4RJ8aa>-4e>r|~l{GyB0SDzNjFbUA@wojV_^?T}yXN^XWG>yp z_!SwMr$`*j%jpvBM+~1=aco^dX+dN??BhxIt8A|1*z~_h3?aUMi>s`XoYVC}Sm0j61M_*v4mmF%(Oke8gF2>xUNy|(;rI~utj#tM$JK=^xqQC<+QzSIn8eSK0 zWdR?Oro}8+7Y{<*vk*s1?6EC+fm#!{(}+Td=b$;3C`pG@QgpIQ#MLMSFl7RqZn@1NK${HQZW-=Y^*DoolkI-7D?MK z3#e9zF}%?Y1`Vwr5H!!1pEzuiGcbT*I9=>0G*7PCP*C#}g4Wluh1+I!8`CBI{=EUW zsYcU>bF!;N6jKqXQc4*eY~9Y*zUlG&&htc)O|Q(e$N8Z~``o#7C;A6{u*dbvLdUSY~e0Qf4 z`8hK>TIQr1Z718OsBqY8^Xa-bkA$nJw@+yExL5j6oexE^P&>!3=FB??*zLYfwdET$ z$DiX1gj{|R$4qkBjAhfO4Wc&IN4t(^fEcHZw zz!$`U5lnHs<`>%H2&p!~();Z>WLWTkYM;!XRax`iP|wKGH_XZG1IujgQ$P-;E`g10oxK(^=^}W4zLVKh^&~r2UG;GvnNO11GEVLOoO15gm7Y4 zw!dD>d}61^$fqXwlwvE16$Os-BW=AsEP;EdC{|yuzv1Edyk`tR zz08`=4lV}yPNf+QA1OC5KfB$0FHUB{EV=xB<ls4Sf#$c-goi+%WRW~sMjoaa}y z5q=2%8F>yHrMP#IDm{7C=g|RYKvT;=9lZ8B`k>pGRQIeda?FrQJS z?tXA;L=QH^9l6L0m;3v7tOM8P%8}lKva!Z)auUu<+{xvstgXASmxHwf=0Z2!KQmZG zs%*wU)l29ksUP@(!4QbLG1l{Wx9iZKln^w#oW>*V2P3cZW2rpw?qwSa1udY5T(#WC z$0zd-b^`C)2i^MQBl@xhSc*q|C>7qxnMXV}=Gus1H|NXCp7d~qo6a-rPNs#w?kTJn zABLe%wD#yOSdkK%ex1A9qRW>!*VsHcs^Dawlt5~&!JYd|@l$@UhjgkG)IH@xbahX* zJ@&IO=t-{bCxd8r37D=1OElZXo`62L4O}{0sSEA+b^IoS)A!ro5l{0CzkS;Wg!<9w zupRC$1`;dNb~9d33LgHQY0Rjuz>@%WiqrZw>#9ueH$putYASZu!m}W;QuiR5|#?*O&?I}a`FFI0BCzeq~nIru!2+XUAJIa@cp%DXrb*V zPhbG(`G;dLZ~XdVH8)h&9#0B=C*6)y`O(Kjte{21-r7nOrCFLlSLMK zt_J=b9us19d~NiX4FZ18XFE?&K~V+Fbl>(!RMVjAkRO@rLj=iH#3>rHgMmJUCOTLz z5_uZj!h;bIr;ebE9r!BhhNiC@>?K*dy8blbW4`KZ<>nIv80(@O?MX+TO$O;r9OtU^ ziR};@_^jxxz~MW-@n)1`*kEE7FLC(>fC;$JHc>gpi`3!g-F-Ct@Rvx=uaOaJmAb_^ zzamddI^3WYSHfQVoT2CmuNMiRw0sukzW+U)2vRo9PC2+~fvqxWNXrxd;d-^-@0dgU zFR911K5>+m6y&>QO5;6}z{H8)usX+wp|KZ5)~^!#!6Kg9H0z^bl|gV{`(BAHsWv0z zZ43A6FUe5y6{aujzf_aSD=PCr@eUt*z<)cTWxQbNXt@Ok>-VgG>KKDKGpyu?(i>fU zd8_g&K>19ok3p0O`rH`s#e#%f>*smjr8Xq1=l*DjAF9$>m%v? zOv;S){vYmmKz1fq00lkV+Va9}*q{;hZhzXHTO3&PSwB1<*9-lGW!s*E`yMSro^N=i+d*pVzEFUtrlQwuaq7@V9 z;qE1T;W1gwJt<8;Iq0JBmUm#CRN!?g2}<kAD*%l@J(0C-XTqh+ zd8x*EwV}s&I-HO<>He!nJQ6Iyw&IW!_z@3#q_(h9l+P>$EI@>hXPY-hpFYFqe0ip_ znu+%=tGvegOWyhM{>D%dHhuk2lH!IiX<{fUF87rhCZ4UBR(}1nM`KZJ)I2(W*8>hq zrL$O(ZNP9D6^}OSIf-%WUJzUc7}*)K5Q5(sYx9SOt7ziAMZyvBG~>hI;zwYgIlwetn0rhvW9_3#ht0pELntcK6U#0wmnvC5gBS(i(; z@g{ogsS))H*}yNyakX-OOjVn|+_Umz>*}C9yJu>meZp~EYvRz>HCc5=FV=*fzQOqX zSz+$9OlNSTG-wyI_kH=W2y3L=l$JP-<<;S6xu2cOZ2S6UD`9vpMN>BtQL0!okpKbo zb?NBj;`2nr1DkR0$1fDduV)hRM@jPWXAK*HvHuDJr*ueRWk|m;aCKqRF5ILFJfVGF z_0f{iwfSw#d#dJS1W#DsqE8fo6(sAiE!Gs|Lnds}`nwQMqbrZ$z|jhZ)#1WQCEWj2 zm@?{K7E=IJfqo|Jc6oh349?vyj~4n)fL)ou(52z;nxNO?SN*U+k zIuuLw{e$&a9d6Y7-As#BZ=>lMk@gbQ;2Ev7&LEb{;p?vb@?I_+)3(YP6Yodbn0|V5 z@(ow=CE@wLg#aJqNSx5SNNJVd?e#jQLzrC=rteS7?3o)NDr24=O=>{J-l5>#rQo~Y z6%XR|sjuvnW;ko}!=-<=k+sX~LQK#i2enT?H4yQHeq4_>OCiXtV~{#7%B@iT(I)}| zmh1xkH345`-j-w*YK}y`m_V(mq{?xz506$;-x$^T?toWMo(1w`w;Q2~^L3-7IjX~( z{Iij?A=9mVpEn0Bu*rd=3W#FXgA%55-Ty0^rq(y<%e25rMx{L7L%B>K)!2+Hw-2rwA5gd|det zckhrL94xS@*-N>6ez>i?zC~APf6wJ4V2B0XsQIYcT~Ta$Q7}W#8Ms_;j&HdpfqZ`% z`plOfTAIx|BBS#QF^atsqtQwaFv=z0646Td+DmCDO|w^-JwUHwMMwj#weq3a;@hQ} zdYoZ^(=w{nY}vriB{=tkLp3}8SSo|4EB)v0>xlZjoGCnMV?wzf{t>TG1o2`O3v-)D zaqM+_MNsjcPt7JvkCney6)hE|j*#-={MPlMnBWUHvE{P`eG?WB#N$&?N{qEYnqzB@ zyzP=OaJNl_jE48prkhp2I?>^!&(Tr3@U6g-TeDMTNIXk*-~jO5k~eJFB;~qyp&|a> z_|!S1c9%Jc=WabsvP=#nIt z<|@gce~puzOV~YvzN5HKuz~s>Ae1HSr}DZi5eev3xd`ejU44=OyFW{B_e*myLHp;s zJ_8m8BYylMSr6HFr4pi=9$L_Dxd^yUiObAjCJ=h=ojWtf*EqrR=&KDf0cGtJQ0 zKR#2aEVmNvQH*YZW|m{IIpSo2VXGrW0hlg(gE;9DoTuv|lf=+6wTJ5gGVVKSH=**E zkJnmbitKNEk62r`2w?MsTwh0?N6 zserJ-sYwYU%iFV@u^$H*H}lQEjsih(wM8aZsQkf0gj)Hj(do3#0@T@|c;v8cbv}lA zf3ZY|`H)DQBBUBPd%Un&==ev^r)VhRP=34;xd?w=P-_e3e}47mS8Qedoe?k2gq z-MiM{uogFGoVvUGWn|x(j7A3^qoff`eWBWwp>d! zWZkb0ub31RK(cCRA>ca5p^pQk(98{AR~t6|Dvq!A7j=;PR3Ue}CoNm47cBKi-1M>8 zKh7q&#VOSH%21mbx_2>SVdk!S$6v!WWI&dPUr~Yo^*PSP2wO_ZEgFm(4J@fv2$(n< z@8j@lC$k&OW%oEwIWcmm`x~}*TdvnO+_w5c(FU_$kQf_b?JU~mOFh(Gq-}qkRJYU_ zXUolsaS5W5VTH6gucW^aM%Vp0vSzIqe0B%Vi<6!>ZYIMHnX3sun^tbPzVGnD$08m6 zTx?BvY!TVtu^DmE4wcb&anud}Dy~nc&T{nhB>c~?`&IZl8o`;SOr`J5YAz$esi|K- zg)pYJ?r9W(E1On?K^y+TczV0?#v76e3cGJcgaG}KcW;UhuDOZJh}8IBOb*7WyhY^e^%y?#hhw;7}yg;p5s8 z4w|^mBUJct=gi3oJNzeI+M8f;w8iHugSesM-i|hv2q2IB7sQ~30w#$OBp9pE*Li}w z_vh1&ZKv_U&$m2v5@IJdM?IU4pjw4tpA}^dW(S3Y6md-1@IeeJbdl-AC=YD%VgLUujc7$)dF7UFF8x-`);v}H6^ZG@PTG3(SuH0wt z9VBvqxR2c9@;ax3r;(QYylgb`EC{CHk<+6{Q%886|KwmaUu2auhxp92IL+U8+fU!7n^X0-QNMY%s4>+d{b&5ntHT(2F+A2%qh(hr)0>%u_$T+(V7{!nxXycvDbcS+aX3;%>Wg{jq$J4r9GeL!# zyx6GDw6`W?5p?2Lcih3n^&!l`fnlyDW${%%eRA(34v3mH#ef6{bw4{RA%^G>Etb@F z{NZ+`T9`hxO5#G>M%a}@7#(6y*#xgm%V@||=b)m8Fq z8uZ?TYouKiB8|J&bP;<0xCOVCY}fghEbKzKw&@2H%UgF<^o|@!p$24`5$3FuK(dJh zWxbxeTK2vlu~QOeFF77@ZP3;Y*HZZu(J6#G?+#{Pa{}zO-Kf__>!Yh6-@}2ElA#hI zAt0};Aj6${l_5CTek!*>W|I673vuLv&({T9{6(s_C;0Z~yFl?TElYvVe{zki3NkSqkfo)}; zB_cvb4vi-(Tf_uwao zM6SARWVy$zJf0K01iN0+%A3bs_r2NTI!W3Iz(X zL!mu41vkv*8T@uX6Tkg7lx2VtMtf#uQ-Ca>%0y1~$4@uw2pHXy_MP|voWV3uOfyvh zWzx7%0lKRxGIA3HK6e$E^|m-oe`m(lpRNy&8x9s6$(>D`0cvbU*UR5|-#^)i)_j#F zCn)QoU8yybjl-Bp#?b@}?fCsg6HV<%|NSkU;%%c}T@p)x`Ck5Z6yOFJw7FRu>9`DU z0&ct*ceo#R(C5Pi>~P0K6lDI|-C_=&VC8@Ssk8;NU3?jG^ zimT>#@Cjw!Y1316A~WsINcwKylQFJf_yfw*mfkQdBf}i@w)Vaeae>S7pbC;Wy$?qS zfrz)>U`bZO;bU5m=#Z4Hik`j;1^#OgS?Z#g5;9c%D^91|ymN}DSnki0mw1Q}pjobw z(>*uxEk9HCEk@1-v14CEfZ_5~t4jv5accv5 zaM?{lk(?ZQoiusVXL^w5Zhuyn*0?%z)Wd}u7-1>IS<3%-i%Mk~#4p4p8J!@72T%d~XR!TS7COvH+dcB)QcXsZ~TvHwX@&0H^`7^8s@x*_%P6x8t zGR%zXxzhI<&t?84C5^^ngC0h8EB?(@>oSdMfk ze0lh@G5?SZN_yf%r@WwRadP!ZGZ+0Ks5tDE@eFUwS!Tf|PCV%D*X#eXan;26Jcx_LW0<%udidFS3|ofV04NL! zy3KeO!lohP{^Vay!LKd=${|nw&n%WxL=LJJ=4X|2zP$}Z*0wM=LG$_@aedGQ89uJ7 z)ayTeT||Q>VU3;$a&XE`B#kR#P{fjGbSsDOU|b}BF<#^AjAaQ9W-fz zJ_mitx_B?ez5B>TwFC7vaR?petRn;c+_N%j6W(Bc1-Z@4-jWNl7c@M$j%g?KjInw?wOE*NoOM$wO@j?8UsT$QLo7@flPZOAgJ9G zh)5TSDd;P!ObTL4QmHb{&W6p>IIa7smRM_>B5!o4R2j`T(tPwrvHtu~@JF1MG~FkL zcI)VI*G8xIF|VBtuq%MCC#rA0*Hr8(D82CEbG`csbyD=Jrtn8datjVQ>V?&p;Af8H zpL+rrK7Sv=?>V+khgLh^yk&dMMT^cmIyTI~)I69Wz(Lwu>xk@0VS zh?ry3U|M}cCkJz(f1_OPY$DjVwQSkZ#n4?(9eoP0)hGtIB7&*)yUh~#XPTh@-TCr; zn_o>)cB5g;{IHqqqT>ZQ5~@tPusWffZpy=am)qwGy}45@mkh5zp?GJwy(yRqb46>W z7u2KE1gYtU>|uv3T~?7=qXrt2>M zf;(D*XGSW=8>@Y7X1yA2tjkzR%F*@Pz1m*lBZU9-O5ys#SLc|&9olps(MOZCMx#P% zW!sz$R~$a%e`b1JA!hgT9r4XJ3^XEAdx`joLqJiYflQ_tLyncf7n;k6+}mr(n7|9s zBQ{*uJ}xr-f$wZ$vRGEwb-iZOIQN_Zd4ERB#-Yw#I_=Ab$fGu~*vZC%Rl?1U6>}Po z{MqBR#pA!YJQam2l_;g+p!}>Fj7Dka&V4wnqCjxB>#d&CXX;XcH+$ox=AD>d`-O#F zl|RROoy+x62%(RNtS4J75~DO(AYIJ7R1Ydj_CPTv13Tx&$;`L|iTn8JcPAsgpKcqh zrSZzpBgbkv?At>OTaYV}3E|lOMvLp7P)HjZ?bnLPjgA+Ka2?%X1MItG4nsOV4!P4^ zl@6;RQaeIz*06Y*ROv^d6NjRMBsQkoiy50OGqiQVR^wN5AwyqNwQH#bYH|LKekk`jZu8touE&Hm=!Zf0V-Pcc=4fi`gz z7?CVBi^YItc?sOTFe39+53PHr#tecGzwHD=KDNCHO<`q>EYDXTi>R!}I!yE$53q?* zM$$|}Mmu`oi-q66)%bRUyVjR~WxDV@(`Smi{fFcM`)wpXe{SFlC$*c5->E!2xc&Wk z<1O5tMg49dp0{&vgbDFE+ZNzLJy5(InEZGc(`S8nbNpbi$`)YHJm&!}JQ(UWkB zPl#zJOCzzrV*`PY9UjpL2-tB{l+nR;YxKuW6zuTCS{$EWMLD@XD$I}Q6g|k6 zsC2GCRy0w+Tp!Id=*0HOFA*zpd@%jH)CyAT&JDL;3|?~EZcm1S?GcY3+0Xa(M69O0 zR$bXI!Z3kgt{NEFcWSPfQ1P~$AQ<13x5vOXCgoXMM~A0#Rt}J`!UBiCj{AhmNb!ze zQx$dVN59y9UUD=mt{5`NCa-8BL84N)@3Z!dS2I#1$`U37lpl__T9Wg(pn zflS4ZR0oHA@T8U?7=y|&EP(wST(RCPCteJjBm>Dslq)9miQR~<`aKe`sT1V#XvFhY zz4YhQ4>jMPozomrIjcnacaKb=TvvlhDcD&A5+@JTFrchl73r5r@Cn3K82C-+*{6_* zE^(i!919Kjr^ttK!6@=y*82i|LX|C8BBkSy0lChJDtZ0!B`cB5%MsfM??IfuLm8}0 z=)iD;xmIRsw#(GQg4g*{F2!F&HkP#+DpkxG6`=jUmGFG#=IIV{S^1#vYwNG*ph=^G zrmFk9rgVT5sCu_k3H2dNR_T-4L>67YQTnieXqVBEG4qEw{rH?J&a0!xlHh0S~v#<=x#qZ%N z6`p}XzJvCQH}zzT+QemAQXEORBd}*8ghSy z5=H-XP8ZeeP;5J;j$AE2lV{={-SxaP=GHpHb?8gD--1Q)YhEKz$U+WvC;PeQ@pOC= zihfYtD&BzK_t+M zlI%1w`-};g3G>^}ujA`A-hDHfg;5XE1!p^;;dxCc>tGI=nF)m*J_Onlxc60!=0SVn zDTPm1ki!*>op7=u)p?Sez~_j17h69mh~JVB#S2a5qH!8e{1vyYBEIi`>7{ z`4KlmdKh_Iw?Bl1!FD$SkoR3Ff4vFzQQf0S!$3;lKQaL9yvWn7EXtLc`8Z-uhJy6& zB!~rFn*O!3^b`5g<^0}}+X?=-z#u*ll_&Aw%6X3u9G>_q-(gcy$+qz9ob(~hNQL?u zzfbGPndx9pP#O8i3X#CuP-xO8-lkjec`y7tYCT);_DXT`QHblBx zM{HB~nldgF$73?+6Gjz9V0oT&k8|&_Tl?3Zwf4#eJp7wA%G!#Hyu4ozyvI(++ zX5IN}y-Iqj$9;&>xi{ts(fy~vsUX&l8+RLz)&+ie?J1)FC6kK7=hcN$rCogButaUu zu;Tku+pRWDS6>Fs09NW#E_RVqT5iOikwkP}F-k~7AmwfkEt0I_&%SY}Xiv{0PtH&0 zBVyw);1-Be+Spcthw`bK&W9@n%gUy|-H{SX+SeIk4AyptcGLpS2e`VQiSS~giTUbw zmpJ1t>*T6C`e{C}V$t>}n6KtMD4aHsetO#3EV3&(@=@|+mRHQ+;Zp}*>>G}Ilp%2~ z6}ZD*rf#Br*dUbWsc8D-tZDZHgjGjPPj3Zs!$msmJSJ}X&gqBjwBX!YhhoTuReH4A zGH%Cf9CuNHlU!5Z_9Pc&JdIrezG!CBzf>Rcx#|8K9>_8mI4PaidfjVN@aHAFrtMw)+)N94=Qw6|_>K*2Uh2Ea zksK8}LAqo^iJ^n_#>H-Oxv7Tvqt(^Q9OXf$5{)%U!&UocX{Ehv!|Y4uT==$Iuf8sH zL{>5}en7k6hVzk1P9$`5xk~hAaCOG>mfCe#pXa=TeNW2ni8`;2l|}qsok-T+mEKM= zq8D$wf#GD}$I$5tYX~6P#}f|by45h_+vH?@E*a8(DCdc38x*zB!@QWoCq#caaiVXb z4VQe%HA84>=RP!=DDfrA)h%f8)5-phFkY%i5;EuXaf}Z;+>QSlKEw7x=KQV$ckOQu zF<@Rcq@FUpB_j^LNn;bhhORmtG?J-vJ4VJJPGRq!>8Hbtbf?#-3*LEeDz&QOWzfw$ z_md}L4k%g)iFmvB*08BGtmu0d`K?Tb`e~%jo;?-ZsRcfniIo@W!Ce%>;n~}_DW-g0 z8B`;v;k21Ep|-Rq&q2#o-l02T^@PFg#EUP3&t>@f=z`D8op;Agy~*vrxkDkwm5cEh z)yoS~fzF104go3ns9At(0_Nw^c?4WNXjzjuHh#qN@586`_SUioRZ6&R6MwDJ zRynxg)`h1fZ?}lXfn7=b_Q5N;uA8k>7Fbks_c_voO(H#6(GBIZp@g+yAHhkvf{!Y9 zAapEawzg7C98^i{SKTpun=T$O{IrtMyVdW*eQ(^=)du^PrLzcRrDR7H%xEe5J?=v3EYYZ`_N;wFUu-KL54L6 zes5pkro|sU`;_%*Ro|^P{Xv0s21IGLk;ag-a(=G{*^!|S8hbYN-|IZ$FZt%GDYxXDo3lgoQERHxk7`D97vB(M zExplxcU|R*a^15{Pr&AQ$EE?}6BX}|*EGi(yV|?~dph3=QpN5y2+7m39t0n@W-#y3 zP*IR_<6mv~G<&2t&ym=A{sj0oM-tpIQ*oyFDY&ZU-N@bg#qm_anOiRoQ#+OUxiL9( zbLDj)iJKtR5*a;D5>YQUEY`?)RR-nox! zN8XnYe>`QT3$7!8JILVr9JnWa(-f?F`G)Tuags<780v>)sr}2FV)vPuXDEhbLWL5biSRD z+-3*3V5a|O49ma^r7t#TLydrprL4_!!P)u_FM{3d z54$sOv`)M#PSyq|b>Cb*$1iim;RKVJh`T10hqDSsSM(Npmj^9-oY7IqVFjiXX5Bm$ zf2)|ae6rNcm|3ukSN(vFHE~^ohi2q0WvWJ(g_(eu>@_}f(;4p<7?7E-82krSt*P7< z%^#D{Z8TLG&p)V%Bdkd}uLi@FR_#_1deYhoEguW+jXm?;Guc#MUL)eGr&|h)FlP>Z zo+pJa=xf{ZO!ghm4C@!Y>EdY4G-1;1k2p_*(?5$}V*if8$=%jP+x#;i% z4`M_Ra2%4F&#j2#R##?MxYlb?Dk9yjSP$wNChUHxp|$qhzI;LLR-4qEMSEKX#}3S0 z%C+Ve&yD8IGHcwMsMH)wB=)_1zKXdKuXIVqM*p>1^xOy$oi0{aFP!K^yYDo6ZsPLf zqDeQ96%jjYkk3==lK<_7-L=EarP*|ov>Dg5OGGWWt|Kc^Wh-*~LQ&yJJ7G99uj5qvYN1o<)W(}$SuR!|<$fZv zUMfy8Y>kB-?M%t@4kL@JW$uns=)|=vYfgLH^1Sm%jhi09tXr4Y86o`H;K(;NkFD2t z=`^m~PczCQfZg-WX1+>G#409iK=-tY^d{0;x3N*V++b>Awnxdtg5w*J7~;ogUCo+v zqKHgo+pMQ3g2Qd=UZ*5&EQ*TV{OV6~6)xz0C zeUl1K6&hQAU;M6IvP}IMHNJ0euhFy?L~q2taVk+u&S1%@I|5}0o+bP)%DV+$>tt4+&tuqYZi^qM5>dn{tIQ8v> z%V#a_oxY?{D{y>$4d!~ZW7FVHMLVRHL8I4jMfR~ncCnXrI&M+DKEx6nL#*#qJj_{J zIcb%TFbZa1he!j?yj|ODY1#YA@5RL2!_da^&~)CFd-$q=hAX33&$Vh*qcBR3)LoK4 z+FAV~&cNQ;S>5sU<=)Z7Qk?X~V=D>Ob8YYHszx?MUO9iV3(qFM{nX1#&)0j6e_9!P zvB*1qcso)rqS&-8p#G}g3r581+wrgwT5ikI_R5LIPABbJv&av;nmb3kgSV-3#BO`6 zvJ?A|%N%KJ)Xt4zoyt#o&D!$px!|$790fg3mBSiibjYPkX>R*iCOYqn^`038CmlbY zk6LqYo3H{-T1g%eYiQq*yMKc1d8}>K(emTe^yb4<5hgWU2<@dCYq;aVMhm=%Y9QCm zM)$0B>E)PJ%F-m4Y;5cUT!I>|Q1Z!a|H|MQyjVgnq4xSrXJ+`}A`htp16NdcP~Y3t z@<|n4=yG$q%lf*bjMTFLzAjbm!U}Da{}7Rs>~nq~%36)%Mv3eZ<2NN0X+@6G`_WIB z5Axw$@{&!AV-1of{_m2N4Q1Y?a|SSNJf7`F2X>QZ`p*tw^sW|i7RO&^&^g{<@bP5o z+nwq4CuJLU2JgO4vw!&ZNWzzU7qJubq%^+uGDo|5LVC^5(c{~;4KJR4%B;lB7>A42 zJ2>b8j``bV70HSF)1+}S5rr9utg){2S%}hm;mabq;Q|lG`#v--zPz1HPs^LB=*>%`6oaaL=8>KN!rfYXf7UPf?rvQ} zMb(8AZm$BcAidjIqtt^^#+8&&ddaiz}&^OKQM*Kwo+0-QO=K0eeA1+??yHn{lz?ClKQV-U$WTMd=$|( zJt*vxPkmKYt*~(MqbshJG}&t3@Urp5(TULb%Q{Y#0Z ziUuMg>B(2KnD{eNM9?pC7K`%(r8iBb?d!nJEZ95XD}(_4P6dyHx`_T!(NhZf0ql%A zt`*#+IR72Q#qo{9`$l=HV*2B3#TrP=`ocF1ddSJz!MIFi>L ze%6PyyRagiKKZe>lz}duI3A1+RUeER+6ay|_Z}CPR)n}rZ?QP7g zgYGAS(;=S@Gjaq(&4)O&XsjhRIZfo9{^%Md@i~gXD91iXzT09+_Q+w+iL^IMM zk*t+E2F}&hf%_}P!05Y#Q{G#jgaHcap;0jtzHZIqy~rD!v9$eRv1|JY zvJSkRVJ(SMF({plji<*VSL}$$?8QYsS?&WObl^tJEzcYIk*g)4=Ob!q<^uY6e```z z8hNi%G?Z7lPjrEh8!vH1!t3ITTiz{(kss^!vZAb|oHn-fa+ZWc1w>vBy0{HuFTv>r zx%=WH{@o!BRKS(@tta|YpUeL7{0BS3PEadtI(4*`6aN}r|R%>hRVh`G6M_hrJ zWK3>%j3RZOq+PU1zeBQJyx>}Nt>|b4pDR&3wxIQF5G^(K;sK z5|>jade9u77NM6p8fhDXc(J*%?Uf0B<*cRavgx;5Qf-dBg+tS{YVQjbGc7zMyl$he zak?k(5~;z~eR|jBJ8Ni04ae>TS%Pycw)_ublo|b-SLKBby!f;up64w6`-YRa=qT}t z3OSF&D@g1`>6(m5mDAoQBJlTlQW&^IEBc$lTbyXot$d>x13@=JQF^$*@l7L>n6XSKgZ3Y7fwW~N8% z9m5aUU_Rp4Em>I?1J|2jzaEjxOBIfZG?eguS-p6|X7lj` zVr@cFbP}73I>RRSY3<2^(0Zc(G+&yaQ|l9HS?RtChof~85-~Rwng}U_vc)%OQdgxs zat_kb8dw$Lk(}|W$ANk8Xt%Zj4JWuObbA86>oJ4%Zn5_8kG2?IHF1;Dh4S!kH_Lh} zdd<(D;c+N7(!T#L@7!4=xFsifv;#-!iQB1{A^x(>?MPJmX{&n=inH%p*oEsv znLPVYHC$Sl@?i}}slK}TUdcx)m!m{uRomrOUIMON0hPj#V~sM(_lj3n`EotQ)fx$& znBU&^xVPzMmERH5jf(Tsyhk1C?X< z367GyN2q{Dc4}0v^8@o0mUQ1IMZh^8(!9xtmZL+LNR`)=Q+mQUuT!2^o)9^)?{Q`N zYJw9KU!w+lTmUrZRwa zes9eC@Ws*UffVktLht=@49L25&9WLZ+YhtL-s-T3EBpGUT$ZWua{d$L25N`83vW3} zeYqynSHB4@H9DvjeOH9hHajkZ^U>Wv|Ekf`+awuvHTE4Y<13&}Zb%0oXmvh_Slq?? zsE_`9u&!N_u}j6dYXKilW-cxUyt-VTb0%ON!!VBRB#q{{zPQ~@^Idl|IJqy$AFS4> z!5x`#efLgmynWY&n^o)wtGDGAv5LN#{M4dOsCu?PT>3_#$>-Uu+t!r1Y=d!bDhuYmqa}Bm#gNhRj@dKXXQh#ba!Wkj z^DSFUwN8rrir-%kmRRDN3#Cy3n^jbdAEKI{9)yclMXPkb;6@3$9B5vR9V$!VD$^?Mq4b146)42mRmDLOr)u5MB+2)m@YT*#C|$^ zX1IFKB`>e*;wA#-Idu3pbmJ|W{yCiVi3e9mKi3YFEvjDR8Si?KsK~Ese(p_)Q_x+> z*Cp)%@wPOHk*iX+o~>zEm8r#~ouN&~#+a*BFOwxVpWyXoo*TJZco;LWU4m`5L-&M+ zepVs&opFY8*8Gzc;_OtrR9uPTV0}`;hQPwyNQ^Dd7Oq@^E!-uZ@m zP0(%p`}@>)-rt`XQB%cuI$pT5KDY6RaoSN&jxzh$xD4N7x{RXsV>p#^o{2MKfqB?> z>kfy4;~5QtNyI}er+Xa4YPm1^e%%yMy>?Z8+8{^7s`q!iMXSQrexhToIltLfGGXVc z&~&DQ^#&#$=9g25PmW#qCg=8`S_X4DDQoa)s_jm$UazWnobl0)?z?P~QgM@u zb1#c4?XCtnn!nyE!I$%bnj2%EuT^I%tVCP7Yg?6lCeKr4%ZM>|#pXBfz*#(e*UOfT zddf_KqGP6rxO*N(UqahTIZ#ayeEt2FA4+_%|7+CgJ56l-4=0UarK)-?$|;x8_V>b_Q>`+ z<#dNThG~ucz9sBnt3G=A#KHZ3v` z>$t}Oj+dnf-n+(EgR6C^s5$UeB2q7@e7}HYq2kr+m}t@^c}&FUA#g3r&dM)el1F>o zh>SJ4-38!s&A|&Yv~7o0BpaqX+*dRaYNjuqb8nZ<~nxK?XJy0H#+ zUO=z5ii#zxhW^wb7q~oUu)t`o^Ln-fJ<0sgsS8{Z4H*)gX_|9plP{$iAHFfaj((tF zs@|sI$v<`eBn?Z<7K=~yY_&QyH*TN@e5HH{-ag=f(USr%9~Ixrj<-rq9KPTnj=X*M zc7L07>zCKxS~E6;7e%rsG1c5#e{a{e_buwHpIDZ?W%OaLeY8r;J8x^Y$S1bZhnb6I zXU^1JEnQ9R=a=WUR|?#y!xS?!qb74BiV*7YOl4s7)Tx9G0kPrjUh#}F^?P!$M>8aR zC2VbZY7&A3Xcl=d))y7`yEmT=Z{DPfuoYmRDyI{BF_ArUu0yYr=FCcghL5$N@6J|u z))KJtopVsiP7aaws&j0_i&-CyFK&!vQr~9bXHXF6cD5CeBlFB!9{W_PPrB(78DS^PV0^zw|?arz@GS5rysbkAs(Xp4XRbj9|R#wtm zgp=xqD@)*nC%C;J$@_pnEckl^hDuFrA9m;8*Rhm}MZ9fWH)frX%{VEWup#6EJ+q40 zGvXRKHX-J@S4N4c-2yrl8x4Z>z~2sd5C2BMA;vsW>Ts8axQOnk3$w?;=4T>svybha zG0!P1HqWlOZ)bCu8caG7`0d08)jbcrn$FUV7Tr0M`^=Yh|F^wgGq>e|yUTt03~T%M zVQC)KICLrZ+-1S|i8jOv=)A(+dYiqbk;Nlqt8J@3@VdJ^oc(sTao^%ce(yArZ$9Gr%RgTVd(O@ zgE9ABVq%VCo+`qH)JbdSGmCL!G4l%GK)cq3F|Obmn&Nb1@G|LusL||MT}vlqI7+1F zsK!&U$PNCeJ9WmN{&JMh;U^`%EP{-4;|;ZXN&T8a!QxDL*ZRJF`{qIYd1G)xDxGk| zs;d&yv)3wcs~8S0ZDQ7d@BPeL!uaUTEXPnv&QIPPksFBz`L2r&(KC7}1kBKTpWJSw#&l z+E}&OU?cx47DR#Vo*nhKg8Prx&1rxvnxXs4&oVu~mU1N&7^Z9!JeIH{+HLl+6qWzkSVuva$8jtl{ z5kwA{XxpeX*~h&*+tzkcaxV=cKER6AGRobzJ7FS8i}_;HSt%DBW!ABM$=7HIvH>{cEyLsehfZK1) zfSVW<_|Q&hA2a^TsR4W9O8c~HYN%n8G9A^3-WaBoiRLA{?F;Kk>EgkQ4@v#!izF8v zMCFr{3$O3cn3X)2yC4%Gx7}h#+a=Qv^k;7FxmwI>CeE$fQw7|0948Zo;=#rQ@OD|m zj5C3o6s%(;G0$|eN&4!nt8m=INy3K+1;S;=#^#2biVD-fjk@4ObrRR&-rBY9H|f;% zwJ&*}xuJMLE!QW4QN-2WC_gxxs^++U@kDm&+TJV3UTXJ8eV>mBGR>)0KRYko+x9+b zcDjj8g`dOyL!Lv?V$;;#Dc$`8=D-eSLM(zy#w)CYCO?wInuubvY; zXOh`rM%=_1_t2f{qKdyr91^Z_utT)c4iA&z`zSP>mg{+r;9{9>aWWKASHfPhFk;Ir+Vpk)2SinAAZAG^Q z5mUPs>5(6^?o#GMOlpII>ex#4n1F7IX`)_pPqlL_t28{2?Q20QKXTurp>AR!s=O$xp8saOSfzVH+5WA{V=#WYi$liw;Un_8plwV>XuV144L0n}>iMY2TF# zHUUyEfeXs#Ul|RvtTcSrms-D4rH~}&nJ)=GFzCK&X)NP>a;i+ZpZaR`>{gzcC8b{Y_cKY?2x|Vc$uz1(mH?18t@$AXO+_frAME%B@ z{weJ_#z~dL@BwON+QMS*hH?{8CwIjp{*7)?`1`Na_Y9gOKh9I1lX>t;G78+1E2*S? z+hOr=ASXkfDPJTwwC9H{;V#ze$UglMY&fx|#|mlms(f~Ni!(MosqIuPbk0wZSkTiO z)eGRj4SPdwo&^*A=89fNsmTl0fbB%BUG5B29N&5De!q`ZSNY6B%7XIwy+b$B23msVBICEkf9l*Tea<;3P=ku_{QCX$d$ALB zOljSbtD~z5E`aS`>_`{WTz-;%p7PG zNZNOX_A59Ex%D)4N41-SoQ{G6V(Y@P^@G_99<2I>?0)AS-mq$g{nFcG578g2Ue8+) zZ1U`az?*r7>??7D{7Az5O$GxIle%hL*X4l$1q>-~Z@EmKzkTGcbE1V*g!HDd=>62+ zwg!W*=}M!NE`ke9QfFg`&jo91<3b@!I0Jo>Fhf($!u|z1G3Ut}+y{D{{irV1k?+{2$}7LzKbJG0L7zum^9;C&78hi0 zIOufVxgx@MJ8-;Cg;)BP%)z~rJ{js_SAt#gE>Jgv%Z73^HPEjww23praf%+aS*Kh% z?Q~va`HZhQKOHPZifEW#x1<}tRkdh6H9A{4f9`-!u+clrRqR-rPU)>g`;OgXH|!Cr z_#A2^*`Q$c_O|E@oQC)fCtOMRV;*;dIE`Jb^~wwq5@Uv`yp19!3L8W6T%sf{rfTgz zYjAc=r%9%JC2{9sqMIc)43F=!z~93(cHZAKqUFPXaq)vWl}5+{7GptY+Qj52Mf}{ zC1IW)#;WGJ_SofG(B}tlT;2bkx3)a)wH4gJ8mOARyRiz z(!Ho&jG1e>&@ZZuf_Dwk1-H!eq}9${^xCbs1sM(Q+08_+`d#gD z;+wg(X@glXB|-5eJNAUfwlZgHW~NfRBgm}_@OEBzehY98`1Ki;XQ!029XhSR?TbUf z-Y;S`JPZ#UbUR69%X5cDo$cG?*R-C<)ps9M1!78=!A+Vn&y8i=So6~N()2PR8#q=J z7P7J>)}yqsK7q2peI9z}WcX25nlzgC@&aEL?y`9B9q}$`@;tMaT6_O<-m95wnR2wW z)4~GUGgbv~Ft2<@dmM9h-MI(&c#S|O(5&s_i{b`xn{n$tNA&O*Y^dl~{J6`!!m5NB z-y;m}BOlN2Z4dZd6-1SHYNer;SmDhb;Q=eRh?Z;eNdjt_(hAuF>faZg=}$SiBY>_q z-FG@As2db@d)tF~*|M3bG~%XYT6>xFc|6K)u z@H{dx@g?5t>W&-@XKegU-(J^B?Afq^W@B(&@y^{c<=_mxx4u}znr-QtR>hdp1%1V3 z?46fP3#`Ls>xqZW2*ir62Q)WI2U21r7|gH>7mk2q!lIwBVqMv;yR@_BtHGVXx4`i@ zob-Z#n4}Nzo^@A(&qrq24j@jI6<*-``Kt38!OPHI~0T;U^zT77yVB@*Sbl{3> zQttq-V8l(H9ZB_SpFWf)-YdRI=PL8UH@EVtt7v47Pi~V$ zii!2uT8TGtm^tFkiGvo%jf02GZhPaV)*xM?PsKHm^9WI(X7qBVmt{+Fp#``LbAs5HSF!m$ zxSDBTK#T9oEtaN{?KE9hvZ;mZ@-AX$lR3aA%#SN{^M|*bTY21~4HxXVLXtOO-*o$} z{udlxH92%|Tcbn@58e~zjIA^j54D;YJAS^Z>}81k2jrN+MSnBGYHuOxnnRMVQZyoM zncg-w$^93u2a57@}!`kNa$9gX< zx@84?XcoIUq=%o}cBu!H$JKXSYN;DTceQm0=EJcDb5zUJ)7n|c+}z=YU|QH{v! z8OYQVm13tj-S^dau=6G$cd%_+H-ApSJ_ILc$~;r}V_!RnW(4gxI6J-7p0k}>_F3p_ z!C;qDg@x)vw;Osp_gI%y^$=`!E&@8tTBgsay$lB(Mssxa)^j1u9-J7t(8e@IMC@L8 zqg3+E?d?8Y)JP2uxZ@uGz#06qfw;)2JwE)|%!20N0p z0FI9ZaC(51BDuiVqj?BI1L1W5j(Kp(W_u4zIExSd4(~@e?TbnfgaHrX$MF^*TQ|u6 z)wdFl?+27L_n_!RGi(pQJ5TC2gTx_r1UU|})8dE08&%U49S{d_ygPzujG|+V}3b`OO&gIFxg zkA+yl<_@%sMOl(@%!6>MDgei8Bix6Su_8;j*FyLbLVNZ$zoDL&UxI^c)WG8kxOe3k zAdad_9-(Rmg};#DGQ*d3A+`fxm@L5o7NGtOmf-(Yuqz-Fia~xzzRKBmFcnbo4Osy2 z;{ZM)&%L*q+-2l0Uu^Idiaff|0%--#eAY1Vt5=Fpmc%T%>g3t&;$8F zkprLsmAy@5S|M-0AgT~PF8%zJEvOcs5As87>(;tKIQm?B3HjFV@XHUjk>QK!2x12E z!|{R~7`c=~8O5LvX+cF~COd^;UgVOqqbRrs6*dmYrgpGE=sUiHQS>Xgnhd}n*%tw% z0$YB-7lE!g)(8$50v1yLfP$Bs+=nXwR=e>ddTh(#C}CfBIXgnvd428|Fp9G6ZMuZ0 zqzaGzfDax4yg<+e1c`wm5ka(I_!4wE40}OO!4S|!1^!zEA&kt!Fa|+Dc2EF8#$YJ? zJ!JbH(jiDMgoAhu3_&~=h8XxCc&Pp+zLZM-KX%#spI-k<>6G?BNPZ}BfKLqsfOszq zDe-0alj#F=km&_?4Ih3ED4IZg23fWU z0Vj*0`k}{vWrsOz6ye~oK&XoG9ziHNSI7>BY#zdu;%N+$w*$g~kUxoP8UXqeMGpXl z?%J6MW+pI7b5OMSGeT{r0FvP7+&W6=ej{-XYLO~DP$rBhcKCENdEx+dd`4({CU-KC zwFXdL_(3io>l0A@fhvJ|7`b1G*X{>Oo;(8S?^#oKM+>wQgT`V|^d%h%<(wV- zM8NNVSI#Hrry#xCp7`n&#h~bv^RT>G89JBFgvagG@0rWvJLoc^ookle0D3pp*?RX^ zgnlIZWSZ+R#|CTlFJl_d_H~LdeK{G1i(*}dlp&AJCBI1AtCD|XAy;U zbBH3aOE+zpMK-EWBU+j>h>rFwVx&Vt3=O9dV-q4`vW0|fgFlOD#L|j{*jp132Zw3I z(TRw-Zzmx;TxJn>_bFt@j%j4)&KbnRgM|3{Od)>0(}=$x5ee`oA%VfuNLa`;vL}>? z;KHYn@Q7(7B60>f5KTa04oo4jzz&X!ok8N`h)CSQNhCgT3Q0ILjT}yzMvf#Ckt0V4 z$kC%y;8L$?P9s;Z5RhwECy~NyQ^@tgX{6}-3{rGs0x7;Vh1|S7jod1kLGG4KAot1% z$o;#MNX5M=LRM$)+HT4rn?IQwG_jnR{_Jn{ue?Er1crlK&G*2Qg zTc(g#FQ<`Lug8(sZzhm8ZwbiT)=8xG-4yb!eH?k;NkFf_8T>Yid>tA?z73Bf!y^P_1V2e$3*g5`kE6;Y19|cq_!@xB| zKe&h6wp0fLFAz6!Di+I3<|HhnzXVYU^NWa}!ZPgm4q_6~b=k%FJvRvS zVP5#`Vj}}NeZqVrBB(k20m|x3B6{v2I9!PE&-~)w`-0LLH0A&y1S=ZsyG>Hi;kzKL z|CyilJFjp!8#*#nD%dq50xQ0Wn-0tDv(z+B_h){ZZQo%yKZqqgmy8G#E0z;T4Iqw^ z--bdi0LlaIlb=v2R&gyyKQCr1Lxd|c%+Ew=+mjrHAS{+A0OSq{*kL5K&J)rSyb?>} zxr>~Ee*02QxZo8_dEx)`+XEf7#2^C9pc}y>g{2Kz%1>uY27v$Mf8?iO7UZUMqXRiv z6N?R7%KwwuW=jMxuGnDdDfXkR0Xe?`78~(B|Bv3^$%Lill+bsDf(`2X{w$GhNrMgA zz0{*ZOPv$!qQkw}&hI;8>}V@c$lx}Wxz53wetPh^?lf5 zv0Sh@ke|l=`_N|4R1;=iLVXEWm>&9r0A?>3H^Xv9gqZ=xaZ2g0qBMgHOnJ8G)stvH{2e^~bb^ zl0Sl;!PL=o^ID!2I|7&b)`(I+mOR7YwlgrS;r@|5BEs5YNlMAn38>G98`cdUWmtWX z&T30j)@Au4!ZgX<%W4Oc!Skat)`o@d&|0A$9PtDDrDCB9!^Uq_cV?p2Pi!)=H zowsW)uN}UJ%9E86ob}+N3X3!FDv+f_X{YY**&_f-AlzB?2ue*-TL&uyEaWrBmJ^IJq7l7$ZOPW z!jCm7Wqk_QroXI9{~K%4|F_noqZ7cJ^PlHG9Qbc?Amrz>A!MzCX9#}?$4}7DH|LO5 z^cYt2pg?CaMt)tpp9xEElFk7_7!3V-HF0icZo7aT>we9^Vi@EhA*^BTE{p+>@Q$EB zRR*e`S(rqvH?GnR2nq@^#KH`c;7yGN?9VPeysXUh7>ou02JPa9=~$hh054I-l}pKn zIy$hF3``Hwg2_zlRfIWM*DodWZ3~ixg~S6vvY)k(n1+R`?^*!hbn}Hd!~z2ZVLE?+ z`_}cm%+lm)tQY`9H2|jT2kqhj5qf@M7T64%JIoL$4qiFjJwig5T!MBmGw^S+F(IRl z!5EM$ForRmkPw8^!&+I%&Mzp)9##pSwd8b9Sf{9aNC>MS1I7q~cCwO_F>E`@8P;K$ zR;}k_0{4PqFnSQOge9PETTqawDuh+?+_padpF9Hg&+tPiwfPDU+^srym$q>vE?}Kz;3@aqYgf;PFzzF#V1vxG?$-RqQfdvgcx16~e2E$+< z5<<;j`MoyGngB5jW@8}C zzyQ$l7r|he`PZ)pat0nbknY2cVKITpbXW;1GfmNTmhOH*ZcBY621s*e;%0%#;4xPO z91{gy926u&E-w%euw75fU@0{uB-nWs0IR}u8!{n0I;)vgY$?ew1QN)g12e3}GV;lZ zVlmv7%aeCIOJFg~hPFmZDg9cjSE97 zt}MDN`Ttw{4u5Z_Q2gi1edoXX&GmIB{^C0~Gadg&{&VO%|J`rC+$N#;%cJ(r{`8kG z^OHlr_+R|t%WRG1e(-wMI#yidH}D^WmDZ}2GK{nen!-yUb{=Km2S-?Rm3RO^Rf-Bxw%j7fAu31Drf+4X zB8Ol^SF>;#S{l$JGFB`a>(;7^f<3&AmX_iOk18jvz&1-+z!`CK!}V*Vd1Voft(Iz3 zRJ5yjXlV3IIjj&`eeHE3n~ZhAS+kAiJTm-3d>BN`($bU#K@`;GtQ0H+!8b@ImfHkq zR`Aempjx$6g$kioR2CD`H)ZFrvcjsU@vK&q0K2SaMr0Zkm}u24H)9YMMI|d%NWp5_ zmAdNul51#|$g#4bT_w+rRZu2J|7Z6tMgEsW0HrQ0oDuKqo3JS=A|%?|&s@pOoB|)s z5xN1a=iR%Bp5)}o9s>h#=e{thd;NOiV_VyqqCz{8XNH-XNg2${M5+HN3ZQ%{DUn=PuO`-Dg!=o<=sVqzo|(oW$6C4BghK<*b7 z7E%op6UqMnDGkHJD65OhOv>7|#HpyLX%ym2X=`X`0*#BCLcP7G(Nm|U(7HMT`uX$3 zk32xeP+i@bzu>-{hO=jX@`F>!a~G>(^Y?eSodELI6gkk<>@(n zTuzR-sHjLJ%L454SFZ@@xpR}KhsQJu+lMep+rNi!%)-8*;QV{2tV~2pOaDqkTiXvB zrkI&$W5Br%)_;NOUy>l-)6*x9tEh>(Vu7;r({KX{i}aH<>2@$AN~D*m8suxfO;n;=FemNCmkd-I(q7d+`&4aoDL37pf_($qMJ4mQ7I|X zl%?fNEWnNW-;n^yd4h2|1?z-5q@ZB(k7E$FZ*D$A){DR6y*yrDPe394Kk@ywFQ9y> zs1VV6_XuQJI&oqO4GWt_t*w{z6%1dzAfRn+1pJpTV^04H|B{jkb#UgUrJ{mB*4dDM zk&#fx{MsfZ{!j47<0nvGUrHS$bj1o1Sq1?=QK%EnpPxi)YYAlh*Q_D^WxPQB1!;mj z86F;gG&o3rR?{CIlmY0-yx7>EGX3@I1iEe8-|G-4+dVyhm0b$|;n?o)pFpABg)|&K zJVluqDa574{Jy-`~>-%WvLH1Y__gZ~l&kix($R9-hC}1$l7f$dYXc z=E<=K561MD@JBH~cCut;iDW)5uNUebir$1cLw)MwGflP)fE|SP_D-NCCVxLZmeUP! zx^(GR{w!~c@($~SGPk@eb-|e}4+#PD%v7MaY}<^eOV31Z_!}7s@Q`ujO_B{toTT zKiQanY8$R^Aa8!JO4H z9S&_LDAQ0c|C(>9AE8V_-SMaPPM@A4mjmOr2k6qj#UJtl&L@AW zV>t|bhls+l`8ys^=Y#bRx_$c$+5Z6TLeSr6K)}D(xo|9AzWnF5uUwh@NBF~j{3r81 zut&)A1Z)%ZDGK#LXy`PVb~v`6U9g;9$iLrp#qYGkI9&JtX{_JBPayXt%`?Y(Q-VX?6QyOtJ_Y*WIrur9dPgKJheZ$bMIDITzw!>) ze}5~lztaNy6Y8A5!_ zrKV1i=jG*c27K2j>^p#e2lT%e7NQt2F=7_X1LwoPTc<*Q{~cam&-onE$|(I{fBWk3hyZ)7zYf(!o)m?1046u z{Xi5tpzeh_mV)O}NFvWA(AI|g6L38Y{c3P8;NSTqpgjuLKa~2HhftQ_c=(AwiR`Z* z7#Keb zJuBdQnj*^~7>9GQvD07==D)U&1ow|14Wpyui*Ww_laB=IVrUEh33mvCwzj_hzv=@L zd4B}1@xb0D*|vrDBeXlA4F>jxA^(m8KO6ki`oH}ApJvV`G>SV68XlW0MiqY!D zYAE&8^q?fgiy#C9V_~Bh1rOpyyjTN%At-q9i%m!Zib$a*D1P7vindB^sH@S7^dPts zR`C?U?Cj2tp}2j1vw5@sOlO0&7P_#R+0D%V^Zj_<=Y4m`BWVu~YYs(XA>)OrGVvzz z3AN%I<^Tq8Wel!i>FWfhyQ8rD?UklbUvToqCI|$EX92= zcnZERNspNq`p+IHPaolN>zpQvbel^)QeTeZ_ z+bDlZ&Oot4de^SvQ{jX__VO)u>B?S%(VARZ_yo&D|5q2OF| zbLrr`d10%3(!Z{s;pgo<_k`!nM9)JR(nBctd`CZD;i#dGKWAp&*mG8ztIu7DevM$y zm(fwTtAVlSx7hDrbllJPJYQk#$l?F=+RtE|@!jFGGyWkyYhDxP`$csfqUXhx%3>2kKc!XCkDb+ zpqu!2_;@%?Fq~}pu(*pp#ev^zrKV2SN3H(}FMh3De~<8Bh#4oCuX-VoU{+;Rq+J)ggcrbW)@G*D>{}}f()KMhmm8p?n-1a73QVjG& z>!AIp{Zg!u(%e1b9k32L0dNCv=56iS5uBb%{T)Zafm%+JG2>tGGs~8}`J=tPxHf47 zx!miU-#4PyPc#KtxuLchr21GXK8=eIDfOld)$d4kk_(abe`8AiDSnIHEU2dA5 z!*a@Ewo2Y%VoZUYv7a_~j>J>!5&S3e&l0xw)zr)2IL0 zCjAa+pY@7kAKD;SfLv#@l~~U(9x*MPu{$n1C-#FswlT1e$fMfH%U|kog1pLgbLWPA za01-Np5pu6dyoV4nzba~Uy-@057x676Z2`zhjp{IIFds^ccfE4QoA%`M$jZaaoB2| z(4FPWquQWo&hV*l23M~ZqTGPnmYoxKoj;$P6A>1ez||lt$d}^b=b6mwZ5R)<& zIBT~J&WRhj&iacV*#oYL-^XV#D={;86ka2aGID!~E-VU-?s}6^; zpm#36M&6U07F-YO$q~JPhhR+$~itQxAC^T#g{-(a)%?5X$! zcxu*@+B|%ewaHxM&&2PHW?#J;iEORAo_qHu?>M3tJ>0hJ92vChIHG4WXO3oN4>QP{#j0>; za4W0{eZl3MeWxvQ{IzN|7_TeK);CA|kLy2?CE@PO-MfW;d=7CwV*=M;qb(Qjw!yja z?CxCLb7Uue51+v=>=XP}cXu(;@fR=re%ZPXIL3I*E!WiISZdjO#=%_N^`dX=HT}a8 z;~SAta*bNAj-^Y3CS5;_4?{O?F4URA?Iq0xoQ0pTYuzLMk9-Y215S^+d)5@4ww%1` zKFMhg>!E&4@`H7A=7fFNR$^>x3wf{9VNdkKj0e8Nd^Ojzuf%`Uz~JMNZFm~D9)oe% zT;N7tz8vW@jI4T*wpp{nklG^pwK0%SN#e+8hxYKV>=SDT2aRn&*QnjGHf((01MUN( zs3u>&-XE_S-LWG#ZRX7I6!xE-gWb!1Y};1JQL=|%GPnoqH}eFK)1J-Cj*QLP;0UJz zC(QrR?JHOOo?I?Bfoop0sMt7ves~`)c3{Ad#sO!C-k`he4SI);(Iz@l%O9ajuC8Hw zkvnQ+)c?=2n~8Wlo%U0=Z~Gp)iOn?m$3IxV?!3T+E?;BwM|bI;H#sHj3tWio`7n!J~H`ER+dzCLIYp6}4S`-KHFvS-@-L zcK;oQR+{D9Qh);m|a!@zWHc ziK%dTmoE7wa1=Hk`Quu!CitHGxYdk&$z`+4`NG*!OXVCF#^BIz-NHFiAB*9;wSOKgWcT)WHsX3Ev~^YgSXIc z{1^Mdy0VtoYwC{hp=;Izo^S=6Wn=@;b>k+$h2+DCOX2S=Mgn&;AI7s`L*R*n7{sPx z6S2==9&F0)-BqkjUsj*WSmCW%r;{g(gR54By~qap&0d+!B~~S#VBNr1tPeIByo0YK zUcGXq*t=js*sA%Juo2iU=1m)53G6Dez*ra`7>%(YXTmxq?Q3g$d$~?FxQBb?qoTIi zd+x;#8Ghv+{4M?woT0cZEnU!)XQxa#c{1N{=8S&{98KJA@e)3t^}v@QOSFmn9z9w( z*V6KOf(~f>4SV+%d&GB@zy_>2ScrHAd(56|{w3j!o@>|g4fGp-fqS&ytVgeMLHeC! i;0b4Y8r$H73&mc|vo&tNhTwkTd;fto;#%(E-oF46Bn8<3 literal 0 HcmV?d00001 diff --git a/launch.cmd b/launch.cmd deleted file mode 100644 index 520f2e1..0000000 --- a/launch.cmd +++ /dev/null @@ -1,44 +0,0 @@ -@echo off -:: Launch -:: ------ -:: -:: Author: Henrik Noerfjand Stengaard -:: Date: 2017-09-10 -:: -:: A Windows batch script to launch HstWB Installer. - -:: variables -set TASK=%1 -set SETTINGSDIR=%LOCALAPPDATA%\HstWB Installer - -:: run first time script and goto setup, if it's first time hstwb installer is used -powershell -ExecutionPolicy Bypass -File first-time.ps1 -settingsDir "%SETTINGSDIR%" -IF %ERRORLEVEL% == 1 GOTO setup - -:: goto task -IF "%TASK%" == "settings" GOTO settings -IF "%TASK%" == "assigns" GOTO assigns -IF "%TASK%" == "setup" GOTO setup -IF "%TASK%" == "run" GOTO run -GOTO end - -:: edit settings -:settings -notepad "%SETTINGSDIR%\hstwb-installer-settings.ini" -GOTO END - -:: edit assigns -:assigns -notepad "%SETTINGSDIR%\hstwb-installer-assigns.ini" -GOTO END - -:: run hstwb installer setup script -:setup -powershell -ExecutionPolicy Bypass -File setup.ps1 -settingsDir "%SETTINGSDIR%" -GOTO END - -:: run hstwb installer run script -:run -powershell -ExecutionPolicy Bypass -File run.ps1 -settingsDir "%SETTINGSDIR%" - -:end \ No newline at end of file diff --git a/launcher.cmd b/launcher.cmd new file mode 100644 index 0000000..e92d56a --- /dev/null +++ b/launcher.cmd @@ -0,0 +1 @@ +powershell -ExecutionPolicy Bypass -File launcher.ps1 diff --git a/launcher.ps1 b/launcher.ps1 new file mode 100644 index 0000000..10a6ed1 --- /dev/null +++ b/launcher.ps1 @@ -0,0 +1,270 @@ +# Launcher +# -------- +# +# Author: Henrik Noerfjand Stengaard +# Date: 2017-09-18 +# +# A powershell script to launch HstWB Installer and ensure HstWB Installer for first time use. + + +Param( + [Parameter(Mandatory=$false)] + [string]$settingsDir +) + + +Add-Type -AssemblyName System.Windows.Forms +Add-Type -AssemblyName System.Drawing + +Import-Module (Resolve-Path('modules\version.psm1')) -Force + + +function MessageDialog($title, $message) +{ + $buttons = [System.Windows.Forms.MessageBoxButtons]::OK + $icon = [System.Windows.Forms.MessageBoxIcon]::Information + [void][System.Windows.Forms.MessageBox]::Show($message, $title, $buttons, $icon) +} + +# confirm dialog +function ConfirmDialog($title, $message) +{ + $buttons = [System.Windows.Forms.MessageBoxButtons]::YesNo + $icon = [System.Windows.Forms.MessageBoxIcon]::Question + $result = [System.Windows.Forms.MessageBox]::Show($message, $title, $buttons, $icon) + + if($result -eq 'Yes') + { + return $true + } + + return $false +} + +function Run($runFile, $settingsDir) +{ + try + { + & $runFile -settingsDir $settingsDir + } + catch + { + $errorFormatingString = "{0} : {1}`n{2}`n" + + " + CategoryInfo : {3}`n" + + " + FullyQualifiedErrorId : {4}`n" + + $errorFields = $_.InvocationInfo.MyCommand.Name, + $_.ErrorDetails.Message, + $_.InvocationInfo.PositionMessage, + $_.CategoryInfo.ToString(), + $_.FullyQualifiedErrorId + + $message = $errorFormatingString -f $errorFields + $logFile = Join-Path $settingsDir -ChildPath "hstwb_installer.log" + Add-Content $logFile ("{0} | ERROR | {1}" -f (Get-Date -Format s), $message) -Encoding UTF8 + Write-Host "" + Write-Error "HstWB Installer Run Failed: $message" + Write-Host "" + Write-Host "Press enter to continue" + Read-Host + } + Clear-Host +} + +function Setup($setupFile, $settingsDir) +{ + try + { + & $setupFile -settingsDir $settingsDir + } + catch + { + $errorFormatingString = "{0} : {1}`n{2}`n" + + " + CategoryInfo : {3}`n" + + " + FullyQualifiedErrorId : {4}`n" + + $errorFields = $_.InvocationInfo.MyCommand.Name, + $_.ErrorDetails.Message, + $_.InvocationInfo.PositionMessage, + $_.CategoryInfo.ToString(), + $_.FullyQualifiedErrorId + + $message = $errorFormatingString -f $errorFields + $logFile = Join-Path $settingsDir -ChildPath "hstwb_installer.log" + Add-Content $logFile ("{0} | ERROR | {1}" -f (Get-Date -Format s), $message) -Encoding UTF8 + Write-Host "" + Write-Error "HstWB Installer Setup Failed: $message" + Write-Host "" + Write-Host "Press enter to continue" + Read-Host + } + Clear-Host +} + +function Settings($settingsFile) +{ + Start-Process "Notepad.exe" "$settingsFile" -Wait +} + +function Assigns($assignsFile) +{ + Start-Process "Notepad.exe" "$assignsFile" -Wait +} + +function GuiMenu($title, $options) +{ + $hash = [hashtable]::Synchronized(@{}) + $hash.option = $null + + $pfc = New-Object System.Drawing.Text.PrivateFontCollection + $pfc.AddFontFile($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('fonts\TopazPlus_a1200_v1.0.ttf')) + + $buttonFont = New-Object System.Drawing.Font($pfc.Families[0],14) + + $blueColor = [System.Drawing.Color]::FromArgb(0, 85, 170) + + $width = 300; + + $form = New-Object System.Windows.Forms.Form + $form.StartPosition = "CenterScreen" + $form.FormBorderStyle = 'None' + $form.MinimizeBox = $False + $form.MaximizeBox = $False + $form.WindowState = "Normal" + $form.SizeGripStyle = "Hide" + $form.Icon = New-Object System.Drawing.Icon ($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('hstwb_installer.ico')) + $form.ClientSize = New-Object System.Drawing.Size ($width, (100 + ($options.Count * 70))) + $form.BackColor = $blueColor + + $captionLabel = New-Object System.Windows.Forms.Label + $captionLabel.AutoSize = $false + $captionLabel.TextAlign = 'MiddleCenter' + $captionLabel.Size = New-Object System.Drawing.Size ($width, 30) + $captionLabel.Location = New-Object System.Drawing.Point(0, 0) + $captionLabel.Text = "HstWB Installer v{0}" -f (HstwbInstallerVersion) + $captionLabel.Font = $buttonFont + $captionLabel.ForeColor = $blueColor + $captionLabel.BackColor = "White" + $captionLabel.Anchor = "Left", "Top", "Right" + $form.Controls.Add($captionLabel) + + $titleLabel = New-Object System.Windows.Forms.Label + $titleLabel.AutoSize = $false + $titleLabel.TextAlign = 'MiddleCenter' + $titleLabel.Location = New-Object System.Drawing.Point(0, 40) + $titleLabel.Text = $title + $titleLabel.Size = New-Object System.Drawing.Size ($width, 50) + $titleLabel.Font = $buttonFont + $titleLabel.ForeColor = "White" + $titleLabel.Anchor = "Left", "Top", "Right" + $form.Controls.Add($titleLabel) + + $positionY = 100 + + foreach ($option in $options) + { + $button = New-Object System.Windows.Forms.Button + $button.Location = New-Object System.Drawing.Point(20, $positionY) + $button.Text = $option + $button.Size = New-Object System.Drawing.Size (($width - 40), 50) + $button.Font = $buttonFont + $button.ForeColor = $blueColor + $button.BackColor = "White" + $button.Anchor = "Left", "Top", "Right" + + $button.Add_Click({ + $form.Close() + $hash.option = $option + }.GetNewClosure()) + $button.Add_GotFocus({ + $button.BackColor = [System.Drawing.Color]::FromArgb(210, 210, 210); + }.GetNewClosure()) + $button.Add_LostFocus({ + $button.BackColor = "White"; + }.GetNewClosure()) + + $form.Controls.Add($button) + + $positionY += 70 + } + + [void]$form.ShowDialog() + + return $hash.option +} + +function LauncherMenu($hstwb) +{ + do + { + $option = GuiMenu "Launcher" @('Setup', 'Advanced', 'Extra', 'Help', 'Exit') + switch ($option) + { + "Setup" { Setup $hstwb.Paths.SetupFile $hstwb.Paths.SettingsDir } + "Advanced" { AdvancedMenu $hstwb } + "Extra" { ExtraMenu $hstwb } + "Help" { HelpMenu $hstwb } + } + } while ($option -ne $null -and $option -ne 'Exit') +} + +function AdvancedMenu($hstwb) +{ + do + { + $option = GuiMenu "Advanced" @('Run', 'Settings', 'Assigns', 'Back') + switch ($option) + { + "Run" { Run $hstwb.Paths.RunFile $hstwb.Paths.SettingsDir } + "Settings" { Settings $hstwb.Paths.SettingsFile } + "Assigns" { Assigns $hstwb.Paths.AssignsFile } + } + } while ($option -ne $null -and $option -ne 'Back') +} + +function ExtraMenu($hstwb) +{ + do + { + $option = GuiMenu "Extra" @('Support Files', 'Back') + } while ($option -ne $null -and $option -ne 'Back') +} + +function HelpMenu($hstwb) +{ + do + { + $option = GuiMenu "Help" @('Readme', 'Website', 'Source Code', 'Report Issue', 'Back') + } while ($option -ne $null -and $option -ne 'Back') +} + +if (!$settingsDir) +{ + $settingsDir = Join-Path $env:LOCALAPPDATA -ChildPath 'HstWB Installer' +} + +$runFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('run.ps1') +$setupFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('setup.ps1') +$settingsFile = Join-Path $settingsDir -ChildPath 'hstwb-installer-settings.ini' +$assignsFile = Join-Path $settingsDir -ChildPath 'hstwb-installer-assigns.ini' + +$runSetupFirstTime = $false + +if (!(Test-Path $settingsFile)) +{ + $runSetupFirstTime = $true + MessageDialog "First time use" ("It appears this is the first time you're using HstWB Installer,{1}since settings file '{0}' doesn't exist.{1}{1}HstWB Installer will now start setup to{1}create a default settings file?" -f $settingsFile, [Environment]::NewLine) + Setup $setupFile $settingsDir +} + +$hstwb = @{ + 'Paths' = @{ + 'SettingsDir' = $settingsDir; + 'SetupFile' = $setupFile; + 'RunFile' = $runFile; + 'SettingsFile' = $settingsFile; + 'AssignsFile' = $assignsFile; + }; +} + +LauncherMenu $hstwb \ No newline at end of file