From 42e42d570665a546bfbd473a87953e23870a42c9 Mon Sep 17 00:00:00 2001 From: stevezhang1999 Date: Wed, 4 Oct 2023 23:53:37 -0400 Subject: [PATCH] fix incorrect use of _make_verts in QuiverKey change doc for angle to horizonal axis correct test_quiver_key_xy image fix Quiver._angles_lengths add tests and fix original test image --- lib/matplotlib/quiver.py | 30 ++++++---- .../test_quiver/quiver_key_xy.png | Bin 20249 -> 20122 bytes lib/matplotlib/tests/test_quiver.py | 56 ++++++++++++++++++ 3 files changed, 73 insertions(+), 13 deletions(-) diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 3089af5757dd..20e4f15dd903 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -263,7 +263,7 @@ def __init__(self, Q, X, Y, U, label, The key label (e.g., length and units of the key). angle : float, default: 0 The angle of the key arrow, in degrees anti-clockwise from the - x-axis. + horizontal axis. coordinates : {'axes', 'figure', 'data', 'inches'}, default: 'axes' Coordinate system and units for *X*, *Y*: 'axes' and 'figure' are normalized coordinate systems with (0, 0) in the lower left and @@ -327,10 +327,8 @@ def _init(self): Umask=ma.nomask): u = self.U * np.cos(np.radians(self.angle)) v = self.U * np.sin(np.radians(self.angle)) - angle = (self.Q.angles if isinstance(self.Q.angles, str) - else 'uv') - self.verts = self.Q._make_verts( - np.array([u]), np.array([v]), angle) + self.verts = self.Q._make_verts([[0., 0.]], + np.array([u]), np.array([v]), 'uv') kwargs = self.Q.polykw kwargs.update(self.kw) self.vector = mcollections.PolyCollection( @@ -521,7 +519,7 @@ def _init(self): # _make_verts sets self.scale if not already specified if (self._dpi_at_last_init != self.axes.figure.dpi and self.scale is None): - self._make_verts(self.U, self.V, self.angles) + self._make_verts(self.XY, self.U, self.V, self.angles) self._dpi_at_last_init = self.axes.figure.dpi @@ -537,7 +535,7 @@ def get_datalim(self, transData): @martist.allow_rasterization def draw(self, renderer): self._init() - verts = self._make_verts(self.U, self.V, self.angles) + verts = self._make_verts(self.XY, self.U, self.V, self.angles) self.set_verts(verts, closed=False) super().draw(renderer) self.stale = False @@ -594,33 +592,38 @@ def _set_transform(self): self.set_transform(trans) return trans - def _angles_lengths(self, U, V, eps=1): - xy = self.axes.transData.transform(self.XY) + # Calculate angles and lengths for segment between (x, y), (x+u, y+v) + def _angles_lengths(self, XY, U, V, eps=1): + xy = self.axes.transData.transform(XY) uv = np.column_stack((U, V)) - xyp = self.axes.transData.transform(self.XY + eps * uv) + xyp = self.axes.transData.transform(XY + eps * uv) dxy = xyp - xy angles = np.arctan2(dxy[:, 1], dxy[:, 0]) lengths = np.hypot(*dxy.T) / eps return angles, lengths - def _make_verts(self, U, V, angles): + # XY is stacked [X, Y]. + # See quiver() doc for meaning of X, Y, U, V, angles. + def _make_verts(self, XY, U, V, angles): uv = (U + V * 1j) str_angles = angles if isinstance(angles, str) else '' if str_angles == 'xy' and self.scale_units == 'xy': # Here eps is 1 so that if we get U, V by diffing # the X, Y arrays, the vectors will connect the # points, regardless of the axis scaling (including log). - angles, lengths = self._angles_lengths(U, V, eps=1) + angles, lengths = self._angles_lengths(XY, U, V, eps=1) elif str_angles == 'xy' or self.scale_units == 'xy': # Calculate eps based on the extents of the plot # so that we don't end up with roundoff error from # adding a small number to a large. eps = np.abs(self.axes.dataLim.extents).max() * 0.001 - angles, lengths = self._angles_lengths(U, V, eps=eps) + angles, lengths = self._angles_lengths(XY, U, V, eps=eps) + if str_angles and self.scale_units == 'xy': a = lengths else: a = np.abs(uv) + if self.scale is None: sn = max(10, math.sqrt(self.N)) if self.Umask is not ma.nomask: @@ -630,6 +633,7 @@ def _make_verts(self, U, V, angles): # crude auto-scaling # scale is typical arrow length as a multiple of the arrow width scale = 1.8 * amean * sn / self.span + if self.scale_units is None: if self.scale is None: self.scale = scale diff --git a/lib/matplotlib/tests/baseline_images/test_quiver/quiver_key_xy.png b/lib/matplotlib/tests/baseline_images/test_quiver/quiver_key_xy.png index 8475b027093083cf82d7d59ee6f62d3fa2717b86..f4b2b83d08e2b46844a64755c82588a38cc7442e 100644 GIT binary patch literal 20122 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 aK3BHL{&xqmamGIACK((y(aF`a3I1Qf3w3J% literal 20249 zcmeIacT`l%)-Spm8fYXnpybd5#jOY^NRZS72_m3?iil(ZMKVZ+CP)w^sh~syiWmq6 zf|7%P2q>VS`u zyAT9n(AH8nKoCj-f>0RasG%kKT8In$!Mdwz8{y!eKh7o+KGV8rop(nNCQI~xm}kma zm!a{r$8lp1LuXqLFH5&eh@+*4%T;HOtCy_^*DkraUv_qq6q67;BIe@k?r~U7>Zq8_ zrE3xg?PM$uOCOPyv62-f*n4=m91|D+-yOxA-R#8qR6oum2m#SnS26NV{oUi|&+D1C zJ-4Fm?x@!0m$J{Xbs`^m z1ZIi$yU!b$sCd^OzjR)mdwRFg)z%Bi(xq6d+ix#7&&2+gyDwLqHtAn3x!|kBr;w;! z)nM0VeJuC>%x870eB+a_K&=bHgT1!7yErZck7M975=MiefIk(ISRDGX1y4Z#D5#Op zKeP1zXMIVESe}tl#31*M!}9urM>CRk?aF+9pzSt7I)D8s4eU|<@=TI#^BqP$p3dH) zufG)#3lm|s=-QJ^7=-v`agjcCs`G=_to5Z!t-+KdwyM*|1*aXCpOfz2QWc3{5Q1i+7_Y40)~GVmX7}g&2A8u}BrzmM93DYldyGG!9GD{y2?aGZ zr}Z{bBGN;G9td*8qeZcGR9ShstiM)kOVD(a zDAF&Jih(sT2-Rv@K5XxhAs>xk@{?!(+)s~-Q))&>c@#f5be%o(f-`S-;MCC>TMDFn zfF2agG^jE)iYlo8Lz-N+l9)(P_1>GAc&7~C*TcL*IRo_dz+|`z#6nsBmRm% zAr&T^87oOZkeehjLh2SGA_xcd90plcL0=XIZ5sm6=0Z?H2<50yx0ujxHQ`&rASF^_ zVDF32PmGOyv5r-I`tzsB-Me@1^U)xxkIMqdvAGvSmR59{ntGclw+BmE{Cj$Ou3WzS zwe^Y4QOBQBZ9`<17EFHq=1O0#dy8VnA_oF5uMSx0$#QR&t6StKgLy``fB$}h%Uey{ zwCKxk3AW4j_NT0^ACDh?S=C}wG18Rc`Te}z-hy*4jUUp96;<@BUmFM*lL%E;OW+l$0~(=FawyEG%f*kP0rC2Ns=29tA9BfC!7ZiN0L{efw$n zGK>zsln95Z&7$kmfVJTD(6zXuU$Ubs*p2qofSw9!{s@A@SCG>A{$h#0aU)Yl{HP*B zKLbpiz)T=9KY3!H9o60;a#WhJMoT5wquZ6zl>*B!he=slS{g^yY|=WnZ0-5O%cOod zRB9$B-CgIR`W@ z<@?Q)o@-1z)HYYg?`(fS7#-Q$|K){3r~1+5>7Eyc`if`tl~yxj6qk)D+c1@2r8$d+ zS+d`K`!LhdA@a&haaLbg@Q{h{=FB#u=&xNV<=dMxYrQLFSt-tC=VwY5VkX_Y3Y|Or z`qs??*4i?@>&o7hh(^leLJw9=_p`+7DV~{_NxI^otAE=Z{4J9b`9X}_2uHwbqxm(e+Dl0nN7jDc z);p#xY1e#5DlgP^eX4M>UMRNxU5D9=!oI++w&LoWWKxsHjoA0^k992H9*_ux(FH%|=U<#6T z{V0@ERAk(7(JO7zI%s>n&vSFBWAfsRZ_?I+^0r}VY3VATd^-r{Y9_g8B-tSx3v*FO zkbNM)EI<@vCJ?E==kP|7u5NQSe!k!ORF_iTLs7AHdp&4%d%KBRymT=^PkGZL&37W( zcWZStVl&w}XuazOy`k&&*35R!g(i>9rI||n`A#wb={=UDQ(Sgm6B+JzVa=( zX!`wR_=b|)+Sucz#WsCb0U{rsKoY3F$j@tTvL~8h#zR~|0k3ZWC@SXh1^uca>2=kI=^Z@WPxqy0&e*>l|#=_iXz zE~p+|9TIYSi;I_y-jxaVmwx{thK|PK}9Xp!3}2HE#&FN`#`-Pm*Ri0>x&@rxc`k0)gA)k(DP zdGEPa#a`CG#w93x6lO4T#=oXkNSM>Bj^ZO~o9Ms6Cf~TRtE2AG*JtqG!zj`Q#3HsW z>96zy=WnllI#>1xcKxs`n-J?cGoL4ci;wxo+cLJ^?%K7>V>Hd{L;`4OPE7|0Oe5i~ z@6tr-%rh(o45<$HhQDynes)eOAk6^}shICnuZoPyYTbC8g_v zC$L?)dX;BMk4VJd+{2$BW&M%oqg*?rop$9$d=ZUdv5T56g^#tvgv; z_uyf!ei*jyk0ZIL6Be(OXn~nEJut_-k~ZV7Nk#Qz`}zBg`NpHxA8*!NQ&2UIIeH8f zQ<9%wXvp$HNZA1Miy;LQjkaxTtz=>9!VF;a_A^OmlW4h7SJz>!5i?*IWwKFg^XtLWrtvP1)cANm5n+LU;Jj@jI z;K_&8@k2sl_ROlV9F<$KvVvH&kr)S!`~Nh?qK%di8P=cR7!+!r*=eV{-^cNxR5Ss(ajyMUqh>{n(193=&|;$CEI{tp&ZEE@iq;W(8q zuu_fV{+Z1le>%tW31U@XnjFk?@k)j}Z?4g_jl^U3U??n%YcxknV(_s0LQ1dI!U&Nd zJT*N3kA(xOaG-CJ>lvW4;lDi$_nyCiZG73fzp#Zsujs332h*Ru-$W(dhh>!?mYAb zO;(L0ONf8_dpt&H3x~FFa$cP=v%x7m==Y()YB6XIgXS=DUQ0c*+Z(I=hw?74bfSM} z6fW2tPataH`Iou41OgI1GOVH}jG**eBdmf6hbLeonbsMU4sYg#f7CoFUV@IuGdIAb zj=KtKhSBsVYg$?chi{q0Xs>DZc$u&1pQLe%BG0l5Vx@&(wL(f8*5nTt8EPUHHGcm6 zoroZ|K#)ix3Bq@oWaF}p1KQ5QN~&QM*um<)NPH)(iXxIc8ylao!2DG_&{gg4jyP)Q zC;%M=pySI3`lstP9)zUGSPKDF3swp&4nJ6}Y!FZ-$4tQrje@EcbkK-H8*jx{=8CBH z^9~Ai!uT+63KER(F=RbkE~FY4RHG@27m$ER-XAt1_9WUYq8g`Mqge#aQAqH+wY9bO z?(WZe-}Xl`ZP!aHQJY8L8roxc<=;AXNw--WN0D)`sHb>B-dRh_hdJe2zGu#zbEv(s z=VzW}sDq~bZ?xMPfBG^$=7bx@qEBye%S?d9MMK0~Dmu1jFJFFMH2yB2RCNm%OpC?6 zyf*c&<4Ro&ugQmNuM)-0bFvMyCT>bLe@XM|&E}QAc8{-x1D55+%O9Gn6Gor);ll-P z>8oGBa~NH`_-ZIt*{pA4MCP6AkVe4L3-fR7*@n8Y_Im~?S(qtimk5 zYI@q~m3g@tyQxd?^XJc5Avo*#!jEgQ6+U5dhMt1%jgnwOb6bmVyQX6_dk?*ONM z#pT30p5H}Kwf~7~8zrGAaJ{QXE`do*fsXVsrm-I2BV`AFU1_m637STw6kgChgQMI}&7QVDRWoi<120 z%w{E1;HeH%cir!~)?9PJ12sZ64GDX%I6EgvaR~eqPFJ%E?#JPWn{qCGSgc{y_g>x{ z)Kuxnx%lGs>m!>G4ZcBVbEz?r%4#%~Jj;{|i(IEtR(=2B!xB6${79&0?>)ce-wh2j zj~i}_*llt>W#;E#V5Sg9y&I&x$B$p1wEk*u^wqxoi~3euPtPmxrpMpCd-wd+t237_ zJ;~iR*sHWrJxS)+D65Q#dv&33;_f-KuLpBW9u*WwL$b{_7i@$V2nEO4-rhdEW^8Ad z_3&~?D3Xt6)DsgECu8H^B_y!uW+*96c8rgYf0dspksRqbF36nbJs4$D=3k7iz&b{5 zA3o?l3;&ko0VV44AQvHx0uyo=lZJJlP>}olHCiKCYS`w~uVARo zmb*zw4&$v)(3hi;aMQiRLX$Igte}6szMns8n#KtUJAJ&#xz;_Zl+_Y2?LILz^$lX= z3#eXAcI2LOaG1>7ZUP-#`hLNgYW`=Q5uU#u%N*iAAZDCr;^6SYLF7cjl`B^~APSw# zuj4b+)QsTspH)Fqu^O722M*m$;5Qud^sl)-K5e{r@7}dBP37k^5b6Ic@p*%0Xs=A( zoe)X$NN~t{|LWBtW?M@&e*$+mFWoAURB`3S*;lOt)e)Yp+9H>~JwN07>+ZR?J`1)1 zkSKI$DzBZsd*{wQzQf{?OhGp^>x*1RAlW&|%)%a}zL>sJqIvLKPCMw|i!^z!iRlkB z-$j&HwLu<}U42{E#`tVc_!HP8@xxpg3I{ahykn^MwK+|G>GzwKE5AP7^vx>yqu!=s9cc9BfOEX*OMf<%i~RaL41 zBa#`k-4Gvxtls5mYMJ_Hf8SVL(2X6W9i&_(h7ry|P|i|AGk+aN%MLB-VFY$)p@5cK zI9i%PN(g)64pCqwAk#V*8D}A+)W25{`vc;I&`2h4cx2xozLR6p)F* zmug|1FbqGl00%9GVwiRgQ!c3b8%Ar1#M48@IZq;!`j`c-5tQ&)bzA}@Y%$FIxLtxZ zqJxww;4`8Sj9Vm`_ysRui|5A)3SwR1O^_Ca+`!GjaU%$+0$4!QgYS+B)&NdY1$h#N z!X}DLG{y_89``4ljEr*uPbCUZa0?16M>2&mGqachP+D<{fq~)qvu7>=qFlEQaNXic z##IX_;m^+D;xj)?zdtxP2Z@1J!r5H2CPsHI=y(3#h7rfi|81xYmO5?xu*9xGN=wbK zVF05#c?JISdE9GEOpau-KpOL30}>Ky9J2=yra0j;J?l8I1Q#RV~4 zoS(WDWC0c1@Z|>X0z`DgExbS_Ob6!YzZ3Tox0nUCG)aWTNTv#Il~{=7W*I@NusBr! zyh`?<;Vv=*j~piv-ohg{9~{TcVeYAgky$YzrvU$Y6M_bh7JSTu%FqW;wcq_KXdgek zz?Lcrh4w1M0&l^vc}&cM{P0L9JThFk^9T$}BoTJQBTj))=p+2hR>~CEU`>By%L0w- zNkMplYeGc4eGN^&c!37Inasp&B@T}O2DfE{E{GHadMHT5Yr!MVPX%qJe!k0bghiBl z2o4WK@PCK1U&?pb1Bb^l&S9{j9nAA8N1}|!+QNQP$>BH&>rpZbgeqkjN!gWx!*JqSh5l{m(1lZabRpw5WBJa{=B0c2d z;xamYdSK01itCIN*HNi>We~MQ?SBt%zpKnDZ!ajX{SpuQOM9(BKkyN|nRhT5q1ewS zppz(i+RyJpW+kq;KZLHmtLvcl`-$f-7Aq*3o@Hli>+0&}bd3G}z34yvK!7OP-r4yK zu$ne&@-A4|1tlS<7L0TEku|LRhCbf*b7(g74fR^vvTbHL<l#Nt~QNIdAf}=4*(N#$E#OZ+{lK_TuHscJ^{|Ewl1=yP^I#gitFkk7fzP z{tF;Wz2cj3DE^jPzO@#a5d=t{$M5{QD*(*A2khr<(Dv5NQEH2b2>w80yHwY3+t2qN zrZ~O7+@4zsS?0ICzL~E!aHcAfU^U%t%mRRxqx}rl0yTMD!_XW7;Dt+4;)q`ffN~w+ zX79Illr6UEsEMg+F5~cI*m&Y6CDp*$P=0$rD;@_noz~=iLc`}xY*F4W(NkP%e`!Z; z(fjstn@8iJ!m%cqzILC{G?|g5i{~zSo*A4ru4jPN!!dLDB&E7M)iwHlNcZ)9NxO;i zt;zDmpANa>0DtXfe?W;bx^UqIx>E6y*%0u{i_GOYPo5n2>UNEYxJ?DHMjw<5=tXYh zidRQc-Z}S`3GgcqMhbaUGsukP25r6&E16XV*!P#C6LQV?t$jS7&oDF0&d|4Sy;tUU zN4HBggTl5@1S|=VTnnjj_4)$GE|1Aqh40I9o;}k_GIfjU^_@I~;y?$)#aC>ckY(f7 zHc{z*({hUB{?KIQpt4DKh^4-Im9Jk^yG;d<_#`twVi12N%+#yLb7FivUKkB)zyta& zG|4QL&IIVUW$CZ@!$6Vhg2zyFYT`xi4mJd^1WU$;Ux^o>5Mk@`zMnv}I66p4JofQM zT!)#Tu2)|`q44M|zW=kXU-|g)<0ko5*SFR>$|s(t zIJMS9v3mAbU@iu2EiATbsxPr=-j7z?2|@c#-g|H`r%2VgbSV)IRcTDoOno0`D58-iCX8Lb###sE~SjS`sV^3Uty0T zQ4xH;T4?M6JLLc?{WQods9jrI`+lmR%ji^vs|<4g#j97}B9s;d;7sy?Xb)W|IGL4p zE&1auZad%Ih|C44DmJc_c18T8wMmp=|NVMhgZ_Mxlwi zZYW#Bqo24niflj(0EO4n$MlblW{*|OLUxXjcGqSEni&Ybd&jWpf1#^lR5<+x<4s6J z;lZzRqx9+;`ms_D-@ml9Bp;nEE|4CV%$N&Qs$lYFgkl=;#@SaVrY3EhPHZ{^=k3(j z{&(TFnnjcj(4}XO9#t*n+eAKL=s=N_8{uhF*8Ubd3AcJRf?g%os86wC$L^O!;KrQ(+fU9G5 z%fIIW84;395nbYONRRevr${>|#m0q*2$DWI9{Xc!;jg8JOy1}3gliOSDB z2r`2j0qeE3?k+mEd!QQqylBzzR<3{TA{HU}|9SjnMnvBnAN8O5HY`d2R;E!h7d}pl zAp6h(gv83b;dz9$h#Gp=KzSwSVrUl?6(nRMBbXzVM+tw*`w~_&W-HfxicziX6+}l7 zR;C=jXZ`sz2AM^TPaZ`_7($eFVE~EXzBdcuy!k1|htQJy-zK32cmwEb0fB)QCUFFzdZ@b)zJ){~Ry|{uJ6bkJa}Mde6XI#tm*uZ7(o0aY5o>_(TiMZU{F*X zL`ep-Jd-2LyGxRS7hPc;U}fyUxRJ8by{pj0-QM|d_SF&ed0}7_Al?U7ISE4_wF3fR zm9PJ`%Gvg<&1uJUc-??1396gl`eu5Sw!9^Qp7VL9cxu?7b9QT%W;|dP^nty)Z&M79{lqLfDiE=`Kqa_k027a_8P;AQ~h5r{(dtZJ6DL`xCwc~8X768 z@bdEdLiB@13IKq#4I#wl(v8=Ce%-R!#Xmla5|w5H8Os0xg3^;cWcbO_j>+JKq9h4y z#oJr!p3}vn$$XUXM(d)PvURi;a*wY%NtV(o9*Ps%l+I&NEKKJ8Ct#T;b+MA z={q4QZ$38pvSu03D33}ic8=6~G3he>iOHTWeliInh+cnZ?jXLWbCUm0q=59^|F5Kg z+3NM-^}ZxF@#PV})q&B0qk;QE6Ovj*%}R`a{rYveTn`_VTB09b=eGLUm0c7x-mDgO zoDU8f{M#V~>A$>S=SzW*7{H*4bKOejt30-GGHzE_uZY>jt4b_gfqc^a|FWlfeC6cu zLHO9Ytn}k;L+Qn_Imc61*L^xk8MFqK>)2w*vk-;3mGTdTS$aFlC5jg7qqYK9mX$Ye zqv~#pT4kZLf3yuk5yS$^#7s?c8PpylR(N`N*nhh7*Ma^0-k}*&y`>i*K$20UR-G8n z%J_~#fv^uy64dA4Cf7kKD%xf(po`*wley(NiHU5$1G(IkeDtZNsupCx6+PFw9FJ{p zESzZ^ur*(YU?>NYSeTgH~Y5t68*=}a0z%JBHGVi zz7!@}&_}2TBa;A2O%?X#K(=ME(;a?Ji9iaqa9HH zV^w2);yh)7Zg4{*WT!#yTdNRLfUP7}bORJz-P@H0o#MB;xwyIa=#;(gGEm-l=$FF1 zf0a%rFQj&Lw9uhLj907dIB!2J2^ZJfYlbRQb>K84vMb(P!&O?C`BokA@$9VhdGF-U z!nyPN4;(o{ePozEZf>Z~fotW|^3ilE3T}8KX=7MK8AZt=HhH|N=Ci&wo6602*uKf! zV>8HkZEMiC{l9IXhZG<6wMdrVc2Vwxi<&c3p`wh8BMK)icj zF0O2AE3kvvEzx|HpGhbT4laR^?mO{UDP(1j0~tDk$&G;j)%nk_zAEgU_$pPrkT!EK z9mxjac=fp6qWiKL8^K&f{qOOfz_?Ftsc4STm?XYp0Sg6PiYR?ZYExY4ehd}W(}qt^ z&e=czt($D)OObg)-h!$nRnC2Plsbz{z6I^~vHt<+#qj$;-t*3~ni|re0LT}2fJU_l zMkv5ElgN$sGK}5;QsyR^2cExp@!}eA9iH7ic+OY${De1kWVtKN%l^N_#LjwpzAJF* zIRHl6nsXX)fedJ3a*{!JH@#>j1w}tW)m|NeeG zVe(Daj=KCk;zpEu4@LT;Of7JrWjM=uX>;fvRP zTmohmpPNoCnwSF^T96*Fd>+=};AM2!2q0ZF{~e1GN&f;GF|lR}@CPuya`l7O+Ww?4 z7NfZfo|D~O-NXiSO+O$iY6OC^O4(~X3&1nS zm$us(X>W3J#K2n!7yPiqv6WNRAMF4Y|IzRJ+QNOy=jYZ3Y$e2~;dkybD6m@olp3#P zcV9>ry^kvx<|TH;nkX&C{WEtm6n*`KV} z0n~D_<-PzhBm#^9be?^v7D1hOWzTM{=FqdvNOn#RTG$(XBT$|y&#<|<`7_b~;q_WL zh(Ruj=V#BHIa9n90|e0$brPZ^b?L@p6&+AahZQ1!DTLHAH(Ja$rseIBa$i?2*;L9v zZL29wUM63cRH4JeM|EU&DOcy5dD`aW@1B&OQ0-}r5;>u-BsYJ080yYbU4`QLO*@0U zcTBvn%H47Mx|*ZotF7h2a&0cMWNfX~4VUt(-k`ZhT)rNs+_rg~W!F!!5WjnmHb8U} zg})qi-@js$r>`7NLRNo?_jLVkBh%Rtt15jSOn@W*zO}i2)Mwr%lvO|!N(gb|Z4rT2 zKkXim63MKMZVOV3F%Azk7vphs_HuULj3}3-w1Jo;S@yf*dcRIJ?-u~xs37X49~+N< z|DHN#SNTkUf!9jKA)S@q4WdfIuvyWxto!WWKQ?nzq)gbL$NP4g7p05xY`DR3tL6lH zUu)~b7Oi?Voqbi03kuGD@R~`qaV80um$xYQedf{XgPkz-IyYpY;W8(odasHT?0c$a z&MrDSkoqMTuHoD6S(fX|Q&4s~Dyw@%thfes$FR5UeSI07BhYR2SMm`o;7{1F1@V|- z_t7ieQ0EC(F_ZJ+vdX_V8TGATkPE*Jhh-M(utu(~t~+OI7urFR*lCHAh9d%WIA02z z(8-3X#}6J5!Bs~&b_FI8ia<*d(4DO2=H?n{49nF5<(spg4(jTYu7X|^$!_~!FfrNP zxI}fMLZS%Qqx#J7=bKft#o_6WN=u{c*hP+6X4oN}dB%s1nAZ+TetvIhoT`+XSK1cG+s>Go zIXQ6*_qcdf2@V^OyYMQc3L%=_ihBS9cpf$2zhnU;F{ z?p=0PR$aG*b@(QJA+U+SQl+Tysd@hNsRk9*hQ9n*f)|&`g$oS2 zA%p?gjQeu#PfzeNO$dO3EgK*i(Y01N>^lX=*0g&S&XM*-m~t+QY+5$w{DpfV5>Cs;EPux7cyS8d719xMUtQNWkKF>wx5 z#As=8@flPs^P6T8X7iRnNrC@LPF)bc0da2!>uct#&1vCiH5cNak#Nq+Q6)%CG7qet zZN_SO=V9s00CUKIcv4sQmZ0epH&=r^1FZ3fg`Ax?6p$|t)y3*xb*ILzLKdQw2nX*P zM^$Zsyk+TJ_*dsxQCGF-*&FJDIpxYwG3SOCcLD|PVxto%JbTx7M{}PiJ5PZY@1@a# z7{AyO?+t}NYj7JfT@=Ij?Yg_DHW-EuHq2xUUr-e4OfA><_4E7I+Y1_pP{CARY3|a0F>*BEYwUq+bd5$V537)*e;28j^?qH6Y*yIWAER& zkLtlz?l@nO3w#>hJ)Rn6hup%rO^9yW#f1e0^P>1+29WS>dHT5Dij-9l;MQ{H09n#~ z^YM-?#!KxBFn6BAP-O(R(q4UX^NzmI~Y-KOmmfdv3|eXP--bdDs$gy1#qO+KW^h)@{Zjnw$a?_FoT~{3|*OHIhMMHan>zC?`Mce1!3lU>ngC;yxT+ zSV!qu?F`E>B@FZ#f@Yw+Ce}!U(tYlso&2h)xGG)G>SP~0AlpZS#m%Dz(-s_O&id;& z)ks4(C)Dm5Z##!74EP?Q7g;?|XdczW6hq9fRGmOeUuQ%r0qiJ6zGy9aA;17=#Lu4} z01f17?h`@dp#sMgun=0X9g;lxH7*AZ9z0`en%cPx$|yfm1Yn!OYC%1-9qDtL{5g;o zY{|>Yw7fVd{`O10{PEERn5d>+xpP+{1VGjz>0=Fr#~Ev^4xfAGCPC?{a1*~{#cr2a z-}i4+4@+{-didl?ZT%afQ_0r_=P3HAzH)Qt@=Y`yR^jpbrdEd9TiIB3kmLD1FMTSv zUDFvRCnj3c75x-4Ea$9R%J&|r`C$aL2$h{jXX)`b!_ufT!NE%;%+I?48VqKcMHHoW zkhLIEpL7!D$q&2Tftl|Q^$GA9=JaZ>wogd%peRNozSo|UXL*(UW%HXDDN{=VIR+-a z?L4HDC&4wkjz%ZPyk{R&UdBtoa)m%X_9aS`^B=iUIB-zBnRw{H0Rx~9RbIB>9-X-j z{4glzKwc57MyfCg2ncu&XxuwU!P_1ihYBTfG=07=dB(&fxwF}eVv;^sq-W%H{;KQV4o_TS0 z90*E>-5gF|aQV7lgEdOsbSBDQyz)dKb$x@#=u+1cN1#u=U!VT41odMB!z{gT=p`Nq zUON_z&qjhr<~_k^OWp)U108Iw znt!YRm_`1TZwCO<;!OR*2X)2MNkhBY%5~yyMlcIz0E+(NTYLK$ojEyV(i-Y;XqM^m z^K#Z@2%gYVqGyZZN|;r4q9hUUn5VG8pt&c&jsf@yxLQ~B%+!y<6OrPt-jfHTk2?1% z95Q*Ug%YLFa^^XIqqAoxbj;ThRwzwwgmQA|%&R%cQHGcf(&Oew(7HcbjecpKm6c^z z(*mj4_`?XkRy8KYOh^z}^<-55JLs7I)wne6Ro?YRsNBqzFW4#qQ_VT8XDn&^Swc!T z@b}MmI^}EMa^C_PptwaI$`M)>0uR{|$NT&wO21QH`x^T?khcw7lQpMuV2N#WYBow% z#p2wefwi@`yzJ|{c$6)g;r#PGvGK9~!$M`T@u4(KS3vWk94WByuBxvv6@k&d(Pnw~ zt%S#G3mMxlY54tJI-i`$mi3;s&G$#1FM6Ly#C)92itc5 zTKxLxxXD}l(-zHPS9{)nd)HRWtV3V-LcXIr@PnUx-!?1i`q>VdWP&c+gB{M{&|HH( zH$wLu2!Wx(+3*TQMa3NXsp~5L1h@Z*O#X)<^I961O}5F&+0y@~k|71w$Nke^ zS!2NUYFP8!`enX#sRogQJ!5Tr$tG^b6Di3nG!VJh;4s{-yTz|;M#IPxcc)yEu)Q)L zGn10!Ecp_&0=N|5df_rr?l-8OExs_{JONC(4(GrHZci^Srd4N%q?Ul6Z)E5gXdD%h zYH4C<$U4@SR^JVg{H_Zmf^rcZ+skEG*jQ5e#wDu{uwazVFkP~s2T}P&6vy>!I@&Q- zG!#R(VgA5W>V}c9GM%tFCc&RpgHi9A?bYSqKh|24$}&+V1X`vCWbG|LJ0RD+Wlvwc z&?)S8i!K&8geGi^wid#u1%}kicq*lD!?r)^?2`jNf9Z-%kA+$!%Q&Z-1#Nn2Q_9nW zBk&3Ow1ir})jPKej3(Fnw#&o-iTjd4^`q3Ua8i_+MpA->Pb1P_0C;Y2W8$LU)VpAF zle-5-#kV*mZS6P6a}Z*DOVvE&w-Zd}eERgMBv7AQT!6zV`@2iyo2u~1hPdaD#l0^m zW@U4`zSkI~+*$MmUw1_Z;# z;;Sp#fQj8#!S4t2Psx+7e(dSV`;UZTWCionCifaQbhx(Mi*HNPOyAoVk~H~Sf@?bL zy8q6&k4|R_^|erFgE=108eRMquL&Ynpu}G0oVE-j7J&PwN$?{0P~$!hc3-x4bUYIj z6x3VR;Z=6KFi9ikU18yi!a@{gunNnaaH7OJ?b@W+HnMk3_ISxB7rvZpt6ffk)X9^{QrdtrMNRo% zq&(tqR?m!$Z-A3fkA-c6oT$;5CZZhkX8wByG(?S_Xh4FsbovEfU(d%;EkBcOiW zxOp{Ni6zRuIaLl+E?3st^G~$cxVlobwU$~gJZ}RG>_35JD5usQ@Nqj608;_+H?VZU zhn$0a4ji=cBU2NGe z-#}B5z!ZlW2jz-(tzr3bPuBI(q>B5Gbc~$$mr`IPerv3R=sNtWi-_p3!NYNkgprzB z=p@D}VfQVKJ-0L%bg_nzY5agH`?uawzrC0E2`EasnDxe2&ih$zu0CY=y68&I8S`s& zwzp?OI?!_p=Z_$a8tCr=bkrFKCMy2NtE8g+3ROm@PCdB7C?})~*Pl=hPiC-PFwZd$ zEgS_4Q#P|KU?SL4XSgYL*t9wz#o{=)z5V1#tB6wkQe%Z$ z!@zk%Lu-2$^8JMsZ6J69JY)x(gKFFj*qrObyt*+a;gFpK%nvuHO~1uuhU`tN-vjU6 z&3;Re{ZnJ(QMiIuBh4NY&WgUP$`|$m-CD@q>i3NLMev5tLb`~DGMU~is4@Um#-EBG z8~-aL?*OGlFNjtSYbFbQ0VM3{*47rFQz0jz>VsOpL^r5zQwS$?o5!~WYIo}R^g_vld0uqYf1wd zuoOwztUqxX7^NB62f?PGpmcDI-Lk>6!9CKGpi=`?a3uC7dI+L6M^&^^HAhY;Q7Cc1 zb+%t+2a0N%VS%%vA_m6fdTRNX=o>e{(!sgFhCsUTC)j|4ZU;*pe6MxyO*TM|d2w{W zcNVZC0Uh7|4=hL!=6?r@Fi-(+dk4(B=b4$p`Au+`;jW)3Yjmxt=ABMUqL@qjkyHRq zOy=JZ!EmA9z44ksSz~*_r4YsPoa9pz)NX^As7BW#?SglB)tu8L)UH=SWl?T5@iTEB zU?z+_vJZMbc%^Vtqui6k0Y>Bch+$s+M2qX8l0=lA2n96wGPn}Muww|SlO2cE{(+io zBLsL-A2$3j8s61$N8kc1g%gZ|dFo*u64o5bj6Z+=Wa;AhOw0kd_XBW_M%h?lAiNi) zTQJyEbG`u=hTSrzyVujiBd+?|BPjRzlN|`MqpNJ-cPw`GoDNb zKj6mqWef_{P-tY(qbvt!9_>OSI@|`;IaAI3v~f@uSv`C9?DHKA3daK|3O7iPnNKy+ z|G-XFZKuFeInpgK?1kR(SCIy#69lCzn-h(5kp-#!?CN6eO4U7{{;pAEQDTew7VP&JXZgR9t^N&`%%tuX;OEdc7j4tEneK;`2s2000{6gtP^|3bU#(9;K@LH-i=$oQfEKG?|w+R4%XC2+Y#e{8JtH1fw!yY*3h! zMkcPcP#1bT>kZ+n>xm^Ty}!GQ#LWM_bW5H^=QL**P?q1n5YHrdes4!!QHB01^@ z7qCNrLYx|vZy^WwJ$}y)ROgs~0kDD{7uPSl{`<{4-=!-6PI$NfN`>IDmodEJM4&iB zVder{|myYr+&wzeP{x9&` z1;5t10qI(TqVL&*XJ3B#m1OQ@uZnGgyxIfJiz0wJ0D8bj9kxro(kS)kkk}u-O4d`Q=Ohv1EewKX<$8MZ~zS(^64U zJ*=yss_S0DtDKRH-@0x^lx!Mko!ON}^j;0i z%l=4Zx*A{tuhMHi7>F8}el6YY#}Wx)eW*7z?qo7r6w=WF%Zr)Ih2L>-t3SfwR7#hN zQoQ)rzC@Vv53MoX1cn?vT%6Vs2K=_p=~7`OZ~%JGF|07C;5lK$>srGM zHhsU`;}xjO{DiC)gnpOI*az3Mmhxi*KF> zZ}=sGL4=wLMDJO`$<^O>$}a!_cc&4(8P#`+BtXN&=b=a$CT~%RoetZ>gC2l=`spuQ z0+-)B)l|{ay(ggp$IfDP&qoLs!gr9D-gHTVM6e{GaxTZKR0n0|gBP*z-5u5mG~1W( zn>ZY6;@aq@oK(G^P;1`U}oy$V6gghqH?9)xoe34uBbCIJy9_1MdAtg+Q z_x-=*R!_p&xc@iHu2;lqLt%$d_lK|iFMi#ulIzgu;XgmY^XC_L;D@asQb+zKW5VC` zzhHsXfS%|iNIU+t@n-qpaqZgk;^H5R9A^jYj#xlykuwEp#O%&b2Yqa@-VfYB_<0P| zF7Yz*BVeaE+jD(@_e9TR)vk2Km1&8xMc?P6pqwt>-Y#^G&|p!;;Hk=MS&<)jY*-zY ziZqr~m#+L~+V#RW-pWpq5xd{(Tg&taq9hw*eYI