From bd896287b653ba3201afeb5cd503c99f5202abfe Mon Sep 17 00:00:00 2001 From: sagudev Date: Mon, 24 Jan 2022 06:35:15 +0100 Subject: [PATCH] bit-depth for ALAC and getter for wav --- src/iff/wav/properties.rs | 5 +++++ src/mp4/properties.rs | 20 +++++++++++++++++--- tests/files/assets/b.m4a | Bin 0 -> 59193 bytes tests/properties.rs | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 tests/files/assets/b.m4a diff --git a/src/iff/wav/properties.rs b/src/iff/wav/properties.rs index d4b1bffd..e381ab16 100644 --- a/src/iff/wav/properties.rs +++ b/src/iff/wav/properties.rs @@ -91,6 +91,11 @@ impl WavProperties { self.sample_rate } + /// Bits per sample + pub fn bit_depth(&self) -> u8 { + self.bit_depth + } + /// Channel count pub fn channels(&self) -> u8 { self.channels diff --git a/src/mp4/properties.rs b/src/mp4/properties.rs index f39d4bde..344f3a88 100644 --- a/src/mp4/properties.rs +++ b/src/mp4/properties.rs @@ -32,6 +32,7 @@ pub struct Mp4Properties { overall_bitrate: u32, audio_bitrate: u32, sample_rate: u32, + bit_depth: Option, channels: u8, } @@ -42,7 +43,7 @@ impl From for FileProperties { overall_bitrate: Some(input.overall_bitrate), audio_bitrate: Some(input.audio_bitrate), sample_rate: Some(input.sample_rate), - bit_depth: None, + bit_depth: input.bit_depth, channels: Some(input.channels), } } @@ -56,6 +57,7 @@ impl Mp4Properties { overall_bitrate: u32, audio_bitrate: u32, sample_rate: u32, + bit_depth: Option, channels: u8, ) -> Self { Self { @@ -64,6 +66,7 @@ impl Mp4Properties { overall_bitrate, audio_bitrate, sample_rate, + bit_depth, channels, } } @@ -88,6 +91,11 @@ impl Mp4Properties { self.sample_rate } + /// Bits per sample + pub fn bit_depth(&self) -> Option { + self.bit_depth + } + /// Channel count pub fn channels(&self) -> u8 { self.channels @@ -201,6 +209,7 @@ where overall_bitrate: 0, audio_bitrate: 0, sample_rate: 0, + bit_depth: None, channels: 0, }; @@ -337,15 +346,20 @@ where if alac.ident == AtomIdent::Fourcc(*b"alac") { properties.codec = Mp4Codec::ALAC; - // Skipping 13 bytes + // Skipping 9 bytes // Version (4) // Samples per frame (4) // Compatible version (1) + data.seek(SeekFrom::Current(9))?; + // Sample size (1) + properties.bit_depth = Some(data.read_u8()?); + + // Skipping 3 bytes // Rice history mult (1) // Rice initial history (1) // Rice parameter limit (1) - data.seek(SeekFrom::Current(13))?; + data.seek(SeekFrom::Current(3))?; properties.channels = data.read_u8()?; diff --git a/tests/files/assets/b.m4a b/tests/files/assets/b.m4a new file mode 100644 index 0000000000000000000000000000000000000000..665cc97847c1ab659b25f79245c2da90dccc2594 GIT binary patch literal 59193 zcmZ6xV~j2g(5Bfop0;h_+J488V)GwXC2t;=N8E4_x%6w!}b9}PY4(Q&YkT0e!aC9 zgskV&{#TnhD2*Frx_a8QoG$-T0&1f^ky;(vDBk-i*Sv*}z=HfiPem;=*t&6L+0XLD^#w{ddXHB7oG$1wR@ml|s zW@jBe2W;HczzD)(2H7lztSnS&>1EVxibYQ$Ys))pix$w{5yR^~mK=YO;9LD8M3P0Z zVVfeAZy&~02YS#yl$_YC+j+1ldpj_tR;TMSF<**)%o>wuMCc#y? zz5>u3Y(v>nctJNK*>pGg?{@(3u9!e(SRC1v#$9RVrIg_)eX-NT)J)9?>4ZUxJ{_-7 zzj*oXF7J+Xd|0j=+E^9YHpze}K7q~7c2-t3#hls7)N8NbwNd4tz)*wX1+dmZwRW#3 zP`rDU7;P<2VUVU$4P3&FOcv$drpA|c<7wno-aLOeZu8aTpD!eQS6H`=Wt5b{g-907 z=5@;mYXAJC+>F2py(mliM^5jL{l_OI36L$hMROeD#2C)hA~EWQ_6(kGbJBl#r!7Mg zk-HID00vg4IfQ19odUAN-bCM%wrbQoZcNS^BWjU9%U8gLr`uHwYwJ?iax0R>R)V3t zphaoybw<JE2;idz7rh-zIYp*WIT>u*U1qZ;P@}n72M5p!4)R3k|ABX+3UkLp^^-#8Qtl+ zxc_O2JX_UlWmxAp;|Hkl2jcE5!nFGo5ax$VAmjy(&lemvgYCo)Ooj~rz zo@b8AnXoeE3DIn)vLLggxSSJ}>|S)-#cIae8y@}QtpCZyNLpF&R9ttW-@&t!xlq(K zob!$n8W+5|JG(mW$>~b^P`aPtW}cT6FI~be-|DOPIVZ-DY1&ZN@S>p$YQ&OH>Kr*B zRIU<&z67ew*l@bTG3h zj_C4WvB+@j>6y2=8YYL3p}%I3tvXk#kX?%!enixui%*G&;l_WAV{GT6;gbecJc=qQ zr5xXo@VXTbuwK;SvjhuJj1g#zHa@E<>*||V>9vOQ>ZY>0u-eaX(Q+k%A{j%FY%Z(g zGDe^4VpUYsqq4ZWKDJz*&fjy5O%0iV!k9jb^bHJy+WvWJ3a3X~R3wE>Dc&qK{9z%1%78)GjR5vW0r3FcIRi zx!#<*_T&W?CN&TOjbhth3D^|2bf5c?_yRGND0u*;tZ+yrmtTabnN(^Zyy7?@y?)X2 zd=>&GBCUzNCMx|i-ORy^k^q$4NRXibZ*@zA5Mp!}iTgm@y>&(g_z;oWur0!wr{1D}agg;ot$ zJdX}TCZ-UJ82L7cDle$y?1xq_c1#oIEB$0^vN*hUxta(y_rvb`M^r!l*W}1X`2ztg zYDhv2I&}QRR~~=IOGVLPgXZL6#!MxWJ4$i+e3UbKgI6-`aJ)ZKRaDfl5}74{0aRxf z*a2Wjd~D+EhgYu30ZeLx1kswGZnoiN8(s&|P~+W1OTbFuB=a;$n$@70*n zis||G0c%!xE>J(m{DLpG2i{I3Ssh(RwGApyhaY!?D^A{*pg&7|VUbM1_j<@Os zIyTZ|Zn;(382cgb;OKB;KAiC>k(Nhm|4|LdZO5dc~M3o9@?;O}js?-hc@pIudf z9RsxFYKB-2E{;!+4{^k;i6UIa$>Oya^)Now%AX59^yK?NO>2Ji_jkbEV6=Bf!__Z; zBMxXWF)lqhdIADwa*n7z1Dp?Dw{q2TdcY)&0v4TL_d&a%7mM5C6)=~ak7+13mMxYU z3dj4ipF{n<_Xf_fqfO5jMV-r4I@DYuDn{4W?9yz>bot(ljVHk85JuZphxQhEdSJxL zHYo*KM95yn6(yW$k21@xol*N(*GQY!shPP%r~mb>Z*Rj^V|ttOuK)uaV(rlA_Fc5i zY_c^U#bxKy9+k7jR{3hsZ@&1so3a-kW?navAy^QDx#^`9ld^LJlD%XiBr8rr0x}(| zU3#9uG{z=u$ct2Yqt7)}_k#e|%-u^y*NRiAs)K<^%?5cy>!i5?ZW<#5!jKu$tr~Rd z=wE;KZ(v@>p}$Y+Fp3VyIuV39OLvFWvK^2xq|78g3cFUFL{ETBUiHuVFE~pJLFw@J zRycH5k-k&H{HSU>#Bds_oFcg=#t~mWtyaX0h2hA zn+qjPrl2NdFxiQS-+>(78sS-lbylU89h=yAMG`yu6-0pG11#n{Lrf9%>->FU0X%B( zAh5%=La1DJn0FA7azkF*7h`A&rwzYWStn-?0+Kt*@aaDfop#^!Vj>` zyZ77BN1|ES3|)S%zNUuFVAM=`UEp#gF<5vzJ}Wp4o{x7x_0Vs;ZndwX1^B zj2OW<9u*to1EK+)6lQ*M3p3XXWl=G8Ra!#%@<(c@l~i?|?MOY;KLZ8voUm!(&-tSV za+2(NWhD+PoOMZ0>+OvZA6D3CuJQM$}k6Za7MG zqM!&r%rSvVnFK^Y1g?aN(|-Rx{qGzE-|yKnduhh`hCOXfC>nkTNx)I!x&{Eex*>^SMHg z>VY{9X}R!V{tSSiJj|&ITR1TT^CMfUb%X^q>Kq!-60B_MPJecaZ=X!`nfUCq3A`>ezC=v_-q-W z8CG$Q|3=nCG2&B@%&f7U$y9{Rsi@zg2dJl;6YLzTv#_S0zF9c|nghW|fLTU3BIj-+ zgG24p;*R**D^cSF;?DeZ*t;w_d8IcwbMQ!u;O1PO)Nxz-CTH_YG7+3l+R=hKiJBCO z=9+7fID{_(K!^7oT5e9}ng>0F+=w>C^h!%2f#{d}FnQHHC4(<&|^+ z(cJw`EuC{M9r3L{B`s$~+>cj}+HQ>Qw=4jXi(ZyA{$Y?;{5rQ7ESyyt*E}ODXLL9W zp!gS>Ni4c$O)7Kza!5G>F@a&~8y{sk?-FRm)Vjmt{dYQe?a=+a+Gu~#W00x6zgdz< zN^Tf*#Tj&Cf^3xJ%J*SPFe+d|7OE2#LPJ4{8;dnV*f=M|RrX)k`egMJ`SX$GnI3)nIsZDP^b6&MIi2yjwV4TJPQEmODUVEks#aaAN}|DeZRb0I8cKnISB9#&f2 z-+En}h4AjaD9T=uYyZJex@(SYK=~xDmb_!WTYjTcA8Qgx&s?lH$k>ClqJ#o~h5mrD zqh{|~tA1$H@K27DY;b_1Y751uC@q&>kJGsJ7H>8 z>!(i=B7{f5O$o|~Qc#}KyY`33(cx85xAnC0#W%r)4#-Qm`IooEky$ngQ9sV)6%t9n$GapxOrv|GxddB%1KE3vBfB56I*H zAW`67@SESkuKp9yj0u6T&2)KiB5F#-KtaboP%aV5MxYgDNEQIt70YP{)p}d!cmG|V zfYa5;qrP=i%!e5ynfO8(lT3zwbi@0zB@-}|rOqE|wfg&AzVjZI-pLS|NIq6-$c8sF zdBKiw4{T0$3hoFTGydu7w3*Nu0uj9OJ&gFJcO(<*7df#7CbO&Jw7sQ3K_ z9{V9R1C1J<=c;PAX3qe|xcZKnk^k`iyjEgwQ-l8VSJjk6 zqc7Z0G_%AxFx}7A9T{0g?2H2;Oet69n)}QBJLO+upBX$|705R?NoF$5`6HML*7JOM>dwF^j1$2ZqTZciV7^Gn~`)hUT-L?Mjci0Wef5fqZl zg;QyV)Vj{IP(QKjL*5z`i2!Uyu5OQOhPhl{2O?XkS4(LfwmTJyu>jE3DLn*H-<3@s zl})Bi)r2Zkv?rQ=4LF#JFaKLSWDN#ku{LUxMsT_0ZLlEBp^3R*#X~ovRAHu62(MrZ z_QNMK_>hKIXCP+Jp`>rww3+`~mZ5EqN_Cs^A1upny?O}@j5x6AF-5J*PtZ-7g?ojhL^joG_j_D~>8(4mpwJGOpos<;v3$C);Vc}r0QN6qHjM^gPcbf;kL;{9HJ zEgOw{o6n{Hu&G}3OFs%pq@rSUg@=&>w&0`2(1!#=LK8)YKgF(vKOYMlruh+YlAQ)Y zzP6xmy1(S)b(9@@n)@X2{1C2Fdga%Ft0~EJN^^~VVnS$V=0IOodhji`?KG@ZnnKJ7 z5sJ!uBL4iq4bAU;s>Plf&4*v;h@F{0i|OA?75)p zBLY79P-J31_&ni&P}ErRB6u;g{N88JNv31!$qcF-VfVa;`43cMxcaFB*M5|wmVWUn z8Y?-v(8_bP6Dj!O7IO`5GGag!qP&!0&BSTS0h_l0)_K9CoxDS%*gJGNbIa54X2|(p zjM^0|MFnNSbTrjQouLoO$$yL$N@}E}bzX(lyQ>|~2gnwkh6>8mU4Oh0X+vBEBRKvlXZH-%%p}lq zG&yiD0iOP@sB5MH-Qp2BnHtl9SOLV9sd9g%t@JAydoTFAxHJVsG_~Qi@bb3o%r{#a z&j}P;Wt$uLd)|IFM*fy-+p;L0iJN1Jq+?FcM{&R^Ksp?H!{&feBF(a2(zs^#U^0TU zoPn%}pb&0KUgkj{=76I+Z@&hWRRAXzR}gG4lp2#41nyc4hyNwcULi|-dcS}7w{goC z5;<=#6*w0uSx45eT;x*2I9Tx-mK=7)PB%)GZGQ+{77m@kQoa}kc^3b4b$sdaAt2|A zCftam3UAFf!zpXV6~ScY(bhs3mol|)nkm|`jcP08oa5bVhO9kd{|g#v6NDe*g-!%o z`mg&2WC?H^p{a>Cl6YJM3)b7l#RowVL-l6j69LREn2(rb`kq`A;}>xw!pMEO@8(kG z!_hQ+lIbz$x>Gv~hWp+r$mkX3R%WO{JxjxNmGu%jG!^dDCpUWj1taP35FX{ZTYbIn zq2jm~1$UTPq?Cd7Yn*b;+qn8S-1ck`~ zc=bbig>~Y{G##$KZM4WC2AHqur8)|ulnQ^1?>yK+wVxJRC5%E;_agY^U^AY@Du_1g zo35HcITCt7c!_4UCigM8i!1*~sCE^TW}Hql!M^|rA73hexb^7guuSb?{q(GmGRan^ z!n$g+1B3%sH&rc$1Cb|7hfibgM@KE)i5EIkFSuEa?AI)EYXa#uS2(Mqv^@J~-a@M{v zJ@9p!Txvi<8800v=}?7-C#p;u*{Nk@v?TdcaP$XbL?D??*^3i}@`F-mI{h0(Nu6#D zd>WB~MQxCom)0(2*Lenud6@(LZ{LOL3wZyz;wT=Pp2&CDaDze5}VNxB-J+Qu=DCt#nB!!OM>~=^2myg96<{8uQ zejI;LHF*L9>+*=Ai7iW((aWv3D#=nd+PdLqcoD`gB$g-b1T-})ElU01IU~P|3EUFD zw$%hP4-bGHOj7UJpi~VAX+0GdV^y7i_dVghYg0cf#zjvIOEMfXD_pk-dP8~XSMfyJ z78V)B)jBxBBYmPHr&4!XBnT(blBq$64%K9VE~fl6x7) zEVf6en>*dpQhc5neHA@C%N<0eIJM_O+cRMASNNO$4yMp*1UNppGm{lPYxTcLGlBc0 z4ITH@t#sp^P{f=-t!H=+gZg599-2aws+&$!UCtQykmIJUdPo6v>`K2-pK(?yl~}$X zE2s@dkJsv!#G2{W{Cw7~9kBIIBpZr0bX4oEK0)^=%<3c@Gr3*DfBYH2B97ERChjLO zKY3!mx|d>9tP3B;tf+`I$XIR|g=W;Z&fA;&vqM-3RGeqVh2q|hl{~|#v^A8`9a z%G|9FQF^Se^G>Wd*3+@`QZjKLsq;K(ICudrHJoA)lh4cUI3&l)<*fO;*Y~^zw;X_; z@p#O85YKE@xO?!p@ z?9R-VbLdt~PRZ$$?~Cj!KXZY98CgK%xuB&RS@L!Xk^(_&OF-DsDcAgRYu zRQb|}TOW&iN40_{R_QNs!5CVEwYgHGhi)Fw;)eWm1XpyPQLUNy2yhkZgdd&12lwVb z$6uIe*2)?;Xh|*G$?<21wgb?wiX)oA1Yv#-nuRZza%) z!v!L@;vpU2>YmWpqNDi2$0PMW_J8@I`bvLQWqm7^eS6UyA_*|UXfK^&Cl8t>FwqII zAlp`e7M&yEvLjv|K;G9`&7SJ+Hkg>3-ICg4Ehav~rbUgPgeKKas&nG%42z+56-BM9 zDY)zW{{+;&ir6%JHTa-=)G0ozb+3|f;$^Esr_6raG2hRr2qzE+)z+>*eS4R|(x7({ zkc(=R<2p;o(;5BQ&1oKe`0yg^@9vD7lLv#ehEV$Qy4oLPO9h#U zF}CcY?O=8@!%?kXqc^p@I_^|dTi zy ztOQzTKWZhiO7!*G;j;hF6WYX;I*g@qX4bkWiG&+WrrC%a0^3X+FMWJDR!S=rz8-@Y zdfKzc7O>+1XRg?48~+nS!K5?0=(QcrxZMWA!IWG1LDA^Q5qzSlN`w2gd>@5cEZ@5! zPBwVYNg3WPD9gglDrWqDqxmMV&CexJ!0+k*cO(Y>g;x$5qOJdIztGqTvNRBbCO!Vb z9VKl^g`BX?v|78X!zyEX%VH(vik3o-0dUfsaJIRk1d*b05!0g_a6(_7!Ft=e<*)7wtredyJ_Q;k76LQ{l6y{S$8UZc_vfHlB(Ftv z1#c{|efGUeBkAV+Ty!GY$7;2*PmpTMje-Ua<%BzNMlTArW96VYqY7#>uC5#Pb&%xlfT4ukR6btuApKoriy<4Z3 z!Mqe4%S*ek%`v5->WZ5G*>EOkwQi;JBR<$LL@EJFouiNMhk)V`vYn2)JwZWl!>9>Y zBJhKC+4aND+NmD)zL&v^V!~`qMT4?I=sgsR8~1_h{kSfe)U4oq?%*vs$IZ~$yZlnj z%i~qsv3Ka3-JIE#VYV$0zL9)&q^Q|Zlhnhu#rcW&`cnZmN=`dKMT?`m&juC-iOgZB zOuTRmB2J;n$qLuhsYUx#QnoA#uc{wkX4WYDR*#`na@=Wf9@^}Ul&j02p`fkLJfbA4 z47&ZzC~f#sOnRtv?A0#_i$OzL4u2PR%&W=_>Bp?Vvy^aZVdT1>HuRbsFk-ljt4-w@ ze=>|jG=W^LL`+bYz+(0Yi|WUvUZJB~`Lt@7YP3#&S>u8jgCovT)DRsmACFUmLjlV7jP42z95^HA z668uY+@s;(;hZpUlc2u z<$7i7lsmpSrd_LS+#{OW4;TL=VD#qaZvq@bFm4Ag;vg!0i~ii3YOW>WEZ@H|N;v#P zTC6TP@kgY>ZQFzBqlXXm`lW}TZ-ngnAPUhf^{>Sn*J_XMNWT#FF)#TmLMH8JYnLWf zPQ!Kuxpe|WckoGvwxO=EpBt>2ZHn~4xm_xxA6mwh6_k~^&I$^96H~Q56aY*LTy z@wmm07X1f@k^eDK{O_$}BMKFrL#rwt4*3(8ny$BYoI!-Bj$bJMz2_0AntX;##6 zp~|>OH-EEMqL@(1uy#70y7`_&9ItvPE(jkjzRr-6aU-)9A0vui`Yr0>5H7mJgOk8< z%25&aBuI zEt@TuofaqYKs*c6(eL!lTgWM6H;h1(0>yiFp{VuzD)C|;e5mb>dy0C+OCFQHP3YE} zE3nj2kRy^((HIG*VjhlgcI^E2l!k#H`-lF(k6JF`X$D>fWKu93-MW6=G}E?R;!v~_NSU}`zzbxjJRma1{#gbC-^{Gl(C z6AZ`^Y;eh@A21{|GzJTZk}(@sii$>3)rw7^oXQJhu$K#k@}j-`pbVQqpF(1`6AAYA zn7>@WJ0%qP`_n`O>M1SC)ympnz$prU54;2eAaurucBEJNsgEW`R&e{;kUx_O5t?Bp z6V`t{`VfB=TOg8@v=jTyBx0T9%D`| z?^)yzxWGEgIU2(H^WV#d2pz*~{}%8MfPs1L1zCE8NDBYV?LaOudKSm(dau65&(cUy zTDK2-(knKL3}$@%mzo5c*|&so$mNH63#ZV}n?Q)+=nER=h*{9clt?&d#m;s$8nlP@ z+khon%Nxoy3n<>2n31aKmnl5MV%=d&!l~dMde~c28>xQC{HRff6y-oypLdoxO%G)e zXSCwdfd6z?U@ECq|9}~NEV5m=1tK}LY+wTUngBC1Fl5t>e)PxT>I)TD4m%8%-M9!_ zA01cBX45`G0}CC^*G4a<7!+?(;+ar4Bt-7ro~U*8Qd=Fe69qpRap{(rQD{+KFnL9& zNN6k+$&O4Mms^*u@eMB{-`jXkCh_g#CGxxGBj5b%eX8|Mnx$@_s#t2mcAFo{f@L_z z3LuVj@K+2=FqcRji-GenH}KzG{JyvfpqMwCsF`K|sHSMw zhlnxjIFljG=ji|iBN5-`zP6Qk#3Bk zA-xHLZlkyd>mT$6Z@QA`)1bKj+L$IH0xrS z$hp8b86Hf?-h1k7@$YoVb6lJHB5PcSdg~kU<+<6Wh0+N`JPrU;sId?4FkqOJbpjQ9 zs2_sMRLMO%fnSotwjjnZpO%Mc#6>;mIU$xHXnd;fkP0CqD_{8p>@62-P;ZGm=|~;B z%-u$9La|c9XC*6w%Q@(5{nfZJnrlbp#1@P|^vwbU|KeR)R3-wt8!2p@FlIuTIMRQ?`xfrFP>4_lYC{wvJXnP%uT`)@?hF~|V?w|Ao(ORowjO*fB7r$~O z3(Txt2Aqvy1yHElUIC`xpx`g~9sgaLwbsJ25Tr3_(DxZZAW$;yU}>j4W4@TT_nTK1 z<8a+s_iC5zKgJ=|!em-?RxQMAhg)}$k@YiHf+mP;9v%O_XfC(=XGwxMj6n^1W9w1) zyh4eIP1$eFuKM5(-5EfGeM4cRT57P%NfVI5dgl*@%Kv}7%EI2O6Qo<8aQ zWd%ggvW5EDf5^-4uWRX=T8uyL3t&#yNsbE8Tw)zGJJ~l{wzu`gAX+k;k*-VZKvxv= zc;{#dV8{N0+h@tpIIf9I@40|*GlMkDq3f67pQ{KyQdnqhb@RFfKu_7|A7gwVOwZ+T zyskim^bLWUJUOOw7cM*7qGtSBuVT!aF|RZIfH$_UD6$4<)xSe!sl*zdqp7-IWw%zO+#frQhB`9{p`A|=PA@q@w{pvUL2voc)unx9MwFNWRG6K z5Gwfi1_9zZXgLsLCqTe(BYuF?9;m5})V_LA-w8fSeBz21cg>Tjduo(so`bVKSfwdmbZ z8%rD_Y|7k%1eMOH92v$|y))DFOp&nYdBR9nPmceK2z}y;$Y+m=jF|w-CEx{w;2u>X z{bN>4u^{1hpdf8*9d^oX1>Fw>J%|4sx8SSvIErQ zblOnu04S`IB#iBAf99rS>7IZu6plZQpr@E30%Ua75!mZXuYm&PlqTxPYO&gF>Yk#V ztngs1-_he<9q?(YH?}<;l1vAXcDHZ$*#1ZVhNg&AKPVZEXKw5ecf%smUHv2*p_V@> z>Y(u-Bh+8T4_^Y2TooZl!_ZCIMF} zh98!npihxSy*OFM#iM^CH8Nn-kpmf=rEZe<>+d}|>JFM^?qLfi}YWTAAmUKI|K^9%tyMGz9tt$BlbY#$yG#En?;B3gMgs|5!IfeogZJ{M^N{A(kBRiag7#En z-3cW7{+9eE*x{@4YGd{msY+3KWWUuV*sRe|K`v>IPt5%j8f^m4JaleQ)IY)C&3;lw+$>ja91i5nO_ zB?5nu>zDirIWCptwT-WB^B40RjvqP?7k$pM2~A9wtdBBlt5^ExT6fWR?b72nvg&q4 zgAW)4%O$t^+xh^T8}xe)avX7F@#-LCQhsr(;zZ9NHuJczB0F`y=x6vO#6U=#EYiuMjG1 zGpB2QRhJ0i^UumotjF5`rSh6?Tu{jPnQ)&Hw-2*geNFI@s^Po`U8fn#S74SE^VOL|~7`@J#EL60TLo_0EpO(e`q%&jMsjiiMB+N9Yx?k~j zh=xILn+t>TkihuDCq0^yX`gNIBRdE;j-^pF5&#K2Ej)!jPMg+IA(cG30z51)@&06Y zh7<;)NO8Y1A&%(@6Ww=N&J*@OttG3U>;GXbA(s391`L(gn5 z0RX>t!Uq zvC)*CHf2_4tz;7+>}vp9qe?@+2)v=#pLK&jf;ByG!5h%7r*J)>j|)UgB1jNt;GMTw zM-dM)6=aNYofl*F4)7b>mNqOm+4l6O`lNVJP%mpq8ZC)4UEZ3Zep0;W*?RfjA(veI zfe8k3Mr&7di~{rxCoHk%wOjd=#y)EXuCs(5Yn@u!6q{?*E&8TB&h@_(ae*fwEAtG` zYlFp{zEk2-9ao$GLRB3?~=oQk#kZK-x?rhQObNNI9X< zc}PLU!HnQ)HA^;6!NVg9RC2M5FY1_R71fMexoJ@pvfun&mXV%``F9i_Vt-jD+f8vF z7%IME#pu+TIX~n=xa$Zs(4wFfFO9h}ZxE$;EJsXOFr^tkr zRI)X$8%;6MuuEpDjZoM(+=#9cOq46aZo&M-&;ut1dV@w;Js&1k^JKBLjZDK%?R3r@ zHIwiW*1d|<1G?83QAan7$w0;Kgo!AF*|XH+;!a1+y~@v%@7(a_G;pgAJ2s|hCFt7q2**WWJ_S#x&jsUgc$7a^cfVo^`P=onsR z%4iY9&KCs9fng@DU#E}jF&Hd*(zua=4VhfL! z%t|C(4pfucbxHgqxa=~kq}sbYe#;wHAz1lSbgJfz!1gbJNOeFQ1#X9}nb)nYnhaa* zgb!upHqPAij%CUKt-Cg^XG2L1X5!-gPi?#u-jw6hJ9+>4j&l7RFCDQXOQRS>N`q)# z6-GRgS3>$7ORB**s;OVQxtWu-kFiyIT)OnX!rBCPOxJ2!D(Bm11I^KcL82P;Ntn47FI`YNp`cR;r^5OP3eX|X;d#c3gCyUNr z(G97--Q=MHvytc|pCKxZwj5XtlyeNW3UPG7F4a?=Yzuth>7A3;Tu-FHMp8Qw4V{#5x1Ry$7noe8VGpuxI-+8Hau84{wru%!Tck6l z(ZYCcD$tkU$y0|>U5SMpELq|~36JJ0iCrQh+$j8FVP!D~;1X*4q-{9QC>UP85z4Es z5{gLr^Xl|A!g#^k60cRK41-N)F}q;RAnDYV@=HEqZ1RAzz-hC1MI6eH9$EKUd;YJ; z#gKj5p~|GiR`Z8Cd0o;yj(jhzNLthK;I0KyxbQf&21SG!mXi*Jfk`PQ2E~SM47My2 zYr?7D4C;vEh54#n911Z*v%th&(*U-%5~bAfL(4qc3&)4FFqVQzM1-{ zj?r9}K+cG$;hD?kl`=CgUpNSaCHEjoNTC$9T&|G+;_bnQV*@3NRAM5?mv3Gj!_o?> zvf+-@sj`c#==l!l;U=n$tgUDCUadIZR*pjU$ z^(KvpV#*gG5jCTMsEOF*4X{E^yZDdNzeDRoC;5s8e1Y7uCmK}Fsp=iZHae;H;ddIT z^m*u@C^^$bJjXUo( zkIgsSKqVl$;t<}N&dTWt!XwR7{lNY39a z(a?+yf~FtRi>k7H3hYgx)T>b=>oRFi|1PGJp`$mE)F&Ra7QBBP>R{GuuQ*ME0S|9% zmRq%xEvAG$Z`81svBO4X;pvZEs|s!P7F_8P7JtXK8y_a1tDt|N2^(e$;MJ?C$VcMjpC}Mgm>;6Y@qcXw)1A%^) za4H+u7)uN1!2L^dCvIt)U#+1QGKR;!70)2WHFn!R%9=8Mc zrRWMYpZ$fDvJA%-bK^H` zb>>E#=S2XOdh#DrZcrmWB>$5ZXFE=D?z3?fOaIHW>0N0G#SG3< z7lA!8adV|mX>q6c2FI}I{vP4l$<%j`2c{#Gmp3jIy-vgwR-SV##Z}J|fe(=Vrv*Rd z1GrONz@*?i=rB)alrg9+*{e(WS&=vWF?`il7hPrRjs z_TD#W046%t%cn|T;fmQQ1QD)!u2fsew?nU(0K0ad%l~Jio7O?ANhsEKI+M$4I{Jt~ zyJ(-uvo=}8kBOU8D^qAGjeO!1P9)kxn#XPTHO6L|zJ}bfA|~*tsqKS+TXL_P^L8#a zv2nYISv9c39kw8Fd$43K7@6y<&Uw#cfT*Hkjv<(j16Y{K$!KyML_5U6qvah7!!jQ2 zny92IaDK)Wcmt2v39y}xmcW1!#bzB6Hz)cHw|9Wo5mJV>b&$(`@pPaK?!CU}HDEm6 z;E`Zgvyq@~7hRNsT#}u^R4Tmjj054p&sWy4Te|QrVQ)A+CZHQK3SJ=oJ4Kl6ptMGi zakVnI!qFJ}j2)j%J&k)>H9~As)0EPiUhh737iMD&HB@-{j`#*s#L1UMJc3B&s&3^q zN>e&(QKHcWL2!>h9yzsfN_j6rJ_z`mLH>itB!(;!jQ8ID_V*-qbZZsW1mm_}S=_m#Z3)mksSGJC2P(owg*2Pn*iz)!(AxFqo z)(CM*y}Z{sT1~zPnvzsJ*%Dc0<;d}kAUO8ixsNPvc_u6MOCnK$9+xB@;}i1D+%^`L zR$W|NT@zt^wj3QAQyT3*fG7n{S0omE#Gt@)erIAe7tr;a#uIv?d{;rSoYdCurTGTG&(2Hk{VcDUHOIg=edm8cA zyXN;NnHUhEas(s!8&rXnT{T)_IS?fQ|5Tqm~w1+6+reg918=QFc2gwAKw=WKbCrd z@jD>barD)P#VT$Yo7uSx-zgvm`(&WOQ*lV+Txc^!O-V9)+vy%j5Jz=2YZV>hG14U- z5_N$?1X=Mosg6;et)^Khd2?;`k1`1KIs{(u!Z%IW)s)99Q*KHe)qJEGMfPmYOKrPI z8-5T^G?MN@j@B+;yvQ?9VhVmiUjJ}#4M}}uMGn9!`VKD7n#!l)meMsZT&^MEUw{=U z!_nb=Zx&_8H5-KLDilb;0q(x5bFA^z{>Cv5sibjwaqLEYn!YJlq&MsPdcR(=^CCuD z8!XY7$vhSmi8!_hIXFF%Okeb6Z9D`!(hxl1DhZPzT}@(QG?bc;n37VD6U;v5;V<{+ zuj`ctpwB!^$sL=}SUglFq3JRY;!?RfqjLArQg)IvhGbRCR*%=up}aCe3i8Kpg> z^R;BJg?_^hqjP1xu~JH=ta9^@P-C`N2&5wPUkcDhDpC&gXu@i#%OjPjK>1FVo2A?4 zZXpM_2HNS=2gMrqZtcR{5`>CrrqwO|AlcVEjOoOzcOQoZeRIkhnc8 zyx>n^Uq;fH(Zy*!>qi+{2g)nn0FLi^tnIGLN?#ixk+1+pbnPIb!cnO!Y`D$$;Wo-R zMV4%Qadl*2phOKY5kN=Rw3rc-hZe4{MOmwqk_q!mmKG`<2~ep7&Hn;$K##xth9A72 z5nCXdnn6_a&FZLr8RQ=o9<6eGTE13WRLH1>Ak6roF&t;{m&^7hzdIg6C`RDC0%r`S8LPid z0ZW6Lp)@#+(3;pM$lc(f`0yzkB)_wTWkKM?PO>ai*@btHs_{0W3{7AAi0q|9AR-qKXU8;&p6|Y$&`);5H>btBnc;Pwu%3 zJ{s)>I8i3OYN|ZX!MK=wSH8;m2K2ScSD8{%W1vCGrVT^V+tRT6L)4PS3^^sANeQ*R zlrB?_Ubm(2T*<5i+!Q`93%K`mlCqG=C-Z%0C2{0HLokYEqZq#I9>Q?WKFX4yG?iRm znFZNWtfSiSm^lLLd`?|=i5bLP&R3BY6{@45@HuG`&6wi~RgE5mg#VIj{Aca=H+~QE zpEPATlx(@!S1eE2CFpYH)GkcUxk|ntrh>kKU7O zm#l0oI;F;e_$Znsz&>#Bb{<}Q9SV~I(!c`acUiaQ4pAsI{{PeWeZP2TtBbMMkw+eA zkf0eB@J3k9ugAd+Mgz@?xCrh(L$kgitvXWPIR$$QBWyF4i21oGIk0D?rcMn z`cBGjM3I6*jL66TsfGqdp`nOvDD%wz`$G+#%LL8}1e@H3@*YrxuQRFS?1d{%%e=hE zo&GNPeNoL)ozcTg@jt|=Hbo_3axu8G?@D~yiVQP)-JtdGTuB~)RBdaZ=LPZCi) zU4*RN=P+^B9A71`vy;H4eg{&;{zdVB7j%uNhM^*^JPRNQ2J9bLl+7Fdgc@IT&ItoP zc;02|hUp{@fO3%&GK$cuQ%P!mQ;nh+1V57u5JnJ!{DmhDo7wK>;O_*Ei|}9?f4MxX zA408SVo8C5By~QO76S%_BY=Xa3M{I*DDLCqh##NDSBL=I}=qBV)2V6t|;6P=*6Vn#gSkN62WGxF`6D{FRSAgg5Hb~Ppf zW;d62TN3^BSOn!oN|7KFx-~H$(_t1N=tMniLh+Z7v5jRmfVsLJ87h|f|6YI2xo=^> z-n?%59=L+;>(`~{2FN_wzNszOSsXKJex+xfau(*U1{KZ%wmu^IR=GwFQ=ZHcDQ7C< z5Y!fTn*{e~O=-VOLRE1n<;L*9LrXOZ#Po7u#+GXBr`ZH^Ih>!7j(N{8bnP>H*Bs0h zxKPZkl3Jl2OFNL8Ofw*4tJ|oIzHYfB8Ug)tOZy%ci^EYPb+Ki3v&zj~UT^dD! z%;C(y@wXd2zov<1D)vN?bp8DfR?7b$fJHf}F2-swYa^pWLL5^Xn4M%a2<$!^x78%h z^|~H@B!8?|v3?{Mqv#-&X^2TIxnZ$_Xx0xoD{m(+f|>5LVHA21UG-8|DAY*+&ij+h z-{>d$D3&4QG1u2*l5+zqq-kC~!GJGgr{n1R|4@zL%4GVIL^Ai%aRkh_GoQ=EtC08b zOwK`_2L%>V6%-}10Cxr=PY+yVt%GPW$J%v-QdFz4Tu`c51FUM}Eb86zb20RCIL;As zL>iFe5m~f?FSsHc-9#-oM>?pZE&1?8fL^J3#5*At880 zb$8cGW)aYq$t}xtB2jguNH~HWh6=oZj{}mBu}lijUSX&IuKTCnJvK%YPL0b@AiE0mTe4I^q-yIui`3M&E(!&kAcOQsCxLb8s2z%(*Uh(nVRR%{}6N&Xc zDf8~*=~Wh&27<}}G5|;(Ks1q9V#6F~7=6iCd{f2`2rkCUO|oKz@G7%=(||Bom(*mv zQ;{Z{SExj!;L-j=^pNf({q1r2auE_q5_mNDEXW}$a$ssnJqIzvYF4&XIH!1}SVpG@ zDzI6St3Gofqd?O1Wn`umJ=>G=yEz&#CLb^Zunh8^u1LZ3z8mc5Ozh8nh`|oVVBx|| z^T0Jl6`}bXDd;Otn?YM^AH2k3cuVyIQ^r|*IF`b$|DFRG*p-9$??J?`nTPonij9!b zCcj-GWRVk6xLX#ILNTDR$C6{GHFFr_Zxnf&)ftXYC8VQ@YP@4baoR-3he`;Lg?<2` zbCUV)FNuM(HRicgTFJ2eBhC$<Ap4T_2MNoATP9r6kZM+?- z3EsUhfi;1)dKYJ@@h)3vvh+R7z#5YxPy&dJh`E$DK1-+rJhpE#pOcdtjmiA2$(#;K zN~r%`Jx!P|aH7%%-7rw)psx0aRcwF7f52TIF4be0pGG)e7{$_RAqgdi=53B9Bqcn+ zY~bk1OP?p_3OT6$Q-VxwqBme!Tv;`)T&V~>h+)h~Gw$==cE|42qbU=4_K!#K=OhgZ zuf+)SSU>{_DGB=+YefVLkzyiZ5#d32Idr5oc}uwR#8lQ@{^FNB%?*+zw&ntyC`q?3*Y_)Gx)E>AEEyb_fsfo%Bmw6Pf?ihHJn?DOf&14j6uXGyi_7xXGjbI7E`kN?99lb ziW8H^5k~g8gCYpwsCHLehY33xTEd_Zp60)_lL>|5 zpHP#mtd{TitcT?1?-7t=+h5#Pc9jwQVJW7(&=0<9B)4eF5C?XV^GyZ_8yq1YHh3kX zas=KjxPEqKn$TmyGZR&wD!(`0b{^A_zHEye!G;=VHjXwa_}>WQUGL0u$7Rx=CnEwOJUYXcyKrsIwv!( z-nus+?;qoLv=C%)!#Fa-j`P;8-j^B&IplFLEw;mm=xAM#7B!V1gyY5qBxK8orNIK@ z=0jC=Lky~FI8+@KEg^i1i^^O7Kf7*JUNY75P5%FlFH@z!c~kWAh>LqUxdP`6iL|VK zPYY5LePM>jU5gSMjV2ZCw`tLRXCveit+fK-`?M(p+!K)~l7HjFDT*!z+6x7p;8iE* zL3`0T5JXZiF<;CF@LV4TtH+fMGHa|dEmVd!jgAP{aCPa^3&7Yvpi|>}ml>u%S0>eI zj#?C#~gWOR7PM*YcB-u=eXAJVs39bFix)TC1K+_xnTDW}EV9%U=h zl#=(EqlE!r_f$YWqGHqkE=Cs_oQJ5!N9G zuObMoiQj0hIV`S%;TyOFKQbZ1Ff02W6D*8ALKWvqs~Fts$2H=5{nKw5re}; zDb@_tYnJyPCfYWBQYq6uIfqOr2hd|XZ=&&TOG=7F2djq2?hPP_u(HtQRyZhC64Ptj zRX+s=m}Ag@A$DnnKj0G2vhn+W_z868jmJ8+NI$0=-){~QCskoH@W%RkplQj?H6O%8 zpkVYM3mjErHBiOn8M^3Ye@FiTXnlZ_Wae&L#za%?Tf`=rk#fGN>s)y?l_%6Pke=}$ zs0d3qL8_s`$e;*mAj)wmuN-ycG$t?);-X`7cHahO4s)3KmU8A)@TVc4rpjWMT2;^K zS${Qj$Nqs-;H(Bl#RV=7OUwn4$e~iAcgM$i55;PGi_$3=ntE)alMELSCUQBhwzDZ1 zm1HSli+EiIkvG;1mQl!mz)7n)0=}i>y@p@HE2u!yka1?zGZ8bC5o7ga-7pAs?+*fO z9E9cn+5by|9y29Mtc;`OHX0CI6t>T>xM>q|*ke2{I8eihL=UA*s!;ZI5~HAE&(`Gv zWO1LC(gmpu7vH*n{f3kc0{ zzFc35Fb^I70Y)>0YIvN)LaB^M3?b6#HP1RWq#~#4eA(ufQe0j}oT6NY&~SE)TOM-c zq|QJ_1TQ<5prqVh#x2{+b34zx^jmiqud~O4^(tDy!AY>8S%4V*en!s4^6roGJd^t8 z{0X7**8AsNJR7I#$bSTmT=Qux_?tAb2*v0SEZ$^nB#wX(auzB(cx3YVIxcOK@26z0 zUxU_2DIP}lFyNSG!;P;zg%xHPnXP(rvM00N{+syU=VK_v6_#>y{M;SB?ia!RMmpW< zae13m#^D(u8B&%DhMIw{j2s>E5zzqvi)LOq;*kDa)Q*|AnfGzC5zg`SPb!mI`x-lr zpgvPV#x~nQ<;~4e=WR4y?L47&qfEg_O@vO4Q0Z%a&msCR+Bn{e55ILlNwNSdRw8L0 zE2ZM~8B~;Zv&MNcRDg*xFnt0ioyA>|ljtl!rZjTk1yX`9C$z7#S5a^F_g1i!Y|#%f2dfO2uMX|-S2z#7#UhcB-f;6H}IX% z{*L#^Dm|A6a2RpyKP|%rJ^3H_5qtgx+>E!Civ>BiW7dIzm#`?vx@AVForbA)6-TZ5 zBg~;fpqeANlcGsVG`ufX_0P8K>IgG`!FZtwW(doWpx9<$a}hA;-=)$~I}%Z@XCr7# zbY>FZc_$}NO_k%^wa6KHKui+cf({U*PxHUY{{LXR*@K`H%V&|;r1mUivWy%&d^8TE z+}hVc;?AC5c_v0@M|1_Pxv~WGMrt(t*Zc&X;S+)hp|0Gh8wv+bJ5n5lqANYGI!lp9 zjyRg3fMZlJeRr+h!$GU#_XK{61su+1{!QXSd&LIyp53eInFc=C~Dl{x^N!wJq&eu#tTG zz2jCTjF$ro#hkTWt*691Qv2BiUt;d4^$XJtiqX+@zfW$1Zgw)VraaENS$PyQoc_wvAj)CEjr*D^iVRq4>$E6 zS@Q0%BI*~@*eD`Y5(t2zsWIW~qQlUFRg$y@{~I(Ql2p^8bG*<e_6?`{6q*n4Gagt4@shaHoFgMtJLNf{j7f}v?A4}%;ZZF7md+~L1X{2D}G zT(WuMvLo@zsRSjWAzu^}n+|~+!u-vx&yUFGHaS-zIc&bcAP!=yp4e^MCLZQfzCq4+YUn zfF^;EXbTq~%Mq3*7pB1uxu^1fCY5(`5B;x<-Lu0vsS2H%&%nBXd1|G~6^^kIjy4xD>#!t7O{WCnNJ1?ZP#?wZ!2v7kI%^tSl5_knT!_ zFB7MUiteJikZnhZlg#j@U*yQOU##e`eB(jhy!~2j- zmVOO*f*Xh-sTC83o<@f?xPUTLx&)wt8D$uCR%r71tOAYX$B6)(Lg4G`5%np!f6XfY zfRDH)a}2sp9pJy~g%OLj=YfW*4z3WZE;>lF+1L!0!zUz56VnOruBnwCWAu}75C3k@V3P!3xga_Sq4Z6uJf+*WTx zO$u2mRAoeWN0?7J-a^5I2l{Q+S3JA{j;xCOyiF)%v~?MzY~r{dGqh?=G^zk`vspor z7yO3nkc%!b(2+2J#<8ly&CZlRk1I&UnQ;YM@>kjRh3)nzIiEd^yy*4Z0uQw0826z~ zcG^N6XF!(LY98rXU=%wUYA6&W7(FU|R;Gzf4(mWzF{vIdvBIf-g5ZOX9l`OPfFGPA zrP}d{*xUnLt0I~7e3hx?x$s4N{nUXcDbsCo$r}tb5d@ScqbM*mJXc@%$;xWvatT5q z*DfbV@wxdEdefP++_M-i?ur0#&%|XzJT9`^A zLyd+f!N5$bGgV#`?W<+vubB7H=586(;Kd2vcx{BnYRa1nUu`MG6!EX|G+0kzZAgM6 zp2J17LtS*5o7?+T)`Au*v1<4jyHQaOxc#_%wb}rUW+Y| z#|?-c`0cGS$4mv4s*vFPg8L*!*fa|cnea6fD2PEN2|xyvKcOFzX0)QSw1|pi$>ty@ z8!pG>P3>r2)kRYBe6HE#v@D;fEA0y^e>_x7fr;iHQ6-bP_Gw1B5GQ6A1$lc8SzBzLm2o~@@RNE#>(olBEMh#B%5lP2v;YH zQJAUGCmsG%`Nl?U9xRpuT#D;P9VuB-y)ez8EUJJ?XGEY<5`t*#2AT(gF27sMc{BP1 z&85TgbNVh~Eqy(_0pg)0@@(|Hoza#_;cejNm!;WSh{xx8fqhMt)RK-DjR=?V9lZZ1 zrzV@!WiV(ljklcW)qK+ONR=ur4UC1UwY-D=(~6Cvq|o(?NKnf&g)Vu;l~vR1)MwBd zRm2^%UO%@;_WCPqT^1jW>w**r!0`o zfk=x*0VD{LIyo_bA+K8FhE*40Pc0`eraZ+l*PSNQT80~;w;?-go;}KO9}Di@%rLIN z(z2*1QX-D_Zho;>NP``Fox|0S+f;Ow-v;zVx565h|A42ok+@wZSCQedhFBwFJ}z$) z2U4;HBb!@eF(Zz#(N6TLJSS?KHC=NTL$8{LOJn-6T6?`E$fzl~{E!44zyu`Iv4b@r z#Adg_LE2)@5v_U_Y%J;l&GB2;l@s{{VwK#6)WGQ?q$1wzXU_~ItbsLy6Kmr^@SkgU zr}kAQLlG(k_otq&l$i_OP75TEKZx!{sboU#R zoYs6tUO3oxLp52h4iF4lAgX+FX0(eMZ&cW*M&nMxUPnBrrWtX{ZC@p$hiyLAeDc}Jr5^A-6=jng$J`JiM%JE}0oR3B2Nto)!gMrtr zG{!!YI}<5A6eQ0(vf>3T~f_%6hmFtA;h<7j|O zqN}}IAKvW@k92wozN^w9oL0JXHeJy;4l)uO9j~Lx#cL~8Yh2+W#v4|XVX-LNYS9o8 zI6(;X)<){@Cf zj?`U@uXOmyOyGWITtvG>L2}{x#szfUFp&G3wGoXine`BVsNX6ndicl$Jag za%o>^qg|q1jN`Fggq?lb>%IFef5h)#G1>-QTy7#@n@CJg)FMvE*1=BC$-8WY4)PA_ z`Ot--BO{T0-~0tn*~482kCw_v7d}k)q=d>Qk;m%iJ> zxY(4Fz9X6c2foSKw{9jnyuqtoYYG8D^? zHkE>)kljY$zOW_@B;uHLjYJ11Q1B(TDj%`rV1vaOn_;ZEgz)|0Bjveis94>03bL1; z%lW_f3bXZ}YqLq;VOy~RG!~``aMD}|d?EmeB@pVx+hTF_3=T&zY7oVCVuD7(QWea< z9ver87%EW_DylR3OkaP&OngH)lUa{Fgi2>$hVdHpIL#&IbgDGlAtk@oMhMVr{VgY< zSY;Q2VYwh^!;w#C&VHq;SpHuk_1}_!!5J`z92wttT(pcSx z*dcgVH8X~DkPah0qkdRWvoI7A%h1Io7A#G$$L3Czp|xBas=N9w>#rGs_|c zWT5pKh(^M(38Ka7Dn{FDMd35`xZn5+mzwfgCJDkcAn;KV!w4!w_}y$!S60Wb2Xw6v zc#>x_V>BskQ%+6%^D*0b-|L>tNas4|;jb9scn3zO58Ck$?ld|}f@D<2EY*Eq8;$ab zWW`n+!%_FxNTCTFuj@aTY-<5k!IQ1YvBTX#4R6+R4l~_%f(v=mHxp1LIYz?sN~1s` zQ-h}My}dIz`SthlHWL!^<7Kl{SV-Cc>10|co!%jiI-GYc-&qu{#9*Pt;e|FnNx5^C zR6N8=_tCH&IqR3YcNW655xe~7-~e}N3h#D`J^ z#lzbOWXG+!Pnv`fJ}+mfw$n{qx596cXF@v0Vx#Z>8R@uZuZY@rIxd3?E-NR*j%e^B z%!UeTh|3o*1{G-K0llGM7ej874U&$R@BK5KulpW7D=X^0&{4+~G1k2?W(w_NAB`I9 zSFswMVi21AWZ2PrWIqvnC0$`O5<=$E-Yz$=l;yvk#sO2L%k%XihLZQXD$y*2lX6R6 zfd*npaTImr$f<_|NGG?q6-Q#L@}KY)zQBsMd4QEo3kL0`>defoy{r7Cb=AMoGo`uJu!{@|`kVpnptz z5-BBb0;J(ulVpexd^jT7da0*fNB&Mw(jOw7*#aI1giLb(50VajYxdbUGakZoP@tJ5 z_{X;Tr5d9w11f?H4wDW<6XP|tk_exdaTqXFxZxNv)ZOsto^XB0miE^kZ~g*S=vFA} z>%qG58-yYXcEF&DsF<>aMT(lI|2?iD%#q5ZY_0A`_zAs-5WM&qci7YcGH4f_f_?L4A2ujT0 z{#)AL@Iz9W!-f_|P!ZR3>UnI~FtF;PW#uxmSg#)&%uLWp5(aTeX^3O*tf4y}m+4l| z`MUSmo=D24#M`G!2*sIKLa#YS zPT{hdo)gQ)T2b*V;c3j`!W9VKEbx537!YR(T97)293)~j1MpFKE>9phlKoVM>ZuhZ z+Uv)TaGZ)-*mJdCfb$o3uA?L(>_kh?73X)IMctC#`Z4G5^%$QIK2Fs}B zvT1B)Ogg`{a!vA|#x2xnbaX$O=lKvJoXu`sFgd3XNCzg;L*qiI2JLs9K1Li+!JKgx z=n|1D`mf}6ASohRQy?PjrYk9n{^GD962i`6GJ~{OCtAELtCB*PYffe?QZ^{jEgp8j zWhXV61vAMTS52=oS{PKJ!sfCl>sThxUo+lCI1;%Kg2bL$(@opc9vQ>W%gFUgsmJsF zEV6K-XleQ{yy%g>(na`B_zTz3u6oHc9*`^;$p3iuEu50*XNza%2f$B z4lqoux*nUl$=4?O-{Wa?0y}}gSbn@P`VEqR{JO3p+U;^GHIWDEWI~4?ei=CqZ_8m0 z_PI&_tNbR2Fr3L7Jvn(BNgId3Bz^96PHg!4qP$86dMf?wY3mHjknSr0ZqpcljHwYbF{@H*79PINZiw zBdtdVo$B{7E@cu+M%5o#2bE#M7MIx^YxaLLj|E2tu{9tT5^z2!l;GJ}wi+_9U<%6U zS38j(EsLxCH=d7Bz}-is76}auB{rm@gJb~HM?slidx-h3&7Ot9TGnJEk_?IqEC7hY zElarM^v@&(qn6!t)!$tzhQFZ0bO&jg=O*BN1j(S`p$Ti`sU2=C+U27mM~ke9H4+yE z%iG2wc);!=>S;<9c`6?Twc=ublVCa>H4!@q=yT2YLdh6pFjuTit6->;=Oqzl%*aQV z7oy``UOFk?#hr>gP6PO-e6uWEC7vr?Kt|i?1r!w!^iwoYfRyu&SH-A(j9#=_BDk0O zV7m#)Q$>9qF}*MN1$vw1dkXraE-*>=AOkpdFuN%rYB}F*k1!s`f@-l0{X&GU;lU?9 zaBmz}jLydj`pK4Vo(wkUKP1- z1(V>7pNH`$V{$+knKp~?LQ1*{Qh-Md6lyCwYG;I)2K2ap@C&Es!9MVed_d5FKUjsY;0UyA{R15IsX0 z^EJy-);Q_Vt}kuwfBXXv?l9wHJU=D`s8%zAxg7kEfQgrmpyZIg|MFpF={Dvl6x|Oi4CXy>iK*_SKcckms zBCVC5H4-+SO5HvQeQsMnKBhGEVX0;UE-vsP=cR%z3!{rvs;s#$=O!jkxC=^*e6|5>ZT!UJ z_4yHg{vofvB^Aokql8$t%|2TtgOS}>K4z&`~qO|8C*XR7}-Ck=eH#G(U zPywEWf)Fq1a=B>&gkkHJ`8U3cpzTaXs8_ei;vUh9hX`edxgAu1FsXM2Ul=b4gDkep zUAbcvE=6QBONXIZ!)?2FTY`TRJJB=#6o-(kDD3g2kb;5+IC8w7b-B4(8q2@M^SWMF zoRfyqHG2LIMCCRdpy~yA#*2l+P#&9~0^7-bZI49tE1-bds1J_Ah-VH_q@Xa>O*B=G z;>GfR;1P$rg6U44qbM3*Qgm?Gz1q!(A&}voA71jL(oE*pl+>8MzMl0)RVDyP?xv=s2LH0KkFYhtn$wm@SQ&38w zSRF2Ts3E#Vq*pMAp1fw9n+0?GhKkhodHUfXp|XjLibW=*>TVEzoV=I6&#cE&@kBcc zRRi$+hcMBmZ5BR@=2v1?tjC#eF%u$gSqy4$lulzp#E!#Dp>%>S-Fo#UtV_!Cwq>;7 zk!XrHU!I23=gpeD#v-pBJDu)IPsHp95RZFy4ut@LVj4Q8{QlxC(U`oP0%hWP80Uo} zwfyFtsno%pBQSxHZMRgvcuS@><78?K!E2&d4RnBRSmILBl4mf9Wq7@CdEM-#g>8B|U=0(AAu<%w3^pO(k#=W)ZN0C^$W2GdTeX%>+U>YA@w920 zq$z^`@6mig0?bjKUW(Gsm?99wkT8aCc~&F>@?U27K)VPK)KOQka~X8_#nFb(54Q#+ ziqr2G8|3Q{J?MtH+RFM3p5mG-sCW+qc5x2ken0L#+z)_p-X33d46BUbNo!V*eP|wVYc^*5y?u-U1(i!w(D63t9 z?_O3!8iKE)Rn?1VMakd4@U^f{A~~B9q(Q>S6)71ircIQ^-VJWG@)Lr?n2KH!GU~YM z5VZoSKlW-Dt&p#iCSYr(^d~232`VPEDPwDg{j2$^#0ft(u`Ci zlDx##ToglEQ_K0@i}5^V8P#kSHXOlHWALz}PL5!41C3Ow6m4yGNf<%D-y1~r1UAHb z<#=s+grL<#PzhyZ8Ycfy`k(j;tAS^&OEnsiQAk%hSY6C{rVfx~a(lR~4oB1BW?}x4nod2>k$2E(YGbAB_s}IoiP*U- zGzn?Sn2j+!6RHSGFD>b|2AKD<)+kiHhgUI_oS`ikg-{GLGlL# zzq&qIvq&Lo#t?E>K3>zg><{W9syYwi8sEwPfJ$}C!$uq|So#V|YmIrHk4L8qkrfHT z>pHbwZ^ZH6@Dk7b2@Csi0M;zRbPF8Tt*ptBPQpWlM9$S>Q%a!GRw*%J2uWLYIVG3l z@#--Axbk<2EtI1Lq??NOd$5+r|3B#3Thh1bNc3`i4!{hXDYV`WcgOLt>bVaR4W>}U z??~3ALV2QboTmMaxe_qQ20-2klymhOQ3>eimD8}wWi+LIceZz06+or9j%ZVoX`u$B zFCMnUgJJ7oQtT(l&ucITm}R%^sRpS$JZ?BW-!EbFw*5tAh1;Tam^1r7?6_jsf}9TV zWd(RaKW1G>(b0uTjT*fqQFuUzJ>;Xt$Nz7nK&G}Myo*16D@%)w3?g#ome?yZU`Pnc z<{K=q1&zlDg_F_T0)=M-06}7Mhjd3`e6EGI5b%YxOqHJQeVf)j?; zai8k^wM~h3@lr#rX*^N2bS6G1FmjMA>?WHeT5Eouc=8iQs>p%7%DWB`INNWHSys$=!B0U{NioXSQ3E%yja{Efk z!_bgioIo{?#z;Uv7Fn(WLS!na6#`!mcq~C zNn+vXgCb+bXilyikSa1@3$?{9^+LjpI9SadN~ElTrA2BqJlj1OznA&+)8koo$)D_p zVvd|*Roq5IR3gdDD5J+{)vLWTQ)TL+QpkpOj6>QG;p`*kBI;Qc*JB=L;k6NbU@lsr zoxOB)|ELF%)X)_`+;+NiGwVLr^;M~ogHK7n9$1Z5$M5a&SO=0gT%r~5pP1)zUr{juYY;kx(VbcT!MoeqxfHAthc61Bdbfd8Z6(#3H&FGxb@ zGxlX$4{;WgYv%W8Oo?`1huQ%QA(elX62R>!aZCI%CQ!_E(h8(AvV!=8wN#EpDh`O@ z^Izq7ly$KCf0WhiI6ju+{0|2<1TzvVL_b`rMo#0B_OW3Nb7#UQOpyc)9A53yLZuRj zPPw@VqnW0O9vo$&MP#t%&yFHoQ??cSp3+n}J*rpArp=C5nP88U7t}`#P@ z1T1}f;KShG-D;iqe;1wZ>2l37h*ZB1QprMEmy~1N7JOpLnc`&<641+CgoQ3R@9_!T z@hSK$93Qo-D@`5M#pFy_^x59!hBDA!kI*R z4L&y;9Ym4%mNlHcuH1nE=CZbCdK%o|s7)irvX7F!zyQ36NTRUsEd{%}M7eo+Skt*9 zZ85_3*O~(v18he^KPQ01KcD^+^Iqr`Vv{(ojL0SVDzf)a5Ws2-xpcAt8{L*3$rd7P z`So)35VE^co7#e$ZWkdG^wEY{H)K6e%R*9{2SFw*PZ8^;e6NaVoIyoGED-``D3Jo( z1dvJnttAX0~d1Qe0Ni9k5A)WD@+P(%m~6kM|P z43QWVArKJ2I1)38MIvw~H9&HUMMTZK0KjkyfM@N&;-Du^1T4*w}+nBpitn3kus)Sc@?Y0h$Iev9*nbfz=bL zz5Drs>mlRN8H^0!Rd;A`(#~ zlt}<7rW*&dVViVQZIqfrNeLt&BsnG!$!1}-X2h5<%9$#wMvxmbHq}F534tybRVtJ! z4Q4ExVVlj-RaHzWj1U0`q6sX8q@fU!0fJ!93`5mLI(1FZ!~l{Mi76sUT1hDYNMZ~b zh8xB_@wZL3ApnvTQ6&@+BuEI7Vq^idFb%Ua8k=Km5*h(ibrg|Ikv4P<15+@@Y}jp@ z5G6#aIusR=h)Zi?7#X%rj3%;@N~tQ7Q>=$1873jN!M4n%>69=@1ByhEAe50JB!q;- z6EIDOjP(qvs$&}j2vA8V;Sxzi2uTxSCWADF4Xx(D&51C{95j*(ge#B)$(u#AVA{=w znHd2gYRNGeurNomjL>G5YJg2f$(n6s8zzi0GXzXffrvCUJ%HOOwn)t+29p>J%Q2A5 zOJN!rCI}&0C8(pvVICo^ka(Gui~zJFN?3zKXp?59$(CRk!HxvNVj&2aTUdZFz{P09 z7@!LRz(OsQ#hXiD27q8_)oi0d47AHj0v4Fo3=A+a00>HAEvf?T*J=QuD?;d^cnFaR zU+`F7AOHXW0tpNNkN(^NXa4K}fB)ta2mk;8000000sjJ*`7iKaH~U}L_0X73M130$ zBLX2l4mCRf;F>~5&tq%*X>q|C${pPrs1FQ|wkC}$Cg}$@ct9E%{}jBw{fb5oQ9G@6 z@=-b2bcjoDLK?dI@1`?9FZ;Bv=+2_Depud;h9Mb8btKf_uCde&Dv~3#8maKyD)WaI zg9WhhDo)^W>Z4EVbu@lde;m2^lYoPZ;7>cWr<8fa_@a2A=q)E(iB@SixReTdPqgG5 zx*d5{*d{MJ?dTzAkxW^!lv`QQYT427t~6hnwff@R5JU8J{sDosY)x2#7)ThBF+D$H zwy!{F%$(}PtxYShiWpX@;;QhL?qjp?|3Q?|SWwu#H#RI=Nf>?`Hz(uzh6*AI*r^|E zMO37?5O7LmANKz*h{jB87bp-kk!7KP91bSunkE#C-|Zz*qGC}qbFDO;U@5Vks`h^& zkHJ?*Y7h`3B%c{BvUHR?9u3oCxY8EeP@Hi&0_!(cCC}#l@8S4o!nVli3D~d_+-{4} zaPBPywGCA*p~ThT#UZ~A-$N@+kp=Bo(|TAm$P^P!DA9p4#%Fv-PM}=bla*AGBt$Em zm7#zli%wc%=LdFGDpiZL;LkZiIp5z@)o_sWJiB-$;_<1|?aRoHf(4_~Ho^8*tK#t6 zho;z{>)`L}scmf{RlkQ89gfzo74P&vqDrmMB-6waI1OYvNXqa;pO{`Ls zldo?mS_@n>p%w+Bh=)Y3w;2ATGp!fk?s1x%EBp1MFymAbB^wi2k|lCBC2$e5WxOA! z54vPNaqBB$+jOjrk3LaB2XXz2I2MypJzugX{{c38%rdG_>Y&~_3aGrd1>n3RZiEOz zFCysR$!&oF#vK8D1i`r6gM%40s^)UoPH^*g35$et*St-4m7#tXh@}1rN1L*hH9lmy zlo4}Pce_kJdRhn&niD2Ml8(886C94jyCWWIwdZYn&(f6-K`f8aHAGOE`NhQVIuxhd zi-nn5i=4E6S1j+xq-hAM9xFoEKqfysAA`XLnVi8GX8cYGs0_pb4eR517w!b=?YE~n z&sR5?Ai5pQ;N6YYPtNwz!Q>feFJ!M+2&gSc0BLDbK09Qcu>rK98$m3R8IXj`U-$&B zA`FS}&(bN6pR?n*(3d0%nOrLTs-IVJg;|AYH8R313P!+mzR#qk7mkWVc0JDH9i#<8 z76Y-M6O4I%3XL*uarr2xB-$6B@b?%vamY-_PAh#_J_caxPLAh>qv zB_va!Pqm@ z1VKo%I%NKGT}nl4zD{ftH2rk`5%tM+>8zy;le~R#)|8cA9E8Y zqc0f<{#6LlxZsR2cF65^hSj}xeMSx|l3gZjIXIBHNZEX{ymHSGV`8A{*m}%?@xCcr zr>}_$ygodd@^yP$ztF$-`&(QqatJ~-EKP&*)fBqP`^8~gM4b^#^m1Q`-B2=~iSS$O zcU#7!tRYS6F=0qd3MWF;5^zw?47gJ9tQqmHNQzQexiT#+DO%HgFB(4oB^Gh%|KfL` z&6=np)@LRxY&qg#)#wqAZ_iw2YHV&d5lfRUO5;20e_lT$2J?^Ae-rD5alk`78Sz+{ z;^s+C!7PZ96g7HjrYR%go6HWyP1G^hc`Mn1Q|&7HPN{z;rW-HKqsJIFq~|AM`oMLO zpNakrV|j~8MH13V=ftS2W~R_;UkLMH&L0Uj%Pb?H{}8r-^lZAPV-dJRD=89{!_rX9 z3?vPvXw&6!CF9+mHxXL702ayp7`HM1+K`PRQ93vYg9R3Jem8STZ9fdDD2;5E=0v-r zq{zyyqaO;+E(?I?z(3CNn}Fz6miK*z4FR(SM=wV03%KHXF6TXX#FFEsAm@DoXF{;p zAsCSST?LG=>hBbEv=hcrI8+8vCG5Ok&U4!6MGYN04-|1+0}sylL!m6KXT{vo<|JmH zvu`(Ca)NHb1ATDeAs)VR93iyy^%K^R=Ndq7%D9@K5|w(x+9N00=Xd&%Z|diVo;4oj zDG@wBu~ivyqXb_$SJ!*~OBZmF+B5A!K}8?WWIn6?ADZ;afOL@Na7K)D(jXas;(`A=#lAoJ2SqlJU{TaV0TY!b;&;(? z@_IpK#`h}#(QG`UMaNbF%p(kZ#iSYz1>UQj=zG3SO>Ry<1T7^hqZLmgA+xJNWZt$X zHNU}EjS_51JJ{cZhr{-8gTOG#xAXyo!-9c^T+m9 z6~m^X&#eUn?IqpY=QbD$tNJdFr0eqL4MdWCo1-oiar{uiFhH1qt~Ax?ji2l@6_zIB zd7s&n{_Fl!onvz)T)1u1v2EM7ZSUCFF*~-kW81dVaniAEr(-+me&gKSx^=4V`48*E zn)S>%2DmKf^W)PSZD1levqw?a`A!!V?#8P)j1XR$)Tkzb?qT^5(1UuZ%0yCy9Z-vf zWu$?%H1vz_@3mQkROI8=nm1clmbZ+U9G2HM-?=AR@~Vz>2OYMPDB~t8=j$>o&H{+_9DdnTLpBpP2 z1)23FtHxrr9;B@r?>Mdcw`5rtb}K?OZ(tiC$Yv&fF6ztmo${r`*{xcB6`pCux*u2w zw#M=&ssm@|vCE`H*RnLCeuC7g}qd=Js3lwd12nt;lvSe-JA((LTSG2J5L1GQ8rolly8UUjfNC3y;wLop#d%vC8 z)FMseMi3`i;H5y}@%H8oxWihAShy-)ERNx_2zZ{wvf^RKVCUuoAODAfwIqm1DdvX8 z!FoPnX31q7@i|9~M=B*+^`HR5;X2M+3-wN_#59{0S89IKuU+>kfmS{xI!>E#i}Mr{ zHlHR%goJ>Ga_z;FciDp?-Isa%F&^{wwepdJ9zHri0c-z(GeSqL)I?0K9IbOVzIdpC z1dDlBSc*+(Q-zRO9l7o&f3VK}%wYm*E=pG$IoCyXxj)lj!X6v$EZ?Q;@Rc~O{v`M? zZa?X}`m_Ai&sO-EOi6`cKD-~K$4*EKR^)IrJ`nQ5-f9+QlJa0iuxS~B7?LlCk6)rJquZa;D*lGM_jp{ah9E+bWSF||^LTgChG1a%^(5= zb4tVUFa{3V-Jg%20-;Dpud^4fppd^LNUb#S(1bwbC38(TAF9YJ=646i2yGN$@31IX zY6Eh_>2;s>+`hsQF$c#MgYrgsPCNLdb|#+_Zh6}2c9B2c@^>lL?vjLIgG-WS2_n#r zg7$>9>O=bBL&?Lv2D$FPvFLbhgNe&C8Vbz{L`?y13El}_A%++u-WyN=b9pRqj0Nw& zzUxxXsD0UOd~NpIA1vIR!T&iE!5e%)F+6KKTW_i>u9}h%M3Av04oWX{=YRj{xW4)o z`X;`x^QEL&%Y(}^IpJ0EfLU6Q@{KOf$v=pRV<{2wp*@fbUj!{}4RT$DrG>|M@=x*M zg7J#eU!MPiKt_Kwj^km6Q!z}OVhX`xUIW#mV&;L@_O^d3OrIhYk0TYL5WHL3!V z8?q9F5VPMM5k%dVi*P8O1XXNsd3WmrBD<$-+@VwuRsg@pHkr&a%88j}@{>q#YWVU6Vq;Ma-w zsHr{RxK;3HxV5>Os{C6h1C!_=WuINAI`a|htV1h?s>Nw@N7J%@x-b#zA7UPy1&s#?Xuc_>Dn_fN83T5SkyNBZZ@rl0m7O;}&;9`tSFoRCh zv+UnGz02)k2+{W}QPU-2(071^E}lYMGJ$__OYPx25>?To=haIPh^Sj5yx*6dSEm^i zc`goWM}j~iL|5-4zbAsD8B%R38=pQbnW6b!Z=%Kh+hgQOVP#RVvu#~#Q4)w}-b-B@ z+{ks!`H=m)o3x(Syf}pP+}~y;7LJQ4}A-9qDBcWT{KxtMVl4wa_1PIm4Jie zgH3zgA$X_LaEHqHQ;Q(j>(HmW6df4bZ85>Nrs#y)L!bkL=$+I4tbMG?eDU z10`=UR*SL9Fon+e3R|xl_xq-o36r_-O2|$0Po3f6d{nxr$q?+kLUo?!B4bt>853^= zr0e@|s2nj{{hk<*4trLVNTYjG(@Gmbh&;~5C=34?pSyPm{CjfA4#W!1?fZXwAF%(s z_euEN``-IJf%*O~jTD02v++0&`htZDER?u8GX^|rm2e?6_-M&p5wDt9EYFaFSdirU z4y26CxYXRJwyfBxZpOpD&<+?1j4lhaViVzBI_@_VHYY)tCMW0qMHldwRE#Xm28R&) zr*ZOlZ&~`B#hAUCPA`YKXhcGwP}>B7D(@o6Ux$~vvqco5hhf#0 zRPH)K43No7)%w_F{9)-Imxxgg?XETtC1oruJ;XJPko{e|tWQ@2PAD?YLQXr7A%wg5 zH=U|R;WJr2LVi$=%UG9ZdqSwHnAG&M{%~UrAwxdTNgEM&?B}Po!)MufaZoX=eBZ4v zQLayDI)=ld@pOY999fDz<=z48$P72tXSP-6Ho)?I__LhjVRUC$qM?ve?tlz~Z+s*>h% zaCt9#L8Tb^90K8rhtDEAYKScy>e#cOcAC!o!T~H~DfxU(Vks^`zeG*1Q#rkx^+#XX zVH$SX*^~xIW?0!os|M!_tCWnYF$^rf2$F#qO;8s)MMeZwtOO7*;r@kYlEhc?A}dcg z*LuD;8kG}3Io`xiLs#x8d;ermN~U2!(y-L&Ng|PVMlJ$>sdThpteapZ)P2f6=jj^z zZ%5d-Qr@(rvydmwF141=No}IxJ&(OV4EWq{tedrXiMvioP+wZIPia6wiiGNs*_sp{ z7tdH#X=!G9d0I>o`uT(PzOU=M>a@J4rAtaEKc4JST?|lAg@i37RSh7963NoBN5N z1^3%=LePW{0G-j03E<^<^`W9l%t~6ATL_ddUdr6jwA1iWYJ*+6KekX-px9?Il)R6=H~Dvm-a?ArUP6R&LpeTGsWn2>^YIlrVZf1idCR% zr)zX+=}&BaYWaJ(K>R!=M#K<0KH77^(1hE6XlZUU9ik|;vq80`l&n#edT1;scVDj1 zeED++JGp`Zog?#s-XVXb6&4evg8>-!O^v{x9yBM|VuqY0JPY-jS7-g06Mp2fsj9tvjU*6YjD+N!njdL60Dx zhW&*rGq_op?1CG0FVmHyIHiKexYUtQK(F~BBSHoZ$+**E#`=lDKz zk->NkJeBAZ(t=tB9yzVGWxsXfJ8v&?;~MP7vg2-)4d?R6bJDwG?wTV3aA2B3oaP<; z_CNa8y2W!4EjE#8q2(n1WTP`KAtRysuH3V-nlsy;l;ARhl?(TDEQdtdZ_oB4r>-w{ zJ;`ggh74VkGFeLSLDV=UBa=!YT2A}nmS*Rk=ZLxxIS3$H=cm=0eqwBBYF5v-C^|(Z zhXA~RGUQU#x+HBC!ZWh1J`{U=_PB4w+d{Rb)tg@HgP7IHdqXKSHrC5C>!ME^~nx zJ&)O1<({O#T{uGI&f}bmR@(U9yFNC2T1@vCn=~g5)yeuiV@n?6nKX03%wnSOevrmp zM~Ki!`r*HsvBDUr**+Cl!3w{*jJAkRinE9p8zs43PDNhKlwo&F_OWEv?M+4)96v*P zj>b@wW}5IA7GV#)F%|-mBG-Y5fZI=S{%6nn`}5_}MGQSSNRqTT%6JlCe)Q1iQXa@b!Vl6(EI8y#s_ zY_MOFaF}$p2u)o&EBJDhqVJEOG%Dz9Hu0bY>FGofZN>9OQ`Ny z8%&vCu4$2275{3exH3jxbZW+?jtTl;&~o=?jVkWjbWsoTBwy6oF1nT zQ>VBIoPL_M5pNyPl~CzVR1Tp!WY!9e8nLgOFCIb&+Rh3E$I4K1XH8C%jC}-acn*Xo z$Fg-;QthVc@vxM%UZg!&?tsaCLNS50ZASuk1(;e1%$0QQxg2_N{G(IS)Pea+c3ol=FU{+?q4@r2wQQ?B;gsvJocqno>fxAjx7A(v zfuUo6ktCb}51~M{va|WvtNdTw2|Xvd6RD5zn*84?=>KPKO2xDYI=Sv$VfSC15+JygYTX2oU;R& zfq=iu?9yQ&6QeteW%D}5Y6cx6>4G8od1T{^dI(WD>>5CJJ1v6YM3JITV(IAmW>jm> zbmC;Am=jG)8O%S2hJvQ^=2Sq}W50SSi$jDXdcWQ`YZrhe|O7?E6bXOJ>V|llei@9&7 zItSZxj^#3$u?A*TIAe#HOyRbRWaNxbBNr$_KUi2W;%tZi=#~@*30x>k^YQKQRQT{9 z`xerD$b!(YcL95||6f9yVkdq*3G*=4S#?LJL;$hK(wq|DT3Rq8JlPZ+evCeADJRdm z^e1F`dX8XiX*i{XxWQHi{e{xTL(=@#bmhfVS3ns@<=EcAa1K0GOj3h-mK8}o){%p* ztgRvgVV57@-!y1at)!pfWjh$XtKEG`s~RL6mDE~K?U=_7vjK8&i@84GH==!G-B;Qi zMA8pY*Ux4~f_kAExB3Bk)kS!-V03d_X+S>~!cLpged_t(#Ulf3-J z8f4zT?m^zK+|#ASMKh5tj6f#gn?bbNz}^)R>87a%bCn7x2AerL+OdVi&QZ^eh> zuax7bhHQi7U%xlcEg}wNt>&T@m_yLw+$@R4HGylTlQNTOV2_5qfo%-KC)5s+KZXi? zmf!P6JVltEYrn{Moen#sMlf|Gfs}TFPx476<9P?C8w$)WJ$_<*xNDAs`ok~BUa`B) zO06qmit6K7GPnrv{0K^jUh%TFoMvU%3&laIC=OEGsxevbf1aUO-f3pHM*x#c8y7!J z<$Klzz`NM+Eve>KQ3sS8A=ShI^5}rO%#Zjvf9BumY9~7C1O(M-jfTc5fOZagB&X9G zX^|Q&QwWzC@!1egb;+b~9Q~Y?WrVlgzUB#_GD``sTvg}e{&gApfElXWIq zEEUky)|`*0l|^OrX&a1j3RBhA6CbZbyQNq7#oIq*Ljajk9(wyLNG&k#)@*kRL?^{a zB_cM)(eQ_xWZ z`ZFuv_x?`=ZW90zH>O}ff^vXb5tZ;pDKeaKSt8Tt6L&eS6}%wtV{Io4OPDI5Rb(hH zGU4*IJ?kw-JF2!kdVVmP8ZA;!97Xv)9h_WLTFkJlCz$HJn=5*d9K5;L}YQV zsJ6q5*Z#l+z;16(TQoPd*4>koI>OHBJb}BxJwWjn8jf)d{t(tG&ib?mt=kzSWX)a$(BmJfl0w3g21OU7K)U@-|MY0 z2R(+xZmf{iFwl$;;q#d=UdoU5Y(3ZwB}1u<%SB>=iI2W&6qza&BY4?uAcE|!3nvms zf={!xYHU9LGG#(6BQ)1hhTGV=hdW|mO?$c9nQBQp*Q{!L6mJ9N zC5;wPCf3N2fqPl$)Oo~XoV0J8U$ICLTr?WiANR#y#Kc(nv*>caV$$Up{Z!(DhOCSv zqnNNJ*WTGj{KhT!-C-vKRoYkxi%uxT%!fcG34_W^&J>&_$jq7BUqz@IHQ-*& z+PI2v7sd*GUYBD?N#Tgdx(XJ1tu#A&q$=)8+{X3;;$kU8N1D`XWp7}T;O701%JBAz zsWQQRP(Qjzkq?J%tfwOmo>mZ{_-5~H*xCw%t9c)~+%#BLg=sXDIyrVP&T)(^W&(=X zgVPlPz6dlmJ^1DrCpuK26XHb=-zdxhFh)QY$X_k##nAlYzdCkyKx2Pqvs6tmIBy&y zy5j__p2(&{r&e@@Fxx8RU?d!v{Lgzcv;E5i|1jgfL+88Ffint`6U?f}$u!J7MO(;R zV3A$2AgMgx;TP~!CRKTj2(P8-<>rDK*1(5ijCoRhWhJ7$m73{dTOm6zW>iPcJCG)6 z@ARSZL()#En8d99bmK3kJ*C&c`gmnq3=B>&LHsnnD<&5vL+ItMcyTe~-Pm#>1A{Gm zwOk{llXhBTWQhD-%%EkA>x*g)gd_E_#8w|3@R(0oT$k&CMTv%wg@(iGF>0|-8O6y) zp@S0FOtRS)CeI9Q4HM}dux~6P!ExZP^l#;{oV~G)!HLbM!E`b=lDQKroRTQ(#`U0^ zb{|AKR)_k2=o0Mt?OFVrrw(|@XHeIPxW!Lxfks!DtyBe~{V@GWFj($Pqe~xtwv^Pd z6YuyDz%hgzl6NLfJ9)8x?4E2T!S za7P+mthA?d`xCB=<=3S`yoyE28-U4WI$V(-yBungGA^s!bW)gbn4)g68J@ywy>KSd z`5`icT8+FC2|G0TN*uU2f1qBY_;ep^eS4d^bR$p&ne|kEa7f;f^~EK08*8BFMs`%i zVs{{C5{gaHYe#K@(&8&w`4xXpPvE zkUle(pY)!uI57h%jpOf;@Ti}LfXfNn{V`OkKKppr)q!&Sk6+#a12D))|AiMQ1+;x zFvTi*hDn(i;@hUjJsV?d>)idvBpfHKMrmZ7pLR$Y2~A9t`k(R8cJe(B77{hxHwYMS zxd0W{+SEX2>7%4JkTo>Qs5AnTkfXyOmz;|#{QxAq&EMi2p;u4(LCn>uHV}2~Y#WZg zPyOsH-nv%s1BuFyAplewOS*`QqcpydP(cv`xPS`73{Y9M96l7vq&+niG zZgM_8LaBEd*>kfnmY8{}cC@3D8D-22^`~k+FFK>}^wS4uE7Rs4ytpE}gVYXv=CO2t zaaz@U1OClgpGLFo0P?Sy&*{$5LHsCx^F(1lGMD#E`D~A_B8!|{Du5Kj;#1h=1(2n; zv^}3^=v?$u{60NE?T6B-f(5L^F$t#ISsoXm!ODtwP|bdzyouZ8jm*(GEpKaYi2Y%S z2DcFU&*0i-oO^0hB&Q7>QO*uG>ZL!)tCI7*c_eqBxjlgdD-I1FD1N7jGhe+5nt9q9aymZ;X|M}WHHClB3uz=Q2{`1)7?u=NZ>t~ zL3P_?TSMdB(NC<^16nR|Y&eSwiqYA_%YzfHWQbm54xH0s;!h+R?wa49Oyh`n^?>7O zwCCm-`VexbMyWFwO>(NAKC%2zxi%NeUrbuzVD~?%n?mJZXb#n@bB`@9rQKp}uI&9k zsM=H};g-aInd{<|i0@=-)XF7Q@(VD)XS=>mpVq;nmzu{5YNj^`n&dPaaa>;XDL9Lj zYR8Pfi11IOoXICI04Q2i@MR%Iq^DDLFdrOv)WRWU zB)1NamKPTh2i>|}^bRE#2Ywb2SsIyW^$26UepuPR%JX3q-qainZ4AU_hi9T7=f7Xm zER)bxDk~dRkx7i*gA-TxX9^dEDR`CH0vlfF1~1q4!#@%-$=x#O$m|+vVxI>ZkDs)fVixjF;%a(jpr_mw_e)jX{P?f zo*W%zQG6NJlLSYOA-^*LJV=I0A23FjklT?T)MzEyqLU*X14=eW4QoHxT%gJeh=qh@ z&W`+{ zI5-{%DkMP0lYON2!*>^dQB-*g}?;>I0_1n_(iWob^}^X%_MzZ$dS~ zn7YcBS|hDDoHZA5*u1udt>zferFzrvVx4k0ix!dv(7<4!X ztHKq_;|KWHc6e1bpxPor;9loaT@{b;z;YK^{G(Fj`J6_fIkRAErm&^<>Sc~q-smrp zzaHDniQPw%DB5^GL@zoS7&xDc7ntY)c38-VNeS&yMh$0P8TUW^o!7ipbttw^}@AF~bGq;R^DCFYIU(gahjMkl67 zClm3hNampzpVD4+B;*486b?sb9GUX#(Kq)u))*qKSdPNeZ;)>&jy-54NBbxg94)J+ zOhe5$?%xf?21n4*@VOOtU?ZOQXvqEPvv+V<5BOp@Qu;Yb=Sf60?FGgjvz4;a?Pyuu zfQF3gOjg`jq>o&Mj~~DPtK8TsEMYa&QI_U_Qbd9u)Ol}^kp>v^m-jv$&!$X5)j0LA zc=UCl-(i~4oQMrBPfjL^c`qRD+#bGT5QyEGtra6&P;#)DJR(nrG1$Enh=5QFMfZYT z@9hj9JAm8or-KOISx!J=yDsutc8Ls6UCHNKjtRHF)}}jU?=zF3~>3Y zp1|lGu3bZ_$TUL=!pg3T2j9Lu`0cniY~G^cYD8|AZg{0jI)-@F?O$zClW=HY=3Gq` z4p5O373ltn5$yUrE!%@!tP>>EUrns?N=AbDO8RR%Xh7M3xWArP)U)PCXu1=1GG#J? zxe~Ej&SF*k9X5(57jlrcLBnbu+*C%*nSwR!jtGj19w*t<{Mx<*guxH=qTMNLkb}?? zvAWHJMS`Zf0$VGRQ$HF*g6$r%qcc!s-7wnAB>EOf@5X1Sjo_SGIOw0-d*}F$*^8t} zT=`Exv(zN%rNdNEPHvgKn+0~8`VL~~kyuv_%G7bnwtwx_Z1F;Ji(b1w*bgSV&<}G0 z$3SMum}hk89P2L|e!4$8q}@HHYI5HvZEZ0C2 z=t40#{4;bIy+k%4M!UKRn`R3^yW6JU<1DN_J#!>{ICwvRBG;*c;yCGJLQ#3CPDYLZ zZUJl-ab`zUbB5wt&OsrNwtV@!AS%9h{loWK*`OIN(@pb8CsD6;_b!0RA^7JWo?1pd zxtU(`&v$SRk0|{c+26$CWgu{gQ5};Kgdw`vTTsg}!pa5g%+BX-dcYyppkg_*ybUUi z-2Pt42yHqYtv-G^4IdT8yb^usR<@Y)w8Ss@H~}!#xt_k(x#3K8>mL-E@qH=QuB(1q zNI9=0b)Q-UF!oMK^9|}DJZhsP+3J!(O*{LZ0asV7l8wh{!h|^#QLZH5)!X%v%kMdg zyoa!qAB-2cGe}Ru|HaQ!D<7GbNLUY6k;P{w?V3pk#Pss-862C(V@GpLCl>X1=jaRK zJ$M|Jr&yv#W0i;0l9kiIofEWBAqsP|;XieeGEVM_S}Arl({Hz;cy4|8ggj}=jG~ju z{-GpoHaNPUE30UAec&McVo{41d{BQ>BaLH+6sLR*R#kmEC@crBRmYQHum+EnUY~lv z!NKYbfarr>H>hjg<~lFcSectS7r!q}j9iG;tp;OJ=eVf#*=YXzRl@_{YbRtnSSR%Z zcG6(={@}DA^*y?J$*;qV%2H%xuL9@nE%eUot(%XIe;n|}s7`}?T({S-nu!~p*eKt1 zr}7;5^*;$T;Tzki`}qpy`M(kUFSiG|uo%S<+SNZ2#UJPsBVwSUG?P-Nu@_vu z1^$a41L|ngZ?7x}Hen@PZ`v7CUI8a~qw|c#u}$Gk-LzIO*Gq@;K4Pha&BS98DBV%pA&*6x%4dz*l5qxQgxAt4)lC{Q}yTy$x0 z?#bg_AfOMRPaJ`$gdGU$4K!1VS$cx~!qL;HJq%My2BtYqRa=wa#m7NAr(oU?l;L8Y3=`iyo<{S}ihvW$OD9&TF## z=6QA{!Na_mi6d%wIS6R35STzDU79ccImRguQK8Gey_&9C7CQWU!2f zR+Zm~yfcLdW_+I>+YWL-kO3cb?Csg{z-x!U<8Cq#ur2NA%_l4KjECi&3tVC3zKvx^Wiz&>#M%x-o49D=ZIFAO zuS7VlA`Q^$kObrU_IO2(1wvtPGMW#{o0W92g-?z@srv$lY;$+pcI^Iyvf#yh(L>-0A1*Xi!VJH)Z7$}tHqhz6`u^^E1Tb*`D;j5lXX$JS}KBr zw3?FQI!)|#zU5PLo2UZx_uK{Y;TR*65<#9Z*}Asrxk_XvN#B^czjZE8YI2RIiVtj# z?U)oAf5j&bYK00DjIN@~vHwq9l0&?X@Y$7{9|i728HEER7T9TU6}th)X3lh_ zTESNC=Y#bVmupXLf`Zc>3k`FKY*H}-+v#O=fwnILowx%BE-TGx_;%7= z5>cl7P8a8Uw5|+*7P_s0HI@@(6WYCzUTM@i2w!%+Z#_IXoV^TJ#{fj3$xd&en4HUG z9lTBYR9t-Uct}J2mvJV~d+)ha&hvaqpFsXS|4wSHWBsk;u4H;V+mPBEP3?D16zHc4 zxuqqpgsGW2wPZcWe|ws1jVx_Tu^7{wJqw#fUf;cJ)6kBKotl<3OF?0>4NH&Mt<1W3 z(HUyQn}gil!>7aigo&I(daj7y%gT$*d?{(D(<7pEI8roXnxuLs-8mi{hKq4mMgGIA z#GK#dLEYf|-s$$r>b{eJ^&htY2W`+9L!6xl%RgcnhlT z{JoN{(br`~4|eTu8c>$#N1fr8OFK(uE%2$24f3snG*V>`BfrV!CQ1xEDGP*%UqSRF zmHe&yxSi_AEU|=xd>Cw*8B&lKLFf{FLql@ zvEpZp5bW+07|eq|K#F2?pYo=lqoI!6?M=$Q8WGq-&CEf$VCs@4yf-;iB@xF+8YBFtKBjDjWlrw|^{a&! zmnn2O9xbLKBF78mjrESI;2g$XNa<(-9d%lRLaJwxQhE9AF_!@wv%zeepS%K(SaKf& z?iYnzCOw;}5vC>FFAZJt4B5Zy73NRNLy3PQr9iD;ZMX+cwi6l;rXPAu6pO03%VMg^q+i zh#*ArEOw7DpOh1^Y?tcvmc*{6(rAl;241DyHLfFYNMPhug{mVf zZ@Z?4**PEbuYipkTF2;>v#PQPK3m=d*wBw86fjk9#Dt4x4us;A)ZHUNW-FRdqaEtp z9R8d$5+=mwYt;s}23QU@S6!~baitYn$Wg9zW)gx-9NPC2Aj7CP2##BvR?&Z#F4g zI(Ob`=*zmP@A6u4Mzz+>KR&pjE<&vGf|0_f=xmpR=gLAe$BK~l*GD^carSi>8SA); z6h6t0JF+H7FySq$-K7L-?ndkUf>hH2iO)Fh_R%CIiSMp=qG^*;;pvG%!2z|B2%M9t z0hvW<*jtP`9d2&Bs41{nv3>$dwHh$;ydn#kcRN zr`26CE*+C6@8h3I^?o}ty<23$-c0>4ZEYWvyt;AE z%nUKh!wbf8p-L>lRBO40Ajpw5V9XcZ{?H^KM-Ogg$G4Ksn5xgg{RH)G+^O!Ly4vQ4 z01?al-Yt0i7A15{eE8_>&(%)*xqX*PqYUQTmCm+&Fi|V^csl{+n(jeaIH)s>^R2E( z(`SH7CfyFQb3WM2kXA~cqukVJHe`OLldw()02wtD=R2Uex{>Rmp$s!2Af#sh65zs+)b5 zPIOr;6H|}{6g%dm;|^wNVBiy5`Ld)X`a#g2p^889`O}v{X`n;+M-Dw;97++^y;+>GYOVB(M9Gwt&9;ftF2!esOvRbrB=GaKY-NXoy#S+8iNUyIkUz^ik!08Vo_W7odv&{thoCp1yp6j&F{(J!pg7UbUj;-XKSXKospE&OjJRQ-NN87rCZR+d_OchkElEj39@iRSrV@Uz}AbQz9wb^EgRfe1pUNa zi{*+@MYvB*EcE;rs6>_^vQ+^R6ps0VVNctx7Hz&akklBBlWIWN`s;QA8ki*@$Ybwx z273sXV5*!KFZN!4*KcQ!ihsCt1L2;{H7n&N%>Mgszi2#~re$^6AaJ9s4l+ZX)zVq%qo1D({A2>bGi&7m16v z=-Xm?hrt)g*2`k_>Z)IR4^pyO?S=)2dyo#TrkGEAy2-?%Rx6S}PTd}O&W zN^Jd-sZdOB)sqqv{G>O?=VbGHysU-&3thZ(G#B;gWR~UG`SszzW9!mS>EH(@bsb(^ zQG@Fiu0nPzs_E{LoU$qQrxk#O~;NqC_@LQ8IR$S{Lhc!mFn41$w;I35?2B(6_Tq?V>9EfZbc z-hbK1={R*W#o>O^radR7dC4hi0R)~(hZiA!g-4_Qe87li$xHl=ZQ`G^k&jr#U=ww& zbb+t75#?URaB3X(mZS@5njP`&e=*6w4b{zd?dEMHVZJ(v4sQ1Ox{;dL3vV%!J=TFo1;dOnqqSvV}{I2uZ7ujF^ea-3?umdKqm2 z@dNAobDerd2hyT8wNVqDV535d-t}m<(aDW_j2tM9>g?>#xjMPCeU2Lpw8aV4dqFT*kSwUCs54|ekQ!P-C0laCqAskFTog@9@qd-)#3T|BKOLPp+aY+tqYBH3!medpE3vi z!3Vo~wnO8zf^{e2Ze3X3&M0Nv_1vE0bK$48etuu`)VN%5N< zQQ#l_0`XU?&0|y^(pf`zfxO`Dfeql z)%;Lm3M3e5v7~2B##{QKv6E0at;=5kD-`@5t*Xa}z@64Dr&>e`-SJP-U9_oW5WnA{ z#YgT7OwRh1C zY%iISyoo`ni&a$%S=*grAzS8hQbGzGGWpKdikq(tff%WGf6!}yJrPl+nC{bY(6WT* z3^KMV*H+Fp07N8S$(bLIvwY5Q2KI2r98OcG&vQMf?_172pW1gBt z)1F-jYXCC!3}wLUkT87-J?pvwmYJg3?T}k(`r7=&tRsFT}cE3f&W2 z`P1{p!*Qu+JOMSI;J$bL3$zPKWQn{S19NhOn*2E07BoaKlM3=>W+|C$I{(nVCw*~i z6Jw>=&<3)&o0s=4u(%7Mz-u3wNv3;P#?vDnb6KCJ(Ajmde>Xz7HtFVt?~#<0i{dcG z*N{mX%?<4Zgc&pS^Dc%RkA7miQ~7t6R?*d?_%!X@-~Q{a9muSAn{H#JN*YfUakUOT z!A2HRy8pa^OXshuQ3iabRUm3@p0z>xLFL7$&KqxW4Xg3kQRBpP`8{;X)L;0O4sVs# z!;$@m%|DQb8{ll%`N}oc2Mo+s{KP#;e3C3jqzz2>Tav0h#ub@(9WpEMLUXn=z^M;P z4*8VS+J||3eEzJ@RljD=axLgei`OOqB>d-f7!hy< zGg61^dXsOu#Bk5Sm!l`t5y3+w&&Bk5KV2`~MX1PuRf66M>B8%|jGZZmy&UeGZN~%o z`ShOwY7wOoAkVJN%rctL<>;gWV>#V7oqUV?w_ORP%Y6|@*&LtT9i6#q?k}6IkAhWL zYQ_oi1R^~(B*hLD>>tCtfinC}L=546D;h+*W5gF`oZtE>kLn&Z$j+sRw|OVT_{E`g zL**XQK{jyQZPr?B@i&H!F_T*OG4#&8^hJ;UfQab4$kC+(FaH~AB>W%aK?WB1D?<&T zvnChtm36LN=t*Yy%Ilg~-MPy&7RzTj{wcNIG8F9kQvY>HsmEN*(s780NdGWAr}@Z7 zvM^7&lG=ocyfhihL66+Dv_X34OH$kmmiiWNc#tKK?pglOWE3SWT04Yx1MU>P`flX1 z-^Ugb*~fe^AJaZ;AUgV!pd3;30aMl;Tv^;3H^BD?UKf5!2>_tU9J0tQWUz!ej}jqE z#xB0ALdxT4ktFy~r4fP*UZ3-~oVq7i8rvDuJ0TdsE?KGWY)Bz%l9aND9 z31F_sws_c38_NZ}KAmtY>bp45RDj=)TGS_LaHpl{VgtcE*#O8VmJwkUOt_wu`#>n# z8-m^fY^H<)i$W?Ixd^$GUEjRZZ}p&uHvTH^U(M{D-2ACB=BQ*oivf_*n>lA_WIGuwh=1 zt@UMO-OE*Bi4?TaFfYj}(2kPU_E3)dKZSh-P}@P%cc8d?ad#{3PLSXh+zIY3rMNo; z_uy9Cp@pKwi?(QSr&wtVZQ)J($oss{d^6w9Y;Ny%@3)uROfq->++G9uyd#!MrUSR! zaG$C3*4uyMYiR{x7~oPSLQSBfXv)fgh#_t#UL1qKIKo9%()Ii z3T`=`-2%k}3r0YnGborv0Fn8g#k$l;C5)}E=C>J?%~64>j-ShYtOXPsv`OdN8LUd0 zjG^)MHvMAz9$_y+ekUnX$tnxU^{aK8@W92$=4@k@saB$LdEP~Jae{!)D}w3=f~Ifha$D-|->3OL zJMy~^0F8&-896Cb(!Ke9*#v~G*kXfs$5gypyrH|Y2PQM}!U=jOS?sTIO_TCzD|Y zWO<$i(yxjFJ*NQoj5F~Tm{i}&3==dpB)u%a<&oKpK;(JCi^VS~I#uHfs*Oc`&N>C2 zk})iVNB3S9?KHgoMp92Dhf_1)J%%GyU1xNOFbs zLavbp{*x_4jvsK<+-iU_^ge2f)7DtWQGPEU@wxN7Qe69H_Q~Tqvr4?PQ4!ioA?U4Z$kAL1;P!oRFiEB9&AdoxGUd3@9H;dz{>sKD1epw|7h z2x%Lew)c`2jK}y!yPn)^q8*R@YF!1`^oc6Hm5Fcj(}V^C&dK|}^}#S`6}0J@q7t&b zH21X55*I%f2ML*3OmtM6=CMpkd@}vjAbXxJ;okxjfanBo&ZKtwb1neZpbq=hB0D|Y zRdm%q$mTlr-0oYw-E+9ND;V`=p})b5^z$)wkVdi!^Lo>?$n% zDl_n#!n$tbm>$t@a}52(60Ts2@E|8UbaO1p=pO>voRswZo2GXY9 z*9PHq1K4{SkHJ2Qb8PB6oPkoX69I2?rU&s-3RFl&RJWoJEEA5UY|W_o>VQ_Xui`%7 z(=3xM&?I@3q3i*Ehr7}8*4(Tlq?wyTnY*9edRZW<&2FT#dnT<6eIn)^0d=R%4c<9b zOyZ0Fw;Q(CG7~0~A^mri8PitHc~j#o+{7t-Jr^5`!Xx{gdEEz-*}wd+9iZ~kWv=MV z#?ekp@;j6Xh#x>t)?!z8qd0UQZ9>-V+FM6?44BhuPT@0gN!Vz)#7a# zd_G37CYORA{r8y$bj=q7RFt+wW~2s+qX}P` zk>}jENb3q~+IR{`im%x;lHPnCGwt(Kweu2j>VZc#&hAF z&TL~xxd!_Rp}_-lN4`x>k-ml*b%hF*axr$tVXn!f6exIi`a5+}bBouNErZa0^~SeI zhqUj-f`q%^vWoDM-r%lTWl5y()(aOCd>J>xRrzIOk!V$}glK9{M*7_gGz9VqqeRA& z%QwAekGO@R;W!loggF;3^viVwWyr7*L)v)KY_-IOm|}^9nwb-PO2r>0WzX|;mSbMc z95io@na;|cU3qYQl~}1{%tghUA)H$o^H%3YLAyRJpxL~ZpM??$M68vly|rcc$DY&M z%iRUiQC8g~hFj|-naXN3ZC^hM(-fN+v5br1<4hprb>2CS#qwI;Qc`tOfoi z938wP7xg5T&wNYwxlM8(lclIOfh)pzbpnfkZ7zSS49(*AiB9dk>ZO{3^ zF->fRSZh%ep?yNG=p|o;>|Z=B5O~s3Wthh7UH4d?On8XVzG5P};xIr1*f9*u2G(-z z^iKJFag?ZMZV=_&w3yMV%?!raIT7a~ZDSe9_$jBR%fxt=)S6E=h9RMZB5WV&Q)KGb zudkfWwPbaen}F3TG|fa4-~Q zQ-OCz)Fvr#I7@^jG2>(p>i^AtciSLRK4PvFaw9~FXQ=FL(JLw5NTU3S6Z9$z1GGCIU8JA({8*)KM z!gL~SDA%Km_=>YX&!)C^W@i_{zK*N4;`DDple3Rq)v*_3c{%$|>vtMcn089Q5gL8= z4h!?{v}p_j*t{`p=v;>H*fn5+m&-rdC3W1g74Ty~sUzUTr7X!+#bNARrX)~OA2utSf9l!S^eX=j_&7FN3B3Z2l zTLqv!t%k=^FwU?l;~7S%%3KX7J@f^(egXBI_Seh8an_mw^omswbL`PRG^;BVmDr;s zJdXhU9F5S-1FfdED}Uz|K^6y$w2_IM+^}-ESK1`_ZF|JACy1;=NB8VUR#*G7N=~@= zo3hH$O_WFpYH5~aof^lP1*v$wJsQ>#Jzi3EYJNopJ2p^C+s z(-E2NuQO9?N7F3^p+~5UHL_9+f+qEJNV|J5_F3|@n)d6@n6P|K}+1RO<-zex)&ZI_EEsN!{p@Eli{ z+OdsRIWu2Q*0S0LuNsTzG}ju~{_rI+Lj*eHet<-wU#h-wj|OVw^u13OaZu#W$I)T( z-m69$3=a3bD8tXa(x_rVqQh>6ZA+mM544-zW)XiQ$)J8 zwJali^R6C;6pDWxMEGLqwC7u6Xe##}>LrJ$cB0qrah2vVRPq`#R!m$Bh@U{9Y{Fvm zp)fXe@r^y0;hO)J!iX1Fg^;JpRKd_1c^YC-W*e&EDL0=bcK@cC5=6%yl zlH!0~%_K;NW-JH4q=E&Wd}?^PUC5enJsnA^2{$K;NraRNv~X+tDc}%$ZZ1wTZk%#l z%ZGJw2UyV@cF0+pWZQot>zD=QXR^0XioZDl3v^Yo@Dc4@I<8?enD6jr*s!5_$I@y; zCtqZQ-X`}w`!O*Owox+k&=`9$(-f8R`Ylu3HmURC%MdwjT@tm8nIxf+rRbp6SP`eX$M$H$bV^XH1Ms-TCU45?MX2LTqd2NyGl_F63 z)v+xK1FHs+rI+YD9DP_4MIiQABtj;YmdKQCBc6xw{aa!{SVp|?rFUO?R2HzQEG^3^&*aVXOKuo4JEeb_I?KC^(3N$#mIo zLqK|c3jO8A_pN@J3k_IG`XteoNynE9-#1KMUMjxON?=W~c`oM3YR`d0JsnM?V)-?e zAZx|uvN_i%_*HPVDU~XgTDZr1+bV5AN@jc6WYhkixZ)o7qjYbiYv(nivG=51PcUPO z-V>>`Fy)N-(Oe+~i!WJl2f-Yg8@jt2j7^&3y3-JeCT_cJ(Dvw~siM}>MSr0N`*`Mb z<$PF8?NiiTn#tX1A(d^lP6hSVFiSG+{Y(T!E1SifVCJ0sGM54&)s8kZhoj0tEJc_c$H*FM)|nnO6lx0)3387SWVy{^BONE3wiW| z;fK4oUxaT4lGA|!#`_+Api%XXJtYKC73 zPj{S5o$IORPMH-$zfm$jo79(-oChjBusHo$nN#TK3}udfw*K^Fcc3hZj^}O;-r05I zC;D&uL%cRz*#7#j@?q_xBdw#9FAuY~Mnx;b4o^i+?W2uD(A3iKeEgu zs?;XP3XX7{W+wOwee{I0{# zBXS4bs<_p1(iUe{ai@nhjG87IH)`ONbLU-$v^F#1+;Vw>3=4GoalXxCm~DKAph^vr z>XEF3dUvT|EzDBs-$jgK-O;X++NbO>?tX_xKXJdM<9$*i)>m2-7YI#?rqbH2-{GmS zPwLc09*u3&DSr5JLftVE6ETp%E})g_B9PDxu@sjhMo=#Dg?EsIW2AWPad=k|%-()g6v^zcnM zKA0hCSCmjW5%>+HTH86MXG}$tE{_}vJmM8aM}5>RiF*z!`LN&*^6={@({(#FN5!J zI5nJcnw0maFB1J=r%z!_;&SF1cxl6o1}Q(^(SE``ImRw;cUEarDCb*gX(1g^_Na!a z%?0#S*H@h!+GQKgFCQ@w41JvHd@h>G^I1pyX%$9=2EP>3lmEdX*~*YV_WioP0dinV z0PB8M>?(~MhEM$`ced8;PB&?sm^ZlO_k%Ykq`itVXjEX)863(!Q@Efw)xlW@ zODH>rn(-~|#Wa*Xba?*u31N1cM;V09Nv)w?Eoj)01GVN9Pn3|{!qFGBTrBY9i?ez` zcG)Krdrgu(ni7!2mNuswg17ciTzG~j5%r1T@*FSMS@F6)JIch_adFg)6#wR;Gf^|{ zExokr?gWspOKkBT+60aWp`t!3XU;~yqVgUWj=J? zV$R4&&eWV>N=iAKYByCrcXQxup5jR$hK=@kY@*vmAED{3f%<~Vp3h5NoVz85UdJ_v z>RAEbS3~~!$qU`DMs80G`{gx>bycsnOtg<()u{R2(J|8ltJDe+FeeMm=^eGQKC*uy z+N>x~?&F{~vl8r^5F-}KSRqJl5Uu$t6ylzp&2Nv1t5Lxiky{asDpvOpFBE6^ zmeHh#cawEZMVcYRBh^B`B>!`0{mw3al6FBpGx2`l}Yg>~$nY3sA z8K%Nza7f*k(hsrrLN4~?_JXoaDKi%QX2T0I2F_d?uha6fE=o@F>3#GAq5j@JW;19;H6uh{+B0{*21Zc|$aJZY4K z@NL!+{D#xF-= zI-E9aftG=MdpO8;Yko>n3e2e*g9hf6(ui0Oq#V;YlBE-Zg-v16i8UwC>d7qV=0P$FYwO6Ht9=&isN_GeDS5$Y@f1;t(!sSMu#(b)L%st zrC&g%g_DY+N9NOk^c-kmKG1OVs)&?y$M`u(w!K+xHix|5dqM{9C0^-=4iY|%Kbld{ zqx(m{NCUHGY}H9{vO7rwo^!XJVp%^cQ~5asjYs}@C@61z!U@0cP%W(ae36k|l;;}b zJK4R54uL+w$5>DLRx|&$K$*X&U)Z zonCOvZY>I0N%Qkh0o%_LjC%~1CK8Cxep~E*s7GTf%-6DMcQm4hKXWH3O&Z^pB6njh zOD`CcnD;&!k^892^|{>jW&F`dai@1hqIdDL)VRnUD^Y&%shOAgg}qCIkr-~kcJF7% zYJhm%^KVZInBIJya+g*NQu8|PRG{49y09<@3Q$tM`1kd9Qny$MBND>##D{V&k(+rh zy~m+VpWn0KVKQ?D=(@-lO$a;R5V{5{A$`wM2-vJ>`5lsyX3%KB!kCD}LNpwh^iIcf zAo}&=oN<-CLf@SjC;&g3ME|Xp5AUq?c#a(NbO5f3<@BN&uicKTbFKl;7nW?k?}@V+ zsw#IQunCsiA4N-4!VBGTC*v0 z(pEMf778mVK{A@`JDspKMb7zfSUHd+WO?NRC^sXB!iYc{c6v=HrFx)qR*Xt$xzPt1 z4dO9RF_+XjK7=R`*A_1r30r(Tr@ap#_QkPfBX^S4tY1bTb*@<#S$LI{ly^uce4{Xo zf71mt+t7K^l#Ecp=AUm8z~(^J?RHUI>+m{nG-MIEh4j%7bjdX!Lcy>1baC~K>CELn zu_}p0FlMDMVzAbSpf=_y=_4}`)f#4|1#)R}wQjSOlR0*R+@$)!nZ7HfT~QaBFA9ns zIcD7Lqrys;+xJjNaS0DW8!zKEp(FZJ;}-TM$TU*F0|LK!jAS^K?KqHOc*oK6Q*o%x z=~WtW#K^0a>G(~nE~m2E9V`)&3DjJ?!%Om_{!ZCaPI30*_k5to(cT%pHGh&+EgKiH z>~n=l2%RXQqU(m^qAr*BkRBzmNePK?W5C$Q(;F9k5A9;LoT2!lm-+-l??ftT4qoNRD_^CLL#Bm48@5b`?;am8%q*|QfgbC7 zAsV{+we+PQ`D_{Wsz)7ITYM|$vw!#9fP0LWm{P3>^Kp*v*g ztG1|qzWB}2OFNX|^Y)L=3ZXeCX~#2681q&=Opdgu)(|o|R1sezHMwU3EUb*8xrYR? z^?tHGwy|pM&V*F>$?S)5>3QY4gajYh9EvCB@EKHqr%_Y&Z!T>I%wP8mQ=>WO%|Sd( zrWajf>Vp>IO{UEBFJiqU*y!Vp>E;lbS2#wFb>(pM(-~D3&9L;zYYjP-KZjB~aazWW z%-Rc*7uky;c*mzN#QOPL<~1&wX%1i)`}ck+`+AW7nJwM~#q`VU@gywmP)?;mb5i|e zF03pLgu+TWeI!$$W@q=Q{7Ug|67v1caawXz+rv%!R(r!5PDO(3Y#+hlU4nZzN=NrN z>!N}QEk9F~yv@QbNfx$7{Ve-wR$W$;SBOl)TG2O7yY|?^L&Xe%2`FZ^)_$7_DPJYN z)3LhNh&tHMFJra+?)A52BX&nYXgN7y@$<2w%n#>2eEMAETC)m0?|j>>OD3Ter0e$rQIZhYAXKXa&yL!4nFBauF}(u!RgL)EV=6l*@=e6BbZX=OC5l|*4r?mpbD zuX(rXljS+8i+8F;>#wD42t%ww^Lo7&JbQXf4%1d&H*Qp_v`$qi_s^{B>2qAA%>aor zndp+EtSHu-be7hryiTcY0UyjO`=@t{yG&IGFfwx{l&e{L12D2EnN&P=9Lq*#&Vpci zwc7EMGBNpG1lmI)8zZ*+H5VtU@U#YXC-L#q$z$kg^-kgr%6S-BzK&ybS{oza4@3!h zueTJL5o-<7Y7iYXz+Gg%ZfuG=r`q!B;1*#%+xU#ML1GhP#X_&Nc~$Q4O}bKm10kq3 zK_@dy#($+5l}`%*sAZQC1&!@FI8aWxgDHp=0l7)NeiI-aV#T5*Z^BY?mkJzhHjxie zi`I~ucY2l>l?+U@UTKB3>D`0=>0yXd73k0x2qJ?>3owy)bt!;lfS_E(0WCtEoM#6} zWUXTRfW0>ieNzTO z#wdh&H^9d*fV0~m0QcZo43cBq#Y^C7=0MDZUh`4A7@D6|If4}y( zp^r#zPhrXyS7a|A5fq=oPo%d^Qh%7^0szm*T;1LM;MOj#eh!eo{r>&(>=*z*&H}*k z{ssA0^?xexmj9~D{Ja1EQ$Pd&5b1opteoLmQy=HQKA-)EU&8 zhm3&c?PKi%mkqsry#E!9KQ_u%E><@1@(=wT`dE`oCieg3JG+KkbYF z08Rn`fLj0n5SYN36mGr`XA8KT1jj~(>lENN5pc$Wvp)cUod;(P2>lIlM#)U5pM1Vy-og}8Znc>V`RIgdX8 literal 0 HcmV?d00001 diff --git a/tests/properties.rs b/tests/properties.rs index a6142df0..2b0b7919 100644 --- a/tests/properties.rs +++ b/tests/properties.rs @@ -46,6 +46,17 @@ const MP4_PROPERTIES: Mp4Properties = Mp4Properties::new( 135, 124, 48000, + None, + 2, +); + +const ALAC_PROPERTIES: Mp4Properties = Mp4Properties::new( + Mp4Codec::ALAC, + Duration::from_millis(1428), + 331, + 124, + 48000, + Some(16), 2, ); @@ -126,6 +137,14 @@ fn mp4_properties() { ) } +#[test] +fn alac_properties() { + assert_eq!( + get_properties::("tests/files/assets/b.m4a").bit_depth(), + ALAC_PROPERTIES.bit_depth() + ) +} + #[test] fn opus_properties() { assert_eq!(