[PATCH v2 4/6] mf/tests: Use real audio data for WMA encoder / decoder tests.

Rémi Bernon rbernon at codeweavers.com
Tue Apr 5 03:36:57 CDT 2022


Instead of silent data. This shows some difference in the FFmpeg decoded
data, with the data delayed by half a buffer, explaining the additional
data we decode.

The audiodata.bin resource has been generated with:

  gst-launch-1.0 audiomixer name=mix ! \
    audio/x-raw,format=F32LE,rate=22050,channels=2 ! \
      filesink location=dlls/winegstreamer/tests/audiodata.bin \
    audiotestsrc freq=400 volume=0.2 num-buffers=1 \
      samplesperbuffer=22050 ! mix. \
    audiotestsrc freq=600 volume=0.2 num-buffers=1 \
      samplesperbuffer=22050 timestamp-offset=20000000 ! mix.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/mf/tests/audiodata.bin  | Bin 0 -> 179928 bytes
 dlls/mf/tests/mf.c           | 175 +++++++++++++++++++++++------------
 dlls/mf/tests/resource.rc    |  10 +-
 dlls/mf/tests/wmadata.bin    | Bin 49071 -> 0 bytes
 dlls/mf/tests/wmadecdata.bin | Bin 0 -> 28672 bytes
 dlls/mf/tests/wmaencdata.bin | Bin 0 -> 4461 bytes
 6 files changed, 123 insertions(+), 62 deletions(-)
 create mode 100644 dlls/mf/tests/audiodata.bin
 delete mode 100644 dlls/mf/tests/wmadata.bin
 create mode 100644 dlls/mf/tests/wmadecdata.bin
 create mode 100644 dlls/mf/tests/wmaencdata.bin

