From 2ca5c810b89ec9d4e561c4af1c42a5f470e0c1dc Mon Sep 17 00:00:00 2001 From: Yibing Liu Date: Thu, 6 Feb 2020 12:42:00 +0800 Subject: [PATCH 1/2] Add logo parakeet --- README.md | 4 ++++ images/logo.png | Bin 0 -> 77034 bytes 2 files changed, 4 insertions(+) create mode 100644 images/logo.png diff --git a/README.md b/README.md index 69cf1c8..d57e1ac 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ Parakeet aims to provide a flexible, efficient and state-of-the-art text-to-speech toolkit for the open-source community. It is built on Paddle Fluid dynamic graph, with the support of many influential TTS models proposed by [Baidu Research](http://research.baidu.com) and other academic institutions. +
+
+
+ ## Installation ```bash diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a29b823d35dbc9d82e7ed8abfaf4b34e04c40181 GIT binary patch literal 77034 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 IGd1bsP4wUor0S z9R?9`Rvx>X^Iw{`Rbd(ePDcd0uKpenM|^dOej#>iW9l)Y8?UOi}~ z@}|Y1i#UXVn%T~)-=Qlx>giXmf?Rip>ud;%ukkYW9BtC@?w`VB(sMU2!+qJZ6K-k# z(pTi_jyj?kXE7bsr_G1Q>WvVan!O;U<^l#h%Cm4r#B<5S54zP;;|}bdw)WM*qCk5= zNv_k5U>jNd7iFmu17}J<<;7p&0Is_S4Gm?2ELi#_0Ivumqnn1}zI%o(RC4JNs`u~w z%z8nLwgQc<`D3`GA6tzOIJ*)<`t^9bm=?w~2JJp*GCxqKxI`{S!{%S8o-dVcOy3M< ztv?x#db>gD;#LTz%4ra%b;*}ir+}ivfCp3g6Yh?@dme!f`iO`@!+=1neI4yp!??b` zh{$_tB#Yv4-k=r0w+{hpHS4KbnMv=xp`XPI*lSDPX5Tf`669PxR`-J>E%8U`QG~HL z?=q3?d$>t*HJc33sMt;5z&O~CaswZ{@ZOxjW8IG%tEl%_2Ov?b12irdD|)Ks?v`3Q z5Y^^DvtWv9_M;^0x~KU`lVH~?Y>IF}B0Uzu!mUd;Ln-RK;B3;X0Y1_x`j94qJ+p%u zmM0yA1TpGA=cx7OkK;*Gs?_xAN0w7iqJRq&32h&Sp?x*^8n2b6-{Z-0Y_hAf{-FPm&h5L zh=>2bWii@+@y>CDov26fv%pslY=g&!%@ODk4y0rnIT-j9VJVk^KPR<(|86kGygG)} zGWC6+sqIn+eZA3Vm_U#0-2#owUv6L-=C6d%AFsxNUObYL7=Lcvy%rNaoaI~i3)dRF zhV&g4iL%LZy{_;^A5NdTLBCh$fp$$W&V$)@y#f zXxdDFKd&TBsHa%_rg~&6cN{?iI@VddcVLPyEdMSgtT)C0q;k_Ow2T7--g=#3h}){H z+EZMLISeg7VQX1?suqOSwSm+)U^@py6dGEDkEc0>=#WLKg?|in>mIX0edUspS*(N< zAz7eFnill^3jnt#BKm2`{Sy=D{3(q{8X}bvr^4y3cDI&wg$dh9RoI2eiY0PZTd;(a zI6N0!U8w~d&aM+7o%@)tm*gv!D?!|gt`d^uz8{vej>bh)QFF?xuhq*a&B+(pS3}s? zPEJUj(`-KIjsY@$tA3Py&#N^U^`75Xd1aGr@%YzU7a{E*X{vrR$&{sKQ)yx^De_#G zgETP5DUs=>%2AE~{9m~zG$}B^z1;-2dAlfJ6h2&(U{P_PwVnEHEKa01S4piwdhf{E z&yAJ^SpFF^8iK}wA5-Vhm}`gHsWQe$Bd^QfHd8SJzeN9%yf!q)u`mp9F#lTZZOCez z7^ZVo+n;H+jP_>8nXM6IADM+7NFem!+Oj5ukZw*b=f5XB<1C2GH+uF{GD4)Y!HKA8 zl6hQWZiEP}z1q zVeKOdG0E#Zw+7qhoIo3k(uSc7EOF zlO;d|r!t&+n|XI3&}~NkslCHxx}&-LP^4iHuCIH*OM{!8bDQS24v+oGwMXL+6<)Q;B7{z=Dt83L@d_`;ER2z;?$P)3JCjKblTQ6=0bd&F zuFLM8=oY4FGQ{Z2`>%G|W&Wc)Oj56KmYe$KBdvbZxjdY*T-!>>mL_gOV?MjYr1AWQ%gy&+XikyX->StgI*Ly_XukTCubDPg&{v}t66~wdNW+@B zj!&t9Hb0xw<-kO%;&l5iv-02!k^d6q`Pe&r9q;Chb)^{ux3Vyqt zZSU7RY;D2T5LO^?TdzKX$h!aeB(A5JiP^S7O1}tIX06^f+-_S=!;&;A_{|R8#KHo6 zX+OoTU-K*U&AW8oM>+yVTDk03TwRx?Nnx2m3k{b`#f^0KcSfQY(V~kNXDlWsVIQH! z0d=icQ%<^18fRi&SvlBu72Xq#)#Ym>$h6Gw;h6EhocSXwO`#c0$z})YTcs+M0iI{Z z*yNnTuwzt$rW4D>mu{f!>qFgQkPNPW#Q!TlLRoQ?k;kd4p*WY*GFW_46o&1%2BVu; zJ)$cFTn+Mcrm=0NZJ39BjFyEh2VAY_#h_1paeJdkBFS|J)P*Gjbpk{X=)=5>to=dk z_U+A-tf#~KOwlo^oj}qIC59iLWu9~(u4b&%9|l8FF6g7#R6Ez%_#MaplxLYii$~wb z%C`)DGTU^H`Sn%`Nxh^P)PMNWZ8AaVDN@nn`da`oLSLThzf?Dx@e495$gAE|Q99FR z&@$O7`bkpGT>4l)`vIZlgh@`#;k(Wj4IJ5azItqBpHi(-4)DC}+7ai+c_)t%DC!l~ zFaQ@4298(^&9~j|Ps0vh?!84%!?S2A=^kA`E02t#V7gsocLmdK5 z!&la%!I{oTbOkoMo3t}vev$uOpw zls`x)ALV>sM~HR;X`XLXgL_INAbZNbN?2^mLA%droIc3pzFIT%RS0z=_w0#ZRO|9E zXway`cs}v2E|NhmPHyZFh9@!$5H$Lv9wv_VNUV!_x3=Gbt zfT5dJbFa&yj$fIFMDi`6b)s(Zva?=u(=c>jQ?rt5&eR=63mi|M{T8=pP`!|9g9)Oq z9PyDr6x4H7@_k8v2&mKNcqHexLzxso!cGcJKMS!lbxr7tXFQ=>;IJ;6PrFsHqVzDZ z(N_+bJ2|BF=BqT$@ScCEB4RBX{ngZLM%p{$3W^%5*~&}dREvAC=VOHsC5&TeIlmaJ z#Cu)8*uwTp693G&kuu}5!-r3b&(U!Ya^uz#Dgw={R?3VuU2o(D%uQPjjKyYCMvmzO zSsC^9q{BG#l%Ca{pG@S85wgs*|3Z=RkV;ghw(1hcOapi<@x~8Y#>qzKU(m@7$(yom zbuzEKG2q|s=3h7vn6%I56Sx}Oao$D<%e7T+&}vSUIPk94-LvZ(e>#wv+yWpxSZ#UZe_oa#LdIT2ZEEMIt!f88w8`l@Bf!8fixVjo}C7EyhTyc zu{m~7V1z&(j`R5XgwwTU{d4jS-UOK=xj|S`l`d-Iov%mabzfGG;2&wZwG^qey@($_ ztKA;F0DFs`fIinQ+xO(6N`g7&fN{il;@4gC@!)D@_M@VvE^0t%xccK^_6Clm+sA~K zQ&$Vt2H4oKX6!dEBN<4AUhO>k`9 zS#Yt{aX3G>ZP9b_*0PN11%)s88y=KDxDLuy)5M$!~=v~b=X8nbFa;|jvGg?=tEH73$eF^G_a0} z6Hwol{Z%ARm7aQkW_+KCec#Av;1OC-8zBUJgqqVFbSI!FXrR>qlH$dXY#^~hscz<2#jY&EbR#dxO2||!l zlK(Tzv$NsEJ&^G92O6A%`jQ>owWcl1X|yOx;o%Fqs}XxaZ6&rj%fZNqJ`4EB__oz` z-Z>;<2_&mEcfW4Ho7SWm#scfSz<*R)iP*Q{Mp{>>KAGFTZ*>azN}LEIXz_bRRP47) zl>Ii&K2Da2)zlCklPS~OPz3tp_e$Vi&9(RU)IR)SlQi(lTeY9efQTC>3txJRVQ^HoC8v=a<}9 z`IIq8RgNcgst%GuQGwdW{H{VcV6lp-%;D%hv(%l(5DryWhY%_yx9%$6=!HMsk%OyS zkGaZV?O$V4t}*;n_cW$VufoMg99x@aM~EM>o!>8Vrr(iN1o z`3-9a@aM1zgXK9SFR{b z4TZ08R0}PhuPPvFGFE9GV0GqrK7y)&Prsxhc>lAX0>Ru3=R!29i7Uw$vw)1?d=Ze~ zqnvIL4OM7&UqQN$y=~wCMbOpgko|4f>{5@5hHL+Zv*?`f|4*A3YWm~_XLbWRe8#gq z_`Y#D&4r*i%Z<4jI?v2s+qw}<6h<%t4zb3(xX-N-{wl^fxkCLeIx&s|D^bhETrWe) z9TNE?-L0x42Uq`;rpMW;RwQN>hqo-nwe$)#uAo65U+(t(dAZwevz48meiBEdn^<-1 zQ0ZMNEr8Qqd#Xp@WB|JUlm+aCL@jlZu2)BWpPS48MJ#K2K8Wv~UN;84XW9_Qtz-BH zLCt;R#I;gjG4P_p8YLpQxZ5q`pK(7*qsk(Rn}f_OMte0aDGSOPen~dmy|@~zgAu+7 zn2F``Ri2KxU%gDXSiiaVBvhhch9idLky#K6`V!&0wHQ4EFxKNQ_ z;zqsjGF3?EY+WT6U`zB;V!KfD<%syn*2O%*Ve{dXH!dj8W6U(-`V(SuuJ9jf7nmIm zl@&5tP2A&B`X_|yB^r+apLi30LHBENH9y&wn(8*#lhwlW=Cdgiw(p^cLLEVy)8+DxH!biW2C9_5~VS$#c7cX;|v@#Bl{AtG~5C|0CC2N5?FkCFvN!|(cQc{ zR`#7_L&N!f*y!RtR;OT@x1KozK4mue*sW04(&;&KtS0`t*q1R5#HuU&SQ^~Y%v#MSv-ynYxSh|N!cIo=?C-@LAr3U3>@C52wYie(;J3Wx{ zt>V&UrejQ4K$k-I&!Cfx=`p}AE6YrG)NSOTrkDWf?6IX^dU-{L$j~FfJy)_D{Yd8? zUv&D{bpR&C<*XNj;Y(?QM7Ad8uIZVKZ2t9be1gTurPIIoBc*SSHaW=x-f_G3hk>F)$7|fW5+b%UWt+s+h7hle$5VpblxHY zMdr_quqSADr72z%!fX}$U$QA-$_%`9m&sY1laDCxCGdV!K!9?mzEVLwRKvXTD|jcN z`?Kr;=IY!dvvIU6qS}+8u$`X2-;XM4@8$vK!{MlVdM%hhV!>(`<8<61EbhKY{m42W z2|E|6Rvw9TwLOd_(q6pBw_tdY6YKZZaIfXQU(|U9h1f1`A182#{*X|PM#iZZMJ`B! zf+k**ej}xrNu2lIZG+P9J_#Mj;}|14+mZiRXS1>U3_DDV^bNMs*{<6YqXOw}p6iX( zQ(wXu@hA;4jamhIf|d~`4UolD<5)Qkwp48Pua8bNJxBie_m{ zeeV6nWgR6qr(uMeNrTI_W#PBXWVq!Fm&-`*05$;oYmc=Ihd~VkhwTIHQcd*nSZhrX z)k2=t$q5}{2u}PY`HnNu;F8fZd^R-$0E$aQ^gEdR5}y*?>CksE{{?R?O~NEsnay+4 zRPTpgg0L~5d>`|oVxSyHXqR8tchFqv^c&#WrXB6mT>S(W?CvfcQP zFzaDwA@uC9tvV%t5fCYEaqYF8THE_js%-fxHwzgdgN1$wsl7HUeq#Trv5 z+4yRuUosBb%yHJGKR47<4jSU%{*o1vjX_%7mmE>Z(KfEvfNnBhql!C9_unyh7^pNH z>)zWpU0Pk1^$qi+^M4_lqUrw`!P-|%7%6_C_kNq9HO_kWu-vvP*x9GWT6*!NxN$nO zFMR|D{%?X0w}4z>wU9l+-0c;wRn3IvOJhlw3KBkBtwEAYhiLBJy&y^NxL%F=y{2#a z<6Kty(*m%rrL#fv?pVz;=Lv^KT+2r@Sk?YAyoLHeafPhbQX~%n^zr>ykI$yqzsO)~ z-pM>3QR1t9*fWxv`e0O{wXhwmmGydG**U(;mMK}TKCU*rb2011Xw3rzFP)&UBUq78 z5GVY8_)Xs2%KWK+8)C$u#vOJ5WJj?yROsI$l`k1%?dOrKtcI(u0$pM{K3=tF# zmj7f2X8-bjV}98o$s;%oJ|P$@6HL-pAPA`9-3`cIlWH8^_5I1hs%#SXX<96R8aYZo z**O*BTGrTJmDeDV+<2|}ZolqsH9%>+F-f&|`je(*sDDD~SR(w@xc}Z$^i9rS8Jq#{ z``cMB7TxlOr9JG+wfh5KY>${I>!=$B7AeNrQk!DmHxxnswZzr;t#`??`x;ud108<8 zj@bVJ;#{=Y84-{jNcIt22yDC^`h!$Q=PJeUnU6?ucluy}7_kRpPo+6a%vUj8U%L(& ztv!lRd|hd(ktd{X;uV~Il7@l?Bx-q-p8)~lMVq1*ouJfe2`_~5gHJGm1sqAf%1WH&DlA_&#lP?c4P9eElRK zAGalVBHgt@V_aP4CoH*;5zrj9jb z*~3iiTV6(%YYFy8EliF~~sghCU3yTwQ&-?0*1sCYar!jt8 zC5z;a&t>kueuH~3R?c(l$uEMuKNWabiS3I1@%PCWf_q%Ni%AX7X=9ZP6hDu`(5TtA zxrD(mO}3U)Wds>-H_p7Lu8ApG>8X7sqN#)NOfPtm2m_b8TkNY{tNq^M))iYb=gqd} z;o&luPM|S0;G;yVXgL$T)_YfBUszUf)7q{*=eEkt1v*6$J@J8@#07Gt@aHnN+~qIWTE)U-(%7 zEKDEo6yy|shD^4F1d7EjEFL_L`}l!{+~n(JPb)gxZBN|}y)D22XSeSc121D(uZw)r zfLG=XY_EJlCRw>10SO+^Vv)Vrt7EjGUQP+CwcsrGRu1Z)c3R(VYjsEw5njyfY*QHl zYh~?b2^z+%R~r&mCAW^r_YY*#K*07qsr0HcQ3Yy;-E(;bVA>X_Sd;&Y0p8u`W8D7>1cLQ*C zp%kQ=Iu|n9Gy0c9f53gEsDj! zZy=de6lj2zE}<+ykr+5@0f^k5=PdRk> zA;+y}ZvFUMzircb)e;z_=-_5J@FW(z>4O@KYr@JrKEy20;-4#YPv3ewa8%!BR|B2b zmF>5CG~usdz@Dw0;jVO;Pd1P<@8P+9LT;R7y<~ATd#U|y$lWBPh5?>JQeUb%mfBZi z{{u8TI)hGGqeUwG8NT0KbQ~o7tTive+sMOjBoHl>8Vy*WJ|dGJ8~uR3z`SRB!9zN@ zV@m>XbQJ4CUd)MR-QJ+p9qKA$Ob7l^0j(a2iyYp!cgP0Wuj+??dR5;Ds!`#P$G^>GGkG27eIf#0Y+*(jCh)}`{@Q(c=% z%-u`-qvF!I`$t8X2F}Wbp}3dgP*Qz*>7}O54apH%YeHHL+ejDcg}85L)_EeTlZB0h zF6b%m?kDO(;7|&YIdY!u*Yc0ADUXaCJ|xh=)G9LzUnWj#w|Dql)D;gqQzE#@)H$&6 zwpF9}yp8OAIB^^F^b>b*lvfia*GcsRrkrj3eDmpPde8@s!F${d32G#oZj3JEp~T!j z+U%+Xm}cj-zbm6j-_qS8*O*c(yjEfZd7nluPpk^Y=N*Cw9BJtD9%I`K%9ty}J3E-t zO&A{~0>sw5?7mYFuw_abPCaCs${XZwpge<(-dBznH#8*HF+o|pU6nJHy|zMr1!KIg zH<+@tjiVy#*qdP8SH*bU!7LykIr1lLB3e#)KVPA#QM|6R$$%?vUT~LI$b4@Vtqv9( z1(AFNqjrdf;ZVXICS70ff==k4jNPv8f~q?pqYtL=XhJw4(-vOISV~VG8m+;*&2NZfT!*RCWC(! zlrW=Eyy}_TN{#PYGn_5s>_WqqS`661ySF1 zgcUl2soLklnP~m!cku{LL=xq;(w2~{4{@)Zhk0r*e+^lrcfqe z#2yyCsR3mnV)P;FLt9wW_g7tPV zw16G*b-n?{A#4Td3er>*4jJK>rg}Iqum9os|1TA+gKzuJ<#jwH)!P}qvge^$YHn7P zDYGqU#mj74rl|`O7Bh{+>I7|uoMwJmcDTQQo%;CknuEQ608KlKosI+-bG)qNpBL`s znT>!m9R*}lUX(7v$eS9+iGl-yWFKBr!aln*c7(S_x;2~&Gg(552T$??$nYLgM=RA& zmGUq@jvt3Nxkm#g(Gnu!5HXd0Wm&iF z!8`mFET#3CRx&`hruYw{F|ImaY-RXB-EAARL|M0lk<(BWI`VARZ-T#O9+0Ys*BdEz}UP=EC+Z^+`ECPvn72rzZ;0(`3?Xi!Xdx-BpwW;F!)KkAL>&aulR4SfF zYR+B6Cm)b>iDElaaD4KfdyxX=R1XNWxHM>9ii_Svx&5UGn91)t@C9AS*~~uon!3ZN zh1+0M#%g#kC3Vd1ocl5tB2Z2wkn7bX)G6_Z@Q^oQu24{Bi5?5pPrC9g4@-&ReqV=bHoD#}h4>#i6Ubq^DYsgeSBZ zBKc#yG2xO&;T06AJZeqwv1-z{wYi;fWGp@CexCi2nQ4p!mv~0Mu+wlr6OeAD zEdcMjd|~Q1@?zLRo;-Gt=bB(X6eWNBRwd~rw&RuyvUNmEf4rN=ReU$Q-l8J6W{>Z?Iycu`T z9pT%N{9Dz5)SZ}wXQq{5;Ze|)_t^OnaDigeqOG4n|u29bPIL$IS z2=BC)Uxt+EaW87_l!;hzC{{ea2I`6Kc)P9-&Q#eXsDmzksZ4!O>x(qLF^gYUr8sOi zinIHHR;WX5oUIzB_*_9SW-0h-nf_g;73~;YM)Mr*JYq`y20OZ6c#`=j=JI+DQ3!Zj z0?!?}^^~V$aZP*?Z_Jn32QaXI&-TW9y}10OwQ#ZewLBLZb#uQxb_-@%yl=n}Hu+^A z`b;TP*QbkJLY-flz1MvVAwET9TeD$TJq=_Rl{` zhV};hT?9IA)-~QMpYcXT&spxNZz-{?l+~3ywTu4QcDUQ@dih7pbGmT<=Sjd*ux@?n z6ALHflg8j%yIG`U#N$$Wm>QiNjly;t+plq^mcaOzOn9}CA3tc{hgt@G{^(lHA{yKoa6E~7gR zrpc^98Zt)1>dSslo(8ac;hNAFU=_3qouANs6@W)k0{C0VL-WpARIn+LOADMbI zbblOaftt05c}gHs!n;3N(ZOef;*b6Tl8+=6$G$7&-*{FRfR0`<_%Me_B~PxU4>I9R zi*e3uTQ>e^1$9^vyC%)?jzoJ%4 zMqr$0r?vd2$w^E3>WbHd6-MA}x6%!^SMo6h;oJe2#;OL%+Edno7eN`U@r%#3IW$9W zObVO4yI3=6EXM!@W%6F3rl;Xt4c+?=`HC=AZB_n$4WH*@yYl`B4|Aq zHLT;(4*a`ONe*u6v^sxPRH#s)XoPuTH$w*cj0|K#Jx-*~8T#A+{VbRq7BhJJKBlLs zv{4hv`osAZ(gd%4@=w&K?`GLV{7kwj-s>LEeYrDCIFW&5F2mRiaB*}zM7J4CAYnrN z)d=SzOH+8oyN|5S&5#oTmT2hftCP$hBfL-QpQMDooT)&8CCobvhiKlSs|UKbui&(< zYirE5@`f2bcZ^=FsU~vEuLI-pUn#k~)8~#(dJv3?d;?MzkWZ<&35IT29l38eQht2N z{x)quKgy2fw-sOrRmVGn<@wa)@fdo9zErP`Gxe^j`RAFmYx(lC_lX|(*Mw2TL$~C= z-0=_8QAB^GRT+nqs{M09e=M)#4zW+h~iRbvOPZgbK^G@6{?7y<^Y@LDvd9#a|L$ak&{_^-#JCX@cA z!%9uM5VXL38HSI45gI4kAY?AYrnc0QQYd7_u3ly3C#XTGyKKR z$)8cxV~=Z1K?0Ufld)`I+SC=+j~M2wSkw}ch@eOR!Zg#81qaCLeKl&oE8Gfp*foeV zP6+G?YD-9sQ!;f}2n$bwj&}ks-`JV~%5EHCfxV$&p;b2p^4S4Y81M1lHn7%nbhP@S zqJFirHE3JTDM9;KY3335G_@?)_yFm!Xxxl(xk$PQ_Pry=CQH-RZ@VYtr#@2_0EeB) zzsmWUb-U6MXjhG1e_qdOn{noBbw^vkv=FstExtw~Oj=U;y>C~z_B%Ac4R(-iC~aw- zjOgtnM+0!_|BHbygiLQc7banv^@k3gAn#olh~3^|;D^Jcs@|8*Ietz}{bibO9v4-9 zg3$62>sLGzN#h*ltI;xrK!>gin@$qqb&IPe1BD%%^HP_65lHIiA9-DCh5i#7zL~rd z6~-nJSsAn1!C_H9{kv(z%NJsaybEcm2D(aLk@VAsy;6JDT97v)rmjGr7>|3`J$&QE zuVsEUO(2kea=%B}l?3C483TQ52apui(7y}(dz!%TN)codkLCL24V7mKws%)N(sG}x z{OcFYb-odyoOvmD1$9adrY5RmS{~D?5GU!GA8kbtkb3A5=O_I*4*h!v+UC40;k3Xy zGfN#Wmc8HTba7sfiFln2!|)5Ecs2GhM*t%ab zD4ys=Nz@`0tEg}sX^=K>Up%w`CSZj=he7p_^bTg z&+fBx>tQt4Hyry9eVX|`3t4>7H^teHAGJx*+AE`hcZ_?l)Z1F&w>I?hyP=B99i4H4 z=opw3sqL4uiK2(PNRZZ1*Th*=u@oImD9uz>_1lr1eyksC(B)6z593rax*r~}A#f87 zyI)>xN_pRhjUl<>kxf-1)_7gYwf&@pUAhz*|BBvWVe+xr zzHI4COd&;1*pL6nYa30`@@j3z2)V+HR53n2b%je)S0V!X&-7Tx`|M=XYjaCyjaiS! zgC$D~`U-N@X_GmnQZl7-=)QY~erndXPja^;ajuDGT-f;%%JvHk z>dpH(bB~^sWQcr-_Id03C;qg;YD9{_<+Qt8OjpAa_<%w>Z{M%+ zmHRRUkK)&gfntm7+;Hh+@zG@~BI#Bj`@F(B#TD*zY*>=zvtE8#&ptGrh9{v2$e2}r z<9*+frDb^A214ZV!hC>wt{5Zjmd_6s`cctL{j1$iSW{2xsCCNvZ@Xn;W{TRE{%QQE(0!@84IKuq;zuMnRMFL|g zFubD14~V#8(E&=CLd0{XE$_e1c!%K}V#GTT-gBaZIg@I3?b(g9cR8MYyE7d3?}c?1 z`lLeeB%Wdu33(qxrcrl=Sh`Egc)ZD9c;`^YI9;R1v2M~$8Tldg)88)CmvP-WSC8T$j)$xH^mL%`YPS3H|cZWmN8s-~SRgC8$K6|&j*KO%pBG=rJMni<1wjo5d^Aal?Iap*sC5)z< z9RDWRszspsRu$|Rb{V}^m)3XXD7+V+|4w-UFGX5TjCs88{?87wX zd0h%N#nisxLo(d%u{!1aVp@lX@I-Y>J%so)$tQP8dv7Z98h=*=#8i}P)akuAUvQ+f zX8Cc4Hlh_;=tjjqWRfOIn%Do4Bt7 zx^s*$Z@a~Fv?E>d+ih?@^mBY!cQ~HOqg()>d1tggXf@kB7K)#u%{>B>!hGyXnauFF zpzRmG=Zk++>ZFG6sc6Eua#g3Kt!M?0$Fc!c=wOT1Gf&~@<-Cb^h9 zoZ{uCo_x9f`Osw@i8|ZxIYrTYz|d`V zNUtmb0k!?(w;?u8^238QNn5*F7f^2ibyA8_)~k;vEv^{ImHIcxbDqQ zTT%@_s4ZK|U( zj6G1-qZ2&bwX`3u7g1yt(Ran$Ncp)7?U3)>xE0lYQ~$^)F*NjiR=UtoRC4J47ei%+ zi9iwiG}aiT%W96ZmcKj|*%-+geq0L=6W7#1cq)qZz>b%gCP za!&%ys@BcQ&$5xG4Vh*J>bR6@ic@V@)t4934_!=KH1gW50_HnHZx_z7GB%dZ=Rk0J zIoS!(s5g9hjQcL#DAIc<7H$)|%A(~Nu&X9L0pDdKdq^0^r@LEIFjUL#(>$jab>Fgg z*RjQ+%UL;?bdl2xS(2YcFNWPs0~!;^mpj&Rb!$|{QG`2wpK1zObCB5cHM@QXCZ9b%^rB&!VDIWX=VZo zUSQo*U_fm#prs5P0C(q3sNdNvOk##fmsbmuDQ67QQwQCu(v%UA&>%8P#5CK`8|OOF ztK3PmIXvogoPocPWv!4~)xGz;zs`|8#O=}@Ykf9_XuRr&o0gjVu0!uf#)gH6it!|P z=>h7=#Yh%cihFPwlbwN+Pe z$%cCGn2b!JWuzm5jp4ekb>@m0L75Q1O5iSp6q&3=<6zpp^pQEqU0rU}la5hmvn4%5 zlyWdY>5aq;$n4sZt0|4M!J5<_I5A$VdcrW>FgJJ{k+I{)%%w`R9ft8Ve)iMgd~ADi z7rsq=lxmD*^1^~1;|N3q?qk6R#FQJGILy>jwld%0Qf4199*HL1fk!ip+GTu+X(d-gL*bZ5g}p>t}?a{`fp{QQKi;h%nT zmjp7%lCuI>U;-K4u+HI-6=j2DY^)!U2W^Ihd7@n8FV&>=BU+`_l|~#3j?NI-41OgL zOSoy57__}NsOzWKug^`-@0(qwOnsAO#~f#l6bT(?7FrGmA$AgJR3J zyLUfUSO}>9k0L&Y8XoMsR9C~6sIvo^A6Pvva64yWfpP_n9c0qvhI5|hOg5}_k7~ci z*;HXH@K8s_ak#4H+aKLwt=WpRNuK0MHSgl&LmL_J4Dnp|Chdn;&7x@xh843zapvnI z|5XYPR_T?PO|Iwle8!XJ4rAq)Uxf-rHvb&O?%h=CqcdsYiXG6^>9D{^V^rx^DMVtS zA|G1_S;;o8u_QfUh`MP^-~ufc`dG01iZ_u7b=m=mtcG?VImx8Z-n6l=H03Jo-MAyt zna_%PE*kAK(~Md{Ds=T!aw;2NHlPSEm+R@1H$ol|X8WGb7UgcN80p3`N6Vp655pri z?IwVQif&1Yw|H;Dmc(c0q_(`!X>l+CFm)io@<)S>XX!(JRVQ$au(y%1w^NTmkVgEU zjfmN4H(@~eBJ~GJ+~UfEW$r^d+2?(mGHA?F-&+pEpMkR2Qyr-5CiH91URI9j56C5- zhI$oRerW3PsCvhlrI(r-Gu$J|yhO`F78!aHG@&JH6~!n;EB}?j+ZGdziN`FhGv;*k z7jLMY8IZt%nhjC-4K~)!>$jQFclS;lv=l*9X>@;w;-cX}Z%#!Nx!;{RZYK1swWnO& zlM%v6cFl%HHSK|!vz9px_o-Mzcvb9JhXI{goWjU6E(X~{3H0w`Ie#~T-*3v$^Th7) z_K%q>TK3QQh~I&MTbmPs@Mg<61Z{|*;u8mNz48xW?TBTTOinJ}lvp2|>dY?>Rm%yi zrU`YW2~8>t#K98i#~t8Feql7AJjpV-8Tp{P6o0^&pcg*SYT|C&hjze5B=Iw)nZ@n( z+Yq_2+R;h|4D+cxL1rj+Ymmvxeh6d+M8iCM>YG&A{0+yI%UCw9fNAOZkeL?*){qlo zEtj0@WDi=XH31z-+9mXT)b!8hza=-F)ccn1yf@dq5UahVA&^YAIXp&0x@hjQ;yk$N z&q3dJLRt?7{-+nE)tY>10aRjVd6e9BTO3QnXkp%G$>r5vD=RcwKr(74Js0?Pg(pGD z55V|5Yzn2k_k2*MOIMZ2!o2P zTl_?!Er)$0pJESpqg&Mm)co7(TYyjgTA4q5K&R~%ds3_y>kA!INaAQMU%Osy>!W47 ze-s7q&6U<=m#2~5<%Xxi?JZdGRN8P+)yjFFr_40I3%Z?%qF~UcG50q_sP?+IrD+s5 z3g7gQi|*3$wfAP9u^^f2Q6dpQ*BiuX`^@x`Uoj^avT_RJ28&=rd6ZKp`X_Vr#A0tN zpQZdfxuh;N$`Jpae$9L6O_bJm9!<^RcZRxGOwxW!Z|HSMwRLnyw{Z9xSC-PfgX!l2 zR)%?Mq>RY%OIn;)PvK@L7QWH`8Z5Pl-lM|+JOg&~Ku9koO+jllJ9i14HZNC(Br6^~ z+c;~eU{;J^6&ChTSjmc%yFIzoh$86qko6(g1uav$)m;g3o0#cEF4~X_ zm+1VPkt0Dzxv371NY3I`;^5kJbk~QI?m51%S;_a5=p$OaT@|Jcl`|U?IkT%Ot%wgp zzYw`1OD(X|9apzuRQ|oV8FnqGjeqwRy!`lKt8121XxFe1SQ(TXkpnp zNp7gd`MDv|k|s$|c3FoNb}~n2FUiV$9~*^XNK)kcHM>Lx6_svmuf_LHFIgRoBWIaUyom@y6{`hNRfk%mY=M zzg>-jc$Ys43`#LoSry6WV^LLkU}-eHUEeLIwReusX&QTJ9+L{U3z9oOoqjHKG^2sb zz_c}WCRAQOO4t&~Z%^F!K&q6hd7C~}()GHl<^ic& zw%D1@Z)B|Cum;g|x%TjhG{-vS{JVcArywTOwQ)K0?&$Zr$KT)U9RWlqTt`Ul`N68c zC%v;4fdGL zgy5|PJh}Y(u}WZMM>`UKz%mkOM+HnqZr?TTPs;9xT_R>Kcy0~bv^2g~sBq&Wq1)k( z;}qfvwn_POX`jmarG<9L8Xxn%pppV*;CYlPg$$o$!{q$5Nov=yT#9RDmZ1+pt$9?RH&bWFLp1M;6w&A#kr*QL;}ilMDc5J$cT8=^bI{ygGiIGr4pTdPo38mwqepA{3B|p(Wb)=s-VI*-3N9i} zLM_w7k=v!vj!it**Qse*7|aG1?mr#I8XC2pfAexS)PS$bsPAWGB(jV7teY+9EQP>B zQ>5iE*VebM++cku8edc8(q%>UP^$B@M1=0Yl5+w@$K^9zWdCxvLh1dF;O2(?j>C5q z_oBfcjIYVG?zv0+2dYj&MHP#|38G*8u&eSrI5CI(r;lRP^KaQmwp?SK1C(X9g=Rx+ zwT}kvO~>>ibP^t^tIy|mNHckUQh0fOwkX*0Vz}=xyI`d*(X3f&(~aUow94x*jilz< zM|zQB3QUQ($s`|LB^7$E-Et%_VhHdzm+f(NYW=g}-ai{wUEg-}1<;^o>o(3+2=dTx zN1d*ppIp;5gSX~xJRG}r)hbTVL53j{krlo|jd@P?)bpWO8RJn1 zKcayEAxxGpmdQ^T4pnyiShkW~ zB7F=gE3T<5DwKDie!BH`=Uv;mz6v5;Wzh)S3Im!KTdLJE#eomfTf7OuLjc`BAy<6M z#R2}I8_i7l)xJOMPNzn2-1=2m;mJmOp-u-Iqh#xc{ipd|v|e_*z~?Hq=58%m8((+U zU__?Vp4qH4YYi{;g1I-zOtZJF)*z`hR|BA#PnDhTEA1P*T`TNNCV8*Wd)%Myn=?t{3Q+jlM+1Ir2uvJRENCMKx%`=h-me*>cWNL#kx*R| zY^;&a!%)$X!e;DNiqYnm#qf^P@kY)a2gxm&Z?aACLx$VA9Zkvb?Yg*oc2=jSvJjM$`f zdIwb+2O1;Y17xD~sYhT1LA|^eNJFQhj;p5qDy&C#yS38jW?agAF0eCAG~Dbqutk|W zWYJyAn>e{_>zclmb+kDdlQ6++X&rnDeA^{_)(=AL4QTQ=6E&Ni(cd(w9i2t+UuMm_ z4}P_GmfZua?NO`)_m|m|ZapF0QGZjX)6XG+-u-ee#9){^N0`n}z1NmXY~r<;MgG-g zRrO>i)3N(edzUWcmcX(Mx1n){o+mMWIQo)41Wy(pFuGI(+p>zO7s;_ofJk0s7Ye7c z1;=^TdY;))nVuGd&*(zvPsi=WkbKq(w~4XlIi_@W%fdYD?g#fxEI>JeXP{)n;`ubiStNn zq4oEO6&QE6qT~K_XRJbVTdKPTAw88sln%3Raa?-Ad^k>KWA*6|$Q&|vH%ByJa9D%C zngqIYGppmWA%Ui2mNfK@yQrB@e8<0IG21Qc{`XxYF6X9BLDuWv`z zj7E>Ir&ek)zQ&TxYKnZVPaB9%onky$h}EL0Ug zN5_bFc#ZD9;3UBp9NKPGNx+HzbQ5;?OR`Hn;3xCoVSEvK*1MMK{7bd}%ZF3P+whDY zB+&s^(s)`1Ngg3+UNu_Qfk}PYI|WMt62XDjDp4w7;~oj6R*`jU2)3xK2d%+t{4{4` zpI&@I3l=7BS@mg$>?sq%idJ8eiW1#@^tu;2@o5d@+T~U}4ok!3%&wqJY?%>C3nKDc zcSf8dzd8PDJnJc7Izi5H5wUypuof1m8HM&(&#*o0#EH#o4BX!h{cBFAym58NqN~Za9uwKG<10 zy$m|+8w%>Ivsv1Pytu{rE3)mQ1VG~=ah?abR5G2^0CBSCyXI)Px>$HQy|_JQ$VE5> zjim&&&bmCvc9bM|<4erD09p;N`dIL|Fc55f-5zj@>ryfMF||PYcfMPkfqq#q6=t%; z>!>D0P207JOvbjL>KBfRQeVvph&P%9dyzt&`W4Rbh(<)dqsV8TH=3w)6@{k zEA!cBLD4*#fuK-Dr%dFlcWk}p z*5VF7#y{QqI9{3a4*B@BO2&8Yi93as`yapD;y9ntKZJkNqz)kC>Ni zpuCRT64Pnzqbg_nj;V(cMuW@1;*x{>{W35@e*qY*FSbR0JR2ZU0W_0QKJAB&6zTEV zmC&-I@%7?B78yxJwJ{gtYHJ3xA{Z75VaBAFP; zB)jRF7#6m0j!~7l|il`QHVv zMUO25>XH3vJnd^XMKNdYLk>Z2>Py)PgK?Ll_gA9X~-hB93Z&!D^BR%EVqn`Gnm6<=v@1lQKq{5FI#x&QZ` zF{tQ7A&huF=lV5LSHQOj2~b%vU~_K`um9M#+(~LS9Cx$#k~(DX znxq~&@Ii9}lLE1foyV9kvh;kh$ioRFB9Q+rJ1vTJM+SOCzsl$U8}BF`9)eGF8%Hqj zs#nQx9d+UN8h$G)8WV$mMvGBIxI5oc2FO`c7TPaWN6ppgNBU^@Rn#vUTQhI;(6shy zLe9v+;%&&ifVq28f0I`H#Y9nyfN9~#QIPMxeW8Hv%<#0wc@}Eaho8f^oOjQceU7J8 zFm;S%q4vaYJn~jeC&li&ru9f(bDP-jwjDcCLhW17zj4QMrseDGiNT1%6)=7nbe$>> zMvA*6kw8{aFMX}Ul`VG4JzjI=Q~i>kQV)$#*>0n;A(|_gq8i_`jJ=aZr*(My; zXams72aM!Lva9mI3E)!xbC*3a9gfZHh>K&gSIv%%ajqKA#XDOcP2J(SBTD$}RsHDS z!oZpg=9Kb9($fw}0ng>ja%Z@y2r1TmEe=L#$D5m%8{jKt^gv8rG?5$RTX2rwi`#{cf|s~UB^E3bs-^u8s!HckP?Uxq0t6%;*`H+ zjJ|ch6S`vl(dQyAA$aa6Qv^`GT)L;#ZGdCNUVcP6YE-K zc(K;C5AGC))3tFq6#F*U@=WBx_=m=&X9FJy%z)07hjXUa3rWyfQHp*A(2VWv06u80&5!|&ycI1F8BHc+Z&jp$r z`J3d$+&9ov$GkfV@=-;k@}02=KVao*Mxw)P<_se%$8fNk!c_Yz8naHSRB$|ZNKk!y z*4|S1gu!D#Qz~F>x-$-|Ie;p_PMsiuY zh;RPhYUTLMGiu06LfaZ6lmwG2jy;U!0ppjXZJxDeaEBPoiAImBT5^#CtpPc%Doo_6)9ub0bfU|%l2P}`Imi_ z6$wbev|QJRnrmMlCL5Jjy9Dh`w%i(Ak72$f`S!|RTsctKrHfwvA8>rQvp7NER<;D` zMfhSTms_@!Iz~y)qEt80Acjoab9H&J@n{OU&TJ-WU#8HrWySzpXufLx(yVs@u9bb8 zpXjQ|mN7^60o4ZVZHAHPLI$g{g@+U9ikwM{Sf@vK7{WEXyPut;pE_n;i}vytwh4o8SGu#>u*- zIEdYv-bAM++g)y1(nA{D`L~I@(-w|z{W66mC5i3(S4Fl@?0dOBh7}3353dSboyh=eKs0EVOx+H}$`tykQ2lJ>FV zZaE8PzDt(8cK^KI2 zeDQw=$@Fr0Kj;Mtd|*=<{!M_e z8s6C<4bWxA)resG1pU_KYNT%GyDnzafP37D1v1p0-Gm+DX`qhoQFtS39YP0VjQvD# z^L6HeYVDz)Xp+&A^Phvx5nM9w6lMp&HB~)%;+uMkgBVG%<@S;@e-}~{wJ&Ee!e2Jv zuhmUp#XVz#&_oNpMx%Jm_>{)E|JiNDI1ttY|Iu;uVz&et{7vMIZPzh%h!Ty|k}^kzaYUaOaAZ(AwCHW-iA42z6I_yI@zE(~qH5 zyQh4hhxxAiE5f3^>arF$_%;@hvi>{`H=vCX__1mkG++cCuWG_}yicPBiyB{e2!L8k z-`lQ%zQ&~z6cY@}dZS)E{QCL4E_ z9Qh&=TSfTEL)6zm2=h*h}}e1OT;KGGma>&qbp6K>YZc2NBcq-~TZGXO1}#2(7p z$sSKDvv1|_+GW*dU7unW(5fn3V>-Bl+1n=YbV5?*G?{grQINiD@vCzz$0ufz`F{IE z)+8F9J^@LnRt4*8YUCQn1dg)yL(Bh>%6~R)P~s%px9b?JTd@~kSc_rC*0tQ%8yG%u z+$q(h#%(>#!e8S1-9&Xby^{HDw%fJvu_D-*b!z;2PHyh*b=TMyL4!w*pc|=?eumYX zRPEseR}RI_lE(Z*mg5pce}=tkp!k&GS=F z4=+U(zobo8myC* z9I?RnI9F@^jo>Q0LJv2X8B_Qy+D+1Z*jfZLM#emdaH_;tRsDd68~SM`e)+h(5D^n? zd@2Pd#K%2!e{IOL{%Mm0oejp2qmc>;77p6j19KA>12-X^`941PE zYV2M4@qVEepJ$a(-HIeGtNFzqf)^eJ^e0JB6845;u^)BJEiSIjt05d~b$3Ztb2Vv$ za^?7z7H=D=>KvX^4fgzk!_kH4#$CkcbZlO$VaIr7~4 zi$D$>KC1qII3T#1ishlKtKmStc$1(%BA&D_vV~ljZxNgqq(^i+R6+B|$oVO@=;DA-TF z>S^2Krh?+lh6oT_OuRB7Dk9t~KZJmGmM9d$@m|u#Q2smM7hJ?L??^$=9fdG~hxrFw zGSE5h5TQ3;jiqbHHMj^8Nn};;=wz?CEavQs^AA*b2mctyP%k7>1bI25mq4-R4P$wEaO=*AP zsf-rQoQJka_@HRB3-9zym%c4j{a1E)68?Cy5nryRYkcqFV6UDdkLj5jtQ762H(p>X51q|*Vt!1h0ff=+l+>EHz|_wecorgF%xHOrNx zzmWDjlok|)>365>^^M&90-~k1uxYt`gq72BuYrLtCWNC(FL1?O%bmrB_%UB-wulsc zm|0Q#W2ofR?8WEZQ&;<9OxkYa|Jl)V%pduBzQC5YR!#S!dOWORG}7I_Yi%dF?(B4b$KQ+-njL4fZf8s{yV1U7yL$lt9{SQJv^_0?NA3?{bF!biNGQtV9CX! zeS`VTmy2NJPpUx*VTJy4!qP3q?C{LEQD}FFh7+Xh*4SR!h*w|prkIx8hR8G9IYKAW zS$u-C1PDTce?drW0@^Qy?((;s);Fu2e5)|p3YH6hDEsu#wFJf+Je2)?6c3Kd=s{w+Ojo1khcyvQEMU0O`zk7Xxk8bVq6^2Crs(=Vo#29=axmMb6HPwrT`tdEB7=1P}TVkq-=q{=`6 z5942;VonQNdObif93eg=75k+$iN|lyL6eeRuUAG{;bd0mt*4TOyR+9gG6v=I5bnD3 zu9D2Um1Fk8QbP^GMLv6h){#3Qf?hbYHGx4j^?O0&ob1vj0DGSXPM|x>Mb*!=Lc%vt zXcRohRopAJZuUUO0iEe5_j|v_@n0H#J=bvRc=d317b7oVQ zDR=Rfx)p{imm_O^9Q5(KnD4L^{}B%hE-u{JAWd{qv*?kr zWc&ukb~vqAK}c80DyEZoecpapB7&=EBS!7dW=H3$-^?(nN;8N_ai>Xdi8p#hFPtjb z`qq~tz~!07HiC>fN7GfcU}{ZxL=uIg5b-5Mud$IeS7_rcD=x}Ycz!cl>C?ra4S8b< z+RqFc!E0Mt0()*aG8-8?LaFVhlSIP%-QDr`!wfc#3YX^l0PH`|^@Gt2mQ*MUthMQ- zgpAd;f5&Ykad$mKNrOoVMoEYMUd-4M=2w3E%`fbN@w8D4)3?f=5Fk5tPX+q!=YVfJ zbc|8A9LS33d3HOUXX|+~gzx&kLIfIZf8NgU@&8PXQ~Nc`iCTF#MwoEY&{tDG&APQH z;LX7xk%DObL!Q{`rl23AR@k&WPK1iO=il|{A(oHnPP=}njNgG#PMrS^>KQ4fH8TlK zvA}6XF=lMnFoH6DPqhcNM|KDDpLtC7E&dQJ;_J7Q+P#m{W46*YQLuSu`p9b+!B4M; zzIM#NrdVrw&uEg(jy=bFDSv7qT{P#3A+Xnwz zrADuO4|MjR%@re7- zD`KKGhp**k!Re9&Tci;2u|$_mEWpO<&-xgA3!T|Cg(}DiuwxE1xwkA#E=jV8#T8wc zZjHTbfKbV_!B1U3<8=DVum(tu0~Du5`??j-zpBo^|Mh)l2nmF#cnhx3}SvhC~gzWD2h&`KyG1?G=!(LC-qealUWw8*Y zyJ9%{+kEg{LC;vw9pUbGh70D6;@*g*yE zBUXfRxb3pwS#cxyuV{qo&IoS!#WQ)S=TKPjye9xy8t{QnyqQ&D(spK?uX`SDzSN1BhL6kDO;#==!>A*jpL$a2hGFzdmr`Rgd*R3+Hv);+!z6h^72VH zT79XEW2&fs&T)g+vM&y8%?T|P=~^nI(VrhJzH4QrlRx)0?Qj)OCmCIlIoUzB`KAnFcT@5PA*EsRjrO8kpM*>232DlTKN3H8e!gND+w3Hn zrxOYmas`EENK2F#Ah1F_pQnZX701YSp)%B3nZVF*K2liCf2usNO;N-4!r?UFN!llYELo_ij0IgG^zsgnn#x>|# zLj6h5OHBZBVn=V=SMA=L>!Kv-MZu*i3j)Db?r$k20DXe}WHP6IVNSiUVc7A+Q2>eG zXq7uV$?HB%-)`a)&w=T~yq3(k1H&mQbuItp??(_p-F0Gnn1h7iS&;+Q(tWBZMRuwU zNB}GAmgtX^R~gSnz!hA`E9Sk3X3e$f#ywWxC2AN6!1bSAn@GfQoT3(A{})v5P2xK& za#}?JRz6x9d7&RWNGIg$Y1{y+aW6&C_PR*)^N6t6xAKTHnX13|uhHNyUxXn0!@P`g z_6PkonOn-Znal*?%o`fCHcr#08sk5at1Q~vHSFrtXL>wI6V^;UkT8T+T<>iWnLl#x zq#rdM^JzsCtK6aVmdl-wiB`>^?E@zbl;+2&S?+PgRhi~WFn+NRZCtof^b!h6SdI^Y z3l}9Cz4L5?yNUAGB}1v7Ev$MVz{v=oz~M`e82~j4?t+izo_nz!jm$=SqCelo3==oo z|H|~Bp8x9Mt>mmvGO0e$?j#k=@mk(kqapG>ucXQ;7CrjwEq=BsZ#T;uu_9V+jK*6o z7nT1mDU-Cj%JiHkl9>v-mA4ShJnq0^^`!q6GxMzr=R5AD2`BL-Z9;DF0JDoaFrWMh zyWyl25FKzQ&b-L(z&O`G9K1nEED8G1zA{?O;?U|M`1yRMXzl8V&xS2fzrQ}A{BV# z@j{|}es63gD7!cgtWAWP#O7k(Xn*`#3XTu-NnzCOS~S2nKVfsRioE$<`%^tMbZPc)$cg=h<@i%CW`CGgYL#NbWRe_{fwXC^TO) zakBBX62@jF+&MYK4Sr2Jb(^1VjR7QDV4@1T^Bj-Z+}iGf6TEPR!hg)=kr{Cp`!G8I z3{#Mn88tudN*Yv_d-K~TU4*+-_cMLcfuAW7-Ev)nM8W>Y7xRg7t6uhF*KX+}nIKeX z!0Cs*-n)tKREprq{_X~3^cS-1v-LaUOky}E_*>~8*4fLk<8%UHhBv| zP^RCnA}l^)=`*CryOmplUSzB^Q8p_~yS8WJ`AG<^Tb*19CcmOI`4%Bj-o={|?r|?4 z_$}*Y&_}r>71IX=JK=9{(>t~{PhiAlQUy;Pfd4K9?UnqolRcKtk7`;jNDv1e97}Kv z72f)oH@_UJ_rjQyvIxQTERM2o_c+GxkwV%XOTu=#A=O%FO@~Fsgkkgz*YX0Fk-O&?FlDgCahzKG0mt$(%q z80XxV^7^17>Gst1-MV+p&vij{1gBn5J%w`K;bfUYn!q976GPu z)lSok#6XWMobMH$Cd|9?76goZoj2!d&q1cv{a6nuwe5fFF!$K(&%O(*R?%5J<=`>6 zdJgL)nifOWMiZ_-$qlMr3pKbd3(3I6CqiEHc&^#$ZLIO?-fQH8;MPx36}2?WyNdV6 z-BKMJZ{JzwLq2aaOpf-&8}ED)Ls=lAQ1aqVvczm;uQQmII=n}O{w4>&7vTc|ZWWSA#8aK`g8*WoJdzv4^JzHRsWPeQLEtt&>${Cas{Ds-1M|IzFV^j4 z6kLbpy+VOiaxWXOE0NKPjXljTO-sCbEdxSw3WW_atBg)v-&^byH$1X~XdEat07E{h zoe0z50i&81Q-}Pb$GK5cZ9E%`;{BYHPCJd#IDuWIU7r81xhwyN`iuI7vXh<2z7wIW zWi*m(BV^0iNo6NHL)n)s*|R07EE!ocmKeJXQ4*D%iO3l1kim0jzR&CV8y>&-_?XX~ z`#JaAbI(2JecqRL8r$1epkXr2q!Nm9C@-Gq!+eqiEEX_fW;J2g_}-!?0HE!6zfjYM zbFZ<~@?dv~>XCa{Jd*|0jc5^5-Cv=wqYg2^uH!pJ@@@G-Qihwxr+-E5R)M|8t&nk~ zHSV8NUnBk5Fw>^*MW<&I^Bf``f1z;eT-Puf_a<~ZT9~VJsvm_yySSLLKYV^Atz(|S z!b&&h>tIFPANiWa$1jp6!YaiZ`8vaQmOlK2qbksoEwUspi$_n7jsA+BAe#1JW;1>J zMRJPj4`pUgD(jD${1kRkDgdem?(M_o955 zg3c=Wu!oF?vH8y35vAF>(EvzB{NW#iJ+RisZ<>|&gObtDV_jMw*2Tz_8A z@FAMHo=$@mn?Y=PJoa_%vluOFg+Q>ytlp=Arn!I;NWR58y4cFNe5t0gGxik6HHHu{ zYB8iy%W?2PSj~+eG6Y3@-U@)IEu7gHxsdkJsC$>5l|R{K!RgMHP~T+Kp$ST~_!8JP z7N3)nAF8rBZ1EgS#EsQ$9^OV}%_9D_uV%$`7kTJh6-C!HG8l|pGtxwgewcvgs;AvY zIt=7+Jvkc=spWVp4P;7Qc1j&(U1(Eswza8@&dP_{_pKd|B~Z_l_^!{yyrT~Zd5H{X zrU`QV8|P?V^-avmrt)RCeUyYDp*Hpz?4D(DLIuMHZpfU2K6^bRn&L`&I&P@( zvcspx18d@(fu1*$Tt79hB`4@L%ha^xgK!GP)icC1e|&&|6G#F^bH`inPB2EBqws1N z8H8t#Ww@Y-p5tzd>tSK1_+#(dUMMZrFy>hc2G_l#{^54Qvg|L-0~8IlZe_7z zMR2-eiBlsA5B}LyrsSU-J&m&UW+15NQ7)J~m=NA|HSK^O&r;@|j{|F;Gs!)6+GPLH z)>@D*$BQFE`z+gKuwosV61m>f576kn1E)7aiD}XO{*Z8qSB3s2a+qK7e6e+lj#ETd z%Qlp!bLuSx-JrHrzGVIKTDiio#bt(80o?XJh1BVPE`Kw=bY^KH^_UXIlnX6QFS;jB z{ML;M8v61SY^2Hj+VtHnqqCP^6%mh``xWgDFe3c>T79d#;TqFbg!9jQ^Ri?5g;@2O zyleRXadxaG#OUbMnyL7b1ikF>&9L%y8z@h`z10-^YT#r=w+s33(Brw?E6-PdGtu_n zA&fw#DWn&ib%~ur`R2}lQ_3N|UhIZ}bu-hlz%a_U$#I!4s=SOZ%_gp7k!2=!a3l@S z$D*=1#lZ*ySAOzcZixLF`c8P}pKG(Ov?a{Y@^`zqT%F8bzcD>XTC8a=+hmn%=|4uj zl`wRP!+Bb9;600x>`pUClNKv8SUMiniSeM<5MDhpk*+;O_6;dH4k!=Q9$#6{RvC2o zbQCT?a!0x&um>2Qub^J9eGmFZe>a&P(p2X4raJ24ZA3ATHj>Z8@%_}!v+;<>j#7|% zn>SbARHBpS#}Dl2ODZcs(yHkU={xgpfwi6c!$_AuB&RO$(^hszzTaMAijwhC*CJS% zMTgf6!uc4bTeX@A!g?#^S5t4@%5EHQuln@UtFBr8Y*&OOI6-;Uf?1{T;?Cel+$jyK zz1mD|>W{AjYIHn*Fc7upAb*kcV0!SArpNR52b?X|)XMUAm22F>hmBK%KZTjXY#aU- zQ52wY`E4+XkK=5d98VG#?YO_AJbvE)cmC6~WUR3c+w_sb)SlzS%fidX&0d0=SBcfb zrIx2`WmP=-UJRThcp`0vBPzac1}#>i1m~Ah1-iF7&TN2fy(ejcyo~uIxZdg0>+qF0 zims+-CVCD2R^pLA8fIC`m3>qE{%^4&Jd7zXac)$NU-tsxk$0qmt)CJ_%`NLk!LA&- z!rxffHd%k}N>9BO+MKe`F{Fu{sM>U;#?VZP7h+CR*|Kz`o>=$A=sTnkC?n+*0fEmH z*&0N_gTZL7LA&~tax^;9-#0l1_sTP=5rX@!b(Fjhyy(1KD72OrE@KPd6iQXhzM7JF z=vd?Z%(jXQj&0`d1EI(J>Gs=v@Dr6 ziOwA(EV`1O)iq9Bt~SkzpxVDj{{yi|3KFV<9CHtCk4tm?7yFT>o+~2UHR$GkS^0>G zsO>bDwxwyQu!7pa-mh!RZh`PtNWLoHUHJ!o$NG|>FmnF zMH8b_X@Cq=tk)9yj+k$`Z2)(2Re8@4RsKBG^Dt@TT~}_@#;Ka7Dw29J1NEBfv&vk) zm&b6+kx=be`|wtn&+pBYL&)>5_DXHPFKB<4v$6OfJ92P;5ci;a=7F|1^B#<6k9EuY z8HZg!3hfd+1|EwB#|#wsMJ)g1MYaf*e8^9tv%DPaziojeP#{7Ux<~bsvqujJ+CaaEKe_WfCk?$__>vc z9iF#^DTYdURLF9l*GB5w5aYCwlG!FK0=8RIX$4l#wD!jzwKH~gTWrL4)h3A^=`w^X z;SaQOf#WMoDv!;p3uyW@{gfSd;xo9#Xz;U0E*iW!|9%mRJn@}S*c;ZH7@uV~C7A8d zK+EXtC65wJ6J}cD%woCeGkwpg_Q|g=BTbc?8^-IjSVJU52dSQQ6cjyvu1!_6=Lu>) zKWui_LUD$$C-Y~eC}lA^?{3>d93jQw{F=Hw^V{gAQzglUpg0}&A3w?rk@;UHzLKlM zy=RrfpoOm{Y_)$7wHzAAPW6ZEk=4^YEw2YJwel#XgAo=1MU2j)A4|HEa&)jBwL? z2(^mITUZANzu3MV#8H=zR@J3fh&QGsie(-ih?UbD-^jJQps>&?P&!(*wVkE#-6xTS zhtsTK?+j7)({lUbLc`I?=@ac2&F7$nR_x&*fGiQU!r2B3dBRAO7!@VS$I?;Fu8x&> zn%h-9$d=eFp!!7Q4&+koPk_-fKr830O|JY9n9mtkXB0j`3T=YtIY=elh6>{xFU~a@ zGE>UZQ_fbr#dP{iGpl&NdNeopYU9C=20KZ3GGIE~O&M2&&?T4gcEH@+Nv8zaPYD{{U^C_OubqS(pA$0Xu+Ec}s!|>A;_k3a zO36%WUg{h@5E~;$pK5i1D~D_~+cZ6`{~}Dir1IEXYeAbv=p}%8EKCa1-)L}K zH8o`BD@3$<8_aI$`l|@zZhrcR?`qY@QDZ}oYb?JgL5R06+UvyjL{BWE+T0n9pJ!d5 z$9!&+HTV6JM``K@sXlY8jE{a?34(WgAONoVTCx*91T)vlYI@)JI26a(qGOFkU$?wN z1*eDPcKg~q2L;g^4Ov`AASeVv8U0=SJR|8}N@cG~J9Yo*=8`}}%pIZag=QaG(g@w4 zr0WFL4{Ta$0M2T=vm5{1i%?)~gyrO7{P%SG|}+!lhOgPt1q77!>o8bq*Vk6Qkfok2GJ z?4GR;rIyNE0%2Cg3Ou&%gPuwE5W+1TjWsIq_LRq#b6`}VLosB;(DlhV^8w#H@nU1v zuatUA!=+KXdh_*w)f2$dy`JlG1%G$(=oBSBylR)pwlIDmjGv`A5n~mA(kO8G0TF!| zpkP_A04#bJYAPo-N2^9*X61Fy4p|IDnVV&?2!mZuEeEPT#^I4kBIJ>V%T??W0wr>u z_eWf=Dbs)w8gd#zQ*<8~-$N3EoO9B%(OzNu8i_u z_?u-ewaq%+J%48gW|3`+Y&(0JtM`Hmr{gxjNl9W(P`w2lnN+ zel~IEDA(}^)*^5O^S<@mEQN~G*f}67l1b+?t4u^ezb$SsWSf1S=I)>^>Ym5l#V-5A z_$ybl)#xnNSZ0q(LpG=U0pi0BYv#a%QL>VAw3fapCBUyb|3?(kNt~tFxROrF38Bfc ze>ScA@9k!u0K%%dSM6LMIOtj{MT>O{6Qx*6&32R`>={4$*+WY$ZC|8e4aCJnn0vRl zPj6ht^P)9O5I~*y&Xc>96(e`AJBM>4(_NmR@ws- z{OEDC`5V`tfybj&Q%ALMNG{eDy}m;On41=SG(P&2u$dg_vz`Z3=i7VgtQpAmh_$E&}90hB5WC$2ufh`}!+Z z3f%@&s`+29Y_?^5{obws2za#|1skN7rEmsf`G|iEB9yb9j-#hx&Xe7% z_DMkO3go4hM#XP+rtjc+Ab5v%LwggZ6Cj|T4 z3}Z`JTt_p9)H|#ggL;Rai)2o^Bv$uc4=eedL8Cdjcqn$lPBG*UKZw!{)8ag}k%PlB z3og={nrDbQk)rhQ+PLY-QV}32G8lr-rr|B?p-3Rgp;~t7#vLf~NvmBi+laO!+-xCn z85Sb2zlipFI}^f?rt=Tzy{|jjbr7b$F?7S@*Hj{+hgAzCNv#7G=Z`vWCg@}_1^=5Q z=)Nrk6H+dqGnQL;c%soEP1I?`cSTV6aRr1j2h>a)`1h4T?HV$)6DdE=BSSMC2!b4D?7j- zElj>VC#yi|m6yru=14Rx}Q-2PebFj{$VjWp5 zwd|nV8!4qc8w*YbDitN+gtM3^J%qf<B%x$Ae*3aPsx;X&V!$0 zi;9m}&M_L{`q`1~khkv=vg92P=+UivhgV4>D*@K&a|=|aoOIZpZEI#eh5$C&kN*g0 zUJ_ST0^3uPOk@gd09 zr%QCH@>u~`jGKHQ((BW8ruH4Dh#YhDhlo?4+vI&ZpBXrq>0aOTpTQBV&u8L&R)J%1 z7?%lQPaQU*qrxi=8H~)Bx7Mra@uMnDGY|tJLv0>@Jc@x zO`mhKQc~-FyZq5d*XNoz)!axOB#}e{RiP<4xc(r%`sSACHuLEdhW(0IBLMsQ?=&g0 zn`Ny4I{iU>r}EML(i6fxfy;mrB8YFWhh&H?Na2B=M4^T?^X$o-Rf z8Z3yC`>Uh3;v^nUhz6UsicB}gy$k5H^ZRI_A+W9J@gxz^KnrR5UY2EDwF~;)A0JiH z3BtN;@!-f6&_xZ>e6%D^r^LK<4E5^YkHBv%C!<>#iQM?>4#6~LB=|T90kDuq(oz}F z&)8p^E-X&FHho(%=+77P3rT}ZHcL~-9;xz4ZE0!T80yC*)S49VcCmWWlo2ND?XQwq zmG7EoiL7|vIp?N8bs$NYVxM#>7$C4x0*IPuQz!+v3I0gPBsWO9UKk~*0{Jf4kNEHZ z+GKDh`7tsckaYFGiEz?YPbrWK`Cg3bWs Date: Thu, 6 Feb 2020 15:40:04 +0800 Subject: [PATCH 2/2] update statset and datacargo's design --- parakeet/__init__.py | 2 + parakeet/data/datacargo.py | 45 +++++--- parakeet/data/dataset.py | 209 +++++++++++++++++++++++++++++++++---- 3 files changed, 220 insertions(+), 36 deletions(-) diff --git a/parakeet/__init__.py b/parakeet/__init__.py index 6c8e6b9..328cdce 100644 --- a/parakeet/__init__.py +++ b/parakeet/__init__.py @@ -1 +1,3 @@ __version__ = "0.0.0" + +from . import data, g2p, models, modules, utils diff --git a/parakeet/data/datacargo.py b/parakeet/data/datacargo.py index 1d7d8d5..2685bcc 100644 --- a/parakeet/data/datacargo.py +++ b/parakeet/data/datacargo.py @@ -1,10 +1,18 @@ from .sampler import SequentialSampler, RandomSampler, BatchSampler + class DataCargo(object): - def __init__(self, dataset, batch_size=1, sampler=None, - shuffle=False, batch_sampler=None, drop_last=False): + def __init__(self, + dataset, + batch_fn=None, + batch_size=1, + sampler=None, + shuffle=False, + batch_sampler=None, + drop_last=False): self.dataset = dataset - + self.batch_fn = batch_fn or self.dataset._batch_examples + if batch_sampler is not None: # auto_collation with custom batch_sampler if batch_size != 1 or shuffle or sampler is not None or drop_last: @@ -15,7 +23,8 @@ class DataCargo(object): drop_last = False shuffle = False elif batch_size is None: - raise ValueError('batch sampler is none. then batch size must not be none.') + raise ValueError( + 'batch sampler is none. then batch size must not be none.') elif sampler is None: if shuffle: sampler = RandomSampler(dataset) @@ -23,18 +32,20 @@ class DataCargo(object): sampler = SequentialSampler(dataset) # auto_collation without custom batch_sampler batch_sampler = BatchSampler(sampler, batch_size, drop_last) + else: + batch_sampler = BatchSampler(sampler, batch_size, drop_last) self.batch_size = batch_size self.drop_last = drop_last self.sampler = sampler self.batch_sampler = batch_sampler - + def __iter__(self): return DataIterator(self) def __call__(self): return DataIterator(self) - + @property def _auto_collation(self): # we will auto batching @@ -49,26 +60,30 @@ class DataCargo(object): def __len__(self): return len(self._index_sampler) - + + class DataIterator(object): def __init__(self, loader): self.loader = loader self._dataset = loader.dataset - + + self._batch_fn = loader.batch_fn self._index_sampler = loader._index_sampler self._sampler_iter = iter(self._index_sampler) - + def __iter__(self): return self - + def __next__(self): - index = self._next_index() # may raise StopIteration, TODO(chenfeiyu): use dynamic batch size - minibatch = [self._dataset[i] for i in index] # we can abstract it, too to use dynamic batch size - minibatch = self._dataset._batch_examples(minibatch) # list[Example] -> Batch + index = self._next_index( + ) # may raise StopIteration, TODO(chenfeiyu): use dynamic batch size + minibatch = [self._dataset[i] for i in index + ] # we can abstract it, too to use dynamic batch size + minibatch = self._batch_fn(minibatch) # list[Example] -> Batch return minibatch - + def _next_index(self): return next(self._sampler_iter) - + def __len__(self): return len(self._index_sampler) diff --git a/parakeet/data/dataset.py b/parakeet/data/dataset.py index cfec912..d9f9a1f 100644 --- a/parakeet/data/dataset.py +++ b/parakeet/data/dataset.py @@ -1,24 +1,191 @@ -class Dataset(object): - def __init__(self): - pass - - def _load_metadata(self): - raise NotImplementedError - - def _get_example(self): - """return a Record (or Example, Instance according to your glossary)""" - raise NotImplementedError - - def _batch_examples(self, minibatch): - """get a list of examples, return a batch, whose structure is the same as an example""" - raise NotImplementedError - - def _prepare_metadata(self): - raise NotImplementedError - +import six +import numpy as np + + +class DatasetMixin(object): + """standard indexing interface for dataset.""" + def __getitem__(self, index): - raise NotImplementedError - - def __iter__(self): + if isinstance(index, slice): + start, stop, step = index.indices(len(self)) + return [ + self.get_example(i) + for i in six.moves.range(start, stop, step) + ] + elif isinstance(index, (list, np.ndarray)): + return [self.get_example(i) for i in index] + else: + # assumes it an integer + return self.get_example(index) + + def get_example(self, i): raise NotImplementedError + def __len__(self): + raise NotImplementedError + + def __iter__(self): + for i in range(len(self)): + yield self.get_example(i) + + +class TransformDataset(DatasetMixin): + """Transform a dataset to another with a transform.""" + + def __init__(self, dataset, transform): + self._dataset = dataset + self._transform = transform + + def __len__(self): + return len(self._dataset) + + def get_example(self, i): + # CAUTION: only int is supported? + # CAUTION: dataset support support __getitem__ and __len__ + in_data = self._dataset[i] + return self._transform(in_data) + + +class TupleDataset(object): + def __init__(self, *datasets): + if not datasets: + raise ValueError("no datasets are given") + length = len(datasets[0]) + for i, dataset in enumerate(datasets): + if len(datasets) != length: + raise ValueError( + "all the datasets should have the same length." + "dataset {} has a different length".format(i)) + self._datasets = datasets + self._length = length + + def __getitem__(self, index): + # SOA + batches = [dataset[index] for dataset in self._datasets] + if isinstance(index, slice): + length = len(batches[0]) + # AOS + return [ + tuple([batch[i] for batch in batches]) + for i in six.moves.range(length) + ] + else: + return tuple(batches) + + def __len__(self): + return self._length + + +class DictDataset(object): + def __init__(self, **datasets): + if not datasets: + raise ValueError("no datasets are given") + length = None + for key, dataset in six.iteritems(datasets): + if length is None: + length = len(dataset) + elif len(datasets) != length: + raise ValueError( + "all the datasets should have the same length." + "dataset {} has a different length".format(key)) + self._datasets = datasets + self._length = length + + def __getitem__(self, index): + batches = { + key: dataset[index] + for key, dataset in six.iteritems(self._datasets) + } + if isinstance(index, slice): + length = len(six.next(six.itervalues(batches))) + return [{key: batch[i] + for key, batch in six.iteritems(batches)} + for i in six.moves.range(length)] + else: + return batches + + +class SliceDataset(DatasetMixin): + def __init__(self, dataset, start, finish, order=None): + if start < 0 or finish > len(dataset): + raise ValueError("subset overruns the dataset.") + self._dataset = dataset + self._start = start + self._finish = finish + self._size = finish - start + + if order is not None and len(order) != len(dataset): + raise ValueError( + "order should have the same length as the dataset" + "len(order) = {} which does not euqals len(dataset) = {} ". + format(len(order), len(dataset))) + self._order = order + + def len(self): + return self._size + + def get_example(self, i): + if i >= 0: + if i >= self._size: + raise IndexError('dataset index out of range') + index = self._start + i + else: + if i < -self._size: + raise IndexError('dataset index out of range') + index = self._finish + i + + if self._order is not None: + index = self._order[index] + return self._dataset[index] + + +class SubsetDataset(DatasetMixin): + def __init__(self, dataset, indices): + self._dataset = dataset + if len(indices) > len(dataset): + raise ValueError("subset's size larger that dataset's size!") + self._indices = indices + self._size = len(indices) + + def __len__(self): + return self._size + + def get_example(self, i): + index = self._indices[i] + return self._dataset[index] + + +class FilterDataset(DatasetMixin): + def __init__(self, dataset, filter_fn): + self._dataset = dataset + self._indices = [ + i for i in range(len(dataset)) if filter_fn(dataset[i]) + ] + self._size = len(self._indices) + + def __len__(self): + return self._size + + def get_example(self, i): + index = self._indices[i] + return self._dataset[index] + + +class ChainDataset(DatasetMixin): + def __init__(self, *datasets): + self._datasets = datasets + + def __len__(self): + return sum(len(dataset) for dataset in self._datasets) + + def get_example(self, i): + if i < 0: + raise IndexError( + "ChainDataset doesnot support negative indexing.") + + for dataset in self._datasets: + if i < len(dataset): + return dataset[i] + i -= len(dataset) + + raise IndexError("dataset index out of range")