From 567717be85c851499437856979d180509aef2e71 Mon Sep 17 00:00:00 2001 From: MiniPear Date: Sun, 25 Jun 2023 10:51:56 +0800 Subject: [PATCH] fix(inset): relative position for text in polar (#5223) --- ...on2015IntervalDonutTextAnnotationInset.png | Bin 0 -> 33668 bytes __tests__/plots/static/index.ts | 1 + ...15-interval-donut-text-annotation-inset.ts | 61 ++++++++++++++++++ src/mark/utils.ts | 6 +- 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 __tests__/integration/snapshots/static/population2015IntervalDonutTextAnnotationInset.png create mode 100644 __tests__/plots/static/population2015-interval-donut-text-annotation-inset.ts diff --git a/__tests__/integration/snapshots/static/population2015IntervalDonutTextAnnotationInset.png b/__tests__/integration/snapshots/static/population2015IntervalDonutTextAnnotationInset.png new file mode 100644 index 0000000000000000000000000000000000000000..11d16a44bdc3b335b3d19d59f9a6bebb0ec307f7 GIT binary patch literal 33668 zcmeEt^;_FPvu|(<6nBT>1ef9k3dLPo+}*XfLvh+7#a)YQad&qM+Tz8ETkf~-x##`| z_lNU52SV~BWM*f_cJ{NgpH-D*G0{oUK_C#O+h!P+~xzFYr_^;Kn^QD{S zMWJ&Y#b&Km&&nrbVrR#L_Wgr0_D(1LlY@#wUqb_;xb+e63XM4+}) z*PqURSJp&(m%J6>O2dR`5P zj$gt=kP|W(Dp5R!Zf`IK(c}=^ga^TRavv_-#t55Za-8IMPQz&QDM4#0kQkX=(x43krm0 zqoMHY|M>1oaJ=6kjJ7SQ1zNkvTgJwz^5r4N%4&1}>#4D%3L&h~WHJ7!+r4AVLHOY7 zRHZ^syNcfFhCNff3{qUCiWDUx%v_Vb7RhCWZ^Fw;>aLtt!Vq1unsM{L*>kAE21YjV z^ai>0`RkIN47k=(*UHnPV<1b=eoW0@;oQ!*ZR0dR!EQ$35oe&&TIi^y3gv&>0&)GT zFg(FwvXrC&3i4t3Jn&*T9(QBrSW5L5;hiAq=F#T^Pd^=MT2PQG1yg#*LxQ6eDv_r~ z=!Zyg8z+kL9naIAR?Ym6QakHK8FNET#U`CyL_A;nTKKtQ2ZC|EsPS+RsMR!~V82$( zyj9i3l`tFuw%n>+!%EHe{8Dg`p$0pKzsAyxfCmLiz#~@rXFW)$FC{=p9;Xs3!i`IQKT_+L_Rq-RL5a4{+{uCSFO$kz+w9x6> zs#4RZqS|riQj`ftP_z`dOPk|)>p9O*s4I!-0JIGRy%hE?FEjQ-q2DR~lDPOKL(n!d9e}?)xTig;0 zBw~l78dXZuP-~*tj)&N$t*s8vK%|b>g(Q*?&h(_ozxO zQ?!AIXE)RtDbnk6NC;da69^yaJ)_>RMS2Z+@IcB*^x`Z5+}fc8=vSNilB&b8<=mkw zO=Nw-W&%c=XTA+_odR97Naq5sT%jG7>k1)v+2TaOG8hztNul~n`Eg@pTAx=4TQPhK z)mT7Y+s^x`qxrnQ&1vW9j($Vj8x`X|zx>r(cO`5jz#d9g_D4#NR zWiw-^H8eQ|rr|A#p?&_^NpsLgRsSazXxaai*E35vv@Fkr9O@+wNr*)@uSHOE2Lj$B zS~qKt-CU0|w#}(*qJ(^28&Nt4xz`;U5rox@kZP-hQzOI)Rm}S8W!wDR6%>YYJR~x*a_6YK18ZBsj$hOGTLi53&@Ju5@>wX8)T5xoq&d4)P zH#b}yZ2Fj5V!Wb!1feKX43$BBFJ6MBN?(8aMV^%Uk5hgb*5yw^?n6TS1m)xR){rB( zbo4k9e$@rI92Gh>O`>4Zhe8KCEUP>=!_CF1qm=Ma#sm|XEaSy?Jk8aGX(j>g|jXR?hB zC*uC-zLQx!Bci?+8winV2?L^~iA=2krzW|3?>HmKT3GoVUKIX7I5Hfogc7%DImX=n z^`{EiO(bg!UIzt>hN$e-SgYHTl?u8LUzMERi;l;Ojh;ShmwMEhCcp_Cl7eFNC#A*K z&e`vvEU67#Iy&%fY?*oYU2moA&E~*JD)P7cpY!zyv8aSYI;i}kUSWv^nLXb0segJy zw~8Ln&#+1lN1esXC8YV5%joR=9fCF)C#$lvVYy3R#MxYZZ+NepnN+2rVnIv$*0EW? zo|4GJq~6`vvu6a)oHrBi5Ty06Gb_;5f?n?sMxaz2a4h5=XKf}YeK}7f!--x?Dnp19 z4wjl=_HbNsY}FpnsD4J?40u5yZVjk3OHjbK1hSAPu`jwuSWTvM(n9CT@EBeXeed=1VkOBCVX30r+Z> zQ@30aLv30W(U_^ndu7l}47PzEWC!XidXpKtgABX=_G9UM-ma@>Dc~M{HaYslHL4JG zFgdJL3NgsOHM};DTfNNr6l?r7dkdT{Mrj!qKGiX{^9ly1H2J%CPVD-XI)f#U?S#O) zgcjI58fwl|GXpv)vP3jk$&GW`=v|pE%sbLXkR%;}4+Mt|a$ndKTE^fMDc==+&r4P} zw#?nfebJv$y_+E(Ncl6_V&yls2N;3cql2sR=4b z5BnA%k|^7n5JVtF!V64fuGw^4rTqfO4<`LP?{7LqZIccY(N&<*No{Kz@b zh69LNQA)lg8ibTY6j%Reih|xdX(#GYetpe4M?&dGre~@Ij}aBqS}5URm`f*}d4+zX zVOJi<@SJ|*dFUlU2vgC=2S(ph4I=h=#{koI1y{o^iQdm20T#L>2ZT=c8}04;%6c%? z=-B4ZWY^QsdVE+_2GP`c$&tIQr!oeqnCGo6$f8f5I9J2kGHT1l?h2>^U+wBZMj+wC z8kg0S(v;YsL0>XK!H;k4vpj6dooDde;Ag}J6u!4S;c$yD!9_zpHm}6#qy9QcKjHRE zwV%IOFzSe!YQGmQ^*nzh$8|tPpbj^rwcO1cA&5;q!ZzLQPKoVBs& zG1ROTB-x@W?G=9Gs7`VEwuv-u0v8^Fl_?azAMjxIOIzDKRcgNJw3Sr-*OjHBh@hd2 z?N_TiEK8*{gC%w5a;i! zQ53m88oOJ!tCnnR^?IiB5a?`FKj`O0i5wgwK3&-;LpV&s)P?f6=CMF{hbb0#!7!Oa z!2i-dhJIkG6aVzS>2^HwZt}0Vw8ml^I&o_joudLY9EN?}g z-Q>u)GbjczG0tsX8w>EApAt5e=WCiBzy0Q+>BT-+u!kAsBBJ@@jaZ1=DTq zoY&IbJ#YlZd%O9LX+#N?`BnwYC*wwh_U&5W^StOgBlAG(S-m|-bvL3c$4j8YlAmvc z>T}DIU6~+}uyv!ZSpBSCw<#E^s6tGg0!=F`V2mGlsWCwiec_O0RrEcPf>SGgZ2io6Ld8pkj6%Y#rNBY>@B2iR$cZc6 z3sLm-y>h)q6lhZGwjLH!?oTxrf{$cX@q!j90!8zz2EkXA<0B9{eD|?_oq%TrzoTa_ znifbRe3VlKK2x-FtyN8Q)-#{V(j#?h4@y2rE zA5pBWf!s-{hjwcur^89>eOkTbn#`U3e3-x~=x+cxA2^6!hsI)iS{EsTFjJc<)P~G+ zm`r;AYg4-4umD>Dxq3Xw-y;mInmg?u7soLG0Pb)>L{am0gya@M%r&N^^ z7`g>UQf`UgctiG*(@rIl@IlYID8rW1u8k4gBHO)E=?>cp99?0dLkU0un)CXn0j&DV!0OQr;pVEMa4D)L%4*e1VB3{Hso;I&RRz`Yf>K zKWuljsvV%htqbV(^mDzJ>celq85F)68Ns|Lu#>stRAg>nPb>uuSeS(oqkOoSS zDW@w@A`3^b^w%RO6YliKgW%M2auKh1j8praTR#~%_!kwj#ASFDFyu!Wp$$=@#O+L^ zF?1``SmrDhm58A(mK*pJaw7O}Z7oldq(x!zNGroTW-01>V3Hyw%-zAY=(8^OvTdK_ z2q2fOtbfAdJb!6u4|(wniHJepF|E_AFefL`ayQnUaMM<|v;;Y|pYtfAeB~epjc8QZ zy^IdK&kS!?x}ssAZZqW;x2i%XJJ-!3h9)w!1b*$;heam+vbIybf=up`L`Yo1Ay9vk z(a`aFw8Vvyyf_k%HyMB5_B}M;$)b3xfsc}YesfzG&fy!W%=1;!=6i;CNMTDi_WKQt zO|4jXIUL9-RT=Ht@9kH*&{)-|HfKqGg3S0eiAWXX8BxRLk_(D4uRZ7V{TF1_01FZ$ zp$Ag1a61J7lkT0Tyo27KzdG+ABv}H*_Tv$#CQjX9iz`DhHXF!jz}C|5cPUFWLG~jV zZ&OtsS9(wOird|do_Odabmdp@xj_$;Y8VIz7+R_wvA{LHOg@u{lW&RovquLEDJ_n^ ztyrqRg;T0ocHhx|%(Mi5NioUg%ak$lfCF(h@WwfHJkn~GwDGT~?O*)))}#bl=F!FQ z_`2_j3U~FITo6}zbs3`NlIL-5QEdy++=iaX{{Gb6DbKnsR9?H*Xo{SfNAF|TOf@7R z=7ppZcy7l8@fw`F;R4Mz{W++PJheBfevL^MO;MGq23cG=r0eT5N|^3w<7hQ#{Pu1N zy(BO+|9g}an3!pCQ9S0;?e*Wgo!TYp7Q?Si%=$VI^w`=B6)&O(avvMpstWG?V4StdcG6AV^DDJs1#L`nAKAVbYWryur5k5s~sl$7nxKxG?u}U0&GtAo@fLsqxWCYu?0CO1L=5Zfs`>_@&eI~=Yd8L!< zjDA{$tiHWMkg2eIFu!eUc!QwXSHI4UKUyFEGp3vd(%u{hbj17>Z*RtTIcm=Z?>GcS#Fs1Vc!zG^D?n_{Xqf%V#B?o`Q z6h_qOx&OA3^!06+vx#>DmMWTT6Bd#i^_W}W>kll~xl5(gj*TK+XWIkEcbB!BJ^@|x z27ra73I-S=&}SU4+6}lS-uCvzy$ZmA=M=i)H}>XrWfX)zK$F!{D|fw8iTK?K|FB>| zEOy$yA%2ZR`R1|H=~iWX2=xA#rSM}KlSANJZn&avNEHN6+vWOoJb%PZTLm=KL+n7J zYFSLQ8#^fN%6jA{?{ezkCoW(fx8D;25=57#?q3A)mBB#`G7u9Jl|Veh%9ZH4o>(N| zE!lwqca(et#?XGVjUNd3(V^JjDr7@>&L@x6USkgAtnm0SaS*oiMKWD=ZgcyKiz~iE zPbat9kPZ6zT|7Diy3zqQC%f3YRg+SPIt%udg*G#X%5e+EM8PWppK}y#gi7tvi}g*c z464JvMA26Ze@^zmef$?E!d()*p$3EV2HqYe8Hho$45Pz?I^tO=>I~6bWY^e=X2>77 zYBJS0EU39!?92YoE(&gejf9y&u(X8XeU6Y9Vq3LQq5(1zA_6sy z&GKF7$fW_%A_kly;m4p#00uq8ffgq=Y&Gz%SlGW`(nrnlC1UBlHmAtVAEr=3W0gh4 zPZzmu#@l0f5I`1@GF_KZ(Dl@5*4xdNoCdIvnm_kGfsxQuUk*J7YXW>{C1y>JnR{{k#wA^ zrRQ;8#cQd`JN=2vO>E#ytW&ddrF5*&+@^JEp?KqOCd`e7asCN^IwoRT(izcN7^pH} zdkEw&j!en>7x#F;=>W3a;M5Eb|HfQ*)$GkjgnmAhuW#_Ih%gKBp6GuP{0xgrevQzJ zx_8E2jLPeu*%VF2KfO2Unpb%PuQ_0QOsfUw{!Zfgu8R*zH9Uw#zeQ342ZE1^3K|`v z@+E-tyA6C%C@n@>_<;G%r=U^DV!xG>REhX{aR}x}t?fj+Xx(egi&MRrqz|F{P$k*e z=dx!@mm>qi6$rc=2=CsB7mL*jp?Gl=bicqOpk_OEL~)VMM-Jr#PVKE z{{+JCVlxs{E(~NqB7QrjrQYN^EF}y>@8J?Q{p#}0N(1%A1($oUaV_O5L^W+*V`P@jr$_RUIBA|f~lhdwN3h+%YE^k{@X z#mNNN0XecxYbj4SM6d)&j`!5Ph9}D8TL|A_awdTFmgS-HX0E~3;o;L+b1{(03ncL1 z<-1i1T#!_!=+&m^xdhe&*OtOC3RA|0Cm__~%`FdS-;vA-g}XqTGg{wRL@;|_#bfJk zsG%F&A%Oat&aY57ww+*G9|X~L!royb7$Z^;|Hw<@7wwo*AC)OW8eg1WU>0jFu^%6l zmqHN{qFYi}X$k$E5_n5BN50ICl-@>q#p~sv`KsHtI@5T+Qwb1c#0q$DHu^s8{qY%- zo?7?-0O&Kqd~rJqHr8SZ_}VhQGk9OhMmSx2XGj{hb`en5m?)5Z3IN{ zRb{=k_<||u6Y5FNzhaV1Nrj3TBREC55J9T;C_le{x-$4a*d5ON4Pq2|%<_b}`Tu8pQ&23nl*h$E|ER&^bEATW{s|kei^+(@y0i9v zkF``eDB1;OECshEs}haCy5VAJe-+(cBi!uB8Qu>)+CIMA*rg_Hpa)m%=?bniC2oUt z?x0IB{6%3&wMA@c(P!K?kg|_8^X2+WC39)QZ%)nc$p+Dki28oN4_NQKRQ$*qbtOID z%+mnQaS3c(4%1*XyE1bJ6&4g&poN0Q2q+6)eeLW#!maH%;Ipi(8L;jxbiow(wfU`& zEaVw^PQvy|9S&ifKh=BASH_6%&&hqN6`k%ybY54(jR$7e@?uWRkUy}x)hS$P)@k*n zCUk^Qi9KlnJDy0ylP^*MB<#Fg8*}Zq0zTGEW~N1Xrk!Q9lr_wgxg?{yEiL&-wk*0@ z`lYH{>%YMoMDX#iw;J4++2dr99&%HZcCSJoogaGqqZY`B1${}(s0_Qi?^#vX+X8d# zUYjzxTut!+b>o{aZ;cw;dN(nJtsvVktW?`~!<4}AD4ZY}iP@TqGJd^IdmVnqzG-sB zWDk0?9yEcsbYU^-y@Qep5^5nlrm?R*hW@)3AU#f4_v5}>s9AZ95~i{OhP}qI*6*`o5mQY@vGM}ItGab(bb*KJ0AK+ zB+_rbCmEpM$GY(vD5GxGer5qHZ9LSq?3r@g<*V=S$F<3kU}-Yya*Sw>Ba2mycp&~L zj^C5Vt(1rN)UdkyTAHN11)=NPzEf|J%DID!Rv zaMMTuEX1}bZ76BVpL8hO8@100VzRSLVtyjzbHr1pfYD(|i&dl|%LTuE76DWyf_~e? z8ySMsZTOcs2*yMTM_5=`OXjIA8MS^GZdw$4dNnpzLSdkXul#%It|cK9I=LSgYBl+% zZT~LwACb#yx!iZk>32Heu3VyHWs5{SDhDD$P4$ZZl$Ly%_R;!vJVPeuzf;ic(&+?N z7&+zx~cGk^y(Z;vWrsHq3dQ1(_puyXtpKMl}LI#QiAqFGHmSR2U zM5e6Y*$jPuxjaP%UhaE8&n4ug%a1{rHIEMQWAmfTf&2t*I{#fzEotwv^d=ld7SuNH zt%BG0>0YCYOpb(qkQaq06_ehKJgY?`aIio8_oNb%Kn6>SwrS}+uloQOxx0qKl8ZYG zj(oF?>T4=wYpb^4Am=Rp#Ur4s=xY>_zB#EY{}j@|L9Z5h`z1|$>}fJ!`5?F&i~#`Y zk`09o7BNFSf35KP(1kLS@n9lF%a*wOC|OajZ6KFwESCKv5kKsLk7UK@xpmTy6>Io2 zM8*Fc>tT-=@l12XB55-1Jzr>}pG*p)N@wujBDHV3%s{>$5=2@L$4XelPHj2%Vs+$= zBdiK?aQk(r4b+S4B{MCS3IkX6xEf2drJPUiCVwa4_`%4gcJ4XE<5o=NJl_PXO%x?5 z2qf8ZJwc6^8M1|50Qhkj1sr5xNxjx9t#UW{O#VJ&*jl1~pyXGjybWH;Ayh&%lnQEV zYmK_;YsrT?d3`ksku6U)rTqTwa|=o5txDIQ%%4#Pb3kqUmU4HYDW)_!CX$}d??w_R zBB>qn7JrR~>0uU6G|9@c1H$Qt^dv0u@$rV8`Tu?MbUDId{5mA#U5d|NrheP^y5K;v z``(ewo*JbUi$vgnwQV?Wo0OYI+<~s@XWDq9s>R$v26*9}JkIi@rN|ILMVn7`v1%D9 zIG}-ssC#83>+ZA}hGq!6GP6ExJ^3PJS~eg0Mf>gg(TUo3ldoku=gWs)7J!(hpcCBt zusCQDP~wQ>F+n^DGHR3vl)IG&6N}R7w(Lz$k}4;>&!4yeyle~-D$-kFm+I}@06$}KHb?i9aHlui z=C2JpD0GF;{&=G+#z&(s`PfErioxWF>L9cu0tT?~ciV(FVK>ROhCHHyyX{lW-#@J}^192#k%S*e{$Pe7^-8 z%3+6quK!C!T*ouC_QI@w@UIe6Jn3QaO!*OQ1p=!DLTYu9S{Z4bLVnawLGB3H-AS{H z>8)W4%?BKQfz^bWMK(=$7|Ncq_dzcge)(A4SS~*&C}J6*&*Q-MDxwdWo88=lC@zXW zj-Nfa;;+j%gr1fnOs*=$WNTq4r<u?@w#?@SXXd5>2<2c30@Kh0MaondEZtaCxGxM$N@852W|Et>!IxAs zx}3O@Rw^}w&>R)|hy>?|Ut6@l91a;*^xUiR3#=s6u6nFkxHmGYbdY>`2XbdLl#{g1 zUzSjb7On|e;A}6L4qG_dD4uC7j=r6;a(3Vv7f2|XYsoSf!c2)V-OU#ug}EQ z+)wwF)glQUI#a`t(55`$>NEpIobH!kYlo-h*cm?zw1IaOW1hW}$sX;2T%jzF)avj5 z`CEsRXw2MK;UbYvjNtGr1aKh5)m@~Mlt)XwkbUd1EeV{k@A3P{r*@;RD|+^CJ6N^` z(}*iBNR!HpE<5t1gaSUQ!)fX9so78PhWDY2TTzo8lm@75rw4u3_aBESzXs_Sg!B=q z{1Yh(j#FB5V4ySjz!8wB(9w+6DxYx2BbZ&G2Ze|y?c+hb1`$)M^65&;Xlmk>(-i|CE~%V{@IN$k2cI!S-KSz(w@{zsHR@+Ubnq z^LJd*?L=B2tjPqvyF!3)mNS(*V$eBnQC`LyaJAsHHU0}Sb+)Fh`OWK!`w6LAiYT6D zX2*kt&ASNgv*&xMqT z`BMUGfu~LUXB9VgVMI4Fe_Ws95y zN0T8jOa5QGW z$IbKcx7v2J0X07xQUjZELC@EiF@agqURnu^=U=Nu(wICVmb@Zve(ye&rP=)Eh7R1 z_MJ$&jG`y=e6ePI1dv=tA)$*stQw#{6k7*5iWN!)8P>cD4%HYxnu%YcR@DS{?uJwX zDOf+po~V~9y)qI+-`=OSTO~Big14l$%TH_oK)6rQAO;L}V8`Mcqg0@zuyyzQTZ34r zG&G-FWt)oX6DgmW-9$dKuFn_-aZUyh@X%nL(x4UL?$g7!++TQ-a5J1p9ai9FIZD** zYDajIhzP%ac-q>o&M&&0&*b#IgHMRWAO$>TgpuvaN)d<#3UoPO*(Gb-gGy!XqLb&y z7vSdpjriQ!bM1#VC4TpM8C_gAd|`QA>ni1wpHU*<^{9_8NIIj=oJj&|mDPc8t_E8L zc5-YwBrj1<&Uw5cL|9^IMC)o)GQfeYk-0(|wFwA}s^kIen!W+jhO_9OurwJrX|{O% zz-Z^C8XB*oDdWz!7JSoy;q=E(!jq&y>9HzXCNnM%Ary|2deAq0`qPOXQ|xcOX?>Ua z=FRo!V1;`9Lgjh1>a!PoG16t4Ht;Gkw5i7HsNsbBzziG&*K@e(e5jByeAq2H&|PLH z$JvVK5y6URD0oG0$@6ZdXqsQdds|Si7ZDM`7<5(4j*n~qjLRQ!v~_ZgNKO@>K$joa zs7WF2eK2PK3Qsb8m0M=N8n7&o4N--C-#ifU$J3oZ+=GuODamA|GjxnIh3l#p zdjntre{7^-43zAC?kO-3s00eI0!eHo1t#~35T?a?tJwpn_@u+Er=)@%$+JKbhYdmi)>h725_J z^o6N+;C(j5OyAB!bTE(ojUvAFnbLX!k3Sx;y!+~o5^?ef#R5%b;K+L8I!=&0_ctCB z>v&+Ac%;Q4&5**MrwL43`ZVV|JyZFX^cJa-UZt-!(kMw}>VP*>V zJb@I2xu?pIT1{)=Dj|)GEP*D2!Oj$d7yVX8fWXiB_3Jh;?P^5oDGXc^B7882U(NSr zDA90G*N!m4_w3rAh5TffDHk8mcI@r>oHB8{8}md8hcu1W(ysRfbxFvxd4G#fviuQjAFJAE?ny6~|m<&X5M*f}b*Y0)qDlo#iie=d(EWQo;`>P^iqQw$T8~)f?NO4;sHGg zF;RL-D@E^jC5+2TP_$X%-`e5OO^RSAnjJ=#yA3zk zGSvr~$vPv}NO|HnFFviP>VvH)PFPx)`uTX%kqPaD*lvpc4t%bVb9|yca&6RwcRCef zYXdWn9)hdl;(I$Sh^kNBJ)>_85drK>1?WWJ_8vG+{M>tEWZfLmlid+B>08QHW4_BL+~cEzURqzfCOY8_8@gA@ZvbI!N!LB;S= zZ=A$z4x?jgGvl(5h{DqzMuw@Ez>aIRc5;H5CXCUDdJE@+r;+BV+hi#4e+O{)1|zV~ zwjhSpCrn16gf&Scjsu`&IJ!3&={wIcDqSAtoW)#V$39nszTfYf{Ar@U;PtiDCPIL{ zmB#O@BZ#4|V5Ery3EjlcZlw#yh&^3m4x>~98G7J!x?6V=R+j1@nOdhH; z2IV2PgLNgpIZ3S{t?XL`d^xKJMrZb=$e!OMD@FF75rT_MITGimogj3(lL!V)WuNv( zwN_qB!^?vFwcjrf4^r491Rf6?J7v;^Ha{4%;C#{IlK#b~gW67*Pq(8z`$nIFEL0ST z@TS)UQ4B8liASUqTcp-irBL>nmZ8Wk$Qaq7`A_`YuUppn5nx>W02q=24Eeuc zSk}zq6VZJjYD0&}qaihwnbnpTSiIY1cDWQHi^Ih^zlldNPj$}F^SWU0)rwvF%hZ@+ zp1R=jl@-9LrmukmGrD&msgUD^&?CW`WNWbeaQEhqgoioL z1Ac>b)X+8`{VPUs5)ymQnc=OGWBo^2=?Wl`KT<>%ig+p{nD|&@|DF;1_QfN%*)pkt zOx+eOJXMlXmrvMo90q5doSNKHsMp{ zL!r2t6alnrR*|4vVz8%*k_bWW`fJi#jbwvWQldSxnq^pG)Z)x6FOYwrH_w8m9zN+O95=IJda$h$V4p78~N z(haq*25))>Zp7%T%v}XaydxVezyf=@F44^n1tLVt0-5kPBNDB`C4mBVd|-Hg5V_8P zzSe-e0(J4)d(tczR58`#2XBY~i=1>%ZQ|svZ5~x$Oa=yp7r(6xt596Ju*DCd(9ID@ zz5*BMK>{^b9IpeXJI)Um*#HC|<3WMp0Vma*$Sd?0?f!&K78Z4|0lV95_n%1NjgKKzh-QveV^{PJ{k&oZ0_yJpIAqtDw?M+holOgK{^LvB zvdPMMH-doKfpP3<nxrR#TrqJYi_GD2l@QgmHGE(=o`6XUt@j~xs{KjZR`{Om z$M`5DkJSY;_mwCg@5Na3l`N1*qT+ICgEtC&|X#dT#g7lhKJ|}Y< z;)AYH7TmNQIEZo=8T%d`jp*wql%d`c6YTj1!aA#63*7&wh*?vB81D?|x5 zhpWX;v{67Gyr`yP?X!ZazV5U|s)V$`mc6I0C)yQP6~YxELT+TV9CA0cZaJ&2?RlA! z^dG$_t6FPw08;?TUt6rab|)}=4bZ##OJeIA|FxpMoc_5Ub%Kj3QQHGLc#SOaiU1cJ z^w!xV=@=F@ENoRTRi{Ax!x53@j1%M|tpjDx(NNgnp$I;<0B#6fPKJ+DvxT3r*8ToS zU@d|>$pffiWQYRw6qIuM5RE>RY=DI0fv2G6!aU%~S;y==GsiXtDX;@r(N7(2O0=~0 zsvJuH>iGNp?aFKHAY8p3?+CbQx_d#OObY_8@;z}TAAU7}hdZzV0L8rjBBSV@{Se=+ z2y7aWaXj+uK2z$3P;pv}HM0PABK?q&d zz+WLELG1mRoxZEC@pZ(o%byN#0lgK6I{2dj3r&atf=7Kwc}kw+#`3amE*Y7$a0ZRK<+;C^Ot!+Y>D* zwFW>)QAG{ktl?|iGfOuCu0wm2Ya#l&Eo@jJU1{ZY7^O~K6LZg@(V=!akVn_9BCX)O z?4~@}DMOPKsSQqoRY_*ce1G%~%r7MlXJ zdEBpJ6HHIGrP92wXbx)Ah8A!<7I9@kMGCs)aQ6Si1Juh+5!^a5Q$$_=k-<_qr*Hhw zP4H&UXj>!jl1+w6gsJVvblcO0+PG1>>zacMZTz#*b4X!yet{{yiBvE;1n$f05xyV? zGe88%RD-t-TIuM-J$(hW>Vrs=?ihP?>C-@_PM-a{_hDsHL-+G z)nyMdS^n!4;)(|~#lh7m2?^xNYwbRW+n65GXFm|Z{C1t34cPRvduwxEa5ZF=tM2O@ z(!F6Q;(b;xms5T}z6?`g#$|jr=O$P9H#%sUA(Spio$n(#9GHz}nukAx5x8pE-3B}S zeI_DfslK#O3#} zi{?I|BP`^2=h9c!1-6vkdOTIFpVM=Z(-BrNq>`sqQT-?youBJ9BzPlojVSYqs^$1u zDMu)Dm*dH2;*ZL6LLd@q@IQMjs|0?&$4GU8A=9W5Q}kv}iN=o%QAS`Ni^G(kj|lYr z9z*$>18=%sI1<_H{o+qBV3*a~Ld{(z;1g&ZO7oD15gb_-G^;`8Q__!A#?!>Rx?B5YMrHm|*GY`bFR;)(1!|p=8l2Bl%I$sMKJ#Pfo zdh_X@7!94JS6)>y&0UWOnRoZqXCyDDylxNV0oQ>~ti0NzdJjJ_oI2WE?)3J#3?Bso zn~NSxPG`(P-{jrw|HbvLLIy8?NXn=?F{qDLVEL7n(VE~~BgHqXy~Xu_hXsLETY`F5 z2jptNo7QG=JkOqm+3Lj(`8F#~#-zA@v)-MlpJf(EiU3zH>%e?(e!gN^DX| z)WT?_ANodXLIrg-Q76Wm6R>Is+ji(#bru9UNE#BFr6Ll&bH{|Q_4bn|<$mDpBVUOr zsQXIR%4M(F$z;ij3aS|=5Z}fc3pPE`ct!nTxIn9Hd)8N$tL^P{+vN+_)t~hB`R8W4 zrz8|LVhVUrrtfYR-!Ul896mDV@nHhSp&aX3SjDu%fc;Z5(&^=2M*7;z7o`3MA`9y4 ze_z!Vy7*(Wvvzl0q56mKjq}+rVlkNb({G11f0P@zHnB(I4cLo{%Ta3ekNfZOxzmjQ z-3zeWb;sxFw>PKyZNguF?fRG5-F%LS*BWwyXigxx6YS5e^Il`~q93eRsArC&C<~A2 zPbLU7p4HXB0J7ym5YAcFUoN^yLr)0)BIoAdOknIQ7_`9f0{^?N1x&Bmu>4TKpgq?9 zr)#R?WitJ2#td2P?-a}rs?8yZDsmU8Qs6bTIym1L{!U-CwdvKi4|fqQ<;$*9B^1hv zh~>9C)-BW)kU>C+Lii5rZd-#P+zzxh_%zG#ZaX7Lk#GqV5e@y=<&_$sz?mr?h@)-x z=k3{Uf=HCPSl2}sMsSCbk1LeJK=^*9_=pU4Wx{my0EOb+vwit_lD@V?R#terk7_7p zG26|&<#|D}&VZB&pE9ynEv}iqu-e*eccJ2`>DW+a>b#lly8-L&6g|G#%Mf)l(YPjH z96WvSpc`PAZWvw3MWOeI*zyhhmqi9{L1ln1>!&A=wl*_zf6ss!7=8S3>syE5f4mXE zDr!lsrYkJ3tEa!J>3@sv9YXhV#g$4IgzxHytTB8MLQa_c6N#7AP8JlNzutu4U7#jO z_kDSOxBrXX5^8$fUa=2a)lzYUwWvMe-hUqW1eDW$g707#cd1ufwhn&nF4z+ z%A_V7tE@9TQ1^`RC3Z;=^T|Kq`03SMONiVyM6(S36E%r%Sg1zumCCGN;wZ$==eY ze)!v=6Q9}LTNI}Pt@+3h-*tZ3YD6YfNSN|* zK7B2`-1zouU=W>nz;@G`!B7t?>}Ye_4F)yJ<>Yo>Tl%;_Y6xo%OgLKaO@9P(Kz`uV zq|!@Sd(t={z;mAwjF2w!rht>*?=OG-O8*(`1tqP^`RAV@K0Cga_<9D-ueab-Mz!Hz zOe~-miiS{Nfz3Ezdn=~?DeLRt4}tTSR{>3xISZ!9l#emu(DV5?XpS#=iIKmVl1lf( zEVtpE5ljWV(M2S>+o#G)@%xZO|BWkrCFbf7`NQH;la`rqG+u$KCPBRaBho0qE++7P z>0s^uwD;9tQFc+I!_eK`4I(fo%}95Lba$7el0&zk2uO!?cf-I?iXtW5h|&y_lK1gl z-}finU+%iIW-Zn%p68r>_C7n$K6}52w_|?m(3!CK{I|7mj%jGp#e{I12}kH{{Uhod z&e1{_ag588wU>|bOXA6TaNWfOFb4b*0&0s#(XPun2D@tEmw@#A=nMXiODS2~c_B^& z-eE)kIIa(PKAiL$Kd;{tB`8bDhtE!tUIo_xD)IRGoFB9sFFL{?9);`K-~P+BZrkbx z(MoF*MFe^GS>wcClL8lDqn*fYk$E-Ahwl$bD3hGx--|zdiHNw6lALz%zWbyBO*E*> z`hv#5vA4zmy^y*$%)zmj!@S(m3%glqTW-grUr5w?oRM0Y`~GHg-~<{ODBinwB85!m zXO@CC?46vf3iRbQjj^tvvCQw2L0SPT#Jy<|Q?W{v&;u*lEesnFrCk1!r&NNrXJO9W zQnyrFdt__(T2hMc-mmqfN}OnpZ|}B6&kyH?b8U{J0)>;mKPL7Mx<1~lmq5E8IH;`r zEv(LjVC-~|G*QJBl}q#JIRy-d4F z+(+KH$Nt`1yo`gM?`V%bC)j!2p1V1uU=%P@mV)lbGWpLq1`RtOj&zJ)WzjEgujb`d z)&6a0?bg5b4yZP3ZPk-_-t>a!bCWLjIF2CumuKAZY*?vGBr9R`h)4U9n=WItIAs3mFDZxazaPmltf&G{gI;z`Wb5W z;^qm?%<~Fz9wZ%RwzKp;4GI0C-=kzp2z`Z(I^ViAg9c_HB044;Vug(_EGVi9kH*ld z&2wW-kMJe`bRg?Pzng+O(`YU3x0`EYVQ9X;u(Fxz%V~2_Pk8%>*#2*H(0#{pO!rM# zC><;P<%r0qGSOE;DXgRcp{QlZQ##BGUFz0plZAL7cgp@5#HMV$R3{2*A)Y*{Mq4kp zT6YvPnxz*@0Ye7zNkpvucDUy&VHRhU*c`uqh2|Bz&sQFPPbMNZOd_N^pSC;3>>X>s zBVU_(TBULSm&WWzlS6PuYN01Tf(ATUb_Sv*z(#tX2}>I?h5Srs!}!bani= z1Cmu04?E7{x$!{Llhp;jHb$oR%LH$|t8qG`kxtJ+$5g;RFy6FunbNK!0m>S5@oaQ} z^Ep9S%FNcvDCT;=0E<+qi(gMf0;EXN2&XN)ltA|_tH@pERtmZz1Pnu|CR&LQ`~|V( z+FQ-k+qybu|K7F#KggeIqM#b#`s=H~{n5?*TpJSiz}To`)Zs<}wGVT3jvQr7=oSW(v+`FJAb+hjrnT$;X;YTiIfTyP~p(- zh+J?A$>TamMk|43W^2}RkpMls&0(*SG0yo zLW!vr?6kz74#aD9G6DXOqwXw89|8~(_K5T()~XL{p`G&g?WRLHf3FJ`0%&dvT4C0z ztu0Sn_u@DLAa>sRW|f(On>AgKOlm#zA;|$*YWgFAJ)MGL{-I>p6v3HNFxdRKGY$&J zl)BKN3w#VRee*agz6y+}uR-J0{(N6n#2VxlUaE_?s>0-f#g?pbSzi*fr^1ajkP$9F z8w~#EVOM1!yQ8$NfakL6m<#?0_c04aSEA&3TUB-{`MmpXwmdR8%v15S7Ou{jc66Xn z2I%rDqa7Rv3kl58rZn1JxvK@F`@HMRjEu%WKNA1em_YI9iL?RJ37R^J1TS}7T~)Sj zacljmte|`F^ov#HfPlfq8d?`WEBz|SmH^i09c=6A&5T9xh@%4UUI2Cx9JByZXk$7x z*IGj8e(-Fu7V^FmObI@csHk1*xvV;Yn+Kj--ZM=9JvQxg+@Ce3yPYGnHgpwPeRxsu z_%vx@>4tf<>2z>Cj1=%4I-IeLv0yN{fbB-9hmfIWY7qR)@&N;|Oyr*C4c$Jh_76ON zyrR_R*GIxnLdXm)#ZyYFN$2|?e=tI$4a1ORl7IT|f_`G$(!Svxvs_(4IqWXB!_89M zkZ?dHTZ~!==xu)y5I1P`aK{e45(x`?akna3EPT84`tFZZ2yuSE0oGkweJG}XEdi^; zn(wV)*!AqiqvS(m!N&fSAxdc>HOBN`52qNEQnE75-k8k3zxSr0b&kMY1<$^SHdmg-Y zUvNi60R1cK!h?RdCG}ufGx62h?+w9Oy`}s*tlQ(JFQo{j=ZgOkE#3^{_v6lMy1zF8 zD4=G?3CsR(JHOwefVLL#fOS6v0p9wo8u{J!<3rfM6GKSY!!+;3f*)<4qfn{UJ-Y2=gBtXPma`7nwE@vKIT6LewrvEU{otqFPw$25a$>qq^g#p(QEGs zh-oHgw21JIf(h-Nd0xjODdXS{D?h4{DdV-lRp=qA^3S<4&#S&$9lHBD!c8%P+?yr- znpZENH}#U}AZ6cQL~5mlW`xmu)Lf&+x1D|m83nkYtB^kk(Q7tT3o?9hp8pUO@ee`3 zMjEC;#I8RRAoND9Sj|SQNUoijuzd8H-<{N;6^%LR$3$GM`;4A^ySOrcY)&Ond>YfW z4R4(r%$sD3VT2}~+H!hbe*BFb93oRq97ong_g~Qtk8{Et7o%fdT!(t!+5ga`!81 z*H(gRTN>has(}hhDVs2S)4`q}gQeB;2+Pp#RBNZ4VO}93r-TpfkG88P_Jm7LG%cME z-#yu15GX;q1i|$-kxvcL-{pwMW@g)qjvp`z)61bw;-S{L+dkYW%o?c0InJj9NZij@ zZVcAH1%W~j>K}r~Q5qo61Ma_fGlU@DTvylB6gG71<0Ft1^AwQt?kZ(>e9VGW zAX>Xp4uN!AA8jdohZnmfUJLIf1kbbL&EG=9ar-5~-5#5cVfO`)%Qj4H6SKh&l=H&j zcDF%O0mwT1(COND^os{!edl*NzIc}>z-s1EDp^YsQD5+}oXcNXWk5ERF)zXVEv8$0M+-{@XIvPf9SgLeFa4#(S}1BWYN6fv>OfFP~(l(p!1I~m4^Z7Xdr}G z3MeLx___CPq}IkHW`WU_e>YehjZIW4Xz)f^{ZYto zR@%8mA@QWTsZD%Or6b3;LhYx?6?+utN$c!U80F!>;7=N(cVuVT3(@vEMfP^PyKl;3tX=u+Wm<9fOY0?~;DGmD7dN?9d ztO3Md3!`yRt%!U%$hzLsp|cg|9eDAKNmPdd#}^cM9w28n3^+zMzk4vPOLEBT6fnuu z1bvO>wK>@QdA$!>LmGe}r^Y9n-W%LRm;R?Prs6z_mq4N)7?TFoDiWAH^$4t%i$M@I zP$RoPXVEJ!pOfLoL)8-C&nGA}(vuHkUHIAmZxFY(AvGE_T`ms{=3;uWmpS1?xf)mz z)Fm?~B(ky2r2`Iu=Z;o%`#_zf;vT(k)?_B#E)QT? z>Z&mvNc}b=6=9Rj8je5OGHvCh#;l3ff^hfILdB&b%TUT6>_g3H&b!OC$? zq`o^_`AZ$^_LKM{$vyw`z|#zL7hzH*?N4~o-Cbh%>hiP_X0%GO#sDSeU)te~zxi_V z?7wNq!Yf($-BY2^p>IsUfhuNICIG1iq$ofJhWg|iJbjw&eRZgzvW35(l+6#?W#u#uvp zjM`%1y$iY_Bf(HYiQhHAw)eU6gfGYfE)pp~*Z69*=e=szJ zkFCS! zGk~8Gisf3d@fOAbDz=<5y_lg^Mb7t{i}9YF1i`I{PK z8iCS)URQ%O>L}b-3lg0j?+cgL`6Ipa>I*``l{Q2JU)Lq(jBuI?%EtV5(yV;3v;H%fKzZU z!)Ko;p+u@?;+(901F!(OWtw1)r12kCZMf|g_(&h68*EOHQ0>5APkq*%GzP4;Xr3~# zGxAWoJ`sio5OC0m41MM8$AiZ_3JOI%@~2mXR+3XYw)W>S%>tT_Z6u^BxOt{O)8$gJ zQJ}(K+aU7RtVKwjQ<|ub3sj4@HHG};kX4BY{m5^z_vhmCkF8{=R=Bk}8 z7R4<7FzMiAS$u#ndm9p@f&*WPh(r-ZE6`Bn6H$uznW8c%+OmuG=4FlH4{irbkLM;4 z-kQt)gaGeWilGd<5o3*$!+tcytWv{%;=7mIh$E*$f>YxLH{`bbhBn>yf~FfF88ud| z^^DD*k2&-eJ+)Og)ZNBTp0UKDGz=RYfb|qYtIqXSQOXS2Znj850z*Ycu+7M_ra{d=u zj%@pai-uKYg|(p~lfB3BR=LIoYWD(dY6bm$N+7bDlnSKqMY2PGCu!?`9I5TeHvXT1HE*wN-APi$VO002bjof3=6 zu3yK@0{M}W;sWE8@rob0aXLKJuY|b`r5eW(5XU!hU}tS|q>T5(JPqEajbRO1cR%g> zMH#MP!oLTv**nKiNLT>+DUqVXhH)&J{B2q}8Uo$BMCO0`4Q0Q)UhOu|qG5bq%%p;a zSwO*A#7fnDIWsuuR28xFfbx_LSU+bfAbrY`H2cTn1c7s?ye)@RckdUl#bWvPBI}BQ zncjmvRZxHPclT9#lBq5wFQLFYXBoW#_+!ib?7TeP3#a;BiztD@35e=7oAF*b$pkYY=363 zZ~_ZDb_1w$iV?#`HE8YaxTKvjfy4~=Z+Iog*1}MLEMySBmcmuE)pIi~t0tzjG!k2s z#VBTUWOqQ&Zo;iOwvM2^4uUamdlK9Pz%pH&(rAZXeUF-@=6`FR!k@x%1z0LD6bMmW zjq=lUYOtqcADec)^Fj_e1XWl&TQFQo{E&Hs4?~{UesI`v$lK29ulbiYzeF62S9}g{ zVs#*<9jS|sxF!^a-+I>Vi2(h+{lQt1Or&bTb*2}g5??3pRc>;o60LRk_KzKbjw?2( zU{K|}WH*2tU*OY+)B|CGG)5T>+{ZLI{?bdYGbL$=AKK7oV|)sc%t1Z4oeT@_Tv^ca z=6Q1D>*&$ZC0Ck+3iEqmi%}TJ^JaknpJ614rDct-OdNAF=Dc>1LR=FV!z${`crIq2 zz{`Qp$|sjs*ph@xKSFG^J8g87jDZ^OSeadi3i`ARN#OnCM#+E0}^bW(rn3@~n!vqc>RaQ6{uQ%xm8 zf^?})XksESgWm>9exB+t1ak1R)W*R+rNRq;8#Mfsto-$h`PbF}Mo^)_DG)nkrhmW> zk=OVU{X~*8g_(ChG;>QruVaCnXW;l`#Lk~cwe|b$P;NeA$LK9!p_u}Rnry7Ryo+kj z7by$!(?S@P-IoW6OcNVkuY};iZonl1uy(FG=LpArVr-VXnT~i?S{XUk@Hk9l-dapdKlyM z=0#KFye2u42MbH`SSS*zhGvok%5vfDvw!-7ZMMe%V~?D-*%A31;w69W&^lOnucxTo z3oR{jXg}fFP}c#aq`WYePP}e*<3)P|EQ?kdF<7u=M5aU^7xo84#!?)esS!dL! zDdNWi%2)R8dp=Ah-CHYch75+6N0|_opQS2`!lMYWeE50QKZ(U9{yW=KMG`ys(t>c2 zN{(qNSsVx+^l;spt8)4NFJm^kTsJ?AkkF*CUERD|ZxI77LKw87TjUWuEX98;4tG^K zoWR_OrJ#SMcPjhC?HToHs0Anc}kbgWg18=hEw5(hdiq$fye)*oXvEfBa z^?gSSK;@VeW-Oj=X$|Xq0>q9g+t8+!ps_+{JEh*ozOuFXw4V&=cEy!fG7^+Eb~5c3 zcjVX-OeNty?AXE*=SI^OOTcAlQ!HRTBbSdkl@|xu})@7@rUWsueBQGFXZ8E~Mf~#*mGUjUfBvk2S}4mL&-Ua(fUBnRn)33L+Le-?@N2jWB=7P+Yv zw@B;73p5T~5^4=Au5WSEc(S0kCx4K!u`h-e1z@sYi1;Lv4NpD1hfj2OX;7kxd$F21 zqfhIsMHd!ZG|hLfHL^>>jsUw??QTcf>SZSy;$SK9As zYMhUF``6Fu5HbQM0o=Z{WnPUu1`$6BM*p#``w8OV?DKsE&hcGVXCTG@<^s4=2Ag`a z@@qO(EPd-Q05p-_B;+00t__uQWiZM045r!P-p?*+oLF-k^a4tL8zS_6wIX~wdHR2R ze2dYLzPmDgm7##g|LIDo@|g<;aBQp_5Wa5azQ$Ep-XOfn!|pE>>JD+&od!wzEFij- zsKAvW*jzpIhNs4Kau|O7<3+r?Q%}ZzhwrVWX^6ZF@;<%{tf&4wrkAFjCa}G%Mwh$XXlmu)Ke3 zTkJ}e(c{x$I;Si8<$2gL0g#n-3f<`BNmfG>GPUX|wC3WT{FZDA^YN@7w1ob&X8Rq$ zE}!#H5X-)JD`zuzqFaID+d-B1VdK)@nneWbMED*j|1(_-tLUpq4*;~uk7Ds3w5!5VzawW1MRjw@_hjkVf}84L>Ekvy%-0aTps#v_*zAvnS>W}{OB~6(?x;_} z&1(0`Jt->9L3t;iAYO%=&J9Ou659`h!fj^g7IgE-6oIRW_DU?Le82_3h=w4^Hh%DC z2}C2zh5ha6pngIz+lg-d(zQOBjR{%~^(@uK?RQelWL?k2RmZ(Q^=1?P(BZi=Nwy+( zBU_#j1uy){XPnorTEBtJ(Zlx0E9kDVzcJoFilWnj9Ua&ib~DF@$>~gO3^9zBdDN{pxulzUoqpvp&PUZD z<5%^e)79IYh8kwvf6%l2J+%3^w?AUz(d_VsohW}9jCe1%_DjIa+8do-6x-t*8x@GM zg@cjJJ~Ul;_>s>2)kO|j7N?W$;{fz(t<5i^K?DJd9o>il zA3cuzJmC$lKBt)x-_1?>_}4uWVv$ijXBf@jzU&E)JP)Db(-bZg|1;wWNigYx48Ww$FE zkBCq#L+`#Rz3pdlhdj-5%uj0ri1tQ%kzrK;vs)MY6L zKFrGn_+y&~QlkQa8jV5VKotirmH+-aG1g2Iy*;f7{d}($KTJe5hasP;ZrdD{!omWA z%%LV#^TQbMPoH-Ug!IL=4^yV4<{U6DKB4|L@>2Y5pf!ywQqG0QSQT;Q9rxlNwGjNr}LhFa;;qX!dlv2e$WYSq4p|-eNfNlpRWBDXY2^n%V4(%1t?LK$GY3 z8Bov|nfja-gQ)<`-UC}8R~Jq=p&Fd8HvntXMUDA7(iZI8(oyygR;4%Y>X|}xIrH9c zjFqMwBy^;Heu|E4Bwr!595G4^I1^4_hBD>AdUd0VvitYqg$*K8PAcTI-6&|@B%u*E zn4yNg(Lr!to}mlJLD2*KXdP-o6rC}3`6RPnoo))?ZnMYF8~Wy&J!|-S5ux!RmEe*V z9hz!1!can$aN%SAhTc#wgo?XSNS)};Xf-)v!&_Gea7T#izk&k%a8_n!9z3b6pEn*_ z2Q-D09eMa}lbzni@~Wq^Y4TEw_SO_xdD}G*zd5J5q^(|{pDIymeD^Qa3qEVj?g1b8v*(+E`9HqTGvCG9fnszz(c!gig zVsp(*aAS_qN`z_^_0nx4$Pr!A$LRFw0??Tv5Siz#hc*GvjP4h+6)17Kn+g0K>7ioag?#u+W1FsG z>n1ku(oeSREC-kxo7VFDwzFK;vu3veWT@*$cvM1Wns~^H4vHX#5>fsxARKFwgaV1k z@8g2JBc)P4(`&Q*r3N=*G2*o}`JC!mM=!s=G>_v4;D$tPSp3%k$FHZTJZ%K^8UlU%SHC)i8^5?nT(5WuNASx9Y}J77NH8 zQ{vL}l^(-zJr)vJ`tFrxb;++c#p2hc#wyDVa?Je%GB#+Jj}}reS0-(jQW-F|DS&Ty zPS9$nYT?gaBX2gGjFhJ8qJ5Q@^suV(qF*YrP<(wQI4o)#Wdi?zz+KDi@g%D4GKgp% z3IcoYfryk<2~}3*bj4jC=b)d22)S1kOnj!S#V6Z4ctqSIP`psZRtE#S2ob|7{c6~) zj8&*c^3x~J#yEi@Vg4=_R$8$`a;SK)+GqM`BeG2g?bLX!fBi+Xwa2K1Utxp`ca`PE z;HvFG(52979N8>}^{XjaFT{Y6N;7APEbPZKmA5-Qhwgtyz}>iM5>M^{uSy)<)U1Y+ z6(J?a5jEJfQ8Dgt?g*`M=`lzaj>HR1035o=;1Lj&cM4|keT)3C1D0Fc&b!E#iK#h> z%1$sf@dF48q|f^+0NZ_ljNwo{#dVgZq6#lqZWS|UUhvN~9#hS1_(_4iWt&4bS5*0? zPjk(zyxoo7eplORG8QORWIs#!@-J|cH<0LB_;`RMaQ0sfRH1r)l<(%rW8I#KA9xG3 z9Iuy^S5qc-okrp&)?0~3-cdMw0|H`BL661$+jM^b5s3nH3Yfn?(}$g@;lYwWk!jb6 z#<|w5m!jqSmNav-xOP;)&%2Y_n4@IH-3y<*{?>L-yg$OuJOix&dlYgcr zVhj3Y`t)VEXFo@Xlzma&Yn%pGVZ6_+7CDW&mInuv>|GO?>qk`Toks7Bfo0+{p!M+* z*ivu1hL$o^gmmTKFcedAPPRfH5()dk8D5WcbycS5vp>N#1&!d&0WRT}WH}&GY zPz~l)HLoMNUUG&-;{dOz^9POPxczM+&j-IU5mZul{~Y~ynLSF@P*F~0 zjERT*DnKz7hn(nIpRstUj8cE80xC z*sLfw#{HX7$7{%;{F8QEDQSbe;QY%6`J++l^MA^K8hEXVvYhQ<2S*77rO*Y}_X`ag z|7cqUmM7?Sq@(=v7C{ruc1UK51=daUQX(Y~#;2Z*0g!4M>aDO9tx}f1^Den%B06nZ zzXgrtS(hFhlsb7|#{>l|(4^5~Qt;af>$~SbgcPHd8cv~!RZ-T1%(n(#oy%G+g5UVo-7a&B z4AM%k6{-=ATgmMz3PfXazK^Ee`sVUGbu{1yvwXlKR0wD#aTIreVkyP$?abc8-{x8R zj}Mida&K0-nmo6s=W>_$^#fF#tXXPTF%Ci zxJdwu?t-U&o}9+gS7NFaP)3zbz!VY8CBoTjfmPv+4(AzA-$e!zQBXZp2vC74t@jC# zA4o~`O1&g&(@7ehP~d&8Tvs%T_rJ=_@ueYf>uVG-Gx2G7HzC*h_YIud4#^IUs@lr% zcFFbX(|hmfLV)~13T`gF3?1mrizg?%#|ET{EaDZ_r*$UuhM|~A4FRfZYnH{nT5E^Y zfy`OCiimrb%0^(~%`d{pQqs+A0*fjfyiqZ`AIjOI_)H>Ir^+2=)c?cu3r)_g6c11E z!e)Wup|fQALGI##Hm&z^g(V>C`666lbEi*&BH=6Y+lr}WQ_+}dY6BEUKFQ^&h)g(A z=^IczS3}PyJWP~ZVCq+QWO?R`pWmDc440iUcv3&CfL@jOie5fJGsv_URd0G>f-sXI zutX~lsq6%Rs|40{#o5~CPW;@Egi6C}zkMph75t91O5`&&!8$U>jZFuUzIYTseb7}S zeoB5pwC{Eys{zOf4aZI#OEG5e(8^xf!XvPXexzG{)3WU9FO1Z760p%`Jd?)%Fg=D( z?~d`$Q}Tu%xUE13jn*OB5b)dYZQu1g+BR4my-H-CV-0g(EH}1f0cYnH|1tX}vr)mJ zh5r3@On{VIAFo~_@}nZ}HuuJ@BYJ)T*29cP7giEShf0w#Ny5RShthl`x$0omdW9`i zY$JerzPCaVNlzEUbA7FMfcBV|C98lExL*ud>gZRMhCXOb#Tb1QBC*xs1j(B>{;ve; z65T#b+0maVPMkbL=F%YEdWl?*=~bg&nP#FvbEonbG6>E(RTq1b= zj+tt^xnMK!TBiT(3--Ikz-<}8RrP=-hxDyT0sYth{u<_v_spLo`g9L^j~<C8ox;R>gG zt7gV~?ehqLS|nN?nxny8sMpkZ`9@rwQuVJC3j=!@a>K64D<^QZz7RDmQmJu_I}`^C zXyK65gdhAjD#p;kd$Y(Q7WItmFj5Q_op}G?xh-Z_dfL z{6U0&%q(%pfOpB}QTradhP3#V19_>?byVS1OAxV(WfJyZhZ@{2*g*E`r^Zjw#?8&v zQd-=wFoPf@uOC&)#vTLN(|>I<_|Ac(wl2-Lmmj#4I( zWzG}U{_ra$ECU_ia`gTh{Zg>-S@8%UMBw86Y{*CYOrt8{-@p0w!;7fqOIqIzkV*@) zd%VIgv;?&Oj&G=vl&uOoQX~+q-r7+rw&Eidh^ZJ)_e1WCQN*8>O zobYw?=d*F&_wRU9(|dm96yXx`L>z$b1+!i?vNh-Q_3DDZR|?!kz5(eEa|h!{Vo1B- z;<%2EhTNx1`^9RM{8ocIEsHLwc};8yGbe(C|&escOURN6!O-y%T3>=_CB zUk9J#uIW>Ntm^~JqQOZO8bIF)Q;B9!@TPry{ErJct8c_(#TWxJ^CRdEWLphe~tLqzFFk2 z%nvkFeeFe0Y=DHR`SU%BQ0JB8etk~_ONUJC5~Crt-oIE=Wg@(j9lxMwS&rkPko)SET0_OUYAU6V=+bNgONZ$;jCI*vax$)3QkeI1j_1d*O(Cu*IF#= zb}K#YoumhPh&phHjhA$sN+USiQnNj@8OV=^rz99{fStxEN)oUx_(RhxB-R~AA#-2 zj(~?e2$gBd4_7~)KTl)hSQE4Vxq;He&#@nxuT#biKVs}cpcrs>lM8jIIUT(Eg3sd* zQx}S5cKq7bVN;4)wRk>N3(}|`-Q3G0u-oR)a+(Nx74c+iEMk<#Bcqxv<>lG+YkMNU zw==!+oK&|9$3TI^c=(``+Hqg(PS2St zkuT_mcoiFfPCUbfWF5*l>a_%qRobWe?8W}zK+X%R`FY_&W+(z$K6w)1{zY@Myp-9j zZ6-8RmMjqHJ(mN~nMStPvwK@+CUYu11@a-HiqY-v`B>y_x~xDwkr9qtnWdq0wZDrx zY$BcXfWCdgD%=~_#jy8k7z|&R1J_fd1tT};#ZtyerD-a7e!;7;l{s<`zU0Fkc|rmk z-^C(Ij^f**P=K>hvsV8$4*C*-Ik>Y~SK7;4HW~eF*ml z1Jra+>DzWWUhxr-mA1sOj1B~Ny?xi)t_A1T6(kEgR|Xc`+@>o!z@7 zdlcvp#}yQ_zC+Y11a#A+uM!1I_0k}kXE+#+8c!!4#BGQlzf~=Oos)6rXui$(GDTDq z0L-A&LVgK+K%}jJPtHDdU}} z!ME*2RmKFmQ&yLXxV{&}LR!PdxDoslw1G+mKroG$?c7NN-?R-d^)x1(yS%=Tycvr{ zImnNpbbSpq+>`sUy-cR_94V4mq4K2-{+&bpZoCB+`$u?9$V#a!BxwYAtq42%^#}R4 zT)=Un9@z_2e*Hh!8m)vv!{)v6-vBRW)-Hnwc~=w9>catqzyrS*Ca=kNpz4~;0(oF9 zRVH-EL2{7eA(}X?RxF@JXky3w4OU;5lawC`6dy%Q8f6 zTFt8y<2>H$&OCz4y|@;&u#_!jz6)v7O4+Qra`NiGHlJfkYC`dhmhqb(H4)M1_#8_IubXy>`qDmvlyj_P-BMuw!n z3@^WNgQf;7H8r+uV5F7-M`tQ*Q}qd=NIcEs88o1WQI}P&=44zQrc;skT!jE7d}c86 zbA%zOuTFutLRN*}p&WDXJ}Hc(mCn|DE{MkKI1j}y-=_~OolEBNUjkO>1eAr4cem=Q zvF@tb+&iTr@D&e)c-m^s!SEK6mQ*zgP324Giwc@zaO6SfOkSVAYVNy1mlfKAmKD7Dz=Lp0q=t7S;-ywM>fw0>0*hT-r>xJdl&BOlD(my0P1nQgSAa zhn-Yre)w4o7@)X(pw=EILps)}z+dR7j`di`j&%&E+a)HE=wm>US%W9?ibw%y$e|;@ zutuvi=^XfmZfx|$$_JkYk>56kOA2nWNA{|I(J2@|RB6>*_!6F^BvrWY-MX=R|Ipkn z{xINrLHEm?VN{V!0iYRitM+@NidqeFHJ}fX`N{{sM$Q8pU)q`Bx&ttDv$_=L87#>} z3e-n@&1dQiNXjfPT`%%>7g7a!R3_p9Jo!Q>w;_#|+>p_)mpfdLcYq5mQztq|V2CvSF%~v|8Whl(y`5izwKep&o;y_Dm zen-Fz!8V;pcuTIc^4A|ERPB26kH%iMP@l{=VSwG`X?1b3s$GDuXhdsXQP)c<_19GD zUAt<5R1x9S?ECv$+sc5)gkrOA+y!+9sC<}8sb)FpuETu#VBcq$*foF z^+?YNh>h%3S?pR?w8e~Ky>kg?+vVEQIlpEcz9d6N?K_ znMQsV!hn{+i$87vc1-Jd@Z%2GM96r4m3_Nc$mvjmXqYMrQa&IMB(AmF=7QO)jV6@X zety>A=4#aDS7Rhj;f|Uy%5BEt!UsU&BCds!n31BOHu@1bIpq#-`BjYYO`CDI6QUHG zQHZr>Ee{&oC(wO!drsN%B0hmr$6qkrJU*es`t$Ubp13v$go>>qFY~hT(8;I`@9DC5 zLQ0I2f(6UJW|}O2K9q;+D Sq$&#nJ}L^D@^!LS5&s9N>++ib literal 0 HcmV?d00001 diff --git a/__tests__/plots/static/index.ts b/__tests__/plots/static/index.ts index 8c5a00b60f..5931742c68 100644 --- a/__tests__/plots/static/index.ts +++ b/__tests__/plots/static/index.ts @@ -261,3 +261,4 @@ export { disastersPointBubbleLegendRight } from './disasters-point-bubble-legend export { mockLegendColor } from './mock-legend-color'; export { mockLegendColorSize } from './mock-legend-color-size'; export { weatherLineMultiAxesLegend } from './weather-line-multi-axes-legend'; +export { population2015IntervalDonutTextAnnotationInset } from './population2015-interval-donut-text-annotation-inset'; diff --git a/__tests__/plots/static/population2015-interval-donut-text-annotation-inset.ts b/__tests__/plots/static/population2015-interval-donut-text-annotation-inset.ts new file mode 100644 index 0000000000..7f327acd13 --- /dev/null +++ b/__tests__/plots/static/population2015-interval-donut-text-annotation-inset.ts @@ -0,0 +1,61 @@ +import { G2Spec } from '../../../src'; + +export function population2015IntervalDonutTextAnnotationInset(): G2Spec { + return { + type: 'view', + height: 640, + inset: 50, + coordinate: { type: 'theta', innerRadius: 0.6 }, + style: { + viewFill: '#4e79a7', + plotFill: '#f28e2c', + mainFill: '#e15759', + contentFill: '#76b7b2', + }, + children: [ + { + type: 'interval', + data: { + type: 'fetch', + value: 'data/population2015.csv', + }, + transform: [{ type: 'stackY' }], + scale: { + color: { + palette: 'spectral', + offset: (t) => t * 0.8 + 0.1, + }, + }, + legend: false, + encode: { + y: 'value', + color: 'name', + }, + }, + { + type: 'text', + style: { + text: 'Donut', + // Relative position. + x: '50%', + y: '50%', + fontSize: 40, + textAlign: 'center', + fontWeight: 'bold', + }, + }, + { + type: 'text', + style: { + text: 'chart', + // Absolute position. + x: 290, + y: 320, + fontSize: 20, + textAlign: 'center', + fontWeight: 'bold', + }, + }, + ], + }; +} diff --git a/src/mark/utils.ts b/src/mark/utils.ts index 7918b8b41d..178d0366e7 100644 --- a/src/mark/utils.ts +++ b/src/mark/utils.ts @@ -102,12 +102,12 @@ export function p(d) { export function visualMark(index: number[], scale, value, coordinate) { const { x: X, y: Y } = value; - const { width, height } = coordinate.getOptions(); + const { innerWidth, innerHeight } = coordinate.getOptions(); const P: Vector2[][] = Array.from(index, (i) => { const x0 = X[i]; const y0 = Y[i]; - const x = typeof x0 === 'string' ? p(x0) * width : +x0; - const y = typeof y0 === 'string' ? p(y0) * height : +y0; + const x = typeof x0 === 'string' ? p(x0) * innerWidth : +x0; + const y = typeof y0 === 'string' ? p(y0) * innerHeight : +y0; return [[x, y]]; }); return [index, P];