{"version":3,"file":"js/528-950522e5ca545dbf6dc8.js","mappings":";+FAOA,SAASA,EAAQC,GACf,MAAoD,mBAA7CC,OAAOC,UAAUC,SAASC,KAAKJ,EACxC,CAEA,SAASK,EAAWL,GAClB,OAAOA,aAAoBM,QAC7B,CAEA,SAASC,EAAcP,GAErB,MAAoD,oBAA7CC,OAAOC,UAAUC,SAASC,KAAKJ,KAAoCK,EAAWL,IAAaA,aAAoBC,MACxH,CAGA,SAASO,EAAOC,EAAQC,GACtB,IAAK,IAAIC,KAAOD,EAEF,cAARC,IAEAJ,EAAcG,EAAOC,KAASZ,EAAQW,EAAOC,KAC3CJ,EAAcG,EAAOC,MAAUJ,EAAcE,EAAOE,MACtDF,EAAOE,GAAO,CAAC,GAEbZ,EAAQW,EAAOC,MAAUZ,EAAQU,EAAOE,MAC1CF,EAAOE,GAAO,IAEhBH,EAAOC,EAAOE,GAAMD,EAAOC,UACFC,IAAhBF,EAAOC,KAChBF,EAAOE,GAAOD,EAAOC,IAG3B,CAEA,SAASE,EAAMC,EAAMC,GACnB,IAAIN,EAAS,CAAC,EAGd,OAFAD,EAAOC,EAAQK,GACfN,EAAOC,EAAQM,GACRN,CACT,CAEA,IAAIO,EAAe,wCAcnB,SAASC,EAAMC,GACb,MAAO,GAAKA,CACd,CAEA,SAASC,EAAQD,GACf,OAAOE,WAAWF,EACpB,CAEA,SAASG,EAAOH,GACd,GAAIA,aAAeI,KACjB,OAAOJ,EACF,GAAmB,kBAARA,EAChB,OAAO,IAAII,KAAW,IAANJ,GAEhB,IAAIK,EAAIN,EAAMC,GACVM,EAAUD,EAAEE,MAAMT,GACtB,GAAIQ,EAAS,CACX,IAAIE,EAAOC,SAASH,EAAQ,GAAI,IAC5BI,EAAQD,SAASH,EAAQ,GAAI,IAAM,EACnCK,EAAMF,SAASH,EAAQ,GAAI,IAC/B,OAAO,IAAIF,KAAKI,EAAME,EAAOC,EAC/B,CAGE,IAAIC,EAAMP,EAAEQ,QAAQ,IAAK,KAAKA,QAAQ,IAAK,IAAIA,QAAQ,MAAO,KAE9D,OAAO,IAAIT,KAAKA,KAAKU,MAAMF,IAAQP,EAGzC,CAEA,SAASU,EAAMf,GACb,GAAInB,EAAQmB,GACV,OAAOA,EAEP,IAAIgB,EAAM,GACV,IAAK,IAAIC,KAAKjB,EACRjB,OAAOC,UAAUkC,eAAehC,KAAKc,EAAKiB,IAC5CD,EAAIG,KAAK,CAACF,EAAGjB,EAAIiB,KAGrB,OAAOD,CAEX,CAEA,SAASI,EAAcC,EAAgBC,EAAYC,EAAUC,EAAQC,EAAQC,EAAYC,EAAWC,GAClG,OAAO,SAAUC,EAAOC,EAAMC,GAC5B,IAAIC,EAASH,EAAMI,KACfC,EAAUvC,EAAM,CAAC,EAAG0B,GA0CxB,OAzCAa,EAAUvC,EAAMuC,EAASH,GAAgB,CAAC,IAEtCF,EAAMM,oBAAsB,WAAYL,IAC1CR,EAAWY,EAASJ,EAAKM,OAAQP,EAAMM,oBAGrCL,EAAKO,OACPd,EAASW,EAASJ,EAAKO,OAIrB,QAASP,EACXN,EAAOU,EAASJ,EAAKQ,KAzE3B,SAAwBN,GACtB,IAAK,IAAIf,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAEjC,IADA,IAAIgB,EAAOD,EAAOf,GAAGgB,KACZO,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAC/B,GAAIP,EAAKO,GAAG,GAAK,EACf,OAAO,EAIb,OAAO,CACT,CAgEgBC,CAAeT,IACzBR,EAAOU,EAAS,GAIdJ,EAAKY,KACPjB,EAAOS,EAASJ,EAAKY,KAGnB,YAAaZ,GACfJ,EAAWQ,EAASJ,EAAKa,SAGvBb,EAAKc,SACPV,EAAQU,OAASd,EAAKc,QAGpBd,EAAKe,QACPlB,EAAUO,EAASJ,EAAKe,QAGtBf,EAAKgB,QACPlB,EAAUM,EAASJ,EAAKgB,QAI1BZ,EAAUvC,EAAMuC,EAASJ,EAAKiB,SAAW,CAAC,EAG5C,CACF,CAEA,SAASC,EAAWC,EAAGC,GACrB,OAAOD,EAAE,GAAGE,UAAYD,EAAE,GAAGC,SAC/B,CAEA,SAASC,EAAmBH,EAAGC,GAC7B,OAAOD,EAAE,GAAKC,EAAE,EAClB,CAGA,SAASG,EAAaJ,EAAGC,GACvB,OAAOD,EAAIC,CACb,CAEA,SAASI,EAAMC,EAAQC,GACrB,IAAK,IAAIvC,EAAI,EAAGA,EAAIsC,EAAOhB,OAAQtB,IACjC,IAAKuC,EAAGD,EAAOtC,IACb,OAAO,EAGX,OAAO,CACT,CAMA,SAASwC,EAAkBF,EAAQG,GAGjC,QAFgB,IAAXA,IAAoBA,GAAS,GAEZ,IAAlBH,EAAOhB,OACT,OAAO,KAIT,IADae,EAAMC,GAAQ,SAAUI,GAAK,OAA+B,IAAxBA,EAAEC,mBAA8C,IAAnBD,EAAEE,YAAoB,IAElG,OAAO,KAIT,IADWP,EAAMC,GAAQ,SAAUI,GAAK,OAA0B,IAAnBA,EAAEG,YAAoB,IAEnE,MAAO,SAIT,IADUR,EAAMC,GAAQ,SAAUI,GAAK,OAAwB,IAAjBA,EAAEI,UAAkB,IAEhE,MAAO,OAGT,GAAIL,EACF,MAAO,MAIT,IADYJ,EAAMC,GAAQ,SAAUI,GAAK,OAAuB,IAAhBA,EAAEK,SAAiB,IACvD,CACV,IAAIC,EAAYV,EAAO,GAAGW,SAE1B,OADWZ,EAAMC,GAAQ,SAAUI,GAAK,OAAOA,EAAEO,WAAaD,CAAW,IAC1D,OAAS,KAC1B,CAGA,OADWX,EAAMC,GAAQ,SAAUI,GAAK,OAAwB,IAAjBA,EAAEQ,UAAkB,IAK5D,OAHE,OAIX,CAEA,SAASC,EAAOpE,GACd,OAAQqE,MAAMlE,EAAOH,KAASD,EAAMC,GAAKuC,QAAU,CACrD,CAEA,SAAS+B,EAAStE,GAChB,MAAsB,kBAARA,CAChB,CAEA,IAAIuE,EAAe,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MAE3D,SAASC,EAAYC,EAAKC,EAAOxC,EAASyC,GACxCF,EAAMA,GAAO,GACTvC,EAAQ0C,SACNF,EAAQ,IACVA,IAAiB,EACjBD,GAAO,KAETA,GAAOvC,EAAQ0C,QAGjB,IAAIC,EAAS3C,EAAQ2C,QAAU,GAC3BC,EAAY5C,EAAQ4C,UACpBC,EAAQ7C,EAAQ6C,MAEpB,GAAI7C,EAAQ8C,UAAW,CACrB,IAAIC,EAAWP,GAAS,EACnBO,IACHP,IAAU,GAGZ,IAEIQ,EAFAC,EAAYR,EAAOzC,EAAQ8C,UAAYN,EAGvCS,GAAa,oBACfT,GAAS,mBACTQ,EAAY,GACHC,GAAa,iBACtBT,GAAS,gBACTQ,EAAY,GACHC,GAAa,eACtBT,GAAS,cACTQ,EAAY,GACHC,GAAa,YACtBT,GAAS,WACTQ,EAAY,GACHC,GAAa,SACtBT,GAAS,QACTQ,EAAY,GACHC,GAAa,MACtBT,GAAS,KACTQ,EAAY,GAEZA,EAAY,OAIIxF,IAAdoF,QAAqCpF,IAAVqF,IACzBL,GAAS,QACPQ,EAAYX,EAAahC,OAAS,IACpCmC,EAAQ,EACRQ,GAAa,GAGjBJ,EAAYJ,GAAS,IAAO,EAAI,GAElCG,EAAS,IAAMN,EAAaW,GAGvBD,IACHP,IAAU,EAEd,CAEA,QAAkBhF,IAAdoF,QAAqCpF,IAAVqF,EAC7B,MAAMK,MAAM,2CAGd,IAAKT,SACejF,IAAdoF,IACFJ,EAAQA,EAAMW,YAAYP,GACrB5C,EAAQoD,QACXZ,EAAQxE,WAAWwE,UAIThF,IAAVqF,GACF,GAAIA,EAAQ,EAAG,CACb,IAAIQ,EAAMC,KAAKC,IAAI,IAAK,EAAIV,GAC5BL,EAAQjE,UAAU,EAAMiE,EAAQa,GAAKG,QAAQ,IAAMH,CACrD,MACEb,EAAQA,EAAMgB,QAAQX,GACjB7C,EAAQoD,QACXZ,EAAQxE,WAAWwE,IAM3B,GAAIxC,EAAQyD,WAAazD,EAAQ0D,QAAS,CAExC,IAAIC,GADJnB,EAAQ3E,EAAM2E,IACIoB,MAAM,KACxBpB,EAAQmB,EAAM,GACV3D,EAAQyD,YACVjB,EAAQA,EAAM7D,QAAQ,wBAAyBqB,EAAQyD,YAErDE,EAAMtD,OAAS,IACjBmC,IAAUxC,EAAQ0D,SAAW,KAAOC,EAAM,GAE9C,CAEA,OAAOpB,EAAMC,EAAQG,CACvB,CAEA,SAASkB,EAAalE,EAAOG,EAAQgE,GACnC,OAAIA,KAAUhE,EACLA,EAAOgE,GACLA,KAAUnE,EAAMK,QAClBL,EAAMK,QAAQ8D,GAEhB,IACT,CAEA,IAAIC,EAAc,CAChBC,qBAAqB,EACrBC,WAAW,EACXC,QAAS,CACPhE,OAAQ,CAAC,EACTiE,QAAS,CACPC,eAAe,EACfC,UAAW,CAAC,GAEdlE,MAAO,CACLmE,KAAM,CACJC,KAAM,IAERC,MAAO,SAGXC,YAAa,CAAC,GAGZC,EAAmB,CACrBC,OAAQ,CACNC,EAAG,CACDC,MAAO,CACLC,cAAe,GAEjB3E,MAAO,CACLmE,KAAM,CACJC,KAAM,IAERC,MAAO,QAETO,KAAM,CAAC,GAETC,EAAG,CACDD,KAAM,CACJE,iBAAiB,GAEnB9E,MAAO,CACLmE,KAAM,CACJC,KAAM,IAERC,MAAO,QAETU,KAAM,CAAC,EACPL,MAAO,CAAC,KAMVM,EAAgB,CAClB,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAClE,UAAW,UAAW,UAAW,UAAW,UAAW,WAGzD,SAASC,EAAapF,EAASE,EAAQd,QACtB5B,IAAX0C,GACFF,EAAQkE,QAAQhE,OAAOmF,UAAYnF,EAC/BA,IAAqB,IAAXA,IACZF,EAAQkE,QAAQhE,OAAOoF,SAAWpF,IAE3Bd,IACTY,EAAQkE,QAAQhE,OAAOmF,SAAU,EAErC,CAEA,SAASE,EAAWvF,EAASG,GAC3BH,EAAQkE,QAAQ/D,MAAMkF,SAAU,EAChCrF,EAAQkE,QAAQ/D,MAAMqF,KAAOrF,CAC/B,CAYA,SAASsF,EAAYzF,EAASI,GAChB,OAARA,IACFJ,EAAQ2E,OAAOK,EAAE5E,IAAMrC,EAAQqC,GAEnC,CAEA,SAASsF,EAAY1F,EAASQ,GAC5BR,EAAQ2E,OAAOK,EAAExE,IAAMzC,EAAQyC,EACjC,CAEA,SAASmF,EAAa3F,EAASS,GAC7BT,EAAQ2E,OAAOK,EAAEvE,UAAYA,EAC7BT,EAAQ2E,OAAOC,EAAEnE,UAAYA,CAC/B,CAEA,SAASmF,EAAY5F,EAASG,GAC5BH,EAAQ2E,OAAOK,EAAE7E,MAAMkF,SAAU,EACjCrF,EAAQ2E,OAAOK,EAAE7E,MAAMqF,KAAOrF,CAChC,CAEA,SAAS0F,EAAY7F,EAASG,GAC5BH,EAAQ2E,OAAOC,EAAEzE,MAAMkF,SAAU,EACjCrF,EAAQ2E,OAAOC,EAAEzE,MAAMqF,KAAOrF,CAChC,CAGA,SAAS2F,EAAWC,EAAKC,GACvB,IAAIC,EAAS,4CAA4CC,KAAKH,GAC9D,OAAOE,EAAS,QAAU1H,SAAS0H,EAAO,GAAI,IAAM,KAAO1H,SAAS0H,EAAO,GAAI,IAAM,KAAO1H,SAAS0H,EAAO,GAAI,IAAM,KAAOD,EAAU,IAAMD,CAC/I,CAEA,SAASI,EAAQnB,GACf,OAAa,OAANA,QAAoBxH,IAANwH,CACvB,CAqBA,SAASoB,EAAetG,GAGtB,IAFA,IAAIuG,EAAQ,EACR7F,EAyHN,SAAiBV,GAEf,IADA,IAAIU,EAAM,EACDzB,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAEjC,IADA,IAAIgB,EAAOD,EAAOf,GAAGgB,KACZO,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAAK,CACpC,IAAIgG,EAAIhD,KAAKiD,IAAIxG,EAAKO,GAAG,IACrBgG,EAAI9F,IACNA,EAAM8F,EAEV,CAEF,OAAO9F,CACT,CArIYgG,CAAQ1G,GACXU,GAAO,MACZ6F,GAAS,KACT7F,GAAO,KAET,OAAO6F,CACT,CAEA,SAASI,EAAmB9G,EAAOK,EAAS0G,GAE1C,IAAIC,EAAiB,CACnBlD,UAAW9D,EAAMK,QAAQyD,UACzBC,QAAS/D,EAAMK,QAAQ0D,SAIrBkD,EAAgBnJ,EAAM,CACxBiF,OAAQ/C,EAAMK,QAAQ0C,OACtBC,OAAQhD,EAAMK,QAAQ2C,OACtBC,UAAWjD,EAAMK,QAAQ4C,UACzBC,MAAOlD,EAAMK,QAAQ6C,MACrBO,MAAOzD,EAAMK,QAAQoD,OACpBuD,GAEH,GAAIhH,EAAMK,QAAQ6G,MAAO,CACvB,IAAI/G,EAASH,EAAMI,KACD,QAAd2G,IACF5G,EAAS,CAAC,CAACC,KAAMD,KAInB8G,EAAc9D,UAAYsD,EAAetG,EAC3C,CAEA,GAAkB,QAAd4G,EAAqB,CACvB,IAAIjE,EAAOzC,EAAQ2E,OAAOC,EACR,QAAd8B,IACFjE,EAAOzC,EAAQ2E,OAAOK,GAGpB4B,EAAc9D,YACXL,EAAKoC,MAAMiC,WACdrE,EAAKoC,MAAMiC,SAAWF,EAAc9D,UAAY,GAE7CL,EAAKoC,MAAMC,gBACdrC,EAAKoC,MAAMC,cAAgB,IAI1BrC,EAAKoC,MAAMkC,WACdtE,EAAKoC,MAAMkC,SAAW,SAAUvE,GAC9B,OAAOF,EAAY,GAAIE,EAAOoE,GAAe,EAC/C,GAGiB,YAAdF,GAAyC,WAAdA,GAA4B1G,EAAQ2E,OAAOK,EAAEH,MAAMkC,WACjF/G,EAAQ2E,OAAOK,EAAEH,MAAMkC,SAAW,SAAUvE,GAC1C,OAAOF,EAAY,GAAIE,EAAOmE,GAAgB,EAChD,EAEJ,CAEA,IAAK3G,EAAQkE,QAAQC,QAAQE,UAAU2C,MACrC,GAAkB,YAAdN,EACF1G,EAAQkE,QAAQC,QAAQE,UAAU2C,MAAQ,SAAUC,GAClD,IAAID,EAAQC,EAAQC,QAAQF,OAAS,GACjCA,IACFA,GAAS,MAGX,IAAIG,EAAYF,EAAQG,OACxB,OAAOJ,EAAQ,IAAM1E,EAAY,GAAI6E,EAAUnC,EAAG2B,GAAkB,KAAOrE,EAAY,GAAI6E,EAAUvC,EAAGgC,GAAiB,GAC3H,OACK,GAAkB,WAAdF,EACT1G,EAAQkE,QAAQC,QAAQE,UAAU2C,MAAQ,SAAUC,GAClD,IAAID,EAAQC,EAAQC,QAAQF,OAAS,GACjCA,IACFA,GAAS,MAEX,IAAIG,EAAYF,EAAQI,IACxB,OAAOL,EAAQ,IAAM1E,EAAY,GAAI6E,EAAUnC,EAAG2B,GAAkB,KAAOrE,EAAY,GAAI6E,EAAUvC,EAAGgC,GAAiB,KAAOtE,EAAY,GAAI6E,EAAUb,EAAGK,GAAkB,GACjL,OACK,GAAkB,QAAdD,EAET1G,EAAQkE,QAAQC,QAAQE,UAAU2C,MAAQ,SAAUC,GAClD,OAAO3E,EAAY,GAAI2E,EAAQG,OAAQR,EACzC,MACK,CACL,IAAIU,EAA2B,QAAdZ,EAAsB,IAAM,IAC7C1G,EAAQkE,QAAQC,QAAQE,UAAU2C,MAAQ,SAAUC,GAElD,GAAmC,OAA/BA,EAAQG,OAAOE,GAAnB,CAIA,IAAIN,EAAQC,EAAQC,QAAQF,OAAS,GAIrC,OAHIA,IACFA,GAAS,MAEJ1E,EAAY0E,EAAOC,EAAQG,OAAOE,GAAaV,EANtD,CAOF,CACF,CAKiB,SAAdF,GAAsC,SAAdA,GAAyC,WAAhB/G,EAAM4H,QACrDvH,EAAQ2E,OAAOK,EAAEH,MAAMkC,WAC1B/G,EAAQ2E,OAAOK,EAAEH,MAAMkC,SAAW,SAAUvE,GAC1C,OAAO3E,EAAM2E,EACf,GAGGxC,EAAQkE,QAAQC,QAAQE,UAAUlE,QACrCH,EAAQkE,QAAQC,QAAQE,UAAUlE,MAAQ,SAAU8G,GAClD,OAAOpJ,EAAMoJ,EAAQ,GAAGG,OAAOpC,EACjC,GAGN,CA+BA,IAAIwC,EAActI,EAAczB,EAAMsG,EAAaW,GAAmBU,EAAcG,GAxNpF,SAAkBvF,EAASI,GACb,OAARA,IACFJ,EAAQ2E,OAAOC,EAAExE,IAAMrC,EAAQqC,GAEnC,IAEA,SAAkBJ,EAASQ,GACzBR,EAAQ2E,OAAOC,EAAEpE,IAAMzC,EAAQyC,EACjC,GAgNoHmF,EAAcC,EAAaC,GAyG/I,SAAS4B,EAAY9H,EAAO+G,GAC1B,MAAkB,WAAdA,EAvDN,SAA2B/G,GAKzB,IAJA,IAAIG,EAASH,EAAMI,KACfsB,EAAS,GACTb,EArEN,SAAcV,GAGZ,IADA,IAAIU,EAAM,EACDzB,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAEjC,IADA,IAAIgB,EAAOD,EAAOf,GAAGgB,KACZO,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAAK,CACpC,IAAIgG,EAAIvG,EAAKO,GAAG,GACZgG,EAAI9F,IACNA,EAAM8F,EAEV,CAEF,OAAO9F,CACT,CAwDYkH,CAAK5H,GAENf,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CAGtC,IAFA,IAAIgB,EAAOD,EAAOf,GAAGgB,KACjB4H,EAAS,GACJrH,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAAK,CACpC,IAAIgG,EAAIvG,EAAKO,GACbqH,EAAO1I,KAAK,CACV+F,EAAGsB,EAAE,GACL1B,EAAG0B,EAAE,GACLsB,EAAU,GAAPtB,EAAE,GAAU9F,EAEf8F,EAAGA,EAAE,IAET,CACAjF,EAAOpC,KAAK0I,EACd,CAEA,MAAO,CACLE,OAAQ,GACRxG,OAAQA,EAEZ,CA+BWyG,CAAkBnI,GACA,WAAhBA,EAAM4H,OAAoC,QAAdb,GAAqC,WAAdA,EA7BhE,SAA2B/G,GAIzB,IAHA,IAAIG,EAASH,EAAMI,KACfsB,EAAS,GAEJtC,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtC,IAAIgB,EAAOD,EAAOf,GAAGgB,KAErBA,EAAKgI,KAAK7G,GAGV,IADA,IAAIyG,EAAS,GACJrH,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAAK,CACpC,IAAIgG,EAAIvG,EAAKO,GACbqH,EAAO1I,KAAK,CACV+F,EAAGsB,EAAE,GACL1B,EAAG0B,EAAE,IAET,CACAjF,EAAOpC,KAAK0I,EACd,CAEA,MAAO,CACLE,OAAQ,GACRxG,OAAQA,EAEZ,CAMW2G,CAAkBrI,GA3G7B,SAA4BA,GAO1B,IANA,IAAIG,EAASH,EAAMI,KACfkI,EAAO,CAAC,EACRC,EAAO,GACPL,EAAS,GACTxG,EAAS,GAEJtC,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAGjC,IAFA,IAAIgB,EAAOD,EAAOf,GAAGgB,KAEZO,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAAK,CACpC,IAAImB,EAAI1B,EAAKO,GACT/C,EAAsB,aAAhBoC,EAAM4H,MAAuB9F,EAAE,GAAGR,UAAYQ,EAAE,GACrDwG,EAAK1K,KACR0K,EAAK1K,GAAO,IAAI4K,MAAMrI,EAAOO,QAC7B6H,EAAKjJ,KAAK1B,IAEZ0K,EAAK1K,GAAKwB,GAAK0C,EAAE,EACnB,CAGkB,aAAhB9B,EAAM4H,OAAwC,WAAhB5H,EAAM4H,OACtCW,EAAKH,KAAK5G,GAGZ,IAAK,IAAIiH,EAAM,EAAGA,EAAMtI,EAAOO,OAAQ+H,IACrC/G,EAAOpC,KAAK,IAGd,IAAK,IAAIoJ,EAAM,EAAGA,EAAMH,EAAK7H,OAAQgI,IAAO,CAC1C,IAAIC,EAAQJ,EAAKG,GAEbrB,EAAwB,aAAhBrH,EAAM4H,MAAuB,IAAIrJ,KAAKoK,GAASA,EAC3DT,EAAO5I,KAAK+H,GAGZ,IADA,IAAIuB,EAAMN,EAAKK,GACNE,EAAM,EAAGA,EAAM1I,EAAOO,OAAQmI,IAAO,CAC5C,IAAIlC,EAAIiC,EAAIC,GAEZnH,EAAOmH,GAAKvJ,UAAWzB,IAAN8I,EAAkB,KAAOA,EAC5C,CACF,CAEA,MAAO,CACLuB,OAAQA,EACRxG,OAAQA,EAEZ,CA8DWoH,CAAmB9I,EAE9B,CAEA,SAAS+I,EAAgB/I,EAAOK,EAAS0G,GAQvC,IAPA,IAAIiC,EAAMlB,EAAY9H,EAAO+G,GACzBmB,EAASc,EAAId,OACbxG,EAASsH,EAAItH,OAEbvB,EAASH,EAAMI,KACf6I,EAAW,GACXlI,EAASf,EAAMK,QAAQU,QAAUyE,EAC5BpG,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtC,IAAIZ,EAAI2B,EAAOf,GAGXyF,OAAQ,EACRqE,OAAkB,EACtB,IAAIlJ,EAAMK,QAAQU,SAAUf,EAAMM,oBAAqC,QAAdyG,GAAqC,WAAdA,GAA4BvI,EAAEqG,QAAS7H,EAAQgD,EAAMK,QAAQU,SAAY/D,EAAQgD,EAAMK,QAAQU,OAAO,IAOpL8D,EAAQrG,EAAEqG,OAAS9D,EAAO3B,GAC1B8J,EAAgC,SAAdnC,EAAuBZ,EAAWtB,EAAO,IAAOA,MARuH,CACzLA,EAAQ9D,EACRmI,EAAkB,GAClB,IAAK,IAAIvI,EAAI,EAAGA,EAAII,EAAOL,OAAQC,IACjCuI,EAAgBvI,GAAKwF,EAAWtB,EAAMlE,GAAI,GAE9C,CAKA,IAAI4G,EAAU,CACZF,MAAO7I,EAAE2K,MAAQ,GACjB/I,KAAMsB,EAAOtC,GACbgK,KAAoB,SAAdrC,EACNsC,YAAaxE,EACbqE,gBAAiBA,EACjBI,YAAa,GAGXC,EAA2B,SAAdxC,GAAsC,SAAdA,GAAsC,YAAdA,GAAyC,WAAdA,EACxFwC,IACFhC,EAAQiC,qBAAuB3E,EAC/B0C,EAAQkC,0BAA4B5E,EACpC0C,EAAQmC,eAAiB,IAGT,WAAd3C,IACFQ,EAAQiC,qBAAuBN,EAC/B3B,EAAQkC,0BAA4BP,EACpC3B,EAAQoC,sBAAwB,GAG9BnL,EAAEoL,QACJrC,EAAQqC,MAAQpL,EAAEoL,QAIN,IADF1F,EAAalE,EAAOxB,EAAG,SAEjC+I,EAAQsC,QAAU,EACTN,IACThC,EAAQsC,QAAU,KAIL,IADF3F,EAAalE,EAAOxB,EAAG,YAElC+I,EAAQuC,YAAc,EACtBvC,EAAQwC,iBAAmB,GAG7BxC,EAAUzJ,EAAMyJ,EAASvH,EAAMK,QAAQkH,SAAW,CAAC,GACnDA,EAAUzJ,EAAMyJ,EAAS/I,EAAE0C,SAAW,CAAC,GACvCqG,EAAUzJ,EAAMyJ,EAAS/I,EAAE+I,SAAW,CAAC,GAEvC0B,EAAS3J,KAAKiI,EAChB,CAEA,IAAIyC,EAAOhK,EAAMK,QAAQ2J,KACrBC,EAAOjK,EAAMK,QAAQ4J,KAkBzB,GAhBoB,aAAhBjK,EAAM4H,OACJpB,EAAQwD,KACV3J,EAAQ2E,OAAOK,EAAE5E,IAAMnC,EAAO0L,GAAM1I,WAElCkF,EAAQyD,KACV5J,EAAQ2E,OAAOK,EAAExE,IAAMvC,EAAO2L,GAAM3I,YAEb,WAAhBtB,EAAM4H,QACXpB,EAAQwD,KACV3J,EAAQ2E,OAAOK,EAAE5E,IAAMuJ,GAErBxD,EAAQyD,KACV5J,EAAQ2E,OAAOK,EAAExE,IAAMoJ,IAIP,aAAhBjK,EAAM4H,MAAsB,CAC9B,IAAIsC,EAAWtI,EAAkBsG,GAYjC,GATsB,IAAlBA,EAAOxH,SACL8F,EAAQwD,IACV9B,EAAO5I,KAAKhB,EAAO0L,IAEjBxD,EAAQyD,IACV/B,EAAO5I,KAAKhB,EAAO2L,KAInB/B,EAAOxH,OAAS,EAAG,CAIrB,IAHA,IAAIyJ,GAAW3D,EAAQwD,GAAQ1L,EAAO0L,GAAQ9B,EAAO,IAAI5G,UACrD8I,GAAW5D,EAAQyD,GAAQ3L,EAAO2L,GAAQ/B,EAAO,IAAI5G,UAEhDmH,EAAM,EAAGA,EAAMP,EAAOxH,OAAQ+H,IAAO,CAC5C,IAAI5F,EAAQqF,EAAOO,GAAKnH,UACpBuB,EAAQsH,IACVA,EAAUtH,GAERA,EAAQuH,IACVA,EAAUvH,EAEd,CAEA,IAGMwH,EAHFC,GAAYF,EAAUD,GAAW,MAErC,IAAK9J,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAqBzB,GAnBiB,SAAbL,GAAuBI,EAAW,MACpCjK,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAAO,OAC7BF,EAAO,KACe,UAAbH,GAAwBI,EAAW,KAC5CjK,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAAO,QAC7BF,EAAO,IACe,SAAbH,GAAoC,QAAbA,GAAsBI,EAAW,IACjEjK,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAAO,MAC7BF,EAAO,GACe,SAAbH,GAAuBI,EAAW,IAC3CjK,EAAQ2E,OAAOK,EAAEE,KAAKiF,eAAiB,CAACC,KAAM,cAC9CpK,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAAO,OAC7BF,EAAO,EAAI,IACW,WAAbH,IACT7J,EAAQ2E,OAAOK,EAAEE,KAAKiF,eAAiB,CAACE,OAAQ,UAChDrK,EAAQ2E,OAAOK,EAAEE,KAAKgF,KAAO,SAC7BF,EAAO,EAAI,GAAO,IAGhBA,GAAQC,EAAW,EAAG,CAExB,IAAIK,EAAQ3K,EAAM4K,QAAQC,YAC1B,GAAIF,EAAQ,EAAG,CACb,IAAIG,EAAenH,KAAKoH,KAAKT,EAAWD,GAAQM,EAAQ,MACvC,SAAbT,GAAgC,IAATG,IACzBS,EAA+C,EAAhCnH,KAAKoH,KAAKD,EAAe,IAE1CzK,EAAQ2E,OAAOK,EAAEH,MAAMiC,SAAW2D,CACpC,CACF,CAGGzK,EAAQ2E,OAAOK,EAAEE,KAAKyF,gBACR,SAAbd,EACF7J,EAAQ2E,OAAOK,EAAEE,KAAKyF,cAAgB,OAChB,UAAbd,EACT7J,EAAQ2E,OAAOK,EAAEE,KAAKyF,cAAgB,WAChB,SAAbd,GAAoC,QAAbA,EAChC7J,EAAQ2E,OAAOK,EAAEE,KAAKyF,cAAgB,KAChB,SAAbd,EACT7J,EAAQ2E,OAAOK,EAAEE,KAAKyF,cAAgB,aAChB,WAAbd,IACT7J,EAAQ2E,OAAOK,EAAEE,KAAKyF,cAAgB,UAG5C,CACF,CAEA,MAAO,CACL9C,OAAQA,EACRe,SAAUA,EAEd,CAEA,IAAIgC,EAAkB,SAAuB/J,GAC3CgK,KAAK/B,KAAO,UACZ+B,KAAKhK,QAAUA,CACjB,EAEA+J,EAAgB9N,UAAUgO,gBAAkB,SAA0BnL,EAAO+G,GACtEA,IACHA,EAAY,QAGd,IAEI1G,EAAUwH,EAAY7H,EAAOlC,EAFd,CAAC,EAEiCkC,EAAMK,UAC3DyG,EAAmB9G,EAAOK,EAAS0G,GAEnC,IAAI3G,EAAO2I,EAAgB/I,EAAOK,EAAS0G,GAEvB,WAAhB/G,EAAM4H,OACRvH,EAAQ2E,OAAOK,EAAE+F,KAAO/K,EAAQ2E,OAAOK,EAAE+F,MAAQ,SACjD/K,EAAQ2E,OAAOK,EAAEM,SAAWtF,EAAQ2E,OAAOK,EAAEM,UAAY,UAEzDtF,EAAQ2E,OAAOK,EAAE+F,KAAuB,WAAhBpL,EAAM4H,MAAqB,WAAa,OAGlEsD,KAAKG,UAAUrL,EAAO,OAAQI,EAAMC,EACtC,EAEA4K,EAAgB9N,UAAUmO,eAAiB,SAAyBtL,GAClE,IAAIK,EAAUvC,EAAM,CAAC,EAAGsG,GACpBpE,EAAMK,QAAQkL,QAChBlL,EAAQmL,OAAS,OAGf,WAAYxL,EAAMK,SACpBoF,EAAapF,EAASL,EAAMK,QAAQE,QAGlCP,EAAMK,QAAQG,OAChBoF,EAAWvF,EAASL,EAAMK,QAAQG,OAIpCsG,EAAmB9G,EADnBK,EAAUvC,EAAMuC,EAASL,EAAMK,QAAQa,SAAW,CAAC,GAChB,OAInC,IAFA,IAAIgH,EAAS,GACTxG,EAAS,GACJtC,EAAI,EAAGA,EAAIY,EAAMI,KAAKM,OAAQtB,IAAK,CAC1C,IAAIqM,EAAQzL,EAAMI,KAAKhB,GACvB8I,EAAO5I,KAAKmM,EAAM,IAClB/J,EAAOpC,KAAKmM,EAAM,GACpB,CAEA,IAAIlE,EAAU,CACZnH,KAAMsB,EACNwH,gBAAiBlJ,EAAMK,QAAQU,QAAUyE,GAIvCpF,EAAO,CACT8H,OAAQA,EACRe,SAAU,CAJZ1B,EAAUzJ,EAAMyJ,EAASvH,EAAMK,QAAQkH,SAAW,CAAC,KAOnD2D,KAAKG,UAAUrL,EAAO,MAAOI,EAAMC,EACrC,EAEA4K,EAAgB9N,UAAUuO,kBAAoB,SAA4B1L,EAAO+G,GAC/E,IAAI1G,EACJ,GAAkB,QAAd0G,EAAqB,CACvB,IAAI4E,EAAa7N,EAAMsG,EAAaW,GACpC4G,EAAWC,UAAY,IAGvBD,EAAW3G,OAAOK,EAAED,KAAKE,iBAAkB,EAC3CqG,EAAW3G,OAAOC,EAAEG,KAAKE,iBAAkB,SACpCqG,EAAW3G,OAAOC,EAAEC,MAAMC,cAEjC9E,EAAUd,EAAcoM,EAAYlG,EAAcG,EAAYE,EAAaC,EAAaC,EAAcC,EAAaC,EAAzG3G,CAAsHS,EAAOA,EAAMK,QAC/I,MACEA,EAAUwH,EAAY7H,EAAOA,EAAMK,SAErCyG,EAAmB9G,EAAOK,EAAS0G,GACnC,IAAI3G,EAAO2I,EAAgB/I,EAAOK,EAAS,UACzB,QAAd0G,GAhiBN,SAAsB/G,EAAOI,EAAMC,GACjC,IAAIwL,EAAelI,KAAKoH,KAAK/K,EAAM4K,QAAQC,YAAc,EAAMzK,EAAK8H,OAAOxH,QACvEmL,EAAe,GACjBA,EAAe,GACNA,EAAe,KACxBA,EAAe,IAEZxL,EAAQ2E,OAAOK,EAAEH,MAAMkC,WAC1B/G,EAAQ2E,OAAOK,EAAEH,MAAMkC,SAAW,SAAUvE,GAE1C,OADAA,EAAQ3E,EAAMgN,KAAKY,iBAAiBjJ,KAC1BnC,OAASmL,EACVhJ,EAAMkJ,UAAU,EAAGF,EAAe,GAAK,MAEvChJ,CAEX,EAEJ,CAghBImJ,CAAahM,EAAOI,EAAMC,GAEtB,SAAUA,EAAQyE,cACtBzE,EAAQyE,YAAYmH,KAAO,SAE7Bf,KAAKG,UAAUrL,EAAO,MAAOI,EAAMC,EACrC,EAEA4K,EAAgB9N,UAAU+O,gBAAkB,SAA0BlM,GACpEkL,KAAKC,gBAAgBnL,EAAO,OAC9B,EAEAiL,EAAgB9N,UAAUgP,eAAiB,SAAyBnM,GAClEkL,KAAKQ,kBAAkB1L,EAAO,MAChC,EAEAiL,EAAgB9N,UAAUiP,mBAAqB,SAA6BpM,EAAO+G,GACjFA,EAAYA,GAAa,UAEzB,IAAI1G,EAAUwH,EAAY7H,EAAOA,EAAMK,SACvCyG,EAAmB9G,EAAOK,EAAS0G,GAE7B,aAAc1G,IAClBA,EAAQgM,UAAW,GAGrB,IAAIjM,EAAO2I,EAAgB/I,EAAOK,EAAS0G,GAE3C1G,EAAQ2E,OAAOK,EAAE+F,KAAO/K,EAAQ2E,OAAOK,EAAE+F,MAAQ,SACjD/K,EAAQ2E,OAAOK,EAAEM,SAAWtF,EAAQ2E,OAAOK,EAAEM,UAAY,SAGnD,SAAUtF,EAAQyE,cACtBzE,EAAQyE,YAAYmH,KAAO,WAG7Bf,KAAKG,UAAUrL,EAAO+G,EAAW3G,EAAMC,EACzC,EAEA4K,EAAgB9N,UAAUmP,kBAAoB,SAA4BtM,GACxEkL,KAAKkB,mBAAmBpM,EAAO,SACjC,EAEAiL,EAAgB9N,UAAUoP,QAAU,SAAkBvM,GAChDA,EAAMA,OACRA,EAAMA,MAAMuM,SAEhB,EAEAtB,EAAgB9N,UAAUkO,UAAY,SAAoBrL,EAAOoL,EAAMhL,EAAMC,GAE3E,GADA6K,KAAKqB,QAAQvM,IACTA,EAAMwM,UAAV,CAEA,IAAItM,EAAe,CACjBkL,KAAMA,EACNhL,KAAMA,EACNC,QAASA,GAGPL,EAAMK,QAAQoM,MAChBC,OAAOC,QAAQC,IAAI,kBAAoBC,KAAKC,UAAU5M,GAAgB,MAGxEF,EAAM4K,QAAQmC,UAAY,oBAC1B,IAAIC,EAAMhN,EAAM4K,QAAQqC,qBAAqB,UAAU,GACvDjN,EAAMA,MAAQ,IAAIkL,KAAKhK,QAAQ8L,EAAK9M,EAdL,CAejC,EAEA,IAAIgN,EAAmB,CACrBlN,MAAO,CAAC,EACRmN,MAAO,CACL3M,MAAO,CACLqF,KAAM,MAERqC,OAAQ,CACNkF,MAAO,CACLC,SAAU,UAIhBC,MAAO,CACL9M,MAAO,CACLqF,KAAM,MAERqC,OAAQ,CACNkF,MAAO,CACLC,SAAU,UAIhB7M,MAAO,CACLqF,KAAM,MAER0H,QAAS,CACPC,SAAS,GAEXjN,OAAQ,CACN+I,YAAa,GAEf9E,QAAS,CACP4I,MAAO,CACLC,SAAU,SAGdI,YAAa,CACXC,WAAY,CAAC,EACbC,KAAM,CAAC,EACPxN,OAAQ,CACNyN,OAAQ,CAAC,IAGbrI,KAAM,CACJsI,QAAQ,IAIZ,SAASC,EAAazN,EAASE,EAAQd,QACtB5B,IAAX0C,GACFF,EAAQE,OAAOiN,UAAYjN,EACvBA,IAAqB,IAAXA,IACG,QAAXA,GAA+B,WAAXA,EACtBF,EAAQE,OAAOwN,cAAgBxN,GAE/BF,EAAQE,OAAOyN,OAAS,WACxB3N,EAAQE,OAAOwN,cAAgB,SAC/B1N,EAAQE,OAAO0N,MAAQ1N,KAGlBd,IACTY,EAAQE,OAAOiN,SAAU,EAE7B,CAEA,SAASU,EAAW7N,EAASG,GAC3BH,EAAQG,MAAMqF,KAAOrF,CACvB,CAyBA,IAAI2N,EAAc5O,EAAc2N,EAAkBY,EAAcI,GAvBhE,SAAkB7N,EAASI,GACzBJ,EAAQiN,MAAM7M,IAAMA,CACtB,IAEA,SAAkBJ,EAASQ,GACzBR,EAAQiN,MAAMzM,IAAMA,CACtB,IAEA,SAAsBR,EAASS,GAC7B,IAAIsN,EAAetN,GAAuB,IAAZA,EAAmB,SAAWA,EAAW,KACvET,EAAQoN,YAAYtN,OAAOkO,SAAWD,EACtC/N,EAAQoN,YAAYE,KAAKU,SAAWD,EACpC/N,EAAQoN,YAAYC,WAAWW,SAAWD,CAC5C,IAEA,SAAqB/N,EAASG,GAC5BH,EAAQ8M,MAAM3M,MAAMqF,KAAOrF,CAC7B,IAEA,SAAqBH,EAASG,GAC5BH,EAAQiN,MAAM9M,MAAMqF,KAAOrF,CAC7B,IAIA,SAAS8N,EAAiBtO,EAAOK,EAAS0G,GACxC,IAAIE,EAAgB,CAClBlE,OAAQ/C,EAAMK,QAAQ0C,OACtBC,OAAQhD,EAAMK,QAAQ2C,OACtBc,UAAW9D,EAAMK,QAAQyD,UACzBC,QAAS/D,EAAMK,QAAQ0D,QACvBd,UAAWjD,EAAMK,QAAQ4C,UACzBC,MAAOlD,EAAMK,QAAQ6C,MACrBO,MAAOzD,EAAMK,QAAQoD,OAIL,QAAdsD,GAAwB/J,EAAQqD,EAAQiN,QAAWjN,EAAQiN,MAAMpF,OAAOqG,YAC1ElO,EAAQiN,MAAMpF,OAAOqG,UAAY,WAC/B,OAAO5L,EAAY,GAAIuI,KAAKrI,MAAOoE,EACrC,GAGG5G,EAAQmE,QAAQgK,gBAAmBnO,EAAQmE,QAAQiK,cACtDpO,EAAQmE,QAAQgK,eAAiB,WAC/B,MAAO,sBAAwBtD,KAAKrG,MAAQ,mBAAqBlC,EAAYuI,KAAK/K,OAAOgJ,KAAO,QAAS+B,KAAKjG,EAAGgC,GAAiB,WACpI,EAEJ,CAEA,IAAIyH,EAAkB,SAAuBxN,GAC3CgK,KAAK/B,KAAO,aACZ+B,KAAKhK,QAAUA,CACjB,EAEAwN,EAAgBvR,UAAUgO,gBAAkB,SAA0BnL,EAAO+G,GAE3E,IAAI7G,EAAe,CAAC,EACF,gBAFlB6G,EAAYA,GAAa,YAGvB7G,EAAe,CACbuN,YAAa,CACXC,WAAY,CACVW,SAAU,UAEZV,KAAM,CACJU,SAAU,UAEZlO,OAAQ,CACNyN,OAAQ,CACNJ,SAAS,QAOS,IAAxBxN,EAAMK,QAAQsO,QACE,eAAd5H,EACFA,EAAY,OACW,WAAdA,IACTA,EAAY,SAIhB,IAAI1G,EAAU8N,EAAYnO,EAAOA,EAAMK,QAASH,GAC5B,WAAhBF,EAAM4H,MACRvH,EAAQ8M,MAAM/B,KAAO/K,EAAQ8M,MAAM/B,MAAQ,SAE3C/K,EAAQ8M,MAAM/B,KAAuB,WAAhBpL,EAAM4H,MAAqB,WAAa,WAE1DvH,EAAQL,MAAMoL,OACjB/K,EAAQL,MAAMoL,KAAOrE,GAEvBuH,EAAiBtO,EAAOK,EAAS0G,GAGjC,IADA,IAAI5G,EAASH,EAAMI,KACVhB,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtCe,EAAOf,GAAG+J,KAAOhJ,EAAOf,GAAG+J,MAAQ,QACnC,IAAI/I,EAAOD,EAAOf,GAAGgB,KACrB,GAAoB,aAAhBJ,EAAM4H,MACR,IAAK,IAAIjH,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAC/BP,EAAKO,GAAG,GAAKP,EAAKO,GAAG,GAAGW,cAED,WAAhBtB,EAAM4H,OACfxH,EAAKgI,KAAK7G,GAEZpB,EAAOf,GAAGwO,OAAS,CAACgB,OAAQ,WACC,IAAzB5O,EAAMK,QAAQ2H,SAChB7H,EAAOf,GAAGwO,OAAOJ,SAAU,EAE/B,CAEAtC,KAAKG,UAAUrL,EAAOG,EAAQE,EAChC,EAEAqO,EAAgBvR,UAAUiP,mBAAqB,SAA6BpM,GAC1E,IAAIK,EAAU8N,EAAYnO,EAAOA,EAAMK,QAAS,CAAC,GACjDA,EAAQL,MAAMoL,KAAO,UACrBF,KAAKG,UAAUrL,EAAOA,EAAMI,KAAMC,EACpC,EAEAqO,EAAgBvR,UAAUmO,eAAiB,SAAyBtL,GAClE,IAAIE,EAAepC,EAAMoP,EAAkB,CAAC,GAExClN,EAAMK,QAAQU,SAChBb,EAAaa,OAASf,EAAMK,QAAQU,QAElCf,EAAMK,QAAQkL,QAChBrL,EAAauN,YAAc,CAACoB,IAAK,CAACC,UAAW,SAG3C,WAAY9O,EAAMK,SACpByN,EAAa5N,EAAcF,EAAMK,QAAQE,QAGvCP,EAAMK,QAAQG,OAChB0N,EAAWhO,EAAcF,EAAMK,QAAQG,OAGzC,IAAIH,EAAUvC,EAAMoC,EAAcF,EAAMK,QAAQa,SAAW,CAAC,GAC5DoN,EAAiBtO,EAAOK,EAAS,OACjC,IAAIF,EAAS,CAAC,CACZiL,KAAM,MACNjC,KAAMnJ,EAAMK,QAAQgH,OAAS,QAC7BjH,KAAMJ,EAAMI,OAGd8K,KAAKG,UAAUrL,EAAOG,EAAQE,EAChC,EAEAqO,EAAgBvR,UAAUuO,kBAAoB,SAA4B1L,EAAO+G,GAC/EA,EAAYA,GAAa,SACzB,IAAI5G,EAASH,EAAMI,KACfC,EAAU8N,EAAYnO,EAAOA,EAAMK,SACnCiI,EAAO,GACPyG,EAAa,GACjB1O,EAAQL,MAAMoL,KAAOrE,EACrBuH,EAAiBtO,EAAOK,EAAS0G,GAEjC,IAAK,IAAI3H,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAGjC,IAFA,IAAIZ,EAAI2B,EAAOf,GAENuB,EAAI,EAAGA,EAAInC,EAAE4B,KAAKM,OAAQC,IAAK,CACtC,IAAImB,EAAItD,EAAE4B,KAAKO,GACV2H,EAAKxG,EAAE,MACVwG,EAAKxG,EAAE,IAAM,IAAI0G,MAAMrI,EAAOO,QAC9BqO,EAAWzP,KAAKwC,EAAE,KAEpBwG,EAAKxG,EAAE,IAAI1C,GAAK0C,EAAE,EACpB,CAGkB,WAAhB9B,EAAM4H,OACRmH,EAAW3G,KAAK5G,GAGlBnB,EAAQ8M,MAAM4B,WAAaA,EAG3B,IADA,IAAIC,EAAY,GACPvG,EAAM,EAAGA,EAAMtI,EAAOO,OAAQ+H,IAAO,CAE5C,IADA,IAAIwG,EAAM,GACDpG,EAAM,EAAGA,EAAMkG,EAAWrO,OAAQmI,IACzCoG,EAAI3P,KAAKgJ,EAAKyG,EAAWlG,IAAMJ,IAAQ,GAGzC,IAAIyG,EAAK,CACP/F,KAAMhJ,EAAOsI,GAAKU,MAAQ,QAC1B/I,KAAM6O,GAEJ9O,EAAOsI,GAAKmB,QACdsF,EAAGtF,MAAQzJ,EAAOsI,GAAKmB,OAGzBoF,EAAU1P,KAAK4P,EACjB,CAEAhE,KAAKG,UAAUrL,EAAOgP,EAAW3O,EACnC,EAEAqO,EAAgBvR,UAAUgP,eAAiB,SAAyBnM,GAClEkL,KAAKQ,kBAAkB1L,EAAO,MAChC,EAEA0O,EAAgBvR,UAAU+O,gBAAkB,SAA0BlM,GACpEkL,KAAKC,gBAAgBnL,EAAO,aAC9B,EAEA0O,EAAgBvR,UAAUoP,QAAU,SAAkBvM,GAChDA,EAAMA,OACRA,EAAMA,MAAMuM,SAEhB,EAEAmC,EAAgBvR,UAAUkO,UAAY,SAAoBrL,EAAOI,EAAMC,GACrE6K,KAAKqB,QAAQvM,GACTA,EAAMwM,YAEVnM,EAAQL,MAAMmP,SAAWnP,EAAM4K,QAAQwE,GACvC/O,EAAQF,OAASC,EAEbJ,EAAMK,QAAQoM,MAChBC,OAAOC,QAAQC,IAAI,wBAA0BC,KAAKC,UAAUzM,GAAW,MAGzEL,EAAMA,MAAQ,IAAIkL,KAAKhK,QAAQmO,MAAMhP,GACvC,EAEA,IAAIiP,EAAS,CAAC,EACV5K,EAAY,GAGZlF,EAAiB,CACnB+P,UAAW,CAAC,EACZC,SAAU,gFACVC,UAAW,EACXlP,OAAQ,CACNmP,UAAW,CACTrC,SAAU,GACVxI,MAAO,QAET8K,UAAW,SACXhK,SAAU,SAEZiK,UAAW,WACXC,MAAO,CACLH,UAAW,CACT7K,MAAO,OACPwI,SAAU,IAEZyC,eAAgB,CAAC,EACjBC,UAAW,CACTlL,MAAO,eAETmL,cAAe,OACfC,WAAY,CAAC,GAEfC,MAAO,CACLR,UAAW,CACT7K,MAAO,OACPwI,SAAU,IAEZyC,eAAgB,CAAC,EACjBE,cAAe,OACfC,WAAY,CAAC,GAEfzL,QAAS,CACPkL,UAAW,CACT7K,MAAO,OACPwI,SAAU,MAKhB,SAAS5N,EAAWY,EAASE,EAAQd,GAEjC,IAAIkG,OADS9H,IAAX0C,GAKAoF,EAHGpF,GAEiB,IAAXA,EACE,QAEAA,EAJA,OAMbF,EAAQE,OAAOoF,SAAWA,GACjBlG,IACTY,EAAQE,OAAOoF,SAAW,OAE9B,CAEA,SAASjG,EAASW,EAASG,GACzBH,EAAQG,MAAQA,EAChBH,EAAQyP,eAAiB,CAACjL,MAAO,OAAQwI,SAAU,OACrD,CAUA,SAAS8C,EAAU9P,EAASI,GAC1BJ,EAAQwP,MAAMI,WAAWxP,IAAMA,CACjC,CAEA,SAAS2P,GAAU/P,EAASQ,GAC1BR,EAAQwP,MAAMI,WAAWpP,IAAMA,CACjC,CAEA,SAAShB,GAAWQ,EAASS,GAC3BT,EAAQgQ,UAAYvP,IAAW,CACjC,CAEA,SAAShB,GAAUO,EAASG,GAC1BH,EAAQwP,MAAMrP,MAAQA,EACtBH,EAAQwP,MAAMC,eAAeQ,QAAS,CACxC,CAEA,SAASvQ,GAAUM,EAASG,GAC1BH,EAAQ6P,MAAM1P,MAAQA,EACtBH,EAAQ6P,MAAMJ,eAAeQ,QAAS,CACxC,CAEA,IAAIC,GAAYhR,EAAcC,EAAgBC,EAAYC,GA9B1D,SAAgBW,EAASI,GACvBJ,EAAQ6P,MAAMD,WAAWxP,IAAMA,CACjC,IAEA,SAAgBJ,EAASQ,GACvBR,EAAQ6P,MAAMD,WAAWpP,IAAMA,CACjC,GAwBoFhB,GAAYC,GAAWC,IAW3G,IAAIyQ,GAAgB,SAAuBtP,GACzCgK,KAAK/B,KAAO,SACZ+B,KAAKhK,QAAUA,CACjB,EAEAsP,GAAcrT,UAAUgO,gBAAkB,SAA0BnL,GAChE,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WACxB,IAAIE,EAAe,CAAC,GAEQ,IAAxBF,EAAMK,QAAQsO,QAChBzO,EAAa0P,UAAY,SAGE,IAAzB5P,EAAMK,QAAQ2H,SAChB9H,EAAauP,UAAY,GAG3B,IAAIpP,EAAUkQ,GAAUvQ,EAAOA,EAAMK,QAASH,GAC1CE,EAAOqQ,EAAS1H,gBAAgB/I,EAAMI,KAAMJ,EAAM4H,OAEtD6I,EAASpF,UAAUrL,EAAO,YAAaI,EAAMC,EAC/C,GACF,EAEAmQ,GAAcrT,UAAUmO,eAAiB,SAAyBtL,GAC9D,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WACxB,IAAIE,EAAe,CACjBqP,UAAW,CACToB,IAAK,MACLC,OAAQ,OAEVrQ,OAAQ,CAAC,GAEPP,EAAMK,QAAQU,SAChBb,EAAaa,OAASf,EAAMK,QAAQU,QAElCf,EAAMK,QAAQkL,QAChBrL,EAAa2Q,QAAU,IAErB,WAAY7Q,EAAMK,SACpBZ,EAAWS,EAAcF,EAAMK,QAAQE,QAErCP,EAAMK,QAAQG,OAChBd,EAASQ,EAAcF,EAAMK,QAAQG,OAEvC,IAAIH,EAAUvC,EAAMA,EAAM0B,EAAgBU,GAAeF,EAAMK,QAAQa,SAAW,CAAC,GAE/Ed,EAAO,IAAIqQ,EAASvP,QAAQ4P,cAAcC,UAC9C3Q,EAAK4Q,UAAU,SAAU,IACzB5Q,EAAK4Q,UAAU,SAAU,SACzB5Q,EAAK6Q,QAAQjR,EAAMI,MAEnBqQ,EAASpF,UAAUrL,EAAO,WAAYI,EAAMC,EAC9C,GACF,EAEAmQ,GAAcrT,UAAUuO,kBAAoB,SAA4B1L,GACpE,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WACxB,IAAIK,EAAUkQ,GAAUvQ,EAAOA,EAAMK,SACjCD,EAAOqQ,EAAS1H,gBAAgB/I,EAAMI,KAAMJ,EAAM4H,OAEtD6I,EAASpF,UAAUrL,EAAO,cAAeI,EAAMC,EACjD,GACF,EAEAmQ,GAAcrT,UAAUgP,eAAiB,SAAyBnM,GAC9D,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WACxB,IAOIK,EAAUd,EAAcC,EAAgBC,EAAYC,EAAUyQ,EAAWC,GAAWvQ,GAAYC,GAAWC,GAAjGR,CAA4GS,EAAOA,EAAMK,QAPpH,CACjBwP,MAAO,CACLE,UAAW,CACTlL,MAAO,WAKTzE,EAAOqQ,EAAS1H,gBAAgB/I,EAAMI,KAAMJ,EAAM4H,OAEtD6I,EAASpF,UAAUrL,EAAO,WAAYI,EAAMC,EAC9C,GACF,EAEAmQ,GAAcrT,UAAU+O,gBAAkB,SAA0BlM,GAChE,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WACxB,IAMIK,EAAUkQ,GAAUvQ,EAAOA,EAAMK,QANlB,CACjBgQ,WAAW,EACXZ,UAAW,EACXyB,YAAa,KAIX9Q,EAAOqQ,EAAS1H,gBAAgB/I,EAAMI,KAAMJ,EAAM4H,OAEtD6I,EAASpF,UAAUrL,EAAO,YAAaI,EAAMC,EAC/C,GACF,EAEAmQ,GAAcrT,UAAUgU,eAAiB,SAAyBnR,GAC9D,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,EAAO,YAAY,WACpC,IAAIE,EAAe,CACjBK,OAAQ,OACR6Q,UAAW,CACTrQ,OAAQf,EAAMK,QAAQU,QAAU,CAAC,UAAW,aAG5CV,EAAUvC,EAAMA,EAAM0B,EAAgBU,GAAeF,EAAMK,QAAQa,SAAW,CAAC,GAE/Ed,EAAO,IAAIqQ,EAASvP,QAAQ4P,cAAcC,UAC9C3Q,EAAK4Q,UAAU,SAAU,IACzB5Q,EAAK4Q,UAAU,SAAUhR,EAAMK,QAAQgH,OAAS,SAChDjH,EAAK6Q,QAAQjR,EAAMI,MAEnBqQ,EAASpF,UAAUrL,EAAO,WAAYI,EAAMC,EAC9C,GACF,EAEAmQ,GAAcrT,UAAUiP,mBAAqB,SAA6BpM,GACtE,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,GAAO,WAMxB,IALA,IACIK,EAAUkQ,GAAUvQ,EAAOA,EAAMK,QADlB,CAAC,GAGhBF,EAASH,EAAMI,KACfiR,EAAQ,GACHjS,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtCe,EAAOf,GAAG+J,KAAOhJ,EAAOf,GAAG+J,MAAQ,QAEnC,IADA,IAAIrH,EAAI3B,EAAOf,GAAGgB,KACTO,EAAI,EAAGA,EAAImB,EAAEpB,OAAQC,IAAK,CACjC,IAAIiI,EAAM,IAAIJ,MAAMrI,EAAOO,OAAS,GACpCkI,EAAI,GAAK9G,EAAEnB,GAAG,GACdiI,EAAIxJ,EAAI,GAAK0C,EAAEnB,GAAG,GAClB0Q,EAAM/R,KAAKsJ,EACb,CACF,CAEA,IAAIxI,EAAO,IAAIqQ,EAASvP,QAAQ4P,cAAcC,UAC9C3Q,EAAK4Q,UAAU,SAAU,IACzB,IAAK,IAAIvI,EAAM,EAAGA,EAAMtI,EAAOO,OAAQ+H,IACrCrI,EAAK4Q,UAAU,SAAU7Q,EAAOsI,GAAKU,MAEvC/I,EAAK6Q,QAAQI,GAEbZ,EAASpF,UAAUrL,EAAO,eAAgBI,EAAMC,EAClD,GACF,EAEAmQ,GAAcrT,UAAUmU,eAAiB,SAAyBtR,GAC9D,IAAIyQ,EAAWvF,KAEjBA,KAAKwF,cAAc1Q,EAAO,YAAY,WACpC,IAAIE,EAAe,CACjBK,OAAQ,QAGNP,EAAMK,QAAQU,SAChBb,EAAaa,OAASf,EAAMK,QAAQU,QAEtC,IAAIV,EAAUvC,EAAMA,EAAM0B,EAAgBU,GAAeF,EAAMK,QAAQa,SAAW,CAAC,GAE/Ed,EAAO,IAAIqQ,EAASvP,QAAQ4P,cAAcC,UAC9C3Q,EAAK4Q,UAAU,CAAC5F,KAAM,SAAUgE,GAAI,SACpChP,EAAK4Q,UAAU,CAAC5F,KAAM,OAAQgE,GAAI,UAClChP,EAAK4Q,UAAU,CAAC5F,KAAM,OAAQgE,GAAI,QAClChP,EAAK6Q,QAAQjR,EAAMI,MAEnBJ,EAAM4K,QAAQwC,MAAMmE,WAAa,SAEjCd,EAASpF,UAAUrL,EAAO,WAAYI,EAAMC,EAC9C,GACF,EAGAmQ,GAAcrT,UAAUoP,QAAU,SAAkBvM,GAC9CA,EAAMA,OACRA,EAAMA,MAAMwR,YAEhB,EAEAhB,GAAcrT,UAAUkO,UAAY,SAAoBrL,EAAOoL,EAAMhL,EAAMC,GAvM3E,IAAgB+G,GAwMd8D,KAAKqB,QAAQvM,GACTA,EAAMwM,aAENxM,EAAMK,QAAQoM,MAChBC,OAAOC,QAAQC,IAAI,iDAAmDxM,EAAKqR,SAAW,4CAA8CrG,EAAO,gCAAkCyB,KAAKC,UAAUzM,GAAW,MAGzML,EAAMA,MAAQ,IAAIkL,KAAKhK,QAAQ4P,cAAc1F,GAAMpL,EAAM4K,SA/M3CxD,EAgNP,WACLpH,EAAMA,MAAM0R,KAAKtR,EAAMC,EACzB,EAjNIqM,OAAOiF,YACTjF,OAAOiF,YAAY,WAAYvK,GACtBsF,OAAOkF,kBAChBlF,OAAOkF,iBAAiB,SAAUxK,GAAU,GAE9CA,IA6MF,EAEAoJ,GAAcrT,UAAUuT,cAAgB,SAAwB1Q,EAAO6R,EAAMzK,GACzE,IAAIqJ,EAAWvF,KASjB,GAPK9D,IACHA,EAAWyK,EACXA,EAAO,aAGTnN,EAAUpF,KAAK,CAACuS,KAAMA,EAAMzK,SAAUA,IAElCkI,EAAOuC,GACT3G,KAAK4G,mBACA,CACLxC,EAAOuC,IAAQ,EAGf,IAAIE,EAAc,CAChBC,SAAU,CAACH,GACXzK,SAAU,WAAcqJ,EAASqB,cAAgB,GAE/CG,EAASjS,EAAMkS,WACfD,EAAOE,WACTJ,EAAYI,SAAWF,EAAOE,UAEnB,aAATN,GAAuBI,EAAOG,aAChCL,EAAYK,WAAaH,EAAOG,YAGlClH,KAAKhK,QAAQmR,OAAOC,KAAK,UAAWP,EACtC,CACF,EAEAvB,GAAcrT,UAAU2U,aAAe,WACrC,IAAK,IAAI1S,EAAI,EAAGA,EAAIsF,EAAUhE,OAAQtB,IAAK,CACzC,IAAImT,EAAK7N,EAAUtF,GACR8L,KAAKhK,QAAQ4P,gBAA+B,cAAZyB,EAAGV,MAAwB3G,KAAKhK,QAAQ4P,cAAc0B,WAA2B,aAAZD,EAAGV,MAAuB3G,KAAKhK,QAAQ4P,cAAc2B,UAA0B,aAAZF,EAAGV,MAAuB3G,KAAKhK,QAAQ4P,cAAc4B,YAEtOH,EAAGnL,WACH1C,EAAUiO,OAAOvT,EAAG,GACpBA,IAEJ,CACF,EAGAoR,GAAcrT,UAAU4L,gBAAkB,SAA0B5I,EAAQyS,GAG1E,IAFA,IAAItK,EAAO,GACPuK,EAAe,GACVzT,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtC,IAAIZ,EAAI2B,EAAOf,GACfe,EAAOf,GAAG+J,KAAOhJ,EAAOf,GAAG+J,MAAQ,QAEnC,IAAK,IAAIxI,EAAI,EAAGA,EAAInC,EAAE4B,KAAKM,OAAQC,IAAK,CACtC,IAAImB,EAAItD,EAAE4B,KAAKO,GACX/C,EAAqB,aAAfgV,EAA4B9Q,EAAE,GAAGR,UAAYQ,EAAE,GACpDwG,EAAK1K,KACR0K,EAAK1K,GAAO,IAAI4K,MAAMrI,EAAOO,QAC7BmS,EAAavT,KAAK1B,IAEpB0K,EAAK1K,GAAKwB,GAAK0C,EAAE,EACnB,CACF,CAIA,IAFA,IAAIuP,EAAQ,GACR3P,EAAS,GACJmH,EAAM,EAAGA,EAAMgK,EAAanS,OAAQmI,IAAO,CAClD,IAAIJ,EAAMoK,EAAahK,GACnBhG,OAAQ,EACO,aAAf+P,GACF/P,EAAQ,IAAItE,KAAKkK,GACjB/G,EAAOpC,KAAKuD,IAEZA,EAAQ4F,EAEV4I,EAAM/R,KAAK,CAACuD,GAAOiQ,OAAOxK,EAAKG,IACjC,CAEA,IAAI3J,GAAM,EACV,GAAmB,aAAf8T,EACFvB,EAAMjJ,KAAKjH,GAGXrC,EAnjDJ,SAAeoL,GACb,MAAoB,QAAbA,GAAmC,SAAbA,GAAoC,UAAbA,GAAqC,SAAbA,CAC9E,CAijDU6I,CADSnR,EAAkBF,GAAQ,SAEpC,GAAmB,WAAfkR,EAAyB,CAClCvB,EAAMjJ,KAAK7G,GAEX,IAAK,IAAImH,EAAM,EAAGA,EAAM2I,EAAM3Q,OAAQgI,IACpC2I,EAAM3I,GAAK,GAAKxK,EAAMmT,EAAM3I,GAAK,IAGnCkK,EAAa,QACf,CAGA,IAAIxS,EAAO,IAAI8K,KAAKhK,QAAQ4P,cAAcC,UAC1C6B,EAA4B,aAAfA,GAA6B9T,EAAM,OAAS8T,EACzDxS,EAAK4Q,UAAU4B,EAAY,IAC3B,IAAK,IAAII,EAAM,EAAGA,EAAM7S,EAAOO,OAAQsS,IACrC5S,EAAK4Q,UAAU,SAAU7Q,EAAO6S,GAAK7J,MAIvC,OAFA/I,EAAK6Q,QAAQI,GAENjR,CACT,EAEA,IAAI6S,GAAW,GAef,SAASC,GAAWhS,GAGlB,IAFA,IAAIiS,EAdN,SAAwBjS,GACtB,GAAIA,EAAS,CACX,GAAwB,eAApBA,EAAQkS,QACV,OAAO1E,EACF,GAAIxN,EAAQmR,OACjB,OAAO7B,GACF,GAAIlT,EAAW4D,GACpB,OAAO+J,CAEX,CACA,MAAM,IAAI1H,MAAM,kBAClB,CAGoB8P,CAAenS,GAExB9B,EAAI,EAAGA,EAAI6T,GAASvS,OAAQtB,IACnC,GAAI6T,GAAS7T,GAAG8B,UAAYA,EAC1B,OAIJ+R,GAAS3T,KAAK,IAAI6T,EAAYjS,GAChC,CAkBA,SAASoS,GAAYvM,EAAW/G,GAC9B,IAAIuT,EAAS,SAAWxM,EACpByM,EAAcxT,EAAMK,QAAQoT,QAjB5B,UAAW/G,QACbwG,GAAWxG,OAAO2C,OAGhB,eAAgB3C,QAClBwG,GAAWxG,OAAOgH,YAGhBhH,OAAOiH,QAAUjH,OAAOiH,OAAOtB,QACjCa,GAAWxG,OAAOiH,QAYpB,IAAK,IAAIvU,EAAI,EAAGA,EAAI6T,GAASvS,OAAQtB,IAAK,CACxC,IAAIqU,EAAUR,GAAS7T,GACvB,KAAMoU,GAAeA,IAAgBC,EAAQtK,OAAS7L,EAAWmW,EAAQF,IAGvE,OAFAvT,EAAMyT,QAAUA,EAAQtK,KACxBnJ,EAAM4T,gBAAkBH,EACjBA,EAAQF,GAAQvT,EAE3B,CAEA,MAAIiT,GAASvS,OAAS,EACd,IAAI6C,MAAM,iCAAmCwD,GAE7C,IAAIxD,MAAM,0EAEpB,CAEA,IAAIsQ,GAAY,CACdxB,OAAQ,CAAC,EACTyB,UAAW,SAAUzT,GACnB,IAAK,IAAIzC,KAAOyC,EACVnD,OAAOC,UAAUkC,eAAehC,KAAKgD,EAASzC,KAChDiW,GAAU5B,OAAOrU,GAAOyC,EAAQzC,GAGtC,EACAmW,kBAAmB,SAAU9T,GAC3B4T,GAAUxT,QAAUJ,CACtB,EACA+T,UAAW,SAAU5M,GACnB,IAAK,IAAI6M,KAAWJ,GAAUxB,OACxBnV,OAAOC,UAAUkC,eAAehC,KAAKwW,GAAUxB,OAAQ4B,IACzD7M,EAASyM,GAAUxB,OAAO4B,GAGhC,EACAC,WAAY,WACV,IAAK,IAAID,KAAWJ,GAAUxB,OACxBnV,OAAOC,UAAUkC,eAAehC,KAAKwW,GAAUxB,OAAQ4B,KACzDJ,GAAUxB,OAAO4B,GAAS1H,iBACnBsH,GAAUxB,OAAO4B,GAG9B,EACAhC,OAAQ,CAAC,EACT5R,QAAS,CAAC,EACV4S,SAAUA,GACVC,WAAYA,GACZiB,IAAK,SAAUV,GAEb,OADAP,GAAWO,GACJI,EACT,GAaF,SAASO,GAAiBhU,EAAMiU,GAC9B,GAAgB,WAAZA,EACF,OAZJ,SAA4BjU,GAE1B,IADA,IAAI6H,EAAI,GACC7I,EAAI,EAAGA,EAAIgB,EAAKM,OAAQtB,IAC/B6I,EAAE3I,KAAK,CAAClB,EAAQgC,EAAKhB,GAAG,IAAKhB,EAAQgC,EAAKhB,GAAG,IAAKhB,EAAQgC,EAAKhB,GAAG,MAEpE,OAAO6I,CACT,CAMWqM,CAAmBlU,GAG5B,IAAImU,EAEFA,EADc,WAAZF,EACQjW,EACW,aAAZiW,EACC/V,EAEAJ,EAIZ,IADA,IAAI+J,EAAI,GACC7I,EAAI,EAAGA,EAAIgB,EAAKM,OAAQtB,IAC/B6I,EAAE3I,KAAK,CAACiV,EAAQnU,EAAKhB,GAAG,IAAKhB,EAAQgC,EAAKhB,GAAG,MAE/C,OAAO6I,CACT,CAkBA,SAASuM,GAAwBrU,EAAQsU,GACvC,IAAK,IAAIrV,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAEjC,IADA,IAAIgB,EAAOlB,EAAMiB,EAAOf,GAAGgB,MAClBO,EAAI,EAAGA,EAAIP,EAAKM,OAAQC,IAC/B,IAAK8T,EAAKrU,EAAKO,GAAG,IAChB,OAAO,EAIb,OAAO,CACT,CAkBA,SAAS+T,GAAc1U,EAAOqU,EAASM,GACrC,IAAI1U,EAAOD,EAAMK,QACbF,EAASH,EAAM4U,QAGnB5U,EAAMM,oBAAsBtD,EAAQmD,KAAY3C,EAAc2C,EAAO,IACjEH,EAAMM,qBACRH,EAAS,CAAC,CAACgJ,KAAMlJ,EAAKoH,MAAOjH,KAAMD,KAKrCA,EA1BF,SAAoBA,GAElB,IADA,IAAI6O,EAAY,GACP5P,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IAAK,CACtC,IAAIyV,EAAO,CAAC,EACZ,IAAK,IAAIlU,KAAKR,EAAOf,GACflC,OAAOC,UAAUkC,eAAehC,KAAK8C,EAAOf,GAAIuB,KAClDkU,EAAKlU,GAAKR,EAAOf,GAAGuB,IAGxBqO,EAAU1P,KAAKuV,EACjB,CACA,OAAO7F,CACT,CAcW8F,CAAW3U,GACpB,IAAK,IAAIf,EAAI,EAAGA,EAAIe,EAAOO,OAAQtB,IACjCe,EAAOf,GAAGgB,KAAOlB,EAAMiB,EAAOf,GAAGgB,MAGnCJ,EAAM4H,MAAQyM,IAAYpU,EAAK8U,SAAW,SA7D5C,SAAqB5U,EAAQwU,EAAYtU,GACvC,OAAI2U,GAAU7U,IACPE,EAAQ2J,OAAQ3J,EAAQ4J,MAAW5J,EAAQ2J,OAAQzH,EAAOlC,EAAQ2J,OAAY3J,EAAQ4J,OAAQ1H,EAAOlC,EAAQ4J,MAGzG,SAFA,WAIAuK,GAAwBrU,EAAQsC,GAClC,UACGkS,GAAcH,GAAwBrU,EAAQoC,GACjD,WAEA,QAEX,CA+CuD0S,CAAY9U,EAAQwU,EAAY1U,IAGrF,IAAK,IAAIwI,EAAM,EAAGA,EAAMtI,EAAOO,OAAQ+H,IACrCtI,EAAOsI,GAAKrI,KAAOgU,GAAiBjU,EAAOsI,GAAKrI,KAAMJ,EAAM4H,OAG9D,OAAOzH,CACT,CAEA,SAAS+U,GAAclV,GAErB,IADA,IAAImV,EAAcjW,EAAMc,EAAM4U,SACrBxV,EAAI,EAAGA,EAAI+V,EAAYzU,OAAQtB,IACtC+V,EAAY/V,GAAK,CAAClB,EAAMiX,EAAY/V,GAAG,IAAKhB,EAAQ+W,EAAY/V,GAAG,KAErE,OAAO+V,CACT,CAEA,SAASH,GAAU5U,EAAM2G,GACvB,GAAkB,aAAdA,GAA0C,aAAdA,GAA0C,aAAdA,EAC1D,OAAuB,IAAhB3G,EAAKM,OAEZ,IAAK,IAAItB,EAAI,EAAGA,EAAIgB,EAAKM,OAAQtB,IAC/B,GAAIgB,EAAKhB,GAAGgB,KAAKM,OAAS,EACxB,OAAO,EAGX,OAAO,CAEX,CAuDA,IAAI0U,GAAkB,GAClBC,GAAkB,EAClBC,GAAc,EAOlB,SAASC,KACP,GAAIF,GAAkBC,GAAa,CACjC,IAAIE,EAAUJ,GAAgBK,QAC1BD,IACFH,KAYWK,EAXHF,EAAQ,GAWAG,EAXIH,EAAQ,GAWHI,EAXOJ,EAAQ,IAYxCK,EAAM,IAAIC,gBACVC,KAAK,MAAOL,GAAK,GACrBG,EAAIG,iBAAiB,eAAgB,oBACrCH,EAAII,OAAS,WARbZ,KACAE,KASqB,MAAfM,EAAIK,OACNP,EAAQ9I,KAAK5N,MAAM4W,EAAIM,eAEvBP,EAAMC,EAAIO,WAEd,EACAP,EAAIQ,OAtBAd,KAEJ,CAQF,IAAiBG,EAAKC,EAASC,EACzBC,CARN,CAwBA,SAASS,GAAQ1L,EAAS/E,GACxB+E,EAAQ2L,YAAc1Q,CACxB,CAGA,SAAS2Q,GAAW5L,EAAS6L,EAASC,GAC/BA,IACHD,EAAU,wBAA0BA,GAEtCH,GAAQ1L,EAAS6L,GACjB7L,EAAQwC,MAAMvI,MAAQ,SACxB,CAEA,SAAS8R,GAAa3W,GACpB,IACEA,EAAM4W,UACR,CAAE,MAAOC,GAEP,MADAL,GAAWxW,EAAM4K,QAASiM,EAAIJ,SACxBI,CACR,CACF,CAEA,SAASC,GAAgB9W,EAAO+W,EAAYC,GAM1C,GAJIA,GAAehX,EAAMK,QAAQ4W,UAAkC,kBAAfF,GAAiD,oBAAfA,IACpFT,GAAQtW,EAAM4K,QAAS5K,EAAMK,QAAQ4W,SAGb,kBAAfF,EAlEQrB,EAmELqB,EAnEUpB,EAmEE,SAAUvV,GAChCJ,EAAM4U,QAAUxU,EAChBuW,GAAa3W,EACf,EAtE+B4V,EAsE5B,SAAUa,GACXD,GAAWxW,EAAM4K,QAAS6L,EAC5B,EAvEFrB,GAAgB9V,KAAK,CAACoW,EAAKC,EAASC,IACpCL,UAuEO,GAA0B,oBAAfwB,EAChB,IACEA,GAAW,SAAU3W,GACnBJ,EAAM4U,QAAUxU,EAChBuW,GAAa3W,EACf,IAAG,SAAUyW,GACXD,GAAWxW,EAAM4K,QAAS6L,GAAS,EACrC,GACF,CAAE,MAAOI,GACPL,GAAWxW,EAAM4K,QAASiM,GAAK,EACjC,MAEA7W,EAAM4U,QAAUmC,EAChBJ,GAAa3W,GAtFjB,IAAqB0V,EAAKC,EAASC,CAwFnC,CAEA,SAASsB,GAAYnQ,EAAW/G,GAC9B,GAAIgV,GAAUhV,EAAMI,KAAM2G,GAAY,CACpC,IAAI0P,EAAUzW,EAAMK,QAAQ8W,OAAUnX,EAAMK,QAAQ+W,UAAYpX,EAAMK,QAAQ+W,SAASD,OAAU,UACjGb,GAAQtW,EAAM4K,QAAS6L,EACzB,MACEnD,GAAYvM,EAAW/G,GAEnBA,EAAMK,QAAQgX,WAAarX,EAAMsX,oBAAwC,YAAlBtX,EAAMyT,SA1JrE,SAA2BzT,GACzB,IAAIqX,EAAWrX,EAAMK,QAAQgX,UACZ,IAAbA,EACFA,EAAW,CAAC,EACiB,kBAAbA,IAChBA,EAAW,CAACE,SAAUF,IAGxB,IAAIG,EAAOC,SAASC,cAAc,KAClCF,EAAKH,SAAWA,EAASE,UAAY,YACrCC,EAAKpK,MAAMzH,SAAW,WACtB6R,EAAKpK,MAAMuD,IAAM,OACjB6G,EAAKpK,MAAMuK,MAAQ,OACnBH,EAAKpK,MAAMwK,OAAS,IACpBJ,EAAKpK,MAAMmE,WAAa,OACxBiG,EAAK9Z,OAAS,SAEd,IAAIma,EAAQJ,SAASC,cAAc,OAGnCG,EAAMC,IAAM,2BAA8BC,mBADhC,+wBAEVF,EAAMG,IAAM,WACZH,EAAMzK,MAAMzC,MAAQ,OACpBkN,EAAMzK,MAAMwD,OAAS,OACrBiH,EAAMzK,MAAM6K,OAAS,OACrBT,EAAKU,YAAYL,GAEjB,IAAIjN,EAAU5K,EAAM4K,QACpBA,EAAQwC,MAAMzH,SAAW,WAEzB3F,EAAMsX,oBAAqB,EAG3BtX,EAAMmY,aAAevN,EAAQgH,iBAAiB,aAAa,SAAUwG,GACnE,IAAIC,EAAUD,EAAEE,cAEVD,IAAYA,IAAYnN,MAASA,KAAKqN,SAASF,MAAcrY,EAAMK,QAAQgX,WAC/EG,EAAKgB,KAAOxY,EAAMyY,QAAQpB,GAC1BzM,EAAQsN,YAAYV,GAExB,IAGAxX,EAAM0Y,aAAe9N,EAAQgH,iBAAiB,YAAY,SAAUwG,GAClE,IAAIC,EAAUD,EAAEE,cACXD,IAAYA,IAAYnN,MAASA,KAAKqN,SAASF,KAC9Cb,EAAKmB,YACPnB,EAAKmB,WAAWC,YAAYpB,EAGlC,GACF,CAwGMqB,CAAkB7Y,EAGxB,CAeA,IAAIqP,GAAQ,SAAezE,EAASmM,EAAY1W,GAC9C6K,KAAKN,QAdP,SAAoBA,GAClB,GAAuB,kBAAZA,EAAsB,CAC/B,IAAIkO,EAAYlO,EAEhB,KADAA,EAAU6M,SAASsB,eAAenO,IAEhC,MAAM,IAAIrH,MAAM,sBAAwBuV,EAE5C,CACA,OAAOlO,CACT,CAKiBoO,CAAWpO,GAC1BM,KAAK7K,QAAUvC,EAAM+V,GAAUxT,QAASA,GAAW,CAAC,GACpD6K,KAAK6L,WAAaA,EAGd7L,KAAKN,QAAQwE,KACfyE,GAAUxB,OAAOnH,KAAKN,QAAQwE,IAAMlE,MAGtC4L,GAAgB5L,KAAM6L,GAAY,GAE9B7L,KAAK7K,QAAQ4Y,SACf/N,KAAKgO,cAET,EAEA7J,GAAMlS,UAAU6b,WAAa,WAC3B,OAAO9N,KAAKN,OACd,EAEAyE,GAAMlS,UAAUgc,cAAgB,WAC9B,OAAOjO,KAAK6L,UACd,EAEA1H,GAAMlS,UAAUic,QAAU,WACxB,OAAOlO,KAAK9K,IACd,EAEAiP,GAAMlS,UAAUkc,WAAa,WAC3B,OAAOnO,KAAK7K,OACd,EAEAgP,GAAMlS,UAAUmc,eAAiB,WAC/B,OAAOpO,KAAKlL,KACd,EAEAqP,GAAMlS,UAAUoc,WAAa,WAC3B,OAAOrO,KAAKuI,OACd,EAEApE,GAAMlS,UAAUqc,WAAa,SAAqBzC,EAAY1W,GAC5D6K,KAAK6L,WAAaA,EACd1W,GACF6K,KAAKuO,gBAAgBpZ,GAEvByW,GAAgB5L,KAAM6L,GAAY,EACpC,EAEA1H,GAAMlS,UAAUuc,WAAa,SAAqBrZ,GAChD6K,KAAKuO,gBAAgBpZ,GACrB6K,KAAKyO,QACP,EAEAtK,GAAMlS,UAAUwc,OAAS,WACvB7C,GAAgB5L,KAAMA,KAAK0J,QAC7B,EAEAvF,GAAMlS,UAAUyc,YAAc,WAC5B,GAA+B,kBAApB1O,KAAK6L,WAAyB,CAEvC,IAAI8C,GAAwC,IAAlC3O,KAAK6L,WAAW+C,QAAQ,KAAc,IAAM,IAEtDhD,GAAgB5L,KADNA,KAAK6L,WAAa8C,EAAM,MAAO,IAAKtb,MAAQ+C,UAExD,KAAsC,oBAApB4J,KAAK6L,YACrBD,GAAgB5L,KAAMA,KAAK6L,WAE/B,EAEA1H,GAAMlS,UAAU+b,aAAe,WAC3B,IAAIzI,EAAWvF,KAEb+N,EAAU/N,KAAK7K,QAAQ4Y,QAE3B,GAAIA,GAAsC,kBAApB/N,KAAK6L,YAAsD,oBAApB7L,KAAK6L,WAChE,MAAM,IAAIxT,MAAM,qDAGlB,IAAK2H,KAAK6O,WAAY,CACpB,IAAId,EAKF,MAAM,IAAI1V,MAAM,uBAJhB2H,KAAK6O,WAAaC,aAAY,WAC5BvJ,EAASmJ,aACX,GAAa,IAAVX,EAIP,CACF,EAEA5J,GAAMlS,UAAU8c,YAAc,WACxB/O,KAAK6O,aACPG,cAAchP,KAAK6O,YACnB7O,KAAK6O,WAAa,KAEtB,EAEA1K,GAAMlS,UAAUsb,QAAU,SAAkBpB,GAE1C,GAAqB,YAAjBnM,KAAKuI,QAAuB,CAC9B,GAAI4D,GAAYA,EAAS8C,YAAsC,gBAAxB9C,EAAS8C,WAA8B,CAE5E,IAAIC,EAASlP,KAAKlL,MAAMoa,OACpBpN,EAAM9B,KAAKlL,MAAMgN,IACjBqN,EAAY5C,SAASC,cAAc,UACnC4C,EAASD,EAAUE,WAAW,MAMlC,OALAF,EAAU1P,MAAQqC,EAAIoN,OAAOzP,MAC7B0P,EAAUzJ,OAAS5D,EAAIoN,OAAOxJ,OAC9B0J,EAAOE,UAAYnD,EAAS8C,WAC5BG,EAAOG,SAAS,EAAG,EAAGJ,EAAU1P,MAAO0P,EAAUzJ,QACjD0J,EAAOI,UAAUN,EAAQ,EAAG,GACrBC,EAAUM,UAAU,YAC7B,CACE,OAAOzP,KAAKlL,MAAM4a,eAEtB,CACE,MAAM,IAAIrX,MAAM,sCAEpB,EAEA8L,GAAMlS,UAAUoP,QAAU,WACxBrB,KAAKsB,WAAY,EACjBtB,KAAK+O,cAED/O,KAAK0I,iBACP1I,KAAK0I,gBAAgBrH,QAAQrB,MAG3BA,KAAKiN,cACPjN,KAAKN,QAAQiQ,oBAAoB,YAAa3P,KAAKiN,cAGjDjN,KAAKwN,cACPxN,KAAKN,QAAQiQ,oBAAoB,WAAY3P,KAAKwN,aAEtD,EAEArJ,GAAMlS,UAAUsc,gBAAkB,SAA0BpZ,GAC1D,IAAIya,EAAgBza,EAAQ4Y,SAAW5Y,EAAQ4Y,UAAY/N,KAAK7K,QAAQ4Y,QACxE/N,KAAK7K,QAAUvC,EAAM+V,GAAUxT,QAASA,GACpCya,IACF5P,KAAK+O,cACL/O,KAAKgO,eAET,EAEA7J,GAAMlS,UAAUyZ,SAAW,WACzB1L,KAAK9K,KAAO8K,KAAK6P,gBACjB7D,GAAYhM,KAAK8P,cAAe9P,KAClC,EAEAmE,GAAMlS,UAAU+U,SAAW,WACzB,OAAO2B,GAAU5B,MACnB,EAEA,IAAIO,GAA0B,SAAUnD,GACtC,SAASmD,IACPnD,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQmD,EAAU2I,UAAY9L,GACnCmD,EAAUrV,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACpDqV,EAAUrV,UAAUke,YAAc7I,EAElCA,EAAUrV,UAAU4d,cAAgB,WAClC,OAAOrG,GAAcxJ,KACvB,EAEAsH,EAAUrV,UAAU6d,YAAc,WAChC,MAAO,WACT,EAEOxI,CACT,CAlB6B,CAkB3BnD,IAEEiM,GAAyB,SAAUjM,GACrC,SAASiM,IACPjM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQiM,EAASH,UAAY9L,GAClCiM,EAASne,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACnDme,EAASne,UAAUke,YAAcC,EAEjCA,EAASne,UAAU4d,cAAgB,WACjC,OAAO7F,GAAchK,KACvB,EAEAoQ,EAASne,UAAU6d,YAAc,WAC/B,MAAO,UACT,EAEOM,CACT,CAlB4B,CAkB1BjM,IAEEkM,GAA4B,SAAUlM,GACxC,SAASkM,IACPlM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQkM,EAAYJ,UAAY9L,GACrCkM,EAAYpe,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACtDoe,EAAYpe,UAAUke,YAAcE,EAEpCA,EAAYpe,UAAU4d,cAAgB,WACpC,OAAOrG,GAAcxJ,KAAM,MAAM,EACnC,EAEAqQ,EAAYpe,UAAU6d,YAAc,WAClC,MAAO,aACT,EAEOO,CACT,CAlB+B,CAkB7BlM,IAEEmM,GAAyB,SAAUnM,GACrC,SAASmM,IACPnM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQmM,EAASL,UAAY9L,GAClCmM,EAASre,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACnDqe,EAASre,UAAUke,YAAcG,EAEjCA,EAASre,UAAU4d,cAAgB,WACjC,OAAOrG,GAAcxJ,KAAM,MAAM,EACnC,EAEAsQ,EAASre,UAAU6d,YAAc,WAC/B,MAAO,UACT,EAEOQ,CACT,CAlB4B,CAkB1BnM,IAEEoM,GAA0B,SAAUpM,GACtC,SAASoM,IACPpM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQoM,EAAUN,UAAY9L,GACnCoM,EAAUte,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACpDse,EAAUte,UAAUke,YAAcI,EAElCA,EAAUte,UAAU4d,cAAgB,WAClC,OAAOrG,GAAcxJ,KACvB,EAEAuQ,EAAUte,UAAU6d,YAAc,WAChC,MAAO,WACT,EAEOS,CACT,CAlB6B,CAkB3BpM,IAEEqD,GAAyB,SAAUrD,GACrC,SAASqD,IACPrD,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQqD,EAASyI,UAAY9L,GAClCqD,EAASvV,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACnDuV,EAASvV,UAAUke,YAAc3I,EAEjCA,EAASvV,UAAU4d,cAAgB,WACjC,OAAO7F,GAAchK,KACvB,EAEAwH,EAASvV,UAAU6d,YAAc,WAC/B,MAAO,UACT,EAEOtI,CACT,CAlB4B,CAkB1BrD,IAEEqM,GAA6B,SAAUrM,GACzC,SAASqM,IACPrM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQqM,EAAaP,UAAY9L,GACtCqM,EAAave,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACvDue,EAAave,UAAUke,YAAcK,EAErCA,EAAave,UAAU4d,cAAgB,WACrC,OAAOrG,GAAcxJ,KAAM,SAC7B,EAEAwQ,EAAave,UAAU6d,YAAc,WACnC,MAAO,cACT,EAEOU,CACT,CAlBgC,CAkB9BrM,IAEEsM,GAA4B,SAAUtM,GACxC,SAASsM,IACPtM,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAcA,OAZK7L,IAAQsM,EAAYR,UAAY9L,GACrCsM,EAAYxe,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACtDwe,EAAYxe,UAAUke,YAAcM,EAEpCA,EAAYxe,UAAU4d,cAAgB,WACpC,OAAOrG,GAAcxJ,KAAM,SAC7B,EAEAyQ,EAAYxe,UAAU6d,YAAc,WAClC,MAAO,aACT,EAEOW,CACT,CAlB+B,CAkB7BtM,IAEEoD,GAAyB,SAAUpD,GACrC,SAASoD,IACPpD,EAAM4L,MAAM/P,KAAMgQ,UACpB,CAmBA,OAjBK7L,IAAQoD,EAAS0I,UAAY9L,GAClCoD,EAAStV,UAAYD,OAAOke,OAAQ/L,GAASA,EAAMlS,WACnDsV,EAAStV,UAAUke,YAAc5I,EAEjCA,EAAStV,UAAU4d,cAAgB,WAEjC,IADA,IAAI3a,EAAO8K,KAAK0J,QACPxV,EAAI,EAAGA,EAAIgB,EAAKM,OAAQtB,IAC/BgB,EAAKhB,GAAG,GAAKd,EAAO8B,EAAKhB,GAAG,IAC5BgB,EAAKhB,GAAG,GAAKd,EAAO8B,EAAKhB,GAAG,IAE9B,OAAOgB,CACT,EAEAqS,EAAStV,UAAU6d,YAAc,WAC/B,MAAO,UACT,EAEOvI,CACT,CAvB4B,CAuB1BpD,IAEFwE,GAAUrB,UAAYA,GACtBqB,GAAUyH,SAAWA,GACrBzH,GAAU0H,YAAcA,GACxB1H,GAAU2H,SAAWA,GACrB3H,GAAU4H,UAAYA,GACtB5H,GAAUnB,SAAWA,GACrBmB,GAAU6H,aAAeA,GACzB7H,GAAU8H,YAAcA,GACxB9H,GAAUpB,SAAWA,GAGC,qBAAX/F,QAA2BA,OAAOmH,YAC3CnH,OAAOmH,UAAYA,GAGnB4D,SAAS7F,iBAAiB,4BAA4B,YACf,IAAjCiC,GAAU5B,OAAO2J,aACnB/H,GAAUK,YAEd,IAGAuD,SAAS7F,iBAAiB,uBAAuB,YACV,IAAjCiC,GAAU5B,OAAO2J,aACnB/H,GAAUK,YAEd,IAGA2H,YAAW,WACTnP,OAAOoP,cAAc,IAAIC,MAAM,kBACjC,GAAG,IAILlI,GAAUmI,QAAUnI,6BC5/EpBA,GAAUM,IAAI","sources":["webpack://app/./node_modules/chartkick/dist/chartkick.esm.js","webpack://app/./node_modules/chartkick/highcharts/highcharts.esm.js"],"sourcesContent":["/*!\n * Chartkick.js v5.0.1\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * MIT License\n */\n\nfunction isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n}\n\nfunction isFunction(variable) {\n return variable instanceof Function;\n}\n\nfunction isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n}\n\n// https://github.com/madrobby/zepto/blob/master/src/zepto.js\nfunction extend(target, source) {\n for (var key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") { continue; }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n}\n\nfunction merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n}\n\nvar DATE_PATTERN = /^(\\d\\d\\d\\d)(?:-)?(\\d\\d)(?:-)?(\\d\\d)$/i;\n\nfunction negativeValues(series) {\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n for (var j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction toStr(obj) {\n return \"\" + obj;\n}\n\nfunction toFloat(obj) {\n return parseFloat(obj);\n}\n\nfunction toDate(obj) {\n if (obj instanceof Date) {\n return obj;\n } else if (typeof obj === \"number\") {\n return new Date(obj * 1000); // ms\n } else {\n var s = toStr(obj);\n var matches = s.match(DATE_PATTERN);\n if (matches) {\n var year = parseInt(matches[1], 10);\n var month = parseInt(matches[2], 10) - 1;\n var day = parseInt(matches[3], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = s.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n // Date.parse returns milliseconds if valid and NaN if invalid\n return new Date(Date.parse(str) || s);\n }\n }\n}\n\nfunction toArr(obj) {\n if (isArray(obj)) {\n return obj;\n } else {\n var arr = [];\n for (var i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n arr.push([i, obj[i]]);\n }\n }\n return arr;\n }\n}\n\nfunction jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n\n return options;\n };\n}\n\nfunction sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n}\n\nfunction sortByNumberSeries(a, b) {\n return a[0] - b[0];\n}\n\n// needed since sort() without arguments does string comparison\nfunction sortByNumber(a, b) {\n return a - b;\n}\n\nfunction every(values, fn) {\n for (var i = 0; i < values.length; i++) {\n if (!fn(values[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isDay(timeUnit) {\n return timeUnit === \"day\" || timeUnit === \"week\" || timeUnit === \"month\" || timeUnit === \"year\";\n}\n\nfunction calculateTimeUnit(values, maxDay) {\n if ( maxDay === void 0 ) maxDay = false;\n\n if (values.length === 0) {\n return null;\n }\n\n var minute = every(values, function (d) { return d.getMilliseconds() === 0 && d.getSeconds() === 0; });\n if (!minute) {\n return null;\n }\n\n var hour = every(values, function (d) { return d.getMinutes() === 0; });\n if (!hour) {\n return \"minute\";\n }\n\n var day = every(values, function (d) { return d.getHours() === 0; });\n if (!day) {\n return \"hour\";\n }\n\n if (maxDay) {\n return \"day\";\n }\n\n var month = every(values, function (d) { return d.getDate() === 1; });\n if (!month) {\n var dayOfWeek = values[0].getDay();\n var week = every(values, function (d) { return d.getDay() === dayOfWeek; });\n return (week ? \"week\" : \"day\");\n }\n\n var year = every(values, function (d) { return d.getMonth() === 0; });\n if (!year) {\n return \"month\";\n }\n\n return \"year\";\n}\n\nfunction isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n}\n\nfunction isNumber(obj) {\n return typeof obj === \"number\";\n}\n\nvar byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\nfunction formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var positive = value >= 0;\n if (!positive) {\n value *= -1;\n }\n\n var baseValue = axis ? options.byteScale : value;\n\n var suffixIdx;\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n\n // flip value back\n if (!positive) {\n value *= -1;\n }\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n}\n\nfunction seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n}\n\nvar baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n};\n\nvar defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n};\n\n// http://there4.io/2012/05/02/google-chart-color-list/\nvar defaultColors = [\n \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n];\n\nfunction hideLegend$2(options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n}\n\nfunction setTitle$2(options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n}\n\nfunction setMin$2(options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n}\n\nfunction setMax$2(options, max) {\n options.scales.y.max = toFloat(max);\n}\n\nfunction setBarMin$1(options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n}\n\nfunction setBarMax$1(options, max) {\n options.scales.x.max = toFloat(max);\n}\n\nfunction setStacked$2(options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n}\n\nfunction setXtitle$2(options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n}\n\nfunction setYtitle$2(options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n}\n\n// https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\nfunction addOpacity(hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n}\n\nfunction notnull(x) {\n return x !== null && x !== undefined;\n}\n\nfunction setLabelSize(chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n}\n\nfunction calculateScale(series) {\n var scale = 1;\n var max = maxAbsY(series);\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n return scale;\n}\n\nfunction setFormatOptions$1(chart, options, chartType) {\n // options to apply to x and r values for scatter and bubble\n var numericOptions = {\n thousands: chart.options.thousands,\n decimal: chart.options.decimal\n };\n\n // options to apply to y value\n var formatOptions = merge({\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n }, numericOptions);\n\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{data: series}];\n }\n\n // set step size\n formatOptions.byteScale = calculateScale(series);\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n\n if ((chartType === \"scatter\" || chartType === \"bubble\") && !options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n return formatValue(\"\", value, numericOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n\n var dataPoint = context.parsed;\n return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = context.raw;\n return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ', ' + formatValue('', dataPoint.v, numericOptions) + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n return formatValue('', context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n }\n\n // avoid formatting x-axis labels\n // by default, Chart.js applies locale\n if ((chartType === \"line\" || chartType === \"area\") && chart.xtype === \"number\") {\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n return toStr(value);\n };\n }\n\n if (!options.plugins.tooltip.callbacks.title) {\n options.plugins.tooltip.callbacks.title = function (context) {\n return toStr(context[0].parsed.x);\n };\n }\n }\n}\n\nfunction maxAbsY(series) {\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n for (var j = 0; j < data.length; j++) {\n var v = Math.abs(data[j][1]);\n if (v > max) {\n max = v;\n }\n }\n }\n return max;\n}\n\nfunction maxR(series) {\n // start at zero since radius must be positive\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n for (var j = 0; j < data.length; j++) {\n var v = data[j][2];\n if (v > max) {\n max = v;\n }\n }\n }\n return max;\n}\n\nvar jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\nfunction prepareDefaultData(chart) {\n var series = chart.data;\n var rows = {};\n var keys = [];\n var labels = [];\n var values = [];\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n for (var j = 0; j < data.length; j++) {\n var d = data[j];\n var key = chart.xtype === \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n keys.push(key);\n }\n rows[key][i] = d[1];\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n keys.sort(sortByNumber);\n }\n\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n values.push([]);\n }\n\n for (var i$2 = 0; i$2 < keys.length; i$2++) {\n var key$1 = keys[i$2];\n\n var label = chart.xtype === \"datetime\" ? new Date(key$1) : key$1;\n labels.push(label);\n\n var row = rows[key$1];\n for (var j$1 = 0; j$1 < series.length; j$1++) {\n var v = row[j$1];\n // Chart.js doesn't like undefined\n values[j$1].push(v === undefined ? null : v);\n }\n }\n\n return {\n labels: labels,\n values: values\n };\n}\n\nfunction prepareBubbleData(chart) {\n var series = chart.data;\n var values = [];\n var max = maxR(series);\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n var points = [];\n for (var j = 0; j < data.length; j++) {\n var v = data[j];\n points.push({\n x: v[0],\n y: v[1],\n r: v[2] * 20 / max,\n // custom attribute, for tooltip\n v: v[2]\n });\n }\n values.push(points);\n }\n\n return {\n labels: [],\n values: values\n };\n}\n\n// scatter or numeric line/area\nfunction prepareNumberData(chart) {\n var series = chart.data;\n var values = [];\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n data.sort(sortByNumberSeries);\n\n var points = [];\n for (var j = 0; j < data.length; j++) {\n var v = data[j];\n points.push({\n x: v[0],\n y: v[1]\n });\n }\n values.push(points);\n }\n\n return {\n labels: [],\n values: values\n };\n}\n\nfunction prepareData(chart, chartType) {\n if (chartType === \"bubble\") {\n return prepareBubbleData(chart);\n } else if (chart.xtype === \"number\" && chartType !== \"bar\" && chartType !== \"column\") {\n return prepareNumberData(chart);\n } else {\n return prepareDefaultData(chart);\n }\n}\n\nfunction createDataTable(chart, options, chartType) {\n var ref = prepareData(chart, chartType);\n var labels = ref.labels;\n var values = ref.values;\n\n var series = chart.data;\n var datasets = [];\n var colors = chart.options.colors || defaultColors;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n\n // use colors for each bar for single series format\n var color = (void 0);\n var backgroundColor = (void 0);\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n for (var j = 0; j < colors.length; j++) {\n backgroundColor[j] = addOpacity(color[j], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: values[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n if (chart.xtype === \"datetime\") {\n var timeUnit = calculateTimeUnit(labels);\n\n // for empty datetime chart\n if (labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n }\n\n if (labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (var i$1 = 1; i$1 < labels.length; i$1++) {\n var value = labels[i$1].getTime();\n if (value < minTime) {\n minTime = value;\n }\n if (value > maxTime) {\n maxTime = value;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n if (timeUnit === \"year\" || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (timeUnit === \"month\" || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (timeUnit === \"week\" || timeUnit === \"day\" || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (timeUnit === \"hour\" || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (timeUnit === \"minute\") {\n options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n if (timeUnit === \"week\" && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.x.ticks.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (timeUnit === \"year\") {\n options.scales.x.time.tooltipFormat = \"yyyy\";\n } else if (timeUnit === \"month\") {\n options.scales.x.time.tooltipFormat = \"MMM yyyy\";\n } else if (timeUnit === \"week\" || timeUnit === \"day\") {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (timeUnit === \"hour\") {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (timeUnit === \"minute\") {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n }\n\n return {\n labels: labels,\n datasets: datasets\n };\n}\n\nvar defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n};\n\ndefaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n if (!chartType) {\n chartType = \"line\";\n }\n\n var chartOptions = {};\n\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n\n var data = createDataTable(chart, options, chartType);\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n};\n\ndefaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n\n this.drawChart(chart, \"pie\", data, options);\n};\n\ndefaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\";\n\n // ensure gridlines have proper orientation\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"index\";\n }\n this.drawChart(chart, \"bar\", data, options);\n};\n\ndefaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"area\");\n};\n\ndefaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n chartType = chartType || \"scatter\";\n\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n\n // prevent grouping hover and tooltips\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n};\n\ndefaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n this.renderScatterChart(chart, \"bubble\");\n};\n\ndefaultExport$2.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n};\n\ndefaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n};\n\nvar defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n};\n\nfunction hideLegend$1(options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n}\n\nfunction setTitle$1(options, title) {\n options.title.text = title;\n}\n\nfunction setMin$1(options, min) {\n options.yAxis.min = min;\n}\n\nfunction setMax$1(options, max) {\n options.yAxis.max = max;\n}\n\nfunction setStacked$1(options, stacked) {\n var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n}\n\nfunction setXtitle$1(options, title) {\n options.xAxis.title.text = title;\n}\n\nfunction setYtitle$1(options, title) {\n options.yAxis.title.text = title;\n}\n\nvar jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\nfunction setFormatOptions(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n // skip when axis is an array (like with min/max)\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF ' + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n}\n\nvar defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n};\n\ndefaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions);\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions(chart, options, chartType);\n\n var series = chart.data;\n for (var i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n var data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (var j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n } else if (chart.xtype === \"number\") {\n data.sort(sortByNumberSeries);\n }\n series[i].marker = {symbol: \"circle\"};\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n};\n\ndefaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n\n this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options);\n var rows = [];\n var categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n\n for (var j = 0; j < s.data.length; j++) {\n var d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n\n var newSeries = [];\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var d$1 = [];\n for (var j$1 = 0; j$1 < categories.length; j$1++) {\n d$1.push(rows[categories[j$1]][i$1] || 0);\n }\n\n var d2 = {\n name: series[i$1].name || \"Value\",\n data: d$1\n };\n if (series[i$1].stack) {\n d2.stack = series[i$1].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n};\n\ndefaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"areaspline\");\n};\n\ndefaultExport$1.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n};\n\ndefaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n};\n\nvar loaded = {};\nvar callbacks = [];\n\n// Set chart options\nvar defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n};\n\nfunction hideLegend(options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n}\n\nfunction setTitle(options, title) {\n options.title = title;\n options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n}\n\nfunction setMin(options, min) {\n options.vAxis.viewWindow.min = min;\n}\n\nfunction setMax(options, max) {\n options.vAxis.viewWindow.max = max;\n}\n\nfunction setBarMin(options, min) {\n options.hAxis.viewWindow.min = min;\n}\n\nfunction setBarMax(options, max) {\n options.hAxis.viewWindow.max = max;\n}\n\nfunction setStacked(options, stacked) {\n options.isStacked = stacked || false;\n}\n\nfunction setXtitle(options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n}\n\nfunction setYtitle(options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n}\n\nvar jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\nfunction resize(callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n}\n\nvar defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n};\n\ndefaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n\n var series = chart.data;\n var rows2 = [];\n for (var i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n var d = series[i].data;\n for (var j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n data.addColumn(\"number\", series[i$1].name);\n }\n data.addRows(rows2);\n\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({type: \"string\", id: \"Name\"});\n data.addColumn({type: \"date\", id: \"Start\"});\n data.addColumn({type: \"date\", id: \"End\"});\n data.addRows(chart.data);\n\n chart.element.style.lineHeight = \"normal\";\n\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n};\n\n// TODO remove resize events\ndefaultExport.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n};\n\ndefaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n};\n\ndefaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({pack: pack, callback: callback});\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () { this$1$1.runCallbacks(); }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n};\n\ndefaultExport.prototype.runCallbacks = function runCallbacks () {\n for (var i = 0; i < callbacks.length; i++) {\n var cb = callbacks[i];\n var call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n};\n\n// cant use object as key\ndefaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n var rows = [];\n var sortedLabels = [];\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (var j = 0; j < s.data.length; j++) {\n var d = s.data[j];\n var key = columnType === \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = d[1];\n }\n }\n\n var rows2 = [];\n var values = [];\n for (var j$1 = 0; j$1 < sortedLabels.length; j$1++) {\n var i$1 = sortedLabels[j$1];\n var value = (void 0);\n if (columnType === \"datetime\") {\n value = new Date(i$1);\n values.push(value);\n } else {\n value = i$1;\n }\n rows2.push([value].concat(rows[i$1]));\n }\n\n var day = true;\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n\n var timeUnit = calculateTimeUnit(values, true);\n day = isDay(timeUnit);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (var i$2 = 0; i$2 < rows2.length; i$2++) {\n rows2[i$2][0] = toStr(rows2[i$2][0]);\n }\n\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (var i$3 = 0; i$3 < series.length; i$3++) {\n data.addColumn(\"number\", series[i$3].name);\n }\n data.addRows(rows2);\n\n return data;\n};\n\nvar adapters = [];\n\nfunction getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n throw new Error(\"Unknown adapter\");\n}\n\nfunction addAdapter(library) {\n var adapterType = getAdapterType(library);\n\n for (var i = 0; i < adapters.length; i++) {\n if (adapters[i].library === library) {\n return;\n }\n }\n\n adapters.push(new adapterType(library));\n}\n\nfunction loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n}\n\n// TODO remove chartType if cross-browser way\n// to get the name of the chart class\nfunction callAdapter(chartType, chart) {\n var fnName = \"render\" + chartType;\n var adapterName = chart.options.adapter;\n\n loadAdapters();\n\n for (var i = 0; i < adapters.length; i++) {\n var adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n}\n\nvar Chartkick = {\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n Chartkick.config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function () {\n for (var chartId in Chartkick.charts) {\n if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: {},\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function (adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n};\n\nfunction formatSeriesBubble(data) {\n var r = [];\n for (var i = 0; i < data.length; i++) {\n r.push([toFloat(data[i][0]), toFloat(data[i][1]), toFloat(data[i][2])]);\n }\n return r;\n}\n\n// casts data to proper type\n// sorting is left to adapters\nfunction formatSeriesData(data, keyType) {\n if (keyType === \"bubble\") {\n return formatSeriesBubble(data);\n }\n\n var keyFunc;\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n var r = [];\n for (var i = 0; i < data.length; i++) {\n r.push([keyFunc(data[i][0]), toFloat(data[i][1])]);\n }\n return r;\n}\n\nfunction detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n}\n\nfunction detectXTypeWithFunction(series, func) {\n for (var i = 0; i < series.length; i++) {\n var data = toArr(series[i].data);\n for (var j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n}\n\n// creates a shallow copy of each element of the array\n// elements are expected to be objects\nfunction copySeries(series) {\n var newSeries = [];\n for (var i = 0; i < series.length; i++) {\n var copy = {};\n for (var j in series[i]) {\n if (Object.prototype.hasOwnProperty.call(series[i], j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n}\n\nfunction processSeries(chart, keyType, noDatetime) {\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n chart.singleSeriesFormat = !isArray(series) || !isPlainObject(series[0]);\n if (chart.singleSeriesFormat) {\n series = [{name: opts.label, data: series}];\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (var i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType || (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n // right format\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n series[i$1].data = formatSeriesData(series[i$1].data, chart.xtype);\n }\n\n return series;\n}\n\nfunction processSimple(chart) {\n var perfectData = toArr(chart.rawData);\n for (var i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n}\n\nfunction dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction addDownloadButton(chart) {\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {filename: download};\n }\n\n var link = document.createElement(\"a\");\n link.download = download.filename || \"chart.png\";\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n\n var image = document.createElement(\"img\");\n // icon from Font Awesome, modified to set fill color\n var svg = \"\";\n image.src = \"data:image/svg+xml;utf8,\" + (encodeURIComponent(svg));\n image.alt = \"Download\";\n image.style.width = \"20px\";\n image.style.height = \"20px\";\n image.style.border = \"none\";\n link.appendChild(image);\n\n var element = chart.element;\n element.style.position = \"relative\";\n\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = element.addEventListener(\"mouseover\", function (e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || (related !== this && !this.contains(related))) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = element.addEventListener(\"mouseout\", function (e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !this.contains(related))) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n}\n\nvar pendingRequests = [];\nvar runningRequests = 0;\nvar maxRequests = 4;\n\nfunction pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n}\n\nfunction runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n}\n\nfunction requestComplete() {\n runningRequests--;\n runNext();\n}\n\nfunction getJSON(url, success, error) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText));\n } else {\n error(xhr.statusText);\n }\n };\n xhr.send();\n}\n\n// helpers\n\nfunction setText(element, text) {\n element.textContent = text;\n}\n\n// TODO remove prefix for all messages\nfunction chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n}\n\nfunction errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n}\n\nfunction fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n}\n\nfunction renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart);\n // TODO add downloadSupported method to adapter\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n}\n\nfunction getElement(element) {\n if (typeof element === \"string\") {\n var elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n return element;\n}\n\n// define classes\n\nvar Chart = function Chart(element, dataSource, options) {\n this.element = getElement(element);\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n\n // TODO handle charts without an id for eachChart and destroyAll\n if (this.element.id) {\n Chartkick.charts[this.element.id] = this;\n }\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n};\n\nChart.prototype.getElement = function getElement () {\n return this.element;\n};\n\nChart.prototype.getDataSource = function getDataSource () {\n return this.dataSource;\n};\n\nChart.prototype.getData = function getData () {\n return this.data;\n};\n\nChart.prototype.getOptions = function getOptions () {\n return this.options;\n};\n\nChart.prototype.getChartObject = function getChartObject () {\n return this.chart;\n};\n\nChart.prototype.getAdapter = function getAdapter () {\n return this.adapter;\n};\n\nChart.prototype.updateData = function updateData (dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource, true);\n};\n\nChart.prototype.setOptions = function setOptions (options) {\n this.__updateOptions(options);\n this.redraw();\n};\n\nChart.prototype.redraw = function redraw () {\n fetchDataSource(this, this.rawData);\n};\n\nChart.prototype.refreshData = function refreshData () {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n};\n\nChart.prototype.startRefresh = function startRefresh () {\n var this$1$1 = this;\n\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval(function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n};\n\nChart.prototype.stopRefresh = function stopRefresh () {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n};\n\nChart.prototype.toImage = function toImage (download) {\n // TODO move logic to adapter\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n};\n\nChart.prototype.destroy = function destroy () {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n this.element.removeEventListener(\"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n this.element.removeEventListener(\"mouseout\", this.__leaveEvent);\n }\n};\n\nChart.prototype.__updateOptions = function __updateOptions (options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n};\n\nChart.prototype.__render = function __render () {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n};\n\nChart.prototype.__config = function __config () {\n return Chartkick.config;\n};\n\nvar LineChart = /*@__PURE__*/(function (Chart) {\n function LineChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create( Chart && Chart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName () {\n return \"LineChart\";\n };\n\n return LineChart;\n}(Chart));\n\nvar PieChart = /*@__PURE__*/(function (Chart) {\n function PieChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create( Chart && Chart.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName () {\n return \"PieChart\";\n };\n\n return PieChart;\n}(Chart));\n\nvar ColumnChart = /*@__PURE__*/(function (Chart) {\n function ColumnChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName () {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n}(Chart));\n\nvar BarChart = /*@__PURE__*/(function (Chart) {\n function BarChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create( Chart && Chart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName () {\n return \"BarChart\";\n };\n\n return BarChart;\n}(Chart));\n\nvar AreaChart = /*@__PURE__*/(function (Chart) {\n function AreaChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create( Chart && Chart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName () {\n return \"AreaChart\";\n };\n\n return AreaChart;\n}(Chart));\n\nvar GeoChart = /*@__PURE__*/(function (Chart) {\n function GeoChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create( Chart && Chart.prototype );\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName () {\n return \"GeoChart\";\n };\n\n return GeoChart;\n}(Chart));\n\nvar ScatterChart = /*@__PURE__*/(function (Chart) {\n function ScatterChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData () {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName () {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n}(Chart));\n\nvar BubbleChart = /*@__PURE__*/(function (Chart) {\n function BubbleChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData () {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName () {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n}(Chart));\n\nvar Timeline = /*@__PURE__*/(function (Chart) {\n function Timeline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create( Chart && Chart.prototype );\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData () {\n var data = this.rawData;\n for (var i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName () {\n return \"Timeline\";\n };\n\n return Timeline;\n}(Chart));\n\nChartkick.LineChart = LineChart;\nChartkick.PieChart = PieChart;\nChartkick.ColumnChart = ColumnChart;\nChartkick.BarChart = BarChart;\nChartkick.AreaChart = AreaChart;\nChartkick.GeoChart = GeoChart;\nChartkick.ScatterChart = ScatterChart;\nChartkick.BubbleChart = BubbleChart;\nChartkick.Timeline = Timeline;\n\n// not ideal, but allows for simpler integration\nif (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n\n // clean up previous charts before Turbolinks loads new page\n document.addEventListener(\"turbolinks:before-render\", function () {\n if (Chartkick.config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // clean up previous charts before Turbo loads new page\n document.addEventListener(\"turbo:before-render\", function () {\n if (Chartkick.config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // use setTimeout so charting library can come later in same JS file\n setTimeout(function () {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n}\n\n// backwards compatibility for esm require\nChartkick.default = Chartkick;\n\nexport { Chartkick as default };\n","import Chartkick from \"chartkick\"\nimport Highcharts from \"highcharts\"\n\nChartkick.use(Highcharts)\n"],"names":["isArray","variable","Object","prototype","toString","call","isFunction","Function","isPlainObject","extend","target","source","key","undefined","merge","obj1","obj2","DATE_PATTERN","toStr","obj","toFloat","parseFloat","toDate","Date","s","matches","match","year","parseInt","month","day","str","replace","parse","toArr","arr","i","hasOwnProperty","push","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","opts","chartOptions","series","data","options","singleSeriesFormat","legend","title","min","length","j","negativeValues","max","stacked","colors","xtitle","ytitle","library","sortByTime","a","b","getTime","sortByNumberSeries","sortByNumber","every","values","fn","calculateTimeUnit","maxDay","d","getMilliseconds","getSeconds","getMinutes","getHours","getDate","dayOfWeek","getDay","getMonth","isDate","isNaN","isNumber","byteSuffixes","formatValue","pre","value","axis","prefix","suffix","precision","round","byteScale","positive","suffixIdx","baseValue","Error","toPrecision","zeros","num","Math","pow","toFixed","thousands","decimal","parts","split","seriesOption","option","baseOptions","maintainAspectRatio","animation","plugins","tooltip","displayColors","callbacks","font","size","color","interaction","defaultOptions$2","scales","y","ticks","maxTicksLimit","grid","x","drawOnChartArea","time","defaultColors","hideLegend$2","display","position","setTitle$2","text","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","hex","opacity","result","exec","notnull","calculateScale","scale","v","abs","maxAbsY","setFormatOptions$1","chartType","numericOptions","formatOptions","bytes","stepSize","callback","label","context","dataset","dataPoint","parsed","raw","valueLabel","xtype","jsOptions$2","prepareData","maxR","points","r","labels","prepareBubbleData","sort","prepareNumberData","rows","keys","Array","i$1","i$2","key$1","row","j$1","prepareDefaultData","createDataTable","ref","datasets","backgroundColor","name","fill","borderColor","borderWidth","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","stack","tension","pointRadius","pointHoverRadius","xmin","xmax","timeUnit","minTime","maxTime","step","timeDiff","unit","displayFormats","hour","minute","width","element","offsetWidth","unitStepSize","ceil","tooltipFormat","defaultExport$2","this","renderLineChart","type","drawChart","renderPieChart","donut","cutout","point","renderColumnChart","barOptions","indexAxis","maxLabelSize","getLabelForValue","substring","setLabelSize","mode","renderAreaChart","renderBarChart","renderScatterChart","showLine","renderBubbleChart","destroy","destroyed","code","window","console","log","JSON","stringify","innerHTML","ctx","getElementsByTagName","defaultOptions$1","xAxis","style","fontSize","yAxis","credits","enabled","plotOptions","areaspline","area","marker","useUTC","hideLegend$1","verticalAlign","layout","align","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","formatter","pointFormatter","pointFormat","defaultExport$1","curve","symbol","pie","innerSize","categories","newSeries","d$1","d2","renderTo","id","Chart","loaded","chartArea","fontName","pointSize","textStyle","alignment","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","setBarMin","setBarMax","isStacked","italic","jsOptions","defaultExport","this$1$1","waitForLoaded","top","height","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","rows2","renderTimeline","lineHeight","clearChart","toJSON","draw","attachEvent","addEventListener","pack","runCallbacks","loadOptions","packages","config","__config","language","mapsApiKey","charts","load","cb","LineChart","Timeline","GeoChart","splice","columnType","sortedLabels","concat","isDay","i$3","adapters","addAdapter","adapterType","product","getAdapterType","callAdapter","fnName","adapterName","adapter","Highcharts","google","__adapterObject","Chartkick","configure","setDefaultOptions","eachChart","chartId","destroyAll","use","formatSeriesData","keyType","formatSeriesBubble","keyFunc","detectXTypeWithFunction","func","processSeries","noDatetime","rawData","copy","copySeries","discrete","dataEmpty","detectXType","processSimple","perfectData","pendingRequests","runningRequests","maxRequests","runNext","request","shift","url","success","error","xhr","XMLHttpRequest","open","setRequestHeader","onload","status","responseText","statusText","send","setText","textContent","chartError","message","noPrefix","errorCatcher","__render","err","fetchDataSource","dataSource","showLoading","loading","renderChart","empty","messages","download","__downloadAttached","filename","link","document","createElement","right","zIndex","image","src","encodeURIComponent","alt","border","appendChild","__enterEvent","e","related","relatedTarget","contains","href","toImage","__leaveEvent","parentNode","removeChild","addDownloadButton","elementId","getElementById","getElement","refresh","startRefresh","getDataSource","getData","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","redraw","refreshData","sep","indexOf","intervalId","setInterval","stopRefresh","clearInterval","background","canvas","tmpCanvas","tmpCtx","getContext","fillStyle","fillRect","drawImage","toDataURL","toBase64Image","removeEventListener","updateRefresh","__processData","__chartName","apply","arguments","__proto__","create","constructor","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","autoDestroy","setTimeout","dispatchEvent","Event","default"],"sourceRoot":""}