From e4c78c77be8bfa78268d2155a6f46bf43490c4f9 Mon Sep 17 00:00:00 2001 From: Sam Verschueren Date: Thu, 26 Sep 2019 22:32:25 +0200 Subject: [PATCH] Make expectType assertion strict --- libraries/typescript/lib/typescript.d.ts | 4 + libraries/typescript/lib/typescript.js | 1 + media/screenshot.png | Bin 0 -> 70276 bytes media/strict-assert.png | Bin 0 -> 56711 bytes package.json | 4 +- readme.md | 18 +- screenshot.png | Bin 92115 -> 0 bytes source/lib/compiler.ts | 128 ++++++++-- .../fixtures/missing-import/index.test-d.ts | 6 +- .../fixtures/strict-types/loose/index.d.ts | 7 + .../test/fixtures/strict-types/loose/index.js | 3 + .../strict-types/loose/index.test-d.ts | 30 +++ .../fixtures/strict-types/loose/package.json | 6 + .../fixtures/strict-types/strict/index.d.ts | 7 + .../fixtures/strict-types/strict/index.js | 3 + .../strict-types/strict/index.test-d.ts | 26 ++ .../fixtures/strict-types/strict/package.json | 6 + source/test/test.ts | 222 +++++++++--------- 18 files changed, 326 insertions(+), 145 deletions(-) create mode 100644 media/screenshot.png create mode 100644 media/strict-assert.png delete mode 100644 screenshot.png create mode 100644 source/test/fixtures/strict-types/loose/index.d.ts create mode 100644 source/test/fixtures/strict-types/loose/index.js create mode 100644 source/test/fixtures/strict-types/loose/index.test-d.ts create mode 100644 source/test/fixtures/strict-types/loose/package.json create mode 100644 source/test/fixtures/strict-types/strict/index.d.ts create mode 100644 source/test/fixtures/strict-types/strict/index.js create mode 100644 source/test/fixtures/strict-types/strict/index.test-d.ts create mode 100644 source/test/fixtures/strict-types/strict/package.json diff --git a/libraries/typescript/lib/typescript.d.ts b/libraries/typescript/lib/typescript.d.ts index 811f3b35..0a900af9 100644 --- a/libraries/typescript/lib/typescript.d.ts +++ b/libraries/typescript/lib/typescript.d.ts @@ -1995,6 +1995,10 @@ declare namespace ts { getAugmentedPropertiesOfType(type: Type): Symbol[]; getRootSymbols(symbol: Symbol): ReadonlyArray; getContextualType(node: Expression): Type | undefined; + /** + * Checks if type `a` is assignable to type `b`. + */ + isAssignableTo(a: Type, b: Type): boolean; /** * returns unknownSignature in the case of an error. * returns undefined if the node is not valid. diff --git a/libraries/typescript/lib/typescript.js b/libraries/typescript/lib/typescript.js index 4dbf0377..fc75c60f 100644 --- a/libraries/typescript/lib/typescript.js +++ b/libraries/typescript/lib/typescript.js @@ -32344,6 +32344,7 @@ var ts; var parsed = ts.getParseTreeNode(node, ts.isFunctionLike); return parsed ? isImplementationOfOverload(parsed) : undefined; }, + isAssignableTo: isTypeAssignableTo, getImmediateAliasedSymbol: getImmediateAliasedSymbol, getAliasedSymbol: resolveAlias, getEmitResolver: getEmitResolver, diff --git a/media/screenshot.png b/media/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fe59e7b0c5eb7c7cb0d9709267a6a9d83baaaf77 GIT binary patch literal 70276 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ℑS=Y&l7Vw?OXh(h zttS4^s?VbiqfOa<*feW=_OA$^28_Kg@17c;L%WdPu}IL9K2;-+VH?6zh4-=YDD*XF zRE8mfJn^0F$Aa96QJM|!K1w;pAn&`URbsk{0FecNg;T5f?do<cic7jix` z;^Gil%aB7D*XNUvRkI|+lTNnk^|07$_hH(>UmJ|H<#rx;fblBPGF~`G1QI3jDu51` zA$NG*YCs{|CRTB%G6HKKJMJ|3CG0%8bu#_uCVe{8;50yyP`9Duv7 z1tvBXIJ8+zFG&KWCyc^%A<(f`m{&Zw_K0y$<|A0goqOi>m(H!4e3M4bwi0i2+|^3d zUVriCtdl*Grs^#ZOj>CX(CJeS?ncVw2%61z1*)!OS-Q1VNA+6M-*bZYYMhW)ffKF@ zbd#od=H;t|1briH8t8VxBxc*6MQrwe2CV2#I}o*y^(YZg=IlWcp}sRSzFH@%`QhH7 z?0Rk|xHupiou5%r`)W$^2jNWbZM|hP;<~=8 zkSsr}<(uW<6p>`~G}qZT=0{aIdS@Lh1GNGox3o%630{FYg~DiBLn!f#C@I4Wygl2> zgzt@iauMR0PLC)y$dp4ZNJ`@MRAyt}JW^2nJ`jq15!v7CfBbAtaL6f?87Nk1B_Ob| zG6)xT>?ED6)GZBN@a&mn2TF;~W^0c`f`W#=FY60`7Z?Ec7i6hr-%DWYIB91no@ok3 zha#E=Zs98LQw=Sy!Yh|b&Z59NLnL?h7k`-ZYcm9J&8!q~i^SjNb!MoXdF?n@Z`X4| zQgU&2w{XhwV5|-+Lw4m^R9xC3X_x(wpn4o45v;uOCBeQ@u9|Y?TjmA%Q3crqytr3{ z$Z_)L29Hh6=0&{hfPNaUlUf&ho_+8vzp3`*=N))}%=}`rn)cwuUQ`RwD%i}Vghl@0yKlUIN_ zS;2HNnQzi0;yE5%WBGlZTVi!X}#&aFTHF-yOB8H0iyh%T$8tJ#)P%$x6^ zAyB$q_bp74421sE;K_bb!J{=kGJH8B3XGlWB5kDtU5Zyv7T$7c^FlRmqn$IN!;p}o zX2v9M33}lQ(R#6#Pu{B;qSH>gxa-TAa193#<3r* z?hzLPF4^(PlAeB}j}(Vd>sQ-|B_erU;R2Qp?)xv+3ne8#Ra8_!V5oKP#)G>X z@O=#eieHt76`JfBS62BQWEppV+#cu^Z6>j+@6j>y7Su>RSNGekfqR_IE1ZrGaj)hA zho+f8mAFm(LN2g`IB`NFNAh&AJ8K-x7rT0ejn3n21^rXMYnrNSquPudrXn^E9BW3X z#S7){MBU|@k!5A1c_mIl$4xD_sL`N$*QWVtGwi_5h)PJuV`JQb!(x~m1XRleiO4^; zL*~Yr_34c_NkXoEGOd5>_>Ah-bRRzPBW;`kIFtmq9QDU{oK5%L_A9U0X|wkg{N}kI zAAi;wTCMbWR8|j^a_@{^=oz#}z9}?qlsG;f7~4J{yh2laYDgD!>o8M6Xja2?+Ko30 zT(8?RQ)nI|SJ z7|K7ID&ZsTt=fcm0cZNH4VN#gZe-nNa*(nWZ>75)bXt&Cm4xxm9R0M}mtFy#?(vLn z8k+^LV0Um#yo6tEY=2tRd^HI4Ft99*{?8fyb435_#EiNj$#}mjE!(F1ad~=UWEvCj zCfVKh4&+Q&07=AXsMq)inNK_n^*@9M9{;l$@Dn~JaMG~x@Ooumkx_wINmhfQ{0m-|q4URWq4R0Xf zlJh0yElDz;0 zkev8LVg$%RoBsBs-ScMXJ8uKfAYB;sdt6j)^bB$Si(^FZ=QU?{AL-}9LIM6DP)73O zrhjt!uY|q+PY@Ys!C+f zsP12YLdZ|3Nfm|Aki@BVQD0Lq=(_n=Q7cj6&kVB#MdYcCK;CizqsOHp zH{-Y)nn88}f{~vQjDy3Z_FeH;wnIT8{~$6;3bN8^XxIiSO8f@|fip_jHq~)(f}0f$ zv60Ol;14zIPgpNWeiHGWnb;yuV^UByv(o@rMY&M!^{+Gh8yjNy?~uIzsL{PY$lxSp z3)+2Nt9r-vu!`KKPQwGB`+FQ@pb!S9Co+gyY5ID_eL6HLhyT@z+vuO}tEM99tOiso zUmf+Y*&IABSNasZ>$==Hkz!V?`1HLhTKLcIUW4$io2(W-BLraROdIqdZv%r6 zI=^4pj33oye;Ef5#D^)~1k%MO-Tt=;7|za9-By4ilERVc>gFnk`h_1a^R&=(JvS^r z@HlHlw_~zigB;VlHPi`KdpJpPpC@Z8DX5A_E&HXVWQXTDQYZMU-wEI-0DG;Fc(mCR z>uG@U%Fe;_0CW&Sj;cmMpeM^J2I ze8MH6&q8d0IYys*3n&j*n*~Z?`d=XyL0fpF>)PNjqJyL^L~FJkf;Cj2k}k(_yqaJO8|YBf{#Q)( zKSvAv%lj=gH9BnU2ga<#uS|X8_Wu;-V)#D@kpbM1YfB*LX?x3#l zZr!@NdYEYxmBlIXMpl1yFV;)VXB;af zh**l*QeBzR?+H^{R-Y2%J!Vw=V8%QZxw~p+60(wB58g=tzcM;XyxV~W3-^p7c0>?k zlY2gK&UWyG%HkT{_b1xVlbw2nj~;z;y*yt{bbeJ{yDd?HiBB!&bqfg@^#*@QMP0lN z3hUpFy5al4H=)vE4Sflt4g}ADEaR<7b5b0acM<3?+`C91K3lfn@^cq-xT*hST0f|q-LBz zgy|JMZi zy}JMZo(ZJ1=Vc(1LSv;@{=g%{4tNdxJ$88U zwh5g+A58?-FP;5fmVJJRtd0%3JoSl%j-196W%PY;eSi$B%vPiOy%POJg{TvK*zqzL zsBzvI+8{GLp!4yMGiKC>$~NiU*aYOLM&_pE(AL%?xpHuq;TalIPaON+PkY-1BuvhY>ci{NT<5AF?Hz9)W+`h2d~;=MPfxqeAQ z2nLP}RRmDFQFlB+_-N9>O5gsIvRPcSiB1Ct1)96Og{t<*Fu4VG=ubBYxa~3`0?HMC z&T(RoixW4hcJVND&Ve^`YG zsZ$A0OU-`4a`opFk;6mWv{EM#O3?`_<;7>4t1tEqbJY{A)!XtQH(V)g!t140#j?FP zfGzBV%eWXh`4^5C3+q>KqD@bi8Ea0KWC^c6#4K~b!)a~9JNjNLoS9k5_-W+jJJ)9G?jGa zh2kM=h=^y63*=n)qoRfTMb_Ono?&T)aCcz_gi%0P+s~90GyxNfx-m^Anwzn#m;;)z zkp2ggir#TA1FUbg4E`*7^==SKSfoJp0B67Td3y?9f+IYk`f zogR47({0XK-SmO6QC&>ym&6|7zI-x3#=Aj*G@f#fuA)21CSpr&4J}<_=f4J zQLgAP#DbupQK1_*(eqApxQjx|V^;a1($dN~*BHtdEczPh9_6LPbI*Hq^vr%JPo@+u zYYWA=c)06GAq-KRHU%TYXN^rul^Uw0EY8@R-ry=+e^3 zw>gO?YHIhM2|?$&M#0ZF^@QsAMT(r|CmlWuZgv+n>*bxgk2MV+Yuq0hU4vrD*13#a z@+B;4ZZe}2TpfHYg;=^iU);&83TpuXYuwSsk~QSkM&@hsJJ$F`R%ZEodCl5KtD0_M z_v(<0l*hnEf(+{5E^eNHB%1RL3vOfabZX1^09VrEifrFB)L=V)IXPB9PeBC4mM?q4 z_d+xI-nB+|SbPM7IZJq5K0jXJb-q-^x_xOo4qRZUZtt;SbY=)YQLdH@%eUEa;{0*) zBP`4`kNt6S2W0SZymdT3+ei#~0EMi|MxVa({&s3nMWaU&h zcek#7$J8Y81x=&SHN4V~rt6k$+-NDNv_o@=FY=$s@QK=6%J2*m9nsd<%0KjT?u& z-x4@rZ;0NA`Lt#>@M34Q(mQfjj@Qz`VaH~?rSSb_Se*!bii}DK`qutuMZE>B|k zx)Xl*^oq_=m0Ykaa5Hz>`rAoY?BktCG)sEP%K9a>8dvxL{TqU*8q4lT=$`uX=Q;9@ zZS6U|<*)6neqs6F8E71?fM8NBu`Wm;fsYk2+0AbfCa|21+oQl*bS`y)v!8I{EZvQ< zI?*=7t@2c>(w*ysKCBnP220(LvQs5N-h%fjpf4mdOHM z0O;P1N@(YxlA$tmmWR*bCS!ZzvK!x}ZuOP>F2`5@z1NG`Y&TqVV~Oi21}z}NS_;SY z>>XR`F1_vTcWao++!jhDQ6wR6P3Pqr`RY6Tm(1_F<+{`pA;YAWuGWb-$W3ISPyaR% ze8cZz^tGr~j za^DqmyXrdWd{cVL`Kqxz=O{sGYod zx!PpNFz5Nfn^{CNB=Xmt>wOib@IFtXNRR_4oM8o@Ai^X6H2Jeum0Y6TqL}EKqD=bG z-r>?6pTptElWDje^K|XjO60ddt4sTXx#LvzPPv@hpjexVn|15e@CJw!cM?XOD;t>9 zvQr7)-4eF3j|`QscNy~aAcAQGdsx4!=CRVLOnZ%bc7`!m8om)e8`-~OEmG_3P-AcK zN;Vy^>4SNNAsmL&HP>RU^n-PJT@1nR0Q$G8_#6vBb)c`#?qV0(yemb|N=`){lt4K} z=1ZSGR3D!=^NRKKqPt~d$6G#E4qry4Vb39aE4=5@t>2%J+Kq05Z%oB=;n|v@ub#j- z*_NQq*R+itD|1fx&goIe?^x^?jwro%E&BKO#<6xz^47RnYm5}ZZWm82!)25I=w4@F z6dzBwoO88xo$I)Fs&>Z-W6vK&uQZEQ#O+|UtNb)-O7YtLyhM$m$&#N!i!gRQ;Iln?F5dEUL?1Y2?Nr$WC+%=g7f{X9jaf3k z8^zyL@@B^Bl4~dwkzaQ0trx&@NN*debMKu!ZVfC}Pu%R{b^pVpwR1G7sUzfa8&FIR zYCA)>bvk7M+@Rso&biaFSZHq@EyTKaWpbUBg-a*UqLT|pHK=oX1?Mb-iH4EgOvPvu0R~xBzDO#AU zt50t1l+7PB7pGffruN}GS=QvNYmv#V?LMwPY@KbKE$R++)yq8z6U4;3p}(wz;+=zr z1247GJl_mz;eO&DK{)SvknavLr6wCpC{oB6?fY_Cb=>Me@iX%BWmQ-rRgliosUaiV z_YN4WA}5>kCDDBrbv&fzN8JT%rh$sWCYFbdEs?5BkB*<}U2&%jZ&-H6(?-bDAGhZl z?F2U0rUu(y5OZ|3q}}@k2EQ>idy%gP_zyYoy7gTUQgecnf=62=DOm$5E|DZmZ>)|c zmgmU}C2qJ8QuD5YwRRE5rbhXf^XA0#BPv1Ct!a2tv7^~zq-GU7r{8q+%TGeCXdWrZ zFwp`*kggWx%6G)EOLL2&{+&n@? zmM?QtEc5)2i-(>g=&>hkoqqBP-Gd829$pG>pRI-5jtyeZ7jsSR3`RdN@15Wb`hHy({&-IOSxG>kM3c&Ob)ez z8#-Y6TGw$S1q-#_$T%`p>FsgCCvM_cSC-6#hR&*z_9?30fgD!t8CeuzK^;H1(*0{0+@Jd}wz@32g~Cd3OX^bhD4w+Ad&mi_|qFV z5%U0+@cgCuz5i{@{~PCc^8>{Jd?q5Lfj4h*4lLnG-r&vSt#&|xfK88^IRX96bUna+ h{{_hZ{{eC?IyUT=tYF@1bqn|-E2Z!>UqavK{{Tjs73}~3 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 63dc4289..f4913d93 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ "dist/index.js", "dist/index.d.ts", "dist/cli.js", - "dist/lib" + "dist/lib", + "libraries" ], "keywords": [ "typescript", @@ -54,6 +55,7 @@ "cpy-cli": "^2.0.0", "del-cli": "^1.1.0", "react": "^16.9.0", + "rxjs": "^6.5.3", "tslint": "^5.11.0", "tslint-xo": "^0.9.0", "typescript": "^3.6.3" diff --git a/readme.md b/readme.md index aab6fb8b..eeaf2846 100644 --- a/readme.md +++ b/readme.md @@ -59,7 +59,23 @@ export default concat; If we don't change the test file and we run the `tsd` command again, the test will fail. - + + +### Strict type assertions + +Type assertions are strict. This means that if you expect the type to be `string | number` but the argument is of type `string`, the tests will fail. + +```ts +import {expectType} from 'tsd'; +import concat from '.'; + +expectType(concat('foo', 'bar')); +expectType(concat('foo', 'bar')); +``` + +If we run `tsd`, we will notice that it reports an error because the `concat` method returns the type `string` and not `string | number`. + + ### Top-level `await` diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 64b2721dd59a2398acacc1e7bfea2adeee5d6194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92115 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 z z2}3ZhYPw2%daodb4-9q-Yzw}ih_6O1*G-9C#H*dwdDnDLdnKjO=>q>`qN1FH++z5} zu+MD)jx|tSf0+1er(mHpq_Z)cn*7B2TbP5mN(dNI(A+){I)VY{pAg8y82FsM{ z%WqQ!z)~AA<9#<-z{jX+QtFCA+}`J}UfreV{XMjp8y@ihC#~sgX)ig5 z+s#OA!n$v4rCBUD@`_c{27IvRFKi1YQ&z~AU18ogKvT~Byv1quBd;Y@5Sf)V9qQB> zeh6Uo>etG~NB!}EXPx=E_&$^iljhfVIu1tC?0Sv8D=#a}=h*PIA9?tDlX-*9%qKUV zPi@^}ZgWqQ@2-6EYq%@Y%^@4U*}lkBjo;uM1rBpP8{7S(d!>14%c;aOl>Vw`&O<=! zsu}@!mFS)Nd^2dc!EsaKz!;J;#<%nAhWpIB1lY6#7>I4B>QD1mdZI4|{&uTZ-tTYQ zjY6&)$^kyXC=skR2D^=-YUUP@1wvqbq7##oS1ZM5TY(0@WUK&I{tROTJU!sKaPzxH z(zgsf{qejn@nhP7u+*UjOVy638w9huuxb@f`ZGYg zC@=o7Y0UkdrMULp^`hp&5m7|`(N1;Cb@pg*ZE3!zBi{%4 z@du$nYclw+X3Nbk>3VNiCw0yKb-6;4b|uv7NnAj!z*o%Y&?P@lo>FjhVS~mx^F2O1 z!$k%gp8aI;)b^=K&l^xUw_h8L)CCw$Qo4PcS^Na2GQU1_=W&3qMH=`w>ZG2|{!_j>kUwpmX7&;c#3m6IU}z;vwm7e6XQH2w_eY{pjVRV60#p1t+Mg8MlA#)%noyK;%Q{54Uy$m3si4b96kkoWDZ%5yuY({A_R z&l~Lk3U1@H$}a(sioC@GyJ;xd0&h+G<Py%iWhfBC zO9s~e*qL|6&OOyFb>z-Xo*`0R!D}`xcZaiPA1bZ7?c#bb^tfEM|3FaZuB#@8uVL@S zUR6G2#ggo?jY+%OBzATI2ykm(zj$b^;@f;9w6Glg{Qj?O!WR4C>459fC zmmW%y#$c`E8kb0btAWJ8EY%+bRwGdR2)r~DaWkP&x(ogwqwA=sna)3 z4}rhvv!{)-jC%^KK?Ot$;os?6drur#Z_$`%(FYn&HyM5?rSqu&P^yp%eu7v^Lb{*5 zqm?>Jha}U{JKTK>=_FoQlU_XQ>yl8C5q~p#my_gjiME5et19uqLmk>Z=+InGk5t!9 zA0o+QVxy&!6y$|gn(n>PO^$)A|AI=jzD`;wF;3z^R?W)I2O(s0yQ!&u zYH_94qBXhRZ~+7B7m+C0b&af{Cezp0={FnyoiZ`X& zI7+Qc9r^`p0q}4PD`);tJ!=sHz3y6okwj=!8x#VBy8JGp1S`ISybVoq1Qz*%T?};E z^}@j)6o@LXHO0IAxHAR4el(+))zPA}qRI}}oBZaf8hd5_qktNVdO=%2d~rqKQYw#} zem$$;XK_wJ=tRs+p}xLmzL~B=q>{!xsI#avo`6BQ#O#ls3Sh#hfk=wTrIi`%YSz;; zO~&;bB1lxGwqw+PXGTUi42`t6Lf1$9F-Z^vpdXD3f3X|Rc*U=%x#Y;fpYuqND#x?D zyS>Lq+7u;S%mLL$jHP*$RRX!D~09XrOappw+W zp~OJ4B#5A-2CdofIgAd%u9E!N3YBk>>&=Uww+6DU&YW|)V(Pk{E*VfFlljFYhrNXD^m8J7IF zinyj<{K31k)J)Z3!cI#MmgbL%ZGeC$-x&==BR($&GGcG4?-4d61;eFZ4fsGBYI{W_n0${0seC_>$MkJD zm2`iMonr0=@{v-mDCZm*4#NvG@;Y`+ggyvGFA2zMm& z|0={;YdvNVU#W>BP+c+jjm8|smn=JsIJ!=>l1l<4_xmdfG~@GwUdto*k`w-?I0l}s zZIV=cQ;8M1A+itXl05_)-|MUaV;H@`_gSU^g4g3#J}?qV>c2^rJmJ-e_kGHDjB|)_ zh+#-vI7@FTO}cwp9lkdze4(A*HPaQmsIJUnlUl5G+5}hiA!=;#OMv&m6kq#jO@0cy zmwO*ZExmxUDfw;d_a_5usR;Megz9Bs;VT(5pL4iWw&%Xm-3Nz_B8ov-X{$-5y0h9o z28~1|8uxD@;cowsBF(4%Z7`Af#x4FkW#$Se-67b217Edr-hwK?rqFQb{$y29J$A3e z1V@+F1V* z7Ykdqn|aZBYw_QImp@JhoA>VA2IhBIG^GfJ9PO zG`Oxcq|yJlsf0`Glpx0nu>Z9Wvfx#2G{1@19ba;K*Ue*k&dj#Xw7_OH1tpAne_&Y}Y zL=Dd>%?nWZ($|oa2Aki!(#&3mUpdxXH!_+C?8khhz8YL_zddX!CWi6+SW_{punNrj zT({y~p(R!z9(|_L%6iY`W~LZmb>hZK2Y8@TuQNMzCVu{UCm9#LJrK3Z_n0z~An53Xa`s;_8fF=B1z zUHLwi5R=TdNg$6j+P=ASdX+%hQT-pOlO$ufcJdmtqmnGjuY3_TV^LWp0@QZCQ ze6~dS$c8S*&D0jmqsH@hk3fUeu9JHtCsz!$Z1InNSbtPjPxx>Fu4Q3^VQX>AL>+p% zutQhS)kt|Sf)+n1Zxq$dC^U6LphU=&5fHiMqSaw7bzjC#s1?3f<=MJ*C!0b zOcuu=C0N@g_nDYE`%@=mp8w9-2Sym5$++1vHox~90;brS4G~mRm6)a@(l0$;qS`&k0ZKN> z%k1>6*Blq{u(G0vt1z6E_*r!5 zZkA~i>`l=7O>-pI!t*>H%QzJ6UE;G&Aof9w-rxSt{Q6#eKYId&92Yde(|tkqSMv7M zp`Y110{VEBGA2PMr!)s*gnB~HWI#M>N?WqF2;^(ISbxv6oVqoUEjsa)6;zBv?xW5- zRZymBf|PWGjQ!o)S>4sqP0zc=7ChHRtbma_`5%316Il{OjQdeYlU zzmR7hYx{M0CRa4abkD|*+wUA`H2C4~dmN5iKP3MWcJ54&2qzsuCW&^+O=BREWRxt7 zAZAMmxJ%X&hh9CgP0@~h62cpZh$t3Akcsh`QkB;*II!{B+pp${~%Ijo{d!#wf1W7&Q3nD6y0c{lDLo+Kato#JkTg z2Q?~Fsy2H5kmyZ)l>qkeaAV8&+uyYs(UIOo69gwj@!|o98~a2@vj!*(L;^Ao&l%ke z$1+$6o~;|H!pshF0opT^@}hl;ZCWlccf{{rBAE_Q#=ZjxqpmvtEF3RLOolf@$nASC zDX&qYk|d*@E+iH(n;z_Vu{Q4WOc!HqoF~Ozhfh_mrLUmY|pY=4d$;FGd~o- z$z&`D%{9$y9@%cT19PZoLmu<2Vi>%AJu%_O1I}2L#SxzJRydMTO#LNi%IhIqDcu7? z2i>IWApL;tD)iA&EIM-m2#Ic$svyi#;#0n#ZbpdS^0Cj=1&+s=+Jg+So`OAvX{bL| zTYO_cU!m|>`yR%YVx5^R5?>bMG*h8SSL@zaj%XK?o}lk$v#%i8hpDQLIU(!q5&KiL zdfX>fb*T}pX5+KuMVqQ_<8PLO#ymYvwW{+P!Yg_!!rOFS#h zM}($<@x*{ccnuSbCSlj5^<(E>1QA~Net;-fp@1JAI-?kbdMM$X?4#N9Qz}%L-Nn#_ z_T}(|)O(zr`buR<)+miR^Ie9o!mES~Ltb=L3pqq{J=qHc%YXlGOC>Y3l#w2k!8{@J zNhz#&L1X2bZ=>I^zfMs2iGwM^7TY^?;+Y%=>UNPJ*CBDg#P~@wCc-4lew@Zdk&Z8h zKTfavuCFIZdrDgQ2&2%AJ|L%Y7P=eoJC z4JtW-4Yk3VsKsgcB!^1AeOQa=B9e;SOV1*MmZnN1qV&?Dp&OAS*+EE zfA@4`oysG4>2>;qz=xTVbzdbM*rR6zdcK~d(^)e+c$lDQvG-O`&gJ36of1MG(jW^; z&k9oNqONQVTFl<0P9Pc^_F4;1QEDF5>ZSjTs?DSFn?jCRj;XMgmD?R)PYWZBPm5mvWF~ zg6GzT%Z~M7tz#&Xds4@%p`yy5YZLDHV)nMqw@?$7Kdq*-B~{JzQlJdqevt3wFq7>- zRqaXg^M8@m{V~+DW4O%`?T_G5>H(=_KT}Bt4qeNf-oGR1AT+k0NMMUoJO=Fi!U>5N ziq$reAzmF-gkIhIJ2KOV2caSM)>K9Aff~PB!F1gopkBTM=Q% zkH;)v$Yvwz*Cs|nR4`Exfh1!3dEcui*CtRE+Oiv$%#eCEK*w_BF^cdPKXAzg-J#4T z?{WHgN4wnF+nG0m&wbpz{}WRcl&j`&GpD!R2v01D`1$?H{@zB@&VyhIcRQ z26yRJZ(>tRfo*$Yro~u}4>y#!Q0f{N<_=ILMlG%ZOnvmY5e!v{Xz&FHmYOP}u!T}R zY`QRoh2OOQl{|skTW%!j4|?MzL>W~#9QW^VYn>7EphyaUCN4v~z&xaz`^GPKgXr8R zEmL?qUj(d<=YGN!4i6H|h-1EY*S#Y(qHeM6bD@-kAb{fsfl>b$C;iB*K$HejVQG>W z?~vP6SO@E0*=#bPW1LS0Ja)(b)Y47hVzdADu@sb;eVhSlxfLGB?b$$Oy5Y3&Pu4~*S-1)?MD8$V8)Bwkjsc8 zST}PUd8mk5jp*iWUF_zV>e&aG(74PKm^SQt*I+WLFVR@~wB&sk>9Fj^SD^yWJkziC zdefJR3-14c;KlA*#j?bBoI;u4jAL+=BZlrrzItS9|9Wv#>h)#^PFZSh1_=;PUHsE| zpK9qj@*H=OpL0%Ky;V>i_8W{50X|M0+s+PD9g1F{ zNyw6Da7CN`l6-#H+(cTstvK!Bq7UOvcu1qawB?abl^0)sQUa38*=Vm#78lg34z(@q zqm9p53}7;G^u+~ci!uO|ru_1l{mKIq$5s7DGMlZ5jqS5=%Vp(yTnG=bQ zdbSUKYM1w71lIyu^U`4C?_cVofiqiz7|Xy$WdpsLBAE(mP6Z6El)`&arP{sX(bg_Au@; zI~LFVorRlBC+XYeRQ^umY>;>NBDcwy$LnVJ2XHb%7wq*&%E9@iMAhR3`CuS!jT5Lk zR8DEPZLy-#bV44{B7At1ojpI1EA)8f`s=Et7<5-QTxqd)V2l3b@w+_rqGV%VI35ie z4R2}u%k|U0I!hTT?;+G1$jX|Zsm(!9I;3~PR!XqsuWwL=X4|nQJu@Hyb^-e>q!L@iyI?@+>(3h;X3aAl&= z+ljXhO}Jf0XGiFiNYM~6X?WSBtt`=XQI3fJ=Kbguff6JPccmpHhK6{^{l`5j6=2s^aBwO>1B9mZ3-1WN-|E$P2x2ge=bo1=T#9} zGf4o4qiwz-1?MEu^@nHu;aZ#3^R~0>-6bi4%C`u5!~}E_`~j_=^neGa!w8q?wnzaL zJQVkoP>u*f9yeox_?5^&DsOfRZ@og6Rl(QUsW5ik`uFU_15dR;ocY7DJ=$knR)CPpcfBnI zD}4r8Y@?C9rQx*~0~yd{5@6mrZX;PFhFhPjHr!qCMg!T)#|^6f0% zP7F7nUCh7HTFh&{g_tJkIY9DFo~h@KNGKs3`PlE^fDXn+leCX2=Cd11I;+dMZ{;Ey zj6AKnAF(e#Xo=Y@gnAG3Ihj-q3>Npv8bhv&343!)&6)*Hpg4hBtyt-$-##~FuSYVH zL?^{=?Nf3WWK)=Rvn3irFQQuueB-5bp_Pc7l8k#l492D>?uW_Jgw8sw_C`7FhSH1z zl+zs}GE2qc*}1GDZpI65{1ut{Nw!eeiXPiHUOviejNw>l$OxNE`UkEbHhXO8+JHGJ z#)HO!H2-GCHfI}yGpacWw&{0zM+WoMb_OTUJ2C3hyxo}4n0WEgo!{ILB)V2;|~?FljO)@ z!429`((_M2W9KLJ8KIo*#+W4_DrInjl9xGi;dgx1$B0ZG?_Z%*EVk;;GpZ(w!8ru| zPL;sfxEjHUM+$NTNvU;Eb4J&=^^>>M2Dz(2^gb|4gpW0L<;)v;u0vW~LZW>-y|@Yq zOz}Ow*9vIWXh}t|%Ho+h@@4Oh#Rn-JQF@$hRPoXso5u&mmzbYp)~de^os4eoZ6o_e>NWpx^IC(Mvq zl~&BhGgIbIS~iP1_18wwVm4?lhC)te6dyqujV_man@-(NC4zxmp5V)3|KE>@_&CR4 z#{t$;fb&#f@T*YL#GAiz%(c7p_e(=a=`KkF=Y=akBfxYF#_o zHd?(X_S{>y;C33;=z|776MRXemQ**_o}2X=;JWAzjna7a+ii9=T6=HTs>R|>16=Je z?AOAv$ZK+mZwTN&^KgUD%r4HquukasJaI&iyY4xv19Uj(6tw^vKI(>UhQq)U`tC(@ zXxj#d(Nc$^Q8KwxhYBwj&y7f!51YHW0%i1w>*u-|+-U!_pmYW`-I;s1{@q1x(7^jwYluT5T5laZ%$t3I%KKa!8~-Y zhtUtioL=!xH9I(=hpgja0ak)d!Pv@vBg3br$)?oVLUyKeo~AIgEDqDr?2{SRNdO|O z7WnWVeeaBk@t|uOb{k=7*H}Xgg8YsI?H7)Ocz4ej(hMr4xr~@9 zZPE-r$<$bqa;o(p4jDB2X?CGnWbV-WTEqF-PB|UdOZuFD+lESo4WW~~&VHZgbzC=Z z`@7dtjdU=Y@GYBCB-WfmONwibCl~zk(fvpuhSn>~Ba+?Kg;w+Ql!uH>`)>h;;UXTh z0eUOCZ}ehj>J!*u3JZ7amj31;?Y}I2_zWc2r67iO$P@6 z`E|W4_P*~EF+XN-MK|Yo!WA;4(AEk3ovISp6Sd6Jh??FH9x?+(G9IU8^4t9&#m%vq zrmGEDquEL|#jpQ@TNL7r%0$_W%o(T-A|^yVhd6I>$^1gcv<>Apyq*Id=JH9qWz99jOw9M*GEL@K zeq7WQXw8%_;ynlUztVbs3zb{#xM!doAo93_U)$RDbS6pVxjJ)JM$U#3UbrpC{{u{t ztb4z-$-nQP=G@!g*A0|s>MyD(Pzle%cX_<963#;cAj5Q1*4N$W=1FGCzRj%i?cvIr0q z3AEA}tKqmK(Gxgyk4dW4vpamy31Jwfrq+!h@NL92I#T+^Tf)Iqw&*|JMlB?2Blpp; zWmxA>qEA>=iffaYlOj%MWW3i8+Wp&p)}ux3Bzk3mR@-t#^bg7uh_7s zxC9cNwyGpq;~AkuWB+2PUK|<-APi0K-M$ThWfIfOW=z1zKOtp%-$ZSo%4;kH z?92QteINE*Win}YYJOZCh-x`hL}j90K(*n2i`c2{r~eG9gY&V!Of zEf08FoA*sCvFNuu(3BHlr?Ui@CCAHbcTJk{*v*-%-^IM5vN&P(4^@PCYg=Vt^{;|- zJ5n3HKQ*bWUA0<$j;&KKG`H@PTdQB4sJ% z*(3OcBCOG%+odRi_%d5>)!%QO)5 z5s!_!9#6_^m-5$;3@`c$@DYa2nBEZ@GCmYXz4lpF&g<>mr%MlXCNn#W0nK%nX`pL9 zbd{TJw#~S+_qTYdz}1aVeYpehY@Ao-zE}G?KJ{`x%TrQR(T-NJn))AD!s=$;1uh3d zv?Uqc!d5qa-^UpR?uaVTccNgedNEAjAf&%U?PmRFy4lQuJT#}74b;x6CWi|@#(0sF z55(e+dUamFBlHeEyYOZLlG*Z3lWrlfMW(7rLz4|G=J2SdYd(e_rdK&Qh(MFnMoWO7 zB>=TTb)LuIw4Vi)a=8y}qv6K#N-*XMZmi{R5Edha7=H+!?@6D2BJ3f@==r>U{VP;D zTiiTf%T)&o3^UX%M>k&Q)AuW)d9Wwn)#ckmBucdR(%G@_eKv>NSMFCkQW!&%@ zeZGt(8xk8D-QYBvW2^;NxMf3))iquqk*|`b72zEYYx-JSL8RV3(p^#QZ2P|eF#r|$VzvVuQ?b(uPjhR&xV!AJ2xG?c(%G+nm~ z2ItsRb?c)3!{QM|E8UE`fzEf%xAG(jKExTMR3p4C>gHxg8pHKB9maQ-rVdOeX+e}J zr|iUa+Mzi%@Yo3C4d~GCRrVE1ajEP}YHwvQ%7)gk)LDDPOSx1p*mDEmLQsY$z|;zhe53R* zQfhlQsbR58%Pc$AYIq6v?W`7-jjuA&FW;MGYdu|C%1Ow$K7Vc8V?1N4W{_wo8xt#1 zI9u#>5JGTuzGHW1BMLd_k8_+cb2oI%urk;8RCbfq+#lQR!+P8N8%UNa(z(jg$MnfU zbl(R6I2e3RzNQFw>s>-c*9{n9Dg7_2Lv=n*N%w7J&5tqE%c$(I)MkBUk9HAgb% zLc$&+2BZC-x3bh>DgzEL*yl0)>}?dKAm?;W%#@=7E)65&OR`Q*nl%Ptl#LAB=AhtU zG~vcncCrK9oQZ(%=-~z>*ThEN$Y6`h)A%Z{50C-*ri+CP;vn{H-2Fn8CuZU4CIo?W z0f$_;T#uK~cNs(;7Zr!it_*<<;nApRvYvM!f$V{Gq$%fl*1a&(hGrD%44co3$915g zQ#`HBN9LgTwl9u^zxV5uG0!FOt>)jYi$b4rq= z9_P#lI0`y;SRe48G>uY$sU)1yjv3_b*t<5R1Thp8u=;{yx9F%rC#T}t&VRH9lzG!T z6y{jI{uJYR1f`?j5JIuuq#0`|!RMv*oK7eTrydYKqrWCv@=FCmSJ%M1i8TZhvxs*z zoO+E05q|_=wQ;;)SHW_hYdc#jWs0f@bRZdfm7I??J7j(a(M=qlb+za(iv4|{>3ye= z#imx^^@l9{>A8MSwLA=i?)Q5DY}oi_jYBB!q^J{*TL-r0D+PV8z z|C}z?#85e#5i(tanCLpPmu6hxb6dY@UToUIRK#KT|7g1EuqghoyGwU>BVDp|Hz-O= zNW;PcA}t}!B8!03(kxwHQ0W!~>2B$kZjhFe-}pYy`#;Oh%zoy^x#ygF(75uBnV4m* z->d%(12}7Q@#wF0rRr}KuXz2kQA23RMA~H%ayq;xw3h;|P0lqM_jO13B+4fyNtbyd zeo`T;lMbUV1hJ zEdCO6lFJwoz6_gm1OAloJ79B|LE8nXcxLosP?Ja84=HDLW>&!_mi5z%>DWxm3yiq@ z=h*ymZ>-}Zchz9Mf#=^OWwmmDusk`*<1(gR>lZP4vXO0r93P*3!-Z(=9rYB&|MlKE zR}}{mE@Z#-jW(mKQ!s}ja&xZ8V;0%n>DkBg%3r)eSvA{8rdz<#O+yJv$h|84w?(QTcFGK8v z>Qb-FPuko0DfIBeZ7w?#o#k^2C!%#FI z7E*69mE>v=Tr-cIo;o?6TUdZqz?wN7H|z2f+1otlPW-6rI04b0Q z&Kp6jq0iAnP8XKI<111#-#fR>3A}840*4uL0faM55;Ibbt5B7@H&~>}6U9{nTwc<{ zBGr-fiV4z~EQ*pQNozc*_vb(5UVmy79vlEBB5HLJf<-6fPdfRssxF!MujWC8Ufy){ z|6oHg_i>t$dz%k+tpxxYD_lL zqcxxnsH(@#5i^Uqjvx9%-iakO?4TSt@)BdITn|$>A#OhmtJJ zZI@6BaNiWU5p%L(@$aWJUR0kt)`9*8B523hMTEJVMe=UcBk?*y3+)Qrwv$8)?{rNh z=I4wFC~p5PWYf*AvsI50Z;UGh3y-|(5CzdcUB%pXrVt*souE*r5#!RzDU7AF4`$f0 zQ{=QBrnNx;yJ5q`KcdpO+1R$y7W@-Y9#eqJIhTw z(SQQs)AK96M^asOeur>;Y6AeR6V7PYR_oWAxh{rWd8K-Mwh5OpA9DF`Ykv5Fubbp5 zt16C!h$!@ikW-PsCT7pF^P!HdT^Zm`CcG97lE-106hOZcxUi+zn38b0@Y2J|<+8=J z79YCd0_yHkxx1!=$~L1)C6tIJ^aywHD>Z0b(}}5&M3Bb`cOjOVq+2tWIu2+CjpiZp zT};;(BFEP1d=}{72GA#jNgqXf7L7C%>n!mDrl7$HCI#MIuIK1_FhTEdKrkA2(gSOr z=E?xYl?fmfoOQBR#DijP3j&R0>ma^h3vXU7M~=1vG&kw>Pm%4J3Jb&9Q~nU=l%3%I z$`(i;xk(}Xa8^@EO6QyF66#iaAd;J_EB_hpupb-s6SG~3VO8>%F`_)V_e4qgN9QgG4Zp9l-C zUTLbUxfqYh^SUq%;7Xj3m-OQJ{SKy7Y=vgoc`9$X@&vtJX@`CRRsdl3v&c=@0J=5S z=4gGX-Ddum>{VQ6_>&lv|ww)_qIh#4Eh;oxKQ^NMpCrX%F z)%YNWZeGx)vNHq8{c-olGCLg$xrNjLKyaS?PvK!dHC#TTyyd%O@lx>J2&v-_Qj29( z52NdMw>EADfb@yh_WQG4?s>M;`==I@;gqv?H?qlo;Jn8_9x52>sV-()blTgh5*@v$ z*Wup2eMBSEay75d$qqd#RnFMDB`k|bVs0e8R(S7b(SD|WN&Cm&&6g~!X;e(3=XoU0 z9G0qxdv0WUQOi6O7^r#}ai*@rYRbAn(OmzAi~_kg9P!>-`|kc+aGKi2!8RA)`jX$V zWCxf0d$aUC zF%u|QM82mcqV;cjM4{Ogx2MlDiwx_@f>E+*O3(=3%>0X3`-?cEQCm!;$;(a%iTH36 zi*24cmu0>cUiz4euzP7+K@T48!Te>#pw*c=Sa|vE$Q=V{XuI>9cZTz^RtHmi?<62^G zEY;j|Bt^RH=}TOve3ca-ttJog|J1Uk_NyLHKT$A6-;pGG(i3e}ksCCj22|uOUiTQX ze&Wr-rDt)zT9*3vpCZLOiXDIdA^^j1`n6@N?-9DLa6LWy%+4TygKH#+t8XuA`@t{Q zJCGkNoGB5aD7(k2Rs}j^)b)2m5=ycT7UIHdjmqhqp4o{AxSU3D&Aeq}%tRTp0~DHt z{zL*r&QwML@N7C-hCe z`2yf;ds8P2} zl0y(^fJ{R}(LQo*PgeYN(`7KWmOr=9EsmjOE2|oltLz{zvpX)e;OK;O$z9;@|HQlQ zX@USxcyCO$Ru9xSB+8w1myn9al&6);JIJm81^BF@iah!d-S!_538Nb6chHCrxZ^{t z=8@w%<9Xy+1_2DilrJ-QwRSkV*D zwVu;7-kqIEwR=a|^z(D&RdW*0#6qMogaUWAr1AB|6%;uiJiZLSmb?gL15qk8t$oyV zck(cy&+KHfl)>nr+3zs7(rc&D%2*P7m~>6wx{-V*KoTaMzg{p+ zuo#HPC_=Z4fl+xmbK}J@UrgHNaU~SJ|4aa<9*dj&S8E!HE43nLj74!EJ3%IB1w71U zYK;n$OVwQ~4&*PpK`;;xHrTCXe%=76sRKzj7*%z4E!Bf#=ETN?RF!W!)7yj7ggSYo zFk!-OwwoCJ=l?<4|KP%3E>N5o^3W(7Rj%Zj-1Bo0ocqhhqtcvazZRi1wNywS&}{d- zpn@3I8=Mm$RMqhq*|wozs-TF@_K!Hm%srBoZ9kAWh!ha1JLeDuWvMILJ5Eremxb$% zQ_P&i;7h)!Cc=MGMb-h2&Kbp^*q2f<7B9hpyg9MFJ|Sg)TzZ+ruee=5Ysv8|qqu;p zb?WMC6%*O1UCW`A!o!8gqFAGXJ9{^rNO5M#DKYhuMsdp*T(^{yJLw5@UkhXhM2en= zO$E4E?#h~vL!^VWK?lHi^a@5Fo9Z@xaA+~~;*E7XM=?6xNr&b8tiZ`@xhodeu}G}` z`?Wr1Z=4w({q3gZ9H*Vn5i-Z$)MRc8?&=Z#zHYPFHDj3-K2lka0ChBG4>Fk%V0(xc zcmPIkUfh1YEqZ7GPtdd=w^mn<+}O2=GX&mtn$Z9+H)?Ph$D;)1CWaYTT#yn*D-AoI zs+CZ#mc`*;>v#}pNhDj*-H$20M;KTbdUL?RpPyhm#Vma~vX*TQWO(w1no;`da(dt!W!4Xs?5VFN^G7xEX+VrS z8I~`%D|IzF`p}?b5Uoe{WopSu2LIC}^${ApQh(gmZk=vvu`ng4l}nFO^O@B)hvIsz zLu_o7zS%XZ?H?P-g&i1xuz~Ha$cu-YJ!}RwLxpM;U~_E1SpOr2^nM8DuhTXKoQS}z zoZWlrhD&EoJy~ISnLkaj9%Ic+7uUvMSdE9O$$?Sh$&1fXv*9+GC#0&pkz7ldJGr)t zqNdlU7O&u%rQ!g;glS4cmhh!oVCHLfO>&T^Y)Doo2G-EW$@VsF@ibt-A0y>e!^}cH z#@Zh1hIfuZZl;YHE_|`2J(E6dXG|h!dUV@s z^9b0uzw#PH5`@H&p+?eZEtdypiIGvlp(L!9)5MyWS@gxViVDo zO2pO0R=oo<(rH|4(*jc6a}Kp)t~@S-Mx2>)8Dmy2{_# z?;S`&rNHQvcue}~JD^q$r^>Nx(rf{4O}A z1q!e!@NsUGbBUiI95`OKZ;uE%hG~md-m>^@8)X1}#R-2vDHfUyL_Ay^6m2lBTesbM zb2LYc9H66N6CM?qz{n$I{qFut}SDWSVC>EQQt17&%|0J0+;6L0DLA4&0#(ww&uIVLXiMEU9E)c-3 zZ`=kdTds2~^^<1plZ1iT>x>1;Bdj4<$Q$!4W1F%-&$CP%Mf-$k{1?6l&C;+hju-Y7 z!9dq9>f}SRA!S!8&^}5H~R zOW#nTpL+c3?1n!6lsL*SGtqFFKdag0D%ou{${V)P#8BZPeg3q07tM@lw-Xdw$VJEt zq@}B0n`)a0U0|gtKv^2^CAoUNH_6k9iucBGvgPXU1L8{{Zl>tkcJ?ilh8i1C8kw`@ z&w`DKs=6q)`8zYwXXH-1+Z-(3p~HlCR{RgN*3FkVY(_E5z)rh(9zJ+%X;Ge2Zl%WcG|bo+zEj?wzIYKP4i?KOD;o;vIaBsSfipc+q$U7)0|Fd1vOhrpb-v6Whqu zhdh?7D^|^lWUpe*{D&aw>sZwYCXwls?2v3{XA;Ck?=K2op{j`!@ARQneRD_h6O!7g z$uN~LGMIVCTKU<$sl}UjT>{9ESM(O&uU;dy(v@$pE>4OgFV;AKr0&H8@7Wp2X6dHn z@?Wk%3BA`)Ei2ZNc~&HK{H-l=!Y&n0NqZ^=7bAy!7&t zDcPFzS&__O)W!1=-O4d3E#$gnt@cJbS})0` zUXwxwF0AKj+==$haOj!%f0VPq((hEg_osA}^+P^Ws~O$0v`Iu&mpjeQ(EWzRN#!2O z*cDijHb^E4SEcKdc@Lw<#gtf^+D;Y)&cgV>1v>x$ntA6BlgYNA;IVV zT|cRSeR8EH+Cp*PaIX(Y&Y1F>csmZ~zG-8$&kY|~;PyP@W=MvlT0>ab4F(c>TvlTa z>X&FatKWC9&|p}5ra^eSwy}+Sw76A}Ra;76 z)D#;q7L?1YlA2*p07PzZ9JM0`LA~^iO>!)pbgQ;#09yAU$fJgfCSVuf_O2KI6a>{| zvicVY!E(4*^U`a1jrg5BwbyTG_Q5||573u9Q%jX^WV{~vjmL>9phOt`*zVCDyfJ`! z0s59t=16Xx0iR`(O8m9KTQjSL;{C^5^x)8-)LAHeXlwWPPJG94*Qdj|5~9RoNGTP)S9Z3 zGso7_Tg8c9mz#=_El<5LNkhF(>Ol^u;M#qhm>HOht(`41!51T8D|PP;1sY^;I?c|q zkPkQklNn;il*OoCad+P9S8269QsHtMWr^HCB~4?zaPn;fu*Qv(yZl-*^W}xjn{CM$ zbKf;T>3bo;sq89c@VDN%M9^Wg-$SXyrR}#V8%9Ry!rdHnLlve ztPR3Aqp}bYVf!~FTX{DeBH7F==OXhCz)3vq3ttwF1TlRpS+`Ke8UJZiSr%oC-@(3z zxj>W{f)owJrxBi4K%IrcY26PAHp(`EV_+4}2!>l*CYQ3W>&G)4Jpn!WrxTU$$JO*k zhZT7G9o09gS_xYoe)8E~DXsir{vYnQu`GP!($1J&g8Zl?m%X1HJx$*t5O2pC%0Xuc zQuo5Os=f^T2+J(&ksv`&#^$oWWQM$^k*+(}pbLybs^Oh&$tXgc=Uh)55eYDm@VwQp zBExc1%;$12VN=o{5&$K*xw8Y~xo|DhAJ?ijY&+|7AoX2CEPq?XQ*|);&Su+*suWKK zXYD~6br{ zpgo@T$=)RO*J-Ew*?LJL>r(lhEKUB16l`&Zi>>o*xwqM${`_ZQ#BF7C7+UUpE`U4H zCXm)@KOWrAgg*1zgEq`rocZj-5ls#CP*b)i4nicBZYH5>T+G>)LY%8T43S85U@#(M zNQz`=4oJ!he0j@`^!Pan+fF{jxN_xb8M5B!W@<8!j6IgJtja+ z;hfs9I!k=S-v~yPRYnp`SXOapE4AUyt8#&3Gd$~2asB~T#($XoKPUN_9^lV8pzVs@ zAq5idJ8nzbAgeVM@5r5_TEp|dx5NkqcebRU!R%*re*yrScuC$cz+vC&ck6dA-Yf6b60Ji?> zO8A3y+c$Nk*-&D8LW<&G>#SYNljDmF@q=);L^N22*m?*-7(ui_J8N;(>EVQJ z9ztt*>n(fl!4HQqpHDq0Jp4ueoi;p~|5ZH`I{PO=p5i*hNd7I$#susQbQ@v%<*c)~ z>i?YLiR}|W_&A1WBDCjdyzO^m9r^-zym4SOai?dM)dOvcN(52#ds9<{10w=EozZzM^@28RvwL^{RrBmSWbhx;+h2MFrU9Y<&_`luyH(I zyxHzVyAVC!Fe73XQbH%c-)5?8NJE2hrm-fSfC_b7^yqT;(ranhaKKv*-&*g_3Zw&T z$ph78`bny2n3jfvECD(cY&rBa<9F$5U=pF|^PAXwgOGlP z3M=oe@K_dRER7iH3}6-gWfNmmi&})A-1NEbQG+$SuqK-t4g_feeSqG_C@nLO$ULF)a3@ zZT{!#ZxsXJtHXc0&vCu~?iQ}(kCr>6w}E^>XDK|MNdgMV*);an-KRGDqUS>K`oI8Q z`~!2>JKU~KO3ooWMF8VWcnGEiS4vUt(R{I<^P+3`kj8KP63z~4&>NH)0_oE@MF^PH z%;$w|WuzMb=iI1F*GNXmnCQT0zysFN#KZk3{>~WN*xT{yJPRbeHwg_*mNWx@ls##2 z?h?R45z^;SV=YHa??n8lvlM~0%?@OcD9pOz&V8)UKJ`bRB)b<< z?07!z0c}*MDlp>a$0#-j9?}ocNILpx&g>NbY9IPDYRXeqRoQgC@*VL|9InNDo1-3j||HV|a zGG$=XjN)P;|32*l#bgrk$=DUX%8VZn>63J-Pw@Yyb`?;J0KZBTF(jK4U{u@v zZD~&YN8(&-`Bw*DmO-csp(nysAq^NM!%rFvj3l=vxJ9J zYhLuWhLVviGU)1)wOYT2QqD*Hm;W$ptReUL_1?+N98W?hUL z;KWqX{NANBE=g#R>~`XLX9m$95;U;jTJXgoK%9nmB54%|Nev?3ig^!4M()1cWt@|c zdji8Nwx-tBI4H{Q9XWp_4dR`M`T6r%dI>sXZJ*6?hP+Gii0j}&40j?Uhpe|H#hhyZ zPJ)t2b?hy!6Sgx?rg$q02LF&_J%P?@{Y;nPb}8&3)#84?o` zfG}{FZh%seGahS5qIB2q>xCoN*TXODwYtHNZGRrdzK%S%`uaFnl$5yi1)Q7*aYi#1 zNr^FX#PP(XC+rO`R3pRempvaAf$16cZa2Bk&}PafgK4z1Agc;?XnjeKtLt0N0)w>d z<+dWkRBr$*!G!H^Un>Xfg`eJFCY^NT4}{W63TJuAxbwc9p2`+4M+4e} zkGz@Ru^NOe42c1>8VBP&E*-jx-(=!)H*XX)Zy}N&c@#7wxo5MW?(^*>Ak;hoYO0l< zg*>&x%=O0vrLzlI0n{UcbspP-Xm}I4^8&v#-gC)5YftbK7|uBAu?UdqNW$H_5pslh zI6goD;W|Rf#{3Lk^~`qV27u+{b=!)$kDV3>9$OSxpWa>2at@aL`s8-J@x8#jYwrB@ zsd6Kt0g({lp6P0h#+N+{czvJ(7411c*JxqXvIhAT(5Qieo2sSH2~Ue6!0i~x?o91W zYi{@LSw-h)u(QKz+mcV$_viWW893fQN7~`=lEk3YLlSXSiv7{wgV{2TiI=+;ojJ&n zzqZTW#VM!Zr%!JsQK*jrFNTU|q~b+JW0@6H+*oYE@n%~ur`$*sw|VC%!ckpXCfIYC zw=GIp6`CJk)wcAZsc^>dCm}+~3!eZ*J*SpbPn~Hj~;zZWPaWId;leD z;03$|=p_yy5xGywF)_icyfY0F|2JLjdtV8IlnRxQQd;&&=<6E&0AH;e~((gzk zn~VQ~?K__h|2Tbfj|KG2E8f**0dpr97SYXMVG|Xh6VjJ6gn!~{>b^j7z;nXk@)#so z?(b=!TEt-j8;Cv4=TeZvUo@ditp6(hmy}Np6mMVfc&9+5Eqps}q%~O%>>KOB-Wow7 zsq2UK2WDU}il!9WiB7R=9)MJEBAQXCN^AME-hi{C_;b?$QYJ=aj!Ncb`M@Ztc+8Y zNt;8}9hZ0aKhuUcpD)d~<)*gCXs^NDeY{a5zcrA=X;YL$Wxzp!joKgbHMRW_bQddiD!~itF|KGReb}`uhC_dnUv5I8h_D5 zo7;LOZ&uLMF&L1oN^ILAy>T&lNz;?%vE(s-`}81qtjUb5n;d{c|6Yi|*NctgwRcZU zY;1YiNV6gfd?wlir+j33-?sT9Q(~B?ot28bH74_4wg5ZTDn#Ov0%9GEL*Is#yr;1D$_js0}_2 znf($_8!$AOFa%){;9wn!4k6RxP0)P~$2Db4P+J6O%_5U#eSzpS_I)w5dD^5l?E3QL zW+3NzNh}2A8DNu;gx^1v*N^uehgF&0B-)M*njSq)-wxBbkd}~oeGwXj5N*fZhQ(~$ z5i^MP9yI_QT0lTHzuZiSv-KI1@1zPE)Wf7JdO*vdxDA)@!u{CyR5tjY#8A;#KD#sh z!_(=n-`+)BHeY9S7*<^vuk|Jd#%;>5f)Bf1x-0{~S^Q@0Okue+Y>u*4?pIAc9 zYnVqA`?V#`y+g}}y`F5jXs`t*0VBojS+pOW)=g?LB*ADbIKA~6PkGi+&O4(PZ$H76 zSN-|O6$dj;e=Hb^!TZmPC9MGVA^F(ifd006WWL0PdFOqS1rSxIl!H8uee;3^ghm%o zk;8O0M4;q9Q3$Mi^&bOI!5^yQz33%|@6Niaflo(>DBF@@iGK!eB$wKUZw_M_j%<7Z zi-{OdTzy@YL{Y(M5d5g5qBB2HpdPUKlAJ>i6mP zZI3`MuwkhbaL?lgaRe)yEpzez0{Hvn_F2Ss*_RE{z?h-U49%+4V9#~L-gi`LMH>YB zC=VackD1?P1I-?-=E@pv_@WCB#Q)WNs8tZgeCAHWSTlQ^!4voNXF{3>+IfTNTg?ahfZcgqq55?&xOyRK8#$O2Ec z9_@(>D^QG~fG8RNH0TvW33X^BzlS}>KUa$i*l-no5E?gshG>{eV$2A zGEp%kOXg)1lu1`j7UOrQO2n(}>)fD@z-QJm zBaQ;=6sksmf_CC9Ps0HM#4IGMwa7oh;Et0H@n~4!o(NwTki?Inmr(CdIn3kO#x>^f z*!RM7$uq9*lwOj`Z_@(57jisf0Pnhp>pW)&0CMwVN6dV+zG=5yFxNPTH}Z2ZCGU!( z29_&yC^gM61pN&m_Yd_1Wg9mp+D55`E8RZk-I_CD0IV|D%XB4i4;f28qKWB(Y=`_= z>&w{6{k?sP1nhkf7q*2};Y19Q;!KrvlJP*;gSAOJ|51I7hVh$f*OiJty-fSu_-?{- z2`F~?9foQC`-JoTzqG0!%&ahh0}lV3+&me28T-7$`pPrSR3PlV)~WyrgKdc@Als|T zAB4(n&<78>@`kzo`Le!zw?)0BzZQ+J3PMNS>sGX0yBE(1z|ta-Eyj`$_F>SG}NP&ByN@ZlTXQT#|Y z0+ytEP93I-r)|SIR(MD$V~Zfezu2(baH;FJ4nWd@TRF?m>mpJBUemnxo6S-KKu#?) zQehs>7>nF;UE6-x|4EE&a?eK`QGk4Ov8c|acs>qqiojkyUiZ@#I8NS@uDl8C3f^P0 z=!$RWR_5+{QqUrSX{T$2OG}18b>Sml_`0<$cR}#@Tfe;P>!+9k8&7nXWJ(j*zykT59&rbgKo->5!0og(A5% ztv;%A&a8L6pIA3AO~{{=Dd8rmeJg{#0JssLM-VdeLDu91`8p@*4FGz+H_kb3Ij34Q zRam&|s_6W7+LPb)HVG6pTM?w)S$KnfRk($sp9L7GtDn|#8yclCRQ>}(SwouNITI!3 z&2!R9V_>t-UZFQz7SR>6B=_Jrrp+JR63uILSf{bf>p}2mmKcU;0#udC%=fnDnZEQ< zQRw~%p8%95DpBeC?fO28U0gEOsNg73YZt>BM|iFF2z0a(C9 z2R~U!1ps$s#GlDsp}~av(1c^JwCe_diP-1;X};cNI9^^F@?+VHi37K0qcHtXTepp_G}&y>o_WJ2#+lou34bp4$?rBwQyS! zpipJT^j@M-kgeXm7~~r0K=bA%%}TUg1TaPPTkr||h>)t}Kj6)Z&6*H%#&)3+@ZDl+03r? zwxUSvVl@DQf0o$j9hq`+YYcc8O>q0fDsltZ;Rtk&bq%}WDRRv0Aaf)!N$f2cT2&*g z_c7+tkLONv-tr}o7e)cUIrjN%xN3g%kmtkM6nyw<1VK?yCO~@q$@gAend z^~+u+C)JK}?Xv)|sh=B83>NYJ7gU+2DRCV-LnvTo%jeYh{#~+#B^JzP%=eiWlI^+n z=!DG2Rw)2et#iOhSOBab<>h?23;qCDKfskx&gyB!WdXrDN1OaFKSnxaa#eBFJ3aq% z&b#fn=<&~ri}3|EY?~s+k#ZT$t}}VS<7J{1dN4mKH}IXJvR$h)er@(WS?@^{V1xDQ zC!o)@2;h8D;6pij(j)h<);AxZ66rkrx{{0GDW>(jPAtqUxcWXV4;A)#`1tPfGXTQ^&pP?T zKrfz?`eO(g@ll6QTXsXK45=7k@U^u8xeTsv6M< zS`D9k>oQj039el`{u=Udr2ffJE`QQ? z_}dl#X=8|U@uubM`A-mP9RtIcrz^~Z9Q#AF_g6>cOB(DCd6zgOq*vzYQDOh6+bXw! zi|?*FkJ33_M%+m#n`IERO-B`wE*m%8zX8o|Hw-L_Jb ziY3W^?&jEa+6qUbKy5OA#5bJ(@%a16^rsZ33(Fp7vzrGRPQ@oX&`h!LUGlPMhtZhP zTc?#ip~J>a6XPrX;y{7XYe@`i2Le8zEPK_|0R)$=K|VqK4PmS(#@N#M`$&i&F)xC{3h#X)l-`el|yH9~o_w zJwPz~hb!WX(1e|Gc%Xy$-J>xmi^JhUg-x!Y)z|w`6x@?0VlQs!?YMu{>+8f`xC7K; z+dB*ib>AqB9*rr3m1jdy9jE0-GSe&Z@)N^EzF*Tnnkix+(pj>mncF6vUacFVCvg%@ zuBB&T;fQDR@BY13_|n$qyG*Fj!<^y2;-~PwrRl+CzAlcad~?_ZaMTX#P!SeAlD#-r z!c^S8aAdP%Gi{$?0)V_MphJ0AjVg%;GVJbq4~^@g%C=8w6YMS|&sg1F;vpSpo*gq@ zC+c>>ud;u=Xd!+ckA?JO@md4&vKy}Yo2kz{WSst1yRyK)S^}hq`KFO2F0pjiFF)JJ zh^#z?>M_dMe-$WuXhXb^X|;N7_|*V6Ge6}tcrdwX0Yru%m0E#oDuU{rUh7Fpq?1u0 zfn80j2Ofz{GL{>gmBNo5)>vj_2VYw_0oI&|VGZmw@)&BqQ1@N0UY1MD=yBduYlx2xLk#(9^rT#6YD9czA z(|JIJU##%2EUje1h4-=?KwP-$26n$rI49-?Q4OfCU1}d@A1qs`$X)0L(eKIu_Ehsj z(^Pp91oFYsFIM^vsXzB;J*;DZi+&1b4c87}!QR4m(CaBSGMfbZ0c)G|myqGLH+D0P zuLB6)F`?7uqp10fkLd}y)h!3K0m7{P?9+0#_M`}+pf9PiH2^3W9`w(!!d^enV2;8T zG=~sS;osXJ?B@@@r0gu3R?gRlVD2aZ6vp#Qi}$H|a{hIf-io$u+QyqFKOQX~&NPad z7GId3zOHtx=JfpNH%tuNkH2d9!DNYTvi~2I{k2HTu6zCs>~%}x5)C=kk6k0cMLHA3 zB(;6Ykulm4sg--D8PGZJxZW+r8)LyP0hq*1gE0E)nP4t;z@pTVi%0?C42Edn#!j++ z4V-Y`k&eFFCGYwdnSzdzN@pA&T;^m=6pCnslg5w(?`^cC^Fkz!*qwqUwp;5D#NXb< zc{4pbTJNbepjA$^sTi0Ku-VYjps$c8s2Z~gF$L^Er|X^g7Sn0?RJNta424^*s109T zq!c4CVKr&i%jeNmHhoTIe^vJFAOGr1vw+8H?MF+MnK9bs-lk*JV!EtPaiI*)3Ma1!iDboNMjsZmGP1tr&W*djmk}xs(BesMwTR=RN+1jssoy-`{NPY2Np^*%tN^28Y5Brk@ZT81Ub4O~ivpU)gZ&{y|1 zRcaV0h5(p_EUm$9HO}-j=5#LEWpO2Wyiw%hWt{h(*qjw8)x0jjS zk!{???nOW}I0g#~0ze=1H_@XWW!li!AZ3e!x@+CV=6@l#j|*X0%~h z&y?lJKU@uYRB<3%T;<>>auEUlvIsabY&eI4Q8Obw2(iMi2%-qo5nyIx5DeElU^=IU ztnE*a?T?RI1^UgkQ2e3Uj{8cc{IH$L(`6!*vbI-}JIUHMLD;L22w-t7l4}f3tV7U- zH;ctDx|up|gK5Go{k8~~1q;IE+FlyNGsFTEW#A^)=b6rmoN)ppO#UoS_}>L%z^=sZAka?Zwb9!9J{)_UiK zyGo~7Vi&L{`IwLiA8utnN_z8hvOqet_a?<5ZQ{;dL7@hg)x!4-$v~+~q{6w%1b^N02`!G|Iq_um$JWK;*Q%#F!NvdfhgGn^X;oqB_@dA&fcE$v)w}m@+ zIDNinOcpJ9-YQ*~Sx3lDx|DM*WYts0Bz98*441vYmi0zR)93w~U;#Qw=>z&#T=VYvfRsEQ=TZT#A2#*w!lCZXgzhxOm5PI8SZimXh@!GogkA31cOvGQ z=ZZA5^Ws4l*U!PP)qOcBs-PS|c?5J8t6$x6wF}e*ZP6powPs%$1B;{6)cfPcF1hTw zbiVm}wkk?@dW>bZiMoID|3{6#4qZ>6iv^F*{{XVFRnS8{f}fd>hwEKGr`CuFKntOP{C&iWXkroYC85 z`5f1l(JRRPX`;!p->v$Z74W;`&U?3cQm0X5%XE+Y^sW^$7Q-Z>rF`a3A3ucOC1U4U zqn5rk&jIIBeu{cnY6<3N;Gzc#B_2)R!}o5;5Nc|kyiu8Jh91+EA))c+YkY8dM_G$f z%jtPD5HM?PdSndA_pmYX=3>17liT7lvoNA>U|me z%^K7?n5C(>4XjwN*K^t#y>9(P?vW!$<$MAUl4@XAfWSIoet>D<*Qgl2(Q4-Hoas`D z$im}7JkDE|cS9o*U&YJmhq7Mvrvg|iCjtAe5)LpIt!UkT*<*Ptz4yF$^SL4?tEYo{ z|72AF|9NYC@xNG7`Tdx8+Hz(?QZ7ST0dOlTxsY_qiT5GcFq8sJ+$l2xJdVS@gxp?W zW_Yoh$~So|1IW{=IpEd>CC*~}YMcYtgbtb3+J_ARP_0ic|(W<+sMjV-o zq5)5|gX)SO`@*>8pH!TL7Cq0TS(2K->?%e4!5A=W;gnYPD97e((C_PDWZ%@WHLF1?m}m(n@R?ooZ3Y5&JC%4ff0+ z3QL!Hga9RCAM;A>=~ITA^^hEJTOupb(_PU0COhjbO48%An^z@}2ESvG6ZMyscceRf zY5U7@mp>6l#r#+4VdGod=Y5ArQkGvqJi7LErdq?70emUsVOs2kzuvC~RZ?RC8QErk zSzwml?VFLs|46#Zu&COuOG!6KNDf^RgLDrlHAuIBzyN}DIy4BF`JLze{_DA_*I(`8d6M^Yc3n(#?3bgcwwsn4Vy4p1sdNH5t2}0 zTFjt}bt%NDK1LCvacAa7$Bjy>^G7uk6FV=vX;Y_YyBX@AWy*{JkXWhC+wgNJ+B+Zn zv|dMMNqCpRQDm4O{@7%t^y$jseOLKeFj|jx=$DiAAM*y!cQ#1IXHGS7RJp=6J(shvwD_ z*yy?OyM|27iRr6`0cb0Pr|l8-=O+(Pvedj%(m5zdf(Ps5(2=jTx=zV2yn13I6yr2) z1J-;0gCc;&V@Pl{(CI4_`Q=4{ZnYJ)9|tRpW^kGc6Zd`3t%IR{uwCogypIpBk>n$5 z_IWQ;P^Mwc&&`h83!L-(VD-zW+KhAnTrn51mdgPw%>7iskD>b{b_l?Zk-rP{OKqeX zUA_z0P9IN?=%{(U*|#`{4ND{I?JLF@b^pZ1lDSc5PeOqC(5!Xdll^o_FMwKpgTN{_ zhnLu^#V5jATMBTjFpo`Bf_!lN?ZD7X9blkkdH)2H$uX_?7be1f!;YcgG!MvCy}`zF za<+T(WAu;MWHjrRqtKpZU0lN(4oS>@*O>3Uol7emDVA+$al*(;k|uV%0DdyS6GEwh zRwOv|HwNk#&7x6;D>@PK?IO?y{1Vrc;%E1z*A>i_z8~~(C`Lo?{tl{DcA2~Y{l%Fk z8mqnR{ezS|Pvqbid-A|GnFxLp;p%*IC&57=#2k2e?6dwaW258v) zt@YWPdL!R9ElGUROY4yxoOz%5w$h!RpaalAVU#-jD^K)>iR_-CM&v30CWkjST4H0n zw3mvxwgnBW>5kxTZP>+}?&eRa-W)2uUVDWB{J8blkk|xTVG+G*;5rh|p;(~4aMcB3 zSh-@;NR$LkMmNoUuf6X5r@nr~&*e7aK#xNvO`;>ef9%@pqj`^i{s`<6^RuV%jH}NHl!J1HiXT zTWDvV%Sj5{VfB?uiIH#{9N>F57=gwIU3qHa>pW7xB58}TjUB?o+<&s}VmRMYuir~6 z*#hMllIbdx;EGWlyQ_EZH3!NchfCWJ-5-a4diO;~{^PkL3+f|f@*ac#8ecMUUS+ea zWB_6&6fOpvN)T1le!LqG`?N^#$2aqm|0ol&@h#rSAD(N9FNf`6X~+Mu{7yX8dR@fD zy`K)K?fe3cCjSm1qLOtx0?qWMrJSSukL5;kF@t{u<&vUb<2iXB=i8IRH~2Ua7R*?9eF_ znU-BUA4`7na=xk4mfVZN(~2^DFp#xSLw!&C>RYOq&y35{hXK>c267}TOkJA(_SAI2 zr5%k2!z~9}kb=@OGyO2f%Qbv_RHk5HCq|G%WsWaAKT@qZdm z63u-YO%)p|_;#Wap3r>QUY?It^U-gS>>?*N);u-$vU0_Sf`fsB;?SNfhiSj*86=bbYIthQ$%-;r#6T*Ymt3XD^Z@1KrFvuhGA7& z!SDXP7s+%0I4l}c{64Y|^$=)Uv$Cw}lM9AYo{W_cT&Yd%TBaP6Pp|+B$z`$VK6M2)kwe+6GcWsV z5l)km+Ca;MkJY=E~Q1-La&0pfmQ)7bh zx^qF5XkcE$W>aCB?9I3Ime4HLyakISL03z*X<(7kF&y8#a3^|<3Tn*Nl?9o4y@1p9 zCO=H8#DI2=CC=78+xyr411^RLv*r$7iYsc4tsKfvx{+^}oz zsUDgV2Gr{l6OLX~)kUH*V}s3;0jJ9=4Tjm;?^9Z7kE z?>0&+{=MbqGTdAKtL^bqPF9xnwKU)gLyC}S#ce&=zE=*vp+vj-)>73N@4WtIlY*OF zF~6#n@9o)lKoGtG?1<43zSg4XA*r9fo9aGX4ALq(r^|Cn4e<5((;RSmyFyrFJ5(#F z77t(e@0I8~b!FU}a0<54px0wwpcRsS-qlB$gmXr_b)XTl46t3fJbK@Q;U@5+26nak zyvgV-{)48?sz|OB=YN9d>^dwc?K9bpH{<94#NP)o>leN z(h5WTzEzS^Xk23$)(`wlbm#_DlquIgf`z^uN)#?Uu8XC@8-`iVEim4rExkP7dCDqH z|6z@D)Ho;Il?*rlnuvP$71f~0Jxmvto|xOk!X>pq`+R}=swr8`!BLR)-=XXLwDOs$B%*q_4vbtbxVh*mWD?i2BlmZ_4lk_8cf z^4lI@fUnKbPRjuaWUjkZ>9M}$Oz?DZdvNR30|(s;>y=EoZj(T|(9UUKU8e`@3i9%b|Cor6y$Dk5DFdWBWNUu`Sf~{Z zwKwtO#|O7X%iBQP^)6{q<1W-!swXV{VkIvqiW2}fs4OTdIX0c12(Sq_tHm(Do(skp z*Vw`oVpHRA5ZjnmN&!62 z_s>HW!BDjk-}e7p4(8%a ze@@|j!p;kk=zfcWZ{^*TkH@h)zE?akt$`H{A4V_*;_JhE@qsNOa!`@REA<||*dmW# zuJ?Ipv>)*az2lxOa6&JBz#eYD?AI#^!9J5LU!TLCk8AZWVO^qe!Q$Tzs}^c~YWAvd zD2a{)#L(Vz1)ui6B zFdCmOmV1leASThhIE?1bU}|v=%l4Ov6{S7&-T-#Q*-B zL6Wd#d&)|t52URpHNT^&=8sJUB}cS3-7~c1 zfINM)ES+Ym6;E+Rr!jGe9jHVy?jLg6ghN`a93QWo{A>hN`{1gLu=7mR-_EFiW znk-N~e<$EXnV2N=9Hu_Om8g`c7Inc@l)^GY`S7^wXP3P(h?KA!hNlg~vv+S$!gdpW zfx;dFllLuwhBX_?sI@l)N^X&E)cuNmG(7EJ51pOwjSg1f)F|7KldqqJBot86s+1!% za$~a10m)ap|qetB$m56#n^X+tjKygoz+2P&KFC_cU2{HQO?DW%n*)! zPW-#5SOMn3aq=7`G32{*Z0k|)xJ0*6oNVupZ>=sk<0@uxyXYlOB);(cYm=P-w@CE=hPEE`ajq(OdKkP=)?=(+pB` zHavz^KSu~Z#-40XMQRJReIY47D(jmtvSh>*+Y@;q8D}+uH}RJSM5YO!ZweKH~$Emt@69lX7f3 z6S&7=LQ1)6X?*;!QJnmnf3x-X&QV8$Pa5OeF&)NX`mS`DiB05x)GuUyT;VRsNnWq9 zu#Ao=jzXzPq|yGJTo(ItDS)HO(jwSlvR6wgba!+>RGb*;A3UbKJjCmdvDbavhnnf$ z_s6+rH8wJfubnlF;}=8Fe#*86728}TYB#$OlbiJlg2_8>bcP;v{gV*go^5JMfa%>|FapBEA!BW~Tk3}O?B zTk510q+MFn&AV&dx9kE&M_)Tt6HA|>f?^3#3DK^vKa5nX<08KVUH`i~)g0CW>t-RM zk{JIcIu{8G7O-B{a~)~H%b&3RF@45Fi9WZ(vIl@Sjt36^*z-J@=p*j#DDoSxEuzLf zH5;qr&W>NeEXQ)!*+8{!*0kdNN|qrQz1ri1K=YHJGMsD$;!}MeMhbGHB;#JLA0!1! zT*!i8f$VHw1Ys_tPF}k+6U7=nayUDsdYrI{4#J}NjeK9fP&!%lo&8CdQV_d_xj_c*$Y88I9e1iFR&)kL!%8vQBW*;!~D2&M51M zD67Nzp)U>59!Cnoa_A+*Hux;C8mGK7%*!&9sx`YeyymSL+cQO9>*&^5`-!}{U{K1E z`1Cnd$_2CMUyLIVw-{$Ks!Y9DygTghPMr|Mv_9qQoryLTRC~k?WY`1re2p%7QFvU$ zxq$d^v?)%bZDU`o@p6DD40;f8^BHe)gzaBLPNI48&)DdvBav5(bGIi>2%f|ja`7|l z6uRSwg&E#Kj|Zz;>N3}BM%r6<%*BwBTbd4=9r7El!XDFx1I`XJ@B}wV7&AJ9pbUyC zTuMh7MNv+dr1Q|aF{z>EaBvpcLj1XOZ^&-8sQ=iSu@@R#vN0$Fh$o7NR??w?3=QY* zr~Q2X_4$O*;lh)3GfFYlwyaV!H@Hkib5v5e_1t6$_~66AH8uN_8y-6^lSd*JSl~&Y zqdLk{<-pQ8=_c*P2$u-_IVUdiP3`AcI5*}Fy7K@xgkw^=VP{%2bq~o%AE<%}u_bLn z;(6-8l10TFKPB_hnQ=H!JkJm18ABo@HVHzTdpHWEH6Ndl%VF_+v-yPR^Pu6xnpREj z;{N%!!_j^JX&U|Vd8*E0{y`>g)0m$CwZ)t6Vya6XV{*z@JKHW)0>_NxJ7QtxGp3{2 z&9@${$-=h&{HvLEP%vAp7PV$U7Oo1jHAWa)!}0*l^MLtE++ju9R_y}c{GK4cl#YP& z%lDNSt}NVZyfHj%6eC5_0o*s6Tlm~fFXPIOwN zNjq`WNs6UaF>$ROQ78$bfKWt_UoFg?vmO5F3STs4Vc`kI8SPJzFhkWo);@^&NZ`KM z$Rav<(s&6#9gVJ_7|g|FYMjW?`x_$Rx)z+SlV_mhYX9>c{UOYxIQ*KJS<%Ou-@}UR zNf5@TzNpa!A?#mi0v(hrrkiV#j%uhE2F48*i&feo0#}(#0ei?ooz9jVpH>@{cd!VS z5B>YpOVdf)Nr6vR@hFavMAij ztrKKs=KRNgB)P56luF|NMOK;JA`jU~6`#vuw2~mkUd26QIn7nRVnk$xLBpPMs4Te{ z@CfjNJl>|vRGz-w9{EH4e!jWFm~%0D^4;liUjoBzqr^pqiUOydMNhnXQP79meTGc^ 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

9qN@a(}k{y81Y(f#VRdyLnk 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[ DiagnosticCode.AwaitIsOnlyAllowedInAsyncFunction ]); +// List of diagnostic codes which should be ignored inside `expectError` statements const diagnosticCodesToIgnore = new Set([ DiagnosticCode.ArgumentTypeIsNotAssignableToParameterType, DiagnosticCode.PropertyDoesNotExistOnType, @@ -27,30 +31,23 @@ const diagnosticCodesToIgnore = new Set([ ]); /** - * Extract all the `expectError` statements and convert it to a range map. + * Extract all assertions. * - * @param program - The TypeScript program. + * @param program - TypeScript program. */ -const extractExpectErrorRanges = (program: Program) => { - const expectedErrors = new Map>(); +const extractAssertions = (program: Program) => { + const typeAssertions = new Set(); + const errorAssertions = new Set(); function walkNodes(node: Node) { - if (node.kind === SyntaxKind.ExpressionStatement && node.getText().startsWith('expectError')) { - const location = { - fileName: node.getSourceFile().fileName, - start: node.getStart(), - end: node.getEnd() - }; - - const pos = node - .getSourceFile() - .getLineAndCharacterOfPosition(node.getStart()); - - expectedErrors.set(location, { - fileName: location.fileName, - line: pos.line + 1, - column: pos.character - }); + if (isCallExpression(node)) { + const text = (node.expression as Identifier).getText(); + + if (text === 'expectType') { + typeAssertions.add(node); + } else if (text === 'expectError') { + errorAssertions.add(node); + } } forEachChild(node, walkNodes); @@ -60,9 +57,88 @@ const extractExpectErrorRanges = (program: Program) => { walkNodes(sourceFile); } + return { + typeAssertions, + errorAssertions + }; +}; + +/** + * Loop over all the `expectError` nodes and convert them to a range map. + * + * @param nodes - Set of `expectError` nodes. + */ +const extractExpectErrorRanges = (nodes: Set) => { + const expectedErrors = new Map>(); + + // Iterate over the nodes and add the node range to the map + for (const node of nodes) { + const location = { + fileName: node.getSourceFile().fileName, + start: node.getStart(), + end: node.getEnd() + }; + + const pos = node + .getSourceFile() + .getLineAndCharacterOfPosition(node.getStart()); + + expectedErrors.set(location, { + fileName: location.fileName, + line: pos.line + 1, + column: pos.character + }); + } + return expectedErrors; }; +/** + * Assert the expected type from `expectType` calls with the provided type in the argument. + * Returns a list of custom diagnostics. + * + * @param checker - The TypeScript type checker. + * @param nodes - The `expectType` AST nodes. + * @return List of custom diagnostics. + */ +const assertTypes = (checker: TypeChecker, nodes: Set): Diagnostic[] => { + const diagnostics: Diagnostic[] = []; + + for (const node of nodes) { + if (!node.typeArguments) { + // Skip if the node does not have generics + continue; + } + + // Retrieve the type to be expected. This is the type inside the generic. + const expectedType = checker.getTypeFromTypeNode(node.typeArguments[0]); + const argumentType = checker.getTypeAtLocation(node.arguments[0]); + + if (!checker.isAssignableTo(argumentType, expectedType)) { + // The argument type is not assignable to the expected type. TypeScript will catch this for us. + continue; + } + + if (!checker.isAssignableTo(expectedType, argumentType)) { // tslint:disable-line:early-exit + /** + * At this point, the expected type is not assignable to the argument type, but the argument type is + * assignable to the expected type. This means our type is too wide. + */ + const position = node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); + + diagnostics.push({ + fileName: node.getSourceFile().fileName, + message: `Parameter type \`${checker.typeToString(expectedType)}\` is declared too wide for argument type \`${checker.typeToString(argumentType)}\`.`, + severity: 'error', + line: position.line + 1, + column: position.character, + }); + } + } + + return diagnostics; +}; + /** * Check if the provided diagnostic should be ignored. * @@ -112,7 +188,11 @@ export const getDiagnostics = (context: Context): Diagnostic[] => { .getSemanticDiagnostics() .concat(program.getSyntacticDiagnostics()); - const expectedErrors = extractExpectErrorRanges(program); + const {typeAssertions, errorAssertions} = extractAssertions(program); + + const expectedErrors = extractExpectErrorRanges(errorAssertions); + + result.push(...assertTypes(program.getTypeChecker(), typeAssertions)); for (const diagnostic of diagnostics) { if (!diagnostic.file || ignoreDiagnostic(diagnostic, expectedErrors)) { diff --git a/source/test/fixtures/missing-import/index.test-d.ts b/source/test/fixtures/missing-import/index.test-d.ts index 362c4616..24061468 100644 --- a/source/test/fixtures/missing-import/index.test-d.ts +++ b/source/test/fixtures/missing-import/index.test-d.ts @@ -3,6 +3,6 @@ import {LiteralUnion} from '.'; type Pet = LiteralUnion<'dog' | 'cat', string>; -expectType('dog'); -expectType('cat'); -expectType('unicorn'); +expectType('dog' as Pet); +expectType('cat' as Pet); +expectType('unicorn' as Pet); diff --git a/source/test/fixtures/strict-types/loose/index.d.ts b/source/test/fixtures/strict-types/loose/index.d.ts new file mode 100644 index 00000000..7bed995c --- /dev/null +++ b/source/test/fixtures/strict-types/loose/index.d.ts @@ -0,0 +1,7 @@ +declare const one: { + (foo: string, bar: string): string; + (foo: number, bar: number): number; + (): T; +}; + +export default one; diff --git a/source/test/fixtures/strict-types/loose/index.js b/source/test/fixtures/strict-types/loose/index.js new file mode 100644 index 00000000..f17717f5 --- /dev/null +++ b/source/test/fixtures/strict-types/loose/index.js @@ -0,0 +1,3 @@ +module.exports.default = (foo, bar) => { + return foo + bar; +}; diff --git a/source/test/fixtures/strict-types/loose/index.test-d.ts b/source/test/fixtures/strict-types/loose/index.test-d.ts new file mode 100644 index 00000000..b70f52b4 --- /dev/null +++ b/source/test/fixtures/strict-types/loose/index.test-d.ts @@ -0,0 +1,30 @@ +import {Observable} from 'rxjs'; +import {expectType} from '../../../..'; +import one from '.'; + +expectType('cat'); + +expectType(one('foo', 'bar')); +expectType(one(1, 2)); + +expectType(new Date('foo')); +expectType>(new Promise(resolve => resolve(1))); +expectType | string>(new Promise(resolve => resolve(1))); + +expectType>(Promise.resolve(1)); + +expectType>( + one>() +); + +expectType | Observable>( + one | Observable>() +); + +abstract class Foo { + abstract unicorn(): T; +} + +expectType> | Foo | Foo>( + one | Foo | Foo | string>>() +); diff --git a/source/test/fixtures/strict-types/loose/package.json b/source/test/fixtures/strict-types/loose/package.json new file mode 100644 index 00000000..8392a5e3 --- /dev/null +++ b/source/test/fixtures/strict-types/loose/package.json @@ -0,0 +1,6 @@ +{ + "name": "foo", + "dependencies": { + "rxjs": "^6.5.3" + } +} diff --git a/source/test/fixtures/strict-types/strict/index.d.ts b/source/test/fixtures/strict-types/strict/index.d.ts new file mode 100644 index 00000000..7bed995c --- /dev/null +++ b/source/test/fixtures/strict-types/strict/index.d.ts @@ -0,0 +1,7 @@ +declare const one: { + (foo: string, bar: string): string; + (foo: number, bar: number): number; + (): T; +}; + +export default one; diff --git a/source/test/fixtures/strict-types/strict/index.js b/source/test/fixtures/strict-types/strict/index.js new file mode 100644 index 00000000..f17717f5 --- /dev/null +++ b/source/test/fixtures/strict-types/strict/index.js @@ -0,0 +1,3 @@ +module.exports.default = (foo, bar) => { + return foo + bar; +}; diff --git a/source/test/fixtures/strict-types/strict/index.test-d.ts b/source/test/fixtures/strict-types/strict/index.test-d.ts new file mode 100644 index 00000000..a74aa46d --- /dev/null +++ b/source/test/fixtures/strict-types/strict/index.test-d.ts @@ -0,0 +1,26 @@ +import {Observable} from 'rxjs'; +import {expectType} from '../../../..'; +import one from '.'; + +abstract class Foo { + abstract unicorn(): T; +} + +expectType(one('foo', 'bar')); +expectType(one(1, 2)); + +expectType(new Date('foo')); +expectType>(new Promise(resolve => resolve(1))); +expectType>(new Promise(resolve => resolve(1))); + +expectType>(Promise.resolve(1)); + +expectType>(one>()); + +expectType | Observable | Observable>( + one | Observable | Observable>() +); + +expectType> | Foo | Foo>( + one | Foo | Foo | string>>() +); diff --git a/source/test/fixtures/strict-types/strict/package.json b/source/test/fixtures/strict-types/strict/package.json new file mode 100644 index 00000000..8392a5e3 --- /dev/null +++ b/source/test/fixtures/strict-types/strict/package.json @@ -0,0 +1,6 @@ +{ + "name": "foo", + "dependencies": { + "rxjs": "^6.5.3" + } +} diff --git a/source/test/test.ts b/source/test/test.ts index 12664087..730be2dc 100644 --- a/source/test/test.ts +++ b/source/test/test.ts @@ -1,6 +1,35 @@ import * as path from 'path'; -import test from 'ava'; +import test, {ExecutionContext} from 'ava'; import m from '../lib'; +import {Diagnostic} from '../lib/interfaces'; + +type Expectation = [number, number, 'error' | 'warning', string, (string | RegExp)?]; + +/** + * Verify a list of diagnostics. + * + * @param t - The AVA execution context. + * @param diagnostics - List of diagnostics to verify. + * @param expectations - Expected diagnostics. + */ +const verify = (t: ExecutionContext, diagnostics: Diagnostic[], expectations: Expectation[]) => { + t.true(diagnostics.length === expectations.length); + + for (const [index, diagnostic] of diagnostics.entries()) { + t.is(diagnostic.line, expectations[index][0]); + t.is(diagnostic.column, expectations[index][1]); + t.is(diagnostic.severity, expectations[index][2]); + t.is(diagnostic.message, expectations[index][3]); + + const filename = expectations[index][4]; + + if (typeof filename === 'string') { + t.is(diagnostic.fileName, filename); + } else if (typeof filename === 'object') { + t.regex(diagnostic.fileName, filename); + } + } +}; test('throw if no type definition was found', async t => { await t.throwsAsync(m({cwd: path.join(__dirname, 'fixtures/no-tsd')}), 'The type definition `index.d.ts` does not exist. Create one and try again.'); @@ -13,47 +42,33 @@ test('throw if no test is found', async t => { test('return diagnostics', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/failure')}); - t.true(diagnostics.length === 1); - t.is(diagnostics[0].message, 'Argument of type \'number\' is not assignable to parameter of type \'string\'.'); + verify(t, diagnostics, [ + [5, 19, 'error', 'Argument of type \'number\' is not assignable to parameter of type \'string\'.'] + ]); }); -test('return diagnostics also from imported files', async t => { +test('return diagnostics from imported files as well', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/failure-nested')}); - t.true(diagnostics.length === 2); - - t.is(diagnostics[0].message, 'Argument of type \'number\' is not assignable to parameter of type \'string\'.'); - t.is(path.basename(diagnostics[0].fileName), 'child.test-d.ts'); - - t.is(diagnostics[1].message, 'Argument of type \'number\' is not assignable to parameter of type \'string\'.'); - t.is(path.basename(diagnostics[1].fileName), 'index.test-d.ts'); + verify(t, diagnostics, [ + [5, 19, 'error', 'Argument of type \'number\' is not assignable to parameter of type \'string\'.', /child.test-d.ts$/], + [6, 19, 'error', 'Argument of type \'number\' is not assignable to parameter of type \'string\'.', /index.test-d.ts$/] + ]); }); test('fail if typings file is not part of `files` list', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/no-files')}); - t.deepEqual(diagnostics, [ - { - fileName: 'package.json', - message: 'TypeScript type definition `index.d.ts` is not part of the `files` list.', - severity: 'error', - line: 3, - column: 1 - } + verify(t, diagnostics, [ + [3, 1, 'error', 'TypeScript type definition `index.d.ts` is not part of the `files` list.', 'package.json'], ]); }); test('fail if `typings` property is used instead of `types`', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/types-property/typings')}); - t.deepEqual(diagnostics, [ - { - fileName: 'package.json', - message: 'Use property `types` instead of `typings`.', - severity: 'error', - column: 1, - line: 3 - } + verify(t, diagnostics, [ + [3, 1, 'error', 'Use property `types` instead of `typings`.', 'package.json'], ]); }); @@ -62,16 +77,9 @@ test('fail if tests don\'t pass in strict mode', async t => { cwd: path.join(__dirname, 'fixtures/failure-strict-null-checks') }); - t.is(diagnostics.length, 1); - - const {fileName, message, severity, line, column} = diagnostics[0]; - t.true(/failure-strict-null-checks\/index.test-d.ts$/.test(fileName)); - t.is(message, `Argument of type 'number | null' is not assignable to parameter of type 'number'. - Type \'null\' is not assignable to type 'number'.` - ); - t.is(severity, 'error'); - t.is(line, 4); - t.is(column, 19); + verify(t, diagnostics, [ + [4, 19, 'error', 'Argument of type \'number | null\' is not assignable to parameter of type \'number\'.\n Type \'null\' is not assignable to type \'number\'.', /failure-strict-null-checks\/index.test-d.ts$/], + ]); }); test('overridden config defaults to `strict` if `strict` is not explicitly overridden', async t => { @@ -79,58 +87,42 @@ test('overridden config defaults to `strict` if `strict` is not explicitly overr cwd: path.join(__dirname, 'fixtures/strict-null-checks-as-default-config-value') }); - t.is(diagnostics.length, 1); - - const {fileName, message, severity, line, column} = diagnostics[0]; - t.true(/strict-null-checks-as-default-config-value\/index.test-d.ts$/.test(fileName)); - t.is(message, `Argument of type 'number | null' is not assignable to parameter of type 'number'. - Type \'null\' is not assignable to type 'number'.` - ); - t.is(severity, 'error'); - t.is(line, 4); - t.is(column, 19); + verify(t, diagnostics, [ + [4, 19, 'error', 'Argument of type \'number | null\' is not assignable to parameter of type \'number\'.\n Type \'null\' is not assignable to type \'number\'.', /strict-null-checks-as-default-config-value\/index.test-d.ts$/], + ]); }); test('fail if types are used from a lib that was not explicitly specified', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/lib-config/failure-missing-lib')}); - t.is(diagnostics.length, 2); - - t.true(/failure-missing-lib\/index.d.ts$/.test(diagnostics[0].fileName)); - t.is(diagnostics[0].message, 'Cannot find name \'Window\'.'); - t.is(diagnostics[0].severity, 'error'); - t.is(diagnostics[0].line, 1); - t.is(diagnostics[0].column, 22); - - t.true(/failure-missing-lib\/index.test-d.ts$/.test(diagnostics[1].fileName)); - t.is(diagnostics[1].message, 'Cannot find name \'Window\'.'); - t.is(diagnostics[1].severity, 'error'); - t.is(diagnostics[1].line, 4); - t.is(diagnostics[1].column, 11); + verify(t, diagnostics, [ + [1, 22, 'error', 'Cannot find name \'Window\'.', /failure-missing-lib\/index.d.ts$/], + [4, 11, 'error', 'Cannot find name \'Window\'.', /failure-missing-lib\/index.test-d.ts$/] + ]); }); test('allow specifying a lib as a triple-slash-reference', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/lib-config/lib-as-triple-slash-reference')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('allow specifying a lib in package.json\'s `tsd` field', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/lib-config/lib-from-package-json')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('allow specifying a lib in tsconfig.json', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/lib-config/lib-from-tsconfig-json')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('a lib option in package.json overrdides a lib option in tsconfig.json', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/lib-config/lib-from-package-json-overrides-tsconfig-json')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('pass in loose mode when strict mode is disabled in settings', async t => { @@ -138,121 +130,119 @@ test('pass in loose mode when strict mode is disabled in settings', async t => { cwd: path.join(__dirname, 'fixtures/non-strict-check-with-config') }); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('return no diagnostics', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/success')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support non-barrel main', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-non-barrel-main')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support non-barrel main using `types` property', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-non-barrel-main-via-types')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support testing in sub-directories', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-in-subdir')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support top-level await', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/top-level-await')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support default test directory', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-directory/default')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support tsx in subdirectory', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-directory/tsx')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); }); test('support setting a custom test directory', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/test-directory/custom')}); - t.true(diagnostics[0].column === 0); - t.true(diagnostics[0].line === 4); - t.true(diagnostics[0].message === 'Expected an error, but found none.'); - t.true(diagnostics[0].severity === 'error'); + verify(t, diagnostics, [ + [4, 0, 'error', 'Expected an error, but found none.'] + ]); }); test('expectError for functions', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/expect-error/functions')}); - t.true(diagnostics.length === 1, `Diagnostics: ${diagnostics.map(d => d.message)}`); - - t.true(diagnostics[0].column === 0); - t.true(diagnostics[0].line === 5); - t.true(diagnostics[0].message === 'Expected an error, but found none.'); - t.true(diagnostics[0].severity === 'error'); + verify(t, diagnostics, [ + [5, 0, 'error', 'Expected an error, but found none.'] + ]); }); test('expectError should not ignore syntactical errors', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/expect-error/syntax')}); - t.true(diagnostics.length === 4); - - t.true(diagnostics[0].column === 29); - t.true(diagnostics[0].line === 4); - t.true(diagnostics[0].message === '\')\' expected.'); - t.true(diagnostics[0].severity === 'error'); - - t.true(diagnostics[1].column === 22); - t.true(diagnostics[1].line === 5); - t.true(diagnostics[1].message === '\',\' expected.'); - t.true(diagnostics[1].severity === 'error'); - - t.true(diagnostics[2].column === 0); - t.true(diagnostics[2].line === 4); - t.true(diagnostics[2].message === 'Expected an error, but found none.'); - t.true(diagnostics[2].severity === 'error'); - - t.true(diagnostics[3].column === 0); - t.true(diagnostics[3].line === 5); - t.true(diagnostics[3].message === 'Expected an error, but found none.'); - t.true(diagnostics[3].severity === 'error'); + verify(t, diagnostics, [ + [4, 29, 'error', '\')\' expected.'], + [5, 22, 'error', '\',\' expected.'], + [4, 0, 'error', 'Expected an error, but found none.'], + [5, 0, 'error', 'Expected an error, but found none.'] + ]); }); test('expectError for values', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/expect-error/values')}); - t.true(diagnostics.length === 1); - - t.true(diagnostics[0].column === 0); - t.true(diagnostics[0].line === 5); - t.true(diagnostics[0].message === 'Expected an error, but found none.'); - t.true(diagnostics[0].severity === 'error'); + verify(t, diagnostics, [ + [5, 0, 'error', 'Expected an error, but found none.'] + ]); }); test('missing import', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/missing-import')}); - t.true(diagnostics.length === 1); - - t.true(diagnostics[0].column === 18); - t.true(diagnostics[0].line === 3); - t.true(diagnostics[0].message === 'Cannot find name \'Primitive\'.'); - t.true(diagnostics[0].severity === 'error'); + verify(t, diagnostics, [ + [3, 18, 'error', 'Cannot find name \'Primitive\'.'] + ]); }); test('tsx', async t => { const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/tsx')}); - t.true(diagnostics.length === 0); + verify(t, diagnostics, []); +}); + +test('loose types', async t => { + const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/strict-types/loose')}); + + verify(t, diagnostics, [ + [5, 0, 'error', 'Parameter type `string` is declared too wide for argument type `"cat"`.'], + [7, 0, 'error', 'Parameter type `string | number` is declared too wide for argument type `string`.'], + [8, 0, 'error', 'Parameter type `string | number` is declared too wide for argument type `number`.'], + [10, 0, 'error', 'Parameter type `string | Date` is declared too wide for argument type `Date`.'], + [11, 0, 'error', 'Parameter type `Promise` is declared too wide for argument type `Promise`.'], + [12, 0, 'error', 'Parameter type `string | Promise` is declared too wide for argument type `Promise`.'], + [14, 0, 'error', 'Parameter type `Promise` is declared too wide for argument type `Promise`.'], + [16, 0, 'error', 'Parameter type `Observable` is declared too wide for argument type `Observable`.'], + [20, 0, 'error', 'Parameter type `Observable | Observable` is declared too wide for argument type `Observable | Observable`.'], + [28, 0, 'error', 'Parameter type `Foo> | Foo | Foo` is declared too wide for argument type `Foo | Foo | Foo>`.'] + ]); +}); + +test('strict types', async t => { + const diagnostics = await m({cwd: path.join(__dirname, 'fixtures/strict-types/strict')}); + + verify(t, diagnostics, []); });