From a0f22f897d36e80e5fc6948b394112281dfda3ed Mon Sep 17 00:00:00 2001 From: Tancre Date: Mon, 20 Apr 2020 17:50:13 +0200 Subject: [PATCH] space_handling + varie --- ilinx_home.zip | Bin 2164644 -> 0 bytes ilinx_home/img/grid1.png | Bin 3287 -> 0 bytes ilinx_home/img/grid2.png | Bin 3282 -> 0 bytes ilinx_home/img/grid3.png | Bin 3253 -> 0 bytes ilinx_home/img/spiral_b.png | Bin 130519 -> 0 bytes ilinx_home/img/spiral_w.png | Bin 133652 -> 0 bytes ilinx_home/index.html | 97 - ilinx_home/maps/map.html | 72 - ilinx_home/maps/map2.html | 72 - ilinx_home/maps/map2_files/d3.js | 18525 ----------------- ilinx_home/maps/map2_files/language.js | 486 - ilinx_home/maps/map2_files/priority-queue.js | 387 - ilinx_home/maps/map2_files/script.js | 21 - ilinx_home/maps/map2_files/terrain.js | 1073 - ilinx_home/maps/map3.html | 72 - ilinx_home/maps/map3_files/d3.js | 18525 ----------------- ilinx_home/maps/map3_files/language.js | 486 - ilinx_home/maps/map3_files/priority-queue.js | 387 - ilinx_home/maps/map3_files/script.js | 21 - ilinx_home/maps/map3_files/terrain.js | 1073 - ilinx_home/maps/map_files/d3.js | 18525 ----------------- ilinx_home/maps/map_files/language.js | 486 - ilinx_home/maps/map_files/priority-queue.js | 387 - ilinx_home/maps/map_files/script.js | 21 - ilinx_home/maps/map_files/terrain.js | 1073 - ilinx_home/scripts/drag.js | 7 - ilinx_home/scripts/mapGen/README.md | 37 - ilinx_home/scripts/mapGen/index.html | 71 - ilinx_home/scripts/mapGen/language.js | 486 - ilinx_home/scripts/mapGen/priority-queue.js | 387 - ilinx_home/scripts/mapGen/script.js | 21 - ilinx_home/scripts/mapGen/style.css | 11 - ilinx_home/scripts/mapGen/terrain.js | 1073 - ilinx_home/scripts/terrain.js | 1074 - ilinx_home/scripts/typewriter.js | 70 - ilinx_home/style.css | 226 - ilinx_home/variations/index.html | 96 - ilinx_home/variations/style.css | 228 - main/img/lmur.png | Bin 0 -> 814 bytes main/scripts/drag.js | 2 +- main/variations/index.html | 85 +- main/variations/laby.png | Bin 0 -> 1638 bytes main/variations/lemur.png | Bin 0 -> 949 bytes main/variations/lemur2.png | Bin 0 -> 1363 bytes main/variations/mu.png | Bin 0 -> 1309 bytes main/variations/style.css | 160 +- 46 files changed, 207 insertions(+), 65616 deletions(-) delete mode 100644 ilinx_home.zip delete mode 100644 ilinx_home/img/grid1.png delete mode 100644 ilinx_home/img/grid2.png delete mode 100644 ilinx_home/img/grid3.png delete mode 100644 ilinx_home/img/spiral_b.png delete mode 100644 ilinx_home/img/spiral_w.png delete mode 100644 ilinx_home/index.html delete mode 100644 ilinx_home/maps/map.html delete mode 100644 ilinx_home/maps/map2.html delete mode 100644 ilinx_home/maps/map2_files/d3.js delete mode 100644 ilinx_home/maps/map2_files/language.js delete mode 100644 ilinx_home/maps/map2_files/priority-queue.js delete mode 100644 ilinx_home/maps/map2_files/script.js delete mode 100644 ilinx_home/maps/map2_files/terrain.js delete mode 100644 ilinx_home/maps/map3.html delete mode 100644 ilinx_home/maps/map3_files/d3.js delete mode 100644 ilinx_home/maps/map3_files/language.js delete mode 100644 ilinx_home/maps/map3_files/priority-queue.js delete mode 100644 ilinx_home/maps/map3_files/script.js delete mode 100644 ilinx_home/maps/map3_files/terrain.js delete mode 100644 ilinx_home/maps/map_files/d3.js delete mode 100644 ilinx_home/maps/map_files/language.js delete mode 100644 ilinx_home/maps/map_files/priority-queue.js delete mode 100644 ilinx_home/maps/map_files/script.js delete mode 100644 ilinx_home/maps/map_files/terrain.js delete mode 100644 ilinx_home/scripts/drag.js delete mode 100644 ilinx_home/scripts/mapGen/README.md delete mode 100644 ilinx_home/scripts/mapGen/index.html delete mode 100644 ilinx_home/scripts/mapGen/language.js delete mode 100644 ilinx_home/scripts/mapGen/priority-queue.js delete mode 100644 ilinx_home/scripts/mapGen/script.js delete mode 100644 ilinx_home/scripts/mapGen/style.css delete mode 100644 ilinx_home/scripts/mapGen/terrain.js delete mode 100644 ilinx_home/scripts/terrain.js delete mode 100644 ilinx_home/scripts/typewriter.js delete mode 100644 ilinx_home/style.css delete mode 100644 ilinx_home/variations/index.html delete mode 100644 ilinx_home/variations/style.css create mode 100644 main/img/lmur.png create mode 100644 main/variations/laby.png create mode 100644 main/variations/lemur.png create mode 100644 main/variations/lemur2.png create mode 100644 main/variations/mu.png diff --git a/ilinx_home.zip b/ilinx_home.zip deleted file mode 100644 index 15da82648924664797d9b25f2de9a105151f6845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164644 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≷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

Sah(gp2Vkf77o`x8zB%w~K_lTZl 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

On*o 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 z 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�r|QGZo&&k%0U{dJzQm_WBPr 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

{3;0cA~Jrp$hCi`*g*l=cy#A!zf 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%0D#$CA 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�Th#w; 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°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%0D#$CA$H|Ryj#?G==dvNSrT3r7Hhy45w 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 kY6$nS;#fYgc@{aEmUmQSGUQk39=E#npC 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∓+YBD802}=_Bd3Mvk>>Q6 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%0D{}$Atz65UwL)x1BK6mx=jUaiEM(#mfN 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

vmwE}PBv6To&v71`P=718wN!p5eJlO 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≫Dc_(`-eFpDV`< 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

1oBdNK=ydVF@*ZbLR} zc}0cYT{s`+;kxD`e4Ey7;eeX>sA`dcMV0BnAZ^4Q>DY(o5G_eykeow=D1_t2p7Z?d z9Lu z!tJ)IUj;CC9KeFTx5Gp;!wyxr`d&CHtRiUHgu~c)cDYGi1*dby`i+e{N7lT!?r9rp z5s83W*054Aw9b;zIYhw)R-8>oOa?rH?Yd6A%x3V?!lcF-E# zkTX>(@=znp-@iXHoI+FKu0=ReV;o-&y-ch1ovI1&oqBfiq2w7KERw-u!^@V;v_hsE z6SC%&64csq8C*Gq`w}J4zZqrIPmza0x##U@JFR@JMdCgM&eWAS)}mV_?ykq(`Mb6T zoOYfj1$jXR{Q!K>krWIZK)un%>nO9U7Z`{IjdF@E|HiwjrU&&l{bKR1%UUtMvnn%r zDyszqK=e%{{%Y}d?L^?h{lXwM1F^6RO7OJ|J?E2*ZY}C$VhoS7W~ms%+7vY+vg?=2 z+g=ZCTW!@?+qdT7*;SF9!Z0<>5Z$g~+>;1~A2u6)*~7677U^^)Mjiq$0!mRr;fr5m z(O)RPL21;Wa5Ex{Ou!lcBy~qf^Notbsc+ z?6=pnwXs+1iWRwdwua0$=Bn%dlEY|k5P}1wFq$bmqH|Tf3pq934%L8DdKq8pSgbS5 z$vBv&CPx#Un*4NJITb%)cHK;HiOD$#S*H`_SIo%1?DTYU4rn_s&B{4tV@((p{nZnL ziC1A1wUkb=#P4G-(tHf>Pg?jeMMVCvPlv`u`!t(oixh-)OO`Y)8)F-9+N}$)Ch}y6 zd6bBU%iN=PxRBUJ`DKTC>C40-0xS^U7sSvfox9B~YIA|HV5}bw*5lt-Iy=h+9E27a z7{vk1s5Eo3%V@ug)jdmS_wDC+cG|$eG>c}OJc$V6)Jb_|;ai(^oi|qRcu6`Pv!z z;*b*gq-DXruYAh+^lUo2gi^M*z$GlW2(kWXsk<|DVhUICJ3GX&5rEEVwrZF>VUm7Z z*Z{z{?F z9LxLE+hx+U?sy3dQXMiB64&8;96HSL5fcxW$1cG9s0ApcQsL2$u!yMmkS-g9`UY51 z9Ha7cmwc)Q$ciG$ZkRB5e@jNVuyj#IMQy+j_E|@C-GLX;rXstQp`agtet{_2r>DHF zdiB+gMNfiwWFN!XypSCP?c1fK*{+4mb|oNpoSFqc>_tm{w?a%SD=V`%NJmNNf9Hu` z(xPj_z`&(Jc{NMwwVB+&Yda%;QcEjetMONvv*!lbF7uIBbVT0~1jd}*Al;f@`dh(q zeu~H7&V9tqC>v*RVI@gGbDTv+JV&yesayR9MezC>TH(#6UZ zvX$D2E`zp}+ztfdrDCi$0d&Fo!(we}vFXC~r0WK*?Y2hJuEq^S9QGWN-vw~P*v`p# zW;Q8EY1&=^@ZF$a{A+4~Gyb5CalbKUR4jWOM|*>rF+c3r?iX8iXe-HBS9;{(&>eT&LR!Gh+b(%4EV!+Mc_1-Q zpQ;{KD27`qL(ekghbV&p(?H8MPN7)hhN?vq6{-iWjdCL&vIu2G62^f?NOYN$Y2+~6 z+e6}tWpd3;C&0lBx8!st|6FG#u<6g^ytzvhtUJ0(I3+rM1Lgzt#|rC z6T5496S8tro6;GKK)J9g?mP%8uY)d7@t1$f%62e~0bE8jK&`%;x(I{MwB4O6j3L%R z*ctf8(FYO@`SPdqr-td`Sz>;eJP6JhAZ?sZ=9xRNJEBXSc!xXEz<=^dM&4d0_@V*t zV8GR46CHo1EwUM-%2*=mgC{n>FOy#wiW}YPUG^KC{Ev(Wr^fbtF1X)n6;qv<^ zZ4KV@6L4=8Hk>WM-PLT03kTe%(A65+b(vZ1y+?x|uadBRt$bgxT32*Ldwd98M?Uue z8BCpfq?$%Bgi%*d&Zy_VVKx?BCon_yq9^2VJ5eLBs~>fn)R;%>2;xa~o7{**!lDO> zxWef&B&Z0^CwkF}U4Wr^6#*=|rj3S}Zox3d#iqFVD0f&zsx75@03$a4_BxTaJ0INv zZ&8s>N&{=7@tS4ckzw%}O*VCm_9lpInwyVs3Uc%2{C8OSS1U2R;>#ke7R$Lqw;DRk%FKC|MKPKm2=rd*s56uImGg&$9r}v*M^C< z08Dp1W~ssS)BvcFBFcOk_Zw3E8ur6aMg%9NB%Uv;QKa(r%kfuMv~n(e_)LidE+UhB zL1d-22z~fWt3}{!`x)+G7*!J8^)K8GiA&xR3G6m^%+6Qya{-b0sMjaB7B*hIPm{jc)R-}tjSZP65fJr`gQvgV z*=b4N7SXGQmhH5MTD$gVPCI*$G`Ocf{%}8^_@P+%fpIz9Hlxg|+4LnEL^x{>3@pyc z`4k*fN?EK3jqtImn94?jZ~zcmYd8S z0e}hai6l83iKWCqbct&MY7gdLOuhPNDFjL#RW5IAvPMT>k+#)%ZKY!f=Mo5t2a*$b ztuIx%t!6ERMGs;th;-HP6f1K7xvK4O?_0H!bKAOGR3HVnB&P+|tv9`3_Co8$dFrPNBUM#`%_kq8eGd}CiqwiNRKB+85kkv(sb2_fIVq2z;v4fbQq9Rs^M$Fs zWJiUrDVPuJ@r_Msh&*Rgw9`7-0dI#60&IjYEL~~`qiD$M%AMuTfigF;FU{O(1AnB0 zrBkGe1aNHW?!HcBM{Y0%Zz&Vl&I)Yqx{nyascK-~>T|C&|RF!+rzzX5{aA&Q=TdX=B~=!D|_S>ohG z4fQWyZm8cwbO*XBxIX-U*+HAJiZO^=a7_{oxjvMIEk6B;sFtEPSb}T9!d^)7hUx3X>o53zBE}-p@aeJmzf}_NeHUNqF+tzTk0_Gz@oaV!< z5=rP_UpCvcy_nX;lXeNUzx~o)E7@_KCT3v-WyG6h}XJ?sy3fp_PRmweEB`_EMy$dlHJBm zFN1j7=%o$bopt$r$-30kya8d*RAZ1p&wIM41~lC<865aLgzr0(Zvk~hsxP2SQ`j5a zJC*Js42tSt(fygiWsnTG=KNsu9ngRL;fwTTiM}t;pc0-e5Rg{QScrDudeD?4vmH4a zbAB9W!&T!Xepedu_x1_Rb4f8_x;X_-5hx<$&gd1Ak`7ynyf(9{V1@7ZoQ>)os!K6lGUv*rwrcQm}|RZsXz6c<3UKCjxI1op8{RxLYzM^ zf{3Al^CsS9owu;Dix#$!i*sB~^tEi9i;h3q#0!xq-1eUNpTcz+#zl>tNO$Q->Iy=* zGJZ48meMq7e*u$g!%n~-oO-xQSD3<1FsJ)ae|<{HADhz48`_K0!NK~thdV~~7#aS< zOzz=0z81Vd_-do3E%T`qc0GA?H?P0mf;{`~FF$w|6gCE0S78+fy4ay}e> zN1o6upBX_!7$8ZpWRcB`np$(6gGVL+=qpRmU2%ZHs%sbY$qD*L{E8b3gUk#7(>5_wVcL0U|?lpuZ_5ATSO$lLqOD*-Vwp_VpTBDm#INdi|wcJV54ZNZ8@J06?p#QQRxB;Nb z{@X!OwqrI_FvUO^k;~1x$F>l_b@^d79_c`H8$W|X?+EmKR7!u!T8&kWvM1?oz3rm8 zhfhs?l_L(_{luqv4J>#NsCrR)Bh5V-dP=)Z4-sg{!uPwR+5c|63RX-JVvNv(Ph@{S zX%rgxoO#@l0jmXu>kz*2$emlCVrCgN2f`%U75+*T6uYgcEGm{Q+p!%HY~;^dW(~P!g^=0$LQrpG$1ciWE!xC-9{&Vmx2kM!g(b|AGRA&W&v$zU)?iT^Rof zEaYFbxUXj(qDcQ=EJ9%H(=NIcgYEO%bj7cMRy~y{-^-e`7i=!kK<#ecN@f_nCwDgI zCwVqT#kX9K*2tnUa!>!f!Ur3|oR}>PY8D_^J;MWm;rVA{7n?H_H?r>s=#VRoKIC*< z*?UdPhpK5%PG7HO{DyVXbhyK`7A_r8sk-x$HwW3fdv2<6?yny4?WwkU!4hg&F_a^S zTRs9I2@{?{f?++q2v9Q{BuhcnV#7X#89D4S(pzjMsoax>PF-q{6LLOfUn!wse}PuL z;M|oGBCHvx#uVAx+7g*HsJ#MOe=T*J%_F};c$#1)a@$*Xx??ATg?CNqcsWZxq|*@` zZC*?bAo&Qf#S$=cNAkMO15h|6hy}4Zd>FtS!O3y4?Ce@&D`PmJD&X~@6Co~7$4Nd8 zoL{W6OpmkZqw+ zMS@k;z`a(Kfd7Q+iIKQh#iEe%7t65FN9^aI_CdV1o=xx!Q*OzlQ$H`ab)D2P$;acI zT|_^LuYJNcdXJdRZ`G|;wZ?G+Vb50}<+Q4)&fb0)7}ysWco;oImle;=7Byex6LX3h zp^HT{)K5{80bL(>vP_nkfzOdTx5SXjQO!^4nf zV0)AJ=A8$Njm|Od+4PO2u3olxsB&KB({q$M9%TDE=ZD!j>{ELWvimyY+Z3kr(S!Xk z<8N68llq{${|K_kKWQyp`x%JsO_+9?tzL@3lD~oLEC4eB8XcRhh;Sx!8)aBjWjlgj z-hT7O!cXhUu0qOnuuCL$Gwf0u8)BCVE7TJ9XlcMNh1w59 z+5cR`s@e?iRYuH4ENB&hM0$<3h#hgz&iZZoCul5hA5|IyQq7D|80mCcb){$ z@T0la<|h#XdT{dzEdjPa&88fe7pEJG#PT9jDlls}=Z1)7=+UQ)#jQahpw|3xm~{$; zOT&6iMk80PZM^HnFxO5*N`a_+2o{(i=sdKyZ`BjF=|)*SX$F-KueW3VDU%1go7;tX zb330BU0d{bE&G`T89mNeoo7p()90MaY%~q?_H3;W2E96KpR-ODxz4z6H<#3)MQ7pj zJr6f-JowAflLs9+=Pb-)=pmDT%3L>sCHBc5sy>ec8{pqEp9X_h0r*Si+3_IM{9A9B zvnl!y-H^v1snPl9hHU30bnHl&zP4jLOslr4AW`3%CFt*s@cS-H7rLBJ1tRYCH{Cg@ zd9iOo0#7~#QF8b#O!J$gms*BviZ6j;H#`ftz``{UeH9Kj#Ga~f?Xwc#wepZuIz5+8 zP3nlm=V;OiZ^ruFAc8|rfG2eXs+{I8vLjqQ+5Rl$Peg!5AY4SJq}%h=@a2}Wv=G;~ zAkzOV_jNUB7&+Iv283OuDW4!neR(Ns~EW* zSxj`L@oXc#TH4dn)s47}7Gqt)wFE3tTL@UH&4w=;7sph_R#L6+NAG-Awza>*Ie52~ zgzI`K3As0#hLZH75p=!D*Z{+uF0*C3C_A}}lZd1B&Upwj)aJLPAzDjyscZ*6oC~cwufu}~D3H&pHe|~^} zUcx_b;GZ7@l=u;K0=p$BK{sVmK424(PH|-~pS8qsy6U&c=d3D z@tP*E1ygN;H<4of{9YU+kbZz!2M`zRhXbI+m-z1+{P#!mZ}29J9v=S)L;|LhNG-zc z9(^CfctDI#o^VRXrg-lbuAnXy6j-TNR^=8T5cF)c^kq09D8{<3rR=N-3oSp)7OTIN zN@DW2<>F2$!sX~Y*5=Egq)2oQgb41}Xp@6Tew{V+7`?|){Qhw^J3F7d;`CWng~uOl z-r^=KT-!mZl0;s#8-?9ywb~Bj)e+~>?r1i2!P*Xj3Vx2NNAt3(%GD#`s&4wJAkYXg zpPh8)zk~Stq{fe7KnL z1sG@k;4)#?>+f^&3zgjKbMi;s3$RPh`B8M@Z`n9=q6bHQy*cltsEGOqPM^E z`8SvRKhBLn(F8!Bjz6M@q1f~hQIze~5k=!>5$~S&?RQh>1n*=|dWw^{QstgsN z;}944k4S+RZ+_<7%Xk;6g}+5wP%x}DvHYq(3s)Ux?GC@5*?H%Z?f%CZe|H&wpG}#q zqr+NWGe)>uq+>HTLnAWYvIa=@fK|O*KucG*VoZM3qOn!u>&6OoS1lb4aYb7jKJL8W$6B+ zvvOTxz?EaLKYLRSiWz=y_*cm{Ghslr9$Z|lH-n7h%GIhY=xHVC3{I}a&{JORZH$@5 z3WUdz3jB{<;5=sP1kd}hf8WYdTijhV)lkh$J1FbVbOU`>#(TyonmUj1hJdO~CC~VB znVjwlBLSED_S@$|bl&FK-p0m!O<;bOuD)Cr<>wn(h@oxDer)fM7pxG6C+d9SyxQyW zU{+trrLfb>k{}J?`Xsm5L8YN2I^%yjQm6VygI*vLGjHb?m~-_W0$r;%;7iq<2Tdv} zeU+PN{FD4tlq9cD6H*I=Rw-s}b1Q{fdS>1mXm0ht*Ur70SL(>L$nbhOTMQql=N;jP8Ap$Ajs!{2c+#mvY6VQHfISlX{!32aDy#kwO+Xad|K)m+gr!7gkty{Klw6wO-874ac)_-GLEI=rDr?aMxm zI@AjidvW*{?7isV?Zs}!7PsZ^k_|{Yz)<5gzWY;p0z#W@$QE1Xj;KEvvg*XL7l}O)_(s^%_Fvl5T!?h za3m`wK#R%mn-Dg0-!;t?FHn$bZ&;{wJ{O0{)`N6a$_Lz_gUVt66^m-KqJuhJ)ClF- z;55&dD}HSis*e<|Mq8I=slg8QL^}WIDO;3BWX=YEwK?^TO8uBp>lCRa>!q@;ihl>9 zR{SnzyPAfNiVcvIo3v_?aM0n`sm1VL-G!9yVDUiGfMK5herPOY{8zkd9AIPlP=RdZP+}4 zgKpm+zE-H1+nU8AKDOIYJwvPHhEHeI^EC=J>(oYZ&k!k@`npFL#N3BT+stf!es)YQ zolVN?GMB!ubh)*^t<1kr3zs^VSeiMZJ98$R<+J76a`h!&MSD7CU!N0{zxr6#p-X0s zS+JeN+UsQdll-=k_pS)vhvv7pBlqpyQd-X%-ppXRaJN6b7go-@BKc-&FK$EV#a+^9 z&#rb7tFEwYDd*OtOr7<{(r#VS-lg2SKARis(q5SzHg|G%ty`ZI+L1Z!LwW*d6q4R35S zwc1|oh~j(#qj9}M>(vLjUBjB2uAgX-Gh*i4IirP!eyJvu&FdTVETDdxL3qVR9V+Q8 z3;&dL*3I-?3i=u|hMK%|uHOR!%J(4d(jrbz$-g%P8><3$%R@C+_r7f0tgh~si}%zW z>|(){x3&G{!SRE~T-<{n>BoS6IS+WkTh>QBdB@w79{tCk*AM?(96cI~Ye6=swthP+$mdX-0_kM~U=lA>i<>M_Cw_H9@0?PM8#3@`gJS{xSib#? zZd?Pa8_(>K+>^R1GmfLdPy&7;2$Gkhi3?Cg%(22n7nzDFc&dTeL(3FBmOmO>DGda^1n=P7(Q%|W!)pa1;PKRpx5xWW=)@S zz>h`gS^%&}?v zbrJRZ_aW-*m*3qzMSpl7iteE8I*I!C!-=YQd%p)UK^HOG!-;usLOQvk2_a=GetbHJ z5}FsDI&=e~=Qz%2e=2Ev#SSVT{m1Z6qrVPMj*d_NT>QBhK{-DDY{)-HpFQfQJ?f&J zR@xRP?x}p7^LV&8@wgs~6aSQF$sOmx=m6ri3wqaj<0qyRynQ(EVX^%ENisGX-F@R< zD6;rU?0re9w`AQtMaAL$Lhs*tFKYZg{y5{ot;iCa&F-EpXL^XxVR)ms|hi=a+*Ndy^(;ke`T!qOr7-QFsMs;!M-wtoGuFaTtNYVNrikfFTh>%NbWFkg-MZE$IfbqcV9Cg$htQUuz-MImY z>+OR?>~De9cD)_=EN$O~lBSDzD*#{Lxn)S&V<3q1JCQaOK`*KH<#0PO+CACE*jwrm zxh%8^t^=d(2=tSvk72tz*l3u99hH@rjO@Vkau24xwD{GHr*rgHcO7xPKw<45(C03< zdKU<90^n;eItyqH!@4Mzw`N(=Biy6nCi<-b)#YyD$)TX_2{bRNwzG(8jQ9yCaU+3v z*i>JqB`z>GD=%oS0h%&T&anKfFMFe6g1s9Ix&hNP~HANtJZH`N@q0W@MrmSn3z?==R+~2^WX?07&&Qn zBuV-iW;^2TAUusoHETh93<#atMWuCyX=mm2)~_90)MuJ*!gRC6(1)P*M75vYFb`1e zG97Zeosda+!v1Ch(l~*26XkoGk;YN7K1ofNp7?v_8lKL87Awt ziNmn&G*9x}p#8GxgCnO;S2RX^cD9eZ)r&nov$7l&H|EeC-^yqVU5^SiaMdeqb9tS` zlY94yvP!S!^#vD%L+x&P43e+MgOC5nD^V0nF~=8=K0YoUef$H*ZY13C*N;E`=JCfb z2OnQ@yj7Rp#P%U5jr_QY0CY0$ILYx-49l zEen=K%Hm{64^G8RMOvVm&0inX6XK*KWl-Pj(1s*UM-Te0Hfz4IO4JP-Y)=+v?+=SAR4agQc6=!JTTJmLAn5~z3LlkYM{`iOEk1vitF24WxcS4{i zA3yukgD0&%`1N}EZA#0^Jy%3+mM}G9d3;!RJe?Os@jW+}tL0|7*uB(3Z!mqB0e0P>BsPB~$clYQudr<_>yeLEuXc^?#aq<86 zj`NuRpCIZ_4@R!Td(S@=mrESQJ{_IVHM>o7Mt5x67t^UlQB- zkNgJwrg`)d4R*9a1Jx~j)I>$S3R--{Bh#@^rsMi#+?X%IAInDw#`2wqvH4zy+CyY) zqma*{BXxs(%d7QGkKBu=18Jj#@sglQte;vm-fL`JNAr#K1dTj3`2Z^5fiA!Ei=bR_1^~mWPm=ddcoIFij1BUds^)5sk&<*MD9)Rd8_`3s8iCv3E z)ze#mO&a?ETQv3owrFeu4rCW;(I{2SpatmD-^N|Roq!Sj-2;&31YBHJQ@@8wfqs!p0q7K(7R!+Gp%Z`v0XqMcur_ zR*0fZ`b52o*itI8vyrtEg3+DhWfPd%rw=)yF+h3D)&)t8X_l|AIW-{pa9?+J(n02R zNh1T-R$b26CXY%nAZs-*a#py%V6;+iO6UrE6f}r;AH?FZ^KbQXDRp#)gi( z0nhU4)!6{Uwb=#nhCm42diJwCGS)a^wq9Rdlywb2TRI0V#a11^(@BJ%4qmHs;lvB_ zCQ*dJ61cU()IYE{dxE2{_-RfaEvDIeNZd6qW7h1~O(@RFizkvXxYYYTXU4|Q*@<^b z55G-T{D!h+IL5M6>s;83iL~JK!rfnV(ei;k0(*&{^2N+YR^Jr@(u!2|FbXeN}6tkjC3_T-H4inp&^%!l_1JJV?m5+SU&t8t-LmUrme9 zwxLwDw<$o8E^rv{D&OkSZTYP7MSA&>FW<5rYhQR&zo9)G@eWksQ@4sH-dc~fo2trw zOqTpag|hBR8+welpw;R+iU$lQh4E~*kxHH!ARt!8@z2c@-SJnW0r3;50{4a=w4@&b zX44R1gJRC(jt9D-Bs49r$>*j82ya9HhfYrU724S%pI`A^KO|Zv-&Z0lwLfi_rIooZ z4(idpW}|#Ay0t&OxvAU`JOh!kFvkA&X0eM|ULM|VPb_n9^pzfta>KUTQWQ~}PA!Z? z)UYu6rfFW8?q)S^cv75_)eGNuI5;!7sTxEOXATC*M%h!J&8Nq^DH6-c`_t5(a~i2P z(@(VW@OXmP5zlD1W4+PosPzWAd4uxz`&UNJfsggY>f`zj|FK*w8>?qD#`U`+H&jp0 z^whP}cO+Z2Ysc=c-3C2-O$`gh=MC$D_q8)Hj+kHb9E&5_H0_1bL?dGXCqN5_^8}_yf&XP8~ZV0-VqoPZ?j;?uWMr2h+NEST=je1ea znS``#OnHWyU_yM1>hbO7sE{P=v)Y={WzqZ_EdX74&8Fgd)HH0jvPnasv1?-J^XNw? zk&#m3b($;ETuS45vA%!G)U_VH?FAASP;f)`x=$F7OsV*OjIKrLbA$q|Nf6g z5ggmZ-;jcXifQCE%QBOiMJhQsu(UdxS&){;hVs*>_50SknW$BiAx3lRW<>Mt*KC%> zF-?Fq?*=tb8*!je@>2WO)@&X}$$q62h=5mL+Spj_q=2lr8kE~v!HADKQSwVAtIy_z z?d$TVE7AwBob72pdTKmf&DLkbhMqEJ0p;yfds{?em9U9s(QTtfD*kJu-cr-cynXt# z#`$dds;frJSFbwiQ>%4o6&F4J{p-Z#k0vxg6^Y{K2dL@G?Zv#avTIK0s_y$&PZc@> z0-mbg3>7~4`2lMBeEGJcnwQJBAEu66+-O2hz@pR@)Sn-sDSuiuR;(>*Bs#v5*T7bj z1hd+U``@n6DzkZMa8TRH`o76tXJMx!Am2(i+<;Nd5<_K;^+`ZlDmIMCb{A-RRU;1b;6ac0(&E7O$4~Mi* zgpWgB&tt02Xl!@Q--fTf@$58Dq;1!N|64ol zqW#hCcii54dHTidO}To-+e!9xmHj(%m5q|`N_}dS`#Z|M=_orBa+TlDTefNVfX=cm z=s;iDe-A&hRpu|?D(f=$_LT3WhQE}fT(h+0C!4g~!cESX^W|#Yyply<@7B27kRPh;{g>4&)yOyt$OzVdWa zzFMxftOF(W58Nt_v!JTt$|=1(b-cWYyx2>oK@?|2l7~@{m3|!OUR=?iEYAwhbK|Vc zs|RX(*XKFyn>Db;RXzo5nU+OR6}gi{75X#5Ez2m)950RH$SoR(o~OK6Tw_Y3yexfGH_3v`E2<>* zeX4GiP1ETVDXE)RMOG1|V1|>YfI=~TF--;WnHx^M#3*6CDd(HB3GY(7th+x@h7eji-4WhE)c+O0x&nzRVTRoaJZbg}rff^(y-!UC-7s?L_=z zE+ExANky8~_kGs!=$pfP^ju7m`B7N$pD=|u<-9K&(i^#MT2$zUMdIW|?mBJ~#%?=R z3`kR4hs@&sWR;smMVck0n?%szxfiulMcy_H#5{`&iN7eFvLXvoIHHsQ z3fpu0AO+6d@C9r%St6#vz%M8vry+3n$z_(+mp3ULH}noI*NdaTo$iBSHw_X`ck|DF zX!QM$yhii;JDPtwO-j}KD>wB6rK;de!1?e}I9@P{N#vJM_m10dEUB)OQapH?I85N%q39 zlLm>WyZNuaTQ!>BZ!~|ftM|hrjbsx>aXN*2E&2*Hx#z%T3lneZkxS{ore{t&Rpf2M zWS*ONnZ#cdSsoW|35Qyg;=!gVFQW}9mElf!c*#ysNE!_Mf|9_W!d&i?%PgxeZv+MG zR)?1BguWBG`(W5jgT&L>{4a_xt{TlBG@3uWx%n$G)L{3!)xhvd@h5QTPe=3fe{Gm{ zqe9K$k0>Q5=udC+^MAYH+e{Sjf|4YrKl|h|%j(O!yYc$+V(^1Mdo}+~8YG^c=Kt4i zqxr)|^G7?HpGH&RlpC;`Vgy!5SEY#EDUD0X0fCa5mJrG~%c6Fw$lC?u(`Z}ZhgzGW zYL#ClqLct5qAcix6gY2y527OQB@G6CK}j5>Md9v~%PgxeZyG|}qeIK}T|b(J`(W5j zgT&L*{6EZF{Xc35K)kmAp+5tAUNOGv~)C;8xSQb@MWtmsv z50evkegak8o6311t%aAHFnM0)WhC$)3K_U*i4ilGOEV{)6i>KI5I;frhsi~>?HYA| zanY~{&ZqAZV+1Vg`~Kb7((u2aPpE1^y>7?b!9 zh0LQYb49rkMa8}W01m}6j`2?eW@a^lSGLcAP5*SJuL7a3|VG=;fr#eBuu8I!9GV&{$X+vZB7z6 zNzV}DUl%PGBWo}{-(_J+R5yVWmnA{z2dVE%63fadrd5&WNh)+dnMb$kOBH!DpRZG~ zU<&jjf&XC0Dhh){lslao@KqHIk2l??-W)`!8F$|s$EQvOSi1@=`_e=jGFQ| zwipp-VUZN*e3_G%t`|mqsUq(*0mZ%r6J*mOmG}>Y6wAh<+^Gu=R$4y?umeo_2g${> ziCKp}rneMK)nNLoU0NL$y(p@5T4f>4X=@cymKnNYmVvw~hG~IQ<+yR#mn!nc=$yLQ z1WcZXxg+o&3Rx6>FpWjI7CgzUFDd_ExdK>(sCT-i<-fdYF#T+oq{Cs$T$py46)#8s zOEig~48)`vIjj-<7cVT+{#4HEg&;jJVe+_~W`V$eD5P6pMCgceo!rY410Ew=ru;+X z612g2Df-k4jgVUk=B&Z?*)CZ}+1WHLiXx#68-8fB!lPkC3`aJeLdgYMCA3mSUUOPN zz|f*!>I?jbLSoPY4JOKk!cBdzhQ~mMDgQ9JBC#wPdOhn>9TO9?2Gd{fVmf&uaHim` zR=g3XG$e!fwj^a$PNyD5ash;)FID87PW`|MY?#uYx&r^9kYygjjS%G~IqY9xu}@Nd z_qhaZQRIbAj|cO^{JYf`&Gn$y4Yr@}WP4epPE}@J04K%IyxPsGG7p470amb>elGSd z^`(luSwYiYHcT;%BZ>b|$UG>$RFs>!Hhi8d%0ECZrVSRA^7gX5WlqlM zAR0R@U7r^T8apY!Ma2kf)n&rHZ^53A)qVgvp~KD=UHjP{@E50A;xt zC+aCeasbgknDP&ki)eEa---IB1Ljxdy215%gXM+Y{eW_t)gjU9}3DpOs<<|zW#MpmWw9aFB)uL?9wp~ z{mBaYgRvO?Xd>}P>?xc^^e6P_PhYCY%OIf%BX{gE{zD;SpZl-GmF6S*JvuyDFa`*g~Q(%-b z^VnlPvAckvT`w~_fc-*xD7ur(DB>O7Rb5v=1N-o|=&=fUb#HhgeToGCo&&g6xm{8}xq7RB&5n1lhHd!mzp zemL><2aJ_FiGB4M1&%j~)mQ9z!6f$Nrx&}XL?3yaSm4w0ZyjHrw;mW5=K*dY4)zQN`Gh8X&@s_86b~kdXvzTsDQZG@ zhHlm(e$MA;6Gk!B@#^ReKLuPjB=7sCekZRIyPW;#{^%=Oo_|emed`p@N`a(Ms>y=& zY*894;3LdWqz<5yN+e-)hF79sdOva}G#rI6i^ILL0H6XI0=`yYulm5~?G>imhR=4x zdnUYM&qr>}p!#_B)hb*5GWyI9CXuW4h#R95>t5?R@zkG$x>Nf;df3F(y2VfYX+Ua7 ze8b)G!if{Uk4o|UiLc2C!XJeqiBqlG;jg*15ulmwiK|s?;wO_R>Qimjk(!U(AsajU_#8*IpUiF_0#=7`2>ztA ziVN|yg{cle;sS)Jv)QtfzL~Aaph}|)y7U>Mz=89O5Vgd(EI<>4PKbeYi4!V-Q=5jhA;D16ww$Vcc#0Yaaa9^D{{5k^shFpl68xN!9mrcsVCiwcB!R3a>* z3Sk9DA@Q7;M9qzTgc$E4gaskt!?-c=q8K>6BnD1z8pD_J(l|w!b6CU~!ZOAn(}Uk1 zM7|T32t5vc+6o1zPs%96ydf|$c3nfhfgSpT#~xjPyA~DQKaH!(0lX5uaFii>%oaHd*5WMn$ zk;96@sly?8y3W)yLO;pf3ZhG4m}Cee4r2}z4yOr59@7+IIn6lClPSUiA#J{(uu34` zsl%Zw!x$l|>^Z5QL&rMMqgb_kw7KIQl&rczrUXVgQy)exZs3MFlJq){w#Pwnh zleA16kIwm3UYa=wG5U$oMwu5EUYYrEjLomvj!;Rw;7dOEKj4 z9a^mgmpz0<7Gh|eLGU2u84Z(BU{QfJ4#E(Fs>*``C>_s*@H?JE^O6|D76>u2LWnw) zo=ZFOAQIFy+-X6R#2^P@QdAV8Lqa8$P{=N=)l!(2p_>wu+^nn+VqAu>r~;_!vWiMb z8#))HtwJ+;wAdJX;REfKUZk%s(zb!%$s!mDgdsv`d=4RV2&V`=)Skk^@$sjk(Di7K zz8fG%;G$g}XgUs4Cw3w?NAB3AP08p64*G{jIHu6FIl{=H@g;3}&ODk*2UlI!fe-_0 z;k&MnkZ_lN};IB&)jK~e+1il7Skn9E-OurkH9{ve2 zgmXO@{}5q_A)H4CQ4pVcDZ<>#5mr=wsw;grJ^+Pn)_xD`T=L*H`{f(Wwd9HPw-P7#7es9Vs;At_@I!U0Am#7-Bgixhdl zVMLx4EH8!7wFonBnvepXva(MTC}j>^FGEP%$DC>4%|Z@iA4)PyIE2oI z4M001ED*+7<-^3~4#EfwfZEIhKSvlM44^rS*w3L*5T6pxEWDG=R2UuoFI>g@kIpTLvM#t z2&yP3!w{`rqS+$yXW$N$P{s(;5To@H)*y1qJWLQmy@oV>2gO@Lg2J+LXcoUh*9u8@ zc^pDzSMWIy!pY-siZFz_&#NfPIfN8eaqMsiZCAll;t*P$>?iQR4d4)ZvPxqrD~+iv zw0c-oU^IszIyLN41kIRCIi!O-d6Gvy!ZHe~dvU;}j#R>=CbVW3rwAb@2w|HL z!eK!;je!T+9(b}M0iLW%fFXAiFf@mur)Aaz81g6qh8*r3!j!Z)>>u)?aUFyeT`U0g zMa#Yu;8zF?xhcM2j2&Y*_bK6-_@tqO1ftW3-antI850%q`u>l zL*==2gfoC%huZ_$&3rg_PVVQxo%a7vpV!wfbc4dDSGM6W}Lz5y-e`mC#93Z^g@Fl$i&Q!s_m0L@VZ zQ;=eWgj^UQ1ssM5X?~a{u%{fRP99}J&S8P^7AT?+HlsucK9V~FQ&XUaQ%K`5G6fXE za8W08J%j~^6-H)s#+yQL2q8FxFys(?LOA6xg?2{?(9;IQ(b zT&6TAg`MCKW&|#4$YJco5r8;^GaZF61>p0v;E?u4()A}4dT@8qJ-j?}$sNT&Hu5lj zO%o4%Nv8)f1lBVz1F}k0 zKvn>w%pinuzyOJ1%6WLg>Q}^&mSiAkgVx5~OB|VKe$C z+x5vWY~Nl<|)^en=hTy!|< zwB+P~!W>>C6epUE4mUu!DzX7Z#p_WBbMmq?j6eau z4j3ZvX$sR_6}0qLRcTP0h|77p?i@rwYh&c=z?LTDondqwAxxo{BMc$YCJ9_mhsN@> z=c^)hf!-e=gbH(@+MtV}c)b)MdNabngE*tB!Bc^vbrHt!_$Y)$nbNkgfbL{Mm_iv) zm?O-fh0)RAmLr5pK5Y7vSDTg_SC5IJ-#Ke@Q58%hg z0f!-nF^36YF==)fENJ#PP7q?q0Oy|u3uTb84~>k_@)#x*kS{nGUVs5Y;fK(iMSwA>Q;^cG z5C)`dVRVWjh69hG0UY?On4-g`MH;3YW*8d49Y=S{!y<}d1E2=zFdEc4e1HhrBBJ4d zLt9l!d`EP$4kJoBUl-Asn*3IB>@gaMQe-0c9$Cq~FX0`88Nw<|ONdKIhlpK>1`IMr zp>UlMqE>J#GMeTo^B8uKd{{U?@DM_n6dKS%_v9RwQ0fkCH?QFI!F*s~2?8->gm&{1 znrMPa5n|{L4M+MHY8)y6vgxyJ;4t*bT7Yq68=$ZA6a`c~lth?w zSo*XwUiom#;XlAdhdfqvwwyySfCdiG{v`<%!j!|zqhUqi(Ga7gkhWn~1#AX|5LSc` z1%wfY35O|-7-5Ja+OzA0bO9TMg~K7drV0WLamtF2L-^2DiZKd>u-4TS1yD$N6PlZ< z657^}X7M--ypU&&BDy#VVOUN%%;pB)6GIqA8aa_>DoV+arv7WIKC}V$GZH#DqNrPBku4nV*g4ej+^4OJhT+aBu z6upK?acAkgdOl-FPJT3yz?<}nq3P8^N-;T^QjOdO7q4lhSYGT(Hyt0-2jhG!If7is zV=q{xRJ9INPZ^h{j!`}pIFF53ftc1tTZmWr*Na8DdXW~htLC%d#bj2eweo#;wdu{b ztkYWgUefDgpD$j`%T~6vPHN@)=S9(-r<4h;9M9A49CYb2s^^^xkk3Nfu!|<~$Dx-4nh2fVK>LQVX)WL0+%Pi!8&f!-(mUZGn((v8Iwo zbd~+aSm-=Kf>?&VcDcIp3#Fbihrz8cmlv1xRPANCx}>Y%^Q$>(y{xKrx#7!&>CHlU z4dE)EP?odJ=JN5QM;DO8x69SMn7m!iEBK-4=NFH@oUQVCdHf7HzgEl!=O<^Ii@B+n zR*=Q-X}xu^S+^QvMSt`0Ab)FKuTDBbR8`-JzU4^45gj?FnUi7u7X49n zMt#M&T_HMLg2TUSj6@jle8P_`9n;H(eE+-TIqQ8|PhTO9{uZSsQhIo$@o#;6|14_?@=JVycT&c%HH*c4f zRXIop6pV@ejezh(?lgfr__K@p$#MODo;ip`Oha4U; z;S`UC%q1hxEpu6U*Su9(cnpc^XL--<6OaF8p`Mv81juOO}X z{S67qiQ8u4z19`!FcHSR(}tx3v9?*%ow~Ma0>&_bT1r?=X&}R!a9RMe=lHFjugS97Pzr;i!I0_@5W+D|ErlS-RnV%M2N;gdp&%z37zd!JJ;; zS`nCdDVRAe!RlvwSM;*y3i@2A-mzfviu5J%Ze_e-4CEVheAWt|)ua=OPYu^W*I{z8 zd{chEB;D&6xw7*!v$6 z(+B*`zC3-)_YUe@B&*`RLaKL)e^dN>ABJB+GJ_necE+=}&C;E^bb7Xdzh&ueU3zEv zvTUNkDBgPfw#_-=ElJ+d_=Mj^Hdv@g<>3;0E2;5>D~UMAxmFw-`X-#yf-AUd6{#KP zw&K!Dmf+pp$nYiTzZK;fBB#Z8c-zBT;e9qZ(jR?jA1fb#n_@)$8OAJYoVUiwvMl7y87l#0kwmvfo2LAZme(S}WkhZl z5pE|DE)zlh(3N>xM7W9w(R18BBHrCI`koj*SlY?8IJ~U^l)AD3gcomV7{|s?11OcF zb*>>#yhpYyq;nzFt(2F1m%NAphgk*JZ3xNMZC0WMB8C`dH5{jj#c5Wg1+vU_#kguO z%JpV7%Y`u%HB;6w&GAh=hiN4Q}4$Yh(;yF4~>NTDoq>(y=XU&^B-mF~9Evuip2>B*moQC4sMbE*h=uacW$ zDruO~xFn;&M@oZ_Y|Bs4Np;DIsZLC{#&9ar88exYhyLEES@4_+mYJAxK#PBm1f}Ae z9~Y=|3DqfdF^$4Wbsqy4lZU$K=ke+cZX<(hWjL}kyleJP;n*0WkuT@-^m2_(0+C61 z8p7-*_gS&*^mml7SpDy-WoZ`kU;p`k*2-}s@jOf4lzqKZyF*mho<6z}PewFmHngZ} z@fEWhuH|OP2jH8zTjJf!-RB5xoJmdsf`7SS`re9fi!02R-%-Wuj=LUQlyF;%&#b;l z6^ECak1XGb%aQ0MU2;-*D2f_O5=KUXD-&FqaNn*9d08~VeLGvzV?V3(tsWXH0@Fpo zanx?L3b7n6lPR~R6bY_OaBE7t3ozW+I=g1NM57zUZE!>Yx)RWpfbJgUGO)W?CPPy@ioRe)MZ{@tu0R&^jJNnuUC$H2LQtIH)KL92n@LvOEroD0b`bg*@nBa zL5JyvE9x)H)ftqEhF&zBc0=nFS0!m4<@s5vr#Tk+>t6@=+1u*YN2I%`=E^+Xq>t*l z!2qtrKyS3KYU&*(b*d(t=gdE~~+h{08R(h3EkQf25~R>-pTH zA4vj9fjk~q>!c=G_LT8KWZ7A7MV7S;Ym(KNr9SLUSUc~n2s3fml$mqm2a#oFBx1w^ z*Pn@h9^Z~kjnk&lnx{XANGs>9NHUkmO`43AfrBVA^4*G_dilN4inpT1$amWY>!7CA ztOpS@tn+mUlqJm!*Lpb=$@Y@dGk$qj;g#pjp${iN)VnCh0`(Sa%wxz8K@Ud|nq3L3T232q{wu&ty8emmRbXNpAW zQS0T46s~~txWNSXiAl+44XTw-&*eUDB&wkfB|aHsXsYukW?62tERT1sKrHgIEF@%6 zR_WDz)5L8SY~g;#zQj9g>(|xlP1z-*Ql9Cqokp@P-`5}c!%Hj6<%!%kqG7fjFm3~e zh&I+{c`mJ9tK+G&`V$ogcwsNLZdO-iy-mROtW+%3mU7j#HWqp>uew)CnY03qr|D|V zYR727ODUUF>Jejo(fBDSrU6!!!mq4TgwJRAh?;ak%cv%e$sRUV8EZJ*{C%-mjB_=^{}X^8>7>j-?j(d;b&WoyW7ns>L%BR+KuajtrwL; zYT>#zAzbwK(4x1uE_&N2y6#m65m0B_n~eMSO*$lk1~sa$9_FaZOh4+WBiI>XzIm;{ z?nz3c8MJUhlakx{5~c%Dqp(C#`0E`cQ58(8db|x`@a!EfWlFE68yn(mP0HJkOr0op z>U8Z{;VnsjGp$QC*`;+~*FVqiRu|Xb*Ury_#^dQaZQDxwZ=l1?nJ2oad1g-8NR6yr z(c!2gwNw4SYtL)-8H1ZpNhZ;C#xq)DdNMetJ<+e9433Y_?FtNR8-m6>IX|U2Ncz`8 z`R*{nq-QDVT1t5ddCN?nFs8`|)FbnTj;WKI|h&C^oywwWvn z>E5>Tes8jyqqD5BxJDNznN8w1RTEo}WvtMO;3$yGTY#eL-$Ylzinqy0% z!}$dW=`YYKekipYQ)medz_TtKYU>OOS1rdKWmZFs?=h9(+*ez=_QeRNrw)2N1Ab_rG|Oa z?b&xa_QN*=-o?K@VTKEDP`HFFn!^qk|I>lxUQ*K?J*85`cWYm=JnuH&3X!G7P;S3$ zJGfkxZ)VG@^?ZAri{oB}=n`w%x(omoA?+#}ed4|vPc%Y@= zHL*tQ1&7ZK>G+go>9Q{&idHe zU9S4vW4kw{D)v&zoHZL)uZyg;GY@q&QOfop3#Bq0<{_atvPqn|wn#*TrPmKz)iZO# zc$)@56R{AOmZM*v!xiu|p{ttCnTv{&0C-g)f+(?0O|q((5Gq*BJ`lWQ2$a$dq};`b9y zT&cYm^U2mo-O9YT84u+{lV3lMcr1Z2;E#=Aj+#^Is};r)mfvsISBxr+X(zLXjaru_ zl&Q>E^NEiQ%8B+~M0)m{fCW^2ew*XO0Nt9HS0iI(UMI-w)HHH0f5baSUhbElK7NNpUZoovlQwz81MY1+xwEN3gr(H*>{ zm<>12XwYkiCeYELYgB@>HM)Q9usJ=*+-_tBZC`h9JL|@`?I!LAgShXy_lx!5>!wf3 z!7tG18UuLNjf#7EkA>RIHxyee^a~Mu(}{jEgCC>tXnN07t=FSdZ35TxSzdk=0SS*S zYfClZlqYuYKYzKrTIC&=jBs>IS)6}Q2X8km@C`?|!9Vg$o66)dVp4&+aMeo%5}70l z(p`P9YjeY{L)(O_>(n+iD~%f@yCyk?ctc}&Js{B%#5TvZZ;(ob33}V9PxOdyucOag z1JhKE2S?WyR-)?-oh|}JvJ76)?;@-}>t=UWgY5U%b4%===r%skVVAjnHbNk|!B@RV1V=pGn(2%2#^^1dR0yMv-X zl&j4wzk7Pd!e<%s^bm-hCC{%|fySa4f3NV*Wfuelz<%us}eE9-J(*zlU)O2vQd8%PL5a@RA&8{Fi zGPgY8xwLO8uWH57llK`uH2ixWn(+M-e5V_gO($xMahsNz_3Y=ec_2dH0XL*nG(8j%dG2F?vj!eBQJE!rnGfAcn zT`oLzLvQNQ8#;+Ahp^|h=)>KYr+~ywWjZ#Nw=0Sina_Unjc=O~86N_tgyCD*^jM<_ zq+S!<@MPM1c2^)w8?ADF&GMz=h?;Y1s#R|@^+@V<-59*qz-xK~-gHij31MRaNzF@$ z3O@u4l!ABJIT0oRYH?9%zcFh0KDL{%=wRyLn z6s>={q6L}58tHATks9rD{I;!MSA1^-9F6hdE&gxOvD)|+T3=nSy;;qag*&v9AGdn> zP!#kKx~1DVIbxXX_4H7cecRvjcY*Y_L(Ycnm|ph0XA6tqMSVz+mcd-zhgnrBrNw6l z&-vKjk+}2ER}X}44`pAc-L(24-%Da2Ufhbfhvqu>wYZtl0CE)&-9KaiG6$}WRj)1I z-RX9=li?({J9X_kw$u1-(e5;Agool{{f{inP8GWlmS+bY)Jr&e=nc%;~9| zp3LdhId7u&NK>nbl*q1cqV`BrtB6!NZ=&`{Q>%znIh)k>tDfyeww#lopO6nPT~BI# z>FLo=Y2fLnP*wbEBlb2c%|O2);rC9hCsi4};YG`p7h`a%%G6TLVs3#%LC>~pd&bBr z%$zg2#k>yByLE4im{9LErhJIrz8w^IGBqRWHIb}4Z0yAF)xZJjJS zebgl#`tYqSTHU8^J3GYK=o(`3yt8+V&3>}2Jr%7oGSUGw1J`qY*H$SV>gG!luHrzY zBQot$JwpFm%B7AvSb38W;kBVW(`? z{*%-O+Rf53WP=zkR@1ip%JjBSqxHI1xAtym=nftJ-DSBrP=iyJzi-#^mhPGVTXN6t z(y`J9%J=A)TLZ4YckbmriV3w|2U5sA4$Bm}wWWQxGIraT-pyE` zNjn)^P}ZB}#ZYyZd&UH6W_78?WSZzJPsN*T?M?-i#gSdTQqN?H0w%KC=~~uZSC=NK zJgW1XQ*Z(gy6kA^Op?$#5g=5XfB2-EF|j3no>RliSdT?QOoXWg@p^`<1;4G~w>CTv zKHB*CjU*d!C!lyWse#eXcCR(j_GL=f&6^vbHsxZClpDM!l|-vuqEo1BWX`Avh55JQ zTNz`6{l?HAbhLcKgqt;9>o)ndu=mdO{bQo8+ta$Ui8|9EYWO{S`kFWSY5sfqX-#<& zL*xCNHzk3MfwX01a;XKn?2MslOjDCLR8q%bpnk2T?TNxNktwE8u~b~ku2`r{)1puc z<6>DBMUXv0y?bT)tDA0AKg0K%d6YlHU(F=sj)|@hFbQcZ_YY9^4by+`H?7x(3pHH$ zYn=YubMmfVqj$?p$BbU5rPwhk7+NU84$6L``d=un4`T)Tl!A#azvk|h`Hnbn07tfqc(omJCz93O9w}MM8eFizg+Lf zR8OSPmuI{LO8jf*w8${Cs{P{PIcvfY}zJ5ud60dG=ZB*M{RNG!u z?;1Sx{C*y0HV*;Xu~+ zBbDdWw~Bd|G#G~@>{b^Em&><9D(4}WcEng|x4a$^iw>#}?Y#Hk^VhUP@Ft%t*x_^S z?vvyG4%+O^t^PUQ)mxwRsg_^Z*;9JA%hl65-FEbv%D=fIowfUC(&g*56pwo*KpoQ) z)K)>6jQVb;+TOJMK#|tr1uArMRV{1`cU5w89DY}}?eA~W^EYMX{xPSjF#U$-RR2z` z@qeeO;D1=_8?AN!Ec9L4>>fM#c;}?`ufTrW6HIqyz5kvjs((dx`?oU>{ {vN0A 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

&v|c;m+@yE{9?I$!leO{#j8 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 diff --git a/ilinx_home/img/grid1.png b/ilinx_home/img/grid1.png deleted file mode 100644 index 4b915e3acfa8e844aee5152452dac6502474b59f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3287 zcmeAS@N?(olHy`uVBq!ia0y~yU;#3j7&zE~l+0PVoj{5$$=lrpNCUx7=iT){inG8Y zvY3H^TNs2H8D`Cq01C2~c>21sKVjh(WwI2Bi+sYsz?0(X;uunK>+S7@YncrNTrW=7 z|7;qQH07UkfxhFhiF-t!Ts9HdRP4w3`Nq^|hR^?itlqJ8no4p{`1`*_eOBM@9gljQ zS^xX?{eR!K?_YgG{&#YH)|>m2mVB?9`}}9ww5V%Q8~6Wxn-5aq`lkQyMtjq5|BFE` z-(k-PB*A`RZ~(CgGr<}Jz-kFG9l)wUt|e@^0K*)RI^q;NfRr*2vK~nRL<4b#6X!QN z7*3pXk-SEV%Skbugn)(w3zZE2F?E_s_4~t`SwHXH`S-0{5SXmNsrUQ+|G->e!46CV zcV>$NNd}DtswX8LU#;FhXK~-&?;EdG-2!KYzi;1beLMc|#(b&Y+f`ofjelObZ|>4* zTf^RfvjWUW|K7iQL54UmGJz-#5YYf42s6PN6u@c;F&n_Dh%;P)!2%TK#3_atOvrj* zSp@_NAff?85NWsqSS>;?k}=qs4PXt#xttWki8B$&c3K%uLRdgTh!mIOG5mwJuIIOV z?ZH<*?cE7X*Giyt4Jzp0?f;*A?q?w%Fx+>T>jO!K00-|$hR0Taud{TQt$v@p_Ujf{ z;U5Yu{PR68RqsFdxyIUCH+$_3SXKcW3Ct?hptRS(1kS{Rph$6GC;$b^pl}H&c&Svl zq5H=HWHyn8qw7VgjIc9lWjHBeLCy5^AUtZ)o4x$YS3IpQhBs<}IpR+J|KoE$Kb8T8 zWI=u$C_oo9P}WZR4$hLS;7qIlG7x*QhapO(T#s&L1H%JQIHC( z0i+b48x_zLG=TZUxg1?DL3?OrIC0KJvYix{<1zfe`YkFqtL6OyPk(;~Z2xzIs|8?5 ozw`gUe#_^_Eg2XX9^CuKxJDs+bJ!8x^FS_xr>mdKI;Vst06ZghDF6Tf diff --git a/ilinx_home/img/grid2.png b/ilinx_home/img/grid2.png deleted file mode 100644 index 7621bf6b81facd15dc4d90cbb368987e2b1b094f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3282 zcmeAS@N?(olHy`uVBq!ia0y~yU;#3j7&zE~l+0PVoj{5$$=lrpNCUx7=iT){inG8Y zvY3H^TNs2H8D`Cq01C2~c>21sKVjh(WtMQ%srb#nz!UH3;uunK>+S806Av5kxLo|& zYb6k!@NU}8iN#0Gt&pl&DP5qnC!ERbw{gXqt#*t+L-O8wOtO5Q-BW1kE?@nA^Qw8@ zw(tM@HoyM&?ykQZ?Y}KQ{?C07-45Ct3ze#9$Q04Z$%5e&3&3DDREkl6!lI0>-= z3qzor8$b>x>~azeC(=Zun4ps3e@;zQseXT1v+C!)JO93w3;s^7f71_4+~4p2-+1kp z1v}86cV>%&yqocWqRdbY%1{k#EFhx?vs;+Ukk9FK_)!uwQiR?qjlc>4P@U`gJ6LmrYFcK-j@ zzxCR2OQ3Hb+}i{4vjemHq%)TB$vvknf8D5_ANq9*q+YmvKNOsMY`@u0O6e&)YkB|N zCGXIqka{7%UL06y9RK&_#(i#(AtnkSvH?U8E=#~UUjeL^xSWqvR1jn`H2~|*!Qm2+ z4;4TJ(RCV7X#+?-;V>jF;1ob+HGl}hCL)C_jSN=+J7fS1-(RG1^4{-~uDE^Xz(!B( zk$;ffaQ^T2dSL759HLb)HLI3`n@G3s|67*?s!LvO z{6A48xhMPF&$4N8tF+)vs19foDh_1E0!DD5#sXqHfCvVHOq!K~bBMAY$$d0)3CJOX zz;Gn5633)cdF%l4KXO7KAuJ%_Mx1jY_TVx6$5ds{Z}*l5fBCd`=ij%G_C2U>c(?z5 i^4hP3d_Y(3*k1p4X_m|h71gOAM|-;ZxvX21sKVjh(Wj2~MeWNY|1CNuZi(^Q|t+%%o`-e0{K(iPUvXwpG{jLiQwLWgSYxlJ%|KGRo z|NFLm|KHf7|8B_tElyZ^{=a}PtSalUk{X3ebfJUqy4w^`g%X0exSpFKmkM$ zWHx|RaezpIOa+iCf+j)~5NBco*hH{e1u&C1my=>RaV8?!P9wt`!2TNqh9h~EI3_7B zCurh_)e}|j#`+abdw=$Ae!Vy_(H;k->COND^;l{rPb~lHmaZ*_i;W-vML@ zI2$t%WD0=QGJ;5gOi;l<*hB}ADh9>_oIuh6#2jdsfSf?kZ%7JA@+R?yJAjlD85R(= z#Kj8O#4)LA_>Y?&liukqw>bU%8L(XM24;ZddSDTLv;IG@3V19745AI@ z`aqJQpkboQ_uBodR?U4Zb2m17?ef3CTmz~O)+K>7SSJ6Us1kbhdge zJj^4C&Adsx;iQBGSgixdY$9Dwis7V$1z0Ur4X-nsv}E^b&2yjj?gSR! qN|53^x&GVz|Ax>1Sg-?q{N}BE!z1yGC5C^&7JIt-xvXFcSlxA^t9 zHw|{i5D~S>PfObj#Z|5d?6-(5GJ;>58Ia%fzFpE;DfIsDKJq))nf#1=DqEuBoi1VY zDwjf{`w9m#41uZj%FU^LFSFw8LosKf>!gPn#}W}8vdrddmoME~VNA!FE;VFIhr4$j zJ$y&byjkAa*WKsWBAA1_PFU-vbwuDdpUc62b{n0<5C}5?n)zcqH3|gs``3B~pC%W{ zzQEn(?zhnIC=g{`UDOh#oCA@&l@;Bc&6k&#TBqINK@J64+}h`~$%DZjCPv1s`^#OK zMX_v#amim9&;A-3_|Y*jG-tRG(AI3GuD?HjGSf%GUSD5FY{EeH_Vxls&2h*DX%kVL zot+b^bL_~!AR!_lsreyQR8*`@MOrX_Gv&}WFi^0o^cQ^h4pZt2dFb}Gi83C7J}aSz z5IGS!InU3>`nvej%Bm^^ofH!f52F5U_7L$m+S=O20*HQw@zR4o&O?0I;-#tg?>OGR zg%!!cwEXZP(NAf(bjTFDyI7mK`PZwcZ@WKMR#0bWXHPdsv#+5A(}kWN?CmjDR#pvRAB- zu{H6PQ$~A$)BkL}BlTfpR9{_N8(B_HE~0Mo`Z*Md-?MgoeSHEG)qi7cZ34m4BPTnX zyjm;>DV#oFH*juaquMqO7IOdcr_k(LUyh3ep<&sMC_Dir3UPX2VZjYj`oUQiDc8-- z4GT3?RdGpDan2*i(7<4lPiA6rQj8uiNSPiU9UXnky`yj6*(ryx2Z^7bUuRiUON*u| zM(9)3hn(XLVRB3lq3l77#3f2$q%&Um3&)pX}CJu^*qF+$M8~*gS$MbW%ct*>qCcV46xx z>EpT0Usa?cNME93QS76yrlzL$o!$nGU}h~?2=f}gFh=IL*_a`yRLrAxb#?V0FJ@+D z7Rp5XdEN$DNl78eD=1XyVMi%?=`wl3=H9@E&9->a=?L`|d((nXEFEA8&Oz~RI@sJv zaBB!|dy41hH5dq@WNNrXEpa_)WMs{8Jp$ZqY*1}%ZTrse29A!bBm=ljx05imKYaKg zmSVx@{rjhY@x0*hWkXs{PS`*gW(k7K#@q3wC8D1zO`w7ZEk)-+>*+O==2}NUDN%Z#UEt)XDD_FKz?XaAZD?o!C!G_vQe{iF9{c9J zq@<+p@VW|4vtfC{pkQz}JC@|`d^6|9@Upw&rn}FW{n+D1oO|{znU&o*LiMtt>E z({rK>rV~?xT=cf*kXqvwggs1|B3QedAgBM_$wb7 z2A}JZvL@}gt6PJI5XO|q6Em5R2iBVXUAv4L)e6@x{q^7ABEQ@wZDy1Jn)Bd=Zj3NE zbDi%3t;MhlxO9q@y9h@H@-q~R3kxaG*csBYogprV6T%)g*Eou|J+Fj3;=J>6=~ktF zFL!!!@^VD{{PcY9M9;`*+K(IUz#K4!Pbc*ml#5Qf?z03?=2Sr$p zjmBR^a;XWLij~L6ov#(xcOGUqN;Nb!Y2(Q}v@0tq#>NX3@k76Z0^{xNt=hg6PGVJj zGKl5O<>0b&uT5w|0Z$yP$$4b(Q&v33*+|c|BBV-dK!R0*%#v zY$R2~rgeq&@orVrGZdVg1MEB2r{<090h!ql2((RcdIsI$0 z?(^>MZfNb`+bJ6-W9`7q%)9ENLF& zT&{{?Es^}ZLyUAn8h0EK@39{~I zBywnIXi|oUhj*0eT{R+m=*o1}xJY~@C>8Pd3bmPOB`C3Fsv6RzQ9a$^1mLl@qXiuWQq>dHW?Rm%!^%@?^9EB*n*zHNGi@ap1%*La>7{jn%So= zi7?qQL-(KFT<^@xsKP39%o((RW>n8R;KMT3Kx>njIjzFKWWxm0PDk>;U5=f}XHjcbgo zxssgRxPUUgHUFFQ`?0Y|WhV4)2YppDbZXW3MCgIh4B^=7tN!sDnnQhEU0Fvbj}-wm znDUUPO~=7> zll8}sp;F|Y)R)=SRaG2Dyncsl2JP^eLKhG+0atK?_xNi&gUt;+j*C*asyluK1qQ<8 zwKOHY28FUw;4Th{T-g0A1P+Iy2)8%9&qKlejwTA5B1DGI z1qkGUT!#{xz2m5+hN}gQeE$*@1bfiP%KzFDC905*mW~d0TZGB6NEbf>C;H&yqp&9LuahZ zRIRNc>bd|4atOG|!O@{v#YRW(VgC1@IyVZQ2zQs5>QQKGG&ybI)D^I8J%ewrgWP*`5UxkOSI{$hLFailCt2IWkzbQAi_^ zF}e|CJLzH{vLH>J|5bPBJT(0IHF`M{6VvIVx~Hs=hy4Hz9eEH=_tb2O65Val6+AyA zPQ7|(zlNEOjqXv!bL9;hDr&2MRO4I%6viz}^*>tDOETA~Y+-S1hA(6$j0Q%Ay3Nu# zxPAmrzt3Ovo`tdTsVlY3>$F{ikJi@6T;1HNNL?wLlv#e8BSN?v zf0qTdLMauKYZI}#0492^Rxpls+&gT?gBur(wNhfNH^Z?<1nbN7kLbFjCYVMb;?#Hd-aCyyq)4LHA6B5>31+T9zJ9 zc5Ep;F8K(7hh?mP7Cm57W#$j%Oh&nsNV4UVDTBCX*CFWhhu^d0jvnic;fUcn(-9>l zN>97tajGtrKVPDT?C&%UzV=XO@JMFAa6g#%3KjU;(qgka93$R8RhS(x{~2nC_e?o8 zHC2N+hqgnWdD(1Mp>KKXR}zJLF|Mh4%3%f6l=*dzX5mH?v$fEN} z$kZ!YLZuT|xzPQro1@1an7{(#czlB6k{x0^5AIf%Lq$H%D{5Y%4>oHAPN}(K>T>is zpWLeEZP>ZF5zfxeWMWQ{MQNza_wuJplQ4unSX$=R)SMI4EPD4$TAsoMsFCFozi=YR z6$J9&j)-V!YW_yoNja60lHxVOa8y93OioTtFGkHbBmetrsm^Tc(!;eYr!ii_*49>4 zSfgcS**io{Ti2mfQ=Gd zH9=Qlu{!s{^0JP?6HmNVvL6xw0l|ND>Qsvz_4WBWUf9+Vl>G6#OY3VMavTg`7huuT*qBKP{-k5Dx+@M?guuy;3@REFV`0?NZ}-|E03^ z_CC89R;BB#w4!3RJUAV!v^jKL4WCo{&~WGOX&l^>cjyqh8LR+J1=`sY3s^;1 zW|ahjW^LxO5iu2U4AW(gU6N4{>R@vHTMf&xA6 z;lSl^FE7RixhgA-5IWJsxU%MEL+3d*RT_fK?&r}I1Z0)cfZ!x+|;kKu8&R) z6-Bwf%3nl67?dKLa&sZybKd#u5Su_p!|53!%89mhLq~E;mb(ivWw{K@;lph>NHGD9 zRO~eQ_)#GeN+}6bs#EaC%gxMeH|(eTQ~1h(Snwgq8(0e%=7gC{yg)kf;Em+YH=?m7 z5T38{Tw5gQ)hhVp8&4)?-#piSl%pSO`#a1*1BG+3-mFTT`;J_qW{ zNk||(Zy~)4$j{FY>4iO2GBSGIc_@4yn4FAXtIhmZ!r(hrOoFeujv`i__EgmIVPayU z<0SW@V+7w8;b;B7XDyo;nicqft8$q%@O0v8vO#(W2jQg?-~~VZ(x=nz^XjzXN^krN zz?{zkXHKA!-&LY<%POu>)`~0Z+=!BD-=)V|Wsr(#?!?4IZ=#aO!|$AzpC3MbpO~0~ z?VWcepd$YwHL|%|S0yDV+VzFLoel-U9K9()2KfVl972qzw;h=cT_(93>a^{?+wn{R zJTuv$U)@G(-)h1^62qDh$B8^uS|~> zvIlTJEWmV60P5@ksI#ZXoH99Wbz{@8>@&&ccNt|1PP?o|e0Wv)J)GQUddY6gTjC4= zrOmfoVlyTWN>85B-%nzvf^Ge={%O;9&-dJWGj3qpBLatQBx1-^C29x<_thsY12>Hz z1|`3f)6?y|F!CUS4tE+9acyP-OAh2mVW3=u0TxL_N-77du6csv$8?9{28cbNXSTK))XYHBFs!YQ_W*Z!ck?2u?5d=gr8|MZDYfYSq>HYGLHWVQKY zZD(huinh3%U7*C87;=yH$2sXUcD<3tf zqEHVt@#WvbS=rf&<0!0RO#_n1h}}=i|NN+adUIOwz0B0VrFIi zlh=-Ae4I0MCMpT7=X0Ka^r^3|{uQW9f0NFIU12hPQfKyUp(w!fwEV`KmxCjIF!PXQ zeM=R`01@X6kEtQDtrn!)P&nwevrsjDfq42CE-TqM9!LB;YTrU;l7xKGNG+KB6XH&5 zq$@QQl|B|oAh(-RmcWpKQ4xw{tHtNaKh=1fvj8`;Diketx+uDRMyjb;*e0;AjSx5;V6frIT;4$R{W8fGyI3`N1Tmt zOV$|#9&6-d+sNYz-{uLloVGT8heXo9yK&Hv~+3;;oOzw<+AY-yz?(|;*=Py-@d$7 zawWZ(c&7`#xtqGMi^!W)OF2R@G^18d3QC+nuj8RkYzE>?Pyn`Wy}q6+)QF125=pEb zUiyJ+i_&0Vh*CSg?Ok4UlmA|M4VoBUTvEa!l2g-GSZJ+ z__Mxu1ImYlFX6ekwPmb}4GW*7yCq$CTgWs@i@w}kgm*GUZ6Ej|`thza&T}Us)G04SJtU`Bdf@MQ! zm!X5VkP$$g2BpF_5{2@~qLfI-O4xz49Kxzbh2@504X!rV|bAEn4k}`P(YFK%2InivUKJLCO;~S-96MYGVbm zQX?{jEy=fC-|k|3Rcp9>4ODyv?zHsvC)^!ssN*aXmqTl0pcJo}h+n<)6JlVQ=txM< z%#`=QzA7g)u-{ZOw4j+2Xkd*YMGZC7(9wAy*5wnU3)msiD=$6taC5uWve0pV_i{5k zWSt!$LDl};07Rw$f^n|$W*60RbtiVB&gIivzd`#J&?i%80xM!UK=Ed-piN{rZb(Q- zsAV4KR!wIoB3yRbYA!!7$hBnBlC;1!H$RcCyr8OBdQ}nVf&StuNoQpfMe{dC z3u{(?=z^Fd&D8|XC%%6dXD9LrUOZiQXju(|Z26=w&|*95FiXU^RoB;F&E_eOD8}gI zS!wuwVV?7Lt(vr~fC*T{S!gL$I?j6^7UC;=*=<Br&t{)UOqPqgg=Ct307S&+aj`Y2SaMAYsg=GU(rC9QYRLC-e%8VTF4u%!AC3?G>9h$5g|_!a7ozA=lZT|I?`d*5_#HD3u2 zz-uS|`EJt`OCRYhh+mZsh`R)qdLjXO80Kr%smV!SUdWR4m@2f=&%y#hS5GfgwTDl3 zNTqmWZGLev6-yVZtRV8_H1hXnoQ4!Tw+iE6C)m6O$Sam~b& zVaCPxg$F8!n2YLBM#Q02b8V_Y>EG@~)HOBTvO?~)sAgKNb*WjG&we`s*zzQvr)({7 z(YdBVhbYO7ZzKDyRzs~&pLrDzO0R~v;D}+0UIVwogrET_151T4jXL7V`pkoa?z5Y_DPnBLtM0R!Sqz>!G;J{`o z((#6u6m<2>beEKpN8%e^0iO4l970eU-Y*R?__rVJo9F&6s3~U_FiNl@x_e~tzZ02^ zIaQ+f+^8$Y<4H98=Alwmem#GS0kcwq>8(MB)tt1Nw`{m|cXQ(}tNU)Cr9t?WK%djz z+Pdve@^6MAA56Q}zN!Bt$+X1*pV3JuR)f zw1Mp-xPaF%z5hX;!&U|!kRbO;$)#?RF+aYS-40pYvzcAdK=@D~Q*ga57e;?7-nsIT z1p|eCv!bf%rG546k1UWH23S*14ME%E=i+je1Fih6kkG_6GxO3^j zg9+1niPuYluhXj1ld}QT1aw2!ayJbbWiU~e2|d&7UZKm!^ij{i94H*6#8{u_(qeyn5k`Fg@hf?V1? z8zdy8uU8MP&CdL49YPBAdvf^LPP7z0K!phz=|X;$3BAvU%cLcWVE-I*Av_N|osyFB z$?TRiS$QzoQck7AYxLNa{Oak2w*>Bo9aOZea*dtT6F@9oofHGGmzdz*`a$k_7oLjN z^cVQsC>TU2S=s6(h}Ntr2eW8n9ESu<2_es=&CS2##`hnU!TDPSwx--nxQ_HPthQ>R zJWORxbxqA*aE4^q%=Gc^d!MGfg|d72-G6GUYC<9EMNLiIXk#b(p`K`zB1Pb?$zW%U z^c#d^LaW`Ztr^Nv#yJ;Fd?DlwPAZ}nXMcY5GpAfrBeMv3y6i}$GpsYB7N%)VQYlIF z!V*^MpzeDZZwHRTnwFgq3zdCQFC(08M?Kr=KlLsTD*XyO?LD7FDJ*j-ndj>AGPSb0 zdS?X{`wUBOzpRY%F8xUubVML>HX%z*>V2;Jbe=4`rpdR%4Yx#S8NJ@W)RG3#|XI0jBIOobZvZDvTLqo)X!0IAPC$~ zMo!YH`)UTiLJyJG(9(Lhu(ad>nB1nV8l*CBOSbzIaIp7@sXii`_8sef(Tq}+WrZ}^ z9GU8orRC)(fN+eL%=GB*5^(whl#BrE3CsBUSi>AuAmMQ4TAs60(eFSVAwLC zAPK-zd3e3Q%pAv6h_ZUX32k&;)+^rNy7Fwk{;u04SUJt6XdB7y?pgTXO|a{fLej>>!O$9WHGt9g}P* z>gMilcn-LJ(0uBIC8t9KrDS3<*hCRQ9-hx~@cL0=+!f}Mx9Yft>QPpwk&j6`Hx;Fe z^x0B62k$4|4hJe1%NK@sq=oZ|=vd(q5)Oo-5zb`O?IIAxJACJf+tEN}ic1J=Xl)(g zc4U_}fkBG5O8RAh@08w04KZ|%Cs?g5D%uZ*IBH@+o21D;2$N5J14=b7QBiz4<)gk< z52!>8aTaZPot@7zK1%9?#N47(3vu+y2n?Bi7Rw8BJrUcxov?Re)vu)Lbe|0BSI^#E zcy+x-K@8?C;rz3Zktf=lK3Hx4@gqP1LUM_Rd}8=g&GF#-^$c*&18?h~&CksUO}6bM zQZ+Rt1t;iE=o%K$NS}3gJC+Q<&Agg%RnvY89x|-Dx4w1R4z!ii?{it`>7~>Btb{R( z$qp9h7Dqc%;PZH6{RW9hNXZ0;^2-h>46l$zSpXx?SP{vbBRx$D==xJ!&5;uL)a^;BF3|5J0w+#KGgFqmwhk<+!clRAERM@x7K9Tp0Z4Pae8@!fMFliuDfe4zyL zMJ_N?ZA0TeQqUasiH~%OGE$aFa2`M-pYG+1eHo&!go|dSv$C>k>UFDv)3V0l^6|!< zia>d2*xlXbL6_kfJwgU5u0hprLXnc>W^TT#IoL@eDs4m9fK5m*CjbggEvqj*CnqN& zJI-ytRPcs?lz(#oyvf}kKYld#_4Rdf1wB{NZUEsWi4-I3w4WnBCbyk~NE>(}KA5lLH6 zh(=Ad5Yu=nyxG0Cw0BT_{oCSV-FBi(77CgifG(Yjuo@%RDC^ZbncLK5Wht!T zk_7=hQq$2{j?hDN4LDj0ghSFTjZl_^J~q^+pY$(NK44Twk<#YXT#}_R#ws^BqZ&cDoLvbtc!mDdaHr!RdQrf z7Z`AuqpRSJR5*O!VcD|UQ$atb*Yp^7JGXg^chTPu+t}Fn6E48NWFs+r#M`tjzU?< z*d;2fO2C{y?a_O|hxG$?Qs|7wgMF*m5<4N0d{Zq`S65pbQnR?KNQs>|I@r0h@c*&L zlM_i4{Xn?9RXDxr0_2BM1&;UU@T`(I6O~0U-(4UV*I@exKuYBf16Vo09JIqq+AZLA zjJOb5=-=O%`ylOQt#CYe>)9AwQd~>{x^Myg*jZCk(-T0wpNH1TYqHo`G-KTJJ6 z+l=J4%z$#5Mob<7rCu`(PU`lH@YUiUr-=Al1KOh0Pqne@?oyTVuchf{%MFKa`Kkew zuaNl$hSews?!w@RQ#{q-m2W+gBq_0Ju~D9hbuyup*wU+E1L-UKZH@&2NeEb%qHiYj zRPwRE$iWi3f}{>gah3EYy`t2q%<)*g{+CsK?Nt~qQP*Zr(Fc-HoMT7!lFNB71|x8b z|DoO=c5+k@b((=fv-Dw@Es3y!>Di^F`|Uq}{=5Rfn3SLTwozZFT3V0G?(VbbQo{Ez z^#ZB8VNfr6Iw~uFIziGF9u4VdQpp|X@k)>a-kq(rUB`oavS@WvkIMGT3jG8azgj>o ziQSffV=7ITr_Gc#vitaPUFrbA?O8fgg)8Fi^=&ELCF;ViXWZg5-09vGbl7}@>Y7(+ zHCj5Py|EEqLPA2H?2UN6{+*~a+J8(PGSpJO`~i4}j}p2@pqR7*b6fx(P4q&t9|T`y z6OMKwB9=q3=Z*33 zoY-nK(Wm+Kyb~+<%R^ly=~HxU>;Y%c0se7BIzn#|%ic`6)a3W?{aagGw*N3&N^-Jq zM#^u_NW7F`jU!$l*s_2y6fIT0#>y+1CUtK?%Sacj04QRNfrXR9TD)EUYD#G z$&(p7;23nydhNjD=^Ti(?`rT7F6fRa+C0T&onKfTA8v=y-N$RHQ~s)cDYMfsG{9wIxp zUcTx*nL0lfIU?3L0DD5hAoJ(|nihv}8EQf}j@uL-_f%bbdwb8>`FRgR=p#l1A8zl% zUl_FmyZi|M0u>gNDVWXxtMske8#6Ygk>W~D^De>30Q-mWWyW6)wV znH;NYMtN{WJs=(vlL|JrFE%z->-6JhKFhp%&df{sqTQMuj|+?GXitm%ItehVJ7uY5 zX`1H12ZE008uodm7{i_q%rXSFaS8=Q+Ll&km%=Ma-+YI=uY7*fu>7A)(w6Hqr3ld} zBXqnz=5|j!H|SPPk%{=UMv`<;?h20* zi5vXzQ^`GJjvT(x1^aGLm?KR7MURhQF=3&ze^o43%7`$LwgI7ZFWsYYXY{Z##imm% zms%!HbVGiE=87K%BO4F4!Xm?vV&4fnm(<-8^V%*M+4Yxd3jXE7r*(Gu{7+3--4&EE&b4#?~Gi+eSvIH|2oSWIGp zf_L%s;@~8Zwb?%gWvs1^U>@cYa?SY{i+DA^lT5|_$2w<53oML^;m+$=OBWZHp3T)& zy+P6&6hd-cJ)W(G$z`C$8=(w2=)W-ze?n6|s+QQfH z6=@Pr_nK@^&(9AvRr51iR##WMLN0P~NVM}+*5vp%S5~~}Xt#~K46(7YK*AA-V;yxu zZ?59^vhEu*rH6&cm4FPxxPT+2HA(S=3}tWDG` z#I*jbYE*TGTmV_+u?L7U3+lfpB^7^iInLmANZQQ2WoNJL0(eUipivZnzY0;~rgrC= z#qw`Yd0vt9YF}M=W=#I}{qpS^A3U;w3B-hlieF+PI9nzD8J3xnvkLbrEjyd%!Kb?e zcwT<_slCM}xUI@ShwoilN-Hc`%iC6ag!r)$jkEK~zF4pmF)xfMMj*3XOz8Xz7LQ@X)WVO2p^Z z&lIQBZMT9GK~-fdDf-L<(WYdhaX6u8V>@30T6XofZv+>@MPhRWlH#pjePeiEBm>3g zj$Qq(xB7xHY{XNe;gyA~OU!c1bK6Xejg6(=zaQ`h$q7M?wk}T$><9WYvS9Oj%KzML z7Geoq!?zLif%uEq0#EGgci(BW zYov@);mLs;H35^L0*YRtWRv@qKxq-Y>H=GUPj_eM#GGX?o28>;oDQWjytKselCJ$l zC&Etvps1T!9n6~B+t21qA;lRKSfUc{=NrCkss`KHL|mecQ8s?aM*d| z0@Zke>z5$_2Za$IlQ!gKscn+lhjEK|czFDt{{?leH`P<(glH;^+0)W+b-YyA=yG@3 zQl(}ClJ%pe#7;^Wro=E5p~xOb1DymsLMb0xTfzyYJ%^H;W^kF0KRAmp*9}p{DfL#= z)Jy>r{mG1+LG-_7LHD2cT$DsILgFhV-6gA)nzqtN;ga;%7a#B>JTnkoW(o&{gjfOq zav&J3@2mk_R?jUUk2r5h_NOx}oxz=a`KRJ#&3P8_d3{_rt@3KG<@_Zs)mSIUy#{do z3V;pJA*s96*xsIA@QJK2T=NWELnMjSMy~%}`%#Tw38LRH3`JR{oHN&1ZL~V=Dm^_t zMR>MGxJ@fU@ITR9NLTOZ(tq)aHx!-Z^1p6wuxj$HPvQKh5otHGdQgkD`#!nT^gkV!x#9&CE9+s(&R{rFDreut)$Az$#v-u<)4#5Txf&f-b8du)H-JGh9 zPFeUpzfB-W^E~SU8Tpo^NqIEj@$1)EkrzMzP;fLEt50n_b5TbYE(7H7VE$7~t~Qah zZx+SKqLQ5GQb|u&)c96^@!w3~X+C(1SmyC+0NofADiSw-LU)$T%*?dFmwge2Fz>cA z(v_NChD{r@wEKvzaXAs@~ z_+fhISFIu8n-$tuuWf%NSgy-&y(cu+dD8GykE|u9vXvD_llJ`2+LM0$zO@yj@8m`t zVh7AM5bS<8HhUEmAq`YfBbx4#PIxNd)#QYqmm!8%Yiei+3-R!{<5xwEz27mu6w#RV za$sR&^UtLHk9b=>;d3u;kxe9rSb#o4fX;k}8xCX`#`r&o9}MIjux8+Tzd*K-AQxPa zXds}R`1NQ$sVh~;YIBHf#V9kIQ5D=YVu*l@_q+8j?@!~?1ya`dOfpK0M91$loHkE@ z0`c4Iqj7e0)Muq*!srVI109_=*#kl@knhsIh;6OxCB70jZX6>9t&ZFEg+2hb!IE`rguKn^zq`S!vHFCH^)d*W;+sDSR^k(RUKn7UVLeZ`#Xxpj z(iEP;Dv)-36T~uiF~SNqK{EAUO2kh>#pd(p&l_Z@p&NW$T#asyj*e7e9$2)6_k?=9x=ybn#fRclutfW+;r zp)ntf7q07?7ADuYaK7B|A+MkSAhdPzTsmS6A_FL&5gMP2E?2r3(RPb_hp;}d?!E#S z<1s!y{tONdPJ$R7Q`^n$(o&}G>y6D5$iM?2+byP&bOI!!o`0AXF~Cgs)`Bs?VBU5~ zk=VZ`F@~9e;UQw`utSatpE(n;_za?v(k?fNdUVT>b#!vlE>oj)d^}r{*VuT2rIZxu zWubI;bF{?HQN!OM6U@G9Yp&K>JWnza zVfE=3P&io< zYrI}x5ZI3|KzFdUNXHqIPa`(_aqQ)ZXJD ziGl!`DuP)mg_*Xcd{r5biZNFItQgrz9U)m!t}ML%t_$k|K1=!}5JJZI%#7?Xq3J z$wx^VUq;`|2>d9RSdEcDeNMy~`K`}W!7*;0>PaIz0k;yg7`TAx*IJCH(9O9LYU#Gr z)?OT!m6cU^6b)HPfQbfoW9L}VJS4_(Ph?Gn34v<$Q?{?5;g`U$yQqm<%vEk z*wuL8%Z6;8_qe&ba!Dyu|B2+r|3*;>TNB~jAjAKV&F2IQM!Pn_6q&~-&@s%)n;m(2 zlcAM2OZw$NF|z|kl4VG1SW3MXpl)G~=B!6*?K^;^U-DsJG62@U3A)DcYo|irMXb~v zrcy*JOMS3q9|P`e%kfH9ES~)s7v-fW3lo#z+Q!B&bdcy40JJ=DOE8lD zFY{!#wH6t^x!SxH4X~(H0mLbl&7FZ=XV%F-cA(f~W~C09nDvjt8y-X0f5D1^S6J z{N&q1Gw*i!dx_d{J04ElgsqWyD*aryy%B8Mm-j2ypQVxl!RGt4r5%s=U*!j?H{OOK z2sxe*o(-8nd4y{kzvvppcaNXqkZg=KHmG3;SXWslAE;Aw84Mft1 zhX?M?P7-oany&If>a=71`$rVWhkgicUno~dq3hzHPam+HP$mrs`c+I!OkhK_zjjoL zV`w9#HN_Lw=u1~;eM`kJ3Dz-`?M%0`x3{0K*EBsMePULn+kQh#^ZWL}ha3{#nE*H} z#me;bB}vKb17BC<0oLac_*}Nsq$JlT9}z+pop7otJCEF}1?JJu$nR;Ps;0{$o6>k+ z87dAo$hH`*!)=m4Bpbvv&?F15NBMF^Z%aVp@-vDYWo|iOq!^I<0&-I5Pqp^uW`K0l zW$1VQn8cdUW^_ z4|3?mRSY;0)Ra@>Dh|-WY-%1B%6okbtkhCn2b_#F==L)FnyZb*NufK)4?gf!X-X6Y zwGAUC!}?W&!jX+r&U+mTM<$W)RbH!fJRC#nzqYxVGrqd=nNwUO=iESun5|y=w^vt= zcoq(`yitVv)EKbl5w(bLwe`G4+-k45zw)gN#A=v%Z`1_~Ca41&{}n?{2f3q!76Iw=ka0SFksUuQ)= zKKvu;v%B8qF!>#zeoX<{rX*3STz6R(gi=g;HjRqnySYivs=kWjEQ3LlbF4%z| z6a=K3a_~TO^Hu|$odGCTm|+88a7UjUBaEqk+cEj^Z;e_gF)E0POa{SXB@j^Y>$&Z? z3XB1?RHLDnt9WAJSb@g+-0`jnsMi7R{@cW>BqBu*9@AqdYLNt0wxF@GR^6p(j0<8R zcSg3p;*gFTo(uIAdiU-x15R9RCSh@%4|QR(au45EsPmtA~$dMhzsM z_OrK-tyoTO;zhbka9NAI`@bweeQgmmBls3#t)%qjYl*RvVSRRXw!X$jOsG|o@%sMZ z;a^-GmYI)~%(Aj{O4%V`f-+dZM@b6+v(1l5=Vhq*EkIJ^_%EOADkLIXQ`c$4vf*Xv z@S58SxtJ6qH+*c`R0{_hrIqJM=T z&vX!ZFnm@Ej*9Nbk7vQag8BreiPl5_a4-XJ(2KVG-{(!8GCJHSq4tIH;-GObTZXwy z!lV=8nDT=E;cZ zkRHz`5xYw$t}u#J&WnLneXFfwOB^U_j23~aGs9Z?`HDhmCDf1sWVm~>A$+!6ktmYj z18inzW;TXDX7AuFedYWB=4E;sm+f$Y?`|?j1{|Y>#l?57H%BTRh@K;+>W?Xwl{+$O zga1R=u`Z$v;3g(WXnBW) zg}nj;HlCFbTlGo)WV<~uQwYY2Qh`4pgIdgcot6*1QvwIrTt7n%PP$F2Lvh44BGg}(0P?+1bHkSz>LLc&l6ymr3@%9PwhrJ9IL7&PX_=j6(enpZVb-VlhTUUFwl1Lg~q6~|;S6En>_i9ec zNmpzB{F&#}lY6QEFB<>k(UmX=!03Td@F$M&i`L1s|3}kT21M0GYY#{xDP7W%(jk(s zbjN^z2uKP@N{O^|NOyNjD}qRONef6Q(g-3TA@MEl{qB$XiR0OG_TFnfwN#6-SW03#g@xaDU?pWBuSz&P(;KuKe0+QsT8;NFg)_KIi&f=l9>25DIS3+PM{lYX^y=n8 zY3BiGg_rC+U$T5R?Tdd-qQg_R|LI{>`pABgvs6`NtRSWfmo`Wqk$oCg;$Cxef7PB7 z=Cf}5ZSC!it|_tT*eu$G)uX9I2PxmX9N0g381-91!hJW@66ze^^1Q6Ry673xthqM7 zwv_UeFG&%pN(muP3#1Q~F;$-iUfUMaC+Lhug3pHCAUOj( z6~EY*EEn0oBW+ed@j(p-`knmS&UiT!cR?CxY?rIC#jLXWM+2aPBP$ zkm`>gj55JN$B{6L=qcQO9l<0N-|iw$?Yw5G-hk#>-dKGCd} z59%pdOorvjv$Iz}UQ>N1dGiHLD`RA4VS3svQfvKtsZd|x^p5Dmhq&;2i_A_>OOzIU zd6T83$~sxzv6Ss6jL2XN^r^j3Ai>iDi1tTYwyK#-!O(CNP{E!X`e>rGqAt)@TSZMy zuII6)Yd_2Pa35t8uPqixAGk=}d^k){T2a+!fSR-!Cg~@g$3}pG7Iq=iJ+m4oDPI73r@V87|u!A5}b6`Z5lo zEOabWw)oNNca(SBoeSNZoA(08HvVzaelB7C&*dwyF$MU`lgxxw<>h~3Vqz9HlUg@r zRZ!Syeb&Jq`1+Uo>(qV@tB&KKK7H}B_hk;QJ_$An%-FNfl(>c6DYZwG-aTY*cN+w@ z<3{LjFIbcRd^!l($W>lG^GYU1+xzYi^jscHAuY_?I$pn5Ix>`o2<(KzFJ6N+7*i=L z?s$=<^Dn4``~w36_vOIh(FGyrLRCMy!1z@{(kdYOI^4V_j(5Ts? z18{>Y8nT$mVUazL6$7N~Hr`zU@nag9bD z=K)y;>89IhfBWgT^#jia$WPk}Gg^wJ3UctuzKDzJ;8d}3aw3p7eh*i<;$YlmvBfe3n*Jj*g=975eV0L7e6>I z(^ZiPg$TbtjL3hnp=Hta^6|@;hyN(*ZNljhV^1sNnDAfdb5AQi#Kr9*pA`|vx@At2 z_HWWsjIUT#L&F+v3StCkR-kHlX2n-a6`l}U2Y@VV$7`2K=D@XDZF4p5=bkx#irw#8 zp=f6YF4kL*Eda#8`*jb*FAi}H_lpV(`%aFy3;mLk_$t4@rm8M4KmYOdtG*;F>A~N+ zVy3)IQD?>y5cc0f{C1t*2;;lpoGXC^yGKn$wMRoi(c}hF z;$}@Yi((XJ>IDE;NN|GR;}H<-gM4uY9OnDbXS#{fEbDaq6MtkkRvtH|8Ev>qCDEOO zAN=3!BqL2eCGPwM_4L_e*Ym{Bpa%FP=B$9kch(~7J%Q&RM%|rNPo;Rm%jJF$R z|L5<;;}|r!trg)M@SL=U-y7`QsbWe_f0K$hgJ^OZ0{P;cYmMk}UxzoUE0e!`<(RC1 zA5n;Qi}w$B!XCdNSq^orv)Gvb)-qHlYBupVAO_&=Oos*nv?gp zp6#x&;p7|sB7%D*7~psjpc$ChjTDbmulO+X)r@|5i0i>6F#(Sk`oY>byn{x$gleCFtQViUF;|fY+&Ja%)%X_48HAFoWiaZX5sOSwOEohlhuY zHz(h>71!YVk_P~fPT3%1rN339;iCX)dX4Uq#D*lOJe{#;Zb>5}{W>PdBf}G5o9|m> zKH<$3t{t^xq$~Ql9AuiP#G$A1HW@CDiLSJ|Y&4V9SF&JPGP39WM_SiSB4%=s66ReL3)7bni zLA$lP`|0f;38C=9-Td+A_({F3@1X}LQVpEg@<~T%xVdP!wH*RDx$E9?J->hQ7?#Yz zq6w3VCVVKeQ2CJMV@udyiyv)$4ubvRtVv&e2hINniaI}EYIuFJ_YaI=*}1J&&JRfd zoY69!Rz?T4=l&Ni$2$5uyw~d6(R9?*3pIAL@2VqC6XX9xbJYE&13(V?I9kTuWps4( z>nKmgN=5-IQqASzuM^~tKE+T0E_2Mrk^>?(JD*=s zKhj$9bM^2r8F}QCZ&v_&d%fz(2mH+=iOa_9UJs5WyAHMU|8F{wtwuDHX|c-vd~oxs zSQ;eT<@la&naRJB*zI+Z`o`M~bTs2m2L0HYSwM@iCa9U{31!@B>4 zdCE0S`41%#^`NV_%Vpd7bT$9ZiPd%iU&e^4{POs75`_Opb&m8dD{e8na87GwA#G`n zm#AB~is;?L23?*HL&te$j(w{AeRLS9B>p$X>sV>&If($xO`#udfi35wp@!t}sF?R} zD;K~~>tmHL06TvWFyu^3Os{MhN2TmmNKn2)s6-iaQN*)v`XCfyN1RHPeVzK$UJg3S zCESW>uZD_>9ah^HPmWF#?{jhagIIlbRR^?{qWnTamh1L%Ota1q>GT!+lM3iRl}z@w zwmvF#Z*dS}84)0Oti|s7l0ns9y@8ILsmm-~K^4Zf?x35n?40*YfB!Uur4=lKsT2m{ zZraA~q&&2SLx1n-Y@^TK0T0VkA9i6I0U9dt&PwNQGgKC>m9k7nKV(Ve<~oLEdLpr> zg>923Pe@LdE^i`>?4hOvcxrn3xEYZB+|mfOVk#QMMGJJ)Qy|^Lv$5E(TMszjzTysMene?ujLy-xNPneY1R zE`*nY@B7AB8hnn?_TgO1Aq9 z2Mt3|vP69?OIuiurF`&5!|~|MfPxN z_29xDOt``sfxD;{3`*!s{}D6FGT;(qkY7fl)7}gJ=9<=_JLzK$3U_Zw6MH2kr7)`5 zrryCM)Z(ZgIl!PFY}O(tf3sK7_b$K!-0+2vB~e&o>O)V+#z^(;_J(?*Z+b??{xnKy z1&zNKJ0aFrgI8>5vHIH?jNVjqpYdn%t(8uQqs)#^$&~khBv_Q2|5&c)FMs~9QI%Nx zXS$Yh$1q`S+H{Kb!|i`&C==wj0;KU3WI2e`l&fclIIdz#haepBEL3qeCF3XL#F->! zWIXJeUnmAtZUjQn5)>z!XRdA}l^|q)hBx${Vyv({@BQHd2x(%1|I4#C952z*d$tuO zVXG_{t`s@1f8UzKCZfm85Ro}OC1iQuG~Ztc3baefj1hO$0-jV(L*2IP!u@Ov&`{{Y zfgQ6AilFx`EiH*DG!&6NT!n9&UmdRJ)NJl(o8fX-THU2$Ulzs8y$@ov^_t(z4a$yO zMa@M;EDjy$WVgt6<9msxo*lCkZz2U-hbDv{y-uimC+L}F75kVYlI<3y?1Eym&>{yR zUcL_CCbz(ZL9#P3LHu)L!=py|b=>rNGWV0u%C_T`^dXbY0PhCqlw^)?9wH45Qub{g zKb{>C&ag*Logg_EF%diuvqr0nw5Rwc`o(CelQFqA*4ODtaMD6ULL$1p|31#seEttq z>-G`(O`y)sf{WavWpVE{)J83f4kxWpUrNG_zXW1Qf~lFAC8nXe*C3wytI38W!Vg`( z@vQ(?(F4LP@e_6}Q6wpI!hV&=gQa;y6mvimIfQwqt~OihxtD#Jfsfs#cc z#KjU7{@8jI9OvkO*`4rjoozFf10EXk&XGMNMur3iqTXhcmS zdsd+2Ls~2};Ru8cAlf2^mi*!BA|fJwin+gfqNuv0`nC)Md^Du&a`(5$DyFHXp3!}N z8)jBN=R3c&^x4|hc96H~Flbjg1^|oq7|Nt4H)W#>Ncf#T8ZD#VSPvZ$rVobZ zKUE-pVOAb^RPksA#p+winoLE$0 zI$#?2kCTgw#>!rTc`Qdn@dsX~;$MNq17|+r;lh`bo=quqg9hnkOl{#i zp$VOP;4++~U)DK%_p}B72gWNpLS3C#r}HLY!#Otsnk|34Ie%ygS3{gxE$!Wji-kq^ zjV^6*_2Apqf#>HJu#l;vs^Y=xgqZ%+g}TX**orJzgfNC!cmXEB#rT5xCZNf zjWRy*7l6VkcS?TNn_O-`Hu}XcnWOP=aVTM_XC)Qe^LR>WKshM*BQAnkGbb+G(#g2V z2_+&jvX5Wx1(wBQC^K1Skeuj+Qr1efjEucQ(8^V>F;IO^QBPj`KwSG00|jgTKayWNP{+@Z`ft5tJVJMQUiR$+Scf(;M@LKQZUNCT= z538yd^l5?!{@!2qH3s(YY`QFee9}YvLr*a|6>Uj8M|dm@d~rE*85;}n3zLQ>>>RZ} za?p`EV1`ee{95qv?~?9j{!cMICugHP=T9QN!Mx?~##qDY9ZEhD>$mLH4a4{EdTlAqMbt(BTk9n z0?@+a6Zn*m(4N=NWowbF*(19x#xr`=`Xr6U_1J6SO~*%5W@>s!`OdsO`e;Z(zZyEKm0VFMv05*TOM z4$$yi#+8OLqvv0L0|={Co*OxVn`=0}0iiG$2FVq0BDB5Li8|^o3|zM*yO6GCiycAK z+@!5c8dsl4L*RiHlZ()f{lf`Yc`27-BA2dI6i=hz=Bw5*v`SbtpqLg-aJtv1W^ zXc$RKN%4CGmLeN|3iX~H!E0d#%|;}Ml)}P|#ODZ%-tcg9``AL5#T&&Ta+LRw@pDt5 zV^jHQV7!qDw?(OnmMElnnMGb+5LVYdix z9@x0a1VyyZGAnWLmbYqGKsA~*+_~4|naY-FCD1y=IoGXyk7d>XiF9S+d=qtB8%jg7 zQWR5RBTh~Of7FR*^7Jg6y?1d$rBjjgt@wyheqoQkFBYD?`zOm`iUv@Qen4rzdwiZP zmNn|=?&|uYXIO=Z@6dIrVWnpnXL} z^nWBB%3Sm!qM}Vi2;;#iDLK6=$R*0Lv@D6U(+m(C#x7J)+zu`x$KTlj@rpZMQel)$ zYG-FBq4G{Tx{roPVsf(Y7-D(S5%lL@j|16kT5|2?Is88t0j|rZz0BXg7Q`O^Xlp`0 zJ>5c2Sg2W@@xQo#a;A1@P4YShU(0@}cxZR?h4rm=+L#)a8b>3gcqZKC&JywAS-oX2 zQ-e%>WMn!#9!!m3op#q?@~g0haM?m}7vL|-$qw?BEl1H$S$8sTNA~>5P(8%^SOWhw zNi=2R0*P-`l|c-89bR-7jD4(ghQxDLsCK8lBA*W;ialOMcN66ejB0mv4?l&!w9{L6 zxcL@Mo!V{}d{RYB(SRfN?mBY@2IhA~A3qvc9Wkp?odN{-3%W9+Ju=W$sxec2*?R3I zF?|a#oE| z!B0;}?VE;vxi4?Iw}9~3BLQ0Ta#Z}AiVjf2D>EPv&7n|Pfcy4&&4jkrk)6J$PA?*hwQm9rIX+aOJHn6vz8W+o`NrUxilTvR;ID+Q!V*{EU2-*|E$mD-lSeEF@LGBnLP= zj&2m(CbNJDJ_h~nFJ~zIfP}l`h^@9l%<10JUMge0OAfzV8{mfT1Q-pAWEue&Ai)j7 zI#0Y}qqsfqiO0g$aW0Z@a)*=AlAmt5#l!Jo%vaR#+?${)&>Z$r@as}&?wi?LGq99` zo4$gQj5GWtA*yw8I&WHnCuI{?;IX(2!`bB!PuuX6E@}{4?0qS<_E`FcxUHu|0p1Z? zoR+b#1cp|7ukcv(S0@Hj9;&*468d4%0;$1zdYt0J`h0lA;CE0a$|4Z5yBE> zFS?j&7O8IX8B{|jDONH`68I(vHD7&g?ZM}|y1ILfm6Mvy`i>G0iW%C8fclmKUC90N z#a?EtawS=o#_a1)?LT;&qd`Rfn!vGzf<@m13&G5p%-%>h8Be&D#e{>4+h?Ht8Escl zkS1E*Krz|s+kU#keQB1gMhLha;;)Xk9)5#c`HSDRS)|K{Um(=rwP*t2{N~Yp-vE6* z`cidUGlQ~$x{DMV6HiDpF9|D9i1=FCSc|xgI^jS^U!<4S#l@lABpjcUb4@ZnN|JUP z31^Fox}w(L$<9f8JxLfgnD?;vDk9X``?5IHoe%dGTb4JRM6(%3*$r1B z41-h{;&}p6niMe;D79QtsrnQ*1Jc+7&<*UsneMj zQEGO)!KCG=qciD{Odd4F3%|xKacSl0N4=E6+Xbb651mm9E6b4HPl1_cR(+ni`dPI?RMWXFT^M8@_U zU6P&wPW_lmRS??!)6%2-ui+H`00E>>dD;|49MaY>8!J2nj&BvuH{sxU_A3_SR&pjM zCztBgE`W$R;tEpKkyYb*xuW!T-&g+SZk0^Vt? z`h)ODLQRzpNXEa=DOFF7B~RiC-0`QYe)rDz>;6ef5ki9zk>f^P{}{)DUFI6Ot=R+l zWOER{gW9elPxwi(LHU>_6xwcw;@(o@oC%ls^R+N-rqbXYhCg&KkAls779}dXnFT#A zVlg$9>~-uj9;hiL6?67wG8~G&DN2`BcC@O0#jiu6x;_t(*h#E3!{UkJx*}bN7iw(f zmNDIJ#*R$AeVg;Za$xaY-IF!HZXUf$mX>_v)lL%A2MNqR5<25Kv1ZWr+}$X;p?W`u z1am7&7U-o6-;4@)A$v<$hk)`g#cedy>ealj=C*C+oBW-3qJL}{X=#lIA8WwPtrn(Q zHv;zAgc<9#%t|39dPEqgz-~i7@DKt;g$u`XgubQkwh^@}_h-1$HkJP%ZvnZ=WkY`( zP9;&?K2C|h3K)~tPyRVF8IbYMy*y7;PSn_9%0w%YRTdNxIUxtu_e^|#PT%CQRw8XB zu5Nrd2N%}`iv})j9daS)>jz5g)SjN6gu)F8AZZ$D4G}BaA@93n$$<2HBT~a9?}@ha z$~IGcPU~Wkk=y^+X313qY>;CwV$5B=9;<9I-oc7<9sKO`PrUSNj&NYTK377eS5kkS zy?{Zq_3wX7yDK?&+8bTaRW2fH!Csvfi(5 zAu*IL%PrsiJ>nB{y8*k8_)Yn2Tr8th|)Q%0CzeULfvY?h!K^ymLOPQaa*Wd*5UXlUnqPm)QPI#Zflf=4oPDj z{2_2NVcvjxf}JJEXzjaGgLS+(GaqcH6(}vGM_}E@YQx^ezFc2hyHs&>Lula zCans@5@z7bliRo7qaDKyve9^*(jpQQQzy3IKgNYpr$2@ zc=)96W5cG)C;!ZSrPMly1;$+7y)-#-Ga*O!L|P5=D9OI}0W?Z7P}z-< zex&5KTm>;hGaVaqAx5-jj(()y= zi)r96KZ39Jq8dl~PWWp=x$=KJ$OO^Ne^C*IE3fbUkpThW%VDd-UZmGj#3dufbbACT zXD=f`cTT!&SZnh` zbnapMeWmM1lxbR&_r+D7*UC|v^HtA2R0!EiV(&(Dl`ggB50WpD%P-dmXe&QNAPk%| ziD{kqkM0*C`v&L1ec2~RPUNl%5r{cCLAJkA7=^eo+N9}uLu?IW`~?ZP_R*vx>Tz;n zU9}=~)S!h!1R0VTk~=cOG36KSRUk$gKqRTIzQ;}~8#)yUR>ryN6dsdzZ*eAzsHI5< zbxO3mamL>8uckq=;mc>DG}%{>gl-}L%6zKOuG%l(oxW{3iTdt2i6(RM)h`gZVt@0~=&i$8o2q0CjYGojF}Ectewr&+3)7ZAf* z(W^Jv1|i$m(|><0;0=T&PU+f$II!B9EWCIh+44M(0P+S+q|5 zjpI04hz^tty7~#J14g}0GDLn?NqtM-8zG=8hR`R}f-lHy9dQcu?qHam^(Sa^2O-u>?~YI9eWwX^U;W%NEVgkVP%FB!FLqu3@6AeElTq!+H^^ua|u8& zhLi~xiZw`?d5Z>gni*?`34;G42O>TAe#(%eaE1t*p5I+Rxus7gY~|BZ;6)UM1g4nT z9k-*Sqf8#&=sIM9}XN*1I^1iaLTk0(s5_#L{uPq4$ljNo=J#H z5kUYv(Y$HANHR{YqzVcW!Oo=|&zA-@w@0L^)tCNZO%IO~wn6LM+HUc-$}m@VuNpP@=~r%Oz0g-i8W|fWlhP-iesozA z;TI4vQDHneYA6rldtXvpTdOBD7_TiBp8lSOifZr+vG?v=eP5IJ*&m2dUHuCMv3rlK zS?p#c^-zC5g`T$$%uxx?*ut&EUoDe~s-1;^@xw4!Ch%qQQROXjJzXhJT0iW*qY>5j z*N=aT2irw?x%)7eUk2Z^er|Tw8tpvkzklTyZsh&q8RfZALb4)4ge>;?>Nuv6(}0jJ zYsw{Jym==5U#Sg@+<7q&&r&ZJg8!Qq-edbjJC@1SM4~=a%{O1dItR_D9xyoGc9bWj zMahpOybJ2Bqx(i*V473$~Hwo13Aua64LOGQRH71GFb#n zL1P)q_EJ;!p3nJKNhQ2d4CU24k|jDN>aFBsvr4IcJI?~nPgi5+U{2FrMOZOGLT)au zZ%6QK`gdNn6q}C{N9H^2SJ&6S)CQ#Izl!N|BSw#0S=K+9o(%%=Qspo9LUesQNd&I$ zz&crtWnadEBg6|lzi1^c(>fa|WlMt~DX@lWvr5er^*>bIT@>g9FOEPC&aX4Vo+aX# ztq}M(x?TqYc~9tNa*Z)GU%I$>2Mw`QX%BsR^>B!nv|Maa^=Y$IWQCRal9pu zl#70Snl-ugBKL?_S4rTtoCx)iCV2bb5Xaej@%D#a1+K{SNP8uynqc74y1abZ733S9 zK0^x`Kq&)aZKml)b85!7NbWh`W?%?QA6ef6HadKJ(Wy?C4XJ|TR-wbG4Up#;fDtwg z`dk@}9O`a=1}QOy8hW}Ja@PWOm%wgyJ+XgcBF4*`yBbZ*^7?8TgZ5_6R+N@{GI#X8 zB{>M?I8=mX4zwUP{q6IPLL!sC+-H?b*WLZE?WUb}I}Jj2?&vDhg*$*4Cd&B4r|(y$ ztDnZ&Itch(UF@*gv3XyC@SCE+S@crp^sEhW)#c)wB*tw$0(|^l9aA(WUZS;2kwN+Q zFbXE>Mn|nhtms&bD(veIPYWdUjB$h+;p0DPX=zVpt4(s)%@KLoA9uF52f4VojCfSG z%3o^0sE!+t4|@^bZwr}#^-M$J>0hZ1ucZz&_sOmJ%=q-tj*K6Y)n z-iKb^nnm=3(n*O>C6j_K5_w9Dl~m}W4Dl=?9`5ez#qm184-0XC03n9z2q9>1Y`hft z?_}Q^$;bGP3leU$Dv1+HX9Ws9gjQrVP~o5YPI8~IQNte zqT0;yk20ECeUq^Wu8)*2xl-I(#PQ>;VapC@*49CprQ`_G z{9hbxj#tEoNqw7LTFRC|{{slmw*@10LYAJ{aA5O9w9+_p=O9U^GEtgvtxYPR(Xg;R zcw-p4JCmBYKG%KO@$@$pipUX{T2A!={`7x2r9#-LGt0|kKQ8#*ZxSaB@#iy%QbeRG z1umi2*pWq*ncAFu2*WrF(dX&~$3|~Bhq3O2D#IE>2dSNmj0|o^gJc<@$tQL!G*pvN zA~fuWo%#T6dBpP`^?oe*AC_OXIz0Y$I!TyqxG^}$CGu-)of*tuDC8f!5zu^Fp2-=-KI53=N?121)2Z@)FkG@ z9A&@sfstK#QR~u|G);?p8D*%FuKRv8w=rIp`Qwn5Gb($xr-=!Vy;q7 z3@|3W48)X#Spp@4qi=sieA_uT?xOf-#Cn1}_NO)ca>CYO6;*d zSMsPVBHiLoRM`FK6XtM^g@(_>Sa~564N75wPt5~;cQT+7vVr>kBX)0M;p+<9HY>1v z1k^uH7-p|hV=N(wNj9J~ej zPIDYy9wPgJObxA(lj>r;LWBo-gg&~0suze{S>>TxfgquQNJ*PMNyuwc9tO#Wd6FBmynATI<~>7Gv1D2 zfJ1?uR5RCiLSf!Du%7sqQed6k>3;rt;*Zy#!3&2q7pcv@JO=!iK1WzZua&UYr5mNW z3CLM3i4Jqz6ba8H8&jomjI^((c8_E6iBeMsoNvBN3!9-9 zURoB^e|o)R#VU$XwaIHs?ktyq2i^WZMr=yM6n4fC=h!U82D68j!azCIkn1?seJlw- ze}PFrX8|z}F79X)+qFK zR^JL8O5wT7W3FHQXV%idz@UZgsu?R61J+A~1)&=w8|g^MrS{#!uVDLuW~@R$_qVII z(vagCNdvBA`XUOd2QEL2(UQe%Q4|bBh|hLxTdVsGLGc*Y6AlAFNKDkXpn1^&ljzG2 z!9Sbh1$RTk9%3gk;fsGZE*2@LdU|^EJLxW!H#195`A@rn20j|GH;`UYalR`4Timu* z-xv~#rT(0Gr#O6T;tRE1BafDsD?ZMjwYk=t)5IG44rrnQ&}H3#d1XM2F&S0s(b(&& zy?OW15$)9+u)x8N0Ite$R4DjFJSbxMOcSk3iI7t86)pO2_PzBKX0*4Q-B|^_BeUHQ>moGv;w;Zwxjpo-MJI~-uEop!uOsu za%{Nj%b`fMn)O6DmxT=z|4dw}upN*s%V>f7liuvPV#u+y#N7ujLD6&)=UV?!E8vyh zv8YmjfFgze#F;E#8f$9S1ll(Fe;V~;+#YA_I=2hEYQ-pus3Z-``Y|ly;o*_|+y`-+ zos&~#9&)=mm~5ZmyfQs?T#0@)&9r;F^z-Ms`~rwl^?ee!#LYbTzN2V$Hs~qcZSIE_ z@}~HAC5OQnC>+T~fBK?eyor4DgJNkO>cj(C`sfq3@lrgc@lvCQo~dL1wU|frD`veG zV}JUwNwjW9K-OfW={LpB|FFK?O)!GqE z@Ph~Qzh&R4R-sH%3VIX%HejlU5n+5M&e@;tO2U2w$Jkx~A< zj`+{IG~SAik$I%s=M8|hO0~)y^jT^s+86B~7xzB$TYdAaMXVH0G+T3=xWeP#Wc6|@ z8IC#22}ISlfvVO7(wf+*d>bjj9LTG1b{$FR{GzBd)gaTIAmqQi+Clw!;b|fD5cwEZ zrw{XAA#KW6%tcx1?B|`Ez$l-A*Fsk!K$y8u`aS)`;MTH;%Yt$|1lJYw_e3<5yD3Ab zAs;?`h+)!;&26V;f2M!U5lj@cKMVRu75vFf!>8 ze2h4?EpNOdP6CvUUHH+Sds<|f|4~Y}{67JH>A0IER@v<#LGbBD=hR15>ovlh&N?uYWGP zGov+lj!Vr0OGVWCeW^^(t^6$JJEA=;CvcweAB({_(U%tAw!2TXZ16g7wc5q!dBEM~ zPsO}6Gh@X-_47^eOmHGC6Mu43?0I{B?sAzTGhrSVKDa0DSjwBM{DWk>OiOF)>$l1~ zKgM8A+%DyiL=w7I!MJECKY^4(qv0jz<99UGT0T^hX$NT*`vTv0+MLDVSNB5K*Z3Gh zE&PHPK!}F{=NiclvpdI+Jdw5lRB=D~;6R&Zpqyh0gNS(P6kmoZuPA;Heqfrwx0DAdKhTn-&vQ_+3lm=` zTxi0inK3n;J)1^iN>;TER^rbv%$fX?ado75K*>X$*1_k3<MUYx|X6dC9vv-qjt_DtNNMS6l2q6JhjR?@YCc zBUECb1^o z(c5j?xYW0>Lcgf&UuUfSBxb8zeNrzeV$g=tAEO<@@2pc@#!Hn07`cg_ijuZ2$RSI8 z7#Hp}F8uls`SWL(!<=juOE9gihlfbdo+e%)In=E;*k9)eTcDAp-m}M)*a8Qq4>Vmg z?y4*7v77H!!(-q&OSkgRrn-1GHGfb45@Qsv!};DP@%>fk{YpK!mq4oE~~^dQgptovS1fUEI7%&g>K1TuLA*5 z@j-+uCP-`IudOgzCX+I{SA^x8hFOQ{?s*L>q0wETiowZ-LS zo)D z{O-toEkvCFy`E|23u4T7@*cnDh3cA`nx3$TE3%#(9RmbKxy^fKaeGF$p~~3K!ot+l zADXHp$lYItabc+9Es`WV?hz;wzIn0ERgd!v<#|iWX;Vab-qk4xp zSbXa9LcMV1GOg!tg;}%d2}N;cp%CN?T&X zePSt4T>Xhr&|g=A@qgt6EGlr^aZ#|b15EJw~TcXviJeQuLE zAUS1-`Tl73x2Q6~BoR*8OLS^H&*eL%cgz1dB1<4R;QC-)_ZH=8{U1#u)?1{$4)t?E z7r0^6}0V^N;7{Yx*HF^ z-uHID(zSFcA9R_fC5MTYS_x%G`oXA&doa792>bc7M|Bd`u5XVy&QF4oF3JkgRE?IG z=f`PvO!`jC9IGZ8S~)0%y(aW1r3dCNVp#+~Y*o6O(cW~JQFfs-KEc@7zZH%e2-CL- zONN{x>7akmE)49|Z7l7aWT^Q$M4$OOzw%@MOG|W7+uf2dz$ezgPbMLsX}||h@4Tv8)Yc~-VIAOlEdQ~ zMQmAxF+xY9M_gp)V2f?d5;Z$?CT^*3`*WVU$q){dg_i6FQCT5nVzn3fae$sBv!r_7 zhuF{08jgP)dMjzq~g=_mpQb zHbHO7{`&wB${jeEb+Ol7iz;-ZGbi=~A1LrYC<2G-&^1g*&Z)y!G_+dcA~MJFpJ#iL zM+dm^%`OdC!Nb3U$Y8lme!Esb>H*E$yM(eSTEXg{qdEs=gq}AVreMn(h9rtMK24m{ z@w_R~SU#Nu$CXV?Oeo0ap=}eA#Z7bfidJnSql4KCYV~w+$f@zOwUam=b$lX06K}FB zjCh;vcXg%}_*DJ&cuNAaW8ptE{)5xeD6z@l&>F4HnlJusxw-8Mq}T0lDiK=+iZ5hQ zC#2~$8MpFD_DQQu+9Y`d1nOfroV0bCp*dKD`2*->KeIvGMvHhj*gXu?mN74Oht(~c zV*6E+3gR8%(rs&b(r59*cKSqgJt#R%80l zb&Pl6wM|W)(agt@q;3Boe!Pv0WX+ZZCPci>AdGUbQ$nRUM)5m?gq2e;;OYEw{~9_h1WGPc{kqTaWC@uE^Mnvv3i z-4y+cllm5O?^nsROzlq{RiJK2)Jj{udP+}7p+Q5`&wYm;$}5&0srGa6atEL9NgSb8MX(s8zuQgF-@Bx z2lSd^QAblWE--wSGq@bN(pJ%hftQJkCq*q!St&+T0)}BLtaj9Mzb=xVw1}m(^_+ag zMik{7WD=8S8P%Qcx_UQ6G?Mf7E+M5dr_%KBext3>kom7a>-{)NYJGP~Ei*oM60O7y?V5w&TS!Pd*VE9@_y~+zGgx3*p~0Mlzqh6^ zf71RfOJpbv*{h_xL{;`MM>R+C^4<*sp;y$#oS;*#@Sq5kM2TkeC&pi$1~L3VMeE4e z*YGSK%ZXL|7E+pJw9LFK_=VZKIzEVv0X|@?>jeZj^CvwID$t2?nn#zz4U5|&v+vbS zpnWY`MQ@aaGlssBQ7VRh`&Q+uO_;wM%VAe|lSOtYL*rwd6)mu9ViAacVH-Y?)h&zg zJx#qQ_TS9oSuF<|+5Ib{pQ!ox?~7OkVJy6gT=G*=%alu5|Q6 zWe+35%My&jj^J>B;R6Y9oV2pZ?EJ7j+Rv>F*-4PyV}JX?{D!cX946^}pvV{_fS;|b zp|$gn7N+fHfKBBV6y8GMB1nK3jL+IC9blKQgMOS3AWoc?#m`OP1z;CSinf*@b)r=! z)(@T1m4&lx2RXh)_j+<_Xp0AtzQyK@@jG3||DQ>S3ilvx#CR2(-9l(#HC5WdvR zf*}J{!T(f{S%Kf*U=6QcYK|)2TcN%onqXeF&A`h9-QTE9M<*v6f9|6;I}>!M|L3%d zu)px3TgmG^bx<}p`lT_@GN(l|?#=ay!2;8Yw>JcxfJ;4{QlpGSx7KMnPx1PhxjBE@ z-~7SHGqWGCI6RlW#>(%N5o}}+YBpoLXy5@bBV`tq)ji7=&Ox#{A`?CM@?WJvJ>Aj2 z%UK7QqG;ljDb_EmOF2bNddu5$OVHTMBGE6x;B&t6`qE1X*RTRf&kP{DPoUz)G~b<+ zO|s*66+u>&yU{v+BXib#WkTc)qit<8jnP z-TRn1Kp~`9sugwb$CjWnm0Bmxdx+1=gvHv2RksgP%L*Zk^xm5qb8~h+(1AI`T#D~c zqABUxmZj48{t^k15iW=Nwk>loh=F&85zsZA30mTJI9R z)b~Va2*jk3pk1{AiO5`<@eApn)ZHib&;ZGUT)_p&-!qnsHdCrD?zdg*qBUztnWzWM zl#Pwb>`HQao6u@}*y8<1+icsJWAy3!l*cjeM0A0Bhr)-`$^J zJrnw9Wfnz-G%2m#t1w3UW>RUIK;6)WmV?HthQ3_1EKHvuY80NHO~i3GJ&Y?o-z>do zzUSFS=g#$=hi$@VAgoF`mePCHAJ76sCDVRZpvEF&LWsS~0MVDjmDa*qARV6>NN=e0 z=N4A6y_J>2;ssA{=&>;~3hea~038TB&#GuIvrG>--QiRgcM+%87rV*J&+k9Bc{mNv zI|IcJ7P@lttqV7FvodRnP=QP{NKrH{-yk4=tj4KC6+Yq)vV+vuS4QX0p-MCOKKBX3 z^h=l)`VkB&V{hxnRTGTRB_P1$u;EE~tk^}#c6kXFJ0ZS;0*d;|XHJZ3cL?S--KDAT z#6^Kuq~vXCS5+Y+GbVpH-ZdE?}0IpOw{oE9-}G z$v|n)?gC6#cf7Y|ZH$g(3@e7Nw06_VEv8;0t~Dx1WF0|1$@1_p?YDBJr#86oE;4L4 zq_Soe)V$6_YBgAP9s$Kt5l=~@`O1Lg5Mzj&$|0?)2t{R^pbF>05m}u1#Jp2&GsD352enxF$BLkA!eE@M`#iI z8RWXarSsfRw7E3S@RDx;4DP3!|GQXdN*$>i6#nI-2b8U|S=((DL|6LFJdJJ(c~XI= ze*@SA^-B`DLo4`8#Xr~$B>u2}sx9&-CnMunv^I&pg9bb`rmT|c8Xu1J_s*#s^po#= zHHyWejd}h2-lSsW&e-&{De5jCS)hz#^Fs%u23`36ECK zgkO3)G`fLkH*V4&7H89Y1ZNG(2v4;dB{UmZnw-*)H5!y|S%mpyjC6ZeI^oCEpbs2Ww^CkGaNj(_mb5*Q4WuK&Aw-ZA;Uu@~>3&z5>J+lRe5t)z zQE6B`bAOmtmOCe)B82zys|GZBeF4LLf|2ou^(rNF&RSmHP=X9?FO0riO{%wMor>=m z(6HXhO#OHwVfU7#w4)df<8yEgmgcWD5dmmg<&rpIkVJC7Sf4>EnUs076_I^N?Huft z>Vvy0gX{)PP0dek^`EL8}&JL{R4rR28zgx zIDE3hhboceeKH2z|J_K7fYYktB7TH{i3^2EiMtI|xU0)m#T(wyz+bZM$CzxIsZaxBjfL_V#+{9tms zq`J(Nqa>UXj-FmfHpaIM@I%wlDVa>vl1CBV7Cl%4yJ%_|22P)!v-7%qudax1h7kMd z<`c7N>D*2$n%M!X-E&L>FPZyAGHoFP3f;FqtiHTYZL{E`Y?PJQ-MTNVM{!c-M8re+ zL?Lw2ywpGyB_dheU>89MSZ^s-fBlnlNaLYI`Y%7z-HqL;f=| z{eQ5Ti}@=Ei5*9r@FkNXvtJ%A`IKD47TQ|b%I#fLAOC9Va!;W3(US%ayl~=FmSHDc z%?r|^y3I8t?|^FiIy?Kjv(YC-lanKT*BvX*e;$vZ72qMF0RaJzEvsj2n!YnYPF@JC zLEkCYigHo4P3a+f`m}cWd>pv>{8z!6TFT!((FU}E6h5%}^kN!HTYUirO$hbqTo4*~ zNQi2?0rWvW+~7xkOihiAdg3|5Bc&Xr$T!i|i6=cA_lia|LcX!#m&rJ+To96}h7-{o zY0(PO+SbzMh&l|lu?xA^Gbg;%nfj(7^1<23DU*xbjQs%-hiNHG(FW373*67nja8!( z^GT$g=S}#6x&^c(C^Um^g+*%foUd@p2u#6a(BWj^EeRV>p%3 zfP^R6Z{Bf_EFj8?<=)Mg*R|3a@VHEYC!i0CB1T_D>z44Fjay9?$UvBNm&!zfJ>A#^ zEXPNOhwBbRn*3pK3&C&cjBahgdQJY%V_r1wkp|=({efvWb;3^*OKeb+3gWZQ`S}@OB zy{=Zx_)seRl!&14U6O`QO3Tr+@%J3PvS)B%|{9&=1b)67l_rO96nQ{pX!BD8U+?I{_8(UU%*>Xp6NdNUSS2VZ z=n8CBS(=mu4#|LU{8ZqUtG(@vL8^-K^e!29hrL?SGw;wlbB?qC>ngF-$xH+hWVvTXS0&CdkomX$3pLEOabk;o-YN3 zg@uV`DTNQ>9v}=^+XJ|(`PH1ol49&v%yqcXeoM3Z$>mkz*Q)H%-E6bGiVB&J%b-K*w7kbMRt{{GkBvXeUxdmW zi_?)#8Py*hAB%ww4mG^%)odXOV}S`2_s411xIZIIxMql)L$;FpZ2ih%wsG!>y3rRK zB9Rqma-$-en8_9nbu-~h=qBQC-erad&x3+$?ug zNLFDc-dv}hbjs|rxR|AgVJrepvc}s}D)$95YE``8JbH=-iM(mxmTw~7WAeixiJfxAyfJ2_tu@^(9ia#Nc={c_yIK<6!IE4 z&Fqo|7c|%2Pw$VrVDe|u{6(;@lZ(HEw=l}NB(1W<- zHm1a%!UeP%dX>aL_y$5l&@;UvvO@dr4z^~j1hIE%S|MHPgfR70V@xRDxWp+q-KrbO z{AmA8+uC$_#1@912gm^tU(1W2t4J(m^5>V)X$fMeNxtlOMbfqT7QO*u24VoH2#F9J z*ceV#R_H}bPdPu|PAhmZ#+Lgz<6f27=r?d_Zghow{Ep?o4c@B%_@cs1-i_nT|7u4K$I}7XcjZ~baTxYG>w@#lKbcyxr?H8X8 zTAym9DR7GpO2s0mD~hvHC@YAL!ypEp$8OYuRvbhptFoFG*1m(StwZ;N#xQm)E*SO( z0>&TZb;U0|b{Ca_yXQzlMHNZ@=j|0uc&W~=4?E_SPp)1m%}6k}z-%0X-Q{%xVcq-p zIGk^JJk**MN%3BBOlU-^8Gog{%rhwL&-ZHj9?0RPKpD~ky1JvvPr8s7Ny}8IH|YCV z9Jf4_fSTQIF`0z?x5>;C^^^f`s@xELol9<-$RxF-NL!RV*4}z?W|u!^Qw8SLF5T^- zW#*9emYwzhdWK3qIgAKu{G`Pl-)@fC+l~$n^6@@I^d{>zWNwKa_TZK^?fy(w&L0_X zX=1Wkvh^9(Ih`ysnuVFJk~vn3n}mwN(I4*g;rw&EL#sH*IUJ(BXJgr;h@RXyNYuHq zG5g2c?BnS5Y;b0{U9Km2EKVN#+Z~%KzHjzA4089KDT~1i^RRqZBwb2g!p5`zZ1g&w z(Oyap50H*H=vr5PsBLcc<9>e?pG3};BE--X^7h@kHsiTF#Ya6*U9Q?sY%q1Upo5Mq z_V37~FOMRk$zzktF~t5W_>znP>P63k_oK=XMi@(4d)2L}v^!^@NpA2}MG~*8nkQ zwR2+oUn7_QP1dnt6_no36-&m+ATg$6oq0ns-biJru(}1NZci*R+r2qUke6p-h`IgM z1h1soH03HrO%@8dhda-%*ZFMR!)VFcw?B4v7o42V-;ua!215g|UEUO@1`xD7@ZE*2 zn=6F8@5SNlWQz+7smQB|bCMEsAv*-B%f=~~B6P;ZkwbxLW02=h3&R|%7c1ja((HF>y85V6&nxy(X{f3x*+ipHdkAcRb7<5kmZi6!EBif1c zW9|ahXU!JHD(|7;Gc7oSG;6_s^Hyqw^Hhb2imZw_u_rE$uHNk@q<;MDJgAHqg#>?o zs_WI8ut;%htiK)k`0`%NFbVIFg81MAb>Tr4QwO}%GX>BCy={-2jg$!TJ-22>u8(6W zI%%emb+Lo(_Oj;%NW3+W3d1oV=-%Uev7S|?_>m0Fx#CHB?@JOoyDKEoxuPSADVeSs zeabx!DQ?hpvY-xC3e4XcAK!mTfbX)wmioCwL-Yf?3A51ywmP-s6Q5b#WriJK}PS(DYT`I->S%#X%9K}2JS zS_P=_eYI}AiUTIm%HULM(`qw<^g1l+a6`3l(OeA{yADgNRuwnw6Dj-@zkmCy#eNJm zkH#^KOoZVy zMb>}hLB!W4g=ACQddBPgD~EEA#K4~Wg>wUE!=o5j(p_C%Ks%P3fPPl#nAq9)%AQ4@ z>o(sTPe5#bu@KCl3HZ!?Ka#vxUPMhA5)gG>fQYz)xpGSJ>ii%BKyenMU`gT-z8}*8 zE(~)pD8>LzeG)4BU}|6lr=>2aHiy?42dumK_w+gSoNP6TR|AsMUiS&FA<iFgv=cAEx*y6^XmO5n@0%jGx@JAB< zX$tA>e^}l=6b)nWdc}#szC+w#odrQ50?T}gwud-{HRF6Ck_9GenC(ATSKrYr5n8jJ zaL4pEz2Mf3vnvqiS6x5*mE&eKZetxS_Tt!}p#Q)(EaGc{#ZSF=mz5h~_S(pjPcdw( zQxVBeZ_30GAT&mkvIH@(r)WRBbZs-;*%=@!=ezkwQM<5%H5&PzeQLl~WEwJZ;D#-NMS6wT+UlSS`PF3(9E^Os~knHCa!AaX(G=EDN5&A#dT4tV5d0ED=v ztbbnV`)9r_2X1NIimIy1Dj3|T)!WH=lX27gG;z$Q)`e=pYZ5JdA)wkUFk@J4uD+qe zZA_B>PDyMy(CN)rB?k@AUA&yUQ*1x%$`)x$UVetT*1JoLP$ua&9N@Fwen^>Mj(x;! zT5TEl65&3GwDmeIE|ZDWehRx<>|T}M3My<^6Erg(k}H}2#P_Fpoy=5nUK~8o6BE$R z7J@hbZWSAZUXK|!c}~76bi3dBtm3fGEc}5M7S~p)v^S$Fkoxs){`&SqD7T7hWy@Dq zozu!nAN4r=cX2%a?PxLw-gC#H?jr5%b)Kzpw$i;DvmsjjW(nB+DnGTuX`0H7OE0lP z?!Td*8kE1FshYG`O2aI$0!#S(^?nv!RwFBDrGoSc6~pUOIEOznY?%x7?XyQH`k|Hh zArhET4%Z_XtzGa6S|w50vhME;2;MMn`Q7Be2~XGnCY8Ca?r@U(W%=*yPEW`X4<6&m zF@P7&j50b#4I)5ZQbs!ZXn!fQ4`_ET#6?#=tHF{x9sOT>%cMk_0r)s2XZEt{V>EdlML*q;10 zbK!$Qr+GmvZ*pPcp1MF4-7S_qCyZIO$JblL(cY+vzd@GO;-S&ExFp!_i=*ARnp;>< zO#P40L?uv>Mm~C+MMD`PN;|dYzEW!44OWso~Ksyn4Cl|4#S^EcbS2Pe;uX! zPFdMw9Ae`4rAW)P;tIk+W=p$x8^@+}(<55$JF(jt$KhQCDFkI`+ThxdD{Kp0>l!KL zbssxlM~S$6qz*6EimzTH1^TQBV_*~nu?eUVBl@GIrwoi85rC$V&7vm#Dq zO=39Tk4GK^Ek)8?mI5@gAzEs#)-HN<4==>+TfK9VM+iy#V!>cBdQvFb#UR7v@aNCZ z_5SV}{izyFd{U{S>1SiJB=cpPFg`0=E&cV-{-zc)-jb#Sfk}j7z~%WrDe_cD>spz~ z`T43+Qzkskk&-V|MLYY|u#Twy-v+`s5Iz#ssl)OT^aNspBW z;L;|C@XHp&BSDOd1MC782UOonAuG%7*Uc0Sf)s&`-z;}2IoprEJ<>v71P{kAqgMXK zGabScH0x5`oFicz>pUj559jW`@(Zp`b;rIC_I1svp~7?c#~w-NG@T)&J}tDL@88)! z&lp6}Uwr|aiq_Y3RhEW#?;gL>Y|e2)C^@F2q8okahY#6(dw*;C=2EXwW4J6PbySXZ z&DXw`^a2dsI~bpW2`$oZP8kO^UAy`K)Bd`Qg$5FZ$wN?ucOMQib|8~WZ-uzv#%xyy zH#9XFOQn140wZgIhqDtw>G6qh=(Oy046Hom2GbC%!vSRfJQWd?H`ddeKLrZ*jO->qQ>*x(2V#ALpa658V-Q zVq}>{m1fW1!zxj58I2_?u}_NNq?^E73^U@gl9=)%s#aNr@yC;o$@^y5Y^#QSN;d!5 z>x^6ZlCT!}1ZxydA%_+(Fp}fhPuE>sIH_-1lPl5F5M7^5Qw|UN;=clOPMv#Dz9cGo zmZ*4SboHES)zCasH=+$e`Mv=HKnR`f1~%+PS|C_INe|vq-M!a^*qR1|{Wj*le9D zvd%y9<$U#2l}g|A>mpl1{1kd$70%x+@oBRLyfTc$Mxl@p&aC%$KKM1<{ncnz4d@CA zrD~qt*dIaD&NArVOmCj9i@lg>M%Mkj|D;)s5|_rXbLDAl^8Qm85;l8--Y9#>I&&JS z=Ck>mX%r`7MyO$?I&O!okeg7uZ*^JM;PrB_vtkdGL9**1kao+{s)cYYU}f1u%b*Q* znrjw2NX}GqSr`V91oo`L^o)!V8J36Rd{i~Wm%~}o)Y!f#ezACgThyNtk)GO+qz(?> zGN)+7{QTvMWvmj1I_c13io;KnXh|B5zBxLx=Ku}Dzrlp$xK){c=Bdd_@1HKs@dU!7 z@P6GAvEBMQHMvm_(RoqZt-D-oM>kc;S}#LZ6w!_+X$BFzCT!%CB4U06ymtY|Q^yA58GHw-*#256mTsfcemB;OE85ZUO*=MczUVCrQaT3OG8(rPa?jMeEGvX&2dTrp57jVSlj z7J#HXi+!ZUi9d=-Rx;+sW-MLPtjOj=N*_V-?uOWG!?^8*=V3b%&r21J-zrfg)H}6F zx!UIBK1Qu(NMNy>2mMSk1uANm#`?k zp$cjw)=|%)eBRfAph`oIt_D@!HnaI|HT}C%Wp`_Z=4mTn&r?04h8!;fvm;}6<^j%p{%4`C>oY_YNgdF-pke+TgSv8^SSD5Z>TRsi_m3x}%ap-=xT zi{@5qy74Y>)JRhAQC^2dQYL5#%F#>&ygomc9GhHap{%17FWhByQ$c^{=83n-(3|%l zKXF!U>i5t1dw)f2g{@u_q=3t7we^VohY#MtxXNMwgs?p>Qmxq?mJQi;C1}qfM{;?? zhFDycOhba7$0^1qjP?A!@FpkfNe{o#N9hmpl!~8jFi8G1QXNXScC~cFen^uVD4$MS zik^ZmB^t!bn*Dsh=RE+m10yy_G1o0BRtryM;3T)e3l}EU(H0B8*(sd0?8ex9CbLuQDpQNm z1kz_v*B~u(MlIP5^Jm~lNT3z56$8z$qQWI5;xz;8a)Vd>YI%Np=CStXc^S@aS-(!L zXv7)$DAteDU@kX{@NJua35F>D3v{2;kO>tedO`fMAT=0%n@ zO@nf=zv|dy8oWtovVQaHNviucPpq`GX3kx18NI2kSy_xJt27a6PiaOeLoCwW0Een% z`((x7%jX$`OIQn|u*AA4E8AlHp8Z{FmRdynBy@9rg+!BCOquk%9}}PNWLyd z?xM7pNwLp_VxkDJa?r~|Zcq+gP$+v5Xco*bFdORnt$y7#^a6>(_%bOi z{S2j%oGLygEnObrPZ{~M_(L{|@%B>|3jt;?Y}r*fWLC%i`fc4MoHHy?-r_56>Mqpv zhz7IV7)R5l)#D`t8);%P3}<& z&`1!E*viWLEeZLx7*@rwe2TxqxcHgq$Q>>#t|^9C1Z{J~;n@Y{nbQ8-k$UF|X3j0q zMTFvKkH#2dDmi_dENSV<;I`<|;FA8X&^v=8_|9U|#plVL>v+97Yla%GdU z8~T(7fvrxHQ&YoSC*`)R?@BTFr~v@kRhNdKDilckFFO+)PT?`*>0jj4w9VRF1P{W1 z{}D}LlBfP!(vR8z?*6_^ z+sY*7f=O^a^s1(>yR1Wkl0D=L=R1$m`-bTT_jd?7^OrG5L{>x))b z_=ksvCvK4#CuyEWgDtF-xW|Foj6XU%J7dI1aW(YbKn=w`9eh3@o^_;tMIQl=L3x2o zuhA9z5Q;~Xup`;F4`*iwNPK15de7TIuQn-CjO!B&KKS>1+TK%NSu-NI5!6*VP&1|S zx_X(Lw5xt+;pnYDAIC!Ot-*OU3ECN|dCE*3l&RLz^1wmZmXmE9SG5KO!M=?V9aY2* zY2I=CwrJbn12(h4y2H8^dn^r4oF*$Cqbcocbap$e%m1YIGkM{GaY~)y6FS=BQ`w@U zBv~Vfi_Tn@6gO0fsW&OE%Yx^HW0Ku$qs-HU+4)C^Zqz zIxz`qPlptxefxP6wSkR*K*e4-B*@kIW}pqeQ0#Hb=$Zx{9pRQQTX$tNz=q1U|+ z__-dau)s#~U_>$h7JY3f+p~;MYV;~*d_GCBr!O_J_Qfh@@f4rIL{i7Kg}2hdBIfv+ zf+hIeW4yU^V=NiOYD;U$oZyVXPe%e3a>hYyb(dvBtLr2n%~g@}Xy=M~>8)SWCelAV z*~6BgC3o9^8igGd^9#*W@{ zCDc9)!QF|W9R!{VAv%5Bt7{(0n(O`&BMT{=AnR79au+e49gSfdC{-43?aQ>jFlnY2 z_)1W{N2?)@Ry9{E$|`&)-9qTj<4-3Liyb~NL%OoaeFrYX1T8M^0DGuVsBin!rst@F+bR^9@TRD1OoupiEAs_ZH07Ph_6zQ%!_D zf}xIODqbTS?Qgwh**=E9ufgE~-p1=U1XZ!;(ImQH)!Tk|zbS8gL|<|rP8(lT&~bkz z7(mSvpCnfStt@OhHYpp#+&pR2*r+o;(oRF+WHUyKvccCE2vw)nZKLI1&*>zTa_9rp z>24MOccbe+4c#C%UkbD-S>>>ei&s4^>a=#X;1v?^-NALe8B#^v!@41oH~xGI!??iL z%5OEDk)RJy&UJp2La%;EEj%~=>4@HXY>~2pbMyL$BlHNJrSWTOOgMw`dI$V5RWD=0 zC&*NXl8jHYc6Z~SI_y2U1$1(}PL>4&K*;RGpBvfi-Q?xhhyXo>zLsl2EjB z0%@R@+hfw$UWQR)Nw8o9{}c;%%|!g0(UIQn!m;Z zV~$`ayFMp%SqroHA7KU0o$SC^S85orIr{SV@87fnPn}g1leWNmLi-~`F`zew?7lAp zX7OV1tBOTMzkN=I>#(rxcPC1TqniMWK#)ElHkyl?4?KR5Dl*a?N$5sOr9UWm#P!Y& zf!tXkNA6VD$BCSLjlie4XKkUgd7{Nm%9Rm0M2;%lJVW_9jVEP`)suNKYl}>ngN)G~{8sGsi)BZ)pA5d;~U4geG5( zrfz%%>H^snO`z$<&F{T(tOlL4*05L{f3qQdO!-*l66Net!Sjw@j!N4rlLm?Qi;Q4# z%N}(RD$?iy`Z-(wta|^f0IF6B7B}66zg~@HYo>NBC}FPb_?H3FQJttlbothYf#aQp z5dfFS^3@f_qNOk6-w0mW^A+T>zakd6Ipb(=J~BQk*;Th1Ir(+J;nB<&R@2fXW4jUX zm&=CQnu1%a5^wRLL8lv2q4ZZ(VT%xnjy$D9=3=8ZkST57F^m6KeaZIpez?lhx&OSf zGx>^rn_R!D>@80T@R&|~#4v1COq(rfRS^#IRqsBr5plDRrq`?_*I?ox60WBBqg`&~ z{VY6)RrE#YTAyRx+yI3bTNgsnP`FTopqD}>H}U;J5`1|?C@ZMq6F5V}t4yzRaD=X0 z<@HrE&W?R?R4Z^M;BJjg!6(t6nlHfd4RQg^Ls|4JC=y+ff;mLCna6|}vs+v%Tf(b>6%h*gu= ziB?l|lANYW#x1ExGYS^eq>v+p%x1B6nxNZe{;V&_4Kz))))h?Q2Q}8{EINKw8h0`T zSB+ZH-iN&i(ck#m`@)5lUJV;)6oRWEFDRlO6Z1*``spkvTe6`AIk|M5gClo`kXdD znHP4QgsFD!zMHo4lVcu$EV2&yn4SObyorC5`g}i8$F-?)2&QGZN7HX*>Fip_n7GEi%$+ORpa+m)F#Pe**Db4retlpBOKUWs4E_V zD3e+?=-D!Nqt%pcc6R^ZL3j8IM}OBJ?!Q(ZCNer@+Q($CU$7RR^D!@WC4Pfw9XkaZb`HK}vb52i ze%x6#Dk1`>c5`Y?wsAdt(o$1xX=g{l&!==mQJGk|3{wzJ-5{t3g6%Qv4qCVX=iw~B z>*DF}MNgy`X?R6M_iHmf*bSM-_FA1PXZ_HB^CtBtfAMIViOoZEgc^p)-v`mx&WVCo zMp=t)1$%!W`%~Q37RXuh0IdV^rAakYp;*4MDQNmm$Q3|-kX?8!sHh90YWla}91-|* zxfkE)Lv#`Kn-4cqA~iwqO%!iB{(*J#t9~DO)AzYDujgp9z>IwDk*C#nVrsR- zxV)RJD8LCZ?B{B2tz@G2Exq0I^X&|o0s3ohybn_RO zSM7l{Goqc{FhEsPk^cuQdrjN3wH!Hia~X{Y8sa`W+^>j{AAlgrgj*7dv)xS143P#V zt7+{qp4zcdhkFm(L2+fbj91mwSYE^)d#HRhxpS;f{&ft`nkZ8y)s&yFBp@Pqc%R^cr($r`B_2w>bLM3L;QjOu8FbFw(q8i>UHyKtsGmPNd zu-iMkpy|3$*3C9#-msZ+b-WKL2rLON32A9O>cFchG!OU3M${JJL#OV4|E^C2N99pu zG4Ju+E`hM)0eS92f&$1M62uLNk`u}6qa)AhOe+sdF*LXt84D@KW@?qxF+Y)OjZ@K|&tRQc5Ti>QI zr}N~#`)EiGSu)rL>T@nH{(2)oET}xf#gE54uO*_d^mm&vZxKVN3LZ#y+eUt3yC5s^ z*`y$!o3upKAMp}ulocX)cHl#4Z$}vUu z+S2st(|1n#-x`FA4`DfIpnigJZ1wQrTFmFqI`8`)gxQ@I!EJBqo*x!{8Y~t<{ya(y z>Dh1q+N$Z{^vByJuuITDf_wm&^wVbRM$`ho?5zwa3M@$?@7(P{sPD#X++sIsi==e%hDHIo7x?c3$oNOA ze*Lxi_*fyYp}^6EAeiVXlgHiAaj9PW+~!qUl}T!)g@6K8vngOH?{HcO>yZ;BJu2%b zxnA+Oh}HYCuKj!WpylZK(D_V}TD(h{hdVnLYwBh-4|jLxm+u3w2T4a$*vrUQ)%Mw! zkam)GwbgtkY=Eg4!DS=ZsYBMi+`GybvFqoUCF6w*?*w+y=q9p4y-nM^IA|RXZTe&a zC8z&fzW1s|6W8{^A}rz|5HF~n$c^F+*|@(=!4pN}^0~qGK_Td7s8T0_&KbQX3tmEh z!UE`~>pEf)s{Cq~s%f`9+$~a3@(eoB-;-k=sBYRyNF2P-Je(I)9&Q&Zas&$Z4aUx%$vhXA6JncWWg@)k5d5eY5RqRqrbRG5qw9d|Ryx;+UeHcqpx_qZBhEaV{KJnBOOGM4e)&^!C( zOO1y;O{k`M{G)7&?-k99kM-#r^?>MdEBMfL%i_bXdf0YPS&VuN|RY-h;sAv>%)>A+{W0;S{4`~1*gGz~0IC?wY>ite%6`SXWr{F^3PIa zOOf4~*SiQzTgD%}E>{v@4K^vNF3qDinjak%))3a9$(a0v#D&$F4LD+T4f83Pdto=1 z!>g3QGR>ipSOe=eMdjKmXGl+%%nw?&Kpjn;_Kzm`}C)jjm*eHVN8GQYP^wh=G>$Cc1ct(d1hevnw*`aGjN?1n|!q z%ANjxZDGlv*DX-pnyUNtYwN|)cbsLtbysbQ`?hOp5<#>)OU&={NpWeCW5Q*V076A^ zi>M-b{{mx-44IG-U!ktEq6@$Ro}ziKzYA|oH&-SjX{%P@THS@9?>z*SdTeuPKAfH_ zL90_M$}|4b1DUX_k+n)*KEAv73}Rt^ft(y1cIG181J#+GE647jm#SCKe6R6X>2Jm2 zkR4xI$ovHvskN}Pgr^BbVS99F$m*E#@t9-T&KBIgGRhOh1IITnP_mqBWUqggrb!MV zo7n2JtORYacJA;@$$I|!99S~h8|WN~k`8vdAzq44O;`ZHDDP)AKn`!g_8 z{{e&xZKb8TgVUqc=hsH(@9?<-UV)8EHVMWgi;wt69dHF<@ z=3p)1m$(cgH*E>m6!5t>y;Xpz8e7|yDsI?T;K#>fP6eQBf&cFX2>hIL zXspEEPb=H{aD>@qoCs%pHEi&<*P!zCDhJ=Pw|uHh=9m(-|5);V{AsI$y*&b5dc->9 zgpbV4#a#lxXA)9URcpV984S;}2&)M&I9d#ZC*RJ|1 zb5h(r3|L8Z(>bdmoGsO1^$2wj3OyQ!vcT)nB@RN ze3A~F-{n|Zw^GEg@+cuwNqTuv_-S=tX+OqQkFN^JDr9E=p%7!TlG7-nGf+VD*@BGH z`a)0O6lmA!A$(!;>q3YrK9`o5{`n#T^9Nei`PSlY99=G64Omm(*~y*t;MsN_J43&Z zew2oBTog&^Zd$~VQwjnFo@d7`vWCEdl5zn+Ls!(j>sP~mRtQ7aQx&!_F2hP5mPuYVM6`U zVI|apXn76s;~k2v*UyIfZD?#*n^RoQJMW}v^pl{wC^i)qc7Y|LC4|3^r?;z%XdYvX zD9@#F=fS)y%l?Bv!$N~+VK)Ch)ae4V^Eva4H&vR~{#syyBt)F?FRei?bNbsinLby^ zj>Nl^S>|D!5~S`Vl1uN7g@X7NuIWZI%a6PU*C z|3g3=le*6xo!=ZR@F~`++!A*Z`iBsOKUB5z4+JYrcxTzw#v$DGVo|1^0d82EVWTuL- z$)r%=cJta0{>6CiB>Ega1^2o7q!27+Le0YHrP=?x4XtrA*nBwtYEBYy%Xw_?hr*5n zHs3XA1}4ECG``F-2UV*O##HFaXc0k*d)y8V8+aFS=>HCN+l2&TD$%}8D9AE2MqB7M z%Hml%ZUuHygQl+`JevhFXD%>bZBMBpREu2h6^UqfTyH|JCB zE(d=7Vl=Z_Octf9m)7RhN&hGCo3)yvyK0Mxib@VfJbmck@Mj5Gx_9@fOH3qr{T>&a zlWIR+d%V(NRgqC$+Ol0&81^uE$f3UBrzfzdTOdci2$67zNO}3VD22MF;(Ae=ckmz@ zj*9*L>bN^C7z&`3<`KUcMPL`=ir;PUCY*WT^FYj|X}3;%IK2C#V!qK(HN1Wp?v=>> zm!()ZP7Mb@|FEGGedN&W=HWcT;3rd|I_u;4*5;U0jIq&C11>ULA6yaQZT<>3XV7d@ zHlhiRUKA-jT&Uod+kNaWN=A5a<`q|>;y0$ZoSxR&ZcVX=%|8qIbT! zHnJjdXw4l?n`qC~6X*|5fsTIQ;6GHe2l(Bus9GVs6c-y#$3L4 z$v8CJ``$5>LVe=*@L{P*<#?pTylw5@{cnu1yL*&-WXKZ6J+dm!EAHi7SQi^9ARGpFKrcgc^AvVln;nFyuG@3~!qKBm|Mql+t)b9)GKExytcy zhe2K8&ge=vT`G>CrSi@iLIe$5C)eqaaK_>an=T1#{FcsY= zMOZk|76nQku<9Vr(N%BYL_{!^z`P!w>JeemF`Po2>ckj)9?~UC+=ofKX z4z$`3B)!<$>6Mmd>RJ|lVh?Qy^awlLilO3{Jgr71cY|@^3%wanbMW7PGH&F}rKJ`t z0HC-5kn{->Mrn6?Cw|G`en3J8a*~f3>TIy_anmPkAfx{EV|B`SpZ;AZQB9Ab*5s?Z zf>TIeQGnQ(R|Vi=vRyt{1CXTKXDw9nTNxFFYV&c?H2$5)T;hLLW7K57z$L1^=9^+cn`iA2%2< zZZ8)11Z_aQsk~bZ3RJV4HBEzlGBSrPh(Q?euE5(uSo`J#_`EjCCJjwZsrzbI#b5=h z2ssNrcCzP>VVSM2oKMLEQOscl?3zDYTlPQ*_znt;UTKe(*tNGB7d+`N-?KcS@99X8 zK5v2MJ;$Fx9HRF^4(LoIoorkd=&b7CRx{m@xZmJ1HG}BXNZ?gv_=JwHArf97gg-JP z7bcLCn0!Hm+?k6=kuR$`B15fKYe^hXyc;H~7+oVm)iY`}WFy+qN#Ya#G=6_lS<36r zL_Bci^IR(~=^JACwZo^E!$mPkkof%a3z_QSA7ys8+R1S-TD!1+f6oiX@wT(=7XP9Q-jXW<6K8ypVhic^f+C+vKMqOr zwB=_q86kn}Q@E0}MEwDpts@2kMnDn;6V1ZbkLHPI+}%CKfuLyQl3%ug1SAPJN{h*} z03_-84V5aIvJe6Si;^2XCMVtU*O=jKR7Vx-(ak8^k$&U0DnA`^3@5q{Sj+tTBuk!> zP69@C@YywL;|0!h;st&w#S4t#xb+>M<5p2Ow;ltuIVEz8_e)?Mw`=(3(6?CzyNtlU ze#mdc-q_hXIm?{)_s37hh7F92-pepqNXs`l0mR(5DL?Z(;SOSv%% zuk`#kjtznqA8JCEhoA*6nT-th7zZ*VN}Mu40#$am7tNYBM6vANHVXMG^nTA4RZDUn z)FA<;w1@j8Khx+(KX1Wpa90-iR;)Vk)xM8rpeB!`bQexs48fKR5L1(Xg3R5BseP#I zLhu4s0GUNv<{d$Sl9Ac4wrNJ>Oz0H7vE%PDx9o56=2HIc=}E6~FG^XpbB`qX+7f(Ei(8E9TqN4+8r(wi+H5Q;L(;3xrh52 zh3ZhSTK)40!`}~{owHzY^~EoDD?#z}vJ!uhd~Nm4wJYHQ7K27Zur6SqgGME0EVWk| z9`5c2`PvI6epNT%_6gkUqk(2~KOX~6?Lv&t!^2!$r;C^6JxfmA-D1R~ThS8QyYm~f zVq;OlFUSMll&vPk5YYhmoq@A#K8Q>r;OtM+$eq$!Ig{U>-yb)bP^jOVF0m=*viuPN z*#x;=1e(wvUD?a5A(0*N6NdPJIjg? z>q!%!2TsCk@)LH7%bw@@!M}Dj5eEYY$IEm8J{@0E2Zmk@%SS$X9r6%I*}dmGDd#Ph z?zQ=yufTR;eRxHR`YBT2XV70(CcNK3_{b7E~)xl7Qb3b@v(ae z!c;)5zukgz173Rq#dV`$d%|6Xt2>irWuc*=I6SkCq+<-yqzj-X@3>2E zgJ(MdqC149Z_Pctq!|?m?}=|jnwoAEk1paw9x=f$NfcCd`q}9kXAvJwFUQO z9n|j;skl)io{f+ro?Qufx-sXOc>PJL_MG>O(VFM9w>D75eoKT-&K_Yxwckz&FPw^zG>be6l`OWkz_P_8 zCG>EojkvY#_*g-onXBh^fCbD!k6d;QZMIBxl*2F1ju~iGeOHIlFUZ!te-k{0Mc^%E ztkVLcdwRK$b#eas!NZP|T=!B*q7l*&EVh{g2@F!%sWJ1!bR|P14to-D{#b%&$zVMv z=|}t(yjPDW!|wMr5~;Qi_Z0v4DyS|_)WBgmL}0P}>A_)vFV>VM^*~{$;ez`Aqv<&aNQVdrVv&L(B_aafz?WRQGoz(OZG6U@vvQlm#R5B1y}2 z`@{2{uzWhO{O+Vo<=7+sXf`>~_DV%_yx2$S2p)rU^Q^S^E5D)PvB&P_=1doxRmZBwO!9-s0hnXP@rLS5&}X@~=}B zFv?S$7+h$wT=rjVu^sqAP(0n;-BfR%(ZC-CG?_8DjAw4#X&{!Lo)}nSnB&;FX^59U zw)woX?(OL9=x6<2H>*#3@0gg}keXuVE%^wx37VSYejX-uS5ve4yfF_4hf`x#lW~5- zccq3j=@HR_Oj$+`bq!c?ZR1`N2|ZZ5k>esrk;529gkOZ%l)gS5I#AeqwN(KJP)C0P zjA3SEUUSZY4DNA07lORX3Q=6s-ME+eUw=fd!(3F-BFf{JUVvztu+O%P_v6`UP=yV# z4pYRts5zW%&HtsJf1|Cg{^7HN?mr8oHF5Yb`0c+G0KXk93i8n?;OQcrxjtEGAE91Q z_e$97;#ShCV_Fcj*<2}-v)3=Zz)N}RpCN*0#0{7EF95g&u&DsW=T)E15U~j>=j7lY zkBZoMt53-DCpmd}%VScvU~QDd$=!!{OvJ%CQ=lvS_ik6UCWs1Z$-Hr-zL?p>-l;z{ zP0TMSFlN>><*g;Xm-AAEmH4HKdjuvUy)peHfc-zI^6nTL-&PKI+T3QcqpsNVz)ZS2 zBdehrAN*y`=slX>gNN*K!%FYs;^N1}ARoraBVxv1;v%DAX|>*}5u^_GMx(`M@gVp-56-C_ zubGF`bh~`(y8~;fsj1!#=pLr;_$j9o8r7EfCBSr19rQsfukfv8JZHSt(%TKc<$wAD zP#>z9)5_?@G=xI)&rH&DMjd~j*Td;vs8l^bQ}V}pugtHJsNJPs8ZC>t-S`4~oBhU( zfy9*XklS?Rk)j=B>KDG2<{#M4^{w+8EmOYO+>|vaB}8>8lF#(G%v1|dp}N3VrdeY|!)O4y@0kXM>WoN!E&qJ(Ep|5jGY!S~M2wVnXP!t8PL{}VI?Pan0Wo-cyv_Vc0YNCpxDdUl&UatnqrGHd-7C+}QrEDuE-|v~t&C%ojlC)9~z?5>k&t)|K5(neIiJ^W&aN+zIgHTRMJvpO3&J^D_?d|VkV?MuAh zUz^)EZ`^R^e#L!;J8R1jE87()O}B9=i^&-HavUCjgCvXKB%$yH)~l&|AvJyGPqq9M zIKLI+jQ-(|tDD1R{xwAF9bjVU*y<|LX_4>am}WOoBD~+wU!qw&Q6?cmpQ|!jQ3e(A ztf^+t)#cC!9jUm%!O>L4Z~JNrN{GbsXU|Y=ke#@^*LSiy2v|QUe38y~=_Pvi>B zD~Ue*W*;lWok$axAf1clEpXcwke3>xt-PBI2aH8unHQr5EF2o1^as(m_XmZA{f$sO zopYtidqbnaX(y!3oJLfXce}~3_7>o`b#`Qtu-D6(v+{L%&D~ZpH&EJiB+E#7usd)k zKvP)_?z_wSm^qNY&Iu&a^1BMuqn|9~@SpAQlST8pAoEO^qm93+T4>0sR(L7a>mEKF zi0h2FOxh+I2;4E&Ob(F=%!y8`%%FT6_So;%%mp`>`;hLNEFv^E?8XB_4z7RGU!s-T zDOhxmi~ubpZj?IO&!x6&keEG} z1m9he0LsFqpuzM01lK#O1~nYtr7g9qOp&R`nNyKl=@XkMA~U;c_4ZK^*k202_zxs zg;_y97!LWqo&FKvbU<;3se(L;D*i_&iC^?eI4}^DKpR*}mV1YgweS5AA%AbuXdf9V zHC`;V86I)y%@~-}2%eg+AO9O2o_fbLsp=T)nwDMJy$=BzD>J{l3ipYtk&H zkGG2g(sUwGk5()1#RG4;la&(>O{W<*s<^cDPEt-h#KIGCv=f$fy)0?0pLURwdx@Uf z8|=b%dQMe5`uu5L*>g&McWe-2#kkU?CwwoOjn)*1CTaRg2nu&TCS5OHlJ(yTWCl+8 z+L{Sye%ux>Rls|b+l`L&g5e%Xjs3k3U`Zv4H-q<`ib5FjyLDb*);s|tpg|V1YD8JW?O^7nt{x1<9kcVNWh z2Q8KvVl(r!OLg>wYD@_{TCI)Z&E|jeaC5umbMNKtoO1b7{;3Kx)4RvWIz8+yaIygc zyBAfLK9y?h3MPhzd0Bc#@F;qu#$8&~VmW9dV;<6Amh8qV=K2%i{0pZFy(}E~=NO~9 z+UBfPg4z})6LiF)HKa9yUWR>~`E5f?)uD6*mJv>#1d{6KPn7uY@@9r-)O2Do6v+nS z=gE7+iX6r!CMWWyi)T+`^)RprIF&HN{+TQ7x4J+-wdkhy<(hG(k5oJN71GvU>!R;9 zQ_>SXWVrVw?fI}^V(l-3ASz^LW`+^ULb%ig`NSao@Jz_3H87cyfTp7{cl{#iHm<6s zrp2QVC)w@J1FxP*EyLdTGYO*L+cnuzGClTo7*J`&sPvrA_7*=px9kpB;^rUy!!cjK zNUWLr{VHNKL2fmnj=~nnYH1)5qA^s`7e#du#d7Su8QFrfrDEtZtI|7hi$!ci_?szv z%@4C&A1Q8bJTgXlgh@c)>CJNyH017OqAU}FAYcJ$jfR*O)Vh`gO~lg;qailOqBX8j z+FN|xM+4R~mu^R8R*d*aWq<#Lc8MtMU!GU}!QjXdoh13`5G+TYlFi2*eV=!4-rd|S zd#F?K69cK-`71o2fW^ng!NE}VNf7h!9cNs^-@kuf9-X3Pg?>j6NYU&eKO{hqh+i+S zo%p$j%y;YAVr_44GtQo)`hMpURnMfDiiZ699MV0EHX{LhKrKoCy?3{1_jE@-!#L8) zjfS*bk?XT!_!ZmTO-@uv;rm~eilFgSL2S0Vz1pOHExJ=8sO9!A(9vHkEm%iK>VV$F z1R<*QZ~t%5M``cya3-*fD#_MhaGXj!z~u}URoZ~rEwA#NN;rAzdta7`hzaHnEU1U{ zDw{M!ePh0Kl*s4cfwPZ?E33)UJ>N1UPgeZ>PY;RyR*lD8Ikw;-%bv?WJ8ziqJ#<1t zpbuT)3uic6?)llhV^2Z)RY1DkS%K@$x3Cf7N@w|NNay9nS@5jCs$y^;IP#x6+S`8{ z86TG%`53Je+6A7lhCu~=P1kb=VDd!}O8Q~6QL>PUL*pE}&5pRyy5=o$k}Q901X0Oi z=rdyqZ~hBmH$L+2Fro49@aRjIWXEn|uv%h-s^ z=;UO3h!V3n-9zm%^)HkoJK5`NYjnm>%wnwS`!#h^2(oinRelaqG37b!Z9B&J97^Vv zm#-!jZ-N+<;odlDz1=GJGE)PN4Y*+IA=Bw~#+LTeqM0=qNCvf#lLX(IQ5O%2{ z(_Etmy`moffkf-H`kUxEe9yh*V`N+gt#D#%Kv;1+21h^hY3gq-I(4Htcso3$1O-XJ zCdcaS)D+{UXr^IRcasK!0Ia|b$rH>(IHCbh%15(^NT>uIaE^8s_6SjZlN4pSTBWz8 zv@a(Q#Dh!fVm+6!g?m@Y%Itr4T&ZGi<+5rn)joKDAavF0L%8{Bb*|`05lA9;-{R}d z3TK**AV=Wx4a=fLnn?s~lLnz@0G(_Bhe~$T%{7K9z zUkIG9to>GQ#oyfs0@t=wuY>oN^XC__mxg6#W36G_QE#vi7gyJ=N_2BQJw3Iw;~NM9 zWVhEk!L6AaR<&mcas(vPJe@ES1HT&sckMC+dC|rDK`LTT>J!$WP{?8)u%jf7_4`K7 zd1AO_OW1cm?`s^4e=F>rx{{;knDKsH_)2V){)|J&RTP0I$;+2RzD0MOw1r|s@IUkf#^#gZCMv)`H#Mql+fU`3yXE{gJA&|oQ7Yq1^c{xLV*YQ=pbpV_+Qu%QN)QQn)%7z-LB9OR zPe8;)Yn9Ukf_YtNs4CE8oku7hQ+0I@(_1eN2ons}#>w;X@ioJjI`!ai4%1ojq4R6l zZXen~w+*{n9kEgD95pn85Y`g$6F`}Z2IB+g$?5%)#~8>j5MQ609Z3c`5z>pJ?q%xK z-=`lIKtr$z8UE$qX?X!m!w>#WrMDZk6F8Pc0g216(>;u*oo@gC2eXb!$38-5(BMp|<6 zd4pOX_$yiV#$ONC$JF!OOE!F|{l4mY5umS^8=C6$+H{%4_*tf1d}wWJ<73tHYQS5E zkMe^Ed!0cl>{$iQdaLi%K^n;T{lHz>CGu00Rq~xVl${v`@}d^(h@#nvWKDjAL+_C^ z(rFVd5wJCVENQf%RQA2w3%rX5FV4?yw1kG>sA3>CKz(}8#%nrE^@QxRz#`WP^~_;_ zWryWLVtsvmuz|iluQj#bi~Q-HOh>a{pmQ;vIa#)%)SN?^%%SR3_wK{$BU)OwMa}_X zB;|2r$%lNxF9SHtb&h5n_?Y^YhE7G8qhn(tn&pzG;bgY%Eb(%4sQSjnb2*Sw^GKbs z1h`=!)4TLHU&DU zq02*LPcXHvzh-^l&?{kwNZ>?G?!l)3|wqf%A6g0dnp9hoS!#(&T8l>W$d z!O2V(DD96r4`Uy_o0j(BmXPeCDA+x&meKH74U7#vV2u4s~X@`^l41*B?~5Q^q)aSeS|4VTIWO;#ZfC<;T+JD zKr@Smz*@5gQW?%faCZp-b=)tOS+!KI~oU__*)!ZQ&q5@Z_SU8E_1c3-et`1VhjoHK0jj5%TeznVG6L5V3k75OXg zI3h09N%1&Zt8ucq$|-_axFx%3a=9SAs~F9s6pji{!q-w(QMqA5kPT$N-s|hF$0l8u zoIPj|VZEyv%Qnd*$82&cU_tbcmsa&joL~|(LE@p>yPSdsp9hujeH}S3shj&vx;tbJ5J&e`g#^VNOm?QM^Sr zvN*h7R=!P1N#P@MIdH0Q(XV@v%RdFlOu2e(JkvMIsYkfmu@D+^JbrD=R>`Q7`&-(A zSXXa(Rk=g3hRTz8Exl5Hw{)!))Pw=|ks@JxhTv_^QK?kLE|JHa-vET?6QE@v!0y4X z5~;0#Nz*Ux;VUxEj#8+3@|70JR!7n-d1KcTce<0wk`j}Yx?nfI#{qgJ_=;4Vk(3A6 zsxCHp3RrJ*`XkTcG6bEJ2Vu8KIXweg*>a*-=pmg3^}_soq>AD`O;VL!+C3$#QWgyn zh%EfKr(gRxbbRos=bfzd^gBHO(S1UTQO5Cg$mvcXx@+Ds3Gjdo6nvQ-5G8$su_t(M zxucm1NkU%yKwd-$!q>EvI{^Bv!u0fX87+17zu{_XZzIWwNr~CV-hXQUA!}#H!eh~y zjTIJJ<$m|{Vf5d*ib;wp@ooxUr8;NiGbu4FLHSw}l-!pLJ+M}Mm93B)%sS&BgjncT zzLl1qUc<#K(af$=)AnM(r!2WI9oemqW;gSoY3D8j!u)Pa{oeFuMCFuYc@SlUxc$+! zdnG?IY@zWaAtmKIu>VguY)kT+(N05~%&*pRd5Wi{=#FLt>w=!Va$Qn`DSqB2ji!En zf@y;N5vP8^Kg&uMs()|KZQ?Igeb)7IDAH|uEZZd;d4Cdez)Jb?c3^x9eyr;SPR7y% zqvzmXikFggtwm{nmKm|BBc=4mju>14C=2V zE)Wm&9BS?zXkE>%1OhxT5gULhrl!L^L%Fcazia8}G#6B=rR%qy*i5he==jv1ZeYWL zI=zKi;;<*yAe$@4=yK4Br^Ug+u?nRLngl9TD&C}k)?r*)Ng&;|W1fXTTK3HX=Jt^G z>nXAoVn5W0+bC2-tl1OrAn-5J``L)6vFiZuPs)?mM0w$bcrJ4S20<*+YmkbkAFj$;crvsPI2 zxs*XtY7@U(j4(@qyRB_+wA7jIN#@nh(3RKAGc+ zTrK3NNGUB0junnn`-FRb>=uswbaTc`3*bcEL=Nbw@^}?;J*-tSsAeJ(V_FmNM8(-It@N7rI7dfSC@?fObarP`H6U$1((qKZmQoDB{$rO_T-x`tBeSbr_DsXm&g zpufiaYk>o8SAwKQdtpv%pF;)YPaKkny&9r0+}4yCMd|+%@gOe6>c`^CBflYU_U@}M zw7K+bqkUS5exPO@81m?JG*i!$@cAs8FX+g5;)FSRPLS#+ffiFI+hu(w+ttCT%S#Pm zOrgcE?EIkuQgN8!JH6R^Q@H|V%OS_c;bIn?wJv~uYC_PXxuj@$Ux-|o@L|1hS>B6= zQMOQT2r3E1gJhT&ChT2i?WH{aX2e5~kM+wevtJfcL^#>dmTxV!ZCbv}%iD?+^%ORS|W2-ydXdQth+Qc&D&dR`PnS zLC53iH8_MxZ>QOe?$i7ib7q*p@yG*b^q(2C%RvI3mLJ;P*<){SZ<#86WuU&fF-Ovf zPz}=$cDgy;jOU&y=g?hHV*Rbpb2Y_?T%@KEbQn=el>09yCr57l+}4@y(Q7FgIAkW( zq*`;Bn1XPk-zPnNwRJ;1h)JHT4R3wu@sliAn4V`{zb9xX249^!+vpEKb4{&(-m+Eh zk|Lw{x?q@%JB4-l5Ez;xa!#ICM3%4?LujY_v*P0DAsO+zf2a*jANayVpH*Tn^*~_y|y>)tfmz;I--vsebJ_ z<9j`skTHq`;k`NiprZHflo-~I>-19lM}N8IvW(c0VJAO5Q`bnnTUeSiYX$X* z{^~^ec43-kTe2k;L~_o#U^%WN*`nmj6U{=l-=?Oesps{kS3L}48#Pkqxq1N`biLpq zJ?&rdsad&0&Pl19LFJ1b?+5aUJ-w8MCvffEJ*ITo|&`jtcLA0PU49T zp-1N7O$UB7B`ARt329AlZcdZqAGsF3jU~d`Vp{XawJR4n&7RLB2pr9;Po9aPmM|_B z=kCIY`z&#BV#sITl|7S^=yog+tNLcIeWhM-J-(s-aCz<}ojmn$8n5UL3juo!t+}tn zoRqXrpD1?0qpzsx{5vwjfRlHYPq3a8VaR!cLSH9QulcP~xpJQN90x%_{Byc||JMmY z290FMFY9f|{8&AJ1-NY7zs9QLA}^o~i&oNm)WS`Ab_S%_3Yw9am^B%T3@=b{J-ZCu4gERX{ zvff<*Zsk<&{cqgNRP^*8$x{*9e4;n4y6-AoOD1qa7pS?$1;`^w$i@-A9SbvZK5aC+ zYA2%)6FPFP>t|$df|~?w2J1Bk4|v{<;V|b^SNQ%5!zWF^DVZ^p{eC;Kwl1{NB8RVo zyyq<-Q!@?tKfAqz{3gB{UTf*)|_8FI8IM{6IEJ6^AF$|0;J@vyrCEGB2DUQV8JIPRs(t?s3#1P`$$ zp0d9UH&tSk!P6xtSW`huIy9rItxeoFQ>LmQXK>`M(HE=zFn)7__CZEzB#%d)oq>5I zU6IS%DyPHV46%1mr+i7!D)nraGQ?U+>bS^-R3y~&yc`{CTU`!oH41gHgm}ijGt1wn z8$G{=>z|Ml*aQ9L>uQS<3Rd|p4n!6jn`ElI9=G|1Yt&K%aUTW&X1Q~AvgbXR|4-Ak za$bQ@>Ih}AUBb45!g%)i%|3J{njd> zwIg>BmHDEW8%9;}Mu=HNe&R1Z?T~ZBgV6t8+gNDZ;$mQ1EO^R$FhQ|+Mb}c0ePW-- zr6-Bs_Es*(#@?czr|@>dP+BfErSwo;_vbL2A8hA1>Qfj2DzC{x6@5-(lND2iR!u)1}b$DqP}SD60%# zhKO;5X)G2JVSTT;3Oh;ejK?ZoJL?Bf1Hw}$E$dZrnTaSVPm*r~P?&?lW3fr*EIlC6b-L?LxEU}C+6O*fenVjdWM41IGxjl-;0B(%}(MJu0e zPo8p+i5V~Vt`ia^mWkylZjNI}uZ>>*PEMKJ3FI_T*}pz6-g5R`1ZykMlFCnaB&Wya>a8-nKTiG@X{&5^ ziC3$Escvxcr@xMhka)%ST%1gZgHo8N$sf)3sMs$uQt5DBmk%EkJtsxWTk*Q2y1cU> zYHoxz#og&b>-g^VJWjcoThh0s%x!=Csmh2KtkoF4Tb&^mHbE*ded+y*&U7I#KMihc zN+s$6So-lz*{>L+3mNwPsx;=P^>#c}MfnTth-X}YSW>-)`$bs`Nd{8I-ChvF&D zNv!CFHj|PkPYtKiQd9LBsd-B}oRr~zvonT;J4wlr}-m?AnjfsX{HQbGlQrfqkT3E3FQmE{WjYjy>Jw<>E!p z@~dW>!b5lqDG&r^B$klx+O{aptoaZ*3J+4je*hxyxEGm@FKd z&QQbq^tqeY!NDOyJ3nJczeb*%3CV_1_C~Pwo9%du|2~&9?y^JfdJ*+Q5$wUjJgsy6@lo!4y*uO7okaJ5RLpBAZU=s5S%(MV8vx_^1Yx1L4N=I zxLlZNluISFNq$0%ATV*iH>xa(H5lh~P{&b|zc28PzWMQEgHZv?1-+xTo$fmIOf=rc z1SaA<#y9TV7ej=0#$2mD()j#QQjBRNXHR6QRv%X7U0Ij?fGD{~QUBpTD&yDUU76Ci z%-E?#dA;U7^3QqYx_-}x-o^L>A@dgh**k_NTzG}5>tBwHsMkOT9CTdWJRrqb7Q=`BiTLE6oZQNr5lyJdFBz1l zpLDSDcAf_9(qD67#j+$iA3rPdKJ4bR=x-^_$(i9X7{8ycuw>f+Q3`CzF4*yMwRc!V zL^{y?+hIl5j(ATpIq!x*b=%k*e2dDI#XCNcxncEstj0kMw2>omm7mAmq^SgC=D&L^ zov(4T+orkOEOk@OGk`RJtD@GP;-&9>A7xwH^5f`Oztg9wEDPw;nC;vTB=4)=TA5O%0#fq|8AI1fr*n*h?!0P*h^mZPRczv!T`8-{D)kJT)Cp|Cenq#X6~e^ z53STmRbUFe1NyjTK2Yn&MJG|VVk04-M|GYHmZ<)urlWIt&FG*!=bdKJ+|Z|wy%FOp zUE;huKCdfi%@`fEkqTQ*^QTyrhRz&fVyEaN>m2n_SwwO2bxk|mmUJlr!p4ofDV+;N z-?ivX)#Efzo!<^+H5zX=G|WFe>;xlzss=+xY@zqZR5j)%mJ9h)cn{ka6!G{dpZ-yI zZYF&5g5s+oh8 zmRfTO@)`eart|f87F$^HQYSm-iD+UqY+s)t*RfV>#>OAtR zpx|<9su})hC}6s422Lh{mL?GV(c1@F(SD#9=M#upcr-eAZpuEItApkk3v`Wr!F#Lc z=n7HQG%tBJ{lIiW=HZ@?*r#M)L~QJ#VX4%BXC$^}Hz2MjbDu z9}(rzpT62zXx@9XdQ>I@oP-7E zhD6s}$m^L28WqQ&uNya4_$(Lr8io$v-|>C}-r$_WWzbr+`+Sj~x2O?t)|h*i&ft$n zP9{Yb7bmPL%||S`+co=)VS`drM@I(3q~yN)lTqTVU6H^h-4)o=3vvAEI*7q zyTx)r_}ka7#%wokU|2jF+{Mu?!be)b4>&nAaqGF&6%;r(g-U;n2Cpcg;7 z)vm(uQj@1>Bk${zzx(U*;PFg4;LPCuYEp;sEgb<818_}l5&m0Y;=(EmLmNYWsb^HT9K6sZW zal^=o?}414Eho3b`BG@7kYY?uw!bTwFpDqNX~Hqb$|lj7?2lCd*T}APD%ybtT)&j_c;Rn^8P?_;9ZZTRvue zEeTIcYcA$@M}DB_Eb`gCm`{YwuIom0xnwyOOuF?c>#twGw!+B^r%Uzo-f(CSE#oZw zNY3S`$qLE8_Imx2l#U*%YfYaxzp3InX51BY`cJ!h%hYlH`zvMW+CCB9LGD$@;rZlg zif&K&+?*RD`H(sjZ!(ie;(ppY^6IPfVvx?J(IFftY_$pQd@f@Fh`;u4@MpU@^r8l& zm>FXM3_yzg{zc(6$^CfOpHEI1#}=K<3kYFfbiDnBxPvQu&yZ0eG6A;|?Bx#c=qh*u z^*iDkzF!iHG;n<3ZQ~geTrAw_ra?@t@DgRhyPK{dG4S3?Zi`N`K5O@RVLyIbD*DQ4 z&sbw&fdc0v;>fIwCVPV>HC!teKWuU;gGRVP?-{n_UkT8##B&=n2@3}T8zku10qTsO zWMAHj(?z~5%c1@G?dmp*lj{O0#*e$QT{p5hPl7N&>>GBdUHt1JfjdAZ+LRLN-O z`HDWCe}0;MQiOfu2cCUWLQO!fb&1LLCj7!E{*-4>Q0U*^Mi;Qpw%a+@#YeCCTJ83) z-LuAA<#~I1xq)t51go8;ZM}u8ZW}k&NWEF@fa1b&$at)mySoIt{ISJY2ZJU~xTR`) z6Pe|GqFo8vom*s$F`v!o8|R^F2MLgc|7f;U(>Yzs)xqX^{|OBVIe2^H@&$Fq>u;gg zkryzfEr1|01~f$Vaqm(85ezcbxqjHySfgDhepKg*hWOy&;VCy;_5?kxB*GHXgaHwJ zW&g-|c<^X66IYR;BP{{j`nHc0+k-%HwWyf*WScy4jPl+epzZhaD`kLJhLr*dazXWn z&vs?CFI=p?fibNny+T*(brqaEe8lI~wb38U#W(D|`jx9!B#1aqGzdl^e7=X8`O+xO ztVU2ukA=|8s8yM9?mpMi~WuN>478J zDAZ%AblKdFv1zs*)dorNzuVQFD-ru4I$s7))sKEGcc|bcEE*}BpZxrI$xNJf9gzhY zf@t?c7W~!Pkt2MhzRh!4s0gGUh>|bi3dCZkLwX~1ZE9dm$Pcu15kGi}t;UV!&r^-# z4ixFSn}8;9CnhGoW)*onFVnV%TMoS52AyOG(RDh}U!9!XrgKeXDW@+9qkeIe-N<29 zGgqzV`%n6Sn+?8^)O?M+6(N|$V8(Fet`P?&Ql)xD5t#-d$4y4glLG$#JxI#+vBoD) zdbOTA!Qrm32a3mGZ32k3HE_otD$LU(QK~%5u)=KYyOl=J|2baJxc2hdO#}}U9qpN* zk$ziuQw^^KWfPC&6R;G1I$mPr%+E<~(|e7ZSPz3zDgBMuW8w0CBHYibec>WFnEaP_ zMKjnzrZqZ+3s`fR0B7M&IQPFkkV^y(-%kddxQvY6^t#q6he9rMk{-TrMv4vJUiOUk zyCPg&6c<7tqrqGjvQZlfA_YWo$>eTMFDJB(oE^~a0XWZYK`qt~(-J}3a z;C%=-o^-|`N6_0ncTyzK5{M`a$@mEd`vSH}G(kPM1f#(Gw7Lq*_so`_UQp!k!^74$ z9K{TPuZ^d3c5GgVyU19t^(u&@A6aknZIdUd*;*iC8cQsjIq)>c7p z#Sp&xv=49nrLI?WPI^q$%I>ZQ*=X(1X=B_;YjnlMfNYn5fI!D%B4;lz-qAwX&RMWb z^aH((F6Tn)6Sf(1AI_6!qtlzxmgGDXLuKpVsjA-YPqkX~V6vfiCCD<3Cb;}$)xW;` zi7Kyl?!V3#S@S!Cfj%>2%JC#x+-}QJgC@_OaURY?gKQY;onT(;Y?wUW`eb#aPcmy! zgWTvf{_zx+%e_+$dp9>XmJr8Vf=*ZJ8%x1!$<_G*OICtwMfv&1BHWcta@6pg^8BxK z1w8_6ocw7#NX&v&c%$;d@j1MY-AxkJp}L9Yvj7g2JtHf(r%HP4TH@5J*+fLlfv7fpREMVP8^(g< zhaU)}O!Jl%*yn&p(d%Ea;ZKq48g}FqVJo~{BFI#IEW-R^f78$U4v$Q4~qwn4Fw3P_+^V# zugGgVf*NoiX$FS;I%D{iuGw3zQZ2svEh`J^Z8;+`u`eaIRwf7mN-?$E5acR}{o%Wg zo4P!h$kE!GgDPxE$&;@LM;XYcU?IO&{HLT8E_s=%ztRm0u&}UHLZAV`xs@!NO?^e~ zvuDo;CdS4j!r@_0egY00-GYnSMKAi1dkII?WuVsFv*IaVKxU-oW@lGN;17mw&(>Zu zWA&d2tvT{yBEs1{`!z^-8DAdEl7laf$O2_eg={&M)a@{5i*v4;wK?_GRn7}rE;NGm zNd4o-H*H3=*+u}zvSufp-j(!TZokEVkkr4L#mw7ZfYoZ(_59~4>QbQE(oL-fr~@w8 z-N8y|h7zG)h=)(Bkb#AZG3u#XWzjUMOBfsbZhseaH9plV&974YvThd9-ktrL`foL@ z2#sJ=$>>Or?KFu+R+Hfojur`_n{j>fR`is{mR{wv48fyfbLIc;X|Ww4K|@c<(6w4+ zD?-Nqf`P|28J{AiODiFXR{3Ephv!nK{PhwXtsx+qFhd445;%H-_b#3~T)&OT0`%Pa z3h_k{eFKBwv?rl;m@uge-N()qMbW%>x5PjYLg_!BC0N|c^+F*Bq9_<_E~ilwB+Q$# zOg24Dv?G&~(!$UUFv4T-#FoX`#!&}@v@CVtWoD*<2P6au=|v=L54pk=>I?sT0PVot zz@7IWuj~*?Y&=j7p>WoYWPCN_pQ6rw7$PZ7{hnx!yW>FPdbe&0P=kYEBx7)r zJb3{Il6~*qL9jTsqs==gjY;bDhA^AMk5}R6JOQGcflZ%amjT3wo*lcBew-rM2n!ip z7UW|iAJ4o<6z~uPkfAwF`$GWxdejTRjN%s=$@(e{Z(eCp(V~{auK%{LwLr})joSh~ zRb#ig*cPt4OeeVb?57P5>ip~d9Nc_kdh>opE24W_dZS{wvfAm^n7owxix{*~>GDE8 z>wfZhj-8zy0hiW7LR6>~9F}AL0(lug;q~=rZ^Vtgu6f%}HP!@*oHHYL5J>gsv{tkU zm6n%#VZ7KxNo|xo)sv&|0|=Hu@Y(C%k>B4vB0rK0Q~L7#orz0cetu-3ihXP3NAN)K zj(hp}6VDhPr@lElB1m=Ei=DpT zbkJ;cnTTx2Ztjn=u9I_}!P08z02t0a?{2zDPkNUi33je-p#4u=WybJ`l3fC1W);)* zHl%XaSRx9W!v!oxs~X5!|?5W<;u4VIHnwILJY|Tx2zvdGECE_VoJw z(#7UQT)=Bhl98135EQajhTg+}RztqsRRZRU2yi3f5A%U#MDox6{0RZo_Um)l`0X(> zVp;O7MAKAU2rQlL1w;ww)DP+zC_dFw*X#u*hC$pLPZHvX4SC|v(-R_4E z=73g&8Tsj0s?UjE?XTPklBRwGS1ukL_clc`zFQ7xAeg&krA^0~5n>C4-4t7eASW{I zBK|KJK<&E+{QCUTusxY!XOseslxiL5LqILF6V!$4GtMwm{c?#pJB&Fr7Dd5=o9sU% z2W4kWhWr*rUl(WQG|8=8@fXY+i>)c=&I6Pof<}SbKB5cMBEte{OFG1HhjDLyk#3Pz zPXFz7n~A{u%Ndyqh#n^@m1`*w^!F0kF8Wlc7wm#3b)YMFn~sNCA_a`~ScX|X_rCR( zwpB`sbYIxzk|7IuqlYR=|9~fP-m)q|i%+1*DETJM7JV?i^3`RRVZY4TbX`@IwwMEP6AI8i;P_@y`V z&??S}2~(><`k33Ty{So?d`qGJ`I#ft%o4?tSkQ(n}JdZMvlt zhZ4W|y*~{1WVO>H8<6)uzOp*96tS$_rAK1G%*ysAV)0;P{J0ujSSua~s8iVc$w5`B z6zb0MKGeMia!2oKRgJ-*<*Kv6=tq2gO%f$_uF%l}x5;R1Xvn6gNR!P;x?0a{P^TIC z3=9x^VRynv4i~X#VB$N!I2pJkw`4S_uDpfBd^-ObJn$g=OGuT=|JVP}Hj+O{&l9qz zu>vWr+R-QDt-t(7^rWP1so3i{T=q@Be<_f#HR&02rwC@%HC*@sD1&qjqsB6pZdX8KCvCa^4RP`IzEljrrD|wwZf2Z3 zzgxdjj`mBdJ6=}R{KzjecLKDDU^nD~8PgYsj!Q${a{h;laOc%|l$L2kEVXnS?4B2tl;CB4qhfh8oF>_Ox>4GP z#*~j|Irz(xh|aA( ze^{`hKCG0BZ@)=KF;?4`Y+za*s~3Nba8-L@H4g=$#}ArSo&4mYtZnKIEf)+7uQgoV zoBTGnfJun=BTU9v*JtuIGk(hXx@?ivg7eDd#B4&FDZ%1UiHj9z4hu9B`Ge&zrA?fe zhy~t&8sL?l2}JOG7y8QQS697AM*R)W z9B%u77DGlxHf|!R!J6;_rVXldrL9+ilIeI>=*YFLPp(ZnR);))rS5Wnz+jGEe(H2Y zlmp6xw!rre?ggc#XAN!>uw}WMSXq zM^B&Xb(?rRfrIT^eMW%ro=bxePlIK{qX72hYn@Y7Cud!orH;GjV7$R+3+^rxMCQnY z&2J>UfGBIN)LlD!30_)SsTyo%OaL7h_79jGK(;sn&$RzdbCydvNE%NYLLssIoQ|~y zkktPYGA`I0v<0dAG}vmEPE9+!%7(I-kJ61^%~phb#m&}hvZ(qrhXcCBqc5nwY-xfU zB`d9t_=j3y*yf3fw?qusSmkr2Ud3`0dmjL2CX&vXPBiA%;WlyGW04=T&FMZ}pCca_f*VcHq&Vn-y3``A{cLlB+HbnO!U}S%zt=0A|528|hN=d8O67 zGy0xxUj|3->9EYj{-EIZqUt%>fB@8$s{a$)78%_z1lA(ZA!|_FGS92q5wDS~{fU;w zaHIl4@wO{{yQQ&lkhPuN*V_w$FWWtH|2hhPAX>4DRbDB4)35U%`&}Zt#dgo`CVUt@ z=fRg;+ZEtX2gq7_h$j0m>DjxlkbDiyg{PZa9H46hXtKdD=J~6~KCU!0H!qy?$=B&gZgV*|euA+env|3jqiF}PCQdBv#FzLDOuY(v<5lo8urp_f^eX^? zq~+@--Q5MRwCH#OwS&Ch&}#mqta7T1)q|_zQdc)a9C-mqNb+oGmz6&j0^?o7Hw!`i zyk$7lCPYGVov%1A*DCl@i*>74;Lkmd=t3hOU2kBd|FWPP>zC+xx^>zDu{f!_{lWY? zVCrPzYJywxj~ZReiIayso(LV(-!@wBd%b`v?k z{l~#&w#q$7#%ThSCdsKpqHSw15*p76`qkl`t41Rqg@X z|3}kR24&ecZMq)1Q@XoD=@jWuK)OpBrKCFq6r{UbNlXZ0_b`C(dflp_iM&7Qh ztchw{6ot$@zm{Pjr$(UT?L7O*7hf2(nezhe;Z_~)ux3eh ztM?`EM0@?q7IwObsqfaUm#`F2H_nJ!VTIJzbu#0;bA{UVBVBN_Gkz+8{^Fr z5NVm3;#uDN%-J~{ba1K?X7nRpDM*!JB;qWwJoh#Qfnd&+RP@OM$or}~$@br9VH*3L z|M$*S@bjKP*%gw&`k?kevdW7AjAZxUh)C96;8OlLLBT>CL1qKeQE4}%V7U8;_fzUN zLHh_J*uy}v1Vp%5OU$SXq*c~wd1q)ph(yP`1V3(k_M;|}yAxLE z4W|@*Mkla8RQ$>WUsgTbvivxN1uu#~o#%1E=b5S}MJZn)$1FK(QuiRHCi1&Zj-ucvtP6?7Hjl|J+!YG9oNUJa~3X)>9@^~7NJ=oWF@Emqo zzI3{p=jGtYjQ_h%iyPH56!PXA>m(u#$4<}vzo#uO9hgP$O4TwB$t|621Qf=8jX?~! zA>CW-b&<-euWC}IB_*kGC#eOC0JQ004|BsRUvIl#@8MJ6 zIOjqc{=tt`Rb9;`&qUoySL~RfKY*SHH*g0pVf1erpmH54V2^mg*(H_StGJr`2g3eK zn)!&*UAsx+K{BQuZW^Qy@UK&q^BdevTip=Bq!$rWlESZatj@Tt0q?0Oh2tBx#~t8{ z2AzfIwxrA}k56vTdc;RNcP1#)lT6Qqf) ze;gYZ*Qobx7*@Zem+ywZlPJkkk=}uR8!tGzyy5HI6S&}|bVuB+PmTdEuN=^|Sy@`X zt+JOGbXSwZfDLFDefzjtH^2twg?`XlOn>{Pq&ogj-yW4HWH=Wv!|&t>Ab)tnL49Kf zR>f9rnXpFmiSOpp$&3B%@el(*8!%U=A># zBtG%ShZrHSAR&$2aYMUU9~>F=2L)RZ&~>%sWS^0 zW~kI$Nl8hO_#*nh53#XK?vZ${PO(25x4Twswt$_0fzY{pY6L%!;2x^n>tOADeG!HC z$g$2b7ka0Ibl;8jb#?i1-nxtYNR7(!0uYhqC+&fjYyY)&<5Ab2=q9wgYmk&nCHZVi zqI&#zclJecLgJI99&@({43ocP_7KRHXnB?OwafrKmJHUVaTMoaLGsk?@YiQtGZqm# zwna1SKMnu<4u3stg)@9R*oUWz61`M9bO3^flt7(ahle2OLH>cKyuqoiqGG`E!S(9C zgLgGra;WWCJm`fI{&r=80nYswF14RFmk81Tb5)#~x0MyLB1k#Vn90u2*;?+prQ%?^ zlgkpuf3bzslJxxS6F~m*H)0DK!5H<>ntV-3>ZIrBkKX4Euo?NFz*g@ z9+wLUxbo-N;gFUNLW|5SVf&~qH_|Rdc49hjJpT{2P>8ih1V_ZN&XPcQ?@T&P{miqr zTh|p>g+lOm&BaPPMSyv;-6hJ*4f?1=&fJmBz=m6Cpa}Hp?PWyT7+xgMecjb6r1|%> z)om5SC?;~GPn%6A3N7rJb*zFHtq;@a)CV<}p>GwyidStWQ>%p;->UFy*OxsFShcv# zi~qv;nVz2B6>CiXo0^4{mG@@`NzXhkzMMH=^NyeJb zA}Bn*CpZRyX5o@hVgVK5aP)pLa|7l7a{=~?%?BQ9YbUb|CvIA54Z|z=Uo1Is+>8Yj zwy$}(JiK(&mv6N6kjqeq$v?+Pp z;C~BnYPJJ>mt7nkcL>i)k>kiH8@7E7BMP{D3$pT{AF0r~ucN|-da40r`^}{Ch22A6 zhH_(WVs~ECk7utyXW6_sN3B1MBVP>j=?sSgscOR1C}&Mvby(E2bQxWp%`tRa49R$?uR*G;~e^f9!+s@7Rq6uyl#?=l@2s)Bb8 zBaFq@x7l@Bs`_JQ*wCvp%!V^$77XYY*BhG1<%UvkE$m-A7-D7`Q}QfZgG$s#p>y05 zJZf0MzUNfWzM-%XiDcqFxN9dDMw@C(%+e7{7O_aZHt-8K@(bf9a|hR*A53J)38#di znKnm2d1><)b5a<$P)q9PM9IKGum-h|r(Ot?T2f;pA%nBrDGc$4fShX-t_kU>#$E>n z1_ol1&cojGZ-^-PDvaIPQ9hMtcl^@u_2lF^Fi1x16nMbj0?1cXN6u!=OLZM5MqTjK zYywJ{74r#*LV1o2y9Q5mEQX9z`@rpK6Gs5NjWqKu+vT(zUj4fA&Q62nhPqNVneF(s zf#tY2%3Bk-sn$F1+AC%2vwtseA5n~DiSBEsb_wzGyB7`9*-AeGgAZnlDlP;%_|S-w zdX!D@c^WnK3C4}hr&VK&-`ih|^^vzh67j~3s1Yg;aex3~@USqTY)6e4%hpn8>Mr0y z8to_mUSz3Ks^4jz7|KAysYF5#llN7% z9I5c0;@rWY;q0%q!bcQ;V|5u2dv47Fbmii=Q&HCWMb)I?ny{oK9LxVb4=nRvCa~kD zGOV8pGBdBw#tLPF24xpty=hU49wIysyb(}oC&zHNM)rnx?bJB{#y=g;h2Qn+J1Kz8YuS0-Zf%@nqY`vf;xWC6wa)g*tA$!0#F5nS~g zW<@>XI>#jz0K6wiH-TT_@3$}ZN~J4mQ;Q?vb;GnnoC)9#HBoR`C>Ky5?1k73Wxo=l zXEGY#zI|#q-I7-a__6^&u)%=;k60m+QKt?MY%mZ94pM`{+O8sAnzzdXUf#}FG`s4% z1x8jSLN-3KLuq`WZBroB0zr=c!BNxyxgOHBf<>n)GV{ygfO_&+^q0j+n5ndzynkwv zxFv8HJ|bJ3iJtLYnSmqch#Z>IHpa<8c49sE;{@=pEJr9(16{$YYsxklL}|B`!jn{2 z6brsx>6;WwlzGD@C3*k;Qwrh7Iy#}1@prqR|3Y);qDoj{z)Cqnc`Gpw<8bv? z71@>r!e6J%CrNNYzj~t}^*nxmyg+{P;GiwL0pUNXgQx3cKatIW&-U+GEn5d?)fVt0 zZlh!La7unX0q?N?5JoMp%NHpPktz=v5CX(tHEsiB9BFU|348!4=X4N_E$8cdJ_lxE zpJ6^?2GylMKfGHs+UFqie}?GyhSUln_z^h2_sN}N5V`4rALWx~+<;(OGKA6!9cMQ0 z{pb|psB&(SXJ41sVN^+Es>Zlna!GZ~`SRy2MI_COwY5a)$3IMzDDYAg#$O1b{axiH zd5db(PzAi)FC>RKFCJc#5CjNeP>>7j{p7KtvlQ$#8ED{gB-obj;7|Uj7Sup!Q*Jy3 z22SRLZv5VE`f-0eaxncE2^JK>*RDv^0@=K?-?*V(fa9Evh^2Fhl;cQXrRrJWdg_xs zS)E3-Qa^22EojCcs~5R(Cu_bQc>(3Eu|BXWL(qJ;Z}gBWG(@f+4+j2_ z2VKL~z0A@OmUZbQ9N*A%S>8N~Ij>1xc_#kR+91G_Gp5{5E@RXJUnkxJa+B zVkRFjKHA%yWJ_V^rr&;$$9c$pA737}I!w}7sdY$t#>Ux$qs+>67uvBr+_|n9rSp3S z-ZQ6l^1h}v+yCsFT3dbO?AIA+V})Wkzphjk0vLMl>ZuyBaFtdwOw9|{fqu9JCbo9+ z8*4WHBIez}(x1Qg@E2EE8qA&EK_0QJ<~Y!oqF*^nK8yw{hE|sreqMh3CZV08s>Qf9b2(d zMM?>N1O!`Qs^O)nrYVmp;S%(kK#pdZ9}XKHxIUWF)J!|NI?^3X!EEhpAasxa$qr+C zOpT);l%@UQaduseJGV;us=p{_p~qO1@2wJ{xC~n6(yA%~01LuqZTR;57a0Ezc9>36 z4Dddg^^QB82V(h=H*SI|`x9QpC#I(N#sd5re&T)A{0_I@$mUqy6P=;ocCXfC6cj!M z8d~!`iC**PunJZT*q?7?ef;=U5@+6pS-@x2{_~e=8#m_r-@zVD6^-wS-WXq-KlaY+ zt*EUTzuqX#Lva+UmhPz4zc#I*iQw^iPciF$}H*^hlexhsZSiWubF(r z54w|_f!bt|#s22Ht5U(iZ&d$-WlHRqfAO$SQq;h&X4fqzxX?t3qKiuKZ^bxt^X9Jt794|9-b8k2pI&HC7&Z1HGVWdTV z*BuLnGx-dDteUx3ObqTPhH5{54`Y+~Xqdf_|&!8Wj2@X#*jJJBAfTl0s`sRf%>>SM|| zsc-Sfxirm=r6oST!#IFGdkRfq|BXL)>%vpUMl8#AeWU%+_)DKXwxGU=Nltjc zlDbOJb_a&&bYOK?6Wmn)>GLzd#d*73^t+-8OG<}gO--}Gr>H7r8+J)r1Ra1QVlxc$ z(VR?7pYXn3AtRN_p&n>|9jIe8te{psJ}uhmY+E2H@fHTsi~^b+{c z#jv+(K_O+&a#dMqynQ=iLoM+q=Gib{>LM!oQ>oY0z|6rT{Iiwqdg&C;uo6r5aU?t+ z*1+%O2xiNg)*5ofJ<(t*vrhv;aGl4Z)0}4`Lh4WO!#{OWPYKyLdEKQ>OFxBIAQ;Fz zW%?^=TRdHCY zO#N6=D3w9W&d%=ehQm<=X5)6eUsoASnRtrFf7f7HUG+A6Pf+^nrPTLaR2!^JA`K_K z-k356*ukWIo>UW4JY!}#O?lFK2Tlz#a6Zq4EBHkJ@na=VlGyQ=sugmR^15U|Btj-3 zA?bi1udX~`MDQ%^?w&cK1>@b3emr2L`h-Iz!sLVL(1m(Jp{Nmddjy@0us{jDR`GHl znrHnrI|qlK%uGR)B3dG?^bMxI5k^pLVNsFj=W!mptK)wYxO)_aFCA)WjN{{1G1#Za znZVK$7vWd3@;&yW)t~3+y*5I#%5~pf!sElEbHY=O6s)_Mx69K<>$n4Qpp?wD5JQzVR|J!T{6D47;EM!1DGi$DUHq##QFqEZ$r{=$}GIF+P(T_|V zpCN@ODb&25`Q~CvZ!M~XX4@&08fh}Kc34TeXe?3C~+JUiJ0-gNKggpelr8X4O1or85#YKxA!24(j z8F_vXK7TbZFc1q2irr@-3*2x$wJbQl{{XN36OPyhV9IX_)Xn-^xVqLobb9RWwc ziS-m_`b6o(!+`7S>xU`2b&jq0Be`535$r}Xn`Mh76s9u_t6m3FSwf|~hKq@q!+KR1 ze)Jb8_v+{&15OWTceh;dwY}6~z!|nea4cs=c6RnAFtA=tnOVl_>4xantv7NWbO(0w zchKs|MsaQeY3ebiVC=gJ=}#8~cw!cL#zhlnA^BxAOVu5wb%xVlBE4?`RdmF1YpwJW zY36`+ecd;sqAfb{Cr8;sX9e=sS4rSIO}UDIV=Iaqiu|2*`uY@@EbYlM6#GeAX;SKc z@7;7NbRFf}OS?KbWzlm=VI>Z9-@+oAk=+kApsw-Atgp7gpl<(rYeJKjB`j!uaCx8- zOpGr!?=fN>%Tqk3WATC~bF;H$jB^d!`WL@#WW6b^<0D`xUPn)! z)i*NWCGjJxaD-&3ZsCuVruDs1-Pn7Hc4*d3I^9UeY>8qyql(n&>Ks@1$+36vyD3qX zPL+-e$c`CetRz<#r|!Zf*TJbg)LTt$kV3w*^H(gfNRJF%H+=LD3d3-M-;UT;J-O}3 z{h6-^ci)G%b-dNQOmC+Ml-q7fEW#eO)`sHn+VjyBSKV(PmdM!2+C z7n568Som|$-O)z7(Wu8?tWupz1A(wPk|8Eh15sB|TP1esX@$XYs{As_4eff$}kW8Y}Z~iQ(^FQg zZVH_u+W~rEEIZRYWs5`e2ii$95-h8d0fO{hZSqa0p=b7hvl8K+5p_3}l_?XcX{L=w ziA_#&xo4iIZ3(R%_;hMG2bbxV>tTBCM1Dob12jW{EcdwQsFt(|IBVqvsGsz~b4JJTtPL3<(Gp1)EyfrKK9qobpcB2a9? zU=)b5&wxW{{C)sM|7T)*{F z*oPnm=lu*uiCqc_K};?rEBfaWI&O!nxJ9&|{Pqz~Te145MsVj1Fhk0go;4W@`INL{_4f=q1^Z$@&wN7bI3}#FjNRHUFAWn78z}g{q>|?|47hA>Ren zK3@cMdTDq4=NfI>cy2fmz&0Mn@}?q=(mugq6;#0uu&cCV@>FI0>J82kf3@povq%&l zR$ab8vS(V=ee~!HGih7|y0*?9dvy-#PYm-nZZSXiWaX%~<|!fOT9kC$Ndm-OMPVA&L~5~p zx&t-{ArkxH&Ji-(C)5?zq9Ad#@veY`N#2f|i(OXYLJPi<;%H^JBZnJJ8i(_x)6TLP zy-ggPBNVH1{cyzwRR+2<3Z$7!fz%z6HXKBimtfEN>x_M1juwN}$&sx^Hs}6JnK&Lr z)vqndgt~LOx~?f*T9W1v&5cGO(@$0Y!^MmzOLsUd036opzN}x^h6hZBPfTcA(czEh z@NgL9%ub^sA$GK{Y8aToZpIwgKqM=Kj9JgaZtnv1_^l6RQFY2yx@2Q&k(D5Ndr_9y@?_SK}@+M@XNZ3GL%+1v&$=UH^;5=fovuL zd4{UvM-XyZe$VHSJ>>x42#Sc%!0nPW9;TB=b`a2tj;Y_M@v?KsJT^!L2kQxOzY@8_ zJoQ)#Y0E;+qw|$JLT9nq=SKSci!91(JPHYv@});>vd6(44kGtnWKoci~F39HY zc6@yNT>F-ULi&L$Um#r=xN!bMN|3~niX)nqoLu)Xk)89z(_z0`mE3$l8AA}gS2VGc zX4x27Zmxm zrIeT?KOTikZJIj%&X8afmBUz<(jdm6a1*JBOlMkjJ@V_Y)2hBOmzrL6<03qs{p+x3 zEg;E^T<#-ykDT26uCf^0ma3hJ-nQJnGpf;SHLeXXH;*pjDSM#T{`jBYd&t}>WK(qq zr|kduSYz?130GGG_O?A`c85_AyDys;{ycezw0)l;?olp%MOBq228v#~gjC+jZX8}5 zqMV9v61k3sc3gFcw3-^QKLo~doZ!3mA-$buR4zd~dI%Y7qE=M@PK z8)uQM4+<#QwXuSG zbmQh+P@>nXZl$vD<&;Gya* z@xw<>uGc;#_s1we^vz%n_hbCWkC*gAe{E>*PL^q%XbChCAh1y7&l)lP+xLxcu52Us z=l*{A)V48KmVazc%J1iwgjh*R4>Ko-D6kucDlmIL!Ruk-W7}Bu?dVQ!)G3<2Zf_! z=!I z*;h*T4n71YVZ;pzXHI1VJ?X>Ql1Q^CS#zMz+@*|GG5$(XrI=J!^;o^fN?}C{+4MZ@ z?7sC-tV@7J;&2@F6k6k_;M%DE4l_F`i_cK0>NPl+_NRFqmNrZMrJ@kPk`*pEiZ z(c2193Re}tu{7N>@xNvCuY4V`L zG}V!UpbZBMg>T|1{UM^S#Q`(<-Ov3{AN?|WuNC%*EreQp5OVAhWuz7bOvbTusJCLi zq89H}W6@0 z7uZ)<;lz&NVPmIT)@y~!e*ps#LooPfBsMd{4!&zG(P*$DvNJN~RlT*KRE(0))c*C< z%n&GvBG(CQR8SEY#&sc@dF2N1-=-t`F+o^!x`cXCX6D6${YpIB(q@HWjZrm&u_r7V zSdwLk>VusyQV!}c#7g2KP0E7V>Hc`nnkesNbpi{53}Wo0n1t#JT>bJevhPBMs!=qT z7=M0NL>oQxQY!YNEz;?LCi&DMTLKZ~m5$XINMVo%$f;(cC8_jtj3qGZ?OG*fuzUyP z|A;drZB%#Muv8LGJBf!{o~iJgaO9s@bbf99;YScKfto_LF#tCu2mAra+z$ z9H@a-mF8$X5>Rjryw~pSTQ&wxgJSwdF+?sGOmuf6Kw8Oy+_tBuj6_^714>xW-_?;- zH{&R7mga!BaO7wUKArZ+s%ocjHhUr1^Ik<2Uvxx}qrZ@XM+EEsF`|>~u?iMmIMa%B zuaH#V%kVXXEkp$|wtmuoXn?Utw5^Me`i$77`Dd>#Mk(E80$M3ws~<2y%IDpv$s{8t zMPEWxgdHSZDl^5e?_x?Nf2c6u_mcSIUg+2Jj4h`DKSyJeBs>e%ax73TUXmztrl?I^ z-G(=N0Njw5O0hTkSmq!!y*Bzgak=fD6ycFsez(8Nr%Fu}$aGyZlP8*nAGuwd+}?pDRa3V=)(Xr@Hg+AV1(f z`v6{HD8gP2Sd(O{AMui*#_i5{Kkpn+iC5c+*P!_juX2!!RO&`3?ejNZE%d7hfiUOr z)vxk-UW~BjLIuh#t0Xzs>%btE(@_^>$i0E(~Y! zKehIxG2*)s&z>pxea&Bre-U?)HRO35Wc@}-Pv%e2k=8+}By5iJy3yzg(=b<;?YIrz ztzZ_f;Gzc&svr+u7d*}n!9XvShZXDX)GU~oEL#aQzVnd;0?ao>0{)m_ulLU8vLNCU z2%mO3itKyY0Yg6+sOWnC9?Ex>`PBFSTmaj9(h3L1U^cn^2Ah33zu8vPj(QQot{Iwd zV>dn^zj4r~f4@hN%qPgnxoe^=O;+0m6O}1}jk7?8DS`ID_+h|Wf~dVYhr^ONeutsL z%T9%K3MjYn;j)Hz%@h-ZsAV2SZ4NOj z%sy)mO^_ge0XOgtlK`_+=i6T zeb}x2&`I7-~yNg74kpSmF68d4&?DD0*rMD0p;xLJ} zh(yW!DOZw_!2dZ5^9h%@_&hJsa86Rv3Q>Ghu$e8VVo00^hpuAe@!5t~n{lIJV~{q2 zHxYr>!7{ZT@p@MJ#al!oYjWw;4wy_!@8^s@h1^>w%EAJfc**g6tn?lX$#3;+mZe1J z=jXg^u^!xCWi0Jj4Dr|d4R^F|O;v+Zo?0>9OJt40Do$Tl)zl2q*SnU>6A~2s=c~Ft zbo}$C7Ij*y2D-=_xh6Ar`gO@qNr%QUVy#A&)Y*KNxWOXg;)YJ|B}vz!7>0*Nft@YP zY4=I3R44tj=#md(vL!u6g`;`bBeW?{a%E48>ieS&3TqJQ3>?A^PDwReP`a%D%?|Td zJybor{1P}VnmU$a0B~9`jq|$6yD&X2>m?F=eOm@48R4%-j8ui6#wS^RA=+b~2M&7c z+-R`cn>N!{;yWw2f%SAVECVIiUw(N2v^sW{L%!d2Y{P|M(fVQf{bzF7od2*)&djcs ziI4ZC;`)C!&O57v*|W7Qij%y2we8i}J)ObG%!($Smeru?r6s8dtm5p3ipgG0&wn z2dL5$opp&zhzGi&-^Z=?HGH=I&LCKcvK%I1_nVL(pJN0^q{LQLhkzQ}glG1_LXu+eI5M}w4ogrK;xJG4uS;pFS1dTiJulZ*fFe92?3yEr>vk*-D#9(^+$tJqlLPM2$_J79ouv#blJqRHS^a#4$^x$HOQWM2o?J!r+QIsw z5)zJjc8f!+7vf3~;z2~BC`23SeZ%S=BIj4b3jh-8^1 z9L;NoD*+8f8gd2jGZ4G?f7muksLTh;g6|{z7xd$T+zBsrT#|1yN0eO&Z^y@e;wFmD@_)zoM!Cta5|Y>?2{rg zPHAXyxof3v#k@jc{l`~Z!4@TMoA87(h$~N1pO}6w6&lu`IVcNv?m6CxbYL34--yyT zZM8Fgnm|~vIBzt=-rjbDxh&pqHoNXILZ zE3QSK0mbuIUVN}v8@$3)ORkC5YOt=ls8WJ@7tOlfZT)~D5J>;Kf?$Ur*|?OS#V z3JOvMq<_k%^X<>ta6Ap%s3MNZ7m5$)uCbrx8#xJnBL8pZ+qWgT`v3Gem4D35kweR~ zJ1r5sx_j)`p{po^!yq{`d+M2hkHH1DbObs#&t&zn=*c-TE@QP5!alquM4yE^UH?h1 zZvkZuT{YfX4lo!9H%XvG)f2OO^2-lpZquW!Q0L>j=L{mctF*z-UPo%yr8rjB*SjZ& zi>}d6EO$V^iTYN!8&9yu_9Wl0sj5pn=7X<_;r!(HQtHHT>6|KQ$#HiAkNCHKwWrx_F+4j|SQsLMG1vx`r-yV;|_ z&LS&iM|glZ-5#$)Z8+Zggx&eo>b?j3xg8h$g);s*c1x`5MBo+)TBl4=d*9+mTtt$B zhtI$p!iR!)7!3>>X)(B_ZqhwVOsbMd=692>W3y(`)SQHzinzS~b`&L-jzO4Ayd4y% zWul)eOKdpNW-A?G_ahF;@#-{(QWuSz zfNWR@VCLv8tj|Z#0Ib$yS{r6y?Gm~ zPit;I&}u~-o<1`(%d>%m(-8uZYr0h#!kgc4cjqbnFQ zhzzgbaO*28 zDS5{7Dfds=3B$DEJLK@W#y;Yw0%9E-o14;1V#lv4L}zqA1>1y4uz2B=dNrqH{M#7u zPm-&!kbMocKcw&@>NsS)UgS46dWK#msQqmzWP9={T~`7z0F0~iOhE|edq8}8m4%=; zI5v!nht~*K?m1~(i6ANd%(ho6*5iG|`$7RO>zQar>ovftxp9Ip$kRnG0gD}|Vd(9=><6k@}O{%9^sKxl@@FLlF5ULBnyu$8l%^FCYdq}j~fiC#`c6tUpbA~^oA`p!m(ayd*r zcjqAB?61Y!|HSisY{wUX8V8sF!%S| zjkhV3=uZGjmsK0fq_?%hbS-yAMouy|1+8+F}anTiaZw+uO$dul=!? ziu;VbcyHPk{)jw8sEn5*Iu+>J+S+QxKVB~8-X~UM@3EpGOm>tlnh+a~F(0^lFJ816 zKT$$>Oo|mDLtRWuOM9!z@x<7-k}8(I_i9(KY-&3lq}Hxy;!h~36lwd zEjvjh3~$T~UvAi4zmg0d3<*iIPCyqVhwC;;+10j)lRvvvKphQM2+>vf>Zm^1?qY6< zs3L5dRx#JBvd-yTOUWoe?DX*+%G1!D9K`}Z<{y!r_&G*^g9NG6Fr{%nJ)u$kZRq5* z%LNbWDOq6Shua$J|qOFOyoCq;&cLDL-Zp2{(RJ7V$s1AasmVRQHyF?`%iUXGq zQ^drqmCMNxmm_hgRNUR5i__~xUU`DD7S*CKfY<#=L{#(*-ysA=s7+@Dub8S=KKX`W zN<7%7ABe7?w-3pryUdG`_oh~+`U+MHF&JDnI5=dA6gN`iC8tyigYyz}73Aqu+}ey$ zLvM5pwpRX~m&R~iij}NM7NX#%AWVfJ=(DamHb!EUubyh@>wAkHRaf*Z6L_eOeg672 z0OyJA>yYm~Y%GWL0KfxG@DxPml>t&_8Yrv`H5@q3SO@Z&G)40e|GEIGh(%bd`o;B6 zqSEy*TQ%5TN#wZ5?K!|wW&?IOzYQw2jm5>NUsbB?=^@cwGa|50EHX}>rA3G0KtD-b zXlYW{z}RR zz!7B~qAgT}1Ir0xie&oZOrO5_i4!3gPd^@wRSI&nZ^ZN#SZG(8sCxT;0E6<&31+;` zsKkqq`wiWUxNi5Q{NW=4`Yb`&)aKjh*6~Tqe->IfOKe-d@fDV7tkwb2pcMR(GWD*< zd=58{Ibu)W?yo7UmgUNm3vyvZG}>B_G(I8tgV5*c3;YM(kgQiK#wDq`J05MFpUM66 zkZ1TYwfae%=rWagtel^M8w~FwRn@oc#g0|s-a-CHtDRdRfbX~GL|rx4YChHcZr zfO*IdW-Eib%6oX2A_ec}KCik3q+z)&s;ycvB$_v^q9%{+W;8VM2Azq!tspqr+Z!Og zO*7Wi7ujaUSY4>B=-Apvb{s#*)1y3jHZYeJUq4H3)d9a!SasRO|IwS$c@?u1wzK)4 z?ZsNXv3&TwgA>r2nUXkMf7bZ}nW(A{)zp3$QU2;X&4KZXr-89J-4`K=C9GY~35PND zLNjInZ}r$oi1HFu@cZi9p)|9=hbPD0ZN_9y2^a;t^YYm2QI$uVDM^PwG%;o(K%Wio z__{`n&U!?c4n0pCgCkY<5xi6Mx*uVps;{bTSDnJ74a9wQ?q2Lirc-W;*;3$*(n3Fp zsl;-E%{MAUTuRA0$wJ)SF2&cKU{bV zoRtU`T>_&`qo}V;o<8+A;qqeKD~XV!7ZDKXeG9TcgX6CWZFS_B#%(ES2otTQDCx33 zqXwLsfqk2jDewv}`v5gP_DtTrx~&YzvvI4Eu}Gh0gsH;Cb<7vp=x~*2rScMG&Bgm) za)LRcro$7rn<;6+Ba1$NMOfB|>zOTs(C>A~q*02vv6)$y3PZ86X0_^aYJAvzg?Eg< zlcK|jNK9l04D4qr_5Z6Fz%!CYHb&`qWm;E8ab`Ifz%a85Z_SuWD^3klD-Npk)nEB! zSH_s9%Jp_*IyP(IWKTr#Mc#WSxmrWIWRZ?1tx9IPsyp&Kpfa2XURQW9Wu0oW_u{-_ zd8$HV)3e_LuMYal#9v9<+f!xIiGu>xmD3}V0iZFn#zjNMsFTU7EpK*#MM|xPf z(mhf8I3!4<*3@&cK^vULLnL{5_qRdu7?krQ`AcxQpX*L{DhDJbhbc^|ow>pI*o+m? zzFQ$Vzc!dC2&9X9J!F)Dr(}-Hv=qt2vGFRwOF7`L9;9nPHJ1f@skaUzuaURZ!GLWR zk}id}AMq3iaNjGLC|CW*{Bxz2b)aXYX!ME|6n_fo=hAeOy)yL%#>Q$K0%<%Zls7MW z?K8+LmYjq+D&3-+wt5k+E-o)|h+7Ko&LN?m8D`~Ie_{R;t`Hf);QFg7%4;m+oWO+4 zv*7ID(9qESE7W7?%`i5@^gjiitQe)H1u!`TMB!9qw7uFE_D0V&57^>mM#e`o(NWZq+q4+=``|JExb&e7oEp z*n*S^v|1@Wf4^%<>TC=Fyto;S`-6>4{0*TFWTA^F)TqLfxuM<{YXzt!NHZLduYPiQ znU+MY$by0WNJyztl&#Q@ii)c4wHwuU1&l%(rmu_-ap*RI7))1~m^^(MU`bk_H6Itk z4%~O)8X`f;RKthV;uBEo9-Er(5wl|@TUMP9-XNb zDk}<~Hgcs-iKnXm`aVip{`KXlVA>b`;tR68U!uaz$`o{HFK<6|dkP^ne-wqpl>+de z${kxSswdZ4LEZs8os*5tfYE9@dNviB@?r8{%1AmPa^z7{V@0jbt5Ov`=4Ux8rWmwG za9O^Mu2>CdSYR*g{rdH5n!+XH6KXF9NnYxAAQ|f_&>2Y)YZWMDAHgAXcY8s!wjxwR zj;OLq$C&A{I&b9hIE!m0D>IXF<~dd%xS+j{z(10pkC0T2h`c5(BSMSx<`8~o_=WP( zBnl;|xoEwFq_S6%4C^O{P$}y(JE=V0409XO$16Kt?aM?syYenA_vO*5@$NksBDV^9 zn?E}6;NDo9fEAa0k{LAnO{tVuBN^4SruCMJ%<<#UX2gzr>2wls`leYk2A7Du{2X2Kc;VPF3a>ekH4_4IMQHeOGKa7$5@aO%4OUVGyv$=PxT&ip@ zAg$}6P`DpiRa0mqV)c>V_0yDGj76=$uG@H(Zi*2_TWf0tv8>3hF+fZe%12R%zmr#L z@uoB(3w2X|206IIq^C~hG*Db-MO_xfXp}4aU;nH4en@dn^#WX}sv8^s^+I!WA8^)% ziHnbw=4{>nMdsthB8dK!|5Kx}RmUJZWiKZur)Bl;hikLZ0(92(EiIy~ub=8xi$ueU z8Jy1SAS<}D=joz0o-E57hkxDO!FsKTS2>Q#bDD@cOm9D=VtscD63-dsRCuY=`U2Lo z_bXZ3HDvZJ%ZmDpPI;Ofp;GNA<`E4>9&5`D7t~cKQuXcMk+UAagIs>4Oii83Jwr(r zk=L^f#lQ@OD&O&Ax#_5zh2AfbCZ7Y#hJ|r}G=j=guaMU6eNug0adeQcl#Ty!f6Ur) z48m|lG3DAqcp3;v3-8!IJw38Y@9zCq*|Ek<%!iaYyzTWk8b#hs7ibwbnG&>EqP0K* zdxA1YfZ+XBtvLkG3LM*JA4NZri?4SN5Udn0K{F2NN2(m!|3<#8@ZiCNuM+p~^Md=* zMcv}!q8Y4Dixj%)+r@s$7fM`b^PhaUdk?>Z#mxCIXWcIaL)JG~_?xm#U0u=@<>g!K zdx1%Xn`wZ$AA$`l(-X$Pj;iP3v|8mRDKGtay?+$3^*Hy+lAP4=21w<-^Z0Zb-*4$K z(~kBaD)ER|PB9RCFhx=5*RPB#qD9bF=4l4S#OAt|6X1~%r#`Mq6?)nZ*(SPfe{V%J z*3^ze| zfEk&E%E-NnjLO^=`hkBzp@ZX&F&J^L1u5sz4}(RQQ)*zHpzCR|=^~QU<-t2hk+iN- zjC-ysqNSzf#@f(jwYIi~`6fmenbFr9XS>Mo;yj?U8kD`p9gx;!1LDj?qndB(JI+UC zY@2C?2vYf@OC8!qMi(9+9Sw^u6!Y`*^MIa|NO-A=|DMv-gJ?)2`yb#W6+jnVsxzDa z>lE77`74VzJI=ojd?u3-Y}NQ0C2DQ++RLvEczy-ut$6pE<2dE0?n~s1eo^Gc5n4L& z4xKbZzx?=iSuAku?%ZjR=-gRMpoUJ6@Gaeju;Jp?2irl#qlOcF^eCA#Wn&c~o|X?+ zFCeLM zd@Wvr4ppk2cz_PUndLtru@cnt_17WoWo1z?l%RAiOV8||vR+=_Gyz!4R5$yD&LsS- zTdLbH7VGWYeGxah3*=_PSK_BatgM^9`QGvcNg;&h!TXjoKA53^M8galjBllsz&0m}q7{Fo}3f#r|C8%-BoS8!vbpWE-0R~7L z&bm2B(P)4*oa5G=g?-JAV6c=f^=)<>T2n@(ukU=N(l-XzIv6Fg=<##fAyYgr|2f{# zm5rxnVpyiJQg&$|uY|sy2Ssxlu8gBV#y8zY&4b*G6pLrdb&tJ&>o<|QCXQs&(BDV^$ zC-t{?zn6l!{@$o&w@E>MJnHM%SdhZ6x;TINJMR5A2}uvMMa)k_g7N@Ifl5s@`l8HU z@H?`X0RJ~Exh|*ZBPa4!u!p&)*!W^Ht0GhPBHLM`LZggo6NQKslAg{y@922E7Put# z+K%xqUS7m9X+c}ls{ylC|3CN1JDv>;T>JwihYU5l#~A6}P2G{ayKG*DXCmVf3*cU)xZ< ztyQEds?^g=2+M+s(D+HLRcOKs9rbd>&SF=F>45~QTE!N&CPFY}%?pmzUwCrGN{-BJ zARnTNuD5GrxFBym2eBawH#&h{&XSr>o*x(GBzft;P5btA^4rx_ivjY>vbTbSIvAbm z+87>@|4}tb{daW*LBL&6opoDBqY;5=M2NxxD*!w1#>jSj-b@LkQbS}yQC+#|Ti84Y z>&%zikdDlV`TWKzv`Z5`_>lD){@V>N2~KX(M`kGa3CyQQX827s@{{q1BAvjPAx$O| zUhV}bHvvOS(&> zq`O?}#jJK#wL)OXB9Nf%ZyleaGF~uwp$-jR4{@p*kvYCG3?V%2UN=f4=W*WbX!@Snq z#D?vEsZ5<&izX~eMxjRZ^p$}W%jqqRdlGU}AqwKOZIIm>M&oWB)}BZq)4>x-=idS8I1Y#XB{M?Qxya&V{B7N@{BMT}Y!y`{hfBZOVHN zB*8(2zjBob#Ti1ZQYJ0PIyC3yioEL-D|H_{c<>%b9UlPs#@2DZ9190Y4 zPKG|7Ph7n6MhnddH+SbvL7bH=|NG+N^?Nb(oqv4L3P0l*T{M3?*a2*F&^UG{p2eCr zVq5-GS+g!QELR;dGzHbVG{5d-jsCS&o%#$6#nLH(o~QOvg`_$h7Ly|X5@bA4J34}s zDPM@u8`n&?Heq8;a=wu%L%sO-Pkz4(OLa+E#s@oHb{qTLwJ_tmLNu99 zh%%yujtKZHauJd!C+zG51Q}Dik(bx}K@F#XS;iETRk_T%CYrb5^Eriof5v)sHqKe{2`5~H*|!MtCxr0Xcr8_t@s zp5}yp7*ihy)!nrti16MQhWG_1PM5#^vbD;NU3hF&KO0#qv2v^6m<9@siG@Wj4t^NX zAFUE8UM_ldkoogai3=fw)V2*Ff#)c#lRMkth_ zPE+SkjQi(=1I-t2ihjwt>4SCv6&BTd)X7Hul5m+gBDrCd;NV~ZhMxq^G#ul;IqV!? z5b6L13qQ(oa|@uH1Vc>uNWSr!!ZS)fl(%7%)Gz%w`Ty>@OwPWC`kbuL>JuZgCtS#FsI*s~Rty1}OR|HCp#oMkCZ5WgE$ z=a#*C>WWdBcY|A|cTPnmjG`vl{O$b}xkLa>8OVM;5h+eNg;I|j zLgao(srHau@=)Lk00oOy!PBnEG>_T&P7HuXU;tYC%{@)lZ}lTlrLH+@z_jzhl?AgD z+80@}LZTb8X_UIAwtI5=d?^oIu*0cs_kJ9~Wm{adNR;@`xk-u>S?Zm*q%!VL%|ah@ zIO4Be82!zK>?F0qe%*o+^sK_#F zi^7u#mMQ>RnJ{*(oK*n0$c_g}5T6{{pP7L8!sqqAtq5U>!ji z*%#0tsLp!|vcCvEybP2H03(K*OqpIAnfAA;=c{*bJ!ihy3AC%0hiO&tfxnjNT8ds} zkTW-h2b1-v6PMz#^E|cpy7Sfk5@e$I0Pvax;BO|3Y!0@!hmL&OEsrj)h9o5=i+67U zPxwZ4YwO(l=>;z|iY>su_!9>I`NGfS+QvLVK}2m3NMsN`&+qt@cVGtYEsTdR4W&=h zJ+ut;-ku12DjRnOcZL7j!AL=n4P!(F@i=|>*js|K@72_yWEx2361RlofA{LDD7v6O z?7}Q$%2JOSO=j0yBr6_`(aTHwk5j>SlgHTrTUJ+fvV3|LcR8978d=5Ib@tvtEN47*LV%S29c#&XTpaXUDNL_+19(_E`iitkGf=TOA$8j#u-&GC1tmXVbxUVcZ+<}Sh+({=8l-%lYcr=Khf0pgr_wc zk2CaioxonRhh6A-gfEJCmL&lO*jfKN*xemj9^J5)5mNoN{k?u8*U-RV0YygDge040 zrT=gN2S3@`I;oHiryNUJ*^Qa{z0UVwxWy=2R@FraucuFc#i2f7$gas`b+&)bE~3QF zBvNHm%R?GSTNwL2(qP-tZgsibfW11+sYd$SV|e>uAF_gK2yC@wGQNLxhFd(jY+29v`?`1DeF1b40DNRXOT z9M%yyYS00P#v3Vbhd(dfQo2QzVo`a%-7kTrx9)4t%~LnG_*<7XE0HY!F{4+{%YO-V zlNmJGa(pM;?jCIHm&7rsk`q|7qiaj#=+` z!4mt^lEtvhQ6~wXJ|$qemUAlKD7JF2$;>1^>M5QAeK#c!W|dO8#qQ1yRXH-Q_L+}F zZbg1uiEal7bEOrR?lq|j$q3sBWVG0e=JBr}T~*0SfaC5LqJ# zdtPaJvp~RA8g=~RR9Hx89(me3smVAd-q%MH^y&{9K9wo|zM6v#T;ri4ovx~N>w*O( zO8m6;0jF4bXnJVI&5u(t*`_O@^txNe8lV^~o($F1S z(w7+!fq>WbLR*P``DBu^=MMjRa@dVO(1J+13cEJh)$aE=j2TtIX$rIT+dCD>|3Omq znSdJ==ZrVAM3F04E$@QT?AD)JiW<>eUX@)Z7ZUqU7yIs;|@ zw8+GcQp?dvn2V{!)0)0XkCLuD`7N#FFl^`OSm9Q6zh8%mZ=mnqs=(ONJMq4^0y|no zKD4*Jx8B><)Rd6VDgP}g7;)Wb66#8IA1dK+BEAFOrXqzMZ&lRa+~dJx-je+I?|t^6 zwXUHX;1AYn zr8B!r%>MQctVh0ilrvY+UPS~|heJ-} z(R|G^oP64vR6=JXa0_JON!t~ewQ~~~ot;hB5zdJiIw1GG`g?Lx4>NK)4T00+{6e<0 zk-uN=6U}R3TD0<`u;2T&%kZV@ZPmpry>8kL8>y?g`ND~}JOGr7^49U%*4ipUCHIwu zTKOw8b7XCl&!0s!{zlCvHmIxn%5Jdzdu=d-b*CpOB1HMnW4WNIQqRuNpNao(wSJ*^ z4s_TouJv7(Gwc+P16|ITR2#{^fkIYP#jXcW2H2F-YC3z?I08`h$W441he&x0B8%N%K-Aa;0;1j+O(jG)+I(j3cX`rWP_W`7u}i^O9u;7avzcAWruqbS zLGgiEo**};Y!U{fEF>N z_Tr0W|9@LX0nEh%HwF;d~Ej_Kkc zTza4cSY)odOuz?qsBYeFX$NdAd?aiiiQujZn5IRyDrXx`LAA6DyPT0`3`@p&^s+f9 z=A{8P>v`s~l9znqO5y$YKHRpi&JZ^YKOUSo30JK|gFu+Kh)SgDy2ZEY(ksvppi!s7 z?49LPKr&J$No)ZNtPzk*tgq*H5XiV>+`*(lmqHIG8&;u3au&DUL!fC-Tu?l3UD)im zG9Dw?rOUR{+#Uo0oiKGd>u2l~#uK9^u79^RGZ0LK9ETEFL?NEHnZov257h-Woo!6L zv@usI58Q@;LbjiNozf4YPON7erKhozcO~!EFC7fS#I}nn5orSRQ(3f~hgSXg=lvJ= z)F{GZiVRhnic?B84W_SStRjLai;p5`=e(&8^d3H7eN6+mI>AaTu0J`e=`T6y`tM5h z_(7;kcTnG77gbhexvdi!#ZPuPL+4Y+x32L=zy&v!`2XJX8u$}X=_ytIHHTIw)Y{)Z zrhSZJZkWQi2Kw8du)*i0rKT=|0N5D3XS0^3rc#E?UG$fhhXTq{IedT}R}H{7&&iuL z-&`Ly?ArIh?;*G4hnk{{l|P61-3otWSmzy_cya2tDTykA_Q`U{ez7p0GMqT+df4&q z-Meh$NvG0A*~WW}6A3EreGW0i=J$n!lDT{=a;;;P46w(r^1u= z8Bj;_TmIkhn9=}>{+S)wdWy@XXlcI{?{YKCe=>K59rJwJ7pp^Y$fZKkE8-`dm@nu( zmiF(#uGL_yF3#s`_i^r7VJW%wi{bqjW2wi5=%I%v$$nh=)goE@N|VKu2)XcH9Zs9} z<@Z8aqq`C3Wikgl3fPX!;w?(d;;Zs`T14L+Xh}lTwHMyn)TknPqXZ(D3=$84U0KcA zfD&GPlKuJFZ;Za3V{{!aY|CSiNffeSA?3J!rO!_9`sN(P<{UY8^?m0=aroXHis`tj zskJ%c^8y*m9J!cCDkG#RPL%RPaS%BJulSA3`XVvI*@dvaNxZ=aVCEda$`V2@4}&F; zYXT~t{@=P)y1Hii@l&?8KKO1GwhDYjkM%jf=*1i%39V)5_WsP<;Y-J+wM+z`jDos3?8f;NqZ@5k10|UV86E>sayMD<-6hd`7&b=%Jw@ZlH|T<$Wop zkS@Qua>P~}yhA35{F`}i)0gf2AE&+zWF6)Em!hg!M201dAB%9;7~amJd`b* z7hR4=W5sXgz#**sF4w316s0u20DDSV_whZ|FR_*7n+^}9(KtRY|5|80k#8Z#-SuZA zX6)Mi3T$-829y>2@HN#{4ct3BI06CK_pTtFpdQAB_`@#G^ILD(#j$dlj}>pZMaJJO z^|eg=MsaJ5>sJS$*Zp&_$%%K3zKpVbN5Z%*FcCBVlKOwtC>VeW_3b>TW;qpNN_8eh zdFtzXasRL*LTbD&OvPmvmv4vP2tg_ ztWep5o&zY$_6mva3a#*kbBI&X(K&+W?3=j6cLq8-E2K1b`Ivn^5#J3`!hB1URf%&E z8^`jj_{pMZ2>T|}98-JAKjzis24(XBf2@)4kctG-2$f91u7pC60v83UV9>vLop^lH z!P~_{59VV*79k^i6yYGkkM_$=>}i=REy4}Pe>u4MvIqa5OXUK&4Sytw|JkWpD%Uw} zGa0CxgY7gch;%xQtOe0hUKGB~L5)>p%6mcFV9b?^i7&kpC2XO8=>HGpH1Pb@+^rx6 zdVZ?+KQ2XTbyI%}Zu|&>G3Iqyu1_WX^gPg6W`I;pZyQgrOAjL$(c48i5S5HttlU|5 zCzd6Of-PI;D|ni-jhFS23c z&#P3K?xe1(COWUu9}S2tKX`bn(v92;%qs2Z=!g+069S{g)5Gluw?FSA{?Rx&?22Uc z1F=AZu@`NMg9m8duOw)rtJ%68-d`o>)At4ZYh(UdC6|>-^2V@GgR|NcaH?9Un5b-3 z0=mPa6B3A~;rRAtFneY|ifcke8a!bMCb zq76B)ZTE^ntqmp{!vM&j;@P{Jp-EYyJ*g62d=H{+S73#hNB94E!OW@fLq7+TzNHiD zpAW_!T2s4SMfyg918;R6n`_oT;w=&%MA&?s>y#^gv2udnO)Zk(6;zz@K;cx#C$=;2 zIaYxd_IcS$%pf7n$XCSzH@y@qeuaafwEr*nPdsQ*Du_B`LeKvK$xh7^mf0T)wcK70I|UtA!>W@sF^M;c z^_~g%Y&XtMPR$vjlkvC&GsBX1GG8yt2{3nRC&e8~ZUGr49`ze9a4CeaL%(%sw zmyN|f&OJ$Ze&79*Sz5$9l!;d9djm>69%ID&6NgIxwev;&bqen8n*7U9p%oRXGBJO_ zhLBuQDWFs3ue$f&WhgHuk2Y`-iw$yu`1$~8jbfgdFaP3UDoRAf^@~Wj@)K%Uv^=(% zF^u3|X?=!6BsR7l{2aK06#dVZ6SA`}84Z4iYy1Xd1PAOchLnS6@n?Hr7bU-^G zDPOC%Nc*b}OdcGdYc!@VqC%TTA6Rk|98A=S3hFGPQT+$jP3D?q9+682H>N^*A#5_y zNHgWgbP}FAv_8d{B7cUhn!Zh%F#)z{2WDE?kHGZnmby?E5OI3Gy{^rV$XAWoZj4Xj+E6=KV>ymoIROq`RDJmku zlgwXjRMUbV;Y064wl8H8{N#@IQgQKfM1E;m*)ustT=w37kdgWR{Ag2}UXWner2oqK zw%6v`1M;24AjL%hL1kKvVI&r()y%0Tv_~z#;k37?J$0|0aT%chV<3r+fnoCU<>`GG zEP&PO)l0B6eI)!kf{a-zgE>3mM;Wl+z0yX!SfuRwZ1y9-0mkB2{UxNZc3@ZKlrF zc9~{ObqUB5+R_u2Gx`5^If8h(T{#FOmAS=QuduLseNYk)aI|thvy?#g zA9DT< z5m$PP2fA|@%!7i;-x`8Ir&3ZDOQ{BXJ4;n<&y6>cj$6WtkL-UM;-{`Ov+#nZ~g!~W=&&UGB(I+O%CM;0W(el+O z*HDd^YmkYJr=p^;M>i#Y4zW9&G)%DvyvrBwM<4Vb=eS7dd{-A0a`$M2x6`f?FUv61 zQbv+pTFt~$dBLTSN(I`BP6q2{#2S}yh~CpP&vG_ZhCAzGGHRAbB&Mnh}ZRrA6rV59WMY^&5x#)bm(cH^WF@q_Wtg!nvS6AO}8L|UpJG8>1+J? zWi!G~YgZ0!6oLFzMXB%caq>&3o^04>)TaAwLb~H*Ys_2!_JHe--;Z=D)IW4!488gJ zSc!=u)wQTmW1LoK2h4sH(R7W%^{C%g;WahN*k`UsU?d}J|Y_Xb|#e{E88+*00Ivzvm<6r*(3G< z)F};fbMu<=&PZHxKiLA)=I5!t3T5V8e7DjE<-h0#NM6zF4ura-KS2^8H(YlO{CF;K zZ?PCcO@Cf(%mv&$oJPUQr#3ounr;+Sw6qSls7D&)1d$pdp?C;jaTs$F$6}b`Hb1;` zW=Cs_NInD)urj7U+!2W6n}v>BqCdFoyg#$>;aVI7l#yh*Dbx2KsnTOr7LYxVRx3VL zE%uXmdI|)~?3#ZpBO#L60JaO-9elra;5j}%ULrx}T7E-a#5&q_FeSAu)uhE?Ge2|LWdp{%qq?^tq0flE+Mq2+3`YYmDU5Yj6U02e&dk5M^>Sxt{XU z6rA2ze@L-jKLAo=e&&b4Og$ePAeVpCP(-TydG7)6sbCNRwCK#ZrE&v~vnuQ>d{qfe z7lr5$qaq^wj$SxaT!4cd?H!DBc>gW`sgPMDWZ#5C6#cy5(EN9zY+tI#Y5SP%!(h5A zxDA=g8%)Ub3j~$st5=c2_&LdM5H!^)&^ydfi+e_tz)Du#PwKHY^`w_M{$(bsBlzxD zQc5x{mw_j$bU3Ajvwk|lHV{azoepDJHTxOF(W8&CEmq_KPf95>D{E8U zEh6gvMKZ<&Ov?X9GLCuGqq3eWHS#ler!b(LR@%bv+#V%>Bc?-n<8`jv zc)!fc`=QorHY>EO$0~#Rsry8Q`B(>?7pTX-(sx8QO7=SSCx`~b#`~Q#GP;g}{M*Z| zvXjk>KZuvOO=frgifgP?J}&T$kks5l`$9e{%z*aG9{46Gm32ac_Jp%@k-e zUa1!!DsYgDV>|?@^DPED~d&6I?tz z+V2IX^6sC?@=ydxw>y?)s2unI{4W<^vWr43V36kJd_wuPx-`gU42QRH(DR@a0gKhY z3HzA$>EEOx7rQlsJC5+=3u6767p)6C6ZaOtNWjKn+_~u;eDqBEd>**DZVxO3-|$W2^7`Mp+y%v$<8A7lRXfd!BQ%l|aV) z=gu@#F;G2HY7-H&FLi>Q6)S^k&wF?2f`7Y(yOLWkS{(<*m2#{uQgd>yj_o{Dp^E=^ z%P`*9UNY|Oysvi}qWr4(79oIXZ#bo`oIoMnovt9uI|kL@uE7{tAcUVW2>i{v0GYmg z`QpXbw*tHm*bxdVD_Geq>nDT<_Z~O$GvG==NKP6E)n*g~5s`>OJqlY#^*kxbNdDB% z6c5(AG3dU45Me%6;%RV@oW<-h>K6l>a^*+tGT2Kwy(><|v`#t6!Y_Zj-JE)%uWx+BrS;HsYp!6Zuq>sT!;VR0 zXFKC1IV6d9n}<{n<57pj?Ci3sLHqUcd8`H@!p?ftjp|>%7 z0%Qxf%Guss^}bv{92FH+CI8g}%AJH-SJ!n{dcTAxq2QpN|}mg~Iw{nufum=eK(Z(suD6CNYXTHOsuzvb}kb9b4R+(K)_ z_}9_VH^w%L)U3oYG4*2#DuNMGJgijG0h`{)-X76^AA#-+r8^cegs-p6W)>H|gy;gY))X95S z8R~iZ8omFiX7>~1-}h%|e;^`4HgJdNSC?2S*)OYL^jRkP$AVVtgiVRb6`B=tH3`)J z&_sd>DSSKf2_o@Qd0E9N0+DC9b(a}?|2>xP^~tv#V>#CEY0Ly3Z<_9X8`U3AKN_hb z@08KTg>(5WUwSzT3}_DL4pZ9tJG;0%xTjlMtezsy#}}WOl(ZHpT$W6tM`H;>-d>B^ zmp*MF0*t-h+)Iz<$-$$GePLmN95i6&U~qqK3D%)6p=g#gHZ^T&X=}Sg6SlhG9++(f zv|Yiw%@k4rObiV_6o8A84nWIA;5eERRX7P}FxRc!*U9m*b_YtGu+YHwd}-60SKz;F z`O%nb?02}y5SMATZ%ai{5mT&lVqE37zAsFLP-IC#bj}aJbQUy5H~U?aL4p(6 z_m|M%ME91aXi?&j=dL2yNk&7soC$x;q98zcQ52HiU*?tXqoLvT2jT};jBS3mljo;J zN_Vz?i<|m8kcXMXO2><8=&4G`#-tvyvzfF8_2Y9K{(njs2Xa<*apXV3lQ#zfFptVi zr+9r9#vow#Yrgiw*%Ib3{U}K|>J(UqvEM1}&s>M@n1ww22;`M%plJXncf_EKemh&& zt5>rB>(^~hi{4Yj;K0BtdNmQkaIBWyBT>~j!d2$f z8-pk23ncVB0; zSbb{iyCbi+U#E4ZN?w5!Q(LN_BMXp#Q z`g|5BYI;*$S9j?DMvAUheX5{id0X9mqQW3cD)FJDqdoyTNdoNvrs6qCmpkw;iJd*m zerI|H%E*lAE&e~2T?1T*kCpl!Vi)?~tevyzqD_Hsk!b9$MQPi@`L4M~45HcPo1`zs#^i=ay*90gPs|dz+)O`=~UaMr%CFWL&@7ox6*M8_0;L|{1!(V zMTSLL3>NJ6yH#75T3AW;Mr%?8sICd!jE7?6q7A|8B5Y#Bvg)T%1zsS{^ogr-ffX1g=}o z)?rvSmGGq}QtqfTTVAsQf5{uh2ey!Lb%xcs@_F`3f!~h6gez4PT&QXQM99!le8^hk zaCP%LuuHFYfGxLy2-<-oh-vo!LUF;S8_>nv+Z)FVb_*9kevZYGuOHW-30L_%I%>}Q zTqgTa^hImC6goMdvcHO5%vH*t7EI-jsvIFh?+?wssWYX-%DwusR7SOaJHUCE;Sk_b zJl-1M2m`Tqg-kWFZn7tArXkJ6cP83nV`JBKD8=wF742nMsz_oVBP4a9YSkh-rtcad z)hS7T8=6#Cu7q??|KpqnpqRqjJg4ekxoIKjPG4BW)>um!rKMwA|bmL8XI>k zKBXK@M}FF?NQSb>2pQq$V3YpRbC7=Kd59HHl!A15e+W>KgkXgPR!pY_mJa`fANmAtk1>O^7^>vI;0m_Bsm zNplggRp%w5e|wPU>gGX=bwL>aGzm#}RvO;TkGerD{1c=T?Hg(@f}j~~(x2{?zvbY# zbcuL(=Z>T}rO!+7n2Ql4RZL+N|3+1xp-rP$WWO>R&e9c=kl8$WdsUpw`N+Q;a&ECJ zbGm`r>!tirfp#E7ymzqGkK=OO@ntFa7-_Das$+?QAvL%E*Ee#fw~i(ss;qb&+STA; z2nRKR$XcAF&+Knr0l|nZ|vejuWP7;-c`ucLQS2MlS2+Cu&60l>Wp8CL|>tCAxmY-Qxwdu-||&hpp={fRn@#Ln7H)JH6MW#bwxiIwp<;!9<$ zf)UCL4K;DAZhdGejy-`PMUXZ#_ddK(x?wWo8l?KYG-vKYo$p_6O>5FMTR9%Odca z&?D2nWvvJLahKy@Wyzf#$h51My!pg&5)EcqW^o>>_T@{;`Qp$v-ijr_Y*35KQ>RMv zM;|%$CC&Ef4Xpe(r41A zQgPc3>|FC%I?SQwue2t1yRK>ndal$CshYJi zwbVDhfhrJ?F^A&Hmjz`U9OH;8Xz+&Aog0a=_`Dwq8Zc8KACsN$4!e&xzb+eZk7uY< z;ABMm#l%lBO-Dw_ldoW1Ld8QbxUGaGi{eUPsEVe4>8rg*gb+3xEh{Z;SqWf)T6&Qg z6iV;G)&8aGM)KQ&iLh$`x=aL$@N`7JqRy+r3U_YuiDLG{8bDMN-Y1K2=Mx{IxOf9- zAqhZ|^9QG!mn zJDT^`(X5Q{BUj+Fy)3-iBKkP@CM;%oYq>j^3&u`&oN*y@^@n8g74D;vC~PScE+oDX zITVF8l>ECD>A0N~CE_V6_u>?2&{*2YVq>&8;Pha}d_NF&f)lZg#i#X3s=y!n&Vowb zm?LxUYELw;u&|flioW<;#7S170}h{v2g#k;Wz_8CKbQXZZ2)n(t&hYRn_hvfM6d%pPT0pb0wlngfl-ik2NhyfA<)g@AI?q!tdLD7#EQd+{KDj8exkH zUsx*QW5Vo7EcAsenRaW{gmDI*H8(UQ7EoOuppYkRM`v0_R2?oW-_@L$31(Ypz|)oxP`() z6$Sdz5wWN-3b}lt7}qVa-T-l!>ESPJMyHgE*@!=i(|26i=T(@kk8a%gDj$*x!pQ4}e=GI+yamLa7Fd^0Zd7ci#Y*y$cll zyCAea06#P>08G*h(u$!tLJCBBNFlaH%1&N7#Kcx=3Ep!!VmfJ3(}#zcYkEs@aE%R$ zlz7{ZzhzO_3c^L+Twl*FqIyuwH&CjGqNiD&hVQ^sI6-cP37hFs_#UQLqRc%lpZ98)0X7dz71Pr&t@%Z zjmo>v9FnyrZ0(eip?ouR-|{v`La#Lb&weAxPteCvW=YYbaF$~S49 z08*LO($WpnsB08*YM^?_M&%PX_3@N8#^raRaK{Et`rJ-jjV+eA?>y3`iS;#A{q`Ho^>Qa#3o!pVxkWN!%;gkt-nF z-P#hv_}87BMOB^$go>{GADb;O3R{_KYJr75y>;UA zo~d}Ok5q&ZOCD0yBcH9%)`tAFLl_k0%}h<1mr*TjmNz~nv*k+SchC*=R4uL~#c!z` z-?qRqbi$=Po}o94uu*af*nuMnG}~~beN<*P3Z!?!uG1ua5(##8+FeuuhcG9{y>qW; zn1Av3-QL-T(Q55T7O|4A#pMRO%2qb=N41{1MXtxqZs@kI>ZDqzW0rb)dN^ZR=IJ}t zKgvV?;|XCbQI^zb?w*^Q8

eoADHans&hP#1{F_-ITBFG~gW#gk~4pFYNuS8_%FL z{_^vo!G|*JT_<4G(Xns$Zyx19hSYVi@{eNerpjgUzX#=9H+n&RND@p~^`KMu3kH^L zubiCNgmsJaD{bByd7l}?)OSOj4XsFRFed!UM$e=nRDRdTG4*yQFR@-5RKAlA9{#-5 zMHT;TRVI86$n+`q_=(Bik%otdn}9Jh9cH*auDf({tgBv1D_!(o&aDCf*rjA&#ai)E z43JP{O%z(K_+fB}Tyzq)Em2 zO7hPEcmC|NfVjJLnlJ2R`1DF~ zwDv%$>5N%fryhoEdG>M~c+N5$3-JNwR9<@g{;5>e1`2D^FUA$J|=ANc{wD=R?8uf84e zfB(c0fnJUw_?iL|!7TW}Dulwe1-L$zu)1v#+COQn2?4;LJas@deFm&)a{y)mh9 z$}K>TU9`@6MN|5p+x3ha!(QXaHrg*KzWdL03dWgFwRpQc6&4 z%3=v$ae&eD-!mn}!&c%Hp`8POSc7>5u#VZkTLz-^0L}BZWu*})7(}c>%0)0#))@`=OJ4JOSy|D80%Ox&eN+eU zj<>db%$rG|b@YB(r?8WJRPowF+Poe1QjVk22jU4<|^x6Tda(}s)>kd;z9fUS_gDZm(2;j-oSfDW2SYP)% zK0Pfvyg!Uc<#1aK$FJ0B+rYrUC`(r_wZQr*E~55|v{Lj(wl#nxQnq_I*uBBoQ?$uw zx(4w-xTpfVRRn3{1{ssIeAYh`6`0ds!(59dauLlnvEU_pKefeN(w~`rEkz{BW-Ezi z+FF6T9fzQOM2}K0#2Ms*c}M!{=g*(Fn6#;pye9ThO&+jJA>pIJaL0L7BT_39q+-9% zvy^p`N0z@o$Hx%)gcRJ2!C`&y3ub^ZMsb=0%QU|tZ}mF2 zNIy5AwPWBHZR0Cf6K*;Y6wj7Pp|U}Qn5qkLKePS6cBcd!QM$Lzl;8Mr_y$G}rA_}< zh|^t)(Qd0KD`RT1o;H@0gpNtZrg~NO(o;P&GeVlINT+fi zvsX&z(W47Nj(8h$RZy=k6zV+WdA#wcPp8jq3Nze_yKZgJN<($UO zcYD#jq2OoGESeUm`2_N5Sgo7gs4JC-X1fnw0?CxZ*0+4;5$LWsDd%wlS|W@K&?jQu z%VLsqvx3!ZW8To$GlbN>0oG1ulrU1*7`r*}Zw2O)l93Dy%1PI=JuTMzRg-k$oE738 zpU*NnGRSFZjj;gr8OruWBap@;+wN(c5PBbT7JHlu419Q0GyM)IcLveqyoTV2?NI}T zCW-x5=X1R9;J!6$dLk8bN$8J2E*1nhA|0=50+P;CY8Qeu-^!wmTt&)@#6N!(t|rz- zZ_3(V#<}da9SlknGh&ekKkONJ($J{kqZLF*;pAgJM~b6@K4kTA`#)iqH1T+*=@$!s zpG?oyKK>}uo^Q+5vY2R**dNeEw)(9)P1wc76<4hN>B4^p)1_~pxVd7Aup=K|*=|l8 z6oq?u=8k#bGw%=VmKf=&w2t%1EU52 z{=cu}ue|EzMj*#4JWQbbtYf%U&>`~6!M?z22`uVIx)slKdK zXhlS$pEf42-;^mt%B0UuPE7nZB~sJ<5Lp9fq^}M>hL)H>FY@10itjTqTD<|8iT)f> zwtL3T&dyyT{^mp^R_!DaCcO^!qKhW!c$vU1N-covzb!Tk=rF=tq3StF1$BYc*Z|rF0 z1p$G|lYllvlZAtRBiEtzp5s_^#NMpK&vD@d#Yr67|{V!Nqb~8Q+g&F`D_e8CrW>rOfv8te%Hs(S{ zAfSk%XMRkS@%+zkp+XF%1}5vV`rMCOm->QcXP=z@y8xN^BL%!&6SY?$zN$Jt&l#SmCiQj+MAz*I7&{*)|I;Y34!B3 zZP3d2o^J&*y*m1>TIWQbMwf zkx*_Mrf~V`yI;Rw@YD>=W(@n?P$ER_v(th=#gng1GtKy?S%46y!hR zdRGwEyDSNm_k7>B8#XSu7@n^t4ZUD-_$k?{tyiIs<>Iw2XeQ&Hx{Jv=rrBd9HHQw% zny$!fKH}OBWmt;TOZUFCm{@c4H_aZ8$?fgOY@D2G*oFf>20OhX>&Xt}IV&qGJHYys z!Z{LjeLm=K+4=k8Dlekn#)76WRuBNfs%h!s@qhk?}0PfSAMwXlE$k>p!s?#PNd$dnym z9yHMsIW@%og!Opw8PTWB9|H?N-LLeMogxD#UEfA_|Eeg?)i^O{N9tqvCWH?LbmIS49a#}?lVib(TO#2LqkI|#rG>vl>BiL z`fug8ccM?0I`$Bkmg}55{El!C`rvQ{IlVx6xzd9cAFB2UkkY86n$)hD~<#b60fEsYQF~ zm?lS~Y$_Df7lraQ=%Pinu_dgq)xB|e%DmNcZZvsH9;N@i?~4*UWeJSFU#eQ{86fzS zPX6_k{wU;T#q}WoueBp%>`*6U+%!FLnz+Gd4e5HBO!Kg4Lm*qS(@vf+`Je0y`eBsn z3}8bYC@>~CF(!Cd1WNQp{!z;DFGob%KQx^)O#37u2pojUj)C11Km1RBT+3xx{%FmB z!xA=T#@+A#%LORozP1M{)`R=#0+jNvDh#>Ed?^vxAL=46HMq!*bPw*oo`<*TE8ok0 z*#4DzR=!oo>B*~%e4M+!PwlO&@@4I6`a(_o{iP$_m{nzd{+6Glw+xB1orUWFZNF?+ z-(X{8qg}?FjHs5jj2=|Se>)kMzk&>LuH zOHgjU<$5x^Cp`~4Ic4hgA-7I5>-tO%yhRCD{<33E$m(lT4bvIoR&V3o%|mp>eIj$q zoJHOUG&nFd`RgqaC(lU4lAzqiOdv>x;%cb)=K|3{?PN0)*DIs9t7~v_8<*sZu=>_j z-lIx*5w@rIaqcRjva)tnL{#7wTOu1;&t3H`=;*jUB+-&c*td!J;PvCV(?b5~ny<0j z_Z9&@zC&3R`ZxSjU%{{FMscDkB#6N$gz3E|^TkDa4fnTgySHi%=;vYk=9h9QjS*oL z7N6XqYht2X)oYYFliyqFv}|11mD%_bmu1d{n+-+)J{9QWRQa^`SViO`3-`GgtYO+w z6eRjOb^8%)kF!uWWBm+Udzm}obSzRDN&4i?^S@7AVDrweRu7!(-_%zMC!q6FfjZ5| zTd|z0t}t~K`^DE4vp`x@?lnY@u-~VFl}6h=HH=v zc_H$Q&uzu1{T{&_eI{e&ljg}M2Nv?wCr)Cle=}!x4WRd`{dtvMK|efF-#GuhGqLVt z-_#bPAZLD~7r(E+vorRyON~hXEs8P7r8~&43pr;K4)nrtIRPv=_tGmyYD*f}VUXdIHNJvzE~( z^`yvm=22lRSfbFDmSJG2|Ir6Ndsc&QX~Iz{{k&6?3=Nu)t|T!E?u4Q3T7DY|U|vtY zUIl>knaq)XMYgVnZqoY)xv=MRkYan;&fOO&N~(@;h{i*ik$5UQlDWU=STx~u0jiw+ ztt}@aorYD}l$sKZ#3jruk}sp9-B8VI8W>p4z}$HM=)9wVrJ*`Ape)6sN)%@l(KQ5q z1RtL>P~&G5({q2JFRLo}nQK8$6}ny*4oOOMJ&Al1MCg7w=+2#Y?8Y5E+&(^A@_X&< ztZIxMj+G3tl%kQy>^7L95vFv1h$(b7cpl9u47|eqXnbL8XU66n-`SlV`0Sv8F02mJ zvOj1-wh+_RENb@40y1_9qKx;}LCDrU04j-;D{3Wvku2P1?P>?pLirx#|Z>;cvJ$$2T{akTwuj^;oKiYjyl^}B= zw@U6hu|((ZiiLeJ_3g9xUD9_q-NSa{v;?Iq}_vh!AHh zZa=W5t3u28N1<%VK;_o0_?i(deXr%KTj)wm1QuaGecsi}#lJiR<+${tK7)Im{->== zSaX7rd~PS}0*V#F4G$RaNv5U?bBNbNkm0614sa2HI26J2qXFY{R**DckxK zQ(!$QQr7>W3O+F{56v-Kv&|GC`o5MsXW23sq{avs7;^*y(Q)*+^*NB3%K?AcL#doJ*^2x!GU z%Ogc6tvZGi>wWH@K9Qj9`~;Q+M8N&?61p2(;HxCI_b@#CPG5sh|2Q*H>R)VBt6}TgL+^xugNHa7{$iL zrD`A74BLa^KsLR$h>{`FLpdsg$a@?w_1D2cE$PCm2E&oAE*T;hx{QTtS4Rs&!@p># z<%Ob{A{`dO|A(gU4#)cc;=XO6eC?5hY$AKh4#_5ayUEU88ObIyA}b?%Wbc`bY}tDk zvV};`@q3=&S7?d5j8EMkN)J;fIX zjx+zg5bH^Y42Di?-aq-U7+o4iBM>R#co4f0uQwTnc~UDD`_Yf|{1^JOmWHaKPpj&1 z>?NCho-TGn4vvl5W76pDKtminNK5acqS9mbIk{iQYIX8Q7nD}2$qvGlm{kG=&=K7o z#mlHZbb!{wMN(TFb8IRCl|?_4jFc2XA%u-m$V?{3|3WUYIl_|1Ypw~g>?$mvoj(vc zRU&Lkl8c8nWhc;{K~|Hp>Tws@^qk!a)PQ#xDyA~1$jO-r)1T5L8DJnpSx^gly$>Y6 zG`gu{_se{Vl+o9py99b`Uzx0DQqha!YUz zP)iIL-tvhR_+X{<{TX7adDQw&sCjot^?Q=^_jM1$y`?{3w(MUUKzblMY2?K@&UYK^ zz{M+3>X=JV-+OR{;c$0usCMPHN6z@j7zI*GH#24FS zv@wA&=O@#D(v|a3vbccdu^YVc6Te)w(Mf@;J}ICo&3i&N(}=;!@q8z0x=}i>{&akA7%|2Z_i`0 zs&c-*@`7Hs26&F*i1WO-fiBjWP5d7nufOQJ75kLJGa^PAF0+^*Pj6I$mX&n-QMH4j zvVL26xub`rnDD^DA87!dU?8sN+^2p#ITH$LhVe(r zvPwyrs=LBS&c6}dmtUppVhnIp0j`QiPNe9rj(*N9VA#JNhxf5z@qk42o< zdndR*P3wtlEfA}t>4{E)JIi10ugk(hdEy99B|3HcbSy1^r=-*p1)OB=CEKx$4EP$l z?6YVPTb57l{G~%&8KX!I-REvUI$rjDQ+%IKK)@efDY>tK6(XfiVw^s`czb4UMt~vX z*86gtt|1?JkM)`Q=2Whxl;0G&HHhK%r290ol@&1tA|S@Y-k79N{*ZEdadD9yEmvvG z%spfJ7*BqXRW3y;vfTSuS_1cg#Y8bj|7svdaG-6zso3Sn^hc>Llo5gDy<}Y+wH+ND zTVVsL2I}nW|Lap=)hAKebcdb`r$f$~|8?G|(cmmnE;!zP%$mqo-+e3RrjSG}&|C zh-}{QU2-+WPJ9*_TKAWkA|7`D&9lNti+9!=j>v9Ctuc}fURJh$tEZ`{$@_pcbLGvC zWBBvQuW4gGZteQynr>G*j}w#_%c~;mv)4pEObPFw{2YJ8%j@bQNY$DHn;tH=a=Fl zSE|Q-ao=;y#oVAD~~T97)s@agZ?`&3l(D2O)F z72B+>DNw^0D;3I9V1}WxbOpl8zM`BBvnwYtIm zNA>yhe06zz1Jr@%am@F^g!0-q5=jO4_)fEr6$)uw*S^EK)+UoPN;8ZNsB8^}j+fKm z7BR1w*zKI098NW224FDk9bWkUO`YGsiF*-AQD^(!jqO0*wykRD`i^8q!szPRTQCRq z|6EgZI-JnAUfO3-DH=n{Z+q>yb`b*UcIynv(7=q$%v|sf%Fr<-#n9O6ZIyonSY{fK zZbSEtjLC_KS0U=rt3I#5DE+X?YPj-vnNG9I?yoIz%hXFUJD7^}TubQDa(8{rK9v`Q zicDsz$0N~SVOKU&j|%-96j(}=?jOW0pu;?=3^^q><#1abP>!d>(nY%wB`5(KPpgmDiBuK~gD_Nj$7CTXN2wf*1AnEh)f56LLAD6-)d3cY>ud zA!r8;aqueoz|{*^uOU*;y2Aq`4^xn=6{@GN@A%mJ)KkUu)#}oak60LoTVZu4}@6<3823KmjrZFKq$Ow^R|kx!Pa0VLx}W zhnzw}L(5w?Q*B$H#g#c}Z7&yUW`uwJ@io`X`JI$xpY_9QHvS_^Ax+%k~^PETn5J0FMB zhY4CV_rZEo|3~C@XP18ow6y-h!&t|d(3hO2UTCXP_`MeF8Me1(OeWhX!Ug3JseKkS zDN5SE0IftTG3?uzR;N2Vk*Icbb{-oXbjx#5fnCK@FrSK1cTpKdo^CyPOVyA>ncUmH z58b}1v9W(9b7W?8+)XQyC{Hi1E;Gu|!>{!4^zcsb&vf*Yr!$cPU?w(_j0R!XKV`u5Of4r7V!M0 zQ3?(?G;eHJTHD(CWCn*7x&lO?uQoRY@4KF|Jd?9<(SKP&G3)$k4fwlkdo6_064=GMT>Msm15!<(dr3?{H>YNo4tKRZ1 zG~U+E&Xupx)R+ilTp+*i*PI6#wLZ3kDwqD*8gP11)W-1d)A;Sp3jrc_my9n!f{|;< zd?zOiJ*M=yQlh^x7|`$E;!(eB-IWUzc*x~hT-3#Oq%^iUeeRrv2y|5#ouF&nQrH!; zdto`LZPL`?Dtw!PfkBLpT@bxsO-4N)Ej>uN^KJaX8{3HNdBt?|Rr8&nKfQ#i#1i{h zFajvFv}`T(ElOBdNXKvBw|Zp;sn37DQDXhDrVfR%v1fPJE-ucZYsmc(hFyaU8562; z@|(UE-25?`SXVnYDyk=&tRpBRTW_R3o|#gR(AmY=Q}a1b2xDbuen?AWuR_fhZpi2C z>0$rOB1RP1?W;Z82)DZssjP_1l^be3!PYOAvGDW!m54G1UTYt-G0g+ze-~yLY0SZcFH)V6O|`mn(*`|<3+uPLP`n*tb4+fJy9A=B=5E-a=OTBS z;?U))JLyXfb*Ts@5{_KPsGduV>rm`1$*yzOi(2uh!N>aTQK*1|JT~x~qAQT>4)B(- zm>Y`C9``RY_4%9U!NIM}a%YL41FeKprdQC^iA*9DR~#xqn}N zx#Od>zkY^Dwg2VvPy7|M5-sO?7U4Yn>lv+?Hpzw3>pnqBV|e3J9PI28;L)#yJiZq$ zGs_YeQz8KoN`y3JUq2yO(CkNh`3LThGE|$XocT^$@iPsgXs`x_vnCUyJF4?Z3U3^c2a8bWw!m z+J$VSP+nUnZ6EAjXFIn#C!zq*DlRFZs$Z>y!^FoH9!M(0$%^ z=Z;l~`M|+k)-7S~zp?1tO1Vsy%nJDK0l{hff{%cX8@hUU{GzqEleUIgm*oByDLyoG>eXST>0L|TT(3%NpVbc z@5NkWK@Npp@pWlioB!S5;7_d$bA*)ZIp`2kXnl|yjiTzPkQ=?T9LXK!tj%i?Z3Q-&wq6HnznmW`0jP z74Ji|6Cy-s=jX5bK-?{#r#|6@AdM}KqE_n-XPsj|NPUTl-a+u_FzkV#Wrun(_cMW4 z1BrB$(Q-hy#6R4;#m}@?0)}3E>3bcGFp6g7=lArayW|HSIAs|68G_CO$3p^QSN}Iq zoMk^!Q@zCFuxLDbnSwY3D@3*L86=JSI>B{7GqIFttgn~nwrt;jVAG$~?TF)H4pLa#HUx{OI=X8|GB!kVL)?Z#0{mM1|>wvZ)FU{WIU9y;iVdHSz3oo z2l#y4NLw$1I+kC7v{=7HpVs8uu{%`I`0}qNtU2e9R#uYv?`$z-?vcxY3C?4^L9vG% z9O7Q*2Pp*%yo!0&o(omu^K=?I!}h+n%Y zxWvzixOue7^ad}^U{WR9U2M5rLpXi?DwJ;b8pp=~JwTy+%7>m9=T-my*-|O9;ts&0 z(yZ_P7q_X#j{C(+tA708j?uX0cwItX>Q)RuESiWq9h4!GP zv2m?7PZr_N-!r#zky*hShS=${EA-@{U2zX7S&X_GnTl&`wRJd%qUC}YmH0{0rQDEA zTCSe?_#F|8sMpC6VOA36IB$Yo)_MI8Dv~xw;K`n!obaOE!wQb=fVpA?9nYSJ zma;HuJQW7a2!@0{R`Dx+OwDKm*J@vNM*x*f5rS5ax~katAL3T%`3T}x${5cd>&?%p zAePY)zCAmqZy}Z&OaF#>5ZIm%zm{&$J^0-Uu7(QDe}XWM+yRiU6@DsC_)<==kD^7K z-$4vm3xDxKGO!#iKf3_bCB09;Q?8}R#m|ol3TQc6Rz+hYYr17|-9<#t+OS8{!YvB@ zr==Lt3}#OR!{2L;4L~=W20lWH|2-g{@&7j!_uxrcK7xhc+~mO{oX>G z74-Ksr!aJw%=0{;I`lU_yI<%`!6-n$K)>QCKp;hEiyw(#wY}hWN<`6&^TKS3<2%b% ziNM_B{_Ohd)!&wqZPL+fGr0=VtA|SAThp!IU`kaELI0Sbp_lV;Y&}gqLr_gk?a%~( z#tv4mFD18q0j2q5f2E)15so$>z?GnhZ|yRsht8@$N8KyqfBSxLVMe+X#=o^+Q?P@>T&`|TjQ!{BmLaVO(D`q!XAnL+`YiJ+nw?nkO=%>9GdKl2 zQMEHeu@vvuYsw~JL3_-eLcnDai=xhMMbM2#bu4GP7hy*1xA>o>>^k>(mX1LjGpz#g z=}ch6r;4?y3jSc-&2*G3^@T`rdYy+z1r+!X@wpx#M=Ok*zb&-+|I-h<^=M{_mzVbo zaKv}}Szg`cw_=+9XaA@WD7U`3<>lpzZ*||xi~j_^od{+0;>ST$9(}wrIiYMJf)~3V z(b_-Z6aPxWkPq!L^=Q^#97ID?ncsX8!vs$kwJLF*o3C&47YBsw2UfDAdgh2D%$T0z z0y|GZD;3Yyswy5j+u}m|fzMw3WGwUOSE-QcEfVJyIg;8LVE^L9t=L4BdbbD$o(~JN zB=^=^bLB^DRu%8lyh5tvW zqebIGjPB5v@8fdN7X?6j1krX&xCjkY^be(o>81Q9cO<`M9bKhEd>In(%yeOj>RLnr z!Hy3Si3w&fcg$MY4uv;vx!Incp6>gshBHYp9t37ae>M9o%q~mRCnkF@UkFw!%9glQ zHJ&eCDCpb{oLUEl6FW`B07of;1^Fj}+k?*mx9`2=o2jn5D3+IN+S2MXF4;e~yx-8P zRmNJY_`P~1hTEtuN-xWyIAngFj!uE=bNv`5s0AQsi$0lfufkU?(rm5*d$j96@Y+ym zek~8|){~W%?n*9U*Pf@lnuAtQfJr%R8maZhQM1PSk3v4R!V|5DPp~A6L9|=6MiV^8 zDEk)}WT)I+D28|IIdzN`J2_tKzDwq1+Ejpn7Er^@gj^;IYBH4=i-C&vIQW)U@47Um z3=eq89VRfT7zGPtCqAQY?STOztF<*Fk!ROQu##sJDkPT$Dy=V--R-wBbh=;5C@NM? z!R5q7SGEU<1{HyL?YV+NI2a)X7KW{&KaNR2Dj8o*o5#e3)Mj6|RGOAo9*Surv~t}7 z*XD$Ug^f6chrbBiamOQE&|Up~5Qv6FC!;1*rd|$+NlTh;i)*f)qvO7dg>IZ2;|6>R z8i3wkrb@lw&yTy85tkE#R9wal?eYMjhG_3MM^{!IrTLY>-!pi%JD#oJ1^*n|Zle$` z$}md=q3?R!6Hz%9CT!7%`6m_o(V5ZrgO(7&^oh<+sopc`(~KUI!6Kvl z@mo^&VLNbZG`uk6j;0VU@;oA>RU9p#|H{qy4K_M)*PpiRA<=`uGI;M5MBKp40cpN{9NbV2(! z2<_inNJ+%vO->`BSj8{0n>rd0n6eBQwI=;GXgWTNDY3qP{dMio7wo?L)YTH-!oDk6 zNkv6k{J>%<`raMYf@uAAreW(c9TlCyuNxAskEmlFFMXXK|22*GIwp*0`s!LAm}=3Y zwCcp)58g-jPh0L3$Tw+C%J#9w*4EX1(9W%IVe2ZNd4x$)iYfc1Y+5%n9ibM&sWl|^ zE7OrAYjtJ|j`&)Xc22MGhyc^SkDS>EPEQ73Dgyp;pN^7!`L5eT!tg7W2k&0I!HL(8 zdz+wi&z+gBlJT?9tD&|_-&TlL`20NWu|M@L{lgTB23sU{V|jXJW~c>smV&v<|K|ee zrYbS+NPisp^-=Xl0+3?!v?|vlhyyvxJfGL}G!B_}?aONyY@wLUt{qb0!u}6H9yeFl zldqy#4Yb(p%9k<^=w_h6x_Wpl?YTFp=$zP2qK!U)lih1tMmq7;FiJYwMuz*^yvBA& zT^ZO(SSz#5Pg?FkNGB@I(Z>R&M;6=^g04SeA0fUqGDAzm@BFBX^{Scq_wp76^=1H{ ztZ*m$dl|fYur7atADiwpx)4ZRWm|>vPRg${$q>-EAXqazksY|lD}~bZ*^dvl^i(zn z0?5mvB0Vew89S_n<+Zdj({C^!-#TcMKLr;BY8Cs|{Ih^!zXgFhM*YJZb9x7@{be-Gac;_s*Iyo#{#5cWR7h*8oPg^!2?;0?4>_qDVfp8G1$?8)&$(s3FxKeL+Rr&vnc}j|E*Fk7cK3xideo zwk$DbX;B}8;=-fhFd{U{;P(RYr|4$Aet40e`jB2XBR3lNV4oelt^BSa@#>wn#CMvr z6V8X585~b?Mv*D=8kjQA%M1d6Ypm`=%HvK^5kBzb@Y0NCp(G*^OP%Ky9vdnfD{E!* zT{WycV7zt$WhpvRq2HJ2Nv;~ULZYU-wh;H%GV9z~BwA5MAi78)u}i2ty|W0YZEh`q zPPR=*Ow3SXA;l~RBl`7Heh&_Pwcq{c#2fs6qn}fUxP*kfo&jm<3Hb}$yjFP(*}HzKgXz-NS&I5R?!4;s)GZW~mpp(1J5oH2O3>k!JkI(@ZUyzgJGQfV%!*Y& z)52_}o-UB#|1U!T8zsOPu5n936KO7?mD4w^Z({aX0Yc4^i9fJ!rwO|i1=yem&Nb#M zr}vlbC-S{zVh%^#HEPQYk4VgBAn7La-33y_=0l6o3r6ZAATz$dHcbiY!82aJQ_T{f zXn%1eWr)LPaEUiv;U`H?_ReRJo4Y@Gh$Xt)EE-s%0GF5x@5<%NJRJ@v`wqmhAG^E0 zxQGG0Sl%D91@@kcHwQjt^!3j#Uu5z+xHbcJ?%OP%A%mDQ*mi1~wzjrtp?pF^Yn~jugZVO~73>WJ|ZIgYv2rr)jK=hV;Z#9X+*Jo@bEd4!fY*^=91jd`U$tOj0 zbK}EY2+Hp4?Cd;#wK+hM_2%lRL<)+q2G9h>zrz9{NI$VxD?MZS8YDEF;HQw;)59<~ zyQbIS9eGsVVzmD^BD-2eNy&47o|@U?#9vaw-zY8lP?VedX#S?>1f_31^=QO5iFbc8 z8dy&}z{m@7ZhczrZQd6RVtaIa6-p4Y4KcDPmguo^UI}du{VC!zBSOANhRdG-k_O)<+n!|+3kQD;9rxf zF*`DHZ~@&_(hQ>L?Zku@+0<_r80K5hax-ekl5djm9EfCrUah|2A?>2bnq?-#znglhCzgZ()7T5t$EN@EgQ8kg9RGlJN41~cWC=SwB5!`Kmbj_Os?}X{>o{;XDc*ZG)pq-H{NVay_;-)Exhsny zJMM3izQaW`(#(|jSIC0}Zc;>In-%pEFl|HM-V^!i_!`Herbn1YZw9`#Aby<$?-}pC zJE2P<&MLUfgdBLeCFFz{>dh(S)YLabxh~%%BLB3r4>>? z4|5qy%ys#kN3gT*;^yF0&%FG+^ijLO4ojNgP<<%|tNQx-`Yu2hy;LMsuWop$64hS$ z!D(Z*P?OrC+-G)PtG{zI%7-g(UI#6l`$LPn*;U~4M@t#~r?{vne*QJ`$w3`g>cjzj^4_7Q0$pOdgTR>HB)^oZ$yZg52ZK0NjX zUX5d#s8^*b{~2*Y)W~$`{A4$ea@_WRLHDWM)C8F{$r#uqScC2DM2TgQ<773kX=;t3}_+H zc_u@Do1Qqp^2{YZC`Ji5I5hJ2UInN|FD~TwvNTH z5&6d$QMTzW)Xd>CwHeVaK+DA8q*iv%adUTXr9fnu z*$d%%#iYO}CEaJ?j5WpRp?k}F5^WN2z6OBke7yK8?y!9?8uf)7coWpj(dyR6XaW1@ zf3LBivt5EaJr8xr$YfZ24v_xG#=AfByWOHDU}d z;66+aXD>LEG)kV*nYh${y~LSwb%@rPZaelA{YMT@+5y6b@5BTqo33VY*z3W%`jx^b zLcU(H1uKTLM3k8u3aR-mc{iTUc#2UzoaeE`|J7xWFR{{e^VfLQgCJQkXY_|3Fh~-uqP7QicjaH|PNC@Hj8N9Z1D~&) z&vA(YaW0NfLbMAau80u6Scq#1#5D%OFH4s&13f?kaqu3g;;FXzH;&B7o5+0AN#D?M zuO6HTeEfkSTsoB2*j|+Ljyj_`k>84e?RiT0Kqdf;97a^ z`M*kFB5pjN9!Kp4y(xs!y!$WOWxS8&6?S;5f>2&FKiC`A&Hi$KY=@%hl8XcV^AhN# zY%3#aUJufoq`AVF3ezng9RJjxK5q=oAp?qON1RQ*QQHo@7avZW9Fv}tF^L^WHmK57 zds$-NYGzUvhZ67;{uzF^8P`4%a@RZT{rsr+8h6SBT&^4FStgNN8LKv$nqPa2>YAJJ z;C8Qb5u=SkT$<&Q@p|*lp#nDg;KNe+&n!XK7Iz;P@nSSVfWzF5vGoBph}tbA@*Y)N zpuB6DT3w}M38(hIqrDJ;ljVin1BJwrvg^auU%j({IYsxZ2>=gFt$F&tl7IXa{wT{# zAgFWPYB4XBD}33pbXRAn&*I1nzP%w#@TdrmyMe{g_NK*gFLeK#q-OgO$L~en-C(a3 zdoDaHT0$AHRSx2j$K}lZ_OSH9z@#*OO5jiu*-_`r#KiOzT*Jh}{`!sTNaNff*W_D= zY&Vt7PRN!buhQJkkTHeeSK^_vVo6rke`y@Xt$1HJbw@$syfucIRW*Al?S7`e0d24!4(WDIB zVW&L(kwZ)mPp41&Y6@G~V#Wr_(y)AiAewSwg3ZY+6A(mH0g4id?^_@8RddiD_lt_R zx&x#a=^K)uR~^^3+d$wCk5wR-eVy09ijX4KyL)j8whbTP_-=pVrfzn&JvOFZiy){r z9DE_`ND^DQt1)`UMfo@7n&4W((p4B~JuCr!p3~%+V_j2dnsJk8ezzIP)mp1TXSutl zT)h!tm@t$kga(*bX6|Mpx4$u>cNa)5_h2#S9cKfKe9DAZysCL`{PW%7MU(-X!CqP% zM;0gXC=NE8@;SZo6QsJX0z3i*asIAP=_N*8n80VTKX#adHKOe)m;v|aAtEzVRqHgG zh=^$JXj))4{zsQEQFHD#(1gl>j_mO{ngzM3hd$~E96G)9+Xb$BEbc^v7-|_7UpA`~ zYdO%yz9n-eq$fVIdV^9}P|oRYGHXLa(p}&iXP=8k`Ya&svspZb=46OTmpx9_D(8H} zKl)&W(5*WuN?#RX%LPZ34<`^67PR>%Tz8!n4d+W(5Qu+exf1m1krC(T;;i zD}%qbfeVlTgmkn_&Tm^EXGz!t^e%-gcn2@*K*B8gWjLmAGEtc3PpPNqUQMU^RG-+x zN2v0nHpJyB+4hFb85trT96P&me7!y0m>qSZSn~s-xV41xvJd9o;Q3k-naDGCUgc9@!vE}SGdu{}r8=}d_)IuPQz3o|obTM%a-`72Rc=P+69)gN9weEha%pcVmwA`kBLG3&)wsa~n#^$oVd_!lhSgh}Zimm=DuU?TE<`t;iZJQt8yoy#4=M(py&`Gv5# zK08^%Onp#-!mnxQ$d*vs*GL~+^V^-k6MloKkVf7p6@>3nQW|J};xL;2Y!T8q+Fsse zuT&%{u4PpYn3rETti@`T`+4uzj=9ac{$VV z%|qLYbke+q{*A;|Bf5NE`y>rTK8^OQA_ZJuI9rM0>CUJ=i?`K3*V1~$Mj2gu_b1-3 zJJ*x5op**pC)r1uSW}c1!6SVS7HwjbBiC3v%sO5)G((pa=iaqFaIY?X0g-nz zYLz}QH=O!VYSS*9#oWK+#!9z^L?#@Kn#moSdB@Dm=#o=V%!msM|B1iBglge-OTZ0; z{h)~w&$Dx@LBSO(%B(?M^c9j{j#o{SeCJHy&hZ~M`puH4=cYx0t1+jk^>+pnx4J@$jm;lYP`R<>&37CE!Nr-I#Yoof9a!iXjvUbJ+%o;_n3&IRcF+*V1ro=U4rPepGM9$rLWFU1b~m=jHB_e#XyxB%=#ul>Y1t-^ zMKgTUwIDQ^4%OAs>HS)pf>K1`(yuJB5xT_fpdf0Vte58;CA2clz=47kKwObclw^Ek z`HQ?kjY}&CE>dh569S2tl{oy1o27Nfpxt0KK)^ zsv~xeS62SXMBf=cwfk0coCgQ&Th6s^zHPs@R5(;IP zvEMOcVkkPnV5)q7(O}M={U&yKjpVlZD4M!j=dX}-g7LF3?YG2ZF?duVgvx!Nrwe(A+{}{-Vir#gS?ScYm`Fo*;dTXmMKdt4HsC13$w6P#|*R-)e8}2(h z@U8EEjk8I8n5ua$Q2zHRW5OPgmGIXv#-(Z^*tErp8`+?J5+w|uPY2GpO}qF4@#fEe z-?4^cCwYcOdZn|9w)f!8@V@ddoUCE zJ#k;bowH}A+eZ?!ZA8fnBcm+0|l6 zEZ^7&_6x?lKYuoa&nXEN44DxBNAgSkMLN|t^apD`%-Ya2V`WfJsz&CT$G7``hXv4XOUNP+l^)bS-rcCK_n|=A1(1Sm%A+1j}PA z#B#Fmgn}NS4v%0mv52&34>Q8^q;}4s33hi=%1TO!x8hw4QV)aH@LS?1(4O(cPh4Gz z(i4W??OZvSyJ3`n^)LT%X;@`FWnJ&(+_aDYu#e-Wi=}0i%GA`9J%*a!uV&{BoO!n? zL-mJ-?sneC&nW&DMYRcD{ssOsE&Ga)5LgZ+^G}kwsa4|S*3E~!^7_{vQVGWO&)ocgVI%#wdO&Lkfggy z2in6T>wCjVGnN@%4^L9=#$#2164sVEQaRzK>~q`w`9r2?hkK z^5-c|y!a~x3)dDw2HEe|D*E-00>l;o%ozo56|-W(*S=~tTf>>5I_#SODF4MG)hpvs zsY*Pcd+!vF5@3lq|G2at1F-=jAVM@wP|R~b)QUkbo(%3tCWv(HmC40Il`|yedTxk= zf`|4D)B>+NmRsQER{CZ*xMOaoL8$WEXYAtb^*$VNdw~6NZVHGEe3wS%tbn4YJ{KYu zbx_p?59qBJ!}ULNBu8pSQ&N17)XtG>zHP&&XgD4%=kmJK1bYXM z{l$k9V;fT+VS7)7hB<2UOdc zm>U~&&d+8J1b7BKATBCF-Ovngf(w{m%=Pw$eJerth;U(ShuR((d!JdgX?OA3B zFmQn>e)Wo(_)qrSFY0kZEz(<)AusHY%{+dyDSsOExwg8g{2&T&bMLA9S>p^4zoeGd zH<}3CC|oiQ2~a`3ZGPK1*8SlG#-}d8fgf&Un3alH8k(1jKobTbKSVPA2b3xg9j3jO zY{(d-M?T@{%kmXeQsjMS*Q8c0yl%7;NS3FsOmxxh^6r0TvMx?1jaToqA~h63ldhaF zu|(syWAstgx=Ym6(z2U7?CaXgc0%?zhg5=&9|I{oP7uWTv?1S9`6&y| zfsbs?=m(74r(gEVJb&v}6x-%n;-o4K;F|;~`-l(yM)ermK#LxW0kr zg>s9wcU;v2E4__Hq*lj&R-+wbjr1ZsTe!ME%M;6_D>MCcTumw)YT>x5JJ5>>4DKXH z`kMn`6ym6J!{i{bsCN}ri@UzMnjRyUn2dp9fG8rF_FWS{qA2Q=rgeH+md?f_SieiN z%iG=5u+_I`bR`#opsG-ik<=8jt&*jf-y+ifR&kKwd!!&wPx!oVGw~?ShO%HW@LmKC zF76adN-QRI!9NP%toZ;-*4DE#>{)y2sSls?LdyI1%xc7W-Jlf44DcV+m?&Lq9<}mn zKjWbU;awV=_hR4d8dwoec)(Bu9f(-DFZ3d1{abRDp=u$co;2imo0^`x;#mXIEHsLx z4qPJ>Q&Ue%2}HvQp8m3sm+R{4Qq|O?XZPvwy=#MH^)qRRE)WPLA!ERi)?q&Xz6VYi zsG0^JSH(s74%2OPVmPhsrWnj6N|`E2Eo)cI7eILYba#MdLgG}#3E?g&8Ca1UQswr| zX<}O%q)-_*ObG|HyPBnP%idb-q_#FMUNp>Y9pB!>z1-|-sVe|D21NL z6UNrMeD%Vuqb0t!luEW_QWWbUkG)fG7i^KrQUl`0)*@l6p9#t-7PcXst@hEHXOUlG zT`-BzeeT}@+E@6wRVp)g)jR8-v2+eU$})?qifZHFFR|)TZtj=Q_P`O_-xyN=i#fOvc7Lg0McIEYl}_mk;4Qp4bL4=&yVqU@~;p&5rmEC|9{z zwf4X3Cc1O`_Qad6mB-`rK7LXRdleB$HAb1;0UxBZ$8woHKQ(bY>Jr<5Zjl5J^KlMy z|252}AC7)FR?(sumgMo(1%Hp=p2kUCwOKKL25(6JO1){S?&T98+|>owGcd02c*fj_1PVE(>Ft~$$?Ikfn29?e_sWiDS+O$Offb+V@;orP^YkobKn$3@y804vuQC6@>CY2tp|DU;!NDy1 z2Qu`M9_ALLYO&DN5Pp3~^atXp3RCIaT}++h3S7VT&c*lthGdVSulLmY6sAd)J}Gu9 z*&)tzLP9Y2`x2ON>-*bjN5}e6Cg3w{d5LC}J7+a2rW8A?*<86iz71?<1;zx2oZ4mN z`{85i>I*~?+N>eKrRC6CLL((bJMlkq3O?W1_{LI@_8!PZr@>s1Yv_zrnQdc|8;NA0hGaahuV6#+R3~$ zG{*T52Pf<6^tRGu@I`LVhUiYZvWsF%P;S(}6d>f-gdr{+q1wrz2y|j2Lqj)|0O^x` zSV=*gS50ket5I)yaUpO5N76kOQ?N0E+E&hjf4a{8gr*q>2WL{&L1G&phrkIDK!l)D z&L`r1o}m@j_VUlk3r{f9W=m7HauZHp^!oSrZ2yL!@&HlreQ2&0z+ijuNoGK(;vr;b z+sJbM8E3WJe~Pkte`ogCHg)erp>4^(@2Be!N;^hq7grm&q(XES=e$$b?PTth0V&3W z2G3tLQyItJE!p{9-4+aXJh>00QU(RjK!H4SN#JILK$w6cXRqbV$g@Xe5e4WoLT$;) z`5h}x6}EAI41>mh4xog=Sk=X5bcl0s;XA|kb;G#>?)J}pcm+0n-vX{90q_ni)^`6s z^d10$!Hl_qkx@up>uD*dPZJHLr-iag1Xi5L85tRuf97W{RwPA0l9#`KtypA?ibeWk zw{7AZY}yHed3Q0p@!DaG`dD2}>~}f0q`0E^u+W2%doEL9Z{Inghd z%G;xnNkEChTqY*HE8?Yt`e4?%TSQh#Is4pUmG!hU7*}XdA#swk?ZIP^DE-Eq94a4| zI8C(cxiMAgeVE{a++i8x>(;r-8AJcSPCKjCOvp;3z( zL|>Xb{ik8OAOh61W{ z?G-R^qtwbsQNsMaI|F7!uLHw_7!Z6#Qva7eV}G#nke!`=So#;{=-`0Z#uWW1S7Js} z?2oOE@~&U%igjv}Q)K2OO_-K>{JE?SRR}F@{5O)Y5oG<)V&krUK=u+IHLAl(YfHOs zoJYpWEH#QXLE`08W>aWdDL+^>OG%-iKLu4&a&<}uc&U#fTYrj|I%W;a%6By)k@zTou9{x$Zr4gaTLqFaj75|MfkHCsvSJc{#fTQjij2HU|= zeEKw4pXmJk`>QwH<|7|Cr{gpfqm5UC7n+|lStb`@6;Zj2(|*7zd|s*y)KXr`1&C+l z8=CnK$^K`<>{9qa%FwW_jg2>n>>;ps64!;?nQUT^4EO%wR&HkX1&kMLr=_O{15Xfu zN0Y>;uJ&=o(-eG(Em(w7MmxL@CM6|}-;BN>v?_W1Lwhqr9hrkb#L3g+{@`A0pH>L3 zbkJx@A-7|3f8#x!d*=5^B(M}+^UCNuF^YSFL9=IEb=RnfT4l!)pwPOvqN3_JGBp%u zERO`jNNifD3m6j=1pTf&hk_qG-5xEPxSiy{!^8931JL{~s5{%|8+v@%JC}I9CcJMDnZi9EfoGZQ}k}k*wE@=h1aNnW#AavL|>nRwVmBSLjYKY z<#wQXZ3)-Ae-Hu04-4Uk^MU9p9jy%0egzL9ih)?N{eOl^fNXDVe-3#Tz>ixix-9-d zBKaQvv1<1OLxycC3gZVCAX9aY<~%t@WolylRUm4K@?DXne^1D-6qY1HA5@AP@{f;? zKcxC7J`{z1z4DJ%N^UXW^>OKm?lEz2Om|I%rA-F;fXa9M?p|m;glHK$8@nigts@PH= zWB;?BHFP_g%Et@n*Z$~ztXk`}arY(f_%;ftrv24dYH*w!85=`|gW&vJ5H3Sk z15$j%qP>A)xv=iqjxk_+Q2KO_&1N-zVD z!6Xbn@qBRJ_c!Y3_e30b&CaH>L{l~?fdSZkP{F@3csLEzozG}~hmpn-0Q={Tzo7lf z;XdZsb$1Z~tO0taXeCCp|5MU+_*31!|6^xolU4LsmAwuQDkO?y95M=-Nmd~ZW8bsl6K5enHE*(7`PyL^BDfY;0C+^_q-uJ?o(;;{L72N5x`U{J_w7Y^8c z7r_x{<_vNyB zQm-#&us1+`JYAdF%?^7QH!lXs>PE)uV7aWWnp_e^({pCJ29u-(IZ$O4!lv0;El2Vl7(uq z*A$&jWiE7Y^3LQOtvm__o2|ps0BG7hUF5{AEzf-l#C{4e1)^DFoYk{xy zhz*srCFU=33XdncwG~!S+xOsBg;(?wpkz;8oHx1D7tp>B_#L-wMFtz6-n6b{?9a#g z+vc^oL)KVqZQ^X0+p=_T)Gw(iIjb6?b5c~qWWo%0_Q3qOj(XdAo7cI->3TZe(QuSj z(w8au5Rn{LExkopKNR|AiXzEXPhcW+IivNax8~1$u^+95P=d#>&AKD|5lUHk8T1GL zOVJ~-rin7LFo7^|nyw4u5k7eAtND20PJ8+gNzgGcsQS)hRW=q;02k2yImx8zEW4;B zWi93Wqq+myuHp0DUC0X#Cbd8qS45ZClMw*Jn;YaZI9m`KnYwVrghKMH&BI0!YL<$_ z>IWFFS}c@oRcqW5TMrdWuv>712skrAerL|$N1HMxBuQQ6xir{KJ!+Yzw^r_O0qW5Z zWRi@Eg@=<#Fm!)TUEg-n50E0rOg*=~Tj2P?p+#z*;cQdf%C*}2Gx62VW|*OI@JI*I zBGmfGl%qx8|GRZ#dL#ka)T_qBKy~sr==kt_(Z{XcfUSf5eP4h?&N4j5F4TBovfs0? zOs=9??L%mpyH#tuBtFjP!&=S3G@Fe zh)~Qf%Xy&nBqKEyfx%1zS0XdGQMF`b@=3rs2dw*^DivjR*-O61qa?XUfnk@_yVBb^ zB&9QDp5FeXq*wfp4ct(TWiA?u1=<20m64_R^B=J_Mw_ z_pe?$vH{)1Q+0XyWKpG@9B4Jmbq#YU%&@oUO8V^Iv6UB_Bw;YyKD+Ny}tJD+uo4H{zV7 z6-p=8Px&CEY~V;{Q(O*6#1)M(%{q>JCY9CIhSrXu=O|61duFB0_S_hr6Wn(Fnn9b( zg4oFCYS>ioHm!sBt|5oMz--7e3Px2$ZVJyr@OJ##PpeGVm3{a&{3DJyYxI=clAA zovXvYFP;~5Rn^`yTun`n5${Kg8w(Y|Md&kVaz~(8ME~7}Dh%Yl?_i`2v==Nhii$CH zdP{wtO@xd}&4W+!k;Zw_WF!023))~j-lY`ED_v}0s{H>**&)GnMOo`wIo0TbDyMcT z@kF(B4iSilp@)l(2;>9`UQI?P{O}g*Sq*XlK>@>F!nC`j`aHk45)XsphX{k&3y)8< zZrreOaiIf>;nr1_Zp=!l(mtnx7|y&oW?PZ;y;16|89KFljR1@5ZQn?X{0&?qnLbkf z$Tw}}WwlqetvHw*W;yE{8qNT~dA=Si6+4POj$7Rq!RZiF2(BlWtzwiK+Lh_kWlX)F0YHKn%IA~{~S2Piz<t z*=Y8%V44PN^a4;c-|Oq@CMLdq{cQ?3bL{tJUJzlCwn~s#ch1YN-$3NFu057iR;KN= zV{Y&0fM9^qxDXtq{@JG@}?(_iCG)QOb<=tgbTSB?F70 zrxe7G$rCS-RWVO2N;0_vPLe!$QLLe@Lix!rv{(H<0^;)&y%D)~79F`l^edM59YzFj z7#sly1KGVMJ*-u-ZZ02bKg#(dkwUkQci@1E|!jL2M3)l zmvHjj4_E6KEK^L%Z`bKZvi#{965IM;RK`a-_`hAWG4`tiJ3-j~IvwUW#hwC0? zoaKv?xWz^08!WO&#N^U5{PS=9FY^*dHnD=w&(7}wE=5J&5@rjS5yPP^av zuKh6v;UP%bl=Ti$?Yw2w6YKZv#I>uJDZixToV&WQM5U5faG%ljl97??TZ-{F!9`3t zhBCkIytGVQX`M)@CD)i7C`XFfav62r+>0EmeQ3&X*3c`=4_Tm?^vU@^*UHL@LDy8P zFoHv!FBYzTT9^?A%2-PgC1yiQ+kUjrp$*(b!|0S7>y%T?WD1>O)}xH|&BOTUE_pkx z))#oRZ51ac1%=Buxwe}Aqp=S;IqK&$wn+tHds(L%>+7quA-?7jUT^sK-4kieuv=?I zas3Rn=h~4&CixO|!J>?BA?udK^5Fjo9pTchN?T~t8x>9VFq#sd?d<_Qi!?m2{+ zslEB?igbm49Wu(#9;TgP?O=0M-8khmhBq=CoqIg2}F#*QRC84)htMrTeWIvTxD= zUc(EYLQeW@`F>TZ|NZ*{*(1+vu~<1_-Nah;zZ_0&#kcVhTSxm_poD`M5h_0a6)B^i z$FSDlCPNFFu_tT}%RSC~^{VG)Miou&dlh}58*DA79wxIlr7oN26a2eME^P!Pe>D*o z6}=G6mMtYY_e}d+bGY*wPM?N-(XhlgIbB>Ck)56%ytL%3%V7>`0X_eu(Sy0n2p@E< zr{Hu(rWM+*Y%Gdd5oF%#7|ivN;GwP%E0wLxl*UFRi2tt%k@=7eCIlV5CcSd#vLAla z;b1H|nH`N`1NY+EZcIy%a;p)$dYQ|`=u&d{^N*D*jUj32>>NGjt>1J2xnNrGRWO6J zxcc~{%9<0_`5B%oBstkBr~ZzVFDQIuI(11%$UtAw^{`9&$KDPZMz$yDX@Kt-(EhYrm`;HzX=TlprE^WB!9qU&S7B>V+e2JoK`FxC8@(rh#4Z`@C5hRl zTNxO{4IC82Q)mbby;YV)p+QK&Jzs1R-4Tt$`uUk_FIg9^@=)H18$X6?7vjyXNvDOP zMaW;HKgaUenoKWAxz*1+Tc=t=ZXF(ZffdjlwY$B{y!WGZ0!I5 diff --git a/ilinx_home/img/spiral_w.png b/ilinx_home/img/spiral_w.png deleted file mode 100644 index 32b95b5bbd8bed2459af3c83027a50048906b796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133652 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 diff --git a/ilinx_home/index.html b/ilinx_home/index.html deleted file mode 100644 index 2ebead5..0000000 --- a/ilinx_home/index.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - @@@ilinχ - - - - - - - -

- - - -LimilimupIamamuplunUtusulimNuulimlimUtus-UpnunuLunuuakUpnunu-UtusIulsiUi-AtlilAlim-ApulUnapatsiUpkilalUllillilas-NiiulAlim-UpapUi-ApusaPalat-UnpiAka-pak-Auas-UpapLinunamlunUnpi-Upnunuas-UpnunuLunulIllinlunsapiAlim-PalatNiiul-UpapUpap-PalatAtlil-UpapAapalius-Uias-AtlilLallunillasas-AuPitunaplilmaUpnunu-NiiulAka-UnpiLillalanlukApalsilinlalUnpi-AlillilApul-KualpilAlim-pak-AuAknuupLatlulapatas-Unpias-KualpilUtnusi-ApamAtlumNupillunPalat-Upapas-NilpiPaluluniUi-MulaAmlimlumupTallastutsulNantalLatpankiTasnupankukuLikipanlun - - - - - - - - - - - - - - - äh-AgätschugUtschäwahugäh-UtschugägUgïzhagÄsägäkAhäsawÏhizhutschäkInututschahÄkigäsïgÏkugutschäh-ÏnäsïdÏzhäsinänÄsïzhïdïkäh-UtschawigIzhututschäpUhïnägäsApiguhAhïwäsahUtazizhutschUtschizhïhahIgapïgÄnapïnizhÏdïgutschubUtschïzäkïdAgïzïhAwäsänÄsänämÏwäsuzUhïsäsUtapïwUtschïsïnUsagumAhagädäjUtuzutschunImäzhahutschAgïzänIzhïsutschigItschuhïzäsÄsutizhïhÄputapädÏmïgäsApawusUtschusunAgïmimÄmäsitschanInutschägUpäkuzÏzupazÏtutukubUkugazÏzhukïn - - - - - - - - - - - - - - - -ÏzekoÄozhkizPepekizKiznïzïzKizpaKizmïkësaz AtïzkizHokizPakonïzKukësKihekï Ikiziaz ËzkëezKïäkizEznïz ë KoäAtïz ë NïzkuÄkizkësËzozh EznïzKizï AtïzkizËzkëez NïzkuOku AmexNïzku ë KoäHeku ë EznïzAtïzkiz KoäMokizHizhkizpaaz HekuKizï ë ËzozhKuzmïkës OkuUxme IkiziKumo IkiziPakumexaz OkuËzkëez KoäNïzukosKosmïAtïz KihekïËzozh ë MeoxEizox - - - - - - - - - UlkiltarkalmKalmurmtarMalilnmalTarurmulUlulilnUrkilnUlpilnIlilnulmnarmnulm TarulTarnilkUrmulpulmtarTarttarilkMulkkalmsalTarmalUlpmulsalalNilkilnTururmMaltarnarmUlkirsalIlkmulnUlpilmalMulnlulmnulm MulnpurUrkirilmulm -
- - - - \ No newline at end of file diff --git a/ilinx_home/maps/map.html b/ilinx_home/maps/map.html deleted file mode 100644 index 89d8c86..0000000 --- a/ilinx_home/maps/map.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - Hello! - - - - - - - - - - - - - - - - - SinnomDi pi BaDi pi KinKinzoBadi GinBuba pi DiRambu Dizhi NomGin Zhutenzhi BaDinkin pi BaNom pi ShidiBu pi GinDi ShidiZhuten BubaTen pi NoPesin NoMin ShidiShidi NoNo Runrun - - - \ No newline at end of file diff --git a/ilinx_home/maps/map2.html b/ilinx_home/maps/map2.html deleted file mode 100644 index f090db6..0000000 --- a/ilinx_home/maps/map2.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - Hello! - - - - - - - - - - - - - - - - - KíaniulaíSaíssáumMuípkuásáumMíáltaímíuNiímmíálPuikmíummíálMuínmuímPuikniusáumLaímáíkníi NíanMauslaílíámMuípliínníanPíunmui PíunMiípníiplaíLiínsáumPíunmui NáaMuímuíp MuíPíun MíusmuíSaislíánuí - - - \ No newline at end of file diff --git a/ilinx_home/maps/map2_files/d3.js b/ilinx_home/maps/map2_files/d3.js deleted file mode 100644 index 95bc9a6..0000000 --- a/ilinx_home/maps/map2_files/d3.js +++ /dev/null @@ -1,18525 +0,0 @@ -// https://d3js.org v5.15.1 Copyright 2020 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {})); -}(this, function (exports) { 'use strict'; - -var version = "5.15.1"; - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; - } - }; -} - -function ascendingComparator(f) { - return function(d, x) { - return ascending(f(d), x); - }; -} - -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; - -function pairs(array, f) { - if (f == null) f = pair; - var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); - while (i < n) pairs[i] = f(p, p = array[++i]); - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function cross(values0, values1, reduce) { - var n0 = values0.length, - n1 = values1.length, - values = new Array(n0 * n1), - i0, - i1, - i, - value0; - - if (reduce == null) reduce = pair; - - for (i0 = i = 0; i0 < n0; ++i0) { - for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { - values[i] = reduce(value0, values1[i1]); - } - } - - return values; -} - -function descending(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function number(x) { - return x === null ? NaN : +x; -} - -function variance(values, valueof) { - var n = values.length, - m = 0, - i = -1, - mean = 0, - value, - delta, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - if (m > 1) return sum / (m - 1); -} - -function deviation(array, f) { - var v = variance(array, f); - return v ? Math.sqrt(v) : v; -} - -function extent(values, valueof) { - var n = values.length, - i = -1, - value, - min, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - return [min, max]; -} - -var array = Array.prototype; - -var slice = array.slice; -var map = array.map; - -function constant(x) { - return function() { - return x; - }; -} - -function identity(x) { - return x; -} - -function sequence(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -var e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function ticks(start, stop, count) { - var reverse, - i = -1, - n, - ticks, - step; - - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) return [start]; - if (reverse = stop < start) n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; - - if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; - } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; - } - - if (reverse) ticks.reverse(); - - return ticks; -} - -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log(step) / Math.LN10), - error = step / Math.pow(10, power); - return power >= 0 - ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) - : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} - -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), - step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), - error = step0 / step1; - if (error >= e10) step1 *= 10; - else if (error >= e5) step1 *= 5; - else if (error >= e2) step1 *= 2; - return stop < start ? -step1 : step1; -} - -function thresholdSturges(values) { - return Math.ceil(Math.log(values.length) / Math.LN2) + 1; -} - -function histogram() { - var value = identity, - domain = extent, - threshold = thresholdSturges; - - function histogram(data) { - var i, - n = data.length, - x, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = tickStep(x0, x1, tz); - tz = sequence(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive - } - - // Remove any thresholds outside the domain. - var m = tz.length; - while (tz[0] <= x0) tz.shift(), --m; - while (tz[m - 1] > x1) tz.pop(), --m; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - for (i = 0; i < n; ++i) { - x = values[i]; - if (x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; - }; - - return histogram; -} - -function threshold(values, p, valueof) { - if (valueof == null) valueof = number; - if (!(n = values.length)) return; - if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function freedmanDiaconis(values, min, max) { - values = map.call(values, number).sort(ascending); - return Math.ceil((max - min) / (2 * (threshold(values, 0.75) - threshold(values, 0.25)) * Math.pow(values.length, -1 / 3))); -} - -function scott(values, min, max) { - return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); -} - -function max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } - } - } - } - - return max; -} - -function mean(values, valueof) { - var n = values.length, - m = n, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) sum += value; - else --m; - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; - else --m; - } - } - - if (m) return sum / m; -} - -function median(values, valueof) { - var n = values.length, - i = -1, - value, - numbers = []; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - numbers.push(value); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - numbers.push(value); - } - } - } - - return threshold(numbers.sort(ascending), 0.5); -} - -function merge(arrays) { - var n = arrays.length, - m, - i = -1, - j = 0, - merged, - array; - - while (++i < n) j += arrays[i].length; - merged = new Array(j); - - while (--n >= 0) { - array = arrays[n]; - m = array.length; - while (--m >= 0) { - merged[--j] = array[m]; - } - } - - return merged; -} - -function min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } - } - } - } - - return min; -} - -function permute(array, indexes) { - var i = indexes.length, permutes = new Array(i); - while (i--) permutes[i] = array[indexes[i]]; - return permutes; -} - -function scan(values, compare) { - if (!(n = values.length)) return; - var n, - i = 0, - j = 0, - xi, - xj = values[j]; - - if (compare == null) compare = ascending; - - while (++i < n) { - if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { - xj = xi, j = i; - } - } - - if (compare(xj, xj) === 0) return j; -} - -function shuffle(array, i0, i1) { - var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - - return array; -} - -function sum(values, valueof) { - var n = values.length, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (value = +values[i]) sum += value; // Note: zero and null are equivalent. - } - } - - else { - while (++i < n) { - if (value = +valueof(values[i], i, values)) sum += value; - } - } - - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -var slice$1 = Array.prototype.slice; - -function identity$1(x) { - return x; -} - -var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon = 1e-6; - -function translateX(x) { - return "translate(" + (x + 0.5) + ",0)"; -} - -function translateY(y) { - return "translate(0," + (y + 0.5) + ")"; -} - -function number$1(scale) { - return function(d) { - return +scale(d); - }; -} - -function center(scale) { - var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. - if (scale.round()) offset = Math.round(offset); - return function(d) { - return +scale(d) + offset; - }; -} - -function entering() { - return !this.__axis; -} - -function axis(orient, scale) { - var tickArguments = [], - tickValues = null, - tickFormat = null, - tickSizeInner = 6, - tickSizeOuter = 6, - tickPadding = 3, - k = orient === top || orient === left ? -1 : 1, - x = orient === left || orient === right ? "x" : "y", - transform = orient === top || orient === bottom ? translateX : translateY; - - function axis(context) { - var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat, - spacing = Math.max(tickSizeInner, 0) + tickPadding, - range = scale.range(), - range0 = +range[0] + 0.5, - range1 = +range[range.length - 1] + 0.5, - position = (scale.bandwidth ? center : number$1)(scale.copy()), - selection = context.selection ? context.selection() : context, - path = selection.selectAll(".domain").data([null]), - tick = selection.selectAll(".tick").data(values, scale).order(), - tickExit = tick.exit(), - tickEnter = tick.enter().append("g").attr("class", "tick"), - line = tick.select("line"), - text = tick.select("text"); - - path = path.merge(path.enter().insert("path", ".tick") - .attr("class", "domain") - .attr("stroke", "currentColor")); - - tick = tick.merge(tickEnter); - - line = line.merge(tickEnter.append("line") - .attr("stroke", "currentColor") - .attr(x + "2", k * tickSizeInner)); - - text = text.merge(tickEnter.append("text") - .attr("fill", "currentColor") - .attr(x, k * spacing) - .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - - tickExit = tickExit.transition(context) - .attr("opacity", epsilon) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); - - tickEnter - .attr("opacity", epsilon) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); - } - - tickExit.remove(); - - path - .attr("d", orient === left || orient == right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1)); - - tick - .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d)); }); - - line - .attr(x + "2", k * tickSizeInner); - - text - .attr(x, k * spacing) - .text(format); - - selection.filter(entering) - .attr("fill", "none") - .attr("font-size", 10) - .attr("font-family", "sans-serif") - .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - - selection - .each(function() { this.__axis = position; }); - } - - axis.scale = function(_) { - return arguments.length ? (scale = _, axis) : scale; - }; - - axis.ticks = function() { - return tickArguments = slice$1.call(arguments), axis; - }; - - axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice(); - }; - - axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice(); - }; - - axis.tickFormat = function(_) { - return arguments.length ? (tickFormat = _, axis) : tickFormat; - }; - - axis.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; - }; - - axis.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; - }; - - axis.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; - }; - - axis.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis) : tickPadding; - }; - - return axis; -} - -function axisTop(scale) { - return axis(top, scale); -} - -function axisRight(scale) { - return axis(right, scale); -} - -function axisBottom(scale) { - return axis(bottom, scale); -} - -function axisLeft(scale) { - return axis(left, scale); -} - -var noop = {value: function() {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none() {} - -function selector(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection(subgroups, this._parents); -} - -function empty() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty : function() { - return this.querySelectorAll(selector); - }; -} - -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant$1(x) { - return function() { - return x; - }; -} - -var keyPrefix = "$"; // Protect against keys like “__proto__”. - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = {}, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); - if (keyValue in nodeByKeyValue) { - exit[i] = node; - } else { - nodeByKeyValue[keyValue] = node; - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = keyPrefix + key.call(parent, data[i], i, data); - if (node = nodeByKeyValue[keyValue]) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue[keyValue] = null; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { - exit[i] = node; - } - } -} - -function selection_data(value, key) { - if (!value) { - data = new Array(this.size()), j = -1; - this.each(function(d) { data[++j] = d; }); - return data; - } - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant$1(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = value.call(parent, parent && parent.__data__, j, parents), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) update = onupdate(update); - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(selection) { - - for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending$1; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection(sortgroups, this._parents).order(); -} - -function ascending$1(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - var nodes = new Array(this.size()), i = -1; - this.each(function() { nodes[++i] = this; }); - return nodes; -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - var size = 0; - this.each(function() { ++size; }); - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -var filterEvents = {}; - -exports.event = null; - -if (typeof document !== "undefined") { - var element = document.documentElement; - if (!("onmouseenter" in element)) { - filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; - } -} - -function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); - return function(event) { - var related = event.relatedTarget; - if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { - listener.call(this, event); - } - }; -} - -function contextListener(listener, index, group) { - return function(event1) { - var event0 = exports.event; // Events can be reentrant (e.g., focus). - exports.event = event1; - try { - listener.call(this, this.__data__, index, group); - } finally { - exports.event = event0; - } - }; -} - -function parseTypenames$1(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; - return function(d, i, group) { - var on = this.__on, o, listener = wrap(value, i, group); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - this.addEventListener(o.type, o.listener = listener, o.capture = capture); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, capture); - o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, capture) { - var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - if (capture == null) capture = false; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); - return this; -} - -function customEvent(event1, listener, that, args) { - var event0 = exports.event; - event1.sourceEvent = exports.event; - exports.event = event1; - try { - return listener.apply(that, args); - } finally { - exports.event = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -var root = [null]; - -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection([[document.documentElement]], root); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root); -} - -function create(name) { - return select(creator(name).call(document.documentElement)); -} - -var nextId = 0; - -function local() { - return new Local; -} - -function Local() { - this._ = "@" + (++nextId).toString(36); -} - -Local.prototype = local.prototype = { - constructor: Local, - get: function(node) { - var id = this._; - while (!(id in node)) if (!(node = node.parentNode)) return; - return node[id]; - }, - set: function(node, value) { - return node[this._] = value; - }, - remove: function(node) { - return this._ in node && delete node[this._]; - }, - toString: function() { - return this._; - } -}; - -function sourceEvent() { - var current = exports.event, source; - while (source = current.sourceEvent) current = source; - return current; -} - -function point(node, event) { - var svg = node.ownerSVGElement || node; - - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; -} - -function mouse(node) { - var event = sourceEvent(); - if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); -} - -function selectAll(selector) { - return typeof selector === "string" - ? new Selection([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection([selector == null ? [] : selector], root); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; -} - -function touches(node, touches) { - if (touches == null) touches = sourceEvent().touches; - - for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) { - points[i] = point(node, touches[i]); - } - - return points; -} - -function nopropagation() { - exports.event.stopImmediatePropagation(); -} - -function noevent() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -function constant$2(x) { - return function() { - return x; - }; -} - -function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { - this.target = target; - this.type = type; - this.subject = subject; - this.identifier = id; - this.active = active; - this.x = x; - this.y = y; - this.dx = dx; - this.dy = dy; - this._ = dispatch; -} - -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultContainer() { - return this.parentNode; -} - -function defaultSubject(d) { - return d == null ? {x: exports.event.x, y: exports.event.y} : d; -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function drag() { - var filter = defaultFilter, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); - if (!gesture) return; - select(exports.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); - dragDisable(exports.event.view); - nopropagation(); - mousemoving = false; - mousedownx = exports.event.clientX; - mousedowny = exports.event.clientY; - gesture("start"); - } - - function mousemoved() { - noevent(); - if (!mousemoving) { - var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag"); - } - - function mouseupped() { - select(exports.event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(exports.event.view, mousemoving); - noevent(); - gestures.mouse("end"); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.changedTouches, - c = container.apply(this, arguments), - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) { - nopropagation(); - gesture("start"); - } - } - } - - function touchmoved() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent(); - gesture("drag"); - } - } - } - - function touchended() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation(); - gesture("end"); - } - } - } - - function beforestart(id, container, point, that, args) { - var p = point(container, id), s, dx, dy, - sublisteners = listeners.copy(); - - if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { - if ((exports.event.subject = s = subject.apply(that, args)) == null) return false; - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - return true; - })) return; - - return function gesture(type) { - var p0 = p, n; - switch (type) { - case "start": gestures[id] = gesture, n = active++; break; - case "end": delete gestures[id], --active; // nobreak - case "drag": p = point(container, id), n = active; break; - } - customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); - }; - } - - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$2(_), drag) : container; - }; - - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$2(_), drag) : subject; - }; - - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$2(!!_), drag) : touchable; - }; - - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - - return drag; -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), - reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), - reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), - reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), - reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), - reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} - -function rgb_formatRgb() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") - + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.b) || 0)) - + (a === 1 ? ")" : ", " + a + ")"); -} - -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - displayable: function() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) - && (0 <= this.l && this.l <= 1) - && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl: function() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") - + (this.h || 0) + ", " - + (this.s || 0) * 100 + "%, " - + (this.l || 0) * 100 + "%" - + (a === 1 ? ")" : ", " + a + ")"); - } -})); - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -var deg2rad = Math.PI / 180; -var rad2deg = 180 / Math.PI; - -// https://observablehq.com/@mbostock/lab-and-rgb -var K = 18, - Xn = 0.96422, - Yn = 1, - Zn = 0.82521, - t0 = 4 / 29, - t1 = 6 / 29, - t2 = 3 * t1 * t1, - t3 = t1 * t1 * t1; - -function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), - g = rgb2lrgb(o.g), - b = rgb2lrgb(o.b), - y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) x = z = y; else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); -} - -function gray(l, opacity) { - return new Lab(l, 0, 0, opacity == null ? 1 : opacity); -} - -function lab(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); -} - -function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; -} - -define(Lab, lab, extend(Color, { - brighter: function(k) { - return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker: function(k) { - return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb: function() { - var y = (this.l + 16) / 116, - x = isNaN(this.a) ? y : y + this.a / 500, - z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), - lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } -})); - -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; -} - -function lab2xyz(t) { - return t > t1 ? t * t * t : t2 * (t - t0); -} - -function lrgb2rgb(x) { - return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); -} - -function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); -} - -function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * rad2deg; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} - -function lch(l, c, h, opacity) { - return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function hcl(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; -} - -function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * deg2rad; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} - -define(Hcl, hcl, extend(Color, { - brighter: function(k) { - return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); - }, - darker: function(k) { - return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); - }, - rgb: function() { - return hcl2lab(this).rgb(); - } -})); - -var A = -0.14861, - B = +1.78277, - C = -0.29227, - D = -0.90649, - E = +1.97294, - ED = E * D, - EB = E * B, - BC_DA = B * C - D * A; - -function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), - bl = b - l, - k = (E * (g - l) - C * bl) / D, - s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 - h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); -} - -function cubehelix(h, s, l, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); -} - -function Cubehelix(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Cubehelix, cubehelix, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, - l = +this.l, - a = isNaN(this.s) ? 0 : this.s * l * (1 - l), - cosh = Math.cos(h), - sinh = Math.sin(h); - return new Rgb( - 255 * (l + a * (A * cosh + B * sinh)), - 255 * (l + a * (C * cosh + D * sinh)), - 255 * (l + a * (E * cosh)), - this.opacity - ); - } -})); - -function basis(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 - + (4 - 6 * t2 + 3 * t3) * v1 - + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 - + t3 * v3) / 6; -} - -function basis$1(values) { - var n = values.length - 1; - return function(t) { - var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), - v1 = values[i], - v2 = values[i + 1], - v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, - v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function basisClosed(values) { - var n = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), - v0 = values[(i + n - 1) % n], - v1 = values[i % n], - v2 = values[(i + 1) % n], - v3 = values[(i + 2) % n]; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function constant$3(x) { - return function() { - return x; - }; -} - -function linear(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function hue(a, b) { - var d = b - a; - return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$3(isNaN(a) ? b : a); -} - -function gamma(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear(a, d) : constant$3(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function rgbSpline(spline) { - return function(colors) { - var n = colors.length, - r = new Array(n), - g = new Array(n), - b = new Array(n), - i, color; - for (i = 0; i < n; ++i) { - color = rgb(colors[i]); - r[i] = color.r || 0; - g[i] = color.g || 0; - b[i] = color.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color.opacity = 1; - return function(t) { - color.r = r(t); - color.g = g(t); - color.b = b(t); - return color + ""; - }; - }; -} - -var rgbBasis = rgbSpline(basis$1); -var rgbBasisClosed = rgbSpline(basisClosed); - -function numberArray(a, b) { - if (!b) b = []; - var n = a ? Math.min(b.length, a.length) : 0, - c = b.slice(), - i; - return function(t) { - for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; -} - -function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -function array$1(a, b) { - return (isNumberArray(b) ? numberArray : genericArray)(a, b); -} - -function genericArray(a, b) { - var nb = b ? b.length : 0, - na = a ? Math.min(nb, a.length) : 0, - x = new Array(na), - c = new Array(nb), - i; - - for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); - for (; i < nb; ++i) c[i] = b[i]; - - return function(t) { - for (i = 0; i < na; ++i) c[i] = x[i](t); - return c; - }; -} - -function date(a, b) { - var d = new Date; - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; -} - -function interpolateNumber(a, b) { - return a = +a, b = +b, function(t) { - return a * (1 - t) + b * t; - }; -} - -function object(a, b) { - var i = {}, - c = {}, - k; - - if (a === null || typeof a !== "object") a = {}; - if (b === null || typeof b !== "object") b = {}; - - for (k in b) { - if (k in a) { - i[k] = interpolateValue(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -function interpolateValue(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant$3(b) - : (t === "number" ? interpolateNumber - : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) - : b instanceof color ? interpolateRgb - : b instanceof Date ? date - : isNumberArray(b) ? numberArray - : Array.isArray(b) ? genericArray - : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object - : interpolateNumber)(a, b); -} - -function discrete(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -function hue$1(a, b) { - var i = hue(+a, +b); - return function(t) { - var x = i(t); - return x - 360 * Math.floor(x / 360); - }; -} - -function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; -} - -var degrees = 180 / Math.PI; - -var identity$2 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees, - skewX: Math.atan(skewX) * degrees, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var cssNode, - cssRoot, - cssView, - svgNode; - -function parseCss(value) { - if (value === "none") return identity$2; - if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; - cssNode.style.transform = value; - value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); - cssRoot.removeChild(cssNode); - value = value.slice(7, -1).split(","); - return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); -} - -function parseSvg(value) { - if (value == null) return identity$2; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var rho = Math.SQRT2, - rho2 = 2, - rho4 = 4, - epsilon2 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -// p0 = [ux0, uy0, w0] -// p1 = [ux1, uy1, w1] -function interpolateZoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000; - - return i; -} - -function hsl$1(hue) { - return function(start, end) { - var h = hue((start = hsl(start)).h, (end = hsl(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hsl$2 = hsl$1(hue); -var hslLong = hsl$1(nogamma); - -function lab$1(start, end) { - var l = nogamma((start = lab(start)).l, (end = lab(end)).l), - a = nogamma(start.a, end.a), - b = nogamma(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.l = l(t); - start.a = a(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; -} - -function hcl$1(hue) { - return function(start, end) { - var h = hue((start = hcl(start)).h, (end = hcl(end)).h), - c = nogamma(start.c, end.c), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hcl$2 = hcl$1(hue); -var hclLong = hcl$1(nogamma); - -function cubehelix$1(hue) { - return (function cubehelixGamma(y) { - y = +y; - - function cubehelix$1(start, end) { - var h = hue((start = cubehelix(start)).h, (end = cubehelix(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(Math.pow(t, y)); - start.opacity = opacity(t); - return start + ""; - }; - } - - cubehelix$1.gamma = cubehelixGamma; - - return cubehelix$1; - })(1); -} - -var cubehelix$2 = cubehelix$1(hue); -var cubehelixLong = cubehelix$1(nogamma); - -function piecewise(interpolate, values) { - var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values[++i]); - return function(t) { - var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i](t - i); - }; -} - -function quantize(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; -} - -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(function(elapsed) { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -function interval$1(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - delay = +delay, time = time == null ? now() : +time; - t.restart(function tick(elapsed) { - elapsed += total; - t.restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create$1(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get$1(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set$1(node, id) { - var schedule = get$1(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get$1(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create$1(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get$1(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set$1(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get$1(node, id).value[name]; - }; -} - -function interpolate(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS$1(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS$1(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get$1(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set$1(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set$1(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get$1(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set$1(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get$1(this.node(), id).ease; -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$1; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get$1(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$1(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection$1 = selection.prototype.constructor; - -function transition_selection() { - return new Selection$1(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set$1(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove$1(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction$1(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant$1(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction$1(tweenValue(this, "text", value)) - : textConstant$1(value == null ? "" : value + "")); -} - -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} - -function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_textTween(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, textTween(value)); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get$1(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set$1(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - textTween: transition_textTween, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - end: transition_end -}; - -function linear$1(t) { - return +t; -} - -function quadIn(t) { - return t * t; -} - -function quadOut(t) { - return t * (2 - t); -} - -function quadInOut(t) { - return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; -} - -function cubicIn(t) { - return t * t * t; -} - -function cubicOut(t) { - return --t * t * t + 1; -} - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var exponent = 3; - -var polyIn = (function custom(e) { - e = +e; - - function polyIn(t) { - return Math.pow(t, e); - } - - polyIn.exponent = custom; - - return polyIn; -})(exponent); - -var polyOut = (function custom(e) { - e = +e; - - function polyOut(t) { - return 1 - Math.pow(1 - t, e); - } - - polyOut.exponent = custom; - - return polyOut; -})(exponent); - -var polyInOut = (function custom(e) { - e = +e; - - function polyInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; - } - - polyInOut.exponent = custom; - - return polyInOut; -})(exponent); - -var pi = Math.PI, - halfPi = pi / 2; - -function sinIn(t) { - return 1 - Math.cos(t * halfPi); -} - -function sinOut(t) { - return Math.sin(t * halfPi); -} - -function sinInOut(t) { - return (1 - Math.cos(pi * t)) / 2; -} - -function expIn(t) { - return Math.pow(2, 10 * t - 10); -} - -function expOut(t) { - return 1 - Math.pow(2, -10 * t); -} - -function expInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2; -} - -function circleIn(t) { - return 1 - Math.sqrt(1 - t * t); -} - -function circleOut(t) { - return Math.sqrt(1 - --t * t); -} - -function circleInOut(t) { - return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; -} - -var b1 = 4 / 11, - b2 = 6 / 11, - b3 = 8 / 11, - b4 = 3 / 4, - b5 = 9 / 11, - b6 = 10 / 11, - b7 = 15 / 16, - b8 = 21 / 22, - b9 = 63 / 64, - b0 = 1 / b1 / b1; - -function bounceIn(t) { - return 1 - bounceOut(1 - t); -} - -function bounceOut(t) { - return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; -} - -function bounceInOut(t) { - return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; -} - -var overshoot = 1.70158; - -var backIn = (function custom(s) { - s = +s; - - function backIn(t) { - return t * t * ((s + 1) * t - s); - } - - backIn.overshoot = custom; - - return backIn; -})(overshoot); - -var backOut = (function custom(s) { - s = +s; - - function backOut(t) { - return --t * t * ((s + 1) * t + s) + 1; - } - - backOut.overshoot = custom; - - return backOut; -})(overshoot); - -var backInOut = (function custom(s) { - s = +s; - - function backInOut(t) { - return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; - } - - backInOut.overshoot = custom; - - return backInOut; -})(overshoot); - -var tau = 2 * Math.PI, - amplitude = 1, - period = 0.3; - -var elasticIn = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticIn(t) { - return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p); - } - - elasticIn.amplitude = function(a) { return custom(a, p * tau); }; - elasticIn.period = function(p) { return custom(a, p); }; - - return elasticIn; -})(amplitude, period); - -var elasticOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticOut(t) { - return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p); - } - - elasticOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticOut.period = function(p) { return custom(a, p); }; - - return elasticOut; -})(amplitude, period); - -var elasticInOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticInOut(t) { - return ((t = t * 2 - 1) < 0 - ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) - : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2; - } - - elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticInOut.period = function(p) { return custom(a, p); }; - - return elasticInOut; -})(amplitude, period); - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -var root$1 = [null]; - -function active(node, name) { - var schedules = node.__transition, - schedule, - i; - - if (schedules) { - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { - return new Transition([[node]], root$1, name, +i); - } - } - } - - return null; -} - -function constant$4(x) { - return function() { - return x; - }; -} - -function BrushEvent(target, type, selection) { - this.target = target; - this.type = type; - this.selection = selection; -} - -function nopropagation$1() { - exports.event.stopImmediatePropagation(); -} - -function noevent$1() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -var MODE_DRAG = {name: "drag"}, - MODE_SPACE = {name: "space"}, - MODE_HANDLE = {name: "handle"}, - MODE_CENTER = {name: "center"}; - -function number1(e) { - return [+e[0], +e[1]]; -} - -function number2(e) { - return [number1(e[0]), number1(e[1])]; -} - -function toucher(identifier) { - return function(target) { - return touch(target, exports.event.touches, identifier); - }; -} - -var X = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; }, - output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } -}; - -var Y = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; }, - output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } -}; - -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { return xy == null ? null : number2(xy); }, - output: function(xy) { return xy; } -}; - -var cursors = { - overlay: "crosshair", - selection: "move", - n: "ns-resize", - e: "ew-resize", - s: "ns-resize", - w: "ew-resize", - nw: "nwse-resize", - ne: "nesw-resize", - se: "nwse-resize", - sw: "nesw-resize" -}; - -var flipX = { - e: "w", - w: "e", - nw: "ne", - ne: "nw", - se: "sw", - sw: "se" -}; - -var flipY = { - n: "s", - s: "n", - nw: "sw", - ne: "se", - se: "ne", - sw: "nw" -}; - -var signsX = { - overlay: +1, - selection: +1, - n: null, - e: +1, - s: null, - w: -1, - nw: -1, - ne: +1, - se: +1, - sw: -1 -}; - -var signsY = { - overlay: +1, - selection: +1, - n: -1, - e: null, - s: +1, - w: null, - nw: -1, - ne: -1, - se: +1, - sw: +1 -}; - -function type(t) { - return {type: t}; -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$1() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent() { - var svg = this.ownerSVGElement || this; - if (svg.hasAttribute("viewBox")) { - svg = svg.viewBox.baseVal; - return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; - } - return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; -} - -function defaultTouchable$1() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -// Like d3.local, but with the name “__brush” rather than auto-generated. -function local$1(node) { - while (!node.__brush) if (!(node = node.parentNode)) return; - return node.__brush; -} - -function empty$1(extent) { - return extent[0][0] === extent[1][0] - || extent[0][1] === extent[1][1]; -} - -function brushSelection(node) { - var state = node.__brush; - return state ? state.dim.output(state.selection) : null; -} - -function brushX() { - return brush$1(X); -} - -function brushY() { - return brush$1(Y); -} - -function brush() { - return brush$1(XY); -} - -function brush$1(dim) { - var extent = defaultExtent, - filter = defaultFilter$1, - touchable = defaultTouchable$1, - keys = true, - listeners = dispatch("start", "brush", "end"), - handleSize = 6, - touchending; - - function brush(group) { - var overlay = group - .property("__brush", initialize) - .selectAll(".overlay") - .data([type("overlay")]); - - overlay.enter().append("rect") - .attr("class", "overlay") - .attr("pointer-events", "all") - .attr("cursor", cursors.overlay) - .merge(overlay) - .each(function() { - var extent = local$1(this).extent; - select(this) - .attr("x", extent[0][0]) - .attr("y", extent[0][1]) - .attr("width", extent[1][0] - extent[0][0]) - .attr("height", extent[1][1] - extent[0][1]); - }); - - group.selectAll(".selection") - .data([type("selection")]) - .enter().append("rect") - .attr("class", "selection") - .attr("cursor", cursors.selection) - .attr("fill", "#777") - .attr("fill-opacity", 0.3) - .attr("stroke", "#fff") - .attr("shape-rendering", "crispEdges"); - - var handle = group.selectAll(".handle") - .data(dim.handles, function(d) { return d.type; }); - - handle.exit().remove(); - - handle.enter().append("rect") - .attr("class", function(d) { return "handle handle--" + d.type; }) - .attr("cursor", function(d) { return cursors[d.type]; }); - - group - .each(redraw) - .attr("fill", "none") - .attr("pointer-events", "all") - .on("mousedown.brush", started) - .filter(touchable) - .on("touchstart.brush", started) - .on("touchmove.brush", touchmoved) - .on("touchend.brush touchcancel.brush", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - brush.move = function(group, selection) { - if (group.selection) { - group - .on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) - .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) - .tween("brush", function() { - var that = this, - state = that.__brush, - emit = emitter(that, arguments), - selection0 = state.selection, - selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), - i = interpolateValue(selection0, selection1); - - function tween(t) { - state.selection = t === 1 && selection1 === null ? null : i(t); - redraw.call(that); - emit.brush(); - } - - return selection0 !== null && selection1 !== null ? tween : tween(1); - }); - } else { - group - .each(function() { - var that = this, - args = arguments, - state = that.__brush, - selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), - emit = emitter(that, args).beforestart(); - - interrupt(that); - state.selection = selection1 === null ? null : selection1; - redraw.call(that); - emit.start().brush().end(); - }); - } - }; - - brush.clear = function(group) { - brush.move(group, null); - }; - - function redraw() { - var group = select(this), - selection = local$1(this).selection; - - if (selection) { - group.selectAll(".selection") - .style("display", null) - .attr("x", selection[0][0]) - .attr("y", selection[0][1]) - .attr("width", selection[1][0] - selection[0][0]) - .attr("height", selection[1][1] - selection[0][1]); - - group.selectAll(".handle") - .style("display", null) - .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) - .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) - .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) - .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); - } - - else { - group.selectAll(".selection,.handle") - .style("display", "none") - .attr("x", null) - .attr("y", null) - .attr("width", null) - .attr("height", null); - } - } - - function emitter(that, args, clean) { - return (!clean && that.__brush.emitter) || new Emitter(that, args); - } - - function Emitter(that, args) { - this.that = that; - this.args = args; - this.state = that.__brush; - this.active = 0; - } - - Emitter.prototype = { - beforestart: function() { - if (++this.active === 1) this.state.emitter = this, this.starting = true; - return this; - }, - start: function() { - if (this.starting) this.starting = false, this.emit("start"); - else this.emit("brush"); - return this; - }, - brush: function() { - this.emit("brush"); - return this; - }, - end: function() { - if (--this.active === 0) delete this.state.emitter, this.emit("end"); - return this; - }, - emit: function(type) { - customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function started() { - if (touchending && !exports.event.touches) return; - if (!filter.apply(this, arguments)) return; - - var that = this, - type = exports.event.target.__data__.type, - mode = (keys && exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && exports.event.altKey ? MODE_CENTER : MODE_HANDLE), - signX = dim === Y ? null : signsX[type], - signY = dim === X ? null : signsY[type], - state = local$1(that), - extent = state.extent, - selection = state.selection, - W = extent[0][0], w0, w1, - N = extent[0][1], n0, n1, - E = extent[1][0], e0, e1, - S = extent[1][1], s0, s1, - dx = 0, - dy = 0, - moving, - shifting = signX && signY && keys && exports.event.shiftKey, - lockX, - lockY, - pointer = exports.event.touches ? toucher(exports.event.changedTouches[0].identifier) : mouse, - point0 = pointer(that), - point = point0, - emit = emitter(that, arguments, true).beforestart(); - - if (type === "overlay") { - if (selection) moving = true; - state.selection = selection = [ - [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], - [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] - ]; - } else { - w0 = selection[0][0]; - n0 = selection[0][1]; - e0 = selection[1][0]; - s0 = selection[1][1]; - } - - w1 = w0; - n1 = n0; - e1 = e0; - s1 = s0; - - var group = select(that) - .attr("pointer-events", "none"); - - var overlay = group.selectAll(".overlay") - .attr("cursor", cursors[type]); - - if (exports.event.touches) { - emit.moved = moved; - emit.ended = ended; - } else { - var view = select(exports.event.view) - .on("mousemove.brush", moved, true) - .on("mouseup.brush", ended, true); - if (keys) view - .on("keydown.brush", keydowned, true) - .on("keyup.brush", keyupped, true); - - dragDisable(exports.event.view); - } - - nopropagation$1(); - interrupt(that); - redraw.call(that); - emit.start(); - - function moved() { - var point1 = pointer(that); - if (shifting && !lockX && !lockY) { - if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; - else lockX = true; - } - point = point1; - moving = true; - noevent$1(); - move(); - } - - function move() { - var t; - - dx = point[0] - point0[0]; - dy = point[1] - point0[1]; - - switch (mode) { - case MODE_SPACE: - case MODE_DRAG: { - if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; - if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; - break; - } - case MODE_HANDLE: { - if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; - else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; - if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; - else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; - break; - } - case MODE_CENTER: { - if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); - if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); - break; - } - } - - if (e1 < w1) { - signX *= -1; - t = w0, w0 = e0, e0 = t; - t = w1, w1 = e1, e1 = t; - if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); - } - - if (s1 < n1) { - signY *= -1; - t = n0, n0 = s0, s0 = t; - t = n1, n1 = s1, s1 = t; - if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); - } - - if (state.selection) selection = state.selection; // May be set by brush.move! - if (lockX) w1 = selection[0][0], e1 = selection[1][0]; - if (lockY) n1 = selection[0][1], s1 = selection[1][1]; - - if (selection[0][0] !== w1 - || selection[0][1] !== n1 - || selection[1][0] !== e1 - || selection[1][1] !== s1) { - state.selection = [[w1, n1], [e1, s1]]; - redraw.call(that); - emit.brush(); - } - } - - function ended() { - nopropagation$1(); - if (exports.event.touches) { - if (exports.event.touches.length) return; - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - } else { - yesdrag(exports.event.view, moving); - view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); - } - group.attr("pointer-events", "all"); - overlay.attr("cursor", cursors.overlay); - if (state.selection) selection = state.selection; // May be set by brush.move (on start)! - if (empty$1(selection)) state.selection = null, redraw.call(that); - emit.end(); - } - - function keydowned() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - shifting = signX && signY; - break; - } - case 18: { // ALT - if (mode === MODE_HANDLE) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - move(); - } - break; - } - case 32: { // SPACE; takes priority over ALT - if (mode === MODE_HANDLE || mode === MODE_CENTER) { - if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; - if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; - mode = MODE_SPACE; - overlay.attr("cursor", cursors.selection); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - - function keyupped() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - if (shifting) { - lockX = lockY = shifting = false; - move(); - } - break; - } - case 18: { // ALT - if (mode === MODE_CENTER) { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - move(); - } - break; - } - case 32: { // SPACE - if (mode === MODE_SPACE) { - if (exports.event.altKey) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - } else { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - } - overlay.attr("cursor", cursors[type]); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - } - - function touchmoved() { - emitter(this, arguments).moved(); - } - - function touchended() { - emitter(this, arguments).ended(); - } - - function initialize() { - var state = this.__brush || {selection: null}; - state.extent = number2(extent.apply(this, arguments)); - state.dim = dim; - return state; - } - - brush.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4(number2(_)), brush) : extent; - }; - - brush.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$4(!!_), brush) : filter; - }; - - brush.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$4(!!_), brush) : touchable; - }; - - brush.handleSize = function(_) { - return arguments.length ? (handleSize = +_, brush) : handleSize; - }; - - brush.keyModifiers = function(_) { - return arguments.length ? (keys = !!_, brush) : keys; - }; - - brush.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? brush : value; - }; - - return brush; -} - -var cos = Math.cos; -var sin = Math.sin; -var pi$1 = Math.PI; -var halfPi$1 = pi$1 / 2; -var tau$1 = pi$1 * 2; -var max$1 = Math.max; - -function compareValue(compare) { - return function(a, b) { - return compare( - a.source.value + a.target.value, - b.source.value + b.target.value - ); - }; -} - -function chord() { - var padAngle = 0, - sortGroups = null, - sortSubgroups = null, - sortChords = null; - - function chord(matrix) { - var n = matrix.length, - groupSums = [], - groupIndex = sequence(n), - subgroupIndex = [], - chords = [], - groups = chords.groups = new Array(n), - subgroups = new Array(n * n), - k, - x, - x0, - dx, - i, - j; - - // Compute the sum. - k = 0, i = -1; while (++i < n) { - x = 0, j = -1; while (++j < n) { - x += matrix[i][j]; - } - groupSums.push(x); - subgroupIndex.push(sequence(n)); - k += x; - } - - // Sort groups… - if (sortGroups) groupIndex.sort(function(a, b) { - return sortGroups(groupSums[a], groupSums[b]); - }); - - // Sort subgroups… - if (sortSubgroups) subgroupIndex.forEach(function(d, i) { - d.sort(function(a, b) { - return sortSubgroups(matrix[i][a], matrix[i][b]); - }); - }); - - // Convert the sum to scaling factor for [0, 2pi]. - // TODO Allow start and end angle to be specified? - // TODO Allow padding to be specified as percentage? - k = max$1(0, tau$1 - padAngle * n) / k; - dx = k ? padAngle : tau$1 / n; - - // Compute the start and end angle for each group and subgroup. - // Note: Opera has a bug reordering object literal properties! - x = 0, i = -1; while (++i < n) { - x0 = x, j = -1; while (++j < n) { - var di = groupIndex[i], - dj = subgroupIndex[di][j], - v = matrix[di][dj], - a0 = x, - a1 = x += v * k; - subgroups[dj * n + di] = { - index: di, - subindex: dj, - startAngle: a0, - endAngle: a1, - value: v - }; - } - groups[di] = { - index: di, - startAngle: x0, - endAngle: x, - value: groupSums[di] - }; - x += dx; - } - - // Generate chords for each (non-empty) subgroup-subgroup link. - i = -1; while (++i < n) { - j = i - 1; while (++j < n) { - var source = subgroups[j * n + i], - target = subgroups[i * n + j]; - if (source.value || target.value) { - chords.push(source.value < target.value - ? {source: target, target: source} - : {source: source, target: target}); - } - } - } - - return sortChords ? chords.sort(sortChords) : chords; - } - - chord.padAngle = function(_) { - return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle; - }; - - chord.sortGroups = function(_) { - return arguments.length ? (sortGroups = _, chord) : sortGroups; - }; - - chord.sortSubgroups = function(_) { - return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; - }; - - chord.sortChords = function(_) { - return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; - }; - - return chord; -} - -var slice$2 = Array.prototype.slice; - -function constant$5(x) { - return function() { - return x; - }; -} - -var pi$2 = Math.PI, - tau$2 = 2 * pi$2, - epsilon$1 = 1e-6, - tauEpsilon = tau$2 - epsilon$1; - -function Path() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; -} - -function path() { - return new Path; -} - -Path.prototype = path.prototype = { - constructor: Path, - moveTo: function(x, y) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); - }, - closePath: function() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - }, - lineTo: function(x, y) { - this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); - }, - quadraticCurveTo: function(x1, y1, x, y) { - this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { - this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - arcTo: function(x1, y1, x2, y2, r) { - x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; - var x0 = this._x1, - y0 = this._y1, - x21 = x2 - x1, - y21 = y2 - y1, - x01 = x0 - x1, - y01 = y0 - y1, - l01_2 = x01 * x01 + y01 * y01; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x1,y1). - if (this._x1 === null) { - this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$1)); - - // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? - // Equivalently, is (x1,y1) coincident with (x2,y2)? - // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { - this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Otherwise, draw an arc! - else { - var x20 = x2 - x0, - y20 = y2 - y0, - l21_2 = x21 * x21 + y21 * y21, - l20_2 = x20 * x20 + y20 * y20, - l21 = Math.sqrt(l21_2), - l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), - t01 = l / l01, - t21 = l / l21; - - // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$1) { - this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); - } - - this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); - } - }, - arc: function(x, y, r, a0, a1, ccw) { - x = +x, y = +y, r = +r, ccw = !!ccw; - var dx = r * Math.cos(a0), - dy = r * Math.sin(a0), - x0 = x + dx, - y0 = y + dy, - cw = 1 ^ ccw, - da = ccw ? a0 - a1 : a1 - a0; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x0,y0). - if (this._x1 === null) { - this._ += "M" + x0 + "," + y0; - } - - // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { - this._ += "L" + x0 + "," + y0; - } - - // Is this arc empty? We’re done. - if (!r) return; - - // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau$2 + tau$2; - - // Is this a complete circle? Draw two arcs to complete the circle. - if (da > tauEpsilon) { - this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); - } - - // Is this arc non-empty? Draw an arc! - else if (da > epsilon$1) { - this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); - } - }, - rect: function(x, y, w, h) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; - }, - toString: function() { - return this._; - } -}; - -function defaultSource(d) { - return d.source; -} - -function defaultTarget(d) { - return d.target; -} - -function defaultRadius(d) { - return d.radius; -} - -function defaultStartAngle(d) { - return d.startAngle; -} - -function defaultEndAngle(d) { - return d.endAngle; -} - -function ribbon() { - var source = defaultSource, - target = defaultTarget, - radius = defaultRadius, - startAngle = defaultStartAngle, - endAngle = defaultEndAngle, - context = null; - - function ribbon() { - var buffer, - argv = slice$2.call(arguments), - s = source.apply(this, argv), - t = target.apply(this, argv), - sr = +radius.apply(this, (argv[0] = s, argv)), - sa0 = startAngle.apply(this, argv) - halfPi$1, - sa1 = endAngle.apply(this, argv) - halfPi$1, - sx0 = sr * cos(sa0), - sy0 = sr * sin(sa0), - tr = +radius.apply(this, (argv[0] = t, argv)), - ta0 = startAngle.apply(this, argv) - halfPi$1, - ta1 = endAngle.apply(this, argv) - halfPi$1; - - if (!context) context = buffer = path(); - - context.moveTo(sx0, sy0); - context.arc(0, 0, sr, sa0, sa1); - if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr? - context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0)); - context.arc(0, 0, tr, ta0, ta1); - } - context.quadraticCurveTo(0, 0, sx0, sy0); - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - ribbon.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$5(+_), ribbon) : radius; - }; - - ribbon.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : startAngle; - }; - - ribbon.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : endAngle; - }; - - ribbon.source = function(_) { - return arguments.length ? (source = _, ribbon) : source; - }; - - ribbon.target = function(_) { - return arguments.length ? (target = _, ribbon) : target; - }; - - ribbon.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; - }; - - return ribbon; -} - -var prefix = "$"; - -function Map() {} - -Map.prototype = map$1.prototype = { - constructor: Map, - has: function(key) { - return (prefix + key) in this; - }, - get: function(key) { - return this[prefix + key]; - }, - set: function(key, value) { - this[prefix + key] = value; - return this; - }, - remove: function(key) { - var property = prefix + key; - return property in this && delete this[property]; - }, - clear: function() { - for (var property in this) if (property[0] === prefix) delete this[property]; - }, - keys: function() { - var keys = []; - for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); - return keys; - }, - values: function() { - var values = []; - for (var property in this) if (property[0] === prefix) values.push(this[property]); - return values; - }, - entries: function() { - var entries = []; - for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); - return entries; - }, - size: function() { - var size = 0; - for (var property in this) if (property[0] === prefix) ++size; - return size; - }, - empty: function() { - for (var property in this) if (property[0] === prefix) return false; - return true; - }, - each: function(f) { - for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); - } -}; - -function map$1(object, f) { - var map = new Map; - - // Copy constructor. - if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); - - // Index array by numeric index or specified key function. - else if (Array.isArray(object)) { - var i = -1, - n = object.length, - o; - - if (f == null) while (++i < n) map.set(i, object[i]); - else while (++i < n) map.set(f(o = object[i], i, object), o); - } - - // Convert object to map. - else if (object) for (var key in object) map.set(key, object[key]); - - return map; -} - -function nest() { - var keys = [], - sortKeys = [], - sortValues, - rollup, - nest; - - function apply(array, depth, createResult, setResult) { - if (depth >= keys.length) { - if (sortValues != null) array.sort(sortValues); - return rollup != null ? rollup(array) : array; - } - - var i = -1, - n = array.length, - key = keys[depth++], - keyValue, - value, - valuesByKey = map$1(), - values, - result = createResult(); - - while (++i < n) { - if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) { - values.push(value); - } else { - valuesByKey.set(keyValue, [value]); - } - } - - valuesByKey.each(function(values, key) { - setResult(result, key, apply(values, depth, createResult, setResult)); - }); - - return result; - } - - function entries(map, depth) { - if (++depth > keys.length) return map; - var array, sortKey = sortKeys[depth - 1]; - if (rollup != null && depth >= keys.length) array = map.entries(); - else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); }); - return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array; - } - - return nest = { - object: function(array) { return apply(array, 0, createObject, setObject); }, - map: function(array) { return apply(array, 0, createMap, setMap); }, - entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); }, - key: function(d) { keys.push(d); return nest; }, - sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; }, - sortValues: function(order) { sortValues = order; return nest; }, - rollup: function(f) { rollup = f; return nest; } - }; -} - -function createObject() { - return {}; -} - -function setObject(object, key, value) { - object[key] = value; -} - -function createMap() { - return map$1(); -} - -function setMap(map, key, value) { - map.set(key, value); -} - -function Set() {} - -var proto = map$1.prototype; - -Set.prototype = set$2.prototype = { - constructor: Set, - has: proto.has, - add: function(value) { - value += ""; - this[prefix + value] = value; - return this; - }, - remove: proto.remove, - clear: proto.clear, - values: proto.keys, - size: proto.size, - empty: proto.empty, - each: proto.each -}; - -function set$2(object, f) { - var set = new Set; - - // Copy constructor. - if (object instanceof Set) object.each(function(value) { set.add(value); }); - - // Otherwise, assume it’s an array. - else if (object) { - var i = -1, n = object.length; - if (f == null) while (++i < n) set.add(object[i]); - else while (++i < n) set.add(f(object[i], i, object)); - } - - return set; -} - -function keys(map) { - var keys = []; - for (var key in map) keys.push(key); - return keys; -} - -function values(map) { - var values = []; - for (var key in map) values.push(map[key]); - return values; -} - -function entries(map) { - var entries = []; - for (var key in map) entries.push({key: key, value: map[key]}); - return entries; -} - -var array$2 = Array.prototype; - -var slice$3 = array$2.slice; - -function ascending$2(a, b) { - return a - b; -} - -function area(ring) { - var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; - while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; - return area; -} - -function constant$6(x) { - return function() { - return x; - }; -} - -function contains(ring, hole) { - var i = -1, n = hole.length, c; - while (++i < n) if (c = ringContains(ring, hole[i])) return c; - return 0; -} - -function ringContains(ring, point) { - var x = point[0], y = point[1], contains = -1; - for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { - var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; - if (segmentContains(pi, pj, point)) return 0; - if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; - } - return contains; -} - -function segmentContains(a, b, c) { - var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); -} - -function collinear(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); -} - -function within(p, q, r) { - return p <= q && q <= r || r <= q && q <= p; -} - -function noop$1() {} - -var cases = [ - [], - [[[1.0, 1.5], [0.5, 1.0]]], - [[[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [0.5, 1.0]]], - [[[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 0.5], [1.0, 1.5]]], - [[[1.0, 0.5], [0.5, 1.0]]], - [[[0.5, 1.0], [1.0, 0.5]]], - [[[1.0, 1.5], [1.0, 0.5]]], - [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [1.0, 0.5]]], - [[[0.5, 1.0], [1.5, 1.0]]], - [[[1.0, 1.5], [1.5, 1.0]]], - [[[0.5, 1.0], [1.0, 1.5]]], - [] -]; - -function contours() { - var dx = 1, - dy = 1, - threshold = thresholdSturges, - smooth = smoothLinear; - - function contours(values) { - var tz = threshold(values); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var domain = extent(values), start = domain[0], stop = domain[1]; - tz = tickStep(start, stop, tz); - tz = sequence(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz); - } else { - tz = tz.slice().sort(ascending$2); - } - - return tz.map(function(value) { - return contour(values, value); - }); - } - - // Accumulate, smooth contour rings, assign holes to exterior rings. - // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js - function contour(values, value) { - var polygons = [], - holes = []; - - isorings(values, value, function(ring) { - smooth(ring, values, value); - if (area(ring) > 0) polygons.push([ring]); - else holes.push(ring); - }); - - holes.forEach(function(hole) { - for (var i = 0, n = polygons.length, polygon; i < n; ++i) { - if (contains((polygon = polygons[i])[0], hole) !== -1) { - polygon.push(hole); - return; - } - } - }); - - return { - type: "MultiPolygon", - value: value, - coordinates: polygons - }; - } - - // Marching squares with isolines stitched into rings. - // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js - function isorings(values, value, callback) { - var fragmentByStart = new Array, - fragmentByEnd = new Array, - x, y, t0, t1, t2, t3; - - // Special case for the first row (y = -1, t2 = t3 = 0). - x = y = -1; - t1 = values[0] >= value; - cases[t1 << 1].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[x + 1] >= value; - cases[t0 | t1 << 1].forEach(stitch); - } - cases[t1 << 0].forEach(stitch); - - // General case for the intermediate rows. - while (++y < dy - 1) { - x = -1; - t1 = values[y * dx + dx] >= value; - t2 = values[y * dx] >= value; - cases[t1 << 1 | t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[y * dx + dx + x + 1] >= value; - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t1 | t2 << 3].forEach(stitch); - } - - // Special case for the last row (y = dy - 1, t0 = t1 = 0). - x = -1; - t2 = values[y * dx] >= value; - cases[t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t2 << 3].forEach(stitch); - - function stitch(line) { - var start = [line[0][0] + x, line[0][1] + y], - end = [line[1][0] + x, line[1][1] + y], - startIndex = index(start), - endIndex = index(end), - f, g; - if (f = fragmentByEnd[startIndex]) { - if (g = fragmentByStart[endIndex]) { - delete fragmentByEnd[f.end]; - delete fragmentByStart[g.start]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; - } - } else { - delete fragmentByEnd[f.end]; - f.ring.push(end); - fragmentByEnd[f.end = endIndex] = f; - } - } else if (f = fragmentByStart[endIndex]) { - if (g = fragmentByEnd[startIndex]) { - delete fragmentByStart[f.start]; - delete fragmentByEnd[g.end]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; - } - } else { - delete fragmentByStart[f.start]; - f.ring.unshift(start); - fragmentByStart[f.start = startIndex] = f; - } - } else { - fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; - } - } - } - - function index(point) { - return point[0] * 2 + point[1] * (dx + 1) * 4; - } - - function smoothLinear(ring, values, value) { - ring.forEach(function(point) { - var x = point[0], - y = point[1], - xt = x | 0, - yt = y | 0, - v0, - v1 = values[yt * dx + xt]; - if (x > 0 && x < dx && xt === x) { - v0 = values[yt * dx + xt - 1]; - point[0] = x + (value - v0) / (v1 - v0) - 0.5; - } - if (y > 0 && y < dy && yt === y) { - v0 = values[(yt - 1) * dx + xt]; - point[1] = y + (value - v0) / (v1 - v0) - 0.5; - } - }); - } - - contours.contour = contour; - - contours.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 > 0) || !(_1 > 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, contours; - }; - - contours.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), contours) : threshold; - }; - - contours.smooth = function(_) { - return arguments.length ? (smooth = _ ? smoothLinear : noop$1, contours) : smooth === smoothLinear; - }; - - return contours; -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurX(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var j = 0; j < m; ++j) { - for (var i = 0, sr = 0; i < n + r; ++i) { - if (i < n) { - sr += source.data[i + j * n]; - } - if (i >= r) { - if (i >= w) { - sr -= source.data[i - w + j * n]; - } - target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w); - } - } - } -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurY(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var i = 0; i < n; ++i) { - for (var j = 0, sr = 0; j < m + r; ++j) { - if (j < m) { - sr += source.data[i + j * n]; - } - if (j >= r) { - if (j >= w) { - sr -= source.data[i + (j - w) * n]; - } - target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w); - } - } - } -} - -function defaultX(d) { - return d[0]; -} - -function defaultY(d) { - return d[1]; -} - -function defaultWeight() { - return 1; -} - -function density() { - var x = defaultX, - y = defaultY, - weight = defaultWeight, - dx = 960, - dy = 500, - r = 20, // blur radius - k = 2, // log2(grid cell size) - o = r * 3, // grid offset, to pad for blur - n = (dx + o * 2) >> k, // grid width - m = (dy + o * 2) >> k, // grid height - threshold = constant$6(20); - - function density(data) { - var values0 = new Float32Array(n * m), - values1 = new Float32Array(n * m); - - data.forEach(function(d, i, data) { - var xi = (+x(d, i, data) + o) >> k, - yi = (+y(d, i, data) + o) >> k, - wi = +weight(d, i, data); - if (xi >= 0 && xi < n && yi >= 0 && yi < m) { - values0[xi + yi * n] += wi; - } - }); - - // TODO Optimize. - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - - var tz = threshold(values0); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var stop = max(values0); - tz = tickStep(0, stop, tz); - tz = sequence(0, Math.floor(stop / tz) * tz, tz); - tz.shift(); - } - - return contours() - .thresholds(tz) - .size([n, m]) - (values0) - .map(transform); - } - - function transform(geometry) { - geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel. - geometry.coordinates.forEach(transformPolygon); - return geometry; - } - - function transformPolygon(coordinates) { - coordinates.forEach(transformRing); - } - - function transformRing(coordinates) { - coordinates.forEach(transformPoint); - } - - // TODO Optimize. - function transformPoint(coordinates) { - coordinates[0] = coordinates[0] * Math.pow(2, k) - o; - coordinates[1] = coordinates[1] * Math.pow(2, k) - o; - } - - function resize() { - o = r * 3; - n = (dx + o * 2) >> k; - m = (dy + o * 2) >> k; - return density; - } - - density.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$6(+_), density) : x; - }; - - density.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$6(+_), density) : y; - }; - - density.weight = function(_) { - return arguments.length ? (weight = typeof _ === "function" ? _ : constant$6(+_), density) : weight; - }; - - density.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 >= 0) && !(_0 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, resize(); - }; - - density.cellSize = function(_) { - if (!arguments.length) return 1 << k; - if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); - return k = Math.floor(Math.log(_) / Math.LN2), resize(); - }; - - density.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), density) : threshold; - }; - - density.bandwidth = function(_) { - if (!arguments.length) return Math.sqrt(r * (r + 1)); - if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); - return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize(); - }; - - return density; -} - -var EOL = {}, - EOF = {}, - QUOTE = 34, - NEWLINE = 10, - RETURN = 13; - -function objectConverter(columns) { - return new Function("d", "return {" + columns.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "] || \"\""; - }).join(",") + "}"); -} - -function customConverter(columns, f) { - var object = objectConverter(columns); - return function(row, i) { - return f(object(row), i, columns); - }; -} - -// Compute unique columns in order of discovery. -function inferColumns(rows) { - var columnSet = Object.create(null), - columns = []; - - rows.forEach(function(row) { - for (var column in row) { - if (!(column in columnSet)) { - columns.push(columnSet[column] = column); - } - } - }); - - return columns; -} - -function pad(value, width) { - var s = value + "", length = s.length; - return length < width ? new Array(width - length + 1).join(0) + s : s; -} - -function formatYear(year) { - return year < 0 ? "-" + pad(-year, 6) - : year > 9999 ? "+" + pad(year, 6) - : pad(year, 4); -} - -function formatDate(date) { - var hours = date.getUTCHours(), - minutes = date.getUTCMinutes(), - seconds = date.getUTCSeconds(), - milliseconds = date.getUTCMilliseconds(); - return isNaN(date) ? "Invalid Date" - : formatYear(date.getUTCFullYear()) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2) - + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z" - : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z" - : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z" - : ""); -} - -function dsvFormat(delimiter) { - var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), - DELIMITER = delimiter.charCodeAt(0); - - function parse(text, f) { - var convert, columns, rows = parseRows(text, function(row, i) { - if (convert) return convert(row, i - 1); - columns = row, convert = f ? customConverter(row, f) : objectConverter(row); - }); - rows.columns = columns || []; - return rows; - } - - function parseRows(text, f) { - var rows = [], // output rows - N = text.length, - I = 0, // current character index - n = 0, // current line number - t, // current token - eof = N <= 0, // current token followed by EOF? - eol = false; // current token followed by EOL? - - // Strip the trailing newline. - if (text.charCodeAt(N - 1) === NEWLINE) --N; - if (text.charCodeAt(N - 1) === RETURN) --N; - - function token() { - if (eof) return EOF; - if (eol) return eol = false, EOL; - - // Unescape quotes. - var i, j = I, c; - if (text.charCodeAt(j) === QUOTE) { - while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); - if ((i = I) >= N) eof = true; - else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - return text.slice(j + 1, i - 1).replace(/""/g, "\""); - } - - // Find next delimiter or newline. - while (I < N) { - if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - else if (c !== DELIMITER) continue; - return text.slice(j, i); - } - - // Return last token before EOF. - return eof = true, text.slice(j, N); - } - - while ((t = token()) !== EOF) { - var row = []; - while (t !== EOL && t !== EOF) row.push(t), t = token(); - if (f && (row = f(row, n++)) == null) continue; - rows.push(row); - } - - return rows; - } - - function preformatBody(rows, columns) { - return rows.map(function(row) { - return columns.map(function(column) { - return formatValue(row[column]); - }).join(delimiter); - }); - } - - function format(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); - } - - function formatBody(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return preformatBody(rows, columns).join("\n"); - } - - function formatRows(rows) { - return rows.map(formatRow).join("\n"); - } - - function formatRow(row) { - return row.map(formatValue).join(delimiter); - } - - function formatValue(value) { - return value == null ? "" - : value instanceof Date ? formatDate(value) - : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" - : value; - } - - return { - parse: parse, - parseRows: parseRows, - format: format, - formatBody: formatBody, - formatRows: formatRows, - formatRow: formatRow, - formatValue: formatValue - }; -} - -var csv = dsvFormat(","); - -var csvParse = csv.parse; -var csvParseRows = csv.parseRows; -var csvFormat = csv.format; -var csvFormatBody = csv.formatBody; -var csvFormatRows = csv.formatRows; -var csvFormatRow = csv.formatRow; -var csvFormatValue = csv.formatValue; - -var tsv = dsvFormat("\t"); - -var tsvParse = tsv.parse; -var tsvParseRows = tsv.parseRows; -var tsvFormat = tsv.format; -var tsvFormatBody = tsv.formatBody; -var tsvFormatRows = tsv.formatRows; -var tsvFormatRow = tsv.formatRow; -var tsvFormatValue = tsv.formatValue; - -function autoType(object) { - for (var key in object) { - var value = object[key].trim(), number, m; - if (!value) value = null; - else if (value === "true") value = true; - else if (value === "false") value = false; - else if (value === "NaN") value = NaN; - else if (!isNaN(number = +value)) value = number; - else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) { - if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " "); - value = new Date(value); - } - else continue; - object[key] = value; - } - return object; -} - -// https://github.com/d3/d3-dsv/issues/45 -var fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours(); - -function responseBlob(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.blob(); -} - -function blob(input, init) { - return fetch(input, init).then(responseBlob); -} - -function responseArrayBuffer(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.arrayBuffer(); -} - -function buffer(input, init) { - return fetch(input, init).then(responseArrayBuffer); -} - -function responseText(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.text(); -} - -function text(input, init) { - return fetch(input, init).then(responseText); -} - -function dsvParse(parse) { - return function(input, init, row) { - if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; - return text(input, init).then(function(response) { - return parse(response, row); - }); - }; -} - -function dsv(delimiter, input, init, row) { - if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; - var format = dsvFormat(delimiter); - return text(input, init).then(function(response) { - return format.parse(response, row); - }); -} - -var csv$1 = dsvParse(csvParse); -var tsv$1 = dsvParse(tsvParse); - -function image(input, init) { - return new Promise(function(resolve, reject) { - var image = new Image; - for (var key in init) image[key] = init[key]; - image.onerror = reject; - image.onload = function() { resolve(image); }; - image.src = input; - }); -} - -function responseJson(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.json(); -} - -function json(input, init) { - return fetch(input, init).then(responseJson); -} - -function parser(type) { - return function(input, init) { - return text(input, init).then(function(text) { - return (new DOMParser).parseFromString(text, type); - }); - }; -} - -var xml = parser("application/xml"); - -var html = parser("text/html"); - -var svg = parser("image/svg+xml"); - -function center$1(x, y) { - var nodes; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function constant$7(x) { - return function() { - return x; - }; -} - -function jiggle() { - return (Math.random() - 0.5) * 1e-6; -} - -function tree_add(d) { - var x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); -} - -function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; -} - -function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; -} - -function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} - -function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; -} - -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; -} - -function tree_root() { - return this._root; -} - -function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; -} - -function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; -} - -function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -function defaultX$1(d) { - return d[0]; -} - -function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -function defaultY$1(d) { - return d[1]; -} - -function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX$1 : x, y == null ? defaultY$1 : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = tree_add; -treeProto.addAll = addAll; -treeProto.cover = tree_cover; -treeProto.data = tree_data; -treeProto.extent = tree_extent; -treeProto.find = tree_find; -treeProto.remove = tree_remove; -treeProto.removeAll = removeAll; -treeProto.root = tree_root; -treeProto.size = tree_size; -treeProto.visit = tree_visit; -treeProto.visitAfter = tree_visitAfter; -treeProto.x = tree_x; -treeProto.y = tree_y; - -function x(d) { - return d.x + d.vx; -} - -function y(d) { - return d.y + d.vy; -} - -function collide(radius) { - var nodes, - radii, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant$7(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x, y).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - return force; -} - -function index(d) { - return d.index; -} - -function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("missing: " + nodeId); - return node; -} - -function link(links) { - var id = index, - strength = defaultStrength, - strengths, - distance = constant$7(30), - distances, - nodes, - count, - bias, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(); - y = target.y + target.vy - source.y - source.vy || jiggle(); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = map$1(nodes, id), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant$7(+_), initializeDistance(), force) : distance; - }; - - return force; -} - -function x$1(d) { - return d.x; -} - -function y$1(d) { - return d.y; -} - -var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - -function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = map$1(), - stepper = timer(step), - event = dispatch("tick", "end"); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.each(function (force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -function manyBody() { - var nodes, - node, - alpha, - strength = constant$7(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} - -function radial(radius, x, y) { - var nodes, - strength = constant$7(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant$7(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function x$2(x) { - var strength = constant$7(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant$7(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : x; - }; - - return force; -} - -function y$2(y) { - var strength = constant$7(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant$7(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : y; - }; - - return force; -} - -// Computes the decimal coefficient and exponent of the specified number x with -// significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimal(1.23) returns ["123", 0]. -function formatDecimal(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity - var i, coefficient = x.slice(0, i); - - // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ - // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; -} - -function exponent$1(x) { - return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; -} - -function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, - t = [], - j = 0, - g = grouping[0], - length = 0; - - while (i > 0 && g > 0) { - if (length + g + 1 > width) g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - - return t.reverse().join(thousands); - }; -} - -function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// [[fill]align][sign][symbol][0][width][,][.precision][~][type] -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; - -function formatSpecifier(specifier) { - if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} - -formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof - -function FormatSpecifier(specifier) { - this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; - this.align = specifier.align === undefined ? ">" : specifier.align + ""; - this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === undefined ? undefined : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === undefined ? undefined : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === undefined ? "" : specifier.type + ""; -} - -FormatSpecifier.prototype.toString = function() { - return this.fill - + this.align - + this.sign - + this.symbol - + (this.zero ? "0" : "") - + (this.width === undefined ? "" : Math.max(1, this.width | 0)) - + (this.comma ? "," : "") - + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) - + (this.trim ? "~" : "") - + this.type; -}; - -// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. -function formatTrim(s) { - out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": i0 = i1 = i; break; - case "0": if (i0 === 0) i0 = i; i1 = i; break; - default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; -} - -var prefixExponent; - -function formatPrefixAuto(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1], - i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, - n = coefficient.length; - return i === n ? coefficient - : i > n ? coefficient + new Array(i - n + 1).join("0") - : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! -} - -function formatRounded(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient - : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) - : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -var formatTypes = { - "%": function(x, p) { return (x * 100).toFixed(p); }, - "b": function(x) { return Math.round(x).toString(2); }, - "c": function(x) { return x + ""; }, - "d": function(x) { return Math.round(x).toString(10); }, - "e": function(x, p) { return x.toExponential(p); }, - "f": function(x, p) { return x.toFixed(p); }, - "g": function(x, p) { return x.toPrecision(p); }, - "o": function(x) { return Math.round(x).toString(8); }, - "p": function(x, p) { return formatRounded(x * 100, p); }, - "r": formatRounded, - "s": formatPrefixAuto, - "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, - "x": function(x) { return Math.round(x).toString(16); } -}; - -function identity$3(x) { - return x; -} - -var map$2 = Array.prototype.map, - prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]; - -function formatLocale(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$3 : formatGroup(map$2.call(locale.grouping, Number), locale.thousands + ""), - currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", - currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", - decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$3 : formatNumerals(map$2.call(locale.numerals, String)), - percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "-" : locale.minus + "", - nan = locale.nan === undefined ? "NaN" : locale.nan + ""; - - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - - var fill = specifier.fill, - align = specifier.align, - sign = specifier.sign, - symbol = specifier.symbol, - zero = specifier.zero, - width = specifier.width, - comma = specifier.comma, - precision = specifier.precision, - trim = specifier.trim, - type = specifier.type; - - // The "n" type is an alias for ",g". - if (type === "n") comma = true, type = "g"; - - // The "" type, and any invalid type, is an alias for ".12~g". - else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; - - // If zero fill is specified, padding goes after sign and before digits. - if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; - - // Compute the prefix and suffix. - // For SI-prefix, the suffix is lazily computed. - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", - suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - - // What format function should we use? - // Is this an integer type? - // Can this type generate exponential notation? - var formatType = formatTypes[type], - maybeSuffix = /[defgprs%]/.test(type); - - // Set the default precision if not specified, - // or clamp the specified precision to the supported range. - // For significant precision, it must be in [1, 21]. - // For fixed precision, it must be in [0, 20]. - precision = precision === undefined ? 6 - : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) - : Math.max(0, Math.min(20, precision)); - - function format(value) { - var valuePrefix = prefix, - valueSuffix = suffix, - i, n, c; - - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - - // Determine the sign. -0 is not less than 0, but 1 / -0 is! - var valueNegative = value < 0 || 1 / value < 0; - - // Perform the initial formatting. - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - - // Trim insignificant zeros. - if (trim) value = formatTrim(value); - - // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. - if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; - - // Compute the prefix and suffix. - valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - - // Break the formatted value into the integer “value” part that can be - // grouped, and fractional or exponential “suffix” part that is not. - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - - // If the fill character is not "0", grouping is applied before padding. - if (comma && !zero) value = group(value, Infinity); - - // Compute the padding. - var length = valuePrefix.length + value.length + valueSuffix.length, - padding = length < width ? new Array(width - length + 1).join(fill) : ""; - - // If the fill character is "0", grouping is applied after padding. - if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - - // Reconstruct the final output based on the desired alignment. - switch (align) { - case "<": value = valuePrefix + value + valueSuffix + padding; break; - case "=": value = valuePrefix + padding + value + valueSuffix; break; - case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; - default: value = padding + valuePrefix + value + valueSuffix; break; - } - - return numerals(value); - } - - format.toString = function() { - return specifier + ""; - }; - - return format; - } - - function formatPrefix(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), - e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3, - k = Math.pow(10, -e), - prefix = prefixes[8 + e / 3]; - return function(value) { - return f(k * value) + prefix; - }; - } - - return { - format: newFormat, - formatPrefix: formatPrefix - }; -} - -var locale; - -defaultLocale({ - decimal: ".", - thousands: ",", - grouping: [3], - currency: ["$", ""], - minus: "-" -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - exports.format = locale.format; - exports.formatPrefix = locale.formatPrefix; - return locale; -} - -function precisionFixed(step) { - return Math.max(0, -exponent$1(Math.abs(step))); -} - -function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step))); -} - -function precisionRound(step, max) { - step = Math.abs(step), max = Math.abs(max) - step; - return Math.max(0, exponent$1(max) - exponent$1(step)) + 1; -} - -// Adds floating point numbers with twice the normal precision. -// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and -// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) -// 305–363 (1997). -// Code adapted from GeographicLib by Charles F. F. Karney, -// http://geographiclib.sourceforge.net/ - -function adder() { - return new Adder; -} - -function Adder() { - this.reset(); -} - -Adder.prototype = { - constructor: Adder, - reset: function() { - this.s = // rounded value - this.t = 0; // exact error - }, - add: function(y) { - add$1(temp, y, this.t); - add$1(this, temp.s, this.s); - if (this.s) this.t += temp.t; - else this.s = temp.t; - }, - valueOf: function() { - return this.s; - } -}; - -var temp = new Adder; - -function add$1(adder, a, b) { - var x = adder.s = a + b, - bv = x - a, - av = x - bv; - adder.t = (a - av) + (b - bv); -} - -var epsilon$2 = 1e-6; -var epsilon2$1 = 1e-12; -var pi$3 = Math.PI; -var halfPi$2 = pi$3 / 2; -var quarterPi = pi$3 / 4; -var tau$3 = pi$3 * 2; - -var degrees$1 = 180 / pi$3; -var radians = pi$3 / 180; - -var abs = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos$1 = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin$1 = Math.sin; -var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt = Math.sqrt; -var tan = Math.tan; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x); -} - -function asin(x) { - return x > 1 ? halfPi$2 : x < -1 ? -halfPi$2 : Math.asin(x); -} - -function haversin(x) { - return (x = sin$1(x / 2)) * x; -} - -function noop$2() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum = adder(); - -var areaSum = adder(), - lambda00, - phi00, - lambda0, - cosPhi0, - sinPhi0; - -var areaStream = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaRingSum.reset(); - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - var areaRing = +areaRingSum; - areaSum.add(areaRing < 0 ? tau$3 + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop$2; - }, - sphere: function() { - areaSum.add(tau$3); - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaRingEnd() { - areaPoint(lambda00, phi00); -} - -function areaPointFirst(lambda, phi) { - areaStream.point = areaPoint; - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi); -} - -function areaPoint(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos$1(phi), - sinPhi = sin$1(phi), - k = sinPhi0 * sinPhi, - u = cosPhi0 * cosPhi + k * cos$1(adLambda), - v = k * sdLambda * sin$1(adLambda); - areaRingSum.add(atan2(v, u)); - - // Advance the previous points. - lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; -} - -function area$1(object) { - areaSum.reset(); - geoStream(object, areaStream); - return areaSum * 2; -} - -function spherical(cartesian) { - return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); - return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum = adder(), - ranges, - range; - -var boundsStream = { - point: boundsPoint, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream.point = boundsRingPoint; - boundsStream.lineStart = boundsRingStart; - boundsStream.lineEnd = boundsRingEnd; - deltaSum.reset(); - areaStream.polygonStart(); - }, - polygonEnd: function() { - areaStream.polygonEnd(); - boundsStream.point = boundsPoint; - boundsStream.lineStart = boundsLineStart; - boundsStream.lineEnd = boundsLineEnd; - if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon$2) phi1 = 90; - else if (deltaSum < -epsilon$2) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees$1 * sign, - phii, - antimeridian = abs(delta) > 180; - if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = inflection[1] * degrees$1; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = -inflection[1] * degrees$1; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream.point = boundsPoint; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream.lineEnd(); - if (abs(deltaSum) > epsilon$2) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0, Y0, Z0, - X1, Y1, Z1, - X2, Y2, Z2, - lambda00$2, phi00$2, // first point - x0, y0, z0; // previous point - -var centroidStream = { - sphere: noop$2, - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0 += (x - X0) / W0; - Y0 += (y - Y0) / W0; - Z0 += (z - Z0) / W0; -} - -function centroidLineStart() { - centroidStream.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidStream.point = centroidLinePoint; - centroidPointCartesian(x0, y0, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart() { - centroidStream.point = centroidRingPointFirst; -} - -function centroidRingEnd() { - centroidRingPoint(lambda00$2, phi00$2); - centroidStream.point = centroidPoint; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - centroidStream.point = centroidRingPoint; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidPointCartesian(x0, y0, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - cx = y0 * z - z0 * y, - cy = z0 * x - x0 * z, - cz = x0 * y - y0 * x, - m = sqrt(cx * cx + cy * cy + cz * cz), - w = asin(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2 += v * cx; - Y2 += v * cy; - Z2 += v * cz; - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroid(object) { - W0 = W1 = - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - geoStream(object, centroidStream); - - var x = X2, - y = Y2, - z = Z2, - m = x * x + y * y + z * z; - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2$1) { - x = X1, y = Y1, z = Z1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon$2) x = X0, y = Y0, z = Z0; - m = x * x + y * y + z * z; - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2$1) return [NaN, NaN]; - } - - return [atan2(y, x) * degrees$1, asin(z / sqrt(m)) * degrees$1]; -} - -function constant$8(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - return [abs(lambda) > pi$3 ? lambda + Math.round(-lambda / tau$3) * tau$3 : lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau$3) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - return lambda += deltaLambda, [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos$1(deltaPhi), - sinDeltaPhi = sin$1(deltaPhi), - cosDeltaGamma = cos$1(deltaGamma), - sinDeltaGamma = sin$1(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos$1(radius), - sinRadius = sin$1(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau$3; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$3; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau$3 - epsilon$2) % tau$3; -} - -function circle() { - var center = constant$8([0, 0]), - radius = constant$8(90), - precision = constant$8(6), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees$1, x[1] *= degrees$1; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant$8([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$8(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant$8(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y) { - line.push([x, y]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop$2, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs(a[0] - b[0]) < epsilon$2 && abs(a[1] - b[1]) < epsilon$2; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - // If the first and last points of a segment are coincident, then treat as a - // closed ring. TODO if all rings are closed, then the winding order of the - // exterior ring should be checked. - if (pointEqual(p0, p1)) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link$1(subject); - link$1(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link$1(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -var sum$1 = adder(); - -function longitude(point) { - if (abs(point[0]) <= pi$3) - return point[0]; - else - return sign(point[0]) * ((abs(point[0]) + pi$3) % tau$3 - pi$3); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin$1(phi), - normal = [sin$1(lambda), -cos$1(lambda), 0], - angle = 0, - winding = 0; - - sum$1.reset(); - - if (sinPhi === 1) phi = halfPi$2 + epsilon$2; - else if (sinPhi === -1) phi = -halfPi$2 - epsilon$2; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin$1(phi0), - cosPhi0 = cos$1(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin$1(phi1), - cosPhi1 = cos$1(phi1), - delta = lambda1 - lambda0, - sign = delta >= 0 ? 1 : -1, - absDelta = sign * delta, - antimeridian = absDelta > pi$3, - k = sinPhi0 * sinPhi1; - - sum$1.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); - angle += antimeridian ? delta + sign * tau$3 : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi$2 - epsilon$2 : halfPi$2 - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi$2 - epsilon$2 : halfPi$2 - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi$3, -halfPi$2] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi$3 : -pi$3, - delta = abs(lambda1 - lambda0); - if (abs(delta - pi$3) < epsilon$2) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$2 : -halfPi$2); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi$3) { // line crosses antimeridian - if (abs(lambda0 - sign0) < epsilon$2) lambda0 -= sign0 * epsilon$2; // handle degeneracies - if (abs(lambda1 - sign1) < epsilon$2) lambda1 -= sign1 * epsilon$2; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin$1(lambda0 - lambda1); - return abs(sinLambda0Lambda1) > epsilon$2 - ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi$2; - stream.point(-pi$3, phi); - stream.point(0, phi); - stream.point(pi$3, phi); - stream.point(pi$3, 0); - stream.point(pi$3, -phi); - stream.point(0, -phi); - stream.point(-pi$3, -phi); - stream.point(-pi$3, 0); - stream.point(-pi$3, phi); - } else if (abs(from[0] - to[0]) > epsilon$2) { - var lambda = from[0] < to[0] ? pi$3 : -pi$3; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos$1(radius), - delta = 6 * radians, - smallRadius = cr > 0, - notHemisphere = abs(cr) > epsilon$2; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos$1(lambda) * cos$1(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi$3 : -pi$3), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - // Handle degeneracies. - // TODO ignore if not clipping polygons. - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { - point1[0] += epsilon$2; - point1[1] += epsilon$2; - v = visible(point1[0], point1[1]); - } - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1]); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs(delta - pi$3) < epsilon$2, - meridian = polar || delta < epsilon$2; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$2 ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi$3 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi$3 - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$3, radius - pi$3]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs(p[0] - x0) < epsilon$2 ? direction > 0 ? 0 : 3 - : abs(p[0] - x1) < epsilon$2 ? direction > 0 ? 2 : 1 - : abs(p[1] - y0) < epsilon$2 ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent$1() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum = adder(), - lambda0$2, - sinPhi0$1, - cosPhi0$1; - -var lengthStream = { - sphere: noop$2, - point: noop$2, - lineStart: lengthLineStart, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2 -}; - -function lengthLineStart() { - lengthStream.point = lengthPointFirst; - lengthStream.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream.point = lengthStream.lineEnd = noop$2; -} - -function lengthPointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi); - lengthStream.point = lengthPoint; -} - -function lengthPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin$1(phi), - cosPhi = cos$1(phi), - delta = abs(lambda - lambda0$2), - cosDelta = cos$1(delta), - sinDelta = sin$1(delta), - x = cosPhi * sinDelta, - y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, - z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; - lengthSum.add(atan2(sqrt(x * x + y * y), z)); - lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; -} - -function length$1(object) { - lengthSum.reset(); - geoStream(object, lengthStream); - return +lengthSum; -} - -var coordinates = [null, null], - object$1 = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length$1(object$1); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2$1 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains$1(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = sequence(y0, y1 - epsilon$2, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = sequence(x0, x1 - epsilon$2, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return sequence(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(sequence(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(sequence(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$2; }).map(x)) - .concat(sequence(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$2; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon$2], [180, 90 - epsilon$2]]) - .extentMinor([[-180, -80 - epsilon$2], [180, 80 + epsilon$2]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate$1(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos$1(y0), - sy0 = sin$1(y0), - cy1 = cos$1(y1), - sy1 = sin$1(y1), - kx0 = cy0 * cos$1(x0), - ky0 = cy0 * sin$1(x0), - kx1 = cy1 * cos$1(x1), - ky1 = cy1 * sin$1(x1), - d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin$1(d); - - var interpolate = d ? function(t) { - var B = sin$1(t *= d) / k, - A = sin$1(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2(y, x) * degrees$1, - atan2(z, sqrt(x * x + y * y)) * degrees$1 - ]; - } : function() { - return [x0 * degrees$1, y0 * degrees$1]; - }; - - interpolate.distance = d; - - return interpolate; -} - -function identity$4(x) { - return x; -} - -var areaSum$1 = adder(), - areaRingSum$1 = adder(), - x00, - y00, - x0$1, - y0$1; - -var areaStream$1 = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$2; - areaSum$1.add(abs(areaRingSum$1)); - areaRingSum$1.reset(); - }, - result: function() { - var area = areaSum$1 / 2; - areaSum$1.reset(); - return area; - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaPointFirst$1(x, y) { - areaStream$1.point = areaPoint$1; - x00 = x0$1 = x, y00 = y0$1 = y; -} - -function areaPoint$1(x, y) { - areaRingSum$1.add(y0$1 * x - x0$1 * y); - x0$1 = x, y0$1 = y; -} - -function areaRingEnd$1() { - areaPoint$1(x00, y00); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint$1(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0$1 = 0, - Y0$1 = 0, - Z0$1 = 0, - X1$1 = 0, - Y1$1 = 0, - Z1$1 = 0, - X2$1 = 0, - Y2$1 = 0, - Z2$1 = 0, - x00$1, - y00$1, - x0$3, - y0$3; - -var centroidStream$1 = { - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.point = centroidPoint$1; - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - }, - result: function() { - var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] - : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] - : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] - : [NaN, NaN]; - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = - X2$1 = Y2$1 = Z2$1 = 0; - return centroid; - } -}; - -function centroidPoint$1(x, y) { - X0$1 += x; - Y0$1 += y; - ++Z0$1; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream$1.point = centroidPointLine; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingStart$1() { - centroidStream$1.point = centroidPointFirstRing; -} - -function centroidRingEnd$1() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream$1.point = centroidPointRing; - centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$3, - dy = y - y0$3, - z = sqrt(dx * dx + dy * dy); - - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - - z = y0$3 * x - x0$3 * y; - X2$1 += z * (x0$3 + x); - Y2$1 += z * (y0$3 + y); - Z2$1 += z * 3; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau$3); - break; - } - } - }, - result: noop$2 -}; - -var lengthSum$1 = adder(), - lengthRing, - x00$2, - y00$2, - x0$4, - y0$4; - -var lengthStream$1 = { - point: noop$2, - lineStart: function() { - lengthStream$1.point = lengthPointFirst$1; - }, - lineEnd: function() { - if (lengthRing) lengthPoint$1(x00$2, y00$2); - lengthStream$1.point = noop$2; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum$1; - lengthSum$1.reset(); - return length; - } -}; - -function lengthPointFirst$1(x, y) { - lengthStream$1.point = lengthPoint$1; - x00$2 = x0$4 = x, y00$2 = y0$4 = y; -} - -function lengthPoint$1(x, y) { - x0$4 -= x, y0$4 -= y; - lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); - x0$4 = x, y0$4 = y; -} - -function PathString() { - this._string = []; -} - -PathString.prototype = { - _radius: 4.5, - _circle: circle$1(4.5), - pointRadius: function(_) { - if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; - return this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._string.push("Z"); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._string.push("M", x, ",", y); - this._point = 1; - break; - } - case 1: { - this._string.push("L", x, ",", y); - break; - } - default: { - if (this._circle == null) this._circle = circle$1(this._radius); - this._string.push("M", x, ",", y, this._circle); - break; - } - } - }, - result: function() { - if (this._string.length) { - var result = this._string.join(""); - this._string = []; - return result; - } else { - return null; - } - } -}; - -function circle$1(radius) { - return "m0," + radius - + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius - + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius - + "z"; -} - -function index$1(projection, context) { - var pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream$1)); - return areaStream$1.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream$1)); - return lengthStream$1.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream$1)); - return boundsStream$1.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream$1)); - return centroidStream$1.result(); - }; - - path.projection = function(_) { - return arguments.length ? (projectionStream = _ == null ? (projection = null, identity$4) : (projection = _).stream, path) : projection; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - return path.projection(projection).context(context); -} - -function transform(methods) { - return { - stream: transformer(methods) - }; -} - -function transformer(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream$1)); - fitBounds(boundsStream$1.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt(a * a + b * b + c * c), - phi2 = asin(c /= m), - lambda2 = abs(abs(c) - 1) < epsilon$2 || abs(lambda0 - lambda1) < epsilon$2 ? (lambda0 + lambda1) / 2 : atan2(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy) { - function transform(x, y) { - return [dx + k * x, dy - k * y]; - } - transform.invert = function(x, y) { - return [(x - dx) / k, (dy - y) / k]; - }; - return transform; -} - -function scaleTranslateRotate(k, dx, dy, alpha) { - var cosAlpha = cos$1(alpha), - sinAlpha = sin$1(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform(x, y) { - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform.invert = function(x, y) { - return [ai * x - bi * y + ci, fi - bi * x - ai * y]; - }; - return transform; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity$4, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees$1, point[1] * degrees$1]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees$1; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), - transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi$3 / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos$1(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs(n) < epsilon$2) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; - - function project(x, y) { - var r = sqrt(c - 2 * n * sin$1(y)) / n; - return [r * sin$1(x *= n), r0 - r * cos$1(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y; - return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon$2, y + 0.120 * k + epsilon$2], [x - 0.214 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon$2, y + 0.166 * k + epsilon$2], [x - 0.115 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos$1(x), - cy = cos$1(y), - k = scale(cx * cy); - return [ - k * cy * sin$1(x), - k * sin$1(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt(x * x + y * y), - c = angle(z), - sc = sin$1(c), - cc = cos$1(c); - return [ - atan2(x * sc, z * cc), - asin(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos(c)) && c / sin$1(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi$2 + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi$2]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau$3); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi$3 * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi$2 + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : log(cy0 / cos$1(y1)) / log(tany(y1) / tany(y0)), - f = cy0 * pow(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi$2 + epsilon$2) y = -halfPi$2 + epsilon$2; } - else { if (y > halfPi$2 - epsilon$2) y = halfPi$2 - epsilon$2; } - var r = f / pow(tany(y), n); - return [r * sin$1(n * x), f - r * cos$1(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); - return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs(n) < epsilon$2) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin$1(nx), g - gy * cos$1(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y; - return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M = sqrt(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin$1(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos$1(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs(delta) < epsilon2$1) break; - } - return [ - M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), - asin(sin$1(l) / M) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos$1(y), k = cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function scaleTranslate$1(kx, ky, tx, ty) { - return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$4 : transformer({ - point: function(x, y) { - this.stream.point(x * kx + tx, y * ky + ty); - } - }); -} - -function identity$5() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity$4, // scale, translate and reflect - x0 = null, y0, x1, y1, // clip extent - postclip = identity$4, - cache, - cacheStream, - projection; - - function reset() { - cache = cacheStream = null; - return projection; - } - - return projection = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream)); - }, - postclip: function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }, - clipExtent: function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }, - scale: function(_) { - return arguments.length ? (transform = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; - }, - translate: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; - }, - reflectX: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; - }, - reflectY: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; - }, - fitExtent: function(extent, object) { - return fitExtent(projection, extent, object); - }, - fitSize: function(size, object) { - return fitSize(projection, size, object); - }, - fitWidth: function(width, object) { - return fitWidth(projection, width, object); - }, - fitHeight: function(height, object) { - return fitHeight(projection, height, object); - } - }; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs(delta) > epsilon$2 && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos$1(y) * sin$1(x), sin$1(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon$2); -} - -function stereographicRaw(x, y) { - var cy = cos$1(y), k = 1 + cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi$2 + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi$2]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -function defaultSeparation(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -function meanX(children) { - return children.reduce(meanXReduce, 0) / children.length; -} - -function meanXReduce(x, c) { - return x + c.x; -} - -function maxY(children) { - return 1 + children.reduce(maxYReduce, 0); -} - -function maxYReduce(y, c) { - return Math.max(y, c.y); -} - -function leafLeft(node) { - var children; - while (children = node.children) node = children[0]; - return node; -} - -function leafRight(node) { - var children; - while (children = node.children) node = children[children.length - 1]; - return node; -} - -function cluster() { - var separation = defaultSeparation, - dx = 1, - dy = 1, - nodeSize = false; - - function cluster(root) { - var previousNode, - x = 0; - - // First walk, computing the initial x & y values. - root.eachAfter(function(node) { - var children = node.children; - if (children) { - node.x = meanX(children); - node.y = maxY(children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - var left = leafLeft(root), - right = leafRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - return root.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root.x) * dx; - node.y = (root.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; - }); - } - - cluster.separation = function(x) { - return arguments.length ? (separation = x, cluster) : separation; - }; - - cluster.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); - }; - - cluster.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); - }; - - return cluster; -} - -function count(node) { - var sum = 0, - children = node.children, - i = children && children.length; - if (!i) sum = 1; - else while (--i >= 0) sum += children[i].value; - node.value = sum; -} - -function node_count() { - return this.eachAfter(count); -} - -function node_each(callback) { - var node = this, current, next = [node], children, i, n; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - callback(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - next.push(children[i]); - } - } - } while (next.length); - return this; -} - -function node_eachBefore(callback) { - var node = this, nodes = [node], children, i; - while (node = nodes.pop()) { - callback(node), children = node.children; - if (children) for (i = children.length - 1; i >= 0; --i) { - nodes.push(children[i]); - } - } - return this; -} - -function node_eachAfter(callback) { - var node = this, nodes = [node], next = [], children, i, n; - while (node = nodes.pop()) { - next.push(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - nodes.push(children[i]); - } - } - while (node = next.pop()) { - callback(node); - } - return this; -} - -function node_sum(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, - children = node.children, - i = children && children.length; - while (--i >= 0) sum += children[i].value; - node.value = sum; - }); -} - -function node_sort(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); -} - -function node_path(end) { - var start = this, - ancestor = leastCommonAncestor(start, end), - nodes = [start]; - while (start !== ancestor) { - start = start.parent; - nodes.push(start); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; -} - -function leastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = a.ancestors(), - bNodes = b.ancestors(), - c = null; - a = aNodes.pop(); - b = bNodes.pop(); - while (a === b) { - c = a; - a = aNodes.pop(); - b = bNodes.pop(); - } - return c; -} - -function node_ancestors() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; -} - -function node_descendants() { - var nodes = []; - this.each(function(node) { - nodes.push(node); - }); - return nodes; -} - -function node_leaves() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; -} - -function node_links() { - var root = this, links = []; - root.each(function(node) { - if (node !== root) { // Don’t include the root’s parent, if any. - links.push({source: node.parent, target: node}); - } - }); - return links; -} - -function hierarchy(data, children) { - var root = new Node(data), - valued = +data.value && (root.value = data.value), - node, - nodes = [root], - child, - childs, - i, - n; - - if (children == null) children = defaultChildren; - - while (node = nodes.pop()) { - if (valued) node.value = +node.data.value; - if ((childs = children(node.data)) && (n = childs.length)) { - node.children = new Array(n); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new Node(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - - return root.eachBefore(computeHeight); -} - -function node_copy() { - return hierarchy(this).eachBefore(copyData); -} - -function defaultChildren(d) { - return d.children; -} - -function copyData(node) { - node.data = node.data.data; -} - -function computeHeight(node) { - var height = 0; - do node.height = height; - while ((node = node.parent) && (node.height < ++height)); -} - -function Node(data) { - this.data = data; - this.depth = - this.height = 0; - this.parent = null; -} - -Node.prototype = hierarchy.prototype = { - constructor: Node, - count: node_count, - each: node_each, - eachAfter: node_eachAfter, - eachBefore: node_eachBefore, - sum: node_sum, - sort: node_sort, - path: node_path, - ancestors: node_ancestors, - descendants: node_descendants, - leaves: node_leaves, - links: node_links, - copy: node_copy -}; - -var slice$4 = Array.prototype.slice; - -function shuffle$1(array) { - var m = array.length, - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; -} - -function enclose(circles) { - var i = 0, n = (circles = shuffle$1(slice$4.call(circles))).length, B = [], p, e; - - while (i < n) { - p = circles[i]; - if (e && enclosesWeak(e, p)) ++i; - else e = encloseBasis(B = extendBasis(B, p)), i = 0; - } - - return e; -} - -function extendBasis(B, p) { - var i, j; - - if (enclosesWeakAll(p, B)) return [p]; - - // If we get here then B must have at least one element. - for (i = 0; i < B.length; ++i) { - if (enclosesNot(p, B[i]) - && enclosesWeakAll(encloseBasis2(B[i], p), B)) { - return [B[i], p]; - } - } - - // If we get here then B must have at least two elements. - for (i = 0; i < B.length - 1; ++i) { - for (j = i + 1; j < B.length; ++j) { - if (enclosesNot(encloseBasis2(B[i], B[j]), p) - && enclosesNot(encloseBasis2(B[i], p), B[j]) - && enclosesNot(encloseBasis2(B[j], p), B[i]) - && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { - return [B[i], B[j], p]; - } - } - } - - // If we get here then something is very wrong. - throw new Error; -} - -function enclosesNot(a, b) { - var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; - return dr < 0 || dr * dr < dx * dx + dy * dy; -} - -function enclosesWeak(a, b) { - var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function enclosesWeakAll(a, B) { - for (var i = 0; i < B.length; ++i) { - if (!enclosesWeak(a, B[i])) { - return false; - } - } - return true; -} - -function encloseBasis(B) { - switch (B.length) { - case 1: return encloseBasis1(B[0]); - case 2: return encloseBasis2(B[0], B[1]); - case 3: return encloseBasis3(B[0], B[1], B[2]); - } -} - -function encloseBasis1(a) { - return { - x: a.x, - y: a.y, - r: a.r - }; -} - -function encloseBasis2(a, b) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, - l = Math.sqrt(x21 * x21 + y21 * y21); - return { - x: (x1 + x2 + x21 / l * r21) / 2, - y: (y1 + y2 + y21 / l * r21) / 2, - r: (l + r1 + r2) / 2 - }; -} - -function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x3 = c.x, y3 = c.y, r3 = c.r, - a2 = x1 - x2, - a3 = x1 - x3, - b2 = y1 - y2, - b3 = y1 - y3, - c2 = r2 - r1, - c3 = r3 - r1, - d1 = x1 * x1 + y1 * y1 - r1 * r1, - d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, - d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, - ab = a3 * b2 - a2 * b3, - xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, - xb = (b3 * c2 - b2 * c3) / ab, - ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, - yb = (a2 * c3 - a3 * c2) / ab, - A = xb * xb + yb * yb - 1, - B = 2 * (r1 + xa * xb + ya * yb), - C = xa * xa + ya * ya - r1 * r1, - r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); - return { - x: x1 + xa + xb * r, - y: y1 + ya + yb * r, - r: r - }; -} - -function place(b, a, c) { - var dx = b.x - a.x, x, a2, - dy = b.y - a.y, y, b2, - d2 = dx * dx + dy * dy; - if (d2) { - a2 = a.r + c.r, a2 *= a2; - b2 = b.r + c.r, b2 *= b2; - if (a2 > b2) { - x = (d2 + b2 - a2) / (2 * d2); - y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); - c.x = b.x - x * dx - y * dy; - c.y = b.y - x * dy + y * dx; - } else { - x = (d2 + a2 - b2) / (2 * d2); - y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); - c.x = a.x + x * dx - y * dy; - c.y = a.y + x * dy + y * dx; - } - } else { - c.x = a.x + c.r; - c.y = a.y; - } -} - -function intersects(a, b) { - var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function score(node) { - var a = node._, - b = node.next._, - ab = a.r + b.r, - dx = (a.x * b.r + b.x * a.r) / ab, - dy = (a.y * b.r + b.y * a.r) / ab; - return dx * dx + dy * dy; -} - -function Node$1(circle) { - this._ = circle; - this.next = null; - this.previous = null; -} - -function packEnclose(circles) { - if (!(n = circles.length)) return 0; - - var a, b, c, n, aa, ca, i, j, k, sj, sk; - - // Place the first circle. - a = circles[0], a.x = 0, a.y = 0; - if (!(n > 1)) return a.r; - - // Place the second circle. - b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; - if (!(n > 2)) return a.r + b.r; - - // Place the third circle. - place(b, a, c = circles[2]); - - // Initialize the front-chain using the first three circles a, b and c. - a = new Node$1(a), b = new Node$1(b), c = new Node$1(c); - a.next = c.previous = b; - b.next = a.previous = c; - c.next = b.previous = a; - - // Attempt to place each remaining circle… - pack: for (i = 3; i < n; ++i) { - place(a._, b._, c = circles[i]), c = new Node$1(c); - - // Find the closest intersecting circle on the front-chain, if any. - // “Closeness” is determined by linear distance along the front-chain. - // “Ahead” or “behind” is likewise determined by linear distance. - j = b.next, k = a.previous, sj = b._.r, sk = a._.r; - do { - if (sj <= sk) { - if (intersects(j._, c._)) { - b = j, a.next = b, b.previous = a, --i; - continue pack; - } - sj += j._.r, j = j.next; - } else { - if (intersects(k._, c._)) { - a = k, a.next = b, b.previous = a, --i; - continue pack; - } - sk += k._.r, k = k.previous; - } - } while (j !== k.next); - - // Success! Insert the new circle c between a and b. - c.previous = a, c.next = b, a.next = b.previous = b = c; - - // Compute the new closest circle pair to the centroid. - aa = score(a); - while ((c = c.next) !== b) { - if ((ca = score(c)) < aa) { - a = c, aa = ca; - } - } - b = a.next; - } - - // Compute the enclosing circle of the front chain. - a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a); - - // Translate the circles to put the enclosing circle around the origin. - for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; - - return c.r; -} - -function siblings(circles) { - packEnclose(circles); - return circles; -} - -function optional(f) { - return f == null ? null : required(f); -} - -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -function constantZero() { - return 0; -} - -function constant$9(x) { - return function() { - return x; - }; -} - -function defaultRadius$1(d) { - return Math.sqrt(d.value); -} - -function index$2() { - var radius = null, - dx = 1, - dy = 1, - padding = constantZero; - - function pack(root) { - root.x = dx / 2, root.y = dy / 2; - if (radius) { - root.eachBefore(radiusLeaf(radius)) - .eachAfter(packChildren(padding, 0.5)) - .eachBefore(translateChild(1)); - } else { - root.eachBefore(radiusLeaf(defaultRadius$1)) - .eachAfter(packChildren(constantZero, 1)) - .eachAfter(packChildren(padding, root.r / Math.min(dx, dy))) - .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); - } - return root; - } - - pack.radius = function(x) { - return arguments.length ? (radius = optional(x), pack) : radius; - }; - - pack.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; - }; - - pack.padding = function(x) { - return arguments.length ? (padding = typeof x === "function" ? x : constant$9(+x), pack) : padding; - }; - - return pack; -} - -function radiusLeaf(radius) { - return function(node) { - if (!node.children) { - node.r = Math.max(0, +radius(node) || 0); - } - }; -} - -function packChildren(padding, k) { - return function(node) { - if (children = node.children) { - var children, - i, - n = children.length, - r = padding(node) * k || 0, - e; - - if (r) for (i = 0; i < n; ++i) children[i].r += r; - e = packEnclose(children); - if (r) for (i = 0; i < n; ++i) children[i].r -= r; - node.r = e + r; - } - }; -} - -function translateChild(k) { - return function(node) { - var parent = node.parent; - node.r *= k; - if (parent) { - node.x = parent.x + k * node.x; - node.y = parent.y + k * node.y; - } - }; -} - -function roundNode(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); -} - -function treemapDice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (x1 - x0) / parent.value; - - while (++i < n) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } -} - -function partition() { - var dx = 1, - dy = 1, - padding = 0, - round = false; - - function partition(root) { - var n = root.height + 1; - root.x0 = - root.y0 = padding; - root.x1 = dx; - root.y1 = dy / n; - root.eachBefore(positionNode(dy, n)); - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(dy, n) { - return function(node) { - if (node.children) { - treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); - } - var x0 = node.x0, - y0 = node.y0, - x1 = node.x1 - padding, - y1 = node.y1 - padding; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - - partition.round = function(x) { - return arguments.length ? (round = !!x, partition) : round; - }; - - partition.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; - }; - - partition.padding = function(x) { - return arguments.length ? (padding = +x, partition) : padding; - }; - - return partition; -} - -var keyPrefix$1 = "$", // Protect against keys like “__proto__”. - preroot = {depth: -1}, - ambiguous = {}; - -function defaultId(d) { - return d.id; -} - -function defaultParentId(d) { - return d.parentId; -} - -function stratify() { - var id = defaultId, - parentId = defaultParentId; - - function stratify(data) { - var d, - i, - n = data.length, - root, - parent, - node, - nodes = new Array(n), - nodeId, - nodeKey, - nodeByKey = {}; - - for (i = 0; i < n; ++i) { - d = data[i], node = nodes[i] = new Node(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { - nodeKey = keyPrefix$1 + (node.id = nodeId); - nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node; - } - } - - for (i = 0; i < n; ++i) { - node = nodes[i], nodeId = parentId(data[i], i, data); - if (nodeId == null || !(nodeId += "")) { - if (root) throw new Error("multiple roots"); - root = node; - } else { - parent = nodeByKey[keyPrefix$1 + nodeId]; - if (!parent) throw new Error("missing: " + nodeId); - if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); - if (parent.children) parent.children.push(node); - else parent.children = [node]; - node.parent = parent; - } - } - - if (!root) throw new Error("no root"); - root.parent = preroot; - root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); - root.parent = null; - if (n > 0) throw new Error("cycle"); - - return root; - } - - stratify.id = function(x) { - return arguments.length ? (id = required(x), stratify) : id; - }; - - stratify.parentId = function(x) { - return arguments.length ? (parentId = required(x), stratify) : parentId; - }; - - return stratify; -} - -function defaultSeparation$1(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -// function radialSeparation(a, b) { -// return (a.parent === b.parent ? 1 : 2) / a.depth; -// } - -// This function is used to traverse the left contour of a subtree (or -// subforest). It returns the successor of v on this contour. This successor is -// either given by the leftmost child of v or by the thread of v. The function -// returns null if and only if v is on the highest level of its subtree. -function nextLeft(v) { - var children = v.children; - return children ? children[0] : v.t; -} - -// This function works analogously to nextLeft. -function nextRight(v) { - var children = v.children; - return children ? children[children.length - 1] : v.t; -} - -// Shifts the current subtree rooted at w+. This is done by increasing -// prelim(w+) and mod(w+) by shift. -function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; -} - -// All other shifts, applied to the smaller subtrees between w- and w+, are -// performed by this function. To prepare the shifts, we have to adjust -// change(w+), shift(w+), and change(w-). -function executeShifts(v) { - var shift = 0, - change = 0, - children = v.children, - i = children.length, - w; - while (--i >= 0) { - w = children[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } -} - -// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, -// returns the specified (default) ancestor. -function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; -} - -function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; // default ancestor - this.a = this; // ancestor - this.z = 0; // prelim - this.m = 0; // mod - this.c = 0; // change - this.s = 0; // shift - this.t = null; // thread - this.i = i; // number -} - -TreeNode.prototype = Object.create(Node.prototype); - -function treeRoot(root) { - var tree = new TreeNode(root, 0), - node, - nodes = [tree], - child, - children, - i, - n; - - while (node = nodes.pop()) { - if (children = node._.children) { - node.children = new Array(n = children.length); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children[i], i)); - child.parent = node; - } - } - } - - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; -} - -// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm -function tree() { - var separation = defaultSeparation$1, - dx = 1, - dy = 1, - nodeSize = null; - - function tree(root) { - var t = treeRoot(root); - - // Compute the layout using Buchheim et al.’s algorithm. - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - - // If a fixed node size is specified, scale x and y. - if (nodeSize) root.eachBefore(sizeNode); - - // If a fixed tree size is specified, scale x and y based on the extent. - // Compute the left-most, right-most, and depth-most nodes for extents. - else { - var left = root, - right = root, - bottom = root; - root.eachBefore(function(node) { - if (node.x < left.x) left = node; - if (node.x > right.x) right = node; - if (node.depth > bottom.depth) bottom = node; - }); - var s = left === right ? 1 : separation(left, right) / 2, - tx = s - left.x, - kx = dx / (right.x + s + tx), - ky = dy / (bottom.depth || 1); - root.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - - return root; - } - - // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is - // applied recursively to the children of v, as well as the function - // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the - // node v is placed to the midpoint of its outermost children. - function firstWalk(v) { - var children = v.children, - siblings = v.parent.children, - w = v.i ? siblings[v.i - 1] : null; - if (children) { - executeShifts(v); - var midpoint = (children[0].z + children[children.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - - // Computes all real x-coordinates by summing up the modifiers recursively. - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - - // The core of the algorithm. Here, a new subtree is combined with the - // previous subtrees. Threads are used to traverse the inside and outside - // contours of the left and right subtree up to the highest common level. The - // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the - // superscript o means outside and i means inside, the subscript - means left - // subtree and + means right subtree. For summing up the modifiers along the - // contour, we use respective variables si+, si-, so-, and so+. Whenever two - // nodes of the inside contours conflict, we compute the left one of the - // greatest uncommon ancestors using the function ANCESTOR and call MOVE - // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. - // Finally, we add a new thread (if necessary). - function apportion(v, w, ancestor) { - if (w) { - var vip = v, - vop = v, - vim = w, - vom = vip.parent.children[0], - sip = vip.m, - sop = vop.m, - sim = vim.m, - som = vom.m, - shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - - tree.separation = function(x) { - return arguments.length ? (separation = x, tree) : separation; - }; - - tree.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); - }; - - tree.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); - }; - - return tree; -} - -function treemapSlice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (y1 - y0) / parent.value; - - while (++i < n) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } -} - -var phi = (1 + Math.sqrt(5)) / 2; - -function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], - nodes = parent.children, - row, - nodeValue, - i0 = 0, - i1 = 0, - n = nodes.length, - dx, dy, - value = parent.value, - sumValue, - minValue, - maxValue, - newRatio, - minRatio, - alpha, - beta; - - while (i0 < n) { - dx = x1 - x0, dy = y1 - y0; - - // Find the next non-empty node. - do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - - // Keep adding nodes while the aspect ratio maintains or improves. - for (; i1 < n; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) minValue = nodeValue; - if (nodeValue > maxValue) maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { sumValue -= nodeValue; break; } - minRatio = newRatio; - } - - // Position and record the row orientation. - rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - - return rows; -} - -var squarify = (function custom(ratio) { - - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - - squarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return squarify; -})(phi); - -function index$3() { - var tile = squarify, - round = false, - dx = 1, - dy = 1, - paddingStack = [0], - paddingInner = constantZero, - paddingTop = constantZero, - paddingRight = constantZero, - paddingBottom = constantZero, - paddingLeft = constantZero; - - function treemap(root) { - root.x0 = - root.y0 = 0; - root.x1 = dx; - root.y1 = dy; - root.eachBefore(positionNode); - paddingStack = [0]; - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(node) { - var p = paddingStack[node.depth], - x0 = node.x0 + p, - y0 = node.y0 + p, - x1 = node.x1 - p, - y1 = node.y1 - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - - treemap.round = function(x) { - return arguments.length ? (round = !!x, treemap) : round; - }; - - treemap.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; - }; - - treemap.tile = function(x) { - return arguments.length ? (tile = required(x), treemap) : tile; - }; - - treemap.padding = function(x) { - return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); - }; - - treemap.paddingInner = function(x) { - return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$9(+x), treemap) : paddingInner; - }; - - treemap.paddingOuter = function(x) { - return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); - }; - - treemap.paddingTop = function(x) { - return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$9(+x), treemap) : paddingTop; - }; - - treemap.paddingRight = function(x) { - return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$9(+x), treemap) : paddingRight; - }; - - treemap.paddingBottom = function(x) { - return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$9(+x), treemap) : paddingBottom; - }; - - treemap.paddingLeft = function(x) { - return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$9(+x), treemap) : paddingLeft; - }; - - return treemap; -} - -function binary(parent, x0, y0, x1, y1) { - var nodes = parent.children, - i, n = nodes.length, - sum, sums = new Array(n + 1); - - for (sums[0] = sum = i = 0; i < n; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - - partition(0, n, parent.value, x0, y0, x1, y1); - - function partition(i, j, value, x0, y0, x1, y1) { - if (i >= j - 1) { - var node = nodes[i]; - node.x0 = x0, node.y0 = y0; - node.x1 = x1, node.y1 = y1; - return; - } - - var valueOffset = sums[i], - valueTarget = (value / 2) + valueOffset, - k = i + 1, - hi = j - 1; - - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) k = mid + 1; - else hi = mid; - } - - if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; - - var valueLeft = sums[k] - valueOffset, - valueRight = value - valueLeft; - - if ((x1 - x0) > (y1 - y0)) { - var xk = (x0 * valueRight + x1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, xk, y1); - partition(k, j, valueRight, xk, y0, x1, y1); - } else { - var yk = (y0 * valueRight + y1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, x1, yk); - partition(k, j, valueRight, x0, yk, x1, y1); - } - } -} - -function sliceDice(parent, x0, y0, x1, y1) { - (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); -} - -var resquarify = (function custom(ratio) { - - function resquarify(parent, x0, y0, x1, y1) { - if ((rows = parent._squarify) && (rows.ratio === ratio)) { - var rows, - row, - nodes, - i, - j = -1, - n, - m = rows.length, - value = parent.value; - - while (++j < m) { - row = rows[j], nodes = row.children; - for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; - if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value); - else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1); - value -= row.value; - } - } else { - parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); - rows.ratio = ratio; - } - } - - resquarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return resquarify; -})(phi); - -function area$2(polygon) { - var i = -1, - n = polygon.length, - a, - b = polygon[n - 1], - area = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - area += a[1] * b[0] - a[0] * b[1]; - } - - return area / 2; -} - -function centroid$1(polygon) { - var i = -1, - n = polygon.length, - x = 0, - y = 0, - a, - b = polygon[n - 1], - c, - k = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - k += c = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * c; - y += (a[1] + b[1]) * c; - } - - return k *= 3, [x / k, y / k]; -} - -// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of -// the 3D cross product in a quadrant I Cartesian coordinate system (+x is -// right, +y is up). Returns a positive value if ABC is counter-clockwise, -// negative if clockwise, and zero if the points are collinear. -function cross$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); -} - -function lexicographicOrder(a, b) { - return a[0] - b[0] || a[1] - b[1]; -} - -// Computes the upper convex hull per the monotone chain algorithm. -// Assumes points.length >= 3, is sorted by x, unique in y. -// Returns an array of indices into points in left-to-right order. -function computeUpperHullIndexes(points) { - var n = points.length, - indexes = [0, 1], - size = 2; - - for (var i = 2; i < n; ++i) { - while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; - indexes[size++] = i; - } - - return indexes.slice(0, size); // remove popped points -} - -function hull(points) { - if ((n = points.length) < 3) return null; - - var i, - n, - sortedPoints = new Array(n), - flippedPoints = new Array(n); - - for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; - sortedPoints.sort(lexicographicOrder); - for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; - - var upperIndexes = computeUpperHullIndexes(sortedPoints), - lowerIndexes = computeUpperHullIndexes(flippedPoints); - - // Construct the hull polygon, removing possible duplicate endpoints. - var skipLeft = lowerIndexes[0] === upperIndexes[0], - skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], - hull = []; - - // Add upper hull in right-to-l order. - // Then add lower hull in left-to-right order. - for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); - for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); - - return hull; -} - -function contains$2(polygon, point) { - var n = polygon.length, - p = polygon[n - 1], - x = point[0], y = point[1], - x0 = p[0], y0 = p[1], - x1, y1, - inside = false; - - for (var i = 0; i < n; ++i) { - p = polygon[i], x1 = p[0], y1 = p[1]; - if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; - x0 = x1, y0 = y1; - } - - return inside; -} - -function length$2(polygon) { - var i = -1, - n = polygon.length, - b = polygon[n - 1], - xa, - ya, - xb = b[0], - yb = b[1], - perimeter = 0; - - while (++i < n) { - xa = xb; - ya = yb; - b = polygon[i]; - xb = b[0]; - yb = b[1]; - xa -= xb; - ya -= yb; - perimeter += Math.sqrt(xa * xa + ya * ya); - } - - return perimeter; -} - -function defaultSource$1() { - return Math.random(); -} - -var uniform = (function sourceRandomUniform(source) { - function randomUniform(min, max) { - min = min == null ? 0 : +min; - max = max == null ? 1 : +max; - if (arguments.length === 1) max = min, min = 0; - else max -= min; - return function() { - return source() * max + min; - }; - } - - randomUniform.source = sourceRandomUniform; - - return randomUniform; -})(defaultSource$1); - -var normal = (function sourceRandomNormal(source) { - function randomNormal(mu, sigma) { - var x, r; - mu = mu == null ? 0 : +mu; - sigma = sigma == null ? 1 : +sigma; - return function() { - var y; - - // If available, use the second previously-generated uniform random. - if (x != null) y = x, x = null; - - // Otherwise, generate a new x and y. - else do { - x = source() * 2 - 1; - y = source() * 2 - 1; - r = x * x + y * y; - } while (!r || r > 1); - - return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); - }; - } - - randomNormal.source = sourceRandomNormal; - - return randomNormal; -})(defaultSource$1); - -var logNormal = (function sourceRandomLogNormal(source) { - function randomLogNormal() { - var randomNormal = normal.source(source).apply(this, arguments); - return function() { - return Math.exp(randomNormal()); - }; - } - - randomLogNormal.source = sourceRandomLogNormal; - - return randomLogNormal; -})(defaultSource$1); - -var irwinHall = (function sourceRandomIrwinHall(source) { - function randomIrwinHall(n) { - return function() { - for (var sum = 0, i = 0; i < n; ++i) sum += source(); - return sum; - }; - } - - randomIrwinHall.source = sourceRandomIrwinHall; - - return randomIrwinHall; -})(defaultSource$1); - -var bates = (function sourceRandomBates(source) { - function randomBates(n) { - var randomIrwinHall = irwinHall.source(source)(n); - return function() { - return randomIrwinHall() / n; - }; - } - - randomBates.source = sourceRandomBates; - - return randomBates; -})(defaultSource$1); - -var exponential$1 = (function sourceRandomExponential(source) { - function randomExponential(lambda) { - return function() { - return -Math.log(1 - source()) / lambda; - }; - } - - randomExponential.source = sourceRandomExponential; - - return randomExponential; -})(defaultSource$1); - -function initRange(domain, range) { - switch (arguments.length) { - case 0: break; - case 1: this.range(domain); break; - default: this.range(range).domain(domain); break; - } - return this; -} - -function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: break; - case 1: this.interpolator(domain); break; - default: this.interpolator(interpolator).domain(domain); break; - } - return this; -} - -var array$3 = Array.prototype; - -var map$3 = array$3.map; -var slice$5 = array$3.slice; - -var implicit = {name: "implicit"}; - -function ordinal() { - var index = map$1(), - domain = [], - range = [], - unknown = implicit; - - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = map$1(); - var i = -1, n = _.length, d, key; - while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); - return scale; - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), scale) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function band() { - var scale = ordinal().unknown(undefined), - domain = scale.domain, - ordinalRange = scale.range, - range = [0, 1], - step, - bandwidth, - round = false, - paddingInner = 0, - paddingOuter = 0, - align = 0.5; - - delete scale.unknown; - - function rescale() { - var n = domain().length, - reverse = range[1] < range[0], - start = range[reverse - 0], - stop = range[1 - reverse]; - step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start += (stop - start - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); - var values = sequence(n).map(function(i) { return start + step * i; }); - return ordinalRange(reverse ? values.reverse() : values); - } - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.range = function(_) { - return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = [+_[0], +_[1]], round = true, rescale(); - }; - - scale.bandwidth = function() { - return bandwidth; - }; - - scale.step = function() { - return step; - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - - scale.copy = function() { - return band(domain(), range) - .round(round) - .paddingInner(paddingInner) - .paddingOuter(paddingOuter) - .align(align); - }; - - return initRange.apply(rescale(), arguments); -} - -function pointish(scale) { - var copy = scale.copy; - - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - - scale.copy = function() { - return pointish(copy()); - }; - - return scale; -} - -function point$1() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -function constant$a(x) { - return function() { - return x; - }; -} - -function number$2(x) { - return +x; -} - -var unit = [0, 1]; - -function identity$6(x) { - return x; -} - -function normalize(a, b) { - return (b -= (a = +a)) - ? function(x) { return (x - a) / b; } - : constant$a(isNaN(b) ? NaN : 0.5); -} - -function clamper(domain) { - var a = domain[0], b = domain[domain.length - 1], t; - if (a > b) t = a, a = b, b = t; - return function(x) { return Math.max(a, Math.min(b, x)); }; -} - -// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. -// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. -function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x) { return r0(d0(x)); }; -} - -function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, - d = new Array(j), - r = new Array(j), - i = -1; - - // Reverse descending domains. - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - - return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; - return r[i](d[i](x)); - }; -} - -function copy(source, target) { - return target - .domain(source.domain()) - .range(source.range()) - .interpolate(source.interpolate()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function transformer$1() { - var domain = unit, - range = unit, - interpolate = interpolateValue, - transform, - untransform, - unknown, - clamp = identity$6, - piecewise, - output, - input; - - function rescale() { - piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; - output = input = null; - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); - } - - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - - scale.domain = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), clamp === identity$6 || (clamp = clamper(domain)), rescale()) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = slice$5.call(_), interpolate = interpolateRound, rescale(); - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? clamper(domain) : identity$6, scale) : clamp !== identity$6; - }; - - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; -} - -function continuous(transform, untransform) { - return transformer$1()(transform, untransform); -} - -function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), - precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; - return exports.formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return exports.format(specifier); -} - -function linearish(scale) { - var domain = scale.domain; - - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - - scale.nice = function(count) { - if (count == null) count = 10; - - var d = domain(), - i0 = 0, - i1 = d.length - 1, - start = d[i0], - stop = d[i1], - step; - - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - - step = tickIncrement(start, stop, count); - - if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - step = tickIncrement(start, stop, count); - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - step = tickIncrement(start, stop, count); - } - - if (step > 0) { - d[i0] = Math.floor(start / step) * step; - d[i1] = Math.ceil(stop / step) * step; - domain(d); - } else if (step < 0) { - d[i0] = Math.ceil(start * step) / step; - d[i1] = Math.floor(stop * step) / step; - domain(d); - } - - return scale; - }; - - return scale; -} - -function linear$2() { - var scale = continuous(identity$6, identity$6); - - scale.copy = function() { - return copy(scale, linear$2()); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); -} - -function identity$7(domain) { - var unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : x; - } - - scale.invert = scale; - - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return identity$7(domain).unknown(unknown); - }; - - domain = arguments.length ? map$3.call(domain, number$2) : [0, 1]; - - return linearish(scale); -} - -function nice(domain, interval) { - domain = domain.slice(); - - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - t; - - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; -} - -function transformLog(x) { - return Math.log(x); -} - -function transformExp(x) { - return Math.exp(x); -} - -function transformLogn(x) { - return -Math.log(-x); -} - -function transformExpn(x) { - return -Math.exp(-x); -} - -function pow10(x) { - return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; -} - -function powp(base) { - return base === 10 ? pow10 - : base === Math.E ? Math.exp - : function(x) { return Math.pow(base, x); }; -} - -function logp(base) { - return base === Math.E ? Math.log - : base === 10 && Math.log10 - || base === 2 && Math.log2 - || (base = Math.log(base), function(x) { return Math.log(x) / base; }); -} - -function reflect(f) { - return function(x) { - return -f(-x); - }; -} - -function loggish(transform) { - var scale = transform(transformLog, transformExp), - domain = scale.domain, - base = 10, - logs, - pows; - - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform(transformLogn, transformExpn); - } else { - transform(transformLog, transformExp); - } - return scale; - } - - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.ticks = function(count) { - var d = domain(), - u = d[0], - v = d[d.length - 1], - r; - - if (r = v < u) i = u, u = v, v = i; - - var i = logs(u), - j = logs(v), - p, - k, - t, - n = count == null ? 10 : +count, - z = []; - - if (!(base % 1) && j - i < n) { - i = Math.round(i) - 1, j = Math.round(j) + 1; - if (u > 0) for (; i < j; ++i) { - for (k = 1, p = pows(i); k < base; ++k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } else for (; i < j; ++i) { - for (k = base - 1, p = pows(i); k >= 1; --k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - - return r ? z.reverse() : z; - }; - - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = exports.format(specifier); - if (count === Infinity) return specifier; - if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k ? specifier(d) : ""; - }; - }; - - scale.nice = function() { - return domain(nice(domain(), { - floor: function(x) { return pows(Math.floor(logs(x))); }, - ceil: function(x) { return pows(Math.ceil(logs(x))); } - })); - }; - - return scale; -} - -function log$1() { - var scale = loggish(transformer$1()).domain([1, 10]); - - scale.copy = function() { - return copy(scale, log$1()).base(scale.base()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function transformSymlog(c) { - return function(x) { - return Math.sign(x) * Math.log1p(Math.abs(x / c)); - }; -} - -function transformSymexp(c) { - return function(x) { - return Math.sign(x) * Math.expm1(Math.abs(x)) * c; - }; -} - -function symlogish(transform) { - var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); - - scale.constant = function(_) { - return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; - }; - - return linearish(scale); -} - -function symlog() { - var scale = symlogish(transformer$1()); - - scale.copy = function() { - return copy(scale, symlog()).constant(scale.constant()); - }; - - return initRange.apply(scale, arguments); -} - -function transformPow(exponent) { - return function(x) { - return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); - }; -} - -function transformSqrt(x) { - return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); -} - -function transformSquare(x) { - return x < 0 ? -x * x : x * x; -} - -function powish(transform) { - var scale = transform(identity$6, identity$6), - exponent = 1; - - function rescale() { - return exponent === 1 ? transform(identity$6, identity$6) - : exponent === 0.5 ? transform(transformSqrt, transformSquare) - : transform(transformPow(exponent), transformPow(1 / exponent)); - } - - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - - return linearish(scale); -} - -function pow$1() { - var scale = powish(transformer$1()); - - scale.copy = function() { - return copy(scale, pow$1()).exponent(scale.exponent()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function sqrt$1() { - return pow$1.apply(null, arguments).exponent(0.5); -} - -function quantile() { - var domain = [], - range = [], - thresholds = [], - unknown; - - function rescale() { - var i = 0, n = Math.max(1, range.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = threshold(domain, i / n); - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : range[bisectRight(thresholds, x)]; - } - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return rescale(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.quantiles = function() { - return thresholds.slice(); - }; - - scale.copy = function() { - return quantile() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -function quantize$1() { - var x0 = 0, - x1 = 1, - n = 1, - domain = [0.5], - range = [0, 1], - unknown; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - function rescale() { - var i = -1; - domain = new Array(n); - while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); - return scale; - } - - scale.domain = function(_) { - return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1]; - }; - - scale.range = function(_) { - return arguments.length ? (n = (range = slice$5.call(_)).length - 1, rescale()) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] - : i < 1 ? [x0, domain[0]] - : i >= n ? [domain[n - 1], x1] - : [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : scale; - }; - - scale.thresholds = function() { - return domain.slice(); - }; - - scale.copy = function() { - return quantize$1() - .domain([x0, x1]) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(linearish(scale), arguments); -} - -function threshold$1() { - var domain = [0.5], - range = [0, 1], - unknown, - n = 1; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - scale.domain = function(_) { - return arguments.length ? (domain = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return threshold$1() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -var t0$1 = new Date, - t1$1 = new Date; - -function newInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = function(date) { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = function(date) { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = function(date) { - var d0 = interval(date), - d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = function(date, step) { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = function(test) { - return newInterval(function(date) { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, function(date, step) { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = function(start, end) { - t0$1.setTime(+start), t1$1.setTime(+end); - floori(t0$1), floori(t1$1); - return Math.floor(count(t0$1, t1$1)); - }; - - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? function(d) { return field(d) % step === 0; } - : function(d) { return interval.count(0, d) % step === 0; }); - }; - } - - return interval; -} - -var millisecond = newInterval(function() { - // noop -}, function(date, step) { - date.setTime(+date + step); -}, function(start, end) { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return newInterval(function(date) { - date.setTime(Math.floor(date / k) * k); - }, function(date, step) { - date.setTime(+date + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -var milliseconds = millisecond.range; - -var durationSecond = 1e3; -var durationMinute = 6e4; -var durationHour = 36e5; -var durationDay = 864e5; -var durationWeek = 6048e5; - -var second = newInterval(function(date) { - date.setTime(date - date.getMilliseconds()); -}, function(date, step) { - date.setTime(+date + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date) { - return date.getUTCSeconds(); -}); -var seconds = second.range; - -var minute = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getMinutes(); -}); -var minutes = minute.range; - -var hour = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getHours(); -}); -var hours = hour.range; - -var day = newInterval(function(date) { - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setDate(date.getDate() + step); -}, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; -}, function(date) { - return date.getDate() - 1; -}); -var days = day.range; - -function weekday(i) { - return newInterval(function(date) { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setDate(date.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); - -var sundays = sunday.range; -var mondays = monday.range; -var tuesdays = tuesday.range; -var wednesdays = wednesday.range; -var thursdays = thursday.range; -var fridays = friday.range; -var saturdays = saturday.range; - -var month = newInterval(function(date) { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setMonth(date.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date) { - return date.getMonth(); -}); -var months = month.range; - -var year = newInterval(function(date) { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setFullYear(date.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date) { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setFullYear(date.getFullYear() + step * k); - }); -}; -var years = year.range; - -var utcMinute = newInterval(function(date) { - date.setUTCSeconds(0, 0); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -var utcHour = newInterval(function(date) { - date.setUTCMinutes(0, 0, 0); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getUTCHours(); -}); -var utcHours = utcHour.range; - -var utcDay = newInterval(function(date) { - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCDate(date.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date) { - return date.getUTCDate() - 1; -}); -var utcDays = utcDay.range; - -function utcWeekday(i) { - return newInterval(function(date) { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCDate(date.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} - -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); - -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -var utcMonth = newInterval(function(date) { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCMonth(date.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date) { - return date.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -var utcYear = newInterval(function(date) { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date) { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; -var utcYears = utcYear.range; - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale$1(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear$1, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day$1; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay(); - week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay(); - week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week); - week = day.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day$1 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad$1(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - var map = {}, i = -1, n = names.length; - while (++i < n) map[names[i].toLowerCase()] = i; - return map; -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad$1(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad$1(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad$1(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad$1(1 + day.count(year(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad$1(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad$1(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad$1(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad$1(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad$1(sunday.count(year(d) - 1, d), p, 2); -} - -function formatWeekNumberISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d); - return pad$1(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad$1(monday.count(year(d) - 1, d), p, 2); -} - -function formatYear$1(d, p) { - return pad$1(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad$1(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad$1(z / 60 | 0, "0", 2) - + pad$1(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad$1(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad$1(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad$1(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad$1(1 + utcDay.count(utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad$1(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad$1(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad$1(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad$1(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad$1(utcSunday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCWeekNumberISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - return pad$1(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad$1(utcMonday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad$1(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad$1(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale$1; - -defaultLocale$1({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - exports.timeFormat = locale$1.format; - exports.timeParse = locale$1.parse; - exports.utcFormat = locale$1.utcFormat; - exports.utcParse = locale$1.utcParse; - return locale$1; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : exports.utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : exports.utcParse(isoSpecifier); - -var durationSecond$1 = 1000, - durationMinute$1 = durationSecond$1 * 60, - durationHour$1 = durationMinute$1 * 60, - durationDay$1 = durationHour$1 * 24, - durationWeek$1 = durationDay$1 * 7, - durationMonth = durationDay$1 * 30, - durationYear = durationDay$1 * 365; - -function date$1(t) { - return new Date(t); -} - -function number$3(t) { - return t instanceof Date ? +t : +new Date(+t); -} - -function calendar(year, month, week, day, hour, minute, second, millisecond, format) { - var scale = continuous(identity$6, identity$6), - invert = scale.invert, - domain = scale.domain; - - var formatMillisecond = format(".%L"), - formatSecond = format(":%S"), - formatMinute = format("%I:%M"), - formatHour = format("%I %p"), - formatDay = format("%a %d"), - formatWeek = format("%b %d"), - formatMonth = format("%B"), - formatYear = format("%Y"); - - var tickIntervals = [ - [second, 1, durationSecond$1], - [second, 5, 5 * durationSecond$1], - [second, 15, 15 * durationSecond$1], - [second, 30, 30 * durationSecond$1], - [minute, 1, durationMinute$1], - [minute, 5, 5 * durationMinute$1], - [minute, 15, 15 * durationMinute$1], - [minute, 30, 30 * durationMinute$1], - [ hour, 1, durationHour$1 ], - [ hour, 3, 3 * durationHour$1 ], - [ hour, 6, 6 * durationHour$1 ], - [ hour, 12, 12 * durationHour$1 ], - [ day, 1, durationDay$1 ], - [ day, 2, 2 * durationDay$1 ], - [ week, 1, durationWeek$1 ], - [ month, 1, durationMonth ], - [ month, 3, 3 * durationMonth ], - [ year, 1, durationYear ] - ]; - - function tickFormat(date) { - return (second(date) < date ? formatMillisecond - : minute(date) < date ? formatSecond - : hour(date) < date ? formatMinute - : day(date) < date ? formatHour - : month(date) < date ? (week(date) < date ? formatDay : formatWeek) - : year(date) < date ? formatMonth - : formatYear)(date); - } - - function tickInterval(interval, start, stop, step) { - if (interval == null) interval = 10; - - // If a desired tick count is specified, pick a reasonable tick interval - // based on the extent of the domain and a rough estimate of tick size. - // Otherwise, assume interval is already a time interval and use it. - if (typeof interval === "number") { - var target = Math.abs(stop - start) / interval, - i = bisector(function(i) { return i[2]; }).right(tickIntervals, target); - if (i === tickIntervals.length) { - step = tickStep(start / durationYear, stop / durationYear, interval); - interval = year; - } else if (i) { - i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - step = i[1]; - interval = i[0]; - } else { - step = Math.max(tickStep(start, stop, interval), 1); - interval = millisecond; - } - } - - return step == null ? interval : interval.every(step); - } - - scale.invert = function(y) { - return new Date(invert(y)); - }; - - scale.domain = function(_) { - return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1); - }; - - scale.ticks = function(interval, step) { - var d = domain(), - t0 = d[0], - t1 = d[d.length - 1], - r = t1 < t0, - t; - if (r) t = t0, t0 = t1, t1 = t; - t = tickInterval(interval, t0, t1, step); - t = t ? t.range(t0, t1 + 1) : []; // inclusive stop - return r ? t.reverse() : t; - }; - - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat : format(specifier); - }; - - scale.nice = function(interval, step) { - var d = domain(); - return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) - ? domain(nice(d, interval)) - : scale; - }; - - scale.copy = function() { - return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format)); - }; - - return scale; -} - -function time() { - return initRange.apply(calendar(year, month, sunday, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); -} - -function utcTime() { - return initRange.apply(calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); -} - -function transformer$2() { - var x0 = 0, - x1 = 1, - t0, - t1, - k10, - transform, - interpolator = identity$6, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); - return scale; - }; -} - -function copy$1(source, target) { - return target - .domain(source.domain()) - .interpolator(source.interpolator()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function sequential() { - var scale = linearish(transformer$2()(identity$6)); - - scale.copy = function() { - return copy$1(scale, sequential()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialLog() { - var scale = loggish(transformer$2()).domain([1, 10]); - - scale.copy = function() { - return copy$1(scale, sequentialLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSymlog() { - var scale = symlogish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialPow() { - var scale = powish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSqrt() { - return sequentialPow.apply(null, arguments).exponent(0.5); -} - -function sequentialQuantile() { - var domain = [], - interpolator = identity$6; - - function scale(x) { - if (!isNaN(x = +x)) return interpolator((bisectRight(domain, x) - 1) / (domain.length - 1)); - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return scale; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.copy = function() { - return sequentialQuantile(interpolator).domain(domain); - }; - - return initInterpolator.apply(scale, arguments); -} - -function transformer$3() { - var x0 = 0, - x1 = 0.5, - x2 = 1, - t0, - t1, - t2, - k10, - k21, - interpolator = identity$6, - transform, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1); - return scale; - }; -} - -function diverging() { - var scale = linearish(transformer$3()(identity$6)); - - scale.copy = function() { - return copy$1(scale, diverging()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingLog() { - var scale = loggish(transformer$3()).domain([0.1, 1, 10]); - - scale.copy = function() { - return copy$1(scale, divergingLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSymlog() { - var scale = symlogish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingPow() { - var scale = powish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSqrt() { - return divergingPow.apply(null, arguments).exponent(0.5); -} - -function colors(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - -var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - -var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - -var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - -var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - -var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - -var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - -var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - -var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - -function ramp(scheme) { - return rgbBasis(scheme[scheme.length - 1]); -} - -var scheme = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" -).map(colors); - -var BrBG = ramp(scheme); - -var scheme$1 = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" -).map(colors); - -var PRGn = ramp(scheme$1); - -var scheme$2 = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" -).map(colors); - -var PiYG = ramp(scheme$2); - -var scheme$3 = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" -).map(colors); - -var PuOr = ramp(scheme$3); - -var scheme$4 = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" -).map(colors); - -var RdBu = ramp(scheme$4); - -var scheme$5 = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" -).map(colors); - -var RdGy = ramp(scheme$5); - -var scheme$6 = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" -).map(colors); - -var RdYlBu = ramp(scheme$6); - -var scheme$7 = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" -).map(colors); - -var RdYlGn = ramp(scheme$7); - -var scheme$8 = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" -).map(colors); - -var Spectral = ramp(scheme$8); - -var scheme$9 = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" -).map(colors); - -var BuGn = ramp(scheme$9); - -var scheme$a = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" -).map(colors); - -var BuPu = ramp(scheme$a); - -var scheme$b = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" -).map(colors); - -var GnBu = ramp(scheme$b); - -var scheme$c = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" -).map(colors); - -var OrRd = ramp(scheme$c); - -var scheme$d = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" -).map(colors); - -var PuBuGn = ramp(scheme$d); - -var scheme$e = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" -).map(colors); - -var PuBu = ramp(scheme$e); - -var scheme$f = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" -).map(colors); - -var PuRd = ramp(scheme$f); - -var scheme$g = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" -).map(colors); - -var RdPu = ramp(scheme$g); - -var scheme$h = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" -).map(colors); - -var YlGnBu = ramp(scheme$h); - -var scheme$i = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" -).map(colors); - -var YlGn = ramp(scheme$i); - -var scheme$j = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" -).map(colors); - -var YlOrBr = ramp(scheme$j); - -var scheme$k = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" -).map(colors); - -var YlOrRd = ramp(scheme$k); - -var scheme$l = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" -).map(colors); - -var Blues = ramp(scheme$l); - -var scheme$m = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" -).map(colors); - -var Greens = ramp(scheme$m); - -var scheme$n = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" -).map(colors); - -var Greys = ramp(scheme$n); - -var scheme$o = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" -).map(colors); - -var Purples = ramp(scheme$o); - -var scheme$p = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" -).map(colors); - -var Reds = ramp(scheme$p); - -var scheme$q = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" -).map(colors); - -var Oranges = ramp(scheme$q); - -function cividis(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " - + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " - + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) - + ")"; -} - -var cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0)); - -var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var c = cubehelix(); - -function rainbow(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c.h = 360 * t - 100; - c.s = 1.5 - 1.5 * ts; - c.l = 0.8 - 0.9 * ts; - return c + ""; -} - -var c$1 = rgb(), - pi_1_3 = Math.PI / 3, - pi_2_3 = Math.PI * 2 / 3; - -function sinebow(t) { - var x; - t = (0.5 - t) * Math.PI; - c$1.r = 255 * (x = Math.sin(t)) * x; - c$1.g = 255 * (x = Math.sin(t + pi_1_3)) * x; - c$1.b = 255 * (x = Math.sin(t + pi_2_3)) * x; - return c$1 + ""; -} - -function turbo(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " - + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " - + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) - + ")"; -} - -function ramp$1(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -var viridis = ramp$1(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); - -var magma = ramp$1(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); - -var inferno = ramp$1(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); - -var plasma = ramp$1(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - -function constant$b(x) { - return function constant() { - return x; - }; -} - -var abs$1 = Math.abs; -var atan2$1 = Math.atan2; -var cos$2 = Math.cos; -var max$2 = Math.max; -var min$1 = Math.min; -var sin$2 = Math.sin; -var sqrt$2 = Math.sqrt; - -var epsilon$3 = 1e-12; -var pi$4 = Math.PI; -var halfPi$3 = pi$4 / 2; -var tau$4 = 2 * pi$4; - -function acos$1(x) { - return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x); -} - -function asin$1(x) { - return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x); -} - -function arcInnerRadius(d) { - return d.innerRadius; -} - -function arcOuterRadius(d) { - return d.outerRadius; -} - -function arcStartAngle(d) { - return d.startAngle; -} - -function arcEndAngle(d) { - return d.endAngle; -} - -function arcPadAngle(d) { - return d && d.padAngle; // Note: optional! -} - -function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var x10 = x1 - x0, y10 = y1 - y0, - x32 = x3 - x2, y32 = y3 - y2, - t = y32 * x10 - x32 * y10; - if (t * t < epsilon$3) return; - t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; - return [x0 + t * x10, y0 + t * y10]; -} - -// Compute perpendicular offset line of length rc. -// http://mathworld.wolfram.com/Circle-LineIntersection.html -function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, - y01 = y0 - y1, - lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01), - ox = lo * y01, - oy = -lo * x01, - x11 = x0 + ox, - y11 = y0 + oy, - x10 = x1 + ox, - y10 = y1 + oy, - x00 = (x11 + x10) / 2, - y00 = (y11 + y10) / 2, - dx = x10 - x11, - dy = y10 - y11, - d2 = dx * dx + dy * dy, - r = r1 - rc, - D = x11 * y10 - x10 * y11, - d = (dy < 0 ? -1 : 1) * sqrt$2(max$2(0, r * r * d2 - D * D)), - cx0 = (D * dy - dx * d) / d2, - cy0 = (-D * dx - dy * d) / d2, - cx1 = (D * dy + dx * d) / d2, - cy1 = (-D * dx + dy * d) / d2, - dx0 = cx0 - x00, - dy0 = cy0 - y00, - dx1 = cx1 - x00, - dy1 = cy1 - y00; - - // Pick the closer of the two intersection points. - // TODO Is there a faster way to determine which intersection to use? - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; - - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; -} - -function arc() { - var innerRadius = arcInnerRadius, - outerRadius = arcOuterRadius, - cornerRadius = constant$b(0), - padRadius = null, - startAngle = arcStartAngle, - endAngle = arcEndAngle, - padAngle = arcPadAngle, - context = null; - - function arc() { - var buffer, - r, - r0 = +innerRadius.apply(this, arguments), - r1 = +outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) - halfPi$3, - a1 = endAngle.apply(this, arguments) - halfPi$3, - da = abs$1(a1 - a0), - cw = a1 > a0; - - if (!context) context = buffer = path(); - - // Ensure that the outer radius is always larger than the inner radius. - if (r1 < r0) r = r1, r1 = r0, r0 = r; - - // Is it a point? - if (!(r1 > epsilon$3)) context.moveTo(0, 0); - - // Or is it a circle or annulus? - else if (da > tau$4 - epsilon$3) { - context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon$3) { - context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } - - // Or is it a circular or annular sector? - else { - var a01 = a0, - a11 = a1, - a00 = a0, - a10 = a1, - da0 = da, - da1 = da, - ap = padAngle.apply(this, arguments) / 2, - rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)), - rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), - rc0 = rc, - rc1 = rc, - t0, - t1; - - // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. - if (rp > epsilon$3) { - var p0 = asin$1(rp / r0 * sin$2(ap)), - p1 = asin$1(rp / r1 * sin$2(ap)); - if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; - else da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; - else da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - - var x01 = r1 * cos$2(a01), - y01 = r1 * sin$2(a01), - x10 = r0 * cos$2(a10), - y10 = r0 * sin$2(a10); - - // Apply rounded corners? - if (rc > epsilon$3) { - var x11 = r1 * cos$2(a11), - y11 = r1 * sin$2(a11), - x00 = r0 * cos$2(a00), - y00 = r0 * sin$2(a00), - oc; - - // Restrict the corner radius according to the sector angle. - if (da < pi$4 && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { - var ax = x01 - oc[0], - ay = y01 - oc[1], - bx = x11 - oc[0], - by = y11 - oc[1], - kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2), - lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min$1(rc, (r0 - lc) / (kc - 1)); - rc1 = min$1(rc, (r1 - lc) / (kc + 1)); - } - } - - // Is the sector collapsed to a line? - if (!(da1 > epsilon$3)) context.moveTo(x01, y01); - - // Does the sector’s outer ring have rounded corners? - else if (rc1 > epsilon$3) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the outer ring just a circular arc? - else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - - // Is there no inner ring, and it’s a circular sector? - // Or perhaps it’s an annular sector collapsed due to padding? - if (!(r0 > epsilon$3) || !(da0 > epsilon$3)) context.lineTo(x10, y10); - - // Does the sector’s inner ring (or point) have rounded corners? - else if (rc0 > epsilon$3) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the inner ring just a circular arc? - else context.arc(0, 0, r0, a10, a00, cw); - } - - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, - a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2; - return [cos$2(a) * r, sin$2(a) * r]; - }; - - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : innerRadius; - }; - - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : outerRadius; - }; - - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : cornerRadius; - }; - - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), arc) : padRadius; - }; - - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : startAngle; - }; - - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : endAngle; - }; - - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : padAngle; - }; - - arc.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), arc) : context; - }; - - return arc; -} - -function Linear(context) { - this._context = context; -} - -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: this._context.lineTo(x, y); break; - } - } -}; - -function curveLinear(context) { - return new Linear(context); -} - -function x$3(p) { - return p[0]; -} - -function y$3(p) { - return p[1]; -} - -function line() { - var x = x$3, - y = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function line(data) { - var i, - n = data.length, - d, - defined0 = false, - buffer; - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x(d, i, data), +y(d, i, data)); - } - - if (buffer) return output = null, buffer + "" || null; - } - - line.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), line) : x; - }; - - line.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), line) : y; - }; - - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), line) : defined; - }; - - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - - return line; -} - -function area$3() { - var x0 = x$3, - x1 = null, - y0 = constant$b(0), - y1 = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function area(data) { - var i, - j, - k, - n = data.length, - d, - defined0 = false, - buffer, - x0z = new Array(n), - y0z = new Array(n); - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) { - j = i; - output.areaStart(); - output.lineStart(); - } else { - output.lineEnd(); - output.lineStart(); - for (k = i - 1; k >= j; --k) { - output.point(x0z[k], y0z[k]); - } - output.lineEnd(); - output.areaEnd(); - } - } - if (defined0) { - x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); - output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); - } - } - - if (buffer) return output = null, buffer + "" || null; - } - - function arealine() { - return line().defined(defined).curve(curve).context(context); - } - - area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), x1 = null, area) : x0; - }; - - area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), area) : x0; - }; - - area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : x1; - }; - - area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), y1 = null, area) : y0; - }; - - area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), area) : y0; - }; - - area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : y1; - }; - - area.lineX0 = - area.lineY0 = function() { - return arealine().x(x0).y(y0); - }; - - area.lineY1 = function() { - return arealine().x(x0).y(y1); - }; - - area.lineX1 = function() { - return arealine().x(x1).y(y0); - }; - - area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), area) : defined; - }; - - area.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; - }; - - area.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; - }; - - return area; -} - -function descending$1(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function identity$8(d) { - return d; -} - -function pie() { - var value = identity$8, - sortValues = descending$1, - sort = null, - startAngle = constant$b(0), - endAngle = constant$b(tau$4), - padAngle = constant$b(0); - - function pie(data) { - var i, - n = data.length, - j, - k, - sum = 0, - index = new Array(n), - arcs = new Array(n), - a0 = +startAngle.apply(this, arguments), - da = Math.min(tau$4, Math.max(-tau$4, endAngle.apply(this, arguments) - a0)), - a1, - p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), - pa = p * (da < 0 ? -1 : 1), - v; - - for (i = 0; i < n; ++i) { - if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { - sum += v; - } - } - - // Optionally sort the arcs by previously-computed values or by data. - if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); - else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); - - // Compute the arcs! They are stored in the original data's order. - for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { - j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { - data: data[j], - index: i, - value: v, - startAngle: a0, - endAngle: a1, - padAngle: p - }; - } - - return arcs; - } - - pie.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), pie) : value; - }; - - pie.sortValues = function(_) { - return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; - }; - - pie.sort = function(_) { - return arguments.length ? (sort = _, sortValues = null, pie) : sort; - }; - - pie.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : startAngle; - }; - - pie.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : endAngle; - }; - - pie.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : padAngle; - }; - - return pie; -} - -var curveRadialLinear = curveRadial(curveLinear); - -function Radial(curve) { - this._curve = curve; -} - -Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a, r) { - this._curve.point(r * Math.sin(a), r * -Math.cos(a)); - } -}; - -function curveRadial(curve) { - - function radial(context) { - return new Radial(curve(context)); - } - - radial._curve = curve; - - return radial; -} - -function lineRadial(l) { - var c = l.curve; - - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - - l.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return l; -} - -function lineRadial$1() { - return lineRadial(line().curve(curveRadialLinear)); -} - -function areaRadial() { - var a = area$3().curve(curveRadialLinear), - c = a.curve, - x0 = a.lineX0, - x1 = a.lineX1, - y0 = a.lineY0, - y1 = a.lineY1; - - a.angle = a.x, delete a.x; - a.startAngle = a.x0, delete a.x0; - a.endAngle = a.x1, delete a.x1; - a.radius = a.y, delete a.y; - a.innerRadius = a.y0, delete a.y0; - a.outerRadius = a.y1, delete a.y1; - a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; - a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; - a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; - a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; - - a.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return a; -} - -function pointRadial(x, y) { - return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; -} - -var slice$6 = Array.prototype.slice; - -function linkSource(d) { - return d.source; -} - -function linkTarget(d) { - return d.target; -} - -function link$2(curve) { - var source = linkSource, - target = linkTarget, - x = x$3, - y = y$3, - context = null; - - function link() { - var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); - if (!context) context = buffer = path(); - curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv)); - if (buffer) return context = null, buffer + "" || null; - } - - link.source = function(_) { - return arguments.length ? (source = _, link) : source; - }; - - link.target = function(_) { - return arguments.length ? (target = _, link) : target; - }; - - link.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), link) : x; - }; - - link.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), link) : y; - }; - - link.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), link) : context; - }; - - return link; -} - -function curveHorizontal(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); -} - -function curveVertical(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); -} - -function curveRadial$1(context, x0, y0, x1, y1) { - var p0 = pointRadial(x0, y0), - p1 = pointRadial(x0, y0 = (y0 + y1) / 2), - p2 = pointRadial(x1, y0), - p3 = pointRadial(x1, y1); - context.moveTo(p0[0], p0[1]); - context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); -} - -function linkHorizontal() { - return link$2(curveHorizontal); -} - -function linkVertical() { - return link$2(curveVertical); -} - -function linkRadial() { - var l = link$2(curveRadial$1); - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - return l; -} - -var circle$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / pi$4); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau$4); - } -}; - -var cross$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } -}; - -var tan30 = Math.sqrt(1 / 3), - tan30_2 = tan30 * 2; - -var diamond = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), - x = y * tan30; - context.moveTo(0, -y); - context.lineTo(x, 0); - context.lineTo(0, y); - context.lineTo(-x, 0); - context.closePath(); - } -}; - -var ka = 0.89081309152928522810, - kr = Math.sin(pi$4 / 10) / Math.sin(7 * pi$4 / 10), - kx = Math.sin(tau$4 / 10) * kr, - ky = -Math.cos(tau$4 / 10) * kr; - -var star = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), - x = kx * r, - y = ky * r; - context.moveTo(0, -r); - context.lineTo(x, y); - for (var i = 1; i < 5; ++i) { - var a = tau$4 * i / 5, - c = Math.cos(a), - s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } - context.closePath(); - } -}; - -var square = { - draw: function(context, size) { - var w = Math.sqrt(size), - x = -w / 2; - context.rect(x, x, w, w); - } -}; - -var sqrt3 = Math.sqrt(3); - -var triangle = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); - context.moveTo(0, y * 2); - context.lineTo(-sqrt3 * y, -y); - context.lineTo(sqrt3 * y, -y); - context.closePath(); - } -}; - -var c$2 = -0.5, - s = Math.sqrt(3) / 2, - k = 1 / Math.sqrt(12), - a = (k / 2 + 1) * 3; - -var wye = { - draw: function(context, size) { - var r = Math.sqrt(size / a), - x0 = r / 2, - y0 = r * k, - x1 = x0, - y1 = r * k + r, - x2 = -x1, - y2 = y1; - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(c$2 * x0 - s * y0, s * x0 + c$2 * y0); - context.lineTo(c$2 * x1 - s * y1, s * x1 + c$2 * y1); - context.lineTo(c$2 * x2 - s * y2, s * x2 + c$2 * y2); - context.lineTo(c$2 * x0 + s * y0, c$2 * y0 - s * x0); - context.lineTo(c$2 * x1 + s * y1, c$2 * y1 - s * x1); - context.lineTo(c$2 * x2 + s * y2, c$2 * y2 - s * x2); - context.closePath(); - } -}; - -var symbols = [ - circle$2, - cross$2, - diamond, - square, - star, - triangle, - wye -]; - -function symbol() { - var type = constant$b(circle$2), - size = constant$b(64), - context = null; - - function symbol() { - var buffer; - if (!context) context = buffer = path(); - type.apply(this, arguments).draw(context, +size.apply(this, arguments)); - if (buffer) return context = null, buffer + "" || null; - } - - symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$b(_), symbol) : type; - }; - - symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$b(+_), symbol) : size; - }; - - symbol.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, symbol) : context; - }; - - return symbol; -} - -function noop$3() {} - -function point$2(that, x, y) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x) / 6, - (that._y0 + 4 * that._y1 + y) / 6 - ); -} - -function Basis(context) { - this._context = context; -} - -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: point$2(this, this._x1, this._y1); // proceed - case 2: this._context.lineTo(this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basis$2(context) { - return new Basis(context); -} - -function BasisClosed(context) { - this._context = context; -} - -BasisClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x2 = x, this._y2 = y; break; - case 1: this._point = 2; this._x3 = x, this._y3 = y; break; - case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisClosed$1(context) { - return new BasisClosed(context); -} - -function BasisOpen(context) { - this._context = context; -} - -BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; - case 3: this._point = 4; // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisOpen(context) { - return new BasisOpen(context); -} - -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} - -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x = this._x, - y = this._y, - j = x.length - 1; - - if (j > 0) { - var x0 = x[0], - y0 = y[0], - dx = x[j] - x0, - dy = y[j] - y0, - i = -1, - t; - - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -var bundle = (function custom(beta) { - - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - - bundle.beta = function(beta) { - return custom(+beta); - }; - - return bundle; -})(0.85); - -function point$3(that, x, y) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x), - that._y2 + that._k * (that._y1 - y), - that._x2, - that._y2 - ); -} - -function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: point$3(this, this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; this._x1 = x, this._y1 = y; break; - case 2: this._point = 3; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinal = (function custom(tension) { - - function cardinal(context) { - return new Cardinal(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalClosed = (function custom(tension) { - - function cardinal(context) { - return new CardinalClosed(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalOpen = (function custom(tension) { - - function cardinal(context) { - return new CardinalOpen(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function point$4(that, x, y) { - var x1 = that._x1, - y1 = that._y1, - x2 = that._x2, - y2 = that._y2; - - if (that._l01_a > epsilon$3) { - var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, - n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - - if (that._l23_a > epsilon$3) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, - m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; - y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; - } - - that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); -} - -function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: this.point(this._x2, this._y2); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRom = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomClosed = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomOpen = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function LinearClosed(context) { - this._context = context; -} - -LinearClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x, y) { - x = +x, y = +y; - if (this._point) this._context.lineTo(x, y); - else this._point = 1, this._context.moveTo(x, y); - } -}; - -function linearClosed(context) { - return new LinearClosed(context); -} - -function sign$1(x) { - return x < 0 ? -1 : 1; -} - -// Calculate the slopes of the tangents (Hermite-type interpolation) based on -// the following paper: Steffen, M. 1990. A Simple Method for Monotonic -// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. -// NOV(II), P. 443, 1990. -function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, - h1 = x2 - that._x1, - s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), - s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), - p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; -} - -// Calculate a one-sided slope. -function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; -} - -// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations -// "you can express cubic Hermite interpolation in terms of cubic Bézier curves -// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". -function point$5(that, t0, t1) { - var x0 = that._x0, - y0 = that._y0, - x1 = that._x1, - y1 = that._y1, - dx = (x1 - x0) / 3; - that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); -} - -function MonotoneX(context) { - this._context = context; -} - -MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = - this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x1, this._y1); break; - case 3: point$5(this, this._t0, slope2(this, this._t0)); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - var t1 = NaN; - - x = +x, y = +y; - if (x === this._x1 && y === this._y1) return; // Ignore coincident points. - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; point$5(this, slope2(this, t1 = slope3(this, x, y)), t1); break; - default: point$5(this, this._t0, t1 = slope3(this, x, y)); break; - } - - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - this._t0 = t1; - } -}; - -function MonotoneY(context) { - this._context = new ReflectContext(context); -} - -(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { - MonotoneX.prototype.point.call(this, y, x); -}; - -function ReflectContext(context) { - this._context = context; -} - -ReflectContext.prototype = { - moveTo: function(x, y) { this._context.moveTo(y, x); }, - closePath: function() { this._context.closePath(); }, - lineTo: function(x, y) { this._context.lineTo(y, x); }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } -}; - -function monotoneX(context) { - return new MonotoneX(context); -} - -function monotoneY(context) { - return new MonotoneY(context); -} - -function Natural(context) { - this._context = context; -} - -Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x = this._x, - y = this._y, - n = x.length; - - if (n) { - this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); - if (n === 2) { - this._context.lineTo(x[1], y[1]); - } else { - var px = controlPoints(x), - py = controlPoints(y); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); - } - } - } - - if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -// See https://www.particleincell.com/2012/bezier-splines/ for derivation. -function controlPoints(x) { - var i, - n = x.length - 1, - m, - a = new Array(n), - b = new Array(n), - r = new Array(n); - a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; - for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; - a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; - for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; - b[n - 1] = (x[n] + a[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; - return [a, b]; -} - -function natural(context) { - return new Natural(context); -} - -function Step(context, t) { - this._context = context; - this._t = t; -} - -Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y); - this._context.lineTo(x, y); - } else { - var x1 = this._x * (1 - this._t) + x * this._t; - this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y); - } - break; - } - } - this._x = x, this._y = y; - } -}; - -function step(context) { - return new Step(context, 0.5); -} - -function stepBefore(context) { - return new Step(context, 0); -} - -function stepAfter(context) { - return new Step(context, 1); -} - -function none$1(series, order) { - if (!((n = series.length) > 1)) return; - for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { - s0 = s1, s1 = series[order[i]]; - for (j = 0; j < m; ++j) { - s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; - } - } -} - -function none$2(series) { - var n = series.length, o = new Array(n); - while (--n >= 0) o[n] = n; - return o; -} - -function stackValue(d, key) { - return d[key]; -} - -function stack() { - var keys = constant$b([]), - order = none$2, - offset = none$1, - value = stackValue; - - function stack(data) { - var kz = keys.apply(this, arguments), - i, - m = data.length, - n = kz.length, - sz = new Array(n), - oz; - - for (i = 0; i < n; ++i) { - for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { - si[j] = sij = [0, +value(data[j], ki, j, data)]; - sij.data = data[j]; - } - si.key = ki; - } - - for (i = 0, oz = order(sz); i < n; ++i) { - sz[oz[i]].index = i; - } - - offset(sz, oz); - return sz; - } - - stack.keys = function(_) { - return arguments.length ? (keys = typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : keys; - }; - - stack.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), stack) : value; - }; - - stack.order = function(_) { - return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : order; - }; - - stack.offset = function(_) { - return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; - }; - - return stack; -} - -function expand(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { - for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; - if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; - } - none$1(series, order); -} - -function diverging$1(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { - for (yp = yn = 0, i = 0; i < n; ++i) { - if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { - d[0] = yp, d[1] = yp += dy; - } else if (dy < 0) { - d[1] = yn, d[0] = yn += dy; - } else { - d[0] = 0, d[1] = dy; - } - } - } -} - -function silhouette(series, order) { - if (!((n = series.length) > 0)) return; - for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { - for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; - s0[j][1] += s0[j][0] = -y / 2; - } - none$1(series, order); -} - -function wiggle(series, order) { - if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; - for (var y = 0, j = 1, s0, m, n; j < m; ++j) { - for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { - var si = series[order[i]], - sij0 = si[j][1] || 0, - sij1 = si[j - 1][1] || 0, - s3 = (sij0 - sij1) / 2; - for (var k = 0; k < i; ++k) { - var sk = series[order[k]], - skj0 = sk[j][1] || 0, - skj1 = sk[j - 1][1] || 0; - s3 += skj0 - skj1; - } - s1 += sij0, s2 += s3 * sij0; - } - s0[j - 1][1] += s0[j - 1][0] = y; - if (s1) y -= s2 / s1; - } - s0[j - 1][1] += s0[j - 1][0] = y; - none$1(series, order); -} - -function appearance(series) { - var peaks = series.map(peak); - return none$2(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); -} - -function peak(series) { - var i = -1, j = 0, n = series.length, vi, vj = -Infinity; - while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; - return j; -} - -function ascending$3(series) { - var sums = series.map(sum$2); - return none$2(series).sort(function(a, b) { return sums[a] - sums[b]; }); -} - -function sum$2(series) { - var s = 0, i = -1, n = series.length, v; - while (++i < n) if (v = +series[i][1]) s += v; - return s; -} - -function descending$2(series) { - return ascending$3(series).reverse(); -} - -function insideOut(series) { - var n = series.length, - i, - j, - sums = series.map(sum$2), - order = appearance(series), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - - for (i = 0; i < n; ++i) { - j = order[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - - return bottoms.reverse().concat(tops); -} - -function reverse(series) { - return none$2(series).reverse(); -} - -function constant$c(x) { - return function() { - return x; - }; -} - -function x$4(d) { - return d[0]; -} - -function y$4(d) { - return d[1]; -} - -function RedBlackTree() { - this._ = null; // root node -} - -function RedBlackNode(node) { - node.U = // parent node - node.C = // color - true for red, false for black - node.L = // left node - node.R = // right node - node.P = // previous node - node.N = null; // next node -} - -RedBlackTree.prototype = { - constructor: RedBlackTree, - - insert: function(after, node) { - var parent, grandpa, uncle; - - if (after) { - node.P = after; - node.N = after.N; - if (after.N) after.N.P = node; - after.N = node; - if (after.R) { - after = after.R; - while (after.L) after = after.L; - after.L = node; - } else { - after.R = node; - } - parent = after; - } else if (this._) { - after = RedBlackFirst(this._); - node.P = null; - node.N = after; - after.P = after.L = node; - parent = after; - } else { - node.P = node.N = null; - this._ = node; - parent = null; - } - node.L = node.R = null; - node.U = parent; - node.C = true; - - after = node; - while (parent && parent.C) { - grandpa = parent.U; - if (parent === grandpa.L) { - uncle = grandpa.R; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.R) { - RedBlackRotateLeft(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateRight(this, grandpa); - } - } else { - uncle = grandpa.L; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.L) { - RedBlackRotateRight(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateLeft(this, grandpa); - } - } - parent = after.U; - } - this._.C = false; - }, - - remove: function(node) { - if (node.N) node.N.P = node.P; - if (node.P) node.P.N = node.N; - node.N = node.P = null; - - var parent = node.U, - sibling, - left = node.L, - right = node.R, - next, - red; - - if (!left) next = right; - else if (!right) next = left; - else next = RedBlackFirst(right); - - if (parent) { - if (parent.L === node) parent.L = next; - else parent.R = next; - } else { - this._ = next; - } - - if (left && right) { - red = next.C; - next.C = node.C; - next.L = left; - left.U = next; - if (next !== right) { - parent = next.U; - next.U = node.U; - node = next.R; - parent.L = node; - next.R = right; - right.U = next; - } else { - next.U = parent; - parent = next; - node = next.R; - } - } else { - red = node.C; - node = next; - } - - if (node) node.U = parent; - if (red) return; - if (node && node.C) { node.C = false; return; } - - do { - if (node === this._) break; - if (node === parent.L) { - sibling = parent.R; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateLeft(this, parent); - sibling = parent.R; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.R || !sibling.R.C) { - sibling.L.C = false; - sibling.C = true; - RedBlackRotateRight(this, sibling); - sibling = parent.R; - } - sibling.C = parent.C; - parent.C = sibling.R.C = false; - RedBlackRotateLeft(this, parent); - node = this._; - break; - } - } else { - sibling = parent.L; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateRight(this, parent); - sibling = parent.L; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.L || !sibling.L.C) { - sibling.R.C = false; - sibling.C = true; - RedBlackRotateLeft(this, sibling); - sibling = parent.L; - } - sibling.C = parent.C; - parent.C = sibling.L.C = false; - RedBlackRotateRight(this, parent); - node = this._; - break; - } - } - sibling.C = true; - node = parent; - parent = parent.U; - } while (!node.C); - - if (node) node.C = false; - } -}; - -function RedBlackRotateLeft(tree, node) { - var p = node, - q = node.R, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.R = q.L; - if (p.R) p.R.U = p; - q.L = p; -} - -function RedBlackRotateRight(tree, node) { - var p = node, - q = node.L, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.L = q.R; - if (p.L) p.L.U = p; - q.R = p; -} - -function RedBlackFirst(node) { - while (node.L) node = node.L; - return node; -} - -function createEdge(left, right, v0, v1) { - var edge = [null, null], - index = edges.push(edge) - 1; - edge.left = left; - edge.right = right; - if (v0) setEdgeEnd(edge, left, right, v0); - if (v1) setEdgeEnd(edge, right, left, v1); - cells[left.index].halfedges.push(index); - cells[right.index].halfedges.push(index); - return edge; -} - -function createBorderEdge(left, v0, v1) { - var edge = [v0, v1]; - edge.left = left; - return edge; -} - -function setEdgeEnd(edge, left, right, vertex) { - if (!edge[0] && !edge[1]) { - edge[0] = vertex; - edge.left = left; - edge.right = right; - } else if (edge.left === right) { - edge[1] = vertex; - } else { - edge[0] = vertex; - } -} - -// Liang–Barsky line clipping. -function clipEdge(edge, x0, y0, x1, y1) { - var a = edge[0], - b = edge[1], - ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check? - - if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy]; - if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy]; - return true; -} - -function connectEdge(edge, x0, y0, x1, y1) { - var v1 = edge[1]; - if (v1) return true; - - var v0 = edge[0], - left = edge.left, - right = edge.right, - lx = left[0], - ly = left[1], - rx = right[0], - ry = right[1], - fx = (lx + rx) / 2, - fy = (ly + ry) / 2, - fm, - fb; - - if (ry === ly) { - if (fx < x0 || fx >= x1) return; - if (lx > rx) { - if (!v0) v0 = [fx, y0]; - else if (v0[1] >= y1) return; - v1 = [fx, y1]; - } else { - if (!v0) v0 = [fx, y1]; - else if (v0[1] < y0) return; - v1 = [fx, y0]; - } - } else { - fm = (lx - rx) / (ry - ly); - fb = fy - fm * fx; - if (fm < -1 || fm > 1) { - if (lx > rx) { - if (!v0) v0 = [(y0 - fb) / fm, y0]; - else if (v0[1] >= y1) return; - v1 = [(y1 - fb) / fm, y1]; - } else { - if (!v0) v0 = [(y1 - fb) / fm, y1]; - else if (v0[1] < y0) return; - v1 = [(y0 - fb) / fm, y0]; - } - } else { - if (ly < ry) { - if (!v0) v0 = [x0, fm * x0 + fb]; - else if (v0[0] >= x1) return; - v1 = [x1, fm * x1 + fb]; - } else { - if (!v0) v0 = [x1, fm * x1 + fb]; - else if (v0[0] < x0) return; - v1 = [x0, fm * x0 + fb]; - } - } - } - - edge[0] = v0; - edge[1] = v1; - return true; -} - -function clipEdges(x0, y0, x1, y1) { - var i = edges.length, - edge; - - while (i--) { - if (!connectEdge(edge = edges[i], x0, y0, x1, y1) - || !clipEdge(edge, x0, y0, x1, y1) - || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$4 - || Math.abs(edge[0][1] - edge[1][1]) > epsilon$4)) { - delete edges[i]; - } - } -} - -function createCell(site) { - return cells[site.index] = { - site: site, - halfedges: [] - }; -} - -function cellHalfedgeAngle(cell, edge) { - var site = cell.site, - va = edge.left, - vb = edge.right; - if (site === vb) vb = va, va = site; - if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]); - if (site === va) va = edge[1], vb = edge[0]; - else va = edge[0], vb = edge[1]; - return Math.atan2(va[0] - vb[0], vb[1] - va[1]); -} - -function cellHalfedgeStart(cell, edge) { - return edge[+(edge.left !== cell.site)]; -} - -function cellHalfedgeEnd(cell, edge) { - return edge[+(edge.left === cell.site)]; -} - -function sortCellHalfedges() { - for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) { - if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) { - var index = new Array(m), - array = new Array(m); - for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]); - index.sort(function(i, j) { return array[j] - array[i]; }); - for (j = 0; j < m; ++j) array[j] = halfedges[index[j]]; - for (j = 0; j < m; ++j) halfedges[j] = array[j]; - } - } -} - -function clipCells(x0, y0, x1, y1) { - var nCells = cells.length, - iCell, - cell, - site, - iHalfedge, - halfedges, - nHalfedges, - start, - startX, - startY, - end, - endX, - endY, - cover = true; - - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - halfedges = cell.halfedges; - iHalfedge = halfedges.length; - - // Remove any dangling clipped edges. - while (iHalfedge--) { - if (!edges[halfedges[iHalfedge]]) { - halfedges.splice(iHalfedge, 1); - } - } - - // Insert any border edges as necessary. - iHalfedge = 0, nHalfedges = halfedges.length; - while (iHalfedge < nHalfedges) { - end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1]; - start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1]; - if (Math.abs(endX - startX) > epsilon$4 || Math.abs(endY - startY) > epsilon$4) { - halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end, - Math.abs(endX - x0) < epsilon$4 && y1 - endY > epsilon$4 ? [x0, Math.abs(startX - x0) < epsilon$4 ? startY : y1] - : Math.abs(endY - y1) < epsilon$4 && x1 - endX > epsilon$4 ? [Math.abs(startY - y1) < epsilon$4 ? startX : x1, y1] - : Math.abs(endX - x1) < epsilon$4 && endY - y0 > epsilon$4 ? [x1, Math.abs(startX - x1) < epsilon$4 ? startY : y0] - : Math.abs(endY - y0) < epsilon$4 && endX - x0 > epsilon$4 ? [Math.abs(startY - y0) < epsilon$4 ? startX : x0, y0] - : null)) - 1); - ++nHalfedges; - } - } - - if (nHalfedges) cover = false; - } - } - - // If there weren’t any edges, have the closest site cover the extent. - // It doesn’t matter which corner of the extent we measure! - if (cover) { - var dx, dy, d2, dc = Infinity; - - for (iCell = 0, cover = null; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - dx = site[0] - x0; - dy = site[1] - y0; - d2 = dx * dx + dy * dy; - if (d2 < dc) dc = d2, cover = cell; - } - } - - if (cover) { - var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0]; - cover.halfedges.push( - edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1, - edges.push(createBorderEdge(site, v01, v11)) - 1, - edges.push(createBorderEdge(site, v11, v10)) - 1, - edges.push(createBorderEdge(site, v10, v00)) - 1 - ); - } - } - - // Lastly delete any cells with no edges; these were entirely clipped. - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - if (!cell.halfedges.length) { - delete cells[iCell]; - } - } - } -} - -var circlePool = []; - -var firstCircle; - -function Circle() { - RedBlackNode(this); - this.x = - this.y = - this.arc = - this.site = - this.cy = null; -} - -function attachCircle(arc) { - var lArc = arc.P, - rArc = arc.N; - - if (!lArc || !rArc) return; - - var lSite = lArc.site, - cSite = arc.site, - rSite = rArc.site; - - if (lSite === rSite) return; - - var bx = cSite[0], - by = cSite[1], - ax = lSite[0] - bx, - ay = lSite[1] - by, - cx = rSite[0] - bx, - cy = rSite[1] - by; - - var d = 2 * (ax * cy - ay * cx); - if (d >= -epsilon2$2) return; - - var ha = ax * ax + ay * ay, - hc = cx * cx + cy * cy, - x = (cy * ha - ay * hc) / d, - y = (ax * hc - cx * ha) / d; - - var circle = circlePool.pop() || new Circle; - circle.arc = arc; - circle.site = cSite; - circle.x = x + bx; - circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom - - arc.circle = circle; - - var before = null, - node = circles._; - - while (node) { - if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) { - if (node.L) node = node.L; - else { before = node.P; break; } - } else { - if (node.R) node = node.R; - else { before = node; break; } - } - } - - circles.insert(before, circle); - if (!before) firstCircle = circle; -} - -function detachCircle(arc) { - var circle = arc.circle; - if (circle) { - if (!circle.P) firstCircle = circle.N; - circles.remove(circle); - circlePool.push(circle); - RedBlackNode(circle); - arc.circle = null; - } -} - -var beachPool = []; - -function Beach() { - RedBlackNode(this); - this.edge = - this.site = - this.circle = null; -} - -function createBeach(site) { - var beach = beachPool.pop() || new Beach; - beach.site = site; - return beach; -} - -function detachBeach(beach) { - detachCircle(beach); - beaches.remove(beach); - beachPool.push(beach); - RedBlackNode(beach); -} - -function removeBeach(beach) { - var circle = beach.circle, - x = circle.x, - y = circle.cy, - vertex = [x, y], - previous = beach.P, - next = beach.N, - disappearing = [beach]; - - detachBeach(beach); - - var lArc = previous; - while (lArc.circle - && Math.abs(x - lArc.circle.x) < epsilon$4 - && Math.abs(y - lArc.circle.cy) < epsilon$4) { - previous = lArc.P; - disappearing.unshift(lArc); - detachBeach(lArc); - lArc = previous; - } - - disappearing.unshift(lArc); - detachCircle(lArc); - - var rArc = next; - while (rArc.circle - && Math.abs(x - rArc.circle.x) < epsilon$4 - && Math.abs(y - rArc.circle.cy) < epsilon$4) { - next = rArc.N; - disappearing.push(rArc); - detachBeach(rArc); - rArc = next; - } - - disappearing.push(rArc); - detachCircle(rArc); - - var nArcs = disappearing.length, - iArc; - for (iArc = 1; iArc < nArcs; ++iArc) { - rArc = disappearing[iArc]; - lArc = disappearing[iArc - 1]; - setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); - } - - lArc = disappearing[0]; - rArc = disappearing[nArcs - 1]; - rArc.edge = createEdge(lArc.site, rArc.site, null, vertex); - - attachCircle(lArc); - attachCircle(rArc); -} - -function addBeach(site) { - var x = site[0], - directrix = site[1], - lArc, - rArc, - dxl, - dxr, - node = beaches._; - - while (node) { - dxl = leftBreakPoint(node, directrix) - x; - if (dxl > epsilon$4) node = node.L; else { - dxr = x - rightBreakPoint(node, directrix); - if (dxr > epsilon$4) { - if (!node.R) { - lArc = node; - break; - } - node = node.R; - } else { - if (dxl > -epsilon$4) { - lArc = node.P; - rArc = node; - } else if (dxr > -epsilon$4) { - lArc = node; - rArc = node.N; - } else { - lArc = rArc = node; - } - break; - } - } - } - - createCell(site); - var newArc = createBeach(site); - beaches.insert(lArc, newArc); - - if (!lArc && !rArc) return; - - if (lArc === rArc) { - detachCircle(lArc); - rArc = createBeach(lArc.site); - beaches.insert(newArc, rArc); - newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site); - attachCircle(lArc); - attachCircle(rArc); - return; - } - - if (!rArc) { // && lArc - newArc.edge = createEdge(lArc.site, newArc.site); - return; - } - - // else lArc !== rArc - detachCircle(lArc); - detachCircle(rArc); - - var lSite = lArc.site, - ax = lSite[0], - ay = lSite[1], - bx = site[0] - ax, - by = site[1] - ay, - rSite = rArc.site, - cx = rSite[0] - ax, - cy = rSite[1] - ay, - d = 2 * (bx * cy - by * cx), - hb = bx * bx + by * by, - hc = cx * cx + cy * cy, - vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay]; - - setEdgeEnd(rArc.edge, lSite, rSite, vertex); - newArc.edge = createEdge(lSite, site, null, vertex); - rArc.edge = createEdge(site, rSite, null, vertex); - attachCircle(lArc); - attachCircle(rArc); -} - -function leftBreakPoint(arc, directrix) { - var site = arc.site, - rfocx = site[0], - rfocy = site[1], - pby2 = rfocy - directrix; - - if (!pby2) return rfocx; - - var lArc = arc.P; - if (!lArc) return -Infinity; - - site = lArc.site; - var lfocx = site[0], - lfocy = site[1], - plby2 = lfocy - directrix; - - if (!plby2) return lfocx; - - var hl = lfocx - rfocx, - aby2 = 1 / pby2 - 1 / plby2, - b = hl / plby2; - - if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; - - return (rfocx + lfocx) / 2; -} - -function rightBreakPoint(arc, directrix) { - var rArc = arc.N; - if (rArc) return leftBreakPoint(rArc, directrix); - var site = arc.site; - return site[1] === directrix ? site[0] : Infinity; -} - -var epsilon$4 = 1e-6; -var epsilon2$2 = 1e-12; -var beaches; -var cells; -var circles; -var edges; - -function triangleArea(a, b, c) { - return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]); -} - -function lexicographic(a, b) { - return b[1] - a[1] - || b[0] - a[0]; -} - -function Diagram(sites, extent) { - var site = sites.sort(lexicographic).pop(), - x, - y, - circle; - - edges = []; - cells = new Array(sites.length); - beaches = new RedBlackTree; - circles = new RedBlackTree; - - while (true) { - circle = firstCircle; - if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) { - if (site[0] !== x || site[1] !== y) { - addBeach(site); - x = site[0], y = site[1]; - } - site = sites.pop(); - } else if (circle) { - removeBeach(circle.arc); - } else { - break; - } - } - - sortCellHalfedges(); - - if (extent) { - var x0 = +extent[0][0], - y0 = +extent[0][1], - x1 = +extent[1][0], - y1 = +extent[1][1]; - clipEdges(x0, y0, x1, y1); - clipCells(x0, y0, x1, y1); - } - - this.edges = edges; - this.cells = cells; - - beaches = - circles = - edges = - cells = null; -} - -Diagram.prototype = { - constructor: Diagram, - - polygons: function() { - var edges = this.edges; - - return this.cells.map(function(cell) { - var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); }); - polygon.data = cell.site.data; - return polygon; - }); - }, - - triangles: function() { - var triangles = [], - edges = this.edges; - - this.cells.forEach(function(cell, i) { - if (!(m = (halfedges = cell.halfedges).length)) return; - var site = cell.site, - halfedges, - j = -1, - m, - s0, - e1 = edges[halfedges[m - 1]], - s1 = e1.left === site ? e1.right : e1.left; - - while (++j < m) { - s0 = s1; - e1 = edges[halfedges[j]]; - s1 = e1.left === site ? e1.right : e1.left; - if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) { - triangles.push([site.data, s0.data, s1.data]); - } - } - }); - - return triangles; - }, - - links: function() { - return this.edges.filter(function(edge) { - return edge.right; - }).map(function(edge) { - return { - source: edge.left.data, - target: edge.right.data - }; - }); - }, - - find: function(x, y, radius) { - var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell; - - // Use the previously-found cell, or start with an arbitrary one. - while (!(cell = that.cells[i1])) if (++i1 >= n) return null; - var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy; - - // Traverse the half-edges to find a closer cell, if any. - do { - cell = that.cells[i0 = i1], i1 = null; - cell.halfedges.forEach(function(e) { - var edge = that.edges[e], v = edge.left; - if ((v === cell.site || !v) && !(v = edge.right)) return; - var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy; - if (v2 < d2) d2 = v2, i1 = v.index; - }); - } while (i1 !== null); - - that._found = i0; - - return radius == null || d2 <= radius * radius ? cell.site : null; - } -}; - -function voronoi() { - var x = x$4, - y = y$4, - extent = null; - - function voronoi(data) { - return new Diagram(data.map(function(d, i) { - var s = [Math.round(x(d, i, data) / epsilon$4) * epsilon$4, Math.round(y(d, i, data) / epsilon$4) * epsilon$4]; - s.index = i; - s.data = d; - return s; - }), extent); - } - - voronoi.polygons = function(data) { - return voronoi(data).polygons(); - }; - - voronoi.links = function(data) { - return voronoi(data).links(); - }; - - voronoi.triangles = function(data) { - return voronoi(data).triangles(); - }; - - voronoi.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$c(+_), voronoi) : x; - }; - - voronoi.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$c(+_), voronoi) : y; - }; - - voronoi.extent = function(_) { - return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]]; - }; - - voronoi.size = function(_) { - return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]]; - }; - - return voronoi; -} - -function constant$d(x) { - return function() { - return x; - }; -} - -function ZoomEvent(target, type, transform) { - this.target = target; - this.type = type; - this.transform = transform; -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity$9 = new Transform(1, 0, 0); - -transform$1.prototype = Transform.prototype; - -function transform$1(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity$9; - return node.__zoom; -} - -function nopropagation$2() { - exports.event.stopImmediatePropagation(); -} - -function noevent$2() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$2() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent$1() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity$9; -} - -function defaultWheelDelta() { - return -exports.event.deltaY * (exports.event.deltaMode === 1 ? 0.05 : exports.event.deltaMode ? 1 : 0.002); -} - -function defaultTouchable$2() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter$2, - extent = defaultExtent$1, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable$2, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p); - }; - - zoom.scaleTo = function(selection, k, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p); - }; - - zoom.translateBy = function(selection, x, y) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }); - }; - - zoom.translateTo = function(selection, x, y, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity$9.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point) { - transition - .on("start.zoom", function() { gesture(this, arguments).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function wheeled() { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, arguments), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = mouse(this); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent$2(); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var g = gesture(this, arguments, true), - v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = mouse(this), - x0 = exports.event.clientX, - y0 = exports.event.clientY; - - dragDisable(exports.event.view); - nopropagation$2(); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved() { - noevent$2(); - if (!g.moved) { - var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped() { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(exports.event.view, g.moved); - noevent$2(); - g.end(); - } - } - - function dblclicked() { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = mouse(this), - p1 = t0.invert(p0), - k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); - - noevent$2(); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); - else select(this).call(zoom.transform, t1); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.touches, - n = touches.length, - g = gesture(this, arguments, exports.event.changedTouches.length === n), - started, i, t, p; - - nopropagation$2(); - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t, p, l; - - noevent$2(); - if (touchstarting) touchstarting = clearTimeout(touchstarting); - g.taps = 0; - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t; - - nopropagation$2(); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$d(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$d(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$d(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$d([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - return zoom; -} - -exports.FormatSpecifier = FormatSpecifier; -exports.active = active; -exports.arc = arc; -exports.area = area$3; -exports.areaRadial = areaRadial; -exports.ascending = ascending; -exports.autoType = autoType; -exports.axisBottom = axisBottom; -exports.axisLeft = axisLeft; -exports.axisRight = axisRight; -exports.axisTop = axisTop; -exports.bisect = bisectRight; -exports.bisectLeft = bisectLeft; -exports.bisectRight = bisectRight; -exports.bisector = bisector; -exports.blob = blob; -exports.brush = brush; -exports.brushSelection = brushSelection; -exports.brushX = brushX; -exports.brushY = brushY; -exports.buffer = buffer; -exports.chord = chord; -exports.clientPoint = point; -exports.cluster = cluster; -exports.color = color; -exports.contourDensity = density; -exports.contours = contours; -exports.create = create; -exports.creator = creator; -exports.cross = cross; -exports.csv = csv$1; -exports.csvFormat = csvFormat; -exports.csvFormatBody = csvFormatBody; -exports.csvFormatRow = csvFormatRow; -exports.csvFormatRows = csvFormatRows; -exports.csvFormatValue = csvFormatValue; -exports.csvParse = csvParse; -exports.csvParseRows = csvParseRows; -exports.cubehelix = cubehelix; -exports.curveBasis = basis$2; -exports.curveBasisClosed = basisClosed$1; -exports.curveBasisOpen = basisOpen; -exports.curveBundle = bundle; -exports.curveCardinal = cardinal; -exports.curveCardinalClosed = cardinalClosed; -exports.curveCardinalOpen = cardinalOpen; -exports.curveCatmullRom = catmullRom; -exports.curveCatmullRomClosed = catmullRomClosed; -exports.curveCatmullRomOpen = catmullRomOpen; -exports.curveLinear = curveLinear; -exports.curveLinearClosed = linearClosed; -exports.curveMonotoneX = monotoneX; -exports.curveMonotoneY = monotoneY; -exports.curveNatural = natural; -exports.curveStep = step; -exports.curveStepAfter = stepAfter; -exports.curveStepBefore = stepBefore; -exports.customEvent = customEvent; -exports.descending = descending; -exports.deviation = deviation; -exports.dispatch = dispatch; -exports.drag = drag; -exports.dragDisable = dragDisable; -exports.dragEnable = yesdrag; -exports.dsv = dsv; -exports.dsvFormat = dsvFormat; -exports.easeBack = backInOut; -exports.easeBackIn = backIn; -exports.easeBackInOut = backInOut; -exports.easeBackOut = backOut; -exports.easeBounce = bounceOut; -exports.easeBounceIn = bounceIn; -exports.easeBounceInOut = bounceInOut; -exports.easeBounceOut = bounceOut; -exports.easeCircle = circleInOut; -exports.easeCircleIn = circleIn; -exports.easeCircleInOut = circleInOut; -exports.easeCircleOut = circleOut; -exports.easeCubic = cubicInOut; -exports.easeCubicIn = cubicIn; -exports.easeCubicInOut = cubicInOut; -exports.easeCubicOut = cubicOut; -exports.easeElastic = elasticOut; -exports.easeElasticIn = elasticIn; -exports.easeElasticInOut = elasticInOut; -exports.easeElasticOut = elasticOut; -exports.easeExp = expInOut; -exports.easeExpIn = expIn; -exports.easeExpInOut = expInOut; -exports.easeExpOut = expOut; -exports.easeLinear = linear$1; -exports.easePoly = polyInOut; -exports.easePolyIn = polyIn; -exports.easePolyInOut = polyInOut; -exports.easePolyOut = polyOut; -exports.easeQuad = quadInOut; -exports.easeQuadIn = quadIn; -exports.easeQuadInOut = quadInOut; -exports.easeQuadOut = quadOut; -exports.easeSin = sinInOut; -exports.easeSinIn = sinIn; -exports.easeSinInOut = sinInOut; -exports.easeSinOut = sinOut; -exports.entries = entries; -exports.extent = extent; -exports.forceCenter = center$1; -exports.forceCollide = collide; -exports.forceLink = link; -exports.forceManyBody = manyBody; -exports.forceRadial = radial; -exports.forceSimulation = simulation; -exports.forceX = x$2; -exports.forceY = y$2; -exports.formatDefaultLocale = defaultLocale; -exports.formatLocale = formatLocale; -exports.formatSpecifier = formatSpecifier; -exports.geoAlbers = albers; -exports.geoAlbersUsa = albersUsa; -exports.geoArea = area$1; -exports.geoAzimuthalEqualArea = azimuthalEqualArea; -exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; -exports.geoAzimuthalEquidistant = azimuthalEquidistant; -exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; -exports.geoBounds = bounds; -exports.geoCentroid = centroid; -exports.geoCircle = circle; -exports.geoClipAntimeridian = clipAntimeridian; -exports.geoClipCircle = clipCircle; -exports.geoClipExtent = extent$1; -exports.geoClipRectangle = clipRectangle; -exports.geoConicConformal = conicConformal; -exports.geoConicConformalRaw = conicConformalRaw; -exports.geoConicEqualArea = conicEqualArea; -exports.geoConicEqualAreaRaw = conicEqualAreaRaw; -exports.geoConicEquidistant = conicEquidistant; -exports.geoConicEquidistantRaw = conicEquidistantRaw; -exports.geoContains = contains$1; -exports.geoDistance = distance; -exports.geoEqualEarth = equalEarth; -exports.geoEqualEarthRaw = equalEarthRaw; -exports.geoEquirectangular = equirectangular; -exports.geoEquirectangularRaw = equirectangularRaw; -exports.geoGnomonic = gnomonic; -exports.geoGnomonicRaw = gnomonicRaw; -exports.geoGraticule = graticule; -exports.geoGraticule10 = graticule10; -exports.geoIdentity = identity$5; -exports.geoInterpolate = interpolate$1; -exports.geoLength = length$1; -exports.geoMercator = mercator; -exports.geoMercatorRaw = mercatorRaw; -exports.geoNaturalEarth1 = naturalEarth1; -exports.geoNaturalEarth1Raw = naturalEarth1Raw; -exports.geoOrthographic = orthographic; -exports.geoOrthographicRaw = orthographicRaw; -exports.geoPath = index$1; -exports.geoProjection = projection; -exports.geoProjectionMutator = projectionMutator; -exports.geoRotation = rotation; -exports.geoStereographic = stereographic; -exports.geoStereographicRaw = stereographicRaw; -exports.geoStream = geoStream; -exports.geoTransform = transform; -exports.geoTransverseMercator = transverseMercator; -exports.geoTransverseMercatorRaw = transverseMercatorRaw; -exports.gray = gray; -exports.hcl = hcl; -exports.hierarchy = hierarchy; -exports.histogram = histogram; -exports.hsl = hsl; -exports.html = html; -exports.image = image; -exports.interpolate = interpolateValue; -exports.interpolateArray = array$1; -exports.interpolateBasis = basis$1; -exports.interpolateBasisClosed = basisClosed; -exports.interpolateBlues = Blues; -exports.interpolateBrBG = BrBG; -exports.interpolateBuGn = BuGn; -exports.interpolateBuPu = BuPu; -exports.interpolateCividis = cividis; -exports.interpolateCool = cool; -exports.interpolateCubehelix = cubehelix$2; -exports.interpolateCubehelixDefault = cubehelix$3; -exports.interpolateCubehelixLong = cubehelixLong; -exports.interpolateDate = date; -exports.interpolateDiscrete = discrete; -exports.interpolateGnBu = GnBu; -exports.interpolateGreens = Greens; -exports.interpolateGreys = Greys; -exports.interpolateHcl = hcl$2; -exports.interpolateHclLong = hclLong; -exports.interpolateHsl = hsl$2; -exports.interpolateHslLong = hslLong; -exports.interpolateHue = hue$1; -exports.interpolateInferno = inferno; -exports.interpolateLab = lab$1; -exports.interpolateMagma = magma; -exports.interpolateNumber = interpolateNumber; -exports.interpolateNumberArray = numberArray; -exports.interpolateObject = object; -exports.interpolateOrRd = OrRd; -exports.interpolateOranges = Oranges; -exports.interpolatePRGn = PRGn; -exports.interpolatePiYG = PiYG; -exports.interpolatePlasma = plasma; -exports.interpolatePuBu = PuBu; -exports.interpolatePuBuGn = PuBuGn; -exports.interpolatePuOr = PuOr; -exports.interpolatePuRd = PuRd; -exports.interpolatePurples = Purples; -exports.interpolateRainbow = rainbow; -exports.interpolateRdBu = RdBu; -exports.interpolateRdGy = RdGy; -exports.interpolateRdPu = RdPu; -exports.interpolateRdYlBu = RdYlBu; -exports.interpolateRdYlGn = RdYlGn; -exports.interpolateReds = Reds; -exports.interpolateRgb = interpolateRgb; -exports.interpolateRgbBasis = rgbBasis; -exports.interpolateRgbBasisClosed = rgbBasisClosed; -exports.interpolateRound = interpolateRound; -exports.interpolateSinebow = sinebow; -exports.interpolateSpectral = Spectral; -exports.interpolateString = interpolateString; -exports.interpolateTransformCss = interpolateTransformCss; -exports.interpolateTransformSvg = interpolateTransformSvg; -exports.interpolateTurbo = turbo; -exports.interpolateViridis = viridis; -exports.interpolateWarm = warm; -exports.interpolateYlGn = YlGn; -exports.interpolateYlGnBu = YlGnBu; -exports.interpolateYlOrBr = YlOrBr; -exports.interpolateYlOrRd = YlOrRd; -exports.interpolateZoom = interpolateZoom; -exports.interrupt = interrupt; -exports.interval = interval$1; -exports.isoFormat = formatIso; -exports.isoParse = parseIso; -exports.json = json; -exports.keys = keys; -exports.lab = lab; -exports.lch = lch; -exports.line = line; -exports.lineRadial = lineRadial$1; -exports.linkHorizontal = linkHorizontal; -exports.linkRadial = linkRadial; -exports.linkVertical = linkVertical; -exports.local = local; -exports.map = map$1; -exports.matcher = matcher; -exports.max = max; -exports.mean = mean; -exports.median = median; -exports.merge = merge; -exports.min = min; -exports.mouse = mouse; -exports.namespace = namespace; -exports.namespaces = namespaces; -exports.nest = nest; -exports.now = now; -exports.pack = index$2; -exports.packEnclose = enclose; -exports.packSiblings = siblings; -exports.pairs = pairs; -exports.partition = partition; -exports.path = path; -exports.permute = permute; -exports.pie = pie; -exports.piecewise = piecewise; -exports.pointRadial = pointRadial; -exports.polygonArea = area$2; -exports.polygonCentroid = centroid$1; -exports.polygonContains = contains$2; -exports.polygonHull = hull; -exports.polygonLength = length$2; -exports.precisionFixed = precisionFixed; -exports.precisionPrefix = precisionPrefix; -exports.precisionRound = precisionRound; -exports.quadtree = quadtree; -exports.quantile = threshold; -exports.quantize = quantize; -exports.radialArea = areaRadial; -exports.radialLine = lineRadial$1; -exports.randomBates = bates; -exports.randomExponential = exponential$1; -exports.randomIrwinHall = irwinHall; -exports.randomLogNormal = logNormal; -exports.randomNormal = normal; -exports.randomUniform = uniform; -exports.range = sequence; -exports.rgb = rgb; -exports.ribbon = ribbon; -exports.scaleBand = band; -exports.scaleDiverging = diverging; -exports.scaleDivergingLog = divergingLog; -exports.scaleDivergingPow = divergingPow; -exports.scaleDivergingSqrt = divergingSqrt; -exports.scaleDivergingSymlog = divergingSymlog; -exports.scaleIdentity = identity$7; -exports.scaleImplicit = implicit; -exports.scaleLinear = linear$2; -exports.scaleLog = log$1; -exports.scaleOrdinal = ordinal; -exports.scalePoint = point$1; -exports.scalePow = pow$1; -exports.scaleQuantile = quantile; -exports.scaleQuantize = quantize$1; -exports.scaleSequential = sequential; -exports.scaleSequentialLog = sequentialLog; -exports.scaleSequentialPow = sequentialPow; -exports.scaleSequentialQuantile = sequentialQuantile; -exports.scaleSequentialSqrt = sequentialSqrt; -exports.scaleSequentialSymlog = sequentialSymlog; -exports.scaleSqrt = sqrt$1; -exports.scaleSymlog = symlog; -exports.scaleThreshold = threshold$1; -exports.scaleTime = time; -exports.scaleUtc = utcTime; -exports.scan = scan; -exports.schemeAccent = Accent; -exports.schemeBlues = scheme$l; -exports.schemeBrBG = scheme; -exports.schemeBuGn = scheme$9; -exports.schemeBuPu = scheme$a; -exports.schemeCategory10 = category10; -exports.schemeDark2 = Dark2; -exports.schemeGnBu = scheme$b; -exports.schemeGreens = scheme$m; -exports.schemeGreys = scheme$n; -exports.schemeOrRd = scheme$c; -exports.schemeOranges = scheme$q; -exports.schemePRGn = scheme$1; -exports.schemePaired = Paired; -exports.schemePastel1 = Pastel1; -exports.schemePastel2 = Pastel2; -exports.schemePiYG = scheme$2; -exports.schemePuBu = scheme$e; -exports.schemePuBuGn = scheme$d; -exports.schemePuOr = scheme$3; -exports.schemePuRd = scheme$f; -exports.schemePurples = scheme$o; -exports.schemeRdBu = scheme$4; -exports.schemeRdGy = scheme$5; -exports.schemeRdPu = scheme$g; -exports.schemeRdYlBu = scheme$6; -exports.schemeRdYlGn = scheme$7; -exports.schemeReds = scheme$p; -exports.schemeSet1 = Set1; -exports.schemeSet2 = Set2; -exports.schemeSet3 = Set3; -exports.schemeSpectral = scheme$8; -exports.schemeTableau10 = Tableau10; -exports.schemeYlGn = scheme$i; -exports.schemeYlGnBu = scheme$h; -exports.schemeYlOrBr = scheme$j; -exports.schemeYlOrRd = scheme$k; -exports.select = select; -exports.selectAll = selectAll; -exports.selection = selection; -exports.selector = selector; -exports.selectorAll = selectorAll; -exports.set = set$2; -exports.shuffle = shuffle; -exports.stack = stack; -exports.stackOffsetDiverging = diverging$1; -exports.stackOffsetExpand = expand; -exports.stackOffsetNone = none$1; -exports.stackOffsetSilhouette = silhouette; -exports.stackOffsetWiggle = wiggle; -exports.stackOrderAppearance = appearance; -exports.stackOrderAscending = ascending$3; -exports.stackOrderDescending = descending$2; -exports.stackOrderInsideOut = insideOut; -exports.stackOrderNone = none$2; -exports.stackOrderReverse = reverse; -exports.stratify = stratify; -exports.style = styleValue; -exports.sum = sum; -exports.svg = svg; -exports.symbol = symbol; -exports.symbolCircle = circle$2; -exports.symbolCross = cross$2; -exports.symbolDiamond = diamond; -exports.symbolSquare = square; -exports.symbolStar = star; -exports.symbolTriangle = triangle; -exports.symbolWye = wye; -exports.symbols = symbols; -exports.text = text; -exports.thresholdFreedmanDiaconis = freedmanDiaconis; -exports.thresholdScott = scott; -exports.thresholdSturges = thresholdSturges; -exports.tickFormat = tickFormat; -exports.tickIncrement = tickIncrement; -exports.tickStep = tickStep; -exports.ticks = ticks; -exports.timeDay = day; -exports.timeDays = days; -exports.timeFormatDefaultLocale = defaultLocale$1; -exports.timeFormatLocale = formatLocale$1; -exports.timeFriday = friday; -exports.timeFridays = fridays; -exports.timeHour = hour; -exports.timeHours = hours; -exports.timeInterval = newInterval; -exports.timeMillisecond = millisecond; -exports.timeMilliseconds = milliseconds; -exports.timeMinute = minute; -exports.timeMinutes = minutes; -exports.timeMonday = monday; -exports.timeMondays = mondays; -exports.timeMonth = month; -exports.timeMonths = months; -exports.timeSaturday = saturday; -exports.timeSaturdays = saturdays; -exports.timeSecond = second; -exports.timeSeconds = seconds; -exports.timeSunday = sunday; -exports.timeSundays = sundays; -exports.timeThursday = thursday; -exports.timeThursdays = thursdays; -exports.timeTuesday = tuesday; -exports.timeTuesdays = tuesdays; -exports.timeWednesday = wednesday; -exports.timeWednesdays = wednesdays; -exports.timeWeek = sunday; -exports.timeWeeks = sundays; -exports.timeYear = year; -exports.timeYears = years; -exports.timeout = timeout$1; -exports.timer = timer; -exports.timerFlush = timerFlush; -exports.touch = touch; -exports.touches = touches; -exports.transition = transition; -exports.transpose = transpose; -exports.tree = tree; -exports.treemap = index$3; -exports.treemapBinary = binary; -exports.treemapDice = treemapDice; -exports.treemapResquarify = resquarify; -exports.treemapSlice = treemapSlice; -exports.treemapSliceDice = sliceDice; -exports.treemapSquarify = squarify; -exports.tsv = tsv$1; -exports.tsvFormat = tsvFormat; -exports.tsvFormatBody = tsvFormatBody; -exports.tsvFormatRow = tsvFormatRow; -exports.tsvFormatRows = tsvFormatRows; -exports.tsvFormatValue = tsvFormatValue; -exports.tsvParse = tsvParse; -exports.tsvParseRows = tsvParseRows; -exports.utcDay = utcDay; -exports.utcDays = utcDays; -exports.utcFriday = utcFriday; -exports.utcFridays = utcFridays; -exports.utcHour = utcHour; -exports.utcHours = utcHours; -exports.utcMillisecond = millisecond; -exports.utcMilliseconds = milliseconds; -exports.utcMinute = utcMinute; -exports.utcMinutes = utcMinutes; -exports.utcMonday = utcMonday; -exports.utcMondays = utcMondays; -exports.utcMonth = utcMonth; -exports.utcMonths = utcMonths; -exports.utcSaturday = utcSaturday; -exports.utcSaturdays = utcSaturdays; -exports.utcSecond = second; -exports.utcSeconds = seconds; -exports.utcSunday = utcSunday; -exports.utcSundays = utcSundays; -exports.utcThursday = utcThursday; -exports.utcThursdays = utcThursdays; -exports.utcTuesday = utcTuesday; -exports.utcTuesdays = utcTuesdays; -exports.utcWednesday = utcWednesday; -exports.utcWednesdays = utcWednesdays; -exports.utcWeek = utcSunday; -exports.utcWeeks = utcSundays; -exports.utcYear = utcYear; -exports.utcYears = utcYears; -exports.values = values; -exports.variance = variance; -exports.version = version; -exports.voronoi = voronoi; -exports.window = defaultView; -exports.xml = xml; -exports.zip = zip; -exports.zoom = zoom; -exports.zoomIdentity = identity$9; -exports.zoomTransform = transform$1; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/ilinx_home/maps/map2_files/language.js b/ilinx_home/maps/map2_files/language.js deleted file mode 100644 index f82b6c3..0000000 --- a/ilinx_home/maps/map2_files/language.js +++ /dev/null @@ -1,486 +0,0 @@ -function shuffled(list) { - var newlist = []; - for (var i = 0; i < list.length; i++) { - newlist.push(list[i]); - } - for (var i = list.length - 1; i > 0; i--) { - var tmp = newlist[i]; - var j = randrange(i); - newlist[i] = newlist[j]; - newlist[j] = tmp; - } - return newlist; -} - -function choose(list, exponent) { - exponent = exponent || 1; - return list[Math.floor(Math.pow(Math.random(), exponent) * list.length)]; -} - -function randrange(lo, hi) { - if (hi == undefined) { - hi = lo; - lo = 0; - } - return Math.floor(Math.random() * (hi - lo)) + lo; -} - -function join(list, sep) { - if (list.length == 0) return ''; - sep = sep || ''; - var s = list[0]; - for (var i = 1; i < list.length; i++) { - s += sep; - s += list[i]; - } - return s; -} - -function capitalize(word) { - return word[0].toUpperCase() + word.slice(1); -} - -function spell(lang, syll) { - if (lang.noortho) return syll; - var s = ''; - for (var i = 0; i < syll.length; i++) { - var c = syll[i]; - s += lang.cortho[c] || lang.vortho[c] || defaultOrtho[c] || c; - } - return s; -} - -function makeSyllable(lang) { - while (true) { - var syll = ""; - for (var i = 0; i < lang.structure.length; i++) { - var ptype = lang.structure[i]; - if (lang.structure[i+1] == '?') { - i++; - if (Math.random() < 0.5) { - continue; - } - } - syll += choose(lang.phonemes[ptype], lang.exponent); - } - var bad = false; - for (var i = 0; i < lang.restricts.length; i++) { - if (lang.restricts[i].test(syll)) { - bad = true; - break; - } - } - if (bad) continue; - return spell(lang, syll); - } -} - -function getMorpheme(lang, key) { - if (lang.nomorph) { - return makeSyllable(lang); - } - key = key || ''; - var list = lang.morphemes[key] || []; - var extras = 10; - if (key) extras = 1; - while (true) { - var n = randrange(list.length + extras); - if (list[n]) return list[n]; - var morph = makeSyllable(lang); - var bad = false; - for (var k in lang.morphemes) { - if (lang.morphemes[k].includes(morph)) { - bad = true; - break; - } - } - if (bad) continue; - list.push(morph); - lang.morphemes[key] = list; - return morph; - } -} - -function makeWord(lang, key) { - var nsylls = randrange(lang.minsyll, lang.maxsyll + 1); - var w = ''; - var keys = []; - keys[randrange(nsylls)] = key; - for (var i = 0; i < nsylls; i++) { - w += getMorpheme(lang, keys[i]); - } - return w; -} - -function getWord(lang, key) { - key = key || ''; - var ws = lang.words[key] || []; - var extras = 3; - if (key) extras = 2; - while (true) { - var n = randrange(ws.length + extras); - var w = ws[n]; - if (w) { - return w; - } - w = makeWord(lang, key); - var bad = false; - for (var k in lang.words) { - if (lang.words[k].includes(w)) { - bad = true; - break; - } - } - if (bad) continue; - ws.push(w); - lang.words[key] = ws; - return w; - } -} -function makeName(lang, key) { - key = key || ''; - lang.genitive = lang.genitive || getMorpheme(lang, 'of'); - lang.definite = lang.definite || getMorpheme(lang, 'the'); - while (true) { - var name = null; - if (Math.random() < 0.5) { - name = capitalize(getWord(lang, key)); - } else { - var w1 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - var w2 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - if (w1 == w2) continue; - if (Math.random() > 0.5) { - name = join([w1, w2], lang.joiner); - } else { - name = join([w1, lang.genitive, w2], lang.joiner); - } - } - if (Math.random() < 0.1) { - name = join([lang.definite, name], lang.joiner); - } - - if ((name.length < lang.minchar) || (name.length > lang.maxchar)) continue; - var used = false; - for (var i = 0; i < lang.names.length; i++) { - var name2 = lang.names[i]; - if ((name.indexOf(name2) != -1) || (name2.indexOf(name) != -1)) { - used = true; - break; - } - } - if (used) continue; - lang.names.push(name); - return name; - } -} - -function makeBasicLanguage() { - return { - phonemes: { - C: "ptkmnls", - V: "aeiou", - S: "s", - F: "mn", - L: "rl" - }, - structure: "CVC", - exponent: 2, - restricts: [], - cortho: {}, - vortho: {}, - noortho: true, - nomorph: true, - nowordpool: true, - minsyll: 1, - maxsyll: 1, - morphemes: {}, - words: {}, - names: [], - joiner: ' ', - maxchar: 12, - minchar: 5 - }; -} - -function makeOrthoLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - return lang; -} - -function makeRandomLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - lang.nomorph = false; - lang.nowordpool = false; - lang.phonemes.C = shuffled(choose(consets, 2).C); - lang.phonemes.V = shuffled(choose(vowsets, 2).V); - lang.phonemes.L = shuffled(choose(lsets, 2).L); - lang.phonemes.S = shuffled(choose(ssets, 2).S); - lang.phonemes.F = shuffled(choose(fsets, 2).F); - lang.structure = choose(syllstructs); - lang.restricts = ressets[2].res; - lang.cortho = choose(corthsets, 2).orth; - lang.vortho = choose(vorthsets, 2).orth; - lang.minsyll = randrange(1, 3); - if (lang.structure.length < 3) lang.minsyll++; - lang.maxsyll = randrange(lang.minsyll + 1, 7); - lang.joiner = choose(' -'); - return lang; -} -var defaultOrtho = { - 'ʃ': 'sh', - 'ʒ': 'zh', - 'ʧ': 'ch', - 'ʤ': 'j', - 'ŋ': 'ng', - 'j': 'y', - 'x': 'kh', - 'ɣ': 'gh', - 'ʔ': '‘', - A: "á", - E: "é", - I: "í", - O: "ó", - U: "ú" -}; - -var corthsets = [ - { - name: "Default", - orth: {} - }, - { - name: "Slavic", - orth: { - 'ʃ': 'š', - 'ʒ': 'ž', - 'ʧ': 'č', - 'ʤ': 'ǧ', - 'j': 'j' - } - }, - { - name: "German", - orth: { - 'ʃ': 'sch', - 'ʒ': 'zh', - 'ʧ': 'tsch', - 'ʤ': 'dz', - 'j': 'j', - 'x': 'ch' - } - }, - { - name: "French", - orth: { - 'ʃ': 'ch', - 'ʒ': 'j', - 'ʧ': 'tch', - 'ʤ': 'dj', - 'x': 'kh' - } - }, - { - name: "Chinese (pinyin)", - orth: { - 'ʃ': 'x', - 'ʧ': 'q', - 'ʤ': 'j', - } - } -]; - -var vorthsets = [ - { - name: "Ácutes", - orth: {} - }, - { - name: "Ümlauts", - orth: { - A: "ä", - E: "ë", - I: "ï", - O: "ö", - U: "ü" - } - }, - { - name: "Welsh", - orth: { - A: "â", - E: "ê", - I: "y", - O: "ô", - U: "w" - } - }, - { - name: "Diphthongs", - orth: { - A: "au", - E: "ei", - I: "ie", - O: "ou", - U: "oo" - } - }, - { - name: "Doubles", - orth: { - A: "aa", - E: "ee", - I: "ii", - O: "oo", - U: "uu" - } - } -]; - -var consets = [ - { - name: "Minimal", - C: "ptkmnls" - }, - { - name: "English-ish", - C: "ptkbdgmnlrsʃzʒʧ" - }, - { - name: "Pirahã (very simple)", - C: "ptkmnh" - }, - { - name: "Hawaiian-ish", - C: "hklmnpwʔ" - }, - { - name: "Greenlandic-ish", - C: "ptkqvsgrmnŋlj" - }, - { - name: "Arabic-ish", - C: "tksʃdbqɣxmnlrwj" - }, - { - name: "Arabic-lite", - C: "tkdgmnsʃ" - }, - { - name: "English-lite", - C: "ptkbdgmnszʒʧhjw" - } -]; - -var ssets = [ - { - name: "Just s", - S: "s" - }, - { - name: "s ʃ", - S: "sʃ" - }, - { - name: "s ʃ f", - S: "sʃf" - } -]; - -var lsets = [ - { - name: "r l", - L: "rl" - }, - { - name: "Just r", - L: "r" - }, - { - name: "Just l", - L: "l" - }, - { - name: "w j", - L: "wj" - }, - { - name: "r l w j", - L: "rlwj" - } -]; - -var fsets = [ - { - name: "m n", - F: "mn" - }, - { - name: "s k", - F: "sk" - }, - { - name: "m n ŋ", - F: "mnŋ" - }, - { - name: "s ʃ z ʒ", - F: "sʃzʒ" - } -]; - -var vowsets = [ - { - name: "Standard 5-vowel", - V: "aeiou" - }, - { - name: "3-vowel a i u", - V: "aiu" - }, - { - name: "Extra A E I", - V: "aeiouAEI" - }, - { - name: "Extra U", - V: "aeiouU" - }, - { - name: "5-vowel a i u A I", - V: "aiuAI" - }, - { - name: "3-vowel e o u", - V: "eou" - }, - { - name: "Extra A O U", - V: "aeiouAOU" - } -]; - -var syllstructs = [ - "CVC", - "CVV?C", - "CVVC?", "CVC?", "CV", "VC", "CVF", "C?VC", "CVF?", - "CL?VC", "CL?VF", "S?CVC", "S?CVF", "S?CVC?", - "C?VF", "C?VC?", "C?VF?", "C?L?VC", "VC", - "CVL?C?", "C?VL?C", "C?VLC?"]; - -var ressets = [ - { - name: "None", - res: [] - }, - { - name: "Double sounds", - res: [/(.)\1/] - }, - { - name: "Doubles and hard clusters", - res: [/[sʃf][sʃ]/, /(.)\1/, /[rl][rl]/] - } -]; - diff --git a/ilinx_home/maps/map2_files/priority-queue.js b/ilinx_home/maps/map2_files/priority-queue.js deleted file mode 100644 index f8f6b54..0000000 --- a/ilinx_home/maps/map2_files/priority-queue.js +++ /dev/null @@ -1,387 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PriorityQueue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>> 1; - if (comparator(array[mid], value) >= 0) { - low = mid + 1; - } else { - high = mid; - } - } - return low; -}; - -module.exports = ArrayStrategy = (function() { - function ArrayStrategy(options) { - var ref; - this.options = options; - this.comparator = this.options.comparator; - this.data = ((ref = this.options.initialValues) != null ? ref.slice(0) : void 0) || []; - this.data.sort(this.comparator).reverse(); - } - - ArrayStrategy.prototype.queue = function(value) { - var pos; - pos = binarySearchForIndexReversed(this.data, value, this.comparator); - this.data.splice(pos, 0, value); - return void 0; - }; - - ArrayStrategy.prototype.dequeue = function() { - return this.data.pop(); - }; - - ArrayStrategy.prototype.peek = function() { - return this.data[this.data.length - 1]; - }; - - ArrayStrategy.prototype.clear = function() { - this.data.length = 0; - return void 0; - }; - - return ArrayStrategy; - -})(); - - -},{}],4:[function(_dereq_,module,exports){ -var BHeapStrategy; - -module.exports = BHeapStrategy = (function() { - function BHeapStrategy(options) { - var arr, i, j, k, len, ref, ref1, shift, value; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.pageSize = (options != null ? options.pageSize : void 0) || 512; - this.length = 0; - shift = 0; - while ((1 << shift) < this.pageSize) { - shift += 1; - } - if (1 << shift !== this.pageSize) { - throw 'pageSize must be a power of two'; - } - this._shift = shift; - this._emptyMemoryPageTemplate = arr = []; - for (i = j = 0, ref = this.pageSize; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { - arr.push(null); - } - this._memory = []; - this._mask = this.pageSize - 1; - if (options.initialValues) { - ref1 = options.initialValues; - for (k = 0, len = ref1.length; k < len; k++) { - value = ref1[k]; - this.queue(value); - } - } - } - - BHeapStrategy.prototype.queue = function(value) { - this.length += 1; - this._write(this.length, value); - this._bubbleUp(this.length, value); - return void 0; - }; - - BHeapStrategy.prototype.dequeue = function() { - var ret, val; - ret = this._read(1); - val = this._read(this.length); - this.length -= 1; - if (this.length > 0) { - this._write(1, val); - this._bubbleDown(1, val); - } - return ret; - }; - - BHeapStrategy.prototype.peek = function() { - return this._read(1); - }; - - BHeapStrategy.prototype.clear = function() { - this.length = 0; - this._memory.length = 0; - return void 0; - }; - - BHeapStrategy.prototype._write = function(index, value) { - var page; - page = index >> this._shift; - while (page >= this._memory.length) { - this._memory.push(this._emptyMemoryPageTemplate.slice(0)); - } - return this._memory[page][index & this._mask] = value; - }; - - BHeapStrategy.prototype._read = function(index) { - return this._memory[index >> this._shift][index & this._mask]; - }; - - BHeapStrategy.prototype._bubbleUp = function(index, value) { - var compare, indexInPage, parentIndex, parentValue; - compare = this.comparator; - while (index > 1) { - indexInPage = index & this._mask; - if (index < this.pageSize || indexInPage > 3) { - parentIndex = (index & ~this._mask) | (indexInPage >> 1); - } else if (indexInPage < 2) { - parentIndex = (index - this.pageSize) >> this._shift; - parentIndex += parentIndex & ~(this._mask >> 1); - parentIndex |= this.pageSize >> 1; - } else { - parentIndex = index - 2; - } - parentValue = this._read(parentIndex); - if (compare(parentValue, value) < 0) { - break; - } - this._write(parentIndex, value); - this._write(index, parentValue); - index = parentIndex; - } - return void 0; - }; - - BHeapStrategy.prototype._bubbleDown = function(index, value) { - var childIndex1, childIndex2, childValue1, childValue2, compare; - compare = this.comparator; - while (index < this.length) { - if (index > this._mask && !(index & (this._mask - 1))) { - childIndex1 = childIndex2 = index + 2; - } else if (index & (this.pageSize >> 1)) { - childIndex1 = (index & ~this._mask) >> 1; - childIndex1 |= index & (this._mask >> 1); - childIndex1 = (childIndex1 + 1) << this._shift; - childIndex2 = childIndex1 + 1; - } else { - childIndex1 = index + (index & this._mask); - childIndex2 = childIndex1 + 1; - } - if (childIndex1 !== childIndex2 && childIndex2 <= this.length) { - childValue1 = this._read(childIndex1); - childValue2 = this._read(childIndex2); - if (compare(childValue1, value) < 0 && compare(childValue1, childValue2) <= 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else if (compare(childValue2, value) < 0) { - this._write(childIndex2, value); - this._write(index, childValue2); - index = childIndex2; - } else { - break; - } - } else if (childIndex1 <= this.length) { - childValue1 = this._read(childIndex1); - if (compare(childValue1, value) < 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else { - break; - } - } else { - break; - } - } - return void 0; - }; - - return BHeapStrategy; - -})(); - - -},{}],5:[function(_dereq_,module,exports){ -var BinaryHeapStrategy; - -module.exports = BinaryHeapStrategy = (function() { - function BinaryHeapStrategy(options) { - var ref; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.length = 0; - this.data = ((ref = options.initialValues) != null ? ref.slice(0) : void 0) || []; - this._heapify(); - } - - BinaryHeapStrategy.prototype._heapify = function() { - var i, j, ref; - if (this.data.length > 0) { - for (i = j = 1, ref = this.data.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) { - this._bubbleUp(i); - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype.queue = function(value) { - this.data.push(value); - this._bubbleUp(this.data.length - 1); - return void 0; - }; - - BinaryHeapStrategy.prototype.dequeue = function() { - var last, ret; - ret = this.data[0]; - last = this.data.pop(); - if (this.data.length > 0) { - this.data[0] = last; - this._bubbleDown(0); - } - return ret; - }; - - BinaryHeapStrategy.prototype.peek = function() { - return this.data[0]; - }; - - BinaryHeapStrategy.prototype.clear = function() { - this.length = 0; - this.data.length = 0; - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleUp = function(pos) { - var parent, x; - while (pos > 0) { - parent = (pos - 1) >>> 1; - if (this.comparator(this.data[pos], this.data[parent]) < 0) { - x = this.data[parent]; - this.data[parent] = this.data[pos]; - this.data[pos] = x; - pos = parent; - } else { - break; - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleDown = function(pos) { - var last, left, minIndex, right, x; - last = this.data.length - 1; - while (true) { - left = (pos << 1) + 1; - right = left + 1; - minIndex = pos; - if (left <= last && this.comparator(this.data[left], this.data[minIndex]) < 0) { - minIndex = left; - } - if (right <= last && this.comparator(this.data[right], this.data[minIndex]) < 0) { - minIndex = right; - } - if (minIndex !== pos) { - x = this.data[minIndex]; - this.data[minIndex] = this.data[pos]; - this.data[pos] = x; - pos = minIndex; - } else { - break; - } - } - return void 0; - }; - - return BinaryHeapStrategy; - -})(); - - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/ilinx_home/maps/map2_files/script.js b/ilinx_home/maps/map2_files/script.js deleted file mode 100644 index 1a4334d..0000000 --- a/ilinx_home/maps/map2_files/script.js +++ /dev/null @@ -1,21 +0,0 @@ -/* If you're feeling fancy you can add interactivity - to your site with Javascript */ - -// prints "hi" in the browser's dev tools console -console.log("hi"); -var svg = d3.select("svg"); - -var params = { - extent: defaultExtent, - generator: generateCoast, - npts: 1684, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - -doMap(svg, defaultParams); diff --git a/ilinx_home/maps/map2_files/terrain.js b/ilinx_home/maps/map2_files/terrain.js deleted file mode 100644 index 49a624c..0000000 --- a/ilinx_home/maps/map2_files/terrain.js +++ /dev/null @@ -1,1073 +0,0 @@ -"use strict"; - -function runif(lo, hi) { - return lo + Math.random() * (hi - lo); -} - -var rnorm = (function () { - var z2 = null; - function rnorm() { - if (z2 != null) { - var tmp = z2; - z2 = null; - return tmp; - } - var x1 = 0; - var x2 = 0; - var w = 2.0; - while (w >= 1) { - x1 = runif(-1, 1); - x2 = runif(-1, 1); - w = x1 * x1 + x2 * x2; - } - w = Math.sqrt(-2 * Math.log(w) / w); - z2 = x2 * w; - return x1 * w; - } - return rnorm; -})(); - -function randomVector(scale) { - return [scale * rnorm(), scale * rnorm()]; -} - -var defaultExtent = { - width: 1, - height: 1 -}; - -function generatePoints(n, extent) { - extent = extent || defaultExtent; - var pts = []; - for (var i = 0; i < n; i++) { - pts.push([(Math.random() - 0.5) * extent.width, (Math.random() - 0.5) * extent.height]); - } - return pts; -} - -function centroid(pts) { - var x = 0; - var y = 0; - for (var i = 0; i < pts.length; i++) { - x += pts[i][0]; - y += pts[i][1]; - } - return [x/pts.length, y/pts.length]; -} - -function improvePoints(pts, n, extent) { - n = n || 1; - extent = extent || defaultExtent; - for (var i = 0; i < n; i++) { - pts = voronoi(pts, extent) - .polygons(pts) - .map(centroid); - } - return pts; -} - -function generateGoodPoints(n, extent) { - extent = extent || defaultExtent; - var pts = generatePoints(n, extent); - pts = pts.sort(function (a, b) { - return a[0] - b[0]; - }); - return improvePoints(pts, 1, extent); -} - -function voronoi(pts, extent) { - extent = extent || defaultExtent; - var w = extent.width/2; - var h = extent.height/2; - return d3.voronoi().extent([[-w, -h], [w, h]])(pts); -} - -function makeMesh(pts, extent) { - extent = extent || defaultExtent; - var vor = voronoi(pts, extent); - var vxs = []; - var vxids = {}; - var adj = []; - var edges = []; - var tris = []; - for (var i = 0; i < vor.edges.length; i++) { - var e = vor.edges[i]; - if (e == undefined) continue; - var e0 = vxids[e[0]]; - var e1 = vxids[e[1]]; - if (e0 == undefined) { - e0 = vxs.length; - vxids[e[0]] = e0; - vxs.push(e[0]); - } - if (e1 == undefined) { - e1 = vxs.length; - vxids[e[1]] = e1; - vxs.push(e[1]); - } - adj[e0] = adj[e0] || []; - adj[e0].push(e1); - adj[e1] = adj[e1] || []; - adj[e1].push(e0); - edges.push([e0, e1, e.left, e.right]); - tris[e0] = tris[e0] || []; - if (!tris[e0].includes(e.left)) tris[e0].push(e.left); - if (e.right && !tris[e0].includes(e.right)) tris[e0].push(e.right); - tris[e1] = tris[e1] || []; - if (!tris[e1].includes(e.left)) tris[e1].push(e.left); - if (e.right && !tris[e1].includes(e.right)) tris[e1].push(e.right); - } - - var mesh = { - pts: pts, - vor: vor, - vxs: vxs, - adj: adj, - tris: tris, - edges: edges, - extent: extent - } - mesh.map = function (f) { - var mapped = vxs.map(f); - mapped.mesh = mesh; - return mapped; - } - return mesh; -} - - - -function generateGoodMesh(n, extent) { - extent = extent || defaultExtent; - var pts = generateGoodPoints(n, extent); - return makeMesh(pts, extent); -} -function isedge(mesh, i) { - return (mesh.adj[i].length < 3); -} - -function isnearedge(mesh, i) { - var x = mesh.vxs[i][0]; - var y = mesh.vxs[i][1]; - var w = mesh.extent.width; - var h = mesh.extent.height; - return x < -0.45 * w || x > 0.45 * w || y < -0.45 * h || y > 0.45 * h; -} - -function neighbours(mesh, i) { - var onbs = mesh.adj[i]; - var nbs = []; - for (var i = 0; i < onbs.length; i++) { - nbs.push(onbs[i]); - } - return nbs; -} - -function distance(mesh, i, j) { - var p = mesh.vxs[i]; - var q = mesh.vxs[j]; - return Math.sqrt((p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])); -} - -function quantile(h, q) { - var sortedh = []; - for (var i = 0; i < h.length; i++) { - sortedh[i] = h[i]; - } - sortedh.sort(d3.ascending); - return d3.quantile(sortedh, q); -} - -function zero(mesh) { - var z = []; - for (var i = 0; i < mesh.vxs.length; i++) { - z[i] = 0; - } - z.mesh = mesh; - return z; -} - -function slope(mesh, direction) { - return mesh.map(function (x) { - return x[0] * direction[0] + x[1] * direction[1]; - }); -} - -function cone(mesh, slope) { - return mesh.map(function (x) { - return Math.pow(x[0] * x[0] + x[1] * x[1], 0.5) * slope; - }); -} - -function map(h, f) { - var newh = h.map(f); - newh.mesh = h.mesh; - return newh; -} - -function normalize(h) { - var lo = d3.min(h); - var hi = d3.max(h); - return map(h, function (x) {return (x - lo) / (hi - lo)}); -} - -function peaky(h) { - return map(normalize(h), Math.sqrt); -} - -function add() { - var n = arguments[0].length; - var newvals = zero(arguments[0].mesh); - for (var i = 0; i < n; i++) { - for (var j = 0; j < arguments.length; j++) { - newvals[i] += arguments[j][i]; - } - } - return newvals; -} - -function mountains(mesh, n, r) { - r = r || 0.05; - var mounts = []; - for (var i = 0; i < n; i++) { - mounts.push([mesh.extent.width * (Math.random() - 0.5), mesh.extent.height * (Math.random() - 0.5)]); - } - var newvals = zero(mesh); - for (var i = 0; i < mesh.vxs.length; i++) { - var p = mesh.vxs[i]; - for (var j = 0; j < n; j++) { - var m = mounts[j]; - newvals[i] += Math.pow(Math.exp(-((p[0] - m[0]) * (p[0] - m[0]) + (p[1] - m[1]) * (p[1] - m[1])) / (2 * r * r)), 2); - } - } - return newvals; -} - -function relax(h) { - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var nbs = neighbours(h.mesh, i); - if (nbs.length < 3) { - newh[i] = 0; - continue; - } - newh[i] = d3.mean(nbs.map(function (j) {return h[j]})); - } - return newh; -} - -function downhill(h) { - if (h.downhill) return h.downhill; - function downfrom(i) { - if (isedge(h.mesh, i)) return -2; - var best = -1; - var besth = h[i]; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] < besth) { - besth = h[nbs[j]]; - best = nbs[j]; - } - } - return best; - } - var downs = []; - for (var i = 0; i < h.length; i++) { - downs[i] = downfrom(i); - } - h.downhill = downs; - return downs; -} - -function findSinks(h) { - var dh = downhill(h); - var sinks = []; - for (var i = 0; i < dh.length; i++) { - var node = i; - while (true) { - if (isedge(h.mesh, node)) { - sinks[i] = -2; - break; - } - if (dh[node] == -1) { - sinks[i] = node; - break; - } - node = dh[node]; - } - } -} - -function fillSinks(h, epsilon) { - epsilon = epsilon || 1e-5; - var infinity = 999999; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - if (isnearedge(h.mesh, i)) { - newh[i] = h[i]; - } else { - newh[i] = infinity; - } - } - while (true) { - var changed = false; - for (var i = 0; i < h.length; i++) { - if (newh[i] == h[i]) continue; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[i] >= newh[nbs[j]] + epsilon) { - newh[i] = h[i]; - changed = true; - break; - } - var oh = newh[nbs[j]] + epsilon; - if ((newh[i] > oh) && (oh > h[i])) { - newh[i] = oh; - changed = true; - } - } - } - if (!changed) return newh; - } -} - -function getFlux(h) { - var dh = downhill(h); - var idxs = []; - var flux = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - idxs[i] = i; - flux[i] = 1/h.length; - } - idxs.sort(function (a, b) { - return h[b] - h[a]; - }); - for (var i = 0; i < h.length; i++) { - var j = idxs[i]; - if (dh[j] >= 0) { - flux[dh[j]] += flux[j]; - } - } - return flux; -} - -function getSlope(h) { - var dh = downhill(h); - var slope = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var s = trislope(h, i); - slope[i] = Math.sqrt(s[0] * s[0] + s[1] * s[1]); - continue; - if (dh[i] < 0) { - slope[i] = 0; - } else { - slope[i] = (h[i] - h[dh[i]]) / distance(h.mesh, i, dh[i]); - } - } - return slope; -} - -function erosionRate(h) { - var flux = getFlux(h); - var slope = getSlope(h); - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var river = Math.sqrt(flux[i]) * slope[i]; - var creep = slope[i] * slope[i]; - var total = 1000 * river + creep; - total = total > 200 ? 200 : total; - newh[i] = total; - } - return newh; -} - -function erode(h, amount) { - var er = erosionRate(h); - var newh = zero(h.mesh); - var maxr = d3.max(er); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - amount * (er[i] / maxr); - } - return newh; -} - -function doErosion(h, amount, n) { - n = n || 1; - h = fillSinks(h); - for (var i = 0; i < n; i++) { - h = erode(h, amount); - h = fillSinks(h); - } - return h; -} - -function setSeaLevel(h, q) { - var newh = zero(h.mesh); - var delta = quantile(h, q); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - delta; - } - return newh; -} - -function cleanCoast(h, iters) { - for (var iter = 0; iter < iters; iter++) { - var changed = 0; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] <= 0 || nbs.length != 3) continue; - var count = 0; - var best = -999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] > 0) { - count++; - } else if (h[nbs[j]] > best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] > 0 || nbs.length != 3) continue; - var count = 0; - var best = 999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] <= 0) { - count++; - } else if (h[nbs[j]] < best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - } - return h; -} - -function trislope(h, i) { - var nbs = neighbours(h.mesh, i); - if (nbs.length != 3) return [0,0]; - var p0 = h.mesh.vxs[nbs[0]]; - var p1 = h.mesh.vxs[nbs[1]]; - var p2 = h.mesh.vxs[nbs[2]]; - - var x1 = p1[0] - p0[0]; - var x2 = p2[0] - p0[0]; - var y1 = p1[1] - p0[1]; - var y2 = p2[1] - p0[1]; - - var det = x1 * y2 - x2 * y1; - var h1 = h[nbs[1]] - h[nbs[0]]; - var h2 = h[nbs[2]] - h[nbs[0]]; - - return [(y2 * h1 - y1 * h2) / det, - (-x2 * h1 + x1 * h2) / det]; -} - -function cityScore(h, cities) { - var score = map(getFlux(h), Math.sqrt); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) { - score[i] = -999999; - continue; - } - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][0]) - h.mesh.extent.width/2) - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][1]) - h.mesh.extent.height/2) - for (var j = 0; j < cities.length; j++) { - score[i] -= 0.02 / (distance(h.mesh, cities[j], i) + 1e-9); - } - } - return score; -} -function placeCity(render) { - render.cities = render.cities || []; - var score = cityScore(render.h, render.cities); - var newcity = d3.scan(score, d3.descending); - render.cities.push(newcity); -} - -function placeCities(render) { - var params = render.params; - var h = render.h; - var n = params.ncities; - for (var i = 0; i < n; i++) { - placeCity(render); - } -} - -function contour(h, level) { - level = level || 0; - var edges = []; - for (var i = 0; i < h.mesh.edges.length; i++) { - var e = h.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(h.mesh, e[0]) || isnearedge(h.mesh, e[1])) continue; - if ((h[e[0]] > level && h[e[1]] <= level) || - (h[e[1]] > level && h[e[0]] <= level)) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges); -} - -function getRivers(h, limit) { - var dh = downhill(h); - var flux = getFlux(h); - var links = []; - var above = 0; - for (var i = 0; i < h.length; i++) { - if (h[i] > 0) above++; - } - limit *= above / h.length; - for (var i = 0; i < dh.length; i++) { - if (isnearedge(h.mesh, i)) continue; - if (flux[i] > limit && h[i] > 0 && dh[i] >= 0) { - var up = h.mesh.vxs[i]; - var down = h.mesh.vxs[dh[i]]; - if (h[dh[i]] > 0) { - links.push([up, down]); - } else { - links.push([up, [(up[0] + down[0])/2, (up[1] + down[1])/2]]); - } - } - } - return mergeSegments(links).map(relaxPath); -} - -function getTerritories(render) { - var h = render.h; - var cities = render.cities; - var n = render.params.nterrs; - if (n > render.cities.length) n = render.cities.length; - var flux = getFlux(h); - var terr = []; - var queue = new PriorityQueue({comparator: function (a, b) {return a.score - b.score}}); - function weight(u, v) { - var horiz = distance(h.mesh, u, v); - var vert = h[v] - h[u]; - if (vert > 0) vert /= 10; - var diff = 1 + 0.25 * Math.pow(vert/horiz, 2); - diff += 100 * Math.sqrt(flux[u]); - if (h[u] <= 0) diff = 100; - if ((h[u] > 0) != (h[v] > 0)) return 1000; - return horiz * diff; - } - for (var i = 0; i < n; i++) { - terr[cities[i]] = cities[i]; - var nbs = neighbours(h.mesh, cities[i]); - for (var j = 0; j < nbs.length; j++) { - queue.queue({ - score: weight(cities[i], nbs[j]), - city: cities[i], - vx: nbs[j] - }); - } - } - while (queue.length) { - var u = queue.dequeue(); - if (terr[u.vx] != undefined) continue; - terr[u.vx] = u.city; - var nbs = neighbours(h.mesh, u.vx); - for (var i = 0; i < nbs.length; i++) { - var v = nbs[i]; - if (terr[v] != undefined) continue; - var newdist = weight(u.vx, v); - queue.queue({ - score: u.score + newdist, - city: u.city, - vx: v - }); - } - } - terr.mesh = h.mesh; - return terr; -} - -function getBorders(render) { - var terr = render.terr; - var h = render.h; - var edges = []; - for (var i = 0; i < terr.mesh.edges.length; i++) { - var e = terr.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(terr.mesh, e[0]) || isnearedge(terr.mesh, e[1])) continue; - if (h[e[0]] < 0 || h[e[1]] < 0) continue; - if (terr[e[0]] != terr[e[1]]) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges).map(relaxPath); -} - -function mergeSegments(segs) { - var adj = {}; - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - var a0 = adj[seg[0]] || []; - var a1 = adj[seg[1]] || []; - a0.push(seg[1]); - a1.push(seg[0]); - adj[seg[0]] = a0; - adj[seg[1]] = a1; - } - var done = []; - var paths = []; - var path = null; - while (true) { - if (path == null) { - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - done[i] = true; - path = [segs[i][0], segs[i][1]]; - break; - } - if (path == null) break; - } - var changed = false; - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - if (adj[path[0]].length == 2 && segs[i][0] == path[0]) { - path.unshift(segs[i][1]); - } else if (adj[path[0]].length == 2 && segs[i][1] == path[0]) { - path.unshift(segs[i][0]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][0] == path[path.length - 1]) { - path.push(segs[i][1]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][1] == path[path.length - 1]) { - path.push(segs[i][0]); - } else { - continue; - } - done[i] = true; - changed = true; - break; - } - if (!changed) { - paths.push(path); - path = null; - } - } - return paths; -} - -function relaxPath(path) { - var newpath = [path[0]]; - for (var i = 1; i < path.length - 1; i++) { - var newpt = [0.25 * path[i-1][0] + 0.5 * path[i][0] + 0.25 * path[i+1][0], - 0.25 * path[i-1][1] + 0.5 * path[i][1] + 0.25 * path[i+1][1]]; - newpath.push(newpt); - } - newpath.push(path[path.length - 1]); - return newpath; -} -function visualizePoints(svg, pts) { - var circle = svg.selectAll('circle').data(pts); - circle.enter() - .append('circle'); - circle.exit().remove(); - d3.selectAll('circle') - .attr('cx', function (d) {return 1000*d[0]}) - .attr('cy', function (d) {return 1000*d[1]}) - .attr('r', 100 / Math.sqrt(pts.length)); -} - -function makeD3Path(path) { - var p = d3.path(); - p.moveTo(1000*path[0][0], 1000*path[0][1]); - for (var i = 1; i < path.length; i++) { - p.lineTo(1000*path[i][0], 1000*path[i][1]); - } - return p.toString(); -} - -function visualizeVoronoi(svg, field, lo, hi) { - if (hi == undefined) hi = d3.max(field) + 1e-9; - if (lo == undefined) lo = d3.min(field) - 1e-9; - var mappedvals = field.map(function (x) {return x > hi ? 1 : x < lo ? 0 : (x - lo) / (hi - lo)}); - var tris = svg.selectAll('path.field').data(field.mesh.tris) - tris.enter() - .append('path') - .classed('field', true); - - tris.exit() - .remove(); - - svg.selectAll('path.field') - .attr('d', makeD3Path) - .style('fill', function (d, i) { - return d3.interpolateViridis(mappedvals[i]); - }); -} - -function visualizeDownhill(h) { - var links = getRivers(h, 0.01); - drawPaths('river', links); -} - -function drawPaths(svg, cls, paths) { - var paths = svg.selectAll('path.' + cls).data(paths) - paths.enter() - .append('path') - .classed(cls, true) - paths.exit() - .remove(); - svg.selectAll('path.' + cls) - .attr('d', makeD3Path); -} - -function visualizeSlopes(svg, render) { - var h = render.h; - var strokes = []; - var r = 0.25 / Math.sqrt(h.length); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) continue; - var nbs = neighbours(h.mesh, i); - nbs.push(i); - var s = 0; - var s2 = 0; - for (var j = 0; j < nbs.length; j++) { - var slopes = trislope(h, nbs[j]); - s += slopes[0] / 10; - s2 += slopes[1]; - } - s /= nbs.length; - s2 /= nbs.length; - if (Math.abs(s) < runif(0.1, 0.4)) continue; - var l = r * runif(1, 2) * (1 - 0.2 * Math.pow(Math.atan(s), 2)) * Math.exp(s2/100); - var x = h.mesh.vxs[i][0]; - var y = h.mesh.vxs[i][1]; - if (Math.abs(l*s) > 2 * r) { - var n = Math.floor(Math.abs(l*s/r)); - l /= n; - if (n > 4) n = 4; - for (var j = 0; j < n; j++) { - var u = rnorm() * r; - var v = rnorm() * r; - strokes.push([[x+u-l, y+v+l*s], [x+u+l, y+v-l*s]]); - } - } else { - strokes.push([[x-l, y+l*s], [x+l, y-l*s]]); - } - } - var lines = svg.selectAll('line.slope').data(strokes) - lines.enter() - .append('line') - .classed('slope', true); - lines.exit() - .remove(); - svg.selectAll('line.slope') - .attr('x1', function (d) {return 1000*d[0][0]}) - .attr('y1', function (d) {return 1000*d[0][1]}) - .attr('x2', function (d) {return 1000*d[1][0]}) - .attr('y2', function (d) {return 1000*d[1][1]}) -} - - -function visualizeContour(h, level) { - level = level || 0; - var links = contour(h, level); - drawPaths('coast', links); -} - -function visualizeBorders(h, cities, n) { - var links = getBorders(h, getTerritories(h, cities, n)); - drawPaths('border', links); -} - - -function visualizeCities(svg, render) { - var cities = render.cities; - var h = render.h; - var n = render.params.nterrs; - - var circs = svg.selectAll('circle.city').data(cities); - circs.enter() - .append('circle') - .classed('city', true); - circs.exit() - .remove(); - svg.selectAll('circle.city') - .attr('cx', function (d) {return 1000*h.mesh.vxs[d][0]}) - .attr('cy', function (d) {return 1000*h.mesh.vxs[d][1]}) - .attr('r', function (d, i) {return i >= n ? 4 : 10}) - .style('fill', 'white') - .style('stroke-width', 5) - .style('stroke-linecap', 'round') - .style('stroke', 'black') - .raise(); -} - -function dropEdge(h, p) { - p = p || 4 - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var v = h.mesh.vxs[i]; - var x = 2.4*v[0] / h.mesh.extent.width; - var y = 2.4*v[1] / h.mesh.extent.height; - newh[i] = h[i] - Math.exp(10*(Math.pow(Math.pow(x, p) + Math.pow(y, p), 1/p) - 1)); - } - return newh; -} - -function generateCoast(params) { - var mesh = generateGoodMesh(params.npts, params.extent); - var h = add( - slope(mesh, randomVector(6)), - cone(mesh, runif(-10, -10)), - mountains(mesh, 50) - ); - for (var i = 0; i < 10; i++) { - h = relax(h); - } - h = peaky(h); - h = doErosion(h, runif(0, 0.1), 5); - h = setSeaLevel(h, runif(0.8, 0.7)); - h = fillSinks(h); - h = cleanCoast(h, 3); - return h; -} - -function terrCenter(h, terr, city, landOnly) { - var x = 0; - var y = 0; - var n = 0; - for (var i = 0; i < terr.length; i++) { - if (terr[i] != city) continue; - if (landOnly && h[i] <= 0) continue; - x += terr.mesh.vxs[i][0]; - y += terr.mesh.vxs[i][1]; - n++; - } - return [x/n, y/n]; -} - -function drawLabels(svg, render) { - var params = render.params; - var h = render.h; - var terr = render.terr; - var cities = render.cities; - var nterrs = render.params.nterrs; - var avoids = [render.rivers, render.coasts, render.borders]; - var lang = makeRandomLanguage(); - var citylabels = []; - function penalty(label) { - var pen = 0; - if (label.x0 < -0.45 * h.mesh.extent.width) pen += 100; - if (label.x1 > 0.45 * h.mesh.extent.width) pen += 100; - if (label.y0 < -0.45 * h.mesh.extent.height) pen += 100; - if (label.y1 > 0.45 * h.mesh.extent.height) pen += 100; - for (var i = 0; i < citylabels.length; i++) { - var olabel = citylabels[i]; - if (label.x0 < olabel.x1 && label.x1 > olabel.x0 && - label.y0 < olabel.y1 && label.y1 > olabel.y0) { - pen += 100; - } - } - - for (var i = 0; i < cities.length; i++) { - var c = h.mesh.vxs[cities[i]]; - if (label.x0 < c[0] && label.x1 > c[0] && label.y0 < c[1] && label.y1 > c[1]) { - pen += 100; - } - } - for (var i = 0; i < avoids.length; i++) { - var avoid = avoids[i]; - for (var j = 0; j < avoid.length; j++) { - var avpath = avoid[j]; - for (var k = 0; k < avpath.length; k++) { - var pt = avpath[k]; - if (pt[0] > label.x0 && pt[0] < label.x1 && pt[1] > label.y0 && pt[1] < label.y1) { - pen++; - } - } - } - } - return pen; - } - for (var i = 0; i < cities.length; i++) { - var x = h.mesh.vxs[cities[i]][0]; - var y = h.mesh.vxs[cities[i]][1]; - var text = makeName(lang, 'city'); - var size = i < nterrs ? params.fontsizes.city : params.fontsizes.town; - var sx = 0.65 * size/1000 * text.length; - var sy = size/1000; - var posslabels = [ - { - x: x + 0.8 * sy, - y: y + 0.3 * sy, - align: 'start', - x0: x + 0.7 * sy, - y0: y - 0.6 * sy, - x1: x + 0.7 * sy + sx, - y1: y + 0.6 * sy - }, - { - x: x - 0.8 * sy, - y: y + 0.3 * sy, - align: 'end', - x0: x - 0.9 * sy - sx, - y0: y - 0.7 * sy, - x1: x - 0.9 * sy, - y1: y + 0.7 * sy - }, - { - x: x, - y: y - 0.8 * sy, - align: 'middle', - x0: x - sx/2, - y0: y - 1.9*sy, - x1: x + sx/2, - y1: y - 0.7 * sy - }, - { - x: x, - y: y + 1.2 * sy, - align: 'middle', - x0: x - sx/2, - y0: y + 0.1*sy, - x1: x + sx/2, - y1: y + 1.3*sy - } - ]; - var label = posslabels[d3.scan(posslabels, function (a, b) {return penalty(a) - penalty(b)})]; - label.text = text; - label.size = size; - citylabels.push(label); - } - var texts = svg.selectAll('text.city').data(citylabels); - texts.enter() - .append('text') - .classed('city', true); - texts.exit() - .remove(); - svg.selectAll('text.city') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return d.size}) - .style('text-anchor', function (d) {return d.align}) - .text(function (d) {return d.text}) - .raise(); - - var reglabels = []; - for (var i = 0; i < nterrs; i++) { - var city = cities[i]; - var text = makeName(lang, 'region'); - var sy = params.fontsizes.region / 1000; - var sx = 0.6 * text.length * sy; - var lc = terrCenter(h, terr, city, true); - var oc = terrCenter(h, terr, city, false); - var best = 0; - var bestscore = -999999; - for (var j = 0; j < h.length; j++) { - var score = 0; - var v = h.mesh.vxs[j]; - score -= 3000 * Math.sqrt((v[0] - lc[0]) * (v[0] - lc[0]) + (v[1] - lc[1]) * (v[1] - lc[1])); - score -= 1000 * Math.sqrt((v[0] - oc[0]) * (v[0] - oc[0]) + (v[1] - oc[1]) * (v[1] - oc[1])); - if (terr[j] != city) score -= 3000; - for (var k = 0; k < cities.length; k++) { - var u = h.mesh.vxs[cities[k]]; - if (Math.abs(v[0] - u[0]) < sx && - Math.abs(v[1] - sy/2 - u[1]) < sy) { - score -= k < nterrs ? 4000 : 500; - } - if (v[0] - sx/2 < citylabels[k].x1 && - v[0] + sx/2 > citylabels[k].x0 && - v[1] - sy < citylabels[k].y1 && - v[1] > citylabels[k].y0) { - score -= 5000; - } - } - for (var k = 0; k < reglabels.length; k++) { - var label = reglabels[k]; - if (v[0] - sx/2 < label.x + label.width/2 && - v[0] + sx/2 > label.x - label.width/2 && - v[1] - sy < label.y && - v[1] > label.y - label.size) { - score -= 20000; - } - } - if (h[j] <= 0) score -= 500; - if (v[0] + sx/2 > 0.5 * h.mesh.extent.width) score -= 50000; - if (v[0] - sx/2 < -0.5 * h.mesh.extent.width) score -= 50000; - if (v[1] > 0.5 * h.mesh.extent.height) score -= 50000; - if (v[1] - sy < -0.5 * h.mesh.extent.height) score -= 50000; - if (score > bestscore) { - bestscore = score; - best = j; - } - } - reglabels.push({ - text: text, - x: h.mesh.vxs[best][0], - y: h.mesh.vxs[best][1], - size:sy, - width:sx - }); - } - texts = svg.selectAll('text.region').data(reglabels); - texts.enter() - .append('text') - .classed('region', true); - texts.exit() - .remove(); - svg.selectAll('text.region') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return 1000*d.size}) - .style('text-anchor', 'middle') - .text(function (d) {return d.text}) - .raise(); - -} -function drawMap(svg, render) { - render.rivers = getRivers(render.h, 0.01); - render.coasts = contour(render.h, 0); - render.terr = getTerritories(render); - render.borders = getBorders(render); - drawPaths(svg, 'river', render.rivers); - drawPaths(svg, 'coast', render.coasts); - drawPaths(svg, 'border', render.borders); - visualizeSlopes(svg, render); - visualizeCities(svg, render); - drawLabels(svg, render); -} - -function doMap(svg, params) { - var render = { - params: params - }; - var width = svg.attr('width'); - svg.attr('height', width * params.extent.height / params.extent.width); - svg.attr('viewBox', -1000 * params.extent.width/2 + ' ' + - -1000 * params.extent.height/2 + ' ' + - 1000 * params.extent.width + ' ' + - 1000 * params.extent.height); - svg.selectAll().remove(); - render.h = params.generator(params); - placeCities(render); - drawMap(svg, render); -} - -var defaultParams = { - extent: defaultExtent, - generator: generateCoast, - npts: 16384, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - diff --git a/ilinx_home/maps/map3.html b/ilinx_home/maps/map3.html deleted file mode 100644 index ffb5847..0000000 --- a/ilinx_home/maps/map3.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - Hello! - - - - - - - - - - - - - - - - - ‘engon‘enninNinemling‘emImemimemkingKangonganginOn‘en‘enInangInanimleng‘em‘amkang‘emimam ‘engon‘ongumenmin‘emkung‘enam ‘ongminam ‘im‘emung‘emong‘imwamUnwam‘ungUnmom‘imunNungangNungmin - - - \ No newline at end of file diff --git a/ilinx_home/maps/map3_files/d3.js b/ilinx_home/maps/map3_files/d3.js deleted file mode 100644 index 95bc9a6..0000000 --- a/ilinx_home/maps/map3_files/d3.js +++ /dev/null @@ -1,18525 +0,0 @@ -// https://d3js.org v5.15.1 Copyright 2020 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {})); -}(this, function (exports) { 'use strict'; - -var version = "5.15.1"; - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; - } - }; -} - -function ascendingComparator(f) { - return function(d, x) { - return ascending(f(d), x); - }; -} - -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; - -function pairs(array, f) { - if (f == null) f = pair; - var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); - while (i < n) pairs[i] = f(p, p = array[++i]); - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function cross(values0, values1, reduce) { - var n0 = values0.length, - n1 = values1.length, - values = new Array(n0 * n1), - i0, - i1, - i, - value0; - - if (reduce == null) reduce = pair; - - for (i0 = i = 0; i0 < n0; ++i0) { - for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { - values[i] = reduce(value0, values1[i1]); - } - } - - return values; -} - -function descending(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function number(x) { - return x === null ? NaN : +x; -} - -function variance(values, valueof) { - var n = values.length, - m = 0, - i = -1, - mean = 0, - value, - delta, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - if (m > 1) return sum / (m - 1); -} - -function deviation(array, f) { - var v = variance(array, f); - return v ? Math.sqrt(v) : v; -} - -function extent(values, valueof) { - var n = values.length, - i = -1, - value, - min, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - return [min, max]; -} - -var array = Array.prototype; - -var slice = array.slice; -var map = array.map; - -function constant(x) { - return function() { - return x; - }; -} - -function identity(x) { - return x; -} - -function sequence(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -var e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function ticks(start, stop, count) { - var reverse, - i = -1, - n, - ticks, - step; - - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) return [start]; - if (reverse = stop < start) n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; - - if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; - } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; - } - - if (reverse) ticks.reverse(); - - return ticks; -} - -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log(step) / Math.LN10), - error = step / Math.pow(10, power); - return power >= 0 - ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) - : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} - -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), - step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), - error = step0 / step1; - if (error >= e10) step1 *= 10; - else if (error >= e5) step1 *= 5; - else if (error >= e2) step1 *= 2; - return stop < start ? -step1 : step1; -} - -function thresholdSturges(values) { - return Math.ceil(Math.log(values.length) / Math.LN2) + 1; -} - -function histogram() { - var value = identity, - domain = extent, - threshold = thresholdSturges; - - function histogram(data) { - var i, - n = data.length, - x, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = tickStep(x0, x1, tz); - tz = sequence(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive - } - - // Remove any thresholds outside the domain. - var m = tz.length; - while (tz[0] <= x0) tz.shift(), --m; - while (tz[m - 1] > x1) tz.pop(), --m; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - for (i = 0; i < n; ++i) { - x = values[i]; - if (x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; - }; - - return histogram; -} - -function threshold(values, p, valueof) { - if (valueof == null) valueof = number; - if (!(n = values.length)) return; - if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function freedmanDiaconis(values, min, max) { - values = map.call(values, number).sort(ascending); - return Math.ceil((max - min) / (2 * (threshold(values, 0.75) - threshold(values, 0.25)) * Math.pow(values.length, -1 / 3))); -} - -function scott(values, min, max) { - return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); -} - -function max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } - } - } - } - - return max; -} - -function mean(values, valueof) { - var n = values.length, - m = n, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) sum += value; - else --m; - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; - else --m; - } - } - - if (m) return sum / m; -} - -function median(values, valueof) { - var n = values.length, - i = -1, - value, - numbers = []; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - numbers.push(value); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - numbers.push(value); - } - } - } - - return threshold(numbers.sort(ascending), 0.5); -} - -function merge(arrays) { - var n = arrays.length, - m, - i = -1, - j = 0, - merged, - array; - - while (++i < n) j += arrays[i].length; - merged = new Array(j); - - while (--n >= 0) { - array = arrays[n]; - m = array.length; - while (--m >= 0) { - merged[--j] = array[m]; - } - } - - return merged; -} - -function min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } - } - } - } - - return min; -} - -function permute(array, indexes) { - var i = indexes.length, permutes = new Array(i); - while (i--) permutes[i] = array[indexes[i]]; - return permutes; -} - -function scan(values, compare) { - if (!(n = values.length)) return; - var n, - i = 0, - j = 0, - xi, - xj = values[j]; - - if (compare == null) compare = ascending; - - while (++i < n) { - if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { - xj = xi, j = i; - } - } - - if (compare(xj, xj) === 0) return j; -} - -function shuffle(array, i0, i1) { - var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - - return array; -} - -function sum(values, valueof) { - var n = values.length, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (value = +values[i]) sum += value; // Note: zero and null are equivalent. - } - } - - else { - while (++i < n) { - if (value = +valueof(values[i], i, values)) sum += value; - } - } - - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -var slice$1 = Array.prototype.slice; - -function identity$1(x) { - return x; -} - -var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon = 1e-6; - -function translateX(x) { - return "translate(" + (x + 0.5) + ",0)"; -} - -function translateY(y) { - return "translate(0," + (y + 0.5) + ")"; -} - -function number$1(scale) { - return function(d) { - return +scale(d); - }; -} - -function center(scale) { - var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. - if (scale.round()) offset = Math.round(offset); - return function(d) { - return +scale(d) + offset; - }; -} - -function entering() { - return !this.__axis; -} - -function axis(orient, scale) { - var tickArguments = [], - tickValues = null, - tickFormat = null, - tickSizeInner = 6, - tickSizeOuter = 6, - tickPadding = 3, - k = orient === top || orient === left ? -1 : 1, - x = orient === left || orient === right ? "x" : "y", - transform = orient === top || orient === bottom ? translateX : translateY; - - function axis(context) { - var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat, - spacing = Math.max(tickSizeInner, 0) + tickPadding, - range = scale.range(), - range0 = +range[0] + 0.5, - range1 = +range[range.length - 1] + 0.5, - position = (scale.bandwidth ? center : number$1)(scale.copy()), - selection = context.selection ? context.selection() : context, - path = selection.selectAll(".domain").data([null]), - tick = selection.selectAll(".tick").data(values, scale).order(), - tickExit = tick.exit(), - tickEnter = tick.enter().append("g").attr("class", "tick"), - line = tick.select("line"), - text = tick.select("text"); - - path = path.merge(path.enter().insert("path", ".tick") - .attr("class", "domain") - .attr("stroke", "currentColor")); - - tick = tick.merge(tickEnter); - - line = line.merge(tickEnter.append("line") - .attr("stroke", "currentColor") - .attr(x + "2", k * tickSizeInner)); - - text = text.merge(tickEnter.append("text") - .attr("fill", "currentColor") - .attr(x, k * spacing) - .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - - tickExit = tickExit.transition(context) - .attr("opacity", epsilon) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); - - tickEnter - .attr("opacity", epsilon) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); - } - - tickExit.remove(); - - path - .attr("d", orient === left || orient == right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1)); - - tick - .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d)); }); - - line - .attr(x + "2", k * tickSizeInner); - - text - .attr(x, k * spacing) - .text(format); - - selection.filter(entering) - .attr("fill", "none") - .attr("font-size", 10) - .attr("font-family", "sans-serif") - .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - - selection - .each(function() { this.__axis = position; }); - } - - axis.scale = function(_) { - return arguments.length ? (scale = _, axis) : scale; - }; - - axis.ticks = function() { - return tickArguments = slice$1.call(arguments), axis; - }; - - axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice(); - }; - - axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice(); - }; - - axis.tickFormat = function(_) { - return arguments.length ? (tickFormat = _, axis) : tickFormat; - }; - - axis.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; - }; - - axis.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; - }; - - axis.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; - }; - - axis.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis) : tickPadding; - }; - - return axis; -} - -function axisTop(scale) { - return axis(top, scale); -} - -function axisRight(scale) { - return axis(right, scale); -} - -function axisBottom(scale) { - return axis(bottom, scale); -} - -function axisLeft(scale) { - return axis(left, scale); -} - -var noop = {value: function() {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none() {} - -function selector(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection(subgroups, this._parents); -} - -function empty() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty : function() { - return this.querySelectorAll(selector); - }; -} - -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant$1(x) { - return function() { - return x; - }; -} - -var keyPrefix = "$"; // Protect against keys like “__proto__”. - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = {}, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); - if (keyValue in nodeByKeyValue) { - exit[i] = node; - } else { - nodeByKeyValue[keyValue] = node; - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = keyPrefix + key.call(parent, data[i], i, data); - if (node = nodeByKeyValue[keyValue]) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue[keyValue] = null; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { - exit[i] = node; - } - } -} - -function selection_data(value, key) { - if (!value) { - data = new Array(this.size()), j = -1; - this.each(function(d) { data[++j] = d; }); - return data; - } - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant$1(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = value.call(parent, parent && parent.__data__, j, parents), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) update = onupdate(update); - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(selection) { - - for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending$1; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection(sortgroups, this._parents).order(); -} - -function ascending$1(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - var nodes = new Array(this.size()), i = -1; - this.each(function() { nodes[++i] = this; }); - return nodes; -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - var size = 0; - this.each(function() { ++size; }); - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -var filterEvents = {}; - -exports.event = null; - -if (typeof document !== "undefined") { - var element = document.documentElement; - if (!("onmouseenter" in element)) { - filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; - } -} - -function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); - return function(event) { - var related = event.relatedTarget; - if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { - listener.call(this, event); - } - }; -} - -function contextListener(listener, index, group) { - return function(event1) { - var event0 = exports.event; // Events can be reentrant (e.g., focus). - exports.event = event1; - try { - listener.call(this, this.__data__, index, group); - } finally { - exports.event = event0; - } - }; -} - -function parseTypenames$1(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; - return function(d, i, group) { - var on = this.__on, o, listener = wrap(value, i, group); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - this.addEventListener(o.type, o.listener = listener, o.capture = capture); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, capture); - o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, capture) { - var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - if (capture == null) capture = false; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); - return this; -} - -function customEvent(event1, listener, that, args) { - var event0 = exports.event; - event1.sourceEvent = exports.event; - exports.event = event1; - try { - return listener.apply(that, args); - } finally { - exports.event = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -var root = [null]; - -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection([[document.documentElement]], root); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root); -} - -function create(name) { - return select(creator(name).call(document.documentElement)); -} - -var nextId = 0; - -function local() { - return new Local; -} - -function Local() { - this._ = "@" + (++nextId).toString(36); -} - -Local.prototype = local.prototype = { - constructor: Local, - get: function(node) { - var id = this._; - while (!(id in node)) if (!(node = node.parentNode)) return; - return node[id]; - }, - set: function(node, value) { - return node[this._] = value; - }, - remove: function(node) { - return this._ in node && delete node[this._]; - }, - toString: function() { - return this._; - } -}; - -function sourceEvent() { - var current = exports.event, source; - while (source = current.sourceEvent) current = source; - return current; -} - -function point(node, event) { - var svg = node.ownerSVGElement || node; - - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; -} - -function mouse(node) { - var event = sourceEvent(); - if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); -} - -function selectAll(selector) { - return typeof selector === "string" - ? new Selection([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection([selector == null ? [] : selector], root); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; -} - -function touches(node, touches) { - if (touches == null) touches = sourceEvent().touches; - - for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) { - points[i] = point(node, touches[i]); - } - - return points; -} - -function nopropagation() { - exports.event.stopImmediatePropagation(); -} - -function noevent() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -function constant$2(x) { - return function() { - return x; - }; -} - -function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { - this.target = target; - this.type = type; - this.subject = subject; - this.identifier = id; - this.active = active; - this.x = x; - this.y = y; - this.dx = dx; - this.dy = dy; - this._ = dispatch; -} - -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultContainer() { - return this.parentNode; -} - -function defaultSubject(d) { - return d == null ? {x: exports.event.x, y: exports.event.y} : d; -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function drag() { - var filter = defaultFilter, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); - if (!gesture) return; - select(exports.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); - dragDisable(exports.event.view); - nopropagation(); - mousemoving = false; - mousedownx = exports.event.clientX; - mousedowny = exports.event.clientY; - gesture("start"); - } - - function mousemoved() { - noevent(); - if (!mousemoving) { - var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag"); - } - - function mouseupped() { - select(exports.event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(exports.event.view, mousemoving); - noevent(); - gestures.mouse("end"); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.changedTouches, - c = container.apply(this, arguments), - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) { - nopropagation(); - gesture("start"); - } - } - } - - function touchmoved() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent(); - gesture("drag"); - } - } - } - - function touchended() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation(); - gesture("end"); - } - } - } - - function beforestart(id, container, point, that, args) { - var p = point(container, id), s, dx, dy, - sublisteners = listeners.copy(); - - if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { - if ((exports.event.subject = s = subject.apply(that, args)) == null) return false; - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - return true; - })) return; - - return function gesture(type) { - var p0 = p, n; - switch (type) { - case "start": gestures[id] = gesture, n = active++; break; - case "end": delete gestures[id], --active; // nobreak - case "drag": p = point(container, id), n = active; break; - } - customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); - }; - } - - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$2(_), drag) : container; - }; - - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$2(_), drag) : subject; - }; - - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$2(!!_), drag) : touchable; - }; - - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - - return drag; -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), - reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), - reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), - reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), - reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), - reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} - -function rgb_formatRgb() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") - + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.b) || 0)) - + (a === 1 ? ")" : ", " + a + ")"); -} - -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - displayable: function() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) - && (0 <= this.l && this.l <= 1) - && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl: function() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") - + (this.h || 0) + ", " - + (this.s || 0) * 100 + "%, " - + (this.l || 0) * 100 + "%" - + (a === 1 ? ")" : ", " + a + ")"); - } -})); - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -var deg2rad = Math.PI / 180; -var rad2deg = 180 / Math.PI; - -// https://observablehq.com/@mbostock/lab-and-rgb -var K = 18, - Xn = 0.96422, - Yn = 1, - Zn = 0.82521, - t0 = 4 / 29, - t1 = 6 / 29, - t2 = 3 * t1 * t1, - t3 = t1 * t1 * t1; - -function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), - g = rgb2lrgb(o.g), - b = rgb2lrgb(o.b), - y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) x = z = y; else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); -} - -function gray(l, opacity) { - return new Lab(l, 0, 0, opacity == null ? 1 : opacity); -} - -function lab(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); -} - -function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; -} - -define(Lab, lab, extend(Color, { - brighter: function(k) { - return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker: function(k) { - return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb: function() { - var y = (this.l + 16) / 116, - x = isNaN(this.a) ? y : y + this.a / 500, - z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), - lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } -})); - -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; -} - -function lab2xyz(t) { - return t > t1 ? t * t * t : t2 * (t - t0); -} - -function lrgb2rgb(x) { - return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); -} - -function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); -} - -function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * rad2deg; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} - -function lch(l, c, h, opacity) { - return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function hcl(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; -} - -function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * deg2rad; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} - -define(Hcl, hcl, extend(Color, { - brighter: function(k) { - return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); - }, - darker: function(k) { - return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); - }, - rgb: function() { - return hcl2lab(this).rgb(); - } -})); - -var A = -0.14861, - B = +1.78277, - C = -0.29227, - D = -0.90649, - E = +1.97294, - ED = E * D, - EB = E * B, - BC_DA = B * C - D * A; - -function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), - bl = b - l, - k = (E * (g - l) - C * bl) / D, - s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 - h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); -} - -function cubehelix(h, s, l, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); -} - -function Cubehelix(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Cubehelix, cubehelix, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, - l = +this.l, - a = isNaN(this.s) ? 0 : this.s * l * (1 - l), - cosh = Math.cos(h), - sinh = Math.sin(h); - return new Rgb( - 255 * (l + a * (A * cosh + B * sinh)), - 255 * (l + a * (C * cosh + D * sinh)), - 255 * (l + a * (E * cosh)), - this.opacity - ); - } -})); - -function basis(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 - + (4 - 6 * t2 + 3 * t3) * v1 - + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 - + t3 * v3) / 6; -} - -function basis$1(values) { - var n = values.length - 1; - return function(t) { - var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), - v1 = values[i], - v2 = values[i + 1], - v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, - v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function basisClosed(values) { - var n = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), - v0 = values[(i + n - 1) % n], - v1 = values[i % n], - v2 = values[(i + 1) % n], - v3 = values[(i + 2) % n]; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function constant$3(x) { - return function() { - return x; - }; -} - -function linear(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function hue(a, b) { - var d = b - a; - return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$3(isNaN(a) ? b : a); -} - -function gamma(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear(a, d) : constant$3(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function rgbSpline(spline) { - return function(colors) { - var n = colors.length, - r = new Array(n), - g = new Array(n), - b = new Array(n), - i, color; - for (i = 0; i < n; ++i) { - color = rgb(colors[i]); - r[i] = color.r || 0; - g[i] = color.g || 0; - b[i] = color.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color.opacity = 1; - return function(t) { - color.r = r(t); - color.g = g(t); - color.b = b(t); - return color + ""; - }; - }; -} - -var rgbBasis = rgbSpline(basis$1); -var rgbBasisClosed = rgbSpline(basisClosed); - -function numberArray(a, b) { - if (!b) b = []; - var n = a ? Math.min(b.length, a.length) : 0, - c = b.slice(), - i; - return function(t) { - for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; -} - -function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -function array$1(a, b) { - return (isNumberArray(b) ? numberArray : genericArray)(a, b); -} - -function genericArray(a, b) { - var nb = b ? b.length : 0, - na = a ? Math.min(nb, a.length) : 0, - x = new Array(na), - c = new Array(nb), - i; - - for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); - for (; i < nb; ++i) c[i] = b[i]; - - return function(t) { - for (i = 0; i < na; ++i) c[i] = x[i](t); - return c; - }; -} - -function date(a, b) { - var d = new Date; - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; -} - -function interpolateNumber(a, b) { - return a = +a, b = +b, function(t) { - return a * (1 - t) + b * t; - }; -} - -function object(a, b) { - var i = {}, - c = {}, - k; - - if (a === null || typeof a !== "object") a = {}; - if (b === null || typeof b !== "object") b = {}; - - for (k in b) { - if (k in a) { - i[k] = interpolateValue(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -function interpolateValue(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant$3(b) - : (t === "number" ? interpolateNumber - : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) - : b instanceof color ? interpolateRgb - : b instanceof Date ? date - : isNumberArray(b) ? numberArray - : Array.isArray(b) ? genericArray - : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object - : interpolateNumber)(a, b); -} - -function discrete(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -function hue$1(a, b) { - var i = hue(+a, +b); - return function(t) { - var x = i(t); - return x - 360 * Math.floor(x / 360); - }; -} - -function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; -} - -var degrees = 180 / Math.PI; - -var identity$2 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees, - skewX: Math.atan(skewX) * degrees, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var cssNode, - cssRoot, - cssView, - svgNode; - -function parseCss(value) { - if (value === "none") return identity$2; - if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; - cssNode.style.transform = value; - value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); - cssRoot.removeChild(cssNode); - value = value.slice(7, -1).split(","); - return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); -} - -function parseSvg(value) { - if (value == null) return identity$2; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var rho = Math.SQRT2, - rho2 = 2, - rho4 = 4, - epsilon2 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -// p0 = [ux0, uy0, w0] -// p1 = [ux1, uy1, w1] -function interpolateZoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000; - - return i; -} - -function hsl$1(hue) { - return function(start, end) { - var h = hue((start = hsl(start)).h, (end = hsl(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hsl$2 = hsl$1(hue); -var hslLong = hsl$1(nogamma); - -function lab$1(start, end) { - var l = nogamma((start = lab(start)).l, (end = lab(end)).l), - a = nogamma(start.a, end.a), - b = nogamma(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.l = l(t); - start.a = a(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; -} - -function hcl$1(hue) { - return function(start, end) { - var h = hue((start = hcl(start)).h, (end = hcl(end)).h), - c = nogamma(start.c, end.c), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hcl$2 = hcl$1(hue); -var hclLong = hcl$1(nogamma); - -function cubehelix$1(hue) { - return (function cubehelixGamma(y) { - y = +y; - - function cubehelix$1(start, end) { - var h = hue((start = cubehelix(start)).h, (end = cubehelix(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(Math.pow(t, y)); - start.opacity = opacity(t); - return start + ""; - }; - } - - cubehelix$1.gamma = cubehelixGamma; - - return cubehelix$1; - })(1); -} - -var cubehelix$2 = cubehelix$1(hue); -var cubehelixLong = cubehelix$1(nogamma); - -function piecewise(interpolate, values) { - var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values[++i]); - return function(t) { - var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i](t - i); - }; -} - -function quantize(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; -} - -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(function(elapsed) { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -function interval$1(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - delay = +delay, time = time == null ? now() : +time; - t.restart(function tick(elapsed) { - elapsed += total; - t.restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create$1(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get$1(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set$1(node, id) { - var schedule = get$1(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get$1(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create$1(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get$1(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set$1(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get$1(node, id).value[name]; - }; -} - -function interpolate(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS$1(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS$1(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get$1(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set$1(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set$1(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get$1(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set$1(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get$1(this.node(), id).ease; -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$1; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get$1(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$1(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection$1 = selection.prototype.constructor; - -function transition_selection() { - return new Selection$1(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set$1(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove$1(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction$1(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant$1(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction$1(tweenValue(this, "text", value)) - : textConstant$1(value == null ? "" : value + "")); -} - -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} - -function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_textTween(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, textTween(value)); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get$1(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set$1(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - textTween: transition_textTween, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - end: transition_end -}; - -function linear$1(t) { - return +t; -} - -function quadIn(t) { - return t * t; -} - -function quadOut(t) { - return t * (2 - t); -} - -function quadInOut(t) { - return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; -} - -function cubicIn(t) { - return t * t * t; -} - -function cubicOut(t) { - return --t * t * t + 1; -} - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var exponent = 3; - -var polyIn = (function custom(e) { - e = +e; - - function polyIn(t) { - return Math.pow(t, e); - } - - polyIn.exponent = custom; - - return polyIn; -})(exponent); - -var polyOut = (function custom(e) { - e = +e; - - function polyOut(t) { - return 1 - Math.pow(1 - t, e); - } - - polyOut.exponent = custom; - - return polyOut; -})(exponent); - -var polyInOut = (function custom(e) { - e = +e; - - function polyInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; - } - - polyInOut.exponent = custom; - - return polyInOut; -})(exponent); - -var pi = Math.PI, - halfPi = pi / 2; - -function sinIn(t) { - return 1 - Math.cos(t * halfPi); -} - -function sinOut(t) { - return Math.sin(t * halfPi); -} - -function sinInOut(t) { - return (1 - Math.cos(pi * t)) / 2; -} - -function expIn(t) { - return Math.pow(2, 10 * t - 10); -} - -function expOut(t) { - return 1 - Math.pow(2, -10 * t); -} - -function expInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2; -} - -function circleIn(t) { - return 1 - Math.sqrt(1 - t * t); -} - -function circleOut(t) { - return Math.sqrt(1 - --t * t); -} - -function circleInOut(t) { - return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; -} - -var b1 = 4 / 11, - b2 = 6 / 11, - b3 = 8 / 11, - b4 = 3 / 4, - b5 = 9 / 11, - b6 = 10 / 11, - b7 = 15 / 16, - b8 = 21 / 22, - b9 = 63 / 64, - b0 = 1 / b1 / b1; - -function bounceIn(t) { - return 1 - bounceOut(1 - t); -} - -function bounceOut(t) { - return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; -} - -function bounceInOut(t) { - return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; -} - -var overshoot = 1.70158; - -var backIn = (function custom(s) { - s = +s; - - function backIn(t) { - return t * t * ((s + 1) * t - s); - } - - backIn.overshoot = custom; - - return backIn; -})(overshoot); - -var backOut = (function custom(s) { - s = +s; - - function backOut(t) { - return --t * t * ((s + 1) * t + s) + 1; - } - - backOut.overshoot = custom; - - return backOut; -})(overshoot); - -var backInOut = (function custom(s) { - s = +s; - - function backInOut(t) { - return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; - } - - backInOut.overshoot = custom; - - return backInOut; -})(overshoot); - -var tau = 2 * Math.PI, - amplitude = 1, - period = 0.3; - -var elasticIn = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticIn(t) { - return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p); - } - - elasticIn.amplitude = function(a) { return custom(a, p * tau); }; - elasticIn.period = function(p) { return custom(a, p); }; - - return elasticIn; -})(amplitude, period); - -var elasticOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticOut(t) { - return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p); - } - - elasticOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticOut.period = function(p) { return custom(a, p); }; - - return elasticOut; -})(amplitude, period); - -var elasticInOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticInOut(t) { - return ((t = t * 2 - 1) < 0 - ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) - : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2; - } - - elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticInOut.period = function(p) { return custom(a, p); }; - - return elasticInOut; -})(amplitude, period); - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -var root$1 = [null]; - -function active(node, name) { - var schedules = node.__transition, - schedule, - i; - - if (schedules) { - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { - return new Transition([[node]], root$1, name, +i); - } - } - } - - return null; -} - -function constant$4(x) { - return function() { - return x; - }; -} - -function BrushEvent(target, type, selection) { - this.target = target; - this.type = type; - this.selection = selection; -} - -function nopropagation$1() { - exports.event.stopImmediatePropagation(); -} - -function noevent$1() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -var MODE_DRAG = {name: "drag"}, - MODE_SPACE = {name: "space"}, - MODE_HANDLE = {name: "handle"}, - MODE_CENTER = {name: "center"}; - -function number1(e) { - return [+e[0], +e[1]]; -} - -function number2(e) { - return [number1(e[0]), number1(e[1])]; -} - -function toucher(identifier) { - return function(target) { - return touch(target, exports.event.touches, identifier); - }; -} - -var X = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; }, - output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } -}; - -var Y = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; }, - output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } -}; - -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { return xy == null ? null : number2(xy); }, - output: function(xy) { return xy; } -}; - -var cursors = { - overlay: "crosshair", - selection: "move", - n: "ns-resize", - e: "ew-resize", - s: "ns-resize", - w: "ew-resize", - nw: "nwse-resize", - ne: "nesw-resize", - se: "nwse-resize", - sw: "nesw-resize" -}; - -var flipX = { - e: "w", - w: "e", - nw: "ne", - ne: "nw", - se: "sw", - sw: "se" -}; - -var flipY = { - n: "s", - s: "n", - nw: "sw", - ne: "se", - se: "ne", - sw: "nw" -}; - -var signsX = { - overlay: +1, - selection: +1, - n: null, - e: +1, - s: null, - w: -1, - nw: -1, - ne: +1, - se: +1, - sw: -1 -}; - -var signsY = { - overlay: +1, - selection: +1, - n: -1, - e: null, - s: +1, - w: null, - nw: -1, - ne: -1, - se: +1, - sw: +1 -}; - -function type(t) { - return {type: t}; -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$1() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent() { - var svg = this.ownerSVGElement || this; - if (svg.hasAttribute("viewBox")) { - svg = svg.viewBox.baseVal; - return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; - } - return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; -} - -function defaultTouchable$1() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -// Like d3.local, but with the name “__brush” rather than auto-generated. -function local$1(node) { - while (!node.__brush) if (!(node = node.parentNode)) return; - return node.__brush; -} - -function empty$1(extent) { - return extent[0][0] === extent[1][0] - || extent[0][1] === extent[1][1]; -} - -function brushSelection(node) { - var state = node.__brush; - return state ? state.dim.output(state.selection) : null; -} - -function brushX() { - return brush$1(X); -} - -function brushY() { - return brush$1(Y); -} - -function brush() { - return brush$1(XY); -} - -function brush$1(dim) { - var extent = defaultExtent, - filter = defaultFilter$1, - touchable = defaultTouchable$1, - keys = true, - listeners = dispatch("start", "brush", "end"), - handleSize = 6, - touchending; - - function brush(group) { - var overlay = group - .property("__brush", initialize) - .selectAll(".overlay") - .data([type("overlay")]); - - overlay.enter().append("rect") - .attr("class", "overlay") - .attr("pointer-events", "all") - .attr("cursor", cursors.overlay) - .merge(overlay) - .each(function() { - var extent = local$1(this).extent; - select(this) - .attr("x", extent[0][0]) - .attr("y", extent[0][1]) - .attr("width", extent[1][0] - extent[0][0]) - .attr("height", extent[1][1] - extent[0][1]); - }); - - group.selectAll(".selection") - .data([type("selection")]) - .enter().append("rect") - .attr("class", "selection") - .attr("cursor", cursors.selection) - .attr("fill", "#777") - .attr("fill-opacity", 0.3) - .attr("stroke", "#fff") - .attr("shape-rendering", "crispEdges"); - - var handle = group.selectAll(".handle") - .data(dim.handles, function(d) { return d.type; }); - - handle.exit().remove(); - - handle.enter().append("rect") - .attr("class", function(d) { return "handle handle--" + d.type; }) - .attr("cursor", function(d) { return cursors[d.type]; }); - - group - .each(redraw) - .attr("fill", "none") - .attr("pointer-events", "all") - .on("mousedown.brush", started) - .filter(touchable) - .on("touchstart.brush", started) - .on("touchmove.brush", touchmoved) - .on("touchend.brush touchcancel.brush", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - brush.move = function(group, selection) { - if (group.selection) { - group - .on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) - .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) - .tween("brush", function() { - var that = this, - state = that.__brush, - emit = emitter(that, arguments), - selection0 = state.selection, - selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), - i = interpolateValue(selection0, selection1); - - function tween(t) { - state.selection = t === 1 && selection1 === null ? null : i(t); - redraw.call(that); - emit.brush(); - } - - return selection0 !== null && selection1 !== null ? tween : tween(1); - }); - } else { - group - .each(function() { - var that = this, - args = arguments, - state = that.__brush, - selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), - emit = emitter(that, args).beforestart(); - - interrupt(that); - state.selection = selection1 === null ? null : selection1; - redraw.call(that); - emit.start().brush().end(); - }); - } - }; - - brush.clear = function(group) { - brush.move(group, null); - }; - - function redraw() { - var group = select(this), - selection = local$1(this).selection; - - if (selection) { - group.selectAll(".selection") - .style("display", null) - .attr("x", selection[0][0]) - .attr("y", selection[0][1]) - .attr("width", selection[1][0] - selection[0][0]) - .attr("height", selection[1][1] - selection[0][1]); - - group.selectAll(".handle") - .style("display", null) - .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) - .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) - .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) - .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); - } - - else { - group.selectAll(".selection,.handle") - .style("display", "none") - .attr("x", null) - .attr("y", null) - .attr("width", null) - .attr("height", null); - } - } - - function emitter(that, args, clean) { - return (!clean && that.__brush.emitter) || new Emitter(that, args); - } - - function Emitter(that, args) { - this.that = that; - this.args = args; - this.state = that.__brush; - this.active = 0; - } - - Emitter.prototype = { - beforestart: function() { - if (++this.active === 1) this.state.emitter = this, this.starting = true; - return this; - }, - start: function() { - if (this.starting) this.starting = false, this.emit("start"); - else this.emit("brush"); - return this; - }, - brush: function() { - this.emit("brush"); - return this; - }, - end: function() { - if (--this.active === 0) delete this.state.emitter, this.emit("end"); - return this; - }, - emit: function(type) { - customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function started() { - if (touchending && !exports.event.touches) return; - if (!filter.apply(this, arguments)) return; - - var that = this, - type = exports.event.target.__data__.type, - mode = (keys && exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && exports.event.altKey ? MODE_CENTER : MODE_HANDLE), - signX = dim === Y ? null : signsX[type], - signY = dim === X ? null : signsY[type], - state = local$1(that), - extent = state.extent, - selection = state.selection, - W = extent[0][0], w0, w1, - N = extent[0][1], n0, n1, - E = extent[1][0], e0, e1, - S = extent[1][1], s0, s1, - dx = 0, - dy = 0, - moving, - shifting = signX && signY && keys && exports.event.shiftKey, - lockX, - lockY, - pointer = exports.event.touches ? toucher(exports.event.changedTouches[0].identifier) : mouse, - point0 = pointer(that), - point = point0, - emit = emitter(that, arguments, true).beforestart(); - - if (type === "overlay") { - if (selection) moving = true; - state.selection = selection = [ - [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], - [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] - ]; - } else { - w0 = selection[0][0]; - n0 = selection[0][1]; - e0 = selection[1][0]; - s0 = selection[1][1]; - } - - w1 = w0; - n1 = n0; - e1 = e0; - s1 = s0; - - var group = select(that) - .attr("pointer-events", "none"); - - var overlay = group.selectAll(".overlay") - .attr("cursor", cursors[type]); - - if (exports.event.touches) { - emit.moved = moved; - emit.ended = ended; - } else { - var view = select(exports.event.view) - .on("mousemove.brush", moved, true) - .on("mouseup.brush", ended, true); - if (keys) view - .on("keydown.brush", keydowned, true) - .on("keyup.brush", keyupped, true); - - dragDisable(exports.event.view); - } - - nopropagation$1(); - interrupt(that); - redraw.call(that); - emit.start(); - - function moved() { - var point1 = pointer(that); - if (shifting && !lockX && !lockY) { - if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; - else lockX = true; - } - point = point1; - moving = true; - noevent$1(); - move(); - } - - function move() { - var t; - - dx = point[0] - point0[0]; - dy = point[1] - point0[1]; - - switch (mode) { - case MODE_SPACE: - case MODE_DRAG: { - if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; - if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; - break; - } - case MODE_HANDLE: { - if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; - else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; - if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; - else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; - break; - } - case MODE_CENTER: { - if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); - if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); - break; - } - } - - if (e1 < w1) { - signX *= -1; - t = w0, w0 = e0, e0 = t; - t = w1, w1 = e1, e1 = t; - if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); - } - - if (s1 < n1) { - signY *= -1; - t = n0, n0 = s0, s0 = t; - t = n1, n1 = s1, s1 = t; - if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); - } - - if (state.selection) selection = state.selection; // May be set by brush.move! - if (lockX) w1 = selection[0][0], e1 = selection[1][0]; - if (lockY) n1 = selection[0][1], s1 = selection[1][1]; - - if (selection[0][0] !== w1 - || selection[0][1] !== n1 - || selection[1][0] !== e1 - || selection[1][1] !== s1) { - state.selection = [[w1, n1], [e1, s1]]; - redraw.call(that); - emit.brush(); - } - } - - function ended() { - nopropagation$1(); - if (exports.event.touches) { - if (exports.event.touches.length) return; - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - } else { - yesdrag(exports.event.view, moving); - view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); - } - group.attr("pointer-events", "all"); - overlay.attr("cursor", cursors.overlay); - if (state.selection) selection = state.selection; // May be set by brush.move (on start)! - if (empty$1(selection)) state.selection = null, redraw.call(that); - emit.end(); - } - - function keydowned() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - shifting = signX && signY; - break; - } - case 18: { // ALT - if (mode === MODE_HANDLE) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - move(); - } - break; - } - case 32: { // SPACE; takes priority over ALT - if (mode === MODE_HANDLE || mode === MODE_CENTER) { - if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; - if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; - mode = MODE_SPACE; - overlay.attr("cursor", cursors.selection); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - - function keyupped() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - if (shifting) { - lockX = lockY = shifting = false; - move(); - } - break; - } - case 18: { // ALT - if (mode === MODE_CENTER) { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - move(); - } - break; - } - case 32: { // SPACE - if (mode === MODE_SPACE) { - if (exports.event.altKey) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - } else { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - } - overlay.attr("cursor", cursors[type]); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - } - - function touchmoved() { - emitter(this, arguments).moved(); - } - - function touchended() { - emitter(this, arguments).ended(); - } - - function initialize() { - var state = this.__brush || {selection: null}; - state.extent = number2(extent.apply(this, arguments)); - state.dim = dim; - return state; - } - - brush.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4(number2(_)), brush) : extent; - }; - - brush.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$4(!!_), brush) : filter; - }; - - brush.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$4(!!_), brush) : touchable; - }; - - brush.handleSize = function(_) { - return arguments.length ? (handleSize = +_, brush) : handleSize; - }; - - brush.keyModifiers = function(_) { - return arguments.length ? (keys = !!_, brush) : keys; - }; - - brush.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? brush : value; - }; - - return brush; -} - -var cos = Math.cos; -var sin = Math.sin; -var pi$1 = Math.PI; -var halfPi$1 = pi$1 / 2; -var tau$1 = pi$1 * 2; -var max$1 = Math.max; - -function compareValue(compare) { - return function(a, b) { - return compare( - a.source.value + a.target.value, - b.source.value + b.target.value - ); - }; -} - -function chord() { - var padAngle = 0, - sortGroups = null, - sortSubgroups = null, - sortChords = null; - - function chord(matrix) { - var n = matrix.length, - groupSums = [], - groupIndex = sequence(n), - subgroupIndex = [], - chords = [], - groups = chords.groups = new Array(n), - subgroups = new Array(n * n), - k, - x, - x0, - dx, - i, - j; - - // Compute the sum. - k = 0, i = -1; while (++i < n) { - x = 0, j = -1; while (++j < n) { - x += matrix[i][j]; - } - groupSums.push(x); - subgroupIndex.push(sequence(n)); - k += x; - } - - // Sort groups… - if (sortGroups) groupIndex.sort(function(a, b) { - return sortGroups(groupSums[a], groupSums[b]); - }); - - // Sort subgroups… - if (sortSubgroups) subgroupIndex.forEach(function(d, i) { - d.sort(function(a, b) { - return sortSubgroups(matrix[i][a], matrix[i][b]); - }); - }); - - // Convert the sum to scaling factor for [0, 2pi]. - // TODO Allow start and end angle to be specified? - // TODO Allow padding to be specified as percentage? - k = max$1(0, tau$1 - padAngle * n) / k; - dx = k ? padAngle : tau$1 / n; - - // Compute the start and end angle for each group and subgroup. - // Note: Opera has a bug reordering object literal properties! - x = 0, i = -1; while (++i < n) { - x0 = x, j = -1; while (++j < n) { - var di = groupIndex[i], - dj = subgroupIndex[di][j], - v = matrix[di][dj], - a0 = x, - a1 = x += v * k; - subgroups[dj * n + di] = { - index: di, - subindex: dj, - startAngle: a0, - endAngle: a1, - value: v - }; - } - groups[di] = { - index: di, - startAngle: x0, - endAngle: x, - value: groupSums[di] - }; - x += dx; - } - - // Generate chords for each (non-empty) subgroup-subgroup link. - i = -1; while (++i < n) { - j = i - 1; while (++j < n) { - var source = subgroups[j * n + i], - target = subgroups[i * n + j]; - if (source.value || target.value) { - chords.push(source.value < target.value - ? {source: target, target: source} - : {source: source, target: target}); - } - } - } - - return sortChords ? chords.sort(sortChords) : chords; - } - - chord.padAngle = function(_) { - return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle; - }; - - chord.sortGroups = function(_) { - return arguments.length ? (sortGroups = _, chord) : sortGroups; - }; - - chord.sortSubgroups = function(_) { - return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; - }; - - chord.sortChords = function(_) { - return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; - }; - - return chord; -} - -var slice$2 = Array.prototype.slice; - -function constant$5(x) { - return function() { - return x; - }; -} - -var pi$2 = Math.PI, - tau$2 = 2 * pi$2, - epsilon$1 = 1e-6, - tauEpsilon = tau$2 - epsilon$1; - -function Path() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; -} - -function path() { - return new Path; -} - -Path.prototype = path.prototype = { - constructor: Path, - moveTo: function(x, y) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); - }, - closePath: function() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - }, - lineTo: function(x, y) { - this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); - }, - quadraticCurveTo: function(x1, y1, x, y) { - this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { - this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - arcTo: function(x1, y1, x2, y2, r) { - x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; - var x0 = this._x1, - y0 = this._y1, - x21 = x2 - x1, - y21 = y2 - y1, - x01 = x0 - x1, - y01 = y0 - y1, - l01_2 = x01 * x01 + y01 * y01; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x1,y1). - if (this._x1 === null) { - this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$1)); - - // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? - // Equivalently, is (x1,y1) coincident with (x2,y2)? - // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { - this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Otherwise, draw an arc! - else { - var x20 = x2 - x0, - y20 = y2 - y0, - l21_2 = x21 * x21 + y21 * y21, - l20_2 = x20 * x20 + y20 * y20, - l21 = Math.sqrt(l21_2), - l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), - t01 = l / l01, - t21 = l / l21; - - // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$1) { - this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); - } - - this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); - } - }, - arc: function(x, y, r, a0, a1, ccw) { - x = +x, y = +y, r = +r, ccw = !!ccw; - var dx = r * Math.cos(a0), - dy = r * Math.sin(a0), - x0 = x + dx, - y0 = y + dy, - cw = 1 ^ ccw, - da = ccw ? a0 - a1 : a1 - a0; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x0,y0). - if (this._x1 === null) { - this._ += "M" + x0 + "," + y0; - } - - // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { - this._ += "L" + x0 + "," + y0; - } - - // Is this arc empty? We’re done. - if (!r) return; - - // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau$2 + tau$2; - - // Is this a complete circle? Draw two arcs to complete the circle. - if (da > tauEpsilon) { - this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); - } - - // Is this arc non-empty? Draw an arc! - else if (da > epsilon$1) { - this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); - } - }, - rect: function(x, y, w, h) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; - }, - toString: function() { - return this._; - } -}; - -function defaultSource(d) { - return d.source; -} - -function defaultTarget(d) { - return d.target; -} - -function defaultRadius(d) { - return d.radius; -} - -function defaultStartAngle(d) { - return d.startAngle; -} - -function defaultEndAngle(d) { - return d.endAngle; -} - -function ribbon() { - var source = defaultSource, - target = defaultTarget, - radius = defaultRadius, - startAngle = defaultStartAngle, - endAngle = defaultEndAngle, - context = null; - - function ribbon() { - var buffer, - argv = slice$2.call(arguments), - s = source.apply(this, argv), - t = target.apply(this, argv), - sr = +radius.apply(this, (argv[0] = s, argv)), - sa0 = startAngle.apply(this, argv) - halfPi$1, - sa1 = endAngle.apply(this, argv) - halfPi$1, - sx0 = sr * cos(sa0), - sy0 = sr * sin(sa0), - tr = +radius.apply(this, (argv[0] = t, argv)), - ta0 = startAngle.apply(this, argv) - halfPi$1, - ta1 = endAngle.apply(this, argv) - halfPi$1; - - if (!context) context = buffer = path(); - - context.moveTo(sx0, sy0); - context.arc(0, 0, sr, sa0, sa1); - if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr? - context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0)); - context.arc(0, 0, tr, ta0, ta1); - } - context.quadraticCurveTo(0, 0, sx0, sy0); - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - ribbon.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$5(+_), ribbon) : radius; - }; - - ribbon.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : startAngle; - }; - - ribbon.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : endAngle; - }; - - ribbon.source = function(_) { - return arguments.length ? (source = _, ribbon) : source; - }; - - ribbon.target = function(_) { - return arguments.length ? (target = _, ribbon) : target; - }; - - ribbon.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; - }; - - return ribbon; -} - -var prefix = "$"; - -function Map() {} - -Map.prototype = map$1.prototype = { - constructor: Map, - has: function(key) { - return (prefix + key) in this; - }, - get: function(key) { - return this[prefix + key]; - }, - set: function(key, value) { - this[prefix + key] = value; - return this; - }, - remove: function(key) { - var property = prefix + key; - return property in this && delete this[property]; - }, - clear: function() { - for (var property in this) if (property[0] === prefix) delete this[property]; - }, - keys: function() { - var keys = []; - for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); - return keys; - }, - values: function() { - var values = []; - for (var property in this) if (property[0] === prefix) values.push(this[property]); - return values; - }, - entries: function() { - var entries = []; - for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); - return entries; - }, - size: function() { - var size = 0; - for (var property in this) if (property[0] === prefix) ++size; - return size; - }, - empty: function() { - for (var property in this) if (property[0] === prefix) return false; - return true; - }, - each: function(f) { - for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); - } -}; - -function map$1(object, f) { - var map = new Map; - - // Copy constructor. - if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); - - // Index array by numeric index or specified key function. - else if (Array.isArray(object)) { - var i = -1, - n = object.length, - o; - - if (f == null) while (++i < n) map.set(i, object[i]); - else while (++i < n) map.set(f(o = object[i], i, object), o); - } - - // Convert object to map. - else if (object) for (var key in object) map.set(key, object[key]); - - return map; -} - -function nest() { - var keys = [], - sortKeys = [], - sortValues, - rollup, - nest; - - function apply(array, depth, createResult, setResult) { - if (depth >= keys.length) { - if (sortValues != null) array.sort(sortValues); - return rollup != null ? rollup(array) : array; - } - - var i = -1, - n = array.length, - key = keys[depth++], - keyValue, - value, - valuesByKey = map$1(), - values, - result = createResult(); - - while (++i < n) { - if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) { - values.push(value); - } else { - valuesByKey.set(keyValue, [value]); - } - } - - valuesByKey.each(function(values, key) { - setResult(result, key, apply(values, depth, createResult, setResult)); - }); - - return result; - } - - function entries(map, depth) { - if (++depth > keys.length) return map; - var array, sortKey = sortKeys[depth - 1]; - if (rollup != null && depth >= keys.length) array = map.entries(); - else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); }); - return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array; - } - - return nest = { - object: function(array) { return apply(array, 0, createObject, setObject); }, - map: function(array) { return apply(array, 0, createMap, setMap); }, - entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); }, - key: function(d) { keys.push(d); return nest; }, - sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; }, - sortValues: function(order) { sortValues = order; return nest; }, - rollup: function(f) { rollup = f; return nest; } - }; -} - -function createObject() { - return {}; -} - -function setObject(object, key, value) { - object[key] = value; -} - -function createMap() { - return map$1(); -} - -function setMap(map, key, value) { - map.set(key, value); -} - -function Set() {} - -var proto = map$1.prototype; - -Set.prototype = set$2.prototype = { - constructor: Set, - has: proto.has, - add: function(value) { - value += ""; - this[prefix + value] = value; - return this; - }, - remove: proto.remove, - clear: proto.clear, - values: proto.keys, - size: proto.size, - empty: proto.empty, - each: proto.each -}; - -function set$2(object, f) { - var set = new Set; - - // Copy constructor. - if (object instanceof Set) object.each(function(value) { set.add(value); }); - - // Otherwise, assume it’s an array. - else if (object) { - var i = -1, n = object.length; - if (f == null) while (++i < n) set.add(object[i]); - else while (++i < n) set.add(f(object[i], i, object)); - } - - return set; -} - -function keys(map) { - var keys = []; - for (var key in map) keys.push(key); - return keys; -} - -function values(map) { - var values = []; - for (var key in map) values.push(map[key]); - return values; -} - -function entries(map) { - var entries = []; - for (var key in map) entries.push({key: key, value: map[key]}); - return entries; -} - -var array$2 = Array.prototype; - -var slice$3 = array$2.slice; - -function ascending$2(a, b) { - return a - b; -} - -function area(ring) { - var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; - while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; - return area; -} - -function constant$6(x) { - return function() { - return x; - }; -} - -function contains(ring, hole) { - var i = -1, n = hole.length, c; - while (++i < n) if (c = ringContains(ring, hole[i])) return c; - return 0; -} - -function ringContains(ring, point) { - var x = point[0], y = point[1], contains = -1; - for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { - var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; - if (segmentContains(pi, pj, point)) return 0; - if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; - } - return contains; -} - -function segmentContains(a, b, c) { - var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); -} - -function collinear(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); -} - -function within(p, q, r) { - return p <= q && q <= r || r <= q && q <= p; -} - -function noop$1() {} - -var cases = [ - [], - [[[1.0, 1.5], [0.5, 1.0]]], - [[[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [0.5, 1.0]]], - [[[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 0.5], [1.0, 1.5]]], - [[[1.0, 0.5], [0.5, 1.0]]], - [[[0.5, 1.0], [1.0, 0.5]]], - [[[1.0, 1.5], [1.0, 0.5]]], - [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [1.0, 0.5]]], - [[[0.5, 1.0], [1.5, 1.0]]], - [[[1.0, 1.5], [1.5, 1.0]]], - [[[0.5, 1.0], [1.0, 1.5]]], - [] -]; - -function contours() { - var dx = 1, - dy = 1, - threshold = thresholdSturges, - smooth = smoothLinear; - - function contours(values) { - var tz = threshold(values); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var domain = extent(values), start = domain[0], stop = domain[1]; - tz = tickStep(start, stop, tz); - tz = sequence(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz); - } else { - tz = tz.slice().sort(ascending$2); - } - - return tz.map(function(value) { - return contour(values, value); - }); - } - - // Accumulate, smooth contour rings, assign holes to exterior rings. - // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js - function contour(values, value) { - var polygons = [], - holes = []; - - isorings(values, value, function(ring) { - smooth(ring, values, value); - if (area(ring) > 0) polygons.push([ring]); - else holes.push(ring); - }); - - holes.forEach(function(hole) { - for (var i = 0, n = polygons.length, polygon; i < n; ++i) { - if (contains((polygon = polygons[i])[0], hole) !== -1) { - polygon.push(hole); - return; - } - } - }); - - return { - type: "MultiPolygon", - value: value, - coordinates: polygons - }; - } - - // Marching squares with isolines stitched into rings. - // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js - function isorings(values, value, callback) { - var fragmentByStart = new Array, - fragmentByEnd = new Array, - x, y, t0, t1, t2, t3; - - // Special case for the first row (y = -1, t2 = t3 = 0). - x = y = -1; - t1 = values[0] >= value; - cases[t1 << 1].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[x + 1] >= value; - cases[t0 | t1 << 1].forEach(stitch); - } - cases[t1 << 0].forEach(stitch); - - // General case for the intermediate rows. - while (++y < dy - 1) { - x = -1; - t1 = values[y * dx + dx] >= value; - t2 = values[y * dx] >= value; - cases[t1 << 1 | t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[y * dx + dx + x + 1] >= value; - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t1 | t2 << 3].forEach(stitch); - } - - // Special case for the last row (y = dy - 1, t0 = t1 = 0). - x = -1; - t2 = values[y * dx] >= value; - cases[t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t2 << 3].forEach(stitch); - - function stitch(line) { - var start = [line[0][0] + x, line[0][1] + y], - end = [line[1][0] + x, line[1][1] + y], - startIndex = index(start), - endIndex = index(end), - f, g; - if (f = fragmentByEnd[startIndex]) { - if (g = fragmentByStart[endIndex]) { - delete fragmentByEnd[f.end]; - delete fragmentByStart[g.start]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; - } - } else { - delete fragmentByEnd[f.end]; - f.ring.push(end); - fragmentByEnd[f.end = endIndex] = f; - } - } else if (f = fragmentByStart[endIndex]) { - if (g = fragmentByEnd[startIndex]) { - delete fragmentByStart[f.start]; - delete fragmentByEnd[g.end]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; - } - } else { - delete fragmentByStart[f.start]; - f.ring.unshift(start); - fragmentByStart[f.start = startIndex] = f; - } - } else { - fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; - } - } - } - - function index(point) { - return point[0] * 2 + point[1] * (dx + 1) * 4; - } - - function smoothLinear(ring, values, value) { - ring.forEach(function(point) { - var x = point[0], - y = point[1], - xt = x | 0, - yt = y | 0, - v0, - v1 = values[yt * dx + xt]; - if (x > 0 && x < dx && xt === x) { - v0 = values[yt * dx + xt - 1]; - point[0] = x + (value - v0) / (v1 - v0) - 0.5; - } - if (y > 0 && y < dy && yt === y) { - v0 = values[(yt - 1) * dx + xt]; - point[1] = y + (value - v0) / (v1 - v0) - 0.5; - } - }); - } - - contours.contour = contour; - - contours.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 > 0) || !(_1 > 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, contours; - }; - - contours.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), contours) : threshold; - }; - - contours.smooth = function(_) { - return arguments.length ? (smooth = _ ? smoothLinear : noop$1, contours) : smooth === smoothLinear; - }; - - return contours; -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurX(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var j = 0; j < m; ++j) { - for (var i = 0, sr = 0; i < n + r; ++i) { - if (i < n) { - sr += source.data[i + j * n]; - } - if (i >= r) { - if (i >= w) { - sr -= source.data[i - w + j * n]; - } - target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w); - } - } - } -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurY(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var i = 0; i < n; ++i) { - for (var j = 0, sr = 0; j < m + r; ++j) { - if (j < m) { - sr += source.data[i + j * n]; - } - if (j >= r) { - if (j >= w) { - sr -= source.data[i + (j - w) * n]; - } - target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w); - } - } - } -} - -function defaultX(d) { - return d[0]; -} - -function defaultY(d) { - return d[1]; -} - -function defaultWeight() { - return 1; -} - -function density() { - var x = defaultX, - y = defaultY, - weight = defaultWeight, - dx = 960, - dy = 500, - r = 20, // blur radius - k = 2, // log2(grid cell size) - o = r * 3, // grid offset, to pad for blur - n = (dx + o * 2) >> k, // grid width - m = (dy + o * 2) >> k, // grid height - threshold = constant$6(20); - - function density(data) { - var values0 = new Float32Array(n * m), - values1 = new Float32Array(n * m); - - data.forEach(function(d, i, data) { - var xi = (+x(d, i, data) + o) >> k, - yi = (+y(d, i, data) + o) >> k, - wi = +weight(d, i, data); - if (xi >= 0 && xi < n && yi >= 0 && yi < m) { - values0[xi + yi * n] += wi; - } - }); - - // TODO Optimize. - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - - var tz = threshold(values0); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var stop = max(values0); - tz = tickStep(0, stop, tz); - tz = sequence(0, Math.floor(stop / tz) * tz, tz); - tz.shift(); - } - - return contours() - .thresholds(tz) - .size([n, m]) - (values0) - .map(transform); - } - - function transform(geometry) { - geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel. - geometry.coordinates.forEach(transformPolygon); - return geometry; - } - - function transformPolygon(coordinates) { - coordinates.forEach(transformRing); - } - - function transformRing(coordinates) { - coordinates.forEach(transformPoint); - } - - // TODO Optimize. - function transformPoint(coordinates) { - coordinates[0] = coordinates[0] * Math.pow(2, k) - o; - coordinates[1] = coordinates[1] * Math.pow(2, k) - o; - } - - function resize() { - o = r * 3; - n = (dx + o * 2) >> k; - m = (dy + o * 2) >> k; - return density; - } - - density.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$6(+_), density) : x; - }; - - density.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$6(+_), density) : y; - }; - - density.weight = function(_) { - return arguments.length ? (weight = typeof _ === "function" ? _ : constant$6(+_), density) : weight; - }; - - density.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 >= 0) && !(_0 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, resize(); - }; - - density.cellSize = function(_) { - if (!arguments.length) return 1 << k; - if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); - return k = Math.floor(Math.log(_) / Math.LN2), resize(); - }; - - density.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), density) : threshold; - }; - - density.bandwidth = function(_) { - if (!arguments.length) return Math.sqrt(r * (r + 1)); - if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); - return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize(); - }; - - return density; -} - -var EOL = {}, - EOF = {}, - QUOTE = 34, - NEWLINE = 10, - RETURN = 13; - -function objectConverter(columns) { - return new Function("d", "return {" + columns.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "] || \"\""; - }).join(",") + "}"); -} - -function customConverter(columns, f) { - var object = objectConverter(columns); - return function(row, i) { - return f(object(row), i, columns); - }; -} - -// Compute unique columns in order of discovery. -function inferColumns(rows) { - var columnSet = Object.create(null), - columns = []; - - rows.forEach(function(row) { - for (var column in row) { - if (!(column in columnSet)) { - columns.push(columnSet[column] = column); - } - } - }); - - return columns; -} - -function pad(value, width) { - var s = value + "", length = s.length; - return length < width ? new Array(width - length + 1).join(0) + s : s; -} - -function formatYear(year) { - return year < 0 ? "-" + pad(-year, 6) - : year > 9999 ? "+" + pad(year, 6) - : pad(year, 4); -} - -function formatDate(date) { - var hours = date.getUTCHours(), - minutes = date.getUTCMinutes(), - seconds = date.getUTCSeconds(), - milliseconds = date.getUTCMilliseconds(); - return isNaN(date) ? "Invalid Date" - : formatYear(date.getUTCFullYear()) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2) - + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z" - : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z" - : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z" - : ""); -} - -function dsvFormat(delimiter) { - var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), - DELIMITER = delimiter.charCodeAt(0); - - function parse(text, f) { - var convert, columns, rows = parseRows(text, function(row, i) { - if (convert) return convert(row, i - 1); - columns = row, convert = f ? customConverter(row, f) : objectConverter(row); - }); - rows.columns = columns || []; - return rows; - } - - function parseRows(text, f) { - var rows = [], // output rows - N = text.length, - I = 0, // current character index - n = 0, // current line number - t, // current token - eof = N <= 0, // current token followed by EOF? - eol = false; // current token followed by EOL? - - // Strip the trailing newline. - if (text.charCodeAt(N - 1) === NEWLINE) --N; - if (text.charCodeAt(N - 1) === RETURN) --N; - - function token() { - if (eof) return EOF; - if (eol) return eol = false, EOL; - - // Unescape quotes. - var i, j = I, c; - if (text.charCodeAt(j) === QUOTE) { - while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); - if ((i = I) >= N) eof = true; - else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - return text.slice(j + 1, i - 1).replace(/""/g, "\""); - } - - // Find next delimiter or newline. - while (I < N) { - if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - else if (c !== DELIMITER) continue; - return text.slice(j, i); - } - - // Return last token before EOF. - return eof = true, text.slice(j, N); - } - - while ((t = token()) !== EOF) { - var row = []; - while (t !== EOL && t !== EOF) row.push(t), t = token(); - if (f && (row = f(row, n++)) == null) continue; - rows.push(row); - } - - return rows; - } - - function preformatBody(rows, columns) { - return rows.map(function(row) { - return columns.map(function(column) { - return formatValue(row[column]); - }).join(delimiter); - }); - } - - function format(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); - } - - function formatBody(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return preformatBody(rows, columns).join("\n"); - } - - function formatRows(rows) { - return rows.map(formatRow).join("\n"); - } - - function formatRow(row) { - return row.map(formatValue).join(delimiter); - } - - function formatValue(value) { - return value == null ? "" - : value instanceof Date ? formatDate(value) - : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" - : value; - } - - return { - parse: parse, - parseRows: parseRows, - format: format, - formatBody: formatBody, - formatRows: formatRows, - formatRow: formatRow, - formatValue: formatValue - }; -} - -var csv = dsvFormat(","); - -var csvParse = csv.parse; -var csvParseRows = csv.parseRows; -var csvFormat = csv.format; -var csvFormatBody = csv.formatBody; -var csvFormatRows = csv.formatRows; -var csvFormatRow = csv.formatRow; -var csvFormatValue = csv.formatValue; - -var tsv = dsvFormat("\t"); - -var tsvParse = tsv.parse; -var tsvParseRows = tsv.parseRows; -var tsvFormat = tsv.format; -var tsvFormatBody = tsv.formatBody; -var tsvFormatRows = tsv.formatRows; -var tsvFormatRow = tsv.formatRow; -var tsvFormatValue = tsv.formatValue; - -function autoType(object) { - for (var key in object) { - var value = object[key].trim(), number, m; - if (!value) value = null; - else if (value === "true") value = true; - else if (value === "false") value = false; - else if (value === "NaN") value = NaN; - else if (!isNaN(number = +value)) value = number; - else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) { - if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " "); - value = new Date(value); - } - else continue; - object[key] = value; - } - return object; -} - -// https://github.com/d3/d3-dsv/issues/45 -var fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours(); - -function responseBlob(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.blob(); -} - -function blob(input, init) { - return fetch(input, init).then(responseBlob); -} - -function responseArrayBuffer(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.arrayBuffer(); -} - -function buffer(input, init) { - return fetch(input, init).then(responseArrayBuffer); -} - -function responseText(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.text(); -} - -function text(input, init) { - return fetch(input, init).then(responseText); -} - -function dsvParse(parse) { - return function(input, init, row) { - if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; - return text(input, init).then(function(response) { - return parse(response, row); - }); - }; -} - -function dsv(delimiter, input, init, row) { - if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; - var format = dsvFormat(delimiter); - return text(input, init).then(function(response) { - return format.parse(response, row); - }); -} - -var csv$1 = dsvParse(csvParse); -var tsv$1 = dsvParse(tsvParse); - -function image(input, init) { - return new Promise(function(resolve, reject) { - var image = new Image; - for (var key in init) image[key] = init[key]; - image.onerror = reject; - image.onload = function() { resolve(image); }; - image.src = input; - }); -} - -function responseJson(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.json(); -} - -function json(input, init) { - return fetch(input, init).then(responseJson); -} - -function parser(type) { - return function(input, init) { - return text(input, init).then(function(text) { - return (new DOMParser).parseFromString(text, type); - }); - }; -} - -var xml = parser("application/xml"); - -var html = parser("text/html"); - -var svg = parser("image/svg+xml"); - -function center$1(x, y) { - var nodes; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function constant$7(x) { - return function() { - return x; - }; -} - -function jiggle() { - return (Math.random() - 0.5) * 1e-6; -} - -function tree_add(d) { - var x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); -} - -function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; -} - -function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; -} - -function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} - -function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; -} - -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; -} - -function tree_root() { - return this._root; -} - -function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; -} - -function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; -} - -function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -function defaultX$1(d) { - return d[0]; -} - -function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -function defaultY$1(d) { - return d[1]; -} - -function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX$1 : x, y == null ? defaultY$1 : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = tree_add; -treeProto.addAll = addAll; -treeProto.cover = tree_cover; -treeProto.data = tree_data; -treeProto.extent = tree_extent; -treeProto.find = tree_find; -treeProto.remove = tree_remove; -treeProto.removeAll = removeAll; -treeProto.root = tree_root; -treeProto.size = tree_size; -treeProto.visit = tree_visit; -treeProto.visitAfter = tree_visitAfter; -treeProto.x = tree_x; -treeProto.y = tree_y; - -function x(d) { - return d.x + d.vx; -} - -function y(d) { - return d.y + d.vy; -} - -function collide(radius) { - var nodes, - radii, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant$7(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x, y).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - return force; -} - -function index(d) { - return d.index; -} - -function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("missing: " + nodeId); - return node; -} - -function link(links) { - var id = index, - strength = defaultStrength, - strengths, - distance = constant$7(30), - distances, - nodes, - count, - bias, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(); - y = target.y + target.vy - source.y - source.vy || jiggle(); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = map$1(nodes, id), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant$7(+_), initializeDistance(), force) : distance; - }; - - return force; -} - -function x$1(d) { - return d.x; -} - -function y$1(d) { - return d.y; -} - -var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - -function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = map$1(), - stepper = timer(step), - event = dispatch("tick", "end"); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.each(function (force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -function manyBody() { - var nodes, - node, - alpha, - strength = constant$7(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} - -function radial(radius, x, y) { - var nodes, - strength = constant$7(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant$7(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function x$2(x) { - var strength = constant$7(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant$7(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : x; - }; - - return force; -} - -function y$2(y) { - var strength = constant$7(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant$7(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : y; - }; - - return force; -} - -// Computes the decimal coefficient and exponent of the specified number x with -// significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimal(1.23) returns ["123", 0]. -function formatDecimal(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity - var i, coefficient = x.slice(0, i); - - // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ - // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; -} - -function exponent$1(x) { - return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; -} - -function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, - t = [], - j = 0, - g = grouping[0], - length = 0; - - while (i > 0 && g > 0) { - if (length + g + 1 > width) g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - - return t.reverse().join(thousands); - }; -} - -function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// [[fill]align][sign][symbol][0][width][,][.precision][~][type] -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; - -function formatSpecifier(specifier) { - if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} - -formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof - -function FormatSpecifier(specifier) { - this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; - this.align = specifier.align === undefined ? ">" : specifier.align + ""; - this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === undefined ? undefined : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === undefined ? undefined : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === undefined ? "" : specifier.type + ""; -} - -FormatSpecifier.prototype.toString = function() { - return this.fill - + this.align - + this.sign - + this.symbol - + (this.zero ? "0" : "") - + (this.width === undefined ? "" : Math.max(1, this.width | 0)) - + (this.comma ? "," : "") - + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) - + (this.trim ? "~" : "") - + this.type; -}; - -// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. -function formatTrim(s) { - out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": i0 = i1 = i; break; - case "0": if (i0 === 0) i0 = i; i1 = i; break; - default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; -} - -var prefixExponent; - -function formatPrefixAuto(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1], - i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, - n = coefficient.length; - return i === n ? coefficient - : i > n ? coefficient + new Array(i - n + 1).join("0") - : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! -} - -function formatRounded(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient - : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) - : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -var formatTypes = { - "%": function(x, p) { return (x * 100).toFixed(p); }, - "b": function(x) { return Math.round(x).toString(2); }, - "c": function(x) { return x + ""; }, - "d": function(x) { return Math.round(x).toString(10); }, - "e": function(x, p) { return x.toExponential(p); }, - "f": function(x, p) { return x.toFixed(p); }, - "g": function(x, p) { return x.toPrecision(p); }, - "o": function(x) { return Math.round(x).toString(8); }, - "p": function(x, p) { return formatRounded(x * 100, p); }, - "r": formatRounded, - "s": formatPrefixAuto, - "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, - "x": function(x) { return Math.round(x).toString(16); } -}; - -function identity$3(x) { - return x; -} - -var map$2 = Array.prototype.map, - prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]; - -function formatLocale(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$3 : formatGroup(map$2.call(locale.grouping, Number), locale.thousands + ""), - currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", - currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", - decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$3 : formatNumerals(map$2.call(locale.numerals, String)), - percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "-" : locale.minus + "", - nan = locale.nan === undefined ? "NaN" : locale.nan + ""; - - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - - var fill = specifier.fill, - align = specifier.align, - sign = specifier.sign, - symbol = specifier.symbol, - zero = specifier.zero, - width = specifier.width, - comma = specifier.comma, - precision = specifier.precision, - trim = specifier.trim, - type = specifier.type; - - // The "n" type is an alias for ",g". - if (type === "n") comma = true, type = "g"; - - // The "" type, and any invalid type, is an alias for ".12~g". - else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; - - // If zero fill is specified, padding goes after sign and before digits. - if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; - - // Compute the prefix and suffix. - // For SI-prefix, the suffix is lazily computed. - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", - suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - - // What format function should we use? - // Is this an integer type? - // Can this type generate exponential notation? - var formatType = formatTypes[type], - maybeSuffix = /[defgprs%]/.test(type); - - // Set the default precision if not specified, - // or clamp the specified precision to the supported range. - // For significant precision, it must be in [1, 21]. - // For fixed precision, it must be in [0, 20]. - precision = precision === undefined ? 6 - : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) - : Math.max(0, Math.min(20, precision)); - - function format(value) { - var valuePrefix = prefix, - valueSuffix = suffix, - i, n, c; - - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - - // Determine the sign. -0 is not less than 0, but 1 / -0 is! - var valueNegative = value < 0 || 1 / value < 0; - - // Perform the initial formatting. - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - - // Trim insignificant zeros. - if (trim) value = formatTrim(value); - - // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. - if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; - - // Compute the prefix and suffix. - valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - - // Break the formatted value into the integer “value” part that can be - // grouped, and fractional or exponential “suffix” part that is not. - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - - // If the fill character is not "0", grouping is applied before padding. - if (comma && !zero) value = group(value, Infinity); - - // Compute the padding. - var length = valuePrefix.length + value.length + valueSuffix.length, - padding = length < width ? new Array(width - length + 1).join(fill) : ""; - - // If the fill character is "0", grouping is applied after padding. - if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - - // Reconstruct the final output based on the desired alignment. - switch (align) { - case "<": value = valuePrefix + value + valueSuffix + padding; break; - case "=": value = valuePrefix + padding + value + valueSuffix; break; - case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; - default: value = padding + valuePrefix + value + valueSuffix; break; - } - - return numerals(value); - } - - format.toString = function() { - return specifier + ""; - }; - - return format; - } - - function formatPrefix(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), - e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3, - k = Math.pow(10, -e), - prefix = prefixes[8 + e / 3]; - return function(value) { - return f(k * value) + prefix; - }; - } - - return { - format: newFormat, - formatPrefix: formatPrefix - }; -} - -var locale; - -defaultLocale({ - decimal: ".", - thousands: ",", - grouping: [3], - currency: ["$", ""], - minus: "-" -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - exports.format = locale.format; - exports.formatPrefix = locale.formatPrefix; - return locale; -} - -function precisionFixed(step) { - return Math.max(0, -exponent$1(Math.abs(step))); -} - -function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step))); -} - -function precisionRound(step, max) { - step = Math.abs(step), max = Math.abs(max) - step; - return Math.max(0, exponent$1(max) - exponent$1(step)) + 1; -} - -// Adds floating point numbers with twice the normal precision. -// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and -// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) -// 305–363 (1997). -// Code adapted from GeographicLib by Charles F. F. Karney, -// http://geographiclib.sourceforge.net/ - -function adder() { - return new Adder; -} - -function Adder() { - this.reset(); -} - -Adder.prototype = { - constructor: Adder, - reset: function() { - this.s = // rounded value - this.t = 0; // exact error - }, - add: function(y) { - add$1(temp, y, this.t); - add$1(this, temp.s, this.s); - if (this.s) this.t += temp.t; - else this.s = temp.t; - }, - valueOf: function() { - return this.s; - } -}; - -var temp = new Adder; - -function add$1(adder, a, b) { - var x = adder.s = a + b, - bv = x - a, - av = x - bv; - adder.t = (a - av) + (b - bv); -} - -var epsilon$2 = 1e-6; -var epsilon2$1 = 1e-12; -var pi$3 = Math.PI; -var halfPi$2 = pi$3 / 2; -var quarterPi = pi$3 / 4; -var tau$3 = pi$3 * 2; - -var degrees$1 = 180 / pi$3; -var radians = pi$3 / 180; - -var abs = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos$1 = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin$1 = Math.sin; -var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt = Math.sqrt; -var tan = Math.tan; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x); -} - -function asin(x) { - return x > 1 ? halfPi$2 : x < -1 ? -halfPi$2 : Math.asin(x); -} - -function haversin(x) { - return (x = sin$1(x / 2)) * x; -} - -function noop$2() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum = adder(); - -var areaSum = adder(), - lambda00, - phi00, - lambda0, - cosPhi0, - sinPhi0; - -var areaStream = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaRingSum.reset(); - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - var areaRing = +areaRingSum; - areaSum.add(areaRing < 0 ? tau$3 + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop$2; - }, - sphere: function() { - areaSum.add(tau$3); - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaRingEnd() { - areaPoint(lambda00, phi00); -} - -function areaPointFirst(lambda, phi) { - areaStream.point = areaPoint; - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi); -} - -function areaPoint(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos$1(phi), - sinPhi = sin$1(phi), - k = sinPhi0 * sinPhi, - u = cosPhi0 * cosPhi + k * cos$1(adLambda), - v = k * sdLambda * sin$1(adLambda); - areaRingSum.add(atan2(v, u)); - - // Advance the previous points. - lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; -} - -function area$1(object) { - areaSum.reset(); - geoStream(object, areaStream); - return areaSum * 2; -} - -function spherical(cartesian) { - return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); - return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum = adder(), - ranges, - range; - -var boundsStream = { - point: boundsPoint, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream.point = boundsRingPoint; - boundsStream.lineStart = boundsRingStart; - boundsStream.lineEnd = boundsRingEnd; - deltaSum.reset(); - areaStream.polygonStart(); - }, - polygonEnd: function() { - areaStream.polygonEnd(); - boundsStream.point = boundsPoint; - boundsStream.lineStart = boundsLineStart; - boundsStream.lineEnd = boundsLineEnd; - if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon$2) phi1 = 90; - else if (deltaSum < -epsilon$2) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees$1 * sign, - phii, - antimeridian = abs(delta) > 180; - if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = inflection[1] * degrees$1; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = -inflection[1] * degrees$1; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream.point = boundsPoint; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream.lineEnd(); - if (abs(deltaSum) > epsilon$2) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0, Y0, Z0, - X1, Y1, Z1, - X2, Y2, Z2, - lambda00$2, phi00$2, // first point - x0, y0, z0; // previous point - -var centroidStream = { - sphere: noop$2, - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0 += (x - X0) / W0; - Y0 += (y - Y0) / W0; - Z0 += (z - Z0) / W0; -} - -function centroidLineStart() { - centroidStream.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidStream.point = centroidLinePoint; - centroidPointCartesian(x0, y0, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart() { - centroidStream.point = centroidRingPointFirst; -} - -function centroidRingEnd() { - centroidRingPoint(lambda00$2, phi00$2); - centroidStream.point = centroidPoint; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - centroidStream.point = centroidRingPoint; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidPointCartesian(x0, y0, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - cx = y0 * z - z0 * y, - cy = z0 * x - x0 * z, - cz = x0 * y - y0 * x, - m = sqrt(cx * cx + cy * cy + cz * cz), - w = asin(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2 += v * cx; - Y2 += v * cy; - Z2 += v * cz; - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroid(object) { - W0 = W1 = - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - geoStream(object, centroidStream); - - var x = X2, - y = Y2, - z = Z2, - m = x * x + y * y + z * z; - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2$1) { - x = X1, y = Y1, z = Z1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon$2) x = X0, y = Y0, z = Z0; - m = x * x + y * y + z * z; - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2$1) return [NaN, NaN]; - } - - return [atan2(y, x) * degrees$1, asin(z / sqrt(m)) * degrees$1]; -} - -function constant$8(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - return [abs(lambda) > pi$3 ? lambda + Math.round(-lambda / tau$3) * tau$3 : lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau$3) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - return lambda += deltaLambda, [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos$1(deltaPhi), - sinDeltaPhi = sin$1(deltaPhi), - cosDeltaGamma = cos$1(deltaGamma), - sinDeltaGamma = sin$1(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos$1(radius), - sinRadius = sin$1(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau$3; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$3; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau$3 - epsilon$2) % tau$3; -} - -function circle() { - var center = constant$8([0, 0]), - radius = constant$8(90), - precision = constant$8(6), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees$1, x[1] *= degrees$1; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant$8([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$8(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant$8(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y) { - line.push([x, y]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop$2, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs(a[0] - b[0]) < epsilon$2 && abs(a[1] - b[1]) < epsilon$2; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - // If the first and last points of a segment are coincident, then treat as a - // closed ring. TODO if all rings are closed, then the winding order of the - // exterior ring should be checked. - if (pointEqual(p0, p1)) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link$1(subject); - link$1(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link$1(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -var sum$1 = adder(); - -function longitude(point) { - if (abs(point[0]) <= pi$3) - return point[0]; - else - return sign(point[0]) * ((abs(point[0]) + pi$3) % tau$3 - pi$3); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin$1(phi), - normal = [sin$1(lambda), -cos$1(lambda), 0], - angle = 0, - winding = 0; - - sum$1.reset(); - - if (sinPhi === 1) phi = halfPi$2 + epsilon$2; - else if (sinPhi === -1) phi = -halfPi$2 - epsilon$2; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin$1(phi0), - cosPhi0 = cos$1(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin$1(phi1), - cosPhi1 = cos$1(phi1), - delta = lambda1 - lambda0, - sign = delta >= 0 ? 1 : -1, - absDelta = sign * delta, - antimeridian = absDelta > pi$3, - k = sinPhi0 * sinPhi1; - - sum$1.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); - angle += antimeridian ? delta + sign * tau$3 : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi$2 - epsilon$2 : halfPi$2 - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi$2 - epsilon$2 : halfPi$2 - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi$3, -halfPi$2] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi$3 : -pi$3, - delta = abs(lambda1 - lambda0); - if (abs(delta - pi$3) < epsilon$2) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$2 : -halfPi$2); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi$3) { // line crosses antimeridian - if (abs(lambda0 - sign0) < epsilon$2) lambda0 -= sign0 * epsilon$2; // handle degeneracies - if (abs(lambda1 - sign1) < epsilon$2) lambda1 -= sign1 * epsilon$2; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin$1(lambda0 - lambda1); - return abs(sinLambda0Lambda1) > epsilon$2 - ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi$2; - stream.point(-pi$3, phi); - stream.point(0, phi); - stream.point(pi$3, phi); - stream.point(pi$3, 0); - stream.point(pi$3, -phi); - stream.point(0, -phi); - stream.point(-pi$3, -phi); - stream.point(-pi$3, 0); - stream.point(-pi$3, phi); - } else if (abs(from[0] - to[0]) > epsilon$2) { - var lambda = from[0] < to[0] ? pi$3 : -pi$3; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos$1(radius), - delta = 6 * radians, - smallRadius = cr > 0, - notHemisphere = abs(cr) > epsilon$2; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos$1(lambda) * cos$1(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi$3 : -pi$3), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - // Handle degeneracies. - // TODO ignore if not clipping polygons. - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { - point1[0] += epsilon$2; - point1[1] += epsilon$2; - v = visible(point1[0], point1[1]); - } - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1]); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs(delta - pi$3) < epsilon$2, - meridian = polar || delta < epsilon$2; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$2 ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi$3 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi$3 - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$3, radius - pi$3]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs(p[0] - x0) < epsilon$2 ? direction > 0 ? 0 : 3 - : abs(p[0] - x1) < epsilon$2 ? direction > 0 ? 2 : 1 - : abs(p[1] - y0) < epsilon$2 ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent$1() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum = adder(), - lambda0$2, - sinPhi0$1, - cosPhi0$1; - -var lengthStream = { - sphere: noop$2, - point: noop$2, - lineStart: lengthLineStart, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2 -}; - -function lengthLineStart() { - lengthStream.point = lengthPointFirst; - lengthStream.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream.point = lengthStream.lineEnd = noop$2; -} - -function lengthPointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi); - lengthStream.point = lengthPoint; -} - -function lengthPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin$1(phi), - cosPhi = cos$1(phi), - delta = abs(lambda - lambda0$2), - cosDelta = cos$1(delta), - sinDelta = sin$1(delta), - x = cosPhi * sinDelta, - y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, - z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; - lengthSum.add(atan2(sqrt(x * x + y * y), z)); - lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; -} - -function length$1(object) { - lengthSum.reset(); - geoStream(object, lengthStream); - return +lengthSum; -} - -var coordinates = [null, null], - object$1 = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length$1(object$1); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2$1 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains$1(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = sequence(y0, y1 - epsilon$2, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = sequence(x0, x1 - epsilon$2, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return sequence(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(sequence(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(sequence(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$2; }).map(x)) - .concat(sequence(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$2; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon$2], [180, 90 - epsilon$2]]) - .extentMinor([[-180, -80 - epsilon$2], [180, 80 + epsilon$2]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate$1(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos$1(y0), - sy0 = sin$1(y0), - cy1 = cos$1(y1), - sy1 = sin$1(y1), - kx0 = cy0 * cos$1(x0), - ky0 = cy0 * sin$1(x0), - kx1 = cy1 * cos$1(x1), - ky1 = cy1 * sin$1(x1), - d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin$1(d); - - var interpolate = d ? function(t) { - var B = sin$1(t *= d) / k, - A = sin$1(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2(y, x) * degrees$1, - atan2(z, sqrt(x * x + y * y)) * degrees$1 - ]; - } : function() { - return [x0 * degrees$1, y0 * degrees$1]; - }; - - interpolate.distance = d; - - return interpolate; -} - -function identity$4(x) { - return x; -} - -var areaSum$1 = adder(), - areaRingSum$1 = adder(), - x00, - y00, - x0$1, - y0$1; - -var areaStream$1 = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$2; - areaSum$1.add(abs(areaRingSum$1)); - areaRingSum$1.reset(); - }, - result: function() { - var area = areaSum$1 / 2; - areaSum$1.reset(); - return area; - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaPointFirst$1(x, y) { - areaStream$1.point = areaPoint$1; - x00 = x0$1 = x, y00 = y0$1 = y; -} - -function areaPoint$1(x, y) { - areaRingSum$1.add(y0$1 * x - x0$1 * y); - x0$1 = x, y0$1 = y; -} - -function areaRingEnd$1() { - areaPoint$1(x00, y00); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint$1(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0$1 = 0, - Y0$1 = 0, - Z0$1 = 0, - X1$1 = 0, - Y1$1 = 0, - Z1$1 = 0, - X2$1 = 0, - Y2$1 = 0, - Z2$1 = 0, - x00$1, - y00$1, - x0$3, - y0$3; - -var centroidStream$1 = { - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.point = centroidPoint$1; - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - }, - result: function() { - var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] - : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] - : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] - : [NaN, NaN]; - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = - X2$1 = Y2$1 = Z2$1 = 0; - return centroid; - } -}; - -function centroidPoint$1(x, y) { - X0$1 += x; - Y0$1 += y; - ++Z0$1; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream$1.point = centroidPointLine; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingStart$1() { - centroidStream$1.point = centroidPointFirstRing; -} - -function centroidRingEnd$1() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream$1.point = centroidPointRing; - centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$3, - dy = y - y0$3, - z = sqrt(dx * dx + dy * dy); - - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - - z = y0$3 * x - x0$3 * y; - X2$1 += z * (x0$3 + x); - Y2$1 += z * (y0$3 + y); - Z2$1 += z * 3; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau$3); - break; - } - } - }, - result: noop$2 -}; - -var lengthSum$1 = adder(), - lengthRing, - x00$2, - y00$2, - x0$4, - y0$4; - -var lengthStream$1 = { - point: noop$2, - lineStart: function() { - lengthStream$1.point = lengthPointFirst$1; - }, - lineEnd: function() { - if (lengthRing) lengthPoint$1(x00$2, y00$2); - lengthStream$1.point = noop$2; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum$1; - lengthSum$1.reset(); - return length; - } -}; - -function lengthPointFirst$1(x, y) { - lengthStream$1.point = lengthPoint$1; - x00$2 = x0$4 = x, y00$2 = y0$4 = y; -} - -function lengthPoint$1(x, y) { - x0$4 -= x, y0$4 -= y; - lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); - x0$4 = x, y0$4 = y; -} - -function PathString() { - this._string = []; -} - -PathString.prototype = { - _radius: 4.5, - _circle: circle$1(4.5), - pointRadius: function(_) { - if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; - return this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._string.push("Z"); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._string.push("M", x, ",", y); - this._point = 1; - break; - } - case 1: { - this._string.push("L", x, ",", y); - break; - } - default: { - if (this._circle == null) this._circle = circle$1(this._radius); - this._string.push("M", x, ",", y, this._circle); - break; - } - } - }, - result: function() { - if (this._string.length) { - var result = this._string.join(""); - this._string = []; - return result; - } else { - return null; - } - } -}; - -function circle$1(radius) { - return "m0," + radius - + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius - + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius - + "z"; -} - -function index$1(projection, context) { - var pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream$1)); - return areaStream$1.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream$1)); - return lengthStream$1.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream$1)); - return boundsStream$1.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream$1)); - return centroidStream$1.result(); - }; - - path.projection = function(_) { - return arguments.length ? (projectionStream = _ == null ? (projection = null, identity$4) : (projection = _).stream, path) : projection; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - return path.projection(projection).context(context); -} - -function transform(methods) { - return { - stream: transformer(methods) - }; -} - -function transformer(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream$1)); - fitBounds(boundsStream$1.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt(a * a + b * b + c * c), - phi2 = asin(c /= m), - lambda2 = abs(abs(c) - 1) < epsilon$2 || abs(lambda0 - lambda1) < epsilon$2 ? (lambda0 + lambda1) / 2 : atan2(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy) { - function transform(x, y) { - return [dx + k * x, dy - k * y]; - } - transform.invert = function(x, y) { - return [(x - dx) / k, (dy - y) / k]; - }; - return transform; -} - -function scaleTranslateRotate(k, dx, dy, alpha) { - var cosAlpha = cos$1(alpha), - sinAlpha = sin$1(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform(x, y) { - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform.invert = function(x, y) { - return [ai * x - bi * y + ci, fi - bi * x - ai * y]; - }; - return transform; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity$4, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees$1, point[1] * degrees$1]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees$1; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), - transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi$3 / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos$1(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs(n) < epsilon$2) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; - - function project(x, y) { - var r = sqrt(c - 2 * n * sin$1(y)) / n; - return [r * sin$1(x *= n), r0 - r * cos$1(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y; - return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon$2, y + 0.120 * k + epsilon$2], [x - 0.214 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon$2, y + 0.166 * k + epsilon$2], [x - 0.115 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos$1(x), - cy = cos$1(y), - k = scale(cx * cy); - return [ - k * cy * sin$1(x), - k * sin$1(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt(x * x + y * y), - c = angle(z), - sc = sin$1(c), - cc = cos$1(c); - return [ - atan2(x * sc, z * cc), - asin(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos(c)) && c / sin$1(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi$2 + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi$2]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau$3); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi$3 * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi$2 + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : log(cy0 / cos$1(y1)) / log(tany(y1) / tany(y0)), - f = cy0 * pow(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi$2 + epsilon$2) y = -halfPi$2 + epsilon$2; } - else { if (y > halfPi$2 - epsilon$2) y = halfPi$2 - epsilon$2; } - var r = f / pow(tany(y), n); - return [r * sin$1(n * x), f - r * cos$1(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); - return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs(n) < epsilon$2) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin$1(nx), g - gy * cos$1(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y; - return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M = sqrt(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin$1(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos$1(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs(delta) < epsilon2$1) break; - } - return [ - M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), - asin(sin$1(l) / M) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos$1(y), k = cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function scaleTranslate$1(kx, ky, tx, ty) { - return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$4 : transformer({ - point: function(x, y) { - this.stream.point(x * kx + tx, y * ky + ty); - } - }); -} - -function identity$5() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity$4, // scale, translate and reflect - x0 = null, y0, x1, y1, // clip extent - postclip = identity$4, - cache, - cacheStream, - projection; - - function reset() { - cache = cacheStream = null; - return projection; - } - - return projection = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream)); - }, - postclip: function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }, - clipExtent: function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }, - scale: function(_) { - return arguments.length ? (transform = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; - }, - translate: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; - }, - reflectX: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; - }, - reflectY: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; - }, - fitExtent: function(extent, object) { - return fitExtent(projection, extent, object); - }, - fitSize: function(size, object) { - return fitSize(projection, size, object); - }, - fitWidth: function(width, object) { - return fitWidth(projection, width, object); - }, - fitHeight: function(height, object) { - return fitHeight(projection, height, object); - } - }; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs(delta) > epsilon$2 && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos$1(y) * sin$1(x), sin$1(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon$2); -} - -function stereographicRaw(x, y) { - var cy = cos$1(y), k = 1 + cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi$2 + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi$2]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -function defaultSeparation(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -function meanX(children) { - return children.reduce(meanXReduce, 0) / children.length; -} - -function meanXReduce(x, c) { - return x + c.x; -} - -function maxY(children) { - return 1 + children.reduce(maxYReduce, 0); -} - -function maxYReduce(y, c) { - return Math.max(y, c.y); -} - -function leafLeft(node) { - var children; - while (children = node.children) node = children[0]; - return node; -} - -function leafRight(node) { - var children; - while (children = node.children) node = children[children.length - 1]; - return node; -} - -function cluster() { - var separation = defaultSeparation, - dx = 1, - dy = 1, - nodeSize = false; - - function cluster(root) { - var previousNode, - x = 0; - - // First walk, computing the initial x & y values. - root.eachAfter(function(node) { - var children = node.children; - if (children) { - node.x = meanX(children); - node.y = maxY(children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - var left = leafLeft(root), - right = leafRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - return root.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root.x) * dx; - node.y = (root.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; - }); - } - - cluster.separation = function(x) { - return arguments.length ? (separation = x, cluster) : separation; - }; - - cluster.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); - }; - - cluster.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); - }; - - return cluster; -} - -function count(node) { - var sum = 0, - children = node.children, - i = children && children.length; - if (!i) sum = 1; - else while (--i >= 0) sum += children[i].value; - node.value = sum; -} - -function node_count() { - return this.eachAfter(count); -} - -function node_each(callback) { - var node = this, current, next = [node], children, i, n; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - callback(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - next.push(children[i]); - } - } - } while (next.length); - return this; -} - -function node_eachBefore(callback) { - var node = this, nodes = [node], children, i; - while (node = nodes.pop()) { - callback(node), children = node.children; - if (children) for (i = children.length - 1; i >= 0; --i) { - nodes.push(children[i]); - } - } - return this; -} - -function node_eachAfter(callback) { - var node = this, nodes = [node], next = [], children, i, n; - while (node = nodes.pop()) { - next.push(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - nodes.push(children[i]); - } - } - while (node = next.pop()) { - callback(node); - } - return this; -} - -function node_sum(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, - children = node.children, - i = children && children.length; - while (--i >= 0) sum += children[i].value; - node.value = sum; - }); -} - -function node_sort(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); -} - -function node_path(end) { - var start = this, - ancestor = leastCommonAncestor(start, end), - nodes = [start]; - while (start !== ancestor) { - start = start.parent; - nodes.push(start); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; -} - -function leastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = a.ancestors(), - bNodes = b.ancestors(), - c = null; - a = aNodes.pop(); - b = bNodes.pop(); - while (a === b) { - c = a; - a = aNodes.pop(); - b = bNodes.pop(); - } - return c; -} - -function node_ancestors() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; -} - -function node_descendants() { - var nodes = []; - this.each(function(node) { - nodes.push(node); - }); - return nodes; -} - -function node_leaves() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; -} - -function node_links() { - var root = this, links = []; - root.each(function(node) { - if (node !== root) { // Don’t include the root’s parent, if any. - links.push({source: node.parent, target: node}); - } - }); - return links; -} - -function hierarchy(data, children) { - var root = new Node(data), - valued = +data.value && (root.value = data.value), - node, - nodes = [root], - child, - childs, - i, - n; - - if (children == null) children = defaultChildren; - - while (node = nodes.pop()) { - if (valued) node.value = +node.data.value; - if ((childs = children(node.data)) && (n = childs.length)) { - node.children = new Array(n); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new Node(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - - return root.eachBefore(computeHeight); -} - -function node_copy() { - return hierarchy(this).eachBefore(copyData); -} - -function defaultChildren(d) { - return d.children; -} - -function copyData(node) { - node.data = node.data.data; -} - -function computeHeight(node) { - var height = 0; - do node.height = height; - while ((node = node.parent) && (node.height < ++height)); -} - -function Node(data) { - this.data = data; - this.depth = - this.height = 0; - this.parent = null; -} - -Node.prototype = hierarchy.prototype = { - constructor: Node, - count: node_count, - each: node_each, - eachAfter: node_eachAfter, - eachBefore: node_eachBefore, - sum: node_sum, - sort: node_sort, - path: node_path, - ancestors: node_ancestors, - descendants: node_descendants, - leaves: node_leaves, - links: node_links, - copy: node_copy -}; - -var slice$4 = Array.prototype.slice; - -function shuffle$1(array) { - var m = array.length, - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; -} - -function enclose(circles) { - var i = 0, n = (circles = shuffle$1(slice$4.call(circles))).length, B = [], p, e; - - while (i < n) { - p = circles[i]; - if (e && enclosesWeak(e, p)) ++i; - else e = encloseBasis(B = extendBasis(B, p)), i = 0; - } - - return e; -} - -function extendBasis(B, p) { - var i, j; - - if (enclosesWeakAll(p, B)) return [p]; - - // If we get here then B must have at least one element. - for (i = 0; i < B.length; ++i) { - if (enclosesNot(p, B[i]) - && enclosesWeakAll(encloseBasis2(B[i], p), B)) { - return [B[i], p]; - } - } - - // If we get here then B must have at least two elements. - for (i = 0; i < B.length - 1; ++i) { - for (j = i + 1; j < B.length; ++j) { - if (enclosesNot(encloseBasis2(B[i], B[j]), p) - && enclosesNot(encloseBasis2(B[i], p), B[j]) - && enclosesNot(encloseBasis2(B[j], p), B[i]) - && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { - return [B[i], B[j], p]; - } - } - } - - // If we get here then something is very wrong. - throw new Error; -} - -function enclosesNot(a, b) { - var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; - return dr < 0 || dr * dr < dx * dx + dy * dy; -} - -function enclosesWeak(a, b) { - var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function enclosesWeakAll(a, B) { - for (var i = 0; i < B.length; ++i) { - if (!enclosesWeak(a, B[i])) { - return false; - } - } - return true; -} - -function encloseBasis(B) { - switch (B.length) { - case 1: return encloseBasis1(B[0]); - case 2: return encloseBasis2(B[0], B[1]); - case 3: return encloseBasis3(B[0], B[1], B[2]); - } -} - -function encloseBasis1(a) { - return { - x: a.x, - y: a.y, - r: a.r - }; -} - -function encloseBasis2(a, b) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, - l = Math.sqrt(x21 * x21 + y21 * y21); - return { - x: (x1 + x2 + x21 / l * r21) / 2, - y: (y1 + y2 + y21 / l * r21) / 2, - r: (l + r1 + r2) / 2 - }; -} - -function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x3 = c.x, y3 = c.y, r3 = c.r, - a2 = x1 - x2, - a3 = x1 - x3, - b2 = y1 - y2, - b3 = y1 - y3, - c2 = r2 - r1, - c3 = r3 - r1, - d1 = x1 * x1 + y1 * y1 - r1 * r1, - d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, - d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, - ab = a3 * b2 - a2 * b3, - xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, - xb = (b3 * c2 - b2 * c3) / ab, - ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, - yb = (a2 * c3 - a3 * c2) / ab, - A = xb * xb + yb * yb - 1, - B = 2 * (r1 + xa * xb + ya * yb), - C = xa * xa + ya * ya - r1 * r1, - r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); - return { - x: x1 + xa + xb * r, - y: y1 + ya + yb * r, - r: r - }; -} - -function place(b, a, c) { - var dx = b.x - a.x, x, a2, - dy = b.y - a.y, y, b2, - d2 = dx * dx + dy * dy; - if (d2) { - a2 = a.r + c.r, a2 *= a2; - b2 = b.r + c.r, b2 *= b2; - if (a2 > b2) { - x = (d2 + b2 - a2) / (2 * d2); - y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); - c.x = b.x - x * dx - y * dy; - c.y = b.y - x * dy + y * dx; - } else { - x = (d2 + a2 - b2) / (2 * d2); - y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); - c.x = a.x + x * dx - y * dy; - c.y = a.y + x * dy + y * dx; - } - } else { - c.x = a.x + c.r; - c.y = a.y; - } -} - -function intersects(a, b) { - var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function score(node) { - var a = node._, - b = node.next._, - ab = a.r + b.r, - dx = (a.x * b.r + b.x * a.r) / ab, - dy = (a.y * b.r + b.y * a.r) / ab; - return dx * dx + dy * dy; -} - -function Node$1(circle) { - this._ = circle; - this.next = null; - this.previous = null; -} - -function packEnclose(circles) { - if (!(n = circles.length)) return 0; - - var a, b, c, n, aa, ca, i, j, k, sj, sk; - - // Place the first circle. - a = circles[0], a.x = 0, a.y = 0; - if (!(n > 1)) return a.r; - - // Place the second circle. - b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; - if (!(n > 2)) return a.r + b.r; - - // Place the third circle. - place(b, a, c = circles[2]); - - // Initialize the front-chain using the first three circles a, b and c. - a = new Node$1(a), b = new Node$1(b), c = new Node$1(c); - a.next = c.previous = b; - b.next = a.previous = c; - c.next = b.previous = a; - - // Attempt to place each remaining circle… - pack: for (i = 3; i < n; ++i) { - place(a._, b._, c = circles[i]), c = new Node$1(c); - - // Find the closest intersecting circle on the front-chain, if any. - // “Closeness” is determined by linear distance along the front-chain. - // “Ahead” or “behind” is likewise determined by linear distance. - j = b.next, k = a.previous, sj = b._.r, sk = a._.r; - do { - if (sj <= sk) { - if (intersects(j._, c._)) { - b = j, a.next = b, b.previous = a, --i; - continue pack; - } - sj += j._.r, j = j.next; - } else { - if (intersects(k._, c._)) { - a = k, a.next = b, b.previous = a, --i; - continue pack; - } - sk += k._.r, k = k.previous; - } - } while (j !== k.next); - - // Success! Insert the new circle c between a and b. - c.previous = a, c.next = b, a.next = b.previous = b = c; - - // Compute the new closest circle pair to the centroid. - aa = score(a); - while ((c = c.next) !== b) { - if ((ca = score(c)) < aa) { - a = c, aa = ca; - } - } - b = a.next; - } - - // Compute the enclosing circle of the front chain. - a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a); - - // Translate the circles to put the enclosing circle around the origin. - for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; - - return c.r; -} - -function siblings(circles) { - packEnclose(circles); - return circles; -} - -function optional(f) { - return f == null ? null : required(f); -} - -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -function constantZero() { - return 0; -} - -function constant$9(x) { - return function() { - return x; - }; -} - -function defaultRadius$1(d) { - return Math.sqrt(d.value); -} - -function index$2() { - var radius = null, - dx = 1, - dy = 1, - padding = constantZero; - - function pack(root) { - root.x = dx / 2, root.y = dy / 2; - if (radius) { - root.eachBefore(radiusLeaf(radius)) - .eachAfter(packChildren(padding, 0.5)) - .eachBefore(translateChild(1)); - } else { - root.eachBefore(radiusLeaf(defaultRadius$1)) - .eachAfter(packChildren(constantZero, 1)) - .eachAfter(packChildren(padding, root.r / Math.min(dx, dy))) - .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); - } - return root; - } - - pack.radius = function(x) { - return arguments.length ? (radius = optional(x), pack) : radius; - }; - - pack.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; - }; - - pack.padding = function(x) { - return arguments.length ? (padding = typeof x === "function" ? x : constant$9(+x), pack) : padding; - }; - - return pack; -} - -function radiusLeaf(radius) { - return function(node) { - if (!node.children) { - node.r = Math.max(0, +radius(node) || 0); - } - }; -} - -function packChildren(padding, k) { - return function(node) { - if (children = node.children) { - var children, - i, - n = children.length, - r = padding(node) * k || 0, - e; - - if (r) for (i = 0; i < n; ++i) children[i].r += r; - e = packEnclose(children); - if (r) for (i = 0; i < n; ++i) children[i].r -= r; - node.r = e + r; - } - }; -} - -function translateChild(k) { - return function(node) { - var parent = node.parent; - node.r *= k; - if (parent) { - node.x = parent.x + k * node.x; - node.y = parent.y + k * node.y; - } - }; -} - -function roundNode(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); -} - -function treemapDice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (x1 - x0) / parent.value; - - while (++i < n) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } -} - -function partition() { - var dx = 1, - dy = 1, - padding = 0, - round = false; - - function partition(root) { - var n = root.height + 1; - root.x0 = - root.y0 = padding; - root.x1 = dx; - root.y1 = dy / n; - root.eachBefore(positionNode(dy, n)); - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(dy, n) { - return function(node) { - if (node.children) { - treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); - } - var x0 = node.x0, - y0 = node.y0, - x1 = node.x1 - padding, - y1 = node.y1 - padding; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - - partition.round = function(x) { - return arguments.length ? (round = !!x, partition) : round; - }; - - partition.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; - }; - - partition.padding = function(x) { - return arguments.length ? (padding = +x, partition) : padding; - }; - - return partition; -} - -var keyPrefix$1 = "$", // Protect against keys like “__proto__”. - preroot = {depth: -1}, - ambiguous = {}; - -function defaultId(d) { - return d.id; -} - -function defaultParentId(d) { - return d.parentId; -} - -function stratify() { - var id = defaultId, - parentId = defaultParentId; - - function stratify(data) { - var d, - i, - n = data.length, - root, - parent, - node, - nodes = new Array(n), - nodeId, - nodeKey, - nodeByKey = {}; - - for (i = 0; i < n; ++i) { - d = data[i], node = nodes[i] = new Node(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { - nodeKey = keyPrefix$1 + (node.id = nodeId); - nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node; - } - } - - for (i = 0; i < n; ++i) { - node = nodes[i], nodeId = parentId(data[i], i, data); - if (nodeId == null || !(nodeId += "")) { - if (root) throw new Error("multiple roots"); - root = node; - } else { - parent = nodeByKey[keyPrefix$1 + nodeId]; - if (!parent) throw new Error("missing: " + nodeId); - if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); - if (parent.children) parent.children.push(node); - else parent.children = [node]; - node.parent = parent; - } - } - - if (!root) throw new Error("no root"); - root.parent = preroot; - root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); - root.parent = null; - if (n > 0) throw new Error("cycle"); - - return root; - } - - stratify.id = function(x) { - return arguments.length ? (id = required(x), stratify) : id; - }; - - stratify.parentId = function(x) { - return arguments.length ? (parentId = required(x), stratify) : parentId; - }; - - return stratify; -} - -function defaultSeparation$1(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -// function radialSeparation(a, b) { -// return (a.parent === b.parent ? 1 : 2) / a.depth; -// } - -// This function is used to traverse the left contour of a subtree (or -// subforest). It returns the successor of v on this contour. This successor is -// either given by the leftmost child of v or by the thread of v. The function -// returns null if and only if v is on the highest level of its subtree. -function nextLeft(v) { - var children = v.children; - return children ? children[0] : v.t; -} - -// This function works analogously to nextLeft. -function nextRight(v) { - var children = v.children; - return children ? children[children.length - 1] : v.t; -} - -// Shifts the current subtree rooted at w+. This is done by increasing -// prelim(w+) and mod(w+) by shift. -function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; -} - -// All other shifts, applied to the smaller subtrees between w- and w+, are -// performed by this function. To prepare the shifts, we have to adjust -// change(w+), shift(w+), and change(w-). -function executeShifts(v) { - var shift = 0, - change = 0, - children = v.children, - i = children.length, - w; - while (--i >= 0) { - w = children[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } -} - -// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, -// returns the specified (default) ancestor. -function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; -} - -function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; // default ancestor - this.a = this; // ancestor - this.z = 0; // prelim - this.m = 0; // mod - this.c = 0; // change - this.s = 0; // shift - this.t = null; // thread - this.i = i; // number -} - -TreeNode.prototype = Object.create(Node.prototype); - -function treeRoot(root) { - var tree = new TreeNode(root, 0), - node, - nodes = [tree], - child, - children, - i, - n; - - while (node = nodes.pop()) { - if (children = node._.children) { - node.children = new Array(n = children.length); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children[i], i)); - child.parent = node; - } - } - } - - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; -} - -// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm -function tree() { - var separation = defaultSeparation$1, - dx = 1, - dy = 1, - nodeSize = null; - - function tree(root) { - var t = treeRoot(root); - - // Compute the layout using Buchheim et al.’s algorithm. - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - - // If a fixed node size is specified, scale x and y. - if (nodeSize) root.eachBefore(sizeNode); - - // If a fixed tree size is specified, scale x and y based on the extent. - // Compute the left-most, right-most, and depth-most nodes for extents. - else { - var left = root, - right = root, - bottom = root; - root.eachBefore(function(node) { - if (node.x < left.x) left = node; - if (node.x > right.x) right = node; - if (node.depth > bottom.depth) bottom = node; - }); - var s = left === right ? 1 : separation(left, right) / 2, - tx = s - left.x, - kx = dx / (right.x + s + tx), - ky = dy / (bottom.depth || 1); - root.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - - return root; - } - - // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is - // applied recursively to the children of v, as well as the function - // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the - // node v is placed to the midpoint of its outermost children. - function firstWalk(v) { - var children = v.children, - siblings = v.parent.children, - w = v.i ? siblings[v.i - 1] : null; - if (children) { - executeShifts(v); - var midpoint = (children[0].z + children[children.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - - // Computes all real x-coordinates by summing up the modifiers recursively. - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - - // The core of the algorithm. Here, a new subtree is combined with the - // previous subtrees. Threads are used to traverse the inside and outside - // contours of the left and right subtree up to the highest common level. The - // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the - // superscript o means outside and i means inside, the subscript - means left - // subtree and + means right subtree. For summing up the modifiers along the - // contour, we use respective variables si+, si-, so-, and so+. Whenever two - // nodes of the inside contours conflict, we compute the left one of the - // greatest uncommon ancestors using the function ANCESTOR and call MOVE - // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. - // Finally, we add a new thread (if necessary). - function apportion(v, w, ancestor) { - if (w) { - var vip = v, - vop = v, - vim = w, - vom = vip.parent.children[0], - sip = vip.m, - sop = vop.m, - sim = vim.m, - som = vom.m, - shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - - tree.separation = function(x) { - return arguments.length ? (separation = x, tree) : separation; - }; - - tree.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); - }; - - tree.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); - }; - - return tree; -} - -function treemapSlice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (y1 - y0) / parent.value; - - while (++i < n) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } -} - -var phi = (1 + Math.sqrt(5)) / 2; - -function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], - nodes = parent.children, - row, - nodeValue, - i0 = 0, - i1 = 0, - n = nodes.length, - dx, dy, - value = parent.value, - sumValue, - minValue, - maxValue, - newRatio, - minRatio, - alpha, - beta; - - while (i0 < n) { - dx = x1 - x0, dy = y1 - y0; - - // Find the next non-empty node. - do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - - // Keep adding nodes while the aspect ratio maintains or improves. - for (; i1 < n; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) minValue = nodeValue; - if (nodeValue > maxValue) maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { sumValue -= nodeValue; break; } - minRatio = newRatio; - } - - // Position and record the row orientation. - rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - - return rows; -} - -var squarify = (function custom(ratio) { - - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - - squarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return squarify; -})(phi); - -function index$3() { - var tile = squarify, - round = false, - dx = 1, - dy = 1, - paddingStack = [0], - paddingInner = constantZero, - paddingTop = constantZero, - paddingRight = constantZero, - paddingBottom = constantZero, - paddingLeft = constantZero; - - function treemap(root) { - root.x0 = - root.y0 = 0; - root.x1 = dx; - root.y1 = dy; - root.eachBefore(positionNode); - paddingStack = [0]; - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(node) { - var p = paddingStack[node.depth], - x0 = node.x0 + p, - y0 = node.y0 + p, - x1 = node.x1 - p, - y1 = node.y1 - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - - treemap.round = function(x) { - return arguments.length ? (round = !!x, treemap) : round; - }; - - treemap.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; - }; - - treemap.tile = function(x) { - return arguments.length ? (tile = required(x), treemap) : tile; - }; - - treemap.padding = function(x) { - return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); - }; - - treemap.paddingInner = function(x) { - return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$9(+x), treemap) : paddingInner; - }; - - treemap.paddingOuter = function(x) { - return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); - }; - - treemap.paddingTop = function(x) { - return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$9(+x), treemap) : paddingTop; - }; - - treemap.paddingRight = function(x) { - return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$9(+x), treemap) : paddingRight; - }; - - treemap.paddingBottom = function(x) { - return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$9(+x), treemap) : paddingBottom; - }; - - treemap.paddingLeft = function(x) { - return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$9(+x), treemap) : paddingLeft; - }; - - return treemap; -} - -function binary(parent, x0, y0, x1, y1) { - var nodes = parent.children, - i, n = nodes.length, - sum, sums = new Array(n + 1); - - for (sums[0] = sum = i = 0; i < n; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - - partition(0, n, parent.value, x0, y0, x1, y1); - - function partition(i, j, value, x0, y0, x1, y1) { - if (i >= j - 1) { - var node = nodes[i]; - node.x0 = x0, node.y0 = y0; - node.x1 = x1, node.y1 = y1; - return; - } - - var valueOffset = sums[i], - valueTarget = (value / 2) + valueOffset, - k = i + 1, - hi = j - 1; - - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) k = mid + 1; - else hi = mid; - } - - if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; - - var valueLeft = sums[k] - valueOffset, - valueRight = value - valueLeft; - - if ((x1 - x0) > (y1 - y0)) { - var xk = (x0 * valueRight + x1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, xk, y1); - partition(k, j, valueRight, xk, y0, x1, y1); - } else { - var yk = (y0 * valueRight + y1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, x1, yk); - partition(k, j, valueRight, x0, yk, x1, y1); - } - } -} - -function sliceDice(parent, x0, y0, x1, y1) { - (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); -} - -var resquarify = (function custom(ratio) { - - function resquarify(parent, x0, y0, x1, y1) { - if ((rows = parent._squarify) && (rows.ratio === ratio)) { - var rows, - row, - nodes, - i, - j = -1, - n, - m = rows.length, - value = parent.value; - - while (++j < m) { - row = rows[j], nodes = row.children; - for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; - if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value); - else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1); - value -= row.value; - } - } else { - parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); - rows.ratio = ratio; - } - } - - resquarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return resquarify; -})(phi); - -function area$2(polygon) { - var i = -1, - n = polygon.length, - a, - b = polygon[n - 1], - area = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - area += a[1] * b[0] - a[0] * b[1]; - } - - return area / 2; -} - -function centroid$1(polygon) { - var i = -1, - n = polygon.length, - x = 0, - y = 0, - a, - b = polygon[n - 1], - c, - k = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - k += c = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * c; - y += (a[1] + b[1]) * c; - } - - return k *= 3, [x / k, y / k]; -} - -// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of -// the 3D cross product in a quadrant I Cartesian coordinate system (+x is -// right, +y is up). Returns a positive value if ABC is counter-clockwise, -// negative if clockwise, and zero if the points are collinear. -function cross$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); -} - -function lexicographicOrder(a, b) { - return a[0] - b[0] || a[1] - b[1]; -} - -// Computes the upper convex hull per the monotone chain algorithm. -// Assumes points.length >= 3, is sorted by x, unique in y. -// Returns an array of indices into points in left-to-right order. -function computeUpperHullIndexes(points) { - var n = points.length, - indexes = [0, 1], - size = 2; - - for (var i = 2; i < n; ++i) { - while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; - indexes[size++] = i; - } - - return indexes.slice(0, size); // remove popped points -} - -function hull(points) { - if ((n = points.length) < 3) return null; - - var i, - n, - sortedPoints = new Array(n), - flippedPoints = new Array(n); - - for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; - sortedPoints.sort(lexicographicOrder); - for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; - - var upperIndexes = computeUpperHullIndexes(sortedPoints), - lowerIndexes = computeUpperHullIndexes(flippedPoints); - - // Construct the hull polygon, removing possible duplicate endpoints. - var skipLeft = lowerIndexes[0] === upperIndexes[0], - skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], - hull = []; - - // Add upper hull in right-to-l order. - // Then add lower hull in left-to-right order. - for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); - for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); - - return hull; -} - -function contains$2(polygon, point) { - var n = polygon.length, - p = polygon[n - 1], - x = point[0], y = point[1], - x0 = p[0], y0 = p[1], - x1, y1, - inside = false; - - for (var i = 0; i < n; ++i) { - p = polygon[i], x1 = p[0], y1 = p[1]; - if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; - x0 = x1, y0 = y1; - } - - return inside; -} - -function length$2(polygon) { - var i = -1, - n = polygon.length, - b = polygon[n - 1], - xa, - ya, - xb = b[0], - yb = b[1], - perimeter = 0; - - while (++i < n) { - xa = xb; - ya = yb; - b = polygon[i]; - xb = b[0]; - yb = b[1]; - xa -= xb; - ya -= yb; - perimeter += Math.sqrt(xa * xa + ya * ya); - } - - return perimeter; -} - -function defaultSource$1() { - return Math.random(); -} - -var uniform = (function sourceRandomUniform(source) { - function randomUniform(min, max) { - min = min == null ? 0 : +min; - max = max == null ? 1 : +max; - if (arguments.length === 1) max = min, min = 0; - else max -= min; - return function() { - return source() * max + min; - }; - } - - randomUniform.source = sourceRandomUniform; - - return randomUniform; -})(defaultSource$1); - -var normal = (function sourceRandomNormal(source) { - function randomNormal(mu, sigma) { - var x, r; - mu = mu == null ? 0 : +mu; - sigma = sigma == null ? 1 : +sigma; - return function() { - var y; - - // If available, use the second previously-generated uniform random. - if (x != null) y = x, x = null; - - // Otherwise, generate a new x and y. - else do { - x = source() * 2 - 1; - y = source() * 2 - 1; - r = x * x + y * y; - } while (!r || r > 1); - - return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); - }; - } - - randomNormal.source = sourceRandomNormal; - - return randomNormal; -})(defaultSource$1); - -var logNormal = (function sourceRandomLogNormal(source) { - function randomLogNormal() { - var randomNormal = normal.source(source).apply(this, arguments); - return function() { - return Math.exp(randomNormal()); - }; - } - - randomLogNormal.source = sourceRandomLogNormal; - - return randomLogNormal; -})(defaultSource$1); - -var irwinHall = (function sourceRandomIrwinHall(source) { - function randomIrwinHall(n) { - return function() { - for (var sum = 0, i = 0; i < n; ++i) sum += source(); - return sum; - }; - } - - randomIrwinHall.source = sourceRandomIrwinHall; - - return randomIrwinHall; -})(defaultSource$1); - -var bates = (function sourceRandomBates(source) { - function randomBates(n) { - var randomIrwinHall = irwinHall.source(source)(n); - return function() { - return randomIrwinHall() / n; - }; - } - - randomBates.source = sourceRandomBates; - - return randomBates; -})(defaultSource$1); - -var exponential$1 = (function sourceRandomExponential(source) { - function randomExponential(lambda) { - return function() { - return -Math.log(1 - source()) / lambda; - }; - } - - randomExponential.source = sourceRandomExponential; - - return randomExponential; -})(defaultSource$1); - -function initRange(domain, range) { - switch (arguments.length) { - case 0: break; - case 1: this.range(domain); break; - default: this.range(range).domain(domain); break; - } - return this; -} - -function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: break; - case 1: this.interpolator(domain); break; - default: this.interpolator(interpolator).domain(domain); break; - } - return this; -} - -var array$3 = Array.prototype; - -var map$3 = array$3.map; -var slice$5 = array$3.slice; - -var implicit = {name: "implicit"}; - -function ordinal() { - var index = map$1(), - domain = [], - range = [], - unknown = implicit; - - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = map$1(); - var i = -1, n = _.length, d, key; - while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); - return scale; - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), scale) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function band() { - var scale = ordinal().unknown(undefined), - domain = scale.domain, - ordinalRange = scale.range, - range = [0, 1], - step, - bandwidth, - round = false, - paddingInner = 0, - paddingOuter = 0, - align = 0.5; - - delete scale.unknown; - - function rescale() { - var n = domain().length, - reverse = range[1] < range[0], - start = range[reverse - 0], - stop = range[1 - reverse]; - step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start += (stop - start - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); - var values = sequence(n).map(function(i) { return start + step * i; }); - return ordinalRange(reverse ? values.reverse() : values); - } - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.range = function(_) { - return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = [+_[0], +_[1]], round = true, rescale(); - }; - - scale.bandwidth = function() { - return bandwidth; - }; - - scale.step = function() { - return step; - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - - scale.copy = function() { - return band(domain(), range) - .round(round) - .paddingInner(paddingInner) - .paddingOuter(paddingOuter) - .align(align); - }; - - return initRange.apply(rescale(), arguments); -} - -function pointish(scale) { - var copy = scale.copy; - - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - - scale.copy = function() { - return pointish(copy()); - }; - - return scale; -} - -function point$1() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -function constant$a(x) { - return function() { - return x; - }; -} - -function number$2(x) { - return +x; -} - -var unit = [0, 1]; - -function identity$6(x) { - return x; -} - -function normalize(a, b) { - return (b -= (a = +a)) - ? function(x) { return (x - a) / b; } - : constant$a(isNaN(b) ? NaN : 0.5); -} - -function clamper(domain) { - var a = domain[0], b = domain[domain.length - 1], t; - if (a > b) t = a, a = b, b = t; - return function(x) { return Math.max(a, Math.min(b, x)); }; -} - -// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. -// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. -function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x) { return r0(d0(x)); }; -} - -function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, - d = new Array(j), - r = new Array(j), - i = -1; - - // Reverse descending domains. - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - - return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; - return r[i](d[i](x)); - }; -} - -function copy(source, target) { - return target - .domain(source.domain()) - .range(source.range()) - .interpolate(source.interpolate()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function transformer$1() { - var domain = unit, - range = unit, - interpolate = interpolateValue, - transform, - untransform, - unknown, - clamp = identity$6, - piecewise, - output, - input; - - function rescale() { - piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; - output = input = null; - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); - } - - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - - scale.domain = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), clamp === identity$6 || (clamp = clamper(domain)), rescale()) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = slice$5.call(_), interpolate = interpolateRound, rescale(); - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? clamper(domain) : identity$6, scale) : clamp !== identity$6; - }; - - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; -} - -function continuous(transform, untransform) { - return transformer$1()(transform, untransform); -} - -function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), - precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; - return exports.formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return exports.format(specifier); -} - -function linearish(scale) { - var domain = scale.domain; - - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - - scale.nice = function(count) { - if (count == null) count = 10; - - var d = domain(), - i0 = 0, - i1 = d.length - 1, - start = d[i0], - stop = d[i1], - step; - - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - - step = tickIncrement(start, stop, count); - - if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - step = tickIncrement(start, stop, count); - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - step = tickIncrement(start, stop, count); - } - - if (step > 0) { - d[i0] = Math.floor(start / step) * step; - d[i1] = Math.ceil(stop / step) * step; - domain(d); - } else if (step < 0) { - d[i0] = Math.ceil(start * step) / step; - d[i1] = Math.floor(stop * step) / step; - domain(d); - } - - return scale; - }; - - return scale; -} - -function linear$2() { - var scale = continuous(identity$6, identity$6); - - scale.copy = function() { - return copy(scale, linear$2()); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); -} - -function identity$7(domain) { - var unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : x; - } - - scale.invert = scale; - - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return identity$7(domain).unknown(unknown); - }; - - domain = arguments.length ? map$3.call(domain, number$2) : [0, 1]; - - return linearish(scale); -} - -function nice(domain, interval) { - domain = domain.slice(); - - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - t; - - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; -} - -function transformLog(x) { - return Math.log(x); -} - -function transformExp(x) { - return Math.exp(x); -} - -function transformLogn(x) { - return -Math.log(-x); -} - -function transformExpn(x) { - return -Math.exp(-x); -} - -function pow10(x) { - return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; -} - -function powp(base) { - return base === 10 ? pow10 - : base === Math.E ? Math.exp - : function(x) { return Math.pow(base, x); }; -} - -function logp(base) { - return base === Math.E ? Math.log - : base === 10 && Math.log10 - || base === 2 && Math.log2 - || (base = Math.log(base), function(x) { return Math.log(x) / base; }); -} - -function reflect(f) { - return function(x) { - return -f(-x); - }; -} - -function loggish(transform) { - var scale = transform(transformLog, transformExp), - domain = scale.domain, - base = 10, - logs, - pows; - - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform(transformLogn, transformExpn); - } else { - transform(transformLog, transformExp); - } - return scale; - } - - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.ticks = function(count) { - var d = domain(), - u = d[0], - v = d[d.length - 1], - r; - - if (r = v < u) i = u, u = v, v = i; - - var i = logs(u), - j = logs(v), - p, - k, - t, - n = count == null ? 10 : +count, - z = []; - - if (!(base % 1) && j - i < n) { - i = Math.round(i) - 1, j = Math.round(j) + 1; - if (u > 0) for (; i < j; ++i) { - for (k = 1, p = pows(i); k < base; ++k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } else for (; i < j; ++i) { - for (k = base - 1, p = pows(i); k >= 1; --k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - - return r ? z.reverse() : z; - }; - - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = exports.format(specifier); - if (count === Infinity) return specifier; - if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k ? specifier(d) : ""; - }; - }; - - scale.nice = function() { - return domain(nice(domain(), { - floor: function(x) { return pows(Math.floor(logs(x))); }, - ceil: function(x) { return pows(Math.ceil(logs(x))); } - })); - }; - - return scale; -} - -function log$1() { - var scale = loggish(transformer$1()).domain([1, 10]); - - scale.copy = function() { - return copy(scale, log$1()).base(scale.base()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function transformSymlog(c) { - return function(x) { - return Math.sign(x) * Math.log1p(Math.abs(x / c)); - }; -} - -function transformSymexp(c) { - return function(x) { - return Math.sign(x) * Math.expm1(Math.abs(x)) * c; - }; -} - -function symlogish(transform) { - var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); - - scale.constant = function(_) { - return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; - }; - - return linearish(scale); -} - -function symlog() { - var scale = symlogish(transformer$1()); - - scale.copy = function() { - return copy(scale, symlog()).constant(scale.constant()); - }; - - return initRange.apply(scale, arguments); -} - -function transformPow(exponent) { - return function(x) { - return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); - }; -} - -function transformSqrt(x) { - return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); -} - -function transformSquare(x) { - return x < 0 ? -x * x : x * x; -} - -function powish(transform) { - var scale = transform(identity$6, identity$6), - exponent = 1; - - function rescale() { - return exponent === 1 ? transform(identity$6, identity$6) - : exponent === 0.5 ? transform(transformSqrt, transformSquare) - : transform(transformPow(exponent), transformPow(1 / exponent)); - } - - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - - return linearish(scale); -} - -function pow$1() { - var scale = powish(transformer$1()); - - scale.copy = function() { - return copy(scale, pow$1()).exponent(scale.exponent()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function sqrt$1() { - return pow$1.apply(null, arguments).exponent(0.5); -} - -function quantile() { - var domain = [], - range = [], - thresholds = [], - unknown; - - function rescale() { - var i = 0, n = Math.max(1, range.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = threshold(domain, i / n); - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : range[bisectRight(thresholds, x)]; - } - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return rescale(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.quantiles = function() { - return thresholds.slice(); - }; - - scale.copy = function() { - return quantile() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -function quantize$1() { - var x0 = 0, - x1 = 1, - n = 1, - domain = [0.5], - range = [0, 1], - unknown; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - function rescale() { - var i = -1; - domain = new Array(n); - while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); - return scale; - } - - scale.domain = function(_) { - return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1]; - }; - - scale.range = function(_) { - return arguments.length ? (n = (range = slice$5.call(_)).length - 1, rescale()) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] - : i < 1 ? [x0, domain[0]] - : i >= n ? [domain[n - 1], x1] - : [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : scale; - }; - - scale.thresholds = function() { - return domain.slice(); - }; - - scale.copy = function() { - return quantize$1() - .domain([x0, x1]) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(linearish(scale), arguments); -} - -function threshold$1() { - var domain = [0.5], - range = [0, 1], - unknown, - n = 1; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - scale.domain = function(_) { - return arguments.length ? (domain = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return threshold$1() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -var t0$1 = new Date, - t1$1 = new Date; - -function newInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = function(date) { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = function(date) { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = function(date) { - var d0 = interval(date), - d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = function(date, step) { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = function(test) { - return newInterval(function(date) { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, function(date, step) { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = function(start, end) { - t0$1.setTime(+start), t1$1.setTime(+end); - floori(t0$1), floori(t1$1); - return Math.floor(count(t0$1, t1$1)); - }; - - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? function(d) { return field(d) % step === 0; } - : function(d) { return interval.count(0, d) % step === 0; }); - }; - } - - return interval; -} - -var millisecond = newInterval(function() { - // noop -}, function(date, step) { - date.setTime(+date + step); -}, function(start, end) { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return newInterval(function(date) { - date.setTime(Math.floor(date / k) * k); - }, function(date, step) { - date.setTime(+date + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -var milliseconds = millisecond.range; - -var durationSecond = 1e3; -var durationMinute = 6e4; -var durationHour = 36e5; -var durationDay = 864e5; -var durationWeek = 6048e5; - -var second = newInterval(function(date) { - date.setTime(date - date.getMilliseconds()); -}, function(date, step) { - date.setTime(+date + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date) { - return date.getUTCSeconds(); -}); -var seconds = second.range; - -var minute = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getMinutes(); -}); -var minutes = minute.range; - -var hour = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getHours(); -}); -var hours = hour.range; - -var day = newInterval(function(date) { - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setDate(date.getDate() + step); -}, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; -}, function(date) { - return date.getDate() - 1; -}); -var days = day.range; - -function weekday(i) { - return newInterval(function(date) { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setDate(date.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); - -var sundays = sunday.range; -var mondays = monday.range; -var tuesdays = tuesday.range; -var wednesdays = wednesday.range; -var thursdays = thursday.range; -var fridays = friday.range; -var saturdays = saturday.range; - -var month = newInterval(function(date) { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setMonth(date.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date) { - return date.getMonth(); -}); -var months = month.range; - -var year = newInterval(function(date) { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setFullYear(date.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date) { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setFullYear(date.getFullYear() + step * k); - }); -}; -var years = year.range; - -var utcMinute = newInterval(function(date) { - date.setUTCSeconds(0, 0); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -var utcHour = newInterval(function(date) { - date.setUTCMinutes(0, 0, 0); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getUTCHours(); -}); -var utcHours = utcHour.range; - -var utcDay = newInterval(function(date) { - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCDate(date.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date) { - return date.getUTCDate() - 1; -}); -var utcDays = utcDay.range; - -function utcWeekday(i) { - return newInterval(function(date) { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCDate(date.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} - -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); - -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -var utcMonth = newInterval(function(date) { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCMonth(date.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date) { - return date.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -var utcYear = newInterval(function(date) { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date) { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; -var utcYears = utcYear.range; - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale$1(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear$1, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day$1; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay(); - week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay(); - week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week); - week = day.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day$1 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad$1(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - var map = {}, i = -1, n = names.length; - while (++i < n) map[names[i].toLowerCase()] = i; - return map; -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad$1(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad$1(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad$1(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad$1(1 + day.count(year(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad$1(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad$1(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad$1(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad$1(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad$1(sunday.count(year(d) - 1, d), p, 2); -} - -function formatWeekNumberISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d); - return pad$1(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad$1(monday.count(year(d) - 1, d), p, 2); -} - -function formatYear$1(d, p) { - return pad$1(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad$1(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad$1(z / 60 | 0, "0", 2) - + pad$1(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad$1(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad$1(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad$1(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad$1(1 + utcDay.count(utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad$1(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad$1(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad$1(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad$1(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad$1(utcSunday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCWeekNumberISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - return pad$1(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad$1(utcMonday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad$1(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad$1(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale$1; - -defaultLocale$1({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - exports.timeFormat = locale$1.format; - exports.timeParse = locale$1.parse; - exports.utcFormat = locale$1.utcFormat; - exports.utcParse = locale$1.utcParse; - return locale$1; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : exports.utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : exports.utcParse(isoSpecifier); - -var durationSecond$1 = 1000, - durationMinute$1 = durationSecond$1 * 60, - durationHour$1 = durationMinute$1 * 60, - durationDay$1 = durationHour$1 * 24, - durationWeek$1 = durationDay$1 * 7, - durationMonth = durationDay$1 * 30, - durationYear = durationDay$1 * 365; - -function date$1(t) { - return new Date(t); -} - -function number$3(t) { - return t instanceof Date ? +t : +new Date(+t); -} - -function calendar(year, month, week, day, hour, minute, second, millisecond, format) { - var scale = continuous(identity$6, identity$6), - invert = scale.invert, - domain = scale.domain; - - var formatMillisecond = format(".%L"), - formatSecond = format(":%S"), - formatMinute = format("%I:%M"), - formatHour = format("%I %p"), - formatDay = format("%a %d"), - formatWeek = format("%b %d"), - formatMonth = format("%B"), - formatYear = format("%Y"); - - var tickIntervals = [ - [second, 1, durationSecond$1], - [second, 5, 5 * durationSecond$1], - [second, 15, 15 * durationSecond$1], - [second, 30, 30 * durationSecond$1], - [minute, 1, durationMinute$1], - [minute, 5, 5 * durationMinute$1], - [minute, 15, 15 * durationMinute$1], - [minute, 30, 30 * durationMinute$1], - [ hour, 1, durationHour$1 ], - [ hour, 3, 3 * durationHour$1 ], - [ hour, 6, 6 * durationHour$1 ], - [ hour, 12, 12 * durationHour$1 ], - [ day, 1, durationDay$1 ], - [ day, 2, 2 * durationDay$1 ], - [ week, 1, durationWeek$1 ], - [ month, 1, durationMonth ], - [ month, 3, 3 * durationMonth ], - [ year, 1, durationYear ] - ]; - - function tickFormat(date) { - return (second(date) < date ? formatMillisecond - : minute(date) < date ? formatSecond - : hour(date) < date ? formatMinute - : day(date) < date ? formatHour - : month(date) < date ? (week(date) < date ? formatDay : formatWeek) - : year(date) < date ? formatMonth - : formatYear)(date); - } - - function tickInterval(interval, start, stop, step) { - if (interval == null) interval = 10; - - // If a desired tick count is specified, pick a reasonable tick interval - // based on the extent of the domain and a rough estimate of tick size. - // Otherwise, assume interval is already a time interval and use it. - if (typeof interval === "number") { - var target = Math.abs(stop - start) / interval, - i = bisector(function(i) { return i[2]; }).right(tickIntervals, target); - if (i === tickIntervals.length) { - step = tickStep(start / durationYear, stop / durationYear, interval); - interval = year; - } else if (i) { - i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - step = i[1]; - interval = i[0]; - } else { - step = Math.max(tickStep(start, stop, interval), 1); - interval = millisecond; - } - } - - return step == null ? interval : interval.every(step); - } - - scale.invert = function(y) { - return new Date(invert(y)); - }; - - scale.domain = function(_) { - return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1); - }; - - scale.ticks = function(interval, step) { - var d = domain(), - t0 = d[0], - t1 = d[d.length - 1], - r = t1 < t0, - t; - if (r) t = t0, t0 = t1, t1 = t; - t = tickInterval(interval, t0, t1, step); - t = t ? t.range(t0, t1 + 1) : []; // inclusive stop - return r ? t.reverse() : t; - }; - - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat : format(specifier); - }; - - scale.nice = function(interval, step) { - var d = domain(); - return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) - ? domain(nice(d, interval)) - : scale; - }; - - scale.copy = function() { - return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format)); - }; - - return scale; -} - -function time() { - return initRange.apply(calendar(year, month, sunday, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); -} - -function utcTime() { - return initRange.apply(calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); -} - -function transformer$2() { - var x0 = 0, - x1 = 1, - t0, - t1, - k10, - transform, - interpolator = identity$6, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); - return scale; - }; -} - -function copy$1(source, target) { - return target - .domain(source.domain()) - .interpolator(source.interpolator()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function sequential() { - var scale = linearish(transformer$2()(identity$6)); - - scale.copy = function() { - return copy$1(scale, sequential()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialLog() { - var scale = loggish(transformer$2()).domain([1, 10]); - - scale.copy = function() { - return copy$1(scale, sequentialLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSymlog() { - var scale = symlogish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialPow() { - var scale = powish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSqrt() { - return sequentialPow.apply(null, arguments).exponent(0.5); -} - -function sequentialQuantile() { - var domain = [], - interpolator = identity$6; - - function scale(x) { - if (!isNaN(x = +x)) return interpolator((bisectRight(domain, x) - 1) / (domain.length - 1)); - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return scale; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.copy = function() { - return sequentialQuantile(interpolator).domain(domain); - }; - - return initInterpolator.apply(scale, arguments); -} - -function transformer$3() { - var x0 = 0, - x1 = 0.5, - x2 = 1, - t0, - t1, - t2, - k10, - k21, - interpolator = identity$6, - transform, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1); - return scale; - }; -} - -function diverging() { - var scale = linearish(transformer$3()(identity$6)); - - scale.copy = function() { - return copy$1(scale, diverging()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingLog() { - var scale = loggish(transformer$3()).domain([0.1, 1, 10]); - - scale.copy = function() { - return copy$1(scale, divergingLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSymlog() { - var scale = symlogish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingPow() { - var scale = powish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSqrt() { - return divergingPow.apply(null, arguments).exponent(0.5); -} - -function colors(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - -var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - -var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - -var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - -var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - -var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - -var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - -var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - -var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - -function ramp(scheme) { - return rgbBasis(scheme[scheme.length - 1]); -} - -var scheme = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" -).map(colors); - -var BrBG = ramp(scheme); - -var scheme$1 = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" -).map(colors); - -var PRGn = ramp(scheme$1); - -var scheme$2 = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" -).map(colors); - -var PiYG = ramp(scheme$2); - -var scheme$3 = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" -).map(colors); - -var PuOr = ramp(scheme$3); - -var scheme$4 = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" -).map(colors); - -var RdBu = ramp(scheme$4); - -var scheme$5 = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" -).map(colors); - -var RdGy = ramp(scheme$5); - -var scheme$6 = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" -).map(colors); - -var RdYlBu = ramp(scheme$6); - -var scheme$7 = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" -).map(colors); - -var RdYlGn = ramp(scheme$7); - -var scheme$8 = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" -).map(colors); - -var Spectral = ramp(scheme$8); - -var scheme$9 = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" -).map(colors); - -var BuGn = ramp(scheme$9); - -var scheme$a = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" -).map(colors); - -var BuPu = ramp(scheme$a); - -var scheme$b = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" -).map(colors); - -var GnBu = ramp(scheme$b); - -var scheme$c = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" -).map(colors); - -var OrRd = ramp(scheme$c); - -var scheme$d = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" -).map(colors); - -var PuBuGn = ramp(scheme$d); - -var scheme$e = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" -).map(colors); - -var PuBu = ramp(scheme$e); - -var scheme$f = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" -).map(colors); - -var PuRd = ramp(scheme$f); - -var scheme$g = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" -).map(colors); - -var RdPu = ramp(scheme$g); - -var scheme$h = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" -).map(colors); - -var YlGnBu = ramp(scheme$h); - -var scheme$i = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" -).map(colors); - -var YlGn = ramp(scheme$i); - -var scheme$j = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" -).map(colors); - -var YlOrBr = ramp(scheme$j); - -var scheme$k = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" -).map(colors); - -var YlOrRd = ramp(scheme$k); - -var scheme$l = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" -).map(colors); - -var Blues = ramp(scheme$l); - -var scheme$m = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" -).map(colors); - -var Greens = ramp(scheme$m); - -var scheme$n = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" -).map(colors); - -var Greys = ramp(scheme$n); - -var scheme$o = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" -).map(colors); - -var Purples = ramp(scheme$o); - -var scheme$p = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" -).map(colors); - -var Reds = ramp(scheme$p); - -var scheme$q = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" -).map(colors); - -var Oranges = ramp(scheme$q); - -function cividis(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " - + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " - + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) - + ")"; -} - -var cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0)); - -var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var c = cubehelix(); - -function rainbow(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c.h = 360 * t - 100; - c.s = 1.5 - 1.5 * ts; - c.l = 0.8 - 0.9 * ts; - return c + ""; -} - -var c$1 = rgb(), - pi_1_3 = Math.PI / 3, - pi_2_3 = Math.PI * 2 / 3; - -function sinebow(t) { - var x; - t = (0.5 - t) * Math.PI; - c$1.r = 255 * (x = Math.sin(t)) * x; - c$1.g = 255 * (x = Math.sin(t + pi_1_3)) * x; - c$1.b = 255 * (x = Math.sin(t + pi_2_3)) * x; - return c$1 + ""; -} - -function turbo(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " - + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " - + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) - + ")"; -} - -function ramp$1(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -var viridis = ramp$1(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); - -var magma = ramp$1(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); - -var inferno = ramp$1(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); - -var plasma = ramp$1(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - -function constant$b(x) { - return function constant() { - return x; - }; -} - -var abs$1 = Math.abs; -var atan2$1 = Math.atan2; -var cos$2 = Math.cos; -var max$2 = Math.max; -var min$1 = Math.min; -var sin$2 = Math.sin; -var sqrt$2 = Math.sqrt; - -var epsilon$3 = 1e-12; -var pi$4 = Math.PI; -var halfPi$3 = pi$4 / 2; -var tau$4 = 2 * pi$4; - -function acos$1(x) { - return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x); -} - -function asin$1(x) { - return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x); -} - -function arcInnerRadius(d) { - return d.innerRadius; -} - -function arcOuterRadius(d) { - return d.outerRadius; -} - -function arcStartAngle(d) { - return d.startAngle; -} - -function arcEndAngle(d) { - return d.endAngle; -} - -function arcPadAngle(d) { - return d && d.padAngle; // Note: optional! -} - -function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var x10 = x1 - x0, y10 = y1 - y0, - x32 = x3 - x2, y32 = y3 - y2, - t = y32 * x10 - x32 * y10; - if (t * t < epsilon$3) return; - t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; - return [x0 + t * x10, y0 + t * y10]; -} - -// Compute perpendicular offset line of length rc. -// http://mathworld.wolfram.com/Circle-LineIntersection.html -function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, - y01 = y0 - y1, - lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01), - ox = lo * y01, - oy = -lo * x01, - x11 = x0 + ox, - y11 = y0 + oy, - x10 = x1 + ox, - y10 = y1 + oy, - x00 = (x11 + x10) / 2, - y00 = (y11 + y10) / 2, - dx = x10 - x11, - dy = y10 - y11, - d2 = dx * dx + dy * dy, - r = r1 - rc, - D = x11 * y10 - x10 * y11, - d = (dy < 0 ? -1 : 1) * sqrt$2(max$2(0, r * r * d2 - D * D)), - cx0 = (D * dy - dx * d) / d2, - cy0 = (-D * dx - dy * d) / d2, - cx1 = (D * dy + dx * d) / d2, - cy1 = (-D * dx + dy * d) / d2, - dx0 = cx0 - x00, - dy0 = cy0 - y00, - dx1 = cx1 - x00, - dy1 = cy1 - y00; - - // Pick the closer of the two intersection points. - // TODO Is there a faster way to determine which intersection to use? - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; - - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; -} - -function arc() { - var innerRadius = arcInnerRadius, - outerRadius = arcOuterRadius, - cornerRadius = constant$b(0), - padRadius = null, - startAngle = arcStartAngle, - endAngle = arcEndAngle, - padAngle = arcPadAngle, - context = null; - - function arc() { - var buffer, - r, - r0 = +innerRadius.apply(this, arguments), - r1 = +outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) - halfPi$3, - a1 = endAngle.apply(this, arguments) - halfPi$3, - da = abs$1(a1 - a0), - cw = a1 > a0; - - if (!context) context = buffer = path(); - - // Ensure that the outer radius is always larger than the inner radius. - if (r1 < r0) r = r1, r1 = r0, r0 = r; - - // Is it a point? - if (!(r1 > epsilon$3)) context.moveTo(0, 0); - - // Or is it a circle or annulus? - else if (da > tau$4 - epsilon$3) { - context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon$3) { - context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } - - // Or is it a circular or annular sector? - else { - var a01 = a0, - a11 = a1, - a00 = a0, - a10 = a1, - da0 = da, - da1 = da, - ap = padAngle.apply(this, arguments) / 2, - rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)), - rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), - rc0 = rc, - rc1 = rc, - t0, - t1; - - // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. - if (rp > epsilon$3) { - var p0 = asin$1(rp / r0 * sin$2(ap)), - p1 = asin$1(rp / r1 * sin$2(ap)); - if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; - else da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; - else da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - - var x01 = r1 * cos$2(a01), - y01 = r1 * sin$2(a01), - x10 = r0 * cos$2(a10), - y10 = r0 * sin$2(a10); - - // Apply rounded corners? - if (rc > epsilon$3) { - var x11 = r1 * cos$2(a11), - y11 = r1 * sin$2(a11), - x00 = r0 * cos$2(a00), - y00 = r0 * sin$2(a00), - oc; - - // Restrict the corner radius according to the sector angle. - if (da < pi$4 && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { - var ax = x01 - oc[0], - ay = y01 - oc[1], - bx = x11 - oc[0], - by = y11 - oc[1], - kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2), - lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min$1(rc, (r0 - lc) / (kc - 1)); - rc1 = min$1(rc, (r1 - lc) / (kc + 1)); - } - } - - // Is the sector collapsed to a line? - if (!(da1 > epsilon$3)) context.moveTo(x01, y01); - - // Does the sector’s outer ring have rounded corners? - else if (rc1 > epsilon$3) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the outer ring just a circular arc? - else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - - // Is there no inner ring, and it’s a circular sector? - // Or perhaps it’s an annular sector collapsed due to padding? - if (!(r0 > epsilon$3) || !(da0 > epsilon$3)) context.lineTo(x10, y10); - - // Does the sector’s inner ring (or point) have rounded corners? - else if (rc0 > epsilon$3) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the inner ring just a circular arc? - else context.arc(0, 0, r0, a10, a00, cw); - } - - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, - a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2; - return [cos$2(a) * r, sin$2(a) * r]; - }; - - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : innerRadius; - }; - - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : outerRadius; - }; - - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : cornerRadius; - }; - - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), arc) : padRadius; - }; - - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : startAngle; - }; - - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : endAngle; - }; - - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : padAngle; - }; - - arc.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), arc) : context; - }; - - return arc; -} - -function Linear(context) { - this._context = context; -} - -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: this._context.lineTo(x, y); break; - } - } -}; - -function curveLinear(context) { - return new Linear(context); -} - -function x$3(p) { - return p[0]; -} - -function y$3(p) { - return p[1]; -} - -function line() { - var x = x$3, - y = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function line(data) { - var i, - n = data.length, - d, - defined0 = false, - buffer; - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x(d, i, data), +y(d, i, data)); - } - - if (buffer) return output = null, buffer + "" || null; - } - - line.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), line) : x; - }; - - line.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), line) : y; - }; - - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), line) : defined; - }; - - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - - return line; -} - -function area$3() { - var x0 = x$3, - x1 = null, - y0 = constant$b(0), - y1 = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function area(data) { - var i, - j, - k, - n = data.length, - d, - defined0 = false, - buffer, - x0z = new Array(n), - y0z = new Array(n); - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) { - j = i; - output.areaStart(); - output.lineStart(); - } else { - output.lineEnd(); - output.lineStart(); - for (k = i - 1; k >= j; --k) { - output.point(x0z[k], y0z[k]); - } - output.lineEnd(); - output.areaEnd(); - } - } - if (defined0) { - x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); - output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); - } - } - - if (buffer) return output = null, buffer + "" || null; - } - - function arealine() { - return line().defined(defined).curve(curve).context(context); - } - - area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), x1 = null, area) : x0; - }; - - area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), area) : x0; - }; - - area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : x1; - }; - - area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), y1 = null, area) : y0; - }; - - area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), area) : y0; - }; - - area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : y1; - }; - - area.lineX0 = - area.lineY0 = function() { - return arealine().x(x0).y(y0); - }; - - area.lineY1 = function() { - return arealine().x(x0).y(y1); - }; - - area.lineX1 = function() { - return arealine().x(x1).y(y0); - }; - - area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), area) : defined; - }; - - area.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; - }; - - area.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; - }; - - return area; -} - -function descending$1(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function identity$8(d) { - return d; -} - -function pie() { - var value = identity$8, - sortValues = descending$1, - sort = null, - startAngle = constant$b(0), - endAngle = constant$b(tau$4), - padAngle = constant$b(0); - - function pie(data) { - var i, - n = data.length, - j, - k, - sum = 0, - index = new Array(n), - arcs = new Array(n), - a0 = +startAngle.apply(this, arguments), - da = Math.min(tau$4, Math.max(-tau$4, endAngle.apply(this, arguments) - a0)), - a1, - p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), - pa = p * (da < 0 ? -1 : 1), - v; - - for (i = 0; i < n; ++i) { - if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { - sum += v; - } - } - - // Optionally sort the arcs by previously-computed values or by data. - if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); - else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); - - // Compute the arcs! They are stored in the original data's order. - for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { - j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { - data: data[j], - index: i, - value: v, - startAngle: a0, - endAngle: a1, - padAngle: p - }; - } - - return arcs; - } - - pie.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), pie) : value; - }; - - pie.sortValues = function(_) { - return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; - }; - - pie.sort = function(_) { - return arguments.length ? (sort = _, sortValues = null, pie) : sort; - }; - - pie.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : startAngle; - }; - - pie.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : endAngle; - }; - - pie.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : padAngle; - }; - - return pie; -} - -var curveRadialLinear = curveRadial(curveLinear); - -function Radial(curve) { - this._curve = curve; -} - -Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a, r) { - this._curve.point(r * Math.sin(a), r * -Math.cos(a)); - } -}; - -function curveRadial(curve) { - - function radial(context) { - return new Radial(curve(context)); - } - - radial._curve = curve; - - return radial; -} - -function lineRadial(l) { - var c = l.curve; - - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - - l.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return l; -} - -function lineRadial$1() { - return lineRadial(line().curve(curveRadialLinear)); -} - -function areaRadial() { - var a = area$3().curve(curveRadialLinear), - c = a.curve, - x0 = a.lineX0, - x1 = a.lineX1, - y0 = a.lineY0, - y1 = a.lineY1; - - a.angle = a.x, delete a.x; - a.startAngle = a.x0, delete a.x0; - a.endAngle = a.x1, delete a.x1; - a.radius = a.y, delete a.y; - a.innerRadius = a.y0, delete a.y0; - a.outerRadius = a.y1, delete a.y1; - a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; - a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; - a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; - a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; - - a.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return a; -} - -function pointRadial(x, y) { - return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; -} - -var slice$6 = Array.prototype.slice; - -function linkSource(d) { - return d.source; -} - -function linkTarget(d) { - return d.target; -} - -function link$2(curve) { - var source = linkSource, - target = linkTarget, - x = x$3, - y = y$3, - context = null; - - function link() { - var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); - if (!context) context = buffer = path(); - curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv)); - if (buffer) return context = null, buffer + "" || null; - } - - link.source = function(_) { - return arguments.length ? (source = _, link) : source; - }; - - link.target = function(_) { - return arguments.length ? (target = _, link) : target; - }; - - link.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), link) : x; - }; - - link.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), link) : y; - }; - - link.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), link) : context; - }; - - return link; -} - -function curveHorizontal(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); -} - -function curveVertical(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); -} - -function curveRadial$1(context, x0, y0, x1, y1) { - var p0 = pointRadial(x0, y0), - p1 = pointRadial(x0, y0 = (y0 + y1) / 2), - p2 = pointRadial(x1, y0), - p3 = pointRadial(x1, y1); - context.moveTo(p0[0], p0[1]); - context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); -} - -function linkHorizontal() { - return link$2(curveHorizontal); -} - -function linkVertical() { - return link$2(curveVertical); -} - -function linkRadial() { - var l = link$2(curveRadial$1); - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - return l; -} - -var circle$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / pi$4); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau$4); - } -}; - -var cross$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } -}; - -var tan30 = Math.sqrt(1 / 3), - tan30_2 = tan30 * 2; - -var diamond = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), - x = y * tan30; - context.moveTo(0, -y); - context.lineTo(x, 0); - context.lineTo(0, y); - context.lineTo(-x, 0); - context.closePath(); - } -}; - -var ka = 0.89081309152928522810, - kr = Math.sin(pi$4 / 10) / Math.sin(7 * pi$4 / 10), - kx = Math.sin(tau$4 / 10) * kr, - ky = -Math.cos(tau$4 / 10) * kr; - -var star = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), - x = kx * r, - y = ky * r; - context.moveTo(0, -r); - context.lineTo(x, y); - for (var i = 1; i < 5; ++i) { - var a = tau$4 * i / 5, - c = Math.cos(a), - s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } - context.closePath(); - } -}; - -var square = { - draw: function(context, size) { - var w = Math.sqrt(size), - x = -w / 2; - context.rect(x, x, w, w); - } -}; - -var sqrt3 = Math.sqrt(3); - -var triangle = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); - context.moveTo(0, y * 2); - context.lineTo(-sqrt3 * y, -y); - context.lineTo(sqrt3 * y, -y); - context.closePath(); - } -}; - -var c$2 = -0.5, - s = Math.sqrt(3) / 2, - k = 1 / Math.sqrt(12), - a = (k / 2 + 1) * 3; - -var wye = { - draw: function(context, size) { - var r = Math.sqrt(size / a), - x0 = r / 2, - y0 = r * k, - x1 = x0, - y1 = r * k + r, - x2 = -x1, - y2 = y1; - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(c$2 * x0 - s * y0, s * x0 + c$2 * y0); - context.lineTo(c$2 * x1 - s * y1, s * x1 + c$2 * y1); - context.lineTo(c$2 * x2 - s * y2, s * x2 + c$2 * y2); - context.lineTo(c$2 * x0 + s * y0, c$2 * y0 - s * x0); - context.lineTo(c$2 * x1 + s * y1, c$2 * y1 - s * x1); - context.lineTo(c$2 * x2 + s * y2, c$2 * y2 - s * x2); - context.closePath(); - } -}; - -var symbols = [ - circle$2, - cross$2, - diamond, - square, - star, - triangle, - wye -]; - -function symbol() { - var type = constant$b(circle$2), - size = constant$b(64), - context = null; - - function symbol() { - var buffer; - if (!context) context = buffer = path(); - type.apply(this, arguments).draw(context, +size.apply(this, arguments)); - if (buffer) return context = null, buffer + "" || null; - } - - symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$b(_), symbol) : type; - }; - - symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$b(+_), symbol) : size; - }; - - symbol.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, symbol) : context; - }; - - return symbol; -} - -function noop$3() {} - -function point$2(that, x, y) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x) / 6, - (that._y0 + 4 * that._y1 + y) / 6 - ); -} - -function Basis(context) { - this._context = context; -} - -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: point$2(this, this._x1, this._y1); // proceed - case 2: this._context.lineTo(this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basis$2(context) { - return new Basis(context); -} - -function BasisClosed(context) { - this._context = context; -} - -BasisClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x2 = x, this._y2 = y; break; - case 1: this._point = 2; this._x3 = x, this._y3 = y; break; - case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisClosed$1(context) { - return new BasisClosed(context); -} - -function BasisOpen(context) { - this._context = context; -} - -BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; - case 3: this._point = 4; // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisOpen(context) { - return new BasisOpen(context); -} - -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} - -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x = this._x, - y = this._y, - j = x.length - 1; - - if (j > 0) { - var x0 = x[0], - y0 = y[0], - dx = x[j] - x0, - dy = y[j] - y0, - i = -1, - t; - - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -var bundle = (function custom(beta) { - - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - - bundle.beta = function(beta) { - return custom(+beta); - }; - - return bundle; -})(0.85); - -function point$3(that, x, y) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x), - that._y2 + that._k * (that._y1 - y), - that._x2, - that._y2 - ); -} - -function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: point$3(this, this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; this._x1 = x, this._y1 = y; break; - case 2: this._point = 3; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinal = (function custom(tension) { - - function cardinal(context) { - return new Cardinal(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalClosed = (function custom(tension) { - - function cardinal(context) { - return new CardinalClosed(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalOpen = (function custom(tension) { - - function cardinal(context) { - return new CardinalOpen(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function point$4(that, x, y) { - var x1 = that._x1, - y1 = that._y1, - x2 = that._x2, - y2 = that._y2; - - if (that._l01_a > epsilon$3) { - var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, - n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - - if (that._l23_a > epsilon$3) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, - m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; - y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; - } - - that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); -} - -function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: this.point(this._x2, this._y2); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRom = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomClosed = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomOpen = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function LinearClosed(context) { - this._context = context; -} - -LinearClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x, y) { - x = +x, y = +y; - if (this._point) this._context.lineTo(x, y); - else this._point = 1, this._context.moveTo(x, y); - } -}; - -function linearClosed(context) { - return new LinearClosed(context); -} - -function sign$1(x) { - return x < 0 ? -1 : 1; -} - -// Calculate the slopes of the tangents (Hermite-type interpolation) based on -// the following paper: Steffen, M. 1990. A Simple Method for Monotonic -// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. -// NOV(II), P. 443, 1990. -function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, - h1 = x2 - that._x1, - s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), - s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), - p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; -} - -// Calculate a one-sided slope. -function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; -} - -// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations -// "you can express cubic Hermite interpolation in terms of cubic Bézier curves -// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". -function point$5(that, t0, t1) { - var x0 = that._x0, - y0 = that._y0, - x1 = that._x1, - y1 = that._y1, - dx = (x1 - x0) / 3; - that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); -} - -function MonotoneX(context) { - this._context = context; -} - -MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = - this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x1, this._y1); break; - case 3: point$5(this, this._t0, slope2(this, this._t0)); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - var t1 = NaN; - - x = +x, y = +y; - if (x === this._x1 && y === this._y1) return; // Ignore coincident points. - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; point$5(this, slope2(this, t1 = slope3(this, x, y)), t1); break; - default: point$5(this, this._t0, t1 = slope3(this, x, y)); break; - } - - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - this._t0 = t1; - } -}; - -function MonotoneY(context) { - this._context = new ReflectContext(context); -} - -(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { - MonotoneX.prototype.point.call(this, y, x); -}; - -function ReflectContext(context) { - this._context = context; -} - -ReflectContext.prototype = { - moveTo: function(x, y) { this._context.moveTo(y, x); }, - closePath: function() { this._context.closePath(); }, - lineTo: function(x, y) { this._context.lineTo(y, x); }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } -}; - -function monotoneX(context) { - return new MonotoneX(context); -} - -function monotoneY(context) { - return new MonotoneY(context); -} - -function Natural(context) { - this._context = context; -} - -Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x = this._x, - y = this._y, - n = x.length; - - if (n) { - this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); - if (n === 2) { - this._context.lineTo(x[1], y[1]); - } else { - var px = controlPoints(x), - py = controlPoints(y); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); - } - } - } - - if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -// See https://www.particleincell.com/2012/bezier-splines/ for derivation. -function controlPoints(x) { - var i, - n = x.length - 1, - m, - a = new Array(n), - b = new Array(n), - r = new Array(n); - a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; - for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; - a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; - for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; - b[n - 1] = (x[n] + a[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; - return [a, b]; -} - -function natural(context) { - return new Natural(context); -} - -function Step(context, t) { - this._context = context; - this._t = t; -} - -Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y); - this._context.lineTo(x, y); - } else { - var x1 = this._x * (1 - this._t) + x * this._t; - this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y); - } - break; - } - } - this._x = x, this._y = y; - } -}; - -function step(context) { - return new Step(context, 0.5); -} - -function stepBefore(context) { - return new Step(context, 0); -} - -function stepAfter(context) { - return new Step(context, 1); -} - -function none$1(series, order) { - if (!((n = series.length) > 1)) return; - for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { - s0 = s1, s1 = series[order[i]]; - for (j = 0; j < m; ++j) { - s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; - } - } -} - -function none$2(series) { - var n = series.length, o = new Array(n); - while (--n >= 0) o[n] = n; - return o; -} - -function stackValue(d, key) { - return d[key]; -} - -function stack() { - var keys = constant$b([]), - order = none$2, - offset = none$1, - value = stackValue; - - function stack(data) { - var kz = keys.apply(this, arguments), - i, - m = data.length, - n = kz.length, - sz = new Array(n), - oz; - - for (i = 0; i < n; ++i) { - for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { - si[j] = sij = [0, +value(data[j], ki, j, data)]; - sij.data = data[j]; - } - si.key = ki; - } - - for (i = 0, oz = order(sz); i < n; ++i) { - sz[oz[i]].index = i; - } - - offset(sz, oz); - return sz; - } - - stack.keys = function(_) { - return arguments.length ? (keys = typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : keys; - }; - - stack.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), stack) : value; - }; - - stack.order = function(_) { - return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : order; - }; - - stack.offset = function(_) { - return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; - }; - - return stack; -} - -function expand(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { - for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; - if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; - } - none$1(series, order); -} - -function diverging$1(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { - for (yp = yn = 0, i = 0; i < n; ++i) { - if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { - d[0] = yp, d[1] = yp += dy; - } else if (dy < 0) { - d[1] = yn, d[0] = yn += dy; - } else { - d[0] = 0, d[1] = dy; - } - } - } -} - -function silhouette(series, order) { - if (!((n = series.length) > 0)) return; - for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { - for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; - s0[j][1] += s0[j][0] = -y / 2; - } - none$1(series, order); -} - -function wiggle(series, order) { - if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; - for (var y = 0, j = 1, s0, m, n; j < m; ++j) { - for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { - var si = series[order[i]], - sij0 = si[j][1] || 0, - sij1 = si[j - 1][1] || 0, - s3 = (sij0 - sij1) / 2; - for (var k = 0; k < i; ++k) { - var sk = series[order[k]], - skj0 = sk[j][1] || 0, - skj1 = sk[j - 1][1] || 0; - s3 += skj0 - skj1; - } - s1 += sij0, s2 += s3 * sij0; - } - s0[j - 1][1] += s0[j - 1][0] = y; - if (s1) y -= s2 / s1; - } - s0[j - 1][1] += s0[j - 1][0] = y; - none$1(series, order); -} - -function appearance(series) { - var peaks = series.map(peak); - return none$2(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); -} - -function peak(series) { - var i = -1, j = 0, n = series.length, vi, vj = -Infinity; - while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; - return j; -} - -function ascending$3(series) { - var sums = series.map(sum$2); - return none$2(series).sort(function(a, b) { return sums[a] - sums[b]; }); -} - -function sum$2(series) { - var s = 0, i = -1, n = series.length, v; - while (++i < n) if (v = +series[i][1]) s += v; - return s; -} - -function descending$2(series) { - return ascending$3(series).reverse(); -} - -function insideOut(series) { - var n = series.length, - i, - j, - sums = series.map(sum$2), - order = appearance(series), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - - for (i = 0; i < n; ++i) { - j = order[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - - return bottoms.reverse().concat(tops); -} - -function reverse(series) { - return none$2(series).reverse(); -} - -function constant$c(x) { - return function() { - return x; - }; -} - -function x$4(d) { - return d[0]; -} - -function y$4(d) { - return d[1]; -} - -function RedBlackTree() { - this._ = null; // root node -} - -function RedBlackNode(node) { - node.U = // parent node - node.C = // color - true for red, false for black - node.L = // left node - node.R = // right node - node.P = // previous node - node.N = null; // next node -} - -RedBlackTree.prototype = { - constructor: RedBlackTree, - - insert: function(after, node) { - var parent, grandpa, uncle; - - if (after) { - node.P = after; - node.N = after.N; - if (after.N) after.N.P = node; - after.N = node; - if (after.R) { - after = after.R; - while (after.L) after = after.L; - after.L = node; - } else { - after.R = node; - } - parent = after; - } else if (this._) { - after = RedBlackFirst(this._); - node.P = null; - node.N = after; - after.P = after.L = node; - parent = after; - } else { - node.P = node.N = null; - this._ = node; - parent = null; - } - node.L = node.R = null; - node.U = parent; - node.C = true; - - after = node; - while (parent && parent.C) { - grandpa = parent.U; - if (parent === grandpa.L) { - uncle = grandpa.R; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.R) { - RedBlackRotateLeft(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateRight(this, grandpa); - } - } else { - uncle = grandpa.L; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.L) { - RedBlackRotateRight(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateLeft(this, grandpa); - } - } - parent = after.U; - } - this._.C = false; - }, - - remove: function(node) { - if (node.N) node.N.P = node.P; - if (node.P) node.P.N = node.N; - node.N = node.P = null; - - var parent = node.U, - sibling, - left = node.L, - right = node.R, - next, - red; - - if (!left) next = right; - else if (!right) next = left; - else next = RedBlackFirst(right); - - if (parent) { - if (parent.L === node) parent.L = next; - else parent.R = next; - } else { - this._ = next; - } - - if (left && right) { - red = next.C; - next.C = node.C; - next.L = left; - left.U = next; - if (next !== right) { - parent = next.U; - next.U = node.U; - node = next.R; - parent.L = node; - next.R = right; - right.U = next; - } else { - next.U = parent; - parent = next; - node = next.R; - } - } else { - red = node.C; - node = next; - } - - if (node) node.U = parent; - if (red) return; - if (node && node.C) { node.C = false; return; } - - do { - if (node === this._) break; - if (node === parent.L) { - sibling = parent.R; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateLeft(this, parent); - sibling = parent.R; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.R || !sibling.R.C) { - sibling.L.C = false; - sibling.C = true; - RedBlackRotateRight(this, sibling); - sibling = parent.R; - } - sibling.C = parent.C; - parent.C = sibling.R.C = false; - RedBlackRotateLeft(this, parent); - node = this._; - break; - } - } else { - sibling = parent.L; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateRight(this, parent); - sibling = parent.L; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.L || !sibling.L.C) { - sibling.R.C = false; - sibling.C = true; - RedBlackRotateLeft(this, sibling); - sibling = parent.L; - } - sibling.C = parent.C; - parent.C = sibling.L.C = false; - RedBlackRotateRight(this, parent); - node = this._; - break; - } - } - sibling.C = true; - node = parent; - parent = parent.U; - } while (!node.C); - - if (node) node.C = false; - } -}; - -function RedBlackRotateLeft(tree, node) { - var p = node, - q = node.R, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.R = q.L; - if (p.R) p.R.U = p; - q.L = p; -} - -function RedBlackRotateRight(tree, node) { - var p = node, - q = node.L, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.L = q.R; - if (p.L) p.L.U = p; - q.R = p; -} - -function RedBlackFirst(node) { - while (node.L) node = node.L; - return node; -} - -function createEdge(left, right, v0, v1) { - var edge = [null, null], - index = edges.push(edge) - 1; - edge.left = left; - edge.right = right; - if (v0) setEdgeEnd(edge, left, right, v0); - if (v1) setEdgeEnd(edge, right, left, v1); - cells[left.index].halfedges.push(index); - cells[right.index].halfedges.push(index); - return edge; -} - -function createBorderEdge(left, v0, v1) { - var edge = [v0, v1]; - edge.left = left; - return edge; -} - -function setEdgeEnd(edge, left, right, vertex) { - if (!edge[0] && !edge[1]) { - edge[0] = vertex; - edge.left = left; - edge.right = right; - } else if (edge.left === right) { - edge[1] = vertex; - } else { - edge[0] = vertex; - } -} - -// Liang–Barsky line clipping. -function clipEdge(edge, x0, y0, x1, y1) { - var a = edge[0], - b = edge[1], - ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check? - - if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy]; - if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy]; - return true; -} - -function connectEdge(edge, x0, y0, x1, y1) { - var v1 = edge[1]; - if (v1) return true; - - var v0 = edge[0], - left = edge.left, - right = edge.right, - lx = left[0], - ly = left[1], - rx = right[0], - ry = right[1], - fx = (lx + rx) / 2, - fy = (ly + ry) / 2, - fm, - fb; - - if (ry === ly) { - if (fx < x0 || fx >= x1) return; - if (lx > rx) { - if (!v0) v0 = [fx, y0]; - else if (v0[1] >= y1) return; - v1 = [fx, y1]; - } else { - if (!v0) v0 = [fx, y1]; - else if (v0[1] < y0) return; - v1 = [fx, y0]; - } - } else { - fm = (lx - rx) / (ry - ly); - fb = fy - fm * fx; - if (fm < -1 || fm > 1) { - if (lx > rx) { - if (!v0) v0 = [(y0 - fb) / fm, y0]; - else if (v0[1] >= y1) return; - v1 = [(y1 - fb) / fm, y1]; - } else { - if (!v0) v0 = [(y1 - fb) / fm, y1]; - else if (v0[1] < y0) return; - v1 = [(y0 - fb) / fm, y0]; - } - } else { - if (ly < ry) { - if (!v0) v0 = [x0, fm * x0 + fb]; - else if (v0[0] >= x1) return; - v1 = [x1, fm * x1 + fb]; - } else { - if (!v0) v0 = [x1, fm * x1 + fb]; - else if (v0[0] < x0) return; - v1 = [x0, fm * x0 + fb]; - } - } - } - - edge[0] = v0; - edge[1] = v1; - return true; -} - -function clipEdges(x0, y0, x1, y1) { - var i = edges.length, - edge; - - while (i--) { - if (!connectEdge(edge = edges[i], x0, y0, x1, y1) - || !clipEdge(edge, x0, y0, x1, y1) - || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$4 - || Math.abs(edge[0][1] - edge[1][1]) > epsilon$4)) { - delete edges[i]; - } - } -} - -function createCell(site) { - return cells[site.index] = { - site: site, - halfedges: [] - }; -} - -function cellHalfedgeAngle(cell, edge) { - var site = cell.site, - va = edge.left, - vb = edge.right; - if (site === vb) vb = va, va = site; - if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]); - if (site === va) va = edge[1], vb = edge[0]; - else va = edge[0], vb = edge[1]; - return Math.atan2(va[0] - vb[0], vb[1] - va[1]); -} - -function cellHalfedgeStart(cell, edge) { - return edge[+(edge.left !== cell.site)]; -} - -function cellHalfedgeEnd(cell, edge) { - return edge[+(edge.left === cell.site)]; -} - -function sortCellHalfedges() { - for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) { - if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) { - var index = new Array(m), - array = new Array(m); - for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]); - index.sort(function(i, j) { return array[j] - array[i]; }); - for (j = 0; j < m; ++j) array[j] = halfedges[index[j]]; - for (j = 0; j < m; ++j) halfedges[j] = array[j]; - } - } -} - -function clipCells(x0, y0, x1, y1) { - var nCells = cells.length, - iCell, - cell, - site, - iHalfedge, - halfedges, - nHalfedges, - start, - startX, - startY, - end, - endX, - endY, - cover = true; - - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - halfedges = cell.halfedges; - iHalfedge = halfedges.length; - - // Remove any dangling clipped edges. - while (iHalfedge--) { - if (!edges[halfedges[iHalfedge]]) { - halfedges.splice(iHalfedge, 1); - } - } - - // Insert any border edges as necessary. - iHalfedge = 0, nHalfedges = halfedges.length; - while (iHalfedge < nHalfedges) { - end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1]; - start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1]; - if (Math.abs(endX - startX) > epsilon$4 || Math.abs(endY - startY) > epsilon$4) { - halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end, - Math.abs(endX - x0) < epsilon$4 && y1 - endY > epsilon$4 ? [x0, Math.abs(startX - x0) < epsilon$4 ? startY : y1] - : Math.abs(endY - y1) < epsilon$4 && x1 - endX > epsilon$4 ? [Math.abs(startY - y1) < epsilon$4 ? startX : x1, y1] - : Math.abs(endX - x1) < epsilon$4 && endY - y0 > epsilon$4 ? [x1, Math.abs(startX - x1) < epsilon$4 ? startY : y0] - : Math.abs(endY - y0) < epsilon$4 && endX - x0 > epsilon$4 ? [Math.abs(startY - y0) < epsilon$4 ? startX : x0, y0] - : null)) - 1); - ++nHalfedges; - } - } - - if (nHalfedges) cover = false; - } - } - - // If there weren’t any edges, have the closest site cover the extent. - // It doesn’t matter which corner of the extent we measure! - if (cover) { - var dx, dy, d2, dc = Infinity; - - for (iCell = 0, cover = null; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - dx = site[0] - x0; - dy = site[1] - y0; - d2 = dx * dx + dy * dy; - if (d2 < dc) dc = d2, cover = cell; - } - } - - if (cover) { - var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0]; - cover.halfedges.push( - edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1, - edges.push(createBorderEdge(site, v01, v11)) - 1, - edges.push(createBorderEdge(site, v11, v10)) - 1, - edges.push(createBorderEdge(site, v10, v00)) - 1 - ); - } - } - - // Lastly delete any cells with no edges; these were entirely clipped. - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - if (!cell.halfedges.length) { - delete cells[iCell]; - } - } - } -} - -var circlePool = []; - -var firstCircle; - -function Circle() { - RedBlackNode(this); - this.x = - this.y = - this.arc = - this.site = - this.cy = null; -} - -function attachCircle(arc) { - var lArc = arc.P, - rArc = arc.N; - - if (!lArc || !rArc) return; - - var lSite = lArc.site, - cSite = arc.site, - rSite = rArc.site; - - if (lSite === rSite) return; - - var bx = cSite[0], - by = cSite[1], - ax = lSite[0] - bx, - ay = lSite[1] - by, - cx = rSite[0] - bx, - cy = rSite[1] - by; - - var d = 2 * (ax * cy - ay * cx); - if (d >= -epsilon2$2) return; - - var ha = ax * ax + ay * ay, - hc = cx * cx + cy * cy, - x = (cy * ha - ay * hc) / d, - y = (ax * hc - cx * ha) / d; - - var circle = circlePool.pop() || new Circle; - circle.arc = arc; - circle.site = cSite; - circle.x = x + bx; - circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom - - arc.circle = circle; - - var before = null, - node = circles._; - - while (node) { - if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) { - if (node.L) node = node.L; - else { before = node.P; break; } - } else { - if (node.R) node = node.R; - else { before = node; break; } - } - } - - circles.insert(before, circle); - if (!before) firstCircle = circle; -} - -function detachCircle(arc) { - var circle = arc.circle; - if (circle) { - if (!circle.P) firstCircle = circle.N; - circles.remove(circle); - circlePool.push(circle); - RedBlackNode(circle); - arc.circle = null; - } -} - -var beachPool = []; - -function Beach() { - RedBlackNode(this); - this.edge = - this.site = - this.circle = null; -} - -function createBeach(site) { - var beach = beachPool.pop() || new Beach; - beach.site = site; - return beach; -} - -function detachBeach(beach) { - detachCircle(beach); - beaches.remove(beach); - beachPool.push(beach); - RedBlackNode(beach); -} - -function removeBeach(beach) { - var circle = beach.circle, - x = circle.x, - y = circle.cy, - vertex = [x, y], - previous = beach.P, - next = beach.N, - disappearing = [beach]; - - detachBeach(beach); - - var lArc = previous; - while (lArc.circle - && Math.abs(x - lArc.circle.x) < epsilon$4 - && Math.abs(y - lArc.circle.cy) < epsilon$4) { - previous = lArc.P; - disappearing.unshift(lArc); - detachBeach(lArc); - lArc = previous; - } - - disappearing.unshift(lArc); - detachCircle(lArc); - - var rArc = next; - while (rArc.circle - && Math.abs(x - rArc.circle.x) < epsilon$4 - && Math.abs(y - rArc.circle.cy) < epsilon$4) { - next = rArc.N; - disappearing.push(rArc); - detachBeach(rArc); - rArc = next; - } - - disappearing.push(rArc); - detachCircle(rArc); - - var nArcs = disappearing.length, - iArc; - for (iArc = 1; iArc < nArcs; ++iArc) { - rArc = disappearing[iArc]; - lArc = disappearing[iArc - 1]; - setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); - } - - lArc = disappearing[0]; - rArc = disappearing[nArcs - 1]; - rArc.edge = createEdge(lArc.site, rArc.site, null, vertex); - - attachCircle(lArc); - attachCircle(rArc); -} - -function addBeach(site) { - var x = site[0], - directrix = site[1], - lArc, - rArc, - dxl, - dxr, - node = beaches._; - - while (node) { - dxl = leftBreakPoint(node, directrix) - x; - if (dxl > epsilon$4) node = node.L; else { - dxr = x - rightBreakPoint(node, directrix); - if (dxr > epsilon$4) { - if (!node.R) { - lArc = node; - break; - } - node = node.R; - } else { - if (dxl > -epsilon$4) { - lArc = node.P; - rArc = node; - } else if (dxr > -epsilon$4) { - lArc = node; - rArc = node.N; - } else { - lArc = rArc = node; - } - break; - } - } - } - - createCell(site); - var newArc = createBeach(site); - beaches.insert(lArc, newArc); - - if (!lArc && !rArc) return; - - if (lArc === rArc) { - detachCircle(lArc); - rArc = createBeach(lArc.site); - beaches.insert(newArc, rArc); - newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site); - attachCircle(lArc); - attachCircle(rArc); - return; - } - - if (!rArc) { // && lArc - newArc.edge = createEdge(lArc.site, newArc.site); - return; - } - - // else lArc !== rArc - detachCircle(lArc); - detachCircle(rArc); - - var lSite = lArc.site, - ax = lSite[0], - ay = lSite[1], - bx = site[0] - ax, - by = site[1] - ay, - rSite = rArc.site, - cx = rSite[0] - ax, - cy = rSite[1] - ay, - d = 2 * (bx * cy - by * cx), - hb = bx * bx + by * by, - hc = cx * cx + cy * cy, - vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay]; - - setEdgeEnd(rArc.edge, lSite, rSite, vertex); - newArc.edge = createEdge(lSite, site, null, vertex); - rArc.edge = createEdge(site, rSite, null, vertex); - attachCircle(lArc); - attachCircle(rArc); -} - -function leftBreakPoint(arc, directrix) { - var site = arc.site, - rfocx = site[0], - rfocy = site[1], - pby2 = rfocy - directrix; - - if (!pby2) return rfocx; - - var lArc = arc.P; - if (!lArc) return -Infinity; - - site = lArc.site; - var lfocx = site[0], - lfocy = site[1], - plby2 = lfocy - directrix; - - if (!plby2) return lfocx; - - var hl = lfocx - rfocx, - aby2 = 1 / pby2 - 1 / plby2, - b = hl / plby2; - - if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; - - return (rfocx + lfocx) / 2; -} - -function rightBreakPoint(arc, directrix) { - var rArc = arc.N; - if (rArc) return leftBreakPoint(rArc, directrix); - var site = arc.site; - return site[1] === directrix ? site[0] : Infinity; -} - -var epsilon$4 = 1e-6; -var epsilon2$2 = 1e-12; -var beaches; -var cells; -var circles; -var edges; - -function triangleArea(a, b, c) { - return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]); -} - -function lexicographic(a, b) { - return b[1] - a[1] - || b[0] - a[0]; -} - -function Diagram(sites, extent) { - var site = sites.sort(lexicographic).pop(), - x, - y, - circle; - - edges = []; - cells = new Array(sites.length); - beaches = new RedBlackTree; - circles = new RedBlackTree; - - while (true) { - circle = firstCircle; - if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) { - if (site[0] !== x || site[1] !== y) { - addBeach(site); - x = site[0], y = site[1]; - } - site = sites.pop(); - } else if (circle) { - removeBeach(circle.arc); - } else { - break; - } - } - - sortCellHalfedges(); - - if (extent) { - var x0 = +extent[0][0], - y0 = +extent[0][1], - x1 = +extent[1][0], - y1 = +extent[1][1]; - clipEdges(x0, y0, x1, y1); - clipCells(x0, y0, x1, y1); - } - - this.edges = edges; - this.cells = cells; - - beaches = - circles = - edges = - cells = null; -} - -Diagram.prototype = { - constructor: Diagram, - - polygons: function() { - var edges = this.edges; - - return this.cells.map(function(cell) { - var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); }); - polygon.data = cell.site.data; - return polygon; - }); - }, - - triangles: function() { - var triangles = [], - edges = this.edges; - - this.cells.forEach(function(cell, i) { - if (!(m = (halfedges = cell.halfedges).length)) return; - var site = cell.site, - halfedges, - j = -1, - m, - s0, - e1 = edges[halfedges[m - 1]], - s1 = e1.left === site ? e1.right : e1.left; - - while (++j < m) { - s0 = s1; - e1 = edges[halfedges[j]]; - s1 = e1.left === site ? e1.right : e1.left; - if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) { - triangles.push([site.data, s0.data, s1.data]); - } - } - }); - - return triangles; - }, - - links: function() { - return this.edges.filter(function(edge) { - return edge.right; - }).map(function(edge) { - return { - source: edge.left.data, - target: edge.right.data - }; - }); - }, - - find: function(x, y, radius) { - var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell; - - // Use the previously-found cell, or start with an arbitrary one. - while (!(cell = that.cells[i1])) if (++i1 >= n) return null; - var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy; - - // Traverse the half-edges to find a closer cell, if any. - do { - cell = that.cells[i0 = i1], i1 = null; - cell.halfedges.forEach(function(e) { - var edge = that.edges[e], v = edge.left; - if ((v === cell.site || !v) && !(v = edge.right)) return; - var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy; - if (v2 < d2) d2 = v2, i1 = v.index; - }); - } while (i1 !== null); - - that._found = i0; - - return radius == null || d2 <= radius * radius ? cell.site : null; - } -}; - -function voronoi() { - var x = x$4, - y = y$4, - extent = null; - - function voronoi(data) { - return new Diagram(data.map(function(d, i) { - var s = [Math.round(x(d, i, data) / epsilon$4) * epsilon$4, Math.round(y(d, i, data) / epsilon$4) * epsilon$4]; - s.index = i; - s.data = d; - return s; - }), extent); - } - - voronoi.polygons = function(data) { - return voronoi(data).polygons(); - }; - - voronoi.links = function(data) { - return voronoi(data).links(); - }; - - voronoi.triangles = function(data) { - return voronoi(data).triangles(); - }; - - voronoi.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$c(+_), voronoi) : x; - }; - - voronoi.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$c(+_), voronoi) : y; - }; - - voronoi.extent = function(_) { - return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]]; - }; - - voronoi.size = function(_) { - return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]]; - }; - - return voronoi; -} - -function constant$d(x) { - return function() { - return x; - }; -} - -function ZoomEvent(target, type, transform) { - this.target = target; - this.type = type; - this.transform = transform; -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity$9 = new Transform(1, 0, 0); - -transform$1.prototype = Transform.prototype; - -function transform$1(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity$9; - return node.__zoom; -} - -function nopropagation$2() { - exports.event.stopImmediatePropagation(); -} - -function noevent$2() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$2() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent$1() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity$9; -} - -function defaultWheelDelta() { - return -exports.event.deltaY * (exports.event.deltaMode === 1 ? 0.05 : exports.event.deltaMode ? 1 : 0.002); -} - -function defaultTouchable$2() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter$2, - extent = defaultExtent$1, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable$2, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p); - }; - - zoom.scaleTo = function(selection, k, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p); - }; - - zoom.translateBy = function(selection, x, y) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }); - }; - - zoom.translateTo = function(selection, x, y, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity$9.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point) { - transition - .on("start.zoom", function() { gesture(this, arguments).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function wheeled() { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, arguments), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = mouse(this); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent$2(); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var g = gesture(this, arguments, true), - v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = mouse(this), - x0 = exports.event.clientX, - y0 = exports.event.clientY; - - dragDisable(exports.event.view); - nopropagation$2(); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved() { - noevent$2(); - if (!g.moved) { - var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped() { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(exports.event.view, g.moved); - noevent$2(); - g.end(); - } - } - - function dblclicked() { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = mouse(this), - p1 = t0.invert(p0), - k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); - - noevent$2(); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); - else select(this).call(zoom.transform, t1); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.touches, - n = touches.length, - g = gesture(this, arguments, exports.event.changedTouches.length === n), - started, i, t, p; - - nopropagation$2(); - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t, p, l; - - noevent$2(); - if (touchstarting) touchstarting = clearTimeout(touchstarting); - g.taps = 0; - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t; - - nopropagation$2(); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$d(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$d(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$d(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$d([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - return zoom; -} - -exports.FormatSpecifier = FormatSpecifier; -exports.active = active; -exports.arc = arc; -exports.area = area$3; -exports.areaRadial = areaRadial; -exports.ascending = ascending; -exports.autoType = autoType; -exports.axisBottom = axisBottom; -exports.axisLeft = axisLeft; -exports.axisRight = axisRight; -exports.axisTop = axisTop; -exports.bisect = bisectRight; -exports.bisectLeft = bisectLeft; -exports.bisectRight = bisectRight; -exports.bisector = bisector; -exports.blob = blob; -exports.brush = brush; -exports.brushSelection = brushSelection; -exports.brushX = brushX; -exports.brushY = brushY; -exports.buffer = buffer; -exports.chord = chord; -exports.clientPoint = point; -exports.cluster = cluster; -exports.color = color; -exports.contourDensity = density; -exports.contours = contours; -exports.create = create; -exports.creator = creator; -exports.cross = cross; -exports.csv = csv$1; -exports.csvFormat = csvFormat; -exports.csvFormatBody = csvFormatBody; -exports.csvFormatRow = csvFormatRow; -exports.csvFormatRows = csvFormatRows; -exports.csvFormatValue = csvFormatValue; -exports.csvParse = csvParse; -exports.csvParseRows = csvParseRows; -exports.cubehelix = cubehelix; -exports.curveBasis = basis$2; -exports.curveBasisClosed = basisClosed$1; -exports.curveBasisOpen = basisOpen; -exports.curveBundle = bundle; -exports.curveCardinal = cardinal; -exports.curveCardinalClosed = cardinalClosed; -exports.curveCardinalOpen = cardinalOpen; -exports.curveCatmullRom = catmullRom; -exports.curveCatmullRomClosed = catmullRomClosed; -exports.curveCatmullRomOpen = catmullRomOpen; -exports.curveLinear = curveLinear; -exports.curveLinearClosed = linearClosed; -exports.curveMonotoneX = monotoneX; -exports.curveMonotoneY = monotoneY; -exports.curveNatural = natural; -exports.curveStep = step; -exports.curveStepAfter = stepAfter; -exports.curveStepBefore = stepBefore; -exports.customEvent = customEvent; -exports.descending = descending; -exports.deviation = deviation; -exports.dispatch = dispatch; -exports.drag = drag; -exports.dragDisable = dragDisable; -exports.dragEnable = yesdrag; -exports.dsv = dsv; -exports.dsvFormat = dsvFormat; -exports.easeBack = backInOut; -exports.easeBackIn = backIn; -exports.easeBackInOut = backInOut; -exports.easeBackOut = backOut; -exports.easeBounce = bounceOut; -exports.easeBounceIn = bounceIn; -exports.easeBounceInOut = bounceInOut; -exports.easeBounceOut = bounceOut; -exports.easeCircle = circleInOut; -exports.easeCircleIn = circleIn; -exports.easeCircleInOut = circleInOut; -exports.easeCircleOut = circleOut; -exports.easeCubic = cubicInOut; -exports.easeCubicIn = cubicIn; -exports.easeCubicInOut = cubicInOut; -exports.easeCubicOut = cubicOut; -exports.easeElastic = elasticOut; -exports.easeElasticIn = elasticIn; -exports.easeElasticInOut = elasticInOut; -exports.easeElasticOut = elasticOut; -exports.easeExp = expInOut; -exports.easeExpIn = expIn; -exports.easeExpInOut = expInOut; -exports.easeExpOut = expOut; -exports.easeLinear = linear$1; -exports.easePoly = polyInOut; -exports.easePolyIn = polyIn; -exports.easePolyInOut = polyInOut; -exports.easePolyOut = polyOut; -exports.easeQuad = quadInOut; -exports.easeQuadIn = quadIn; -exports.easeQuadInOut = quadInOut; -exports.easeQuadOut = quadOut; -exports.easeSin = sinInOut; -exports.easeSinIn = sinIn; -exports.easeSinInOut = sinInOut; -exports.easeSinOut = sinOut; -exports.entries = entries; -exports.extent = extent; -exports.forceCenter = center$1; -exports.forceCollide = collide; -exports.forceLink = link; -exports.forceManyBody = manyBody; -exports.forceRadial = radial; -exports.forceSimulation = simulation; -exports.forceX = x$2; -exports.forceY = y$2; -exports.formatDefaultLocale = defaultLocale; -exports.formatLocale = formatLocale; -exports.formatSpecifier = formatSpecifier; -exports.geoAlbers = albers; -exports.geoAlbersUsa = albersUsa; -exports.geoArea = area$1; -exports.geoAzimuthalEqualArea = azimuthalEqualArea; -exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; -exports.geoAzimuthalEquidistant = azimuthalEquidistant; -exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; -exports.geoBounds = bounds; -exports.geoCentroid = centroid; -exports.geoCircle = circle; -exports.geoClipAntimeridian = clipAntimeridian; -exports.geoClipCircle = clipCircle; -exports.geoClipExtent = extent$1; -exports.geoClipRectangle = clipRectangle; -exports.geoConicConformal = conicConformal; -exports.geoConicConformalRaw = conicConformalRaw; -exports.geoConicEqualArea = conicEqualArea; -exports.geoConicEqualAreaRaw = conicEqualAreaRaw; -exports.geoConicEquidistant = conicEquidistant; -exports.geoConicEquidistantRaw = conicEquidistantRaw; -exports.geoContains = contains$1; -exports.geoDistance = distance; -exports.geoEqualEarth = equalEarth; -exports.geoEqualEarthRaw = equalEarthRaw; -exports.geoEquirectangular = equirectangular; -exports.geoEquirectangularRaw = equirectangularRaw; -exports.geoGnomonic = gnomonic; -exports.geoGnomonicRaw = gnomonicRaw; -exports.geoGraticule = graticule; -exports.geoGraticule10 = graticule10; -exports.geoIdentity = identity$5; -exports.geoInterpolate = interpolate$1; -exports.geoLength = length$1; -exports.geoMercator = mercator; -exports.geoMercatorRaw = mercatorRaw; -exports.geoNaturalEarth1 = naturalEarth1; -exports.geoNaturalEarth1Raw = naturalEarth1Raw; -exports.geoOrthographic = orthographic; -exports.geoOrthographicRaw = orthographicRaw; -exports.geoPath = index$1; -exports.geoProjection = projection; -exports.geoProjectionMutator = projectionMutator; -exports.geoRotation = rotation; -exports.geoStereographic = stereographic; -exports.geoStereographicRaw = stereographicRaw; -exports.geoStream = geoStream; -exports.geoTransform = transform; -exports.geoTransverseMercator = transverseMercator; -exports.geoTransverseMercatorRaw = transverseMercatorRaw; -exports.gray = gray; -exports.hcl = hcl; -exports.hierarchy = hierarchy; -exports.histogram = histogram; -exports.hsl = hsl; -exports.html = html; -exports.image = image; -exports.interpolate = interpolateValue; -exports.interpolateArray = array$1; -exports.interpolateBasis = basis$1; -exports.interpolateBasisClosed = basisClosed; -exports.interpolateBlues = Blues; -exports.interpolateBrBG = BrBG; -exports.interpolateBuGn = BuGn; -exports.interpolateBuPu = BuPu; -exports.interpolateCividis = cividis; -exports.interpolateCool = cool; -exports.interpolateCubehelix = cubehelix$2; -exports.interpolateCubehelixDefault = cubehelix$3; -exports.interpolateCubehelixLong = cubehelixLong; -exports.interpolateDate = date; -exports.interpolateDiscrete = discrete; -exports.interpolateGnBu = GnBu; -exports.interpolateGreens = Greens; -exports.interpolateGreys = Greys; -exports.interpolateHcl = hcl$2; -exports.interpolateHclLong = hclLong; -exports.interpolateHsl = hsl$2; -exports.interpolateHslLong = hslLong; -exports.interpolateHue = hue$1; -exports.interpolateInferno = inferno; -exports.interpolateLab = lab$1; -exports.interpolateMagma = magma; -exports.interpolateNumber = interpolateNumber; -exports.interpolateNumberArray = numberArray; -exports.interpolateObject = object; -exports.interpolateOrRd = OrRd; -exports.interpolateOranges = Oranges; -exports.interpolatePRGn = PRGn; -exports.interpolatePiYG = PiYG; -exports.interpolatePlasma = plasma; -exports.interpolatePuBu = PuBu; -exports.interpolatePuBuGn = PuBuGn; -exports.interpolatePuOr = PuOr; -exports.interpolatePuRd = PuRd; -exports.interpolatePurples = Purples; -exports.interpolateRainbow = rainbow; -exports.interpolateRdBu = RdBu; -exports.interpolateRdGy = RdGy; -exports.interpolateRdPu = RdPu; -exports.interpolateRdYlBu = RdYlBu; -exports.interpolateRdYlGn = RdYlGn; -exports.interpolateReds = Reds; -exports.interpolateRgb = interpolateRgb; -exports.interpolateRgbBasis = rgbBasis; -exports.interpolateRgbBasisClosed = rgbBasisClosed; -exports.interpolateRound = interpolateRound; -exports.interpolateSinebow = sinebow; -exports.interpolateSpectral = Spectral; -exports.interpolateString = interpolateString; -exports.interpolateTransformCss = interpolateTransformCss; -exports.interpolateTransformSvg = interpolateTransformSvg; -exports.interpolateTurbo = turbo; -exports.interpolateViridis = viridis; -exports.interpolateWarm = warm; -exports.interpolateYlGn = YlGn; -exports.interpolateYlGnBu = YlGnBu; -exports.interpolateYlOrBr = YlOrBr; -exports.interpolateYlOrRd = YlOrRd; -exports.interpolateZoom = interpolateZoom; -exports.interrupt = interrupt; -exports.interval = interval$1; -exports.isoFormat = formatIso; -exports.isoParse = parseIso; -exports.json = json; -exports.keys = keys; -exports.lab = lab; -exports.lch = lch; -exports.line = line; -exports.lineRadial = lineRadial$1; -exports.linkHorizontal = linkHorizontal; -exports.linkRadial = linkRadial; -exports.linkVertical = linkVertical; -exports.local = local; -exports.map = map$1; -exports.matcher = matcher; -exports.max = max; -exports.mean = mean; -exports.median = median; -exports.merge = merge; -exports.min = min; -exports.mouse = mouse; -exports.namespace = namespace; -exports.namespaces = namespaces; -exports.nest = nest; -exports.now = now; -exports.pack = index$2; -exports.packEnclose = enclose; -exports.packSiblings = siblings; -exports.pairs = pairs; -exports.partition = partition; -exports.path = path; -exports.permute = permute; -exports.pie = pie; -exports.piecewise = piecewise; -exports.pointRadial = pointRadial; -exports.polygonArea = area$2; -exports.polygonCentroid = centroid$1; -exports.polygonContains = contains$2; -exports.polygonHull = hull; -exports.polygonLength = length$2; -exports.precisionFixed = precisionFixed; -exports.precisionPrefix = precisionPrefix; -exports.precisionRound = precisionRound; -exports.quadtree = quadtree; -exports.quantile = threshold; -exports.quantize = quantize; -exports.radialArea = areaRadial; -exports.radialLine = lineRadial$1; -exports.randomBates = bates; -exports.randomExponential = exponential$1; -exports.randomIrwinHall = irwinHall; -exports.randomLogNormal = logNormal; -exports.randomNormal = normal; -exports.randomUniform = uniform; -exports.range = sequence; -exports.rgb = rgb; -exports.ribbon = ribbon; -exports.scaleBand = band; -exports.scaleDiverging = diverging; -exports.scaleDivergingLog = divergingLog; -exports.scaleDivergingPow = divergingPow; -exports.scaleDivergingSqrt = divergingSqrt; -exports.scaleDivergingSymlog = divergingSymlog; -exports.scaleIdentity = identity$7; -exports.scaleImplicit = implicit; -exports.scaleLinear = linear$2; -exports.scaleLog = log$1; -exports.scaleOrdinal = ordinal; -exports.scalePoint = point$1; -exports.scalePow = pow$1; -exports.scaleQuantile = quantile; -exports.scaleQuantize = quantize$1; -exports.scaleSequential = sequential; -exports.scaleSequentialLog = sequentialLog; -exports.scaleSequentialPow = sequentialPow; -exports.scaleSequentialQuantile = sequentialQuantile; -exports.scaleSequentialSqrt = sequentialSqrt; -exports.scaleSequentialSymlog = sequentialSymlog; -exports.scaleSqrt = sqrt$1; -exports.scaleSymlog = symlog; -exports.scaleThreshold = threshold$1; -exports.scaleTime = time; -exports.scaleUtc = utcTime; -exports.scan = scan; -exports.schemeAccent = Accent; -exports.schemeBlues = scheme$l; -exports.schemeBrBG = scheme; -exports.schemeBuGn = scheme$9; -exports.schemeBuPu = scheme$a; -exports.schemeCategory10 = category10; -exports.schemeDark2 = Dark2; -exports.schemeGnBu = scheme$b; -exports.schemeGreens = scheme$m; -exports.schemeGreys = scheme$n; -exports.schemeOrRd = scheme$c; -exports.schemeOranges = scheme$q; -exports.schemePRGn = scheme$1; -exports.schemePaired = Paired; -exports.schemePastel1 = Pastel1; -exports.schemePastel2 = Pastel2; -exports.schemePiYG = scheme$2; -exports.schemePuBu = scheme$e; -exports.schemePuBuGn = scheme$d; -exports.schemePuOr = scheme$3; -exports.schemePuRd = scheme$f; -exports.schemePurples = scheme$o; -exports.schemeRdBu = scheme$4; -exports.schemeRdGy = scheme$5; -exports.schemeRdPu = scheme$g; -exports.schemeRdYlBu = scheme$6; -exports.schemeRdYlGn = scheme$7; -exports.schemeReds = scheme$p; -exports.schemeSet1 = Set1; -exports.schemeSet2 = Set2; -exports.schemeSet3 = Set3; -exports.schemeSpectral = scheme$8; -exports.schemeTableau10 = Tableau10; -exports.schemeYlGn = scheme$i; -exports.schemeYlGnBu = scheme$h; -exports.schemeYlOrBr = scheme$j; -exports.schemeYlOrRd = scheme$k; -exports.select = select; -exports.selectAll = selectAll; -exports.selection = selection; -exports.selector = selector; -exports.selectorAll = selectorAll; -exports.set = set$2; -exports.shuffle = shuffle; -exports.stack = stack; -exports.stackOffsetDiverging = diverging$1; -exports.stackOffsetExpand = expand; -exports.stackOffsetNone = none$1; -exports.stackOffsetSilhouette = silhouette; -exports.stackOffsetWiggle = wiggle; -exports.stackOrderAppearance = appearance; -exports.stackOrderAscending = ascending$3; -exports.stackOrderDescending = descending$2; -exports.stackOrderInsideOut = insideOut; -exports.stackOrderNone = none$2; -exports.stackOrderReverse = reverse; -exports.stratify = stratify; -exports.style = styleValue; -exports.sum = sum; -exports.svg = svg; -exports.symbol = symbol; -exports.symbolCircle = circle$2; -exports.symbolCross = cross$2; -exports.symbolDiamond = diamond; -exports.symbolSquare = square; -exports.symbolStar = star; -exports.symbolTriangle = triangle; -exports.symbolWye = wye; -exports.symbols = symbols; -exports.text = text; -exports.thresholdFreedmanDiaconis = freedmanDiaconis; -exports.thresholdScott = scott; -exports.thresholdSturges = thresholdSturges; -exports.tickFormat = tickFormat; -exports.tickIncrement = tickIncrement; -exports.tickStep = tickStep; -exports.ticks = ticks; -exports.timeDay = day; -exports.timeDays = days; -exports.timeFormatDefaultLocale = defaultLocale$1; -exports.timeFormatLocale = formatLocale$1; -exports.timeFriday = friday; -exports.timeFridays = fridays; -exports.timeHour = hour; -exports.timeHours = hours; -exports.timeInterval = newInterval; -exports.timeMillisecond = millisecond; -exports.timeMilliseconds = milliseconds; -exports.timeMinute = minute; -exports.timeMinutes = minutes; -exports.timeMonday = monday; -exports.timeMondays = mondays; -exports.timeMonth = month; -exports.timeMonths = months; -exports.timeSaturday = saturday; -exports.timeSaturdays = saturdays; -exports.timeSecond = second; -exports.timeSeconds = seconds; -exports.timeSunday = sunday; -exports.timeSundays = sundays; -exports.timeThursday = thursday; -exports.timeThursdays = thursdays; -exports.timeTuesday = tuesday; -exports.timeTuesdays = tuesdays; -exports.timeWednesday = wednesday; -exports.timeWednesdays = wednesdays; -exports.timeWeek = sunday; -exports.timeWeeks = sundays; -exports.timeYear = year; -exports.timeYears = years; -exports.timeout = timeout$1; -exports.timer = timer; -exports.timerFlush = timerFlush; -exports.touch = touch; -exports.touches = touches; -exports.transition = transition; -exports.transpose = transpose; -exports.tree = tree; -exports.treemap = index$3; -exports.treemapBinary = binary; -exports.treemapDice = treemapDice; -exports.treemapResquarify = resquarify; -exports.treemapSlice = treemapSlice; -exports.treemapSliceDice = sliceDice; -exports.treemapSquarify = squarify; -exports.tsv = tsv$1; -exports.tsvFormat = tsvFormat; -exports.tsvFormatBody = tsvFormatBody; -exports.tsvFormatRow = tsvFormatRow; -exports.tsvFormatRows = tsvFormatRows; -exports.tsvFormatValue = tsvFormatValue; -exports.tsvParse = tsvParse; -exports.tsvParseRows = tsvParseRows; -exports.utcDay = utcDay; -exports.utcDays = utcDays; -exports.utcFriday = utcFriday; -exports.utcFridays = utcFridays; -exports.utcHour = utcHour; -exports.utcHours = utcHours; -exports.utcMillisecond = millisecond; -exports.utcMilliseconds = milliseconds; -exports.utcMinute = utcMinute; -exports.utcMinutes = utcMinutes; -exports.utcMonday = utcMonday; -exports.utcMondays = utcMondays; -exports.utcMonth = utcMonth; -exports.utcMonths = utcMonths; -exports.utcSaturday = utcSaturday; -exports.utcSaturdays = utcSaturdays; -exports.utcSecond = second; -exports.utcSeconds = seconds; -exports.utcSunday = utcSunday; -exports.utcSundays = utcSundays; -exports.utcThursday = utcThursday; -exports.utcThursdays = utcThursdays; -exports.utcTuesday = utcTuesday; -exports.utcTuesdays = utcTuesdays; -exports.utcWednesday = utcWednesday; -exports.utcWednesdays = utcWednesdays; -exports.utcWeek = utcSunday; -exports.utcWeeks = utcSundays; -exports.utcYear = utcYear; -exports.utcYears = utcYears; -exports.values = values; -exports.variance = variance; -exports.version = version; -exports.voronoi = voronoi; -exports.window = defaultView; -exports.xml = xml; -exports.zip = zip; -exports.zoom = zoom; -exports.zoomIdentity = identity$9; -exports.zoomTransform = transform$1; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/ilinx_home/maps/map3_files/language.js b/ilinx_home/maps/map3_files/language.js deleted file mode 100644 index f82b6c3..0000000 --- a/ilinx_home/maps/map3_files/language.js +++ /dev/null @@ -1,486 +0,0 @@ -function shuffled(list) { - var newlist = []; - for (var i = 0; i < list.length; i++) { - newlist.push(list[i]); - } - for (var i = list.length - 1; i > 0; i--) { - var tmp = newlist[i]; - var j = randrange(i); - newlist[i] = newlist[j]; - newlist[j] = tmp; - } - return newlist; -} - -function choose(list, exponent) { - exponent = exponent || 1; - return list[Math.floor(Math.pow(Math.random(), exponent) * list.length)]; -} - -function randrange(lo, hi) { - if (hi == undefined) { - hi = lo; - lo = 0; - } - return Math.floor(Math.random() * (hi - lo)) + lo; -} - -function join(list, sep) { - if (list.length == 0) return ''; - sep = sep || ''; - var s = list[0]; - for (var i = 1; i < list.length; i++) { - s += sep; - s += list[i]; - } - return s; -} - -function capitalize(word) { - return word[0].toUpperCase() + word.slice(1); -} - -function spell(lang, syll) { - if (lang.noortho) return syll; - var s = ''; - for (var i = 0; i < syll.length; i++) { - var c = syll[i]; - s += lang.cortho[c] || lang.vortho[c] || defaultOrtho[c] || c; - } - return s; -} - -function makeSyllable(lang) { - while (true) { - var syll = ""; - for (var i = 0; i < lang.structure.length; i++) { - var ptype = lang.structure[i]; - if (lang.structure[i+1] == '?') { - i++; - if (Math.random() < 0.5) { - continue; - } - } - syll += choose(lang.phonemes[ptype], lang.exponent); - } - var bad = false; - for (var i = 0; i < lang.restricts.length; i++) { - if (lang.restricts[i].test(syll)) { - bad = true; - break; - } - } - if (bad) continue; - return spell(lang, syll); - } -} - -function getMorpheme(lang, key) { - if (lang.nomorph) { - return makeSyllable(lang); - } - key = key || ''; - var list = lang.morphemes[key] || []; - var extras = 10; - if (key) extras = 1; - while (true) { - var n = randrange(list.length + extras); - if (list[n]) return list[n]; - var morph = makeSyllable(lang); - var bad = false; - for (var k in lang.morphemes) { - if (lang.morphemes[k].includes(morph)) { - bad = true; - break; - } - } - if (bad) continue; - list.push(morph); - lang.morphemes[key] = list; - return morph; - } -} - -function makeWord(lang, key) { - var nsylls = randrange(lang.minsyll, lang.maxsyll + 1); - var w = ''; - var keys = []; - keys[randrange(nsylls)] = key; - for (var i = 0; i < nsylls; i++) { - w += getMorpheme(lang, keys[i]); - } - return w; -} - -function getWord(lang, key) { - key = key || ''; - var ws = lang.words[key] || []; - var extras = 3; - if (key) extras = 2; - while (true) { - var n = randrange(ws.length + extras); - var w = ws[n]; - if (w) { - return w; - } - w = makeWord(lang, key); - var bad = false; - for (var k in lang.words) { - if (lang.words[k].includes(w)) { - bad = true; - break; - } - } - if (bad) continue; - ws.push(w); - lang.words[key] = ws; - return w; - } -} -function makeName(lang, key) { - key = key || ''; - lang.genitive = lang.genitive || getMorpheme(lang, 'of'); - lang.definite = lang.definite || getMorpheme(lang, 'the'); - while (true) { - var name = null; - if (Math.random() < 0.5) { - name = capitalize(getWord(lang, key)); - } else { - var w1 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - var w2 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - if (w1 == w2) continue; - if (Math.random() > 0.5) { - name = join([w1, w2], lang.joiner); - } else { - name = join([w1, lang.genitive, w2], lang.joiner); - } - } - if (Math.random() < 0.1) { - name = join([lang.definite, name], lang.joiner); - } - - if ((name.length < lang.minchar) || (name.length > lang.maxchar)) continue; - var used = false; - for (var i = 0; i < lang.names.length; i++) { - var name2 = lang.names[i]; - if ((name.indexOf(name2) != -1) || (name2.indexOf(name) != -1)) { - used = true; - break; - } - } - if (used) continue; - lang.names.push(name); - return name; - } -} - -function makeBasicLanguage() { - return { - phonemes: { - C: "ptkmnls", - V: "aeiou", - S: "s", - F: "mn", - L: "rl" - }, - structure: "CVC", - exponent: 2, - restricts: [], - cortho: {}, - vortho: {}, - noortho: true, - nomorph: true, - nowordpool: true, - minsyll: 1, - maxsyll: 1, - morphemes: {}, - words: {}, - names: [], - joiner: ' ', - maxchar: 12, - minchar: 5 - }; -} - -function makeOrthoLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - return lang; -} - -function makeRandomLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - lang.nomorph = false; - lang.nowordpool = false; - lang.phonemes.C = shuffled(choose(consets, 2).C); - lang.phonemes.V = shuffled(choose(vowsets, 2).V); - lang.phonemes.L = shuffled(choose(lsets, 2).L); - lang.phonemes.S = shuffled(choose(ssets, 2).S); - lang.phonemes.F = shuffled(choose(fsets, 2).F); - lang.structure = choose(syllstructs); - lang.restricts = ressets[2].res; - lang.cortho = choose(corthsets, 2).orth; - lang.vortho = choose(vorthsets, 2).orth; - lang.minsyll = randrange(1, 3); - if (lang.structure.length < 3) lang.minsyll++; - lang.maxsyll = randrange(lang.minsyll + 1, 7); - lang.joiner = choose(' -'); - return lang; -} -var defaultOrtho = { - 'ʃ': 'sh', - 'ʒ': 'zh', - 'ʧ': 'ch', - 'ʤ': 'j', - 'ŋ': 'ng', - 'j': 'y', - 'x': 'kh', - 'ɣ': 'gh', - 'ʔ': '‘', - A: "á", - E: "é", - I: "í", - O: "ó", - U: "ú" -}; - -var corthsets = [ - { - name: "Default", - orth: {} - }, - { - name: "Slavic", - orth: { - 'ʃ': 'š', - 'ʒ': 'ž', - 'ʧ': 'č', - 'ʤ': 'ǧ', - 'j': 'j' - } - }, - { - name: "German", - orth: { - 'ʃ': 'sch', - 'ʒ': 'zh', - 'ʧ': 'tsch', - 'ʤ': 'dz', - 'j': 'j', - 'x': 'ch' - } - }, - { - name: "French", - orth: { - 'ʃ': 'ch', - 'ʒ': 'j', - 'ʧ': 'tch', - 'ʤ': 'dj', - 'x': 'kh' - } - }, - { - name: "Chinese (pinyin)", - orth: { - 'ʃ': 'x', - 'ʧ': 'q', - 'ʤ': 'j', - } - } -]; - -var vorthsets = [ - { - name: "Ácutes", - orth: {} - }, - { - name: "Ümlauts", - orth: { - A: "ä", - E: "ë", - I: "ï", - O: "ö", - U: "ü" - } - }, - { - name: "Welsh", - orth: { - A: "â", - E: "ê", - I: "y", - O: "ô", - U: "w" - } - }, - { - name: "Diphthongs", - orth: { - A: "au", - E: "ei", - I: "ie", - O: "ou", - U: "oo" - } - }, - { - name: "Doubles", - orth: { - A: "aa", - E: "ee", - I: "ii", - O: "oo", - U: "uu" - } - } -]; - -var consets = [ - { - name: "Minimal", - C: "ptkmnls" - }, - { - name: "English-ish", - C: "ptkbdgmnlrsʃzʒʧ" - }, - { - name: "Pirahã (very simple)", - C: "ptkmnh" - }, - { - name: "Hawaiian-ish", - C: "hklmnpwʔ" - }, - { - name: "Greenlandic-ish", - C: "ptkqvsgrmnŋlj" - }, - { - name: "Arabic-ish", - C: "tksʃdbqɣxmnlrwj" - }, - { - name: "Arabic-lite", - C: "tkdgmnsʃ" - }, - { - name: "English-lite", - C: "ptkbdgmnszʒʧhjw" - } -]; - -var ssets = [ - { - name: "Just s", - S: "s" - }, - { - name: "s ʃ", - S: "sʃ" - }, - { - name: "s ʃ f", - S: "sʃf" - } -]; - -var lsets = [ - { - name: "r l", - L: "rl" - }, - { - name: "Just r", - L: "r" - }, - { - name: "Just l", - L: "l" - }, - { - name: "w j", - L: "wj" - }, - { - name: "r l w j", - L: "rlwj" - } -]; - -var fsets = [ - { - name: "m n", - F: "mn" - }, - { - name: "s k", - F: "sk" - }, - { - name: "m n ŋ", - F: "mnŋ" - }, - { - name: "s ʃ z ʒ", - F: "sʃzʒ" - } -]; - -var vowsets = [ - { - name: "Standard 5-vowel", - V: "aeiou" - }, - { - name: "3-vowel a i u", - V: "aiu" - }, - { - name: "Extra A E I", - V: "aeiouAEI" - }, - { - name: "Extra U", - V: "aeiouU" - }, - { - name: "5-vowel a i u A I", - V: "aiuAI" - }, - { - name: "3-vowel e o u", - V: "eou" - }, - { - name: "Extra A O U", - V: "aeiouAOU" - } -]; - -var syllstructs = [ - "CVC", - "CVV?C", - "CVVC?", "CVC?", "CV", "VC", "CVF", "C?VC", "CVF?", - "CL?VC", "CL?VF", "S?CVC", "S?CVF", "S?CVC?", - "C?VF", "C?VC?", "C?VF?", "C?L?VC", "VC", - "CVL?C?", "C?VL?C", "C?VLC?"]; - -var ressets = [ - { - name: "None", - res: [] - }, - { - name: "Double sounds", - res: [/(.)\1/] - }, - { - name: "Doubles and hard clusters", - res: [/[sʃf][sʃ]/, /(.)\1/, /[rl][rl]/] - } -]; - diff --git a/ilinx_home/maps/map3_files/priority-queue.js b/ilinx_home/maps/map3_files/priority-queue.js deleted file mode 100644 index f8f6b54..0000000 --- a/ilinx_home/maps/map3_files/priority-queue.js +++ /dev/null @@ -1,387 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PriorityQueue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>> 1; - if (comparator(array[mid], value) >= 0) { - low = mid + 1; - } else { - high = mid; - } - } - return low; -}; - -module.exports = ArrayStrategy = (function() { - function ArrayStrategy(options) { - var ref; - this.options = options; - this.comparator = this.options.comparator; - this.data = ((ref = this.options.initialValues) != null ? ref.slice(0) : void 0) || []; - this.data.sort(this.comparator).reverse(); - } - - ArrayStrategy.prototype.queue = function(value) { - var pos; - pos = binarySearchForIndexReversed(this.data, value, this.comparator); - this.data.splice(pos, 0, value); - return void 0; - }; - - ArrayStrategy.prototype.dequeue = function() { - return this.data.pop(); - }; - - ArrayStrategy.prototype.peek = function() { - return this.data[this.data.length - 1]; - }; - - ArrayStrategy.prototype.clear = function() { - this.data.length = 0; - return void 0; - }; - - return ArrayStrategy; - -})(); - - -},{}],4:[function(_dereq_,module,exports){ -var BHeapStrategy; - -module.exports = BHeapStrategy = (function() { - function BHeapStrategy(options) { - var arr, i, j, k, len, ref, ref1, shift, value; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.pageSize = (options != null ? options.pageSize : void 0) || 512; - this.length = 0; - shift = 0; - while ((1 << shift) < this.pageSize) { - shift += 1; - } - if (1 << shift !== this.pageSize) { - throw 'pageSize must be a power of two'; - } - this._shift = shift; - this._emptyMemoryPageTemplate = arr = []; - for (i = j = 0, ref = this.pageSize; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { - arr.push(null); - } - this._memory = []; - this._mask = this.pageSize - 1; - if (options.initialValues) { - ref1 = options.initialValues; - for (k = 0, len = ref1.length; k < len; k++) { - value = ref1[k]; - this.queue(value); - } - } - } - - BHeapStrategy.prototype.queue = function(value) { - this.length += 1; - this._write(this.length, value); - this._bubbleUp(this.length, value); - return void 0; - }; - - BHeapStrategy.prototype.dequeue = function() { - var ret, val; - ret = this._read(1); - val = this._read(this.length); - this.length -= 1; - if (this.length > 0) { - this._write(1, val); - this._bubbleDown(1, val); - } - return ret; - }; - - BHeapStrategy.prototype.peek = function() { - return this._read(1); - }; - - BHeapStrategy.prototype.clear = function() { - this.length = 0; - this._memory.length = 0; - return void 0; - }; - - BHeapStrategy.prototype._write = function(index, value) { - var page; - page = index >> this._shift; - while (page >= this._memory.length) { - this._memory.push(this._emptyMemoryPageTemplate.slice(0)); - } - return this._memory[page][index & this._mask] = value; - }; - - BHeapStrategy.prototype._read = function(index) { - return this._memory[index >> this._shift][index & this._mask]; - }; - - BHeapStrategy.prototype._bubbleUp = function(index, value) { - var compare, indexInPage, parentIndex, parentValue; - compare = this.comparator; - while (index > 1) { - indexInPage = index & this._mask; - if (index < this.pageSize || indexInPage > 3) { - parentIndex = (index & ~this._mask) | (indexInPage >> 1); - } else if (indexInPage < 2) { - parentIndex = (index - this.pageSize) >> this._shift; - parentIndex += parentIndex & ~(this._mask >> 1); - parentIndex |= this.pageSize >> 1; - } else { - parentIndex = index - 2; - } - parentValue = this._read(parentIndex); - if (compare(parentValue, value) < 0) { - break; - } - this._write(parentIndex, value); - this._write(index, parentValue); - index = parentIndex; - } - return void 0; - }; - - BHeapStrategy.prototype._bubbleDown = function(index, value) { - var childIndex1, childIndex2, childValue1, childValue2, compare; - compare = this.comparator; - while (index < this.length) { - if (index > this._mask && !(index & (this._mask - 1))) { - childIndex1 = childIndex2 = index + 2; - } else if (index & (this.pageSize >> 1)) { - childIndex1 = (index & ~this._mask) >> 1; - childIndex1 |= index & (this._mask >> 1); - childIndex1 = (childIndex1 + 1) << this._shift; - childIndex2 = childIndex1 + 1; - } else { - childIndex1 = index + (index & this._mask); - childIndex2 = childIndex1 + 1; - } - if (childIndex1 !== childIndex2 && childIndex2 <= this.length) { - childValue1 = this._read(childIndex1); - childValue2 = this._read(childIndex2); - if (compare(childValue1, value) < 0 && compare(childValue1, childValue2) <= 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else if (compare(childValue2, value) < 0) { - this._write(childIndex2, value); - this._write(index, childValue2); - index = childIndex2; - } else { - break; - } - } else if (childIndex1 <= this.length) { - childValue1 = this._read(childIndex1); - if (compare(childValue1, value) < 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else { - break; - } - } else { - break; - } - } - return void 0; - }; - - return BHeapStrategy; - -})(); - - -},{}],5:[function(_dereq_,module,exports){ -var BinaryHeapStrategy; - -module.exports = BinaryHeapStrategy = (function() { - function BinaryHeapStrategy(options) { - var ref; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.length = 0; - this.data = ((ref = options.initialValues) != null ? ref.slice(0) : void 0) || []; - this._heapify(); - } - - BinaryHeapStrategy.prototype._heapify = function() { - var i, j, ref; - if (this.data.length > 0) { - for (i = j = 1, ref = this.data.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) { - this._bubbleUp(i); - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype.queue = function(value) { - this.data.push(value); - this._bubbleUp(this.data.length - 1); - return void 0; - }; - - BinaryHeapStrategy.prototype.dequeue = function() { - var last, ret; - ret = this.data[0]; - last = this.data.pop(); - if (this.data.length > 0) { - this.data[0] = last; - this._bubbleDown(0); - } - return ret; - }; - - BinaryHeapStrategy.prototype.peek = function() { - return this.data[0]; - }; - - BinaryHeapStrategy.prototype.clear = function() { - this.length = 0; - this.data.length = 0; - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleUp = function(pos) { - var parent, x; - while (pos > 0) { - parent = (pos - 1) >>> 1; - if (this.comparator(this.data[pos], this.data[parent]) < 0) { - x = this.data[parent]; - this.data[parent] = this.data[pos]; - this.data[pos] = x; - pos = parent; - } else { - break; - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleDown = function(pos) { - var last, left, minIndex, right, x; - last = this.data.length - 1; - while (true) { - left = (pos << 1) + 1; - right = left + 1; - minIndex = pos; - if (left <= last && this.comparator(this.data[left], this.data[minIndex]) < 0) { - minIndex = left; - } - if (right <= last && this.comparator(this.data[right], this.data[minIndex]) < 0) { - minIndex = right; - } - if (minIndex !== pos) { - x = this.data[minIndex]; - this.data[minIndex] = this.data[pos]; - this.data[pos] = x; - pos = minIndex; - } else { - break; - } - } - return void 0; - }; - - return BinaryHeapStrategy; - -})(); - - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/ilinx_home/maps/map3_files/script.js b/ilinx_home/maps/map3_files/script.js deleted file mode 100644 index 1a4334d..0000000 --- a/ilinx_home/maps/map3_files/script.js +++ /dev/null @@ -1,21 +0,0 @@ -/* If you're feeling fancy you can add interactivity - to your site with Javascript */ - -// prints "hi" in the browser's dev tools console -console.log("hi"); -var svg = d3.select("svg"); - -var params = { - extent: defaultExtent, - generator: generateCoast, - npts: 1684, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - -doMap(svg, defaultParams); diff --git a/ilinx_home/maps/map3_files/terrain.js b/ilinx_home/maps/map3_files/terrain.js deleted file mode 100644 index 49a624c..0000000 --- a/ilinx_home/maps/map3_files/terrain.js +++ /dev/null @@ -1,1073 +0,0 @@ -"use strict"; - -function runif(lo, hi) { - return lo + Math.random() * (hi - lo); -} - -var rnorm = (function () { - var z2 = null; - function rnorm() { - if (z2 != null) { - var tmp = z2; - z2 = null; - return tmp; - } - var x1 = 0; - var x2 = 0; - var w = 2.0; - while (w >= 1) { - x1 = runif(-1, 1); - x2 = runif(-1, 1); - w = x1 * x1 + x2 * x2; - } - w = Math.sqrt(-2 * Math.log(w) / w); - z2 = x2 * w; - return x1 * w; - } - return rnorm; -})(); - -function randomVector(scale) { - return [scale * rnorm(), scale * rnorm()]; -} - -var defaultExtent = { - width: 1, - height: 1 -}; - -function generatePoints(n, extent) { - extent = extent || defaultExtent; - var pts = []; - for (var i = 0; i < n; i++) { - pts.push([(Math.random() - 0.5) * extent.width, (Math.random() - 0.5) * extent.height]); - } - return pts; -} - -function centroid(pts) { - var x = 0; - var y = 0; - for (var i = 0; i < pts.length; i++) { - x += pts[i][0]; - y += pts[i][1]; - } - return [x/pts.length, y/pts.length]; -} - -function improvePoints(pts, n, extent) { - n = n || 1; - extent = extent || defaultExtent; - for (var i = 0; i < n; i++) { - pts = voronoi(pts, extent) - .polygons(pts) - .map(centroid); - } - return pts; -} - -function generateGoodPoints(n, extent) { - extent = extent || defaultExtent; - var pts = generatePoints(n, extent); - pts = pts.sort(function (a, b) { - return a[0] - b[0]; - }); - return improvePoints(pts, 1, extent); -} - -function voronoi(pts, extent) { - extent = extent || defaultExtent; - var w = extent.width/2; - var h = extent.height/2; - return d3.voronoi().extent([[-w, -h], [w, h]])(pts); -} - -function makeMesh(pts, extent) { - extent = extent || defaultExtent; - var vor = voronoi(pts, extent); - var vxs = []; - var vxids = {}; - var adj = []; - var edges = []; - var tris = []; - for (var i = 0; i < vor.edges.length; i++) { - var e = vor.edges[i]; - if (e == undefined) continue; - var e0 = vxids[e[0]]; - var e1 = vxids[e[1]]; - if (e0 == undefined) { - e0 = vxs.length; - vxids[e[0]] = e0; - vxs.push(e[0]); - } - if (e1 == undefined) { - e1 = vxs.length; - vxids[e[1]] = e1; - vxs.push(e[1]); - } - adj[e0] = adj[e0] || []; - adj[e0].push(e1); - adj[e1] = adj[e1] || []; - adj[e1].push(e0); - edges.push([e0, e1, e.left, e.right]); - tris[e0] = tris[e0] || []; - if (!tris[e0].includes(e.left)) tris[e0].push(e.left); - if (e.right && !tris[e0].includes(e.right)) tris[e0].push(e.right); - tris[e1] = tris[e1] || []; - if (!tris[e1].includes(e.left)) tris[e1].push(e.left); - if (e.right && !tris[e1].includes(e.right)) tris[e1].push(e.right); - } - - var mesh = { - pts: pts, - vor: vor, - vxs: vxs, - adj: adj, - tris: tris, - edges: edges, - extent: extent - } - mesh.map = function (f) { - var mapped = vxs.map(f); - mapped.mesh = mesh; - return mapped; - } - return mesh; -} - - - -function generateGoodMesh(n, extent) { - extent = extent || defaultExtent; - var pts = generateGoodPoints(n, extent); - return makeMesh(pts, extent); -} -function isedge(mesh, i) { - return (mesh.adj[i].length < 3); -} - -function isnearedge(mesh, i) { - var x = mesh.vxs[i][0]; - var y = mesh.vxs[i][1]; - var w = mesh.extent.width; - var h = mesh.extent.height; - return x < -0.45 * w || x > 0.45 * w || y < -0.45 * h || y > 0.45 * h; -} - -function neighbours(mesh, i) { - var onbs = mesh.adj[i]; - var nbs = []; - for (var i = 0; i < onbs.length; i++) { - nbs.push(onbs[i]); - } - return nbs; -} - -function distance(mesh, i, j) { - var p = mesh.vxs[i]; - var q = mesh.vxs[j]; - return Math.sqrt((p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])); -} - -function quantile(h, q) { - var sortedh = []; - for (var i = 0; i < h.length; i++) { - sortedh[i] = h[i]; - } - sortedh.sort(d3.ascending); - return d3.quantile(sortedh, q); -} - -function zero(mesh) { - var z = []; - for (var i = 0; i < mesh.vxs.length; i++) { - z[i] = 0; - } - z.mesh = mesh; - return z; -} - -function slope(mesh, direction) { - return mesh.map(function (x) { - return x[0] * direction[0] + x[1] * direction[1]; - }); -} - -function cone(mesh, slope) { - return mesh.map(function (x) { - return Math.pow(x[0] * x[0] + x[1] * x[1], 0.5) * slope; - }); -} - -function map(h, f) { - var newh = h.map(f); - newh.mesh = h.mesh; - return newh; -} - -function normalize(h) { - var lo = d3.min(h); - var hi = d3.max(h); - return map(h, function (x) {return (x - lo) / (hi - lo)}); -} - -function peaky(h) { - return map(normalize(h), Math.sqrt); -} - -function add() { - var n = arguments[0].length; - var newvals = zero(arguments[0].mesh); - for (var i = 0; i < n; i++) { - for (var j = 0; j < arguments.length; j++) { - newvals[i] += arguments[j][i]; - } - } - return newvals; -} - -function mountains(mesh, n, r) { - r = r || 0.05; - var mounts = []; - for (var i = 0; i < n; i++) { - mounts.push([mesh.extent.width * (Math.random() - 0.5), mesh.extent.height * (Math.random() - 0.5)]); - } - var newvals = zero(mesh); - for (var i = 0; i < mesh.vxs.length; i++) { - var p = mesh.vxs[i]; - for (var j = 0; j < n; j++) { - var m = mounts[j]; - newvals[i] += Math.pow(Math.exp(-((p[0] - m[0]) * (p[0] - m[0]) + (p[1] - m[1]) * (p[1] - m[1])) / (2 * r * r)), 2); - } - } - return newvals; -} - -function relax(h) { - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var nbs = neighbours(h.mesh, i); - if (nbs.length < 3) { - newh[i] = 0; - continue; - } - newh[i] = d3.mean(nbs.map(function (j) {return h[j]})); - } - return newh; -} - -function downhill(h) { - if (h.downhill) return h.downhill; - function downfrom(i) { - if (isedge(h.mesh, i)) return -2; - var best = -1; - var besth = h[i]; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] < besth) { - besth = h[nbs[j]]; - best = nbs[j]; - } - } - return best; - } - var downs = []; - for (var i = 0; i < h.length; i++) { - downs[i] = downfrom(i); - } - h.downhill = downs; - return downs; -} - -function findSinks(h) { - var dh = downhill(h); - var sinks = []; - for (var i = 0; i < dh.length; i++) { - var node = i; - while (true) { - if (isedge(h.mesh, node)) { - sinks[i] = -2; - break; - } - if (dh[node] == -1) { - sinks[i] = node; - break; - } - node = dh[node]; - } - } -} - -function fillSinks(h, epsilon) { - epsilon = epsilon || 1e-5; - var infinity = 999999; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - if (isnearedge(h.mesh, i)) { - newh[i] = h[i]; - } else { - newh[i] = infinity; - } - } - while (true) { - var changed = false; - for (var i = 0; i < h.length; i++) { - if (newh[i] == h[i]) continue; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[i] >= newh[nbs[j]] + epsilon) { - newh[i] = h[i]; - changed = true; - break; - } - var oh = newh[nbs[j]] + epsilon; - if ((newh[i] > oh) && (oh > h[i])) { - newh[i] = oh; - changed = true; - } - } - } - if (!changed) return newh; - } -} - -function getFlux(h) { - var dh = downhill(h); - var idxs = []; - var flux = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - idxs[i] = i; - flux[i] = 1/h.length; - } - idxs.sort(function (a, b) { - return h[b] - h[a]; - }); - for (var i = 0; i < h.length; i++) { - var j = idxs[i]; - if (dh[j] >= 0) { - flux[dh[j]] += flux[j]; - } - } - return flux; -} - -function getSlope(h) { - var dh = downhill(h); - var slope = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var s = trislope(h, i); - slope[i] = Math.sqrt(s[0] * s[0] + s[1] * s[1]); - continue; - if (dh[i] < 0) { - slope[i] = 0; - } else { - slope[i] = (h[i] - h[dh[i]]) / distance(h.mesh, i, dh[i]); - } - } - return slope; -} - -function erosionRate(h) { - var flux = getFlux(h); - var slope = getSlope(h); - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var river = Math.sqrt(flux[i]) * slope[i]; - var creep = slope[i] * slope[i]; - var total = 1000 * river + creep; - total = total > 200 ? 200 : total; - newh[i] = total; - } - return newh; -} - -function erode(h, amount) { - var er = erosionRate(h); - var newh = zero(h.mesh); - var maxr = d3.max(er); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - amount * (er[i] / maxr); - } - return newh; -} - -function doErosion(h, amount, n) { - n = n || 1; - h = fillSinks(h); - for (var i = 0; i < n; i++) { - h = erode(h, amount); - h = fillSinks(h); - } - return h; -} - -function setSeaLevel(h, q) { - var newh = zero(h.mesh); - var delta = quantile(h, q); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - delta; - } - return newh; -} - -function cleanCoast(h, iters) { - for (var iter = 0; iter < iters; iter++) { - var changed = 0; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] <= 0 || nbs.length != 3) continue; - var count = 0; - var best = -999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] > 0) { - count++; - } else if (h[nbs[j]] > best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] > 0 || nbs.length != 3) continue; - var count = 0; - var best = 999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] <= 0) { - count++; - } else if (h[nbs[j]] < best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - } - return h; -} - -function trislope(h, i) { - var nbs = neighbours(h.mesh, i); - if (nbs.length != 3) return [0,0]; - var p0 = h.mesh.vxs[nbs[0]]; - var p1 = h.mesh.vxs[nbs[1]]; - var p2 = h.mesh.vxs[nbs[2]]; - - var x1 = p1[0] - p0[0]; - var x2 = p2[0] - p0[0]; - var y1 = p1[1] - p0[1]; - var y2 = p2[1] - p0[1]; - - var det = x1 * y2 - x2 * y1; - var h1 = h[nbs[1]] - h[nbs[0]]; - var h2 = h[nbs[2]] - h[nbs[0]]; - - return [(y2 * h1 - y1 * h2) / det, - (-x2 * h1 + x1 * h2) / det]; -} - -function cityScore(h, cities) { - var score = map(getFlux(h), Math.sqrt); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) { - score[i] = -999999; - continue; - } - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][0]) - h.mesh.extent.width/2) - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][1]) - h.mesh.extent.height/2) - for (var j = 0; j < cities.length; j++) { - score[i] -= 0.02 / (distance(h.mesh, cities[j], i) + 1e-9); - } - } - return score; -} -function placeCity(render) { - render.cities = render.cities || []; - var score = cityScore(render.h, render.cities); - var newcity = d3.scan(score, d3.descending); - render.cities.push(newcity); -} - -function placeCities(render) { - var params = render.params; - var h = render.h; - var n = params.ncities; - for (var i = 0; i < n; i++) { - placeCity(render); - } -} - -function contour(h, level) { - level = level || 0; - var edges = []; - for (var i = 0; i < h.mesh.edges.length; i++) { - var e = h.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(h.mesh, e[0]) || isnearedge(h.mesh, e[1])) continue; - if ((h[e[0]] > level && h[e[1]] <= level) || - (h[e[1]] > level && h[e[0]] <= level)) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges); -} - -function getRivers(h, limit) { - var dh = downhill(h); - var flux = getFlux(h); - var links = []; - var above = 0; - for (var i = 0; i < h.length; i++) { - if (h[i] > 0) above++; - } - limit *= above / h.length; - for (var i = 0; i < dh.length; i++) { - if (isnearedge(h.mesh, i)) continue; - if (flux[i] > limit && h[i] > 0 && dh[i] >= 0) { - var up = h.mesh.vxs[i]; - var down = h.mesh.vxs[dh[i]]; - if (h[dh[i]] > 0) { - links.push([up, down]); - } else { - links.push([up, [(up[0] + down[0])/2, (up[1] + down[1])/2]]); - } - } - } - return mergeSegments(links).map(relaxPath); -} - -function getTerritories(render) { - var h = render.h; - var cities = render.cities; - var n = render.params.nterrs; - if (n > render.cities.length) n = render.cities.length; - var flux = getFlux(h); - var terr = []; - var queue = new PriorityQueue({comparator: function (a, b) {return a.score - b.score}}); - function weight(u, v) { - var horiz = distance(h.mesh, u, v); - var vert = h[v] - h[u]; - if (vert > 0) vert /= 10; - var diff = 1 + 0.25 * Math.pow(vert/horiz, 2); - diff += 100 * Math.sqrt(flux[u]); - if (h[u] <= 0) diff = 100; - if ((h[u] > 0) != (h[v] > 0)) return 1000; - return horiz * diff; - } - for (var i = 0; i < n; i++) { - terr[cities[i]] = cities[i]; - var nbs = neighbours(h.mesh, cities[i]); - for (var j = 0; j < nbs.length; j++) { - queue.queue({ - score: weight(cities[i], nbs[j]), - city: cities[i], - vx: nbs[j] - }); - } - } - while (queue.length) { - var u = queue.dequeue(); - if (terr[u.vx] != undefined) continue; - terr[u.vx] = u.city; - var nbs = neighbours(h.mesh, u.vx); - for (var i = 0; i < nbs.length; i++) { - var v = nbs[i]; - if (terr[v] != undefined) continue; - var newdist = weight(u.vx, v); - queue.queue({ - score: u.score + newdist, - city: u.city, - vx: v - }); - } - } - terr.mesh = h.mesh; - return terr; -} - -function getBorders(render) { - var terr = render.terr; - var h = render.h; - var edges = []; - for (var i = 0; i < terr.mesh.edges.length; i++) { - var e = terr.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(terr.mesh, e[0]) || isnearedge(terr.mesh, e[1])) continue; - if (h[e[0]] < 0 || h[e[1]] < 0) continue; - if (terr[e[0]] != terr[e[1]]) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges).map(relaxPath); -} - -function mergeSegments(segs) { - var adj = {}; - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - var a0 = adj[seg[0]] || []; - var a1 = adj[seg[1]] || []; - a0.push(seg[1]); - a1.push(seg[0]); - adj[seg[0]] = a0; - adj[seg[1]] = a1; - } - var done = []; - var paths = []; - var path = null; - while (true) { - if (path == null) { - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - done[i] = true; - path = [segs[i][0], segs[i][1]]; - break; - } - if (path == null) break; - } - var changed = false; - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - if (adj[path[0]].length == 2 && segs[i][0] == path[0]) { - path.unshift(segs[i][1]); - } else if (adj[path[0]].length == 2 && segs[i][1] == path[0]) { - path.unshift(segs[i][0]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][0] == path[path.length - 1]) { - path.push(segs[i][1]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][1] == path[path.length - 1]) { - path.push(segs[i][0]); - } else { - continue; - } - done[i] = true; - changed = true; - break; - } - if (!changed) { - paths.push(path); - path = null; - } - } - return paths; -} - -function relaxPath(path) { - var newpath = [path[0]]; - for (var i = 1; i < path.length - 1; i++) { - var newpt = [0.25 * path[i-1][0] + 0.5 * path[i][0] + 0.25 * path[i+1][0], - 0.25 * path[i-1][1] + 0.5 * path[i][1] + 0.25 * path[i+1][1]]; - newpath.push(newpt); - } - newpath.push(path[path.length - 1]); - return newpath; -} -function visualizePoints(svg, pts) { - var circle = svg.selectAll('circle').data(pts); - circle.enter() - .append('circle'); - circle.exit().remove(); - d3.selectAll('circle') - .attr('cx', function (d) {return 1000*d[0]}) - .attr('cy', function (d) {return 1000*d[1]}) - .attr('r', 100 / Math.sqrt(pts.length)); -} - -function makeD3Path(path) { - var p = d3.path(); - p.moveTo(1000*path[0][0], 1000*path[0][1]); - for (var i = 1; i < path.length; i++) { - p.lineTo(1000*path[i][0], 1000*path[i][1]); - } - return p.toString(); -} - -function visualizeVoronoi(svg, field, lo, hi) { - if (hi == undefined) hi = d3.max(field) + 1e-9; - if (lo == undefined) lo = d3.min(field) - 1e-9; - var mappedvals = field.map(function (x) {return x > hi ? 1 : x < lo ? 0 : (x - lo) / (hi - lo)}); - var tris = svg.selectAll('path.field').data(field.mesh.tris) - tris.enter() - .append('path') - .classed('field', true); - - tris.exit() - .remove(); - - svg.selectAll('path.field') - .attr('d', makeD3Path) - .style('fill', function (d, i) { - return d3.interpolateViridis(mappedvals[i]); - }); -} - -function visualizeDownhill(h) { - var links = getRivers(h, 0.01); - drawPaths('river', links); -} - -function drawPaths(svg, cls, paths) { - var paths = svg.selectAll('path.' + cls).data(paths) - paths.enter() - .append('path') - .classed(cls, true) - paths.exit() - .remove(); - svg.selectAll('path.' + cls) - .attr('d', makeD3Path); -} - -function visualizeSlopes(svg, render) { - var h = render.h; - var strokes = []; - var r = 0.25 / Math.sqrt(h.length); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) continue; - var nbs = neighbours(h.mesh, i); - nbs.push(i); - var s = 0; - var s2 = 0; - for (var j = 0; j < nbs.length; j++) { - var slopes = trislope(h, nbs[j]); - s += slopes[0] / 10; - s2 += slopes[1]; - } - s /= nbs.length; - s2 /= nbs.length; - if (Math.abs(s) < runif(0.1, 0.4)) continue; - var l = r * runif(1, 2) * (1 - 0.2 * Math.pow(Math.atan(s), 2)) * Math.exp(s2/100); - var x = h.mesh.vxs[i][0]; - var y = h.mesh.vxs[i][1]; - if (Math.abs(l*s) > 2 * r) { - var n = Math.floor(Math.abs(l*s/r)); - l /= n; - if (n > 4) n = 4; - for (var j = 0; j < n; j++) { - var u = rnorm() * r; - var v = rnorm() * r; - strokes.push([[x+u-l, y+v+l*s], [x+u+l, y+v-l*s]]); - } - } else { - strokes.push([[x-l, y+l*s], [x+l, y-l*s]]); - } - } - var lines = svg.selectAll('line.slope').data(strokes) - lines.enter() - .append('line') - .classed('slope', true); - lines.exit() - .remove(); - svg.selectAll('line.slope') - .attr('x1', function (d) {return 1000*d[0][0]}) - .attr('y1', function (d) {return 1000*d[0][1]}) - .attr('x2', function (d) {return 1000*d[1][0]}) - .attr('y2', function (d) {return 1000*d[1][1]}) -} - - -function visualizeContour(h, level) { - level = level || 0; - var links = contour(h, level); - drawPaths('coast', links); -} - -function visualizeBorders(h, cities, n) { - var links = getBorders(h, getTerritories(h, cities, n)); - drawPaths('border', links); -} - - -function visualizeCities(svg, render) { - var cities = render.cities; - var h = render.h; - var n = render.params.nterrs; - - var circs = svg.selectAll('circle.city').data(cities); - circs.enter() - .append('circle') - .classed('city', true); - circs.exit() - .remove(); - svg.selectAll('circle.city') - .attr('cx', function (d) {return 1000*h.mesh.vxs[d][0]}) - .attr('cy', function (d) {return 1000*h.mesh.vxs[d][1]}) - .attr('r', function (d, i) {return i >= n ? 4 : 10}) - .style('fill', 'white') - .style('stroke-width', 5) - .style('stroke-linecap', 'round') - .style('stroke', 'black') - .raise(); -} - -function dropEdge(h, p) { - p = p || 4 - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var v = h.mesh.vxs[i]; - var x = 2.4*v[0] / h.mesh.extent.width; - var y = 2.4*v[1] / h.mesh.extent.height; - newh[i] = h[i] - Math.exp(10*(Math.pow(Math.pow(x, p) + Math.pow(y, p), 1/p) - 1)); - } - return newh; -} - -function generateCoast(params) { - var mesh = generateGoodMesh(params.npts, params.extent); - var h = add( - slope(mesh, randomVector(6)), - cone(mesh, runif(-10, -10)), - mountains(mesh, 50) - ); - for (var i = 0; i < 10; i++) { - h = relax(h); - } - h = peaky(h); - h = doErosion(h, runif(0, 0.1), 5); - h = setSeaLevel(h, runif(0.8, 0.7)); - h = fillSinks(h); - h = cleanCoast(h, 3); - return h; -} - -function terrCenter(h, terr, city, landOnly) { - var x = 0; - var y = 0; - var n = 0; - for (var i = 0; i < terr.length; i++) { - if (terr[i] != city) continue; - if (landOnly && h[i] <= 0) continue; - x += terr.mesh.vxs[i][0]; - y += terr.mesh.vxs[i][1]; - n++; - } - return [x/n, y/n]; -} - -function drawLabels(svg, render) { - var params = render.params; - var h = render.h; - var terr = render.terr; - var cities = render.cities; - var nterrs = render.params.nterrs; - var avoids = [render.rivers, render.coasts, render.borders]; - var lang = makeRandomLanguage(); - var citylabels = []; - function penalty(label) { - var pen = 0; - if (label.x0 < -0.45 * h.mesh.extent.width) pen += 100; - if (label.x1 > 0.45 * h.mesh.extent.width) pen += 100; - if (label.y0 < -0.45 * h.mesh.extent.height) pen += 100; - if (label.y1 > 0.45 * h.mesh.extent.height) pen += 100; - for (var i = 0; i < citylabels.length; i++) { - var olabel = citylabels[i]; - if (label.x0 < olabel.x1 && label.x1 > olabel.x0 && - label.y0 < olabel.y1 && label.y1 > olabel.y0) { - pen += 100; - } - } - - for (var i = 0; i < cities.length; i++) { - var c = h.mesh.vxs[cities[i]]; - if (label.x0 < c[0] && label.x1 > c[0] && label.y0 < c[1] && label.y1 > c[1]) { - pen += 100; - } - } - for (var i = 0; i < avoids.length; i++) { - var avoid = avoids[i]; - for (var j = 0; j < avoid.length; j++) { - var avpath = avoid[j]; - for (var k = 0; k < avpath.length; k++) { - var pt = avpath[k]; - if (pt[0] > label.x0 && pt[0] < label.x1 && pt[1] > label.y0 && pt[1] < label.y1) { - pen++; - } - } - } - } - return pen; - } - for (var i = 0; i < cities.length; i++) { - var x = h.mesh.vxs[cities[i]][0]; - var y = h.mesh.vxs[cities[i]][1]; - var text = makeName(lang, 'city'); - var size = i < nterrs ? params.fontsizes.city : params.fontsizes.town; - var sx = 0.65 * size/1000 * text.length; - var sy = size/1000; - var posslabels = [ - { - x: x + 0.8 * sy, - y: y + 0.3 * sy, - align: 'start', - x0: x + 0.7 * sy, - y0: y - 0.6 * sy, - x1: x + 0.7 * sy + sx, - y1: y + 0.6 * sy - }, - { - x: x - 0.8 * sy, - y: y + 0.3 * sy, - align: 'end', - x0: x - 0.9 * sy - sx, - y0: y - 0.7 * sy, - x1: x - 0.9 * sy, - y1: y + 0.7 * sy - }, - { - x: x, - y: y - 0.8 * sy, - align: 'middle', - x0: x - sx/2, - y0: y - 1.9*sy, - x1: x + sx/2, - y1: y - 0.7 * sy - }, - { - x: x, - y: y + 1.2 * sy, - align: 'middle', - x0: x - sx/2, - y0: y + 0.1*sy, - x1: x + sx/2, - y1: y + 1.3*sy - } - ]; - var label = posslabels[d3.scan(posslabels, function (a, b) {return penalty(a) - penalty(b)})]; - label.text = text; - label.size = size; - citylabels.push(label); - } - var texts = svg.selectAll('text.city').data(citylabels); - texts.enter() - .append('text') - .classed('city', true); - texts.exit() - .remove(); - svg.selectAll('text.city') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return d.size}) - .style('text-anchor', function (d) {return d.align}) - .text(function (d) {return d.text}) - .raise(); - - var reglabels = []; - for (var i = 0; i < nterrs; i++) { - var city = cities[i]; - var text = makeName(lang, 'region'); - var sy = params.fontsizes.region / 1000; - var sx = 0.6 * text.length * sy; - var lc = terrCenter(h, terr, city, true); - var oc = terrCenter(h, terr, city, false); - var best = 0; - var bestscore = -999999; - for (var j = 0; j < h.length; j++) { - var score = 0; - var v = h.mesh.vxs[j]; - score -= 3000 * Math.sqrt((v[0] - lc[0]) * (v[0] - lc[0]) + (v[1] - lc[1]) * (v[1] - lc[1])); - score -= 1000 * Math.sqrt((v[0] - oc[0]) * (v[0] - oc[0]) + (v[1] - oc[1]) * (v[1] - oc[1])); - if (terr[j] != city) score -= 3000; - for (var k = 0; k < cities.length; k++) { - var u = h.mesh.vxs[cities[k]]; - if (Math.abs(v[0] - u[0]) < sx && - Math.abs(v[1] - sy/2 - u[1]) < sy) { - score -= k < nterrs ? 4000 : 500; - } - if (v[0] - sx/2 < citylabels[k].x1 && - v[0] + sx/2 > citylabels[k].x0 && - v[1] - sy < citylabels[k].y1 && - v[1] > citylabels[k].y0) { - score -= 5000; - } - } - for (var k = 0; k < reglabels.length; k++) { - var label = reglabels[k]; - if (v[0] - sx/2 < label.x + label.width/2 && - v[0] + sx/2 > label.x - label.width/2 && - v[1] - sy < label.y && - v[1] > label.y - label.size) { - score -= 20000; - } - } - if (h[j] <= 0) score -= 500; - if (v[0] + sx/2 > 0.5 * h.mesh.extent.width) score -= 50000; - if (v[0] - sx/2 < -0.5 * h.mesh.extent.width) score -= 50000; - if (v[1] > 0.5 * h.mesh.extent.height) score -= 50000; - if (v[1] - sy < -0.5 * h.mesh.extent.height) score -= 50000; - if (score > bestscore) { - bestscore = score; - best = j; - } - } - reglabels.push({ - text: text, - x: h.mesh.vxs[best][0], - y: h.mesh.vxs[best][1], - size:sy, - width:sx - }); - } - texts = svg.selectAll('text.region').data(reglabels); - texts.enter() - .append('text') - .classed('region', true); - texts.exit() - .remove(); - svg.selectAll('text.region') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return 1000*d.size}) - .style('text-anchor', 'middle') - .text(function (d) {return d.text}) - .raise(); - -} -function drawMap(svg, render) { - render.rivers = getRivers(render.h, 0.01); - render.coasts = contour(render.h, 0); - render.terr = getTerritories(render); - render.borders = getBorders(render); - drawPaths(svg, 'river', render.rivers); - drawPaths(svg, 'coast', render.coasts); - drawPaths(svg, 'border', render.borders); - visualizeSlopes(svg, render); - visualizeCities(svg, render); - drawLabels(svg, render); -} - -function doMap(svg, params) { - var render = { - params: params - }; - var width = svg.attr('width'); - svg.attr('height', width * params.extent.height / params.extent.width); - svg.attr('viewBox', -1000 * params.extent.width/2 + ' ' + - -1000 * params.extent.height/2 + ' ' + - 1000 * params.extent.width + ' ' + - 1000 * params.extent.height); - svg.selectAll().remove(); - render.h = params.generator(params); - placeCities(render); - drawMap(svg, render); -} - -var defaultParams = { - extent: defaultExtent, - generator: generateCoast, - npts: 16384, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - diff --git a/ilinx_home/maps/map_files/d3.js b/ilinx_home/maps/map_files/d3.js deleted file mode 100644 index 95bc9a6..0000000 --- a/ilinx_home/maps/map_files/d3.js +++ /dev/null @@ -1,18525 +0,0 @@ -// https://d3js.org v5.15.1 Copyright 2020 Mike Bostock -(function (global, factory) { -typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : -typeof define === 'function' && define.amd ? define(['exports'], factory) : -(global = global || self, factory(global.d3 = global.d3 || {})); -}(this, function (exports) { 'use strict'; - -var version = "5.15.1"; - -function ascending(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function bisector(compare) { - if (compare.length === 1) compare = ascendingComparator(compare); - return { - left: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) < 0) lo = mid + 1; - else hi = mid; - } - return lo; - }, - right: function(a, x, lo, hi) { - if (lo == null) lo = 0; - if (hi == null) hi = a.length; - while (lo < hi) { - var mid = lo + hi >>> 1; - if (compare(a[mid], x) > 0) hi = mid; - else lo = mid + 1; - } - return lo; - } - }; -} - -function ascendingComparator(f) { - return function(d, x) { - return ascending(f(d), x); - }; -} - -var ascendingBisect = bisector(ascending); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; - -function pairs(array, f) { - if (f == null) f = pair; - var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n); - while (i < n) pairs[i] = f(p, p = array[++i]); - return pairs; -} - -function pair(a, b) { - return [a, b]; -} - -function cross(values0, values1, reduce) { - var n0 = values0.length, - n1 = values1.length, - values = new Array(n0 * n1), - i0, - i1, - i, - value0; - - if (reduce == null) reduce = pair; - - for (i0 = i = 0; i0 < n0; ++i0) { - for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) { - values[i] = reduce(value0, values1[i1]); - } - } - - return values; -} - -function descending(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function number(x) { - return x === null ? NaN : +x; -} - -function variance(values, valueof) { - var n = values.length, - m = 0, - i = -1, - mean = 0, - value, - delta, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - delta = value - mean; - mean += delta / ++m; - sum += delta * (value - mean); - } - } - } - - if (m > 1) return sum / (m - 1); -} - -function deviation(array, f) { - var v = variance(array, f); - return v ? Math.sqrt(v) : v; -} - -function extent(values, valueof) { - var n = values.length, - i = -1, - value, - min, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null) { - if (min > value) min = value; - if (max < value) max = value; - } - } - } - } - } - - return [min, max]; -} - -var array = Array.prototype; - -var slice = array.slice; -var map = array.map; - -function constant(x) { - return function() { - return x; - }; -} - -function identity(x) { - return x; -} - -function sequence(start, stop, step) { - start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step; - - var i = -1, - n = Math.max(0, Math.ceil((stop - start) / step)) | 0, - range = new Array(n); - - while (++i < n) { - range[i] = start + i * step; - } - - return range; -} - -var e10 = Math.sqrt(50), - e5 = Math.sqrt(10), - e2 = Math.sqrt(2); - -function ticks(start, stop, count) { - var reverse, - i = -1, - n, - ticks, - step; - - stop = +stop, start = +start, count = +count; - if (start === stop && count > 0) return [start]; - if (reverse = stop < start) n = start, start = stop, stop = n; - if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return []; - - if (step > 0) { - start = Math.ceil(start / step); - stop = Math.floor(stop / step); - ticks = new Array(n = Math.ceil(stop - start + 1)); - while (++i < n) ticks[i] = (start + i) * step; - } else { - start = Math.floor(start * step); - stop = Math.ceil(stop * step); - ticks = new Array(n = Math.ceil(start - stop + 1)); - while (++i < n) ticks[i] = (start - i) / step; - } - - if (reverse) ticks.reverse(); - - return ticks; -} - -function tickIncrement(start, stop, count) { - var step = (stop - start) / Math.max(0, count), - power = Math.floor(Math.log(step) / Math.LN10), - error = step / Math.pow(10, power); - return power >= 0 - ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power) - : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1); -} - -function tickStep(start, stop, count) { - var step0 = Math.abs(stop - start) / Math.max(0, count), - step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), - error = step0 / step1; - if (error >= e10) step1 *= 10; - else if (error >= e5) step1 *= 5; - else if (error >= e2) step1 *= 2; - return stop < start ? -step1 : step1; -} - -function thresholdSturges(values) { - return Math.ceil(Math.log(values.length) / Math.LN2) + 1; -} - -function histogram() { - var value = identity, - domain = extent, - threshold = thresholdSturges; - - function histogram(data) { - var i, - n = data.length, - x, - values = new Array(n); - - for (i = 0; i < n; ++i) { - values[i] = value(data[i], i, data); - } - - var xz = domain(values), - x0 = xz[0], - x1 = xz[1], - tz = threshold(values, x0, x1); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - tz = tickStep(x0, x1, tz); - tz = sequence(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive - } - - // Remove any thresholds outside the domain. - var m = tz.length; - while (tz[0] <= x0) tz.shift(), --m; - while (tz[m - 1] > x1) tz.pop(), --m; - - var bins = new Array(m + 1), - bin; - - // Initialize bins. - for (i = 0; i <= m; ++i) { - bin = bins[i] = []; - bin.x0 = i > 0 ? tz[i - 1] : x0; - bin.x1 = i < m ? tz[i] : x1; - } - - // Assign data to bins by value, ignoring any outside the domain. - for (i = 0; i < n; ++i) { - x = values[i]; - if (x0 <= x && x <= x1) { - bins[bisectRight(tz, x, 0, m)].push(data[i]); - } - } - - return bins; - } - - histogram.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant(_), histogram) : value; - }; - - histogram.domain = function(_) { - return arguments.length ? (domain = typeof _ === "function" ? _ : constant([_[0], _[1]]), histogram) : domain; - }; - - histogram.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold; - }; - - return histogram; -} - -function threshold(values, p, valueof) { - if (valueof == null) valueof = number; - if (!(n = values.length)) return; - if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values); - if (p >= 1) return +valueof(values[n - 1], n - 1, values); - var n, - i = (n - 1) * p, - i0 = Math.floor(i), - value0 = +valueof(values[i0], i0, values), - value1 = +valueof(values[i0 + 1], i0 + 1, values); - return value0 + (value1 - value0) * (i - i0); -} - -function freedmanDiaconis(values, min, max) { - values = map.call(values, number).sort(ascending); - return Math.ceil((max - min) / (2 * (threshold(values, 0.75) - threshold(values, 0.25)) * Math.pow(values.length, -1 / 3))); -} - -function scott(values, min, max) { - return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3))); -} - -function max(values, valueof) { - var n = values.length, - i = -1, - value, - max; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && value > max) { - max = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - max = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && value > max) { - max = value; - } - } - } - } - } - - return max; -} - -function mean(values, valueof) { - var n = values.length, - m = n, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) sum += value; - else --m; - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value; - else --m; - } - } - - if (m) return sum / m; -} - -function median(values, valueof) { - var n = values.length, - i = -1, - value, - numbers = []; - - if (valueof == null) { - while (++i < n) { - if (!isNaN(value = number(values[i]))) { - numbers.push(value); - } - } - } - - else { - while (++i < n) { - if (!isNaN(value = number(valueof(values[i], i, values)))) { - numbers.push(value); - } - } - } - - return threshold(numbers.sort(ascending), 0.5); -} - -function merge(arrays) { - var n = arrays.length, - m, - i = -1, - j = 0, - merged, - array; - - while (++i < n) j += arrays[i].length; - merged = new Array(j); - - while (--n >= 0) { - array = arrays[n]; - m = array.length; - while (--m >= 0) { - merged[--j] = array[m]; - } - } - - return merged; -} - -function min(values, valueof) { - var n = values.length, - i = -1, - value, - min; - - if (valueof == null) { - while (++i < n) { // Find the first comparable value. - if ((value = values[i]) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = values[i]) != null && min > value) { - min = value; - } - } - } - } - } - - else { - while (++i < n) { // Find the first comparable value. - if ((value = valueof(values[i], i, values)) != null && value >= value) { - min = value; - while (++i < n) { // Compare the remaining values. - if ((value = valueof(values[i], i, values)) != null && min > value) { - min = value; - } - } - } - } - } - - return min; -} - -function permute(array, indexes) { - var i = indexes.length, permutes = new Array(i); - while (i--) permutes[i] = array[indexes[i]]; - return permutes; -} - -function scan(values, compare) { - if (!(n = values.length)) return; - var n, - i = 0, - j = 0, - xi, - xj = values[j]; - - if (compare == null) compare = ascending; - - while (++i < n) { - if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) { - xj = xi, j = i; - } - } - - if (compare(xj, xj) === 0) return j; -} - -function shuffle(array, i0, i1) { - var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0), - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m + i0]; - array[m + i0] = array[i + i0]; - array[i + i0] = t; - } - - return array; -} - -function sum(values, valueof) { - var n = values.length, - i = -1, - value, - sum = 0; - - if (valueof == null) { - while (++i < n) { - if (value = +values[i]) sum += value; // Note: zero and null are equivalent. - } - } - - else { - while (++i < n) { - if (value = +valueof(values[i], i, values)) sum += value; - } - } - - return sum; -} - -function transpose(matrix) { - if (!(n = matrix.length)) return []; - for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) { - for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) { - row[j] = matrix[j][i]; - } - } - return transpose; -} - -function length(d) { - return d.length; -} - -function zip() { - return transpose(arguments); -} - -var slice$1 = Array.prototype.slice; - -function identity$1(x) { - return x; -} - -var top = 1, - right = 2, - bottom = 3, - left = 4, - epsilon = 1e-6; - -function translateX(x) { - return "translate(" + (x + 0.5) + ",0)"; -} - -function translateY(y) { - return "translate(0," + (y + 0.5) + ")"; -} - -function number$1(scale) { - return function(d) { - return +scale(d); - }; -} - -function center(scale) { - var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset. - if (scale.round()) offset = Math.round(offset); - return function(d) { - return +scale(d) + offset; - }; -} - -function entering() { - return !this.__axis; -} - -function axis(orient, scale) { - var tickArguments = [], - tickValues = null, - tickFormat = null, - tickSizeInner = 6, - tickSizeOuter = 6, - tickPadding = 3, - k = orient === top || orient === left ? -1 : 1, - x = orient === left || orient === right ? "x" : "y", - transform = orient === top || orient === bottom ? translateX : translateY; - - function axis(context) { - var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues, - format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity$1) : tickFormat, - spacing = Math.max(tickSizeInner, 0) + tickPadding, - range = scale.range(), - range0 = +range[0] + 0.5, - range1 = +range[range.length - 1] + 0.5, - position = (scale.bandwidth ? center : number$1)(scale.copy()), - selection = context.selection ? context.selection() : context, - path = selection.selectAll(".domain").data([null]), - tick = selection.selectAll(".tick").data(values, scale).order(), - tickExit = tick.exit(), - tickEnter = tick.enter().append("g").attr("class", "tick"), - line = tick.select("line"), - text = tick.select("text"); - - path = path.merge(path.enter().insert("path", ".tick") - .attr("class", "domain") - .attr("stroke", "currentColor")); - - tick = tick.merge(tickEnter); - - line = line.merge(tickEnter.append("line") - .attr("stroke", "currentColor") - .attr(x + "2", k * tickSizeInner)); - - text = text.merge(tickEnter.append("text") - .attr("fill", "currentColor") - .attr(x, k * spacing) - .attr("dy", orient === top ? "0em" : orient === bottom ? "0.71em" : "0.32em")); - - if (context !== selection) { - path = path.transition(context); - tick = tick.transition(context); - line = line.transition(context); - text = text.transition(context); - - tickExit = tickExit.transition(context) - .attr("opacity", epsilon) - .attr("transform", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute("transform"); }); - - tickEnter - .attr("opacity", epsilon) - .attr("transform", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); }); - } - - tickExit.remove(); - - path - .attr("d", orient === left || orient == right - ? (tickSizeOuter ? "M" + k * tickSizeOuter + "," + range0 + "H0.5V" + range1 + "H" + k * tickSizeOuter : "M0.5," + range0 + "V" + range1) - : (tickSizeOuter ? "M" + range0 + "," + k * tickSizeOuter + "V0.5H" + range1 + "V" + k * tickSizeOuter : "M" + range0 + ",0.5H" + range1)); - - tick - .attr("opacity", 1) - .attr("transform", function(d) { return transform(position(d)); }); - - line - .attr(x + "2", k * tickSizeInner); - - text - .attr(x, k * spacing) - .text(format); - - selection.filter(entering) - .attr("fill", "none") - .attr("font-size", 10) - .attr("font-family", "sans-serif") - .attr("text-anchor", orient === right ? "start" : orient === left ? "end" : "middle"); - - selection - .each(function() { this.__axis = position; }); - } - - axis.scale = function(_) { - return arguments.length ? (scale = _, axis) : scale; - }; - - axis.ticks = function() { - return tickArguments = slice$1.call(arguments), axis; - }; - - axis.tickArguments = function(_) { - return arguments.length ? (tickArguments = _ == null ? [] : slice$1.call(_), axis) : tickArguments.slice(); - }; - - axis.tickValues = function(_) { - return arguments.length ? (tickValues = _ == null ? null : slice$1.call(_), axis) : tickValues && tickValues.slice(); - }; - - axis.tickFormat = function(_) { - return arguments.length ? (tickFormat = _, axis) : tickFormat; - }; - - axis.tickSize = function(_) { - return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner; - }; - - axis.tickSizeInner = function(_) { - return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner; - }; - - axis.tickSizeOuter = function(_) { - return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter; - }; - - axis.tickPadding = function(_) { - return arguments.length ? (tickPadding = +_, axis) : tickPadding; - }; - - return axis; -} - -function axisTop(scale) { - return axis(top, scale); -} - -function axisRight(scale) { - return axis(right, scale); -} - -function axisBottom(scale) { - return axis(bottom, scale); -} - -function axisLeft(scale) { - return axis(left, scale); -} - -var noop = {value: function() {}}; - -function dispatch() { - for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) { - if (!(t = arguments[i] + "") || (t in _) || /[\s.]/.test(t)) throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} - -function Dispatch(_) { - this._ = _; -} - -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t); - return {type: t, name: name}; - }); -} - -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, - T = parseTypenames(typename + "", _), - t, - i = -1, - n = T.length; - - // If no callback was specified, return the callback of the given type and name. - if (arguments.length < 2) { - while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t; - return; - } - - // If a type was specified, set the callback for the given type and name. - // Otherwise, if a null callback was specified, remove callbacks of the given name. - if (callback != null && typeof callback !== "function") throw new Error("invalid callback: " + callback); - while (++i < n) { - if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback); - else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null); - } - - return this; - }, - copy: function() { - var copy = {}, _ = this._; - for (var t in _) copy[t] = _[t].slice(); - return new Dispatch(copy); - }, - call: function(type, that) { - if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - }, - apply: function(type, that, args) { - if (!this._.hasOwnProperty(type)) throw new Error("unknown type: " + type); - for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args); - } -}; - -function get(type, name) { - for (var i = 0, n = type.length, c; i < n; ++i) { - if ((c = type[i]).name === name) { - return c.value; - } - } -} - -function set(type, name, callback) { - for (var i = 0, n = type.length; i < n; ++i) { - if (type[i].name === name) { - type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1)); - break; - } - } - if (callback != null) type.push({name: name, value: callback}); - return type; -} - -var xhtml = "http://www.w3.org/1999/xhtml"; - -var namespaces = { - svg: "http://www.w3.org/2000/svg", - xhtml: xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -function namespace(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1); - return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; -} - -function creatorInherit(name) { - return function() { - var document = this.ownerDocument, - uri = this.namespaceURI; - return uri === xhtml && document.documentElement.namespaceURI === xhtml - ? document.createElement(name) - : document.createElementNS(uri, name); - }; -} - -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} - -function creator(name) { - var fullname = namespace(name); - return (fullname.local - ? creatorFixed - : creatorInherit)(fullname); -} - -function none() {} - -function selector(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -function selection_select(select) { - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - - return new Selection(subgroups, this._parents); -} - -function empty() { - return []; -} - -function selectorAll(selector) { - return selector == null ? empty : function() { - return this.querySelectorAll(selector); - }; -} - -function selection_selectAll(select) { - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - - return new Selection(subgroups, parents); -} - -function matcher(selector) { - return function() { - return this.matches(selector); - }; -} - -function selection_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Selection(subgroups, this._parents); -} - -function sparse(update) { - return new Array(update.length); -} - -function selection_enter() { - return new Selection(this._enter || this._groups.map(sparse), this._parents); -} - -function EnterNode(parent, datum) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum; -} - -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { return this._parent.insertBefore(child, this._next); }, - insertBefore: function(child, next) { return this._parent.insertBefore(child, next); }, - querySelector: function(selector) { return this._parent.querySelector(selector); }, - querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); } -}; - -function constant$1(x) { - return function() { - return x; - }; -} - -var keyPrefix = "$"; // Protect against keys like “__proto__”. - -function bindIndex(parent, group, enter, update, exit, data) { - var i = 0, - node, - groupLength = group.length, - dataLength = data.length; - - // Put any non-null nodes that fit into update. - // Put any null nodes into enter. - // Put any remaining data into enter. - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Put any non-null nodes that don’t fit into exit. - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} - -function bindKey(parent, group, enter, update, exit, data, key) { - var i, - node, - nodeByKeyValue = {}, - groupLength = group.length, - dataLength = data.length, - keyValues = new Array(groupLength), - keyValue; - - // Compute the key for each node. - // If multiple nodes have the same key, the duplicates are added to exit. - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group); - if (keyValue in nodeByKeyValue) { - exit[i] = node; - } else { - nodeByKeyValue[keyValue] = node; - } - } - } - - // Compute the key for each datum. - // If there a node associated with this key, join and add it to update. - // If there is not (or the key is a duplicate), add it to enter. - for (i = 0; i < dataLength; ++i) { - keyValue = keyPrefix + key.call(parent, data[i], i, data); - if (node = nodeByKeyValue[keyValue]) { - update[i] = node; - node.__data__ = data[i]; - nodeByKeyValue[keyValue] = null; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - - // Add any remaining nodes that were not bound to data to exit. - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) { - exit[i] = node; - } - } -} - -function selection_data(value, key) { - if (!value) { - data = new Array(this.size()), j = -1; - this.each(function(d) { data[++j] = d; }); - return data; - } - - var bind = key ? bindKey : bindIndex, - parents = this._parents, - groups = this._groups; - - if (typeof value !== "function") value = constant$1(value); - - for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) { - var parent = parents[j], - group = groups[j], - groupLength = group.length, - data = value.call(parent, parent && parent.__data__, j, parents), - dataLength = data.length, - enterGroup = enter[j] = new Array(dataLength), - updateGroup = update[j] = new Array(dataLength), - exitGroup = exit[j] = new Array(groupLength); - - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - - // Now connect the enter nodes to their following update node, such that - // appendChild can insert the materialized enter node before this node, - // rather than at the end of the parent node. - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength); - previous._next = next || null; - } - } - } - - update = new Selection(update, parents); - update._enter = enter; - update._exit = exit; - return update; -} - -function selection_exit() { - return new Selection(this._exit || this._groups.map(sparse), this._parents); -} - -function selection_join(onenter, onupdate, onexit) { - var enter = this.enter(), update = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) update = onupdate(update); - if (onexit == null) exit.remove(); else onexit(exit); - return enter && update ? enter.merge(update).order() : update; -} - -function selection_merge(selection) { - - for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Selection(merges, this._parents); -} - -function selection_order() { - - for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next); - next = node; - } - } - } - - return this; -} - -function selection_sort(compare) { - if (!compare) compare = ascending$1; - - function compareNode(a, b) { - return a && b ? compare(a.__data__, b.__data__) : !a - !b; - } - - for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - - return new Selection(sortgroups, this._parents).order(); -} - -function ascending$1(a, b) { - return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; -} - -function selection_call() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -function selection_nodes() { - var nodes = new Array(this.size()), i = -1; - this.each(function() { nodes[++i] = this; }); - return nodes; -} - -function selection_node() { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length; i < n; ++i) { - var node = group[i]; - if (node) return node; - } - } - - return null; -} - -function selection_size() { - var size = 0; - this.each(function() { ++size; }); - return size; -} - -function selection_empty() { - return !this.node(); -} - -function selection_each(callback) { - - for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) { - for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) { - if (node = group[i]) callback.call(node, node.__data__, i, group); - } - } - - return this; -} - -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} - -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} - -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttribute(name); - else this.setAttribute(name, v); - }; -} - -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.removeAttributeNS(fullname.space, fullname.local); - else this.setAttributeNS(fullname.space, fullname.local, v); - }; -} - -function selection_attr(name, value) { - var fullname = namespace(name); - - if (arguments.length < 2) { - var node = this.node(); - return fullname.local - ? node.getAttributeNS(fullname.space, fullname.local) - : node.getAttribute(fullname); - } - - return this.each((value == null - ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function" - ? (fullname.local ? attrFunctionNS : attrFunction) - : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value)); -} - -function defaultView(node) { - return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node - || (node.document && node) // node is a Window - || node.defaultView; // node is a Document -} - -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} - -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) this.style.removeProperty(name); - else this.style.setProperty(name, v, priority); - }; -} - -function selection_style(name, value, priority) { - return arguments.length > 1 - ? this.each((value == null - ? styleRemove : typeof value === "function" - ? styleFunction - : styleConstant)(name, value, priority == null ? "" : priority)) - : styleValue(this.node(), name); -} - -function styleValue(node, name) { - return node.style.getPropertyValue(name) - || defaultView(node).getComputedStyle(node, null).getPropertyValue(name); -} - -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} - -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} - -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) delete this[name]; - else this[name] = v; - }; -} - -function selection_property(name, value) { - return arguments.length > 1 - ? this.each((value == null - ? propertyRemove : typeof value === "function" - ? propertyFunction - : propertyConstant)(name, value)) - : this.node()[name]; -} - -function classArray(string) { - return string.trim().split(/^|\s+/); -} - -function classList(node) { - return node.classList || new ClassList(node); -} - -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} - -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; - -function classedAdd(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.add(names[i]); -} - -function classedRemove(node, names) { - var list = classList(node), i = -1, n = names.length; - while (++i < n) list.remove(names[i]); -} - -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} - -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} - -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} - -function selection_classed(name, value) { - var names = classArray(name + ""); - - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n = names.length; - while (++i < n) if (!list.contains(names[i])) return false; - return true; - } - - return this.each((typeof value === "function" - ? classedFunction : value - ? classedTrue - : classedFalse)(names, value)); -} - -function textRemove() { - this.textContent = ""; -} - -function textConstant(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} - -function selection_text(value) { - return arguments.length - ? this.each(value == null - ? textRemove : (typeof value === "function" - ? textFunction - : textConstant)(value)) - : this.node().textContent; -} - -function htmlRemove() { - this.innerHTML = ""; -} - -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} - -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} - -function selection_html(value) { - return arguments.length - ? this.each(value == null - ? htmlRemove : (typeof value === "function" - ? htmlFunction - : htmlConstant)(value)) - : this.node().innerHTML; -} - -function raise() { - if (this.nextSibling) this.parentNode.appendChild(this); -} - -function selection_raise() { - return this.each(raise); -} - -function lower() { - if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild); -} - -function selection_lower() { - return this.each(lower); -} - -function selection_append(name) { - var create = typeof name === "function" ? name : creator(name); - return this.select(function() { - return this.appendChild(create.apply(this, arguments)); - }); -} - -function constantNull() { - return null; -} - -function selection_insert(name, before) { - var create = typeof name === "function" ? name : creator(name), - select = before == null ? constantNull : typeof before === "function" ? before : selector(before); - return this.select(function() { - return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -function remove() { - var parent = this.parentNode; - if (parent) parent.removeChild(this); -} - -function selection_remove() { - return this.each(remove); -} - -function selection_cloneShallow() { - var clone = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_cloneDeep() { - var clone = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone, this.nextSibling) : clone; -} - -function selection_clone(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -function selection_datum(value) { - return arguments.length - ? this.property("__data__", value) - : this.node().__data__; -} - -var filterEvents = {}; - -exports.event = null; - -if (typeof document !== "undefined") { - var element = document.documentElement; - if (!("onmouseenter" in element)) { - filterEvents = {mouseenter: "mouseover", mouseleave: "mouseout"}; - } -} - -function filterContextListener(listener, index, group) { - listener = contextListener(listener, index, group); - return function(event) { - var related = event.relatedTarget; - if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) { - listener.call(this, event); - } - }; -} - -function contextListener(listener, index, group) { - return function(event1) { - var event0 = exports.event; // Events can be reentrant (e.g., focus). - exports.event = event1; - try { - listener.call(this, this.__data__, index, group); - } finally { - exports.event = event0; - } - }; -} - -function parseTypenames$1(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i); - return {type: t, name: name}; - }); -} - -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) return; - for (var j = 0, i = -1, m = on.length, o; j < m; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - } else { - on[++i] = o; - } - } - if (++i) on.length = i; - else delete this.__on; - }; -} - -function onAdd(typename, value, capture) { - var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener; - return function(d, i, group) { - var on = this.__on, o, listener = wrap(value, i, group); - if (on) for (var j = 0, m = on.length; j < m; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.capture); - this.addEventListener(o.type, o.listener = listener, o.capture = capture); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, capture); - o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture}; - if (!on) this.__on = [o]; - else on.push(o); - }; -} - -function selection_on(typename, value, capture) { - var typenames = parseTypenames$1(typename + ""), i, n = typenames.length, t; - - if (arguments.length < 2) { - var on = this.node().__on; - if (on) for (var j = 0, m = on.length, o; j < m; ++j) { - for (i = 0, o = on[j]; i < n; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - - on = value ? onAdd : onRemove; - if (capture == null) capture = false; - for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture)); - return this; -} - -function customEvent(event1, listener, that, args) { - var event0 = exports.event; - event1.sourceEvent = exports.event; - exports.event = event1; - try { - return listener.apply(that, args); - } finally { - exports.event = event0; - } -} - -function dispatchEvent(node, type, params) { - var window = defaultView(node), - event = window.CustomEvent; - - if (typeof event === "function") { - event = new event(type, params); - } else { - event = window.document.createEvent("Event"); - if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail; - else event.initEvent(type, false, false); - } - - node.dispatchEvent(event); -} - -function dispatchConstant(type, params) { - return function() { - return dispatchEvent(this, type, params); - }; -} - -function dispatchFunction(type, params) { - return function() { - return dispatchEvent(this, type, params.apply(this, arguments)); - }; -} - -function selection_dispatch(type, params) { - return this.each((typeof params === "function" - ? dispatchFunction - : dispatchConstant)(type, params)); -} - -var root = [null]; - -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} - -function selection() { - return new Selection([[document.documentElement]], root); -} - -Selection.prototype = selection.prototype = { - constructor: Selection, - select: selection_select, - selectAll: selection_selectAll, - filter: selection_filter, - data: selection_data, - enter: selection_enter, - exit: selection_exit, - join: selection_join, - merge: selection_merge, - order: selection_order, - sort: selection_sort, - call: selection_call, - nodes: selection_nodes, - node: selection_node, - size: selection_size, - empty: selection_empty, - each: selection_each, - attr: selection_attr, - style: selection_style, - property: selection_property, - classed: selection_classed, - text: selection_text, - html: selection_html, - raise: selection_raise, - lower: selection_lower, - append: selection_append, - insert: selection_insert, - remove: selection_remove, - clone: selection_clone, - datum: selection_datum, - on: selection_on, - dispatch: selection_dispatch -}; - -function select(selector) { - return typeof selector === "string" - ? new Selection([[document.querySelector(selector)]], [document.documentElement]) - : new Selection([[selector]], root); -} - -function create(name) { - return select(creator(name).call(document.documentElement)); -} - -var nextId = 0; - -function local() { - return new Local; -} - -function Local() { - this._ = "@" + (++nextId).toString(36); -} - -Local.prototype = local.prototype = { - constructor: Local, - get: function(node) { - var id = this._; - while (!(id in node)) if (!(node = node.parentNode)) return; - return node[id]; - }, - set: function(node, value) { - return node[this._] = value; - }, - remove: function(node) { - return this._ in node && delete node[this._]; - }, - toString: function() { - return this._; - } -}; - -function sourceEvent() { - var current = exports.event, source; - while (source = current.sourceEvent) current = source; - return current; -} - -function point(node, event) { - var svg = node.ownerSVGElement || node; - - if (svg.createSVGPoint) { - var point = svg.createSVGPoint(); - point.x = event.clientX, point.y = event.clientY; - point = point.matrixTransform(node.getScreenCTM().inverse()); - return [point.x, point.y]; - } - - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; -} - -function mouse(node) { - var event = sourceEvent(); - if (event.changedTouches) event = event.changedTouches[0]; - return point(node, event); -} - -function selectAll(selector) { - return typeof selector === "string" - ? new Selection([document.querySelectorAll(selector)], [document.documentElement]) - : new Selection([selector == null ? [] : selector], root); -} - -function touch(node, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches; - - for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return point(node, touch); - } - } - - return null; -} - -function touches(node, touches) { - if (touches == null) touches = sourceEvent().touches; - - for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) { - points[i] = point(node, touches[i]); - } - - return points; -} - -function nopropagation() { - exports.event.stopImmediatePropagation(); -} - -function noevent() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -function dragDisable(view) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", noevent, true); - if ("onselectstart" in root) { - selection.on("selectstart.drag", noevent, true); - } else { - root.__noselect = root.style.MozUserSelect; - root.style.MozUserSelect = "none"; - } -} - -function yesdrag(view, noclick) { - var root = view.document.documentElement, - selection = select(view).on("dragstart.drag", null); - if (noclick) { - selection.on("click.drag", noevent, true); - setTimeout(function() { selection.on("click.drag", null); }, 0); - } - if ("onselectstart" in root) { - selection.on("selectstart.drag", null); - } else { - root.style.MozUserSelect = root.__noselect; - delete root.__noselect; - } -} - -function constant$2(x) { - return function() { - return x; - }; -} - -function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) { - this.target = target; - this.type = type; - this.subject = subject; - this.identifier = id; - this.active = active; - this.x = x; - this.y = y; - this.dx = dx; - this.dy = dy; - this._ = dispatch; -} - -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// Ignore right-click, since that should open the context menu. -function defaultFilter() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultContainer() { - return this.parentNode; -} - -function defaultSubject(d) { - return d == null ? {x: exports.event.x, y: exports.event.y} : d; -} - -function defaultTouchable() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function drag() { - var filter = defaultFilter, - container = defaultContainer, - subject = defaultSubject, - touchable = defaultTouchable, - gestures = {}, - listeners = dispatch("start", "drag", "end"), - active = 0, - mousedownx, - mousedowny, - mousemoving, - touchending, - clickDistance2 = 0; - - function drag(selection) { - selection - .on("mousedown.drag", mousedowned) - .filter(touchable) - .on("touchstart.drag", touchstarted) - .on("touchmove.drag", touchmoved) - .on("touchend.drag touchcancel.drag", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var gesture = beforestart("mouse", container.apply(this, arguments), mouse, this, arguments); - if (!gesture) return; - select(exports.event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); - dragDisable(exports.event.view); - nopropagation(); - mousemoving = false; - mousedownx = exports.event.clientX; - mousedowny = exports.event.clientY; - gesture("start"); - } - - function mousemoved() { - noevent(); - if (!mousemoving) { - var dx = exports.event.clientX - mousedownx, dy = exports.event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag"); - } - - function mouseupped() { - select(exports.event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(exports.event.view, mousemoving); - noevent(); - gestures.mouse("end"); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.changedTouches, - c = container.apply(this, arguments), - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) { - nopropagation(); - gesture("start"); - } - } - } - - function touchmoved() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent(); - gesture("drag"); - } - } - } - - function touchended() { - var touches = exports.event.changedTouches, - n = touches.length, i, gesture; - - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - for (i = 0; i < n; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation(); - gesture("end"); - } - } - } - - function beforestart(id, container, point, that, args) { - var p = point(container, id), s, dx, dy, - sublisteners = listeners.copy(); - - if (!customEvent(new DragEvent(drag, "beforestart", s, id, active, p[0], p[1], 0, 0, sublisteners), function() { - if ((exports.event.subject = s = subject.apply(that, args)) == null) return false; - dx = s.x - p[0] || 0; - dy = s.y - p[1] || 0; - return true; - })) return; - - return function gesture(type) { - var p0 = p, n; - switch (type) { - case "start": gestures[id] = gesture, n = active++; break; - case "end": delete gestures[id], --active; // nobreak - case "drag": p = point(container, id), n = active; break; - } - customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]); - }; - } - - drag.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$2(!!_), drag) : filter; - }; - - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant$2(_), drag) : container; - }; - - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant$2(_), drag) : subject; - }; - - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$2(!!_), drag) : touchable; - }; - - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - - return drag; -} - -function define(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} - -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) prototype[key] = definition[key]; - return prototype; -} - -function Color() {} - -var darker = 0.7; -var brighter = 1 / darker; - -var reI = "\\s*([+-]?\\d+)\\s*", - reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", - reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", - reHex = /^#([0-9a-f]{3,8})$/, - reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), - reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), - reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), - reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), - reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), - reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); - -var named = { - aliceblue: 0xf0f8ff, - antiquewhite: 0xfaebd7, - aqua: 0x00ffff, - aquamarine: 0x7fffd4, - azure: 0xf0ffff, - beige: 0xf5f5dc, - bisque: 0xffe4c4, - black: 0x000000, - blanchedalmond: 0xffebcd, - blue: 0x0000ff, - blueviolet: 0x8a2be2, - brown: 0xa52a2a, - burlywood: 0xdeb887, - cadetblue: 0x5f9ea0, - chartreuse: 0x7fff00, - chocolate: 0xd2691e, - coral: 0xff7f50, - cornflowerblue: 0x6495ed, - cornsilk: 0xfff8dc, - crimson: 0xdc143c, - cyan: 0x00ffff, - darkblue: 0x00008b, - darkcyan: 0x008b8b, - darkgoldenrod: 0xb8860b, - darkgray: 0xa9a9a9, - darkgreen: 0x006400, - darkgrey: 0xa9a9a9, - darkkhaki: 0xbdb76b, - darkmagenta: 0x8b008b, - darkolivegreen: 0x556b2f, - darkorange: 0xff8c00, - darkorchid: 0x9932cc, - darkred: 0x8b0000, - darksalmon: 0xe9967a, - darkseagreen: 0x8fbc8f, - darkslateblue: 0x483d8b, - darkslategray: 0x2f4f4f, - darkslategrey: 0x2f4f4f, - darkturquoise: 0x00ced1, - darkviolet: 0x9400d3, - deeppink: 0xff1493, - deepskyblue: 0x00bfff, - dimgray: 0x696969, - dimgrey: 0x696969, - dodgerblue: 0x1e90ff, - firebrick: 0xb22222, - floralwhite: 0xfffaf0, - forestgreen: 0x228b22, - fuchsia: 0xff00ff, - gainsboro: 0xdcdcdc, - ghostwhite: 0xf8f8ff, - gold: 0xffd700, - goldenrod: 0xdaa520, - gray: 0x808080, - green: 0x008000, - greenyellow: 0xadff2f, - grey: 0x808080, - honeydew: 0xf0fff0, - hotpink: 0xff69b4, - indianred: 0xcd5c5c, - indigo: 0x4b0082, - ivory: 0xfffff0, - khaki: 0xf0e68c, - lavender: 0xe6e6fa, - lavenderblush: 0xfff0f5, - lawngreen: 0x7cfc00, - lemonchiffon: 0xfffacd, - lightblue: 0xadd8e6, - lightcoral: 0xf08080, - lightcyan: 0xe0ffff, - lightgoldenrodyellow: 0xfafad2, - lightgray: 0xd3d3d3, - lightgreen: 0x90ee90, - lightgrey: 0xd3d3d3, - lightpink: 0xffb6c1, - lightsalmon: 0xffa07a, - lightseagreen: 0x20b2aa, - lightskyblue: 0x87cefa, - lightslategray: 0x778899, - lightslategrey: 0x778899, - lightsteelblue: 0xb0c4de, - lightyellow: 0xffffe0, - lime: 0x00ff00, - limegreen: 0x32cd32, - linen: 0xfaf0e6, - magenta: 0xff00ff, - maroon: 0x800000, - mediumaquamarine: 0x66cdaa, - mediumblue: 0x0000cd, - mediumorchid: 0xba55d3, - mediumpurple: 0x9370db, - mediumseagreen: 0x3cb371, - mediumslateblue: 0x7b68ee, - mediumspringgreen: 0x00fa9a, - mediumturquoise: 0x48d1cc, - mediumvioletred: 0xc71585, - midnightblue: 0x191970, - mintcream: 0xf5fffa, - mistyrose: 0xffe4e1, - moccasin: 0xffe4b5, - navajowhite: 0xffdead, - navy: 0x000080, - oldlace: 0xfdf5e6, - olive: 0x808000, - olivedrab: 0x6b8e23, - orange: 0xffa500, - orangered: 0xff4500, - orchid: 0xda70d6, - palegoldenrod: 0xeee8aa, - palegreen: 0x98fb98, - paleturquoise: 0xafeeee, - palevioletred: 0xdb7093, - papayawhip: 0xffefd5, - peachpuff: 0xffdab9, - peru: 0xcd853f, - pink: 0xffc0cb, - plum: 0xdda0dd, - powderblue: 0xb0e0e6, - purple: 0x800080, - rebeccapurple: 0x663399, - red: 0xff0000, - rosybrown: 0xbc8f8f, - royalblue: 0x4169e1, - saddlebrown: 0x8b4513, - salmon: 0xfa8072, - sandybrown: 0xf4a460, - seagreen: 0x2e8b57, - seashell: 0xfff5ee, - sienna: 0xa0522d, - silver: 0xc0c0c0, - skyblue: 0x87ceeb, - slateblue: 0x6a5acd, - slategray: 0x708090, - slategrey: 0x708090, - snow: 0xfffafa, - springgreen: 0x00ff7f, - steelblue: 0x4682b4, - tan: 0xd2b48c, - teal: 0x008080, - thistle: 0xd8bfd8, - tomato: 0xff6347, - turquoise: 0x40e0d0, - violet: 0xee82ee, - wheat: 0xf5deb3, - white: 0xffffff, - whitesmoke: 0xf5f5f5, - yellow: 0xffff00, - yellowgreen: 0x9acd32 -}; - -define(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor, this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); - -function color_formatHex() { - return this.rgb().formatHex(); -} - -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} - -function color_formatRgb() { - return this.rgb().formatRgb(); -} - -function color(format) { - var m, l; - format = (format + "").trim().toLowerCase(); - return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000 - : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00 - : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000 - : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000 - : null) // invalid hex - : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0) - : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%) - : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1) - : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1) - : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%) - : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1) - : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins - : format === "transparent" ? new Rgb(NaN, NaN, NaN, 0) - : null; -} - -function rgbn(n) { - return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); -} - -function rgba(r, g, b, a) { - if (a <= 0) r = g = b = NaN; - return new Rgb(r, g, b, a); -} - -function rgbConvert(o) { - if (!(o instanceof Color)) o = color(o); - if (!o) return new Rgb; - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} - -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} - -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} - -define(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return (-0.5 <= this.r && this.r < 255.5) - && (-0.5 <= this.g && this.g < 255.5) - && (-0.5 <= this.b && this.b < 255.5) - && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); - -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} - -function rgb_formatRgb() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "rgb(" : "rgba(") - + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " - + Math.max(0, Math.min(255, Math.round(this.b) || 0)) - + (a === 1 ? ")" : ", " + a + ")"); -} - -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} - -function hsla(h, s, l, a) { - if (a <= 0) h = s = l = NaN; - else if (l <= 0 || l >= 1) h = s = NaN; - else if (s <= 0) h = NaN; - return new Hsl(h, s, l, a); -} - -function hslConvert(o) { - if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) o = color(o); - if (!o) return new Hsl; - if (o instanceof Hsl) return o; - o = o.rgb(); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - min = Math.min(r, g, b), - max = Math.max(r, g, b), - h = NaN, - s = max - min, - l = (max + min) / 2; - if (s) { - if (r === max) h = (g - b) / s + (g < b) * 6; - else if (g === max) h = (b - r) / s + 2; - else h = (r - g) / s + 4; - s /= l < 0.5 ? max + min : 2 - max - min; - h *= 60; - } else { - s = l > 0 && l < 1 ? 0 : h; - } - return new Hsl(h, s, l, o.opacity); -} - -function hsl(h, s, l, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity); -} - -function Hsl(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, - s = isNaN(h) || isNaN(this.s) ? 0 : this.s, - l = this.l, - m2 = l + (l < 0.5 ? l : 1 - l) * s, - m1 = 2 * l - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - displayable: function() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) - && (0 <= this.l && this.l <= 1) - && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl: function() { - var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); - return (a === 1 ? "hsl(" : "hsla(") - + (this.h || 0) + ", " - + (this.s || 0) * 100 + "%, " - + (this.l || 0) * 100 + "%" - + (a === 1 ? ")" : ", " + a + ")"); - } -})); - -/* From FvD 13.37, CSS Color Module Level 3 */ -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 - : h < 180 ? m2 - : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 - : m1) * 255; -} - -var deg2rad = Math.PI / 180; -var rad2deg = 180 / Math.PI; - -// https://observablehq.com/@mbostock/lab-and-rgb -var K = 18, - Xn = 0.96422, - Yn = 1, - Zn = 0.82521, - t0 = 4 / 29, - t1 = 6 / 29, - t2 = 3 * t1 * t1, - t3 = t1 * t1 * t1; - -function labConvert(o) { - if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity); - if (o instanceof Hcl) return hcl2lab(o); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = rgb2lrgb(o.r), - g = rgb2lrgb(o.g), - b = rgb2lrgb(o.b), - y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z; - if (r === g && g === b) x = z = y; else { - x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn); - z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn); - } - return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity); -} - -function gray(l, opacity) { - return new Lab(l, 0, 0, opacity == null ? 1 : opacity); -} - -function lab(l, a, b, opacity) { - return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity); -} - -function Lab(l, a, b, opacity) { - this.l = +l; - this.a = +a; - this.b = +b; - this.opacity = +opacity; -} - -define(Lab, lab, extend(Color, { - brighter: function(k) { - return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - darker: function(k) { - return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity); - }, - rgb: function() { - var y = (this.l + 16) / 116, - x = isNaN(this.a) ? y : y + this.a / 500, - z = isNaN(this.b) ? y : y - this.b / 200; - x = Xn * lab2xyz(x); - y = Yn * lab2xyz(y); - z = Zn * lab2xyz(z); - return new Rgb( - lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z), - lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z), - lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z), - this.opacity - ); - } -})); - -function xyz2lab(t) { - return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0; -} - -function lab2xyz(t) { - return t > t1 ? t * t * t : t2 * (t - t0); -} - -function lrgb2rgb(x) { - return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055); -} - -function rgb2lrgb(x) { - return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4); -} - -function hclConvert(o) { - if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity); - if (!(o instanceof Lab)) o = labConvert(o); - if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity); - var h = Math.atan2(o.b, o.a) * rad2deg; - return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity); -} - -function lch(l, c, h, opacity) { - return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function hcl(h, c, l, opacity) { - return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity); -} - -function Hcl(h, c, l, opacity) { - this.h = +h; - this.c = +c; - this.l = +l; - this.opacity = +opacity; -} - -function hcl2lab(o) { - if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity); - var h = o.h * deg2rad; - return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity); -} - -define(Hcl, hcl, extend(Color, { - brighter: function(k) { - return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity); - }, - darker: function(k) { - return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity); - }, - rgb: function() { - return hcl2lab(this).rgb(); - } -})); - -var A = -0.14861, - B = +1.78277, - C = -0.29227, - D = -0.90649, - E = +1.97294, - ED = E * D, - EB = E * B, - BC_DA = B * C - D * A; - -function cubehelixConvert(o) { - if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) o = rgbConvert(o); - var r = o.r / 255, - g = o.g / 255, - b = o.b / 255, - l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), - bl = b - l, - k = (E * (g - l) - C * bl) / D, - s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1 - h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity); -} - -function cubehelix(h, s, l, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity); -} - -function Cubehelix(h, s, l, opacity) { - this.h = +h; - this.s = +s; - this.l = +l; - this.opacity = +opacity; -} - -define(Cubehelix, cubehelix, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad, - l = +this.l, - a = isNaN(this.s) ? 0 : this.s * l * (1 - l), - cosh = Math.cos(h), - sinh = Math.sin(h); - return new Rgb( - 255 * (l + a * (A * cosh + B * sinh)), - 255 * (l + a * (C * cosh + D * sinh)), - 255 * (l + a * (E * cosh)), - this.opacity - ); - } -})); - -function basis(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 - + (4 - 6 * t2 + 3 * t3) * v1 - + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 - + t3 * v3) / 6; -} - -function basis$1(values) { - var n = values.length - 1; - return function(t) { - var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n), - v1 = values[i], - v2 = values[i + 1], - v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, - v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function basisClosed(values) { - var n = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n), - v0 = values[(i + n - 1) % n], - v1 = values[i % n], - v2 = values[(i + 1) % n], - v3 = values[(i + 2) % n]; - return basis((t - i / n) * n, v0, v1, v2, v3); - }; -} - -function constant$3(x) { - return function() { - return x; - }; -} - -function linear(a, d) { - return function(t) { - return a + t * d; - }; -} - -function exponential(a, b, y) { - return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) { - return Math.pow(a + t * b, y); - }; -} - -function hue(a, b) { - var d = b - a; - return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant$3(isNaN(a) ? b : a); -} - -function gamma(y) { - return (y = +y) === 1 ? nogamma : function(a, b) { - return b - a ? exponential(a, b, y) : constant$3(isNaN(a) ? b : a); - }; -} - -function nogamma(a, b) { - var d = b - a; - return d ? linear(a, d) : constant$3(isNaN(a) ? b : a); -} - -var interpolateRgb = (function rgbGamma(y) { - var color = gamma(y); - - function rgb$1(start, end) { - var r = color((start = rgb(start)).r, (end = rgb(end)).r), - g = color(start.g, end.g), - b = color(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.r = r(t); - start.g = g(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; - } - - rgb$1.gamma = rgbGamma; - - return rgb$1; -})(1); - -function rgbSpline(spline) { - return function(colors) { - var n = colors.length, - r = new Array(n), - g = new Array(n), - b = new Array(n), - i, color; - for (i = 0; i < n; ++i) { - color = rgb(colors[i]); - r[i] = color.r || 0; - g[i] = color.g || 0; - b[i] = color.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color.opacity = 1; - return function(t) { - color.r = r(t); - color.g = g(t); - color.b = b(t); - return color + ""; - }; - }; -} - -var rgbBasis = rgbSpline(basis$1); -var rgbBasisClosed = rgbSpline(basisClosed); - -function numberArray(a, b) { - if (!b) b = []; - var n = a ? Math.min(b.length, a.length) : 0, - c = b.slice(), - i; - return function(t) { - for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; - return c; - }; -} - -function isNumberArray(x) { - return ArrayBuffer.isView(x) && !(x instanceof DataView); -} - -function array$1(a, b) { - return (isNumberArray(b) ? numberArray : genericArray)(a, b); -} - -function genericArray(a, b) { - var nb = b ? b.length : 0, - na = a ? Math.min(nb, a.length) : 0, - x = new Array(na), - c = new Array(nb), - i; - - for (i = 0; i < na; ++i) x[i] = interpolateValue(a[i], b[i]); - for (; i < nb; ++i) c[i] = b[i]; - - return function(t) { - for (i = 0; i < na; ++i) c[i] = x[i](t); - return c; - }; -} - -function date(a, b) { - var d = new Date; - return a = +a, b = +b, function(t) { - return d.setTime(a * (1 - t) + b * t), d; - }; -} - -function interpolateNumber(a, b) { - return a = +a, b = +b, function(t) { - return a * (1 - t) + b * t; - }; -} - -function object(a, b) { - var i = {}, - c = {}, - k; - - if (a === null || typeof a !== "object") a = {}; - if (b === null || typeof b !== "object") b = {}; - - for (k in b) { - if (k in a) { - i[k] = interpolateValue(a[k], b[k]); - } else { - c[k] = b[k]; - } - } - - return function(t) { - for (k in i) c[k] = i[k](t); - return c; - }; -} - -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, - reB = new RegExp(reA.source, "g"); - -function zero(b) { - return function() { - return b; - }; -} - -function one(b) { - return function(t) { - return b(t) + ""; - }; -} - -function interpolateString(a, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b - am, // current match in a - bm, // current match in b - bs, // string preceding current number in b, if any - i = -1, // index in s - s = [], // string constants and placeholders - q = []; // number interpolators - - // Coerce inputs to strings. - a = a + "", b = b + ""; - - // Interpolate pairs of numbers in a & b. - while ((am = reA.exec(a)) - && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { // a string precedes the next number in b - bs = b.slice(bi, bs); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match - if (s[i]) s[i] += bm; // coalesce with previous string - else s[++i] = bm; - } else { // interpolate non-matching numbers - s[++i] = null; - q.push({i: i, x: interpolateNumber(am, bm)}); - } - bi = reB.lastIndex; - } - - // Add remains of b. - if (bi < b.length) { - bs = b.slice(bi); - if (s[i]) s[i] += bs; // coalesce with previous string - else s[++i] = bs; - } - - // Special optimization for only a single match. - // Otherwise, interpolate each of the numbers and rejoin the string. - return s.length < 2 ? (q[0] - ? one(q[0].x) - : zero(b)) - : (b = q.length, function(t) { - for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }); -} - -function interpolateValue(a, b) { - var t = typeof b, c; - return b == null || t === "boolean" ? constant$3(b) - : (t === "number" ? interpolateNumber - : t === "string" ? ((c = color(b)) ? (b = c, interpolateRgb) : interpolateString) - : b instanceof color ? interpolateRgb - : b instanceof Date ? date - : isNumberArray(b) ? numberArray - : Array.isArray(b) ? genericArray - : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object - : interpolateNumber)(a, b); -} - -function discrete(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -function hue$1(a, b) { - var i = hue(+a, +b); - return function(t) { - var x = i(t); - return x - 360 * Math.floor(x / 360); - }; -} - -function interpolateRound(a, b) { - return a = +a, b = +b, function(t) { - return Math.round(a * (1 - t) + b * t); - }; -} - -var degrees = 180 / Math.PI; - -var identity$2 = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; - -function decompose(a, b, c, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX; - if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY; - if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a) * degrees, - skewX: Math.atan(skewX) * degrees, - scaleX: scaleX, - scaleY: scaleY - }; -} - -var cssNode, - cssRoot, - cssView, - svgNode; - -function parseCss(value) { - if (value === "none") return identity$2; - if (!cssNode) cssNode = document.createElement("DIV"), cssRoot = document.documentElement, cssView = document.defaultView; - cssNode.style.transform = value; - value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue("transform"); - cssRoot.removeChild(cssNode); - value = value.slice(7, -1).split(","); - return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]); -} - -function parseSvg(value) { - if (value == null) return identity$2; - if (!svgNode) svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) return identity$2; - value = value.matrix; - return decompose(value.a, value.b, value.c, value.d, value.e, value.f); -} - -function interpolateTransform(parse, pxComma, pxParen, degParen) { - - function pop(s) { - return s.length ? s.pop() + " " : ""; - } - - function translate(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push("translate(", null, pxComma, null, pxParen); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb || yb) { - s.push("translate(" + xb + pxComma + yb + pxParen); - } - } - - function rotate(a, b, s, q) { - if (a !== b) { - if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path - q.push({i: s.push(pop(s) + "rotate(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "rotate(" + b + degParen); - } - } - - function skewX(a, b, s, q) { - if (a !== b) { - q.push({i: s.push(pop(s) + "skewX(", null, degParen) - 2, x: interpolateNumber(a, b)}); - } else if (b) { - s.push(pop(s) + "skewX(" + b + degParen); - } - } - - function scale(xa, ya, xb, yb, s, q) { - if (xa !== xb || ya !== yb) { - var i = s.push(pop(s) + "scale(", null, ",", null, ")"); - q.push({i: i - 4, x: interpolateNumber(xa, xb)}, {i: i - 2, x: interpolateNumber(ya, yb)}); - } else if (xb !== 1 || yb !== 1) { - s.push(pop(s) + "scale(" + xb + "," + yb + ")"); - } - } - - return function(a, b) { - var s = [], // string constants and placeholders - q = []; // number interpolators - a = parse(a), b = parse(b); - translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q); - rotate(a.rotate, b.rotate, s, q); - skewX(a.skewX, b.skewX, s, q); - scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q); - a = b = null; // gc - return function(t) { - var i = -1, n = q.length, o; - while (++i < n) s[(o = q[i]).i] = o.x(t); - return s.join(""); - }; - }; -} - -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -var rho = Math.SQRT2, - rho2 = 2, - rho4 = 4, - epsilon2 = 1e-12; - -function cosh(x) { - return ((x = Math.exp(x)) + 1 / x) / 2; -} - -function sinh(x) { - return ((x = Math.exp(x)) - 1 / x) / 2; -} - -function tanh(x) { - return ((x = Math.exp(2 * x)) - 1) / (x + 1); -} - -// p0 = [ux0, uy0, w0] -// p1 = [ux1, uy1, w1] -function interpolateZoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], - ux1 = p1[0], uy1 = p1[1], w1 = p1[2], - dx = ux1 - ux0, - dy = uy1 - uy0, - d2 = dx * dx + dy * dy, - i, - S; - - // Special case for u0 ≅ u1. - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } - - // General case. - else { - var d1 = Math.sqrt(d2), - b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), - b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), - r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), - r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s = t * S, - coshr0 = cosh(r0), - u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s + r0) - ]; - }; - } - - i.duration = S * 1000; - - return i; -} - -function hsl$1(hue) { - return function(start, end) { - var h = hue((start = hsl(start)).h, (end = hsl(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hsl$2 = hsl$1(hue); -var hslLong = hsl$1(nogamma); - -function lab$1(start, end) { - var l = nogamma((start = lab(start)).l, (end = lab(end)).l), - a = nogamma(start.a, end.a), - b = nogamma(start.b, end.b), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.l = l(t); - start.a = a(t); - start.b = b(t); - start.opacity = opacity(t); - return start + ""; - }; -} - -function hcl$1(hue) { - return function(start, end) { - var h = hue((start = hcl(start)).h, (end = hcl(end)).h), - c = nogamma(start.c, end.c), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.c = c(t); - start.l = l(t); - start.opacity = opacity(t); - return start + ""; - }; - } -} - -var hcl$2 = hcl$1(hue); -var hclLong = hcl$1(nogamma); - -function cubehelix$1(hue) { - return (function cubehelixGamma(y) { - y = +y; - - function cubehelix$1(start, end) { - var h = hue((start = cubehelix(start)).h, (end = cubehelix(end)).h), - s = nogamma(start.s, end.s), - l = nogamma(start.l, end.l), - opacity = nogamma(start.opacity, end.opacity); - return function(t) { - start.h = h(t); - start.s = s(t); - start.l = l(Math.pow(t, y)); - start.opacity = opacity(t); - return start + ""; - }; - } - - cubehelix$1.gamma = cubehelixGamma; - - return cubehelix$1; - })(1); -} - -var cubehelix$2 = cubehelix$1(hue); -var cubehelixLong = cubehelix$1(nogamma); - -function piecewise(interpolate, values) { - var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n); - while (i < n) I[i] = interpolate(v, v = values[++i]); - return function(t) { - var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n))); - return I[i](t - i); - }; -} - -function quantize(interpolator, n) { - var samples = new Array(n); - for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1)); - return samples; -} - -var frame = 0, // is an animation frame pending? - timeout = 0, // is a timeout pending? - interval = 0, // are any timers active? - pokeDelay = 1000, // how frequently we check for clock skew - taskHead, - taskTail, - clockLast = 0, - clockNow = 0, - clockSkew = 0, - clock = typeof performance === "object" && performance.now ? performance : Date, - setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; - -function now() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} - -function clearNow() { - clockNow = 0; -} - -function Timer() { - this._call = - this._time = - this._next = null; -} - -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") throw new TypeError("callback is not a function"); - time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) taskTail._next = this; - else taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; - -function timer(callback, delay, time) { - var t = new Timer; - t.restart(callback, delay, time); - return t; -} - -function timerFlush() { - now(); // Get the current time, if not already set. - ++frame; // Pretend we’ve set an alarm, if we haven’t already. - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) t._call.call(null, e); - t = t._next; - } - --frame; -} - -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} - -function poke() { - var now = clock.now(), delay = now - clockLast; - if (delay > pokeDelay) clockSkew -= delay, clockLast = now; -} - -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} - -function sleep(time) { - if (frame) return; // Soonest alarm already set, or will be. - if (timeout) timeout = clearTimeout(timeout); - var delay = time - clockNow; // Strictly less than if we recomputed clockNow. - if (delay > 24) { - if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) interval = clearInterval(interval); - } else { - if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -function timeout$1(callback, delay, time) { - var t = new Timer; - delay = delay == null ? 0 : +delay; - t.restart(function(elapsed) { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -function interval$1(callback, delay, time) { - var t = new Timer, total = delay; - if (delay == null) return t.restart(callback, delay, time), t; - delay = +delay, time = time == null ? now() : +time; - t.restart(function tick(elapsed) { - elapsed += total; - t.restart(tick, total += delay, time); - callback(elapsed); - }, delay, time); - return t; -} - -var emptyOn = dispatch("start", "end", "cancel", "interrupt"); -var emptyTween = []; - -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; - -function schedule(node, name, id, index, group, timing) { - var schedules = node.__transition; - if (!schedules) node.__transition = {}; - else if (id in schedules) return; - create$1(node, id, { - name: name, - index: index, // For context during callback. - group: group, // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} - -function init(node, id) { - var schedule = get$1(node, id); - if (schedule.state > CREATED) throw new Error("too late; already scheduled"); - return schedule; -} - -function set$1(node, id) { - var schedule = get$1(node, id); - if (schedule.state > STARTED) throw new Error("too late; already running"); - return schedule; -} - -function get$1(node, id) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id])) throw new Error("transition not found"); - return schedule; -} - -function create$1(node, id, self) { - var schedules = node.__transition, - tween; - - // Initialize the self timer when the transition is created. - // Note the actual delay is not known until the first callback! - schedules[id] = self; - self.timer = timer(schedule, 0, self.time); - - function schedule(elapsed) { - self.state = SCHEDULED; - self.timer.restart(start, self.delay, self.time); - - // If the elapsed delay is less than our first sleep, start immediately. - if (self.delay <= elapsed) start(elapsed - self.delay); - } - - function start(elapsed) { - var i, j, n, o; - - // If the state is not SCHEDULED, then we previously errored on start. - if (self.state !== SCHEDULED) return stop(); - - for (i in schedules) { - o = schedules[i]; - if (o.name !== self.name) continue; - - // While this element already has a starting transition during this frame, - // defer starting an interrupting transition until that transition has a - // chance to tick (and possibly end); see d3/d3-transition#54! - if (o.state === STARTED) return timeout$1(start); - - // Interrupt the active transition, if any. - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - - // Cancel any pre-empted transitions. - else if (+i < id) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - - // Defer the first tick to end of the current frame; see d3/d3#1576. - // Note the transition may be canceled after start and before the first tick! - // Note this must be scheduled before the start event; see d3/d3-transition#16! - // Assuming this is successful, subsequent callbacks go straight to tick. - timeout$1(function() { - if (self.state === STARTED) { - self.state = RUNNING; - self.timer.restart(tick, self.delay, self.time); - tick(elapsed); - } - }); - - // Dispatch the start event. - // Note this must be done before the tween are initialized. - self.state = STARTING; - self.on.call("start", node, node.__data__, self.index, self.group); - if (self.state !== STARTING) return; // interrupted - self.state = STARTED; - - // Initialize the tween, deleting null tween. - tween = new Array(n = self.tween.length); - for (i = 0, j = -1; i < n; ++i) { - if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - - function tick(elapsed) { - var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), - i = -1, - n = tween.length; - - while (++i < n) { - tween[i].call(node, t); - } - - // Dispatch the end event. - if (self.state === ENDING) { - self.on.call("end", node, node.__data__, self.index, self.group); - stop(); - } - } - - function stop() { - self.state = ENDED; - self.timer.stop(); - delete schedules[id]; - for (var i in schedules) return; // eslint-disable-line no-unused-vars - delete node.__transition; - } -} - -function interrupt(node, name) { - var schedules = node.__transition, - schedule, - active, - empty = true, - i; - - if (!schedules) return; - - name = name == null ? null : name + ""; - - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { empty = false; continue; } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - - if (empty) delete node.__transition; -} - -function selection_interrupt(name) { - return this.each(function() { - interrupt(this, name); - }); -} - -function tweenRemove(id, name) { - var tween0, tween1; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - - schedule.tween = tween1; - }; -} - -function tweenFunction(id, name, value) { - var tween0, tween1; - if (typeof value !== "function") throw new Error; - return function() { - var schedule = set$1(this, id), - tween = schedule.tween; - - // If this node shared tween with the previous node, - // just assign the updated shared tween and we’re done! - // Otherwise, copy-on-write. - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n) tween1.push(t); - } - - schedule.tween = tween1; - }; -} - -function transition_tween(name, value) { - var id = this._id; - - name += ""; - - if (arguments.length < 2) { - var tween = get$1(this.node(), id).tween; - for (var i = 0, n = tween.length, t; i < n; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - - return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value)); -} - -function tweenValue(transition, name, value) { - var id = transition._id; - - transition.each(function() { - var schedule = set$1(this, id); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - - return function(node) { - return get$1(node, id).value[name]; - }; -} - -function interpolate(a, b) { - var c; - return (typeof b === "number" ? interpolateNumber - : b instanceof color ? interpolateRgb - : (c = color(b)) ? (b = c, interpolateRgb) - : interpolateString)(a, b); -} - -function attrRemove$1(name) { - return function() { - this.removeAttribute(name); - }; -} - -function attrRemoveNS$1(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} - -function attrConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrConstantNS$1(fullname, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function attrFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function attrFunctionNS$1(fullname, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function transition_attr(name, value) { - var fullname = namespace(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate; - return this.attrTween(name, typeof value === "function" - ? (fullname.local ? attrFunctionNS$1 : attrFunction$1)(fullname, i, tweenValue(this, "attr." + name, value)) - : value == null ? (fullname.local ? attrRemoveNS$1 : attrRemove$1)(fullname) - : (fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, i, value)); -} - -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} - -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} - -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} - -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_attrTween(name, value) { - var key = "attr." + name; - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - var fullname = namespace(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -function delayFunction(id, value) { - return function() { - init(this, id).delay = +value.apply(this, arguments); - }; -} - -function delayConstant(id, value) { - return value = +value, function() { - init(this, id).delay = value; - }; -} - -function transition_delay(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? delayFunction - : delayConstant)(id, value)) - : get$1(this.node(), id).delay; -} - -function durationFunction(id, value) { - return function() { - set$1(this, id).duration = +value.apply(this, arguments); - }; -} - -function durationConstant(id, value) { - return value = +value, function() { - set$1(this, id).duration = value; - }; -} - -function transition_duration(value) { - var id = this._id; - - return arguments.length - ? this.each((typeof value === "function" - ? durationFunction - : durationConstant)(id, value)) - : get$1(this.node(), id).duration; -} - -function easeConstant(id, value) { - if (typeof value !== "function") throw new Error; - return function() { - set$1(this, id).ease = value; - }; -} - -function transition_ease(value) { - var id = this._id; - - return arguments.length - ? this.each(easeConstant(id, value)) - : get$1(this.node(), id).ease; -} - -function transition_filter(match) { - if (typeof match !== "function") match = matcher(match); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) { - if ((node = group[i]) && match.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - - return new Transition(subgroups, this._parents, this._name, this._id); -} - -function transition_merge(transition) { - if (transition._id !== this._id) throw new Error; - - for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - - return new Transition(merges, this._parents, this._name, this._id); -} - -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) t = t.slice(0, i); - return !t || t === "start"; - }); -} - -function onFunction(id, name, listener) { - var on0, on1, sit = start(name) ? init : set$1; - return function() { - var schedule = sit(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener); - - schedule.on = on1; - }; -} - -function transition_on(name, listener) { - var id = this._id; - - return arguments.length < 2 - ? get$1(this.node(), id).on.on(name) - : this.each(onFunction(id, name, listener)); -} - -function removeFunction(id) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) if (+i !== id) return; - if (parent) parent.removeChild(this); - }; -} - -function transition_remove() { - return this.on("end.remove", removeFunction(this._id)); -} - -function transition_select(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selector(select); - - for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule(subgroup[i], name, id, i, subgroup, get$1(node, id)); - } - } - } - - return new Transition(subgroups, this._parents, name, id); -} - -function transition_selectAll(select) { - var name = this._name, - id = this._id; - - if (typeof select !== "function") select = selectorAll(select); - - for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - for (var children = select.call(node, node.__data__, i, group), child, inherit = get$1(node, id), k = 0, l = children.length; k < l; ++k) { - if (child = children[k]) { - schedule(child, name, id, k, children, inherit); - } - } - subgroups.push(children); - parents.push(node); - } - } - } - - return new Transition(subgroups, parents, name, id); -} - -var Selection$1 = selection.prototype.constructor; - -function transition_selection() { - return new Selection$1(this._groups, this._parents); -} - -function styleNull(name, interpolate) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} - -function styleRemove$1(name) { - return function() { - this.style.removeProperty(name); - }; -} - -function styleConstant$1(name, interpolate, value1) { - var string00, - string1 = value1 + "", - interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null - : string0 === string00 ? interpolate0 - : interpolate0 = interpolate(string00 = string0, value1); - }; -} - -function styleFunction$1(name, interpolate, value) { - var string00, - string10, - interpolate0; - return function() { - var string0 = styleValue(this, name), - value1 = value(this), - string1 = value1 + ""; - if (value1 == null) string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null - : string0 === string00 && string1 === string10 ? interpolate0 - : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} - -function styleMaybeRemove(id, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove; - return function() { - var schedule = set$1(this, id), - on = schedule.on, - listener = schedule.value[key] == null ? remove || (remove = styleRemove$1(name)) : undefined; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener); - - schedule.on = on1; - }; -} - -function transition_style(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate; - return value == null ? this - .styleTween(name, styleNull(name, i)) - .on("end.style." + name, styleRemove$1(name)) - : typeof value === "function" ? this - .styleTween(name, styleFunction$1(name, i, tweenValue(this, "style." + name, value))) - .each(styleMaybeRemove(this._id, name)) - : this - .styleTween(name, styleConstant$1(name, i, value), priority) - .on("end.style." + name, null); -} - -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} - -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} - -function transition_styleTween(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -function textConstant$1(value) { - return function() { - this.textContent = value; - }; -} - -function textFunction$1(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} - -function transition_text(value) { - return this.tween("text", typeof value === "function" - ? textFunction$1(tweenValue(this, "text", value)) - : textConstant$1(value == null ? "" : value + "")); -} - -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} - -function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; -} - -function transition_textTween(value) { - var key = "text"; - if (arguments.length < 1) return (key = this.tween(key)) && key._value; - if (value == null) return this.tween(key, null); - if (typeof value !== "function") throw new Error; - return this.tween(key, textTween(value)); -} - -function transition_transition() { - var name = this._name, - id0 = this._id, - id1 = newId(); - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - var inherit = get$1(node, id0); - schedule(node, name, id1, i, group, { - time: inherit.time + inherit.delay + inherit.duration, - delay: 0, - duration: inherit.duration, - ease: inherit.ease - }); - } - } - } - - return new Transition(groups, this._parents, name, id1); -} - -function transition_end() { - var on0, on1, that = this, id = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = {value: reject}, - end = {value: function() { if (--size === 0) resolve(); }}; - - that.each(function() { - var schedule = set$1(this, id), - on = schedule.on; - - // If this node shared a dispatch with the previous node, - // just assign the updated shared dispatch and we’re done! - // Otherwise, copy-on-write. - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - - schedule.on = on1; - }); - }); -} - -var id = 0; - -function Transition(groups, parents, name, id) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id; -} - -function transition(name) { - return selection().transition(name); -} - -function newId() { - return ++id; -} - -var selection_prototype = selection.prototype; - -Transition.prototype = transition.prototype = { - constructor: Transition, - select: transition_select, - selectAll: transition_selectAll, - filter: transition_filter, - merge: transition_merge, - selection: transition_selection, - transition: transition_transition, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: transition_on, - attr: transition_attr, - attrTween: transition_attrTween, - style: transition_style, - styleTween: transition_styleTween, - text: transition_text, - textTween: transition_textTween, - remove: transition_remove, - tween: transition_tween, - delay: transition_delay, - duration: transition_duration, - ease: transition_ease, - end: transition_end -}; - -function linear$1(t) { - return +t; -} - -function quadIn(t) { - return t * t; -} - -function quadOut(t) { - return t * (2 - t); -} - -function quadInOut(t) { - return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2; -} - -function cubicIn(t) { - return t * t * t; -} - -function cubicOut(t) { - return --t * t * t + 1; -} - -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -var exponent = 3; - -var polyIn = (function custom(e) { - e = +e; - - function polyIn(t) { - return Math.pow(t, e); - } - - polyIn.exponent = custom; - - return polyIn; -})(exponent); - -var polyOut = (function custom(e) { - e = +e; - - function polyOut(t) { - return 1 - Math.pow(1 - t, e); - } - - polyOut.exponent = custom; - - return polyOut; -})(exponent); - -var polyInOut = (function custom(e) { - e = +e; - - function polyInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2; - } - - polyInOut.exponent = custom; - - return polyInOut; -})(exponent); - -var pi = Math.PI, - halfPi = pi / 2; - -function sinIn(t) { - return 1 - Math.cos(t * halfPi); -} - -function sinOut(t) { - return Math.sin(t * halfPi); -} - -function sinInOut(t) { - return (1 - Math.cos(pi * t)) / 2; -} - -function expIn(t) { - return Math.pow(2, 10 * t - 10); -} - -function expOut(t) { - return 1 - Math.pow(2, -10 * t); -} - -function expInOut(t) { - return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2; -} - -function circleIn(t) { - return 1 - Math.sqrt(1 - t * t); -} - -function circleOut(t) { - return Math.sqrt(1 - --t * t); -} - -function circleInOut(t) { - return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2; -} - -var b1 = 4 / 11, - b2 = 6 / 11, - b3 = 8 / 11, - b4 = 3 / 4, - b5 = 9 / 11, - b6 = 10 / 11, - b7 = 15 / 16, - b8 = 21 / 22, - b9 = 63 / 64, - b0 = 1 / b1 / b1; - -function bounceIn(t) { - return 1 - bounceOut(1 - t); -} - -function bounceOut(t) { - return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9; -} - -function bounceInOut(t) { - return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2; -} - -var overshoot = 1.70158; - -var backIn = (function custom(s) { - s = +s; - - function backIn(t) { - return t * t * ((s + 1) * t - s); - } - - backIn.overshoot = custom; - - return backIn; -})(overshoot); - -var backOut = (function custom(s) { - s = +s; - - function backOut(t) { - return --t * t * ((s + 1) * t + s) + 1; - } - - backOut.overshoot = custom; - - return backOut; -})(overshoot); - -var backInOut = (function custom(s) { - s = +s; - - function backInOut(t) { - return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2; - } - - backInOut.overshoot = custom; - - return backInOut; -})(overshoot); - -var tau = 2 * Math.PI, - amplitude = 1, - period = 0.3; - -var elasticIn = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticIn(t) { - return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p); - } - - elasticIn.amplitude = function(a) { return custom(a, p * tau); }; - elasticIn.period = function(p) { return custom(a, p); }; - - return elasticIn; -})(amplitude, period); - -var elasticOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticOut(t) { - return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p); - } - - elasticOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticOut.period = function(p) { return custom(a, p); }; - - return elasticOut; -})(amplitude, period); - -var elasticInOut = (function custom(a, p) { - var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); - - function elasticInOut(t) { - return ((t = t * 2 - 1) < 0 - ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p) - : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2; - } - - elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; - elasticInOut.period = function(p) { return custom(a, p); }; - - return elasticInOut; -})(amplitude, period); - -var defaultTiming = { - time: null, // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; - -function inherit(node, id) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id])) { - if (!(node = node.parentNode)) { - return defaultTiming.time = now(), defaultTiming; - } - } - return timing; -} - -function selection_transition(name) { - var id, - timing; - - if (name instanceof Transition) { - id = name._id, name = name._name; - } else { - id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + ""; - } - - for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) { - for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) { - if (node = group[i]) { - schedule(node, name, id, i, group, timing || inherit(node, id)); - } - } - } - - return new Transition(groups, this._parents, name, id); -} - -selection.prototype.interrupt = selection_interrupt; -selection.prototype.transition = selection_transition; - -var root$1 = [null]; - -function active(node, name) { - var schedules = node.__transition, - schedule, - i; - - if (schedules) { - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) { - return new Transition([[node]], root$1, name, +i); - } - } - } - - return null; -} - -function constant$4(x) { - return function() { - return x; - }; -} - -function BrushEvent(target, type, selection) { - this.target = target; - this.type = type; - this.selection = selection; -} - -function nopropagation$1() { - exports.event.stopImmediatePropagation(); -} - -function noevent$1() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -var MODE_DRAG = {name: "drag"}, - MODE_SPACE = {name: "space"}, - MODE_HANDLE = {name: "handle"}, - MODE_CENTER = {name: "center"}; - -function number1(e) { - return [+e[0], +e[1]]; -} - -function number2(e) { - return [number1(e[0]), number1(e[1])]; -} - -function toucher(identifier) { - return function(target) { - return touch(target, exports.event.touches, identifier); - }; -} - -var X = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; }, - output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } -}; - -var Y = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; }, - output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } -}; - -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { return xy == null ? null : number2(xy); }, - output: function(xy) { return xy; } -}; - -var cursors = { - overlay: "crosshair", - selection: "move", - n: "ns-resize", - e: "ew-resize", - s: "ns-resize", - w: "ew-resize", - nw: "nwse-resize", - ne: "nesw-resize", - se: "nwse-resize", - sw: "nesw-resize" -}; - -var flipX = { - e: "w", - w: "e", - nw: "ne", - ne: "nw", - se: "sw", - sw: "se" -}; - -var flipY = { - n: "s", - s: "n", - nw: "sw", - ne: "se", - se: "ne", - sw: "nw" -}; - -var signsX = { - overlay: +1, - selection: +1, - n: null, - e: +1, - s: null, - w: -1, - nw: -1, - ne: +1, - se: +1, - sw: -1 -}; - -var signsY = { - overlay: +1, - selection: +1, - n: -1, - e: null, - s: +1, - w: null, - nw: -1, - ne: -1, - se: +1, - sw: +1 -}; - -function type(t) { - return {type: t}; -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$1() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent() { - var svg = this.ownerSVGElement || this; - if (svg.hasAttribute("viewBox")) { - svg = svg.viewBox.baseVal; - return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]]; - } - return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; -} - -function defaultTouchable$1() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -// Like d3.local, but with the name “__brush” rather than auto-generated. -function local$1(node) { - while (!node.__brush) if (!(node = node.parentNode)) return; - return node.__brush; -} - -function empty$1(extent) { - return extent[0][0] === extent[1][0] - || extent[0][1] === extent[1][1]; -} - -function brushSelection(node) { - var state = node.__brush; - return state ? state.dim.output(state.selection) : null; -} - -function brushX() { - return brush$1(X); -} - -function brushY() { - return brush$1(Y); -} - -function brush() { - return brush$1(XY); -} - -function brush$1(dim) { - var extent = defaultExtent, - filter = defaultFilter$1, - touchable = defaultTouchable$1, - keys = true, - listeners = dispatch("start", "brush", "end"), - handleSize = 6, - touchending; - - function brush(group) { - var overlay = group - .property("__brush", initialize) - .selectAll(".overlay") - .data([type("overlay")]); - - overlay.enter().append("rect") - .attr("class", "overlay") - .attr("pointer-events", "all") - .attr("cursor", cursors.overlay) - .merge(overlay) - .each(function() { - var extent = local$1(this).extent; - select(this) - .attr("x", extent[0][0]) - .attr("y", extent[0][1]) - .attr("width", extent[1][0] - extent[0][0]) - .attr("height", extent[1][1] - extent[0][1]); - }); - - group.selectAll(".selection") - .data([type("selection")]) - .enter().append("rect") - .attr("class", "selection") - .attr("cursor", cursors.selection) - .attr("fill", "#777") - .attr("fill-opacity", 0.3) - .attr("stroke", "#fff") - .attr("shape-rendering", "crispEdges"); - - var handle = group.selectAll(".handle") - .data(dim.handles, function(d) { return d.type; }); - - handle.exit().remove(); - - handle.enter().append("rect") - .attr("class", function(d) { return "handle handle--" + d.type; }) - .attr("cursor", function(d) { return cursors[d.type]; }); - - group - .each(redraw) - .attr("fill", "none") - .attr("pointer-events", "all") - .on("mousedown.brush", started) - .filter(touchable) - .on("touchstart.brush", started) - .on("touchmove.brush", touchmoved) - .on("touchend.brush touchcancel.brush", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - brush.move = function(group, selection) { - if (group.selection) { - group - .on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) - .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) - .tween("brush", function() { - var that = this, - state = that.__brush, - emit = emitter(that, arguments), - selection0 = state.selection, - selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), - i = interpolateValue(selection0, selection1); - - function tween(t) { - state.selection = t === 1 && selection1 === null ? null : i(t); - redraw.call(that); - emit.brush(); - } - - return selection0 !== null && selection1 !== null ? tween : tween(1); - }); - } else { - group - .each(function() { - var that = this, - args = arguments, - state = that.__brush, - selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), - emit = emitter(that, args).beforestart(); - - interrupt(that); - state.selection = selection1 === null ? null : selection1; - redraw.call(that); - emit.start().brush().end(); - }); - } - }; - - brush.clear = function(group) { - brush.move(group, null); - }; - - function redraw() { - var group = select(this), - selection = local$1(this).selection; - - if (selection) { - group.selectAll(".selection") - .style("display", null) - .attr("x", selection[0][0]) - .attr("y", selection[0][1]) - .attr("width", selection[1][0] - selection[0][0]) - .attr("height", selection[1][1] - selection[0][1]); - - group.selectAll(".handle") - .style("display", null) - .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) - .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) - .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) - .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); - } - - else { - group.selectAll(".selection,.handle") - .style("display", "none") - .attr("x", null) - .attr("y", null) - .attr("width", null) - .attr("height", null); - } - } - - function emitter(that, args, clean) { - return (!clean && that.__brush.emitter) || new Emitter(that, args); - } - - function Emitter(that, args) { - this.that = that; - this.args = args; - this.state = that.__brush; - this.active = 0; - } - - Emitter.prototype = { - beforestart: function() { - if (++this.active === 1) this.state.emitter = this, this.starting = true; - return this; - }, - start: function() { - if (this.starting) this.starting = false, this.emit("start"); - else this.emit("brush"); - return this; - }, - brush: function() { - this.emit("brush"); - return this; - }, - end: function() { - if (--this.active === 0) delete this.state.emitter, this.emit("end"); - return this; - }, - emit: function(type) { - customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function started() { - if (touchending && !exports.event.touches) return; - if (!filter.apply(this, arguments)) return; - - var that = this, - type = exports.event.target.__data__.type, - mode = (keys && exports.event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (keys && exports.event.altKey ? MODE_CENTER : MODE_HANDLE), - signX = dim === Y ? null : signsX[type], - signY = dim === X ? null : signsY[type], - state = local$1(that), - extent = state.extent, - selection = state.selection, - W = extent[0][0], w0, w1, - N = extent[0][1], n0, n1, - E = extent[1][0], e0, e1, - S = extent[1][1], s0, s1, - dx = 0, - dy = 0, - moving, - shifting = signX && signY && keys && exports.event.shiftKey, - lockX, - lockY, - pointer = exports.event.touches ? toucher(exports.event.changedTouches[0].identifier) : mouse, - point0 = pointer(that), - point = point0, - emit = emitter(that, arguments, true).beforestart(); - - if (type === "overlay") { - if (selection) moving = true; - state.selection = selection = [ - [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], - [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] - ]; - } else { - w0 = selection[0][0]; - n0 = selection[0][1]; - e0 = selection[1][0]; - s0 = selection[1][1]; - } - - w1 = w0; - n1 = n0; - e1 = e0; - s1 = s0; - - var group = select(that) - .attr("pointer-events", "none"); - - var overlay = group.selectAll(".overlay") - .attr("cursor", cursors[type]); - - if (exports.event.touches) { - emit.moved = moved; - emit.ended = ended; - } else { - var view = select(exports.event.view) - .on("mousemove.brush", moved, true) - .on("mouseup.brush", ended, true); - if (keys) view - .on("keydown.brush", keydowned, true) - .on("keyup.brush", keyupped, true); - - dragDisable(exports.event.view); - } - - nopropagation$1(); - interrupt(that); - redraw.call(that); - emit.start(); - - function moved() { - var point1 = pointer(that); - if (shifting && !lockX && !lockY) { - if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; - else lockX = true; - } - point = point1; - moving = true; - noevent$1(); - move(); - } - - function move() { - var t; - - dx = point[0] - point0[0]; - dy = point[1] - point0[1]; - - switch (mode) { - case MODE_SPACE: - case MODE_DRAG: { - if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; - if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; - break; - } - case MODE_HANDLE: { - if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; - else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; - if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; - else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; - break; - } - case MODE_CENTER: { - if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); - if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); - break; - } - } - - if (e1 < w1) { - signX *= -1; - t = w0, w0 = e0, e0 = t; - t = w1, w1 = e1, e1 = t; - if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); - } - - if (s1 < n1) { - signY *= -1; - t = n0, n0 = s0, s0 = t; - t = n1, n1 = s1, s1 = t; - if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); - } - - if (state.selection) selection = state.selection; // May be set by brush.move! - if (lockX) w1 = selection[0][0], e1 = selection[1][0]; - if (lockY) n1 = selection[0][1], s1 = selection[1][1]; - - if (selection[0][0] !== w1 - || selection[0][1] !== n1 - || selection[1][0] !== e1 - || selection[1][1] !== s1) { - state.selection = [[w1, n1], [e1, s1]]; - redraw.call(that); - emit.brush(); - } - } - - function ended() { - nopropagation$1(); - if (exports.event.touches) { - if (exports.event.touches.length) return; - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! - } else { - yesdrag(exports.event.view, moving); - view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); - } - group.attr("pointer-events", "all"); - overlay.attr("cursor", cursors.overlay); - if (state.selection) selection = state.selection; // May be set by brush.move (on start)! - if (empty$1(selection)) state.selection = null, redraw.call(that); - emit.end(); - } - - function keydowned() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - shifting = signX && signY; - break; - } - case 18: { // ALT - if (mode === MODE_HANDLE) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - move(); - } - break; - } - case 32: { // SPACE; takes priority over ALT - if (mode === MODE_HANDLE || mode === MODE_CENTER) { - if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; - if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; - mode = MODE_SPACE; - overlay.attr("cursor", cursors.selection); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - - function keyupped() { - switch (exports.event.keyCode) { - case 16: { // SHIFT - if (shifting) { - lockX = lockY = shifting = false; - move(); - } - break; - } - case 18: { // ALT - if (mode === MODE_CENTER) { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - move(); - } - break; - } - case 32: { // SPACE - if (mode === MODE_SPACE) { - if (exports.event.altKey) { - if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; - if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; - mode = MODE_CENTER; - } else { - if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; - if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; - mode = MODE_HANDLE; - } - overlay.attr("cursor", cursors[type]); - move(); - } - break; - } - default: return; - } - noevent$1(); - } - } - - function touchmoved() { - emitter(this, arguments).moved(); - } - - function touchended() { - emitter(this, arguments).ended(); - } - - function initialize() { - var state = this.__brush || {selection: null}; - state.extent = number2(extent.apply(this, arguments)); - state.dim = dim; - return state; - } - - brush.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$4(number2(_)), brush) : extent; - }; - - brush.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$4(!!_), brush) : filter; - }; - - brush.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$4(!!_), brush) : touchable; - }; - - brush.handleSize = function(_) { - return arguments.length ? (handleSize = +_, brush) : handleSize; - }; - - brush.keyModifiers = function(_) { - return arguments.length ? (keys = !!_, brush) : keys; - }; - - brush.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? brush : value; - }; - - return brush; -} - -var cos = Math.cos; -var sin = Math.sin; -var pi$1 = Math.PI; -var halfPi$1 = pi$1 / 2; -var tau$1 = pi$1 * 2; -var max$1 = Math.max; - -function compareValue(compare) { - return function(a, b) { - return compare( - a.source.value + a.target.value, - b.source.value + b.target.value - ); - }; -} - -function chord() { - var padAngle = 0, - sortGroups = null, - sortSubgroups = null, - sortChords = null; - - function chord(matrix) { - var n = matrix.length, - groupSums = [], - groupIndex = sequence(n), - subgroupIndex = [], - chords = [], - groups = chords.groups = new Array(n), - subgroups = new Array(n * n), - k, - x, - x0, - dx, - i, - j; - - // Compute the sum. - k = 0, i = -1; while (++i < n) { - x = 0, j = -1; while (++j < n) { - x += matrix[i][j]; - } - groupSums.push(x); - subgroupIndex.push(sequence(n)); - k += x; - } - - // Sort groups… - if (sortGroups) groupIndex.sort(function(a, b) { - return sortGroups(groupSums[a], groupSums[b]); - }); - - // Sort subgroups… - if (sortSubgroups) subgroupIndex.forEach(function(d, i) { - d.sort(function(a, b) { - return sortSubgroups(matrix[i][a], matrix[i][b]); - }); - }); - - // Convert the sum to scaling factor for [0, 2pi]. - // TODO Allow start and end angle to be specified? - // TODO Allow padding to be specified as percentage? - k = max$1(0, tau$1 - padAngle * n) / k; - dx = k ? padAngle : tau$1 / n; - - // Compute the start and end angle for each group and subgroup. - // Note: Opera has a bug reordering object literal properties! - x = 0, i = -1; while (++i < n) { - x0 = x, j = -1; while (++j < n) { - var di = groupIndex[i], - dj = subgroupIndex[di][j], - v = matrix[di][dj], - a0 = x, - a1 = x += v * k; - subgroups[dj * n + di] = { - index: di, - subindex: dj, - startAngle: a0, - endAngle: a1, - value: v - }; - } - groups[di] = { - index: di, - startAngle: x0, - endAngle: x, - value: groupSums[di] - }; - x += dx; - } - - // Generate chords for each (non-empty) subgroup-subgroup link. - i = -1; while (++i < n) { - j = i - 1; while (++j < n) { - var source = subgroups[j * n + i], - target = subgroups[i * n + j]; - if (source.value || target.value) { - chords.push(source.value < target.value - ? {source: target, target: source} - : {source: source, target: target}); - } - } - } - - return sortChords ? chords.sort(sortChords) : chords; - } - - chord.padAngle = function(_) { - return arguments.length ? (padAngle = max$1(0, _), chord) : padAngle; - }; - - chord.sortGroups = function(_) { - return arguments.length ? (sortGroups = _, chord) : sortGroups; - }; - - chord.sortSubgroups = function(_) { - return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups; - }; - - chord.sortChords = function(_) { - return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._; - }; - - return chord; -} - -var slice$2 = Array.prototype.slice; - -function constant$5(x) { - return function() { - return x; - }; -} - -var pi$2 = Math.PI, - tau$2 = 2 * pi$2, - epsilon$1 = 1e-6, - tauEpsilon = tau$2 - epsilon$1; - -function Path() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; // end of current subpath - this._ = ""; -} - -function path() { - return new Path; -} - -Path.prototype = path.prototype = { - constructor: Path, - moveTo: function(x, y) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); - }, - closePath: function() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - }, - lineTo: function(x, y) { - this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); - }, - quadraticCurveTo: function(x1, y1, x, y) { - this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { - this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); - }, - arcTo: function(x1, y1, x2, y2, r) { - x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; - var x0 = this._x1, - y0 = this._y1, - x21 = x2 - x1, - y21 = y2 - y1, - x01 = x0 - x1, - y01 = y0 - y1, - l01_2 = x01 * x01 + y01 * y01; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x1,y1). - if (this._x1 === null) { - this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. - else if (!(l01_2 > epsilon$1)); - - // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? - // Equivalently, is (x1,y1) coincident with (x2,y2)? - // Or, is the radius zero? Line to (x1,y1). - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon$1) || !r) { - this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); - } - - // Otherwise, draw an arc! - else { - var x20 = x2 - x0, - y20 = y2 - y0, - l21_2 = x21 * x21 + y21 * y21, - l20_2 = x20 * x20 + y20 * y20, - l21 = Math.sqrt(l21_2), - l01 = Math.sqrt(l01_2), - l = r * Math.tan((pi$2 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), - t01 = l / l01, - t21 = l / l21; - - // If the start tangent is not coincident with (x0,y0), line to. - if (Math.abs(t01 - 1) > epsilon$1) { - this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); - } - - this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); - } - }, - arc: function(x, y, r, a0, a1, ccw) { - x = +x, y = +y, r = +r, ccw = !!ccw; - var dx = r * Math.cos(a0), - dy = r * Math.sin(a0), - x0 = x + dx, - y0 = y + dy, - cw = 1 ^ ccw, - da = ccw ? a0 - a1 : a1 - a0; - - // Is the radius negative? Error. - if (r < 0) throw new Error("negative radius: " + r); - - // Is this path empty? Move to (x0,y0). - if (this._x1 === null) { - this._ += "M" + x0 + "," + y0; - } - - // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). - else if (Math.abs(this._x1 - x0) > epsilon$1 || Math.abs(this._y1 - y0) > epsilon$1) { - this._ += "L" + x0 + "," + y0; - } - - // Is this arc empty? We’re done. - if (!r) return; - - // Does the angle go the wrong way? Flip the direction. - if (da < 0) da = da % tau$2 + tau$2; - - // Is this a complete circle? Draw two arcs to complete the circle. - if (da > tauEpsilon) { - this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); - } - - // Is this arc non-empty? Draw an arc! - else if (da > epsilon$1) { - this._ += "A" + r + "," + r + ",0," + (+(da >= pi$2)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); - } - }, - rect: function(x, y, w, h) { - this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; - }, - toString: function() { - return this._; - } -}; - -function defaultSource(d) { - return d.source; -} - -function defaultTarget(d) { - return d.target; -} - -function defaultRadius(d) { - return d.radius; -} - -function defaultStartAngle(d) { - return d.startAngle; -} - -function defaultEndAngle(d) { - return d.endAngle; -} - -function ribbon() { - var source = defaultSource, - target = defaultTarget, - radius = defaultRadius, - startAngle = defaultStartAngle, - endAngle = defaultEndAngle, - context = null; - - function ribbon() { - var buffer, - argv = slice$2.call(arguments), - s = source.apply(this, argv), - t = target.apply(this, argv), - sr = +radius.apply(this, (argv[0] = s, argv)), - sa0 = startAngle.apply(this, argv) - halfPi$1, - sa1 = endAngle.apply(this, argv) - halfPi$1, - sx0 = sr * cos(sa0), - sy0 = sr * sin(sa0), - tr = +radius.apply(this, (argv[0] = t, argv)), - ta0 = startAngle.apply(this, argv) - halfPi$1, - ta1 = endAngle.apply(this, argv) - halfPi$1; - - if (!context) context = buffer = path(); - - context.moveTo(sx0, sy0); - context.arc(0, 0, sr, sa0, sa1); - if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr? - context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0)); - context.arc(0, 0, tr, ta0, ta1); - } - context.quadraticCurveTo(0, 0, sx0, sy0); - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - ribbon.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$5(+_), ribbon) : radius; - }; - - ribbon.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : startAngle; - }; - - ribbon.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$5(+_), ribbon) : endAngle; - }; - - ribbon.source = function(_) { - return arguments.length ? (source = _, ribbon) : source; - }; - - ribbon.target = function(_) { - return arguments.length ? (target = _, ribbon) : target; - }; - - ribbon.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), ribbon) : context; - }; - - return ribbon; -} - -var prefix = "$"; - -function Map() {} - -Map.prototype = map$1.prototype = { - constructor: Map, - has: function(key) { - return (prefix + key) in this; - }, - get: function(key) { - return this[prefix + key]; - }, - set: function(key, value) { - this[prefix + key] = value; - return this; - }, - remove: function(key) { - var property = prefix + key; - return property in this && delete this[property]; - }, - clear: function() { - for (var property in this) if (property[0] === prefix) delete this[property]; - }, - keys: function() { - var keys = []; - for (var property in this) if (property[0] === prefix) keys.push(property.slice(1)); - return keys; - }, - values: function() { - var values = []; - for (var property in this) if (property[0] === prefix) values.push(this[property]); - return values; - }, - entries: function() { - var entries = []; - for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]}); - return entries; - }, - size: function() { - var size = 0; - for (var property in this) if (property[0] === prefix) ++size; - return size; - }, - empty: function() { - for (var property in this) if (property[0] === prefix) return false; - return true; - }, - each: function(f) { - for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this); - } -}; - -function map$1(object, f) { - var map = new Map; - - // Copy constructor. - if (object instanceof Map) object.each(function(value, key) { map.set(key, value); }); - - // Index array by numeric index or specified key function. - else if (Array.isArray(object)) { - var i = -1, - n = object.length, - o; - - if (f == null) while (++i < n) map.set(i, object[i]); - else while (++i < n) map.set(f(o = object[i], i, object), o); - } - - // Convert object to map. - else if (object) for (var key in object) map.set(key, object[key]); - - return map; -} - -function nest() { - var keys = [], - sortKeys = [], - sortValues, - rollup, - nest; - - function apply(array, depth, createResult, setResult) { - if (depth >= keys.length) { - if (sortValues != null) array.sort(sortValues); - return rollup != null ? rollup(array) : array; - } - - var i = -1, - n = array.length, - key = keys[depth++], - keyValue, - value, - valuesByKey = map$1(), - values, - result = createResult(); - - while (++i < n) { - if (values = valuesByKey.get(keyValue = key(value = array[i]) + "")) { - values.push(value); - } else { - valuesByKey.set(keyValue, [value]); - } - } - - valuesByKey.each(function(values, key) { - setResult(result, key, apply(values, depth, createResult, setResult)); - }); - - return result; - } - - function entries(map, depth) { - if (++depth > keys.length) return map; - var array, sortKey = sortKeys[depth - 1]; - if (rollup != null && depth >= keys.length) array = map.entries(); - else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); }); - return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array; - } - - return nest = { - object: function(array) { return apply(array, 0, createObject, setObject); }, - map: function(array) { return apply(array, 0, createMap, setMap); }, - entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); }, - key: function(d) { keys.push(d); return nest; }, - sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; }, - sortValues: function(order) { sortValues = order; return nest; }, - rollup: function(f) { rollup = f; return nest; } - }; -} - -function createObject() { - return {}; -} - -function setObject(object, key, value) { - object[key] = value; -} - -function createMap() { - return map$1(); -} - -function setMap(map, key, value) { - map.set(key, value); -} - -function Set() {} - -var proto = map$1.prototype; - -Set.prototype = set$2.prototype = { - constructor: Set, - has: proto.has, - add: function(value) { - value += ""; - this[prefix + value] = value; - return this; - }, - remove: proto.remove, - clear: proto.clear, - values: proto.keys, - size: proto.size, - empty: proto.empty, - each: proto.each -}; - -function set$2(object, f) { - var set = new Set; - - // Copy constructor. - if (object instanceof Set) object.each(function(value) { set.add(value); }); - - // Otherwise, assume it’s an array. - else if (object) { - var i = -1, n = object.length; - if (f == null) while (++i < n) set.add(object[i]); - else while (++i < n) set.add(f(object[i], i, object)); - } - - return set; -} - -function keys(map) { - var keys = []; - for (var key in map) keys.push(key); - return keys; -} - -function values(map) { - var values = []; - for (var key in map) values.push(map[key]); - return values; -} - -function entries(map) { - var entries = []; - for (var key in map) entries.push({key: key, value: map[key]}); - return entries; -} - -var array$2 = Array.prototype; - -var slice$3 = array$2.slice; - -function ascending$2(a, b) { - return a - b; -} - -function area(ring) { - var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1]; - while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1]; - return area; -} - -function constant$6(x) { - return function() { - return x; - }; -} - -function contains(ring, hole) { - var i = -1, n = hole.length, c; - while (++i < n) if (c = ringContains(ring, hole[i])) return c; - return 0; -} - -function ringContains(ring, point) { - var x = point[0], y = point[1], contains = -1; - for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) { - var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1]; - if (segmentContains(pi, pj, point)) return 0; - if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains; - } - return contains; -} - -function segmentContains(a, b, c) { - var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]); -} - -function collinear(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]); -} - -function within(p, q, r) { - return p <= q && q <= r || r <= q && q <= p; -} - -function noop$1() {} - -var cases = [ - [], - [[[1.0, 1.5], [0.5, 1.0]]], - [[[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [0.5, 1.0]]], - [[[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]], - [[[1.0, 0.5], [1.0, 1.5]]], - [[[1.0, 0.5], [0.5, 1.0]]], - [[[0.5, 1.0], [1.0, 0.5]]], - [[[1.0, 1.5], [1.0, 0.5]]], - [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]], - [[[1.5, 1.0], [1.0, 0.5]]], - [[[0.5, 1.0], [1.5, 1.0]]], - [[[1.0, 1.5], [1.5, 1.0]]], - [[[0.5, 1.0], [1.0, 1.5]]], - [] -]; - -function contours() { - var dx = 1, - dy = 1, - threshold = thresholdSturges, - smooth = smoothLinear; - - function contours(values) { - var tz = threshold(values); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var domain = extent(values), start = domain[0], stop = domain[1]; - tz = tickStep(start, stop, tz); - tz = sequence(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz); - } else { - tz = tz.slice().sort(ascending$2); - } - - return tz.map(function(value) { - return contour(values, value); - }); - } - - // Accumulate, smooth contour rings, assign holes to exterior rings. - // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js - function contour(values, value) { - var polygons = [], - holes = []; - - isorings(values, value, function(ring) { - smooth(ring, values, value); - if (area(ring) > 0) polygons.push([ring]); - else holes.push(ring); - }); - - holes.forEach(function(hole) { - for (var i = 0, n = polygons.length, polygon; i < n; ++i) { - if (contains((polygon = polygons[i])[0], hole) !== -1) { - polygon.push(hole); - return; - } - } - }); - - return { - type: "MultiPolygon", - value: value, - coordinates: polygons - }; - } - - // Marching squares with isolines stitched into rings. - // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js - function isorings(values, value, callback) { - var fragmentByStart = new Array, - fragmentByEnd = new Array, - x, y, t0, t1, t2, t3; - - // Special case for the first row (y = -1, t2 = t3 = 0). - x = y = -1; - t1 = values[0] >= value; - cases[t1 << 1].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[x + 1] >= value; - cases[t0 | t1 << 1].forEach(stitch); - } - cases[t1 << 0].forEach(stitch); - - // General case for the intermediate rows. - while (++y < dy - 1) { - x = -1; - t1 = values[y * dx + dx] >= value; - t2 = values[y * dx] >= value; - cases[t1 << 1 | t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t0 = t1, t1 = values[y * dx + dx + x + 1] >= value; - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t1 | t2 << 3].forEach(stitch); - } - - // Special case for the last row (y = dy - 1, t0 = t1 = 0). - x = -1; - t2 = values[y * dx] >= value; - cases[t2 << 2].forEach(stitch); - while (++x < dx - 1) { - t3 = t2, t2 = values[y * dx + x + 1] >= value; - cases[t2 << 2 | t3 << 3].forEach(stitch); - } - cases[t2 << 3].forEach(stitch); - - function stitch(line) { - var start = [line[0][0] + x, line[0][1] + y], - end = [line[1][0] + x, line[1][1] + y], - startIndex = index(start), - endIndex = index(end), - f, g; - if (f = fragmentByEnd[startIndex]) { - if (g = fragmentByStart[endIndex]) { - delete fragmentByEnd[f.end]; - delete fragmentByStart[g.start]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)}; - } - } else { - delete fragmentByEnd[f.end]; - f.ring.push(end); - fragmentByEnd[f.end = endIndex] = f; - } - } else if (f = fragmentByStart[endIndex]) { - if (g = fragmentByEnd[startIndex]) { - delete fragmentByStart[f.start]; - delete fragmentByEnd[g.end]; - if (f === g) { - f.ring.push(end); - callback(f.ring); - } else { - fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)}; - } - } else { - delete fragmentByStart[f.start]; - f.ring.unshift(start); - fragmentByStart[f.start = startIndex] = f; - } - } else { - fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]}; - } - } - } - - function index(point) { - return point[0] * 2 + point[1] * (dx + 1) * 4; - } - - function smoothLinear(ring, values, value) { - ring.forEach(function(point) { - var x = point[0], - y = point[1], - xt = x | 0, - yt = y | 0, - v0, - v1 = values[yt * dx + xt]; - if (x > 0 && x < dx && xt === x) { - v0 = values[yt * dx + xt - 1]; - point[0] = x + (value - v0) / (v1 - v0) - 0.5; - } - if (y > 0 && y < dy && yt === y) { - v0 = values[(yt - 1) * dx + xt]; - point[1] = y + (value - v0) / (v1 - v0) - 0.5; - } - }); - } - - contours.contour = contour; - - contours.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 > 0) || !(_1 > 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, contours; - }; - - contours.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), contours) : threshold; - }; - - contours.smooth = function(_) { - return arguments.length ? (smooth = _ ? smoothLinear : noop$1, contours) : smooth === smoothLinear; - }; - - return contours; -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurX(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var j = 0; j < m; ++j) { - for (var i = 0, sr = 0; i < n + r; ++i) { - if (i < n) { - sr += source.data[i + j * n]; - } - if (i >= r) { - if (i >= w) { - sr -= source.data[i - w + j * n]; - } - target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w); - } - } - } -} - -// TODO Optimize edge cases. -// TODO Optimize index calculation. -// TODO Optimize arguments. -function blurY(source, target, r) { - var n = source.width, - m = source.height, - w = (r << 1) + 1; - for (var i = 0; i < n; ++i) { - for (var j = 0, sr = 0; j < m + r; ++j) { - if (j < m) { - sr += source.data[i + j * n]; - } - if (j >= r) { - if (j >= w) { - sr -= source.data[i + (j - w) * n]; - } - target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w); - } - } - } -} - -function defaultX(d) { - return d[0]; -} - -function defaultY(d) { - return d[1]; -} - -function defaultWeight() { - return 1; -} - -function density() { - var x = defaultX, - y = defaultY, - weight = defaultWeight, - dx = 960, - dy = 500, - r = 20, // blur radius - k = 2, // log2(grid cell size) - o = r * 3, // grid offset, to pad for blur - n = (dx + o * 2) >> k, // grid width - m = (dy + o * 2) >> k, // grid height - threshold = constant$6(20); - - function density(data) { - var values0 = new Float32Array(n * m), - values1 = new Float32Array(n * m); - - data.forEach(function(d, i, data) { - var xi = (+x(d, i, data) + o) >> k, - yi = (+y(d, i, data) + o) >> k, - wi = +weight(d, i, data); - if (xi >= 0 && xi < n && yi >= 0 && yi < m) { - values0[xi + yi * n] += wi; - } - }); - - // TODO Optimize. - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k); - blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k); - - var tz = threshold(values0); - - // Convert number of thresholds into uniform thresholds. - if (!Array.isArray(tz)) { - var stop = max(values0); - tz = tickStep(0, stop, tz); - tz = sequence(0, Math.floor(stop / tz) * tz, tz); - tz.shift(); - } - - return contours() - .thresholds(tz) - .size([n, m]) - (values0) - .map(transform); - } - - function transform(geometry) { - geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel. - geometry.coordinates.forEach(transformPolygon); - return geometry; - } - - function transformPolygon(coordinates) { - coordinates.forEach(transformRing); - } - - function transformRing(coordinates) { - coordinates.forEach(transformPoint); - } - - // TODO Optimize. - function transformPoint(coordinates) { - coordinates[0] = coordinates[0] * Math.pow(2, k) - o; - coordinates[1] = coordinates[1] * Math.pow(2, k) - o; - } - - function resize() { - o = r * 3; - n = (dx + o * 2) >> k; - m = (dy + o * 2) >> k; - return density; - } - - density.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$6(+_), density) : x; - }; - - density.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$6(+_), density) : y; - }; - - density.weight = function(_) { - return arguments.length ? (weight = typeof _ === "function" ? _ : constant$6(+_), density) : weight; - }; - - density.size = function(_) { - if (!arguments.length) return [dx, dy]; - var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]); - if (!(_0 >= 0) && !(_0 >= 0)) throw new Error("invalid size"); - return dx = _0, dy = _1, resize(); - }; - - density.cellSize = function(_) { - if (!arguments.length) return 1 << k; - if (!((_ = +_) >= 1)) throw new Error("invalid cell size"); - return k = Math.floor(Math.log(_) / Math.LN2), resize(); - }; - - density.thresholds = function(_) { - return arguments.length ? (threshold = typeof _ === "function" ? _ : Array.isArray(_) ? constant$6(slice$3.call(_)) : constant$6(_), density) : threshold; - }; - - density.bandwidth = function(_) { - if (!arguments.length) return Math.sqrt(r * (r + 1)); - if (!((_ = +_) >= 0)) throw new Error("invalid bandwidth"); - return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize(); - }; - - return density; -} - -var EOL = {}, - EOF = {}, - QUOTE = 34, - NEWLINE = 10, - RETURN = 13; - -function objectConverter(columns) { - return new Function("d", "return {" + columns.map(function(name, i) { - return JSON.stringify(name) + ": d[" + i + "] || \"\""; - }).join(",") + "}"); -} - -function customConverter(columns, f) { - var object = objectConverter(columns); - return function(row, i) { - return f(object(row), i, columns); - }; -} - -// Compute unique columns in order of discovery. -function inferColumns(rows) { - var columnSet = Object.create(null), - columns = []; - - rows.forEach(function(row) { - for (var column in row) { - if (!(column in columnSet)) { - columns.push(columnSet[column] = column); - } - } - }); - - return columns; -} - -function pad(value, width) { - var s = value + "", length = s.length; - return length < width ? new Array(width - length + 1).join(0) + s : s; -} - -function formatYear(year) { - return year < 0 ? "-" + pad(-year, 6) - : year > 9999 ? "+" + pad(year, 6) - : pad(year, 4); -} - -function formatDate(date) { - var hours = date.getUTCHours(), - minutes = date.getUTCMinutes(), - seconds = date.getUTCSeconds(), - milliseconds = date.getUTCMilliseconds(); - return isNaN(date) ? "Invalid Date" - : formatYear(date.getUTCFullYear()) + "-" + pad(date.getUTCMonth() + 1, 2) + "-" + pad(date.getUTCDate(), 2) - + (milliseconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "." + pad(milliseconds, 3) + "Z" - : seconds ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + ":" + pad(seconds, 2) + "Z" - : minutes || hours ? "T" + pad(hours, 2) + ":" + pad(minutes, 2) + "Z" - : ""); -} - -function dsvFormat(delimiter) { - var reFormat = new RegExp("[\"" + delimiter + "\n\r]"), - DELIMITER = delimiter.charCodeAt(0); - - function parse(text, f) { - var convert, columns, rows = parseRows(text, function(row, i) { - if (convert) return convert(row, i - 1); - columns = row, convert = f ? customConverter(row, f) : objectConverter(row); - }); - rows.columns = columns || []; - return rows; - } - - function parseRows(text, f) { - var rows = [], // output rows - N = text.length, - I = 0, // current character index - n = 0, // current line number - t, // current token - eof = N <= 0, // current token followed by EOF? - eol = false; // current token followed by EOL? - - // Strip the trailing newline. - if (text.charCodeAt(N - 1) === NEWLINE) --N; - if (text.charCodeAt(N - 1) === RETURN) --N; - - function token() { - if (eof) return EOF; - if (eol) return eol = false, EOL; - - // Unescape quotes. - var i, j = I, c; - if (text.charCodeAt(j) === QUOTE) { - while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE); - if ((i = I) >= N) eof = true; - else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - return text.slice(j + 1, i - 1).replace(/""/g, "\""); - } - - // Find next delimiter or newline. - while (I < N) { - if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true; - else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; } - else if (c !== DELIMITER) continue; - return text.slice(j, i); - } - - // Return last token before EOF. - return eof = true, text.slice(j, N); - } - - while ((t = token()) !== EOF) { - var row = []; - while (t !== EOL && t !== EOF) row.push(t), t = token(); - if (f && (row = f(row, n++)) == null) continue; - rows.push(row); - } - - return rows; - } - - function preformatBody(rows, columns) { - return rows.map(function(row) { - return columns.map(function(column) { - return formatValue(row[column]); - }).join(delimiter); - }); - } - - function format(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join("\n"); - } - - function formatBody(rows, columns) { - if (columns == null) columns = inferColumns(rows); - return preformatBody(rows, columns).join("\n"); - } - - function formatRows(rows) { - return rows.map(formatRow).join("\n"); - } - - function formatRow(row) { - return row.map(formatValue).join(delimiter); - } - - function formatValue(value) { - return value == null ? "" - : value instanceof Date ? formatDate(value) - : reFormat.test(value += "") ? "\"" + value.replace(/"/g, "\"\"") + "\"" - : value; - } - - return { - parse: parse, - parseRows: parseRows, - format: format, - formatBody: formatBody, - formatRows: formatRows, - formatRow: formatRow, - formatValue: formatValue - }; -} - -var csv = dsvFormat(","); - -var csvParse = csv.parse; -var csvParseRows = csv.parseRows; -var csvFormat = csv.format; -var csvFormatBody = csv.formatBody; -var csvFormatRows = csv.formatRows; -var csvFormatRow = csv.formatRow; -var csvFormatValue = csv.formatValue; - -var tsv = dsvFormat("\t"); - -var tsvParse = tsv.parse; -var tsvParseRows = tsv.parseRows; -var tsvFormat = tsv.format; -var tsvFormatBody = tsv.formatBody; -var tsvFormatRows = tsv.formatRows; -var tsvFormatRow = tsv.formatRow; -var tsvFormatValue = tsv.formatValue; - -function autoType(object) { - for (var key in object) { - var value = object[key].trim(), number, m; - if (!value) value = null; - else if (value === "true") value = true; - else if (value === "false") value = false; - else if (value === "NaN") value = NaN; - else if (!isNaN(number = +value)) value = number; - else if (m = value.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)) { - if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, "/").replace(/T/, " "); - value = new Date(value); - } - else continue; - object[key] = value; - } - return object; -} - -// https://github.com/d3/d3-dsv/issues/45 -var fixtz = new Date("2019-01-01T00:00").getHours() || new Date("2019-07-01T00:00").getHours(); - -function responseBlob(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.blob(); -} - -function blob(input, init) { - return fetch(input, init).then(responseBlob); -} - -function responseArrayBuffer(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.arrayBuffer(); -} - -function buffer(input, init) { - return fetch(input, init).then(responseArrayBuffer); -} - -function responseText(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.text(); -} - -function text(input, init) { - return fetch(input, init).then(responseText); -} - -function dsvParse(parse) { - return function(input, init, row) { - if (arguments.length === 2 && typeof init === "function") row = init, init = undefined; - return text(input, init).then(function(response) { - return parse(response, row); - }); - }; -} - -function dsv(delimiter, input, init, row) { - if (arguments.length === 3 && typeof init === "function") row = init, init = undefined; - var format = dsvFormat(delimiter); - return text(input, init).then(function(response) { - return format.parse(response, row); - }); -} - -var csv$1 = dsvParse(csvParse); -var tsv$1 = dsvParse(tsvParse); - -function image(input, init) { - return new Promise(function(resolve, reject) { - var image = new Image; - for (var key in init) image[key] = init[key]; - image.onerror = reject; - image.onload = function() { resolve(image); }; - image.src = input; - }); -} - -function responseJson(response) { - if (!response.ok) throw new Error(response.status + " " + response.statusText); - return response.json(); -} - -function json(input, init) { - return fetch(input, init).then(responseJson); -} - -function parser(type) { - return function(input, init) { - return text(input, init).then(function(text) { - return (new DOMParser).parseFromString(text, type); - }); - }; -} - -var xml = parser("application/xml"); - -var html = parser("text/html"); - -var svg = parser("image/svg+xml"); - -function center$1(x, y) { - var nodes; - - if (x == null) x = 0; - if (y == null) y = 0; - - function force() { - var i, - n = nodes.length, - node, - sx = 0, - sy = 0; - - for (i = 0; i < n; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - - for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - - force.initialize = function(_) { - nodes = _; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function constant$7(x) { - return function() { - return x; - }; -} - -function jiggle() { - return (Math.random() - 0.5) * 1e-6; -} - -function tree_add(d) { - var x = +this._x.call(null, d), - y = +this._y.call(null, d); - return add(this.cover(x, y), x, y, d); -} - -function add(tree, x, y, d) { - if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points - - var parent, - node = tree._root, - leaf = {data: d}, - x0 = tree._x0, - y0 = tree._y0, - x1 = tree._x1, - y1 = tree._y1, - xm, - ym, - xp, - yp, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return tree._root = leaf, tree; - - // Find the existing leaf for the new point, or add it. - while (node.length) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; - } - - // Is the new point is exactly coincident with the existing point? - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - - // Otherwise, split the leaf node until the old and new point are separated. - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); - return parent[j] = node, parent[i] = leaf, tree; -} - -function addAll(data) { - var d, i, n = data.length, - x, - y, - xz = new Array(n), - yz = new Array(n), - x0 = Infinity, - y0 = Infinity, - x1 = -Infinity, - y1 = -Infinity; - - // Compute the points and their extent. - for (i = 0; i < n; ++i) { - if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; - xz[i] = x; - yz[i] = y; - if (x < x0) x0 = x; - if (x > x1) x1 = x; - if (y < y0) y0 = y; - if (y > y1) y1 = y; - } - - // If there were no (valid) points, abort. - if (x0 > x1 || y0 > y1) return this; - - // Expand the tree to cover the new points. - this.cover(x0, y0).cover(x1, y1); - - // Add the new points. - for (i = 0; i < n; ++i) { - add(this, xz[i], yz[i], data[i]); - } - - return this; -} - -function tree_cover(x, y) { - if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points - - var x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1; - - // If the quadtree has no extent, initialize them. - // Integer extent are necessary so that if we later double the extent, - // the existing quadrant boundaries don’t change due to floating point error! - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x)) + 1; - y1 = (y0 = Math.floor(y)) + 1; - } - - // Otherwise, double repeatedly to cover. - else { - var z = x1 - x0, - node = this._root, - parent, - i; - - while (x0 > x || x >= x1 || y0 > y || y >= y1) { - i = (y < y0) << 1 | (x < x0); - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: x1 = x0 + z, y1 = y0 + z; break; - case 1: x0 = x1 - z, y1 = y0 + z; break; - case 2: x1 = x0 + z, y0 = y1 - z; break; - case 3: x0 = x1 - z, y0 = y1 - z; break; - } - } - - if (this._root && this._root.length) this._root = node; - } - - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -function tree_data() { - var data = []; - this.visit(function(node) { - if (!node.length) do data.push(node.data); while (node = node.next) - }); - return data; -} - -function tree_extent(_) { - return arguments.length - ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) - : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -function Quad(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -function tree_find(x, y, radius) { - var data, - x0 = this._x0, - y0 = this._y0, - x1, - y1, - x2, - y2, - x3 = this._x1, - y3 = this._y1, - quads = [], - node = this._root, - q, - i; - - if (node) quads.push(new Quad(node, x0, y0, x3, y3)); - if (radius == null) radius = Infinity; - else { - x0 = x - radius, y0 = y - radius; - x3 = x + radius, y3 = y + radius; - radius *= radius; - } - - while (q = quads.pop()) { - - // Stop searching if this quadrant can’t contain a closer node. - if (!(node = q.node) - || (x1 = q.x0) > x3 - || (y1 = q.y0) > y3 - || (x2 = q.x1) < x0 - || (y2 = q.y1) < y0) continue; - - // Bisect the current quadrant. - if (node.length) { - var xm = (x1 + x2) / 2, - ym = (y1 + y2) / 2; - - quads.push( - new Quad(node[3], xm, ym, x2, y2), - new Quad(node[2], x1, ym, xm, y2), - new Quad(node[1], xm, y1, x2, ym), - new Quad(node[0], x1, y1, xm, ym) - ); - - // Visit the closest quadrant first. - if (i = (y >= ym) << 1 | (x >= xm)) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } - - // Visit this point. (Visiting coincident points isn’t necessary!) - else { - var dx = x - +this._x.call(null, node.data), - dy = y - +this._y.call(null, node.data), - d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x - d, y0 = y - d; - x3 = x + d, y3 = y + d; - data = node.data; - } - } - } - - return data; -} - -function tree_remove(d) { - if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points - - var parent, - node = this._root, - retainer, - previous, - next, - x0 = this._x0, - y0 = this._y0, - x1 = this._x1, - y1 = this._y1, - x, - y, - xm, - ym, - right, - bottom, - i, - j; - - // If the tree is empty, initialize the root as a leaf. - if (!node) return this; - - // Find the leaf node for the point. - // While descending, also retain the deepest parent with a non-removed sibling. - if (node.length) while (true) { - if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; - if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) return this; - if (!node.length) break; - if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; - } - - // Find the point to remove. - while (node.data !== d) if (!(previous = node, node = node.next)) return this; - if (next = node.next) delete node.next; - - // If there are multiple coincident points, remove just the point. - if (previous) return (next ? previous.next = next : delete previous.next), this; - - // If this is the root point, remove it. - if (!parent) return this._root = next, this; - - // Remove this leaf. - next ? parent[i] = next : delete parent[i]; - - // If the parent now contains exactly one leaf, collapse superfluous parents. - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) - && node === (parent[3] || parent[2] || parent[1] || parent[0]) - && !node.length) { - if (retainer) retainer[j] = node; - else this._root = node; - } - - return this; -} - -function removeAll(data) { - for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); - return this; -} - -function tree_root() { - return this._root; -} - -function tree_size() { - var size = 0; - this.visit(function(node) { - if (!node.length) do ++size; while (node = node.next) - }); - return size; -} - -function tree_visit(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - } - } - return this; -} - -function tree_visitAfter(callback) { - var quads = [], next = [], q; - if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); - if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); - if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); - if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -function defaultX$1(d) { - return d[0]; -} - -function tree_x(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -function defaultY$1(d) { - return d[1]; -} - -function tree_y(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -function quadtree(nodes, x, y) { - var tree = new Quadtree(x == null ? defaultX$1 : x, y == null ? defaultY$1 : y, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} - -function Quadtree(x, y, x0, y0, x1, y1) { - this._x = x; - this._y = y; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = undefined; -} - -function leaf_copy(leaf) { - var copy = {data: leaf.data}, next = copy; - while (leaf = leaf.next) next = next.next = {data: leaf.data}; - return copy; -} - -var treeProto = quadtree.prototype = Quadtree.prototype; - -treeProto.copy = function() { - var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), - node = this._root, - nodes, - child; - - if (!node) return copy; - - if (!node.length) return copy._root = leaf_copy(node), copy; - - nodes = [{source: node, target: copy._root = new Array(4)}]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); - else node.target[i] = leaf_copy(child); - } - } - } - - return copy; -}; - -treeProto.add = tree_add; -treeProto.addAll = addAll; -treeProto.cover = tree_cover; -treeProto.data = tree_data; -treeProto.extent = tree_extent; -treeProto.find = tree_find; -treeProto.remove = tree_remove; -treeProto.removeAll = removeAll; -treeProto.root = tree_root; -treeProto.size = tree_size; -treeProto.visit = tree_visit; -treeProto.visitAfter = tree_visitAfter; -treeProto.x = tree_x; -treeProto.y = tree_y; - -function x(d) { - return d.x + d.vx; -} - -function y(d) { - return d.y + d.vy; -} - -function collide(radius) { - var nodes, - radii, - strength = 1, - iterations = 1; - - if (typeof radius !== "function") radius = constant$7(radius == null ? 1 : +radius); - - function force() { - var i, n = nodes.length, - tree, - node, - xi, - yi, - ri, - ri2; - - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x, y).visitAfter(prepare); - for (i = 0; i < n; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x = xi - data.x - data.vx, - y = yi - data.y - data.vy, - l = x * x + y * y; - if (l < r * r) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - l = (r - (l = Math.sqrt(l))) / l * strength; - node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y *= l) * r; - data.vx -= x * (r = 1 - r); - data.vy -= y * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - - function prepare(quad) { - if (quad.data) return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - radii = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - return force; -} - -function index(d) { - return d.index; -} - -function find(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) throw new Error("missing: " + nodeId); - return node; -} - -function link(links) { - var id = index, - strength = defaultStrength, - strengths, - distance = constant$7(30), - distances, - nodes, - count, - bias, - iterations = 1; - - if (links == null) links = []; - - function defaultStrength(link) { - return 1 / Math.min(count[link.source.index], count[link.target.index]); - } - - function force(alpha) { - for (var k = 0, n = links.length; k < iterations; ++k) { - for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) { - link = links[i], source = link.source, target = link.target; - x = target.x + target.vx - source.x - source.vx || jiggle(); - y = target.y + target.vy - source.y - source.vy || jiggle(); - l = Math.sqrt(x * x + y * y); - l = (l - distances[i]) / l * alpha * strengths[i]; - x *= l, y *= l; - target.vx -= x * (b = bias[i]); - target.vy -= y * b; - source.vx += x * (b = 1 - b); - source.vy += y * b; - } - } - } - - function initialize() { - if (!nodes) return; - - var i, - n = nodes.length, - m = links.length, - nodeById = map$1(nodes, id), - link; - - for (i = 0, count = new Array(n); i < m; ++i) { - link = links[i], link.index = i; - if (typeof link.source !== "object") link.source = find(nodeById, link.source); - if (typeof link.target !== "object") link.target = find(nodeById, link.target); - count[link.source.index] = (count[link.source.index] || 0) + 1; - count[link.target.index] = (count[link.target.index] || 0) + 1; - } - - for (i = 0, bias = new Array(m); i < m; ++i) { - link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]); - } - - strengths = new Array(m), initializeStrength(); - distances = new Array(m), initializeDistance(); - } - - function initializeStrength() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - - function initializeDistance() { - if (!nodes) return; - - for (var i = 0, n = links.length; i < n; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - - force.id = function(_) { - return arguments.length ? (id = _, force) : id; - }; - - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initializeStrength(), force) : strength; - }; - - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant$7(+_), initializeDistance(), force) : distance; - }; - - return force; -} - -function x$1(d) { - return d.x; -} - -function y$1(d) { - return d.y; -} - -var initialRadius = 10, - initialAngle = Math.PI * (3 - Math.sqrt(5)); - -function simulation(nodes) { - var simulation, - alpha = 1, - alphaMin = 0.001, - alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), - alphaTarget = 0, - velocityDecay = 0.6, - forces = map$1(), - stepper = timer(step), - event = dispatch("tick", "end"); - - if (nodes == null) nodes = []; - - function step() { - tick(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - - function tick(iterations) { - var i, n = nodes.length, node; - - if (iterations === undefined) iterations = 1; - - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - - forces.each(function (force) { - force(alpha); - }); - - for (i = 0; i < n; ++i) { - node = nodes[i]; - if (node.fx == null) node.x += node.vx *= velocityDecay; - else node.x = node.fx, node.vx = 0; - if (node.fy == null) node.y += node.vy *= velocityDecay; - else node.y = node.fy, node.vy = 0; - } - } - - return simulation; - } - - function initializeNodes() { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) node.x = node.fx; - if (node.fy != null) node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - - function initializeForce(force) { - if (force.initialize) force.initialize(nodes); - return force; - } - - initializeNodes(); - - return simulation = { - tick: tick, - - restart: function() { - return stepper.restart(step), simulation; - }, - - stop: function() { - return stepper.stop(), simulation; - }, - - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes; - }, - - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - - force: function(name, _) { - return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name); - }, - - find: function(x, y, radius) { - var i = 0, - n = nodes.length, - dx, - dy, - d2, - node, - closest; - - if (radius == null) radius = Infinity; - else radius *= radius; - - for (i = 0; i < n; ++i) { - node = nodes[i]; - dx = x - node.x; - dy = y - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) closest = node, radius = d2; - } - - return closest; - }, - - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -function manyBody() { - var nodes, - node, - alpha, - strength = constant$7(-30), - strengths, - distanceMin2 = 1, - distanceMax2 = Infinity, - theta2 = 0.81; - - function force(_) { - var i, n = nodes.length, tree = quadtree(nodes, x$1, y$1).visitAfter(accumulate); - for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply); - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length, node; - strengths = new Array(n); - for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes); - } - - function accumulate(quad) { - var strength = 0, q, c, weight = 0, x, y, i; - - // For internal nodes, accumulate forces from child quadrants. - if (quad.length) { - for (x = y = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c = Math.abs(q.value))) { - strength += q.value, weight += c, x += c * q.x, y += c * q.y; - } - } - quad.x = x / weight; - quad.y = y / weight; - } - - // For leaf nodes, accumulate forces from coincident quadrants. - else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do strength += strengths[q.data.index]; - while (q = q.next); - } - - quad.value = strength; - } - - function apply(quad, x1, _, x2) { - if (!quad.value) return true; - - var x = quad.x - node.x, - y = quad.y - node.y, - w = x2 - x1, - l = x * x + y * y; - - // Apply the Barnes-Hut approximation if possible. - // Limit forces for very close nodes; randomize direction if coincident. - if (w * w / theta2 < l) { - if (l < distanceMax2) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - node.vx += x * quad.value * alpha / l; - node.vy += y * quad.value * alpha / l; - } - return true; - } - - // Otherwise, process points directly. - else if (quad.length || l >= distanceMax2) return; - - // Limit forces for very close nodes; randomize direction if coincident. - if (quad.data !== node || quad.next) { - if (x === 0) x = jiggle(), l += x * x; - if (y === 0) y = jiggle(), l += y * y; - if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l); - } - - do if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l; - node.vx += x * w; - node.vy += y * w; - } while (quad = quad.next); - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - - return force; -} - -function radial(radius, x, y) { - var nodes, - strength = constant$7(0.1), - strengths, - radiuses; - - if (typeof radius !== "function") radius = constant$7(+radius); - if (x == null) x = 0; - if (y == null) y = 0; - - function force(alpha) { - for (var i = 0, n = nodes.length; i < n; ++i) { - var node = nodes[i], - dx = node.x - x || 1e-6, - dy = node.y - y || 1e-6, - r = Math.sqrt(dx * dx + dy * dy), - k = (radiuses[i] - r) * strengths[i] * alpha / r; - node.vx += dx * k; - node.vy += dy * k; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - radiuses = new Array(n); - for (i = 0; i < n; ++i) { - radiuses[i] = +radius(nodes[i], i, nodes); - strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _, initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : radius; - }; - - force.x = function(_) { - return arguments.length ? (x = +_, force) : x; - }; - - force.y = function(_) { - return arguments.length ? (y = +_, force) : y; - }; - - return force; -} - -function x$2(x) { - var strength = constant$7(0.1), - nodes, - strengths, - xz; - - if (typeof x !== "function") x = constant$7(x == null ? 0 : +x); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - xz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : x; - }; - - return force; -} - -function y$2(y) { - var strength = constant$7(0.1), - nodes, - strengths, - yz; - - if (typeof y !== "function") y = constant$7(y == null ? 0 : +y); - - function force(alpha) { - for (var i = 0, n = nodes.length, node; i < n; ++i) { - node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha; - } - } - - function initialize() { - if (!nodes) return; - var i, n = nodes.length; - strengths = new Array(n); - yz = new Array(n); - for (i = 0; i < n; ++i) { - strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes); - } - } - - force.initialize = function(_) { - nodes = _; - initialize(); - }; - - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : strength; - }; - - force.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$7(+_), initialize(), force) : y; - }; - - return force; -} - -// Computes the decimal coefficient and exponent of the specified number x with -// significant digits p, where x is positive and p is in [1, 21] or undefined. -// For example, formatDecimal(1.23) returns ["123", 0]. -function formatDecimal(x, p) { - if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf("e")) < 0) return null; // NaN, ±Infinity - var i, coefficient = x.slice(0, i); - - // The string returned by toExponential either has the form \d\.\d+e[-+]\d+ - // (e.g., 1.2e+3) or the form \de[-+]\d+ (e.g., 1e+3). - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x.slice(i + 1) - ]; -} - -function exponent$1(x) { - return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN; -} - -function formatGroup(grouping, thousands) { - return function(value, width) { - var i = value.length, - t = [], - j = 0, - g = grouping[0], - length = 0; - - while (i > 0 && g > 0) { - if (length + g + 1 > width) g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) break; - g = grouping[j = (j + 1) % grouping.length]; - } - - return t.reverse().join(thousands); - }; -} - -function formatNumerals(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// [[fill]align][sign][symbol][0][width][,][.precision][~][type] -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; - -function formatSpecifier(specifier) { - if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); - var match; - return new FormatSpecifier({ - fill: match[1], - align: match[2], - sign: match[3], - symbol: match[4], - zero: match[5], - width: match[6], - comma: match[7], - precision: match[8] && match[8].slice(1), - trim: match[9], - type: match[10] - }); -} - -formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof - -function FormatSpecifier(specifier) { - this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; - this.align = specifier.align === undefined ? ">" : specifier.align + ""; - this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === undefined ? undefined : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === undefined ? undefined : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === undefined ? "" : specifier.type + ""; -} - -FormatSpecifier.prototype.toString = function() { - return this.fill - + this.align - + this.sign - + this.symbol - + (this.zero ? "0" : "") - + (this.width === undefined ? "" : Math.max(1, this.width | 0)) - + (this.comma ? "," : "") - + (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) - + (this.trim ? "~" : "") - + this.type; -}; - -// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k. -function formatTrim(s) { - out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) { - switch (s[i]) { - case ".": i0 = i1 = i; break; - case "0": if (i0 === 0) i0 = i; i1 = i; break; - default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break; - } - } - return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s; -} - -var prefixExponent; - -function formatPrefixAuto(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1], - i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, - n = coefficient.length; - return i === n ? coefficient - : i > n ? coefficient + new Array(i - n + 1).join("0") - : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) - : "0." + new Array(1 - i).join("0") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y! -} - -function formatRounded(x, p) { - var d = formatDecimal(x, p); - if (!d) return x + ""; - var coefficient = d[0], - exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient - : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) - : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -var formatTypes = { - "%": function(x, p) { return (x * 100).toFixed(p); }, - "b": function(x) { return Math.round(x).toString(2); }, - "c": function(x) { return x + ""; }, - "d": function(x) { return Math.round(x).toString(10); }, - "e": function(x, p) { return x.toExponential(p); }, - "f": function(x, p) { return x.toFixed(p); }, - "g": function(x, p) { return x.toPrecision(p); }, - "o": function(x) { return Math.round(x).toString(8); }, - "p": function(x, p) { return formatRounded(x * 100, p); }, - "r": formatRounded, - "s": formatPrefixAuto, - "X": function(x) { return Math.round(x).toString(16).toUpperCase(); }, - "x": function(x) { return Math.round(x).toString(16); } -}; - -function identity$3(x) { - return x; -} - -var map$2 = Array.prototype.map, - prefixes = ["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]; - -function formatLocale(locale) { - var group = locale.grouping === undefined || locale.thousands === undefined ? identity$3 : formatGroup(map$2.call(locale.grouping, Number), locale.thousands + ""), - currencyPrefix = locale.currency === undefined ? "" : locale.currency[0] + "", - currencySuffix = locale.currency === undefined ? "" : locale.currency[1] + "", - decimal = locale.decimal === undefined ? "." : locale.decimal + "", - numerals = locale.numerals === undefined ? identity$3 : formatNumerals(map$2.call(locale.numerals, String)), - percent = locale.percent === undefined ? "%" : locale.percent + "", - minus = locale.minus === undefined ? "-" : locale.minus + "", - nan = locale.nan === undefined ? "NaN" : locale.nan + ""; - - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - - var fill = specifier.fill, - align = specifier.align, - sign = specifier.sign, - symbol = specifier.symbol, - zero = specifier.zero, - width = specifier.width, - comma = specifier.comma, - precision = specifier.precision, - trim = specifier.trim, - type = specifier.type; - - // The "n" type is an alias for ",g". - if (type === "n") comma = true, type = "g"; - - // The "" type, and any invalid type, is an alias for ".12~g". - else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = "g"; - - // If zero fill is specified, padding goes after sign and before digits. - if (zero || (fill === "0" && align === "=")) zero = true, fill = "0", align = "="; - - // Compute the prefix and suffix. - // For SI-prefix, the suffix is lazily computed. - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type) ? "0" + type.toLowerCase() : "", - suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type) ? percent : ""; - - // What format function should we use? - // Is this an integer type? - // Can this type generate exponential notation? - var formatType = formatTypes[type], - maybeSuffix = /[defgprs%]/.test(type); - - // Set the default precision if not specified, - // or clamp the specified precision to the supported range. - // For significant precision, it must be in [1, 21]. - // For fixed precision, it must be in [0, 20]. - precision = precision === undefined ? 6 - : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision)) - : Math.max(0, Math.min(20, precision)); - - function format(value) { - var valuePrefix = prefix, - valueSuffix = suffix, - i, n, c; - - if (type === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - - // Determine the sign. -0 is not less than 0, but 1 / -0 is! - var valueNegative = value < 0 || 1 / value < 0; - - // Perform the initial formatting. - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - - // Trim insignificant zeros. - if (trim) value = formatTrim(value); - - // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign. - if (valueNegative && +value === 0 && sign !== "+") valueNegative = false; - - // Compute the prefix and suffix. - valuePrefix = (valueNegative ? (sign === "(" ? sign : minus) : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - - // Break the formatted value into the integer “value” part that can be - // grouped, and fractional or exponential “suffix” part that is not. - if (maybeSuffix) { - i = -1, n = value.length; - while (++i < n) { - if (c = value.charCodeAt(i), 48 > c || c > 57) { - valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - - // If the fill character is not "0", grouping is applied before padding. - if (comma && !zero) value = group(value, Infinity); - - // Compute the padding. - var length = valuePrefix.length + value.length + valueSuffix.length, - padding = length < width ? new Array(width - length + 1).join(fill) : ""; - - // If the fill character is "0", grouping is applied after padding. - if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - - // Reconstruct the final output based on the desired alignment. - switch (align) { - case "<": value = valuePrefix + value + valueSuffix + padding; break; - case "=": value = valuePrefix + padding + value + valueSuffix; break; - case "^": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break; - default: value = padding + valuePrefix + value + valueSuffix; break; - } - - return numerals(value); - } - - format.toString = function() { - return specifier + ""; - }; - - return format; - } - - function formatPrefix(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), - e = Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3, - k = Math.pow(10, -e), - prefix = prefixes[8 + e / 3]; - return function(value) { - return f(k * value) + prefix; - }; - } - - return { - format: newFormat, - formatPrefix: formatPrefix - }; -} - -var locale; - -defaultLocale({ - decimal: ".", - thousands: ",", - grouping: [3], - currency: ["$", ""], - minus: "-" -}); - -function defaultLocale(definition) { - locale = formatLocale(definition); - exports.format = locale.format; - exports.formatPrefix = locale.formatPrefix; - return locale; -} - -function precisionFixed(step) { - return Math.max(0, -exponent$1(Math.abs(step))); -} - -function precisionPrefix(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent$1(value) / 3))) * 3 - exponent$1(Math.abs(step))); -} - -function precisionRound(step, max) { - step = Math.abs(step), max = Math.abs(max) - step; - return Math.max(0, exponent$1(max) - exponent$1(step)) + 1; -} - -// Adds floating point numbers with twice the normal precision. -// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and -// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3) -// 305–363 (1997). -// Code adapted from GeographicLib by Charles F. F. Karney, -// http://geographiclib.sourceforge.net/ - -function adder() { - return new Adder; -} - -function Adder() { - this.reset(); -} - -Adder.prototype = { - constructor: Adder, - reset: function() { - this.s = // rounded value - this.t = 0; // exact error - }, - add: function(y) { - add$1(temp, y, this.t); - add$1(this, temp.s, this.s); - if (this.s) this.t += temp.t; - else this.s = temp.t; - }, - valueOf: function() { - return this.s; - } -}; - -var temp = new Adder; - -function add$1(adder, a, b) { - var x = adder.s = a + b, - bv = x - a, - av = x - bv; - adder.t = (a - av) + (b - bv); -} - -var epsilon$2 = 1e-6; -var epsilon2$1 = 1e-12; -var pi$3 = Math.PI; -var halfPi$2 = pi$3 / 2; -var quarterPi = pi$3 / 4; -var tau$3 = pi$3 * 2; - -var degrees$1 = 180 / pi$3; -var radians = pi$3 / 180; - -var abs = Math.abs; -var atan = Math.atan; -var atan2 = Math.atan2; -var cos$1 = Math.cos; -var ceil = Math.ceil; -var exp = Math.exp; -var log = Math.log; -var pow = Math.pow; -var sin$1 = Math.sin; -var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; }; -var sqrt = Math.sqrt; -var tan = Math.tan; - -function acos(x) { - return x > 1 ? 0 : x < -1 ? pi$3 : Math.acos(x); -} - -function asin(x) { - return x > 1 ? halfPi$2 : x < -1 ? -halfPi$2 : Math.asin(x); -} - -function haversin(x) { - return (x = sin$1(x / 2)) * x; -} - -function noop$2() {} - -function streamGeometry(geometry, stream) { - if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { - streamGeometryType[geometry.type](geometry, stream); - } -} - -var streamObjectType = { - Feature: function(object, stream) { - streamGeometry(object.geometry, stream); - }, - FeatureCollection: function(object, stream) { - var features = object.features, i = -1, n = features.length; - while (++i < n) streamGeometry(features[i].geometry, stream); - } -}; - -var streamGeometryType = { - Sphere: function(object, stream) { - stream.sphere(); - }, - Point: function(object, stream) { - object = object.coordinates; - stream.point(object[0], object[1], object[2]); - }, - MultiPoint: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); - }, - LineString: function(object, stream) { - streamLine(object.coordinates, stream, 0); - }, - MultiLineString: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamLine(coordinates[i], stream, 0); - }, - Polygon: function(object, stream) { - streamPolygon(object.coordinates, stream); - }, - MultiPolygon: function(object, stream) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) streamPolygon(coordinates[i], stream); - }, - GeometryCollection: function(object, stream) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) streamGeometry(geometries[i], stream); - } -}; - -function streamLine(coordinates, stream, closed) { - var i = -1, n = coordinates.length - closed, coordinate; - stream.lineStart(); - while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); - stream.lineEnd(); -} - -function streamPolygon(coordinates, stream) { - var i = -1, n = coordinates.length; - stream.polygonStart(); - while (++i < n) streamLine(coordinates[i], stream, 1); - stream.polygonEnd(); -} - -function geoStream(object, stream) { - if (object && streamObjectType.hasOwnProperty(object.type)) { - streamObjectType[object.type](object, stream); - } else { - streamGeometry(object, stream); - } -} - -var areaRingSum = adder(); - -var areaSum = adder(), - lambda00, - phi00, - lambda0, - cosPhi0, - sinPhi0; - -var areaStream = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaRingSum.reset(); - areaStream.lineStart = areaRingStart; - areaStream.lineEnd = areaRingEnd; - }, - polygonEnd: function() { - var areaRing = +areaRingSum; - areaSum.add(areaRing < 0 ? tau$3 + areaRing : areaRing); - this.lineStart = this.lineEnd = this.point = noop$2; - }, - sphere: function() { - areaSum.add(tau$3); - } -}; - -function areaRingStart() { - areaStream.point = areaPointFirst; -} - -function areaRingEnd() { - areaPoint(lambda00, phi00); -} - -function areaPointFirst(lambda, phi) { - areaStream.point = areaPoint; - lambda00 = lambda, phi00 = phi; - lambda *= radians, phi *= radians; - lambda0 = lambda, cosPhi0 = cos$1(phi = phi / 2 + quarterPi), sinPhi0 = sin$1(phi); -} - -function areaPoint(lambda, phi) { - lambda *= radians, phi *= radians; - phi = phi / 2 + quarterPi; // half the angular distance from south pole - - // Spherical excess E for a spherical triangle with vertices: south pole, - // previous point, current point. Uses a formula derived from Cagnoli’s - // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2). - var dLambda = lambda - lambda0, - sdLambda = dLambda >= 0 ? 1 : -1, - adLambda = sdLambda * dLambda, - cosPhi = cos$1(phi), - sinPhi = sin$1(phi), - k = sinPhi0 * sinPhi, - u = cosPhi0 * cosPhi + k * cos$1(adLambda), - v = k * sdLambda * sin$1(adLambda); - areaRingSum.add(atan2(v, u)); - - // Advance the previous points. - lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi; -} - -function area$1(object) { - areaSum.reset(); - geoStream(object, areaStream); - return areaSum * 2; -} - -function spherical(cartesian) { - return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])]; -} - -function cartesian(spherical) { - var lambda = spherical[0], phi = spherical[1], cosPhi = cos$1(phi); - return [cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)]; -} - -function cartesianDot(a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -} - -function cartesianCross(a, b) { - return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]; -} - -// TODO return a -function cartesianAddInPlace(a, b) { - a[0] += b[0], a[1] += b[1], a[2] += b[2]; -} - -function cartesianScale(vector, k) { - return [vector[0] * k, vector[1] * k, vector[2] * k]; -} - -// TODO return d -function cartesianNormalizeInPlace(d) { - var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); - d[0] /= l, d[1] /= l, d[2] /= l; -} - -var lambda0$1, phi0, lambda1, phi1, // bounds - lambda2, // previous lambda-coordinate - lambda00$1, phi00$1, // first point - p0, // previous 3D point - deltaSum = adder(), - ranges, - range; - -var boundsStream = { - point: boundsPoint, - lineStart: boundsLineStart, - lineEnd: boundsLineEnd, - polygonStart: function() { - boundsStream.point = boundsRingPoint; - boundsStream.lineStart = boundsRingStart; - boundsStream.lineEnd = boundsRingEnd; - deltaSum.reset(); - areaStream.polygonStart(); - }, - polygonEnd: function() { - areaStream.polygonEnd(); - boundsStream.point = boundsPoint; - boundsStream.lineStart = boundsLineStart; - boundsStream.lineEnd = boundsLineEnd; - if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - else if (deltaSum > epsilon$2) phi1 = 90; - else if (deltaSum < -epsilon$2) phi0 = -90; - range[0] = lambda0$1, range[1] = lambda1; - }, - sphere: function() { - lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90); - } -}; - -function boundsPoint(lambda, phi) { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; -} - -function linePoint(lambda, phi) { - var p = cartesian([lambda * radians, phi * radians]); - if (p0) { - var normal = cartesianCross(p0, p), - equatorial = [normal[1], -normal[0], 0], - inflection = cartesianCross(equatorial, normal); - cartesianNormalizeInPlace(inflection); - inflection = spherical(inflection); - var delta = lambda - lambda2, - sign = delta > 0 ? 1 : -1, - lambdai = inflection[0] * degrees$1 * sign, - phii, - antimeridian = abs(delta) > 180; - if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = inflection[1] * degrees$1; - if (phii > phi1) phi1 = phii; - } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) { - phii = -inflection[1] * degrees$1; - if (phii < phi0) phi0 = phii; - } else { - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - } - if (antimeridian) { - if (lambda < lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } else { - if (lambda1 >= lambda0$1) { - if (lambda < lambda0$1) lambda0$1 = lambda; - if (lambda > lambda1) lambda1 = lambda; - } else { - if (lambda > lambda2) { - if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda; - } else { - if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda; - } - } - } - } else { - ranges.push(range = [lambda0$1 = lambda, lambda1 = lambda]); - } - if (phi < phi0) phi0 = phi; - if (phi > phi1) phi1 = phi; - p0 = p, lambda2 = lambda; -} - -function boundsLineStart() { - boundsStream.point = linePoint; -} - -function boundsLineEnd() { - range[0] = lambda0$1, range[1] = lambda1; - boundsStream.point = boundsPoint; - p0 = null; -} - -function boundsRingPoint(lambda, phi) { - if (p0) { - var delta = lambda - lambda2; - deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta); - } else { - lambda00$1 = lambda, phi00$1 = phi; - } - areaStream.point(lambda, phi); - linePoint(lambda, phi); -} - -function boundsRingStart() { - areaStream.lineStart(); -} - -function boundsRingEnd() { - boundsRingPoint(lambda00$1, phi00$1); - areaStream.lineEnd(); - if (abs(deltaSum) > epsilon$2) lambda0$1 = -(lambda1 = 180); - range[0] = lambda0$1, range[1] = lambda1; - p0 = null; -} - -// Finds the left-right distance between two longitudes. -// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want -// the distance between ±180° to be 360°. -function angle(lambda0, lambda1) { - return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1; -} - -function rangeCompare(a, b) { - return a[0] - b[0]; -} - -function rangeContains(range, x) { - return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; -} - -function bounds(feature) { - var i, n, a, b, merged, deltaMax, delta; - - phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity); - ranges = []; - geoStream(feature, boundsStream); - - // First, sort ranges by their minimum longitudes. - if (n = ranges.length) { - ranges.sort(rangeCompare); - - // Then, merge any ranges that overlap. - for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) { - b = ranges[i]; - if (rangeContains(a, b[0]) || rangeContains(a, b[1])) { - if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; - if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; - } else { - merged.push(a = b); - } - } - - // Finally, find the largest gap between the merged ranges. - // The final bounding box will be the inverse of this gap. - for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) { - b = merged[i]; - if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1]; - } - } - - ranges = range = null; - - return lambda0$1 === Infinity || phi0 === Infinity - ? [[NaN, NaN], [NaN, NaN]] - : [[lambda0$1, phi0], [lambda1, phi1]]; -} - -var W0, W1, - X0, Y0, Z0, - X1, Y1, Z1, - X2, Y2, Z2, - lambda00$2, phi00$2, // first point - x0, y0, z0; // previous point - -var centroidStream = { - sphere: noop$2, - point: centroidPoint, - lineStart: centroidLineStart, - lineEnd: centroidLineEnd, - polygonStart: function() { - centroidStream.lineStart = centroidRingStart; - centroidStream.lineEnd = centroidRingEnd; - }, - polygonEnd: function() { - centroidStream.lineStart = centroidLineStart; - centroidStream.lineEnd = centroidLineEnd; - } -}; - -// Arithmetic mean of Cartesian vectors. -function centroidPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - centroidPointCartesian(cosPhi * cos$1(lambda), cosPhi * sin$1(lambda), sin$1(phi)); -} - -function centroidPointCartesian(x, y, z) { - ++W0; - X0 += (x - X0) / W0; - Y0 += (y - Y0) / W0; - Z0 += (z - Z0) / W0; -} - -function centroidLineStart() { - centroidStream.point = centroidLinePointFirst; -} - -function centroidLinePointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidStream.point = centroidLinePoint; - centroidPointCartesian(x0, y0, z0); -} - -function centroidLinePoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroidLineEnd() { - centroidStream.point = centroidPoint; -} - -// See J. E. Brock, The Inertia Tensor for a Spherical Triangle, -// J. Applied Mechanics 42, 239 (1975). -function centroidRingStart() { - centroidStream.point = centroidRingPointFirst; -} - -function centroidRingEnd() { - centroidRingPoint(lambda00$2, phi00$2); - centroidStream.point = centroidPoint; -} - -function centroidRingPointFirst(lambda, phi) { - lambda00$2 = lambda, phi00$2 = phi; - lambda *= radians, phi *= radians; - centroidStream.point = centroidRingPoint; - var cosPhi = cos$1(phi); - x0 = cosPhi * cos$1(lambda); - y0 = cosPhi * sin$1(lambda); - z0 = sin$1(phi); - centroidPointCartesian(x0, y0, z0); -} - -function centroidRingPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var cosPhi = cos$1(phi), - x = cosPhi * cos$1(lambda), - y = cosPhi * sin$1(lambda), - z = sin$1(phi), - cx = y0 * z - z0 * y, - cy = z0 * x - x0 * z, - cz = x0 * y - y0 * x, - m = sqrt(cx * cx + cy * cy + cz * cz), - w = asin(m), // line weight = angle - v = m && -w / m; // area weight multiplier - X2 += v * cx; - Y2 += v * cy; - Z2 += v * cz; - W1 += w; - X1 += w * (x0 + (x0 = x)); - Y1 += w * (y0 + (y0 = y)); - Z1 += w * (z0 + (z0 = z)); - centroidPointCartesian(x0, y0, z0); -} - -function centroid(object) { - W0 = W1 = - X0 = Y0 = Z0 = - X1 = Y1 = Z1 = - X2 = Y2 = Z2 = 0; - geoStream(object, centroidStream); - - var x = X2, - y = Y2, - z = Z2, - m = x * x + y * y + z * z; - - // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid. - if (m < epsilon2$1) { - x = X1, y = Y1, z = Z1; - // If the feature has zero length, fall back to arithmetic mean of point vectors. - if (W1 < epsilon$2) x = X0, y = Y0, z = Z0; - m = x * x + y * y + z * z; - // If the feature still has an undefined ccentroid, then return. - if (m < epsilon2$1) return [NaN, NaN]; - } - - return [atan2(y, x) * degrees$1, asin(z / sqrt(m)) * degrees$1]; -} - -function constant$8(x) { - return function() { - return x; - }; -} - -function compose(a, b) { - - function compose(x, y) { - return x = a(x, y), b(x[0], x[1]); - } - - if (a.invert && b.invert) compose.invert = function(x, y) { - return x = b.invert(x, y), x && a.invert(x[0], x[1]); - }; - - return compose; -} - -function rotationIdentity(lambda, phi) { - return [abs(lambda) > pi$3 ? lambda + Math.round(-lambda / tau$3) * tau$3 : lambda, phi]; -} - -rotationIdentity.invert = rotationIdentity; - -function rotateRadians(deltaLambda, deltaPhi, deltaGamma) { - return (deltaLambda %= tau$3) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma)) - : rotationLambda(deltaLambda)) - : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma) - : rotationIdentity); -} - -function forwardRotationLambda(deltaLambda) { - return function(lambda, phi) { - return lambda += deltaLambda, [lambda > pi$3 ? lambda - tau$3 : lambda < -pi$3 ? lambda + tau$3 : lambda, phi]; - }; -} - -function rotationLambda(deltaLambda) { - var rotation = forwardRotationLambda(deltaLambda); - rotation.invert = forwardRotationLambda(-deltaLambda); - return rotation; -} - -function rotationPhiGamma(deltaPhi, deltaGamma) { - var cosDeltaPhi = cos$1(deltaPhi), - sinDeltaPhi = sin$1(deltaPhi), - cosDeltaGamma = cos$1(deltaGamma), - sinDeltaGamma = sin$1(deltaGamma); - - function rotation(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaPhi + x * sinDeltaPhi; - return [ - atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi), - asin(k * cosDeltaGamma + y * sinDeltaGamma) - ]; - } - - rotation.invert = function(lambda, phi) { - var cosPhi = cos$1(phi), - x = cos$1(lambda) * cosPhi, - y = sin$1(lambda) * cosPhi, - z = sin$1(phi), - k = z * cosDeltaGamma - y * sinDeltaGamma; - return [ - atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi), - asin(k * cosDeltaPhi - x * sinDeltaPhi) - ]; - }; - - return rotation; -} - -function rotation(rotate) { - rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0); - - function forward(coordinates) { - coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - } - - forward.invert = function(coordinates) { - coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians); - return coordinates[0] *= degrees$1, coordinates[1] *= degrees$1, coordinates; - }; - - return forward; -} - -// Generates a circle centered at [0°, 0°], with a given radius and precision. -function circleStream(stream, radius, delta, direction, t0, t1) { - if (!delta) return; - var cosRadius = cos$1(radius), - sinRadius = sin$1(radius), - step = direction * delta; - if (t0 == null) { - t0 = radius + direction * tau$3; - t1 = radius - step / 2; - } else { - t0 = circleRadius(cosRadius, t0); - t1 = circleRadius(cosRadius, t1); - if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau$3; - } - for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { - point = spherical([cosRadius, -sinRadius * cos$1(t), -sinRadius * sin$1(t)]); - stream.point(point[0], point[1]); - } -} - -// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. -function circleRadius(cosRadius, point) { - point = cartesian(point), point[0] -= cosRadius; - cartesianNormalizeInPlace(point); - var radius = acos(-point[1]); - return ((-point[2] < 0 ? -radius : radius) + tau$3 - epsilon$2) % tau$3; -} - -function circle() { - var center = constant$8([0, 0]), - radius = constant$8(90), - precision = constant$8(6), - ring, - rotate, - stream = {point: point}; - - function point(x, y) { - ring.push(x = rotate(x, y)); - x[0] *= degrees$1, x[1] *= degrees$1; - } - - function circle() { - var c = center.apply(this, arguments), - r = radius.apply(this, arguments) * radians, - p = precision.apply(this, arguments) * radians; - ring = []; - rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert; - circleStream(stream, r, p, 1); - c = {type: "Polygon", coordinates: [ring]}; - ring = rotate = null; - return c; - } - - circle.center = function(_) { - return arguments.length ? (center = typeof _ === "function" ? _ : constant$8([+_[0], +_[1]]), circle) : center; - }; - - circle.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant$8(+_), circle) : radius; - }; - - circle.precision = function(_) { - return arguments.length ? (precision = typeof _ === "function" ? _ : constant$8(+_), circle) : precision; - }; - - return circle; -} - -function clipBuffer() { - var lines = [], - line; - return { - point: function(x, y) { - line.push([x, y]); - }, - lineStart: function() { - lines.push(line = []); - }, - lineEnd: noop$2, - rejoin: function() { - if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); - }, - result: function() { - var result = lines; - lines = []; - line = null; - return result; - } - }; -} - -function pointEqual(a, b) { - return abs(a[0] - b[0]) < epsilon$2 && abs(a[1] - b[1]) < epsilon$2; -} - -function Intersection(point, points, other, entry) { - this.x = point; - this.z = points; - this.o = other; // another intersection - this.e = entry; // is an entry? - this.v = false; // visited - this.n = this.p = null; // next & previous -} - -// A generalized polygon clipping algorithm: given a polygon that has been cut -// into its visible line segments, and rejoins the segments by interpolating -// along the clip edge. -function clipRejoin(segments, compareIntersection, startInside, interpolate, stream) { - var subject = [], - clip = [], - i, - n; - - segments.forEach(function(segment) { - if ((n = segment.length - 1) <= 0) return; - var n, p0 = segment[0], p1 = segment[n], x; - - // If the first and last points of a segment are coincident, then treat as a - // closed ring. TODO if all rings are closed, then the winding order of the - // exterior ring should be checked. - if (pointEqual(p0, p1)) { - stream.lineStart(); - for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]); - stream.lineEnd(); - return; - } - - subject.push(x = new Intersection(p0, segment, null, true)); - clip.push(x.o = new Intersection(p0, null, x, false)); - subject.push(x = new Intersection(p1, segment, null, false)); - clip.push(x.o = new Intersection(p1, null, x, true)); - }); - - if (!subject.length) return; - - clip.sort(compareIntersection); - link$1(subject); - link$1(clip); - - for (i = 0, n = clip.length; i < n; ++i) { - clip[i].e = startInside = !startInside; - } - - var start = subject[0], - points, - point; - - while (1) { - // Find first unvisited intersection. - var current = start, - isSubject = true; - while (current.v) if ((current = current.n) === start) return; - points = current.z; - stream.lineStart(); - do { - current.v = current.o.v = true; - if (current.e) { - if (isSubject) { - for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.n.x, 1, stream); - } - current = current.n; - } else { - if (isSubject) { - points = current.p.z; - for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]); - } else { - interpolate(current.x, current.p.x, -1, stream); - } - current = current.p; - } - current = current.o; - points = current.z; - isSubject = !isSubject; - } while (!current.v); - stream.lineEnd(); - } -} - -function link$1(array) { - if (!(n = array.length)) return; - var n, - i = 0, - a = array[0], - b; - while (++i < n) { - a.n = b = array[i]; - b.p = a; - a = b; - } - a.n = b = array[0]; - b.p = a; -} - -var sum$1 = adder(); - -function longitude(point) { - if (abs(point[0]) <= pi$3) - return point[0]; - else - return sign(point[0]) * ((abs(point[0]) + pi$3) % tau$3 - pi$3); -} - -function polygonContains(polygon, point) { - var lambda = longitude(point), - phi = point[1], - sinPhi = sin$1(phi), - normal = [sin$1(lambda), -cos$1(lambda), 0], - angle = 0, - winding = 0; - - sum$1.reset(); - - if (sinPhi === 1) phi = halfPi$2 + epsilon$2; - else if (sinPhi === -1) phi = -halfPi$2 - epsilon$2; - - for (var i = 0, n = polygon.length; i < n; ++i) { - if (!(m = (ring = polygon[i]).length)) continue; - var ring, - m, - point0 = ring[m - 1], - lambda0 = longitude(point0), - phi0 = point0[1] / 2 + quarterPi, - sinPhi0 = sin$1(phi0), - cosPhi0 = cos$1(phi0); - - for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) { - var point1 = ring[j], - lambda1 = longitude(point1), - phi1 = point1[1] / 2 + quarterPi, - sinPhi1 = sin$1(phi1), - cosPhi1 = cos$1(phi1), - delta = lambda1 - lambda0, - sign = delta >= 0 ? 1 : -1, - absDelta = sign * delta, - antimeridian = absDelta > pi$3, - k = sinPhi0 * sinPhi1; - - sum$1.add(atan2(k * sign * sin$1(absDelta), cosPhi0 * cosPhi1 + k * cos$1(absDelta))); - angle += antimeridian ? delta + sign * tau$3 : delta; - - // Are the longitudes either side of the point’s meridian (lambda), - // and are the latitudes smaller than the parallel (phi)? - if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) { - var arc = cartesianCross(cartesian(point0), cartesian(point1)); - cartesianNormalizeInPlace(arc); - var intersection = cartesianCross(normal, arc); - cartesianNormalizeInPlace(intersection); - var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]); - if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) { - winding += antimeridian ^ delta >= 0 ? 1 : -1; - } - } - } - } - - // First, determine whether the South pole is inside or outside: - // - // It is inside if: - // * the polygon winds around it in a clockwise direction. - // * the polygon does not (cumulatively) wind around it, but has a negative - // (counter-clockwise) area. - // - // Second, count the (signed) number of times a segment crosses a lambda - // from the point to the South pole. If it is zero, then the point is the - // same side as the South pole. - - return (angle < -epsilon$2 || angle < epsilon$2 && sum$1 < -epsilon$2) ^ (winding & 1); -} - -function clip(pointVisible, clipLine, interpolate, start) { - return function(sink) { - var line = clipLine(sink), - ringBuffer = clipBuffer(), - ringSink = clipLine(ringBuffer), - polygonStarted = false, - polygon, - segments, - ring; - - var clip = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { - clip.point = pointRing; - clip.lineStart = ringStart; - clip.lineEnd = ringEnd; - segments = []; - polygon = []; - }, - polygonEnd: function() { - clip.point = point; - clip.lineStart = lineStart; - clip.lineEnd = lineEnd; - segments = merge(segments); - var startInside = polygonContains(polygon, start); - if (segments.length) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - clipRejoin(segments, compareIntersection, startInside, interpolate, sink); - } else if (startInside) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - } - if (polygonStarted) sink.polygonEnd(), polygonStarted = false; - segments = polygon = null; - }, - sphere: function() { - sink.polygonStart(); - sink.lineStart(); - interpolate(null, null, 1, sink); - sink.lineEnd(); - sink.polygonEnd(); - } - }; - - function point(lambda, phi) { - if (pointVisible(lambda, phi)) sink.point(lambda, phi); - } - - function pointLine(lambda, phi) { - line.point(lambda, phi); - } - - function lineStart() { - clip.point = pointLine; - line.lineStart(); - } - - function lineEnd() { - clip.point = point; - line.lineEnd(); - } - - function pointRing(lambda, phi) { - ring.push([lambda, phi]); - ringSink.point(lambda, phi); - } - - function ringStart() { - ringSink.lineStart(); - ring = []; - } - - function ringEnd() { - pointRing(ring[0][0], ring[0][1]); - ringSink.lineEnd(); - - var clean = ringSink.clean(), - ringSegments = ringBuffer.result(), - i, n = ringSegments.length, m, - segment, - point; - - ring.pop(); - polygon.push(ring); - ring = null; - - if (!n) return; - - // No intersections. - if (clean & 1) { - segment = ringSegments[0]; - if ((m = segment.length - 1) > 0) { - if (!polygonStarted) sink.polygonStart(), polygonStarted = true; - sink.lineStart(); - for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]); - sink.lineEnd(); - } - return; - } - - // Rejoin connected segments. - // TODO reuse ringBuffer.rejoin()? - if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); - - segments.push(ringSegments.filter(validSegment)); - } - - return clip; - }; -} - -function validSegment(segment) { - return segment.length > 1; -} - -// Intersections are sorted along the clip edge. For both antimeridian cutting -// and circle clipping, the same comparison is used. -function compareIntersection(a, b) { - return ((a = a.x)[0] < 0 ? a[1] - halfPi$2 - epsilon$2 : halfPi$2 - a[1]) - - ((b = b.x)[0] < 0 ? b[1] - halfPi$2 - epsilon$2 : halfPi$2 - b[1]); -} - -var clipAntimeridian = clip( - function() { return true; }, - clipAntimeridianLine, - clipAntimeridianInterpolate, - [-pi$3, -halfPi$2] -); - -// Takes a line and cuts into visible segments. Return values: 0 - there were -// intersections or the line was empty; 1 - no intersections; 2 - there were -// intersections, and the first and last segments should be rejoined. -function clipAntimeridianLine(stream) { - var lambda0 = NaN, - phi0 = NaN, - sign0 = NaN, - clean; // no intersections - - return { - lineStart: function() { - stream.lineStart(); - clean = 1; - }, - point: function(lambda1, phi1) { - var sign1 = lambda1 > 0 ? pi$3 : -pi$3, - delta = abs(lambda1 - lambda0); - if (abs(delta - pi$3) < epsilon$2) { // line crosses a pole - stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi$2 : -halfPi$2); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - stream.point(lambda1, phi0); - clean = 0; - } else if (sign0 !== sign1 && delta >= pi$3) { // line crosses antimeridian - if (abs(lambda0 - sign0) < epsilon$2) lambda0 -= sign0 * epsilon$2; // handle degeneracies - if (abs(lambda1 - sign1) < epsilon$2) lambda1 -= sign1 * epsilon$2; - phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1); - stream.point(sign0, phi0); - stream.lineEnd(); - stream.lineStart(); - stream.point(sign1, phi0); - clean = 0; - } - stream.point(lambda0 = lambda1, phi0 = phi1); - sign0 = sign1; - }, - lineEnd: function() { - stream.lineEnd(); - lambda0 = phi0 = NaN; - }, - clean: function() { - return 2 - clean; // if intersections, rejoin first and last segments - } - }; -} - -function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) { - var cosPhi0, - cosPhi1, - sinLambda0Lambda1 = sin$1(lambda0 - lambda1); - return abs(sinLambda0Lambda1) > epsilon$2 - ? atan((sin$1(phi0) * (cosPhi1 = cos$1(phi1)) * sin$1(lambda1) - - sin$1(phi1) * (cosPhi0 = cos$1(phi0)) * sin$1(lambda0)) - / (cosPhi0 * cosPhi1 * sinLambda0Lambda1)) - : (phi0 + phi1) / 2; -} - -function clipAntimeridianInterpolate(from, to, direction, stream) { - var phi; - if (from == null) { - phi = direction * halfPi$2; - stream.point(-pi$3, phi); - stream.point(0, phi); - stream.point(pi$3, phi); - stream.point(pi$3, 0); - stream.point(pi$3, -phi); - stream.point(0, -phi); - stream.point(-pi$3, -phi); - stream.point(-pi$3, 0); - stream.point(-pi$3, phi); - } else if (abs(from[0] - to[0]) > epsilon$2) { - var lambda = from[0] < to[0] ? pi$3 : -pi$3; - phi = direction * lambda / 2; - stream.point(-lambda, phi); - stream.point(0, phi); - stream.point(lambda, phi); - } else { - stream.point(to[0], to[1]); - } -} - -function clipCircle(radius) { - var cr = cos$1(radius), - delta = 6 * radians, - smallRadius = cr > 0, - notHemisphere = abs(cr) > epsilon$2; // TODO optimise for this common case - - function interpolate(from, to, direction, stream) { - circleStream(stream, radius, delta, direction, from, to); - } - - function visible(lambda, phi) { - return cos$1(lambda) * cos$1(phi) > cr; - } - - // Takes a line and cuts into visible segments. Return values used for polygon - // clipping: 0 - there were intersections or the line was empty; 1 - no - // intersections 2 - there were intersections, and the first and last segments - // should be rejoined. - function clipLine(stream) { - var point0, // previous point - c0, // code for previous point - v0, // visibility of previous point - v00, // visibility of first point - clean; // no intersections - return { - lineStart: function() { - v00 = v0 = false; - clean = 1; - }, - point: function(lambda, phi) { - var point1 = [lambda, phi], - point2, - v = visible(lambda, phi), - c = smallRadius - ? v ? 0 : code(lambda, phi) - : v ? code(lambda + (lambda < 0 ? pi$3 : -pi$3), phi) : 0; - if (!point0 && (v00 = v0 = v)) stream.lineStart(); - // Handle degeneracies. - // TODO ignore if not clipping polygons. - if (v !== v0) { - point2 = intersect(point0, point1); - if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) { - point1[0] += epsilon$2; - point1[1] += epsilon$2; - v = visible(point1[0], point1[1]); - } - } - if (v !== v0) { - clean = 0; - if (v) { - // outside going in - stream.lineStart(); - point2 = intersect(point1, point0); - stream.point(point2[0], point2[1]); - } else { - // inside going out - point2 = intersect(point0, point1); - stream.point(point2[0], point2[1]); - stream.lineEnd(); - } - point0 = point2; - } else if (notHemisphere && point0 && smallRadius ^ v) { - var t; - // If the codes for two points are different, or are both zero, - // and there this segment intersects with the small circle. - if (!(c & c0) && (t = intersect(point1, point0, true))) { - clean = 0; - if (smallRadius) { - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - } else { - stream.point(t[1][0], t[1][1]); - stream.lineEnd(); - stream.lineStart(); - stream.point(t[0][0], t[0][1]); - } - } - } - if (v && (!point0 || !pointEqual(point0, point1))) { - stream.point(point1[0], point1[1]); - } - point0 = point1, v0 = v, c0 = c; - }, - lineEnd: function() { - if (v0) stream.lineEnd(); - point0 = null; - }, - // Rejoin first and last segments if there were intersections and the first - // and last points were visible. - clean: function() { - return clean | ((v00 && v0) << 1); - } - }; - } - - // Intersects the great circle between a and b with the clip circle. - function intersect(a, b, two) { - var pa = cartesian(a), - pb = cartesian(b); - - // We have two planes, n1.p = d1 and n2.p = d2. - // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2). - var n1 = [1, 0, 0], // normal - n2 = cartesianCross(pa, pb), - n2n2 = cartesianDot(n2, n2), - n1n2 = n2[0], // cartesianDot(n1, n2), - determinant = n2n2 - n1n2 * n1n2; - - // Two polar points. - if (!determinant) return !two && a; - - var c1 = cr * n2n2 / determinant, - c2 = -cr * n1n2 / determinant, - n1xn2 = cartesianCross(n1, n2), - A = cartesianScale(n1, c1), - B = cartesianScale(n2, c2); - cartesianAddInPlace(A, B); - - // Solve |p(t)|^2 = 1. - var u = n1xn2, - w = cartesianDot(A, u), - uu = cartesianDot(u, u), - t2 = w * w - uu * (cartesianDot(A, A) - 1); - - if (t2 < 0) return; - - var t = sqrt(t2), - q = cartesianScale(u, (-w - t) / uu); - cartesianAddInPlace(q, A); - q = spherical(q); - - if (!two) return q; - - // Two intersection points. - var lambda0 = a[0], - lambda1 = b[0], - phi0 = a[1], - phi1 = b[1], - z; - - if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z; - - var delta = lambda1 - lambda0, - polar = abs(delta - pi$3) < epsilon$2, - meridian = polar || delta < epsilon$2; - - if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z; - - // Check that the first point is between a and b. - if (meridian - ? polar - ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon$2 ? phi0 : phi1) - : phi0 <= q[1] && q[1] <= phi1 - : delta > pi$3 ^ (lambda0 <= q[0] && q[0] <= lambda1)) { - var q1 = cartesianScale(u, (-w + t) / uu); - cartesianAddInPlace(q1, A); - return [q, spherical(q1)]; - } - } - - // Generates a 4-bit vector representing the location of a point relative to - // the small circle's bounding box. - function code(lambda, phi) { - var r = smallRadius ? radius : pi$3 - radius, - code = 0; - if (lambda < -r) code |= 1; // left - else if (lambda > r) code |= 2; // right - if (phi < -r) code |= 4; // below - else if (phi > r) code |= 8; // above - return code; - } - - return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi$3, radius - pi$3]); -} - -function clipLine(a, b, x0, y0, x1, y1) { - var ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy; - if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy; - return true; -} - -var clipMax = 1e9, clipMin = -clipMax; - -// TODO Use d3-polygon’s polygonContains here for the ring check? -// TODO Eliminate duplicate buffering in clipBuffer and polygon.push? - -function clipRectangle(x0, y0, x1, y1) { - - function visible(x, y) { - return x0 <= x && x <= x1 && y0 <= y && y <= y1; - } - - function interpolate(from, to, direction, stream) { - var a = 0, a1 = 0; - if (from == null - || (a = corner(from, direction)) !== (a1 = corner(to, direction)) - || comparePoint(from, to) < 0 ^ direction > 0) { - do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); - while ((a = (a + direction + 4) % 4) !== a1); - } else { - stream.point(to[0], to[1]); - } - } - - function corner(p, direction) { - return abs(p[0] - x0) < epsilon$2 ? direction > 0 ? 0 : 3 - : abs(p[0] - x1) < epsilon$2 ? direction > 0 ? 2 : 1 - : abs(p[1] - y0) < epsilon$2 ? direction > 0 ? 1 : 0 - : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon - } - - function compareIntersection(a, b) { - return comparePoint(a.x, b.x); - } - - function comparePoint(a, b) { - var ca = corner(a, 1), - cb = corner(b, 1); - return ca !== cb ? ca - cb - : ca === 0 ? b[1] - a[1] - : ca === 1 ? a[0] - b[0] - : ca === 2 ? a[1] - b[1] - : b[0] - a[0]; - } - - return function(stream) { - var activeStream = stream, - bufferStream = clipBuffer(), - segments, - polygon, - ring, - x__, y__, v__, // first point - x_, y_, v_, // previous point - first, - clean; - - var clipStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: polygonStart, - polygonEnd: polygonEnd - }; - - function point(x, y) { - if (visible(x, y)) activeStream.point(x, y); - } - - function polygonInside() { - var winding = 0; - - for (var i = 0, n = polygon.length; i < n; ++i) { - for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) { - a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1]; - if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; } - else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; } - } - } - - return winding; - } - - // Buffer geometry within a polygon and then clip it en masse. - function polygonStart() { - activeStream = bufferStream, segments = [], polygon = [], clean = true; - } - - function polygonEnd() { - var startInside = polygonInside(), - cleanInside = clean && startInside, - visible = (segments = merge(segments)).length; - if (cleanInside || visible) { - stream.polygonStart(); - if (cleanInside) { - stream.lineStart(); - interpolate(null, null, 1, stream); - stream.lineEnd(); - } - if (visible) { - clipRejoin(segments, compareIntersection, startInside, interpolate, stream); - } - stream.polygonEnd(); - } - activeStream = stream, segments = polygon = ring = null; - } - - function lineStart() { - clipStream.point = linePoint; - if (polygon) polygon.push(ring = []); - first = true; - v_ = false; - x_ = y_ = NaN; - } - - // TODO rather than special-case polygons, simply handle them separately. - // Ideally, coincident intersection points should be jittered to avoid - // clipping issues. - function lineEnd() { - if (segments) { - linePoint(x__, y__); - if (v__ && v_) bufferStream.rejoin(); - segments.push(bufferStream.result()); - } - clipStream.point = point; - if (v_) activeStream.lineEnd(); - } - - function linePoint(x, y) { - var v = visible(x, y); - if (polygon) ring.push([x, y]); - if (first) { - x__ = x, y__ = y, v__ = v; - first = false; - if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - } - } else { - if (v && v_) activeStream.point(x, y); - else { - var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))], - b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))]; - if (clipLine(a, b, x0, y0, x1, y1)) { - if (!v_) { - activeStream.lineStart(); - activeStream.point(a[0], a[1]); - } - activeStream.point(b[0], b[1]); - if (!v) activeStream.lineEnd(); - clean = false; - } else if (v) { - activeStream.lineStart(); - activeStream.point(x, y); - clean = false; - } - } - } - x_ = x, y_ = y, v_ = v; - } - - return clipStream; - }; -} - -function extent$1() { - var x0 = 0, - y0 = 0, - x1 = 960, - y1 = 500, - cache, - cacheStream, - clip; - - return clip = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream); - }, - extent: function(_) { - return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]]; - } - }; -} - -var lengthSum = adder(), - lambda0$2, - sinPhi0$1, - cosPhi0$1; - -var lengthStream = { - sphere: noop$2, - point: noop$2, - lineStart: lengthLineStart, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2 -}; - -function lengthLineStart() { - lengthStream.point = lengthPointFirst; - lengthStream.lineEnd = lengthLineEnd; -} - -function lengthLineEnd() { - lengthStream.point = lengthStream.lineEnd = noop$2; -} - -function lengthPointFirst(lambda, phi) { - lambda *= radians, phi *= radians; - lambda0$2 = lambda, sinPhi0$1 = sin$1(phi), cosPhi0$1 = cos$1(phi); - lengthStream.point = lengthPoint; -} - -function lengthPoint(lambda, phi) { - lambda *= radians, phi *= radians; - var sinPhi = sin$1(phi), - cosPhi = cos$1(phi), - delta = abs(lambda - lambda0$2), - cosDelta = cos$1(delta), - sinDelta = sin$1(delta), - x = cosPhi * sinDelta, - y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta, - z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta; - lengthSum.add(atan2(sqrt(x * x + y * y), z)); - lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi; -} - -function length$1(object) { - lengthSum.reset(); - geoStream(object, lengthStream); - return +lengthSum; -} - -var coordinates = [null, null], - object$1 = {type: "LineString", coordinates: coordinates}; - -function distance(a, b) { - coordinates[0] = a; - coordinates[1] = b; - return length$1(object$1); -} - -var containsObjectType = { - Feature: function(object, point) { - return containsGeometry(object.geometry, point); - }, - FeatureCollection: function(object, point) { - var features = object.features, i = -1, n = features.length; - while (++i < n) if (containsGeometry(features[i].geometry, point)) return true; - return false; - } -}; - -var containsGeometryType = { - Sphere: function() { - return true; - }, - Point: function(object, point) { - return containsPoint(object.coordinates, point); - }, - MultiPoint: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPoint(coordinates[i], point)) return true; - return false; - }, - LineString: function(object, point) { - return containsLine(object.coordinates, point); - }, - MultiLineString: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsLine(coordinates[i], point)) return true; - return false; - }, - Polygon: function(object, point) { - return containsPolygon(object.coordinates, point); - }, - MultiPolygon: function(object, point) { - var coordinates = object.coordinates, i = -1, n = coordinates.length; - while (++i < n) if (containsPolygon(coordinates[i], point)) return true; - return false; - }, - GeometryCollection: function(object, point) { - var geometries = object.geometries, i = -1, n = geometries.length; - while (++i < n) if (containsGeometry(geometries[i], point)) return true; - return false; - } -}; - -function containsGeometry(geometry, point) { - return geometry && containsGeometryType.hasOwnProperty(geometry.type) - ? containsGeometryType[geometry.type](geometry, point) - : false; -} - -function containsPoint(coordinates, point) { - return distance(coordinates, point) === 0; -} - -function containsLine(coordinates, point) { - var ao, bo, ab; - for (var i = 0, n = coordinates.length; i < n; i++) { - bo = distance(coordinates[i], point); - if (bo === 0) return true; - if (i > 0) { - ab = distance(coordinates[i], coordinates[i - 1]); - if ( - ab > 0 && - ao <= ab && - bo <= ab && - (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2$1 * ab - ) - return true; - } - ao = bo; - } - return false; -} - -function containsPolygon(coordinates, point) { - return !!polygonContains(coordinates.map(ringRadians), pointRadians(point)); -} - -function ringRadians(ring) { - return ring = ring.map(pointRadians), ring.pop(), ring; -} - -function pointRadians(point) { - return [point[0] * radians, point[1] * radians]; -} - -function contains$1(object, point) { - return (object && containsObjectType.hasOwnProperty(object.type) - ? containsObjectType[object.type] - : containsGeometry)(object, point); -} - -function graticuleX(y0, y1, dy) { - var y = sequence(y0, y1 - epsilon$2, dy).concat(y1); - return function(x) { return y.map(function(y) { return [x, y]; }); }; -} - -function graticuleY(x0, x1, dx) { - var x = sequence(x0, x1 - epsilon$2, dx).concat(x1); - return function(y) { return x.map(function(x) { return [x, y]; }); }; -} - -function graticule() { - var x1, x0, X1, X0, - y1, y0, Y1, Y0, - dx = 10, dy = dx, DX = 90, DY = 360, - x, y, X, Y, - precision = 2.5; - - function graticule() { - return {type: "MultiLineString", coordinates: lines()}; - } - - function lines() { - return sequence(ceil(X0 / DX) * DX, X1, DX).map(X) - .concat(sequence(ceil(Y0 / DY) * DY, Y1, DY).map(Y)) - .concat(sequence(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon$2; }).map(x)) - .concat(sequence(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon$2; }).map(y)); - } - - graticule.lines = function() { - return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; }); - }; - - graticule.outline = function() { - return { - type: "Polygon", - coordinates: [ - X(X0).concat( - Y(Y1).slice(1), - X(X1).reverse().slice(1), - Y(Y0).reverse().slice(1)) - ] - }; - }; - - graticule.extent = function(_) { - if (!arguments.length) return graticule.extentMinor(); - return graticule.extentMajor(_).extentMinor(_); - }; - - graticule.extentMajor = function(_) { - if (!arguments.length) return [[X0, Y0], [X1, Y1]]; - X0 = +_[0][0], X1 = +_[1][0]; - Y0 = +_[0][1], Y1 = +_[1][1]; - if (X0 > X1) _ = X0, X0 = X1, X1 = _; - if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; - return graticule.precision(precision); - }; - - graticule.extentMinor = function(_) { - if (!arguments.length) return [[x0, y0], [x1, y1]]; - x0 = +_[0][0], x1 = +_[1][0]; - y0 = +_[0][1], y1 = +_[1][1]; - if (x0 > x1) _ = x0, x0 = x1, x1 = _; - if (y0 > y1) _ = y0, y0 = y1, y1 = _; - return graticule.precision(precision); - }; - - graticule.step = function(_) { - if (!arguments.length) return graticule.stepMinor(); - return graticule.stepMajor(_).stepMinor(_); - }; - - graticule.stepMajor = function(_) { - if (!arguments.length) return [DX, DY]; - DX = +_[0], DY = +_[1]; - return graticule; - }; - - graticule.stepMinor = function(_) { - if (!arguments.length) return [dx, dy]; - dx = +_[0], dy = +_[1]; - return graticule; - }; - - graticule.precision = function(_) { - if (!arguments.length) return precision; - precision = +_; - x = graticuleX(y0, y1, 90); - y = graticuleY(x0, x1, precision); - X = graticuleX(Y0, Y1, 90); - Y = graticuleY(X0, X1, precision); - return graticule; - }; - - return graticule - .extentMajor([[-180, -90 + epsilon$2], [180, 90 - epsilon$2]]) - .extentMinor([[-180, -80 - epsilon$2], [180, 80 + epsilon$2]]); -} - -function graticule10() { - return graticule()(); -} - -function interpolate$1(a, b) { - var x0 = a[0] * radians, - y0 = a[1] * radians, - x1 = b[0] * radians, - y1 = b[1] * radians, - cy0 = cos$1(y0), - sy0 = sin$1(y0), - cy1 = cos$1(y1), - sy1 = sin$1(y1), - kx0 = cy0 * cos$1(x0), - ky0 = cy0 * sin$1(x0), - kx1 = cy1 * cos$1(x1), - ky1 = cy1 * sin$1(x1), - d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))), - k = sin$1(d); - - var interpolate = d ? function(t) { - var B = sin$1(t *= d) / k, - A = sin$1(d - t) / k, - x = A * kx0 + B * kx1, - y = A * ky0 + B * ky1, - z = A * sy0 + B * sy1; - return [ - atan2(y, x) * degrees$1, - atan2(z, sqrt(x * x + y * y)) * degrees$1 - ]; - } : function() { - return [x0 * degrees$1, y0 * degrees$1]; - }; - - interpolate.distance = d; - - return interpolate; -} - -function identity$4(x) { - return x; -} - -var areaSum$1 = adder(), - areaRingSum$1 = adder(), - x00, - y00, - x0$1, - y0$1; - -var areaStream$1 = { - point: noop$2, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: function() { - areaStream$1.lineStart = areaRingStart$1; - areaStream$1.lineEnd = areaRingEnd$1; - }, - polygonEnd: function() { - areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop$2; - areaSum$1.add(abs(areaRingSum$1)); - areaRingSum$1.reset(); - }, - result: function() { - var area = areaSum$1 / 2; - areaSum$1.reset(); - return area; - } -}; - -function areaRingStart$1() { - areaStream$1.point = areaPointFirst$1; -} - -function areaPointFirst$1(x, y) { - areaStream$1.point = areaPoint$1; - x00 = x0$1 = x, y00 = y0$1 = y; -} - -function areaPoint$1(x, y) { - areaRingSum$1.add(y0$1 * x - x0$1 * y); - x0$1 = x, y0$1 = y; -} - -function areaRingEnd$1() { - areaPoint$1(x00, y00); -} - -var x0$2 = Infinity, - y0$2 = x0$2, - x1 = -x0$2, - y1 = x1; - -var boundsStream$1 = { - point: boundsPoint$1, - lineStart: noop$2, - lineEnd: noop$2, - polygonStart: noop$2, - polygonEnd: noop$2, - result: function() { - var bounds = [[x0$2, y0$2], [x1, y1]]; - x1 = y1 = -(y0$2 = x0$2 = Infinity); - return bounds; - } -}; - -function boundsPoint$1(x, y) { - if (x < x0$2) x0$2 = x; - if (x > x1) x1 = x; - if (y < y0$2) y0$2 = y; - if (y > y1) y1 = y; -} - -// TODO Enforce positive area for exterior, negative area for interior? - -var X0$1 = 0, - Y0$1 = 0, - Z0$1 = 0, - X1$1 = 0, - Y1$1 = 0, - Z1$1 = 0, - X2$1 = 0, - Y2$1 = 0, - Z2$1 = 0, - x00$1, - y00$1, - x0$3, - y0$3; - -var centroidStream$1 = { - point: centroidPoint$1, - lineStart: centroidLineStart$1, - lineEnd: centroidLineEnd$1, - polygonStart: function() { - centroidStream$1.lineStart = centroidRingStart$1; - centroidStream$1.lineEnd = centroidRingEnd$1; - }, - polygonEnd: function() { - centroidStream$1.point = centroidPoint$1; - centroidStream$1.lineStart = centroidLineStart$1; - centroidStream$1.lineEnd = centroidLineEnd$1; - }, - result: function() { - var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1] - : Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1] - : Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1] - : [NaN, NaN]; - X0$1 = Y0$1 = Z0$1 = - X1$1 = Y1$1 = Z1$1 = - X2$1 = Y2$1 = Z2$1 = 0; - return centroid; - } -}; - -function centroidPoint$1(x, y) { - X0$1 += x; - Y0$1 += y; - ++Z0$1; -} - -function centroidLineStart$1() { - centroidStream$1.point = centroidPointFirstLine; -} - -function centroidPointFirstLine(x, y) { - centroidStream$1.point = centroidPointLine; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidPointLine(x, y) { - var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy); - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function centroidLineEnd$1() { - centroidStream$1.point = centroidPoint$1; -} - -function centroidRingStart$1() { - centroidStream$1.point = centroidPointFirstRing; -} - -function centroidRingEnd$1() { - centroidPointRing(x00$1, y00$1); -} - -function centroidPointFirstRing(x, y) { - centroidStream$1.point = centroidPointRing; - centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y); -} - -function centroidPointRing(x, y) { - var dx = x - x0$3, - dy = y - y0$3, - z = sqrt(dx * dx + dy * dy); - - X1$1 += z * (x0$3 + x) / 2; - Y1$1 += z * (y0$3 + y) / 2; - Z1$1 += z; - - z = y0$3 * x - x0$3 * y; - X2$1 += z * (x0$3 + x); - Y2$1 += z * (y0$3 + y); - Z2$1 += z * 3; - centroidPoint$1(x0$3 = x, y0$3 = y); -} - -function PathContext(context) { - this._context = context; -} - -PathContext.prototype = { - _radius: 4.5, - pointRadius: function(_) { - return this._radius = _, this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._context.closePath(); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._context.moveTo(x, y); - this._point = 1; - break; - } - case 1: { - this._context.lineTo(x, y); - break; - } - default: { - this._context.moveTo(x + this._radius, y); - this._context.arc(x, y, this._radius, 0, tau$3); - break; - } - } - }, - result: noop$2 -}; - -var lengthSum$1 = adder(), - lengthRing, - x00$2, - y00$2, - x0$4, - y0$4; - -var lengthStream$1 = { - point: noop$2, - lineStart: function() { - lengthStream$1.point = lengthPointFirst$1; - }, - lineEnd: function() { - if (lengthRing) lengthPoint$1(x00$2, y00$2); - lengthStream$1.point = noop$2; - }, - polygonStart: function() { - lengthRing = true; - }, - polygonEnd: function() { - lengthRing = null; - }, - result: function() { - var length = +lengthSum$1; - lengthSum$1.reset(); - return length; - } -}; - -function lengthPointFirst$1(x, y) { - lengthStream$1.point = lengthPoint$1; - x00$2 = x0$4 = x, y00$2 = y0$4 = y; -} - -function lengthPoint$1(x, y) { - x0$4 -= x, y0$4 -= y; - lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4)); - x0$4 = x, y0$4 = y; -} - -function PathString() { - this._string = []; -} - -PathString.prototype = { - _radius: 4.5, - _circle: circle$1(4.5), - pointRadius: function(_) { - if ((_ = +_) !== this._radius) this._radius = _, this._circle = null; - return this; - }, - polygonStart: function() { - this._line = 0; - }, - polygonEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line === 0) this._string.push("Z"); - this._point = NaN; - }, - point: function(x, y) { - switch (this._point) { - case 0: { - this._string.push("M", x, ",", y); - this._point = 1; - break; - } - case 1: { - this._string.push("L", x, ",", y); - break; - } - default: { - if (this._circle == null) this._circle = circle$1(this._radius); - this._string.push("M", x, ",", y, this._circle); - break; - } - } - }, - result: function() { - if (this._string.length) { - var result = this._string.join(""); - this._string = []; - return result; - } else { - return null; - } - } -}; - -function circle$1(radius) { - return "m0," + radius - + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius - + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius - + "z"; -} - -function index$1(projection, context) { - var pointRadius = 4.5, - projectionStream, - contextStream; - - function path(object) { - if (object) { - if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); - geoStream(object, projectionStream(contextStream)); - } - return contextStream.result(); - } - - path.area = function(object) { - geoStream(object, projectionStream(areaStream$1)); - return areaStream$1.result(); - }; - - path.measure = function(object) { - geoStream(object, projectionStream(lengthStream$1)); - return lengthStream$1.result(); - }; - - path.bounds = function(object) { - geoStream(object, projectionStream(boundsStream$1)); - return boundsStream$1.result(); - }; - - path.centroid = function(object) { - geoStream(object, projectionStream(centroidStream$1)); - return centroidStream$1.result(); - }; - - path.projection = function(_) { - return arguments.length ? (projectionStream = _ == null ? (projection = null, identity$4) : (projection = _).stream, path) : projection; - }; - - path.context = function(_) { - if (!arguments.length) return context; - contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _); - if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); - return path; - }; - - path.pointRadius = function(_) { - if (!arguments.length) return pointRadius; - pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); - return path; - }; - - return path.projection(projection).context(context); -} - -function transform(methods) { - return { - stream: transformer(methods) - }; -} - -function transformer(methods) { - return function(stream) { - var s = new TransformStream; - for (var key in methods) s[key] = methods[key]; - s.stream = stream; - return s; - }; -} - -function TransformStream() {} - -TransformStream.prototype = { - constructor: TransformStream, - point: function(x, y) { this.stream.point(x, y); }, - sphere: function() { this.stream.sphere(); }, - lineStart: function() { this.stream.lineStart(); }, - lineEnd: function() { this.stream.lineEnd(); }, - polygonStart: function() { this.stream.polygonStart(); }, - polygonEnd: function() { this.stream.polygonEnd(); } -}; - -function fit(projection, fitBounds, object) { - var clip = projection.clipExtent && projection.clipExtent(); - projection.scale(150).translate([0, 0]); - if (clip != null) projection.clipExtent(null); - geoStream(object, projection.stream(boundsStream$1)); - fitBounds(boundsStream$1.result()); - if (clip != null) projection.clipExtent(clip); - return projection; -} - -function fitExtent(projection, extent, object) { - return fit(projection, function(b) { - var w = extent[1][0] - extent[0][0], - h = extent[1][1] - extent[0][1], - k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])), - x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2, - y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitSize(projection, size, object) { - return fitExtent(projection, [[0, 0], size], object); -} - -function fitWidth(projection, width, object) { - return fit(projection, function(b) { - var w = +width, - k = w / (b[1][0] - b[0][0]), - x = (w - k * (b[1][0] + b[0][0])) / 2, - y = -k * b[0][1]; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -function fitHeight(projection, height, object) { - return fit(projection, function(b) { - var h = +height, - k = h / (b[1][1] - b[0][1]), - x = -k * b[0][0], - y = (h - k * (b[1][1] + b[0][1])) / 2; - projection.scale(150 * k).translate([x, y]); - }, object); -} - -var maxDepth = 16, // maximum depth of subdivision - cosMinDistance = cos$1(30 * radians); // cos(minimum angular distance) - -function resample(project, delta2) { - return +delta2 ? resample$1(project, delta2) : resampleNone(project); -} - -function resampleNone(project) { - return transformer({ - point: function(x, y) { - x = project(x, y); - this.stream.point(x[0], x[1]); - } - }); -} - -function resample$1(project, delta2) { - - function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) { - var dx = x1 - x0, - dy = y1 - y0, - d2 = dx * dx + dy * dy; - if (d2 > 4 * delta2 && depth--) { - var a = a0 + a1, - b = b0 + b1, - c = c0 + c1, - m = sqrt(a * a + b * b + c * c), - phi2 = asin(c /= m), - lambda2 = abs(abs(c) - 1) < epsilon$2 || abs(lambda0 - lambda1) < epsilon$2 ? (lambda0 + lambda1) / 2 : atan2(b, a), - p = project(lambda2, phi2), - x2 = p[0], - y2 = p[1], - dx2 = x2 - x0, - dy2 = y2 - y0, - dz = dy * dx2 - dx * dy2; - if (dz * dz / d2 > delta2 // perpendicular projected distance - || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end - || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream); - stream.point(x2, y2); - resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream); - } - } - } - return function(stream) { - var lambda00, x00, y00, a00, b00, c00, // first point - lambda0, x0, y0, a0, b0, c0; // previous point - - var resampleStream = { - point: point, - lineStart: lineStart, - lineEnd: lineEnd, - polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; }, - polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; } - }; - - function point(x, y) { - x = project(x, y); - stream.point(x[0], x[1]); - } - - function lineStart() { - x0 = NaN; - resampleStream.point = linePoint; - stream.lineStart(); - } - - function linePoint(lambda, phi) { - var c = cartesian([lambda, phi]), p = project(lambda, phi); - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); - stream.point(x0, y0); - } - - function lineEnd() { - resampleStream.point = point; - stream.lineEnd(); - } - - function ringStart() { - lineStart(); - resampleStream.point = ringPoint; - resampleStream.lineEnd = ringEnd; - } - - function ringPoint(lambda, phi) { - linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; - resampleStream.point = linePoint; - } - - function ringEnd() { - resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream); - resampleStream.lineEnd = lineEnd; - lineEnd(); - } - - return resampleStream; - }; -} - -var transformRadians = transformer({ - point: function(x, y) { - this.stream.point(x * radians, y * radians); - } -}); - -function transformRotate(rotate) { - return transformer({ - point: function(x, y) { - var r = rotate(x, y); - return this.stream.point(r[0], r[1]); - } - }); -} - -function scaleTranslate(k, dx, dy) { - function transform(x, y) { - return [dx + k * x, dy - k * y]; - } - transform.invert = function(x, y) { - return [(x - dx) / k, (dy - y) / k]; - }; - return transform; -} - -function scaleTranslateRotate(k, dx, dy, alpha) { - var cosAlpha = cos$1(alpha), - sinAlpha = sin$1(alpha), - a = cosAlpha * k, - b = sinAlpha * k, - ai = cosAlpha / k, - bi = sinAlpha / k, - ci = (sinAlpha * dy - cosAlpha * dx) / k, - fi = (sinAlpha * dx + cosAlpha * dy) / k; - function transform(x, y) { - return [a * x - b * y + dx, dy - b * x - a * y]; - } - transform.invert = function(x, y) { - return [ai * x - bi * y + ci, fi - bi * x - ai * y]; - }; - return transform; -} - -function projection(project) { - return projectionMutator(function() { return project; })(); -} - -function projectionMutator(projectAt) { - var project, - k = 150, // scale - x = 480, y = 250, // translate - lambda = 0, phi = 0, // center - deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate - alpha = 0, // post-rotate - theta = null, preclip = clipAntimeridian, // pre-clip angle - x0 = null, y0, x1, y1, postclip = identity$4, // post-clip extent - delta2 = 0.5, // precision - projectResample, - projectTransform, - projectRotateTransform, - cache, - cacheStream; - - function projection(point) { - return projectRotateTransform(point[0] * radians, point[1] * radians); - } - - function invert(point) { - point = projectRotateTransform.invert(point[0], point[1]); - return point && [point[0] * degrees$1, point[1] * degrees$1]; - } - - projection.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream))))); - }; - - projection.preclip = function(_) { - return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip; - }; - - projection.postclip = function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }; - - projection.clipAngle = function(_) { - return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees$1; - }; - - projection.clipExtent = function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - projection.scale = function(_) { - return arguments.length ? (k = +_, recenter()) : k; - }; - - projection.translate = function(_) { - return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y]; - }; - - projection.center = function(_) { - return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees$1, phi * degrees$1]; - }; - - projection.rotate = function(_) { - return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees$1, deltaPhi * degrees$1, deltaGamma * degrees$1]; - }; - - projection.angle = function(_) { - return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees$1; - }; - - projection.precision = function(_) { - return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2); - }; - - projection.fitExtent = function(extent, object) { - return fitExtent(projection, extent, object); - }; - - projection.fitSize = function(size, object) { - return fitSize(projection, size, object); - }; - - projection.fitWidth = function(width, object) { - return fitWidth(projection, width, object); - }; - - projection.fitHeight = function(height, object) { - return fitHeight(projection, height, object); - }; - - function recenter() { - var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)), - transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha); - rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma); - projectTransform = compose(project, transform); - projectRotateTransform = compose(rotate, projectTransform); - projectResample = resample(projectTransform, delta2); - return reset(); - } - - function reset() { - cache = cacheStream = null; - return projection; - } - - return function() { - project = projectAt.apply(this, arguments); - projection.invert = project.invert && invert; - return recenter(); - }; -} - -function conicProjection(projectAt) { - var phi0 = 0, - phi1 = pi$3 / 3, - m = projectionMutator(projectAt), - p = m(phi0, phi1); - - p.parallels = function(_) { - return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees$1, phi1 * degrees$1]; - }; - - return p; -} - -function cylindricalEqualAreaRaw(phi0) { - var cosPhi0 = cos$1(phi0); - - function forward(lambda, phi) { - return [lambda * cosPhi0, sin$1(phi) / cosPhi0]; - } - - forward.invert = function(x, y) { - return [x / cosPhi0, asin(y * cosPhi0)]; - }; - - return forward; -} - -function conicEqualAreaRaw(y0, y1) { - var sy0 = sin$1(y0), n = (sy0 + sin$1(y1)) / 2; - - // Are the parallels symmetrical around the Equator? - if (abs(n) < epsilon$2) return cylindricalEqualAreaRaw(y0); - - var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n; - - function project(x, y) { - var r = sqrt(c - 2 * n * sin$1(y)) / n; - return [r * sin$1(x *= n), r0 - r * cos$1(x)]; - } - - project.invert = function(x, y) { - var r0y = r0 - y; - return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))]; - }; - - return project; -} - -function conicEqualArea() { - return conicProjection(conicEqualAreaRaw) - .scale(155.424) - .center([0, 33.6442]); -} - -function albers() { - return conicEqualArea() - .parallels([29.5, 45.5]) - .scale(1070) - .translate([480, 250]) - .rotate([96, 0]) - .center([-0.6, 38.7]); -} - -// The projections must have mutually exclusive clip regions on the sphere, -// as this will avoid emitting interleaving lines and polygons. -function multiplex(streams) { - var n = streams.length; - return { - point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); }, - sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); }, - lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); }, - lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); }, - polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); }, - polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); } - }; -} - -// A composite projection for the United States, configured by default for -// 960×500. The projection also works quite well at 960×600 if you change the -// scale to 1285 and adjust the translate accordingly. The set of standard -// parallels for each region comes from USGS, which is published here: -// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers -function albersUsa() { - var cache, - cacheStream, - lower48 = albers(), lower48Point, - alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338 - hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007 - point, pointStream = {point: function(x, y) { point = [x, y]; }}; - - function albersUsa(coordinates) { - var x = coordinates[0], y = coordinates[1]; - return point = null, - (lower48Point.point(x, y), point) - || (alaskaPoint.point(x, y), point) - || (hawaiiPoint.point(x, y), point); - } - - albersUsa.invert = function(coordinates) { - var k = lower48.scale(), - t = lower48.translate(), - x = (coordinates[0] - t[0]) / k, - y = (coordinates[1] - t[1]) / k; - return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska - : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii - : lower48).invert(coordinates); - }; - - albersUsa.stream = function(stream) { - return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]); - }; - - albersUsa.precision = function(_) { - if (!arguments.length) return lower48.precision(); - lower48.precision(_), alaska.precision(_), hawaii.precision(_); - return reset(); - }; - - albersUsa.scale = function(_) { - if (!arguments.length) return lower48.scale(); - lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_); - return albersUsa.translate(lower48.translate()); - }; - - albersUsa.translate = function(_) { - if (!arguments.length) return lower48.translate(); - var k = lower48.scale(), x = +_[0], y = +_[1]; - - lower48Point = lower48 - .translate(_) - .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]]) - .stream(pointStream); - - alaskaPoint = alaska - .translate([x - 0.307 * k, y + 0.201 * k]) - .clipExtent([[x - 0.425 * k + epsilon$2, y + 0.120 * k + epsilon$2], [x - 0.214 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - hawaiiPoint = hawaii - .translate([x - 0.205 * k, y + 0.212 * k]) - .clipExtent([[x - 0.214 * k + epsilon$2, y + 0.166 * k + epsilon$2], [x - 0.115 * k - epsilon$2, y + 0.234 * k - epsilon$2]]) - .stream(pointStream); - - return reset(); - }; - - albersUsa.fitExtent = function(extent, object) { - return fitExtent(albersUsa, extent, object); - }; - - albersUsa.fitSize = function(size, object) { - return fitSize(albersUsa, size, object); - }; - - albersUsa.fitWidth = function(width, object) { - return fitWidth(albersUsa, width, object); - }; - - albersUsa.fitHeight = function(height, object) { - return fitHeight(albersUsa, height, object); - }; - - function reset() { - cache = cacheStream = null; - return albersUsa; - } - - return albersUsa.scale(1070); -} - -function azimuthalRaw(scale) { - return function(x, y) { - var cx = cos$1(x), - cy = cos$1(y), - k = scale(cx * cy); - return [ - k * cy * sin$1(x), - k * sin$1(y) - ]; - } -} - -function azimuthalInvert(angle) { - return function(x, y) { - var z = sqrt(x * x + y * y), - c = angle(z), - sc = sin$1(c), - cc = cos$1(c); - return [ - atan2(x * sc, z * cc), - asin(z && y * sc / z) - ]; - } -} - -var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) { - return sqrt(2 / (1 + cxcy)); -}); - -azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) { - return 2 * asin(z / 2); -}); - -function azimuthalEqualArea() { - return projection(azimuthalEqualAreaRaw) - .scale(124.75) - .clipAngle(180 - 1e-3); -} - -var azimuthalEquidistantRaw = azimuthalRaw(function(c) { - return (c = acos(c)) && c / sin$1(c); -}); - -azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) { - return z; -}); - -function azimuthalEquidistant() { - return projection(azimuthalEquidistantRaw) - .scale(79.4188) - .clipAngle(180 - 1e-3); -} - -function mercatorRaw(lambda, phi) { - return [lambda, log(tan((halfPi$2 + phi) / 2))]; -} - -mercatorRaw.invert = function(x, y) { - return [x, 2 * atan(exp(y)) - halfPi$2]; -}; - -function mercator() { - return mercatorProjection(mercatorRaw) - .scale(961 / tau$3); -} - -function mercatorProjection(project) { - var m = projection(project), - center = m.center, - scale = m.scale, - translate = m.translate, - clipExtent = m.clipExtent, - x0 = null, y0, x1, y1; // clip extent - - m.scale = function(_) { - return arguments.length ? (scale(_), reclip()) : scale(); - }; - - m.translate = function(_) { - return arguments.length ? (translate(_), reclip()) : translate(); - }; - - m.center = function(_) { - return arguments.length ? (center(_), reclip()) : center(); - }; - - m.clipExtent = function(_) { - return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }; - - function reclip() { - var k = pi$3 * scale(), - t = m(rotation(m.rotate()).invert([0, 0])); - return clipExtent(x0 == null - ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw - ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]] - : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]); - } - - return reclip(); -} - -function tany(y) { - return tan((halfPi$2 + y) / 2); -} - -function conicConformalRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : log(cy0 / cos$1(y1)) / log(tany(y1) / tany(y0)), - f = cy0 * pow(tany(y0), n) / n; - - if (!n) return mercatorRaw; - - function project(x, y) { - if (f > 0) { if (y < -halfPi$2 + epsilon$2) y = -halfPi$2 + epsilon$2; } - else { if (y > halfPi$2 - epsilon$2) y = halfPi$2 - epsilon$2; } - var r = f / pow(tany(y), n); - return [r * sin$1(n * x), f - r * cos$1(n * x)]; - } - - project.invert = function(x, y) { - var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy); - return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi$2]; - }; - - return project; -} - -function conicConformal() { - return conicProjection(conicConformalRaw) - .scale(109.5) - .parallels([30, 30]); -} - -function equirectangularRaw(lambda, phi) { - return [lambda, phi]; -} - -equirectangularRaw.invert = equirectangularRaw; - -function equirectangular() { - return projection(equirectangularRaw) - .scale(152.63); -} - -function conicEquidistantRaw(y0, y1) { - var cy0 = cos$1(y0), - n = y0 === y1 ? sin$1(y0) : (cy0 - cos$1(y1)) / (y1 - y0), - g = cy0 / n + y0; - - if (abs(n) < epsilon$2) return equirectangularRaw; - - function project(x, y) { - var gy = g - y, nx = n * x; - return [gy * sin$1(nx), g - gy * cos$1(nx)]; - } - - project.invert = function(x, y) { - var gy = g - y; - return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)]; - }; - - return project; -} - -function conicEquidistant() { - return conicProjection(conicEquidistantRaw) - .scale(131.154) - .center([0, 13.9389]); -} - -var A1 = 1.340264, - A2 = -0.081106, - A3 = 0.000893, - A4 = 0.003796, - M = sqrt(3) / 2, - iterations = 12; - -function equalEarthRaw(lambda, phi) { - var l = asin(M * sin$1(phi)), l2 = l * l, l6 = l2 * l2 * l2; - return [ - lambda * cos$1(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))), - l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - ]; -} - -equalEarthRaw.invert = function(x, y) { - var l = y, l2 = l * l, l6 = l2 * l2 * l2; - for (var i = 0, delta, fy, fpy; i < iterations; ++i) { - fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y; - fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2); - l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2; - if (abs(delta) < epsilon2$1) break; - } - return [ - M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos$1(l), - asin(sin$1(l) / M) - ]; -}; - -function equalEarth() { - return projection(equalEarthRaw) - .scale(177.158); -} - -function gnomonicRaw(x, y) { - var cy = cos$1(y), k = cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -gnomonicRaw.invert = azimuthalInvert(atan); - -function gnomonic() { - return projection(gnomonicRaw) - .scale(144.049) - .clipAngle(60); -} - -function scaleTranslate$1(kx, ky, tx, ty) { - return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity$4 : transformer({ - point: function(x, y) { - this.stream.point(x * kx + tx, y * ky + ty); - } - }); -} - -function identity$5() { - var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity$4, // scale, translate and reflect - x0 = null, y0, x1, y1, // clip extent - postclip = identity$4, - cache, - cacheStream, - projection; - - function reset() { - cache = cacheStream = null; - return projection; - } - - return projection = { - stream: function(stream) { - return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream)); - }, - postclip: function(_) { - return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip; - }, - clipExtent: function(_) { - return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity$4) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]]; - }, - scale: function(_) { - return arguments.length ? (transform = scaleTranslate$1((k = +_) * sx, k * sy, tx, ty), reset()) : k; - }, - translate: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty]; - }, - reflectX: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0; - }, - reflectY: function(_) { - return arguments.length ? (transform = scaleTranslate$1(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0; - }, - fitExtent: function(extent, object) { - return fitExtent(projection, extent, object); - }, - fitSize: function(size, object) { - return fitSize(projection, size, object); - }, - fitWidth: function(width, object) { - return fitWidth(projection, width, object); - }, - fitHeight: function(height, object) { - return fitHeight(projection, height, object); - } - }; -} - -function naturalEarth1Raw(lambda, phi) { - var phi2 = phi * phi, phi4 = phi2 * phi2; - return [ - lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))), - phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - ]; -} - -naturalEarth1Raw.invert = function(x, y) { - var phi = y, i = 25, delta; - do { - var phi2 = phi * phi, phi4 = phi2 * phi2; - phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) / - (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4))); - } while (abs(delta) > epsilon$2 && --i > 0); - return [ - x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))), - phi - ]; -}; - -function naturalEarth1() { - return projection(naturalEarth1Raw) - .scale(175.295); -} - -function orthographicRaw(x, y) { - return [cos$1(y) * sin$1(x), sin$1(y)]; -} - -orthographicRaw.invert = azimuthalInvert(asin); - -function orthographic() { - return projection(orthographicRaw) - .scale(249.5) - .clipAngle(90 + epsilon$2); -} - -function stereographicRaw(x, y) { - var cy = cos$1(y), k = 1 + cos$1(x) * cy; - return [cy * sin$1(x) / k, sin$1(y) / k]; -} - -stereographicRaw.invert = azimuthalInvert(function(z) { - return 2 * atan(z); -}); - -function stereographic() { - return projection(stereographicRaw) - .scale(250) - .clipAngle(142); -} - -function transverseMercatorRaw(lambda, phi) { - return [log(tan((halfPi$2 + phi) / 2)), -lambda]; -} - -transverseMercatorRaw.invert = function(x, y) { - return [-y, 2 * atan(exp(x)) - halfPi$2]; -}; - -function transverseMercator() { - var m = mercatorProjection(transverseMercatorRaw), - center = m.center, - rotate = m.rotate; - - m.center = function(_) { - return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]); - }; - - m.rotate = function(_) { - return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]); - }; - - return rotate([0, 0, 90]) - .scale(159.155); -} - -function defaultSeparation(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -function meanX(children) { - return children.reduce(meanXReduce, 0) / children.length; -} - -function meanXReduce(x, c) { - return x + c.x; -} - -function maxY(children) { - return 1 + children.reduce(maxYReduce, 0); -} - -function maxYReduce(y, c) { - return Math.max(y, c.y); -} - -function leafLeft(node) { - var children; - while (children = node.children) node = children[0]; - return node; -} - -function leafRight(node) { - var children; - while (children = node.children) node = children[children.length - 1]; - return node; -} - -function cluster() { - var separation = defaultSeparation, - dx = 1, - dy = 1, - nodeSize = false; - - function cluster(root) { - var previousNode, - x = 0; - - // First walk, computing the initial x & y values. - root.eachAfter(function(node) { - var children = node.children; - if (children) { - node.x = meanX(children); - node.y = maxY(children); - } else { - node.x = previousNode ? x += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - - var left = leafLeft(root), - right = leafRight(root), - x0 = left.x - separation(left, right) / 2, - x1 = right.x + separation(right, left) / 2; - - // Second walk, normalizing x & y to the desired size. - return root.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root.x) * dx; - node.y = (root.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root.y ? node.y / root.y : 1)) * dy; - }); - } - - cluster.separation = function(x) { - return arguments.length ? (separation = x, cluster) : separation; - }; - - cluster.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]); - }; - - cluster.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null); - }; - - return cluster; -} - -function count(node) { - var sum = 0, - children = node.children, - i = children && children.length; - if (!i) sum = 1; - else while (--i >= 0) sum += children[i].value; - node.value = sum; -} - -function node_count() { - return this.eachAfter(count); -} - -function node_each(callback) { - var node = this, current, next = [node], children, i, n; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - callback(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - next.push(children[i]); - } - } - } while (next.length); - return this; -} - -function node_eachBefore(callback) { - var node = this, nodes = [node], children, i; - while (node = nodes.pop()) { - callback(node), children = node.children; - if (children) for (i = children.length - 1; i >= 0; --i) { - nodes.push(children[i]); - } - } - return this; -} - -function node_eachAfter(callback) { - var node = this, nodes = [node], next = [], children, i, n; - while (node = nodes.pop()) { - next.push(node), children = node.children; - if (children) for (i = 0, n = children.length; i < n; ++i) { - nodes.push(children[i]); - } - } - while (node = next.pop()) { - callback(node); - } - return this; -} - -function node_sum(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, - children = node.children, - i = children && children.length; - while (--i >= 0) sum += children[i].value; - node.value = sum; - }); -} - -function node_sort(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); -} - -function node_path(end) { - var start = this, - ancestor = leastCommonAncestor(start, end), - nodes = [start]; - while (start !== ancestor) { - start = start.parent; - nodes.push(start); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; -} - -function leastCommonAncestor(a, b) { - if (a === b) return a; - var aNodes = a.ancestors(), - bNodes = b.ancestors(), - c = null; - a = aNodes.pop(); - b = bNodes.pop(); - while (a === b) { - c = a; - a = aNodes.pop(); - b = bNodes.pop(); - } - return c; -} - -function node_ancestors() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; -} - -function node_descendants() { - var nodes = []; - this.each(function(node) { - nodes.push(node); - }); - return nodes; -} - -function node_leaves() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; -} - -function node_links() { - var root = this, links = []; - root.each(function(node) { - if (node !== root) { // Don’t include the root’s parent, if any. - links.push({source: node.parent, target: node}); - } - }); - return links; -} - -function hierarchy(data, children) { - var root = new Node(data), - valued = +data.value && (root.value = data.value), - node, - nodes = [root], - child, - childs, - i, - n; - - if (children == null) children = defaultChildren; - - while (node = nodes.pop()) { - if (valued) node.value = +node.data.value; - if ((childs = children(node.data)) && (n = childs.length)) { - node.children = new Array(n); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new Node(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - - return root.eachBefore(computeHeight); -} - -function node_copy() { - return hierarchy(this).eachBefore(copyData); -} - -function defaultChildren(d) { - return d.children; -} - -function copyData(node) { - node.data = node.data.data; -} - -function computeHeight(node) { - var height = 0; - do node.height = height; - while ((node = node.parent) && (node.height < ++height)); -} - -function Node(data) { - this.data = data; - this.depth = - this.height = 0; - this.parent = null; -} - -Node.prototype = hierarchy.prototype = { - constructor: Node, - count: node_count, - each: node_each, - eachAfter: node_eachAfter, - eachBefore: node_eachBefore, - sum: node_sum, - sort: node_sort, - path: node_path, - ancestors: node_ancestors, - descendants: node_descendants, - leaves: node_leaves, - links: node_links, - copy: node_copy -}; - -var slice$4 = Array.prototype.slice; - -function shuffle$1(array) { - var m = array.length, - t, - i; - - while (m) { - i = Math.random() * m-- | 0; - t = array[m]; - array[m] = array[i]; - array[i] = t; - } - - return array; -} - -function enclose(circles) { - var i = 0, n = (circles = shuffle$1(slice$4.call(circles))).length, B = [], p, e; - - while (i < n) { - p = circles[i]; - if (e && enclosesWeak(e, p)) ++i; - else e = encloseBasis(B = extendBasis(B, p)), i = 0; - } - - return e; -} - -function extendBasis(B, p) { - var i, j; - - if (enclosesWeakAll(p, B)) return [p]; - - // If we get here then B must have at least one element. - for (i = 0; i < B.length; ++i) { - if (enclosesNot(p, B[i]) - && enclosesWeakAll(encloseBasis2(B[i], p), B)) { - return [B[i], p]; - } - } - - // If we get here then B must have at least two elements. - for (i = 0; i < B.length - 1; ++i) { - for (j = i + 1; j < B.length; ++j) { - if (enclosesNot(encloseBasis2(B[i], B[j]), p) - && enclosesNot(encloseBasis2(B[i], p), B[j]) - && enclosesNot(encloseBasis2(B[j], p), B[i]) - && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) { - return [B[i], B[j], p]; - } - } - } - - // If we get here then something is very wrong. - throw new Error; -} - -function enclosesNot(a, b) { - var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y; - return dr < 0 || dr * dr < dx * dx + dy * dy; -} - -function enclosesWeak(a, b) { - var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function enclosesWeakAll(a, B) { - for (var i = 0; i < B.length; ++i) { - if (!enclosesWeak(a, B[i])) { - return false; - } - } - return true; -} - -function encloseBasis(B) { - switch (B.length) { - case 1: return encloseBasis1(B[0]); - case 2: return encloseBasis2(B[0], B[1]); - case 3: return encloseBasis3(B[0], B[1], B[2]); - } -} - -function encloseBasis1(a) { - return { - x: a.x, - y: a.y, - r: a.r - }; -} - -function encloseBasis2(a, b) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1, - l = Math.sqrt(x21 * x21 + y21 * y21); - return { - x: (x1 + x2 + x21 / l * r21) / 2, - y: (y1 + y2 + y21 / l * r21) / 2, - r: (l + r1 + r2) / 2 - }; -} - -function encloseBasis3(a, b, c) { - var x1 = a.x, y1 = a.y, r1 = a.r, - x2 = b.x, y2 = b.y, r2 = b.r, - x3 = c.x, y3 = c.y, r3 = c.r, - a2 = x1 - x2, - a3 = x1 - x3, - b2 = y1 - y2, - b3 = y1 - y3, - c2 = r2 - r1, - c3 = r3 - r1, - d1 = x1 * x1 + y1 * y1 - r1 * r1, - d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2, - d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3, - ab = a3 * b2 - a2 * b3, - xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1, - xb = (b3 * c2 - b2 * c3) / ab, - ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1, - yb = (a2 * c3 - a3 * c2) / ab, - A = xb * xb + yb * yb - 1, - B = 2 * (r1 + xa * xb + ya * yb), - C = xa * xa + ya * ya - r1 * r1, - r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B); - return { - x: x1 + xa + xb * r, - y: y1 + ya + yb * r, - r: r - }; -} - -function place(b, a, c) { - var dx = b.x - a.x, x, a2, - dy = b.y - a.y, y, b2, - d2 = dx * dx + dy * dy; - if (d2) { - a2 = a.r + c.r, a2 *= a2; - b2 = b.r + c.r, b2 *= b2; - if (a2 > b2) { - x = (d2 + b2 - a2) / (2 * d2); - y = Math.sqrt(Math.max(0, b2 / d2 - x * x)); - c.x = b.x - x * dx - y * dy; - c.y = b.y - x * dy + y * dx; - } else { - x = (d2 + a2 - b2) / (2 * d2); - y = Math.sqrt(Math.max(0, a2 / d2 - x * x)); - c.x = a.x + x * dx - y * dy; - c.y = a.y + x * dy + y * dx; - } - } else { - c.x = a.x + c.r; - c.y = a.y; - } -} - -function intersects(a, b) { - var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y; - return dr > 0 && dr * dr > dx * dx + dy * dy; -} - -function score(node) { - var a = node._, - b = node.next._, - ab = a.r + b.r, - dx = (a.x * b.r + b.x * a.r) / ab, - dy = (a.y * b.r + b.y * a.r) / ab; - return dx * dx + dy * dy; -} - -function Node$1(circle) { - this._ = circle; - this.next = null; - this.previous = null; -} - -function packEnclose(circles) { - if (!(n = circles.length)) return 0; - - var a, b, c, n, aa, ca, i, j, k, sj, sk; - - // Place the first circle. - a = circles[0], a.x = 0, a.y = 0; - if (!(n > 1)) return a.r; - - // Place the second circle. - b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0; - if (!(n > 2)) return a.r + b.r; - - // Place the third circle. - place(b, a, c = circles[2]); - - // Initialize the front-chain using the first three circles a, b and c. - a = new Node$1(a), b = new Node$1(b), c = new Node$1(c); - a.next = c.previous = b; - b.next = a.previous = c; - c.next = b.previous = a; - - // Attempt to place each remaining circle… - pack: for (i = 3; i < n; ++i) { - place(a._, b._, c = circles[i]), c = new Node$1(c); - - // Find the closest intersecting circle on the front-chain, if any. - // “Closeness” is determined by linear distance along the front-chain. - // “Ahead” or “behind” is likewise determined by linear distance. - j = b.next, k = a.previous, sj = b._.r, sk = a._.r; - do { - if (sj <= sk) { - if (intersects(j._, c._)) { - b = j, a.next = b, b.previous = a, --i; - continue pack; - } - sj += j._.r, j = j.next; - } else { - if (intersects(k._, c._)) { - a = k, a.next = b, b.previous = a, --i; - continue pack; - } - sk += k._.r, k = k.previous; - } - } while (j !== k.next); - - // Success! Insert the new circle c between a and b. - c.previous = a, c.next = b, a.next = b.previous = b = c; - - // Compute the new closest circle pair to the centroid. - aa = score(a); - while ((c = c.next) !== b) { - if ((ca = score(c)) < aa) { - a = c, aa = ca; - } - } - b = a.next; - } - - // Compute the enclosing circle of the front chain. - a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a); - - // Translate the circles to put the enclosing circle around the origin. - for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y; - - return c.r; -} - -function siblings(circles) { - packEnclose(circles); - return circles; -} - -function optional(f) { - return f == null ? null : required(f); -} - -function required(f) { - if (typeof f !== "function") throw new Error; - return f; -} - -function constantZero() { - return 0; -} - -function constant$9(x) { - return function() { - return x; - }; -} - -function defaultRadius$1(d) { - return Math.sqrt(d.value); -} - -function index$2() { - var radius = null, - dx = 1, - dy = 1, - padding = constantZero; - - function pack(root) { - root.x = dx / 2, root.y = dy / 2; - if (radius) { - root.eachBefore(radiusLeaf(radius)) - .eachAfter(packChildren(padding, 0.5)) - .eachBefore(translateChild(1)); - } else { - root.eachBefore(radiusLeaf(defaultRadius$1)) - .eachAfter(packChildren(constantZero, 1)) - .eachAfter(packChildren(padding, root.r / Math.min(dx, dy))) - .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r))); - } - return root; - } - - pack.radius = function(x) { - return arguments.length ? (radius = optional(x), pack) : radius; - }; - - pack.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy]; - }; - - pack.padding = function(x) { - return arguments.length ? (padding = typeof x === "function" ? x : constant$9(+x), pack) : padding; - }; - - return pack; -} - -function radiusLeaf(radius) { - return function(node) { - if (!node.children) { - node.r = Math.max(0, +radius(node) || 0); - } - }; -} - -function packChildren(padding, k) { - return function(node) { - if (children = node.children) { - var children, - i, - n = children.length, - r = padding(node) * k || 0, - e; - - if (r) for (i = 0; i < n; ++i) children[i].r += r; - e = packEnclose(children); - if (r) for (i = 0; i < n; ++i) children[i].r -= r; - node.r = e + r; - } - }; -} - -function translateChild(k) { - return function(node) { - var parent = node.parent; - node.r *= k; - if (parent) { - node.x = parent.x + k * node.x; - node.y = parent.y + k * node.y; - } - }; -} - -function roundNode(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); -} - -function treemapDice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (x1 - x0) / parent.value; - - while (++i < n) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } -} - -function partition() { - var dx = 1, - dy = 1, - padding = 0, - round = false; - - function partition(root) { - var n = root.height + 1; - root.x0 = - root.y0 = padding; - root.x1 = dx; - root.y1 = dy / n; - root.eachBefore(positionNode(dy, n)); - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(dy, n) { - return function(node) { - if (node.children) { - treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n); - } - var x0 = node.x0, - y0 = node.y0, - x1 = node.x1 - padding, - y1 = node.y1 - padding; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - - partition.round = function(x) { - return arguments.length ? (round = !!x, partition) : round; - }; - - partition.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy]; - }; - - partition.padding = function(x) { - return arguments.length ? (padding = +x, partition) : padding; - }; - - return partition; -} - -var keyPrefix$1 = "$", // Protect against keys like “__proto__”. - preroot = {depth: -1}, - ambiguous = {}; - -function defaultId(d) { - return d.id; -} - -function defaultParentId(d) { - return d.parentId; -} - -function stratify() { - var id = defaultId, - parentId = defaultParentId; - - function stratify(data) { - var d, - i, - n = data.length, - root, - parent, - node, - nodes = new Array(n), - nodeId, - nodeKey, - nodeByKey = {}; - - for (i = 0; i < n; ++i) { - d = data[i], node = nodes[i] = new Node(d); - if ((nodeId = id(d, i, data)) != null && (nodeId += "")) { - nodeKey = keyPrefix$1 + (node.id = nodeId); - nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node; - } - } - - for (i = 0; i < n; ++i) { - node = nodes[i], nodeId = parentId(data[i], i, data); - if (nodeId == null || !(nodeId += "")) { - if (root) throw new Error("multiple roots"); - root = node; - } else { - parent = nodeByKey[keyPrefix$1 + nodeId]; - if (!parent) throw new Error("missing: " + nodeId); - if (parent === ambiguous) throw new Error("ambiguous: " + nodeId); - if (parent.children) parent.children.push(node); - else parent.children = [node]; - node.parent = parent; - } - } - - if (!root) throw new Error("no root"); - root.parent = preroot; - root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight); - root.parent = null; - if (n > 0) throw new Error("cycle"); - - return root; - } - - stratify.id = function(x) { - return arguments.length ? (id = required(x), stratify) : id; - }; - - stratify.parentId = function(x) { - return arguments.length ? (parentId = required(x), stratify) : parentId; - }; - - return stratify; -} - -function defaultSeparation$1(a, b) { - return a.parent === b.parent ? 1 : 2; -} - -// function radialSeparation(a, b) { -// return (a.parent === b.parent ? 1 : 2) / a.depth; -// } - -// This function is used to traverse the left contour of a subtree (or -// subforest). It returns the successor of v on this contour. This successor is -// either given by the leftmost child of v or by the thread of v. The function -// returns null if and only if v is on the highest level of its subtree. -function nextLeft(v) { - var children = v.children; - return children ? children[0] : v.t; -} - -// This function works analogously to nextLeft. -function nextRight(v) { - var children = v.children; - return children ? children[children.length - 1] : v.t; -} - -// Shifts the current subtree rooted at w+. This is done by increasing -// prelim(w+) and mod(w+) by shift. -function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; -} - -// All other shifts, applied to the smaller subtrees between w- and w+, are -// performed by this function. To prepare the shifts, we have to adjust -// change(w+), shift(w+), and change(w-). -function executeShifts(v) { - var shift = 0, - change = 0, - children = v.children, - i = children.length, - w; - while (--i >= 0) { - w = children[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } -} - -// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise, -// returns the specified (default) ancestor. -function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; -} - -function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; // default ancestor - this.a = this; // ancestor - this.z = 0; // prelim - this.m = 0; // mod - this.c = 0; // change - this.s = 0; // shift - this.t = null; // thread - this.i = i; // number -} - -TreeNode.prototype = Object.create(Node.prototype); - -function treeRoot(root) { - var tree = new TreeNode(root, 0), - node, - nodes = [tree], - child, - children, - i, - n; - - while (node = nodes.pop()) { - if (children = node._.children) { - node.children = new Array(n = children.length); - for (i = n - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children[i], i)); - child.parent = node; - } - } - } - - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; -} - -// Node-link tree diagram using the Reingold-Tilford "tidy" algorithm -function tree() { - var separation = defaultSeparation$1, - dx = 1, - dy = 1, - nodeSize = null; - - function tree(root) { - var t = treeRoot(root); - - // Compute the layout using Buchheim et al.’s algorithm. - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - - // If a fixed node size is specified, scale x and y. - if (nodeSize) root.eachBefore(sizeNode); - - // If a fixed tree size is specified, scale x and y based on the extent. - // Compute the left-most, right-most, and depth-most nodes for extents. - else { - var left = root, - right = root, - bottom = root; - root.eachBefore(function(node) { - if (node.x < left.x) left = node; - if (node.x > right.x) right = node; - if (node.depth > bottom.depth) bottom = node; - }); - var s = left === right ? 1 : separation(left, right) / 2, - tx = s - left.x, - kx = dx / (right.x + s + tx), - ky = dy / (bottom.depth || 1); - root.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - - return root; - } - - // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is - // applied recursively to the children of v, as well as the function - // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the - // node v is placed to the midpoint of its outermost children. - function firstWalk(v) { - var children = v.children, - siblings = v.parent.children, - w = v.i ? siblings[v.i - 1] : null; - if (children) { - executeShifts(v); - var midpoint = (children[0].z + children[children.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - - // Computes all real x-coordinates by summing up the modifiers recursively. - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - - // The core of the algorithm. Here, a new subtree is combined with the - // previous subtrees. Threads are used to traverse the inside and outside - // contours of the left and right subtree up to the highest common level. The - // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the - // superscript o means outside and i means inside, the subscript - means left - // subtree and + means right subtree. For summing up the modifiers along the - // contour, we use respective variables si+, si-, so-, and so+. Whenever two - // nodes of the inside contours conflict, we compute the left one of the - // greatest uncommon ancestors using the function ANCESTOR and call MOVE - // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees. - // Finally, we add a new thread (if necessary). - function apportion(v, w, ancestor) { - if (w) { - var vip = v, - vop = v, - vim = w, - vom = vip.parent.children[0], - sip = vip.m, - sop = vop.m, - sim = vim.m, - som = vom.m, - shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - - tree.separation = function(x) { - return arguments.length ? (separation = x, tree) : separation; - }; - - tree.size = function(x) { - return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]); - }; - - tree.nodeSize = function(x) { - return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null); - }; - - return tree; -} - -function treemapSlice(parent, x0, y0, x1, y1) { - var nodes = parent.children, - node, - i = -1, - n = nodes.length, - k = parent.value && (y1 - y0) / parent.value; - - while (++i < n) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } -} - -var phi = (1 + Math.sqrt(5)) / 2; - -function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], - nodes = parent.children, - row, - nodeValue, - i0 = 0, - i1 = 0, - n = nodes.length, - dx, dy, - value = parent.value, - sumValue, - minValue, - maxValue, - newRatio, - minRatio, - alpha, - beta; - - while (i0 < n) { - dx = x1 - x0, dy = y1 - y0; - - // Find the next non-empty node. - do sumValue = nodes[i1++].value; while (!sumValue && i1 < n); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - - // Keep adding nodes while the aspect ratio maintains or improves. - for (; i1 < n; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) minValue = nodeValue; - if (nodeValue > maxValue) maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { sumValue -= nodeValue; break; } - minRatio = newRatio; - } - - // Position and record the row orientation. - rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)}); - if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - - return rows; -} - -var squarify = (function custom(ratio) { - - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - - squarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return squarify; -})(phi); - -function index$3() { - var tile = squarify, - round = false, - dx = 1, - dy = 1, - paddingStack = [0], - paddingInner = constantZero, - paddingTop = constantZero, - paddingRight = constantZero, - paddingBottom = constantZero, - paddingLeft = constantZero; - - function treemap(root) { - root.x0 = - root.y0 = 0; - root.x1 = dx; - root.y1 = dy; - root.eachBefore(positionNode); - paddingStack = [0]; - if (round) root.eachBefore(roundNode); - return root; - } - - function positionNode(node) { - var p = paddingStack[node.depth], - x0 = node.x0 + p, - y0 = node.y0 + p, - x1 = node.x1 - p, - y1 = node.y1 - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - - treemap.round = function(x) { - return arguments.length ? (round = !!x, treemap) : round; - }; - - treemap.size = function(x) { - return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy]; - }; - - treemap.tile = function(x) { - return arguments.length ? (tile = required(x), treemap) : tile; - }; - - treemap.padding = function(x) { - return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner(); - }; - - treemap.paddingInner = function(x) { - return arguments.length ? (paddingInner = typeof x === "function" ? x : constant$9(+x), treemap) : paddingInner; - }; - - treemap.paddingOuter = function(x) { - return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop(); - }; - - treemap.paddingTop = function(x) { - return arguments.length ? (paddingTop = typeof x === "function" ? x : constant$9(+x), treemap) : paddingTop; - }; - - treemap.paddingRight = function(x) { - return arguments.length ? (paddingRight = typeof x === "function" ? x : constant$9(+x), treemap) : paddingRight; - }; - - treemap.paddingBottom = function(x) { - return arguments.length ? (paddingBottom = typeof x === "function" ? x : constant$9(+x), treemap) : paddingBottom; - }; - - treemap.paddingLeft = function(x) { - return arguments.length ? (paddingLeft = typeof x === "function" ? x : constant$9(+x), treemap) : paddingLeft; - }; - - return treemap; -} - -function binary(parent, x0, y0, x1, y1) { - var nodes = parent.children, - i, n = nodes.length, - sum, sums = new Array(n + 1); - - for (sums[0] = sum = i = 0; i < n; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - - partition(0, n, parent.value, x0, y0, x1, y1); - - function partition(i, j, value, x0, y0, x1, y1) { - if (i >= j - 1) { - var node = nodes[i]; - node.x0 = x0, node.y0 = y0; - node.x1 = x1, node.y1 = y1; - return; - } - - var valueOffset = sums[i], - valueTarget = (value / 2) + valueOffset, - k = i + 1, - hi = j - 1; - - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) k = mid + 1; - else hi = mid; - } - - if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k; - - var valueLeft = sums[k] - valueOffset, - valueRight = value - valueLeft; - - if ((x1 - x0) > (y1 - y0)) { - var xk = (x0 * valueRight + x1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, xk, y1); - partition(k, j, valueRight, xk, y0, x1, y1); - } else { - var yk = (y0 * valueRight + y1 * valueLeft) / value; - partition(i, k, valueLeft, x0, y0, x1, yk); - partition(k, j, valueRight, x0, yk, x1, y1); - } - } -} - -function sliceDice(parent, x0, y0, x1, y1) { - (parent.depth & 1 ? treemapSlice : treemapDice)(parent, x0, y0, x1, y1); -} - -var resquarify = (function custom(ratio) { - - function resquarify(parent, x0, y0, x1, y1) { - if ((rows = parent._squarify) && (rows.ratio === ratio)) { - var rows, - row, - nodes, - i, - j = -1, - n, - m = rows.length, - value = parent.value; - - while (++j < m) { - row = rows[j], nodes = row.children; - for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value; - if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value); - else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1); - value -= row.value; - } - } else { - parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1); - rows.ratio = ratio; - } - } - - resquarify.ratio = function(x) { - return custom((x = +x) > 1 ? x : 1); - }; - - return resquarify; -})(phi); - -function area$2(polygon) { - var i = -1, - n = polygon.length, - a, - b = polygon[n - 1], - area = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - area += a[1] * b[0] - a[0] * b[1]; - } - - return area / 2; -} - -function centroid$1(polygon) { - var i = -1, - n = polygon.length, - x = 0, - y = 0, - a, - b = polygon[n - 1], - c, - k = 0; - - while (++i < n) { - a = b; - b = polygon[i]; - k += c = a[0] * b[1] - b[0] * a[1]; - x += (a[0] + b[0]) * c; - y += (a[1] + b[1]) * c; - } - - return k *= 3, [x / k, y / k]; -} - -// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of -// the 3D cross product in a quadrant I Cartesian coordinate system (+x is -// right, +y is up). Returns a positive value if ABC is counter-clockwise, -// negative if clockwise, and zero if the points are collinear. -function cross$1(a, b, c) { - return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); -} - -function lexicographicOrder(a, b) { - return a[0] - b[0] || a[1] - b[1]; -} - -// Computes the upper convex hull per the monotone chain algorithm. -// Assumes points.length >= 3, is sorted by x, unique in y. -// Returns an array of indices into points in left-to-right order. -function computeUpperHullIndexes(points) { - var n = points.length, - indexes = [0, 1], - size = 2; - - for (var i = 2; i < n; ++i) { - while (size > 1 && cross$1(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size; - indexes[size++] = i; - } - - return indexes.slice(0, size); // remove popped points -} - -function hull(points) { - if ((n = points.length) < 3) return null; - - var i, - n, - sortedPoints = new Array(n), - flippedPoints = new Array(n); - - for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i]; - sortedPoints.sort(lexicographicOrder); - for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]]; - - var upperIndexes = computeUpperHullIndexes(sortedPoints), - lowerIndexes = computeUpperHullIndexes(flippedPoints); - - // Construct the hull polygon, removing possible duplicate endpoints. - var skipLeft = lowerIndexes[0] === upperIndexes[0], - skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1], - hull = []; - - // Add upper hull in right-to-l order. - // Then add lower hull in left-to-right order. - for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]); - for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]); - - return hull; -} - -function contains$2(polygon, point) { - var n = polygon.length, - p = polygon[n - 1], - x = point[0], y = point[1], - x0 = p[0], y0 = p[1], - x1, y1, - inside = false; - - for (var i = 0; i < n; ++i) { - p = polygon[i], x1 = p[0], y1 = p[1]; - if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside; - x0 = x1, y0 = y1; - } - - return inside; -} - -function length$2(polygon) { - var i = -1, - n = polygon.length, - b = polygon[n - 1], - xa, - ya, - xb = b[0], - yb = b[1], - perimeter = 0; - - while (++i < n) { - xa = xb; - ya = yb; - b = polygon[i]; - xb = b[0]; - yb = b[1]; - xa -= xb; - ya -= yb; - perimeter += Math.sqrt(xa * xa + ya * ya); - } - - return perimeter; -} - -function defaultSource$1() { - return Math.random(); -} - -var uniform = (function sourceRandomUniform(source) { - function randomUniform(min, max) { - min = min == null ? 0 : +min; - max = max == null ? 1 : +max; - if (arguments.length === 1) max = min, min = 0; - else max -= min; - return function() { - return source() * max + min; - }; - } - - randomUniform.source = sourceRandomUniform; - - return randomUniform; -})(defaultSource$1); - -var normal = (function sourceRandomNormal(source) { - function randomNormal(mu, sigma) { - var x, r; - mu = mu == null ? 0 : +mu; - sigma = sigma == null ? 1 : +sigma; - return function() { - var y; - - // If available, use the second previously-generated uniform random. - if (x != null) y = x, x = null; - - // Otherwise, generate a new x and y. - else do { - x = source() * 2 - 1; - y = source() * 2 - 1; - r = x * x + y * y; - } while (!r || r > 1); - - return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r); - }; - } - - randomNormal.source = sourceRandomNormal; - - return randomNormal; -})(defaultSource$1); - -var logNormal = (function sourceRandomLogNormal(source) { - function randomLogNormal() { - var randomNormal = normal.source(source).apply(this, arguments); - return function() { - return Math.exp(randomNormal()); - }; - } - - randomLogNormal.source = sourceRandomLogNormal; - - return randomLogNormal; -})(defaultSource$1); - -var irwinHall = (function sourceRandomIrwinHall(source) { - function randomIrwinHall(n) { - return function() { - for (var sum = 0, i = 0; i < n; ++i) sum += source(); - return sum; - }; - } - - randomIrwinHall.source = sourceRandomIrwinHall; - - return randomIrwinHall; -})(defaultSource$1); - -var bates = (function sourceRandomBates(source) { - function randomBates(n) { - var randomIrwinHall = irwinHall.source(source)(n); - return function() { - return randomIrwinHall() / n; - }; - } - - randomBates.source = sourceRandomBates; - - return randomBates; -})(defaultSource$1); - -var exponential$1 = (function sourceRandomExponential(source) { - function randomExponential(lambda) { - return function() { - return -Math.log(1 - source()) / lambda; - }; - } - - randomExponential.source = sourceRandomExponential; - - return randomExponential; -})(defaultSource$1); - -function initRange(domain, range) { - switch (arguments.length) { - case 0: break; - case 1: this.range(domain); break; - default: this.range(range).domain(domain); break; - } - return this; -} - -function initInterpolator(domain, interpolator) { - switch (arguments.length) { - case 0: break; - case 1: this.interpolator(domain); break; - default: this.interpolator(interpolator).domain(domain); break; - } - return this; -} - -var array$3 = Array.prototype; - -var map$3 = array$3.map; -var slice$5 = array$3.slice; - -var implicit = {name: "implicit"}; - -function ordinal() { - var index = map$1(), - domain = [], - range = [], - unknown = implicit; - - function scale(d) { - var key = d + "", i = index.get(key); - if (!i) { - if (unknown !== implicit) return unknown; - index.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = [], index = map$1(); - var i = -1, n = _.length, d, key; - while (++i < n) if (!index.has(key = (d = _[i]) + "")) index.set(key, domain.push(d)); - return scale; - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), scale) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function band() { - var scale = ordinal().unknown(undefined), - domain = scale.domain, - ordinalRange = scale.range, - range = [0, 1], - step, - bandwidth, - round = false, - paddingInner = 0, - paddingOuter = 0, - align = 0.5; - - delete scale.unknown; - - function rescale() { - var n = domain().length, - reverse = range[1] < range[0], - start = range[reverse - 0], - stop = range[1 - reverse]; - step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2); - if (round) step = Math.floor(step); - start += (stop - start - step * (n - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) start = Math.round(start), bandwidth = Math.round(bandwidth); - var values = sequence(n).map(function(i) { return start + step * i; }); - return ordinalRange(reverse ? values.reverse() : values); - } - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.range = function(_) { - return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = [+_[0], +_[1]], round = true, rescale(); - }; - - scale.bandwidth = function() { - return bandwidth; - }; - - scale.step = function() { - return step; - }; - - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - - scale.copy = function() { - return band(domain(), range) - .round(round) - .paddingInner(paddingInner) - .paddingOuter(paddingOuter) - .align(align); - }; - - return initRange.apply(rescale(), arguments); -} - -function pointish(scale) { - var copy = scale.copy; - - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - - scale.copy = function() { - return pointish(copy()); - }; - - return scale; -} - -function point$1() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -function constant$a(x) { - return function() { - return x; - }; -} - -function number$2(x) { - return +x; -} - -var unit = [0, 1]; - -function identity$6(x) { - return x; -} - -function normalize(a, b) { - return (b -= (a = +a)) - ? function(x) { return (x - a) / b; } - : constant$a(isNaN(b) ? NaN : 0.5); -} - -function clamper(domain) { - var a = domain[0], b = domain[domain.length - 1], t; - if (a > b) t = a, a = b, b = t; - return function(x) { return Math.max(a, Math.min(b, x)); }; -} - -// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1]. -// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b]. -function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x) { return r0(d0(x)); }; -} - -function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, - d = new Array(j), - r = new Array(j), - i = -1; - - // Reverse descending domains. - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - - return function(x) { - var i = bisectRight(domain, x, 1, j) - 1; - return r[i](d[i](x)); - }; -} - -function copy(source, target) { - return target - .domain(source.domain()) - .range(source.range()) - .interpolate(source.interpolate()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function transformer$1() { - var domain = unit, - range = unit, - interpolate = interpolateValue, - transform, - untransform, - unknown, - clamp = identity$6, - piecewise, - output, - input; - - function rescale() { - piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap; - output = input = null; - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x))); - } - - scale.invert = function(y) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y))); - }; - - scale.domain = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), clamp === identity$6 || (clamp = clamper(domain)), rescale()) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.rangeRound = function(_) { - return range = slice$5.call(_), interpolate = interpolateRound, rescale(); - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? clamper(domain) : identity$6, scale) : clamp !== identity$6; - }; - - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t, u) { - transform = t, untransform = u; - return rescale(); - }; -} - -function continuous(transform, untransform) { - return transformer$1()(transform, untransform); -} - -function tickFormat(start, stop, count, specifier) { - var step = tickStep(start, stop, count), - precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision; - return exports.formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return exports.format(specifier); -} - -function linearish(scale) { - var domain = scale.domain; - - scale.ticks = function(count) { - var d = domain(); - return ticks(d[0], d[d.length - 1], count == null ? 10 : count); - }; - - scale.tickFormat = function(count, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier); - }; - - scale.nice = function(count) { - if (count == null) count = 10; - - var d = domain(), - i0 = 0, - i1 = d.length - 1, - start = d[i0], - stop = d[i1], - step; - - if (stop < start) { - step = start, start = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - - step = tickIncrement(start, stop, count); - - if (step > 0) { - start = Math.floor(start / step) * step; - stop = Math.ceil(stop / step) * step; - step = tickIncrement(start, stop, count); - } else if (step < 0) { - start = Math.ceil(start * step) / step; - stop = Math.floor(stop * step) / step; - step = tickIncrement(start, stop, count); - } - - if (step > 0) { - d[i0] = Math.floor(start / step) * step; - d[i1] = Math.ceil(stop / step) * step; - domain(d); - } else if (step < 0) { - d[i0] = Math.ceil(start * step) / step; - d[i1] = Math.floor(stop * step) / step; - domain(d); - } - - return scale; - }; - - return scale; -} - -function linear$2() { - var scale = continuous(identity$6, identity$6); - - scale.copy = function() { - return copy(scale, linear$2()); - }; - - initRange.apply(scale, arguments); - - return linearish(scale); -} - -function identity$7(domain) { - var unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : x; - } - - scale.invert = scale; - - scale.domain = scale.range = function(_) { - return arguments.length ? (domain = map$3.call(_, number$2), scale) : domain.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return identity$7(domain).unknown(unknown); - }; - - domain = arguments.length ? map$3.call(domain, number$2) : [0, 1]; - - return linearish(scale); -} - -function nice(domain, interval) { - domain = domain.slice(); - - var i0 = 0, - i1 = domain.length - 1, - x0 = domain[i0], - x1 = domain[i1], - t; - - if (x1 < x0) { - t = i0, i0 = i1, i1 = t; - t = x0, x0 = x1, x1 = t; - } - - domain[i0] = interval.floor(x0); - domain[i1] = interval.ceil(x1); - return domain; -} - -function transformLog(x) { - return Math.log(x); -} - -function transformExp(x) { - return Math.exp(x); -} - -function transformLogn(x) { - return -Math.log(-x); -} - -function transformExpn(x) { - return -Math.exp(-x); -} - -function pow10(x) { - return isFinite(x) ? +("1e" + x) : x < 0 ? 0 : x; -} - -function powp(base) { - return base === 10 ? pow10 - : base === Math.E ? Math.exp - : function(x) { return Math.pow(base, x); }; -} - -function logp(base) { - return base === Math.E ? Math.log - : base === 10 && Math.log10 - || base === 2 && Math.log2 - || (base = Math.log(base), function(x) { return Math.log(x) / base; }); -} - -function reflect(f) { - return function(x) { - return -f(-x); - }; -} - -function loggish(transform) { - var scale = transform(transformLog, transformExp), - domain = scale.domain, - base = 10, - logs, - pows; - - function rescale() { - logs = logp(base), pows = powp(base); - if (domain()[0] < 0) { - logs = reflect(logs), pows = reflect(pows); - transform(transformLogn, transformExpn); - } else { - transform(transformLog, transformExp); - } - return scale; - } - - scale.base = function(_) { - return arguments.length ? (base = +_, rescale()) : base; - }; - - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - - scale.ticks = function(count) { - var d = domain(), - u = d[0], - v = d[d.length - 1], - r; - - if (r = v < u) i = u, u = v, v = i; - - var i = logs(u), - j = logs(v), - p, - k, - t, - n = count == null ? 10 : +count, - z = []; - - if (!(base % 1) && j - i < n) { - i = Math.round(i) - 1, j = Math.round(j) + 1; - if (u > 0) for (; i < j; ++i) { - for (k = 1, p = pows(i); k < base; ++k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } else for (; i < j; ++i) { - for (k = base - 1, p = pows(i); k >= 1; --k) { - t = p * k; - if (t < u) continue; - if (t > v) break; - z.push(t); - } - } - } else { - z = ticks(i, j, Math.min(j - i, n)).map(pows); - } - - return r ? z.reverse() : z; - }; - - scale.tickFormat = function(count, specifier) { - if (specifier == null) specifier = base === 10 ? ".0e" : ","; - if (typeof specifier !== "function") specifier = exports.format(specifier); - if (count === Infinity) return specifier; - if (count == null) count = 10; - var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate? - return function(d) { - var i = d / pows(Math.round(logs(d))); - if (i * base < base - 0.5) i *= base; - return i <= k ? specifier(d) : ""; - }; - }; - - scale.nice = function() { - return domain(nice(domain(), { - floor: function(x) { return pows(Math.floor(logs(x))); }, - ceil: function(x) { return pows(Math.ceil(logs(x))); } - })); - }; - - return scale; -} - -function log$1() { - var scale = loggish(transformer$1()).domain([1, 10]); - - scale.copy = function() { - return copy(scale, log$1()).base(scale.base()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function transformSymlog(c) { - return function(x) { - return Math.sign(x) * Math.log1p(Math.abs(x / c)); - }; -} - -function transformSymexp(c) { - return function(x) { - return Math.sign(x) * Math.expm1(Math.abs(x)) * c; - }; -} - -function symlogish(transform) { - var c = 1, scale = transform(transformSymlog(c), transformSymexp(c)); - - scale.constant = function(_) { - return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c; - }; - - return linearish(scale); -} - -function symlog() { - var scale = symlogish(transformer$1()); - - scale.copy = function() { - return copy(scale, symlog()).constant(scale.constant()); - }; - - return initRange.apply(scale, arguments); -} - -function transformPow(exponent) { - return function(x) { - return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent); - }; -} - -function transformSqrt(x) { - return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x); -} - -function transformSquare(x) { - return x < 0 ? -x * x : x * x; -} - -function powish(transform) { - var scale = transform(identity$6, identity$6), - exponent = 1; - - function rescale() { - return exponent === 1 ? transform(identity$6, identity$6) - : exponent === 0.5 ? transform(transformSqrt, transformSquare) - : transform(transformPow(exponent), transformPow(1 / exponent)); - } - - scale.exponent = function(_) { - return arguments.length ? (exponent = +_, rescale()) : exponent; - }; - - return linearish(scale); -} - -function pow$1() { - var scale = powish(transformer$1()); - - scale.copy = function() { - return copy(scale, pow$1()).exponent(scale.exponent()); - }; - - initRange.apply(scale, arguments); - - return scale; -} - -function sqrt$1() { - return pow$1.apply(null, arguments).exponent(0.5); -} - -function quantile() { - var domain = [], - range = [], - thresholds = [], - unknown; - - function rescale() { - var i = 0, n = Math.max(1, range.length); - thresholds = new Array(n - 1); - while (++i < n) thresholds[i - 1] = threshold(domain, i / n); - return scale; - } - - function scale(x) { - return isNaN(x = +x) ? unknown : range[bisectRight(thresholds, x)]; - } - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] : [ - i > 0 ? thresholds[i - 1] : domain[0], - i < thresholds.length ? thresholds[i] : domain[domain.length - 1] - ]; - }; - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return rescale(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), rescale()) : range.slice(); - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.quantiles = function() { - return thresholds.slice(); - }; - - scale.copy = function() { - return quantile() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -function quantize$1() { - var x0 = 0, - x1 = 1, - n = 1, - domain = [0.5], - range = [0, 1], - unknown; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - function rescale() { - var i = -1; - domain = new Array(n); - while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1); - return scale; - } - - scale.domain = function(_) { - return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1]; - }; - - scale.range = function(_) { - return arguments.length ? (n = (range = slice$5.call(_)).length - 1, rescale()) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return i < 0 ? [NaN, NaN] - : i < 1 ? [x0, domain[0]] - : i >= n ? [domain[n - 1], x1] - : [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : scale; - }; - - scale.thresholds = function() { - return domain.slice(); - }; - - scale.copy = function() { - return quantize$1() - .domain([x0, x1]) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(linearish(scale), arguments); -} - -function threshold$1() { - var domain = [0.5], - range = [0, 1], - unknown, - n = 1; - - function scale(x) { - return x <= x ? range[bisectRight(domain, x, 0, n)] : unknown; - } - - scale.domain = function(_) { - return arguments.length ? (domain = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice(); - }; - - scale.range = function(_) { - return arguments.length ? (range = slice$5.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice(); - }; - - scale.invertExtent = function(y) { - var i = range.indexOf(y); - return [domain[i - 1], domain[i]]; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - scale.copy = function() { - return threshold$1() - .domain(domain) - .range(range) - .unknown(unknown); - }; - - return initRange.apply(scale, arguments); -} - -var t0$1 = new Date, - t1$1 = new Date; - -function newInterval(floori, offseti, count, field) { - - function interval(date) { - return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date; - } - - interval.floor = function(date) { - return floori(date = new Date(+date)), date; - }; - - interval.ceil = function(date) { - return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date; - }; - - interval.round = function(date) { - var d0 = interval(date), - d1 = interval.ceil(date); - return date - d0 < d1 - date ? d0 : d1; - }; - - interval.offset = function(date, step) { - return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date; - }; - - interval.range = function(start, stop, step) { - var range = [], previous; - start = interval.ceil(start); - step = step == null ? 1 : Math.floor(step); - if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date - do range.push(previous = new Date(+start)), offseti(start, step), floori(start); - while (previous < start && start < stop); - return range; - }; - - interval.filter = function(test) { - return newInterval(function(date) { - if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1); - }, function(date, step) { - if (date >= date) { - if (step < 0) while (++step <= 0) { - while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty - } else while (--step >= 0) { - while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty - } - } - }); - }; - - if (count) { - interval.count = function(start, end) { - t0$1.setTime(+start), t1$1.setTime(+end); - floori(t0$1), floori(t1$1); - return Math.floor(count(t0$1, t1$1)); - }; - - interval.every = function(step) { - step = Math.floor(step); - return !isFinite(step) || !(step > 0) ? null - : !(step > 1) ? interval - : interval.filter(field - ? function(d) { return field(d) % step === 0; } - : function(d) { return interval.count(0, d) % step === 0; }); - }; - } - - return interval; -} - -var millisecond = newInterval(function() { - // noop -}, function(date, step) { - date.setTime(+date + step); -}, function(start, end) { - return end - start; -}); - -// An optimized implementation for this simple case. -millisecond.every = function(k) { - k = Math.floor(k); - if (!isFinite(k) || !(k > 0)) return null; - if (!(k > 1)) return millisecond; - return newInterval(function(date) { - date.setTime(Math.floor(date / k) * k); - }, function(date, step) { - date.setTime(+date + step * k); - }, function(start, end) { - return (end - start) / k; - }); -}; -var milliseconds = millisecond.range; - -var durationSecond = 1e3; -var durationMinute = 6e4; -var durationHour = 36e5; -var durationDay = 864e5; -var durationWeek = 6048e5; - -var second = newInterval(function(date) { - date.setTime(date - date.getMilliseconds()); -}, function(date, step) { - date.setTime(+date + step * durationSecond); -}, function(start, end) { - return (end - start) / durationSecond; -}, function(date) { - return date.getUTCSeconds(); -}); -var seconds = second.range; - -var minute = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getMinutes(); -}); -var minutes = minute.range; - -var hour = newInterval(function(date) { - date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getHours(); -}); -var hours = hour.range; - -var day = newInterval(function(date) { - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setDate(date.getDate() + step); -}, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay; -}, function(date) { - return date.getDate() - 1; -}); -var days = day.range; - -function weekday(i) { - return newInterval(function(date) { - date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setDate(date.getDate() + step * 7); - }, function(start, end) { - return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek; - }); -} - -var sunday = weekday(0); -var monday = weekday(1); -var tuesday = weekday(2); -var wednesday = weekday(3); -var thursday = weekday(4); -var friday = weekday(5); -var saturday = weekday(6); - -var sundays = sunday.range; -var mondays = monday.range; -var tuesdays = tuesday.range; -var wednesdays = wednesday.range; -var thursdays = thursday.range; -var fridays = friday.range; -var saturdays = saturday.range; - -var month = newInterval(function(date) { - date.setDate(1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setMonth(date.getMonth() + step); -}, function(start, end) { - return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12; -}, function(date) { - return date.getMonth(); -}); -var months = month.range; - -var year = newInterval(function(date) { - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); -}, function(date, step) { - date.setFullYear(date.getFullYear() + step); -}, function(start, end) { - return end.getFullYear() - start.getFullYear(); -}, function(date) { - return date.getFullYear(); -}); - -// An optimized implementation for this simple case. -year.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setFullYear(Math.floor(date.getFullYear() / k) * k); - date.setMonth(0, 1); - date.setHours(0, 0, 0, 0); - }, function(date, step) { - date.setFullYear(date.getFullYear() + step * k); - }); -}; -var years = year.range; - -var utcMinute = newInterval(function(date) { - date.setUTCSeconds(0, 0); -}, function(date, step) { - date.setTime(+date + step * durationMinute); -}, function(start, end) { - return (end - start) / durationMinute; -}, function(date) { - return date.getUTCMinutes(); -}); -var utcMinutes = utcMinute.range; - -var utcHour = newInterval(function(date) { - date.setUTCMinutes(0, 0, 0); -}, function(date, step) { - date.setTime(+date + step * durationHour); -}, function(start, end) { - return (end - start) / durationHour; -}, function(date) { - return date.getUTCHours(); -}); -var utcHours = utcHour.range; - -var utcDay = newInterval(function(date) { - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCDate(date.getUTCDate() + step); -}, function(start, end) { - return (end - start) / durationDay; -}, function(date) { - return date.getUTCDate() - 1; -}); -var utcDays = utcDay.range; - -function utcWeekday(i) { - return newInterval(function(date) { - date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCDate(date.getUTCDate() + step * 7); - }, function(start, end) { - return (end - start) / durationWeek; - }); -} - -var utcSunday = utcWeekday(0); -var utcMonday = utcWeekday(1); -var utcTuesday = utcWeekday(2); -var utcWednesday = utcWeekday(3); -var utcThursday = utcWeekday(4); -var utcFriday = utcWeekday(5); -var utcSaturday = utcWeekday(6); - -var utcSundays = utcSunday.range; -var utcMondays = utcMonday.range; -var utcTuesdays = utcTuesday.range; -var utcWednesdays = utcWednesday.range; -var utcThursdays = utcThursday.range; -var utcFridays = utcFriday.range; -var utcSaturdays = utcSaturday.range; - -var utcMonth = newInterval(function(date) { - date.setUTCDate(1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCMonth(date.getUTCMonth() + step); -}, function(start, end) { - return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12; -}, function(date) { - return date.getUTCMonth(); -}); -var utcMonths = utcMonth.range; - -var utcYear = newInterval(function(date) { - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); -}, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step); -}, function(start, end) { - return end.getUTCFullYear() - start.getUTCFullYear(); -}, function(date) { - return date.getUTCFullYear(); -}); - -// An optimized implementation for this simple case. -utcYear.every = function(k) { - return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) { - date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k); - date.setUTCMonth(0, 1); - date.setUTCHours(0, 0, 0, 0); - }, function(date, step) { - date.setUTCFullYear(date.getUTCFullYear() + step * k); - }); -}; -var utcYears = utcYear.range; - -function localDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L); - date.setFullYear(d.y); - return date; - } - return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L); -} - -function utcDate(d) { - if (0 <= d.y && d.y < 100) { - var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L)); - date.setUTCFullYear(d.y); - return date; - } - return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L)); -} - -function newDate(y, m, d) { - return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0}; -} - -function formatLocale$1(locale) { - var locale_dateTime = locale.dateTime, - locale_date = locale.date, - locale_time = locale.time, - locale_periods = locale.periods, - locale_weekdays = locale.days, - locale_shortWeekdays = locale.shortDays, - locale_months = locale.months, - locale_shortMonths = locale.shortMonths; - - var periodRe = formatRe(locale_periods), - periodLookup = formatLookup(locale_periods), - weekdayRe = formatRe(locale_weekdays), - weekdayLookup = formatLookup(locale_weekdays), - shortWeekdayRe = formatRe(locale_shortWeekdays), - shortWeekdayLookup = formatLookup(locale_shortWeekdays), - monthRe = formatRe(locale_months), - monthLookup = formatLookup(locale_months), - shortMonthRe = formatRe(locale_shortMonths), - shortMonthLookup = formatLookup(locale_shortMonths); - - var formats = { - "a": formatShortWeekday, - "A": formatWeekday, - "b": formatShortMonth, - "B": formatMonth, - "c": null, - "d": formatDayOfMonth, - "e": formatDayOfMonth, - "f": formatMicroseconds, - "H": formatHour24, - "I": formatHour12, - "j": formatDayOfYear, - "L": formatMilliseconds, - "m": formatMonthNumber, - "M": formatMinutes, - "p": formatPeriod, - "q": formatQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatSeconds, - "u": formatWeekdayNumberMonday, - "U": formatWeekNumberSunday, - "V": formatWeekNumberISO, - "w": formatWeekdayNumberSunday, - "W": formatWeekNumberMonday, - "x": null, - "X": null, - "y": formatYear$1, - "Y": formatFullYear, - "Z": formatZone, - "%": formatLiteralPercent - }; - - var utcFormats = { - "a": formatUTCShortWeekday, - "A": formatUTCWeekday, - "b": formatUTCShortMonth, - "B": formatUTCMonth, - "c": null, - "d": formatUTCDayOfMonth, - "e": formatUTCDayOfMonth, - "f": formatUTCMicroseconds, - "H": formatUTCHour24, - "I": formatUTCHour12, - "j": formatUTCDayOfYear, - "L": formatUTCMilliseconds, - "m": formatUTCMonthNumber, - "M": formatUTCMinutes, - "p": formatUTCPeriod, - "q": formatUTCQuarter, - "Q": formatUnixTimestamp, - "s": formatUnixTimestampSeconds, - "S": formatUTCSeconds, - "u": formatUTCWeekdayNumberMonday, - "U": formatUTCWeekNumberSunday, - "V": formatUTCWeekNumberISO, - "w": formatUTCWeekdayNumberSunday, - "W": formatUTCWeekNumberMonday, - "x": null, - "X": null, - "y": formatUTCYear, - "Y": formatUTCFullYear, - "Z": formatUTCZone, - "%": formatLiteralPercent - }; - - var parses = { - "a": parseShortWeekday, - "A": parseWeekday, - "b": parseShortMonth, - "B": parseMonth, - "c": parseLocaleDateTime, - "d": parseDayOfMonth, - "e": parseDayOfMonth, - "f": parseMicroseconds, - "H": parseHour24, - "I": parseHour24, - "j": parseDayOfYear, - "L": parseMilliseconds, - "m": parseMonthNumber, - "M": parseMinutes, - "p": parsePeriod, - "q": parseQuarter, - "Q": parseUnixTimestamp, - "s": parseUnixTimestampSeconds, - "S": parseSeconds, - "u": parseWeekdayNumberMonday, - "U": parseWeekNumberSunday, - "V": parseWeekNumberISO, - "w": parseWeekdayNumberSunday, - "W": parseWeekNumberMonday, - "x": parseLocaleDate, - "X": parseLocaleTime, - "y": parseYear, - "Y": parseFullYear, - "Z": parseZone, - "%": parseLiteralPercent - }; - - // These recursive directive definitions must be deferred. - formats.x = newFormat(locale_date, formats); - formats.X = newFormat(locale_time, formats); - formats.c = newFormat(locale_dateTime, formats); - utcFormats.x = newFormat(locale_date, utcFormats); - utcFormats.X = newFormat(locale_time, utcFormats); - utcFormats.c = newFormat(locale_dateTime, utcFormats); - - function newFormat(specifier, formats) { - return function(date) { - var string = [], - i = -1, - j = 0, - n = specifier.length, - c, - pad, - format; - - if (!(date instanceof Date)) date = new Date(+date); - - while (++i < n) { - if (specifier.charCodeAt(i) === 37) { - string.push(specifier.slice(j, i)); - if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i); - else pad = c === "e" ? " " : "0"; - if (format = formats[c]) c = format(date, pad); - string.push(c); - j = i + 1; - } - } - - string.push(specifier.slice(j, i)); - return string.join(""); - }; - } - - function newParse(specifier, Z) { - return function(string) { - var d = newDate(1900, undefined, 1), - i = parseSpecifier(d, specifier, string += "", 0), - week, day$1; - if (i != string.length) return null; - - // If a UNIX timestamp is specified, return it. - if ("Q" in d) return new Date(d.Q); - if ("s" in d) return new Date(d.s * 1000 + ("L" in d ? d.L : 0)); - - // If this is utcParse, never use the local timezone. - if (Z && !("Z" in d)) d.Z = 0; - - // The am-pm flag is 0 for AM, and 1 for PM. - if ("p" in d) d.H = d.H % 12 + d.p * 12; - - // If the month was not specified, inherit from the quarter. - if (d.m === undefined) d.m = "q" in d ? d.q : 0; - - // Convert day-of-week and week-of-year to day-of-year. - if ("V" in d) { - if (d.V < 1 || d.V > 53) return null; - if (!("w" in d)) d.w = 1; - if ("Z" in d) { - week = utcDate(newDate(d.y, 0, 1)), day$1 = week.getUTCDay(); - week = day$1 > 4 || day$1 === 0 ? utcMonday.ceil(week) : utcMonday(week); - week = utcDay.offset(week, (d.V - 1) * 7); - d.y = week.getUTCFullYear(); - d.m = week.getUTCMonth(); - d.d = week.getUTCDate() + (d.w + 6) % 7; - } else { - week = localDate(newDate(d.y, 0, 1)), day$1 = week.getDay(); - week = day$1 > 4 || day$1 === 0 ? monday.ceil(week) : monday(week); - week = day.offset(week, (d.V - 1) * 7); - d.y = week.getFullYear(); - d.m = week.getMonth(); - d.d = week.getDate() + (d.w + 6) % 7; - } - } else if ("W" in d || "U" in d) { - if (!("w" in d)) d.w = "u" in d ? d.u % 7 : "W" in d ? 1 : 0; - day$1 = "Z" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay(); - d.m = 0; - d.d = "W" in d ? (d.w + 6) % 7 + d.W * 7 - (day$1 + 5) % 7 : d.w + d.U * 7 - (day$1 + 6) % 7; - } - - // If a time zone is specified, all fields are interpreted as UTC and then - // offset according to the specified time zone. - if ("Z" in d) { - d.H += d.Z / 100 | 0; - d.M += d.Z % 100; - return utcDate(d); - } - - // Otherwise, all fields are in local time. - return localDate(d); - }; - } - - function parseSpecifier(d, specifier, string, j) { - var i = 0, - n = specifier.length, - m = string.length, - c, - parse; - - while (i < n) { - if (j >= m) return -1; - c = specifier.charCodeAt(i++); - if (c === 37) { - c = specifier.charAt(i++); - parse = parses[c in pads ? specifier.charAt(i++) : c]; - if (!parse || ((j = parse(d, string, j)) < 0)) return -1; - } else if (c != string.charCodeAt(j++)) { - return -1; - } - } - - return j; - } - - function parsePeriod(d, string, i) { - var n = periodRe.exec(string.slice(i)); - return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortWeekday(d, string, i) { - var n = shortWeekdayRe.exec(string.slice(i)); - return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseWeekday(d, string, i) { - var n = weekdayRe.exec(string.slice(i)); - return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseShortMonth(d, string, i) { - var n = shortMonthRe.exec(string.slice(i)); - return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseMonth(d, string, i) { - var n = monthRe.exec(string.slice(i)); - return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1; - } - - function parseLocaleDateTime(d, string, i) { - return parseSpecifier(d, locale_dateTime, string, i); - } - - function parseLocaleDate(d, string, i) { - return parseSpecifier(d, locale_date, string, i); - } - - function parseLocaleTime(d, string, i) { - return parseSpecifier(d, locale_time, string, i); - } - - function formatShortWeekday(d) { - return locale_shortWeekdays[d.getDay()]; - } - - function formatWeekday(d) { - return locale_weekdays[d.getDay()]; - } - - function formatShortMonth(d) { - return locale_shortMonths[d.getMonth()]; - } - - function formatMonth(d) { - return locale_months[d.getMonth()]; - } - - function formatPeriod(d) { - return locale_periods[+(d.getHours() >= 12)]; - } - - function formatQuarter(d) { - return 1 + ~~(d.getMonth() / 3); - } - - function formatUTCShortWeekday(d) { - return locale_shortWeekdays[d.getUTCDay()]; - } - - function formatUTCWeekday(d) { - return locale_weekdays[d.getUTCDay()]; - } - - function formatUTCShortMonth(d) { - return locale_shortMonths[d.getUTCMonth()]; - } - - function formatUTCMonth(d) { - return locale_months[d.getUTCMonth()]; - } - - function formatUTCPeriod(d) { - return locale_periods[+(d.getUTCHours() >= 12)]; - } - - function formatUTCQuarter(d) { - return 1 + ~~(d.getUTCMonth() / 3); - } - - return { - format: function(specifier) { - var f = newFormat(specifier += "", formats); - f.toString = function() { return specifier; }; - return f; - }, - parse: function(specifier) { - var p = newParse(specifier += "", false); - p.toString = function() { return specifier; }; - return p; - }, - utcFormat: function(specifier) { - var f = newFormat(specifier += "", utcFormats); - f.toString = function() { return specifier; }; - return f; - }, - utcParse: function(specifier) { - var p = newParse(specifier += "", true); - p.toString = function() { return specifier; }; - return p; - } - }; -} - -var pads = {"-": "", "_": " ", "0": "0"}, - numberRe = /^\s*\d+/, // note: ignores next directive - percentRe = /^%/, - requoteRe = /[\\^$*+?|[\]().{}]/g; - -function pad$1(value, fill, width) { - var sign = value < 0 ? "-" : "", - string = (sign ? -value : value) + "", - length = string.length; - return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); -} - -function requote(s) { - return s.replace(requoteRe, "\\$&"); -} - -function formatRe(names) { - return new RegExp("^(?:" + names.map(requote).join("|") + ")", "i"); -} - -function formatLookup(names) { - var map = {}, i = -1, n = names.length; - while (++i < n) map[names[i].toLowerCase()] = i; - return map; -} - -function parseWeekdayNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.w = +n[0], i + n[0].length) : -1; -} - -function parseWeekdayNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.u = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberSunday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.U = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberISO(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.V = +n[0], i + n[0].length) : -1; -} - -function parseWeekNumberMonday(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.W = +n[0], i + n[0].length) : -1; -} - -function parseFullYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 4)); - return n ? (d.y = +n[0], i + n[0].length) : -1; -} - -function parseYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1; -} - -function parseZone(d, string, i) { - var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(string.slice(i, i + 6)); - return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || "00")), i + n[0].length) : -1; -} - -function parseQuarter(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 1)); - return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1; -} - -function parseMonthNumber(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.m = n[0] - 1, i + n[0].length) : -1; -} - -function parseDayOfMonth(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.d = +n[0], i + n[0].length) : -1; -} - -function parseDayOfYear(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1; -} - -function parseHour24(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.H = +n[0], i + n[0].length) : -1; -} - -function parseMinutes(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.M = +n[0], i + n[0].length) : -1; -} - -function parseSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 2)); - return n ? (d.S = +n[0], i + n[0].length) : -1; -} - -function parseMilliseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 3)); - return n ? (d.L = +n[0], i + n[0].length) : -1; -} - -function parseMicroseconds(d, string, i) { - var n = numberRe.exec(string.slice(i, i + 6)); - return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1; -} - -function parseLiteralPercent(d, string, i) { - var n = percentRe.exec(string.slice(i, i + 1)); - return n ? i + n[0].length : -1; -} - -function parseUnixTimestamp(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.Q = +n[0], i + n[0].length) : -1; -} - -function parseUnixTimestampSeconds(d, string, i) { - var n = numberRe.exec(string.slice(i)); - return n ? (d.s = +n[0], i + n[0].length) : -1; -} - -function formatDayOfMonth(d, p) { - return pad$1(d.getDate(), p, 2); -} - -function formatHour24(d, p) { - return pad$1(d.getHours(), p, 2); -} - -function formatHour12(d, p) { - return pad$1(d.getHours() % 12 || 12, p, 2); -} - -function formatDayOfYear(d, p) { - return pad$1(1 + day.count(year(d), d), p, 3); -} - -function formatMilliseconds(d, p) { - return pad$1(d.getMilliseconds(), p, 3); -} - -function formatMicroseconds(d, p) { - return formatMilliseconds(d, p) + "000"; -} - -function formatMonthNumber(d, p) { - return pad$1(d.getMonth() + 1, p, 2); -} - -function formatMinutes(d, p) { - return pad$1(d.getMinutes(), p, 2); -} - -function formatSeconds(d, p) { - return pad$1(d.getSeconds(), p, 2); -} - -function formatWeekdayNumberMonday(d) { - var day = d.getDay(); - return day === 0 ? 7 : day; -} - -function formatWeekNumberSunday(d, p) { - return pad$1(sunday.count(year(d) - 1, d), p, 2); -} - -function formatWeekNumberISO(d, p) { - var day = d.getDay(); - d = (day >= 4 || day === 0) ? thursday(d) : thursday.ceil(d); - return pad$1(thursday.count(year(d), d) + (year(d).getDay() === 4), p, 2); -} - -function formatWeekdayNumberSunday(d) { - return d.getDay(); -} - -function formatWeekNumberMonday(d, p) { - return pad$1(monday.count(year(d) - 1, d), p, 2); -} - -function formatYear$1(d, p) { - return pad$1(d.getFullYear() % 100, p, 2); -} - -function formatFullYear(d, p) { - return pad$1(d.getFullYear() % 10000, p, 4); -} - -function formatZone(d) { - var z = d.getTimezoneOffset(); - return (z > 0 ? "-" : (z *= -1, "+")) - + pad$1(z / 60 | 0, "0", 2) - + pad$1(z % 60, "0", 2); -} - -function formatUTCDayOfMonth(d, p) { - return pad$1(d.getUTCDate(), p, 2); -} - -function formatUTCHour24(d, p) { - return pad$1(d.getUTCHours(), p, 2); -} - -function formatUTCHour12(d, p) { - return pad$1(d.getUTCHours() % 12 || 12, p, 2); -} - -function formatUTCDayOfYear(d, p) { - return pad$1(1 + utcDay.count(utcYear(d), d), p, 3); -} - -function formatUTCMilliseconds(d, p) { - return pad$1(d.getUTCMilliseconds(), p, 3); -} - -function formatUTCMicroseconds(d, p) { - return formatUTCMilliseconds(d, p) + "000"; -} - -function formatUTCMonthNumber(d, p) { - return pad$1(d.getUTCMonth() + 1, p, 2); -} - -function formatUTCMinutes(d, p) { - return pad$1(d.getUTCMinutes(), p, 2); -} - -function formatUTCSeconds(d, p) { - return pad$1(d.getUTCSeconds(), p, 2); -} - -function formatUTCWeekdayNumberMonday(d) { - var dow = d.getUTCDay(); - return dow === 0 ? 7 : dow; -} - -function formatUTCWeekNumberSunday(d, p) { - return pad$1(utcSunday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCWeekNumberISO(d, p) { - var day = d.getUTCDay(); - d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d); - return pad$1(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2); -} - -function formatUTCWeekdayNumberSunday(d) { - return d.getUTCDay(); -} - -function formatUTCWeekNumberMonday(d, p) { - return pad$1(utcMonday.count(utcYear(d) - 1, d), p, 2); -} - -function formatUTCYear(d, p) { - return pad$1(d.getUTCFullYear() % 100, p, 2); -} - -function formatUTCFullYear(d, p) { - return pad$1(d.getUTCFullYear() % 10000, p, 4); -} - -function formatUTCZone() { - return "+0000"; -} - -function formatLiteralPercent() { - return "%"; -} - -function formatUnixTimestamp(d) { - return +d; -} - -function formatUnixTimestampSeconds(d) { - return Math.floor(+d / 1000); -} - -var locale$1; - -defaultLocale$1({ - dateTime: "%x, %X", - date: "%-m/%-d/%Y", - time: "%-I:%M:%S %p", - periods: ["AM", "PM"], - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] -}); - -function defaultLocale$1(definition) { - locale$1 = formatLocale$1(definition); - exports.timeFormat = locale$1.format; - exports.timeParse = locale$1.parse; - exports.utcFormat = locale$1.utcFormat; - exports.utcParse = locale$1.utcParse; - return locale$1; -} - -var isoSpecifier = "%Y-%m-%dT%H:%M:%S.%LZ"; - -function formatIsoNative(date) { - return date.toISOString(); -} - -var formatIso = Date.prototype.toISOString - ? formatIsoNative - : exports.utcFormat(isoSpecifier); - -function parseIsoNative(string) { - var date = new Date(string); - return isNaN(date) ? null : date; -} - -var parseIso = +new Date("2000-01-01T00:00:00.000Z") - ? parseIsoNative - : exports.utcParse(isoSpecifier); - -var durationSecond$1 = 1000, - durationMinute$1 = durationSecond$1 * 60, - durationHour$1 = durationMinute$1 * 60, - durationDay$1 = durationHour$1 * 24, - durationWeek$1 = durationDay$1 * 7, - durationMonth = durationDay$1 * 30, - durationYear = durationDay$1 * 365; - -function date$1(t) { - return new Date(t); -} - -function number$3(t) { - return t instanceof Date ? +t : +new Date(+t); -} - -function calendar(year, month, week, day, hour, minute, second, millisecond, format) { - var scale = continuous(identity$6, identity$6), - invert = scale.invert, - domain = scale.domain; - - var formatMillisecond = format(".%L"), - formatSecond = format(":%S"), - formatMinute = format("%I:%M"), - formatHour = format("%I %p"), - formatDay = format("%a %d"), - formatWeek = format("%b %d"), - formatMonth = format("%B"), - formatYear = format("%Y"); - - var tickIntervals = [ - [second, 1, durationSecond$1], - [second, 5, 5 * durationSecond$1], - [second, 15, 15 * durationSecond$1], - [second, 30, 30 * durationSecond$1], - [minute, 1, durationMinute$1], - [minute, 5, 5 * durationMinute$1], - [minute, 15, 15 * durationMinute$1], - [minute, 30, 30 * durationMinute$1], - [ hour, 1, durationHour$1 ], - [ hour, 3, 3 * durationHour$1 ], - [ hour, 6, 6 * durationHour$1 ], - [ hour, 12, 12 * durationHour$1 ], - [ day, 1, durationDay$1 ], - [ day, 2, 2 * durationDay$1 ], - [ week, 1, durationWeek$1 ], - [ month, 1, durationMonth ], - [ month, 3, 3 * durationMonth ], - [ year, 1, durationYear ] - ]; - - function tickFormat(date) { - return (second(date) < date ? formatMillisecond - : minute(date) < date ? formatSecond - : hour(date) < date ? formatMinute - : day(date) < date ? formatHour - : month(date) < date ? (week(date) < date ? formatDay : formatWeek) - : year(date) < date ? formatMonth - : formatYear)(date); - } - - function tickInterval(interval, start, stop, step) { - if (interval == null) interval = 10; - - // If a desired tick count is specified, pick a reasonable tick interval - // based on the extent of the domain and a rough estimate of tick size. - // Otherwise, assume interval is already a time interval and use it. - if (typeof interval === "number") { - var target = Math.abs(stop - start) / interval, - i = bisector(function(i) { return i[2]; }).right(tickIntervals, target); - if (i === tickIntervals.length) { - step = tickStep(start / durationYear, stop / durationYear, interval); - interval = year; - } else if (i) { - i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i]; - step = i[1]; - interval = i[0]; - } else { - step = Math.max(tickStep(start, stop, interval), 1); - interval = millisecond; - } - } - - return step == null ? interval : interval.every(step); - } - - scale.invert = function(y) { - return new Date(invert(y)); - }; - - scale.domain = function(_) { - return arguments.length ? domain(map$3.call(_, number$3)) : domain().map(date$1); - }; - - scale.ticks = function(interval, step) { - var d = domain(), - t0 = d[0], - t1 = d[d.length - 1], - r = t1 < t0, - t; - if (r) t = t0, t0 = t1, t1 = t; - t = tickInterval(interval, t0, t1, step); - t = t ? t.range(t0, t1 + 1) : []; // inclusive stop - return r ? t.reverse() : t; - }; - - scale.tickFormat = function(count, specifier) { - return specifier == null ? tickFormat : format(specifier); - }; - - scale.nice = function(interval, step) { - var d = domain(); - return (interval = tickInterval(interval, d[0], d[d.length - 1], step)) - ? domain(nice(d, interval)) - : scale; - }; - - scale.copy = function() { - return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format)); - }; - - return scale; -} - -function time() { - return initRange.apply(calendar(year, month, sunday, day, hour, minute, second, millisecond, exports.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments); -} - -function utcTime() { - return initRange.apply(calendar(utcYear, utcMonth, utcSunday, utcDay, utcHour, utcMinute, second, millisecond, exports.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments); -} - -function transformer$2() { - var x0 = 0, - x1 = 1, - t0, - t1, - k10, - transform, - interpolator = identity$6, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0); - return scale; - }; -} - -function copy$1(source, target) { - return target - .domain(source.domain()) - .interpolator(source.interpolator()) - .clamp(source.clamp()) - .unknown(source.unknown()); -} - -function sequential() { - var scale = linearish(transformer$2()(identity$6)); - - scale.copy = function() { - return copy$1(scale, sequential()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialLog() { - var scale = loggish(transformer$2()).domain([1, 10]); - - scale.copy = function() { - return copy$1(scale, sequentialLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSymlog() { - var scale = symlogish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialPow() { - var scale = powish(transformer$2()); - - scale.copy = function() { - return copy$1(scale, sequentialPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function sequentialSqrt() { - return sequentialPow.apply(null, arguments).exponent(0.5); -} - -function sequentialQuantile() { - var domain = [], - interpolator = identity$6; - - function scale(x) { - if (!isNaN(x = +x)) return interpolator((bisectRight(domain, x) - 1) / (domain.length - 1)); - } - - scale.domain = function(_) { - if (!arguments.length) return domain.slice(); - domain = []; - for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d); - domain.sort(ascending); - return scale; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.copy = function() { - return sequentialQuantile(interpolator).domain(domain); - }; - - return initInterpolator.apply(scale, arguments); -} - -function transformer$3() { - var x0 = 0, - x1 = 0.5, - x2 = 1, - t0, - t1, - t2, - k10, - k21, - interpolator = identity$6, - transform, - clamp = false, - unknown; - - function scale(x) { - return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x)); - } - - scale.domain = function(_) { - return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2]; - }; - - scale.clamp = function(_) { - return arguments.length ? (clamp = !!_, scale) : clamp; - }; - - scale.interpolator = function(_) { - return arguments.length ? (interpolator = _, scale) : interpolator; - }; - - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - - return function(t) { - transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1); - return scale; - }; -} - -function diverging() { - var scale = linearish(transformer$3()(identity$6)); - - scale.copy = function() { - return copy$1(scale, diverging()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingLog() { - var scale = loggish(transformer$3()).domain([0.1, 1, 10]); - - scale.copy = function() { - return copy$1(scale, divergingLog()).base(scale.base()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSymlog() { - var scale = symlogish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingSymlog()).constant(scale.constant()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingPow() { - var scale = powish(transformer$3()); - - scale.copy = function() { - return copy$1(scale, divergingPow()).exponent(scale.exponent()); - }; - - return initInterpolator.apply(scale, arguments); -} - -function divergingSqrt() { - return divergingPow.apply(null, arguments).exponent(0.5); -} - -function colors(specifier) { - var n = specifier.length / 6 | 0, colors = new Array(n), i = 0; - while (i < n) colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -var category10 = colors("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -var Accent = colors("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"); - -var Dark2 = colors("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"); - -var Paired = colors("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"); - -var Pastel1 = colors("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"); - -var Pastel2 = colors("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"); - -var Set1 = colors("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"); - -var Set2 = colors("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"); - -var Set3 = colors("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"); - -var Tableau10 = colors("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"); - -function ramp(scheme) { - return rgbBasis(scheme[scheme.length - 1]); -} - -var scheme = new Array(3).concat( - "d8b365f5f5f55ab4ac", - "a6611adfc27d80cdc1018571", - "a6611adfc27df5f5f580cdc1018571", - "8c510ad8b365f6e8c3c7eae55ab4ac01665e", - "8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e", - "8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e", - "8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e", - "5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30", - "5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30" -).map(colors); - -var BrBG = ramp(scheme); - -var scheme$1 = new Array(3).concat( - "af8dc3f7f7f77fbf7b", - "7b3294c2a5cfa6dba0008837", - "7b3294c2a5cff7f7f7a6dba0008837", - "762a83af8dc3e7d4e8d9f0d37fbf7b1b7837", - "762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837", - "762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837", - "762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837", - "40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b", - "40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b" -).map(colors); - -var PRGn = ramp(scheme$1); - -var scheme$2 = new Array(3).concat( - "e9a3c9f7f7f7a1d76a", - "d01c8bf1b6dab8e1864dac26", - "d01c8bf1b6daf7f7f7b8e1864dac26", - "c51b7de9a3c9fde0efe6f5d0a1d76a4d9221", - "c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221", - "c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221", - "c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221", - "8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419", - "8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419" -).map(colors); - -var PiYG = ramp(scheme$2); - -var scheme$3 = new Array(3).concat( - "998ec3f7f7f7f1a340", - "5e3c99b2abd2fdb863e66101", - "5e3c99b2abd2f7f7f7fdb863e66101", - "542788998ec3d8daebfee0b6f1a340b35806", - "542788998ec3d8daebf7f7f7fee0b6f1a340b35806", - "5427888073acb2abd2d8daebfee0b6fdb863e08214b35806", - "5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806", - "2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08", - "2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08" -).map(colors); - -var PuOr = ramp(scheme$3); - -var scheme$4 = new Array(3).concat( - "ef8a62f7f7f767a9cf", - "ca0020f4a58292c5de0571b0", - "ca0020f4a582f7f7f792c5de0571b0", - "b2182bef8a62fddbc7d1e5f067a9cf2166ac", - "b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac", - "b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac", - "b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac", - "67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061", - "67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061" -).map(colors); - -var RdBu = ramp(scheme$4); - -var scheme$5 = new Array(3).concat( - "ef8a62ffffff999999", - "ca0020f4a582bababa404040", - "ca0020f4a582ffffffbababa404040", - "b2182bef8a62fddbc7e0e0e09999994d4d4d", - "b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d", - "b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d", - "b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d", - "67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a", - "67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a" -).map(colors); - -var RdGy = ramp(scheme$5); - -var scheme$6 = new Array(3).concat( - "fc8d59ffffbf91bfdb", - "d7191cfdae61abd9e92c7bb6", - "d7191cfdae61ffffbfabd9e92c7bb6", - "d73027fc8d59fee090e0f3f891bfdb4575b4", - "d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4", - "d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4", - "d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4", - "a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695", - "a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695" -).map(colors); - -var RdYlBu = ramp(scheme$6); - -var scheme$7 = new Array(3).concat( - "fc8d59ffffbf91cf60", - "d7191cfdae61a6d96a1a9641", - "d7191cfdae61ffffbfa6d96a1a9641", - "d73027fc8d59fee08bd9ef8b91cf601a9850", - "d73027fc8d59fee08bffffbfd9ef8b91cf601a9850", - "d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850", - "d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850", - "a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837", - "a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837" -).map(colors); - -var RdYlGn = ramp(scheme$7); - -var scheme$8 = new Array(3).concat( - "fc8d59ffffbf99d594", - "d7191cfdae61abdda42b83ba", - "d7191cfdae61ffffbfabdda42b83ba", - "d53e4ffc8d59fee08be6f59899d5943288bd", - "d53e4ffc8d59fee08bffffbfe6f59899d5943288bd", - "d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd", - "d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd", - "9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2", - "9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2" -).map(colors); - -var Spectral = ramp(scheme$8); - -var scheme$9 = new Array(3).concat( - "e5f5f999d8c92ca25f", - "edf8fbb2e2e266c2a4238b45", - "edf8fbb2e2e266c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a42ca25f006d2c", - "edf8fbccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824", - "f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b" -).map(colors); - -var BuGn = ramp(scheme$9); - -var scheme$a = new Array(3).concat( - "e0ecf49ebcda8856a7", - "edf8fbb3cde38c96c688419d", - "edf8fbb3cde38c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68856a7810f7c", - "edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b", - "f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b" -).map(colors); - -var BuPu = ramp(scheme$a); - -var scheme$b = new Array(3).concat( - "e0f3dba8ddb543a2ca", - "f0f9e8bae4bc7bccc42b8cbe", - "f0f9e8bae4bc7bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc443a2ca0868ac", - "f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e", - "f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081" -).map(colors); - -var GnBu = ramp(scheme$b); - -var scheme$c = new Array(3).concat( - "fee8c8fdbb84e34a33", - "fef0d9fdcc8afc8d59d7301f", - "fef0d9fdcc8afc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59e34a33b30000", - "fef0d9fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000", - "fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000" -).map(colors); - -var OrRd = ramp(scheme$c); - -var scheme$d = new Array(3).concat( - "ece2f0a6bddb1c9099", - "f6eff7bdc9e167a9cf02818a", - "f6eff7bdc9e167a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf1c9099016c59", - "f6eff7d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450", - "fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636" -).map(colors); - -var PuBuGn = ramp(scheme$d); - -var scheme$e = new Array(3).concat( - "ece7f2a6bddb2b8cbe", - "f1eef6bdc9e174a9cf0570b0", - "f1eef6bdc9e174a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d", - "f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b", - "fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858" -).map(colors); - -var PuBu = ramp(scheme$e); - -var scheme$f = new Array(3).concat( - "e7e1efc994c7dd1c77", - "f1eef6d7b5d8df65b0ce1256", - "f1eef6d7b5d8df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0dd1c77980043", - "f1eef6d4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f", - "f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f" -).map(colors); - -var PuRd = ramp(scheme$f); - -var scheme$g = new Array(3).concat( - "fde0ddfa9fb5c51b8a", - "feebe2fbb4b9f768a1ae017e", - "feebe2fbb4b9f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1c51b8a7a0177", - "feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177", - "fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a" -).map(colors); - -var RdPu = ramp(scheme$g); - -var scheme$h = new Array(3).concat( - "edf8b17fcdbb2c7fb8", - "ffffcca1dab441b6c4225ea8", - "ffffcca1dab441b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c42c7fb8253494", - "ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84", - "ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58" -).map(colors); - -var YlGnBu = ramp(scheme$h); - -var scheme$i = new Array(3).concat( - "f7fcb9addd8e31a354", - "ffffccc2e69978c679238443", - "ffffccc2e69978c67931a354006837", - "ffffccd9f0a3addd8e78c67931a354006837", - "ffffccd9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32", - "ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529" -).map(colors); - -var YlGn = ramp(scheme$i); - -var scheme$j = new Array(3).concat( - "fff7bcfec44fd95f0e", - "ffffd4fed98efe9929cc4c02", - "ffffd4fed98efe9929d95f0e993404", - "ffffd4fee391fec44ffe9929d95f0e993404", - "ffffd4fee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04", - "ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506" -).map(colors); - -var YlOrBr = ramp(scheme$j); - -var scheme$k = new Array(3).concat( - "ffeda0feb24cf03b20", - "ffffb2fecc5cfd8d3ce31a1c", - "ffffb2fecc5cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cf03b20bd0026", - "ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026", - "ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026" -).map(colors); - -var YlOrRd = ramp(scheme$k); - -var scheme$l = new Array(3).concat( - "deebf79ecae13182bd", - "eff3ffbdd7e76baed62171b5", - "eff3ffbdd7e76baed63182bd08519c", - "eff3ffc6dbef9ecae16baed63182bd08519c", - "eff3ffc6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594", - "f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b" -).map(colors); - -var Blues = ramp(scheme$l); - -var scheme$m = new Array(3).concat( - "e5f5e0a1d99b31a354", - "edf8e9bae4b374c476238b45", - "edf8e9bae4b374c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47631a354006d2c", - "edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32", - "f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b" -).map(colors); - -var Greens = ramp(scheme$m); - -var scheme$n = new Array(3).concat( - "f0f0f0bdbdbd636363", - "f7f7f7cccccc969696525252", - "f7f7f7cccccc969696636363252525", - "f7f7f7d9d9d9bdbdbd969696636363252525", - "f7f7f7d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525", - "fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000" -).map(colors); - -var Greys = ramp(scheme$n); - -var scheme$o = new Array(3).concat( - "efedf5bcbddc756bb1", - "f2f0f7cbc9e29e9ac86a51a3", - "f2f0f7cbc9e29e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8756bb154278f", - "f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486", - "fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d" -).map(colors); - -var Purples = ramp(scheme$o); - -var scheme$p = new Array(3).concat( - "fee0d2fc9272de2d26", - "fee5d9fcae91fb6a4acb181d", - "fee5d9fcae91fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4ade2d26a50f15", - "fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d", - "fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d" -).map(colors); - -var Reds = ramp(scheme$p); - -var scheme$q = new Array(3).concat( - "fee6cefdae6be6550d", - "feeddefdbe85fd8d3cd94701", - "feeddefdbe85fd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3ce6550da63603", - "feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04", - "fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704" -).map(colors); - -var Oranges = ramp(scheme$q); - -function cividis(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + ", " - + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + ", " - + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67))))))) - + ")"; -} - -var cubehelix$3 = cubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0)); - -var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8)); - -var c = cubehelix(); - -function rainbow(t) { - if (t < 0 || t > 1) t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c.h = 360 * t - 100; - c.s = 1.5 - 1.5 * ts; - c.l = 0.8 - 0.9 * ts; - return c + ""; -} - -var c$1 = rgb(), - pi_1_3 = Math.PI / 3, - pi_2_3 = Math.PI * 2 / 3; - -function sinebow(t) { - var x; - t = (0.5 - t) * Math.PI; - c$1.r = 255 * (x = Math.sin(t)) * x; - c$1.g = 255 * (x = Math.sin(t + pi_1_3)) * x; - c$1.b = 255 * (x = Math.sin(t + pi_2_3)) * x; - return c$1 + ""; -} - -function turbo(t) { - t = Math.max(0, Math.min(1, t)); - return "rgb(" - + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + ", " - + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + ", " - + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66))))))) - + ")"; -} - -function ramp$1(range) { - var n = range.length; - return function(t) { - return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))]; - }; -} - -var viridis = ramp$1(colors("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")); - -var magma = ramp$1(colors("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")); - -var inferno = ramp$1(colors("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")); - -var plasma = ramp$1(colors("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")); - -function constant$b(x) { - return function constant() { - return x; - }; -} - -var abs$1 = Math.abs; -var atan2$1 = Math.atan2; -var cos$2 = Math.cos; -var max$2 = Math.max; -var min$1 = Math.min; -var sin$2 = Math.sin; -var sqrt$2 = Math.sqrt; - -var epsilon$3 = 1e-12; -var pi$4 = Math.PI; -var halfPi$3 = pi$4 / 2; -var tau$4 = 2 * pi$4; - -function acos$1(x) { - return x > 1 ? 0 : x < -1 ? pi$4 : Math.acos(x); -} - -function asin$1(x) { - return x >= 1 ? halfPi$3 : x <= -1 ? -halfPi$3 : Math.asin(x); -} - -function arcInnerRadius(d) { - return d.innerRadius; -} - -function arcOuterRadius(d) { - return d.outerRadius; -} - -function arcStartAngle(d) { - return d.startAngle; -} - -function arcEndAngle(d) { - return d.endAngle; -} - -function arcPadAngle(d) { - return d && d.padAngle; // Note: optional! -} - -function intersect(x0, y0, x1, y1, x2, y2, x3, y3) { - var x10 = x1 - x0, y10 = y1 - y0, - x32 = x3 - x2, y32 = y3 - y2, - t = y32 * x10 - x32 * y10; - if (t * t < epsilon$3) return; - t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t; - return [x0 + t * x10, y0 + t * y10]; -} - -// Compute perpendicular offset line of length rc. -// http://mathworld.wolfram.com/Circle-LineIntersection.html -function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, - y01 = y0 - y1, - lo = (cw ? rc : -rc) / sqrt$2(x01 * x01 + y01 * y01), - ox = lo * y01, - oy = -lo * x01, - x11 = x0 + ox, - y11 = y0 + oy, - x10 = x1 + ox, - y10 = y1 + oy, - x00 = (x11 + x10) / 2, - y00 = (y11 + y10) / 2, - dx = x10 - x11, - dy = y10 - y11, - d2 = dx * dx + dy * dy, - r = r1 - rc, - D = x11 * y10 - x10 * y11, - d = (dy < 0 ? -1 : 1) * sqrt$2(max$2(0, r * r * d2 - D * D)), - cx0 = (D * dy - dx * d) / d2, - cy0 = (-D * dx - dy * d) / d2, - cx1 = (D * dy + dx * d) / d2, - cy1 = (-D * dx + dy * d) / d2, - dx0 = cx0 - x00, - dy0 = cy0 - y00, - dx1 = cx1 - x00, - dy1 = cy1 - y00; - - // Pick the closer of the two intersection points. - // TODO Is there a faster way to determine which intersection to use? - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1; - - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; -} - -function arc() { - var innerRadius = arcInnerRadius, - outerRadius = arcOuterRadius, - cornerRadius = constant$b(0), - padRadius = null, - startAngle = arcStartAngle, - endAngle = arcEndAngle, - padAngle = arcPadAngle, - context = null; - - function arc() { - var buffer, - r, - r0 = +innerRadius.apply(this, arguments), - r1 = +outerRadius.apply(this, arguments), - a0 = startAngle.apply(this, arguments) - halfPi$3, - a1 = endAngle.apply(this, arguments) - halfPi$3, - da = abs$1(a1 - a0), - cw = a1 > a0; - - if (!context) context = buffer = path(); - - // Ensure that the outer radius is always larger than the inner radius. - if (r1 < r0) r = r1, r1 = r0, r0 = r; - - // Is it a point? - if (!(r1 > epsilon$3)) context.moveTo(0, 0); - - // Or is it a circle or annulus? - else if (da > tau$4 - epsilon$3) { - context.moveTo(r1 * cos$2(a0), r1 * sin$2(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon$3) { - context.moveTo(r0 * cos$2(a1), r0 * sin$2(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } - - // Or is it a circular or annular sector? - else { - var a01 = a0, - a11 = a1, - a00 = a0, - a10 = a1, - da0 = da, - da1 = da, - ap = padAngle.apply(this, arguments) / 2, - rp = (ap > epsilon$3) && (padRadius ? +padRadius.apply(this, arguments) : sqrt$2(r0 * r0 + r1 * r1)), - rc = min$1(abs$1(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), - rc0 = rc, - rc1 = rc, - t0, - t1; - - // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0. - if (rp > epsilon$3) { - var p0 = asin$1(rp / r0 * sin$2(ap)), - p1 = asin$1(rp / r1 * sin$2(ap)); - if ((da0 -= p0 * 2) > epsilon$3) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0; - else da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon$3) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1; - else da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - - var x01 = r1 * cos$2(a01), - y01 = r1 * sin$2(a01), - x10 = r0 * cos$2(a10), - y10 = r0 * sin$2(a10); - - // Apply rounded corners? - if (rc > epsilon$3) { - var x11 = r1 * cos$2(a11), - y11 = r1 * sin$2(a11), - x00 = r0 * cos$2(a00), - y00 = r0 * sin$2(a00), - oc; - - // Restrict the corner radius according to the sector angle. - if (da < pi$4 && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { - var ax = x01 - oc[0], - ay = y01 - oc[1], - bx = x11 - oc[0], - by = y11 - oc[1], - kc = 1 / sin$2(acos$1((ax * bx + ay * by) / (sqrt$2(ax * ax + ay * ay) * sqrt$2(bx * bx + by * by))) / 2), - lc = sqrt$2(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min$1(rc, (r0 - lc) / (kc - 1)); - rc1 = min$1(rc, (r1 - lc) / (kc + 1)); - } - } - - // Is the sector collapsed to a line? - if (!(da1 > epsilon$3)) context.moveTo(x01, y01); - - // Does the sector’s outer ring have rounded corners? - else if (rc1 > epsilon$3) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc1, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the outer ring just a circular arc? - else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - - // Is there no inner ring, and it’s a circular sector? - // Or perhaps it’s an annular sector collapsed due to padding? - if (!(r0 > epsilon$3) || !(da0 > epsilon$3)) context.lineTo(x10, y10); - - // Does the sector’s inner ring (or point) have rounded corners? - else if (rc0 > epsilon$3) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - - // Have the corners merged? - if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t1.y01, t1.x01), !cw); - - // Otherwise, draw the two corners and the ring. - else { - context.arc(t0.cx, t0.cy, rc0, atan2$1(t0.y01, t0.x01), atan2$1(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2$1(t0.cy + t0.y11, t0.cx + t0.x11), atan2$1(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2$1(t1.y11, t1.x11), atan2$1(t1.y01, t1.x01), !cw); - } - } - - // Or is the inner ring just a circular arc? - else context.arc(0, 0, r0, a10, a00, cw); - } - - context.closePath(); - - if (buffer) return context = null, buffer + "" || null; - } - - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, - a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi$4 / 2; - return [cos$2(a) * r, sin$2(a) * r]; - }; - - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : innerRadius; - }; - - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : outerRadius; - }; - - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant$b(+_), arc) : cornerRadius; - }; - - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), arc) : padRadius; - }; - - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : startAngle; - }; - - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : endAngle; - }; - - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), arc) : padAngle; - }; - - arc.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), arc) : context; - }; - - return arc; -} - -function Linear(context) { - this._context = context; -} - -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: this._context.lineTo(x, y); break; - } - } -}; - -function curveLinear(context) { - return new Linear(context); -} - -function x$3(p) { - return p[0]; -} - -function y$3(p) { - return p[1]; -} - -function line() { - var x = x$3, - y = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function line(data) { - var i, - n = data.length, - d, - defined0 = false, - buffer; - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) output.lineStart(); - else output.lineEnd(); - } - if (defined0) output.point(+x(d, i, data), +y(d, i, data)); - } - - if (buffer) return output = null, buffer + "" || null; - } - - line.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), line) : x; - }; - - line.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), line) : y; - }; - - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), line) : defined; - }; - - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - - return line; -} - -function area$3() { - var x0 = x$3, - x1 = null, - y0 = constant$b(0), - y1 = y$3, - defined = constant$b(true), - context = null, - curve = curveLinear, - output = null; - - function area(data) { - var i, - j, - k, - n = data.length, - d, - defined0 = false, - buffer, - x0z = new Array(n), - y0z = new Array(n); - - if (context == null) output = curve(buffer = path()); - - for (i = 0; i <= n; ++i) { - if (!(i < n && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) { - j = i; - output.areaStart(); - output.lineStart(); - } else { - output.lineEnd(); - output.lineStart(); - for (k = i - 1; k >= j; --k) { - output.point(x0z[k], y0z[k]); - } - output.lineEnd(); - output.areaEnd(); - } - } - if (defined0) { - x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data); - output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]); - } - } - - if (buffer) return output = null, buffer + "" || null; - } - - function arealine() { - return line().defined(defined).curve(curve).context(context); - } - - area.x = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), x1 = null, area) : x0; - }; - - area.x0 = function(_) { - return arguments.length ? (x0 = typeof _ === "function" ? _ : constant$b(+_), area) : x0; - }; - - area.x1 = function(_) { - return arguments.length ? (x1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : x1; - }; - - area.y = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), y1 = null, area) : y0; - }; - - area.y0 = function(_) { - return arguments.length ? (y0 = typeof _ === "function" ? _ : constant$b(+_), area) : y0; - }; - - area.y1 = function(_) { - return arguments.length ? (y1 = _ == null ? null : typeof _ === "function" ? _ : constant$b(+_), area) : y1; - }; - - area.lineX0 = - area.lineY0 = function() { - return arealine().x(x0).y(y0); - }; - - area.lineY1 = function() { - return arealine().x(x0).y(y1); - }; - - area.lineX1 = function() { - return arealine().x(x1).y(y0); - }; - - area.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant$b(!!_), area) : defined; - }; - - area.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve; - }; - - area.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context; - }; - - return area; -} - -function descending$1(a, b) { - return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; -} - -function identity$8(d) { - return d; -} - -function pie() { - var value = identity$8, - sortValues = descending$1, - sort = null, - startAngle = constant$b(0), - endAngle = constant$b(tau$4), - padAngle = constant$b(0); - - function pie(data) { - var i, - n = data.length, - j, - k, - sum = 0, - index = new Array(n), - arcs = new Array(n), - a0 = +startAngle.apply(this, arguments), - da = Math.min(tau$4, Math.max(-tau$4, endAngle.apply(this, arguments) - a0)), - a1, - p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)), - pa = p * (da < 0 ? -1 : 1), - v; - - for (i = 0; i < n; ++i) { - if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) { - sum += v; - } - } - - // Optionally sort the arcs by previously-computed values or by data. - if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); }); - else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); }); - - // Compute the arcs! They are stored in the original data's order. - for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) { - j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = { - data: data[j], - index: i, - value: v, - startAngle: a0, - endAngle: a1, - padAngle: p - }; - } - - return arcs; - } - - pie.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), pie) : value; - }; - - pie.sortValues = function(_) { - return arguments.length ? (sortValues = _, sort = null, pie) : sortValues; - }; - - pie.sort = function(_) { - return arguments.length ? (sort = _, sortValues = null, pie) : sort; - }; - - pie.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : startAngle; - }; - - pie.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : endAngle; - }; - - pie.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant$b(+_), pie) : padAngle; - }; - - return pie; -} - -var curveRadialLinear = curveRadial(curveLinear); - -function Radial(curve) { - this._curve = curve; -} - -Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a, r) { - this._curve.point(r * Math.sin(a), r * -Math.cos(a)); - } -}; - -function curveRadial(curve) { - - function radial(context) { - return new Radial(curve(context)); - } - - radial._curve = curve; - - return radial; -} - -function lineRadial(l) { - var c = l.curve; - - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - - l.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return l; -} - -function lineRadial$1() { - return lineRadial(line().curve(curveRadialLinear)); -} - -function areaRadial() { - var a = area$3().curve(curveRadialLinear), - c = a.curve, - x0 = a.lineX0, - x1 = a.lineX1, - y0 = a.lineY0, - y1 = a.lineY1; - - a.angle = a.x, delete a.x; - a.startAngle = a.x0, delete a.x0; - a.endAngle = a.x1, delete a.x1; - a.radius = a.y, delete a.y; - a.innerRadius = a.y0, delete a.y0; - a.outerRadius = a.y1, delete a.y1; - a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0; - a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1; - a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0; - a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1; - - a.curve = function(_) { - return arguments.length ? c(curveRadial(_)) : c()._curve; - }; - - return a; -} - -function pointRadial(x, y) { - return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)]; -} - -var slice$6 = Array.prototype.slice; - -function linkSource(d) { - return d.source; -} - -function linkTarget(d) { - return d.target; -} - -function link$2(curve) { - var source = linkSource, - target = linkTarget, - x = x$3, - y = y$3, - context = null; - - function link() { - var buffer, argv = slice$6.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv); - if (!context) context = buffer = path(); - curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv)); - if (buffer) return context = null, buffer + "" || null; - } - - link.source = function(_) { - return arguments.length ? (source = _, link) : source; - }; - - link.target = function(_) { - return arguments.length ? (target = _, link) : target; - }; - - link.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$b(+_), link) : x; - }; - - link.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$b(+_), link) : y; - }; - - link.context = function(_) { - return arguments.length ? ((context = _ == null ? null : _), link) : context; - }; - - return link; -} - -function curveHorizontal(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); -} - -function curveVertical(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1); -} - -function curveRadial$1(context, x0, y0, x1, y1) { - var p0 = pointRadial(x0, y0), - p1 = pointRadial(x0, y0 = (y0 + y1) / 2), - p2 = pointRadial(x1, y0), - p3 = pointRadial(x1, y1); - context.moveTo(p0[0], p0[1]); - context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]); -} - -function linkHorizontal() { - return link$2(curveHorizontal); -} - -function linkVertical() { - return link$2(curveVertical); -} - -function linkRadial() { - var l = link$2(curveRadial$1); - l.angle = l.x, delete l.x; - l.radius = l.y, delete l.y; - return l; -} - -var circle$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / pi$4); - context.moveTo(r, 0); - context.arc(0, 0, r, 0, tau$4); - } -}; - -var cross$2 = { - draw: function(context, size) { - var r = Math.sqrt(size / 5) / 2; - context.moveTo(-3 * r, -r); - context.lineTo(-r, -r); - context.lineTo(-r, -3 * r); - context.lineTo(r, -3 * r); - context.lineTo(r, -r); - context.lineTo(3 * r, -r); - context.lineTo(3 * r, r); - context.lineTo(r, r); - context.lineTo(r, 3 * r); - context.lineTo(-r, 3 * r); - context.lineTo(-r, r); - context.lineTo(-3 * r, r); - context.closePath(); - } -}; - -var tan30 = Math.sqrt(1 / 3), - tan30_2 = tan30 * 2; - -var diamond = { - draw: function(context, size) { - var y = Math.sqrt(size / tan30_2), - x = y * tan30; - context.moveTo(0, -y); - context.lineTo(x, 0); - context.lineTo(0, y); - context.lineTo(-x, 0); - context.closePath(); - } -}; - -var ka = 0.89081309152928522810, - kr = Math.sin(pi$4 / 10) / Math.sin(7 * pi$4 / 10), - kx = Math.sin(tau$4 / 10) * kr, - ky = -Math.cos(tau$4 / 10) * kr; - -var star = { - draw: function(context, size) { - var r = Math.sqrt(size * ka), - x = kx * r, - y = ky * r; - context.moveTo(0, -r); - context.lineTo(x, y); - for (var i = 1; i < 5; ++i) { - var a = tau$4 * i / 5, - c = Math.cos(a), - s = Math.sin(a); - context.lineTo(s * r, -c * r); - context.lineTo(c * x - s * y, s * x + c * y); - } - context.closePath(); - } -}; - -var square = { - draw: function(context, size) { - var w = Math.sqrt(size), - x = -w / 2; - context.rect(x, x, w, w); - } -}; - -var sqrt3 = Math.sqrt(3); - -var triangle = { - draw: function(context, size) { - var y = -Math.sqrt(size / (sqrt3 * 3)); - context.moveTo(0, y * 2); - context.lineTo(-sqrt3 * y, -y); - context.lineTo(sqrt3 * y, -y); - context.closePath(); - } -}; - -var c$2 = -0.5, - s = Math.sqrt(3) / 2, - k = 1 / Math.sqrt(12), - a = (k / 2 + 1) * 3; - -var wye = { - draw: function(context, size) { - var r = Math.sqrt(size / a), - x0 = r / 2, - y0 = r * k, - x1 = x0, - y1 = r * k + r, - x2 = -x1, - y2 = y1; - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - context.lineTo(c$2 * x0 - s * y0, s * x0 + c$2 * y0); - context.lineTo(c$2 * x1 - s * y1, s * x1 + c$2 * y1); - context.lineTo(c$2 * x2 - s * y2, s * x2 + c$2 * y2); - context.lineTo(c$2 * x0 + s * y0, c$2 * y0 - s * x0); - context.lineTo(c$2 * x1 + s * y1, c$2 * y1 - s * x1); - context.lineTo(c$2 * x2 + s * y2, c$2 * y2 - s * x2); - context.closePath(); - } -}; - -var symbols = [ - circle$2, - cross$2, - diamond, - square, - star, - triangle, - wye -]; - -function symbol() { - var type = constant$b(circle$2), - size = constant$b(64), - context = null; - - function symbol() { - var buffer; - if (!context) context = buffer = path(); - type.apply(this, arguments).draw(context, +size.apply(this, arguments)); - if (buffer) return context = null, buffer + "" || null; - } - - symbol.type = function(_) { - return arguments.length ? (type = typeof _ === "function" ? _ : constant$b(_), symbol) : type; - }; - - symbol.size = function(_) { - return arguments.length ? (size = typeof _ === "function" ? _ : constant$b(+_), symbol) : size; - }; - - symbol.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, symbol) : context; - }; - - return symbol; -} - -function noop$3() {} - -function point$2(that, x, y) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x) / 6, - (that._y0 + 4 * that._y1 + y) / 6 - ); -} - -function Basis(context) { - this._context = context; -} - -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: point$2(this, this._x1, this._y1); // proceed - case 2: this._context.lineTo(this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basis$2(context) { - return new Basis(context); -} - -function BasisClosed(context) { - this._context = context; -} - -BasisClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x2, this._y2); - this._context.closePath(); - break; - } - case 2: { - this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3); - this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x2, this._y2); - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x2 = x, this._y2 = y; break; - case 1: this._point = 2; this._x3 = x, this._y3 = y; break; - case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break; - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisClosed$1(context) { - return new BasisClosed(context); -} - -function BasisOpen(context) { - this._context = context; -} - -BasisOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break; - case 3: this._point = 4; // proceed - default: point$2(this, x, y); break; - } - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - } -}; - -function basisOpen(context) { - return new BasisOpen(context); -} - -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} - -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x = this._x, - y = this._y, - j = x.length - 1; - - if (j > 0) { - var x0 = x[0], - y0 = y[0], - dx = x[j] - x0, - dy = y[j] - y0, - i = -1, - t; - - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -var bundle = (function custom(beta) { - - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - - bundle.beta = function(beta) { - return custom(+beta); - }; - - return bundle; -})(0.85); - -function point$3(that, x, y) { - that._context.bezierCurveTo( - that._x1 + that._k * (that._x2 - that._x0), - that._y1 + that._k * (that._y2 - that._y0), - that._x2 + that._k * (that._x1 - x), - that._y2 + that._k * (that._y1 - y), - that._x2, - that._y2 - ); -} - -function Cardinal(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -Cardinal.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: point$3(this, this._x1, this._y1); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; this._x1 = x, this._y1 = y; break; - case 2: this._point = 3; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinal = (function custom(tension) { - - function cardinal(context) { - return new Cardinal(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalClosed(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalClosed = (function custom(tension) { - - function cardinal(context) { - return new CardinalClosed(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function CardinalOpen(context, tension) { - this._context = context; - this._k = (1 - tension) / 6; -} - -CardinalOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$3(this, x, y); break; - } - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var cardinalOpen = (function custom(tension) { - - function cardinal(context) { - return new CardinalOpen(context, tension); - } - - cardinal.tension = function(tension) { - return custom(+tension); - }; - - return cardinal; -})(0); - -function point$4(that, x, y) { - var x1 = that._x1, - y1 = that._y1, - x2 = that._x2, - y2 = that._y2; - - if (that._l01_a > epsilon$3) { - var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a, - n = 3 * that._l01_a * (that._l01_a + that._l12_a); - x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n; - y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n; - } - - if (that._l23_a > epsilon$3) { - var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a, - m = 3 * that._l23_a * (that._l23_a + that._l12_a); - x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m; - y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m; - } - - that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2); -} - -function CatmullRom(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRom.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x2, this._y2); break; - case 3: this.point(this._x2, this._y2); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRom = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomClosed(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = - this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 1: { - this._context.moveTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 2: { - this._context.lineTo(this._x3, this._y3); - this._context.closePath(); - break; - } - case 3: { - this.point(this._x3, this._y3); - this.point(this._x4, this._y4); - this.point(this._x5, this._y5); - break; - } - } - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; this._x3 = x, this._y3 = y; break; - case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break; - case 2: this._point = 3; this._x5 = x, this._y5 = y; break; - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomClosed = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function CatmullRomOpen(context, alpha) { - this._context = context; - this._alpha = alpha; -} - -CatmullRomOpen.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._x2 = - this._y0 = this._y1 = this._y2 = NaN; - this._l01_a = this._l12_a = this._l23_a = - this._l01_2a = this._l12_2a = this._l23_2a = - this._point = 0; - }, - lineEnd: function() { - if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - - if (this._point) { - var x23 = this._x2 - x, - y23 = this._y2 - y; - this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha)); - } - - switch (this._point) { - case 0: this._point = 1; break; - case 1: this._point = 2; break; - case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break; - case 3: this._point = 4; // proceed - default: point$4(this, x, y); break; - } - - this._l01_a = this._l12_a, this._l12_a = this._l23_a; - this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a; - this._x0 = this._x1, this._x1 = this._x2, this._x2 = x; - this._y0 = this._y1, this._y1 = this._y2, this._y2 = y; - } -}; - -var catmullRomOpen = (function custom(alpha) { - - function catmullRom(context) { - return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0); - } - - catmullRom.alpha = function(alpha) { - return custom(+alpha); - }; - - return catmullRom; -})(0.5); - -function LinearClosed(context) { - this._context = context; -} - -LinearClosed.prototype = { - areaStart: noop$3, - areaEnd: noop$3, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._point) this._context.closePath(); - }, - point: function(x, y) { - x = +x, y = +y; - if (this._point) this._context.lineTo(x, y); - else this._point = 1, this._context.moveTo(x, y); - } -}; - -function linearClosed(context) { - return new LinearClosed(context); -} - -function sign$1(x) { - return x < 0 ? -1 : 1; -} - -// Calculate the slopes of the tangents (Hermite-type interpolation) based on -// the following paper: Steffen, M. 1990. A Simple Method for Monotonic -// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO. -// NOV(II), P. 443, 1990. -function slope3(that, x2, y2) { - var h0 = that._x1 - that._x0, - h1 = x2 - that._x1, - s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0), - s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0), - p = (s0 * h1 + s1 * h0) / (h0 + h1); - return (sign$1(s0) + sign$1(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0; -} - -// Calculate a one-sided slope. -function slope2(that, t) { - var h = that._x1 - that._x0; - return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t; -} - -// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations -// "you can express cubic Hermite interpolation in terms of cubic Bézier curves -// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1". -function point$5(that, t0, t1) { - var x0 = that._x0, - y0 = that._y0, - x1 = that._x1, - y1 = that._y1, - dx = (x1 - x0) / 3; - that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1); -} - -function MonotoneX(context) { - this._context = context; -} - -MonotoneX.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = - this._y0 = this._y1 = - this._t0 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 2: this._context.lineTo(this._x1, this._y1); break; - case 3: point$5(this, this._t0, slope2(this, this._t0)); break; - } - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x, y) { - var t1 = NaN; - - x = +x, y = +y; - if (x === this._x1 && y === this._y1) return; // Ignore coincident points. - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; break; - case 2: this._point = 3; point$5(this, slope2(this, t1 = slope3(this, x, y)), t1); break; - default: point$5(this, this._t0, t1 = slope3(this, x, y)); break; - } - - this._x0 = this._x1, this._x1 = x; - this._y0 = this._y1, this._y1 = y; - this._t0 = t1; - } -}; - -function MonotoneY(context) { - this._context = new ReflectContext(context); -} - -(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) { - MonotoneX.prototype.point.call(this, y, x); -}; - -function ReflectContext(context) { - this._context = context; -} - -ReflectContext.prototype = { - moveTo: function(x, y) { this._context.moveTo(y, x); }, - closePath: function() { this._context.closePath(); }, - lineTo: function(x, y) { this._context.lineTo(y, x); }, - bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); } -}; - -function monotoneX(context) { - return new MonotoneX(context); -} - -function monotoneY(context) { - return new MonotoneY(context); -} - -function Natural(context) { - this._context = context; -} - -Natural.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = []; - this._y = []; - }, - lineEnd: function() { - var x = this._x, - y = this._y, - n = x.length; - - if (n) { - this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]); - if (n === 2) { - this._context.lineTo(x[1], y[1]); - } else { - var px = controlPoints(x), - py = controlPoints(y); - for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) { - this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]); - } - } - } - - if (this._line || (this._line !== 0 && n === 1)) this._context.closePath(); - this._line = 1 - this._line; - this._x = this._y = null; - }, - point: function(x, y) { - this._x.push(+x); - this._y.push(+y); - } -}; - -// See https://www.particleincell.com/2012/bezier-splines/ for derivation. -function controlPoints(x) { - var i, - n = x.length - 1, - m, - a = new Array(n), - b = new Array(n), - r = new Array(n); - a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1]; - for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1]; - a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n]; - for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1]; - a[n - 1] = r[n - 1] / b[n - 1]; - for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i]; - b[n - 1] = (x[n] + a[n - 1]) / 2; - for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1]; - return [a, b]; -} - -function natural(context) { - return new Natural(context); -} - -function Step(context, t) { - this._context = context; - this._t = t; -} - -Step.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x = this._y = NaN; - this._point = 0; - }, - lineEnd: function() { - if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y); - if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath(); - if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line; - }, - point: function(x, y) { - x = +x, y = +y; - switch (this._point) { - case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break; - case 1: this._point = 2; // proceed - default: { - if (this._t <= 0) { - this._context.lineTo(this._x, y); - this._context.lineTo(x, y); - } else { - var x1 = this._x * (1 - this._t) + x * this._t; - this._context.lineTo(x1, this._y); - this._context.lineTo(x1, y); - } - break; - } - } - this._x = x, this._y = y; - } -}; - -function step(context) { - return new Step(context, 0.5); -} - -function stepBefore(context) { - return new Step(context, 0); -} - -function stepAfter(context) { - return new Step(context, 1); -} - -function none$1(series, order) { - if (!((n = series.length) > 1)) return; - for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) { - s0 = s1, s1 = series[order[i]]; - for (j = 0; j < m; ++j) { - s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1]; - } - } -} - -function none$2(series) { - var n = series.length, o = new Array(n); - while (--n >= 0) o[n] = n; - return o; -} - -function stackValue(d, key) { - return d[key]; -} - -function stack() { - var keys = constant$b([]), - order = none$2, - offset = none$1, - value = stackValue; - - function stack(data) { - var kz = keys.apply(this, arguments), - i, - m = data.length, - n = kz.length, - sz = new Array(n), - oz; - - for (i = 0; i < n; ++i) { - for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) { - si[j] = sij = [0, +value(data[j], ki, j, data)]; - sij.data = data[j]; - } - si.key = ki; - } - - for (i = 0, oz = order(sz); i < n; ++i) { - sz[oz[i]].index = i; - } - - offset(sz, oz); - return sz; - } - - stack.keys = function(_) { - return arguments.length ? (keys = typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : keys; - }; - - stack.value = function(_) { - return arguments.length ? (value = typeof _ === "function" ? _ : constant$b(+_), stack) : value; - }; - - stack.order = function(_) { - return arguments.length ? (order = _ == null ? none$2 : typeof _ === "function" ? _ : constant$b(slice$6.call(_)), stack) : order; - }; - - stack.offset = function(_) { - return arguments.length ? (offset = _ == null ? none$1 : _, stack) : offset; - }; - - return stack; -} - -function expand(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) { - for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0; - if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y; - } - none$1(series, order); -} - -function diverging$1(series, order) { - if (!((n = series.length) > 0)) return; - for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) { - for (yp = yn = 0, i = 0; i < n; ++i) { - if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) { - d[0] = yp, d[1] = yp += dy; - } else if (dy < 0) { - d[1] = yn, d[0] = yn += dy; - } else { - d[0] = 0, d[1] = dy; - } - } - } -} - -function silhouette(series, order) { - if (!((n = series.length) > 0)) return; - for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) { - for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0; - s0[j][1] += s0[j][0] = -y / 2; - } - none$1(series, order); -} - -function wiggle(series, order) { - if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return; - for (var y = 0, j = 1, s0, m, n; j < m; ++j) { - for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) { - var si = series[order[i]], - sij0 = si[j][1] || 0, - sij1 = si[j - 1][1] || 0, - s3 = (sij0 - sij1) / 2; - for (var k = 0; k < i; ++k) { - var sk = series[order[k]], - skj0 = sk[j][1] || 0, - skj1 = sk[j - 1][1] || 0; - s3 += skj0 - skj1; - } - s1 += sij0, s2 += s3 * sij0; - } - s0[j - 1][1] += s0[j - 1][0] = y; - if (s1) y -= s2 / s1; - } - s0[j - 1][1] += s0[j - 1][0] = y; - none$1(series, order); -} - -function appearance(series) { - var peaks = series.map(peak); - return none$2(series).sort(function(a, b) { return peaks[a] - peaks[b]; }); -} - -function peak(series) { - var i = -1, j = 0, n = series.length, vi, vj = -Infinity; - while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i; - return j; -} - -function ascending$3(series) { - var sums = series.map(sum$2); - return none$2(series).sort(function(a, b) { return sums[a] - sums[b]; }); -} - -function sum$2(series) { - var s = 0, i = -1, n = series.length, v; - while (++i < n) if (v = +series[i][1]) s += v; - return s; -} - -function descending$2(series) { - return ascending$3(series).reverse(); -} - -function insideOut(series) { - var n = series.length, - i, - j, - sums = series.map(sum$2), - order = appearance(series), - top = 0, - bottom = 0, - tops = [], - bottoms = []; - - for (i = 0; i < n; ++i) { - j = order[i]; - if (top < bottom) { - top += sums[j]; - tops.push(j); - } else { - bottom += sums[j]; - bottoms.push(j); - } - } - - return bottoms.reverse().concat(tops); -} - -function reverse(series) { - return none$2(series).reverse(); -} - -function constant$c(x) { - return function() { - return x; - }; -} - -function x$4(d) { - return d[0]; -} - -function y$4(d) { - return d[1]; -} - -function RedBlackTree() { - this._ = null; // root node -} - -function RedBlackNode(node) { - node.U = // parent node - node.C = // color - true for red, false for black - node.L = // left node - node.R = // right node - node.P = // previous node - node.N = null; // next node -} - -RedBlackTree.prototype = { - constructor: RedBlackTree, - - insert: function(after, node) { - var parent, grandpa, uncle; - - if (after) { - node.P = after; - node.N = after.N; - if (after.N) after.N.P = node; - after.N = node; - if (after.R) { - after = after.R; - while (after.L) after = after.L; - after.L = node; - } else { - after.R = node; - } - parent = after; - } else if (this._) { - after = RedBlackFirst(this._); - node.P = null; - node.N = after; - after.P = after.L = node; - parent = after; - } else { - node.P = node.N = null; - this._ = node; - parent = null; - } - node.L = node.R = null; - node.U = parent; - node.C = true; - - after = node; - while (parent && parent.C) { - grandpa = parent.U; - if (parent === grandpa.L) { - uncle = grandpa.R; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.R) { - RedBlackRotateLeft(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateRight(this, grandpa); - } - } else { - uncle = grandpa.L; - if (uncle && uncle.C) { - parent.C = uncle.C = false; - grandpa.C = true; - after = grandpa; - } else { - if (after === parent.L) { - RedBlackRotateRight(this, parent); - after = parent; - parent = after.U; - } - parent.C = false; - grandpa.C = true; - RedBlackRotateLeft(this, grandpa); - } - } - parent = after.U; - } - this._.C = false; - }, - - remove: function(node) { - if (node.N) node.N.P = node.P; - if (node.P) node.P.N = node.N; - node.N = node.P = null; - - var parent = node.U, - sibling, - left = node.L, - right = node.R, - next, - red; - - if (!left) next = right; - else if (!right) next = left; - else next = RedBlackFirst(right); - - if (parent) { - if (parent.L === node) parent.L = next; - else parent.R = next; - } else { - this._ = next; - } - - if (left && right) { - red = next.C; - next.C = node.C; - next.L = left; - left.U = next; - if (next !== right) { - parent = next.U; - next.U = node.U; - node = next.R; - parent.L = node; - next.R = right; - right.U = next; - } else { - next.U = parent; - parent = next; - node = next.R; - } - } else { - red = node.C; - node = next; - } - - if (node) node.U = parent; - if (red) return; - if (node && node.C) { node.C = false; return; } - - do { - if (node === this._) break; - if (node === parent.L) { - sibling = parent.R; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateLeft(this, parent); - sibling = parent.R; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.R || !sibling.R.C) { - sibling.L.C = false; - sibling.C = true; - RedBlackRotateRight(this, sibling); - sibling = parent.R; - } - sibling.C = parent.C; - parent.C = sibling.R.C = false; - RedBlackRotateLeft(this, parent); - node = this._; - break; - } - } else { - sibling = parent.L; - if (sibling.C) { - sibling.C = false; - parent.C = true; - RedBlackRotateRight(this, parent); - sibling = parent.L; - } - if ((sibling.L && sibling.L.C) - || (sibling.R && sibling.R.C)) { - if (!sibling.L || !sibling.L.C) { - sibling.R.C = false; - sibling.C = true; - RedBlackRotateLeft(this, sibling); - sibling = parent.L; - } - sibling.C = parent.C; - parent.C = sibling.L.C = false; - RedBlackRotateRight(this, parent); - node = this._; - break; - } - } - sibling.C = true; - node = parent; - parent = parent.U; - } while (!node.C); - - if (node) node.C = false; - } -}; - -function RedBlackRotateLeft(tree, node) { - var p = node, - q = node.R, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.R = q.L; - if (p.R) p.R.U = p; - q.L = p; -} - -function RedBlackRotateRight(tree, node) { - var p = node, - q = node.L, - parent = p.U; - - if (parent) { - if (parent.L === p) parent.L = q; - else parent.R = q; - } else { - tree._ = q; - } - - q.U = parent; - p.U = q; - p.L = q.R; - if (p.L) p.L.U = p; - q.R = p; -} - -function RedBlackFirst(node) { - while (node.L) node = node.L; - return node; -} - -function createEdge(left, right, v0, v1) { - var edge = [null, null], - index = edges.push(edge) - 1; - edge.left = left; - edge.right = right; - if (v0) setEdgeEnd(edge, left, right, v0); - if (v1) setEdgeEnd(edge, right, left, v1); - cells[left.index].halfedges.push(index); - cells[right.index].halfedges.push(index); - return edge; -} - -function createBorderEdge(left, v0, v1) { - var edge = [v0, v1]; - edge.left = left; - return edge; -} - -function setEdgeEnd(edge, left, right, vertex) { - if (!edge[0] && !edge[1]) { - edge[0] = vertex; - edge.left = left; - edge.right = right; - } else if (edge.left === right) { - edge[1] = vertex; - } else { - edge[0] = vertex; - } -} - -// Liang–Barsky line clipping. -function clipEdge(edge, x0, y0, x1, y1) { - var a = edge[0], - b = edge[1], - ax = a[0], - ay = a[1], - bx = b[0], - by = b[1], - t0 = 0, - t1 = 1, - dx = bx - ax, - dy = by - ay, - r; - - r = x0 - ax; - if (!dx && r > 0) return; - r /= dx; - if (dx < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dx > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = x1 - ax; - if (!dx && r < 0) return; - r /= dx; - if (dx < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dx > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - r = y0 - ay; - if (!dy && r > 0) return; - r /= dy; - if (dy < 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } else if (dy > 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } - - r = y1 - ay; - if (!dy && r < 0) return; - r /= dy; - if (dy < 0) { - if (r > t1) return; - if (r > t0) t0 = r; - } else if (dy > 0) { - if (r < t0) return; - if (r < t1) t1 = r; - } - - if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check? - - if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy]; - if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy]; - return true; -} - -function connectEdge(edge, x0, y0, x1, y1) { - var v1 = edge[1]; - if (v1) return true; - - var v0 = edge[0], - left = edge.left, - right = edge.right, - lx = left[0], - ly = left[1], - rx = right[0], - ry = right[1], - fx = (lx + rx) / 2, - fy = (ly + ry) / 2, - fm, - fb; - - if (ry === ly) { - if (fx < x0 || fx >= x1) return; - if (lx > rx) { - if (!v0) v0 = [fx, y0]; - else if (v0[1] >= y1) return; - v1 = [fx, y1]; - } else { - if (!v0) v0 = [fx, y1]; - else if (v0[1] < y0) return; - v1 = [fx, y0]; - } - } else { - fm = (lx - rx) / (ry - ly); - fb = fy - fm * fx; - if (fm < -1 || fm > 1) { - if (lx > rx) { - if (!v0) v0 = [(y0 - fb) / fm, y0]; - else if (v0[1] >= y1) return; - v1 = [(y1 - fb) / fm, y1]; - } else { - if (!v0) v0 = [(y1 - fb) / fm, y1]; - else if (v0[1] < y0) return; - v1 = [(y0 - fb) / fm, y0]; - } - } else { - if (ly < ry) { - if (!v0) v0 = [x0, fm * x0 + fb]; - else if (v0[0] >= x1) return; - v1 = [x1, fm * x1 + fb]; - } else { - if (!v0) v0 = [x1, fm * x1 + fb]; - else if (v0[0] < x0) return; - v1 = [x0, fm * x0 + fb]; - } - } - } - - edge[0] = v0; - edge[1] = v1; - return true; -} - -function clipEdges(x0, y0, x1, y1) { - var i = edges.length, - edge; - - while (i--) { - if (!connectEdge(edge = edges[i], x0, y0, x1, y1) - || !clipEdge(edge, x0, y0, x1, y1) - || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon$4 - || Math.abs(edge[0][1] - edge[1][1]) > epsilon$4)) { - delete edges[i]; - } - } -} - -function createCell(site) { - return cells[site.index] = { - site: site, - halfedges: [] - }; -} - -function cellHalfedgeAngle(cell, edge) { - var site = cell.site, - va = edge.left, - vb = edge.right; - if (site === vb) vb = va, va = site; - if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]); - if (site === va) va = edge[1], vb = edge[0]; - else va = edge[0], vb = edge[1]; - return Math.atan2(va[0] - vb[0], vb[1] - va[1]); -} - -function cellHalfedgeStart(cell, edge) { - return edge[+(edge.left !== cell.site)]; -} - -function cellHalfedgeEnd(cell, edge) { - return edge[+(edge.left === cell.site)]; -} - -function sortCellHalfedges() { - for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) { - if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) { - var index = new Array(m), - array = new Array(m); - for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]); - index.sort(function(i, j) { return array[j] - array[i]; }); - for (j = 0; j < m; ++j) array[j] = halfedges[index[j]]; - for (j = 0; j < m; ++j) halfedges[j] = array[j]; - } - } -} - -function clipCells(x0, y0, x1, y1) { - var nCells = cells.length, - iCell, - cell, - site, - iHalfedge, - halfedges, - nHalfedges, - start, - startX, - startY, - end, - endX, - endY, - cover = true; - - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - halfedges = cell.halfedges; - iHalfedge = halfedges.length; - - // Remove any dangling clipped edges. - while (iHalfedge--) { - if (!edges[halfedges[iHalfedge]]) { - halfedges.splice(iHalfedge, 1); - } - } - - // Insert any border edges as necessary. - iHalfedge = 0, nHalfedges = halfedges.length; - while (iHalfedge < nHalfedges) { - end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1]; - start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1]; - if (Math.abs(endX - startX) > epsilon$4 || Math.abs(endY - startY) > epsilon$4) { - halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end, - Math.abs(endX - x0) < epsilon$4 && y1 - endY > epsilon$4 ? [x0, Math.abs(startX - x0) < epsilon$4 ? startY : y1] - : Math.abs(endY - y1) < epsilon$4 && x1 - endX > epsilon$4 ? [Math.abs(startY - y1) < epsilon$4 ? startX : x1, y1] - : Math.abs(endX - x1) < epsilon$4 && endY - y0 > epsilon$4 ? [x1, Math.abs(startX - x1) < epsilon$4 ? startY : y0] - : Math.abs(endY - y0) < epsilon$4 && endX - x0 > epsilon$4 ? [Math.abs(startY - y0) < epsilon$4 ? startX : x0, y0] - : null)) - 1); - ++nHalfedges; - } - } - - if (nHalfedges) cover = false; - } - } - - // If there weren’t any edges, have the closest site cover the extent. - // It doesn’t matter which corner of the extent we measure! - if (cover) { - var dx, dy, d2, dc = Infinity; - - for (iCell = 0, cover = null; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - site = cell.site; - dx = site[0] - x0; - dy = site[1] - y0; - d2 = dx * dx + dy * dy; - if (d2 < dc) dc = d2, cover = cell; - } - } - - if (cover) { - var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0]; - cover.halfedges.push( - edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1, - edges.push(createBorderEdge(site, v01, v11)) - 1, - edges.push(createBorderEdge(site, v11, v10)) - 1, - edges.push(createBorderEdge(site, v10, v00)) - 1 - ); - } - } - - // Lastly delete any cells with no edges; these were entirely clipped. - for (iCell = 0; iCell < nCells; ++iCell) { - if (cell = cells[iCell]) { - if (!cell.halfedges.length) { - delete cells[iCell]; - } - } - } -} - -var circlePool = []; - -var firstCircle; - -function Circle() { - RedBlackNode(this); - this.x = - this.y = - this.arc = - this.site = - this.cy = null; -} - -function attachCircle(arc) { - var lArc = arc.P, - rArc = arc.N; - - if (!lArc || !rArc) return; - - var lSite = lArc.site, - cSite = arc.site, - rSite = rArc.site; - - if (lSite === rSite) return; - - var bx = cSite[0], - by = cSite[1], - ax = lSite[0] - bx, - ay = lSite[1] - by, - cx = rSite[0] - bx, - cy = rSite[1] - by; - - var d = 2 * (ax * cy - ay * cx); - if (d >= -epsilon2$2) return; - - var ha = ax * ax + ay * ay, - hc = cx * cx + cy * cy, - x = (cy * ha - ay * hc) / d, - y = (ax * hc - cx * ha) / d; - - var circle = circlePool.pop() || new Circle; - circle.arc = arc; - circle.site = cSite; - circle.x = x + bx; - circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom - - arc.circle = circle; - - var before = null, - node = circles._; - - while (node) { - if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) { - if (node.L) node = node.L; - else { before = node.P; break; } - } else { - if (node.R) node = node.R; - else { before = node; break; } - } - } - - circles.insert(before, circle); - if (!before) firstCircle = circle; -} - -function detachCircle(arc) { - var circle = arc.circle; - if (circle) { - if (!circle.P) firstCircle = circle.N; - circles.remove(circle); - circlePool.push(circle); - RedBlackNode(circle); - arc.circle = null; - } -} - -var beachPool = []; - -function Beach() { - RedBlackNode(this); - this.edge = - this.site = - this.circle = null; -} - -function createBeach(site) { - var beach = beachPool.pop() || new Beach; - beach.site = site; - return beach; -} - -function detachBeach(beach) { - detachCircle(beach); - beaches.remove(beach); - beachPool.push(beach); - RedBlackNode(beach); -} - -function removeBeach(beach) { - var circle = beach.circle, - x = circle.x, - y = circle.cy, - vertex = [x, y], - previous = beach.P, - next = beach.N, - disappearing = [beach]; - - detachBeach(beach); - - var lArc = previous; - while (lArc.circle - && Math.abs(x - lArc.circle.x) < epsilon$4 - && Math.abs(y - lArc.circle.cy) < epsilon$4) { - previous = lArc.P; - disappearing.unshift(lArc); - detachBeach(lArc); - lArc = previous; - } - - disappearing.unshift(lArc); - detachCircle(lArc); - - var rArc = next; - while (rArc.circle - && Math.abs(x - rArc.circle.x) < epsilon$4 - && Math.abs(y - rArc.circle.cy) < epsilon$4) { - next = rArc.N; - disappearing.push(rArc); - detachBeach(rArc); - rArc = next; - } - - disappearing.push(rArc); - detachCircle(rArc); - - var nArcs = disappearing.length, - iArc; - for (iArc = 1; iArc < nArcs; ++iArc) { - rArc = disappearing[iArc]; - lArc = disappearing[iArc - 1]; - setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex); - } - - lArc = disappearing[0]; - rArc = disappearing[nArcs - 1]; - rArc.edge = createEdge(lArc.site, rArc.site, null, vertex); - - attachCircle(lArc); - attachCircle(rArc); -} - -function addBeach(site) { - var x = site[0], - directrix = site[1], - lArc, - rArc, - dxl, - dxr, - node = beaches._; - - while (node) { - dxl = leftBreakPoint(node, directrix) - x; - if (dxl > epsilon$4) node = node.L; else { - dxr = x - rightBreakPoint(node, directrix); - if (dxr > epsilon$4) { - if (!node.R) { - lArc = node; - break; - } - node = node.R; - } else { - if (dxl > -epsilon$4) { - lArc = node.P; - rArc = node; - } else if (dxr > -epsilon$4) { - lArc = node; - rArc = node.N; - } else { - lArc = rArc = node; - } - break; - } - } - } - - createCell(site); - var newArc = createBeach(site); - beaches.insert(lArc, newArc); - - if (!lArc && !rArc) return; - - if (lArc === rArc) { - detachCircle(lArc); - rArc = createBeach(lArc.site); - beaches.insert(newArc, rArc); - newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site); - attachCircle(lArc); - attachCircle(rArc); - return; - } - - if (!rArc) { // && lArc - newArc.edge = createEdge(lArc.site, newArc.site); - return; - } - - // else lArc !== rArc - detachCircle(lArc); - detachCircle(rArc); - - var lSite = lArc.site, - ax = lSite[0], - ay = lSite[1], - bx = site[0] - ax, - by = site[1] - ay, - rSite = rArc.site, - cx = rSite[0] - ax, - cy = rSite[1] - ay, - d = 2 * (bx * cy - by * cx), - hb = bx * bx + by * by, - hc = cx * cx + cy * cy, - vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay]; - - setEdgeEnd(rArc.edge, lSite, rSite, vertex); - newArc.edge = createEdge(lSite, site, null, vertex); - rArc.edge = createEdge(site, rSite, null, vertex); - attachCircle(lArc); - attachCircle(rArc); -} - -function leftBreakPoint(arc, directrix) { - var site = arc.site, - rfocx = site[0], - rfocy = site[1], - pby2 = rfocy - directrix; - - if (!pby2) return rfocx; - - var lArc = arc.P; - if (!lArc) return -Infinity; - - site = lArc.site; - var lfocx = site[0], - lfocy = site[1], - plby2 = lfocy - directrix; - - if (!plby2) return lfocx; - - var hl = lfocx - rfocx, - aby2 = 1 / pby2 - 1 / plby2, - b = hl / plby2; - - if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx; - - return (rfocx + lfocx) / 2; -} - -function rightBreakPoint(arc, directrix) { - var rArc = arc.N; - if (rArc) return leftBreakPoint(rArc, directrix); - var site = arc.site; - return site[1] === directrix ? site[0] : Infinity; -} - -var epsilon$4 = 1e-6; -var epsilon2$2 = 1e-12; -var beaches; -var cells; -var circles; -var edges; - -function triangleArea(a, b, c) { - return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]); -} - -function lexicographic(a, b) { - return b[1] - a[1] - || b[0] - a[0]; -} - -function Diagram(sites, extent) { - var site = sites.sort(lexicographic).pop(), - x, - y, - circle; - - edges = []; - cells = new Array(sites.length); - beaches = new RedBlackTree; - circles = new RedBlackTree; - - while (true) { - circle = firstCircle; - if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) { - if (site[0] !== x || site[1] !== y) { - addBeach(site); - x = site[0], y = site[1]; - } - site = sites.pop(); - } else if (circle) { - removeBeach(circle.arc); - } else { - break; - } - } - - sortCellHalfedges(); - - if (extent) { - var x0 = +extent[0][0], - y0 = +extent[0][1], - x1 = +extent[1][0], - y1 = +extent[1][1]; - clipEdges(x0, y0, x1, y1); - clipCells(x0, y0, x1, y1); - } - - this.edges = edges; - this.cells = cells; - - beaches = - circles = - edges = - cells = null; -} - -Diagram.prototype = { - constructor: Diagram, - - polygons: function() { - var edges = this.edges; - - return this.cells.map(function(cell) { - var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); }); - polygon.data = cell.site.data; - return polygon; - }); - }, - - triangles: function() { - var triangles = [], - edges = this.edges; - - this.cells.forEach(function(cell, i) { - if (!(m = (halfedges = cell.halfedges).length)) return; - var site = cell.site, - halfedges, - j = -1, - m, - s0, - e1 = edges[halfedges[m - 1]], - s1 = e1.left === site ? e1.right : e1.left; - - while (++j < m) { - s0 = s1; - e1 = edges[halfedges[j]]; - s1 = e1.left === site ? e1.right : e1.left; - if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) { - triangles.push([site.data, s0.data, s1.data]); - } - } - }); - - return triangles; - }, - - links: function() { - return this.edges.filter(function(edge) { - return edge.right; - }).map(function(edge) { - return { - source: edge.left.data, - target: edge.right.data - }; - }); - }, - - find: function(x, y, radius) { - var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell; - - // Use the previously-found cell, or start with an arbitrary one. - while (!(cell = that.cells[i1])) if (++i1 >= n) return null; - var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy; - - // Traverse the half-edges to find a closer cell, if any. - do { - cell = that.cells[i0 = i1], i1 = null; - cell.halfedges.forEach(function(e) { - var edge = that.edges[e], v = edge.left; - if ((v === cell.site || !v) && !(v = edge.right)) return; - var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy; - if (v2 < d2) d2 = v2, i1 = v.index; - }); - } while (i1 !== null); - - that._found = i0; - - return radius == null || d2 <= radius * radius ? cell.site : null; - } -}; - -function voronoi() { - var x = x$4, - y = y$4, - extent = null; - - function voronoi(data) { - return new Diagram(data.map(function(d, i) { - var s = [Math.round(x(d, i, data) / epsilon$4) * epsilon$4, Math.round(y(d, i, data) / epsilon$4) * epsilon$4]; - s.index = i; - s.data = d; - return s; - }), extent); - } - - voronoi.polygons = function(data) { - return voronoi(data).polygons(); - }; - - voronoi.links = function(data) { - return voronoi(data).links(); - }; - - voronoi.triangles = function(data) { - return voronoi(data).triangles(); - }; - - voronoi.x = function(_) { - return arguments.length ? (x = typeof _ === "function" ? _ : constant$c(+_), voronoi) : x; - }; - - voronoi.y = function(_) { - return arguments.length ? (y = typeof _ === "function" ? _ : constant$c(+_), voronoi) : y; - }; - - voronoi.extent = function(_) { - return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]]; - }; - - voronoi.size = function(_) { - return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]]; - }; - - return voronoi; -} - -function constant$d(x) { - return function() { - return x; - }; -} - -function ZoomEvent(target, type, transform) { - this.target = target; - this.type = type; - this.transform = transform; -} - -function Transform(k, x, y) { - this.k = k; - this.x = x; - this.y = y; -} - -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x, y) { - return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y); - }, - apply: function(point) { - return [point[0] * this.k + this.x, point[1] * this.k + this.y]; - }, - applyX: function(x) { - return x * this.k + this.x; - }, - applyY: function(y) { - return y * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x) { - return (x - this.x) / this.k; - }, - invertY: function(y) { - return (y - this.y) / this.k; - }, - rescaleX: function(x) { - return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x)); - }, - rescaleY: function(y) { - return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; - -var identity$9 = new Transform(1, 0, 0); - -transform$1.prototype = Transform.prototype; - -function transform$1(node) { - while (!node.__zoom) if (!(node = node.parentNode)) return identity$9; - return node.__zoom; -} - -function nopropagation$2() { - exports.event.stopImmediatePropagation(); -} - -function noevent$2() { - exports.event.preventDefault(); - exports.event.stopImmediatePropagation(); -} - -// Ignore right-click, since that should open the context menu. -function defaultFilter$2() { - return !exports.event.ctrlKey && !exports.event.button; -} - -function defaultExtent$1() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} - -function defaultTransform() { - return this.__zoom || identity$9; -} - -function defaultWheelDelta() { - return -exports.event.deltaY * (exports.event.deltaMode === 1 ? 0.05 : exports.event.deltaMode ? 1 : 0.002); -} - -function defaultTouchable$2() { - return navigator.maxTouchPoints || ("ontouchstart" in this); -} - -function defaultConstrain(transform, extent, translateExtent) { - var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], - dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], - dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], - dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1]; - return transform.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} - -function zoom() { - var filter = defaultFilter$2, - extent = defaultExtent$1, - constrain = defaultConstrain, - wheelDelta = defaultWheelDelta, - touchable = defaultTouchable$2, - scaleExtent = [0, Infinity], - translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], - duration = 250, - interpolate = interpolateZoom, - listeners = dispatch("start", "zoom", "end"), - touchstarting, - touchending, - touchDelay = 500, - wheelDelay = 150, - clickDistance2 = 0; - - function zoom(selection) { - selection - .property("__zoom", defaultTransform) - .on("wheel.zoom", wheeled) - .on("mousedown.zoom", mousedowned) - .on("dblclick.zoom", dblclicked) - .filter(touchable) - .on("touchstart.zoom", touchstarted) - .on("touchmove.zoom", touchmoved) - .on("touchend.zoom touchcancel.zoom", touchended) - .style("touch-action", "none") - .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - - zoom.transform = function(collection, transform, point) { - var selection = collection.selection ? collection.selection() : collection; - selection.property("__zoom", defaultTransform); - if (collection !== selection) { - schedule(collection, transform, point); - } else { - selection.interrupt().each(function() { - gesture(this, arguments) - .start() - .zoom(null, typeof transform === "function" ? transform.apply(this, arguments) : transform) - .end(); - }); - } - }; - - zoom.scaleBy = function(selection, k, p) { - zoom.scaleTo(selection, function() { - var k0 = this.__zoom.k, - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p); - }; - - zoom.scaleTo = function(selection, k, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t0 = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, - p1 = t0.invert(p0), - k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p); - }; - - zoom.translateBy = function(selection, x, y) { - zoom.transform(selection, function() { - return constrain(this.__zoom.translate( - typeof x === "function" ? x.apply(this, arguments) : x, - typeof y === "function" ? y.apply(this, arguments) : y - ), extent.apply(this, arguments), translateExtent); - }); - }; - - zoom.translateTo = function(selection, x, y, p) { - zoom.transform(selection, function() { - var e = extent.apply(this, arguments), - t = this.__zoom, - p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity$9.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x === "function" ? -x.apply(this, arguments) : -x, - typeof y === "function" ? -y.apply(this, arguments) : -y - ), e, translateExtent); - }, p); - }; - - function scale(transform, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform.k ? transform : new Transform(k, transform.x, transform.y); - } - - function translate(transform, p0, p1) { - var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k; - return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y); - } - - function centroid(extent) { - return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2]; - } - - function schedule(transition, transform, point) { - transition - .on("start.zoom", function() { gesture(this, arguments).start(); }) - .on("interrupt.zoom end.zoom", function() { gesture(this, arguments).end(); }) - .tween("zoom", function() { - var that = this, - args = arguments, - g = gesture(that, args), - e = extent.apply(that, args), - p = point == null ? centroid(e) : typeof point === "function" ? point.apply(that, args) : point, - w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), - a = that.__zoom, - b = typeof transform === "function" ? transform.apply(that, args) : transform, - i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) t = b; // Avoid rounding error on end. - else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); } - g.zoom(null, t); - }; - }); - } - - function gesture(that, args, clean) { - return (!clean && that.__zooming) || new Gesture(that, args); - } - - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.extent = extent.apply(that, args); - this.taps = 0; - } - - Gesture.prototype = { - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform) { - if (this.mouse && key !== "mouse") this.mouse[1] = transform.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") this.touch0[1] = transform.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") this.touch1[1] = transform.invert(this.touch1[0]); - this.that.__zoom = transform; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type) { - customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]); - } - }; - - function wheeled() { - if (!filter.apply(this, arguments)) return; - var g = gesture(this, arguments), - t = this.__zoom, - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), - p = mouse(this); - - // If the mouse is in the same location as before, reuse it. - // If there were recent wheel events, reset the wheel idle timeout. - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } - - // If this wheel event won’t trigger a transform change, ignore it. - else if (t.k === k) return; - - // Otherwise, capture the mouse point and location at the start. - else { - g.mouse = [p, t.invert(p)]; - interrupt(this); - g.start(); - } - - noevent$2(); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - - function wheelidled() { - g.wheel = null; - g.end(); - } - } - - function mousedowned() { - if (touchending || !filter.apply(this, arguments)) return; - var g = gesture(this, arguments, true), - v = select(exports.event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), - p = mouse(this), - x0 = exports.event.clientX, - y0 = exports.event.clientY; - - dragDisable(exports.event.view); - nopropagation$2(); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt(this); - g.start(); - - function mousemoved() { - noevent$2(); - if (!g.moved) { - var dx = exports.event.clientX - x0, dy = exports.event.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent)); - } - - function mouseupped() { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(exports.event.view, g.moved); - noevent$2(); - g.end(); - } - } - - function dblclicked() { - if (!filter.apply(this, arguments)) return; - var t0 = this.__zoom, - p0 = mouse(this), - p1 = t0.invert(p0), - k1 = t0.k * (exports.event.shiftKey ? 0.5 : 2), - t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent); - - noevent$2(); - if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0); - else select(this).call(zoom.transform, t1); - } - - function touchstarted() { - if (!filter.apply(this, arguments)) return; - var touches = exports.event.touches, - n = touches.length, - g = gesture(this, arguments, exports.event.changedTouches.length === n), - started, i, t, p; - - nopropagation$2(); - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0; - } - - if (touchstarting) touchstarting = clearTimeout(touchstarting); - - if (started) { - if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay); - interrupt(this); - g.start(); - } - } - - function touchmoved() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t, p, l; - - noevent$2(); - if (touchstarting) touchstarting = clearTimeout(touchstarting); - g.taps = 0; - for (i = 0; i < n; ++i) { - t = touches[i], p = touch(this, touches, t.identifier); - if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], - p1 = g.touch1[0], l1 = g.touch1[1], - dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, - dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } - else if (g.touch0) p = g.touch0[0], l = g.touch0[1]; - else return; - g.zoom("touch", constrain(translate(t, p, l), g.extent, translateExtent)); - } - - function touchended() { - if (!this.__zooming) return; - var g = gesture(this, arguments), - touches = exports.event.changedTouches, - n = touches.length, i, t; - - nopropagation$2(); - if (touchending) clearTimeout(touchending); - touchending = setTimeout(function() { touchending = null; }, touchDelay); - for (i = 0; i < n; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1; - } - if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - // If this was a dbltap, reroute to the (optional) dblclick.zoom handler. - if (g.taps === 2) { - var p = select(this).on("dblclick.zoom"); - if (p) p.apply(this, arguments); - } - } - } - - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant$d(+_), zoom) : wheelDelta; - }; - - zoom.filter = function(_) { - return arguments.length ? (filter = typeof _ === "function" ? _ : constant$d(!!_), zoom) : filter; - }; - - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant$d(!!_), zoom) : touchable; - }; - - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant$d([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - - return zoom; -} - -exports.FormatSpecifier = FormatSpecifier; -exports.active = active; -exports.arc = arc; -exports.area = area$3; -exports.areaRadial = areaRadial; -exports.ascending = ascending; -exports.autoType = autoType; -exports.axisBottom = axisBottom; -exports.axisLeft = axisLeft; -exports.axisRight = axisRight; -exports.axisTop = axisTop; -exports.bisect = bisectRight; -exports.bisectLeft = bisectLeft; -exports.bisectRight = bisectRight; -exports.bisector = bisector; -exports.blob = blob; -exports.brush = brush; -exports.brushSelection = brushSelection; -exports.brushX = brushX; -exports.brushY = brushY; -exports.buffer = buffer; -exports.chord = chord; -exports.clientPoint = point; -exports.cluster = cluster; -exports.color = color; -exports.contourDensity = density; -exports.contours = contours; -exports.create = create; -exports.creator = creator; -exports.cross = cross; -exports.csv = csv$1; -exports.csvFormat = csvFormat; -exports.csvFormatBody = csvFormatBody; -exports.csvFormatRow = csvFormatRow; -exports.csvFormatRows = csvFormatRows; -exports.csvFormatValue = csvFormatValue; -exports.csvParse = csvParse; -exports.csvParseRows = csvParseRows; -exports.cubehelix = cubehelix; -exports.curveBasis = basis$2; -exports.curveBasisClosed = basisClosed$1; -exports.curveBasisOpen = basisOpen; -exports.curveBundle = bundle; -exports.curveCardinal = cardinal; -exports.curveCardinalClosed = cardinalClosed; -exports.curveCardinalOpen = cardinalOpen; -exports.curveCatmullRom = catmullRom; -exports.curveCatmullRomClosed = catmullRomClosed; -exports.curveCatmullRomOpen = catmullRomOpen; -exports.curveLinear = curveLinear; -exports.curveLinearClosed = linearClosed; -exports.curveMonotoneX = monotoneX; -exports.curveMonotoneY = monotoneY; -exports.curveNatural = natural; -exports.curveStep = step; -exports.curveStepAfter = stepAfter; -exports.curveStepBefore = stepBefore; -exports.customEvent = customEvent; -exports.descending = descending; -exports.deviation = deviation; -exports.dispatch = dispatch; -exports.drag = drag; -exports.dragDisable = dragDisable; -exports.dragEnable = yesdrag; -exports.dsv = dsv; -exports.dsvFormat = dsvFormat; -exports.easeBack = backInOut; -exports.easeBackIn = backIn; -exports.easeBackInOut = backInOut; -exports.easeBackOut = backOut; -exports.easeBounce = bounceOut; -exports.easeBounceIn = bounceIn; -exports.easeBounceInOut = bounceInOut; -exports.easeBounceOut = bounceOut; -exports.easeCircle = circleInOut; -exports.easeCircleIn = circleIn; -exports.easeCircleInOut = circleInOut; -exports.easeCircleOut = circleOut; -exports.easeCubic = cubicInOut; -exports.easeCubicIn = cubicIn; -exports.easeCubicInOut = cubicInOut; -exports.easeCubicOut = cubicOut; -exports.easeElastic = elasticOut; -exports.easeElasticIn = elasticIn; -exports.easeElasticInOut = elasticInOut; -exports.easeElasticOut = elasticOut; -exports.easeExp = expInOut; -exports.easeExpIn = expIn; -exports.easeExpInOut = expInOut; -exports.easeExpOut = expOut; -exports.easeLinear = linear$1; -exports.easePoly = polyInOut; -exports.easePolyIn = polyIn; -exports.easePolyInOut = polyInOut; -exports.easePolyOut = polyOut; -exports.easeQuad = quadInOut; -exports.easeQuadIn = quadIn; -exports.easeQuadInOut = quadInOut; -exports.easeQuadOut = quadOut; -exports.easeSin = sinInOut; -exports.easeSinIn = sinIn; -exports.easeSinInOut = sinInOut; -exports.easeSinOut = sinOut; -exports.entries = entries; -exports.extent = extent; -exports.forceCenter = center$1; -exports.forceCollide = collide; -exports.forceLink = link; -exports.forceManyBody = manyBody; -exports.forceRadial = radial; -exports.forceSimulation = simulation; -exports.forceX = x$2; -exports.forceY = y$2; -exports.formatDefaultLocale = defaultLocale; -exports.formatLocale = formatLocale; -exports.formatSpecifier = formatSpecifier; -exports.geoAlbers = albers; -exports.geoAlbersUsa = albersUsa; -exports.geoArea = area$1; -exports.geoAzimuthalEqualArea = azimuthalEqualArea; -exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw; -exports.geoAzimuthalEquidistant = azimuthalEquidistant; -exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw; -exports.geoBounds = bounds; -exports.geoCentroid = centroid; -exports.geoCircle = circle; -exports.geoClipAntimeridian = clipAntimeridian; -exports.geoClipCircle = clipCircle; -exports.geoClipExtent = extent$1; -exports.geoClipRectangle = clipRectangle; -exports.geoConicConformal = conicConformal; -exports.geoConicConformalRaw = conicConformalRaw; -exports.geoConicEqualArea = conicEqualArea; -exports.geoConicEqualAreaRaw = conicEqualAreaRaw; -exports.geoConicEquidistant = conicEquidistant; -exports.geoConicEquidistantRaw = conicEquidistantRaw; -exports.geoContains = contains$1; -exports.geoDistance = distance; -exports.geoEqualEarth = equalEarth; -exports.geoEqualEarthRaw = equalEarthRaw; -exports.geoEquirectangular = equirectangular; -exports.geoEquirectangularRaw = equirectangularRaw; -exports.geoGnomonic = gnomonic; -exports.geoGnomonicRaw = gnomonicRaw; -exports.geoGraticule = graticule; -exports.geoGraticule10 = graticule10; -exports.geoIdentity = identity$5; -exports.geoInterpolate = interpolate$1; -exports.geoLength = length$1; -exports.geoMercator = mercator; -exports.geoMercatorRaw = mercatorRaw; -exports.geoNaturalEarth1 = naturalEarth1; -exports.geoNaturalEarth1Raw = naturalEarth1Raw; -exports.geoOrthographic = orthographic; -exports.geoOrthographicRaw = orthographicRaw; -exports.geoPath = index$1; -exports.geoProjection = projection; -exports.geoProjectionMutator = projectionMutator; -exports.geoRotation = rotation; -exports.geoStereographic = stereographic; -exports.geoStereographicRaw = stereographicRaw; -exports.geoStream = geoStream; -exports.geoTransform = transform; -exports.geoTransverseMercator = transverseMercator; -exports.geoTransverseMercatorRaw = transverseMercatorRaw; -exports.gray = gray; -exports.hcl = hcl; -exports.hierarchy = hierarchy; -exports.histogram = histogram; -exports.hsl = hsl; -exports.html = html; -exports.image = image; -exports.interpolate = interpolateValue; -exports.interpolateArray = array$1; -exports.interpolateBasis = basis$1; -exports.interpolateBasisClosed = basisClosed; -exports.interpolateBlues = Blues; -exports.interpolateBrBG = BrBG; -exports.interpolateBuGn = BuGn; -exports.interpolateBuPu = BuPu; -exports.interpolateCividis = cividis; -exports.interpolateCool = cool; -exports.interpolateCubehelix = cubehelix$2; -exports.interpolateCubehelixDefault = cubehelix$3; -exports.interpolateCubehelixLong = cubehelixLong; -exports.interpolateDate = date; -exports.interpolateDiscrete = discrete; -exports.interpolateGnBu = GnBu; -exports.interpolateGreens = Greens; -exports.interpolateGreys = Greys; -exports.interpolateHcl = hcl$2; -exports.interpolateHclLong = hclLong; -exports.interpolateHsl = hsl$2; -exports.interpolateHslLong = hslLong; -exports.interpolateHue = hue$1; -exports.interpolateInferno = inferno; -exports.interpolateLab = lab$1; -exports.interpolateMagma = magma; -exports.interpolateNumber = interpolateNumber; -exports.interpolateNumberArray = numberArray; -exports.interpolateObject = object; -exports.interpolateOrRd = OrRd; -exports.interpolateOranges = Oranges; -exports.interpolatePRGn = PRGn; -exports.interpolatePiYG = PiYG; -exports.interpolatePlasma = plasma; -exports.interpolatePuBu = PuBu; -exports.interpolatePuBuGn = PuBuGn; -exports.interpolatePuOr = PuOr; -exports.interpolatePuRd = PuRd; -exports.interpolatePurples = Purples; -exports.interpolateRainbow = rainbow; -exports.interpolateRdBu = RdBu; -exports.interpolateRdGy = RdGy; -exports.interpolateRdPu = RdPu; -exports.interpolateRdYlBu = RdYlBu; -exports.interpolateRdYlGn = RdYlGn; -exports.interpolateReds = Reds; -exports.interpolateRgb = interpolateRgb; -exports.interpolateRgbBasis = rgbBasis; -exports.interpolateRgbBasisClosed = rgbBasisClosed; -exports.interpolateRound = interpolateRound; -exports.interpolateSinebow = sinebow; -exports.interpolateSpectral = Spectral; -exports.interpolateString = interpolateString; -exports.interpolateTransformCss = interpolateTransformCss; -exports.interpolateTransformSvg = interpolateTransformSvg; -exports.interpolateTurbo = turbo; -exports.interpolateViridis = viridis; -exports.interpolateWarm = warm; -exports.interpolateYlGn = YlGn; -exports.interpolateYlGnBu = YlGnBu; -exports.interpolateYlOrBr = YlOrBr; -exports.interpolateYlOrRd = YlOrRd; -exports.interpolateZoom = interpolateZoom; -exports.interrupt = interrupt; -exports.interval = interval$1; -exports.isoFormat = formatIso; -exports.isoParse = parseIso; -exports.json = json; -exports.keys = keys; -exports.lab = lab; -exports.lch = lch; -exports.line = line; -exports.lineRadial = lineRadial$1; -exports.linkHorizontal = linkHorizontal; -exports.linkRadial = linkRadial; -exports.linkVertical = linkVertical; -exports.local = local; -exports.map = map$1; -exports.matcher = matcher; -exports.max = max; -exports.mean = mean; -exports.median = median; -exports.merge = merge; -exports.min = min; -exports.mouse = mouse; -exports.namespace = namespace; -exports.namespaces = namespaces; -exports.nest = nest; -exports.now = now; -exports.pack = index$2; -exports.packEnclose = enclose; -exports.packSiblings = siblings; -exports.pairs = pairs; -exports.partition = partition; -exports.path = path; -exports.permute = permute; -exports.pie = pie; -exports.piecewise = piecewise; -exports.pointRadial = pointRadial; -exports.polygonArea = area$2; -exports.polygonCentroid = centroid$1; -exports.polygonContains = contains$2; -exports.polygonHull = hull; -exports.polygonLength = length$2; -exports.precisionFixed = precisionFixed; -exports.precisionPrefix = precisionPrefix; -exports.precisionRound = precisionRound; -exports.quadtree = quadtree; -exports.quantile = threshold; -exports.quantize = quantize; -exports.radialArea = areaRadial; -exports.radialLine = lineRadial$1; -exports.randomBates = bates; -exports.randomExponential = exponential$1; -exports.randomIrwinHall = irwinHall; -exports.randomLogNormal = logNormal; -exports.randomNormal = normal; -exports.randomUniform = uniform; -exports.range = sequence; -exports.rgb = rgb; -exports.ribbon = ribbon; -exports.scaleBand = band; -exports.scaleDiverging = diverging; -exports.scaleDivergingLog = divergingLog; -exports.scaleDivergingPow = divergingPow; -exports.scaleDivergingSqrt = divergingSqrt; -exports.scaleDivergingSymlog = divergingSymlog; -exports.scaleIdentity = identity$7; -exports.scaleImplicit = implicit; -exports.scaleLinear = linear$2; -exports.scaleLog = log$1; -exports.scaleOrdinal = ordinal; -exports.scalePoint = point$1; -exports.scalePow = pow$1; -exports.scaleQuantile = quantile; -exports.scaleQuantize = quantize$1; -exports.scaleSequential = sequential; -exports.scaleSequentialLog = sequentialLog; -exports.scaleSequentialPow = sequentialPow; -exports.scaleSequentialQuantile = sequentialQuantile; -exports.scaleSequentialSqrt = sequentialSqrt; -exports.scaleSequentialSymlog = sequentialSymlog; -exports.scaleSqrt = sqrt$1; -exports.scaleSymlog = symlog; -exports.scaleThreshold = threshold$1; -exports.scaleTime = time; -exports.scaleUtc = utcTime; -exports.scan = scan; -exports.schemeAccent = Accent; -exports.schemeBlues = scheme$l; -exports.schemeBrBG = scheme; -exports.schemeBuGn = scheme$9; -exports.schemeBuPu = scheme$a; -exports.schemeCategory10 = category10; -exports.schemeDark2 = Dark2; -exports.schemeGnBu = scheme$b; -exports.schemeGreens = scheme$m; -exports.schemeGreys = scheme$n; -exports.schemeOrRd = scheme$c; -exports.schemeOranges = scheme$q; -exports.schemePRGn = scheme$1; -exports.schemePaired = Paired; -exports.schemePastel1 = Pastel1; -exports.schemePastel2 = Pastel2; -exports.schemePiYG = scheme$2; -exports.schemePuBu = scheme$e; -exports.schemePuBuGn = scheme$d; -exports.schemePuOr = scheme$3; -exports.schemePuRd = scheme$f; -exports.schemePurples = scheme$o; -exports.schemeRdBu = scheme$4; -exports.schemeRdGy = scheme$5; -exports.schemeRdPu = scheme$g; -exports.schemeRdYlBu = scheme$6; -exports.schemeRdYlGn = scheme$7; -exports.schemeReds = scheme$p; -exports.schemeSet1 = Set1; -exports.schemeSet2 = Set2; -exports.schemeSet3 = Set3; -exports.schemeSpectral = scheme$8; -exports.schemeTableau10 = Tableau10; -exports.schemeYlGn = scheme$i; -exports.schemeYlGnBu = scheme$h; -exports.schemeYlOrBr = scheme$j; -exports.schemeYlOrRd = scheme$k; -exports.select = select; -exports.selectAll = selectAll; -exports.selection = selection; -exports.selector = selector; -exports.selectorAll = selectorAll; -exports.set = set$2; -exports.shuffle = shuffle; -exports.stack = stack; -exports.stackOffsetDiverging = diverging$1; -exports.stackOffsetExpand = expand; -exports.stackOffsetNone = none$1; -exports.stackOffsetSilhouette = silhouette; -exports.stackOffsetWiggle = wiggle; -exports.stackOrderAppearance = appearance; -exports.stackOrderAscending = ascending$3; -exports.stackOrderDescending = descending$2; -exports.stackOrderInsideOut = insideOut; -exports.stackOrderNone = none$2; -exports.stackOrderReverse = reverse; -exports.stratify = stratify; -exports.style = styleValue; -exports.sum = sum; -exports.svg = svg; -exports.symbol = symbol; -exports.symbolCircle = circle$2; -exports.symbolCross = cross$2; -exports.symbolDiamond = diamond; -exports.symbolSquare = square; -exports.symbolStar = star; -exports.symbolTriangle = triangle; -exports.symbolWye = wye; -exports.symbols = symbols; -exports.text = text; -exports.thresholdFreedmanDiaconis = freedmanDiaconis; -exports.thresholdScott = scott; -exports.thresholdSturges = thresholdSturges; -exports.tickFormat = tickFormat; -exports.tickIncrement = tickIncrement; -exports.tickStep = tickStep; -exports.ticks = ticks; -exports.timeDay = day; -exports.timeDays = days; -exports.timeFormatDefaultLocale = defaultLocale$1; -exports.timeFormatLocale = formatLocale$1; -exports.timeFriday = friday; -exports.timeFridays = fridays; -exports.timeHour = hour; -exports.timeHours = hours; -exports.timeInterval = newInterval; -exports.timeMillisecond = millisecond; -exports.timeMilliseconds = milliseconds; -exports.timeMinute = minute; -exports.timeMinutes = minutes; -exports.timeMonday = monday; -exports.timeMondays = mondays; -exports.timeMonth = month; -exports.timeMonths = months; -exports.timeSaturday = saturday; -exports.timeSaturdays = saturdays; -exports.timeSecond = second; -exports.timeSeconds = seconds; -exports.timeSunday = sunday; -exports.timeSundays = sundays; -exports.timeThursday = thursday; -exports.timeThursdays = thursdays; -exports.timeTuesday = tuesday; -exports.timeTuesdays = tuesdays; -exports.timeWednesday = wednesday; -exports.timeWednesdays = wednesdays; -exports.timeWeek = sunday; -exports.timeWeeks = sundays; -exports.timeYear = year; -exports.timeYears = years; -exports.timeout = timeout$1; -exports.timer = timer; -exports.timerFlush = timerFlush; -exports.touch = touch; -exports.touches = touches; -exports.transition = transition; -exports.transpose = transpose; -exports.tree = tree; -exports.treemap = index$3; -exports.treemapBinary = binary; -exports.treemapDice = treemapDice; -exports.treemapResquarify = resquarify; -exports.treemapSlice = treemapSlice; -exports.treemapSliceDice = sliceDice; -exports.treemapSquarify = squarify; -exports.tsv = tsv$1; -exports.tsvFormat = tsvFormat; -exports.tsvFormatBody = tsvFormatBody; -exports.tsvFormatRow = tsvFormatRow; -exports.tsvFormatRows = tsvFormatRows; -exports.tsvFormatValue = tsvFormatValue; -exports.tsvParse = tsvParse; -exports.tsvParseRows = tsvParseRows; -exports.utcDay = utcDay; -exports.utcDays = utcDays; -exports.utcFriday = utcFriday; -exports.utcFridays = utcFridays; -exports.utcHour = utcHour; -exports.utcHours = utcHours; -exports.utcMillisecond = millisecond; -exports.utcMilliseconds = milliseconds; -exports.utcMinute = utcMinute; -exports.utcMinutes = utcMinutes; -exports.utcMonday = utcMonday; -exports.utcMondays = utcMondays; -exports.utcMonth = utcMonth; -exports.utcMonths = utcMonths; -exports.utcSaturday = utcSaturday; -exports.utcSaturdays = utcSaturdays; -exports.utcSecond = second; -exports.utcSeconds = seconds; -exports.utcSunday = utcSunday; -exports.utcSundays = utcSundays; -exports.utcThursday = utcThursday; -exports.utcThursdays = utcThursdays; -exports.utcTuesday = utcTuesday; -exports.utcTuesdays = utcTuesdays; -exports.utcWednesday = utcWednesday; -exports.utcWednesdays = utcWednesdays; -exports.utcWeek = utcSunday; -exports.utcWeeks = utcSundays; -exports.utcYear = utcYear; -exports.utcYears = utcYears; -exports.values = values; -exports.variance = variance; -exports.version = version; -exports.voronoi = voronoi; -exports.window = defaultView; -exports.xml = xml; -exports.zip = zip; -exports.zoom = zoom; -exports.zoomIdentity = identity$9; -exports.zoomTransform = transform$1; - -Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/ilinx_home/maps/map_files/language.js b/ilinx_home/maps/map_files/language.js deleted file mode 100644 index f82b6c3..0000000 --- a/ilinx_home/maps/map_files/language.js +++ /dev/null @@ -1,486 +0,0 @@ -function shuffled(list) { - var newlist = []; - for (var i = 0; i < list.length; i++) { - newlist.push(list[i]); - } - for (var i = list.length - 1; i > 0; i--) { - var tmp = newlist[i]; - var j = randrange(i); - newlist[i] = newlist[j]; - newlist[j] = tmp; - } - return newlist; -} - -function choose(list, exponent) { - exponent = exponent || 1; - return list[Math.floor(Math.pow(Math.random(), exponent) * list.length)]; -} - -function randrange(lo, hi) { - if (hi == undefined) { - hi = lo; - lo = 0; - } - return Math.floor(Math.random() * (hi - lo)) + lo; -} - -function join(list, sep) { - if (list.length == 0) return ''; - sep = sep || ''; - var s = list[0]; - for (var i = 1; i < list.length; i++) { - s += sep; - s += list[i]; - } - return s; -} - -function capitalize(word) { - return word[0].toUpperCase() + word.slice(1); -} - -function spell(lang, syll) { - if (lang.noortho) return syll; - var s = ''; - for (var i = 0; i < syll.length; i++) { - var c = syll[i]; - s += lang.cortho[c] || lang.vortho[c] || defaultOrtho[c] || c; - } - return s; -} - -function makeSyllable(lang) { - while (true) { - var syll = ""; - for (var i = 0; i < lang.structure.length; i++) { - var ptype = lang.structure[i]; - if (lang.structure[i+1] == '?') { - i++; - if (Math.random() < 0.5) { - continue; - } - } - syll += choose(lang.phonemes[ptype], lang.exponent); - } - var bad = false; - for (var i = 0; i < lang.restricts.length; i++) { - if (lang.restricts[i].test(syll)) { - bad = true; - break; - } - } - if (bad) continue; - return spell(lang, syll); - } -} - -function getMorpheme(lang, key) { - if (lang.nomorph) { - return makeSyllable(lang); - } - key = key || ''; - var list = lang.morphemes[key] || []; - var extras = 10; - if (key) extras = 1; - while (true) { - var n = randrange(list.length + extras); - if (list[n]) return list[n]; - var morph = makeSyllable(lang); - var bad = false; - for (var k in lang.morphemes) { - if (lang.morphemes[k].includes(morph)) { - bad = true; - break; - } - } - if (bad) continue; - list.push(morph); - lang.morphemes[key] = list; - return morph; - } -} - -function makeWord(lang, key) { - var nsylls = randrange(lang.minsyll, lang.maxsyll + 1); - var w = ''; - var keys = []; - keys[randrange(nsylls)] = key; - for (var i = 0; i < nsylls; i++) { - w += getMorpheme(lang, keys[i]); - } - return w; -} - -function getWord(lang, key) { - key = key || ''; - var ws = lang.words[key] || []; - var extras = 3; - if (key) extras = 2; - while (true) { - var n = randrange(ws.length + extras); - var w = ws[n]; - if (w) { - return w; - } - w = makeWord(lang, key); - var bad = false; - for (var k in lang.words) { - if (lang.words[k].includes(w)) { - bad = true; - break; - } - } - if (bad) continue; - ws.push(w); - lang.words[key] = ws; - return w; - } -} -function makeName(lang, key) { - key = key || ''; - lang.genitive = lang.genitive || getMorpheme(lang, 'of'); - lang.definite = lang.definite || getMorpheme(lang, 'the'); - while (true) { - var name = null; - if (Math.random() < 0.5) { - name = capitalize(getWord(lang, key)); - } else { - var w1 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - var w2 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - if (w1 == w2) continue; - if (Math.random() > 0.5) { - name = join([w1, w2], lang.joiner); - } else { - name = join([w1, lang.genitive, w2], lang.joiner); - } - } - if (Math.random() < 0.1) { - name = join([lang.definite, name], lang.joiner); - } - - if ((name.length < lang.minchar) || (name.length > lang.maxchar)) continue; - var used = false; - for (var i = 0; i < lang.names.length; i++) { - var name2 = lang.names[i]; - if ((name.indexOf(name2) != -1) || (name2.indexOf(name) != -1)) { - used = true; - break; - } - } - if (used) continue; - lang.names.push(name); - return name; - } -} - -function makeBasicLanguage() { - return { - phonemes: { - C: "ptkmnls", - V: "aeiou", - S: "s", - F: "mn", - L: "rl" - }, - structure: "CVC", - exponent: 2, - restricts: [], - cortho: {}, - vortho: {}, - noortho: true, - nomorph: true, - nowordpool: true, - minsyll: 1, - maxsyll: 1, - morphemes: {}, - words: {}, - names: [], - joiner: ' ', - maxchar: 12, - minchar: 5 - }; -} - -function makeOrthoLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - return lang; -} - -function makeRandomLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - lang.nomorph = false; - lang.nowordpool = false; - lang.phonemes.C = shuffled(choose(consets, 2).C); - lang.phonemes.V = shuffled(choose(vowsets, 2).V); - lang.phonemes.L = shuffled(choose(lsets, 2).L); - lang.phonemes.S = shuffled(choose(ssets, 2).S); - lang.phonemes.F = shuffled(choose(fsets, 2).F); - lang.structure = choose(syllstructs); - lang.restricts = ressets[2].res; - lang.cortho = choose(corthsets, 2).orth; - lang.vortho = choose(vorthsets, 2).orth; - lang.minsyll = randrange(1, 3); - if (lang.structure.length < 3) lang.minsyll++; - lang.maxsyll = randrange(lang.minsyll + 1, 7); - lang.joiner = choose(' -'); - return lang; -} -var defaultOrtho = { - 'ʃ': 'sh', - 'ʒ': 'zh', - 'ʧ': 'ch', - 'ʤ': 'j', - 'ŋ': 'ng', - 'j': 'y', - 'x': 'kh', - 'ɣ': 'gh', - 'ʔ': '‘', - A: "á", - E: "é", - I: "í", - O: "ó", - U: "ú" -}; - -var corthsets = [ - { - name: "Default", - orth: {} - }, - { - name: "Slavic", - orth: { - 'ʃ': 'š', - 'ʒ': 'ž', - 'ʧ': 'č', - 'ʤ': 'ǧ', - 'j': 'j' - } - }, - { - name: "German", - orth: { - 'ʃ': 'sch', - 'ʒ': 'zh', - 'ʧ': 'tsch', - 'ʤ': 'dz', - 'j': 'j', - 'x': 'ch' - } - }, - { - name: "French", - orth: { - 'ʃ': 'ch', - 'ʒ': 'j', - 'ʧ': 'tch', - 'ʤ': 'dj', - 'x': 'kh' - } - }, - { - name: "Chinese (pinyin)", - orth: { - 'ʃ': 'x', - 'ʧ': 'q', - 'ʤ': 'j', - } - } -]; - -var vorthsets = [ - { - name: "Ácutes", - orth: {} - }, - { - name: "Ümlauts", - orth: { - A: "ä", - E: "ë", - I: "ï", - O: "ö", - U: "ü" - } - }, - { - name: "Welsh", - orth: { - A: "â", - E: "ê", - I: "y", - O: "ô", - U: "w" - } - }, - { - name: "Diphthongs", - orth: { - A: "au", - E: "ei", - I: "ie", - O: "ou", - U: "oo" - } - }, - { - name: "Doubles", - orth: { - A: "aa", - E: "ee", - I: "ii", - O: "oo", - U: "uu" - } - } -]; - -var consets = [ - { - name: "Minimal", - C: "ptkmnls" - }, - { - name: "English-ish", - C: "ptkbdgmnlrsʃzʒʧ" - }, - { - name: "Pirahã (very simple)", - C: "ptkmnh" - }, - { - name: "Hawaiian-ish", - C: "hklmnpwʔ" - }, - { - name: "Greenlandic-ish", - C: "ptkqvsgrmnŋlj" - }, - { - name: "Arabic-ish", - C: "tksʃdbqɣxmnlrwj" - }, - { - name: "Arabic-lite", - C: "tkdgmnsʃ" - }, - { - name: "English-lite", - C: "ptkbdgmnszʒʧhjw" - } -]; - -var ssets = [ - { - name: "Just s", - S: "s" - }, - { - name: "s ʃ", - S: "sʃ" - }, - { - name: "s ʃ f", - S: "sʃf" - } -]; - -var lsets = [ - { - name: "r l", - L: "rl" - }, - { - name: "Just r", - L: "r" - }, - { - name: "Just l", - L: "l" - }, - { - name: "w j", - L: "wj" - }, - { - name: "r l w j", - L: "rlwj" - } -]; - -var fsets = [ - { - name: "m n", - F: "mn" - }, - { - name: "s k", - F: "sk" - }, - { - name: "m n ŋ", - F: "mnŋ" - }, - { - name: "s ʃ z ʒ", - F: "sʃzʒ" - } -]; - -var vowsets = [ - { - name: "Standard 5-vowel", - V: "aeiou" - }, - { - name: "3-vowel a i u", - V: "aiu" - }, - { - name: "Extra A E I", - V: "aeiouAEI" - }, - { - name: "Extra U", - V: "aeiouU" - }, - { - name: "5-vowel a i u A I", - V: "aiuAI" - }, - { - name: "3-vowel e o u", - V: "eou" - }, - { - name: "Extra A O U", - V: "aeiouAOU" - } -]; - -var syllstructs = [ - "CVC", - "CVV?C", - "CVVC?", "CVC?", "CV", "VC", "CVF", "C?VC", "CVF?", - "CL?VC", "CL?VF", "S?CVC", "S?CVF", "S?CVC?", - "C?VF", "C?VC?", "C?VF?", "C?L?VC", "VC", - "CVL?C?", "C?VL?C", "C?VLC?"]; - -var ressets = [ - { - name: "None", - res: [] - }, - { - name: "Double sounds", - res: [/(.)\1/] - }, - { - name: "Doubles and hard clusters", - res: [/[sʃf][sʃ]/, /(.)\1/, /[rl][rl]/] - } -]; - diff --git a/ilinx_home/maps/map_files/priority-queue.js b/ilinx_home/maps/map_files/priority-queue.js deleted file mode 100644 index f8f6b54..0000000 --- a/ilinx_home/maps/map_files/priority-queue.js +++ /dev/null @@ -1,387 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PriorityQueue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>> 1; - if (comparator(array[mid], value) >= 0) { - low = mid + 1; - } else { - high = mid; - } - } - return low; -}; - -module.exports = ArrayStrategy = (function() { - function ArrayStrategy(options) { - var ref; - this.options = options; - this.comparator = this.options.comparator; - this.data = ((ref = this.options.initialValues) != null ? ref.slice(0) : void 0) || []; - this.data.sort(this.comparator).reverse(); - } - - ArrayStrategy.prototype.queue = function(value) { - var pos; - pos = binarySearchForIndexReversed(this.data, value, this.comparator); - this.data.splice(pos, 0, value); - return void 0; - }; - - ArrayStrategy.prototype.dequeue = function() { - return this.data.pop(); - }; - - ArrayStrategy.prototype.peek = function() { - return this.data[this.data.length - 1]; - }; - - ArrayStrategy.prototype.clear = function() { - this.data.length = 0; - return void 0; - }; - - return ArrayStrategy; - -})(); - - -},{}],4:[function(_dereq_,module,exports){ -var BHeapStrategy; - -module.exports = BHeapStrategy = (function() { - function BHeapStrategy(options) { - var arr, i, j, k, len, ref, ref1, shift, value; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.pageSize = (options != null ? options.pageSize : void 0) || 512; - this.length = 0; - shift = 0; - while ((1 << shift) < this.pageSize) { - shift += 1; - } - if (1 << shift !== this.pageSize) { - throw 'pageSize must be a power of two'; - } - this._shift = shift; - this._emptyMemoryPageTemplate = arr = []; - for (i = j = 0, ref = this.pageSize; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { - arr.push(null); - } - this._memory = []; - this._mask = this.pageSize - 1; - if (options.initialValues) { - ref1 = options.initialValues; - for (k = 0, len = ref1.length; k < len; k++) { - value = ref1[k]; - this.queue(value); - } - } - } - - BHeapStrategy.prototype.queue = function(value) { - this.length += 1; - this._write(this.length, value); - this._bubbleUp(this.length, value); - return void 0; - }; - - BHeapStrategy.prototype.dequeue = function() { - var ret, val; - ret = this._read(1); - val = this._read(this.length); - this.length -= 1; - if (this.length > 0) { - this._write(1, val); - this._bubbleDown(1, val); - } - return ret; - }; - - BHeapStrategy.prototype.peek = function() { - return this._read(1); - }; - - BHeapStrategy.prototype.clear = function() { - this.length = 0; - this._memory.length = 0; - return void 0; - }; - - BHeapStrategy.prototype._write = function(index, value) { - var page; - page = index >> this._shift; - while (page >= this._memory.length) { - this._memory.push(this._emptyMemoryPageTemplate.slice(0)); - } - return this._memory[page][index & this._mask] = value; - }; - - BHeapStrategy.prototype._read = function(index) { - return this._memory[index >> this._shift][index & this._mask]; - }; - - BHeapStrategy.prototype._bubbleUp = function(index, value) { - var compare, indexInPage, parentIndex, parentValue; - compare = this.comparator; - while (index > 1) { - indexInPage = index & this._mask; - if (index < this.pageSize || indexInPage > 3) { - parentIndex = (index & ~this._mask) | (indexInPage >> 1); - } else if (indexInPage < 2) { - parentIndex = (index - this.pageSize) >> this._shift; - parentIndex += parentIndex & ~(this._mask >> 1); - parentIndex |= this.pageSize >> 1; - } else { - parentIndex = index - 2; - } - parentValue = this._read(parentIndex); - if (compare(parentValue, value) < 0) { - break; - } - this._write(parentIndex, value); - this._write(index, parentValue); - index = parentIndex; - } - return void 0; - }; - - BHeapStrategy.prototype._bubbleDown = function(index, value) { - var childIndex1, childIndex2, childValue1, childValue2, compare; - compare = this.comparator; - while (index < this.length) { - if (index > this._mask && !(index & (this._mask - 1))) { - childIndex1 = childIndex2 = index + 2; - } else if (index & (this.pageSize >> 1)) { - childIndex1 = (index & ~this._mask) >> 1; - childIndex1 |= index & (this._mask >> 1); - childIndex1 = (childIndex1 + 1) << this._shift; - childIndex2 = childIndex1 + 1; - } else { - childIndex1 = index + (index & this._mask); - childIndex2 = childIndex1 + 1; - } - if (childIndex1 !== childIndex2 && childIndex2 <= this.length) { - childValue1 = this._read(childIndex1); - childValue2 = this._read(childIndex2); - if (compare(childValue1, value) < 0 && compare(childValue1, childValue2) <= 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else if (compare(childValue2, value) < 0) { - this._write(childIndex2, value); - this._write(index, childValue2); - index = childIndex2; - } else { - break; - } - } else if (childIndex1 <= this.length) { - childValue1 = this._read(childIndex1); - if (compare(childValue1, value) < 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else { - break; - } - } else { - break; - } - } - return void 0; - }; - - return BHeapStrategy; - -})(); - - -},{}],5:[function(_dereq_,module,exports){ -var BinaryHeapStrategy; - -module.exports = BinaryHeapStrategy = (function() { - function BinaryHeapStrategy(options) { - var ref; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.length = 0; - this.data = ((ref = options.initialValues) != null ? ref.slice(0) : void 0) || []; - this._heapify(); - } - - BinaryHeapStrategy.prototype._heapify = function() { - var i, j, ref; - if (this.data.length > 0) { - for (i = j = 1, ref = this.data.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) { - this._bubbleUp(i); - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype.queue = function(value) { - this.data.push(value); - this._bubbleUp(this.data.length - 1); - return void 0; - }; - - BinaryHeapStrategy.prototype.dequeue = function() { - var last, ret; - ret = this.data[0]; - last = this.data.pop(); - if (this.data.length > 0) { - this.data[0] = last; - this._bubbleDown(0); - } - return ret; - }; - - BinaryHeapStrategy.prototype.peek = function() { - return this.data[0]; - }; - - BinaryHeapStrategy.prototype.clear = function() { - this.length = 0; - this.data.length = 0; - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleUp = function(pos) { - var parent, x; - while (pos > 0) { - parent = (pos - 1) >>> 1; - if (this.comparator(this.data[pos], this.data[parent]) < 0) { - x = this.data[parent]; - this.data[parent] = this.data[pos]; - this.data[pos] = x; - pos = parent; - } else { - break; - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleDown = function(pos) { - var last, left, minIndex, right, x; - last = this.data.length - 1; - while (true) { - left = (pos << 1) + 1; - right = left + 1; - minIndex = pos; - if (left <= last && this.comparator(this.data[left], this.data[minIndex]) < 0) { - minIndex = left; - } - if (right <= last && this.comparator(this.data[right], this.data[minIndex]) < 0) { - minIndex = right; - } - if (minIndex !== pos) { - x = this.data[minIndex]; - this.data[minIndex] = this.data[pos]; - this.data[pos] = x; - pos = minIndex; - } else { - break; - } - } - return void 0; - }; - - return BinaryHeapStrategy; - -})(); - - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/ilinx_home/maps/map_files/script.js b/ilinx_home/maps/map_files/script.js deleted file mode 100644 index 1a4334d..0000000 --- a/ilinx_home/maps/map_files/script.js +++ /dev/null @@ -1,21 +0,0 @@ -/* If you're feeling fancy you can add interactivity - to your site with Javascript */ - -// prints "hi" in the browser's dev tools console -console.log("hi"); -var svg = d3.select("svg"); - -var params = { - extent: defaultExtent, - generator: generateCoast, - npts: 1684, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - -doMap(svg, defaultParams); diff --git a/ilinx_home/maps/map_files/terrain.js b/ilinx_home/maps/map_files/terrain.js deleted file mode 100644 index 49a624c..0000000 --- a/ilinx_home/maps/map_files/terrain.js +++ /dev/null @@ -1,1073 +0,0 @@ -"use strict"; - -function runif(lo, hi) { - return lo + Math.random() * (hi - lo); -} - -var rnorm = (function () { - var z2 = null; - function rnorm() { - if (z2 != null) { - var tmp = z2; - z2 = null; - return tmp; - } - var x1 = 0; - var x2 = 0; - var w = 2.0; - while (w >= 1) { - x1 = runif(-1, 1); - x2 = runif(-1, 1); - w = x1 * x1 + x2 * x2; - } - w = Math.sqrt(-2 * Math.log(w) / w); - z2 = x2 * w; - return x1 * w; - } - return rnorm; -})(); - -function randomVector(scale) { - return [scale * rnorm(), scale * rnorm()]; -} - -var defaultExtent = { - width: 1, - height: 1 -}; - -function generatePoints(n, extent) { - extent = extent || defaultExtent; - var pts = []; - for (var i = 0; i < n; i++) { - pts.push([(Math.random() - 0.5) * extent.width, (Math.random() - 0.5) * extent.height]); - } - return pts; -} - -function centroid(pts) { - var x = 0; - var y = 0; - for (var i = 0; i < pts.length; i++) { - x += pts[i][0]; - y += pts[i][1]; - } - return [x/pts.length, y/pts.length]; -} - -function improvePoints(pts, n, extent) { - n = n || 1; - extent = extent || defaultExtent; - for (var i = 0; i < n; i++) { - pts = voronoi(pts, extent) - .polygons(pts) - .map(centroid); - } - return pts; -} - -function generateGoodPoints(n, extent) { - extent = extent || defaultExtent; - var pts = generatePoints(n, extent); - pts = pts.sort(function (a, b) { - return a[0] - b[0]; - }); - return improvePoints(pts, 1, extent); -} - -function voronoi(pts, extent) { - extent = extent || defaultExtent; - var w = extent.width/2; - var h = extent.height/2; - return d3.voronoi().extent([[-w, -h], [w, h]])(pts); -} - -function makeMesh(pts, extent) { - extent = extent || defaultExtent; - var vor = voronoi(pts, extent); - var vxs = []; - var vxids = {}; - var adj = []; - var edges = []; - var tris = []; - for (var i = 0; i < vor.edges.length; i++) { - var e = vor.edges[i]; - if (e == undefined) continue; - var e0 = vxids[e[0]]; - var e1 = vxids[e[1]]; - if (e0 == undefined) { - e0 = vxs.length; - vxids[e[0]] = e0; - vxs.push(e[0]); - } - if (e1 == undefined) { - e1 = vxs.length; - vxids[e[1]] = e1; - vxs.push(e[1]); - } - adj[e0] = adj[e0] || []; - adj[e0].push(e1); - adj[e1] = adj[e1] || []; - adj[e1].push(e0); - edges.push([e0, e1, e.left, e.right]); - tris[e0] = tris[e0] || []; - if (!tris[e0].includes(e.left)) tris[e0].push(e.left); - if (e.right && !tris[e0].includes(e.right)) tris[e0].push(e.right); - tris[e1] = tris[e1] || []; - if (!tris[e1].includes(e.left)) tris[e1].push(e.left); - if (e.right && !tris[e1].includes(e.right)) tris[e1].push(e.right); - } - - var mesh = { - pts: pts, - vor: vor, - vxs: vxs, - adj: adj, - tris: tris, - edges: edges, - extent: extent - } - mesh.map = function (f) { - var mapped = vxs.map(f); - mapped.mesh = mesh; - return mapped; - } - return mesh; -} - - - -function generateGoodMesh(n, extent) { - extent = extent || defaultExtent; - var pts = generateGoodPoints(n, extent); - return makeMesh(pts, extent); -} -function isedge(mesh, i) { - return (mesh.adj[i].length < 3); -} - -function isnearedge(mesh, i) { - var x = mesh.vxs[i][0]; - var y = mesh.vxs[i][1]; - var w = mesh.extent.width; - var h = mesh.extent.height; - return x < -0.45 * w || x > 0.45 * w || y < -0.45 * h || y > 0.45 * h; -} - -function neighbours(mesh, i) { - var onbs = mesh.adj[i]; - var nbs = []; - for (var i = 0; i < onbs.length; i++) { - nbs.push(onbs[i]); - } - return nbs; -} - -function distance(mesh, i, j) { - var p = mesh.vxs[i]; - var q = mesh.vxs[j]; - return Math.sqrt((p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])); -} - -function quantile(h, q) { - var sortedh = []; - for (var i = 0; i < h.length; i++) { - sortedh[i] = h[i]; - } - sortedh.sort(d3.ascending); - return d3.quantile(sortedh, q); -} - -function zero(mesh) { - var z = []; - for (var i = 0; i < mesh.vxs.length; i++) { - z[i] = 0; - } - z.mesh = mesh; - return z; -} - -function slope(mesh, direction) { - return mesh.map(function (x) { - return x[0] * direction[0] + x[1] * direction[1]; - }); -} - -function cone(mesh, slope) { - return mesh.map(function (x) { - return Math.pow(x[0] * x[0] + x[1] * x[1], 0.5) * slope; - }); -} - -function map(h, f) { - var newh = h.map(f); - newh.mesh = h.mesh; - return newh; -} - -function normalize(h) { - var lo = d3.min(h); - var hi = d3.max(h); - return map(h, function (x) {return (x - lo) / (hi - lo)}); -} - -function peaky(h) { - return map(normalize(h), Math.sqrt); -} - -function add() { - var n = arguments[0].length; - var newvals = zero(arguments[0].mesh); - for (var i = 0; i < n; i++) { - for (var j = 0; j < arguments.length; j++) { - newvals[i] += arguments[j][i]; - } - } - return newvals; -} - -function mountains(mesh, n, r) { - r = r || 0.05; - var mounts = []; - for (var i = 0; i < n; i++) { - mounts.push([mesh.extent.width * (Math.random() - 0.5), mesh.extent.height * (Math.random() - 0.5)]); - } - var newvals = zero(mesh); - for (var i = 0; i < mesh.vxs.length; i++) { - var p = mesh.vxs[i]; - for (var j = 0; j < n; j++) { - var m = mounts[j]; - newvals[i] += Math.pow(Math.exp(-((p[0] - m[0]) * (p[0] - m[0]) + (p[1] - m[1]) * (p[1] - m[1])) / (2 * r * r)), 2); - } - } - return newvals; -} - -function relax(h) { - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var nbs = neighbours(h.mesh, i); - if (nbs.length < 3) { - newh[i] = 0; - continue; - } - newh[i] = d3.mean(nbs.map(function (j) {return h[j]})); - } - return newh; -} - -function downhill(h) { - if (h.downhill) return h.downhill; - function downfrom(i) { - if (isedge(h.mesh, i)) return -2; - var best = -1; - var besth = h[i]; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] < besth) { - besth = h[nbs[j]]; - best = nbs[j]; - } - } - return best; - } - var downs = []; - for (var i = 0; i < h.length; i++) { - downs[i] = downfrom(i); - } - h.downhill = downs; - return downs; -} - -function findSinks(h) { - var dh = downhill(h); - var sinks = []; - for (var i = 0; i < dh.length; i++) { - var node = i; - while (true) { - if (isedge(h.mesh, node)) { - sinks[i] = -2; - break; - } - if (dh[node] == -1) { - sinks[i] = node; - break; - } - node = dh[node]; - } - } -} - -function fillSinks(h, epsilon) { - epsilon = epsilon || 1e-5; - var infinity = 999999; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - if (isnearedge(h.mesh, i)) { - newh[i] = h[i]; - } else { - newh[i] = infinity; - } - } - while (true) { - var changed = false; - for (var i = 0; i < h.length; i++) { - if (newh[i] == h[i]) continue; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[i] >= newh[nbs[j]] + epsilon) { - newh[i] = h[i]; - changed = true; - break; - } - var oh = newh[nbs[j]] + epsilon; - if ((newh[i] > oh) && (oh > h[i])) { - newh[i] = oh; - changed = true; - } - } - } - if (!changed) return newh; - } -} - -function getFlux(h) { - var dh = downhill(h); - var idxs = []; - var flux = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - idxs[i] = i; - flux[i] = 1/h.length; - } - idxs.sort(function (a, b) { - return h[b] - h[a]; - }); - for (var i = 0; i < h.length; i++) { - var j = idxs[i]; - if (dh[j] >= 0) { - flux[dh[j]] += flux[j]; - } - } - return flux; -} - -function getSlope(h) { - var dh = downhill(h); - var slope = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var s = trislope(h, i); - slope[i] = Math.sqrt(s[0] * s[0] + s[1] * s[1]); - continue; - if (dh[i] < 0) { - slope[i] = 0; - } else { - slope[i] = (h[i] - h[dh[i]]) / distance(h.mesh, i, dh[i]); - } - } - return slope; -} - -function erosionRate(h) { - var flux = getFlux(h); - var slope = getSlope(h); - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var river = Math.sqrt(flux[i]) * slope[i]; - var creep = slope[i] * slope[i]; - var total = 1000 * river + creep; - total = total > 200 ? 200 : total; - newh[i] = total; - } - return newh; -} - -function erode(h, amount) { - var er = erosionRate(h); - var newh = zero(h.mesh); - var maxr = d3.max(er); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - amount * (er[i] / maxr); - } - return newh; -} - -function doErosion(h, amount, n) { - n = n || 1; - h = fillSinks(h); - for (var i = 0; i < n; i++) { - h = erode(h, amount); - h = fillSinks(h); - } - return h; -} - -function setSeaLevel(h, q) { - var newh = zero(h.mesh); - var delta = quantile(h, q); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - delta; - } - return newh; -} - -function cleanCoast(h, iters) { - for (var iter = 0; iter < iters; iter++) { - var changed = 0; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] <= 0 || nbs.length != 3) continue; - var count = 0; - var best = -999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] > 0) { - count++; - } else if (h[nbs[j]] > best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] > 0 || nbs.length != 3) continue; - var count = 0; - var best = 999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] <= 0) { - count++; - } else if (h[nbs[j]] < best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - } - return h; -} - -function trislope(h, i) { - var nbs = neighbours(h.mesh, i); - if (nbs.length != 3) return [0,0]; - var p0 = h.mesh.vxs[nbs[0]]; - var p1 = h.mesh.vxs[nbs[1]]; - var p2 = h.mesh.vxs[nbs[2]]; - - var x1 = p1[0] - p0[0]; - var x2 = p2[0] - p0[0]; - var y1 = p1[1] - p0[1]; - var y2 = p2[1] - p0[1]; - - var det = x1 * y2 - x2 * y1; - var h1 = h[nbs[1]] - h[nbs[0]]; - var h2 = h[nbs[2]] - h[nbs[0]]; - - return [(y2 * h1 - y1 * h2) / det, - (-x2 * h1 + x1 * h2) / det]; -} - -function cityScore(h, cities) { - var score = map(getFlux(h), Math.sqrt); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) { - score[i] = -999999; - continue; - } - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][0]) - h.mesh.extent.width/2) - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][1]) - h.mesh.extent.height/2) - for (var j = 0; j < cities.length; j++) { - score[i] -= 0.02 / (distance(h.mesh, cities[j], i) + 1e-9); - } - } - return score; -} -function placeCity(render) { - render.cities = render.cities || []; - var score = cityScore(render.h, render.cities); - var newcity = d3.scan(score, d3.descending); - render.cities.push(newcity); -} - -function placeCities(render) { - var params = render.params; - var h = render.h; - var n = params.ncities; - for (var i = 0; i < n; i++) { - placeCity(render); - } -} - -function contour(h, level) { - level = level || 0; - var edges = []; - for (var i = 0; i < h.mesh.edges.length; i++) { - var e = h.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(h.mesh, e[0]) || isnearedge(h.mesh, e[1])) continue; - if ((h[e[0]] > level && h[e[1]] <= level) || - (h[e[1]] > level && h[e[0]] <= level)) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges); -} - -function getRivers(h, limit) { - var dh = downhill(h); - var flux = getFlux(h); - var links = []; - var above = 0; - for (var i = 0; i < h.length; i++) { - if (h[i] > 0) above++; - } - limit *= above / h.length; - for (var i = 0; i < dh.length; i++) { - if (isnearedge(h.mesh, i)) continue; - if (flux[i] > limit && h[i] > 0 && dh[i] >= 0) { - var up = h.mesh.vxs[i]; - var down = h.mesh.vxs[dh[i]]; - if (h[dh[i]] > 0) { - links.push([up, down]); - } else { - links.push([up, [(up[0] + down[0])/2, (up[1] + down[1])/2]]); - } - } - } - return mergeSegments(links).map(relaxPath); -} - -function getTerritories(render) { - var h = render.h; - var cities = render.cities; - var n = render.params.nterrs; - if (n > render.cities.length) n = render.cities.length; - var flux = getFlux(h); - var terr = []; - var queue = new PriorityQueue({comparator: function (a, b) {return a.score - b.score}}); - function weight(u, v) { - var horiz = distance(h.mesh, u, v); - var vert = h[v] - h[u]; - if (vert > 0) vert /= 10; - var diff = 1 + 0.25 * Math.pow(vert/horiz, 2); - diff += 100 * Math.sqrt(flux[u]); - if (h[u] <= 0) diff = 100; - if ((h[u] > 0) != (h[v] > 0)) return 1000; - return horiz * diff; - } - for (var i = 0; i < n; i++) { - terr[cities[i]] = cities[i]; - var nbs = neighbours(h.mesh, cities[i]); - for (var j = 0; j < nbs.length; j++) { - queue.queue({ - score: weight(cities[i], nbs[j]), - city: cities[i], - vx: nbs[j] - }); - } - } - while (queue.length) { - var u = queue.dequeue(); - if (terr[u.vx] != undefined) continue; - terr[u.vx] = u.city; - var nbs = neighbours(h.mesh, u.vx); - for (var i = 0; i < nbs.length; i++) { - var v = nbs[i]; - if (terr[v] != undefined) continue; - var newdist = weight(u.vx, v); - queue.queue({ - score: u.score + newdist, - city: u.city, - vx: v - }); - } - } - terr.mesh = h.mesh; - return terr; -} - -function getBorders(render) { - var terr = render.terr; - var h = render.h; - var edges = []; - for (var i = 0; i < terr.mesh.edges.length; i++) { - var e = terr.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(terr.mesh, e[0]) || isnearedge(terr.mesh, e[1])) continue; - if (h[e[0]] < 0 || h[e[1]] < 0) continue; - if (terr[e[0]] != terr[e[1]]) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges).map(relaxPath); -} - -function mergeSegments(segs) { - var adj = {}; - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - var a0 = adj[seg[0]] || []; - var a1 = adj[seg[1]] || []; - a0.push(seg[1]); - a1.push(seg[0]); - adj[seg[0]] = a0; - adj[seg[1]] = a1; - } - var done = []; - var paths = []; - var path = null; - while (true) { - if (path == null) { - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - done[i] = true; - path = [segs[i][0], segs[i][1]]; - break; - } - if (path == null) break; - } - var changed = false; - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - if (adj[path[0]].length == 2 && segs[i][0] == path[0]) { - path.unshift(segs[i][1]); - } else if (adj[path[0]].length == 2 && segs[i][1] == path[0]) { - path.unshift(segs[i][0]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][0] == path[path.length - 1]) { - path.push(segs[i][1]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][1] == path[path.length - 1]) { - path.push(segs[i][0]); - } else { - continue; - } - done[i] = true; - changed = true; - break; - } - if (!changed) { - paths.push(path); - path = null; - } - } - return paths; -} - -function relaxPath(path) { - var newpath = [path[0]]; - for (var i = 1; i < path.length - 1; i++) { - var newpt = [0.25 * path[i-1][0] + 0.5 * path[i][0] + 0.25 * path[i+1][0], - 0.25 * path[i-1][1] + 0.5 * path[i][1] + 0.25 * path[i+1][1]]; - newpath.push(newpt); - } - newpath.push(path[path.length - 1]); - return newpath; -} -function visualizePoints(svg, pts) { - var circle = svg.selectAll('circle').data(pts); - circle.enter() - .append('circle'); - circle.exit().remove(); - d3.selectAll('circle') - .attr('cx', function (d) {return 1000*d[0]}) - .attr('cy', function (d) {return 1000*d[1]}) - .attr('r', 100 / Math.sqrt(pts.length)); -} - -function makeD3Path(path) { - var p = d3.path(); - p.moveTo(1000*path[0][0], 1000*path[0][1]); - for (var i = 1; i < path.length; i++) { - p.lineTo(1000*path[i][0], 1000*path[i][1]); - } - return p.toString(); -} - -function visualizeVoronoi(svg, field, lo, hi) { - if (hi == undefined) hi = d3.max(field) + 1e-9; - if (lo == undefined) lo = d3.min(field) - 1e-9; - var mappedvals = field.map(function (x) {return x > hi ? 1 : x < lo ? 0 : (x - lo) / (hi - lo)}); - var tris = svg.selectAll('path.field').data(field.mesh.tris) - tris.enter() - .append('path') - .classed('field', true); - - tris.exit() - .remove(); - - svg.selectAll('path.field') - .attr('d', makeD3Path) - .style('fill', function (d, i) { - return d3.interpolateViridis(mappedvals[i]); - }); -} - -function visualizeDownhill(h) { - var links = getRivers(h, 0.01); - drawPaths('river', links); -} - -function drawPaths(svg, cls, paths) { - var paths = svg.selectAll('path.' + cls).data(paths) - paths.enter() - .append('path') - .classed(cls, true) - paths.exit() - .remove(); - svg.selectAll('path.' + cls) - .attr('d', makeD3Path); -} - -function visualizeSlopes(svg, render) { - var h = render.h; - var strokes = []; - var r = 0.25 / Math.sqrt(h.length); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) continue; - var nbs = neighbours(h.mesh, i); - nbs.push(i); - var s = 0; - var s2 = 0; - for (var j = 0; j < nbs.length; j++) { - var slopes = trislope(h, nbs[j]); - s += slopes[0] / 10; - s2 += slopes[1]; - } - s /= nbs.length; - s2 /= nbs.length; - if (Math.abs(s) < runif(0.1, 0.4)) continue; - var l = r * runif(1, 2) * (1 - 0.2 * Math.pow(Math.atan(s), 2)) * Math.exp(s2/100); - var x = h.mesh.vxs[i][0]; - var y = h.mesh.vxs[i][1]; - if (Math.abs(l*s) > 2 * r) { - var n = Math.floor(Math.abs(l*s/r)); - l /= n; - if (n > 4) n = 4; - for (var j = 0; j < n; j++) { - var u = rnorm() * r; - var v = rnorm() * r; - strokes.push([[x+u-l, y+v+l*s], [x+u+l, y+v-l*s]]); - } - } else { - strokes.push([[x-l, y+l*s], [x+l, y-l*s]]); - } - } - var lines = svg.selectAll('line.slope').data(strokes) - lines.enter() - .append('line') - .classed('slope', true); - lines.exit() - .remove(); - svg.selectAll('line.slope') - .attr('x1', function (d) {return 1000*d[0][0]}) - .attr('y1', function (d) {return 1000*d[0][1]}) - .attr('x2', function (d) {return 1000*d[1][0]}) - .attr('y2', function (d) {return 1000*d[1][1]}) -} - - -function visualizeContour(h, level) { - level = level || 0; - var links = contour(h, level); - drawPaths('coast', links); -} - -function visualizeBorders(h, cities, n) { - var links = getBorders(h, getTerritories(h, cities, n)); - drawPaths('border', links); -} - - -function visualizeCities(svg, render) { - var cities = render.cities; - var h = render.h; - var n = render.params.nterrs; - - var circs = svg.selectAll('circle.city').data(cities); - circs.enter() - .append('circle') - .classed('city', true); - circs.exit() - .remove(); - svg.selectAll('circle.city') - .attr('cx', function (d) {return 1000*h.mesh.vxs[d][0]}) - .attr('cy', function (d) {return 1000*h.mesh.vxs[d][1]}) - .attr('r', function (d, i) {return i >= n ? 4 : 10}) - .style('fill', 'white') - .style('stroke-width', 5) - .style('stroke-linecap', 'round') - .style('stroke', 'black') - .raise(); -} - -function dropEdge(h, p) { - p = p || 4 - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var v = h.mesh.vxs[i]; - var x = 2.4*v[0] / h.mesh.extent.width; - var y = 2.4*v[1] / h.mesh.extent.height; - newh[i] = h[i] - Math.exp(10*(Math.pow(Math.pow(x, p) + Math.pow(y, p), 1/p) - 1)); - } - return newh; -} - -function generateCoast(params) { - var mesh = generateGoodMesh(params.npts, params.extent); - var h = add( - slope(mesh, randomVector(6)), - cone(mesh, runif(-10, -10)), - mountains(mesh, 50) - ); - for (var i = 0; i < 10; i++) { - h = relax(h); - } - h = peaky(h); - h = doErosion(h, runif(0, 0.1), 5); - h = setSeaLevel(h, runif(0.8, 0.7)); - h = fillSinks(h); - h = cleanCoast(h, 3); - return h; -} - -function terrCenter(h, terr, city, landOnly) { - var x = 0; - var y = 0; - var n = 0; - for (var i = 0; i < terr.length; i++) { - if (terr[i] != city) continue; - if (landOnly && h[i] <= 0) continue; - x += terr.mesh.vxs[i][0]; - y += terr.mesh.vxs[i][1]; - n++; - } - return [x/n, y/n]; -} - -function drawLabels(svg, render) { - var params = render.params; - var h = render.h; - var terr = render.terr; - var cities = render.cities; - var nterrs = render.params.nterrs; - var avoids = [render.rivers, render.coasts, render.borders]; - var lang = makeRandomLanguage(); - var citylabels = []; - function penalty(label) { - var pen = 0; - if (label.x0 < -0.45 * h.mesh.extent.width) pen += 100; - if (label.x1 > 0.45 * h.mesh.extent.width) pen += 100; - if (label.y0 < -0.45 * h.mesh.extent.height) pen += 100; - if (label.y1 > 0.45 * h.mesh.extent.height) pen += 100; - for (var i = 0; i < citylabels.length; i++) { - var olabel = citylabels[i]; - if (label.x0 < olabel.x1 && label.x1 > olabel.x0 && - label.y0 < olabel.y1 && label.y1 > olabel.y0) { - pen += 100; - } - } - - for (var i = 0; i < cities.length; i++) { - var c = h.mesh.vxs[cities[i]]; - if (label.x0 < c[0] && label.x1 > c[0] && label.y0 < c[1] && label.y1 > c[1]) { - pen += 100; - } - } - for (var i = 0; i < avoids.length; i++) { - var avoid = avoids[i]; - for (var j = 0; j < avoid.length; j++) { - var avpath = avoid[j]; - for (var k = 0; k < avpath.length; k++) { - var pt = avpath[k]; - if (pt[0] > label.x0 && pt[0] < label.x1 && pt[1] > label.y0 && pt[1] < label.y1) { - pen++; - } - } - } - } - return pen; - } - for (var i = 0; i < cities.length; i++) { - var x = h.mesh.vxs[cities[i]][0]; - var y = h.mesh.vxs[cities[i]][1]; - var text = makeName(lang, 'city'); - var size = i < nterrs ? params.fontsizes.city : params.fontsizes.town; - var sx = 0.65 * size/1000 * text.length; - var sy = size/1000; - var posslabels = [ - { - x: x + 0.8 * sy, - y: y + 0.3 * sy, - align: 'start', - x0: x + 0.7 * sy, - y0: y - 0.6 * sy, - x1: x + 0.7 * sy + sx, - y1: y + 0.6 * sy - }, - { - x: x - 0.8 * sy, - y: y + 0.3 * sy, - align: 'end', - x0: x - 0.9 * sy - sx, - y0: y - 0.7 * sy, - x1: x - 0.9 * sy, - y1: y + 0.7 * sy - }, - { - x: x, - y: y - 0.8 * sy, - align: 'middle', - x0: x - sx/2, - y0: y - 1.9*sy, - x1: x + sx/2, - y1: y - 0.7 * sy - }, - { - x: x, - y: y + 1.2 * sy, - align: 'middle', - x0: x - sx/2, - y0: y + 0.1*sy, - x1: x + sx/2, - y1: y + 1.3*sy - } - ]; - var label = posslabels[d3.scan(posslabels, function (a, b) {return penalty(a) - penalty(b)})]; - label.text = text; - label.size = size; - citylabels.push(label); - } - var texts = svg.selectAll('text.city').data(citylabels); - texts.enter() - .append('text') - .classed('city', true); - texts.exit() - .remove(); - svg.selectAll('text.city') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return d.size}) - .style('text-anchor', function (d) {return d.align}) - .text(function (d) {return d.text}) - .raise(); - - var reglabels = []; - for (var i = 0; i < nterrs; i++) { - var city = cities[i]; - var text = makeName(lang, 'region'); - var sy = params.fontsizes.region / 1000; - var sx = 0.6 * text.length * sy; - var lc = terrCenter(h, terr, city, true); - var oc = terrCenter(h, terr, city, false); - var best = 0; - var bestscore = -999999; - for (var j = 0; j < h.length; j++) { - var score = 0; - var v = h.mesh.vxs[j]; - score -= 3000 * Math.sqrt((v[0] - lc[0]) * (v[0] - lc[0]) + (v[1] - lc[1]) * (v[1] - lc[1])); - score -= 1000 * Math.sqrt((v[0] - oc[0]) * (v[0] - oc[0]) + (v[1] - oc[1]) * (v[1] - oc[1])); - if (terr[j] != city) score -= 3000; - for (var k = 0; k < cities.length; k++) { - var u = h.mesh.vxs[cities[k]]; - if (Math.abs(v[0] - u[0]) < sx && - Math.abs(v[1] - sy/2 - u[1]) < sy) { - score -= k < nterrs ? 4000 : 500; - } - if (v[0] - sx/2 < citylabels[k].x1 && - v[0] + sx/2 > citylabels[k].x0 && - v[1] - sy < citylabels[k].y1 && - v[1] > citylabels[k].y0) { - score -= 5000; - } - } - for (var k = 0; k < reglabels.length; k++) { - var label = reglabels[k]; - if (v[0] - sx/2 < label.x + label.width/2 && - v[0] + sx/2 > label.x - label.width/2 && - v[1] - sy < label.y && - v[1] > label.y - label.size) { - score -= 20000; - } - } - if (h[j] <= 0) score -= 500; - if (v[0] + sx/2 > 0.5 * h.mesh.extent.width) score -= 50000; - if (v[0] - sx/2 < -0.5 * h.mesh.extent.width) score -= 50000; - if (v[1] > 0.5 * h.mesh.extent.height) score -= 50000; - if (v[1] - sy < -0.5 * h.mesh.extent.height) score -= 50000; - if (score > bestscore) { - bestscore = score; - best = j; - } - } - reglabels.push({ - text: text, - x: h.mesh.vxs[best][0], - y: h.mesh.vxs[best][1], - size:sy, - width:sx - }); - } - texts = svg.selectAll('text.region').data(reglabels); - texts.enter() - .append('text') - .classed('region', true); - texts.exit() - .remove(); - svg.selectAll('text.region') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return 1000*d.size}) - .style('text-anchor', 'middle') - .text(function (d) {return d.text}) - .raise(); - -} -function drawMap(svg, render) { - render.rivers = getRivers(render.h, 0.01); - render.coasts = contour(render.h, 0); - render.terr = getTerritories(render); - render.borders = getBorders(render); - drawPaths(svg, 'river', render.rivers); - drawPaths(svg, 'coast', render.coasts); - drawPaths(svg, 'border', render.borders); - visualizeSlopes(svg, render); - visualizeCities(svg, render); - drawLabels(svg, render); -} - -function doMap(svg, params) { - var render = { - params: params - }; - var width = svg.attr('width'); - svg.attr('height', width * params.extent.height / params.extent.width); - svg.attr('viewBox', -1000 * params.extent.width/2 + ' ' + - -1000 * params.extent.height/2 + ' ' + - 1000 * params.extent.width + ' ' + - 1000 * params.extent.height); - svg.selectAll().remove(); - render.h = params.generator(params); - placeCities(render); - drawMap(svg, render); -} - -var defaultParams = { - extent: defaultExtent, - generator: generateCoast, - npts: 16384, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - diff --git a/ilinx_home/scripts/drag.js b/ilinx_home/scripts/drag.js deleted file mode 100644 index 598af6f..0000000 --- a/ilinx_home/scripts/drag.js +++ /dev/null @@ -1,7 +0,0 @@ - $(document).ready(function(){ - - $( function() { - $( ".draggable" ).draggable(); - }); - - }); \ No newline at end of file diff --git a/ilinx_home/scripts/mapGen/README.md b/ilinx_home/scripts/mapGen/README.md deleted file mode 100644 index 96036fb..0000000 --- a/ilinx_home/scripts/mapGen/README.md +++ /dev/null @@ -1,37 +0,0 @@ -Welcome to Glitch -================= - -Click `Show` in the header to see your app live. Updates to your code will instantly deploy and update live. - -**Glitch** is the friendly community where you'll build the app of your dreams. Glitch lets you instantly create, remix, edit, and host an app, bot or site, and you can invite collaborators or helpers to simultaneously edit code with you. - -Find out more [about Glitch](https://glitch.com/about). - - -Your Project ------------- - -### ← README.md - -That's this file, where you can tell people what your cool website does and how you built it. - -### ← index.html - -Where you'll write the content of your website. - -### ← style.css - -CSS files add styling rules to your content. - -### ← script.js - -If you're feeling fancy you can add interactivity to your site with JavaScript. - -### ← assets - -Drag in `assets`, like images or music, to add them to your project - -Made by [Glitch](https://glitch.com/) -------------------- - -\ ゜o゜)ノ diff --git a/ilinx_home/scripts/mapGen/index.html b/ilinx_home/scripts/mapGen/index.html deleted file mode 100644 index 629800b..0000000 --- a/ilinx_home/scripts/mapGen/index.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - Hello! - - - - - - - - - - - - - - - - - - - diff --git a/ilinx_home/scripts/mapGen/language.js b/ilinx_home/scripts/mapGen/language.js deleted file mode 100644 index f82b6c3..0000000 --- a/ilinx_home/scripts/mapGen/language.js +++ /dev/null @@ -1,486 +0,0 @@ -function shuffled(list) { - var newlist = []; - for (var i = 0; i < list.length; i++) { - newlist.push(list[i]); - } - for (var i = list.length - 1; i > 0; i--) { - var tmp = newlist[i]; - var j = randrange(i); - newlist[i] = newlist[j]; - newlist[j] = tmp; - } - return newlist; -} - -function choose(list, exponent) { - exponent = exponent || 1; - return list[Math.floor(Math.pow(Math.random(), exponent) * list.length)]; -} - -function randrange(lo, hi) { - if (hi == undefined) { - hi = lo; - lo = 0; - } - return Math.floor(Math.random() * (hi - lo)) + lo; -} - -function join(list, sep) { - if (list.length == 0) return ''; - sep = sep || ''; - var s = list[0]; - for (var i = 1; i < list.length; i++) { - s += sep; - s += list[i]; - } - return s; -} - -function capitalize(word) { - return word[0].toUpperCase() + word.slice(1); -} - -function spell(lang, syll) { - if (lang.noortho) return syll; - var s = ''; - for (var i = 0; i < syll.length; i++) { - var c = syll[i]; - s += lang.cortho[c] || lang.vortho[c] || defaultOrtho[c] || c; - } - return s; -} - -function makeSyllable(lang) { - while (true) { - var syll = ""; - for (var i = 0; i < lang.structure.length; i++) { - var ptype = lang.structure[i]; - if (lang.structure[i+1] == '?') { - i++; - if (Math.random() < 0.5) { - continue; - } - } - syll += choose(lang.phonemes[ptype], lang.exponent); - } - var bad = false; - for (var i = 0; i < lang.restricts.length; i++) { - if (lang.restricts[i].test(syll)) { - bad = true; - break; - } - } - if (bad) continue; - return spell(lang, syll); - } -} - -function getMorpheme(lang, key) { - if (lang.nomorph) { - return makeSyllable(lang); - } - key = key || ''; - var list = lang.morphemes[key] || []; - var extras = 10; - if (key) extras = 1; - while (true) { - var n = randrange(list.length + extras); - if (list[n]) return list[n]; - var morph = makeSyllable(lang); - var bad = false; - for (var k in lang.morphemes) { - if (lang.morphemes[k].includes(morph)) { - bad = true; - break; - } - } - if (bad) continue; - list.push(morph); - lang.morphemes[key] = list; - return morph; - } -} - -function makeWord(lang, key) { - var nsylls = randrange(lang.minsyll, lang.maxsyll + 1); - var w = ''; - var keys = []; - keys[randrange(nsylls)] = key; - for (var i = 0; i < nsylls; i++) { - w += getMorpheme(lang, keys[i]); - } - return w; -} - -function getWord(lang, key) { - key = key || ''; - var ws = lang.words[key] || []; - var extras = 3; - if (key) extras = 2; - while (true) { - var n = randrange(ws.length + extras); - var w = ws[n]; - if (w) { - return w; - } - w = makeWord(lang, key); - var bad = false; - for (var k in lang.words) { - if (lang.words[k].includes(w)) { - bad = true; - break; - } - } - if (bad) continue; - ws.push(w); - lang.words[key] = ws; - return w; - } -} -function makeName(lang, key) { - key = key || ''; - lang.genitive = lang.genitive || getMorpheme(lang, 'of'); - lang.definite = lang.definite || getMorpheme(lang, 'the'); - while (true) { - var name = null; - if (Math.random() < 0.5) { - name = capitalize(getWord(lang, key)); - } else { - var w1 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - var w2 = capitalize(getWord(lang, Math.random() < 0.6 ? key : '')); - if (w1 == w2) continue; - if (Math.random() > 0.5) { - name = join([w1, w2], lang.joiner); - } else { - name = join([w1, lang.genitive, w2], lang.joiner); - } - } - if (Math.random() < 0.1) { - name = join([lang.definite, name], lang.joiner); - } - - if ((name.length < lang.minchar) || (name.length > lang.maxchar)) continue; - var used = false; - for (var i = 0; i < lang.names.length; i++) { - var name2 = lang.names[i]; - if ((name.indexOf(name2) != -1) || (name2.indexOf(name) != -1)) { - used = true; - break; - } - } - if (used) continue; - lang.names.push(name); - return name; - } -} - -function makeBasicLanguage() { - return { - phonemes: { - C: "ptkmnls", - V: "aeiou", - S: "s", - F: "mn", - L: "rl" - }, - structure: "CVC", - exponent: 2, - restricts: [], - cortho: {}, - vortho: {}, - noortho: true, - nomorph: true, - nowordpool: true, - minsyll: 1, - maxsyll: 1, - morphemes: {}, - words: {}, - names: [], - joiner: ' ', - maxchar: 12, - minchar: 5 - }; -} - -function makeOrthoLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - return lang; -} - -function makeRandomLanguage() { - var lang = makeBasicLanguage(); - lang.noortho = false; - lang.nomorph = false; - lang.nowordpool = false; - lang.phonemes.C = shuffled(choose(consets, 2).C); - lang.phonemes.V = shuffled(choose(vowsets, 2).V); - lang.phonemes.L = shuffled(choose(lsets, 2).L); - lang.phonemes.S = shuffled(choose(ssets, 2).S); - lang.phonemes.F = shuffled(choose(fsets, 2).F); - lang.structure = choose(syllstructs); - lang.restricts = ressets[2].res; - lang.cortho = choose(corthsets, 2).orth; - lang.vortho = choose(vorthsets, 2).orth; - lang.minsyll = randrange(1, 3); - if (lang.structure.length < 3) lang.minsyll++; - lang.maxsyll = randrange(lang.minsyll + 1, 7); - lang.joiner = choose(' -'); - return lang; -} -var defaultOrtho = { - 'ʃ': 'sh', - 'ʒ': 'zh', - 'ʧ': 'ch', - 'ʤ': 'j', - 'ŋ': 'ng', - 'j': 'y', - 'x': 'kh', - 'ɣ': 'gh', - 'ʔ': '‘', - A: "á", - E: "é", - I: "í", - O: "ó", - U: "ú" -}; - -var corthsets = [ - { - name: "Default", - orth: {} - }, - { - name: "Slavic", - orth: { - 'ʃ': 'š', - 'ʒ': 'ž', - 'ʧ': 'č', - 'ʤ': 'ǧ', - 'j': 'j' - } - }, - { - name: "German", - orth: { - 'ʃ': 'sch', - 'ʒ': 'zh', - 'ʧ': 'tsch', - 'ʤ': 'dz', - 'j': 'j', - 'x': 'ch' - } - }, - { - name: "French", - orth: { - 'ʃ': 'ch', - 'ʒ': 'j', - 'ʧ': 'tch', - 'ʤ': 'dj', - 'x': 'kh' - } - }, - { - name: "Chinese (pinyin)", - orth: { - 'ʃ': 'x', - 'ʧ': 'q', - 'ʤ': 'j', - } - } -]; - -var vorthsets = [ - { - name: "Ácutes", - orth: {} - }, - { - name: "Ümlauts", - orth: { - A: "ä", - E: "ë", - I: "ï", - O: "ö", - U: "ü" - } - }, - { - name: "Welsh", - orth: { - A: "â", - E: "ê", - I: "y", - O: "ô", - U: "w" - } - }, - { - name: "Diphthongs", - orth: { - A: "au", - E: "ei", - I: "ie", - O: "ou", - U: "oo" - } - }, - { - name: "Doubles", - orth: { - A: "aa", - E: "ee", - I: "ii", - O: "oo", - U: "uu" - } - } -]; - -var consets = [ - { - name: "Minimal", - C: "ptkmnls" - }, - { - name: "English-ish", - C: "ptkbdgmnlrsʃzʒʧ" - }, - { - name: "Pirahã (very simple)", - C: "ptkmnh" - }, - { - name: "Hawaiian-ish", - C: "hklmnpwʔ" - }, - { - name: "Greenlandic-ish", - C: "ptkqvsgrmnŋlj" - }, - { - name: "Arabic-ish", - C: "tksʃdbqɣxmnlrwj" - }, - { - name: "Arabic-lite", - C: "tkdgmnsʃ" - }, - { - name: "English-lite", - C: "ptkbdgmnszʒʧhjw" - } -]; - -var ssets = [ - { - name: "Just s", - S: "s" - }, - { - name: "s ʃ", - S: "sʃ" - }, - { - name: "s ʃ f", - S: "sʃf" - } -]; - -var lsets = [ - { - name: "r l", - L: "rl" - }, - { - name: "Just r", - L: "r" - }, - { - name: "Just l", - L: "l" - }, - { - name: "w j", - L: "wj" - }, - { - name: "r l w j", - L: "rlwj" - } -]; - -var fsets = [ - { - name: "m n", - F: "mn" - }, - { - name: "s k", - F: "sk" - }, - { - name: "m n ŋ", - F: "mnŋ" - }, - { - name: "s ʃ z ʒ", - F: "sʃzʒ" - } -]; - -var vowsets = [ - { - name: "Standard 5-vowel", - V: "aeiou" - }, - { - name: "3-vowel a i u", - V: "aiu" - }, - { - name: "Extra A E I", - V: "aeiouAEI" - }, - { - name: "Extra U", - V: "aeiouU" - }, - { - name: "5-vowel a i u A I", - V: "aiuAI" - }, - { - name: "3-vowel e o u", - V: "eou" - }, - { - name: "Extra A O U", - V: "aeiouAOU" - } -]; - -var syllstructs = [ - "CVC", - "CVV?C", - "CVVC?", "CVC?", "CV", "VC", "CVF", "C?VC", "CVF?", - "CL?VC", "CL?VF", "S?CVC", "S?CVF", "S?CVC?", - "C?VF", "C?VC?", "C?VF?", "C?L?VC", "VC", - "CVL?C?", "C?VL?C", "C?VLC?"]; - -var ressets = [ - { - name: "None", - res: [] - }, - { - name: "Double sounds", - res: [/(.)\1/] - }, - { - name: "Doubles and hard clusters", - res: [/[sʃf][sʃ]/, /(.)\1/, /[rl][rl]/] - } -]; - diff --git a/ilinx_home/scripts/mapGen/priority-queue.js b/ilinx_home/scripts/mapGen/priority-queue.js deleted file mode 100644 index f8f6b54..0000000 --- a/ilinx_home/scripts/mapGen/priority-queue.js +++ /dev/null @@ -1,387 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PriorityQueue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>> 1; - if (comparator(array[mid], value) >= 0) { - low = mid + 1; - } else { - high = mid; - } - } - return low; -}; - -module.exports = ArrayStrategy = (function() { - function ArrayStrategy(options) { - var ref; - this.options = options; - this.comparator = this.options.comparator; - this.data = ((ref = this.options.initialValues) != null ? ref.slice(0) : void 0) || []; - this.data.sort(this.comparator).reverse(); - } - - ArrayStrategy.prototype.queue = function(value) { - var pos; - pos = binarySearchForIndexReversed(this.data, value, this.comparator); - this.data.splice(pos, 0, value); - return void 0; - }; - - ArrayStrategy.prototype.dequeue = function() { - return this.data.pop(); - }; - - ArrayStrategy.prototype.peek = function() { - return this.data[this.data.length - 1]; - }; - - ArrayStrategy.prototype.clear = function() { - this.data.length = 0; - return void 0; - }; - - return ArrayStrategy; - -})(); - - -},{}],4:[function(_dereq_,module,exports){ -var BHeapStrategy; - -module.exports = BHeapStrategy = (function() { - function BHeapStrategy(options) { - var arr, i, j, k, len, ref, ref1, shift, value; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.pageSize = (options != null ? options.pageSize : void 0) || 512; - this.length = 0; - shift = 0; - while ((1 << shift) < this.pageSize) { - shift += 1; - } - if (1 << shift !== this.pageSize) { - throw 'pageSize must be a power of two'; - } - this._shift = shift; - this._emptyMemoryPageTemplate = arr = []; - for (i = j = 0, ref = this.pageSize; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { - arr.push(null); - } - this._memory = []; - this._mask = this.pageSize - 1; - if (options.initialValues) { - ref1 = options.initialValues; - for (k = 0, len = ref1.length; k < len; k++) { - value = ref1[k]; - this.queue(value); - } - } - } - - BHeapStrategy.prototype.queue = function(value) { - this.length += 1; - this._write(this.length, value); - this._bubbleUp(this.length, value); - return void 0; - }; - - BHeapStrategy.prototype.dequeue = function() { - var ret, val; - ret = this._read(1); - val = this._read(this.length); - this.length -= 1; - if (this.length > 0) { - this._write(1, val); - this._bubbleDown(1, val); - } - return ret; - }; - - BHeapStrategy.prototype.peek = function() { - return this._read(1); - }; - - BHeapStrategy.prototype.clear = function() { - this.length = 0; - this._memory.length = 0; - return void 0; - }; - - BHeapStrategy.prototype._write = function(index, value) { - var page; - page = index >> this._shift; - while (page >= this._memory.length) { - this._memory.push(this._emptyMemoryPageTemplate.slice(0)); - } - return this._memory[page][index & this._mask] = value; - }; - - BHeapStrategy.prototype._read = function(index) { - return this._memory[index >> this._shift][index & this._mask]; - }; - - BHeapStrategy.prototype._bubbleUp = function(index, value) { - var compare, indexInPage, parentIndex, parentValue; - compare = this.comparator; - while (index > 1) { - indexInPage = index & this._mask; - if (index < this.pageSize || indexInPage > 3) { - parentIndex = (index & ~this._mask) | (indexInPage >> 1); - } else if (indexInPage < 2) { - parentIndex = (index - this.pageSize) >> this._shift; - parentIndex += parentIndex & ~(this._mask >> 1); - parentIndex |= this.pageSize >> 1; - } else { - parentIndex = index - 2; - } - parentValue = this._read(parentIndex); - if (compare(parentValue, value) < 0) { - break; - } - this._write(parentIndex, value); - this._write(index, parentValue); - index = parentIndex; - } - return void 0; - }; - - BHeapStrategy.prototype._bubbleDown = function(index, value) { - var childIndex1, childIndex2, childValue1, childValue2, compare; - compare = this.comparator; - while (index < this.length) { - if (index > this._mask && !(index & (this._mask - 1))) { - childIndex1 = childIndex2 = index + 2; - } else if (index & (this.pageSize >> 1)) { - childIndex1 = (index & ~this._mask) >> 1; - childIndex1 |= index & (this._mask >> 1); - childIndex1 = (childIndex1 + 1) << this._shift; - childIndex2 = childIndex1 + 1; - } else { - childIndex1 = index + (index & this._mask); - childIndex2 = childIndex1 + 1; - } - if (childIndex1 !== childIndex2 && childIndex2 <= this.length) { - childValue1 = this._read(childIndex1); - childValue2 = this._read(childIndex2); - if (compare(childValue1, value) < 0 && compare(childValue1, childValue2) <= 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else if (compare(childValue2, value) < 0) { - this._write(childIndex2, value); - this._write(index, childValue2); - index = childIndex2; - } else { - break; - } - } else if (childIndex1 <= this.length) { - childValue1 = this._read(childIndex1); - if (compare(childValue1, value) < 0) { - this._write(childIndex1, value); - this._write(index, childValue1); - index = childIndex1; - } else { - break; - } - } else { - break; - } - } - return void 0; - }; - - return BHeapStrategy; - -})(); - - -},{}],5:[function(_dereq_,module,exports){ -var BinaryHeapStrategy; - -module.exports = BinaryHeapStrategy = (function() { - function BinaryHeapStrategy(options) { - var ref; - this.comparator = (options != null ? options.comparator : void 0) || function(a, b) { - return a - b; - }; - this.length = 0; - this.data = ((ref = options.initialValues) != null ? ref.slice(0) : void 0) || []; - this._heapify(); - } - - BinaryHeapStrategy.prototype._heapify = function() { - var i, j, ref; - if (this.data.length > 0) { - for (i = j = 1, ref = this.data.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) { - this._bubbleUp(i); - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype.queue = function(value) { - this.data.push(value); - this._bubbleUp(this.data.length - 1); - return void 0; - }; - - BinaryHeapStrategy.prototype.dequeue = function() { - var last, ret; - ret = this.data[0]; - last = this.data.pop(); - if (this.data.length > 0) { - this.data[0] = last; - this._bubbleDown(0); - } - return ret; - }; - - BinaryHeapStrategy.prototype.peek = function() { - return this.data[0]; - }; - - BinaryHeapStrategy.prototype.clear = function() { - this.length = 0; - this.data.length = 0; - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleUp = function(pos) { - var parent, x; - while (pos > 0) { - parent = (pos - 1) >>> 1; - if (this.comparator(this.data[pos], this.data[parent]) < 0) { - x = this.data[parent]; - this.data[parent] = this.data[pos]; - this.data[pos] = x; - pos = parent; - } else { - break; - } - } - return void 0; - }; - - BinaryHeapStrategy.prototype._bubbleDown = function(pos) { - var last, left, minIndex, right, x; - last = this.data.length - 1; - while (true) { - left = (pos << 1) + 1; - right = left + 1; - minIndex = pos; - if (left <= last && this.comparator(this.data[left], this.data[minIndex]) < 0) { - minIndex = left; - } - if (right <= last && this.comparator(this.data[right], this.data[minIndex]) < 0) { - minIndex = right; - } - if (minIndex !== pos) { - x = this.data[minIndex]; - this.data[minIndex] = this.data[pos]; - this.data[pos] = x; - pos = minIndex; - } else { - break; - } - } - return void 0; - }; - - return BinaryHeapStrategy; - -})(); - - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/ilinx_home/scripts/mapGen/script.js b/ilinx_home/scripts/mapGen/script.js deleted file mode 100644 index 1a4334d..0000000 --- a/ilinx_home/scripts/mapGen/script.js +++ /dev/null @@ -1,21 +0,0 @@ -/* If you're feeling fancy you can add interactivity - to your site with Javascript */ - -// prints "hi" in the browser's dev tools console -console.log("hi"); -var svg = d3.select("svg"); - -var params = { - extent: defaultExtent, - generator: generateCoast, - npts: 1684, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - -doMap(svg, defaultParams); diff --git a/ilinx_home/scripts/mapGen/style.css b/ilinx_home/scripts/mapGen/style.css deleted file mode 100644 index f013185..0000000 --- a/ilinx_home/scripts/mapGen/style.css +++ /dev/null @@ -1,11 +0,0 @@ -/* CSS files add styling rules to your content */ - -body { - font-family: helvetica, arial, sans-serif; - margin: 2em; -} - -h1 { - font-style: italic; - color: #373fff; -} diff --git a/ilinx_home/scripts/mapGen/terrain.js b/ilinx_home/scripts/mapGen/terrain.js deleted file mode 100644 index 49a624c..0000000 --- a/ilinx_home/scripts/mapGen/terrain.js +++ /dev/null @@ -1,1073 +0,0 @@ -"use strict"; - -function runif(lo, hi) { - return lo + Math.random() * (hi - lo); -} - -var rnorm = (function () { - var z2 = null; - function rnorm() { - if (z2 != null) { - var tmp = z2; - z2 = null; - return tmp; - } - var x1 = 0; - var x2 = 0; - var w = 2.0; - while (w >= 1) { - x1 = runif(-1, 1); - x2 = runif(-1, 1); - w = x1 * x1 + x2 * x2; - } - w = Math.sqrt(-2 * Math.log(w) / w); - z2 = x2 * w; - return x1 * w; - } - return rnorm; -})(); - -function randomVector(scale) { - return [scale * rnorm(), scale * rnorm()]; -} - -var defaultExtent = { - width: 1, - height: 1 -}; - -function generatePoints(n, extent) { - extent = extent || defaultExtent; - var pts = []; - for (var i = 0; i < n; i++) { - pts.push([(Math.random() - 0.5) * extent.width, (Math.random() - 0.5) * extent.height]); - } - return pts; -} - -function centroid(pts) { - var x = 0; - var y = 0; - for (var i = 0; i < pts.length; i++) { - x += pts[i][0]; - y += pts[i][1]; - } - return [x/pts.length, y/pts.length]; -} - -function improvePoints(pts, n, extent) { - n = n || 1; - extent = extent || defaultExtent; - for (var i = 0; i < n; i++) { - pts = voronoi(pts, extent) - .polygons(pts) - .map(centroid); - } - return pts; -} - -function generateGoodPoints(n, extent) { - extent = extent || defaultExtent; - var pts = generatePoints(n, extent); - pts = pts.sort(function (a, b) { - return a[0] - b[0]; - }); - return improvePoints(pts, 1, extent); -} - -function voronoi(pts, extent) { - extent = extent || defaultExtent; - var w = extent.width/2; - var h = extent.height/2; - return d3.voronoi().extent([[-w, -h], [w, h]])(pts); -} - -function makeMesh(pts, extent) { - extent = extent || defaultExtent; - var vor = voronoi(pts, extent); - var vxs = []; - var vxids = {}; - var adj = []; - var edges = []; - var tris = []; - for (var i = 0; i < vor.edges.length; i++) { - var e = vor.edges[i]; - if (e == undefined) continue; - var e0 = vxids[e[0]]; - var e1 = vxids[e[1]]; - if (e0 == undefined) { - e0 = vxs.length; - vxids[e[0]] = e0; - vxs.push(e[0]); - } - if (e1 == undefined) { - e1 = vxs.length; - vxids[e[1]] = e1; - vxs.push(e[1]); - } - adj[e0] = adj[e0] || []; - adj[e0].push(e1); - adj[e1] = adj[e1] || []; - adj[e1].push(e0); - edges.push([e0, e1, e.left, e.right]); - tris[e0] = tris[e0] || []; - if (!tris[e0].includes(e.left)) tris[e0].push(e.left); - if (e.right && !tris[e0].includes(e.right)) tris[e0].push(e.right); - tris[e1] = tris[e1] || []; - if (!tris[e1].includes(e.left)) tris[e1].push(e.left); - if (e.right && !tris[e1].includes(e.right)) tris[e1].push(e.right); - } - - var mesh = { - pts: pts, - vor: vor, - vxs: vxs, - adj: adj, - tris: tris, - edges: edges, - extent: extent - } - mesh.map = function (f) { - var mapped = vxs.map(f); - mapped.mesh = mesh; - return mapped; - } - return mesh; -} - - - -function generateGoodMesh(n, extent) { - extent = extent || defaultExtent; - var pts = generateGoodPoints(n, extent); - return makeMesh(pts, extent); -} -function isedge(mesh, i) { - return (mesh.adj[i].length < 3); -} - -function isnearedge(mesh, i) { - var x = mesh.vxs[i][0]; - var y = mesh.vxs[i][1]; - var w = mesh.extent.width; - var h = mesh.extent.height; - return x < -0.45 * w || x > 0.45 * w || y < -0.45 * h || y > 0.45 * h; -} - -function neighbours(mesh, i) { - var onbs = mesh.adj[i]; - var nbs = []; - for (var i = 0; i < onbs.length; i++) { - nbs.push(onbs[i]); - } - return nbs; -} - -function distance(mesh, i, j) { - var p = mesh.vxs[i]; - var q = mesh.vxs[j]; - return Math.sqrt((p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])); -} - -function quantile(h, q) { - var sortedh = []; - for (var i = 0; i < h.length; i++) { - sortedh[i] = h[i]; - } - sortedh.sort(d3.ascending); - return d3.quantile(sortedh, q); -} - -function zero(mesh) { - var z = []; - for (var i = 0; i < mesh.vxs.length; i++) { - z[i] = 0; - } - z.mesh = mesh; - return z; -} - -function slope(mesh, direction) { - return mesh.map(function (x) { - return x[0] * direction[0] + x[1] * direction[1]; - }); -} - -function cone(mesh, slope) { - return mesh.map(function (x) { - return Math.pow(x[0] * x[0] + x[1] * x[1], 0.5) * slope; - }); -} - -function map(h, f) { - var newh = h.map(f); - newh.mesh = h.mesh; - return newh; -} - -function normalize(h) { - var lo = d3.min(h); - var hi = d3.max(h); - return map(h, function (x) {return (x - lo) / (hi - lo)}); -} - -function peaky(h) { - return map(normalize(h), Math.sqrt); -} - -function add() { - var n = arguments[0].length; - var newvals = zero(arguments[0].mesh); - for (var i = 0; i < n; i++) { - for (var j = 0; j < arguments.length; j++) { - newvals[i] += arguments[j][i]; - } - } - return newvals; -} - -function mountains(mesh, n, r) { - r = r || 0.05; - var mounts = []; - for (var i = 0; i < n; i++) { - mounts.push([mesh.extent.width * (Math.random() - 0.5), mesh.extent.height * (Math.random() - 0.5)]); - } - var newvals = zero(mesh); - for (var i = 0; i < mesh.vxs.length; i++) { - var p = mesh.vxs[i]; - for (var j = 0; j < n; j++) { - var m = mounts[j]; - newvals[i] += Math.pow(Math.exp(-((p[0] - m[0]) * (p[0] - m[0]) + (p[1] - m[1]) * (p[1] - m[1])) / (2 * r * r)), 2); - } - } - return newvals; -} - -function relax(h) { - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var nbs = neighbours(h.mesh, i); - if (nbs.length < 3) { - newh[i] = 0; - continue; - } - newh[i] = d3.mean(nbs.map(function (j) {return h[j]})); - } - return newh; -} - -function downhill(h) { - if (h.downhill) return h.downhill; - function downfrom(i) { - if (isedge(h.mesh, i)) return -2; - var best = -1; - var besth = h[i]; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] < besth) { - besth = h[nbs[j]]; - best = nbs[j]; - } - } - return best; - } - var downs = []; - for (var i = 0; i < h.length; i++) { - downs[i] = downfrom(i); - } - h.downhill = downs; - return downs; -} - -function findSinks(h) { - var dh = downhill(h); - var sinks = []; - for (var i = 0; i < dh.length; i++) { - var node = i; - while (true) { - if (isedge(h.mesh, node)) { - sinks[i] = -2; - break; - } - if (dh[node] == -1) { - sinks[i] = node; - break; - } - node = dh[node]; - } - } -} - -function fillSinks(h, epsilon) { - epsilon = epsilon || 1e-5; - var infinity = 999999; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - if (isnearedge(h.mesh, i)) { - newh[i] = h[i]; - } else { - newh[i] = infinity; - } - } - while (true) { - var changed = false; - for (var i = 0; i < h.length; i++) { - if (newh[i] == h[i]) continue; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[i] >= newh[nbs[j]] + epsilon) { - newh[i] = h[i]; - changed = true; - break; - } - var oh = newh[nbs[j]] + epsilon; - if ((newh[i] > oh) && (oh > h[i])) { - newh[i] = oh; - changed = true; - } - } - } - if (!changed) return newh; - } -} - -function getFlux(h) { - var dh = downhill(h); - var idxs = []; - var flux = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - idxs[i] = i; - flux[i] = 1/h.length; - } - idxs.sort(function (a, b) { - return h[b] - h[a]; - }); - for (var i = 0; i < h.length; i++) { - var j = idxs[i]; - if (dh[j] >= 0) { - flux[dh[j]] += flux[j]; - } - } - return flux; -} - -function getSlope(h) { - var dh = downhill(h); - var slope = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var s = trislope(h, i); - slope[i] = Math.sqrt(s[0] * s[0] + s[1] * s[1]); - continue; - if (dh[i] < 0) { - slope[i] = 0; - } else { - slope[i] = (h[i] - h[dh[i]]) / distance(h.mesh, i, dh[i]); - } - } - return slope; -} - -function erosionRate(h) { - var flux = getFlux(h); - var slope = getSlope(h); - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var river = Math.sqrt(flux[i]) * slope[i]; - var creep = slope[i] * slope[i]; - var total = 1000 * river + creep; - total = total > 200 ? 200 : total; - newh[i] = total; - } - return newh; -} - -function erode(h, amount) { - var er = erosionRate(h); - var newh = zero(h.mesh); - var maxr = d3.max(er); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - amount * (er[i] / maxr); - } - return newh; -} - -function doErosion(h, amount, n) { - n = n || 1; - h = fillSinks(h); - for (var i = 0; i < n; i++) { - h = erode(h, amount); - h = fillSinks(h); - } - return h; -} - -function setSeaLevel(h, q) { - var newh = zero(h.mesh); - var delta = quantile(h, q); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - delta; - } - return newh; -} - -function cleanCoast(h, iters) { - for (var iter = 0; iter < iters; iter++) { - var changed = 0; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] <= 0 || nbs.length != 3) continue; - var count = 0; - var best = -999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] > 0) { - count++; - } else if (h[nbs[j]] > best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] > 0 || nbs.length != 3) continue; - var count = 0; - var best = 999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] <= 0) { - count++; - } else if (h[nbs[j]] < best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - } - return h; -} - -function trislope(h, i) { - var nbs = neighbours(h.mesh, i); - if (nbs.length != 3) return [0,0]; - var p0 = h.mesh.vxs[nbs[0]]; - var p1 = h.mesh.vxs[nbs[1]]; - var p2 = h.mesh.vxs[nbs[2]]; - - var x1 = p1[0] - p0[0]; - var x2 = p2[0] - p0[0]; - var y1 = p1[1] - p0[1]; - var y2 = p2[1] - p0[1]; - - var det = x1 * y2 - x2 * y1; - var h1 = h[nbs[1]] - h[nbs[0]]; - var h2 = h[nbs[2]] - h[nbs[0]]; - - return [(y2 * h1 - y1 * h2) / det, - (-x2 * h1 + x1 * h2) / det]; -} - -function cityScore(h, cities) { - var score = map(getFlux(h), Math.sqrt); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) { - score[i] = -999999; - continue; - } - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][0]) - h.mesh.extent.width/2) - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][1]) - h.mesh.extent.height/2) - for (var j = 0; j < cities.length; j++) { - score[i] -= 0.02 / (distance(h.mesh, cities[j], i) + 1e-9); - } - } - return score; -} -function placeCity(render) { - render.cities = render.cities || []; - var score = cityScore(render.h, render.cities); - var newcity = d3.scan(score, d3.descending); - render.cities.push(newcity); -} - -function placeCities(render) { - var params = render.params; - var h = render.h; - var n = params.ncities; - for (var i = 0; i < n; i++) { - placeCity(render); - } -} - -function contour(h, level) { - level = level || 0; - var edges = []; - for (var i = 0; i < h.mesh.edges.length; i++) { - var e = h.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(h.mesh, e[0]) || isnearedge(h.mesh, e[1])) continue; - if ((h[e[0]] > level && h[e[1]] <= level) || - (h[e[1]] > level && h[e[0]] <= level)) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges); -} - -function getRivers(h, limit) { - var dh = downhill(h); - var flux = getFlux(h); - var links = []; - var above = 0; - for (var i = 0; i < h.length; i++) { - if (h[i] > 0) above++; - } - limit *= above / h.length; - for (var i = 0; i < dh.length; i++) { - if (isnearedge(h.mesh, i)) continue; - if (flux[i] > limit && h[i] > 0 && dh[i] >= 0) { - var up = h.mesh.vxs[i]; - var down = h.mesh.vxs[dh[i]]; - if (h[dh[i]] > 0) { - links.push([up, down]); - } else { - links.push([up, [(up[0] + down[0])/2, (up[1] + down[1])/2]]); - } - } - } - return mergeSegments(links).map(relaxPath); -} - -function getTerritories(render) { - var h = render.h; - var cities = render.cities; - var n = render.params.nterrs; - if (n > render.cities.length) n = render.cities.length; - var flux = getFlux(h); - var terr = []; - var queue = new PriorityQueue({comparator: function (a, b) {return a.score - b.score}}); - function weight(u, v) { - var horiz = distance(h.mesh, u, v); - var vert = h[v] - h[u]; - if (vert > 0) vert /= 10; - var diff = 1 + 0.25 * Math.pow(vert/horiz, 2); - diff += 100 * Math.sqrt(flux[u]); - if (h[u] <= 0) diff = 100; - if ((h[u] > 0) != (h[v] > 0)) return 1000; - return horiz * diff; - } - for (var i = 0; i < n; i++) { - terr[cities[i]] = cities[i]; - var nbs = neighbours(h.mesh, cities[i]); - for (var j = 0; j < nbs.length; j++) { - queue.queue({ - score: weight(cities[i], nbs[j]), - city: cities[i], - vx: nbs[j] - }); - } - } - while (queue.length) { - var u = queue.dequeue(); - if (terr[u.vx] != undefined) continue; - terr[u.vx] = u.city; - var nbs = neighbours(h.mesh, u.vx); - for (var i = 0; i < nbs.length; i++) { - var v = nbs[i]; - if (terr[v] != undefined) continue; - var newdist = weight(u.vx, v); - queue.queue({ - score: u.score + newdist, - city: u.city, - vx: v - }); - } - } - terr.mesh = h.mesh; - return terr; -} - -function getBorders(render) { - var terr = render.terr; - var h = render.h; - var edges = []; - for (var i = 0; i < terr.mesh.edges.length; i++) { - var e = terr.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(terr.mesh, e[0]) || isnearedge(terr.mesh, e[1])) continue; - if (h[e[0]] < 0 || h[e[1]] < 0) continue; - if (terr[e[0]] != terr[e[1]]) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges).map(relaxPath); -} - -function mergeSegments(segs) { - var adj = {}; - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - var a0 = adj[seg[0]] || []; - var a1 = adj[seg[1]] || []; - a0.push(seg[1]); - a1.push(seg[0]); - adj[seg[0]] = a0; - adj[seg[1]] = a1; - } - var done = []; - var paths = []; - var path = null; - while (true) { - if (path == null) { - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - done[i] = true; - path = [segs[i][0], segs[i][1]]; - break; - } - if (path == null) break; - } - var changed = false; - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - if (adj[path[0]].length == 2 && segs[i][0] == path[0]) { - path.unshift(segs[i][1]); - } else if (adj[path[0]].length == 2 && segs[i][1] == path[0]) { - path.unshift(segs[i][0]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][0] == path[path.length - 1]) { - path.push(segs[i][1]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][1] == path[path.length - 1]) { - path.push(segs[i][0]); - } else { - continue; - } - done[i] = true; - changed = true; - break; - } - if (!changed) { - paths.push(path); - path = null; - } - } - return paths; -} - -function relaxPath(path) { - var newpath = [path[0]]; - for (var i = 1; i < path.length - 1; i++) { - var newpt = [0.25 * path[i-1][0] + 0.5 * path[i][0] + 0.25 * path[i+1][0], - 0.25 * path[i-1][1] + 0.5 * path[i][1] + 0.25 * path[i+1][1]]; - newpath.push(newpt); - } - newpath.push(path[path.length - 1]); - return newpath; -} -function visualizePoints(svg, pts) { - var circle = svg.selectAll('circle').data(pts); - circle.enter() - .append('circle'); - circle.exit().remove(); - d3.selectAll('circle') - .attr('cx', function (d) {return 1000*d[0]}) - .attr('cy', function (d) {return 1000*d[1]}) - .attr('r', 100 / Math.sqrt(pts.length)); -} - -function makeD3Path(path) { - var p = d3.path(); - p.moveTo(1000*path[0][0], 1000*path[0][1]); - for (var i = 1; i < path.length; i++) { - p.lineTo(1000*path[i][0], 1000*path[i][1]); - } - return p.toString(); -} - -function visualizeVoronoi(svg, field, lo, hi) { - if (hi == undefined) hi = d3.max(field) + 1e-9; - if (lo == undefined) lo = d3.min(field) - 1e-9; - var mappedvals = field.map(function (x) {return x > hi ? 1 : x < lo ? 0 : (x - lo) / (hi - lo)}); - var tris = svg.selectAll('path.field').data(field.mesh.tris) - tris.enter() - .append('path') - .classed('field', true); - - tris.exit() - .remove(); - - svg.selectAll('path.field') - .attr('d', makeD3Path) - .style('fill', function (d, i) { - return d3.interpolateViridis(mappedvals[i]); - }); -} - -function visualizeDownhill(h) { - var links = getRivers(h, 0.01); - drawPaths('river', links); -} - -function drawPaths(svg, cls, paths) { - var paths = svg.selectAll('path.' + cls).data(paths) - paths.enter() - .append('path') - .classed(cls, true) - paths.exit() - .remove(); - svg.selectAll('path.' + cls) - .attr('d', makeD3Path); -} - -function visualizeSlopes(svg, render) { - var h = render.h; - var strokes = []; - var r = 0.25 / Math.sqrt(h.length); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) continue; - var nbs = neighbours(h.mesh, i); - nbs.push(i); - var s = 0; - var s2 = 0; - for (var j = 0; j < nbs.length; j++) { - var slopes = trislope(h, nbs[j]); - s += slopes[0] / 10; - s2 += slopes[1]; - } - s /= nbs.length; - s2 /= nbs.length; - if (Math.abs(s) < runif(0.1, 0.4)) continue; - var l = r * runif(1, 2) * (1 - 0.2 * Math.pow(Math.atan(s), 2)) * Math.exp(s2/100); - var x = h.mesh.vxs[i][0]; - var y = h.mesh.vxs[i][1]; - if (Math.abs(l*s) > 2 * r) { - var n = Math.floor(Math.abs(l*s/r)); - l /= n; - if (n > 4) n = 4; - for (var j = 0; j < n; j++) { - var u = rnorm() * r; - var v = rnorm() * r; - strokes.push([[x+u-l, y+v+l*s], [x+u+l, y+v-l*s]]); - } - } else { - strokes.push([[x-l, y+l*s], [x+l, y-l*s]]); - } - } - var lines = svg.selectAll('line.slope').data(strokes) - lines.enter() - .append('line') - .classed('slope', true); - lines.exit() - .remove(); - svg.selectAll('line.slope') - .attr('x1', function (d) {return 1000*d[0][0]}) - .attr('y1', function (d) {return 1000*d[0][1]}) - .attr('x2', function (d) {return 1000*d[1][0]}) - .attr('y2', function (d) {return 1000*d[1][1]}) -} - - -function visualizeContour(h, level) { - level = level || 0; - var links = contour(h, level); - drawPaths('coast', links); -} - -function visualizeBorders(h, cities, n) { - var links = getBorders(h, getTerritories(h, cities, n)); - drawPaths('border', links); -} - - -function visualizeCities(svg, render) { - var cities = render.cities; - var h = render.h; - var n = render.params.nterrs; - - var circs = svg.selectAll('circle.city').data(cities); - circs.enter() - .append('circle') - .classed('city', true); - circs.exit() - .remove(); - svg.selectAll('circle.city') - .attr('cx', function (d) {return 1000*h.mesh.vxs[d][0]}) - .attr('cy', function (d) {return 1000*h.mesh.vxs[d][1]}) - .attr('r', function (d, i) {return i >= n ? 4 : 10}) - .style('fill', 'white') - .style('stroke-width', 5) - .style('stroke-linecap', 'round') - .style('stroke', 'black') - .raise(); -} - -function dropEdge(h, p) { - p = p || 4 - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var v = h.mesh.vxs[i]; - var x = 2.4*v[0] / h.mesh.extent.width; - var y = 2.4*v[1] / h.mesh.extent.height; - newh[i] = h[i] - Math.exp(10*(Math.pow(Math.pow(x, p) + Math.pow(y, p), 1/p) - 1)); - } - return newh; -} - -function generateCoast(params) { - var mesh = generateGoodMesh(params.npts, params.extent); - var h = add( - slope(mesh, randomVector(6)), - cone(mesh, runif(-10, -10)), - mountains(mesh, 50) - ); - for (var i = 0; i < 10; i++) { - h = relax(h); - } - h = peaky(h); - h = doErosion(h, runif(0, 0.1), 5); - h = setSeaLevel(h, runif(0.8, 0.7)); - h = fillSinks(h); - h = cleanCoast(h, 3); - return h; -} - -function terrCenter(h, terr, city, landOnly) { - var x = 0; - var y = 0; - var n = 0; - for (var i = 0; i < terr.length; i++) { - if (terr[i] != city) continue; - if (landOnly && h[i] <= 0) continue; - x += terr.mesh.vxs[i][0]; - y += terr.mesh.vxs[i][1]; - n++; - } - return [x/n, y/n]; -} - -function drawLabels(svg, render) { - var params = render.params; - var h = render.h; - var terr = render.terr; - var cities = render.cities; - var nterrs = render.params.nterrs; - var avoids = [render.rivers, render.coasts, render.borders]; - var lang = makeRandomLanguage(); - var citylabels = []; - function penalty(label) { - var pen = 0; - if (label.x0 < -0.45 * h.mesh.extent.width) pen += 100; - if (label.x1 > 0.45 * h.mesh.extent.width) pen += 100; - if (label.y0 < -0.45 * h.mesh.extent.height) pen += 100; - if (label.y1 > 0.45 * h.mesh.extent.height) pen += 100; - for (var i = 0; i < citylabels.length; i++) { - var olabel = citylabels[i]; - if (label.x0 < olabel.x1 && label.x1 > olabel.x0 && - label.y0 < olabel.y1 && label.y1 > olabel.y0) { - pen += 100; - } - } - - for (var i = 0; i < cities.length; i++) { - var c = h.mesh.vxs[cities[i]]; - if (label.x0 < c[0] && label.x1 > c[0] && label.y0 < c[1] && label.y1 > c[1]) { - pen += 100; - } - } - for (var i = 0; i < avoids.length; i++) { - var avoid = avoids[i]; - for (var j = 0; j < avoid.length; j++) { - var avpath = avoid[j]; - for (var k = 0; k < avpath.length; k++) { - var pt = avpath[k]; - if (pt[0] > label.x0 && pt[0] < label.x1 && pt[1] > label.y0 && pt[1] < label.y1) { - pen++; - } - } - } - } - return pen; - } - for (var i = 0; i < cities.length; i++) { - var x = h.mesh.vxs[cities[i]][0]; - var y = h.mesh.vxs[cities[i]][1]; - var text = makeName(lang, 'city'); - var size = i < nterrs ? params.fontsizes.city : params.fontsizes.town; - var sx = 0.65 * size/1000 * text.length; - var sy = size/1000; - var posslabels = [ - { - x: x + 0.8 * sy, - y: y + 0.3 * sy, - align: 'start', - x0: x + 0.7 * sy, - y0: y - 0.6 * sy, - x1: x + 0.7 * sy + sx, - y1: y + 0.6 * sy - }, - { - x: x - 0.8 * sy, - y: y + 0.3 * sy, - align: 'end', - x0: x - 0.9 * sy - sx, - y0: y - 0.7 * sy, - x1: x - 0.9 * sy, - y1: y + 0.7 * sy - }, - { - x: x, - y: y - 0.8 * sy, - align: 'middle', - x0: x - sx/2, - y0: y - 1.9*sy, - x1: x + sx/2, - y1: y - 0.7 * sy - }, - { - x: x, - y: y + 1.2 * sy, - align: 'middle', - x0: x - sx/2, - y0: y + 0.1*sy, - x1: x + sx/2, - y1: y + 1.3*sy - } - ]; - var label = posslabels[d3.scan(posslabels, function (a, b) {return penalty(a) - penalty(b)})]; - label.text = text; - label.size = size; - citylabels.push(label); - } - var texts = svg.selectAll('text.city').data(citylabels); - texts.enter() - .append('text') - .classed('city', true); - texts.exit() - .remove(); - svg.selectAll('text.city') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return d.size}) - .style('text-anchor', function (d) {return d.align}) - .text(function (d) {return d.text}) - .raise(); - - var reglabels = []; - for (var i = 0; i < nterrs; i++) { - var city = cities[i]; - var text = makeName(lang, 'region'); - var sy = params.fontsizes.region / 1000; - var sx = 0.6 * text.length * sy; - var lc = terrCenter(h, terr, city, true); - var oc = terrCenter(h, terr, city, false); - var best = 0; - var bestscore = -999999; - for (var j = 0; j < h.length; j++) { - var score = 0; - var v = h.mesh.vxs[j]; - score -= 3000 * Math.sqrt((v[0] - lc[0]) * (v[0] - lc[0]) + (v[1] - lc[1]) * (v[1] - lc[1])); - score -= 1000 * Math.sqrt((v[0] - oc[0]) * (v[0] - oc[0]) + (v[1] - oc[1]) * (v[1] - oc[1])); - if (terr[j] != city) score -= 3000; - for (var k = 0; k < cities.length; k++) { - var u = h.mesh.vxs[cities[k]]; - if (Math.abs(v[0] - u[0]) < sx && - Math.abs(v[1] - sy/2 - u[1]) < sy) { - score -= k < nterrs ? 4000 : 500; - } - if (v[0] - sx/2 < citylabels[k].x1 && - v[0] + sx/2 > citylabels[k].x0 && - v[1] - sy < citylabels[k].y1 && - v[1] > citylabels[k].y0) { - score -= 5000; - } - } - for (var k = 0; k < reglabels.length; k++) { - var label = reglabels[k]; - if (v[0] - sx/2 < label.x + label.width/2 && - v[0] + sx/2 > label.x - label.width/2 && - v[1] - sy < label.y && - v[1] > label.y - label.size) { - score -= 20000; - } - } - if (h[j] <= 0) score -= 500; - if (v[0] + sx/2 > 0.5 * h.mesh.extent.width) score -= 50000; - if (v[0] - sx/2 < -0.5 * h.mesh.extent.width) score -= 50000; - if (v[1] > 0.5 * h.mesh.extent.height) score -= 50000; - if (v[1] - sy < -0.5 * h.mesh.extent.height) score -= 50000; - if (score > bestscore) { - bestscore = score; - best = j; - } - } - reglabels.push({ - text: text, - x: h.mesh.vxs[best][0], - y: h.mesh.vxs[best][1], - size:sy, - width:sx - }); - } - texts = svg.selectAll('text.region').data(reglabels); - texts.enter() - .append('text') - .classed('region', true); - texts.exit() - .remove(); - svg.selectAll('text.region') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return 1000*d.size}) - .style('text-anchor', 'middle') - .text(function (d) {return d.text}) - .raise(); - -} -function drawMap(svg, render) { - render.rivers = getRivers(render.h, 0.01); - render.coasts = contour(render.h, 0); - render.terr = getTerritories(render); - render.borders = getBorders(render); - drawPaths(svg, 'river', render.rivers); - drawPaths(svg, 'coast', render.coasts); - drawPaths(svg, 'border', render.borders); - visualizeSlopes(svg, render); - visualizeCities(svg, render); - drawLabels(svg, render); -} - -function doMap(svg, params) { - var render = { - params: params - }; - var width = svg.attr('width'); - svg.attr('height', width * params.extent.height / params.extent.width); - svg.attr('viewBox', -1000 * params.extent.width/2 + ' ' + - -1000 * params.extent.height/2 + ' ' + - 1000 * params.extent.width + ' ' + - 1000 * params.extent.height); - svg.selectAll().remove(); - render.h = params.generator(params); - placeCities(render); - drawMap(svg, render); -} - -var defaultParams = { - extent: defaultExtent, - generator: generateCoast, - npts: 16384, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - diff --git a/ilinx_home/scripts/terrain.js b/ilinx_home/scripts/terrain.js deleted file mode 100644 index ab35fce..0000000 --- a/ilinx_home/scripts/terrain.js +++ /dev/null @@ -1,1074 +0,0 @@ -"use strict"; - -function runif(lo, hi) { - return lo + Math.random() * (hi - lo); -} - -var rnorm = (function () { - var z2 = null; - function rnorm() { - if (z2 != null) { - var tmp = z2; - z2 = null; - return tmp; - } - var x1 = 0; - var x2 = 0; - var w = 2.0; - while (w >= 1) { - x1 = runif(-1, 1); - x2 = runif(-1, 1); - w = x1 * x1 + x2 * x2; - } - w = Math.sqrt(-2 * Math.log(w) / w); - z2 = x2 * w; - return x1 * w; - } - return rnorm; -})(); - -function randomVector(scale) { - return [scale * rnorm(), scale * rnorm()]; -} - -var defaultExtent = { - width: 1, - height: 1 -}; - -function generatePoints(n, extent) { - extent = extent || defaultExtent; - var pts = []; - for (var i = 0; i < n; i++) { - pts.push([(Math.random() - 0.5) * extent.width, (Math.random() - 0.5) * extent.height]); - } - return pts; -} - -function centroid(pts) { - var x = 0; - var y = 0; - for (var i = 0; i < pts.length; i++) { - x += pts[i][0]; - y += pts[i][1]; - } - return [x/pts.length, y/pts.length]; -} - -function improvePoints(pts, n, extent) { - n = n || 1; - extent = extent || defaultExtent; - for (var i = 0; i < n; i++) { - pts = voronoi(pts, extent) - .polygons(pts) - .map(centroid); - } - return pts; -} - -function generateGoodPoints(n, extent) { - extent = extent || defaultExtent; - var pts = generatePoints(n, extent); - pts = pts.sort(function (a, b) { - return a[0] - b[0]; - }); - return improvePoints(pts, 1, extent); -} - -function voronoi(pts, extent) { - extent = extent || defaultExtent; - var w = extent.width/2; - var h = extent.height/2; - return d3.voronoi().extent([[-w, -h], [w, h]])(pts); -} - -function makeMesh(pts, extent) { - extent = extent || defaultExtent; - var vor = voronoi(pts, extent); - var vxs = []; - var vxids = {}; - var adj = []; - var edges = []; - var tris = []; - for (var i = 0; i < vor.edges.length; i++) { - var e = vor.edges[i]; - if (e == undefined) continue; - var e0 = vxids[e[0]]; - var e1 = vxids[e[1]]; - if (e0 == undefined) { - e0 = vxs.length; - vxids[e[0]] = e0; - vxs.push(e[0]); - } - if (e1 == undefined) { - e1 = vxs.length; - vxids[e[1]] = e1; - vxs.push(e[1]); - } - adj[e0] = adj[e0] || []; - adj[e0].push(e1); - adj[e1] = adj[e1] || []; - adj[e1].push(e0); - edges.push([e0, e1, e.left, e.right]); - tris[e0] = tris[e0] || []; - if (!tris[e0].includes(e.left)) tris[e0].push(e.left); - if (e.right && !tris[e0].includes(e.right)) tris[e0].push(e.right); - tris[e1] = tris[e1] || []; - if (!tris[e1].includes(e.left)) tris[e1].push(e.left); - if (e.right && !tris[e1].includes(e.right)) tris[e1].push(e.right); - } - - var mesh = { - pts: pts, - vor: vor, - vxs: vxs, - adj: adj, - tris: tris, - edges: edges, - extent: extent - } - mesh.map = function (f) { - var mapped = vxs.map(f); - mapped.mesh = mesh; - return mapped; - } - return mesh; -} - - - -function generateGoodMesh(n, extent) { - extent = extent || defaultExtent; - var pts = generateGoodPoints(n, extent); - return makeMesh(pts, extent); -} -function isedge(mesh, i) { - return (mesh.adj[i].length < 3); -} - -function isnearedge(mesh, i) { - var x = mesh.vxs[i][0]; - var y = mesh.vxs[i][1]; - var w = mesh.extent.width; - var h = mesh.extent.height; - return x < -0.45 * w || x > 0.45 * w || y < -0.45 * h || y > 0.45 * h; -} - -function neighbours(mesh, i) { - var onbs = mesh.adj[i]; - var nbs = []; - for (var i = 0; i < onbs.length; i++) { - nbs.push(onbs[i]); - } - return nbs; -} - -function distance(mesh, i, j) { - var p = mesh.vxs[i]; - var q = mesh.vxs[j]; - return Math.sqrt((p[0] - q[0]) * (p[0] - q[0]) + (p[1] - q[1]) * (p[1] - q[1])); -} - -function quantile(h, q) { - var sortedh = []; - for (var i = 0; i < h.length; i++) { - sortedh[i] = h[i]; - } - sortedh.sort(d3.ascending); - return d3.quantile(sortedh, q); -} - -function zero(mesh) { - var z = []; - for (var i = 0; i < mesh.vxs.length; i++) { - z[i] = 0; - } - z.mesh = mesh; - return z; -} - -function slope(mesh, direction) { - return mesh.map(function (x) { - return x[0] * direction[0] + x[1] * direction[1]; - }); -} - -function cone(mesh, slope) { - return mesh.map(function (x) { - return Math.pow(x[0] * x[0] + x[1] * x[1], 0.5) * slope; - }); -} - -function map(h, f) { - var newh = h.map(f); - newh.mesh = h.mesh; - return newh; -} - -function normalize(h) { - var lo = d3.min(h); - var hi = d3.max(h); - return map(h, function (x) {return (x - lo) / (hi - lo)}); -} - -function peaky(h) { - return map(normalize(h), Math.sqrt); -} - -function add() { - var n = arguments[0].length; - var newvals = zero(arguments[0].mesh); - for (var i = 0; i < n; i++) { - for (var j = 0; j < arguments.length; j++) { - newvals[i] += arguments[j][i]; - } - } - return newvals; -} - -function mountains(mesh, n, r) { - r = r || 0.05; - var mounts = []; - for (var i = 0; i < n; i++) { - mounts.push([mesh.extent.width * (Math.random() - 0.5), mesh.extent.height * (Math.random() - 0.5)]); - } - var newvals = zero(mesh); - for (var i = 0; i < mesh.vxs.length; i++) { - var p = mesh.vxs[i]; - for (var j = 0; j < n; j++) { - var m = mounts[j]; - newvals[i] += Math.pow(Math.exp(-((p[0] - m[0]) * (p[0] - m[0]) + (p[1] - m[1]) * (p[1] - m[1])) / (2 * r * r)), 2); - } - } - return newvals; -} - -function relax(h) { - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var nbs = neighbours(h.mesh, i); - if (nbs.length < 3) { - newh[i] = 0; - continue; - } - newh[i] = d3.mean(nbs.map(function (j) {return h[j]})); - } - return newh; -} - -function downhill(h) { - if (h.downhill) return h.downhill; - function downfrom(i) { - if (isedge(h.mesh, i)) return -2; - var best = -1; - var besth = h[i]; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] < besth) { - besth = h[nbs[j]]; - best = nbs[j]; - } - } - return best; - } - var downs = []; - for (var i = 0; i < h.length; i++) { - downs[i] = downfrom(i); - } - h.downhill = downs; - return downs; -} - -function findSinks(h) { - var dh = downhill(h); - var sinks = []; - for (var i = 0; i < dh.length; i++) { - var node = i; - while (true) { - if (isedge(h.mesh, node)) { - sinks[i] = -2; - break; - } - if (dh[node] == -1) { - sinks[i] = node; - break; - } - node = dh[node]; - } - } -} - -function fillSinks(h, epsilon) { - epsilon = epsilon || 1e-5; - var infinity = 999999; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - if (isnearedge(h.mesh, i)) { - newh[i] = h[i]; - } else { - newh[i] = infinity; - } - } - while (true) { - var changed = false; - for (var i = 0; i < h.length; i++) { - if (newh[i] == h[i]) continue; - var nbs = neighbours(h.mesh, i); - for (var j = 0; j < nbs.length; j++) { - if (h[i] >= newh[nbs[j]] + epsilon) { - newh[i] = h[i]; - changed = true; - break; - } - var oh = newh[nbs[j]] + epsilon; - if ((newh[i] > oh) && (oh > h[i])) { - newh[i] = oh; - changed = true; - } - } - } - if (!changed) return newh; - } -} - -function getFlux(h) { - var dh = downhill(h); - var idxs = []; - var flux = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - idxs[i] = i; - flux[i] = 1/h.length; - } - idxs.sort(function (a, b) { - return h[b] - h[a]; - }); - for (var i = 0; i < h.length; i++) { - var j = idxs[i]; - if (dh[j] >= 0) { - flux[dh[j]] += flux[j]; - } - } - return flux; -} - -function getSlope(h) { - var dh = downhill(h); - var slope = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var s = trislope(h, i); - slope[i] = Math.sqrt(s[0] * s[0] + s[1] * s[1]); - continue; - if (dh[i] < 0) { - slope[i] = 0; - } else { - slope[i] = (h[i] - h[dh[i]]) / distance(h.mesh, i, dh[i]); - } - } - return slope; -} - -function erosionRate(h) { - var flux = getFlux(h); - var slope = getSlope(h); - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var river = Math.sqrt(flux[i]) * slope[i]; - var creep = slope[i] * slope[i]; - var total = 1000 * river + creep; - total = total > 200 ? 200 : total; - newh[i] = total; - } - return newh; -} - -function erode(h, amount) { - var er = erosionRate(h); - var newh = zero(h.mesh); - var maxr = d3.max(er); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - amount * (er[i] / maxr); - } - return newh; -} - -function doErosion(h, amount, n) { - n = n || 1; - h = fillSinks(h); - for (var i = 0; i < n; i++) { - h = erode(h, amount); - h = fillSinks(h); - } - return h; -} - -function setSeaLevel(h, q) { - var newh = zero(h.mesh); - var delta = quantile(h, q); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i] - delta; - } - return newh; -} - -function cleanCoast(h, iters) { - for (var iter = 0; iter < iters; iter++) { - var changed = 0; - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] <= 0 || nbs.length != 3) continue; - var count = 0; - var best = -999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] > 0) { - count++; - } else if (h[nbs[j]] > best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - newh[i] = h[i]; - var nbs = neighbours(h.mesh, i); - if (h[i] > 0 || nbs.length != 3) continue; - var count = 0; - var best = 999999; - for (var j = 0; j < nbs.length; j++) { - if (h[nbs[j]] <= 0) { - count++; - } else if (h[nbs[j]] < best) { - best = h[nbs[j]]; - } - } - if (count > 1) continue; - newh[i] = best / 2; - changed++; - } - h = newh; - } - return h; -} - -function trislope(h, i) { - var nbs = neighbours(h.mesh, i); - if (nbs.length != 3) return [0,0]; - var p0 = h.mesh.vxs[nbs[0]]; - var p1 = h.mesh.vxs[nbs[1]]; - var p2 = h.mesh.vxs[nbs[2]]; - - var x1 = p1[0] - p0[0]; - var x2 = p2[0] - p0[0]; - var y1 = p1[1] - p0[1]; - var y2 = p2[1] - p0[1]; - - var det = x1 * y2 - x2 * y1; - var h1 = h[nbs[1]] - h[nbs[0]]; - var h2 = h[nbs[2]] - h[nbs[0]]; - - return [(y2 * h1 - y1 * h2) / det, - (-x2 * h1 + x1 * h2) / det]; -} - -function cityScore(h, cities) { - var score = map(getFlux(h), Math.sqrt); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) { - score[i] = -999999; - continue; - } - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][0]) - h.mesh.extent.width/2) - score[i] += 0.01 / (1e-9 + Math.abs(h.mesh.vxs[i][1]) - h.mesh.extent.height/2) - for (var j = 0; j < cities.length; j++) { - score[i] -= 0.02 / (distance(h.mesh, cities[j], i) + 1e-9); - } - } - return score; -} -function placeCity(render) { - render.cities = render.cities || []; - var score = cityScore(render.h, render.cities); - var newcity = d3.scan(score, d3.descending); - render.cities.push(newcity); -} - -function placeCities(render) { - var params = render.params; - var h = render.h; - var n = params.ncities; - for (var i = 0; i < n; i++) { - placeCity(render); - } -} - -function contour(h, level) { - level = level || 0; - var edges = []; - for (var i = 0; i < h.mesh.edges.length; i++) { - var e = h.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(h.mesh, e[0]) || isnearedge(h.mesh, e[1])) continue; - if ((h[e[0]] > level && h[e[1]] <= level) || - (h[e[1]] > level && h[e[0]] <= level)) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges); -} - -function getRivers(h, limit) { - var dh = downhill(h); - var flux = getFlux(h); - var links = []; - var above = 0; - for (var i = 0; i < h.length; i++) { - if (h[i] > 0) above++; - } - limit *= above / h.length; - for (var i = 0; i < dh.length; i++) { - if (isnearedge(h.mesh, i)) continue; - if (flux[i] > limit && h[i] > 0 && dh[i] >= 0) { - var up = h.mesh.vxs[i]; - var down = h.mesh.vxs[dh[i]]; - if (h[dh[i]] > 0) { - links.push([up, down]); - } else { - links.push([up, [(up[0] + down[0])/2, (up[1] + down[1])/2]]); - } - } - } - return mergeSegments(links).map(relaxPath); -} - -function getTerritories(render) { - var h = render.h; - var cities = render.cities; - var n = render.params.nterrs; - if (n > render.cities.length) n = render.cities.length; - var flux = getFlux(h); - var terr = []; - var queue = new PriorityQueue({comparator: function (a, b) {return a.score - b.score}}); - function weight(u, v) { - var horiz = distance(h.mesh, u, v); - var vert = h[v] - h[u]; - if (vert > 0) vert /= 10; - var diff = 1 + 0.25 * Math.pow(vert/horiz, 2); - diff += 100 * Math.sqrt(flux[u]); - if (h[u] <= 0) diff = 100; - if ((h[u] > 0) != (h[v] > 0)) return 1000; - return horiz * diff; - } - for (var i = 0; i < n; i++) { - terr[cities[i]] = cities[i]; - var nbs = neighbours(h.mesh, cities[i]); - for (var j = 0; j < nbs.length; j++) { - queue.queue({ - score: weight(cities[i], nbs[j]), - city: cities[i], - vx: nbs[j] - }); - } - } - while (queue.length) { - var u = queue.dequeue(); - if (terr[u.vx] != undefined) continue; - terr[u.vx] = u.city; - var nbs = neighbours(h.mesh, u.vx); - for (var i = 0; i < nbs.length; i++) { - var v = nbs[i]; - if (terr[v] != undefined) continue; - var newdist = weight(u.vx, v); - queue.queue({ - score: u.score + newdist, - city: u.city, - vx: v - }); - } - } - terr.mesh = h.mesh; - return terr; -} - -function getBorders(render) { - var terr = render.terr; - var h = render.h; - var edges = []; - for (var i = 0; i < terr.mesh.edges.length; i++) { - var e = terr.mesh.edges[i]; - if (e[3] == undefined) continue; - if (isnearedge(terr.mesh, e[0]) || isnearedge(terr.mesh, e[1])) continue; - if (h[e[0]] < 0 || h[e[1]] < 0) continue; - if (terr[e[0]] != terr[e[1]]) { - edges.push([e[2], e[3]]); - } - } - return mergeSegments(edges).map(relaxPath); -} - -function mergeSegments(segs) { - var adj = {}; - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - var a0 = adj[seg[0]] || []; - var a1 = adj[seg[1]] || []; - a0.push(seg[1]); - a1.push(seg[0]); - adj[seg[0]] = a0; - adj[seg[1]] = a1; - } - var done = []; - var paths = []; - var path = null; - while (true) { - if (path == null) { - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - done[i] = true; - path = [segs[i][0], segs[i][1]]; - break; - } - if (path == null) break; - } - var changed = false; - for (var i = 0; i < segs.length; i++) { - if (done[i]) continue; - if (adj[path[0]].length == 2 && segs[i][0] == path[0]) { - path.unshift(segs[i][1]); - } else if (adj[path[0]].length == 2 && segs[i][1] == path[0]) { - path.unshift(segs[i][0]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][0] == path[path.length - 1]) { - path.push(segs[i][1]); - } else if (adj[path[path.length - 1]].length == 2 && segs[i][1] == path[path.length - 1]) { - path.push(segs[i][0]); - } else { - continue; - } - done[i] = true; - changed = true; - break; - } - if (!changed) { - paths.push(path); - path = null; - } - } - return paths; -} - -function relaxPath(path) { - var newpath = [path[0]]; - for (var i = 1; i < path.length - 1; i++) { - var newpt = [0.25 * path[i-1][0] + 0.5 * path[i][0] + 0.25 * path[i+1][0], - 0.25 * path[i-1][1] + 0.5 * path[i][1] + 0.25 * path[i+1][1]]; - newpath.push(newpt); - } - newpath.push(path[path.length - 1]); - return newpath; -} -function visualizePoints(svg, pts) { - var circle = svg.selectAll('circle').data(pts); - circle.enter() - .append('circle'); - circle.exit().remove(); - d3.selectAll('circle') - .attr('cx', function (d) {return 1000*d[0]}) - .attr('cy', function (d) {return 1000*d[1]}) - .attr('r', 100 / Math.sqrt(pts.length)); -} - -function makeD3Path(path) { - var p = d3.path(); - p.moveTo(1000*path[0][0], 1000*path[0][1]); - for (var i = 1; i < path.length; i++) { - p.lineTo(1000*path[i][0], 1000*path[i][1]); - } - return p.toString(); -} - -function visualizeVoronoi(svg, field, lo, hi) { - if (hi == undefined) hi = d3.max(field) + 1e-9; - if (lo == undefined) lo = d3.min(field) - 1e-9; - var mappedvals = field.map(function (x) {return x > hi ? 1 : x < lo ? 0 : (x - lo) / (hi - lo)}); - var tris = svg.selectAll('path.field').data(field.mesh.tris) - tris.enter() - .append('path') - .classed('field', true); - - tris.exit() - .remove(); - - svg.selectAll('path.field') - .attr('d', makeD3Path) - .style('fill', function (d, i) { - return d3.interpolateViridis(mappedvals[i]); - }); -} - -function visualizeDownhill(h) { - var links = getRivers(h, 0.01); - drawPaths('river', links); -} - -function drawPaths(svg, cls, paths) { - var paths = svg.selectAll('path.' + cls).data(paths) - paths.enter() - .append('path') - .classed(cls, true) - paths.exit() - .remove(); - svg.selectAll('path.' + cls) - .attr('d', makeD3Path); -} - -function visualizeSlopes(svg, render) { - var h = render.h; - var strokes = []; - var r = 0.25 / Math.sqrt(h.length); - for (var i = 0; i < h.length; i++) { - if (h[i] <= 0 || isnearedge(h.mesh, i)) continue; - var nbs = neighbours(h.mesh, i); - nbs.push(i); - var s = 0; - var s2 = 0; - for (var j = 0; j < nbs.length; j++) { - var slopes = trislope(h, nbs[j]); - s += slopes[0] / 10; - s2 += slopes[1]; - } - s /= nbs.length; - s2 /= nbs.length; - if (Math.abs(s) < runif(0.1, 0.4)) continue; - var l = r * runif(1, 2) * (1 - 0.2 * Math.pow(Math.atan(s), 2)) * Math.exp(s2/100); - var x = h.mesh.vxs[i][0]; - var y = h.mesh.vxs[i][1]; - if (Math.abs(l*s) > 2 * r) { - var n = Math.floor(Math.abs(l*s/r)); - l /= n; - if (n > 4) n = 4; - for (var j = 0; j < n; j++) { - var u = rnorm() * r; - var v = rnorm() * r; - strokes.push([[x+u-l, y+v+l*s], [x+u+l, y+v-l*s]]); - } - } else { - strokes.push([[x-l, y+l*s], [x+l, y-l*s]]); - } - } - var lines = svg.selectAll('line.slope').data(strokes) - lines.enter() - .append('line') - .classed('slope', true); - lines.exit() - .remove(); - svg.selectAll('line.slope') - .attr('x1', function (d) {return 1000*d[0][0]}) - .attr('y1', function (d) {return 1000*d[0][1]}) - .attr('x2', function (d) {return 1000*d[1][0]}) - .attr('y2', function (d) {return 1000*d[1][1]}) -} - - -function visualizeContour(h, level) { - level = level || 0; - var links = contour(h, level); - drawPaths('coast', links); -} - -function visualizeBorders(h, cities, n) { - var links = getBorders(h, getTerritories(h, cities, n)); - drawPaths('border', links); -} - - -function visualizeCities(svg, render) { - var cities = render.cities; - var h = render.h; - var n = render.params.nterrs; - - var circs = svg.selectAll('circle.city').data(cities); - circs.enter() - .append('circle') - .classed('city', true); - circs.exit() - .remove(); - svg.selectAll('circle.city') - .attr('cx', function (d) {return 1000*h.mesh.vxs[d][0]}) - .attr('cy', function (d) {return 1000*h.mesh.vxs[d][1]}) - .attr('r', function (d, i) {return i >= n ? 4 : 10}) - .style('fill', 'white') - .style('stroke-width', 5) - .style('stroke-linecap', 'round') - .style('stroke', 'black') - .raise(); -} - -function dropEdge(h, p) { - p = p || 4 - var newh = zero(h.mesh); - for (var i = 0; i < h.length; i++) { - var v = h.mesh.vxs[i]; - var x = 2.4*v[0] / h.mesh.extent.width; - var y = 2.4*v[1] / h.mesh.extent.height; - newh[i] = h[i] - Math.exp(10*(Math.pow(Math.pow(x, p) + Math.pow(y, p), 1/p) - 1)); - } - return newh; -} - -function generateCoast(params) { - var mesh = generateGoodMesh(params.npts, params.extent); - var h = add( - slope(mesh, randomVector(4)), - cone(mesh, runif(-1, -1)), - mountains(mesh, 50) - ); - for (var i = 0; i < 10; i++) { - h = relax(h); - } - h = peaky(h); - h = doErosion(h, runif(0, 0.1), 5); - h = setSeaLevel(h, runif(0.2, 0.6)); - h = fillSinks(h); - h = cleanCoast(h, 3); - return h; -} - -function terrCenter(h, terr, city, landOnly) { - var x = 0; - var y = 0; - var n = 0; - for (var i = 0; i < terr.length; i++) { - if (terr[i] != city) continue; - if (landOnly && h[i] <= 0) continue; - x += terr.mesh.vxs[i][0]; - y += terr.mesh.vxs[i][1]; - n++; - } - return [x/n, y/n]; -} - -function drawLabels(svg, render) { - var params = render.params; - var h = render.h; - var terr = render.terr; - var cities = render.cities; - var nterrs = render.params.nterrs; - var avoids = [render.rivers, render.coasts, render.borders]; - var lang = makeRandomLanguage(); - var citylabels = []; - function penalty(label) { - var pen = 0; - if (label.x0 < -0.45 * h.mesh.extent.width) pen += 100; - if (label.x1 > 0.45 * h.mesh.extent.width) pen += 100; - if (label.y0 < -0.45 * h.mesh.extent.height) pen += 100; - if (label.y1 > 0.45 * h.mesh.extent.height) pen += 100; - for (var i = 0; i < citylabels.length; i++) { - var olabel = citylabels[i]; - if (label.x0 < olabel.x1 && label.x1 > olabel.x0 && - label.y0 < olabel.y1 && label.y1 > olabel.y0) { - pen += 100; - } - } - - for (var i = 0; i < cities.length; i++) { - var c = h.mesh.vxs[cities[i]]; - if (label.x0 < c[0] && label.x1 > c[0] && label.y0 < c[1] && label.y1 > c[1]) { - pen += 100; - } - } - for (var i = 0; i < avoids.length; i++) { - var avoid = avoids[i]; - for (var j = 0; j < avoid.length; j++) { - var avpath = avoid[j]; - for (var k = 0; k < avpath.length; k++) { - var pt = avpath[k]; - if (pt[0] > label.x0 && pt[0] < label.x1 && pt[1] > label.y0 && pt[1] < label.y1) { - pen++; - } - } - } - } - return pen; - } - for (var i = 0; i < cities.length; i++) { - var x = h.mesh.vxs[cities[i]][0]; - var y = h.mesh.vxs[cities[i]][1]; - var text = makeName(lang, 'city'); - var size = i < nterrs ? params.fontsizes.city : params.fontsizes.town; - var sx = 0.65 * size/1000 * text.length; - var sy = size/1000; - var posslabels = [ - { - x: x + 0.8 * sy, - y: y + 0.3 * sy, - align: 'start', - x0: x + 0.7 * sy, - y0: y - 0.6 * sy, - x1: x + 0.7 * sy + sx, - y1: y + 0.6 * sy - }, - { - x: x - 0.8 * sy, - y: y + 0.3 * sy, - align: 'end', - x0: x - 0.9 * sy - sx, - y0: y - 0.7 * sy, - x1: x - 0.9 * sy, - y1: y + 0.7 * sy - }, - { - x: x, - y: y - 0.8 * sy, - align: 'middle', - x0: x - sx/2, - y0: y - 1.9*sy, - x1: x + sx/2, - y1: y - 0.7 * sy - }, - { - x: x, - y: y + 1.2 * sy, - align: 'middle', - x0: x - sx/2, - y0: y + 0.1*sy, - x1: x + sx/2, - y1: y + 1.3*sy - } - ]; - var label = posslabels[d3.scan(posslabels, function (a, b) {return penalty(a) - penalty(b)})]; - label.text = text; - label.size = size; - citylabels.push(label); - } - var texts = svg.selectAll('text.city').data(citylabels); - texts.enter() - .append('text') - .classed('city', true); - texts.exit() - .remove(); - svg.selectAll('text.city') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return d.size}) - .style('text-anchor', function (d) {return d.align}) - .text(function (d) {return d.text}) - .raise(); - - var reglabels = []; - for (var i = 0; i < nterrs; i++) { - var city = cities[i]; - var text = makeName(lang, 'region'); - var sy = params.fontsizes.region / 1000; - var sx = 0.6 * text.length * sy; - var lc = terrCenter(h, terr, city, true); - var oc = terrCenter(h, terr, city, false); - var best = 0; - var bestscore = -999999; - for (var j = 0; j < h.length; j++) { - var score = 0; - var v = h.mesh.vxs[j]; - score -= 3000 * Math.sqrt((v[0] - lc[0]) * (v[0] - lc[0]) + (v[1] - lc[1]) * (v[1] - lc[1])); - score -= 1000 * Math.sqrt((v[0] - oc[0]) * (v[0] - oc[0]) + (v[1] - oc[1]) * (v[1] - oc[1])); - if (terr[j] != city) score -= 3000; - for (var k = 0; k < cities.length; k++) { - var u = h.mesh.vxs[cities[k]]; - if (Math.abs(v[0] - u[0]) < sx && - Math.abs(v[1] - sy/2 - u[1]) < sy) { - score -= k < nterrs ? 4000 : 500; - } - if (v[0] - sx/2 < citylabels[k].x1 && - v[0] + sx/2 > citylabels[k].x0 && - v[1] - sy < citylabels[k].y1 && - v[1] > citylabels[k].y0) { - score -= 5000; - } - } - for (var k = 0; k < reglabels.length; k++) { - var label = reglabels[k]; - if (v[0] - sx/2 < label.x + label.width/2 && - v[0] + sx/2 > label.x - label.width/2 && - v[1] - sy < label.y && - v[1] > label.y - label.size) { - score -= 20000; - } - } - if (h[j] <= 0) score -= 500; - if (v[0] + sx/2 > 0.5 * h.mesh.extent.width) score -= 50000; - if (v[0] - sx/2 < -0.5 * h.mesh.extent.width) score -= 50000; - if (v[1] > 0.5 * h.mesh.extent.height) score -= 50000; - if (v[1] - sy < -0.5 * h.mesh.extent.height) score -= 50000; - if (score > bestscore) { - bestscore = score; - best = j; - } - } - reglabels.push({ - text: text, - x: h.mesh.vxs[best][0], - y: h.mesh.vxs[best][1], - size:sy, - width:sx - }); - } - texts = svg.selectAll('text.region').data(reglabels); - texts.enter() - .append('text') - .classed('region', true); - texts.exit() - .remove(); - svg.selectAll('text.region') - .attr('x', function (d) {return 1000*d.x}) - .attr('y', function (d) {return 1000*d.y}) - .style('font-size', function (d) {return 1000*d.size}) - .style('text-anchor', 'middle') - .text(function (d) {return d.text}) - .raise(); - -} - -function drawMap(svg, render) { - render.rivers = getRivers(render.h, 0.01); - render.coasts = contour(render.h, 0); - render.terr = getTerritories(render); - render.borders = getBorders(render); - drawPaths(svg, 'river', render.rivers); - drawPaths(svg, 'coast', render.coasts); - drawPaths(svg, 'border', render.borders); - visualizeSlopes(svg, render); - visualizeCities(svg, render); - drawLabels(svg, render); -} - -function doMap(svg, params) { - var render = { - params: params - }; - var width = svg.attr('width'); - svg.attr('height', width * params.extent.height / params.extent.width); - svg.attr('viewBox', -1000 * params.extent.width/2 + ' ' + - -1000 * params.extent.height/2 + ' ' + - 1000 * params.extent.width + ' ' + - 1000 * params.extent.height); - svg.selectAll().remove(); - render.h = params.generator(params); - placeCities(render); - drawMap(svg, render); -} - -var defaultParams = { - extent: defaultExtent, - generator: generateCoast, - npts: 16384, - ncities: 15, - nterrs: 5, - fontsizes: { - region: 40, - city: 25, - town: 20 - } -} - diff --git a/ilinx_home/scripts/typewriter.js b/ilinx_home/scripts/typewriter.js deleted file mode 100644 index 55643da..0000000 --- a/ilinx_home/scripts/typewriter.js +++ /dev/null @@ -1,70 +0,0 @@ -function setupTypewriter(t) { - var HTML = t.innerHTML; - - t.innerHTML = ""; - - var cursorPosition = 0, - tag = "", - writingTag = false, - tagOpen = false, - typeSpeed = 100, - tempTypeSpeed = 0; - - var type = function() { - - if (writingTag === true) { - tag += HTML[cursorPosition]; - } - - if (HTML[cursorPosition] === "<") { - tempTypeSpeed = 0; - if (tagOpen) { - tagOpen = false; - writingTag = true; - } else { - tag = ""; - tagOpen = true; - writingTag = true; - tag += HTML[cursorPosition]; - } - } - if (!writingTag && tagOpen) { - tag.innerHTML += HTML[cursorPosition]; - } - if (!writingTag && !tagOpen) { - if (HTML[cursorPosition] === " ") { - tempTypeSpeed = 0; - } - else { - tempTypeSpeed = (Math.random() * typeSpeed) + 50; - } - t.innerHTML += HTML[cursorPosition]; - } - if (writingTag === true && HTML[cursorPosition] === ">") { - tempTypeSpeed = (Math.random() * typeSpeed) + 50; - writingTag = false; - if (tagOpen) { - var newSpan = document.createElement("span"); - t.appendChild(newSpan); - newSpan.innerHTML = tag; - tag = newSpan.firstChild; - } - } - - cursorPosition += 1; - if (cursorPosition < HTML.length - 1) { - setTimeout(type, tempTypeSpeed); - } - - }; - - return { - type: type - }; -} - -var typer = document.getElementById('typewriter'); - -typewriter = setupTypewriter(typewriter); - -typewriter.type(); \ No newline at end of file diff --git a/ilinx_home/style.css b/ilinx_home/style.css deleted file mode 100644 index 073a40d..0000000 --- a/ilinx_home/style.css +++ /dev/null @@ -1,226 +0,0 @@ -body{ font-family: "Lucida Console", Monaco, monospace; -overflow: hidden;} - -p { font-size: 20px; } - -a{ text-decoration: none; } - -#space-time{ - z-index: 101; - position: relative; - width: 600px; - height: 500px; - top: 1158px; - left: 853px; -} - -#ilinx{ -position: absolute; -width: 106px; -left: 250px; -top: 420px; -} - -.ilinx { - font-size: 35px; - margin-top: -2px; - float:left; - cursor: grab; -} - -#spiral { - width: 300px; - position: absolute; - margin-top: -150px; - margin-left: -150px; - top: 250px; - left: 300px; - } - -.rotating { - -webkit-animation: rotating 3s linear infinite; - -moz-animation: rotating 3s linear infinite; - -ms-animation: rotating 3s linear infinite; - -o-animation: rotating 3s linear infinite; - animation: rotating 3s linear infinite; -} - -#islands{ - -} - -a.island:link{color:blue;} -a.island:hover{color: red; - -webkit-animation: breathe 3s linear infinite; - -moz-animation: breathe 3s linear infinite; - -ms-animation: breathe 3s linear infinite; - -o-animation: breathe 3s linear infinite; - animation: breathe 3s linear infinite; -} -a.island:visited{color: black;} - -#lemuria { - position: absolute; - left: 68px; - top:269px; - -} - -#mu { - position: absolute; - left: 189px; - top:76px; - -} - -#hyperborea { - position: absolute; - left: 444px; - top: 151px; - -} - -#thule{ - position: absolute; - left: 421px; - top:322px; -} - -#sea { - position: relative; - width: 2500px; - height: 2500px; -/* border-style: dotted; - border-width: 2px;*/ - top: -990px; - left: -145px; -/* background-image: url('./img/grid3.png'); - background-repeat: repeat;*/ -} - -#iper{ - position: relative; - left: -27px; - top: -47px; -} - -#m { - position: relative; - left: -632px; - top: -48px; -} - -#thl{ - position: relative; - left: -30px; - top: -38px; -} - -#lmr{ - position: relative; - left: -532px; - top: -28px; -} - -/* SVG */ -text { - font-family: "Lucida Console", Monaco, monospace; - color: black; - stroke: white; - stroke-width: 6; - stroke-linejoin: round; - paint-order: stroke; -} - -text.region { - stroke-width:6; - font-variant: small-caps; -} - -svg { - float: right; -} - -path, line { - fill: none; - stroke: black; - stroke-linecap: round; -} - -.field { - stroke: none; - fill-opacity: 1.0; -} - -.slope { - stroke-width: 1; -} - -.river { - stroke-width: 2; -} - -.coast { - stroke-width: 4; -} - -.border { - stroke-width: 5; - stroke-dasharray: 4,4; - stroke-linecap: butt; -} - - - - - - - - - - - -/* Rotate loop */ - -@-webkit-keyframes rotating /* Safari and Chrome */ { - from { - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@keyframes rotating { - from { - -ms-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -ms-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - - -/* Breathing text */ - -@-webkit-keyframes breathe /* Safari and Chrome */ { - 0% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} - 50% {font-size:21px; color: red; letter-spacing: 1px; margin-left: -6px;} - 100% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} -} -@keyframes breathe { - 0% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} - 50% {font-size:21px; color: red; letter-spacing: 1px; margin-left: -6px;} - 100% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} -} \ No newline at end of file diff --git a/ilinx_home/variations/index.html b/ilinx_home/variations/index.html deleted file mode 100644 index 9d17c7b..0000000 --- a/ilinx_home/variations/index.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - @@@ilinχ - - - - - - -
- -
- - -
-

i

-

l

-

i

-

n

-

χ

-
- - -
- -LimilimupIamamuplunUtusulimNuulimlimUtus-UpnunuLunuuakUpnunu-UtusIulsiUi-AtlilAlim-ApulUnapatsiUpkilalUllillilas-NiiulAlim-UpapUi-ApusaPalat-UnpiAka-pak-Auas-UpapLinunamlunUnpi-Upnunuas-UpnunuLunulIllinlunsapiAlim-PalatNiiul-UpapUpap-PalatAtlil-UpapAapalius-Uias-AtlilLallunillasas-AuPitunaplilmaUpnunu-NiiulAka-UnpiLillalanlukApalsilinlalUnpi-AlillilApul-KualpilAlim-pak-AuAknuupLatlulapatas-Unpias-KualpilUtnusi-ApamAtlumNupillunPalat-Upapas-NilpiPaluluniUi-MulaAmlimlumupTallastutsulNantalLatpankiTasnupankukuLikipanlun - - - - - - - - - - - - - - - äh-AgätschugUtschäwahugäh-UtschugägUgïzhagÄsägäkAhäsawÏhizhutschäkInututschahÄkigäsïgÏkugutschäh-ÏnäsïdÏzhäsinänÄsïzhïdïkäh-UtschawigIzhututschäpUhïnägäsApiguhAhïwäsahUtazizhutschUtschizhïhahIgapïgÄnapïnizhÏdïgutschubUtschïzäkïdAgïzïhAwäsänÄsänämÏwäsuzUhïsäsUtapïwUtschïsïnUsagumAhagädäjUtuzutschunImäzhahutschAgïzänIzhïsutschigItschuhïzäsÄsutizhïhÄputapädÏmïgäsApawusUtschusunAgïmimÄmäsitschanInutschägUpäkuzÏzupazÏtutukubUkugazÏzhukïn - - - - - - - - - - - - - - - -ÏzekoÄozhkizPepekizKiznïzïzKizpaKizmïkësaz AtïzkizHokizPakonïzKukësKihekï Ikiziaz ËzkëezKïäkizEznïz ë KoäAtïz ë NïzkuÄkizkësËzozh EznïzKizï AtïzkizËzkëez NïzkuOku AmexNïzku ë KoäHeku ë EznïzAtïzkiz KoäMokizHizhkizpaaz HekuKizï ë ËzozhKuzmïkës OkuUxme IkiziKumo IkiziPakumexaz OkuËzkëez KoäNïzukosKosmïAtïz KihekïËzozh ë MeoxEizox - - - - - - - - - UlkiltarkalmKalmurmtarMalilnmalTarurmulUlulilnUrkilnUlpilnIlilnulmnarmnulm TarulTarnilkUrmulpulmtarTarttarilkMulkkalmsalTarmalUlpmulsalalNilkilnTururmMaltarnarmUlkirsalIlkmulnUlpilmalMulnlulmnulm MulnpurUrkirilmulm -
- - - - \ No newline at end of file diff --git a/ilinx_home/variations/style.css b/ilinx_home/variations/style.css deleted file mode 100644 index 9928f52..0000000 --- a/ilinx_home/variations/style.css +++ /dev/null @@ -1,228 +0,0 @@ -body{ font-family: "Lucida Console", Monaco, monospace; -overflow: hidden; -background-color: black; -color: white;} - -p { font-size: 20px; } - -a{ text-decoration: none; } - -#space-time{ - z-index: 101; - position: relative; - width: 600px; - height: 500px; - top: 1158px; - left: 853px; -} - -#ilinx{ -position: absolute; -width: 106px; -left: 250px; -top: 420px; -} - -.ilinx { - font-size: 35px; - margin-top: -2px; - float:left; - cursor: grab; -} - -#spiral { - width: 300px; - position: absolute; - margin-top: -150px; - margin-left: -150px; - top: 250px; - left: 300px; - } - -.rotating { - -webkit-animation: rotating 3s linear infinite; - -moz-animation: rotating 3s linear infinite; - -ms-animation: rotating 3s linear infinite; - -o-animation: rotating 3s linear infinite; - animation: rotating 3s linear infinite; -} - -#islands{ - -} - -a.island:link{color:white;} -a.island:hover{color: red; - -webkit-animation: breathe 3s linear infinite; - -moz-animation: breathe 3s linear infinite; - -ms-animation: breathe 3s linear infinite; - -o-animation: breathe 3s linear infinite; - animation: breathe 3s linear infinite; -} -a.island:visited{color: white;} - -#lemuria { - position: absolute; - left: 68px; - top:269px; - -} - -#mu { - position: absolute; - left: 189px; - top:76px; - -} - -#hyperborea { - position: absolute; - left: 444px; - top: 151px; - -} - -#thule{ - position: absolute; - left: 421px; - top:322px; -} - -#sea { - position: relative; - width: 2500px; - height: 2500px; -/* border-style: dotted; - border-width: 2px;*/ - top: -990px; - left: -145px; -/* background-image: url('./img/grid3.png'); - background-repeat: repeat;*/ -} - -#iper{ - position: relative; - left: -27px; - top: -47px; -} - -#m { - position: relative; - left: -632px; - top: -48px; -} - -#thl{ - position: relative; - left: -30px; - top: -38px; -} - -#lmr{ - position: relative; - left: -532px; - top: -28px; -} - -/* SVG */ -text { - font-family: "Lucida Console", Monaco, monospace; - color: black; - stroke: white; - stroke-width: 6; - stroke-linejoin: round; - paint-order: stroke; -} - -text.region { - stroke-width:6; - font-variant: small-caps; -} - -svg { - float: right; -} - -path, line { - fill: none; - stroke: white; - stroke-linecap: round; -} - -.field { - stroke: none; - fill-opacity: 1.0; -} - -.slope { - stroke-width: 1; -} - -.river { - stroke-width: 2; -} - -.coast { - stroke-width: 4; -} - -.border { - stroke-width: 5; - stroke-dasharray: 4,4; - stroke-linecap: butt; -} - - - - - - - - - - - -/* Rotate loop */ - -@-webkit-keyframes rotating /* Safari and Chrome */ { - from { - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@keyframes rotating { - from { - -ms-transform: rotate(0deg); - -moz-transform: rotate(0deg); - -webkit-transform: rotate(0deg); - -o-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -ms-transform: rotate(360deg); - -moz-transform: rotate(360deg); - -webkit-transform: rotate(360deg); - -o-transform: rotate(360deg); - transform: rotate(360deg); - } -} - - -/* Breathing text */ - -@-webkit-keyframes breathe /* Safari and Chrome */ { - 0% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} - 50% {font-size:21px; color: red; letter-spacing: 1px; margin-left: -6px;} - 100% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} -} -@keyframes breathe { - 0% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} - 50% {font-size:21px; color: red; letter-spacing: 1px; margin-left: -6px;} - 100% {font-size:20px; color: white; letter-spacing: 0px; margin-left: 0px;} -} \ No newline at end of file diff --git a/main/img/lmur.png b/main/img/lmur.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cd5052715aefa3bb6dfb98aa92d44c3b682528 GIT binary patch literal 814 zcmV+}1JV46P))Fmo$cCHx6dAjkU;1!2c&U^du=I!k4AVLUy&0yfm#y9=% zXzp{5Jv=-llSz!R$z-zGZ2C#$r44n3(A9 z?tYIxJ3EtQd2n#B5L!``9L@85Sy|b|#f3hdPN)5TzsKV#DJiL|t9u81etuqAS*fY1 zdDYdft}cCARn^ha(Sw77)zwvm(D?YcuB&OfhTv}QR09#vI z1<|Ui0>ISN)XT}!)6?eW=3J$LK!DE6vJ3#7ot*{IJ3Bi7FgG_xJ9~I|C`l3(5ke-D zadB~x5E6|>7Zw(lmX>&)udc5C06jD`Lg(%eSx%)=gpf!i0szCq z!y6kL7K?@F`GV-{>uUh$>FG%%5)Oxh)+-1CjqdI3_4f7x0LO8PqO7m4TPzlaVe-*` zoFP`Lm1Wue{e9X2I=Q>MD~jUP)z!(#$@%#?{Y>n3JH{9QG))VK!-62VT&};IAq@=; zHk&OTkBg$1?`$eBFOS7y+uPe_vl#$bmNgg*9*-v)jlQ?}LZJ`<_5kkoF^0FjJ6%`dmqmk!%0PuRf7-N0x(HBA!)p`)XNMvsq=FE1~fnwkIr>0TBzO?!HJG8hc` s+Kn;B7$bzT*(^dxHxqr|L;eT)7jks3cTY;uE&u=k07*qoM6N<$g3h&sK>z>% literal 0 HcmV?d00001 diff --git a/main/scripts/drag.js b/main/scripts/drag.js index 598af6f..cf6c722 100644 --- a/main/scripts/drag.js +++ b/main/scripts/drag.js @@ -1,7 +1,7 @@ $(document).ready(function(){ $( function() { - $( ".draggable" ).draggable(); + $( ".draggable" ).draggable({ containment: [-1300,-750,1800,1250] }); }); }); \ No newline at end of file diff --git a/main/variations/index.html b/main/variations/index.html index 3c43adc..b5f79b6 100644 --- a/main/variations/index.html +++ b/main/variations/index.html @@ -3,24 +3,26 @@ @@@ilinχ + - - + +
-
+
+ -
+
-

i

-

l

-

i

-

n

-

χ

+

i

+

l

+

i

+

n

+

χ

lemuria

@@ -44,33 +46,82 @@ Out of Space – out of Time. "> thule

- - -
+ +
+
+
+
+
+
Lab_1 - LimilimupIamamuplunUtusulimNuulimlimUtus-UpnunuLunuuakUpnunu-UtusIulsiUi-AtlilAlim-ApulUnapatsiUpkilalUllillilas-NiiulAlim-UpapUi-ApusaPalat-UnpiAka-pak-Auas-UpapLinunamlunUnpi-Upnunuas-UpnunuLunulIllinlunsapiAlim-PalatNiiul-UpapUpap-PalatAtlil-UpapAapalius-Uias-AtlilLallunillasas-AuPitunaplilmaUpnunu-NiiulAka-UnpiLillalanlukApalsilinlalUnpi-AlillilApul-KualpilAlim-pak-AuAknuupLatlulapatas-Unpias-KualpilUtnusi-ApamAtlumNupillunPalat-Upapas-NilpiPaluluniUi-MulaAmlimlumupTallastutsulNantalLatpankiTasnupankukuLikipanlun + +
+
Katak Temple - äh-AgätschugUtschäwahugäh-UtschugägUgïzhagÄsägäkAhäsawÏhizhutschäkInututschahÄkigäsïgÏkugutschäh-ÏnäsïdÏzhäsinänÄsïzhïdïkäh-UtschawigIzhututschäpUhïnägäsApiguhAhïwäsahUtazizhutschUtschizhïhahIgapïgÄnapïnizhÏdïgutschubUtschïzäkïdAgïzïhAwäsänÄsänämÏwäsuzUhïsäsUtapïwUtschïsïnUsagumAhagädäjUtuzutschunImäzhahutschAgïzänIzhïsutschigItschuhïzäsÄsutizhïhÄputapädÏmïgäsApawusUtschusunAgïmimÄmäsitschanInutschägUpäkuzÏzupazÏtutukubUkugazÏzhukïn + + + + +
Castalia - ÏzekoÄozhkizPepekizKiznïzïzKizpaKizmïkësaz AtïzkizHokizPakonïzKukësKihekï Ikiziaz ËzkëezKïäkizEznïz ë KoäAtïz ë NïzkuÄkizkësËzozh EznïzKizï AtïzkizËzkëez NïzkuOku AmexNïzku ë KoäHeku ë EznïzAtïzkiz KoäMokizHizhkizpaaz HekuKizï ë ËzozhKuzmïkës OkuUxme IkiziKumo IkiziPakumexaz OkuËzkëez KoäNïzukosKosmïAtïz KihekïËzozh ë MeoxEizox + + + + +
+
+
+
+
+
Miskatonic
Virtual
University
(MVU)
- UlkiltarkalmKalmurmtarMalilnmalTarurmulUlulilnUrkilnUlpilnIlilnulmnarmnulm TarulTarnilkUrmulpulmtarTarttarilkMulkkalmsalTarmalUlpmulsalalNilkilnTururmMaltarnarmUlkirsalIlkmulnUlpilmalMulnlulmnulm MulnpurUrkirilmulm + + + + + +
- +
+ \ No newline at end of file diff --git a/main/variations/laby.png b/main/variations/laby.png new file mode 100644 index 0000000000000000000000000000000000000000..c63468e357247eaa8243a7e75c9a7d6eb4158a48 GIT binary patch literal 1638 zcmV-s2ATPZP)$5<7uJpjJRDAW|1}!HVoqD;B6Lgv5>oNGxH+9*G4k5&r^h zR&3ZHK@~L;LX}cAU=l~MafvLO_}O{y-h0krkvrkO@jR!6sukjW(#W2f`{SGM{JQ56 z%`n3ZGt4l<3^U9y!wfUbFvAT0KQOa1DW!`a)q3cAI3ABzoO3Ul*%!=g5rC=c95XLD z=T=npqM3aTzzPwaSJfi`H8T$Yv_#3wM$EitW)F#IL`0X(EHd*QRoxMhEoQFFi~uAe zx^HH`tLyr1FF`Y#3n9Ggy*~$F9)SOt)u#}`t)^*S24F-)69i(6KdS5cv!9fE03h%E zSuJDge~X$T`O`M)Tf-nW3tjt@UI95dc6{RYxMS2jFZ$<4{Bn zdkLy4Ittz*BC6|pbc$6{&olWDfpL$B&K4ZztE!qi;e(r-o0XZ(b>{DU43Vpy`vdR& zKTjyQzP`TL^@sK=MC4TfUn8O=RlNd$vyYvBvZgIF^SYT;X0}R1yF~O{_NiSWibQmW zi0%NmEh4+#``-W%0IMC&0YL0a&gVqrfn}(wrIdbbW==%jvyTulMjMaE-^w3e(lvp_wf( z^T^BsGpnjHfbRhK^wZ5kxST~;Ev*LNpqHSk&NK6TM?nSKYNDTEvV|C*nFWA4F9-s<3`nExj*)rn3)}bQW8^DJLOpPsm@punJmG~TxN;S zbkpJW>(?)oX$SzR>eM_q55N_J=gh1*g{8dD#C0UYH)mK#Yd(OEH zGy5tLwQcJ$fLmr30sJ(Ja-u z*lSPAs>-VR5)oa>(R?*mkS~@!Q2xK3R?NRyDp)9KB4R0}-IUVn*|}dXgG5BEotsr? zuR~QmP}O}AdFDYj&w0K#NJQkI@9f6RZE?Q<;B_LRs;Uk;YClyWSBdso0O4KlxeXv_ot@jQqJ%0RHWRbzN_!l)jNtx<*7_QPovu ze#JcrQJ16f-5j;Qk1^h6=1WA>a0AS`}M;+X~dw008v9TCJkilSZY-YsA*LXRv=Jv!DZ}!sDYMaOX5L?$^TOqJ@B1-oMcx1A-gEBrf6o7X&NBl$2S#@=pqbJo~^_65itFAdmahueiZ4X<^ zoUKdGi`Bi!_@lYGxvqJNTi=41S@n1IxOzx^U0qn_a6#t%iR9pb+CL9*cc^Dt5crI` zO1(yH7>KTjn98(&OwT_6+Y~ndd|Z%HiZB!rW3Bkj=fQfIj{`Gph`ScpT_SD**ae)< z^xd!CI-m9Pe42t?YIlpARqBb7sobOXr*yL-ciio1S6rvMGm*EqU_Yb|H&|!e3pj7( zY?ihouuuIW5npOxcZK?fdaOj)jQU``2vBcSm!sx3#-T>N|I_+L;+>3-ArFp~TNY;4$Eqh?q#6tAQ_pCBSt65iy

4ddCW1=tL11BP;b0X{GBQEORX zM5z9hnuEXs;3zOzw5Nb^^>A9p&CNoEX7 z3fKwtZS~GZ0&mWcCe@zQf1*u6Q>kK6{Uuv?sPDAEA5-rt6PXqBm3nt7&s)U-b-DUn zrf+?=dQu-%-_7LRGCW-*a7#h$R%=n*v+8BZ&x-tDYG3ZY(yjKW*Q*b!FQ}tgQj|pT zGhlVeN|*({27XPueggOb*pXf2DHncUz#mCTe+2jz*c}lT6)vSWK6Pn2w(=NJZ&EL5 zR_&yz9Bm=$FPB|eYqi?#(PWU@fE!ZAAB%`X^SlPE1QutG(powK`+>a?F9*~6vzMbUQ0_$p+t))sZl;6N)c&jj3S8`5;p8KxMHI*A#p=u>PD1qbRk9)7eqED z7>x@76Il?WQA^dt7_c@(QW9*eM6fNI+ArF^cYiKCPlw^&_P!5j4L!-^-ZwM%%zw`J z%##*qffnfhP3~qb1pK$CbMptF4=fhIEMPNp2`&v~<^tTjP;oKRn+b5{mh|FMY%fWQ znfd4#Hw<8)0;9tNlU?=baFqXi$8rWx&^XY3F?+1pA&$2Wi(*k_O z7C&hV=7DWK!-Br5;Q(L+{BBwR=mDOn6u^w6v(C9`NxRHxvXX}K`TW0=YHMpH zXJ!o?) zo{OKc=lY<3k)*t&3zFWFG*Hl*H)q27MS12JQD1|*I~fJ5bg$>nnK0E5ogO~qfv0Bi#;B>>D>`!+2gi>910o4gsw2J?0Y1w!854*)e*NEFokLks}twba2mw*Fy@0dZZPnC;T+p|eh6pZZ%axao{l4Ry^uLs~UNuNnN zC+V=H%@ze@d`mm5&62K8C&a&fHh&e+XhAz7nXX!q{992cLM!P%F(&T@W7`r!48YbH zd+PwkyiJS(oxm^N_vdU)mlj|h@U}_n#b9hCK^l2r51{t;c4tnu#tMqNJirZ>m#aO8 zQLz%NGp4P;-ND%57|D$QCxANxPpt!%+IK5~LEyuLs>T%qun{0&b&^g>YH-et1e&mNK zvS7Q@RJ`6))!-GSlU~lnPI0FK9vR>%;7TC%6J;Ge?L!BAWDNT)wcYO>CqudfY`1T# zfW2lSar0j)TgA>ffXnu?SyG*(#ghK8W2J&1y;9NuQgk|$851j z(#zJ$p(f|tP}=J{A845B`aB8kunioLbfri@6P{xXdugtyjFvPwINkBO1dcNm~-yWAQtw=uT20yVvD!?Mr)nGMqo+d z`gfMp*_A@-hm!0tilUk8GGL3{R!vJf>YSS@F$uKUi4d*XNP)TALPhDS{s*V7t&Ut)Ts&ENp*3@nV;?RJ_>sWQo}M0EE>_ym+S*!_4i^Amb#?XWMLe_F{5}9gXqtYMu`q|j@me4d_yqts zkH_wN&=6yp+?76||!;R1uf;NQu((P-3*b2m3PJCbqzet!qf-Pze0&B#TI z#d2F7=pq+IQHsrAvEw3X=OoQ3O#G&jbpBu#ONy1VIoP3EbM+ z>IDEHm0NbZ{e_W{kz4V2T;5GNZjW%@;o;%qM7sGCZ(mqg7|O~;K@cM6#gFnvU>N33 zlDGr_fYH&>uMt9MZEekkxBLD6v8)8{?d@%!H?cB5E-x?FC*%2iK5K%eODy_C?&CP_ z*JN|2Q&A8`qmh&kxoARA%x=bxO`2b zf`WqAZ8qDxS-BVrg?_*T9spovW#wfh@9600p~A&DP1Bz#@7-`X{2zxYih7i(g9ssn zii?ZoA^-@2AOPS;v)LS0@|KpCUc${I2;y2rMaB1ey`I2#z~yq?!<{ZEDG6oeU}a^c z4gfxu55~sE#+~zcZEbDW0bovcW`BSG%~UlccG!Zwy}h@x5;;6POeO|fY-wqEB^l4{ zc8{e~^C{Dn)oQ()l|Ygt%K+dnilV+v#haX*90LIGdcB6r2y{3c&j`GB8G+l|+XrT| z`O9!P{8p+{UsqRG&-46hUteEJ2NSV;W^`d;VNPGpl3qL=M$)H#RAWO}UA=?bvoRi`R}<>los;@_WKF4ym>*

i?S@-PrF_#7zm_|Ha0@Y`gTR4f>AqZ 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