From 743822e05a6e36df9df3dbd4747b411b193c709c Mon Sep 17 00:00:00 2001 From: dswelch Date: Wed, 5 Apr 2023 17:15:48 -0400 Subject: [PATCH 1/3] Added logic to adjust subplot based on wspace and hspace --- lib/matplotlib/figure.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index 2262c3305bf5..5a0830052c8a 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -2248,12 +2248,43 @@ def _redo_transform_rel_fig(self, bbox=None): return # need to figure out *where* this subplotspec is. gs = self._subplotspec.get_gridspec() + subplot_params = gs.get_subplot_params(self) + wr = np.asarray(gs.get_width_ratios()) hr = np.asarray(gs.get_height_ratios()) + dx = wr[self._subplotspec.colspan].sum() / wr.sum() dy = hr[self._subplotspec.rowspan].sum() / hr.sum() + x0 = wr[:self._subplotspec.colspan.start].sum() / wr.sum() y0 = 1 - hr[:self._subplotspec.rowspan.stop].sum() / hr.sum() + + wspace = subplot_params.wspace + hspace = subplot_params.hspace + if not self._subplotspec.is_first_row(): + # add space to the top based on hspace + avg_width = 1 / len(wr) + padding = (hspace * avg_width) * dy + dy -= padding + + if not self._subplotspec.is_first_col(): + # add space to the left based on wspace + avg_width = 1 / len(wr) + padding = (wspace * avg_width) * dx + dx -= padding + x0 += padding + if not self._subplotspec.is_last_row(): + # add space to the bottom based on hspace + avg_width = 1 / len(wr) + padding = (hspace * avg_width) * dy + dy -= padding + y0 += padding + if not self._subplotspec.is_last_col(): + # add space to the right based on wspace + avg_width = 1 / len(wr) + padding = (wspace * avg_width) * dx + dx -= padding + if self.bbox_relative is None: self.bbox_relative = Bbox.from_bounds(x0, y0, dx, dy) else: From 6b74a046da2bcfe2c1d99b129da1d654ebb5e41f Mon Sep 17 00:00:00 2001 From: dswelch Date: Thu, 6 Apr 2023 20:53:12 -0400 Subject: [PATCH 2/3] Changed formatting in figure.py --- lib/matplotlib/figure.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lib/matplotlib/figure.py b/lib/matplotlib/figure.py index 5a0830052c8a..a84c56d6b462 100644 --- a/lib/matplotlib/figure.py +++ b/lib/matplotlib/figure.py @@ -2249,42 +2249,36 @@ def _redo_transform_rel_fig(self, bbox=None): # need to figure out *where* this subplotspec is. gs = self._subplotspec.get_gridspec() subplot_params = gs.get_subplot_params(self) - wr = np.asarray(gs.get_width_ratios()) hr = np.asarray(gs.get_height_ratios()) - dx = wr[self._subplotspec.colspan].sum() / wr.sum() dy = hr[self._subplotspec.rowspan].sum() / hr.sum() - x0 = wr[:self._subplotspec.colspan.start].sum() / wr.sum() y0 = 1 - hr[:self._subplotspec.rowspan.stop].sum() / hr.sum() - wspace = subplot_params.wspace hspace = subplot_params.hspace if not self._subplotspec.is_first_row(): - # add space to the top based on hspace + # add space to the top avg_width = 1 / len(wr) padding = (hspace * avg_width) * dy dy -= padding - if not self._subplotspec.is_first_col(): - # add space to the left based on wspace + # add space to the left avg_width = 1 / len(wr) padding = (wspace * avg_width) * dx dx -= padding x0 += padding if not self._subplotspec.is_last_row(): - # add space to the bottom based on hspace + # add space to the bottom avg_width = 1 / len(wr) padding = (hspace * avg_width) * dy dy -= padding y0 += padding if not self._subplotspec.is_last_col(): - # add space to the right based on wspace + # add space to the right avg_width = 1 / len(wr) padding = (wspace * avg_width) * dx dx -= padding - if self.bbox_relative is None: self.bbox_relative = Bbox.from_bounds(x0, y0, dx, dy) else: From d1d495d238e9d4221951abc8654a263270484d8b Mon Sep 17 00:00:00 2001 From: dswelch Date: Fri, 7 Apr 2023 12:59:43 -0400 Subject: [PATCH 3/3] Added a test, but currently not passing --- .../test_wspace_hspace_subfigure.png | Bin 0 -> 28998 bytes lib/matplotlib/tests/test_figure.py | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_figure/test_wspace_hspace_subfigure.png diff --git a/lib/matplotlib/tests/baseline_images/test_figure/test_wspace_hspace_subfigure.png b/lib/matplotlib/tests/baseline_images/test_figure/test_wspace_hspace_subfigure.png new file mode 100644 index 0000000000000000000000000000000000000000..bccd0fc3158967951d52dc97e5623919c3d2e0ee GIT binary patch literal 28998 zcmdSBbyU?|yEVM&5|C~XP*4HsZfPk&5Rh)^ly0R21O(|65RsP7O@p+cbT`sn8~E1d zmghXr`<^q#H@?5lcaPz?MVG68>zZp`bFR?mN;24(}u#}3Q;t4wzsx(wze?3=VI#UWMOB^_JsWj+Y=L07cL%N zZeAvH9wS~ZLpCnvd#|0H?VSWzS#AFHPoCI0nzI)Fob>7*LR!7{thF5vF%&gq z!G)ZVuWk>iRqnVce?@%U_cXdyW$!8a5c~U~r&zSK!X_stoe9iX7}+*vWfwmCV`z!v zJN-V5iM@>Jy{;>D)YdcBQj%@RBhLX`-!2J1V1})K88qvpQpkx#lVkvyjlMX|GH`%VXRd19zWSPbtGKevMf9YnwLx_rs91` zb9qp#>1Y(JANOBGSh{7vm{he2G=I>ACH-nE!yoA3*FZ=}xg!yrL=_lv@v8EU69-F6-BM7cj>njb25 z(X>Yov1SQGDK+5yC}MQVF>K2{pGf2kd88=t(E0TwamNSliT5GsFLISkm%Bev3c202 ztGAG#NSnhTx8H)*1+p+3Ams8%dH*>;R<_5ggjuzBGkUeW8u_RsU}Mpv*`Z3atdCcd z#K>vZlq1jPQ}2N1=5V|n_#xAd zFM0Q=z=YX2u}25CXD+n(15BS}(Td#g7dAu06cOxTT$0)SvVjbF5>lQ!?#;1^8I@xGNo(O^N6&lRWACO>5+B!sU9n}TPzi#~Gjiy}qRP%MVR99J&C z!rs{lr$`o-E@=lF`B0RMd#o9kF_H9Dg^?)=lUqpenv!eM;JZ+TCCb&YATaMbebuvk z^sSn;BX4LfP9#?Qk2h=^$&R-;8N9jh>4dU%rN(2g4S)!u$#1On`_kM!+-nQ5eVhL3- z(^)lLO_KvwiwI>Xu~e>z@?NVyxc1<*igTcv6}?h9+o2{vk_Z}$aClD+2~m^kt=9E2E=7Wf@fBwhJof6nAuUPZXK-QB`t5b^DIWcJd#?~ zpB23hl|55$hi&{2+!33u9km;;ycG^>ooa7rd(?3&{vhLkg%}Dg8@;-8X3oVZVv?Hx!`EuT(-c8Un>sbFu@SBHkq`=t_7&bWV0(KOtDGkz{6{q&g*k(`V(kOi%UNp6u#LV9@yZ+$JwFle z@Zy1#((C7^l{WLs@e!Z5vm(Rk?DkDAC}e`LIalyg_=gkFYjp(^M08v0>2M4xUY)JY z$|N+---~B{Nj_50zd4`!T0^vLb8v}#r7syxERtGya|GIib=cemHRm%v$=n6!NKbt) zBJnOBjY_14g4y@!2>Mo1X=1Hj6NdHd;SVkf=CwiYQj|?Z`^9L7|e|%Z!w&B~Rl_TKxo+8`s6= z`GX)zNy%><8r@J3roN$vwRfXw`G?9qoz1&Hl20n=2bF_MLPF?kEUyYDeuh>1)A-7-BtEF)OO1OAjbx13 zwrCwp{`_qz>TQUu`a<`a21-UqOm~%LVi|w*NuzLhJEr0WG6&-q0v5V}UK~ZqwwxM? zD|Lj23-9`Mdd)V6kgsAA?ljHyAGt5i@Ti^qre&gAklp_1tDDbD_he2qbk)sF4smtJ z>Fdg3dot1_$5$usvQ~UN2lwq*UvTUjrLQuj-0nJ2Z%Pge_?rbY z&@Bv2v0s0K5IP{{4u5y|*n3h*!!AN>?H2z~k75wjmxeWlo&e9mW;+R9Q^IClt2tR6 zm;V7-4f3f6`|_2`)MRGbxM65WwUBE+d=eELAI-M(+Tn28^%O(Oizs?G6Fy8mpL`Px zCOXA`A50GbY?HExB+g+GfBotGn@K8t<%*@ z-!+hI@zyqbHsVbmj=W^s@}uhsc#-?=XT&oT_EBfoB8Xyj9<;q5)@56h5Ex{@kS1b% zi@zW~&&H<|O#ksB%r)A66A|KjAy3b6XcL-V<%!K75~9YlJo`BhjJu@xICbG{xlXR9 zQL+Te%NbOj>za)I&-`^m+h2fXxW^yApIEznuXOerM=ba&IlQgQ!9OdgpsfYamNHmR zBv^DxGx&@*`J*wL2z(p-S3RqmI(vqfx+EoalK1U?z&mYV<*Q`WVlL{$zKYNN?P9lo z@ObJc$JAyCD3b=tfd1s&8+SjeuW=E*zF1U&*jkcyU$hG1Yh@+q>At% zrN`hGbYVO_7PV>Clgn^Qw{LF*?5_}sN7r!?V4pgk3(X_57EMV=+lp`_dAYCp<4n!e zSN^k9%d_9%wMfI8x@s4RgUzx-YI$%LFXyQ+aF2QUIq>jCzreJ8zM@#3kFJV||&@K$r3Pod3{eEiA|h#eB#` z3*Q<~fy(f<_Y8wr0OluYzu4G~fC@W?QQ~B~y()*V_bzWb4 zsSz^2Qd22?uO^WHyZbv;r`yqi_ma-{yVRSV1%^~L%RxzC&#V6$Db!A6H%1k7-M$}s zpMf)Rn=susmp!7mTHu-|o3^wK@vb~GR_Op#MY0rqSwF8f)|V>Z#2g|M8N`@Y!m_&B z+7&&R73^In9bvGdF!?=RqXvnPUEZVrfu3GP@NW!8gz5%&n;Ei+v?PBYup`yAq@_`} zCaYF|%FrxdUF<+@FMfuvU|65=rh7?qe55`su^J7L?rn?nZFqk5>6`r7=-#uJ5LDC& zR=Y`564s~bBF7sI_4k+y0-h4E4_w7qgntNIt#TrBbNATQDJF(Np)-EDL6q4k=f_*} zvyI;JQzCak*ov^xS)%hU8G!1!;Q=tC=G_hblw~~%Dbhwu6_k*CcX>|0Xs~OrdlWcQ zIKS6P3nNc&j!(vNcduOT?d1rhS5*Nx=6b>>mUm>6@#JG*E$tP|*iFXPGF!i3fpVnu zL%%ZvBET~N1b58X8c&CkMuhqo-@Wj<>U$6`1O`X2tj`|5Z@2u|8^LXx(s~w$6>1G_ zRA+LVM_H_eE}1M&K+V(qQLr*Rjy_irk+>ecc}vG2*VAvj&@EhW$&cYDs68^jMZ1N8 zy~_=@WGjDvY3f#exc8Nf6qDW@%I6TeL=)oD5OcR65aa};R%iJZifV12w=sip79XO_ zY3P$lv}nw54OQfCZ7?W?bNaOgHLvsy7VH0`shD`DM}n8@b*I!^-sQL%963$g~j zG|`Wod&h?cPiNzVMjF_usmUGhuI>@(vzKWm? zq8;0}V@QM}{>SP2#r)4SAg>Bbe1s4GpooZ!+ES3BA8oY$h-t6dg99Fh(pQDduq)Ru z1%k4+je#EA-`EAe&{I*oOQK2&p<;SDQkJH7*b;2DIxB{lr|hky>UDK=d5|8W73GLRu;SSiD{V{X>>1XeaHyhzr zm*l*S9`Xk(;#IaC5wxrQWCw^I9xbV^0*xeeIkDg@&01XGPx}}c8IQ&~GyPu1)+U=4 z&7u16&>5eA04qL5mM&T{0G%$yeuXo=EM-}0^I%6{rb0n~z*S?_fY8rrm0Z5Tv-KTDha#nU|5%lRa&Vz`1V2KUBk0^2Lw1h1EPA;W zn$wC{1o?+Bz3f=9J!$L&Tgs2nYD`Lp?iC1taP4S(Ne;eoTO)AYl9Z7lc{0%61#MXG zLuQCl;4lXt!+Lhvr^4_rYcS8avicv%+0oMIwB=b;P6-m&mV5;?bU8V&4IQDe`f*E_ zyMY`W8NR-%FJ55a;P42NJFq_@s}ZX5;-$bPhw5BZg+x}a8?5|B^vzDHV33&bv04r#dyE)E>r z6#90`dRwzeXmvb;@I(CVqiX?1BEN+pW@4u6sdEZDU+)kQ!#gSv6R3uxd7^3miQKWi zsmYjP4q89f`NOpt`Wz*n=+!$k_&3nk!o76wpK8FM^1dtOnjZ9i)PzqYwIbiE6^ z0!i_Mf@E98qw88?B0p8r`#ENNhYPx}*_}ra*eDCOTaCUI%$w_Pe~M&KGSn~tBv~0Z zt&{t414;7UPW-&?kiCToMRF(^d=>RxSe%UlZNb{UNEx~fcg;GTvkm(o{{X0NXptf) zQ@HpjQK-U=r0# z!Ke}*3$mtPYkB%9`@)d?`mrU>Izd|_U(IgoX#k*Qn36vpfFHNxR0X8DAJmGZt{P5W z^|$l)8S%Noo_h<1o=#10_>@-*qL;h*Yfq2zuf{H#baYRY&osoq1b^SG_hRs_iEJ08 zLduX|WSgNGi4M8zdpmoM{9vIh@CULv1)ik6&3&>kkDx5YySy%#JYPtQhKCoddi9AZ z4-)%qZ@ho8zTSgX%l+&Z=HX%kn!sR#7R&9BR0+ZKJx{EOha-c6F?UKo?c`re4Te-- z3BVzShbIH7u~I>Jh~sp62w)FWntp%w;yQw{2ama$^NV^RKzhOP`J?OZqkjV<&t&~d zjf?fJ$Ib5&n`!G+V8%TOJXpViZ%Uj}Avx-+*jf;H6KBe)SLRfDCU z^wUYdxCFWIhHa*6Kap{ol{l>`eUvrgh*?+KJLC07?r?l_bs0W@-WuntQTjfId0A-H z;weGeip8r;*oJMaZ%+0zS5*6-bm-_METdlyFFb}B5_kt55^7fj5HT6R+!nbrGl>Wa z`5MAg?>@seo`9ygK%5H-dTL9wy|Ts z+M&c-us|P|oqhSvi*Es!jKiczGZ^^t7zF#@>3=lp=R< zMP6HNtYf4KG&g#;+p+SFy4m>m_NoTb_cvQs;GYbufW4GHB~Sb(==9)f_ruiG!_9M6 z;%I!bAF}&hS?m#H&FB+`OS3}ze7%O$0C@@TWfP>1$$)u}*V!*wo>c(HBHgn7qx_FV zeujn}gSKJB(#@4Fg{4BSPq^%G^70Hyb%cLWkYmb35<{nNs2Ixmu<<8mtL%o$)FW3Z z$W2r%8@tC*$L~;1lfX<{q0@(#hUcKL08Xl+!1RXfN*Yd4Q!O>9vHZ##`}_ll^%3+R z0v}$#H0_3}Qa@mVP;jwPqfAr=#xO=~!1TOIH~)*8FcJuQAJWSQz<#V7}a?GaZ1kx3M8>U-jLO$plRhfhP1!(^0>u zGmVvXo(kM=Bi&b&E47RHXyhBe`^n2YB3SJaAZMgRVa?YC!eak`mA%M>56+euVSQ4M zC7527qS0Rm-3?$&%Qi^&eIZ*~Cx7~^(f2Cm8ypKg8y7`lV8^q(a@VejjASRIq_Ojy zF=CIKEPrGkvY?<^w(qv@yXd|Z=DoC{z4lum<&E;}mnC}DP<**;2I;G#=HL}BMr!S= z3Ip0Sw}}kc#xt<%=*Y|=F(1PNo;*ZvX$3SSpXUfqeVq}Cq$DY?@6rnSC}evA#je40 zawv+H%_d0&omc@WCKcQJJYkT<;oUo968L`Hi)Hqz7joO%ektT=MK2@-&M8&Z_4W1p z3=G6i7^5ZWLXq(#`R04gMa=oN`ReNeh$Qcd8fB$@>D6c(|-2o3(>GG^#^;VGp$lPyVcb=UGM*A70l62f*rrxLslz1d~LtG~ZVoL>>qcRfWamjh}jW z?mxR8foY7Q0vL_wz_zUKz(wTeNCaq>;OnahGJPt#S)&|>LI^xkDw>3hXM!s(7r1aS z1E`_o=z%lvWVSC(!W^MG*Zcm9Z9AEabRRW9#mIr}731?Qd+>Pnqr1nCCrY`?bE{iF zHcrY7$NE%m+sdw0X2 zvl#bacSpY;!QMC5L!q&X1>vTWhoD4^PxsW=37lfFKs0AvfkPVJZJXApEgZHVN1+g#4HQmKH%9W` zm~4M30w(o9OfeECp$9R!#5+c#Kd~V2Pl{n?8eh~7&a&`*1ozGdk0H8UqZdkhu=nY5 zeckk3v&m#{?Xs08Yj2y%`KE%fh6o2Wl~?z$uAGqlj#ao5gzM>541eDuwP)%%h$Zg@ zT|{DjI_zzVq+vF7ZAXyJ<~{&)-Yx5s^Y{gVW?ZzDbj~@b1^JoL7WGz?}vNpvQdlKxLtruZ=TTi?CS4e@8k7#`J*T0|! zYG>C{){wNgnDZAU5NUiyEWtc8I+26Jn!^-%aLjW!z4rX9{fqs!sUm3<1EQ$Z_qklam_!BF_XAMv@oo|?ak|i@ zXc>BP_5eI*klZm2HKjd1<9+{-I1{E#4n75?XD+C_tLd3e=A``ih)9N)9&YOo5(G(- zxXUW6exaN7m$P`TBbCT^TULDcT6NI7^kN-%C;o$c#%`r4Qww;1m)CTv{u~?}uV)*D zBSp?1p3M4QznQ%59dQ1_Nlzws&%eN2m~{`|DN&x&`m72sA|aIJ+57pA!54WzbJcp{Wv2o0n3n>VJ8*4e+WrREl~>GBpHP~ck2jQ4{F>i3kCMEq z;=ydU_vY%app<=PtfnIbP3>#y8Gh^F%DwtyGI=f!?5IZpC|Fu1c!1jwZpJ|6B-Qt_ zP_&|6b!bt!Y9I#3rnxB-B>o9EW)ror^~S4;01`d6q6>K?o}x?76*7 z!5xUg!P!Hoq;3M>CTy5p@7j^3CZ1Um`QiXX?x`tR-{vscy}0kO%-`3>+Q z?W?W#EZ01l7=;#nY(b@oeTP|VFbbI|b>0uvNFeJd0U)1Z^4wO{e8p&Z^3$RRY$M9>rPd^(W_koXecZFYV^`x=Xx`YU_VMD*z=d#S9dPUK2fhjcfmZlP_vYxhb*x#j<<<7x~iY_&)J* z2RIGpM4_BEmk9g&h2XYpe7vhv9{J4>oCX?lH&~_Z)R^^N#?Z{D$C(16?dz~k;xdVc zvErzg@Fb@-%9$&+6?(@0ez6GF7{U{imHnyx^t0n83&?q8guz4x1xDVA@$IpkZK4Kw zS(56Ty$g7Ozp1(6L%Vk0>7nQF5DK_&CRNAB5T=lJBhxFWuW^S)a5W&IzM8!OVCJ(; z!`<7+PnVO6Sb~@`(6u~nieW9{OzelSMW5)XuN?rpJ(=lDvk*&Cd;}cRa!Ga;)L!xU zfDDz7G6kSLZo&=Piz}i>f<%6%CZ(E*C)34nI0GmY+pknjDG5sD-?S@s(g4hG0lDL4 z(AXV7y|4jRO5*?DBI2x4^#Oel}YR#7Bwl$mi~yAZK{zHI2n>oXp<;3W2@Q zYYeP{inNJBFR=Y8j{*{f>j@$(Q4+u{EyN1+C(r9K#GioVyW8U@X{T8v5YnH8w5-Qg zf$3H7bRismwo%%GL$U0dYk*}|(efp=_|;53_nP#1WxmyIOKn27+K?5!?`+8iz7hdXN~dS06Ur`2@17dD2locmru}lS@)5ZzqZTD2^H6 z=&2^bJ2c8tq+U2%*tO!nAkBi%)E7u^P3%By1)An*D-Fci^7&ghr1AOsuMVG8OCg+I z)ZCF~{b0Tm$_2Ta-QtBO4^G`~b1+gVF+C)H`r9Hu+CF*84%A4#enSIt82)QvwAY}*p?#6vS3zak|8S+_dX4oL>9`!HmB$bjbPwWRxQ#1$pDSo#zWj6+L9a&kO0xOGmT4;$;q)f&^fO`z`;J(%w~)VJB%sp z`=ZEZM;%UzK;wh1nACK-7xi%=q3gQbtCJnIccx>0c>Nd7{-Qp89mf}QC%`39o;T9b znMOxPi(edXC32c8g-$R=w@ES#`Qw1g=UcMgJ7&8Cm9V-{#a?4-deY`#FIj>lwzR!$ zcrT=w#_#Tu=!;1r!!CC^99x4*%yA1e5p-)wH{w`>eJ(TX^o`x8_{JKkMv8+I5-@Rv z=vVQJy&B^`?J+{C3$<9_YdazCLv*D_2P7u|+8nZU#XQ(W(Z4H>?AzG|#kT08J}wC$ zas~DGx{Rd>l8*IaYq8qG;xr<2l9-%hvVFSh1wEc^_R6&g5gIH z5s|_A8gGiQc1_#iFQ;4Q=j2i*%~>8t_<@UC%Xv%mbheq?g`u55Qe}Wv$i82UE5emq zqf3EBybzj;-M*@??}Y&bMQ;EUnF>{bFgy@9qDv96DM%Hi`Jzx-QM*c=)rUqyI(k^B zhpk;nI^0Z1$^kC>>?>%nMO?QN-LC#15%0%^oOE>kPlSb2-@QY|$H#{lC&f$R^G8Jc zu5zY78r$Cyo|3?q^J+q)Tz;6Z)kj>(Myh>9)pB>FBnaDj4)AbKQ$p*rm#WDVLIVeZFPb1z%~aVRpD~xFtO_Z$(z)T zGQUD;mZZ2iGsk;$+c~=lWdZ}UZ&hmwZlrv32~2#bOkqw$ep*@(NhzsB%8-!c?(Tpl zv9heY1SVi}8+~E^j-CyG2q?pC)$-l+c_F!*&f=4@fOVrd7N)(_Rwa3F2a%#7+=uS^ z1uwHs^R>$MjR8Smz`k83Pl6R@mgD_@G)ta-> z8cZ=|fGk2tNJw?!H!aBdX;TPZ$F+Lu`GS{D4$a&vZ@k>Ox487A{RuNt+6K*td~YxT@CSNFZQD{|yNVXZ^rnf5s5Bg#$(FHFX>IfM&Lr;Lqfz^% zkkYAo{%}f*S)U26(?3iXqtjlT^+$2W3s4=4^Y4a83hB1c{?5)deT1@OjMySp(KG26H35lZU817aU*y zCkw9v8)zb~1b3#C1wwGaAP{P18QU)=VoKk|u+owjSO@H@F`2wKrDs9>7aA+g)={rM zyl~iL%1XFNw(f<6!XndV(_$ zO1N^8X8G4so1{|Zj6-ktMeJ(lAC)OdmV_%BGo`P_FCGX^J{&wh4%ELlH09H_Z330r!9bD{s?|^IIWiU(hzOlah=)ewNPQio@iL^<+UQ%eU*8tV<-A@$y>o`+Ujr*&lh77Qcyen}{n%%Hf{5Dlj%{6`$rkh!k&bR|$Cvj*%*8h6d5KYAp`zAF zS#|g_b1u#0n!G;w&k%?3RvO=t7l#8)=3deywQS*rT-mgd`w#nGcRUVI8Z|G1Q^hFI*W21ACM&3)+mqg?E>B^SiG&pU8DwB`Zox z(WypLfwyX0BQk;YXmILg8;!3m2vRRWC!c9hFS6TanVg+qHQozAzv`d0kd@e86tP`( zd1=rCHJu(HYKI}Ru?~<9{h1oC>>nl&coX1#@!qHJ>hgH2nbe2rb$YDH9dq3o2DU-I zR+TB9o_yxZYE`8V4l9rN#(cb=2JH1*%m>d;yGC%Teoz}}G%+QUIvdRFAj=KNv|%$( z7i-^)f3tBw9{Sd z;-eICD{05`pnZH+A{?8y{1?cN&7cLwR6iwOU|+zrZyPsWntgvd6B~af(ezJJX^QYB zsdSliuo`BY{?W*@(O~+M4Q5*YYt!}4PgiHkU)6iANF3vzbdaUjzL{T=J6)qUMt^f` zy}SRd`jk~8u2E8oOd?n@iFEXYMH^LF*p#B5$2eW=?4-vZNt*Toc5uAWH^!QyKIQN+ z+7MRiuxE7UYnJm&{s9qITz*jUQ;g+@QrCA@q zN$dV`{21faCZk}0Se6(;@`1mYgxk|4YcX@A{HUwF@D}oXKDTwu*x5kR}~` zTGOwom&Ea9tN(0%NSuJ36^m(4a0K9a{fHNO_PYzjqN!dLm_&|$UwX~#FW~z3MW^+0I87MNcU%Gz#rg`4bQ}kwnffjfhAYT@= z>1gnd%CuRwWMd##Duifz1^m)zIzClZ5wuZ_`>)+ikPM7TEu+d=_~SI1zJ}L zVJ}7+b)JaQ_+0e8lufv4_H0|Qt1qx_yY}irt;6S0;pY!AaJ2fI{X**-7me3zC8s(H z8fMK9#+mK#q2*V@=iewExO^`w@z(u=FP)&9e20Ut$=|3-OV4y2t;vY^;8FTMvE9!A zAhs?`c@V*6xlp}WU*KJ%BXS1ounP=)M|OeSJsQ7r`a#FBCJdD7hVR^84&UEWm3MSO ziAvLZdiaCsjm2pA5-&Oedj?wy5Wu34Q-=F#q&)LqB3+ zy$xegpxNUnJnW1ruiRU!dhj9hpWmEC2s*WdO6fe?Y$ylEa$4uA2Gaucl~H#uz$qPH zz**BzLlZh!nqLbjMh;gTr>7n5Q&Uf^tC%5PSY;;EI^* z^-TB=krKaZ*sIZ0-a?Lx(u8)e7RLHEdC9vfZY(+#qSvO;?N5pKHLjkK8m7!4UoWNq z%A)379D`|3G%}me7Fs9@|A|%-kk{(AP#VUizfP)9?jDLq+|ZP9ttANX21o>I5^d@l z#2$JdU+#X$y%r2}kpuo7Exoob=!rcpfcLt>vX39LNpPF( z$w*{Gg`%{eckR~Z&qU6S=j#5IHW821h?&`*G!|icptP%0_&_CJ|+j&V>-rN2;#Ys}82nB4$G zYMo~?FRyLL>t9_X9pUisX zFN@L?*E6B{_t|K{rDKRhI8Yz18ZFJv9GW2#$TB2y0)}4q567pxUPBxvEjb&@1EB$u zegyQ<>lwZz_*I8#IaN}!$e_W|(T2CI-8gKV7Fy#s0DXZ(Wqf@T&tiUDDolsc|PdP-XIx;_-fri<4GUQ=4ah zxXt+RA^P)w*#4?H(gJ2sGjX^85IZm-geHj5`)=nOjA_96+fUx>fvesp%{{EGKeI;d z>P@kPU~GUtj1<8Xy?T9J{~HsFxG6(?u#Q*gf|*iuJE~er@>_P^i(JQpK3)PsLdjHt zH>7;__kwY#YPSL7rmxf!$Fg^FlB-+iQlMSczwHhb==sHs&!%hNG?r38cm7!g$p7g;@Wf_@A&xmr=Ki%c}7A!b{!t` zh*PdK^(WNjcKXh(axwP=DZVIG6kc4+W?H-;;Ug#Oi>b`c9!vX|zwU-sWUg^+ai)O~8agDV!c!m5WAjUYYGV{0dO&Qt&+kHiGG7rOl_S z83INnlc{Qlz#fzrDj~At>Ok^**^0|%HFCu0i;Y#5y2TXr(MWJngUuuQqmfrq)3Qwx z4~s`K$W=;6b`Jo3-NogOf|jday%*DwL_SdO5>S1%OrT04G(24US)f%GRH$90=ej={ z5`wOjE@D%)eYidhOu&R9`XxoS)3q)(0?upCmv}B=u-$_LCK+7GY%%p-XxdIaQv7n5 zQH3q`-rn(s%l11SoABZd5T%>oa20IlN*=leQXqDRL6u!O)_X32WpI6(A*DijcIDTP zPF=0Sm(r2cec#mc$I2}TB8uN^^?@7GMn^{k#ny;7_->syMzHjf-IwcUx-yC1UK_z2vxB`DV)bTmcV(GIg>-`yhA6&=%YqdroPbEtl zkA$RiHQiU~`Sa(%#|OmXY8MAtn$$k0hJSwNcm5L1)pc7*G_Srqo=oI-Vz@j%GXC-L z0i5&%yYVg?LlhOK*&VyaGlsq-?ktDJj{5y>CXlh<0NITf=Z_X}zByhU0jyiO+kyq? zs=cE`&SM(P*~&t8!@~fS-Jdej(Y)^8FM@ebRmq(Y9#!3zQ*Js-xSgRoC8E(Gh9>9#w7 z+plw_kFO6{deEL{oBWR^Kk&C)z<>IK?=c_`N>|m=QJCpQs}@fV;QDE~f8=GB*CRq> z72=;rfxaxSTjvqn$(Bb4RP!{}m!A^#X&7dWmV;g)0K=B#hHPpf@T1??=)Lj!`7Iq% zcCbwLxdsm)vXw~Ox0@OLASO!H0@P7U-_EKmWmp$bePAq!=5d<~&aZH;MAATJ6I;UW z{kM zDo=2#Y{UV1D>%9e(yh;@HG&J^osBp%@cm*p!+NBo*R`!ZpZ zU6TXySnazanlh*DxGhMw<1MZBm5cKZ?R5N0^<@Ju@)3yU?QHnEV7@d6|BYx~1MXA9 z_>elVl-FJ-%jbgN2ffU}0|#5%z+?kFx%n7)>wbcY_{KEg3bXy`Y*T%@F`zJ$m>8~8 ze0S@21F334ho}_!GX-7OC}227%aBmRhRY6pUcYfd0?BiSZs;hm6tp2+$@UvKPdzzK zkwuvch0efpR&$HXx3c*vpbL1fR#G9#$Ua{N^07{#z58i$ox?~S$JYI`S;-5_>u{w8TsSbwE|isJI9X}M3ru{Uvxv+)x34yl-l$$e^S z>H@un^Q0{ra4ZQ42^D#iTMU0G>DwrV`usj%(XMp1SC*s%cDmAM&Zzc>uiX|fCLMi5 z!YMI?J;thTrDpD*M8)vRvR8E$meoBqQ|w#;*Ry``_t}l;Jg^o0GV_yIZ-}+>g zUFc-+yLWf-@l~tqJ&r6@RaH+XXRpjg`zI%p!DS6I?8S}KEla_d?#9vA`l)864TDsO z)XO{bjg=eB0Ug>Qv%9?VR4>hjpRO-rn32Xo{hoy^v$N z%I@%2BA@zKB9D3_k%!+93iP3A)zy4;M*v4Z;NgiQW_cAA8{3vG7gN1eIXPD6$|^1{ zE@f-==U1LW5?3Ba3vtbp<=JkHKZv{e#o@H`+tXX4|D8h3$Y^fAN0WmSD947R@2mQF ze#qtUa1ipnZ@#d#-u$kS#l67O_(lufZ#>@;`0K06TYn_9i9)EC>{$neUAEO|5tsE? zlxa`g-k5PDQB7ee0V9X)RCUWTz`Njl*>^{m^pz~U=tM?~=q=*eJVvV(C~jZ;UxUs{^|YU-y!tZ3C| zd@lY#kV~ojqouRwEy<2;JAD<;P}EyK9S@J%>BJg(nGaD>QDT~!q}b$K1`BPWDSQqA zQenj74cm*6qF=zY0_c1E%|_&8%IOX%n_mz%g(JB4>3ME(*VosRig;DGUeK$)>W20= zQy6UP7-zcLC9pMDhc5P#T?DPKm%PbmXEadhPYdLoeOJzfj^XdJWzbLgRi)McXISjV z-!_Z0t&hlZsngGt0@zQ3`wf+U5o~1Fz$8 z^WG%x{4N`6QJ<9g*5H_w6osvciuIWWLHO;f!fMn-M@I6Q97wjhS~{Uio=a%aZ+ixrg$r*pZz9| zl2IKCBoE&JRU;kx zr=4H)OKx5)fPW>-I)BCM+7<9J8_utI2AId&BcZ8i20-^;&y#`uZ_2Zm-j5+U&n7%h znT_KaqEe#e{fbF|hoG~8>JNCl2}A0A-yUtg=IBw(j4>^wW{RjEK2$ ze1ES6t~~n(>3G`zyO@3>4fHtg`@#NMdIj3)Vdp<$dfz)cvL^o}rk@6OPWHZNComU4trfWx@n*u?Gs6;0HbZ zJ?7xm7EPdQhSYL_*9r`&LeckbUn^jW2T<`7!=8cw+@5@+JKF`8y|l(MvYA^qN6kmz zEG10e66){CKl%769w_NW;Uf9z6kJ;4E@#=d6B{Cc*YE{nSEO%5ePHem9PHTI0g*lYR0M(dvEr9F70HUivyaWo)Hhz=;gg*Gt z?ZHe5z^0Kr8O<|Jt~6dB$_c07{eUZS>Q|&&w?E^#^Rv#?4u?v>WK;>fdQluJorl>p z_#FKX^Lfp3Po}=;+T^GvH7`!3UGUKcEyI_3!)NLx*Cym($>zq!fanC*T{a)YebG@&7 z`-gi*DR?BAHc&=wZhroJoYKh-T>9eV@CZx#sizSdk;au8>Zz)OZfENO)ChL2yVSGK zy_W-o5vykeVEGM*GX>@kY*e8H9rqWAUxWHOGLi|n<_Y;|^^W$|*5H`)&T|!X=tBiX zze^;>LUDh17gT&`O5Y0_7~`(c#_MVpw5!Je?I7m;S^2$s8vFM>dpzT1{ra$&!+aR^ zn3*aw#w=p^dn-C93)$BHB-GZy`KmKOvjDuMJE-R=^61HbrBBEPBWKckv@bBScQ0Q`7xX_Zh3WOU@jHc zTc2LCRu6Rq4e+_UGcqY3Egl5s1U-LpV&Z;!dX+Tw#5v&N977yg!c|js@$5t6Pxl$r ziXE>izIol(lJs62v6S8-qUaUJTEBZc`w_9eOGPYgi?VXEXGNNOq&P$3ZiMlhtynL6 z-N`l`7#^+~YfYZ~5-sH#2^v@*H?X0LuzO#d!lk`>z9g)B;9#8L&7pf790pwCQoW?Y zDt$hjiBj*rs)z)`;n}b2)xKl()}1HJ zDu(5A>DAA8Z#g6b{*j^T<3SYQl0k(O&;A$ou=)S9hb{jjd&nVS1+_-o%gf7+n_p6Z zN%ytV=OEvm4?8^;dYuEow}L|lYi3r~(rA1j;&AD>ui6fX!mrmn-hVWAEGcUAQzGqj z(E>X&Gqa~X)r~g5o#;QZ`bSBieoNhn)Heu^ES|I9OI{uDVg<}1&OlZ(3Wjyq9X{ETwDa4kS;kE}1hc{Ms6CD?AY-|Rs%4{8u z%J?4vv7V4{?1{GB0tSoa$4jm7os^G;ZjbNX4nqMhE0Z|8E{FaH)Z)%0zVzZ{9$39z zNqg@FS9jnot8~J5$YRRQb`&zd>%4fVw$@{9^$!t|Hf*_)5Z<#96QfxiWkJW}zQ4PN z{~^=?9qZ_;`C6L*Weth@4;(0u6d?hBcqfouKG>~WyA1C!mrlI3W=m(t=Df_O%iZ3D zZXzmo^UEh04vkON@vdqTb+lLkR=8XV?FUt0AJnTLp3&Nhn4yd9-#0BJW&$sN4w@Du z3tYrB_r9R&k0Axg<(05Ka9h5O_)35+$}PWncIn@n7Sj7#z4XLnx0)6bGhzRRm$Jqk zn`;vD&QOoLHi;UM?C=TQpT7^YkAi&fE6019NmWm3QNWqAyLoH zj#yJ?Xz4bsDc~2HE>XRVk_Zm{*m}cmcF5uzg+qT5mv%|=?<&ey7|1-C9CoP&Xni3xkcoNWT9_jTgjfY{mD@Z=GB2WBL`}j|R+*@p+iV zz-0Q~S$t{Lmke9 zNIGHf55M;;D7L*pr91=~6_GiG@^f3<=vi=dcaZ(w_N!+>4dV&i;>ZHXDBn#PwYEY! zf$Wx2+FQEB5=hH;PX+8^zk-lL68!2O0>a)oC-bkcZS@}vngZ8C0liOh%T{PV_p>w? z!esOc(S=7L`n-iDRH*>?Y4z_3{x@B4%WTkCsAq9GK z*eQ3Ujn9nvb)Q>7BY%zp9aC49M66W1N}X)w6*K5gprG8bkD1xW+nf5GT6(eJN(ir- z6+z4Xc7dJw!$*(C+EZC|T<1fyqG0!CqoboMkcC+tTL&!xIM}I#%SI^oHRiMSUQjb2 zxDUeekW9?8j?)m<{MGLywVq!I6UzpB_HS+Yg=a5};^d!lWO>;pXa+}az>r)p$bvnX z2n(~-`s#uXZWSt~^2XB&!cX6&5i$MTAFLpy2athTU-644Z08tq?zJZE>2q5#AIQYv zb~s!ICZhYc&*{q17E(hXdhhxYoy&TWE5+!BUBny%syMF_Bx|NAVHXN}Pu0(!WAp-O zS188_@@>ai=s=x<<{$}{{+OP*=iEw*WFmfPu0ddu=7NQV1!Q@7c;s*pJf3`I*!~t!9NTd22LIw?phaf36TT%me`^ngAG+HH!?~#xIjVjnDAf_~ZLalB6-E;K z=&9=JAb%=J+|8$sYJ106^r9P6+mHou`OxE$Z|eZMj?mWVM}Zs@LVW10Dw?!^_E5}eRr%Z*djj1w2<&#sI)E1=5BwVs&)f1rTN!v+(c}CmG3;Ns-iK=153oIHeNwy) zTx(PL?-oTtZ&k2?*p*tHrR&95dvv?d&YLPD#cyNXfhovc2tbJvf#b_Bd@==(k;_*&#`=)Tl=GKE#g{^=6BjR{%o|n@TZu(?XBilb| zB0(=#S%0Q7m^O}n$>vR#XLd{gg$ViyHPda47t$?7A$O)O_@v`xHeqINPJeM`Af)f& z$#@tapRo`eAySU^u%3_;#14vESGOB~WU0k_Yh?M$K6psdJ>+juyvxL7-+^tDU&^8- zZpF(SpRc?&DFs%S-;jiz6fK7U-3gL;Ro~jDopf}7pXJ6wKw%#nn^rDHaQ8X=%ANWK z2G_1%9~^Co_r$v|4tQhoZG2z~C}jHib@@EiB*haBbkod0#Wi{PByf&xrh8u?MY&(H zdsgBbfY|W;mfS{m`eteWp; z|B6m91(TDK>xrJ$P}5@Vtu6G*VQH#@Uu!l+I>{oS zB=Dyvq?Tay8dX?6B5lNkJM#eCr){f+5l-&sc6}|hLO=T&1k5V664M}=N1u|4Q_>Z=S)<+$oebG&w+1ER?ftyRfp1baP$?^J%NfiF3rdVcSf{ zlAH`UYEuS`CN{TE6;@&Fy`tjOy!s8>)#Z`4yFEf<3>-LFvORm_ff#+s~!%Pgq%X%eeL zni}oD+Nn63>V|1c1?*%0gxW!v0&#xGr<>kAdBLXPm-}=jI;?@g11ZbQFhpB+1#W9j zyv>y5W&aX;Rpi%2HQ|rbmg?Y>gkhX_SkiVsgiPDwxuH0!V&m=G3;h6!BDolfTvLK2 z*ezj=-7e6*#NUG8fofO}D0mo{3`kp#;W&WDy(Z6xp z9H5Ph$zAmTJVv{yzl<8jHt)Jp?oh#m-#o_Uz}~~JXB_-~G$69ch_%7)a7_gzFqqZr zPbS_1J0@@RAI_4kPS)K91~6LwijC#C86^tS7t&i%>ygGdSh!$%-wKY6pO1u#UQx|b$JTN#kWC8^cMa~QGe+fVNz5@vcg@hRIT=Ww-!ntj2 z&E6nSPr4(E8XCg+wft=x!lX;wnsMnFl31jS5=Jy~a#hqZLDoKMQhf~oD5ARCQy7q2 zKY66Y*Ijsj5X~nN6}f;!149kGj{0RuvT$2vN_=>-YTmp*bSa&ur65iu#wp`Z8~T(38wb zTlD0V$bZt4;Rrq1v8jm^-)O_uJ9rlCCofMeS7F)fG)O8wR;YV?Ov5JX{XMcJ({J?- z<26JuogADT`rpt7T&b*rhX~wX{$WyJo2(FfLR>uDwCydpL7rh@YC+~8aD98Gz$;-E z!(tHihm`9R0-y-GQsnt4OKE%RA5y(;Jx|!GolqPc#=YIe0h_K6+0NB9fHSlIc9B!v zLlS9Dd2auHTyv_Xm?*Z}7&jGVQ5*-;Pt@Y_@~1p&qXJO|KhFSGF@_v&U-*guJ!lvB z48n$%dt!9uh|j`zQn_DfiltLZ>R{=y4s02DMCX5RSvB43l&1ffF3oP{ZTH%lh?Hxy z)P*bje;P^0N`(-Z_wP3fi;0oHbZOhJUAsJlKHh+Tl3g#$lTfa|?Bw~zcx3VuF7C;Ry7(l7g_dYCCBQI;H|ZHA z7K?MJjZr@@6i|J4o7|S7;h5oL?c?wNwIjm-Nvv81Y{v*{HNrK&CEv=}Bp`3i6@wV# z*DkyYOV@FkZ+}v~Ois3ZbnTi-x^^CcSK`^v-XWC@<>F zb=|KgiRkxXo257A}A8KN9V;z>&{LX&)6)tCc9ZHj?28^ESdwZwt|4H{DyH5Mfu*rdpoBbF%a2MN zuOTlH^B^R!bI+dRXU;rFj!SK8L9*;+u$)b`Br9;p+Ea3A>3}p(_igR#>q`sJSlND^ z5XOGq3Dd?1z5o(1?x^-({m+O=etKu-U0R6zmgDh(NjIb55bCUgFroBy+(=oCZm*<4 zzAqj6FQ^&TN#f?dg6k__JfYxKFzvNOjB~bk7^WAus%$r`JD{F-p!$jD=EE`!v1!B~ zNB^Lh%BAdeWrTK>v$p+9-v%Z$R_p+YwHPcIzIl{&;_u2Z_0;L|XK$*f#+6h=^! zxoTF@s`~rV#pjXGyN@7%bxorB?jsS;vK4;r$wT7Il1zq;9u34B8l!o%aMUF2jrSh=gf&UN|6AKct;W-{P7={+Bp;z}{pdV)WY7>Hhb z@7%kAXry5BKBaL$EVZhk!S4@v80IMiO ze5*A+z6#G)cu8KlTSc?@_2AIDX`8<-5I);lTBY4UfU^D*yXwP3O= znGemt^iJP&G+|*P+D?86fsG^rmPSh54E4vpzJqU)WAw|1lZ)1Wz@qsyD5xy5VJ}G& zo979Gvl$3z!^0Mk)u+=ab~x`_4CN6Kkq{W^z~`1()GS=-$I$hqrKP{TyiPll%#Z+S zsd%dmL{<*Gn0#|Jaqq~$<4l_*)_kP>nY5pFvK1?cv2cs0E+AK%g}qlAe* zi$3=Lktp-Y;Aj0X*%W>7p!u!J>;@+{1X1bxV+SxxK@WEAsuuVPYfBSDQj)5A#}%G? zI+>aNag}k>1Bqc1_*#Tz(*19Q^j_2Wr0;kt#U!;ZBBPL#%`+n z8b0PcEy2;r=~I@G0%#&{P8}jl+d8tTA;oU5w*o1X``(PW#S_X4O&; zd^-h@Kosm?ynJgk$|OMD#@SBN&lYhDw9=M-Rvt=`Hh#Uj+cm*fGl*8ko zWs-xCZU2sG3idWeRA*xf>{*Q(=ZL)gB;Jrjf!nvMn+KvSSO{-4QfEFZ<@{nK#dQy5 zhH1HN3(wl5`i@pC8pLzD877)SUHxI?&U<@zrNV0U4RqC&;t}{e!Axhyee0FAp?Wg%HsXW#!oJGA(NaSL>gG0ZG|izSwT#!%;Dz!uG` zK3R7R%0`&G5*^U`CrML14Yff>C)=ZbGKP?uPDx3jS&BF%Fn!&TF)uAw9DFqK;IHHN zG~Jh)NBVUXQUy}tw)Ln3@?$;8<8Kj*&IosdzLLT(e>@_3jN+Ks=f zceAuhilx}SOUUa*TH&bVajG=&gF0M%DWfDRqti6nYLOcsjoZ3oit(sup^Ds{>l-L% z{@~eR8kLyhLo*~V!;fZLkY)X8-??Jf^mVB%$npq^Oy)5}-)K{Pr+Nw!O5(1|A9|Ks zlNBISe*5b^*lE*%=Uo3}hJclU+bl{}Md2ccAd)x&F|tC#E>>*r12C$B!o$_40I)<} zadtM&pytUhu(P&S7v2*|QilP-HFkq{?6y2`_^@2IX&cX<=&-Ocs+WOu&_O#pn`6u1 zm*KL+oY;_!HSc5B{U)!ul5ZQJqZ}ynQ?IirGt> zIvB*UdT!I^c(g$HdKlc8C@p6XNT(;gcLh7r=keqB_ku%1tHBZX>)H4Tbi0|)InMnl zYSvMDQ>@3PXFosqEm?}c@y~@ZU_TEx59mu;I6gc z%41OSynX&jux|%`c=(WXsk9f9y^5#>c6T-a_1(jof~olD+=!}O%gvB9ek!Eam3jAm z!>MXz1_b@9r*Lp!vX6FK=KlQ7=nw}j0~3LuHJ(;iKUFhWRm~PDP_%vj{+#i&w<^Ny z8XE8K|3RKlmzlL0{LAu%Zjn=U75RxWu#y<#Lk#oZne8L^wP=zRy3$?<--~^oC_vSo zDy&btD?`Vk-L0-Z6I~I$8Km1jFi@>5V1#EO=svWRUHaYzOMCV6YqPV}?As0hYNpYU%7s>*O-W|H1}LJw5!lY=Aa# z;{pM_KqR@3pI+S7My@#*h`SAM~J<}&wP={+F)JbK}Tpq5DK3Q2h&ZnNH>tUA9M9T#r-H| z`qo$b8e`5!!7&CIlVqB-o&fbw{U!SzEzT0&i+G7E6b?0P)l_2{88Z7nC+vdKj&sg7 zBmP3lDlg479hUCKdjRP^#5n!6t~oa&_2YZJY5_R-|Aa=vbaagD&{FH&xd(~!gh`yR z{&t8Jw~z=r1CR@q`kb;$tmjXR(zjYSxMgEw)eFmH$Dyg-k&gi;dMqND*+K@$y@W@6 zl>ZKmT5~ak{}*U-SfGGl>_FE2?%PsM;vxO6= zy!m!bxCukUVLBsFOp&0GWeDNr$Q<)7h8$+JntjDxdC9en>ZCogDYx)2Kxvb6;)XecItCJlsP=X5OwW}{N=Pux)1*k07nd| literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index d8b06003cd00..1ebecd69e222 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -892,6 +892,15 @@ def test_tightbbox_box_aspect(): ax2.set_box_aspect((2, 1, 1)) +@image_comparison(['test_wspace_hspace_subfigure.png'], + remove_text=True) +def test_wspace_hspace_subfigure(): + figs = plt.figure().subfigures(2, 2, hspace=0.2, wspace=0.2) + for fig, color in zip(figs.flat, 'cmyw'): + fig.set_facecolor(color) + fig.subplots().plot([1, 2]) + + @check_figures_equal(extensions=["svg", "pdf", "eps", "png"]) def test_animated_with_canvas_change(fig_test, fig_ref): ax_ref = fig_ref.subplots()