Spaces:
Running
Running
{"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":""} |