File size: 240,679 Bytes
60aea95
1
{"version":3,"file":"main.bundle.js","mappings":";;;;AAAA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;;;ACNqC;AACC;;AAEtC,6BAAe,0BAAS;AACxB,6CAA6C,QAAQ;;AAErD,sFAAsF,OAAO;AAC7F,gHAAgH,OAAO;AACvH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;AChBA;AACA;AACA;AACA,cAAc;AACd;AACA;AACe;AACf;AACA;;;ACRA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;;;ACRqC;AACL;AACY;;AAE5C;AACA;AACA,WAAW,KAAK;AAChB;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA,gBAAgB,WAAW;;AAE3B,0FAA0F,OAAO;AACjG,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACxBA,6BAAe,iBAAS;AACxB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;;ACV2C;;AAE3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,qBAAS;AACxB;AACA,wDAAwD,YAAY;AACpE;;;ACjB2C;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA,6DAA6D,YAAY;AACzE;;;ACjBqC;AACD;;AAEpC,6BAAe,0BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;;ACfA,6BAAe,gBAAS;AACxB;AACA;;;ACFiC;AACI;;AAErC,6BAAe,iBAAW;AAC1B,aAAa,SAAS,iCAAiC,MAAM;AAC7D;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,sDAAsD;AACvF,wCAAwC,gDAAgD;AACxF,sCAAsC,8CAA8C;AACpF,yCAAyC;AACzC;;;ACrBA,6BAAe,sBAAS;AACxB;AACA;AACA;AACA;;;ACJqC;AACA;AACC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,SAAS,iBAAiB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,2CAA2C,YAAQ;;AAEnD,uGAAuG,OAAO;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,wBAAwB;AACxB;;;AC/HiC;AACI;;AAErC,6BAAe,gBAAW;AAC1B,aAAa,SAAS,gCAAgC,MAAM;AAC5D;;;ACLA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;;ACdqC;;AAErC,6BAAe,eAAS;AACxB;;AAEA,+JAA+J,OAAO;AACtK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,SAAS;AACtB;;;AClBA,6BAAe,iBAAW;;AAE1B,6DAA6D,QAAQ;AACrE,6EAA6E,SAAS;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACZqC;;AAErC,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA;;AAEA,uFAAuF,OAAO;AAC9F,yGAAyG,OAAO;AAChH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;;AAEA;AACA;AACA;;;ACvBA,6BAAe,gBAAW;AAC1B;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,iBAAW;AAC1B;AACA;;;ACFA,6BAAe,gBAAW;;AAE1B,4DAA4D,OAAO;AACnE,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;;AAEA;AACA;;;ACVA,6BAAe,gBAAW;AAC1B;AACA,mCAAmC;AACnC;AACA;;;ACJA,6BAAe,2BAAW;AAC1B;AACA;;;ACFA,6BAAe,cAAS;;AAExB,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA;AACA;;AAEA;AACA;;;ACTO;;AAEP,iDAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRuC;;AAEzC,6BAAe,mBAAS;AACxB;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,uBAAuB,QAAQ;AAC9F;;;ACNwC;;AAExC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACxDA,6BAAe,oBAAS;AACxB;AACA;AACA,2BAA2B;AAC3B;;;ACJuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AC1EA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxBA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACNuC;AACD;;AAEtC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,iBAAS;AACxB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;;ACxBoC;;AAEpC,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH;;;ACPoC;AACE;;AAEtC;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB,mDAAmD,OAAO;AAC1D,uFAAuF,QAAQ;AAC/F;AACA;AACA,GAAG;AACH;;;ACbA;AACA;AACA;AACA;;AAEA,6BAAe,4BAAW;AAC1B;AACA;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;AACA;;;ACZA,6BAAe,yBAAS;AACxB;AACA;AACA;AACA;;;ACJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,6BAAe,YAAS;AACxB;;AAEA;AACA;AACA,8CAA8C,OAAO;AACrD,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;;;AClEuC;;AAEvC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,4BAAS;AACxB;AACA;AACA;AACA;;;ACjCA,6BAAe,qBAAY;AAC3B,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;;;ACN2C;AACM;AACI;AACM;AAChB;AACJ;AACE;AACF;AACA;AACE;AACA;AACF;AACA;AACE;AACF;AACA;AACE;AACF;AACA;AACE;AACM;AACF;AACN;AACA;AACE;AACA;AACE;AACA;AACA;AACF;AACA;AACN;AACY;AACA;;AAExC;;AAEA;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB;AAC1B,aAAa,SAAmB;AAChC,eAAe,WAAqB;AACpC,kBAAkB,cAAwB;AAC1C,UAAU,gBAAgB;AAC1B,QAAQ,IAAc;AACtB,SAAS,KAAe;AACxB,QAAQ,IAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,KAAe;AACxB;AACA,SAAS,KAAe;AACxB,QAAQ,IAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,KAAe;AACxB,QAAQ,IAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,eAAe;AACxB,QAAQ,IAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,KAAe;AACxB,YAAY,QAAkB;AAC9B,WAAW,OAAiB;AAC5B,QAAQ,cAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,UAAU,MAAgB;AAC1B,UAAU,MAAgB;AAC1B,UAAU,gBAAgB;AAC1B,SAAS,KAAe;AACxB,SAAS,eAAe;AACxB,MAAM,EAAY;AAClB,YAAY,kBAAkB;AAC9B,qBAAqB,QAAkB;AACvC;;AAEA,oDAAe,SAAS,EAAC;;;ACzFzB,YAAY;;AAEZ,SAAS,iBAAQ;AACjB,8CAA8C,KAAK,OAAO;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,uBAAc;AACvB;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA,qBAAqB,iBAAQ;AAC7B;AACA;AACA;AACA,YAAY,uBAAc;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,mFAAmF,OAAO;AAC1F;AACA,gDAAgD,OAAO;AACvD,GAAG;AACH;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;;AAEA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEA,mDAAe,iBAAQ,EAAC;;;ACnFxB,IAAI,WAAK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI;;AAE/H;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,SAAS;AACT,IAAI,WAAK,EAAE;AACX;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,IAAI;AACJ,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,UAAU;AACrB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI,WAAK;AACT;AACA;;;AC7GiC;;AAEjC,6BAAe,qBAAS;AACxB,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACVqC;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP,6BAAe,kBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,2DAA2D;AAC3D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD;AACzD;AACA,2DAA2D;AAC3D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,yCAAyC;AACzC;;AAEA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;;;ACxJiE;;AAEjE,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,mDAAmD,eAAe;AAClE,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;;ACvBwC;;AAExC,6BAAe,6BAAS;AACxB;AACA,IAAI,aAAS;AACb,GAAG;AACH;;;ACNA,6BAAe,gBAAS;AACxB;AACA;AACA;AACA;;;ACJA;;AAEO,IAAI,kBAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACzBmD;;AAEnD;;AAEA;AACO;AACP;AACA,wBAAwB,kBAAQ,GAAG,SAAS;AAC5C;;AAEO;AACP,4BAA4B,kBAAQ;AACpC;AACA;AACA,iEAAiE,kBAAQ;AACzE;AACA,SAAS,SAAS;AAClB;;;ACjBkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,MAAM,SAAS,GAAG,aAAa,MAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,gCAAgC;AACjE,cAAc,sDAAsD,MAAM,OAAO;AACjF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,MAAM,OAAO;AAChF,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,MAAM,SAAS,GAAG,aAAa,MAAM,SAAS;AACzE,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,QAAQ;AAC3D,mDAAmD,QAAQ;;;AC9D3B;;AAEvC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,4BAA4B,OAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;AChFA,6BAAe,oBAAS;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;ACT2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACnE,wCAAwC,IAAI,GAAG,IAAI,GAAG,IAAI;AAC1D,0CAA0C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO,SAAS,SAAG;AACnB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,UAAM,MAAM,SAAG,EAAE,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY;AACrD;;AAEA;AACA,aAAa,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,oDAAoD;AAC3G;;AAEA;AACA;AACA,YAAY,2BAA2B,EAAE,eAAe,IAAI,eAAe,IAAI,eAAe,EAAE,qBAAqB,EAAE,GAAG;AAC1H;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,cAAc,2BAA2B,EAAE,eAAe,IAAI,qBAAqB,KAAK,qBAAqB,GAAG,qBAAqB,EAAE,GAAG;AAC1I;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3YO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClBiC;;AAEjC,6BAAe,qBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;;;ACZA,kEAAe,YAAY,EAAC;;;ACAS;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA,0CAA0C,2BAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,2BAAQ;AACpC;;;AC5ByC;AACV;AACY;AACD;;AAE1C,0CAAe;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,SAAQ,mBAAmB,SAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDhB;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,gBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,4BAA4B;AAC5B;AACA;AACA,yCAAyC;AACzC,4BAA4B;AAC5B;AACA,MAAM,OAAO;AACb;AACA,cAAc,SAAS,MAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA,SAAS;AACT;;;AC/D+B;AACqD;;AAEpF,6BAAe,gCAAS;AACxB;AACA,kCAAkC,MAAiB;AACnD,qBAAqB,KAAK,GAAG,GAAc;AAC3C,aAAa,KAAK,eAAe,GAAc;AAC/C,QAAQ,MAAiB;AACzB;;;ACT+E;AACxC;AACD;AACK;;AAE3C,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB,iBAAiB,SAAS,uCAAuC,uBAAoB,GAAG,sBAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD;;;AC7EuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;;AC3CwC;;AAExC;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,IAAI;AACR;AACA;;AAEA,6BAAe,eAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,kBAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX;;;ACtBuC;;AAEvC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,cAAS;AACxB;;AAEA;AACA;AACA,QAAQ,YAAG;AACX;;;ACfkC;;AAElC;AACA;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA,6BAAe,gCAAS;AACxB;AACA;AACA;;;ACbqC;AACC;;AAEtC,6BAAe,2BAAS;AACxB,2CAA2C,OAAO;;AAElD,sFAAsF,OAAO;AAC7F,6FAA6F,OAAO;AACpG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACfsC;;AAEtC,6BAAe,0BAAS;AACxB;;AAEA,gKAAgK,OAAO;AACvK,yHAAyH,OAAO;AAChI;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ;AACjB;AACA;;AAEA,aAAa,UAAU;AACvB;;;AClB6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,IAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,uBAAS;AACxB;;AAEA;AACA,QAAQ,YAAG;AACX;AACA;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,6BAAW;AAC1B;AACA;;;ACVsC;AACA;AACM;;AAE5C,6BAAe,2BAAS;AACxB;AACA;;AAEA,6CAA6C,QAAQ;;AAErD,sFAAsF,OAAO;AAC7F,gHAAgH,OAAO;AACvH;AACA;AACA;AACA,QAAQ,QAAQ,qCAAqC,YAAG;AACxD;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACrByC;AACH;AACM;;AAE5C,6BAAe,8BAAS;AACxB;AACA;;AAEA,6CAA6C,WAAW;;AAExD,0FAA0F,OAAO;AACjG,+DAA+D,OAAO;AACtE;AACA,yFAAyF,YAAG,wCAAwC,OAAO;AAC3I;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACzBuC;;AAEvC,IAAI,mBAAS,GAAG,aAAS;;AAEzB,6BAAe,gCAAW;AAC1B,aAAa,mBAAS;AACtB;;;ACN+E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB,oDAAoD,UAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA,6EAA6E,UAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;AACA,qEAAqE,iBAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,0BAAS;AACxB,yCAAyC,uBAAoB,GAAG,sBAAW;AAC3E;AACA;AACA,+BAA+B,iBAAW;AAC1C;AACA,wBAAwB,mBAAa,UAAU,UAAU;AACzD;AACA;AACA,wBAAwB,mBAAa;AACrC;AACA;;;AC/EA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,+BAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACvBsC;;AAEtC,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEA,6BAAe,yBAAS;AACxB;AACA,QAAQ,iBAAY,CAAC,UAAU;AAC/B,QAAQ,iBAAY;AACpB;;;ACnBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACvB6C;AACD;;AAE5C,6BAAe,sBAAW;AAC1B;AACA;AACA,YAAY,KAAK;;AAEjB,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA,sBAAsB,YAAG;AACzB,QAAQ,QAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACvBkC;;AAElC,6BAAe,eAAW;AAC1B;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,oBAAoB;;AAEnC;AACA,qBAAqB,YAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;AACH;;;AC5BuC;AACC;AACU;AACR;AACM;AACR;AACc;AACV;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEe,SAAS,qBAAU;AAClC,SAAS,aAAS;AAClB;;AAEO;AACP;AACA;;AAEA,0BAA0B,aAAS;;AAEnC,uBAAuB,qBAAU;AACjC;AACA,UAAU,iBAAiB;AAC3B,aAAa,oBAAoB;AACjC;AACA;AACA,UAAU,iBAAiB;AAC3B,SAAS,gBAAgB;AACzB,aAAa,oBAAoB;AACjC,cAAc,UAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB,QAAQ,eAAe;AACvB,aAAa,oBAAoB;AACjC,SAAS,gBAAgB;AACzB,cAAc,qBAAqB;AACnC,QAAQ,eAAe;AACvB,aAAa,oBAAoB;AACjC,UAAU,iBAAiB;AAC3B,SAAS,KAAgB;AACzB,SAAS,KAAgB;AACzB,YAAY,QAAmB;AAC/B,QAAQ,IAAe;AACvB,eAAe,sBAAsB;AACrC,OAAO,GAAc;AACrB;AACA;;;ACxEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACVyD;AACR;AACV;AACV;;AAE7B;AACA;AACA;AACA;AACA,QAAQ,UAAc;AACtB;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;;AAEA,6BAAe,8BAAS;AACxB;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA,IAAI;AACJ,SAAS,KAAK,oCAAoC,GAAG;AACrD;;AAEA,4DAA4D,OAAO;AACnE,+DAA+D,OAAO;AACtE;AACA,QAAQ,QAAQ;AAChB;AACA;AACA;;AAEA,aAAa,UAAU;AACvB;;;ACzCuC;AACU;AACE;;AAEnD,aAAS,uBAAuB,mBAAmB;AACnD,aAAS,wBAAwB,oBAAoB;;;ACLvB;AAC8B;AACd;AACM;;;ACHf;AACW;AACL;AACE;AACL;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB,OAAO,eAAe;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,iEAAiE;AAC3F,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,0BAA0B,iEAAiE;AAC3F,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,wBAAwB,yCAAyC;AACjE,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP,SAAS,WAAK;AACd;;AAEO;AACP,SAAS,WAAK;AACd;;AAEA,6BAAe,iBAAW;AAC1B,SAAS,WAAK;AACd;;AAEA,SAAS,WAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,gBAAgB;;AAEvD;;AAEA;AACA,qCAAqC,oCAAoC;AACzE,sCAAsC,yBAAyB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA+C,sDAAsD;AACrG,6DAA6D,sCAAsC;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,iHAAiH;AACpJ,mCAAmC,iGAAiG;AACpI,uCAAuC,wGAAwG;AAC/I,wCAAwC,wGAAwG;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB,QAAQ;AAC3E,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,UAAU,WAAK;AACf;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA,yCAAyC;AACzC,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,oCAAoC;AACpC,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,sCAAsC;AACtC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;ACvmBoB;;;ACLpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,2BAAW;AAC1B;AACA;;;ACXA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,oBAAS;AACxB;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;;;ACXA,6BAAe,mBAAS;AACxB;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACdA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;ACPA,6BAAe,aAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACRA,6BAAe,wBAAS;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACNA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA,6BAAe,qBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;;ACNA,6BAAe,uBAAW;AAC1B;AACA;;;ACFA,6BAAe,kBAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,iBAAW;AAC1B;AACA;AACA,yBAAyB;AACzB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA;;;ACRA,6BAAe,+BAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA,IAAI;AACJ;;;ACboC;AACF;AACY;AACF;AACV;AACF;AACE;AACA;AACU;AACI;AACV;AACF;AACM;;AAE3B;AACf;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,QAAQ,cAAS;AACjB,OAAO,GAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,IAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,KAAU;AACnB;AACA,qBAAqB,kBAAa;AAClC;;;AC1FA,6BAAe,uBAAS;AACxB;AACA;AACA;AACA;AACA;;;ACLA,6BAAe,cAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACXA,6BAAe,eAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;ACXoC;AACE;;AAE/B;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,KAAY;AACrB;AACA;;AAEA;AACA;;AAEA,+CAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACjED;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEA,6BAAe,mCAAS;AACxB;AACA;AACA;AACA;;;ACRmC;AACE;AACI;AACa;;AAEtD,6BAAe,uBAAW;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,yBAAQ;AAClF;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA,6EAA6E,yBAAQ;AACrF;;AAEA;AACA,2EAA2E,yBAAQ;AACnF;;AAEA;AACA;;;AC7FgD;AACgB;AAChB;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;ACdhB;;AAErD,6BAAe,oBAAS;AACxB;AACA,YAAY,SAAS;AACrB,YAAY,SAAS,eAAe,IAAI;AACxC;;;ACN8C;AACE;AACJ;AACI;AACI;AACE;AACN;AACE;AACJ;AACM;AACM;AACR;AACM;AACC;AACX;;;ACdvC,SAAS,mBAAS;AACzB;AACA;AACA;AACA;;AAEA,mBAAS;AACT,eAAe,mBAAS;AACxB;AACA,gCAAgC,mBAAS;AACzC,GAAG;AACH;AACA,0CAA0C,mBAAS;AACnD,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO,IAAI,kBAAQ,OAAO,mBAAS;;AAEnC,sBAAsB,mBAAS;;AAEhB;AACf,6DAA6D,kBAAQ;AACrE;AACA;;;AClDqC;AACW;AACD;AACF;AACL;AACH;AACF;AACgB;AACC;;AAEpD;AACA;AACA,SAAS,kBAAa;AACtB;AACA;;AAEA,SAAS,kBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,qBAAgB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,gBAAW;AAC1B,eAAe,kBAAa;AAC5B,eAAe,kBAAa;AAC5B;AACA;AACA,kBAAkB,qBAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,gDAAgD;AACvF,oDAAoD,8CAA8C;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,mBAAmB,4BAA4B;AAC/C;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iFAAiF,uBAAuB;AACxG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,qBAAqB;AAC/D,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","sources":["webpack://blogpost/./node_modules/d3-selection/src/selector.js","webpack://blogpost/./node_modules/d3-selection/src/selection/select.js","webpack://blogpost/./node_modules/d3-selection/src/array.js","webpack://blogpost/./node_modules/d3-selection/src/selectorAll.js","webpack://blogpost/./node_modules/d3-selection/src/selection/selectAll.js","webpack://blogpost/./node_modules/d3-selection/src/matcher.js","webpack://blogpost/./node_modules/d3-selection/src/selection/selectChild.js","webpack://blogpost/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://blogpost/./node_modules/d3-selection/src/selection/filter.js","webpack://blogpost/./node_modules/d3-selection/src/selection/sparse.js","webpack://blogpost/./node_modules/d3-selection/src/selection/enter.js","webpack://blogpost/./node_modules/d3-selection/src/constant.js","webpack://blogpost/./node_modules/d3-selection/src/selection/data.js","webpack://blogpost/./node_modules/d3-selection/src/selection/exit.js","webpack://blogpost/./node_modules/d3-selection/src/selection/join.js","webpack://blogpost/./node_modules/d3-selection/src/selection/merge.js","webpack://blogpost/./node_modules/d3-selection/src/selection/order.js","webpack://blogpost/./node_modules/d3-selection/src/selection/sort.js","webpack://blogpost/./node_modules/d3-selection/src/selection/call.js","webpack://blogpost/./node_modules/d3-selection/src/selection/nodes.js","webpack://blogpost/./node_modules/d3-selection/src/selection/node.js","webpack://blogpost/./node_modules/d3-selection/src/selection/size.js","webpack://blogpost/./node_modules/d3-selection/src/selection/empty.js","webpack://blogpost/./node_modules/d3-selection/src/selection/each.js","webpack://blogpost/./node_modules/d3-selection/src/namespaces.js","webpack://blogpost/./node_modules/d3-selection/src/namespace.js","webpack://blogpost/./node_modules/d3-selection/src/selection/attr.js","webpack://blogpost/./node_modules/d3-selection/src/window.js","webpack://blogpost/./node_modules/d3-selection/src/selection/style.js","webpack://blogpost/./node_modules/d3-selection/src/selection/property.js","webpack://blogpost/./node_modules/d3-selection/src/selection/classed.js","webpack://blogpost/./node_modules/d3-selection/src/selection/text.js","webpack://blogpost/./node_modules/d3-selection/src/selection/html.js","webpack://blogpost/./node_modules/d3-selection/src/selection/raise.js","webpack://blogpost/./node_modules/d3-selection/src/selection/lower.js","webpack://blogpost/./node_modules/d3-selection/src/creator.js","webpack://blogpost/./node_modules/d3-selection/src/selection/append.js","webpack://blogpost/./node_modules/d3-selection/src/selection/insert.js","webpack://blogpost/./node_modules/d3-selection/src/selection/remove.js","webpack://blogpost/./node_modules/d3-selection/src/selection/clone.js","webpack://blogpost/./node_modules/d3-selection/src/selection/datum.js","webpack://blogpost/./node_modules/d3-selection/src/selection/on.js","webpack://blogpost/./node_modules/d3-selection/src/selection/dispatch.js","webpack://blogpost/./node_modules/d3-selection/src/selection/iterator.js","webpack://blogpost/./node_modules/d3-selection/src/selection/index.js","webpack://blogpost/./node_modules/d3-dispatch/src/dispatch.js","webpack://blogpost/./node_modules/d3-timer/src/timer.js","webpack://blogpost/./node_modules/d3-timer/src/timeout.js","webpack://blogpost/./node_modules/d3-transition/src/transition/schedule.js","webpack://blogpost/./node_modules/d3-transition/src/interrupt.js","webpack://blogpost/./node_modules/d3-transition/src/selection/interrupt.js","webpack://blogpost/./node_modules/d3-interpolate/src/number.js","webpack://blogpost/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://blogpost/./node_modules/d3-interpolate/src/transform/parse.js","webpack://blogpost/./node_modules/d3-interpolate/src/transform/index.js","webpack://blogpost/./node_modules/d3-transition/src/transition/tween.js","webpack://blogpost/./node_modules/d3-color/src/define.js","webpack://blogpost/./node_modules/d3-color/src/color.js","webpack://blogpost/./node_modules/d3-interpolate/src/basis.js","webpack://blogpost/./node_modules/d3-interpolate/src/basisClosed.js","webpack://blogpost/./node_modules/d3-interpolate/src/constant.js","webpack://blogpost/./node_modules/d3-interpolate/src/color.js","webpack://blogpost/./node_modules/d3-interpolate/src/rgb.js","webpack://blogpost/./node_modules/d3-interpolate/src/string.js","webpack://blogpost/./node_modules/d3-transition/src/transition/interpolate.js","webpack://blogpost/./node_modules/d3-transition/src/transition/attr.js","webpack://blogpost/./node_modules/d3-transition/src/transition/attrTween.js","webpack://blogpost/./node_modules/d3-transition/src/transition/delay.js","webpack://blogpost/./node_modules/d3-transition/src/transition/duration.js","webpack://blogpost/./node_modules/d3-transition/src/transition/ease.js","webpack://blogpost/./node_modules/d3-transition/src/transition/easeVarying.js","webpack://blogpost/./node_modules/d3-transition/src/transition/filter.js","webpack://blogpost/./node_modules/d3-transition/src/transition/merge.js","webpack://blogpost/./node_modules/d3-transition/src/transition/on.js","webpack://blogpost/./node_modules/d3-transition/src/transition/remove.js","webpack://blogpost/./node_modules/d3-transition/src/transition/select.js","webpack://blogpost/./node_modules/d3-transition/src/transition/selectAll.js","webpack://blogpost/./node_modules/d3-transition/src/transition/selection.js","webpack://blogpost/./node_modules/d3-transition/src/transition/style.js","webpack://blogpost/./node_modules/d3-transition/src/transition/styleTween.js","webpack://blogpost/./node_modules/d3-transition/src/transition/text.js","webpack://blogpost/./node_modules/d3-transition/src/transition/textTween.js","webpack://blogpost/./node_modules/d3-transition/src/transition/transition.js","webpack://blogpost/./node_modules/d3-transition/src/transition/end.js","webpack://blogpost/./node_modules/d3-transition/src/transition/index.js","webpack://blogpost/./node_modules/d3-ease/src/cubic.js","webpack://blogpost/./node_modules/d3-transition/src/selection/transition.js","webpack://blogpost/./node_modules/d3-transition/src/selection/index.js","webpack://blogpost/./node_modules/d3-transition/src/index.js","webpack://blogpost/./node_modules/d3-brush/src/brush.js","webpack://blogpost/./node_modules/d3-brush/src/index.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://blogpost/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://blogpost/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://blogpost/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://blogpost/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://blogpost/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://blogpost/./node_modules/d3-hierarchy/src/accessors.js","webpack://blogpost/./node_modules/d3-hierarchy/src/constant.js","webpack://blogpost/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://blogpost/./node_modules/d3-hierarchy/src/index.js","webpack://blogpost/./node_modules/d3-selection/src/select.js","webpack://blogpost/./node_modules/d3-selection/src/index.js","webpack://blogpost/./node_modules/d3-zoom/src/transform.js","webpack://blogpost/./node_modules/d3-zoom/src/zoom.js","webpack://blogpost/./node_modules/d3-zoom/src/index.js","webpack://blogpost/./node_modules/d3/src/index.js","webpack://blogpost/./src/memory.js","webpack://blogpost/./src/fragmentLoader.js","webpack://blogpost/./src/index.js"],"sourcesContent":["function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  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) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  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) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export {\n  default as brush,\n  brushX,\n  brushY,\n  brushSelection\n} from \"./brush.js\";\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i >= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i < n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","export default function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i < n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  find: node_find,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy,\n  [Symbol.iterator]: node_iterator\n};\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","export {default as cluster} from \"./cluster.js\";\nexport {default as hierarchy, Node} from \"./hierarchy/index.js\";\nexport {default as pack} from \"./pack/index.js\";\nexport {default as packSiblings} from \"./pack/siblings.js\";\nexport {default as packEnclose} from \"./pack/enclose.js\";\nexport {default as partition} from \"./partition.js\";\nexport {default as stratify} from \"./stratify.js\";\nexport {default as tree} from \"./tree.js\";\nexport {default as treemap} from \"./treemap/index.js\";\nexport {default as treemapBinary} from \"./treemap/binary.js\";\nexport {default as treemapDice} from \"./treemap/dice.js\";\nexport {default as treemapSlice} from \"./treemap/slice.js\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice.js\";\nexport {default as treemapSquarify} from \"./treemap/squarify.js\";\nexport {default as treemapResquarify} from \"./treemap/resquarify.js\";\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    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]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity, Transform as ZoomTransform} from \"./transform.js\";\n","export * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-delaunay\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-zoom\";\n","import * as d3 from 'd3';\n\nexport function activationMemory(\n    a, // attention heads\n    b, // micro batch size\n    h, // hidden dimension size\n    h_ff, // feedforward dimension size (often h_ff = 4h)\n    L, // number of layers\n    s, // sequence length\n    v, // vocab size\n    tp = 1, // tensor model parallelism\n    mixed = true,\n    recomputation = \"none\",\n    ff_activation = \"relu\",\n    seq_parallel = false\n) {\n    console.log('activationMemory called with:', { a, b, h, h_ff, L, s, v, tp, mixed, recomputation, ff_activation, seq_parallel });\n    // https://arxiv.org/pdf/2205.05198\n    const bytesPerValue = mixed ? 2 : 4;\n\n    let oneLayerAttention;\n    if (recomputation === \"none\" || recomputation === \"full\") {\n        if (seq_parallel) {\n            oneLayerAttention = s * b * h / tp * (bytesPerValue * 5 + 1) + ((2 * bytesPerValue + 1) * a * s * s * b); // eq (2)\n        } else {\n            oneLayerAttention = s * b * h * (bytesPerValue * 4 / tp + bytesPerValue + 1) + ((2 * bytesPerValue + 1) * a * s * s * b / tp); // eq (2)\n        }\n    } else if (recomputation === \"selective\") {\n        if (seq_parallel) {\n            oneLayerAttention = s * b * h / tp * (bytesPerValue * 5 + 1); // table 2\n        } else {\n            oneLayerAttention = s * b * h * (bytesPerValue * 4 / tp + bytesPerValue + 1); // table 2\n        }\n    } else {\n        throw new Error(\"Invalid recomputation value\");\n    }\n\n    let oneLayerFeedforward;\n    if (ff_activation === \"relu\") {\n        if (seq_parallel) {\n            oneLayerFeedforward = (s * b * h * bytesPerValue / tp + (s * b * h_ff * bytesPerValue / tp) // inputs of 1st/2nd linear layers\n                + s * b * h / tp);  // dropout\n        } else {\n            oneLayerFeedforward = (s * b * h * bytesPerValue + (s * b * h_ff * bytesPerValue / tp) // inputs of 1st/2nd linear layers\n                + s * b * h);  // dropout\n        }\n    } else if (ff_activation === \"gelu\") {\n        if (seq_parallel) {\n            oneLayerFeedforward = (s * b * h * bytesPerValue / tp + (s * b * h_ff * bytesPerValue / tp) // inputs of 1st/2nd linear layers\n                + s * b * h_ff * bytesPerValue / tp // inputs of activation function (not really necessary for Relu)\n                + s * b * h / tp);  // dropout\n        } else {\n            oneLayerFeedforward = (s * b * h * bytesPerValue + (s * b * h_ff * bytesPerValue / tp) // inputs of 1st/2nd linear layers\n                + s * b * h_ff * bytesPerValue / tp // inputs of activation function (not really necessary for Relu)\n                + s * b * h);  // dropout\n        }\n    } else if (ff_activation === \"swiglu\") {\n        if (seq_parallel) {\n            oneLayerFeedforward = (s * b * h * bytesPerValue / tp + (s * b * h_ff * bytesPerValue / tp) // inputs of input/output linear layers\n                + s * b * h_ff * bytesPerValue * 3 / tp // inputs of activation function\n                + s * b * h / tp);  // dropout (note that dropout is lower-precision - boolean)\n        } else {\n            oneLayerFeedforward = (s * b * h * bytesPerValue + (s * b * h_ff * bytesPerValue / tp) // inputs of input/output linear layers\n                + s * b * h_ff * bytesPerValue * 3 / tp // inputs of activation function\n                + s * b * h);  // dropout (note that dropout is lower-precision - boolean)\n        }\n    }\n\n    let layerNorm;\n    if (seq_parallel) {\n        layerNorm = s * b * h * bytesPerValue / tp;\n    } else {\n        layerNorm = s * b * h * bytesPerValue;\n    }\n\n    const inputDropout = seq_parallel ? s * b * h / tp : s * b * h; // section 4.3\n    const outputLayerNorm = seq_parallel ? s * b * h * bytesPerValue / tp : s * b * h * bytesPerValue;\n    const outputLayerProjection = seq_parallel ? s * b * h * bytesPerValue / tp : s * b * h * bytesPerValue;\n    const outputCrossEntropy = seq_parallel ? s * b * v * 4 / tp : s * b * v * 4;  // In FP32\n\n\n    let data\n    if (recomputation === \"none\" || recomputation === \"selective\") {\n\n        data = {\n            name: \"Activation Memory\",\n            children: [\n                ...Array.from({ length: L }, (_, index) => ({\n                    name: `Layer ${index + 1}`,\n                    children: [\n                        { name: 'Attention', value: oneLayerAttention },\n                        { name: 'Feedforward', value: oneLayerFeedforward },\n                        { name: 'LayerNorm', value: 2 * layerNorm },\n                    ]\n                })),\n                { name: 'Dropout', value: inputDropout },\n                { name: 'LayerNorm', value: outputLayerNorm },\n                { name: 'Projection', value: outputLayerProjection },\n                { name: 'Cross Entropy', value: outputCrossEntropy }\n            ]\n        };\n    } else if (recomputation === \"full\") {\n        data = {\n            name: \"Activation Memory\",\n            children: [\n                { name: 'LayerInput', value: s * b * h * bytesPerValue * L },\n                { name: 'Dropout', value: inputDropout },\n                { name: 'LayerNorm', value: outputLayerNorm },\n                { name: 'Projection', value: outputLayerProjection },\n                { name: 'Cross Entropy', value: outputCrossEntropy }\n            ]\n        };\n    } else {\n        throw new Error(\"Invalid recomputation value\");\n    }\n\n    return data;\n}\n\nexport function paramGradsOpt(h, L, s, v, k = 8, dp = 1, zero = 0, mixed = true) {\n    // h, # hidden dimension size\n    // L, # number of layers\n    // s, # sequence length\n    // v, # vocab size\n    // k=8, # parameters for optimizer (Adam: 8 = 4 bytes moments + 4 bytes variance)\n    // dp=1, # data parallelism\n    // zero = 0, 1, 2, 3, # zero data parallelism\n    // mixed=True # mixed precision training\n    console.log('paramGradsOpt called with:', { h, L, s, v, k, dp, zero, mixed });\n    const emb = h * (v + s);\n    const oneLayer = 12 * h ** 2 + 13 * h;\n    const other = 2 * h;\n\n    const n = emb + L * oneLayer + other;\n\n    if (mixed) {\n        k += 4;\n    }\n    const bytesPerParameter = mixed ? 2 : 4;\n\n    const data = {\n        name: \"Parameters / Gradients / Optimizer States\",\n        children: [\n            { name: 'Parameters', value: zero >= 3 ? bytesPerParameter * n / dp : bytesPerParameter * n },\n            { name: 'Gradients', value: zero >= 2 ? bytesPerParameter * n / dp : bytesPerParameter * n },\n            { name: 'OptimizerAverages', value: zero >= 1 ? k * n / dp : k * n }\n        ]\n    };\n    console.log('paramGradsOpt result:', data);\n    return data;\n}\n\nexport function updateGraph() {\n    console.log('updateGraph called');\n    const a = +document.getElementById('a').value;\n    const b = +document.getElementById('b').value;\n    const h = +document.getElementById('h').value;\n    const h_ff = +document.getElementById('h_ff').value;\n    const L = +document.getElementById('L').value;\n    const s = +document.getElementById('s').value;\n    const v = +document.getElementById('v').value;\n    const k = +document.getElementById('k').value;\n    const tp = +document.getElementById('tp').value;  // New: t parameter\n    const zero = document.getElementById('zero').value;\n    const dp = document.getElementById('dp').value;\n    const mixed = document.getElementById('mixed').checked;\n    const recomputation = document.getElementById('recomputation').value;\n    const ff_activation = document.getElementById('ff_activation').value;\n    const seq_parallel = document.getElementById('seq_parallel').checked;\n\n    console.log('Slider values:', { a, b, h, h_ff, L, s, v, k, tp, zero, dp, mixed, recomputation, ff_activation, seq_parallel });\n\n    const activationMemoryData = activationMemory(a, b, h, h_ff, L, s, v, tp, mixed, recomputation, ff_activation, seq_parallel);\n    const paramGradsOptValue = paramGradsOpt(h, L, s, v, k, dp, zero, mixed);\n\n    const data = {\n        name: \"root\",\n        children: [\n            {\n                name: 'Total',\n                value: 0,\n                children: [\n                    activationMemoryData,\n                    paramGradsOptValue\n                ]\n            }\n        ]\n    };\n\n    console.log('Data for treemap:', data);\n\n    const width = 700;\n    const height = 450;\n    const legendHeight = 50;\n\n    const svg = d3.select(\"#graph\").select(\"svg\");\n    svg.selectAll(\"*\").remove();\n    svg.attr(\"viewBox\", [0, 0, width, height + legendHeight]);\n\n    const treemap = d3.treemap()\n        .size([width, height])\n        .paddingOuter(3)\n        .paddingTop(19)\n        .paddingInner(3)\n        .round(true);\n\n    const root = d3.hierarchy(data)\n        .sum(d => d.value);\n    // .sort((a, b) => b.value - a.value);\n\n    // const fixedSize100GB = 100 * 1024 * 1024 * 1024; // 100GB in bytes\n    // if (root.children[0].value < fixedSize100GB) {\n    //     root.value = fixedSize100GB;\n    //     root.children[0].value = fixedSize100GB;\n    // }\n\n    console.log('Treemap root:', root);\n\n    treemap(root);\n\n    const color = d => {\n        switch (d.data.name) {\n            // Root and Total (container levels)\n            case 'root': return 'rgb(225, 225, 225)';  // Light Grey\n            case 'Total': return 'rgb(225, 225, 225)';  // Light Grey\n            \n            // Give distinct colors to the main section containers\n            case 'Activation Memory': return 'rgb(78, 165, 183)';  // Orange\n            case 'Parameters / Gradients / Optimizer States': return 'rgb(232, 137, 171)';  // Teal Blue\n    \n            // Parameters / Gradients / Optimizer States branch\n            case 'Parameters': return 'rgb(206, 192, 250)';  // Blue\n            case 'Gradients': return 'rgb(227, 138, 66)';   // Orange\n            case 'OptimizerAverages': return 'rgb(78, 165, 183)';  // Pink\n            \n            // activationMemory branch - Layer components\n            case 'Attention': return 'rgb(206, 192, 250)';  // Purple\n            case 'Feedforward': return 'rgb(171, 232, 241)';  // Light Blue\n            case 'LayerNorm': return 'rgb(232, 137, 171)';  // Light Green\n            \n            // activationMemory branch - other components\n            case 'Dropout': return 'rgb(67, 145, 108)';  // Dark Green\n            case 'Projection': return 'rgb(174, 214, 251)';  // Sky Blue\n            case 'Cross Entropy': return 'rgb(232, 137, 171)';  // Pink\n            \n            // Default for any Layer nodes and unexpected cases\n            default: return 'rgb(227, 138, 66)';  // Light Grey\n        };\n      };\n\n    if (d3.select('#tooltip').empty()) {\n      d3.select('body')\n      .append('div')\n      .attr('id', 'tooltip')\n      .style('opacity', 0)\n      .style('position', 'absolute')\n      .style('background-color', 'white')\n      .style('padding', '4px')\n      .style('font-size', '12px')\n      .style('border-radius', '5px')\n      .style('box-shadow', '0px 0px 5px 0px rgba(0,0,0,0.3)');\n    }\n\n    const cell = svg.selectAll(\"g\")\n        .data(root.descendants().filter(d => d.depth !== 0)) // Skip root node\n        .join(\"g\")\n        .attr(\"transform\", d => `translate(${d.x0},${d.y0})`)\n        .on('mouseover', (event, d) => {\n          const name = d.data.name;\n          const value = formatBytes(d.value);\n          d3.select('#tooltip').transition().duration(200).text(`${name}: ${value}`)\n        })\n        .on('mouseout', function() {\n          d3.select('#tooltip').style('opacity', 0)\n        })\n        .on('mousemove', function(event) {\n          d3.select('#tooltip').style('left', (event.pageX + 10) + 'px').style('top', (event.pageY + 10) + 'px').style('opacity', 1)\n        });\n\n    cell.append(\"rect\")\n        .attr(\"width\", d => d.x1 - d.x0)\n        .attr(\"height\", d => d.y1 - d.y0)\n        .attr(\"fill\", d => color(d))\n        .attr(\"stroke\", d => d.depth === 1 ? color(d) : \"white\")\n        .attr(\"stroke-width\", 1);\n\n    const fontSize = 10;\n    const padding = 2;\n\n    cell.append(\"text\")\n        .attr(\"font-size\", `${fontSize}px`)\n        .attr(\"font-family\", \"sans-serif\")\n        .each(function (d) {\n\n            const node = d3.select(this);\n\n            const name = d.data.name;\n            const value = formatBytes(d.value);\n\n            if (d.depth === 1 || d.depth === 2) {\n                node.attr(\"transform\", `translate(${padding},${fontSize + padding})`)\n                    .attr(\"font-weight\", \"bold\")\n                    .attr(\"font-size\", 12)\n                    .text(`${name}: ${value}`);\n            } else {\n                // Child nodes\n                node.attr(\"transform\", `translate(${padding},${fontSize + padding})`)\n                    .text(name[0].toUpperCase())  // Display only the first letter\n                    .attr(\"font-weight\", \"bold\")\n                    .append(\"title\")  // Add title for hover effect\n                    .text(`${name}: ${value}`);\n            }\n        });\n\n    /* \n    // Adjust legend positioning\n    const legendData = root.children[0].children.concat(root.children[0]);\n    const legend = svg.append(\"g\")\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"font-size\", 10)\n        .attr(\"text-anchor\", \"start\")\n        .attr(\"transform\", `translate(0, ${height})`)\n        .selectAll(\"g\")\n        .data(legendData)\n        .join(\"g\")\n        .attr(\"transform\", (d, i) => `translate(${i * 240}, 0)`);\n\n    legend.append(\"rect\")\n        .attr(\"x\", 0)\n        .attr(\"width\", 19)\n        .attr(\"height\", 19)\n        .attr(\"fill\", d => color(d))\n        .attr(\"stroke\", '#f3f3f3')\n        .attr(\"stroke-width\", 0);\n\n    legend.append(\"text\")\n        .attr(\"x\", 24)\n        .attr(\"y\", 9.5)\n        .attr(\"dy\", \"0.32em\")\n        .text(d => `${d.data.name}: ${formatBytes(d.value)}`);\n    */\n    console.log('Treemap nodes created');\n}\n    \nfunction formatBytes(bytes) {\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n    if (bytes === 0) return '0 Bytes';\n    const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);\n    return `${(bytes / (1024 ** i)).toFixed(2)} ${sizes[i]}`;\n}\n\nconst presets = {\n    \"Llama 3 Tiny\": { a: 16, b: 3, h: 1024, h_ff: 4096, L: 1, s: 7, v: 30522, k: 8, tp: 1, zero: \"1\", dp: 1, mixed: true, recomputation: \"none\", ff_activation: \"gelu\", seq_parallel: false },\n    \"Llama 3 8B\": { a: 32, b: 32, h: 4096, h_ff: 16384, L: 32, s: 256, v: 30522, k: 8, tp: 1, zero: \"1\", dp: 1, mixed: true, recomputation: \"none\", ff_activation: \"swiglu\", seq_parallel: false },\n    \"Llama 3 70B\": { a: 64, b: 32, h: 8192, h_ff: 32768, L: 80, s: 256, v: 30522, k: 8, tp: 8, zero: \"1\", dp: 8, mixed: true, recomputation: \"none\", ff_activation: \"swiglu\", seq_parallel: false },\n    \"Llama 3 405B\": { a: 128, b: 32, h: 16384, h_ff: 65536, L: 126, s: 256, v: 30522, k: 8, tp: 8, zero: \"1\", dp: 8, mixed: true, recomputation: \"none\", ff_activation: \"swiglu\", seq_parallel: false }\n};\n\nfunction setPresetValues(preset) {\n    if (preset === \"custom\") return;\n\n    const values = presets[preset];\n    Object.keys(values).forEach(key => {\n        const element = document.getElementById(key);\n        const inputElement = document.getElementById(`${key}_input`);\n        if (element) {\n            if (element.type === 'checkbox') {\n                element.checked = values[key];\n            } else {\n                element.value = values[key];\n            }\n        }\n        if (inputElement) {\n            inputElement.value = values[key];\n        }\n    });\n\n    updateGraph();  // Add this line to ensure the graph updates when a preset is selected\n}\n\nfunction syncSliderAndInput(sliderId, inputId) {\n    const slider = document.getElementById(sliderId);\n    const input = document.getElementById(inputId);\n\n    slider.addEventListener('input', () => {\n        input.value = slider.value;\n        updateGraph();\n    });\n\n    input.addEventListener('input', () => {\n        let value = parseInt(input.value);\n        if (isNaN(value)) {\n            value = parseInt(slider.min);\n        }\n        value = Math.max(parseInt(slider.min), Math.min(parseInt(slider.max), value));\n        slider.value = value;\n        input.value = value;\n        updateGraph();\n    });\n}\n\nexport const init_memory_plot = function () {\n    console.log('Initializing memory plot');\n\n    const sliderIds = ['a', 'b', 'h', 'h_ff', 'L', 's', 'v', 'k', 'tp', 'dp'];\n    sliderIds.forEach(id => {\n        const slider = document.getElementById(id);\n        const input = document.getElementById(`${id}_input`);\n        if (slider && input) {\n            syncSliderAndInput(id, `${id}_input`);\n        } else {\n            console.warn(`Elements for ${id} not found`);\n        }\n    });\n\n    const recomputationSelect = document.getElementById('recomputation');\n    if (recomputationSelect) {\n        recomputationSelect.addEventListener('change', updateGraph);\n    } else {\n        console.warn('Recomputation select not found');\n    }\n\n    const ffActivationSelect = document.getElementById('ff_activation');\n    if (ffActivationSelect) {\n        ffActivationSelect.addEventListener('change', updateGraph);\n    } else {\n        console.warn('FF Activation select not found');\n    }\n\n    const zeroSelect = document.getElementById('zero');\n    if (zeroSelect) {\n        zeroSelect.addEventListener('change', updateGraph);\n    } else {\n        console.warn('Zero select not found');\n    }\n\n    const mixedCheckbox = document.getElementById('mixed');\n    if (mixedCheckbox) {\n        mixedCheckbox.addEventListener('change', updateGraph);\n    } else {\n        console.warn('Mixed checkbox not found');\n    }\n\n    const seqParallelCheckbox = document.getElementById('seq_parallel');\n    if (seqParallelCheckbox) {\n        seqParallelCheckbox.addEventListener('change', updateGraph);\n    } else {\n        console.warn('Seq Parallel checkbox not found');\n    }\n\n    const presetSelect = document.getElementById('presets');\n    if (presetSelect) {\n        presetSelect.addEventListener('change', (event) => {\n            setPresetValues(event.target.value);\n        });\n    } else {\n        console.warn('Preset select not found');\n    }\n\n    // Set max values for sliders\n    sliderIds.forEach(id => {\n        const slider = document.getElementById(id);\n        if (slider) {\n            switch (id) {\n                case 'a': slider.max = '128'; break;\n                case 'b': slider.max = '53248'; break;\n                case 'h': slider.max = '16384'; break;\n                case 'h_ff': slider.max = '65536'; break;\n                case 'L': slider.max = '126'; break;\n                case 's': slider.max = '128000'; break;\n                case 'v': slider.max = '100000'; break;\n                case 'k': slider.max = '16'; break;\n                case 'tp': slider.max = '16'; break;\n                case 'dp': slider.max = '256'; break;\n            }\n        } else {\n            console.warn(`Slider ${id} not found`);\n        }\n    });\n\n    console.log('Adding svg');\n    const graphContainer = document.getElementById('graph');\n    if (graphContainer) {\n        const svg = d3.select(\"#graph\")\n            .append(\"svg\")\n    } else {\n        console.warn('Graph container not found');\n    }\n\n    updateGraph();\n};","async function loadFragments() {\n    // Find all elements with ids starting with 'fragment-'\n    const fragmentElements = Array.from(document.querySelectorAll('[id^=\"fragment-\"]'));\n    \n    class FetchQueue {\n        constructor(maxConcurrent = 3) {\n            this.queue = [];\n            this.maxConcurrent = maxConcurrent;\n            this.activeFetches = 0;\n            this.maxRetries = 3; // Maximum number of retry attempts\n            this.baseDelay = 1000; // Base delay in milliseconds (1 second)\n        }\n\n        async sleep(ms) {\n            return new Promise(resolve => setTimeout(resolve, ms));\n        }\n\n        async fetchWithRetry(fragmentPath, retryCount = 0) {\n            try {\n                const response = await fetch(fragmentPath);\n                if (!response.ok) {\n                    throw new Error(`HTTP error! status: ${response.status}`);\n                }\n                return await response.text();\n            } catch (error) {\n                if (retryCount < this.maxRetries) {\n                    // Exponential backoff: 1s, 2s, 4s\n                    const delay = this.baseDelay * Math.pow(2, retryCount);\n                    console.warn(`Retry ${retryCount + 1}/${this.maxRetries} for ${fragmentPath} after ${delay}ms`);\n                    await this.sleep(delay);\n                    return this.fetchWithRetry(fragmentPath, retryCount + 1);\n                }\n                throw error;\n            }\n        }\n\n        async addFetch(element) {\n            const fragmentName = element.id.replace('fragment-', '');\n            const fragmentPath = `/fragments/${fragmentName}.html`;\n            \n            return new Promise(async (resolve, reject) => {\n                try {\n                    const fetchPromise = (async () => {\n                        try {\n                            const html = await this.fetchWithRetry(fragmentPath);\n                            \n                            // Process the fragment\n                            const temp = document.createElement('div');\n                            temp.innerHTML = html;\n                            element.innerHTML = temp.innerHTML;\n                            \n                            // Handle scripts\n                            const scripts = temp.getElementsByTagName('script');\n                            Array.from(scripts).forEach(oldScript => {\n                                const newScript = document.createElement('script');\n                                Array.from(oldScript.attributes).forEach(attr => {\n                                    newScript.setAttribute(attr.name, attr.value);\n                                });\n                                newScript.textContent = oldScript.textContent;\n                                oldScript.parentNode.removeChild(oldScript);\n                                document.body.appendChild(newScript);\n                            });\n                            \n                            this.activeFetches--;\n                            resolve();\n                        } catch (error) {\n                            console.error(`Failed to load fragment ${fragmentPath} after ${this.maxRetries} retries:`, error);\n                            this.activeFetches--;\n                            reject(error);\n                        }\n                    })();\n\n                    this.queue.push(fetchPromise);\n                    this.activeFetches++;\n                } catch (error) {\n                    reject(error);\n                }\n            });\n        }\n\n        async processNext(element) {\n            if (this.activeFetches < this.maxConcurrent && element) {\n                await this.addFetch(element);\n            }\n        }\n    }\n\n    // Initialize queue\n    const fetchQueue = new FetchQueue(3);\n    let currentIndex = 0;\n    const elements = fragmentElements; // Assuming this is defined elsewhere\n\n    // Initial loading of first 3 elements\n    while (currentIndex < elements.length && currentIndex < 3) {\n        await fetchQueue.processNext(elements[currentIndex]);\n        currentIndex++;\n    }\n\n    // Process remaining elements as fetches complete\n    while (currentIndex < elements.length) {\n        // Wait for any fetch to complete\n        await Promise.race(fetchQueue.queue);\n        // Remove completed fetch from queue\n        fetchQueue.queue = fetchQueue.queue.filter(p => p.status === 'pending');\n        // Add next element to queue\n        await fetchQueue.processNext(elements[currentIndex]);\n        currentIndex++;\n    }\n\n    // Wait for remaining fetches to complete\n    await Promise.all(fetchQueue.queue);\n}\n\nexport { loadFragments }","// import { plotClusters } from './clusters'\nimport { init_memory_plot } from './memory'\nimport { loadFragments } from './fragmentLoader'\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n    console.log(\"DOMContentLoaded\");\n    loadFragments();\n    init_memory_plot();\n}, { once: true });\n"],"names":["d3","activationMemory","a","b","h","h_ff","L","s","v","tp","arguments","length","undefined","mixed","recomputation","ff_activation","seq_parallel","console","log","bytesPerValue","oneLayerAttention","Error","oneLayerFeedforward","layerNorm","inputDropout","outputLayerNorm","outputLayerProjection","outputCrossEntropy","data","name","children","concat","_toConsumableArray","Array","from","_","index","value","paramGradsOpt","k","dp","zero","emb","oneLayer","Math","pow","other","n","bytesPerParameter","updateGraph","document","getElementById","checked","activationMemoryData","paramGradsOptValue","width","height","legendHeight","svg","select","selectAll","remove","attr","treemap","size","paddingOuter","paddingTop","paddingInner","round","root","hierarchy","sum","d","color","empty","append","style","cell","descendants","filter","depth","join","x0","y0","on","event","formatBytes","transition","duration","text","pageX","pageY","x1","y1","fontSize","padding","each","node","toUpperCase","bytes","sizes","i","parseInt","floor","toFixed","presets","setPresetValues","preset","values","Object","keys","forEach","key","element","inputElement","type","syncSliderAndInput","sliderId","inputId","slider","input","addEventListener","isNaN","min","max","init_memory_plot","sliderIds","id","warn","recomputationSelect","ffActivationSelect","zeroSelect","mixedCheckbox","seqParallelCheckbox","presetSelect","target","graphContainer","_regeneratorRuntime","e","t","r","prototype","hasOwnProperty","o","defineProperty","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","l","f","y","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","_classCallCheck","_defineProperties","_toPropertyKey","_createClass","_toPrimitive","toPrimitive","String","Number","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","loadFragments","_loadFragments","_callee7","fragmentElements","FetchQueue","fetchQueue","currentIndex","elements","_callee7$","_context7","querySelectorAll","maxConcurrent","queue","activeFetches","maxRetries","baseDelay","_sleep","_callee","ms","_callee$","_context","setTimeout","sleep","_x","_fetchWithRetry","_callee2","fragmentPath","retryCount","response","delay","_args2","_callee2$","_context2","fetch","ok","status","t0","fetchWithRetry","_x2","_addFetch","_callee5","_this","fragmentName","_callee5$","_context5","replace","_ref","_callee4","reject","fetchPromise","_callee4$","_context4","_callee3","html","temp","scripts","_callee3$","_context3","createElement","innerHTML","getElementsByTagName","oldScript","newScript","attributes","setAttribute","textContent","parentNode","removeChild","body","appendChild","error","_x4","_x5","addFetch","_x3","_processNext","_callee6","_callee6$","_context6","processNext","_x6","race","all","once"],"sourceRoot":""}