diff --git a/dlls/mf/tests/audiodata.bin b/dlls/mf/tests/audiodata.bin
new file mode 100644
index 0000000000000000000000000000000000000000..5bf3fa1575ce8b980ef68a5c83b70a1b8e4760f2
GIT binary patch
literal 179928
zcmeI*f2>qxe#h}=6)G*1j%ekwx;n7Xy at 1M41+IAK>``I4Dv`?{nyV!1WLN7L4H+~F
zZiqQVV;~qa8`$=eu<2km9TS9Eg9UNsctC5$bkkhZbiHY87!%xFx7p;{7`e?x+xPc;
z=k~w;*FQfduZ*BvX3le-Gv{-@&yNtF9S){=TRAs+pd50ic*XRmuJWBInDIq!YH1Wq
zag8f%jDo4(**C%~X6|)owno8B+~eXOMZpaI(AC%R|6_cmt6dufGcw;b{<9oR@=q>1
zRt~u*ctyC<CEJIC3Eyw$lDVB=8WmSL+6kuiq3iv=6HM`s)7<_gX)x12aHU(*U<M+W
zY)*rz+~XQs(_n`Big)vKu;(rp-<}3DUUJRvr@=I??z@~<^giQ#AbH14ywVA#vdJYM
zw}S~A-*tb-XGG&BjteGUaD|iQV8Wy;eOnG at e<8{Z6r*6qZ*mhuv<I4ZxS1`q7h1HN
z>C$GV#J`&v+RT(<*IOS2Gql=`eJ={8`ll|wR1T&-;fjCHd4{mtCD+lOh!f63gfIAf
z<|{rcD);mGG5yzW^js&H;umiEk7y^1FLv=?aJ<p|OE)u|26JYUo1$$@LVKBNUz6W6
zqx^rS%AYX>evYZGaO2nT_h53aYyGwpaw)Hf54&tzCzxc4c0)MJXF_&xI2SMDGb7pS
zvNt%7QTP|v_%GTOdlp8y_<H&a=H2M_Z=gNVq8-dAZDuO8k(q6`{rtOW^54uL?QBXz
zZi1g at N;kOV&!S*@e<<hb|4O@|cH9;A@%|77UGg{dH-wk at eCFTztSH_?`ylzbE4KMH
z;)^bulLpiHbGLsv{SISm-6Va+Ox at +Gw2c|1y-dAtkbY>2o8A60KL^Pzu1G&N^#M0;
zUK&jDAG|O0-gm7dv>(C_m;5*FhOnUTaXurmYiK7_cDdSX92bOtcGF*Ry~Nl8`T?rf
z^{wI+L)KT&{Gn^mmrS6IOt#fc^6zG3#1-$1f~no+#%|{4BP at 0GE4h9m4lemO&MUNj
z<?1idj;P$?k`uHW!kM$V>>t}97jfRA at Uol!2l^dq7hG}~#}4CHx$ZLh8G376b7LCJ
zJlf6lM%)1HWm<jXw3(Tr-Ase)tLbsAHQhm%e3!ouLx1ApY0e)^cU|Fcd7p^?s&788
zNH)@bIX>q`t}XM+?yq=7;cwk^m-a$D?S}q at _CfMp*BzuUp?9lmM6?&CHoNhAB0dLw
zkajZzeZ3L>f6TkfH8;}U=<$7Ny35 at 7Rs4A*m$}*n&L>R&gDbqu`$QJ?{Uhff!kLY^
z<OH7+m0LQw`b!<!nREG9F8Mc(1>(SU5%nuwSekO~(AREuwcAq8E&9rxZe%3o+ at lZP
z>$0u%R|I}-8b5N)AJX0!TJNf>=%?m7H at 1MEkLj;yFNA+~wbwYGP}$|OYdG%^9;d&V
z1$;&%|LwvK`WIS9T<?9ZPe}g5&6~$@Mt#5)e?Wgha*Nwv<~oQX?PdmPGgGI%%xGWr
zZu%*vXg4!?yBk|ef5ZOeuJPxb2gv5Q_#)>IifxztocD#|Judt^pU1p>doKAK+6`fl
z&y2!8S3AyeLH%D{?+;v`ko;MiE8UQCtxmaSyV4N9#^4>UxrO$?e%i=%x4H`dZbtcU
zrWL#W8~Fb)kDq7a>)oD(+`pjlU)(pL at GmZVgLXo)*Tu^?w~!s=`hjqk&xd4+c0;y}
z^A_=8*Gg$W^IJDLm*b1^Yg}~&#~+2ibk$*gjnPf6N!yqz?PZd_DQh#F;r}x;{29~b
z=a~2}-1uVt9!&p{D}F)yVDy}u{%iUjD)+na6>Vm|;Bz5P+PUO9K0m^4SN!`9_cgTH
zgo`h6Tu}YfG&lA=`T>SkyB__;lxPPtLw_<Q+Q`hdTZ?};Gqjm$-r**OXn%~~<OYgd
zU$MX7O5b+4 at 8i8qy244?4-+rA#!a*<!r#$mW+R^u$;Y%CDx3KHn0Un{@07VWrO$ol
z8kckao2y;(`?L$jOD?A0m_2v7B5h-aXfM;~tI!8cve^xAZ8asXw`Q6?Z1yj4#Xsif
zp!a*;2WlU>%2D1g8Woq!<^3XjpSDA?o&JV!C7&7D6Me^cMe<Ls at t+(QjLhfyhuXDn
zd?m*j^>uFWhx9kZw3(UUyUd)SznK|pGt@`=xUSYw*yxIUUz(|<ZhR3xAC>R8=});{
zV)Rts0bWtO&BbRq4>9{srOM|=?{imN$#KH|9d7T7Q84kiJKBtb8GhSMb?85+op-<H
z)fC=ymD98n!g06hmr*eFgKlys{TR(VU6=1PQ>T4QcDD-yoM(vF&_7T-;lekx3u2Ck
z$s$*Mfc}F}b=9Z&HOBY2$=zu%)m^UlDE-RZ?`FTxYO85Sv^d6Q^h=H>vbHO6Y)w*f
z;Z2UMnd1Hk$xhB8^O*~aIkyns?0V}t?r5xap~!zna=D8;+=C!&>udA<ZI<zOm^b>q
z<`s=4oQJ5~?0V}v{CwW)S{Gl>u`-u950D&oVb#0ABrotjQCw2a#n16R(K_i$d{>!x
z0p|l|ue&X-nPy~r-%ohO3~g(&XWh&mevOf5T<r<Y8&o;p%+O{x$T?^lSGd-B{(fY9
zmz!|SaIVN_&GpZR><Zc+gB#qyBV6Cme#s3S;n!$1UGEg_jilq^^PESR>U;9NG??yb
zS3FMt!||i;%mMl>Dv!A$*JjfVZn{o?#O(b^gLXF)AGzMOQ7~iM+~D(kZX7-2K7B0;
zruLRAw&|Z}opS^4bKOHFbIo_?N4W8%8$L!qMO=5I&+&bTaGyJK1K)cH+&h}&XMI2A
zJV3aN_m1KbSNI*@2bi~n?|t+*&Ze;4l{nUBkbY%)yIp+`*D)mYK{NEY8+j-VW^7B}
zT3#{x^Ao;{Oz)$<U+{`}q;Hb*7-53*7fFftZ9a0 at Le3ZTR=Og6Eq5!gsH||wd_Fe<
z-(k7Eyqbetcgz$&AK4-9R}e0`-Xh));#ID<j$fm4Yu|ESk<E3X#h)`5_<3giaISJ0
z?*mE2Wv}wSQTW7l=SIQAw3Qjy;AZb<sz0XxAb!%#_OEIBn(5O2OhR8YGY`A5dpYmW
z;``Sm1=siu=P9xmT- at Y3gp6lNrbQc=QSMbt!Zp$iKIpppIREj%VK?XXG??XYxl`|^
z!PL&V<?r+RXl3r|vuQBZldjj`Ji-UBxap_TV0wHvni}_<CV7+hg75{$ILGn*f^*?b
zjw@;lqg;>g8#Dcs`{0#`pUv+zT$TP~u0HEp^e?lVzGiCY+^KgXJ_o-?|1@)6cOM+)
z=b^jL4L%rgY&f>7-RPw<$Bk>+FI>iXXW}O3GcxYCOyf5$De&3QD!H+H=_i<Z*d;sp
z at 8~}3rs->D<QW$~nR0G$EPvd$l~)YVcTIeQ>(1rRqwop+9NDWbsc>9T;aXtAdXBHT
zK;JMejx(~koG+*>@3TIJ-Z~erD$`f^_eCyT<j)~H<iZp`%N%^y?d9(<oO33b&-*}S
zg)7p}a(u at X(Oc=Vg}iShAMs~Q$%P4iHsVQ+wHe|4phr98xGwjQeCy^diMSTgN7nXj
z;T0nfxuM7TzC!Y}tJBv^Z?_xVMZ2T)h%0R8z6d?~ubKV%h2PQ7Q9R-T*8-FLl=p3Z
z#%Dpe;LgxqCfw&npX1&Haor6cOS$f+d=I$hJ1O4_d`Hp0%m97OwCI1P*mgDgr}^|X
zcl1!ocM*O1c{jF=^A5dh-2~TV)418$vo14TCl8?;IR8;x?<$Y+J%uv|-0`Ck-=+Mw
z<F0#}{~u4j=cdkce~Gv+>2RFUJLMWp?hi0<#I;|F_^#*QIo at V)gUhbq{sYAm9ADGF
zzX{iHULo7T`GVGY*SLcF0}OKSZiY6y>JIu1YEQV?{xw5iGa3EQ%+MFj$WQvV^NQB6
zn|&@EFQC0py2yPbS|?rn9N#CHy}wCb;2c0$#rccm at Nh1^#5ruP=R8KX*3I5mR&J*M
zp~2 at h;cME*ywSIeSJUQx)og3$;!d0UPX5lzIqwjPuEBkznZ2)!X?GJAyW}(ejM?eJ
z6!)s;P5urfCC+J-4!Dfx9%l4Q*IE>DpUt(E>!c}ijW)ge`yS;LRr-{f-0jBcbEZl^
zG@<IM5AbVbk&BmdE+KqV&dr_=@fwaF!T{GDWOs8up#GujUd440O}=Z)ByDTz2i>M$
zrsNv>;&E3wO+Q27J@@PLDY=Mqrf;glJtl_Vc1O7%HSxIH`(jG&O37ia$T?_wpL6U{
zsXFC2+F^I99Cw)h2IV;JgXmYvaa?CD%PGex$0^4t$0^4t#~mWeD97blPB~6FPC3qN
zajM6W{dq=WW}lm=9>;T&9X#9I>{O3aJ<e)!s>i7wXEiz1<LC>j$EhBtdYtNUs>i7w
zr+QpIwo>CNshewDWj>}-<0=_vpmCKNSE+H88du4fN{y>zJi at nbcHE=JReDWM<0=`$
zrE!%SSE+H8njfe6ahe~;91NQyr}=Tr8+eF07hC$68>jhk%o$*AoaV=I&qOUw^|(%6
zi&H(0IRKg;m(P*Y{5a-GF-K1G<1|0c=E!M&9P=Qx&WW#a at +jkX?sr<}#ODHQofEBd
z5?I$j>zpwES?io=ofFnL(K;urX`ppZ^0iL1&WYAJv9(UL&WYAJ(K;urvB#P;M(b6w
zW=@eY9a^ta>s21|wJNn<C2KUXCR&a)6183>Yq4!`TCbAlZmb`s^(vV^$5<b&SIPBZ
zC2P$sbXu=c>s8vCm0GV->s8vCm0GWoV=&Iz3r(ke2l$>~?*Z*Q!1^RBSSxneY2N|X
zhh5M8RB+mNfctFLh1I?TTrb#rK>H4)`Q8KCcR>3N*xm!$cfj`^(7pq#FVEfs+IK+v
z4rt#2-*Z6w4lt+U0jK at rcs|L#I@&)@`^VWHa at s$R at xtq&{p0dI<ZSOaqy6Kwf1K?h
zr~Tu~+CNVF$K`v+Y5zFpqiX-Sd=EM8AIH9rr&$k=XDvqifb$Ge>zrtv6RmTS?*(pa
zoM at es;d~Ep?E{`_A8_phu6 at AS3tanvYaej!1MYi(Yaejm16=!nQ=5C*jqgdd at 4)q)
ze9r;xJHVK~Q_l7P*FNCP%d|bfwGX)O0ls%QgoC#`);Q5RC&OCjMC+XJ%z^R2TIWRT
zoLrl-=Cal~(K;tw4;H)RGirEdrwdaX`QF5ve3v3Aaesl*0hhJQ%uiyB`IpYdRBBwM
z##Lrf8jQwOc0%Q5A5*Dul|H7j{ZbkRj<`lMWzAycxHC6I!D#<DzF+3^9Q<RxZ;WL)
z<+zZ&!1pZTChJ=x`?#HJvEGasz2uVBJO{zxgRZ-eF?#smu$%LG8q9LWY#Ggu<G$rm
znPccO&N&mS9;bSo>T%)8_f(HlJx=ww{X5cNtQMzwoa%9!AE)_onjhDn8>jhk`P{gf
zhkb6G=EwQmxDQ^5v=6xU0oVLE&5zUkxK2C7(EPZL=Ew0&#pcFoejN4W&z#MT)BLzd
z^W!u>PV?g~FjjLtbwAkLIL(jK{5aL)7{@$iW0~n2W^db32M*9a;EZ3p&|wTknhW=(
z!HhoV;(8j)@G*DeN$oqJeFuEcfyNT<J-_Dr#=OzDj91e>>$bH+fMq!4IL~nP4?FCK
z#`qF6+2h7cvd4?5A9S{Noc52?{&9`9^flPtaoRsF%J+^NTp96P%(c!l{s`F)7p~#j
zgW?kQs5U2Db_L^VF}T4EJi<6i*qBO<tJHdx`C65#$EhC2UZp)uKjo|zr+S>$tL*W7
z%_QHtc}sj>fU&jIuFV!V@(|A=p?$zLKTh-Gc($PVamsN!mE)A-qEOwz_u^(}8BRG)
z`+z6kcDScvo~QN!XH9ta at VvokAMlh6#{5>EjcOlo-veCxfODN-4{+ at Ru6o?SBN5MU
zxrf-`v=6xU0oOj at z6ZGW0cY&Om(1&j?E$WRz{y at Kob~}vL*+5%qOu3L_5r6By35%f
z;MxbAYXy6NYaei}bCRr%SPzD}IBT3}ofF2MTx47YvO_K(Q>k&4+IN6CIkwix)Oi>4
zYLbrYouZzOM$-)(A-AFZl2eYOuFSZT%FWKkRBBu$=g?9YzTw(~;t3b8VJ$C&0mgD8
zyPNN8*qBO<tJM6sWGD0DjONFM?Aa*H>~SN{_#C;~6Hzc$i&H(0XNS+bqlcnkK7GyA
z-r_i+*mkXRtj~)9)<HLw%r)Pkwv8K4y5VCHb0xTTu?M);IpLaZV=6VSQsXKaQ>k&4
zX&7Mqxv at RKwGTM=z8Y7__e{$7jyrlN<$H){a?iW5ZD}yQYn}ETVE at x+QtoS9_AK){
zFvHv_GxC$Z?YyEj?5ZnLo`KWn7P!*IPB5*L&ep2bdX?PkaGlovajDj;tTGQ6+CPrx
z3v0PHT;F$zd8|kdyReGq5J+AibE3%e8xue0S|^#GhSEhBFNnAXk-b!p3ug{^El%~g
zG?bW&XjG45-;Z0d+^HU?eFp{~^je(iapa{%PW3pSe^>ZjIhf)Rr+vUxk5i6Qj?=ya
zWVZ)A!zsskhEtB?*|YYKV{J3`i at VQh|2W2-tnj_#w0|5qqu?69VH^&$e_Rx<K1=PJ
zdbe3l?c3DOxl`{(?1jhgQ7bodUUwfHX5AEY_c_aO%5gjsT;-JGs0TB5YjzzK<v8xy
zkJDF9JMACWQ9W+8a-4FUa-8-7C$~`>(t4HDPBpHQ^$+ at EDmAWB<0>_-GE}$vm`aVS
zq&CQY>^Y6A)VRv?9qk{deFro at j`^qs=BOI&AICUF&5z6H#%X?BJ2aSgY$mv0FuiMe
zE{m~kPV?iKf3Y^@IknSzm5jIgq at 1r+sr4#T_6BgaR;AXfWDd^5&ep2bdX*imS6OGi
z6|{d`r1dI!Ua56XnEUfU6l|?ZtyjtO{Bd`b^?}Ur+ir^WgG`O=W`5nL9LK(jQ)fNH
zDaR?tJ<k4`P>$n%^XW9-1AORl=6*lq#<q~(3>i*2j`57II?Hg%ajdD(aLRG4lTf0M
z-0PI%I-$rs)Z%)leFv1|Y|TooSIIMC<+wb<DaS=&?~6`3j_=P!+IK+foUnG#@iZJi
z>THb at t#guw0&8&@t#d+6U>$3l*cvBV=Y%<8)Xy;Ib**!v`Ei;bSJ=)tCD`0J&5w)t
z9(6W1PV?imUS(?$^N>+vZk*A2m1(d!a>bRd_c`|$s8n6(|5K@!`8~4x=dQ^9%Vz%$
zryQ4ZK6!>yj?;RTmf at 7+I{!QFvB#R_Mmdgo>8m`$DaWO(@8Oi=Shs<-PPEPm_ZRDw
z<CNo=Yx7vdvrnfSNBwjG&p);A0Q)ktCc1JQV;@uMXHM&!Xq^+SbK+~9Xq^+rL~ETB
zt#k4$Yf<iWGY?1kS|?-oMvT$p8EDCAy-MmN4dzs^|Dv(ADz#o^CnObDxs2z)2<sUq
zZZ6#JTI}bIY%b%0QCZ%1E3dE&ryS?CIMw5n<FtPqHGu<ME85O7oN^qQo(!iP#~zH4
zvpom2?*R1y<_#FzbHHf-II<mk4>X#tcZzxvl8%ed(~mIK_vCwNFx}Hm^|%iE9H|}`
zE^-fx-Xi)JtQMzw9Qy`7=v0r>z5{udQ;uUV&4}^lPW3p|<7_W*<v8WIDegIk-*!j2
zA2rHx9D}9Gag8OcnG37MsUD|#-0(5hBZBI2)B{#(-vQO*n0K*|n%kXj`l*O at FUef5
zIIG2}9>+N8Pk3H~>{X|F9Chop*y2VWidds5V!bApJWZV&^*ye)oAU^k;gsW;tFzwO
zm`aVSRF1P+oa%APam5p?PlfP}vka#k$9jm$aUr{cngDaQjP{RHj>{H$hEtC7F_o6(
zG_F!PPW#6Vhj at fJd(i%I%=>P$7QkEX)7R2qjvjJ@&+~nXv2Ct*ZOVQ*DSPL1at)pv
zoA5Z}YcX9f=emLUp-_%vU1rt+vs#?$ah~Cn<CNo+;~3Yq3~%&(%`24SsL3kFg&UdM
zV^ohT2jw{KrI;IMRF6|VuKHu at 0b8Bz0j_<(mE$bKDaWy1Bzu6H2KNwVkaYsh&}LU<
z?Lbp|!i_vbKEuo&mp#k<2WHsM(Tx10j|`_A$6m^%a!&O)=I&@*WnPO at Jx)2UNc}O_
zug_YBQ;zctryR$+3)JG2<CNo)H at Sa+jj7bQO69nCl3JWmJubA)d4^MtQ;rMUxTi$i
zamnSZZ-h{E4c1sNv+FLz)L>0m?2^ygA-9uPgsF}0&EXKB97q1QwHL^6%5grXQaMgJ
zPB|_L1Mf5EAal)kqF_{y<2&Oc<+y3)>loGJl;h$j$!}JRQ$5ZzoN`>A;gsXrA=|+`
zP^ccK92W-O4cXnC52%0Wx>u#aH1Bki)LKpbpxgAzG?>7?RHky;6<8zB{F>}$EW;_s
z-5%mK<bP;fCH+m~D!mqGH96Je at +_wuXV3gR!zsskhEtB?d{8|uD97=gIl(>&P(6<E
zwC^)li&~s=oN`=fpA9+H<AQQrMCNpb_t+~1mD4U9kI1PJnbp+~vaS;*nR9QNtRH5&
zSGoF!WwJ11qV9HKfa@=m<ET@&VHr+2PC1TRoa%9QfA(%J&v43d%-M)?s>cn7 at P%@m
zWjN(H<+w^lodA~Ml;g at FT*Em5)#H at o;x(KP)Z&!ml;gsiTo=p~{Q}8O?jg))E-dC;
zL4338t!Iuk8f#rB^52nM?&1z(_z|}CS%y=N<J!ydfW}oS$HkNMH|03S%dx-2lTJB~
zbK(obbwW8V&v43dcAZc?PC2g3eS=eu<NCM^s>e|yQjV)phcl|j at m--D$2v{a12AK2
zoFikcJTt>w9W#5MS$l%>2Gt#IXfylqU~r{tToJKuRK&RTaxU9JeHO}b9FudN;Z%>a
z`!m(!l;cvyPcknbp5Ztzl;iUC^i+>)Gv3;+6UuSQamsPwjbYY0hh;eBxIDut$9aZR
zj^qBpGMrI8PB|{5?4i at ig~vH3(4Y=$CO&e#YuU#NW82)|^W;|?J>))pEn*)Z`qx{o
z*k&&tScX%MW3DW<IMw5L20|@PIZipQ%bMqAnsw04?7Ha6amsPccYI8xa-4FUavZgQ
zZ#WN5ILmO#amsN?iRZvjj-%GL-D`2G$0^74cC%kB>fBSB<Y_nbIQ#Kn<RLe<h5cpC
zS~qV=8cgyn{R+L0`hLMH;*mb(IQ9Zlj;k$9*-t<@PC1V2!%EhgTj-LH$Zv*Poa%AP
zakKaB8dpgjPW3qDxVPD37*idmah1w(t>J!#Q;rK=YH>#OIOVv?a_%YTy3nF7Yc4Pj
z)U4<G6qU=$xujAKCVSNtJ}C#&oy+=9h;MKM8yHiIJi{r+<rz*n&TDb1$I;i6<HGQ<
zl>KL%)#6l-V=PO*{-PYG9H)AmXE^1!PADC4s>d<TPdP3W*R!W8l;hGcxXUw~>T#ao
zEXyg!rD6G7X*l(+tDU2chUKiEXIh!N`fM6ZmHSZBYq$?yNrRbw%JtaK$EY4hEpn%F
zoYmq~k4y6mryR!|1)g=8j5+p3Igb4Hbw9(Y9{0cJgT_^=9%orjIZipQ@|b5h<v7o9
z%5j}wwK&z|(lF<BXBkd8E()WU%DL7rSicF`$Lv{;xXFA^WG|5Y(fEx^3gk4jN^b04
z#vfzmVP_dmInFbja-4G9z$1)TfN~t;JZw%r>vNhs!zst*bK_KxQ#~$g^F0gI;~3ku
z!ZV!eamsO}N77&{!zsrp$9-^^`WcktxTkzD3dw4x99Is#Mch|jq&9%;kPB0+Cut5c
z=Gg3QyN`KAGM{IrsH||sTRS1Qo>!<Imxj2m9H$&d|6)HY%W%qZ)M6tSFJ)c=EW;_s
zDaR?t(H|CghEtAX{y4Qb)#E(FDaUb-$^B(c^*H6YeV*Zz<5&}Jm9q?|92c>clPmm=
zd9WxRae?`=CiyAZ)%=Y7ig3Z5xgiZE+~-E0OM|ftryS?CIMw5n<EjsEj|%0uDC~Wa
zd-id6w8?ttu(@%XAE$bpWjN(H<+#H3G#J(6s0pl7j_dAYt`<~}i#QI-alLiqHYmqM
zTqmQ at W6qXQj*G(aqs&`7?z*SxFL?4jH^rXBChkjESI_iLxd!*5X5ffxzZ3<ddYtNU
zq3Rh<InFbjavXCK7P-+cJHe<P$F)`UxNznG&qbknoN`>e$}^mDoM$-YIL~m(ah~Cn
z<2=JD$3=W+I?Hg%aXkOLNKF8(lP-RaeRWV=;*uAr$s(*`%rTO~!@2kpb85}?JR?E2
z*4da!jjL3S+rJ|U#xk68oN`?2B=hl6y67y!DaUz+Q;zctr+S=n+~9-Ei-hWN5w%F=
zxXP`J?SkrY5n~mU<0_9uJo8kJtFA~H$CPpp<&@)C_vuUSF&DAc0&2`7HpM$#?|$m9
z=22JOMMlHqZa2Os3a0wBvs#?$ah~Cn<5<snwNpJ#Ij(y;W&DRbel+DdqH<hsL(2Fd
z<v6RwsUGJUPC3pqoN}CJIORCcaLRF>;gsV%!zss6J8V14aLRFH`f<1S#gzJ4N-fP5
zS90Hp-se0kMy2XP|DQ^gYb|=8yW&dnFI11?xY at o$%5l{9J;SLU=NZnjoN`>s+z!uh
z%5k3Il;f1+=DZ%UHm7o2WjXg1M)f$>?NyE|uIIiIs>d<5Ygjq1bbxVPP>y45*|$^H
z9C6BV<k+Pt>(aRD1N0Sys;fTDuQ9&IP3}&q$?|)<T<=ltNzMJvGMsW8W3I_?%5jVn
zJMC1D>#(j`C(m%oac$Pz<M|j=k7NHbo_T3prE*+0x1ZsZ<MIrr9OoHMInFbja-3&4
z<v7o9{~tLnp3i+cM#;uzy6Y<6;n at k2@4Dg|`XU<a!(i$ouC<l%teCjR&AW>=m{4Em
zy33d&fRXvGcA*?hcC0Vr70GtyZJHCz=R~8z{-<dD%JqKF{SxX|rn%`Kq`}l~bIE4z
zBQSZd8`_!%)A*5#Zzt!Wy2>@K=JzrERVSCc!@9nx>~e|iRbzYBEEvu;Zekxrv{)C|
zgh at AV9-kKjMVH*d at j~+sH^^}@U5=5d-t9^;&*(6=w(onqBAest6Xjr%pZ8tIE5ggn
zb2VS_-cZ=beKkhUx!xZ*P8eTIUd6<XZiZ(-rn$u>92-;Nc$v{nZvO`AxR at Qky=P$>
zOzXF_1F|>zw()8XvS)3M{eKQ(TiLzAD_XyGdlp9g96tLBw|@gQUyN>Ym3ukgkZ_Dl
zbBmi9j(FdkTQ|D##f*bS?+?_EF?!Aw_OWg=!dJAHd6~V3kX%Q*nxDJ+1m_U4Iplqe
zeXnmVuPDW?dN;=aU5=3%yvH@~;P at fA#SIiw+Me3fJQpTAoEsdgBd&21=P|+p+6xJL
z{hG=y?sbs7<EFo&-=T3e{R`DqF1|hDyyf?P<c2slW|CuNlFhDmTSQ-o=o7AfCH)V*
z-*cSM`ju-`_&boC;C-0wyeDK4$HW|SHP*K_BlFW-cNxb4^>uFEU3^|la9m7_V`S<h
zuEFyZQ(WVc?{d6Q`Hq|J((f>Oz{TtdWoG};bxGGHU6=ftr0bHdOS)gu{gUpNbied}
H+%NqPHAu^@

literal 0
HcmV?d00001

diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
index 579953695b9..a93ae1510f2 100644
--- a/dlls/mf/tests/mf.c
+++ b/dlls/mf/tests/mf.c
@@ -5751,9 +5751,42 @@ static void check_sample_(int line, IMFSample *sample, const void *expect_buf, H
     ok_(__FILE__, line)(ret == 1, "Release returned %lu\n", ret);
 }
 
+#define check_sample_pcm16(a, b, c, d) check_sample_pcm16_(__LINE__, a, b, c, d)
+static void check_sample_pcm16_(int line, IMFSample *sample, const BYTE *expect_buf, HANDLE output_file, BOOL todo)
+{
+    IMFMediaBuffer *media_buffer;
+    DWORD i, length;
+    BYTE *buffer;
+    HRESULT hr;
+    ULONG ret;
+
+    hr = IMFSample_ConvertToContiguousBuffer(sample, &media_buffer);
+    ok_(__FILE__, line)(hr == S_OK, "ConvertToContiguousBuffer returned %#lx\n", hr);
+    hr = IMFMediaBuffer_Lock(media_buffer, &buffer, NULL, &length);
+    ok_(__FILE__, line)(hr == S_OK, "Lock returned %#lx\n", hr);
+
+    /* check that buffer values are close enough, there's some differences in
+     * the output of audio DSP between 32bit and 64bit implementation
+     */
+    for (i = 0; i < length; i += 2)
+    {
+        DWORD expect = *(INT16 *)(expect_buf + i), value = *(INT16 *)(buffer + i);
+        if (expect - value + 512 > 1024) break;
+    }
+
+    todo_wine_if(todo)
+    ok_(__FILE__, line)(i == length, "unexpected buffer data\n");
+
+    if (output_file) WriteFile(output_file, buffer, length, &length, NULL);
+    hr = IMFMediaBuffer_Unlock(media_buffer);
+    ok_(__FILE__, line)(hr == S_OK, "Unlock returned %#lx\n", hr);
+    ret = IMFMediaBuffer_Release(media_buffer);
+    ok_(__FILE__, line)(ret == 1, "Release returned %lu\n", ret);
+}
+
 static const BYTE wma_codec_data[10] = {0, 0x44, 0, 0, 0x17, 0, 0, 0, 0, 0};
-static const BYTE wma_decoded_data[0x4000] = {0};
-static const ULONG wma_block_size = 1487;
+static const ULONG wmaenc_block_size = 1487;
+static const ULONG wmadec_block_size = 0x2000;
 
 static void test_wma_encoder(void)
 {
@@ -5802,19 +5835,19 @@ static void test_wma_encoder(void)
         ATTR_UINT32(MF_MT_AUDIO_NUM_CHANNELS, 2),
         ATTR_UINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, 22050),
         ATTR_UINT32(MF_MT_AUDIO_AVG_BYTES_PER_SECOND, 4003),
-        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, wma_block_size),
+        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, wmaenc_block_size),
         ATTR_BLOB(MF_MT_USER_DATA, wma_codec_data, sizeof(wma_codec_data)),
         {0},
     };
 
     MFT_REGISTER_TYPE_INFO output_type = {MFMediaType_Audio, MFAudioFormat_WMAudioV8};
     MFT_REGISTER_TYPE_INFO input_type = {MFMediaType_Audio, MFAudioFormat_Float};
+    ULONG audio_data_len, wmaenc_data_len;
+    const BYTE *audio_data, *wmaenc_data;
     MFT_OUTPUT_STREAM_INFO output_info;
     MFT_INPUT_STREAM_INFO input_info;
     MFT_OUTPUT_DATA_BUFFER output;
-    const BYTE *wma_encoded_data;
     WCHAR output_path[MAX_PATH];
-    ULONG wma_encoded_data_len;
     IMFMediaType *media_type;
     IMFTransform *transform;
     DWORD status, length;
@@ -5860,39 +5893,42 @@ static void test_wma_encoder(void)
     hr = IMFTransform_GetOutputStreamInfo(transform, 0, &output_info);
     ok(hr == S_OK, "GetOutputStreamInfo returned %#lx\n", hr);
     ok(output_info.dwFlags == 0, "got dwFlags %#lx\n", output_info.dwFlags);
-    ok(output_info.cbSize == wma_block_size, "got cbSize %#lx\n", output_info.cbSize);
+    ok(output_info.cbSize == wmaenc_block_size, "got cbSize %#lx\n", output_info.cbSize);
     ok(output_info.cbAlignment == 1, "got cbAlignment %#lx\n", output_info.cbAlignment);
 
-    i = 0;
-    sample = create_sample(wma_decoded_data, sizeof(wma_decoded_data));
-    while (SUCCEEDED(hr = IMFTransform_ProcessInput(transform, 0, sample, 0)))
-    {
-        ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
-        i += sizeof(wma_decoded_data);
-    }
-    ok(hr == MF_E_NOTACCEPTING, "ProcessInput returned %#lx\n", hr);
-    ok(i == 0x204000, "ProcessInput consumed %#lx bytes\n", i);
+    resource = FindResourceW(NULL, L"audiodata.bin", (const WCHAR *)RT_RCDATA);
+    ok(resource != 0, "FindResourceW failed, error %lu\n", GetLastError());
+    audio_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
+    audio_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
+    ok(audio_data_len == 179928, "got length %lu\n", audio_data_len);
 
+    sample = create_sample(audio_data, audio_data_len);
+    hr = IMFSample_SetSampleTime(sample, 0);
+    ok(hr == S_OK, "SetSampleTime returned %#lx\n", hr);
+    hr = IMFSample_SetSampleDuration(sample, 10000000);
+    ok(hr == S_OK, "SetSampleDuration returned %#lx\n", hr);
+    hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
+    ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
     hr = IMFTransform_ProcessMessage(transform, MFT_MESSAGE_COMMAND_DRAIN, 0);
     ok(hr == S_OK, "ProcessMessage returned %#lx\n", hr);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == MF_E_NOTACCEPTING, "ProcessInput returned %#lx\n", hr);
+    IMFSample_Release(sample);
 
     status = 0xdeadbeef;
     sample = create_sample(NULL, output_info.cbSize);
     memset(&output, 0, sizeof(output));
     output.pSample = sample;
 
-    /* check wmadata.bin against current encoder output */
-    resource = FindResourceW(NULL, L"wmadata.bin", (const WCHAR *)RT_RCDATA);
+    resource = FindResourceW(NULL, L"wmaencdata.bin", (const WCHAR *)RT_RCDATA);
     ok(resource != 0, "FindResourceW failed, error %lu\n", GetLastError());
-    wma_encoded_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
-    wma_encoded_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
-    ok(wma_encoded_data_len % wma_block_size == 0, "got wma encoded length %lu\n", wma_encoded_data_len);
+    wmaenc_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
+    wmaenc_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
+    ok(wmaenc_data_len % wmaenc_block_size == 0, "got length %lu\n", wmaenc_data_len);
 
     /* and generate a new one as well in a temporary directory */
     GetTempPathW(ARRAY_SIZE(output_path), output_path);
-    lstrcatW(output_path, L"wmadata.bin");
+    lstrcatW(output_path, L"wmaencdata.bin");
     output_file = CreateFileW(output_path, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
     ok(output_file != INVALID_HANDLE_VALUE, "CreateFileW failed, error %lu\n", GetLastError());
 
@@ -5903,14 +5939,14 @@ static void test_wma_encoder(void)
         ok(hr == S_OK, "ProcessOutput returned %#lx\n", hr);
         ok(output.pSample == sample, "got pSample %p\n", output.pSample);
         ok(output.dwStatus == MFT_OUTPUT_DATA_BUFFER_INCOMPLETE ||
-                broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|5)) /* win7 */,
+                broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|7)) /* win7 */,
                 "got dwStatus %#lx\n", output.dwStatus);
         ok(status == 0, "got status %#lx\n", status);
-        ok(wma_encoded_data_len > i * wma_block_size, "got %lu blocks\n", i);
         hr = IMFSample_GetTotalLength(sample, &length);
         ok(hr == S_OK, "GetTotalLength returned %#lx\n", hr);
-        ok(length == wma_block_size, "got length %lu\n", length);
-        check_sample(sample, wma_encoded_data + i * wma_block_size, output_file);
+        ok(length == wmaenc_block_size, "got length %lu\n", length);
+        ok(wmaenc_data_len > i * wmaenc_block_size, "got %lu blocks\n", i);
+        check_sample(sample, wmaenc_data + i * wmaenc_block_size, output_file);
         winetest_pop_context();
         i++;
     }
@@ -6032,7 +6068,7 @@ static void test_wma_decoder(void)
         ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio),
         ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_WMAudioV8),
         ATTR_BLOB(MF_MT_USER_DATA, wma_codec_data, sizeof(wma_codec_data)),
-        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, wma_block_size),
+        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, wmaenc_block_size),
         ATTR_UINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, 22050),
         ATTR_UINT32(MF_MT_AUDIO_NUM_CHANNELS, 2),
         {0},
@@ -6040,26 +6076,28 @@ static void test_wma_decoder(void)
     static const struct attribute_desc output_type_desc[] =
     {
         ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio),
-        ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_Float),
-        ATTR_UINT32(MF_MT_AUDIO_AVG_BYTES_PER_SECOND, 176400),
-        ATTR_UINT32(MF_MT_AUDIO_BITS_PER_SAMPLE, 32),
+        ATTR_GUID(MF_MT_SUBTYPE, MFAudioFormat_PCM),
+        ATTR_UINT32(MF_MT_AUDIO_AVG_BYTES_PER_SECOND, 88200),
+        ATTR_UINT32(MF_MT_AUDIO_BITS_PER_SAMPLE, 16),
         ATTR_UINT32(MF_MT_AUDIO_NUM_CHANNELS, 2),
         ATTR_UINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, 22050),
-        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, 8),
+        ATTR_UINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, 4),
         {0},
     };
 
     MFT_REGISTER_TYPE_INFO input_type = {MFMediaType_Audio, MFAudioFormat_WMAudioV8};
     MFT_REGISTER_TYPE_INFO output_type = {MFMediaType_Audio, MFAudioFormat_Float};
+    ULONG wmadec_data_len, wmaenc_data_len;
+    const BYTE *wmadec_data, *wmaenc_data;
     MFT_OUTPUT_STREAM_INFO output_info;
     MFT_OUTPUT_DATA_BUFFER outputs[2];
     MFT_INPUT_STREAM_INFO input_info;
     MFT_OUTPUT_DATA_BUFFER output;
-    const BYTE *wma_encoded_data;
-    ULONG wma_encoded_data_len;
+    WCHAR output_path[MAX_PATH];
     IMFMediaType *media_type;
     IMFTransform *transform;
     DWORD status, length;
+    HANDLE output_file;
     IMFSample *sample;
     HRSRC resource;
     GUID class_id;
@@ -6179,7 +6217,7 @@ static void test_wma_decoder(void)
     ok(hr == S_OK, "GetInputStreamInfo returned %#lx\n", hr);
     ok(input_info.hnsMaxLatency == 0, "got hnsMaxLatency %s\n", wine_dbgstr_longlong(input_info.hnsMaxLatency));
     ok(input_info.dwFlags == 0, "got dwFlags %#lx\n", input_info.dwFlags);
-    ok(input_info.cbSize == wma_block_size, "got cbSize %lu\n", input_info.cbSize);
+    ok(input_info.cbSize == wmaenc_block_size, "got cbSize %lu\n", input_info.cbSize);
     ok(input_info.cbMaxLookahead == 0, "got cbMaxLookahead %#lx\n", input_info.cbMaxLookahead);
     ok(input_info.cbAlignment == 1, "got cbAlignment %#lx\n", input_info.cbAlignment);
 
@@ -6214,27 +6252,26 @@ static void test_wma_decoder(void)
     hr = IMFTransform_GetOutputStreamInfo(transform, 0, &output_info);
     ok(hr == S_OK, "GetOutputStreamInfo returned %#lx\n", hr);
     ok(output_info.dwFlags == 0, "got dwFlags %#lx\n", output_info.dwFlags);
-    ok(output_info.cbSize == sizeof(wma_decoded_data), "got cbSize %#lx\n", output_info.cbSize);
+    ok(output_info.cbSize == wmadec_block_size, "got cbSize %#lx\n", output_info.cbSize);
     ok(output_info.cbAlignment == 1, "got cbAlignment %#lx\n", output_info.cbAlignment);
 
-    /* resource is generated using test_wma_encoder output file */
-    resource = FindResourceW(NULL, L"wmadata.bin", (const WCHAR *)RT_RCDATA);
+    resource = FindResourceW(NULL, L"wmaencdata.bin", (const WCHAR *)RT_RCDATA);
     ok(resource != 0, "FindResourceW failed, error %lu\n", GetLastError());
-    wma_encoded_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
-    wma_encoded_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
-    ok(wma_encoded_data_len % wma_block_size == 0, "got wma encoded length %lu\n", wma_encoded_data_len);
+    wmaenc_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
+    wmaenc_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
+    ok(wmaenc_data_len % wmaenc_block_size == 0, "got length %lu\n", wmaenc_data_len);
 
-    sample = create_sample(wma_encoded_data, wma_block_size / 2);
+    sample = create_sample(wmaenc_data, wmaenc_block_size / 2);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
     ret = IMFSample_Release(sample);
     ok(ret == 0, "Release returned %lu\n", ret);
-    sample = create_sample(wma_encoded_data, wma_block_size + 1);
+    sample = create_sample(wmaenc_data, wmaenc_block_size + 1);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
     ret = IMFSample_Release(sample);
     ok(ret == 0, "Release returned %lu\n", ret);
-    sample = create_sample(wma_encoded_data, wma_block_size);
+    sample = create_sample(wmaenc_data, wmaenc_block_size);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
@@ -6258,7 +6295,7 @@ static void test_wma_decoder(void)
     ok(!output.pEvents, "got pEvents %p\n", output.pEvents);
     ok(status == 0, "got status %#lx\n", status);
 
-    sample = create_sample(wma_encoded_data, wma_block_size);
+    sample = create_sample(wmaenc_data, wmaenc_block_size);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == MF_E_NOTACCEPTING, "ProcessInput returned %#lx\n", hr);
     ret = IMFSample_Release(sample);
@@ -6276,7 +6313,7 @@ static void test_wma_decoder(void)
 
     status = 0xdeadbeef;
     memset(&output, 0, sizeof(output));
-    output_info.cbSize = sizeof(wma_decoded_data);
+    output_info.cbSize = wmadec_block_size;
     sample = create_sample(NULL, output_info.cbSize);
     outputs[0].pSample = sample;
     sample = create_sample(NULL, output_info.cbSize);
@@ -6286,18 +6323,30 @@ static void test_wma_decoder(void)
     IMFSample_Release(outputs[0].pSample);
     IMFSample_Release(outputs[1].pSample);
 
+    resource = FindResourceW(NULL, L"wmadecdata.bin", (const WCHAR *)RT_RCDATA);
+    ok(resource != 0, "FindResourceW failed, error %lu\n", GetLastError());
+    wmadec_data = LockResource(LoadResource(GetModuleHandleW(NULL), resource));
+    wmadec_data_len = SizeofResource(GetModuleHandleW(NULL), resource);
+    ok(wmadec_data_len == wmadec_block_size * 7 / 2, "got length %lu\n", wmadec_data_len);
+
+    /* and generate a new one as well in a temporary directory */
+    GetTempPathW(ARRAY_SIZE(output_path), output_path);
+    lstrcatW(output_path, L"wmadecdata.bin");
+    output_file = CreateFileW(output_path, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
+    ok(output_file != INVALID_HANDLE_VALUE, "CreateFileW failed, error %lu\n", GetLastError());
+
     status = 0xdeadbeef;
-    output_info.cbSize = sizeof(wma_decoded_data);
+    output_info.cbSize = wmadec_block_size;
     sample = create_sample(NULL, output_info.cbSize);
     memset(&output, 0, sizeof(output));
     output.pSample = sample;
     hr = IMFTransform_ProcessOutput(transform, 0, 1, &output, &status);
-    ok(hr == S_OK, "ProcessOutput returned %#lx\n", hr);
-    ok(output.pSample == sample, "got pSample %p\n", output.pSample);
 
-    i = 0;
-    while (hr == S_OK)
+    for (i = 0; i < 4; ++i)
     {
+        winetest_push_context("%lu", i);
+
+        ok(hr == S_OK, "ProcessOutput returned %#lx\n", hr);
         ok(output.pSample == sample, "got pSample %p\n", output.pSample);
         ok(output.dwStatus == MFT_OUTPUT_DATA_BUFFER_INCOMPLETE || output.dwStatus == 0 ||
                 broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|7) || output.dwStatus == 7) /* Win7 */,
@@ -6308,20 +6357,21 @@ static void test_wma_decoder(void)
         if (output.dwStatus == MFT_OUTPUT_DATA_BUFFER_INCOMPLETE ||
                 broken(output.dwStatus == (MFT_OUTPUT_DATA_BUFFER_INCOMPLETE|7)))
         {
-            ok(length == sizeof(wma_decoded_data), "got length %lu\n", length);
-            check_sample(sample, wma_decoded_data, NULL);
-            i += sizeof(wma_decoded_data);
+            ok(length == wmadec_block_size, "got length %lu\n", length);
+            check_sample_pcm16(sample, wmadec_data, output_file, TRUE);
+            wmadec_data += wmadec_block_size;
+            wmadec_data_len -= wmadec_block_size;
         }
         else
         {
             /* FFmpeg doesn't seem to decode WMA buffers in the same way as native */
             todo_wine
-            ok(length == sizeof(wma_decoded_data) / 2, "got length %lu\n", length);
-            if (length == sizeof(wma_decoded_data) / 2)
-            {
-                check_sample(sample, wma_decoded_data, NULL);
-                i += sizeof(wma_decoded_data) / 2;
-            }
+            ok(length == wmadec_block_size / 2, "got length %lu\n", length);
+
+            if (length == wmadec_block_size / 2)
+                check_sample_pcm16(sample, wmadec_data, output_file, FALSE);
+            wmadec_data += length;
+            wmadec_data_len -= length;
         }
         ret = IMFSample_Release(sample);
         ok(ret == 0, "Release returned %lu\n", ret);
@@ -6331,9 +6381,14 @@ static void test_wma_decoder(void)
         memset(&output, 0, sizeof(output));
         output.pSample = sample;
         hr = IMFTransform_ProcessOutput(transform, 0, 1, &output, &status);
+
+        winetest_pop_context();
     }
     todo_wine
-    ok(i == 0xe000, "ProcessOutput produced %#lx bytes\n", i);
+    ok(wmadec_data_len == 0, "missing %#lx bytes\n", wmadec_data_len);
+
+    trace("created %s\n", debugstr_w(output_path));
+    CloseHandle(output_file);
 
     ok(hr == MF_E_TRANSFORM_NEED_MORE_INPUT, "ProcessOutput returned %#lx\n", hr);
     ok(output.pSample == sample, "got pSample %p\n", output.pSample);
@@ -6359,7 +6414,7 @@ static void test_wma_decoder(void)
     ret = IMFSample_Release(sample);
     ok(ret == 0, "Release returned %lu\n", ret);
 
-    sample = create_sample(wma_encoded_data, wma_block_size);
+    sample = create_sample(wmaenc_data, wmaenc_block_size);
     hr = IMFTransform_ProcessInput(transform, 0, sample, 0);
     ok(hr == S_OK, "ProcessInput returned %#lx\n", hr);
 
diff --git a/dlls/mf/tests/resource.rc b/dlls/mf/tests/resource.rc
index 5a2bf913672..483ff53ca94 100644
--- a/dlls/mf/tests/resource.rc
+++ b/dlls/mf/tests/resource.rc
@@ -20,8 +20,14 @@
 
 #include "windef.h"
 
-/* @makedep: wmadata.bin */
-wmadata.bin RCDATA wmadata.bin
+/* @makedep: audiodata.bin */
+audiodata.bin RCDATA audiodata.bin
+
+/* @makedep: wmaencdata.bin */
+wmaencdata.bin RCDATA wmaencdata.bin
+
+/* @makedep: wmadecdata.bin */
+wmadecdata.bin RCDATA wmadecdata.bin
 
 /* @makedep: h264data.bin */
 h264data.bin RCDATA h264data.bin
diff --git a/dlls/mf/tests/wmadata.bin b/dlls/mf/tests/wmadata.bin
deleted file mode 100644
index 6c70c14ce3208f5c711effe156ac484c706686cd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 49071
zcmeI%v1tQA5CzZ!Co(v2sMN-RN>FHQ2Zt+A0S?rGRe*vkK_#dJm7ofYN{~8G=;V at t
zY2d@#Y&QD5fzQG|4#V$leA<6a-|s)KZ=Zi3&-<6f;1D1{fIybOau^hN*2<(MK!89e
zuu|t8i#q}Y2&4(D)p^>=<Rw6WKqoM&^Nz(G0RjZl1U7S>`wC6loV)}G5GVp$uk+$z
zAV7dXsK8F0hi*=60t5&Yfk~Yg4+8-L1VRN4>O6FFViO=hpa>l2I`<V?SPTRR5J(d^
zd7Y=NOkM&62y_Bxb>6YKBS3&an!rV!r>#t00t5(j0#|k3vA82ZfIynSeXes~p=q0w
zmjD3*MPT7|UOWs02oMMrSgP~T&52Eb0D&T~Qs>3PK!5;&P=U2N58a&D1PBl)0^?lg
zzCsI&fdBylX#yLs^R$)8OMn1 at PGGCfI~I2Y2oOjU*s1fhmB~wh0D(?mQs*6uI|2j<
zqzN46I`<WtwmEqT5Fk(lj$Y@*!$5!lflz^yIuG5P*aQd=C<147UOWs02oMMrxTy2c
w&52Eb0D&TKo$K6JXkjrBAV45Z;O=#vwlaAM5FpSAJgD=I#T@|x1kwcl0V8@&#Q*>R

diff --git a/dlls/mf/tests/wmadecdata.bin b/dlls/mf/tests/wmadecdata.bin
new file mode 100644
index 0000000000000000000000000000000000000000..4e339804f1f908f4b73c61ef275da893022da2b6
GIT binary patch
literal 28672
zcmZU*cX*QL8~zPE4<QgB1j1g~8;B!y8 at F{<>#Te4s&&*|wQAjauew)jwQgIhb<Zk<
zgzUlIVFnWR at 4h+S_j??__kBM9sz=Ptb6?kWp65k>q(9O(p>M*Q#5akjl1?SLDQ?O)
zv~Orf=||~PQm3R!SyI+n_F48R&MD4N?ojS&z%#%;KmlMUXD8=d_P6Z!%=gSzMk~Xc
z;!XLG{2{rNQcC%W^b=_>VJ~3=x&hsS-Gbc{-4neNx)W+ at Yic9;N&YF`Dc(9)o$IvY
zwBxw_xc$BLy>*afkOgDLnCT|E>6r1D at q56p0G5emG5}BuY8ho6Wo@=K+uk(4X;wK^
zPLW6C+269ir9*3nR(HT1_&5A-_+;#4Y(8#2t{1)+o|s5X{EPG#X$)ly<z at 2A<XB29
z#mn$A_A&P{^(;M0$JVhgaV~N4xOv>UfXM(G$Hw6U{477~C+1Jg4~!3t|5E--Ii7qx
zxjm&l<uvIu$xJX4=y*Cl6PJlAh!w;nVM%yoU}WH!|Ck at sf@#_B-tX?}?CPX9)0>4h
zp>3gMp at m|mn4`w1aUeiz&>ED0EMu1O6F^~7m?Rd7rOH}m{m=fNz0J|)nBbn^ws~#d
zv;MRG9|J!IW`}2oXU1m6rs1aHhT at 0fa}#qDn at CNhC6pzUFUen$ohi<g8b%Fc19Jnj
zj#bC<us!U1oO_&XZZ@|sfCae5xyG at vZEOR}z}m~)%QQ303=ADZuT8E^-b&d at iISqE
z!HI(tm*bb?H{mwneu at 1O+ZWy!z7V(&_~QTKXSc9hcDi at Ei=0JHd^5f|-Ii|KXxV5f
zFat~lrk{;J8#@8|0e%O}GtD!tFt0F|S;{OcY%6TvHGkK<%DKw<-2L3$uBBbeQ~y){
z<iO+rHB1e^kG_xY#_q-rMTeqT0+w)<c$Fw4%g86FC#W^F8k&`ErN2ylnL3g+l68oE
zh`o`sk(0_z<&FmQ1XOY=IcWePTgWbFmNWaM_DfwxUq+uwn at XdCXG_wSq*sZr63g-B
z_`h*~<37bc#Zn?Ekzv7M!M&|}TN_#$S_XRtdo)gs^JeqS<|no%wiIiM^``lz`IPCD
zsoq#`Tn$(NxB=*G>TSv~=a?s1CdJQfoqe5syJNdU at 6x+Uyd_?_Pwu<ZcBgG`Xm4m+
zbX#;Cb{%#iIuR`;loDdZ7;!&&KiNn1QDrHzloCb>Lz}8i9l{#I+Q8nxp2L~LA##b_
z34m__PL7k)70`>_iydV~nJZIQre307qVJ>aqxGlur+!NMlvF}2A#P6CoNx=dg~%~-
zj3eTRa6{bC(6*s%M}0?qh!^qhbM14 at aLjPbx6illx9+#5S<)<t=0tOmsmOHKc-Oca
z at C@*c=^Im_xzIe$GS2eF`o(&}e!_m)aoJJps&)1E_V?EKYJA7qj<u}_tq4tzPLB at 9
z4##Gr*{D0gop6tMk2s4wi|nSlsXbD9qzqvUVYH;Sq>f{aW1VN8XYb|g<uJGmZZ`mY
z at 2WUe93R`qwzKT48_XNb03*OyN?%IvPU}wlk at 6#DZqnSOmc*9C|M36e6Olw at FlI1j
zLu5nbMes$ixwW}<h;NARspqMuv#YbKwz;<Xy6w8H)zWIYYQAb-XIf{vZM<##8qf!D
z1~Aw(*i>pRH7~a;x0tPF>k&J^al}#Ks&Hj{v%Tki=Y50P2DPz6><~7JjT$fp%tz!S
z@@K-I2 at 8k|h^{18(p>6X>R+_KXpiZS={r+*rhdixiuHi~fNkYiIS050xPE|?C*{56
zzU9U^F%Ajvg7t#MVzQX&jC2Mog_ZIb^)G4;IfuNDxR1ClVO>HAQi9+xI805rCM*p~
zgFm+Z*t))DeM^nI#y!kA%t>e_G!L{5wB5Gcwv0B9Hjg!pHNmr52p9^u1{h!(U`jS8
zn>$)MTDDrZTGQ?6cD{q}=<Vw5I_Wv-N%N)oRIRGk--Evg_eAzYCSxXJC<q1l6aOc^
zLt=--Tclg04wMd*UCFzWpQJoVxyQK2n97{We8YOfI>$c89>y8Qi2^dYneor$1<nNy
z_%*RZtPtxY^CVNnP%%EGd`elCyewHsR+3XlDWu+n-h@)L6wSrvVp&mEv?bUQG`E^t
zF+Pm1)Kltt?|kpv*}SuPgKdNDwdJ*Cf_Z|ulc|$wnQ at sh0nlh@G!z+&jOBo<rmH5W
z*=b&GU2f&rId;4Q at 1VM<t}UJ|9<fjCd(--+^>y%dkQ?DfmSdJ<1`q}i8mW!cfy{x-
zE&MI~&gq at g({s{uzA5;oV54NCL at txdJjI@3v>n=RXz|eEMbbsm-G#dgZMnAGrI|}J
z`-%FA&T!6f&eG4)e<J at xo}Ms0VK`<uW<zj8kn7|6m at cO4n(dm+WAd1q^iBFR+A~_2
zMyA=R-l at J1*rVB_328%Gl7VD6Vme}4XkBPM)O at J9-c|3Swa{96w*rE_gQ0LJd at 6P-
z_89vZI}jO&>_zvYWAJ0}zXL7-gn&M1A5?-!5I5G1-GkYKVaM39ibzG|arklgL+C?@
z4}kAP1)xKyLnt+z8a@&^5?K;k68jhXFLoL_4J{xP5C)S5lTJ`hP)sxvjg`tu<*|8e
z3)jNU7Gw)P3O@>KL^YxuagMl7R41wuRtYV93%@<LJ at +>AHgj>x;uQFMAQFg#!Pvpr
zo}r#0)Q9@&9CZ$t*<~KD8?O^LiW_&<?5z1y^{48R@{;nL;+$fge4V@>pqB!m?4|6a
z>ZHoA$*(aq7#gPOrs=j=wph|!X)a-_uyts3XmlBV8GaRc6}cayALA1D5_h?Hx%hC_
z;jFs6y1ao!1B)I>A4#dj)Zztz53&!k3~7e+P~oA%&Uu~lL|LM&3E~N2B9F)$nmROf
z5_J;w>%^}UB{&IgQg~9h++Xg$;lANcZ%%LSVd-I^8EMAdy4^aH#-#ZU&=GJ1K-E!o
z4!uK9G!acTmKqDL8Q0v$)yH+nd&sNwEB*d}Kkza9G2AcKFSZ!F7 at L7)Ad}I_Xf8e%
zzX31 at U_wnO72w9Xao4fev3)RoFjdj2=;p}g$T#6{!ec{YL)U}XgJS^S1Dt at SP*Z4F
zWLTtKtX*ssb`_S3a#1pYO!$iQ6=?%y1LYm<9j%Sg#t5^*tUKI0TtDB>|4aCnuu0S;
z8X+DbMgT3s7Gb&|U9gqAm7B%NVzKBf`eMprO83O>iKlR<aKDFt4<Ga&^#9=c!3E!?
zzx03U=QPb}x>S3q_CV!<$|2=L${h-aVyAqkJQMH|u&8WNnXp1w at wV!1)u{SW^|v**
zHGiA_HjQzNaZK<{@SO^u3Of-eB1;0$W%Spa*PKtHPa<KKFzZa-nY at lg9gC`^)zUS^
zYl at TFCAHgMyuTQfciF+BgGD9zCHeGhdUoHmzG+sTl~=?BBo`&85L1Xa1c!(sqR6(^
zZLQNh(>x!VKQw=~e75{#{K at Fnxph*lRNGF|PUBU3)k`%?H7B(vwG;Id^{0%djHQ-R
zOJ{p$`+Vno=WWkzkJIP$aRb~yN;oBaKYBk3t{}{3+-F>Sv^~nh^YGgM>j6~2*XY-1
zXQVUY!FuBFn;<5LJ&8PtYzl7*uMVva-45Ok_6JM`*Z}{9{tICun8?HE!zhA9uuqYv
z$c2Op38#psi2soPAt%xjX|NU!XANiJxH#@){$zfsuvEBBv`v&QP8U-E-9_C+7X=pu
zJ$OBMZ1D7A^kTfCzM}p~{F9i2=AZ+k1EcNR+P9HBBv05Dwn>dr<8$?MwX#lGx2tMb
z6<UE-Oe~vNc2#~=?)l>RGC)2+{+r at A1+Sb}zN2zSrKVO>OHotQ&4y;fbo+Gs*WRza
zKL&pczQ(@Bf>xQxrm<<SSg%+%flaU^V at XDFZgDQHkX9Iyge2fvll@ivSMfH$P}xu!
zPr{R+1!zHLPG-)Y^gZd*1=9uZSnpUmnvPaUsw90tKcMQUI@&$ZJrMK;y(P{PCt^cv
z>rLxTclCGmziWTj&ehD-Sk+c_k)}u^(u%aVb+>i at 8U8a&G*2}5vGuXdbIfzxb>DSk
zeOO=DwytfxL%l<>NGviFGZQl%Hyvj|EJ!QbiXOlp!2bnU1*k+TQ9YtZZsBg>hGK_e
zt7Fx%Ing=Mgh)a}5mJO2gN^ZXqXwzLK7eL`AS?)fihPQgW9HZ_+$>yYd}sWK#1V-H
zk`5&4sd{Q>dT06q<^tvz&KQn{r{M(!LBV#>cF{udLh(^RR1_6m5?&Ji#Q%v8`<wdI
z`qWLdO|(5pdy+T_oP at 72Ut>B2I|XCjnD at Wt|C-B9<))6>j#_L3wqZi`gz9A#%PQ8C
ztts0s-!A|4%dcPF01ySD7^obmT%uZ{T3NHQW>({@#(aIg9`<e1-P7Hh+cvkA$I4^H
zgkr*U>U3&1W;f;;{u%zP^jYZ(au($5E!bP|Lh?f5m-%J<cKmh{K<DDl#e<}Sq~8~Q
zU-&5ZQEu<d-kCCyOmvlVmGg%FhJKxVoxC<-ZNfavJj}u1!63uO at R40)*BRRxTb-%S
zRIRVppVFSvrfJeNOVmr$zW~N*#%bhQxwb}Mqn~V=Z0c$4X`S6XyZNE(p)0v1xn)f2
znARVHKLkfcMn)QAjj=>rA`ZSAUet@;#oxta5-<sByc$0N0O!RC$OHubnRA$P7<dON
zBg)9>@agcy(8Z81=nGx~`~&zp^mS-Zcu at F7<VEDS*l)2QHi*55UPKQP4ifH=?vPv*
z7o~kl`;@V%V^e#ud$1K;1=q*- at ec|Q3J-`5i1dIpfWgAS!ZG|Y{9if0atfFQ%%qg0
zl#%3-WCnpjScqMST^Cvxn(LeE8|@tJoNJkDd8K=$+t;|S(OcuKAy<+s9ZHAtq2i%p
zgM5R0FhHyjD}rUgvg(TJir=b#tDev>p`lD$ruCY==5x+-&YS+5erLoPf%EBF@>=o&
z#sY?!Yv!uNDlsjamc2B8X+C%zipI&t$=(&eE6!?{)oy9=(&B%m|4KzgqN0;|C-b^z
zb<dKBCE^R*3*1+XSB%?~+ms!I9Rye}&WFy2KuPeE+$8rd`z|}2U)CGe8%R2mZh>Zj
z=A8PR`V3&GW~k<Z_Ja1X{;)pDlw>klOcqizsd=hvs_U)yt(V`*ZygXE5G;w5L at Htx
zF)EIVQzA-)g=gV)fYOB0gdD)H_+RmVqkp4^kV8mETu0n3%q<Kz#*H0_9Eh|Jw-3`o
zv{08|m*9)Qi@<Y0_h9#6yHLB(`SAJhj_8hPBc>5^1UZ77PB@)VL#!df8G9FP7wtXc
zJ)@FU$vVM3!FBST{J({N3k at QJXr_3kI1RuMF+|-3-38~l=eYw}16e)kJ?Y0O$0>6Y
z=O%u{eZ(2UhH$OF*8kr1-lejttT~1pLt|58Q+i!`9kq&D^}PIf`L|`?mQ~BE<r4vV
zz}m94Wy}g@#pSBYRm^&3{b<c-O<z-A)4$FCHeYVJ-0~^(DMUnwNM}-KQc+4#%40S_
z_*h8Eq-37VJ()Y8a6lm<MWoMU&t&k-M1arI&(dv0+lnUSPspE_JumxR+PkzP{3HAp
zW(zZkmP88 at gG4)GM+i|u^oO<|+6H<DdVh8N>eyx7WlcAwn^x&p=?`iTYL{r1Xc&Oy
zfQ{OX+FX6Eexh-rF=P&z%{H?w$(iK*#`BHmu<x+%LED42)1lL$F3~R0ZJ2GCMYu({
zDx?Z|gT6ug;rrny0bq at rfzCh|A&Zc1xNbNNMuS-yTN$H8X;FDt9)1^k7s3OM1djx_
z0JMO=LVty*5o)9^S{Ef_$yj)93lbJ2Y$R?ZJ|aINw<WhF=Q45`1*`&=g=66i;1A$u
z2s4CpL~}%_7!^B24pAy#sbHyq#3S)6EDMXn;4scp&r^>Oj}TMQRJ3ojZ?s!mw>E)C
z;Gx^;b~w8=s2kKRbuD%GtL|5IujpQJuIyZyL++4w2OI{pDcTfM%cqwAQ~6INT8GwU
zsk7AJ_zkn|v+cdSy}Yx6vw~N!SFm-7b%{;MP02f0J6JabHwAeac^T>)b<VSbX9c$<
zw<Q;37i7DNcNH%J43iC$b&+(Dlopg0{Fw7&PD^@AdZnOJ(2w1ZJuPKg%Fv{tNm9HN
z-yzl^wl=UfkkyjaGSoTLNwSe_D at -d)r}d}xyR^HseKmbGuhg&9hz8Mk0b6uibmt7`
z3{tby%(O9WT^wB;Ke>N$zixTm;%oJ_MuXAdo5-6;M@&ZyJeP8$9BDyYQ23t70s8=E
z)QrMj>mlwT?i=hkSXc)pL?=Xp;b8bn=u5~HGzGr}qyuIG1R+6aczAd?5D7%s7&hhv
z?gVZjej$Ey;^xHHNw1T5$-LxQ^jY*R%q`3roEaPo&%*Nwe1f^6xuW*s_ModAA-*fR
zD;h2wF3jX-@;h=ma(1NdNCm9{4YYDe5AhH2nwTb55vU0K?)}}nw|Q^#CDSDnL(7QQ
zxINW-sudNA3Tv6QtX1ABCjv46a2}YWoTJ>M+M~KybFt<`<B7%*`VsnT)@#;P?p5y7
zZKvC8F<Yz$p$B0mbtbi#S<Hkrwq1I=^z5AMobCnP3+71XNRG*l$(|NJEv^RGWp){S
z2lET_3xCZ0F_(}@$P5aD!o{4$obB}O^hM-F<iQDp6Z&ELVU`D%2SY8P7J`f5x?{Uz
z1G1i(ZlD{~TD5kWW|`)r`lDJ0xTm?N$=BuU+8Npz?wIbF_F4B?Z#Ca)ZgI7^`nL3K
z+1$Fh^>pxbaAjm=#2 at p=7&r#*CGrvpqha(J{uw?gAt}LxH{mA&R-voVVaTxf9Jd~`
z9)pcxW5*-MBV)p2!lOf at Lzjb>gQEfPXG;tvhCrJiJ`*_;IUGA2YsNNX&!gwj(}dH6
z_oVkE5|u<9lrkvg`_%7K$FRr5=QxUhBDf(0h;E3&fc=1p!imD^{OSD5oXebiW<E1U
zi_v<Jdyv}_+7h64GdVOlG|)HD*U{P0Il?l+@>KU!ce3$hBU+2rW>#iark1CcTNPHt
z1Nj5_X22N57)5(!dnHvxRn=72RBvtA+5j&IriE#F-~{*|`0WvUM1q&#N0CR7J25&j
z;H+{&d_w#t>rECvpP#>@Xh%^*8j&t3UQ%2MC;=Ri9+5^1qlLTkcIS=B8k4m`yh04`
zi5{svQrlD8Q>ls6L|EtHe++7^@V)WaJ at zC^lBLE_W0<d-ulq;ykETjprTz;5 at 9)Ff
z!`cP<1^Rc!cg9_oU6zCPgZ5X>S5C5*>>c4B;a?S46_^vA6GmfbtRJ=?mWyzaHRu|2
z8h#r73*apP&f<H}J?J`Q9U{ZYaL+N%F+*ZQVy1{GayfiCd?s`zqzP(*KLd6Fupw;7
z0T>$@8!3sE#D2p5gv~@VQ6_;&=uYZR+C<qzc~5&EpW~b?C+jfxF!u}p3xB(CyYRB;
zvM5EIB7P-$CAurTD^&B<{K4G8Ky2_a-6`&r5tI=WsQvE4?Ze#&-w2=dpY;Fi`q{PD
zy4MOdh*M3cnsl|g+M3Fm$`j=$$~%{JE>p-A@&y30f~>e-cE4<D#ncLHHMV+3{f_!N
zO`WF3RAZXvnC2Mi8|m8|-W+~|yg|T-LDHsZQ|5E#b7qQWitc3I$?TZdF|WL^yl}mA
zy)>;jt at truAfQTGC0$mutf(lzC|{T@%$}V#J1vc$#$U!<#$1=YE_nuV25}TJ3RxOi
z8mVrrZvD;kn+J8Ej+iB8fm$kEPuKU+_R)6Lbk+FPel at Ih$F#?^<MiX=b6kH*e at m&o
z)V{>I#QD(k&=c?leByvOKo8TykD`yFAxsFP!l`gjXM%U~#s7y+_)hpG=n`}?G8v)a
zXt?v3^O&qyR_syaQDkv=aTtE?VSP&jqyjbpW`$;jo`#=>p=a?4^9i#MS%`d>@Lj?t
z;wIuJ at +WdSEuA)lF at x~~>jzc|w}g9)e~iCIxJC%i3-%_10P{riL{9}z1w(m5d0aM^
zEn~<S=cwnXn~9r=F2se9qvU8Sc*@=7?w7WgHaL&1Q?FAWt~*>eu4-JBu3T3>v}|bE
z4f&1uUHOCj2f1FMS4=OTUS3;STiK<qOWl0+eD!eSaN|4sJNqr~EpKhGHkgIW!c8Ym
zC(ftMrzNwK*%F~dcrD{v#+2MCxg~`qg&ZkI8juBK@?v at MX~0a`Oj&zLdkLq2Qy|Nc
z<s3>sls-i;MevCAi1nKGn)Vy%H_`$00D3BVDr#-Bwq5jI^fo#g9rvvFtY4YFGOg6F
z)UVU7(|)b_T2rmAR%dClH0j!OExbPr;Mru}WL|1pYCG#V>#(>j?#{l>zVF+<Z(AB#
z8j?gM(Sw+Sn7z2YI2Ou6v+>#ZCx9lvQGgA#p>D*DJi<M~jlhn;R>mr0Gomx1#0W9c
z5Ne3e0<gAy1y}`;hNPjX;i=)oXks)2lY#ja_bcvu{P*|`i5n8{C*4nqQDfBp^#1hu
z%=yd#oB^CyyjQ#rf)9e;qTV8=m?`c6fOjR3D}*h)7G9JcWkdbQlk7>xCE=3b&jdY#
zw}H2T>)z|$Bh5#e at 0#wK^0oO|ZUeXBa`okETZOHHq$DZX3bq2)xAuTxieZWs$`#7f
zs?(}_HTP<+G+t>OtskvFZ#{3F=bq=@-nKnH$B76cLMgSBN at kLo)A-Z)oODh)BZraG
zzMy@<EXgd%DcLF6`{MV-761kS>^W)A!k&fubNA<FWM*WtMQqVQ&Oy#Y`a}9P at -^}=
z3BM$4z-++W4c-m*^Y!zMaE)*|Yz|wAxy1aH;VT2wCAVp|X)4u~Y7^iO%^w<$j-yL8
zq#AaccAKVJr&?DwuWWwcdf>vgU|V{$_Gld$92v}tWJNB;F2$Z>pJNvzi;*kn6?7(k
zCjK|TRzLs^pge#d=f_>dUc`Qd`3mzf`Y{UM{nBu0cxY&7=(pf+!MOl9V*+U*)GOR8
z{2}ro@;df9mV?W|HK71P69KfxNn@#FsV7rTru>uoPwEBs1$Hs7m^WN7T%ZwZgyo`g
z5lhSxpB9}KO%P5Hj^dBvLtheQqRetyIgLankzXXdNT6fsSaC=kBKycbcrn8|wNAHA
zH>z<|<MW#5HCmNcRiUg<-c;O-&vD<%zm-cBQbnpVRS6{4ifZs2Y&h5eHNp0l_Lh2Q
zy;JAc`GrwobOwF~eiwNcc_CvVqn2CCeIR}yuFI;+lI6?tj~5*;N{}VUV2%3>$N;R8
zu9DUj))mgmo0V6PRgg7MJW$-kZQ?>LHieo(^$~moBi4vb3MYks@&Dpq>0asf+P!v$
zg<&xp%!W<6O}a)+BW%|-us7ML*{FG~eXYHqzn~8r!^S6;Cze<CSN4E2;Oy(|>)q<#
z>c1Gc7}y%#8fL{<v9GaTV`&HtnT}3JyW_jZZ_1PSlR&l1#ZN#dp#6}32q<6JLzqLD
zv{+i~@5tYgHQ_bk<)P)Fzk`3r^{$1%g+V(&AJT_LM at C0F$2!NhVYgwWs1(g0WDtgs
zhL8?Y4pORV)igpXAr-Wo?Cad?Tm#?0KPx;d{7dwgC|{f}ZV)wyJ_|n!!KlfHUKfUi
zVL=~x5M>aBoybmHgIj~!AKo8c=U?Za?wanJXPsw#q<^Ge+_bpqe(n9*>y_6l=a$bc
zCzX-PF3K;;djQmcy=8mLdRFwTFjN_;meen)f310~d2f1e8tWMAfPT at 2@P;t#&%lWM
zzZy4NG&^47+U2#&`&{_BaJh83lvT_s{u9s(06q at VMMaB>a`JQX+1c#u32773XnY!f
zGIKI>cJl1xVZ>p??nrk8*8FF!&sq<A4tre9u4bFXW;t#=Zp7(v`VQI-+5%01#-KK+
zCu$~Y;N96t-$}p9xXPGe$*_p*BKvUXaOW}4F;AVZ&W8)&0-lg3bRv2ps>Y}>|Kk3|
z6{3YG^aJ3T!8!+ZgrCu$(N)MQq&==Z?gQonW>jocyf=Zm$+pn8__+-V4gyX?@8BPR
z{h|FKd)OX+7JU{CVuF~1$U)@CgdY<Q5f2gNWI35hW6}mP1~LY-2FJC^(frZ;0%3u0
zfoOpUC&r2491gB4(Ja9%0kB%QDwc{Bpa<w{scWf=iHnJFHsM8iQF<G_E$9xqTWzhj
zcE)x_*iQo)sqXix->ceHw5vE=cDT$WH_5vKjsk*;pkhw>obu0=pDTg=P}fJ at M=dl8
zjeG5T?Mu8%yr+Vvf_khTn?=kb%4jlL1FM0RAWRVM%-EUHKevBwdSQAYNlKEsWp3G*
z;xEPL01IUcWj!T5CHV#U1$}b*<XlU?mcCN3QlMlhSsI##_Kx(9bQ8Ua-izLgVguN~
z1MdT`-C=h;wLZ1>F!eC4)vwjB*RI$0*Ywv^s4LWBjab9i^0g0j4|TPMTEkNFQu8F+
zB-<9p7RN{TM>o{W`nLf>{X>{2COQK%12Y9T1!qRgNC*v~$MDC%MDPs11_0z*v=M1U
zZs2a<24M$bt728LdC_ at MdW0Uag>0bvPYkUMt__X=z&>SoXn5$S at K52aXjZf<rYq(S
z?hX#>)jJY*BtA`gnuI2!$-U{l>0_B=nV_U|&hyUm&I!&5l10g)dVn7=5?~UT1dn--
zd2iWo+5A*~>igvP$r_S|v=P4%|8MNy*vr7nz)kN>?}g?I&G5Y$pdFy?+0e70yt=$P
zTa~REsvN4Es+g)+EMF}D8E`>yLGe!cPH9)!RneMgjkVF*ctn3hUvI6qo^zjbLp{P5
z^TkRCC4?c=A=G4MGV?qBcYHJ*O$U~1Hn61%q!OuQyllJ-`U3|57iAY^k0g&I>H>8^
z``q at qA2L2<ycE6^_Tu#7%%jhvPbN<$4 at ejg*H(7~cLcM1S-$SB?k=c>^f31 at 4>k-o
z at N_)g9nBpL8ITL`0p{rD=;j*c8k$T^CfLV(Z2s6xbQ9epT1K?|()vs5;o#xml*p8b
zDyE8Auomn-WFPVm`VR^{se6E50KoE!`#Rv2#_huH!g4Si%;o6iXx~WR2qjDj13NSX
zHBSj(8~}Qrq%bLbB61>fJa#-5!A7u8&?o3~!gE3ksfE;w+Kaj)Wk<@L)H|tX*k{=7
zc<p$j1)~Mc!e*gSWE4roQZc+UHwrfjH}E&`A95aYIxsshaVfZzPUKExYl1bQGqy7p
z>f^b-Tpx&nII}ESmS1$g=q5ByXnbAsx<;qc{r_rQJ4HJMPsvlFDpb`}-Bf+5;Zy_s
zok8CO*sM;6-{H at T=0z9b7vT?*50V!%7RPJcpW;8oWm#oeY58gSP}_1#-O_Qz<BIPB
z5&)B=lcdiJpBH|e_jMj6i;`6+E)>7vzTw6gF-C+Ep%@4TLLIgan-ES2Z}V^SuXe9?
z2kZg6&?2<>4SvG`-2oklVQ83uusW<hsX3`>(l%-T*8i=C`5?JPZmG0a+JP1C`qulc
zcfWtX|3=_OU}tz|m>1*4pzhB=7|1Mi7Fvog#a{-T0KgveJM_DFje~O}>_5dZ@&9Vv
zve2^7qu`_Xnav2!2sQ!AL*=2Kk)9D at Oc<Mkor5K#WEA|^37Mo!(tOH%%3a!BnvS7k
zs99>(UhZD5g0JB36Ydj2y#)Th%_6f%E7S^81*w8f+)dmfRuKzWUG$BVjg)T^ze&7{
zyNi1heiOdszvbWW0swu#LSLc(x#{PoXSL7bHEvS*q;jvqtAMjN9q<QWblK=KOa-Rm
zO4XGrS-q@&yJov)ziGcI%aP?s_oe$LhbM>sK>k21Bn!!qVn|uTS;N^R+9ayVtje60
zH!Tk-LW*ulZ%IcLk1DnU)&gL!a=Per(Xjks`6byU*-O%vqzU)}{&ePa=8WVS$^D4^
zh(KCF`bGLhZnWNLUGG`%scx=rR#{Y*t;VfJkItjZ)#hq5HJKV9p~Pz()GB-Ed+0YB
zHyR5qg_az9j(v=CjPs1=jHk)h<U;~Tyv7}i9*Z_$8ZiIh{=wy<xhNmckDnPlyZ(UP
z=x%fyvJL5v>mS!Dm&TUHpk at kZwd<klq55Eba2{X+;3?o}=x9hE)`zc0uScseRhT)*
z9Hd`Dzl2G|NyHQ66J)3ZrZQ3)0+xVP%c<p*@Jsj%AwxJxGzqvlQIQS61gsUT74X2*
z#%g1wG13 at Us8^`a)8nIjbU<`Kw0m3kwhT{(M`#z?M;S*M&1$n6TaT at OUiG}HPeq@&
zR_T;G<vjsM0IiDFxK{bP@^vM>j$YS6-9b$@l8rDwG{HN;yEV8q_#gH^EQv at W!a59d
zBUXV`@O{Sj83nloxrv2|g<gqQ0*+kvr1%MNQTG>5kxh}6NJ=D`1(^lCa(d-lPrshN
zPOwf;2XbJ|wC1=U_Y{4KzKgz#vI4BYC+{aODA7)+i;pplF&)w$(jU<t(N57!(b&~?
zb!Say4fLlz>ptt;2Df3Gd7F8OZHeuu<ER7XQDD|$Slh6+!J)zNjLcNbRLnTsI9vnL
zfWWzJ3w{g!8el5m5&8&yjyy+p<96eUutnG>u_v)%(P7a*I1pBaRPi|u_LI;{-3x&K
z=Em^Ga6z;n3N<>|^FYn>T;jRJs-&u<^yKv9Y4mCI)y&mQm`8cd0|;IVI*K}qFk+0D
z3s^2%E+PmC!U|pmuYujbmZnNmE0Zge;k&R2zX=b2hQ9)T1<rWS#I?%XrrYs34z!~U
ze^&oljZtA#*~)BXCq*X(^iZKcuuic~aanm;`APLjrLIxeC>j-wKk0wcf3$wI9&#UY
z|IzkGn<wUpbtZHsjG>O9f{~KBn7^10tljt=Cn=B=jF*g;Y?E!1-6+0M{1Q+htB`@%
zpCqL)rEq%g^xT$=mJDzO3ZVwOmA;j}oV=VoCSgp%NX$sg&fw0V$S3j at yNX?vwn|&J
zIom8TNDKjOK)YA7S7THg)iJ<l&1X$dT~A%9q15o$^w<RNlN-%9nr$wdtE8o*Wl8Ij
zR;Y7~h>VE*7yB;;`>DOiUgTf&UvxEoHU25!5C8`dqC(V%^Wn~7&teNPg&3%{jEjtm
zq=(bP1)+iv{H*o@!1oS%1-vjXd^K`4ayfQ6?(@AyU!!jcZwalWRuY_Tx29}Oxt at AG
z^&tBoJA;?O>m%qRfEkl7qA&3|?!4%{Xs!^zpUb}la+w*-45pvvrxlZn$>s!eLN{zT
z?4Zz~P>HX^m*vcIcC~c1oYS4tt!!M`*i_S06IDf3cBNhULh(YeSH4$11<+a1S;1HG
zmB7NPP*tm{cQ@>ANYEwd at +^6l&(6=zGJlyL#2%x=@x$>e$ScU-GQMTJ;J)CV5}y+P
zoAqxNJ)fSxzG!`sO=^>lDIQb&06+oEmd=)bD*RM9CT~ohAWM+dP25ea;;OjRRB9^J
zWt{{kL5tO5iD6>A#w~X*cf0H^dx|B+0t2lZbsOVz9P|a?JGWc2TT`K}&_Zt<L~~3^
zi_+3)Z?tn=T-R*xZ0|MyHUFEyo51z(^>Ei%*VrQLB5W~IjBG+Tp=0r5 at ecqnD^vg&
zhmJ$xEMmvnu^TZPF(7UjyAZh$nG&879v2!HIvYG2Keyq*;Xye7dOe*Yog(}gKQ<3L
z51WFfpeO+)NJtXWa>{bb6WSA+jbURLSw<Gjx5 at c({!Zb}xW+6Ji^SEUYS9<r7h#ki
z<<H~J<1$zb7KKis&!x<zbWQA<cn)_C_bB`*e8qpozuUFjb<ldyTCcCyA80zzR90J7
z`@Hgb<?8a)<%}{$*(LcU`B#84!0NKqWtkP36>qBER1K*gQh!c!PIJ+8(bUe-&H?)z
zSmUlE*AbY5txTy*fw at UIqx_rsZ{~o!0ePU at 6dslymUb!bQd|z034px{)SkQNchAqw
z&dr{cHY<(6XYeO5Com@^PfG4Z>_r5n5rMrNtZ^GW8$2*qSZ%4cY&UK<w(44SMcN{5
zo+eKNb(86u>6&fYZQ4HiK6+RKWfqww-=1$D?;P(u=Q-!m`m{bmfDrJ9{Grp)(@{M}
zk9m!IjRTRhcvk2t{%X9hgc|c1^bC3oIfjhEjlsDvF3g75h8R6ckG>AS4*wqdJyaL0
zi~BiHhxrrmOX!!7Dy#~_`S3mFJ!U*I9_f<MC1DJ44Dl%WC|RAXPUbOqjBHjm%fvBp
z`t$qqfjlc*ELtq0iD}}HC?v`RY!Pe`2zf%DkL8Q|amT60soRO$i3p0IK#q@!+r(|C
z2lW6e#s>4f3bjHFB42fPtL|2HtLPT5aUkw09|C}yWlC8}*{1SM<>pFrW!Ji{byL(+
z)bQ_Jv0t%o at ow?n2;K-funue<F^?#rNoW<U3RbJ2Rj?vsMMhz6VJ at x^S7?%$B%frT
zWLJu>6#oe5E9)y`OV|?l0nf<Eh-Xe_2xbUiHnE;oPy0anKzfKiMBhZ;L^%OYpv+t5
zr8p^0omFR at ZJKSmtiP<kro9&TQA6sGx}T<>riZqNR;g3QYaG-n=i27lb~tu8KDa-)
zDL#r1`jA~hT|%yiD+2G}p}3*AN~972QFIi}0e=FZ#`qEah(dq$D()%{=HlvNb+N_K
z#Zg{_7XkKCC<Oq$0XPes1dIrch}XExXl4}ZV>fX(aX;dJ#Q&W5bK>Kq$8oK)2fasp
zj+1aCoU6R6yc>cW0-;C<98`xWNt`5}FPbmH2r)uAPtL1j*Rdt3lK<7X&G^mue`0{Z
zKLM!O9&0|<{LJ*s)Jxk-TiQ_C&`{k_-BHz1HBLEBIa at JXu|&Q^{uAJY;)LRf@`<uu
zRj+c?IBIGeYa6%ex9R0px%G(qi2GLCtu}Ye9iQVyP)ATXOb&Ave- at vfPESX2kQ}%e
z&|A`5vOu;#w!3(D at kPKr**)1i$vcU&z**2Iw at +?OMoorNs1%OmjO47Qucm)b{+>KG
zVQj*9%y`W4;PGHPUpwDG*Fcxs=C<`Q_c0GO3^hPq@^{Ve;HE at i{6?b(jMR<P4KoZg
zyfD2m9kCvX*Eplg=#sWbTV}V;Ze0;v5$qG`6L}hY8dG6a*p0|W<Q{qtU4mZ%+{%ae
z{Qv}zfo7l)Tm*Lmdjkt+YM4V`5LpoE815K``9}CN!TB5Jq+pf-*1j8&8*vR3MAL9^
zHhe;OLa>soBoIlYu1Hytaw7Fa>d)+-*{Qr#UWuSY05z_6qIYp$=U36MqB+7j!g>68
z{41O*oNQ(`Ge8T_I*>cW=eX|J?*FTC>CSX#Crc;GY29hv(#EBYbv1Q00aZX{R+^R1
z6wefU<a^{(0o at ec6zR%zB|$|{0U5sfM8k;&mX4+CV(DU0JJn7wQu)PEaa^n1PTo$Q
z$(YHIbLHGC;w$2}S#Psa^HcLz7p*SRNp(`_=Uf2zWIh?p3jI;|N8wj_U*$zIBbo57
z|A+ezH^c}rqLe7bMgW#6){KR9|D6Av|AhO5ThuIS9%vb8$uwpf|JD7ggSjr~fy4Rx
z1puSN=*sow`YcmcJXcv|ud<^q)CIN5)&AA~J%K%ex#79tmS{^f1Dk<0;*7Y?XlImx
zXT&uVcz(dDLpuR-kz54USXkr0Xc at a7xgS{@UK?H$S`&H`d=p#*SPua9P$&q1=Q=Dl
zEOrWe3fmj)jdmb(Abdyqj&z1{hN7iuX|Q&qY?S>Q_cyMdujii-o)F#>-4kVqGsKmm
zO3_>4TcL~Z;*a5u;f9!@xF7d5<!cHjk(0O{w;p#Sd?dWZzs0}Mwa~S~y2AQW|5CrM
zX<gHc+84DCDj!rXD_>SlFQb=TlV6L^0}b*9`7dR^ly#`+P*GV`Sv9GCQao1)`_XQW
zZVstW>YEmx7QTvHMXE{FB$%xp#~H^NFB&iUE%Ucbs8v=JRupcMZj$B~=YzD+yW&Xz
zm((TQSG2F_>-?|tyJmOI-jKE-tv$aze?4<O^XKHBljjoW#{IbYk@=BNt)E&?dro^i
z&7Nkf#cDZhJZuc>!n#6jp*CHUuBlhotH0HJt68C4p>3ycr-!+0u|;g*+xd2wOF!;8
z?y2|H`+)2puW at IiXQM`p5%UK3CSK#R at LBi^0O$`40ze;iE3y^ojq8o8#nfWv#OB1p
zk#OYC at SovRp;MvH!Oy|*fFS^wvD_Kj8LA7{g)c-eM9VSdnAyl|1nNG}Q#?;TPqrjm
zlHpvI$I6S>xZeEUd~i()p`MEu<Hb&qQ^WzR5v&m~c}$+0<z}%NY{p6INh-|V!+dVn
zXxC_mwhnE458uPH^X#LIqm2%=L!DHgR4=cRSB<F{Q}LkeK^Z|oP>hq0liva)mnE02
zEMHl!s#L|b$}Z|I>Lg>5ahZLYeXw`17k>6`VQ*ngiKfKn<mTjKtYfTaf at gw08GSN9
z6h2p5pe;~Jl#-XSm$K`{*W<a$$+F3^?vm~j==qGx8JF`e{ayNb!FfRfJAutl;inLi
z2uV)ViMB=CqWuH?1AedHoA1nb`m8?dV$)*NCH*D+ui9U=Q#DiL8gsrTUjw8E?Vq|o
zb)OBN4U^52&HZfsY;zrR9lyJOcY9hqEtzeZZCRnLkUFA{^u_eWz;pSGd`7gW7KM7?
zb-*kDoDV)AACRNCqqq`m3HD{|Wo%@0WIS^MH4>Ozo(6z^9DL_GhdPHAg%^e4!axU1
z2h2U(J=}KucKq4IvxyB!4M~z at N%9K%3i=V|5$00PQcg3kndcRF<C&9A;!fgk0XIcA
zMLmT*g^Bz`K7~W!j7uGt3NuE~kAs=d=dtIp`+ at s`ecpZE70oM}_nP*aqME42R&T3c
zRlTbEMa7E>5WOq&$USf+M$Q6sQFMuCP7bRMtNyI{v*vo^^~NdsDf;`?`_^slZSEUw
zH`>}_Z85kzuz<QCo~t~-KfoWDJ}|vBr!;3$!K8wnlAV%AvPZJI;=1A%01AM9T-U;`
zh1+wt=dv<cnF*o<(OS-0&N2Ei`bP3b^2CIR2_rBgFt87x`Di|#i|6{=_O}hl!sY}+
zg5ityOML!*sD7ya0yv{Nqe<2!>lg-x;h^cD>3i$<)_u+Unk!wEuDq7KmIbW~T4640
zVq{{ZA=VIsp3QH_Z- at rfpl9)C at p=Hv#O4F~qJ2>g!a<&5pJE4M24cQMzeM4?FAYn>
z?L+NDzXX2)sl4v-^9uw6K{&G<jvS8ckL{1a{PS(}HhPb6k6<F1NHB-7E at fTHmDDS#
zhuMeO1-t^@H-c{jV9iZv5}D$8q35FKq8&m2e+T~+=M|@vS;_>~R!SdoAF?;Wo6rN>
z1KT&$H<aVc at xk00h#Of}=~n3mHV$n3qvnsA_p0}*2g(P^U5Z_b at 8sXfr2vY8qG&B^
zEz?!#DqdE<tlr$PIX=fhL$uM^=(PH+eyAD1-L<piv*eA8jSMH($^9VyAO at 0HR%w1|
z{?($ZMZk)etu9_2p9es^xp=K~ZQPH8npk>PdRBLFcd?SI<R+#jrh>>LRZq|ps<2hq
zNGKA5^=XcKj$3Ef+3^;<rQT3)SfN{?E7z230_p&a4XJ<D{H*z?{iwaJzpe+7AJbdQ
zTMHOT?J!3>-aFn4^BRu=j{?w}k;P=O8Q2-vd?X)Phpt0M<44DP6F3vV9K&R=PXPTm
z5P!yQ$85)d^~Kor$o0sq at T~Bp(4^4$;Q6?x19#Zqz4<2eCiGS0tN0uTv#X$#p~-|~
zLJv|8(ss&rii)P9ky1&iL^hHAi2I1!#&6 at _6W)var~||U#4s-eHD at 4+3D$7eaQQ4g
zD~X;&pGcWV$x6&h+=$y4_v2RhSNO-c#<<2>$6C+n&*?`sjcPhtd$bm2%=?%3FE=WT
zijDG(ur-zc3s_pVv at E+KyFyW=sG3$ktsZ7{-k9E)zH at x%808z~+ZEmwRv{{cm_$qh
zD|sn9I6F8n7Y|0i%+YzH^IV0lLYNKeSlqGr0|3t9YN=YfvS?*dK6pS2l|4FbbQ*zA
z;D5{fmib-scgcN-eTeOm_Q>$a at W`XqN3Huj`#jCyv0LnxGhh#lq$lZnYI|xsX*y|I
z)Gg|TnuVG at +CAC<`T_AduE<hk$+BnJM>t0~k9v-JDt(o{U|X=w60(H$M)yX6M1;AI
zyN?60Ml=<l8rMwVdk6LAt>{*C1F`|>j_Zzt+T-ll>=^j?{IACS7yK_i3qViqCIHTH
z)#2*!uhCzlWtcL|EMyikFkxWAY~pO<Rq|D`JK3FF$S7oVVs&DH(S|dQKaSr?*h#oq
zv{{rT&H|GhP25$~RdhyhM$nnpnMY^S*<UffVmzQepk5(fA*P{eX#Z&c=vQrDwXr-b
z57|z(_b~P_!h1$vr>{F-b-pUCBCTS5+4{1N@{h1J1c{R$<RG%AC at n87zgBszGEf_+
z6|2SSh#_KFYF}y};~f*%DwS9zmPuq1L3Ei0^SX!-5$?*^l`$lDNNyo`*iyC>TZ}DM
z1MUGf%QnkKOGZn27W6C_pEEw^pY(sycL{b0ptb;3qG&aw8WQwIUPNC+$pLcUsrRYZ
z?QlC at SYKFsntGbn=mFX_+CG{-8ff<NHGB<Q%huk}-O*JVDh&(G3(ezg<87N9n;h at l
z at 7(aN?bFuhe|{X?9hi!n8s8m&`Ml%!<8eQ371$k6pbE4GsX;E`F5&uO`(hO_MQmDh
zT0C<C;u4`)Fa}(mA3!R4KyWtzdVH(GtHQ9i?u6+S_v4_xcp&jW;)kRUN%UlT^0)MF
z<GTaUw}PJAW5HuVo+vNw#ldrfdIeZ55q#!-=2fw)*q{|pRVFKwjU;2-k9z{N$|r#*
z at j32j^U-FwbJI!NNh at uTHoUHWUCmT6Ro#@`lrU#9Nj at olZu=Gc74ZJ7QPrqyHMW|n
z#;V56`ptT{XT8h4%YDA>d>a%C(+TN>uGFqnEECHd&L7SPc7Iw+c1w0jK}ta{NiWF{
zvL9qHC-gU<Tvje~NE{MDp`dVi?($rid4?YFR?b$=b^3MsN%BcD++$pcS&4!9j&8ng
zz5%WQE~Cw8lb9uDsX=P+YQ0*RS141L0SDZmzNNXP;p_N1u7Mk`anRr2(!8blo$H+o
z#G_kAwT^0?ADka7jg&@Utq1E8*geP|<Q4h~g){C40PHQ{YygWe%x2%g-och)N->|J
zpW<^|hj52*w@|lu&I{^YaE_yg=%L(jZWzuB_ha{CJRA>KjaH+Lghm3m?vf@`CsQw_
zTuS+v`Z4t$`yRU=uOAO;4REgt`f+*UJn`?M-$nC;^Mq6QQ~3Ki`{S9DPqa_8U{WyY
zTEevisNb{(TZ4@)jV&J>9~{6IFb~uX)MYegG#;%vTJucxO!Y|lNO at 9mQn6CLQa&2c
zL(xMaRZ5j$6+nfp!PdNJc+t>L*G~uc$5UOYE>0__bwqST6!t!M$#==S7`qrAu7~?p
z{8kKB$+J4<cg#OkbgGCTBgFIPFz1yA*dpB`wH4Y5SLLnB>zUOvYqEH<*v_?c>8bQo
zU{_Mg2xWvv*hg5{#|`ig at E5y_-M`s?vwt#wGG8)WGL-5{b(b`kH1NLo2QX7JQ*%dq
zM+-e(pV4Rh+w!;NgZ+aY at 50CZxFh}}{=0#@fn(ug;rv*BY%+E-HVer at VD@z+eq_AH
z!Fd4Y^A at 5D(Q(K)BpH{CyN<bzfmxEuNM+=B_;~nG=uoI8SQGCjw+FY!HRiTZTWCgP
zMx-=W8qb`-y(l_?PUt}DKw3&!8u#Ps7<CNT>@DXm=icJq;?EM!68<du8OrCPTYxLV
zD?$}t#qZ7S&2=yxOt9vi0_QkkqA>9n+%LF`;fvwJ{=@zat_`m3*6r3ReU*NH)BdK4
z+KSqDmG3IIly50dFH0|jd04pf0qjWm!Loz#%!#H-Q#HSSe*II;Q_a7oe@#OjLmj<+
zy?rafE5c8ZCy1S7CpD!sr7Ykq;J}>V<IKmI-SWES)fCpm=Qx-Vg74cPfJ&;0XHL at d
z)APyM<m at 47L(+hx#2dgIz#Ni1B)J{29Z?Jx{<=iEM9#OKZ(ZqG=_zk6Z-)E!KZ9L-
z=*Pi)T8<`11AVF4n%SDY+P&K0`r-N`#v{gl7J$8<eYJD7^R?%-C&{1WFA0<c;JX2P
zL^hU<g*mQiV0RRr+eZM*pw9<fMX$!S$|1NRxOz-IW@>C|%oedl;F+%qtqNTTUI=CZ
zXn-XEcvl_`9}Q28PK+MF9KZm%2%#iU5{ik%#MR{0<WI?;k|_)dBb}Ab0;|28Z~5Qy
zy9&DscZ+t5O2j2#BQ-}nS~Obpx8QHVc;0wk2X+VcSjJdJ1+{|ulK7I?4ef?bj!upa
zX&cg(=gITH`E-zRkP+q*?RECLt5sL4U=OmXY*X16`4_nm0N=YBMU4XXEH^7}Rz_>1
zwVCQnH5gyxa~!O3n}eI<ejJ5JA#!P48r*Sn3*3U087nh7<aUVf$3dfCC)3GZ6u&4w
z0)V+nxI2(jkW<hvr(e#^^qc9M1e*jJmL^`~8cB_$cj!A*8C6Ep1L=V(Z<Uwoq&mSW
zoOPOMn(2%l0CtIIX=Z6$YL~i;ri-S%w!QX)?t{*1uo~8x*O_P8X2rG2Pwr3d6km$3
zS6i>P(okurEz%bG4)Yym6mAr*9;rt_%og2&-+{jcm<M=)zCb^MefIx%j(Zh*6&oEL
z9R(wJxGGc?_v2tTuO|S`7x3R)7G4$>L<P|jOi8 at P{fz$^e<blp;+Lc^N!(;^@<jSX
z`by?X=1|U1&RgDF-h07&0qjQ-#fjofz(&zV5%gA}cxMCOKhZ6<TPhfBl6 at o}X%Bu6
z{!Q#n4DJVA_FncLZa&<6-*n#uHFj}>IPS;63?9_CiWS8QnDH73SgcsAII29Ve4=`y
zlGn&<o;E&hggNgA)(6&g?se{?ZAaT`W3 at 3cK}_gQ?M_W#CNN>&L`o;6V{@=M;sSBO
zaLI7VM%l*r{Qb80ZE>TlQPw7DlVlfW7p~1+o6E>#WRgW>5zG|cqTizbO8%7$zhhw?
zX5Igls|41Xt&6#fxvQb8A*PLKp_c=76R06P&^*wj>C$u{`ery_I$)Y<ooQXyysr5l
z*FP at swFWJHTl=;`y+aa_ME;2V5&MMwgoQct`{;diC4MFT1pxMyu*WPxOHevON1kDy
zVZXtAgQ<_!N7qNzNBV{Pg@=TO#NRonF|PqYtrF(sFGns%PRCBiK(q;a2fc&dCfp{#
z&tEn*o4O!nLCS&D1F7rT>)9#16y8^YuLNbnvbZ0|7xUva?nmK|!nORh{KuTfoG#2R
z@%^}d<bLEpLLdQV2}g!ThG4EY&6(zGXK81F*^TLq(;MH_yo={5zbL;bVLk|I%)J33
zg-DU0Oi(&2oE4v{KUHsU*xmql(>ho>Sel$oPK)2-&yD6rm*SV=PmxcN*D}^J;C}im
z at vC@^>y+Oq|4h-Dc#T_Fys-E+0IY=+&y~)VzAJoJI5=-`UQ$+47Q8Q>a-VYH_q{kM
z4oW$pobVp|9t-nyKlp#}&vMUl8|_9r*+P!{ad0oks4;4&fHrkoJaYmEx~KZ5dbWve
zf*FSfdxM?fVz?%HCwh<jkNfWg?gS2o4~ElY>9LX6kysYOLgu1#QJBetUfeN224E~Y
z7VVAnM%u7#@yrQmvtmypPb1LhUK?5)f_wY3080T-M=^v9A-FFI_aE0{*J4Ge2&E7x
zg!ZKNq?MGFl)q_z(@YFgJae*>yOaB#|DL}^xJ7tLbV&sLZ<R<D&s9P{Za#ND7kupm
zi$<r>7g82ddL;HpyokGq`z!oc+>hJk+7-{7z}?QBO*@<3*S at cPSoyGWQTd|sgtCOP
zWAbD2Jiu$f!m@>B><V_pld30G{p$PG!(7g<re94mhs=@Z%k#nf^-bg^0*;eZmr|Fq
zh_i^ZM6^WoD)Uw5kh~#z&4tZ{$E3%k-HN*vs{peBK(3eWF4|qxE5BEMQFc-Gg0ux`
zeDKU-&SK6>o|in7IF#50>4L!D2b|+}dv<%w&E{skMIYBHfqktn(UxeX8fn}|g?Hw5
z?RITneP8_+;}#>F<6!0l?r)y*oQi9em;fdK_cIPf4 at IE{2{Y!<2VjBS#>0Sf0C<MK
zpueD-kWEN0T(5YITNqmy!$on?$KX2`E`ohjRZtb24)_-E0I)B#FVqlj2t%z>iBV#v
zA=8jjuqQd5I6m&j)hE{{Gr$Aq>N-vxrxU*upCx1or-`P;_v66V8HwPtRj^f%#mnL$
zY=m9JC}P~D-lbkAUMGTeYjkXMY!qfMI(RyGz^apdmT{I5eqMnER{y!`bJfs_p%vH4
zuEjMkm^nEJfV=#o%14#otGpMlaRRkK?J;-^Q|(jjJ-j`<bAoe%x3Rae&O~QoBsr3N
zi*<`tC#Vz5%$S*x3m#G-DZT at 40p=#mF<%3$ldY4Dk&KZHC>T&MJ7;#zm-H`jtrA3x
zS;;BMDKOUtcd_BFU{)Y2p!6!eK)Q6o?~@s58fb#q2{^}f*L2ssR=-v!X_7RE7SW#4
zozguqJTZ(gk1%()b+^rO%yQgx-*mUNw6%b%xee-7?ua`A{i5->@i-G=LZWCiu6e!3
zzmMnhpmym%9LN*g6Wk>1B&-E2nyiVgiKa)=BY{vLlnQ{g?f>h?Wk<9BuUzG>#9fKc
zlb$C52_<;|eE=P1ecN-|bAIOm1i#1qIG7WHI`eeVbP at D0Vf|CGmF%q4tW@~DOz>UU
z0KO06aqMvn>ON<^XT4CzgL`CgjlChg;a>H<YOubd%2(zqyDGXW2FVA-eVvVpjf(5a
z>q>=6p#tkoHL6Bc<5vAvJy^xELa*gs+r79}*^|(dFp)Zun#IgwF6S at j0~srwlf%hr
zSJ19tl4O!(r);O}kK#W-g?n3EBddweajZgC;oRK0xxtKJhD+!Y!hUqm|0(Odqno<2
zHGZWl%U!lyWOccBSq1_a2n;15kiZa3O&$brC;<YY4=oHP6P^i7U_wG5fgu3~2os74
z#X!IYhB6EwS#mGJ>ar|bl4Z+9?d^TmO4fVp-S6KlSkdL4bN1ff_d9V1;xLoEfW3e{
zkD5mv96U&Tm9IHpb2fA|bRh32-;{6i=so%}U77Ax+pD%-5YBam7={=WCWYyo<(%bH
z+ov|1Io3PtooPL3Jq!C5_N^UUJ2>7y-VamBU>&25v4`G6<GdF8b+<wI-LXOGtaMh8
z86 at +#QPe03Jxj~|%l$)qLwuvXqrK?Q#C{jf_c&gTH`$l$`=|e({<Fce!Ek0c6Klgq
zp^u2?1bvlzxqG>n5-uftm-JndLZ}cHi;GFG66-jHOd-1?y(8Tt*&`_xm5T20 at 9>Kf
zixSyfHg|N?=qNke&K}7a$r$S$>qSo;+rf5Vc3^{HgJFVpg7#eFxyFaJ4{NWeuc$v)
zeXg3LoTJPEg{#6<J=HzcU>B~bY^ZGbbL*d5F*J?6N}R``uTl|E1a^e%2*Iod)^R?8
zPtYK1konSm>FB?^o_{?*S&^(j-hvi{PiaAEfi6!+vIA-9X{1+KEvOdY;Q)P=SidS6
zN=C1@*SpTM&hvrm16Py1$?miItjHU~eB2Y=6J1AJN1Gaiyo?+A8+!DAb(%ZP7uzqk
zSJ*4;-HvX at AKZU%mwHM)KLY!!%va_^pX7YTd`1SHLGNVkWGxI?81e*E33?aw->m;;
zZK5~PFuG?xq#jc52Hy>~``i8h at co0#b<n$jIUSr0xIsFv&O6yZ*^htj62=k+#iCf~
zV~vc6jF=WZE&5RGq1b!z_u?yf6}%EbiQtUrjHpCXLU<WLX;69(gxnLr8;L#;d?4WP
zIHXs(DtcA)_^|O|=b7i3_kH($S3Fld-#Wi_p0J&;S&dfX at mI%RwKlajp~rl$X0Il-
zI<@+m@|yB35N5y+R3E4=swt{zu5Yd{X(?&J^V?0!P0O2IZ+4C99o367jbG?rXh8Zz
zG;kZZAM!usmq<%Uc3 at ccuxxdnIuCownEl3l9M*A-1&sxp@;BwnbL1o+w>Wuma-t}a
z_$pV$tcocPFAm4^0rv7A^gZZ9|3A*-I@>$jkC~5|0cT-EKOW9=F!M2AH(!Tq=WE8-
zjGN4x{@*+feU)JYVFO-xP6tj09F&7nGL=lMk+83fGo6bdoX714Uu7v>N{?fXV>VKa
z)JMUOf)x1HagY0l_aDSpiT*sC?K}qk=>5^#?dvAFI}2r at Hq)EwVs<fmW%$bQ(^03R
z06!HYju(?UPRrNwi$q1D1W5w%Rr&$s(hkB5IL_k)LILqrrT`P`9OoS8MEHqt?5DmH
zcqf4MOh$J`x6CfH7n_UC*e`-HVDruToAo1VM$}-vjq}r75PBEDj;ETenXI``cY*XO
zagXaa^_y1PSKDW}XSjC_?izf-c)^GZj|)$aO^<EhHSo|QcqsKyYH?O^*3i76dC3LI
z1rdc2_?Z^|3c__0*UvX|-^^W*xghgi%Dt3*;(er!v&Y(FUq-x)xWu}|x*E6|fVM<G
zdggUqx~?m>D>ksNSXLTW8dvLA>yash8Sq#L9B}j;{RP7XL$#^ew9>lLI<I41M`>3n
z$qs=1hOoz`K}HI5Y#&n}Qy(!uVgkC2#<dZ9UD)%&oRyZPW#Qh382~(c;tXg_U`-&=
zpXkT4O*m-B;11$lz%>*9%$>fSzSKZ!pol7>E;BDPasAmBwlAzQvXbm^n2-BykGmiQ
zi7$x7QnAzqg4ZI$bISkT<1!O66JQJ)gL5J5$K4Cw3*H^LJ8;^4n&ji~yBVS%qR(v2
zY^`XhXh44gj6BujRO3|Bl+%<;K)Y4D$sVVyRn`JRq*0^QkY42r+Y913xzc}yWCzBC
zjtQN|na4><Oi5fPS|>_ at 2mboZ|Lv>9IV#rR*sDbUP)uG--r}sqS?*MKs#Ri at Ea5NV
ze-`&y+=i$PQM1{z*;qqic0kfA>4lNG6XJUvsn%3$t|`|9wk<t+s at vef^A%=@h8sYp
z;igNLOP0 at VpW9A$p6t{)bxwJYyk|w<iaxBn-uA!ke;j-qY-6;MUS$=liiP|Czd*-9
zu^`Mzh0>v<S2>;<PrV4d2z>1Sn0QWJ_r6YgmD2{N4Q>EMcq53f@|6FS9~oijTffS>
z$|?^n55>$zHYc02hP#G)IN at -@uB2T_al$xK$EhSL$#dy*X_72Sc2;^;x=ylAf at gzr
zemThw;2t+VYJ5~5yN~@A<1I$9x7a(ncXV%>Bh4|QeMI{a!x6&@?F#M7#+Qv?6RxdO
z*Qt>uv{ktkPA5~98LA9bq&iaFUDI9jyy1Dn-qyXXp at vWc;aEEA9XgNBgGOrPU?J=9
zllV{KG3Rz$c3ak(-b(UuNAi#4(+XOF9Ir<p0ccIZngV5>lK3i<(v#AWKk!uWlw=16
zq6eZ|Lt8^t3>5?WfSWy=$vn<vH`&A6!`pQxoe6V&ExHyR6NLL5*5VqyMqh3$H%42c
zEic<&wl~-t>|7_;xxl@^ecW^0b9><Sz;WO4-{*0;bS~NB&{v6>R9q`Zfj(w^%$iNl
zCVZOX)Nv|1m>s+i{29#TYyuWy#b5<FQ{r0L3Q~HNUhK^!1(Sk{7>gL_r|V{Svy&o{
zB5<a5D)v;YI$j<BlJ}B_^S0Zf+oG+Kt&-!?<I)6Kf=n${lRAzeW{B4b)(If$$dklL
z;&w#uh at KfXGwc@g7PH1z<9q0N=(*s$;KX$YB6-G3uP(jnYU*lgu4}IQo91ttoa&tF
zo64KuWS$HwW~*{n^{(pln)I5=`pWw8E#q6zKU`)hvv9k(T`+3w#j_UX$<9Zdk2uaf
z&c!T|Tq>8Arj at 2eW=Ce1=auJ`6qFRi7RDA{1HB7Ef9#?BL;1xy#X0X}ypwSx`A9PM
z at XjQjNi2^kk2xNGJRE!X=nszUkL+*hZs~rl>$R?ITej_m`Gr|wR2b*#=aRXOtIb8S
z1MBqb^fIH&ILAE4+-vQ%S~@HpF^(8Vad&a|SG`~L-t52GkKX?off<1l)Cp=2a}U!)
zdk8NB*EZ~vW5yBpIP^HrX3l1MC=azSxG#v_yB1#y;hYS@^EqfUs1EeA_h&Eq({BfE
z2XK$uNN=QPuxGH*H*+fL6xrhdKNFwH%jB8(CO&#jk|oI!^yHy8uTR=1O#yu_{#=|U
zOcP at M5u&{DKXHEI;O~Ih0i4H;>K{coCyDk%``hNX&Du6?o2S`BI48qvhLe08pp}$E
zK*)w_SGB8VYG!KCOGG!*zjIDj*;f(I2{I#a#*e|V(Adz}>%8kc*apSRQkSKsXQgLB
zbTH2)cgeBORaID3coc;BxHsi*%17jm$eo)xH}ihV{gfl(BjP?@9}ihbSjPcUg=GvF
z149Oe3>e);x6mPUAUkuZWvS(a at dRN)VRiuhuvmv@=ri<p40jC8re at O`>l*9aj=3E>
zx^{F`x++}|Z|xn~5Au#AbzCu3OigD_Cwv<8RbqDFCr}9p=YS9Chx7sF0cI{EmvJL_
zBZ$9Sm#>SwH{+m at c!dfF3kSD?MtDbf*Z9`>gpfVNdE5=)qwEjaAM!)k4`JF!E%BTn
z6ZT-@!NiaFAMqjTBs7Ul;<?hf#N#zeHi~4xWfGahEHn#kNw%cn3B!r6QXip at z*^;8
z at LcfZz{!DK?p^LxovS+cS at v1Lf~NPhcv|)~>}!A#K at CgIQVUf=75Wx%KCn);PIXd!
zQvIU#MXj~b+Ng!+knxaFXVclxhx70LfA_~wG1Q#UIic%0>p571d at lN2G%RIU3i8#8
za*J{o$rq72?n2=Ocym>S)rx9`QErq+=0)Z$$Xbx)Om(J0R8q2-znJWC=w+YJp3k03
z%_VgldM!peM><<OT04;KI at C0jWWaHK)V1l_`ao5>DxKUQH{kwv(sI&*Y{31U`#YaG
zpE&{H+B3axdf%eKMT3R at Lei_me%cm#3w at Dwk%d0kn;@*?B0+MNoE1Sw&^T8 at W-GMT
zNw0E>Z;B818f1_z1K}Js!<*q9?i=p=)&DD*$00ujJ+)6mpN0Z1I${iG3}+X27xz at c
zsf7JW`;*YCJWf1LTqmiMD5Xj%U&fbV?`xF=Bw9s$l~@bI=r=YmDlh64`xRTxkTdY#
z2ViY_u at 8ZD9C|k<YbO)W$+OyLwH4|L^_QwIRhSzX28vh3tNhje>h_xUnx_p<Nv|^6
z5N#-GFCzIk4?IPIq5z)9%A?AozK;JoJ_JC55D}HJGuRn(bLQs!n*VD)pcM#LNMEQg
z90EeWUQ1p}-h%7}+5B{VI_CQ-1(gD5EykOp&C!^dxWTx=X!bUH=XvIN-g3R=dTf7e
zhiIeqk?E1C#86^*q<f@;QWCn%Ep5AXyLHd?&-E9L7s(!n^B>F(pvP#rdpXGt{A=J}
z1803_eItV-iN_yvT)SAi2xk=E8|HO}fG`*SHvKm3XZT645_4}A{t7?Nxz~HwlYHF!
zkg>uUfd!=XYQ69H-|^=M^MhL$TNq-NnD8op>s8)~y%UR^X`FqO3CaYIM2|$DN<Jlf
zT#PJ6_Eh>*dRKB+0^=IdJi$Bxv`~2gZh-rK^!w3 at Fhv-$ihl9^LVA^uj&mNh9kp4E
z7URiRCtn$xj7?yhtUIhZtSPK6tVT}dT#yTNr1}V%$F<bA)GusV*n<9H>`h>=5(k0P
zeA9e~=tFd6L}kPk?iDWbl}AZON%yDiPm9Zr%f6m>o$PTCJt at 2dnheqwXbX1d?<T#<
zkr^X1{+#^h<WZtgqAwD^Nc=kH>lox<Arqm at U*_-X>*}lOuId(a3A$o!v9_D$n`Vho
zVw|F%qQ`tyXIp360^I`L7X21|o-xn3%)HEu92<yi*b5v5j!oU0x^MK}=xyz9?SBbO
zr_F)Qf&0{b>J0M?6FFJYA<@LcjJ?V?K<KM1qs!>2%&ANhWui6(Hw7`*f=u+Eyg!jT
z4&NERyL+Ic-lJZd&*r-lxDo(ME`{GQa!$5{Zy_u%Ml2(CO#GPm$-K!twty`t5tWG0
zi-*1(oasb>@JxW-jTB*u5P9hk`-uOF^A!hw2Z;62c>as+kL`E6+%9{Ey(86}YQEie
zyA4X~=I`sjug7dhS#?>pR;g7E2O-M~5RIypnw6UBy6U>L=CtO?ZIjz%W|{eb{eXRy
zdzJgp;GseEbH{|okbK-d-aVc{Y!H{EmZVCuBv}Kw1G%^^BHOpTupDS!UlcA at ELMz_
zkChM09hUoE=6jjXQl6!p5uXu9CPgNtanrc4%|&81n;m2aXAR66U;%Jzgkyw*>YzF{
zTQ*zH8qbnF4tYYFHVvuc{5rqx3&R%%oR2H43Tr|~LdVFikzG4oJ6(@^9`|_rynVEn
z_9Dw`2sMNn$s9?1m3Ee$g=-|%12~tnv1}~-t)4QUGFLKIGCaVK`b*$1fn0yCKj00Z
z&De`G$eAGIWxVBm%e&dPnatycQbQ@^T%u3&aM<B6IF3iA#-zqzKDsQiEO9A+DPJ$t
zlRa*pbROB`ieyEyFQi{c;TS0aET~YEq)CGEJfSM4Dn=EdidYu1EaYVHWbnkmiGfmg
zse41`hR$y+-&nvNtq*ApX+7F-w82_qt%+7gtCLm9D)^a|Z-SPqma7h`52|n0-X!z5
z``Y{3jmC|}hqi~dFI``f>;U>ICxuQ5UCLR?8Jakh>~W)0MyC{J7G_S%otC>zzD<5s
zaaQrH at L8b&<W{&9>;iTH`iQn>ZOsZx3ric23=ozV_9~GPjQO}f0+Sj0xmZ7EI5V98
z?)Y~{k~PT+m;#ekZ`E(tZ71&yb5^%>w{*zz!aeRZFv_;uw%c&#i2QF^kE~~Y-+baZ
z!E^id;PoK(47So+X=DW8+`Am~1t<s}bnI1lnO?&7eVuxpdLDRAI49$L<H$S?*}k~P
zVINfvoRbN at 34}BHB={tl&CF)DvDygdBswxWawcac=PT}4+-nKf5{@MuOUf2z3*QjG
zLGp3P(Z#j$i1dhbzGS`xc?|pc`}u&AO00{mi;aS(ie1HyVZ<<mUZI!nrF$J+jxO{l
zt}?75y~@jtmm4*;np({1pH`h#ZBuR|o)gT+WvVmP3AG8eJq<k#zqJ0+T4X3PENNfT
z4hT&r90U7`1I2-F!6)@AaBPppAB|@S8A7nA$Xw~J^f5VOi033&5G+_&xR7MP!Pcml
zUNF7jLf(bE{OtT}dzw8B#;~#zf)fH{gu_3b=-Z*UL$5NfG9ZfM{m}EF2k$$8*JFo>
zW_!D--L%iJ&j76yod6U9ItOy<o%)x?m&P1Rj>Xz;ZFkrmc6{Hf-K*VaJ!d`l2JR7G
zC3;TgG3GIZw2=OY^%0rJVebULJ1J-;YbMFZp|^D(wU6*BZ}@NcxB9k{I__8Ci((Cj
zJ?r1*akKoh{K)#-$=Jz2KOG#eLtl${?f=Z<v^*_uuVAm>q3EG#yJWlMnDm%5N){!1
zBz+`BekHQBX9;Erkm29Y?dQ&pp8Y$^>pbN8aHhE1x!YN0E3?%aYmI+>_19PGCUw)J
zx<_ at Tno>=2bu#gsVDH2Z!aZ(M&7>N0y}5pE%i0#~!#}V*u*~S1(KWGmV(&)ZMqdS8
zL0coNq*sY&!~c^0m-JlPxwNe8tn3GQ5Atws8dexq_yb4*x>s<oV1EAmd~Oamhnd05
zn4CO086x$<8HqDUKJM-Cx5LNN<7xEZsQc7?$W>10O6Y>4vJLODz^wO1{YL#--CAr_
z>wW-L>MQlgin<Ie{+aDF+b7y5+Lt?)J5F_<>c+bSy8FBPF$=sFGE+ZOKU1a5Ql^PE
z(HfS9H9cfHRN-?&kn=kZG=?5S2LYP*BlRQk3N`o}{KtI9e8 at DxEF<o5%RxAsyY0R0
z#eSF}U<im9BE}W^3VoP;n0-0?ayVEZqlU%~ja?eQG=2qd1y3rF3f7C(i{6mDL41|i
zH$h$oaz<B+SBnFJfS{UJ&2z>%<JNH2a2AFy3~!>FXgWX#z~<GbbLm{rZs-u3#pa5(
zingZarsh-ir|RW3@|v%!zplpjH3@{An(*rI>OX1zq|w%C>*USy=6BoPZObxenei at y
z_3rg<%p5_4oB=l7aA~YG7Ck4O;!g3})U~NOSvgrDc_DdDxl at j_9P|nyFQY_Jq8K9|
zBhSyx&z+VzE%Ro|&6ES;1L96zCy(M%T+BWzSxQzzpn=TeYTdQ&2uFki?;I(%6kGNg
z_Zj!<_v)wWrs{AufZrY9-}L7V=MB$H&rFM~i>&W-ywkC%Yg5-<*IidwZ&>fx{;~a&
zz{kx9Faj$m5OW0+mL57HB!ZkLRUs;}RvK6amW{U2$T~pYU>&f$mcYFcA^s45gSWx!
z9CQ+{5Z-%$UZG5HrgyGyuFnroJQYtEVK{I2B<z#03y~Kh`#61^F>zz!-b;Kh5m}U1
zg;$BMvOrouGT<_JK9zndO_U^(I?kQsPMVT1CBYrzjtPqli^R1+3oPQ+f!2Ws?g#Fx
zomV?+Ewz>z`WgC3t&>_YC!AKBR*U at Qd8&D;rOKtsEuh1y!z%Rbp|28<@T6C{!??p(
zWvjB4x=LL~;7$yP83zG*6q?7$<A7x^VYFzp2(H;kZq8`V=*{WPNtP$e-&MRzJm}vR
zep`51aar+P{#*`m>fAY5bFy5iu2hG_A;C<<cX8jvVef1!dn<bzwT-$qcx`Z6 at 3h_z
zoF6y=8EeNG=^WD>lf)n)`M5w^ppC2J>KZ_k43kI(92sTUtNgz6`_4vZqca6SrtkN?
z-?wUT)!=V?+)Ktw#x{BzspD{u!(1btP4G;_2X!;Mncp+MXXH}3)D7U9BjZTsllii}
z+2m}3*#Yz~V9qMu7w`MQ|AYVU!M_KY at L>NF=W&A(gAsUF$wBTx?yZDd3Fni}Cyf)1
z6MiWEQ0$lZCH>NV=_J`C8D_!1mV7NaEIKUu5C1=Wyt^TRo4}nCHHGjhCom>3 at C=mO
zo7;<?DRH~FeVbvMVTyLj at 7aNC>TBvURhbHF0i4INRcuvPbyszLO??f{T0d$1q}8Q&
z>A_ag{>bsjq4KCaF at c!C{E+z}pGAEZwJd&Fe4U_9a8-6y){x$ij$A|RRsP2ELbebb
zSqeWb__P3GQhBShS7#Td7pDJF_D7jnU>4wciqGM5215r!JAv7WzsUj50nawqHdl|m
zhp at cNCNt?(*6Heq-vsNpZMto`yZXEOW5#2~9&?ZRTKl#3N_(Z<>+m{|)xO`e-}Cdp
z&jW{jhkbd$Jdz#2J0Z|-z9eJ`OuwIo{0f=^+Roa}T0$?O<Ct;GGt?Oh|NBaRC8^_9
zdRLNr2atdM76|<(SG`xgBEQHF_}Kt at pYeOuvbAi$P(;j%o<(|<jc~tE3$KM_z#B!4
zqT`a|65QJ+$|lOdhA0CZnq-K0i1_b<zYC`Frt-$ejgP~-CYFUQ3wy|X$kg~Wz6wu;
z=NsoYBm<5)z+JC)y{c%cX!^14$GX{?*&4gbPVS4~C^^c1f{=4U*U&XT)&EpKyk&UH
zLES;!x0Y`$`Ca)W176}Q@!`6T>l^YaH}E&`H%m85pQb%co1Q&A+n#49*#TsqqaSt=
z$X;MC_$>dk{Gyzqob-%zk^u)xhG=o(;=~m(D`IAZ&j|km{Rc9SdjxlioajE$?e7G^
zK=YFMk{RLQv-Gp{({<Ca1rLdjJ-So+Q~CwQ1xB3Ljc*^{KHNUs{(<8Ik^yh(ZR+iZ
z2hTb?13LqEsk;>V?*{2X+6pXR>~-OH7Y3RJ_a9BBC(~>un|Yc#O(8!NS`hvNz5~8p
z-d)~XgSWuN{Kvt!K^36mz#i at M_4ytL9tS7}#W+SEqtT;wD*RNqG0GSPE!x<X at hjsu
z at HX(U!H$`nC6XnQQ_ at pX%(`HvbF6f%^c(Rv;w)j75bz+Rj{B1HC1-p1_V8}H8wzq>
zAhbWU-|Diu^d0&RzL{^n+;+L`dGqt;L-mL1`89l!9Z)OP<a@(jr9<UVEz~U3;MoP@
z$<3qNMz<xH6U=+;d+bZxOWZhj!F2~YCtyvAy~Df1(}{Jz*Kz&1{khPJlD|;AP+<N2
z7ZCEHhRKH!U**)yshJfi6)A_rhs0QWMsuUNxW<@RCRTT#J1}uzBFV?e9dZYhxwb!9
z{$#mqyllLnzo7qE_c3hNt~Q*@W$Ux`w+y!owWeCrht?0RQ#+=1tnOOfb<uUv<?eC+
zo{!V|wSK(6V*=#kUeYgVBg at Fbz7MXIYeCOh&q;RRJj|Uj1Kt>H46Y8W4)FXuKYYI4
zC=kvdXMsqj7&73y;VudEx{amAk}L_%&@emjIP!5MCx#O<J#Kp3vczSHqxhrvSA-z(
z6>+jO88LChbFxUfNQ#-cDq)rIS<<s4Knx{3j(Hr at 9MK%HDP&Vfd9XZ)KJ4$@-x1CU
z`YMM3gD$@{pJWI4wfx#i>PhPNRPU+QDAy?Wf__r{q|&H0YCJ%}wO~!~zpceAlf&k)
zmAlGaPx_zq!>FE`0QdSJn-T9cS|C~=3P}k`ab>tN at J<LAbIWHcW-2xoZiE#0{=yTA
z6N>Bd>vCjy4bK{$h4AP9Nd6;1zv$+;&2g)vR+BmoeXB<Yj}8v)9r}9)e1dg?b*gEq
zDIOq8XLM&s&I&zxxNc4~Of-x&jU`Ox&upLBj&&X*`8a8hv}bPL+&(-D7Ws=v9fva`
z%z&fk1he)JK-fD;0*z*kW+C_Y3F8Uled>M67O({l!2L+`ee-=wyh{i_4`*@s-jFl;
zy6<&gmA}e=Gk7zI>+56IW5V(R^mjx)C!e#LyPA6-;XuOrr1eRZkP^ZORg5fOWHLKJ
zJ3td86C at Kw6GeEB8I?#S)<QOm8^w)!#(u_ at F=Py6<R`;@O>vGm2hP;KHGFH>sNJZ=
z87W+^Q3p|2O^d2URjw>2vjMEXr>m!{ht>|Q4Q&i<yw!TE6^m%RSI_7$I-ou6L0;0B
LkTD^6zrp_iCe*Mb

literal 0
HcmV?d00001

diff --git a/dlls/mf/tests/wmaencdata.bin b/dlls/mf/tests/wmaencdata.bin
new file mode 100644
index 0000000000000000000000000000000000000000..5cb4e42c6e8d3317a4743e8e06aeade5e5aa1983
GIT binary patch
literal 4461
zcmeHLeN<CN7M~Xql7N~Jf(W7sF<?+JxQ!(WLI^}5Y$Qen3n&z|3aB&|m1Sdi#;^)i
z3^WQ2NC-^;(X^pOu&59eMWyngf^7jwQ4b<*#m1Bm1@^^O*Y2J at XaDN{<IKD__szX?
z=e;{KzkA={0km&0becTmFrTx9Mi0K*nl9KcNRGZe0uNCjy<Ykrw-Xoqz#YdW0vvcF
z#kT{W6 at z=H9HUMjFuBLu%Z6m!%tNJ at sj}%N8IJlNg&F-mL(;$Suu$(aMrWadua;>`
z54HAA;`520#bOz?Vqv0I19dkrB-zypIX at H?R*~fiJ^^7c-4GU^7a!*18qccI6~^Zo
zZ$rAHi at JTgZBlzvpPv5w;z!YU-NG-1=Y^3-at%u)m$m1&^?5%P*Jp5aNqw<1)V=c-
z+PuKvfWM`{^Jm&t<|z%eR7I(u7_0QhECLH*p-3jzFhZ%-#31wz<YEM&i9sF6bq at KA
zN*wi|7)@LiLJYzP5r*cscG_?ddTt|{xC{Bz3&bG%MzjOcBkCpP)I{XTaPDc;oRGQk
z2M^1Z5v2~#mO1<Ee5WhsYSFK4>h$|L?4nKDEQb#~7u=~d?A>SxH~dAlyCyBzxPyZ=
z3QRVa)@9b^wL3;QZT{Pk#5Mu=W8}bR$Bj6>Pzi at ln~Q=X0#K0eCKN<Tas8;fxvlKn
zP?kP6m*#gWvP9cX(V>*>nRUYK#Qxg&{7X?LCV)&!I5x5m?v3GT`c>OT at xvrGWIi%F
zZ5jwPZ_e5*N=Qi9RWKG!Fme`jw|YLUU_UkgeAi9Pz8ITD!~+FsJ6Sa+e at E2@zj at ge
z5_M~D@!2%I1dL951f+4L1qFDfI&%3pac~QV0G|Z5(@&>VXiG@*)8-K%P<!a;vM=HS
zEX{677JYaak>i7hJW!u-q(U#|Ay=cg=-1DTe1Q3YY1|KEMhaQ0D>JpDyru}K2X=Gb
zWC+Ni>*eI8re+vktA^oKeMJ!qf1%A~neVop&tdnA)AQ&YI$DWV+6kbsXgmu$*pCl?
z92n?3aAufn0K=|C(8wIb(>R{;n5jMGe#S_|#L-mj&B=A*GB^*)ItGEu^N$KPt(X`>
z^jS{l(YZpo4#($`l<urjxt4k>o0Q9q?E31vra<@%Ai$r2=~Zompny)**H8X+*pUi`
z$!w at r?EC||>4}l!eY at 3j_>HadmV9f0Kgj~K07$%Hd18*fpEKY2bS`Z+i4(@rw$HqE
zAWXu(Iis)X7~}wa at 7W{+r?NQ#`#6;x)q!1V+_vi`KPqJMAlhtjdw!HDL%<+|C_$s{
z`J+(*_gI$nu at Swv*;&8wS}q#Jwd2}F+B+xcd0Ek10j^eGCrv#v?81hIoeZGyT}jOv
z?~1tkwjGWc(C07#@`JGvEy<}u5&G%{G^*!Ce~RnhS4f`U6nA|Q{WUEFpRI#Da5|Q7
zVw|Y#2)0zy@`v7A`S){~6etQ1pyTlD%|AVJr=x_FBFzY#hro*x#=@64Sm#22ZeA9W
z>JqB0o9 at 1mGjH&|VB0bE-g84y)>kF36_5kNABgg=NsnvAWj&PR<w27+Up~UF=(>O|
zLcGBgGz9GTshE$$I09zF`pc$HiLDGsFxS944~@y;>u$+OkWZ-nku6*)HBvpf4FR8K
z1bm8 at +9C$|oP9q^pA<$90tzcW3cVP37UoNMf^FB+A0t6)fy8zg>^`C`-LwAN8|Ne7
z?_t8w*vO6_?-ZOI#bNx at aA?U`6Jim>zE{)6EV0S at O=tJfLTJkN?6q7k0Zy8KEv7t+
zth3ms{B*7C_~|{H2U=ozY14*58UX<5Jd;QHL#HHi``PD>i_;&P*a{m2<!xl!AhEbX
zgAYZ+p`?0b`tq$)DCw8J^b~9T#zw@=ZmSnR$RbXd2ZmBks2em%$LrXqYCFcIH97Rj
zM=#V3ygF5L?Q+R?!%~}XK>(^71f*YS_ at 3g*v(0Tv{>L$B88R<)WM*4|Q at I17(2Y02
zuZr}1BY7k1=k6JY^9RR at ce})Vx^aNSblrVX^8BvrZxb_H#__=Mw+D|S4nR?(#11et
zx8ALKVcQD)(F(9JAXSf6&^3gvUT-yOcy<MXt_DcIWLJ!I3{Ra^pl+f-;B*SRIO;)&
z|DUw4-VXED0{;gK%zp{z<|nV<9EWkoxI0D8XfYu1m at Y}Kv&@|8E+26C%DBadHEyBW
zpug|2!f#}Izb9UT-3#2p`Nqd-m-`C}3e*rNXF}ju1N%gjf8sY5^Utq>Py+(!Yq*IT
z%fju}yMKaQUvJ)&(pWia#|CNBpMknKuTo^oqEs30 at x;z1Zz5z`3`4QAW)#y!LcAkr
z>Rm>xM?p~m;y`48+M~;g1NQfbn;k#ClS^ZisTgJX*K{oR at i_OL2xO0X7w&F)YWG6`
zY84=-%{T+x&{Yhy+;z=(?by&H>J)-FW-vDe>ewZ4M;}<S#5V$l*Ewg22S`Z7OJTaE
zU!2@;jnl;GUz4aXf^&S-S}sM2E|YsJ-FHr@%$uf18AT?n at xu}<`cuAeMrHn;<#D!s
zkP%QIPuT7 at vrF-!WY)>%ek=^HuPqW-eMUyQHP-Fy$#USaI(V#?5UjHh`t&rbPpYSj
zCXy{<rccdXY193I6 at xQ8Cr_N>qmo>O)iwPK%Ws<e+HFi;M4Qq2-YenHs0vR{j|?PU
zB_J-Ntthm6bx3e)P0Gp6p-AK}C3uulal`w1qv*DI7w at 9~D(E&Zu<%)o`Ce{{Idv4b
z4w{-j$*ghhSy_2CW~Fdu$CZdV_Hh?<x9*X?fabyEjQOU(P8a^pOZW0yuWP#VTU!iO
zd*>*sf6UY!mQ)c=Dn=U!A3qI}GMHCvbAyoRm6(WQWlyKca)Uxkv_cV4#PGts$^v&=
zh3w6&q-y_|-Cv3Ru|}d}g<Shzn12+tKGCTP85fUK|EB%r^Y1K$j6+BLR{r%yFFPRu
z$QtE%0WC^lt*jpRbwN0<c?fA8<dwpgGTPsDzE=J}62Yzc>r;Fs;^h3rVY}Uew^BYn
zG36XHchE()tAF;Ts92ZbfJOR-3$|*uvypGIF|IDbG<j`}ty}3mwL+FqJ&<N+T`C*E
zK#SV@!|q4^5r(iU#XakfoE@(f2ZYv^Lk(?v>VC*j-m2k5uNrjW&B9YkMmwd&%QF%u
zihZ{_5uaxtyXAfPaDAwb+1GGC!X<{>9*4an9M7Rvt0<XY)`pKfYhcOS<1kw9H9QC{
z`sv1ZQk5u_<riN)GZO-5Hs;mDsgkNta5ZJo0+%pt1G8%>k0YlY;2KLhz4(c&GhCs8
zOv`rQaY<Dyl}Oo%v4=P%RKSh&7}IJCDhz~7h&aSj36^d>Ot!-~QLlTkR7tW0XsVD=
z!A(-?yu2#y7TBSP4rq^rM5ZfOeYY^R2EQ|>vF6(!Np;axzhv_$7cj8_MDYv+kYYnp
zr#7 at 11j8F2_XpbExSBfI@3Fbdx3JOEW<p#ddTvHQ2Z|4D8M$(GRQF5o`H}I7Zv9Zi
zqoowR_-V}Oxh{3P!ZFyQJF7ce{^V3hX?{y`cydIa=pbJ6{9$byLL3SnLE2K(?YWGy
zLr>K8W%80s+jZuVwnsW!JFileSE-U7Dj;_V$Qt)79&0U+5$YpET2&+&-2-o}W(k!Z
zcy3UVBf{khL*z&w4Z}SX&tvdO_FOA72svfw;J=pK&PNU%sMTbomoV54p&6mx2&tsc
Sw4N#Oaqn9 at p`Br?_xL9hNbigQ

literal 0
HcmV?d00001

-- 
2.35.1




More information about the wine-devel mailing list