{"version":3,"file":"js/vendor.c81f93234ab4eaa534bb.c3f920a5.js","mappings":"qFAAA,SAASA,IAAQ,CAEjB,SAASC,EAASC,GAEjB,IAAID,EAAWC,EAAcC,WAAWF,SACxC,OAAOG,OAAOC,KAAKJ,GAAUK,KAAI,SAASC,GACzC,OAAON,EAASM,EACjB,GACD,CAEA,SAASC,IACR,OAAOC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,EAC7C,CAEA,SAASC,EAAQC,GAChB,OAAiB,OAAbA,GAAyC,qBAAbA,IAED,kBAAbA,EACVC,SAASD,KAEPA,EAEX,CAEA,SAASE,EAASC,EAAKC,EAAMC,GAC5B,IAAIC,EAAS,IACRH,EAAIG,EAASF,KACbD,EAAIC,IACPD,EAAIG,EAASF,GAAQD,EAAIC,GAAMG,KAAKJ,GACpCA,EAAIC,GAAQ,WACX,IAAII,EAAO,CAAEL,EAAIG,EAASF,IAAQK,OAAOC,MAAMC,UAAUC,MAAMC,KAAKC,YACpE,OAAOT,EAAKU,MAAMZ,EAAKK,EACxB,GAEAL,EAAIC,GAAQ,WACX,IAAII,EAAO,MAAEQ,GAAYP,OAAOC,MAAMC,UAAUC,MAAMC,KAAKC,YAC3D,OAAOT,EAAKU,MAAMZ,EAAKK,EACxB,EAGH,CAEA,SAASS,EAASC,EAAKC,GACtBD,EAAIE,SAAQ,SAASC,IACnBF,EAASE,EAAGF,GAAUE,IACxB,GACD,CAEA,SAASC,EAAoBC,GAC5B,MAAO,KAAOA,EAAU,GAAGC,cAAgBD,EAAUE,UAAU,EAChE,CAEA,SAASC,EAAiBC,EAAMC,GAC/B,IACC,OAAO,IAAIC,WAAWF,EAAMC,EAC7B,CAAE,MAAOE,GACR,IACC,IAAIC,EAAIC,SAASC,YAAY,cAkB7B,OAjBAF,EAAEG,eACDP,EACAC,EAAcO,UACdP,EAAcQ,WACdR,EAAcS,KACdT,EAAcU,OACdV,EAAcW,QACdX,EAAcY,QACdZ,EAAca,QACdb,EAAcc,QACdd,EAAce,QACdf,EAAcgB,OACdhB,EAAciB,SACdjB,EAAckB,QACdlB,EAAcmB,OACdnB,EAAcoB,eAERjB,CACR,CAAE,MAAOkB,GACR,IAAIC,EAAIlB,SAASC,YAAY,SAM7B,OALAiB,EAAEC,UACDxB,EACAC,EAAcO,UACdP,EAAcQ,YAERc,CACR,CACD,CACD,CAEAE,EAAOC,QAAU,SAASC,GACzB,IAAIC,EAAeD,EAAME,QAEzB,SAASC,EAAWC,GAOnB,OANAA,EAASH,EAAaI,YAAYL,EAAMM,WAAWC,SAAUH,GACzDH,EAAaO,QAAQJ,EAAOK,cAC/BL,EAAOK,YAAY3C,SAAQ,SAAS/B,GACnCA,EAAW2E,MAAQT,EAAaI,YAAYL,EAAMM,WAAWK,cAAe5E,EAAW2E,MACxF,IAEMN,CACR,CAEA,SAASQ,EAAeC,EAASJ,EAAaK,EAAUC,GACvD,IAAIC,EAASP,EAAYQ,QAAO,SAASlF,GACxC,QAASA,EAAWmF,OAAOF,OAAOH,EACnC,IAAG3E,KAAI,SAASH,GACf,OAAOA,EAAWmF,OAAOF,OAAOH,EACjC,IAEIM,EAAMH,EAAO9E,KAAI,SAASkF,GAC7B,OAAOC,OAAOD,EAAMD,IACrB,IAAGG,QAAO,SAASC,EAAGC,GACrB,OAAO7E,SAAS6E,KAAOC,MAAMD,IAAMA,EAAID,EAAIC,EAAID,CAChD,GAAGT,GAECY,EAAMV,EAAO9E,KAAI,SAASkF,GAC7B,OAAOC,OAAOD,EAAMM,IACrB,IAAGJ,QAAO,SAASC,EAAGC,GACrB,OAAO7E,SAAS6E,KAAOC,MAAMD,IAAMA,EAAID,EAAIC,EAAID,CAChD,GAAGR,GAEH,MAAO,CACNI,IAAKA,EACLO,IAAKA,EAEP,CAEA,SAASC,EAAiBC,GAEzB,IAAIR,EAAQR,EAAegB,EAAMzF,GAAIN,EAAS+F,EAAMC,OAAQD,EAAMT,IAAKS,EAAMF,KACtC,qBAA5BE,EAAME,QAAQC,MAAMZ,KAAmE,qBAArCS,EAAME,QAAQC,MAAMC,eAChFJ,EAAMT,IAAMC,EAAMD,KAEoB,qBAA5BS,EAAME,QAAQC,MAAML,KAAmE,qBAArCE,EAAME,QAAQC,MAAME,eAChFL,EAAMF,IAAMN,EAAMM,KAEfE,EAAMM,wBACTN,EAAMM,wBAER,CAEA,SAASC,EAAgB1B,EAAa2B,GACrC,IAAIC,EAAchB,OAAOiB,kBAEzB,OAAO7B,EACLQ,QAAO,SAASsB,GAChB,OAAOA,EAAQC,QAAQJ,EAASK,EAAGL,EAASM,EAC7C,IACCpB,QAAO,SAASqB,EAAcJ,GAC9B,IAAIK,EAASL,EAAQM,iBACjBC,EAAW7C,EAAa8C,sBAAsBX,EAAUQ,GAU5D,OARIE,EAAWT,GACdM,EAAe,CAACJ,GAChBF,EAAcS,GACJA,IAAaT,GAEvBM,EAAaK,KAAKT,GAGZI,CACR,GAAG,IACFM,MAAK,SAAS1B,EAAGC,GAGjB,IAAI0B,EAAQ3B,EAAE4B,UAAWC,EAAQ5B,EAAE2B,UACnC,OAAQD,EAAQE,GAASF,EAAQE,EAASF,EAAQE,EAAQ7B,EAAE8B,OAAS7B,EAAE6B,MACxE,IACC/F,MAAM,EAAG,GAAG,EACf,CAEA,MAAO,CACN6C,WAAYA,EACZtE,SAAUA,EACV8B,SAAUA,EACV/B,KAAMA,EACNQ,SAAUA,EACVK,QAASA,EACTG,SAAUA,EACV+E,iBAAkBA,EAClBQ,gBAAiBA,EACjBnE,oBAAqBA,EACrBI,iBAAkBA,EAEpB,C,wBCtLA0B,EAAOC,QAAU,SAASC,GACzB,IAAIC,EAAeD,EAAME,QACrBA,EAAU,EAAQ,MAAR,CAAyBF,GAEnCsD,EAAoB,aACpBC,EAAkB,WAElBC,EAAiBxD,EAAMM,WAAWmD,QAAQC,OAAO,CACpDC,cAAe,WACd,IAAIC,EAAQC,KAAK3C,OACbY,EAAU+B,KAAK/B,QAGnB8B,EAAM5C,OAAS,CAAC,EAChB4C,EAAM5C,OAAOc,EAAQgC,SAAW,CAC/B3C,IAAKW,EAAQiC,MACbrC,IAAKI,EAAQkC,UAAYlC,EAAQiC,MAEnC,EACAE,UAAW,WACV,IAMIC,EAAOC,EANPP,EAAQC,KAAK3C,OACbY,EAAU+B,KAAK/B,QACfhG,EAAgB+H,KAAK/H,cACrBsI,EAAMtI,EAAc+F,MAAMuC,IAE1BxC,EAAQ9F,EAAcuI,OAAOvC,EAAQgC,SAOzC,GALIlC,IACHsC,EAAQhE,EAAQzD,QAAQqF,EAAQiC,OAASnC,EAAM0C,iBAAiBxC,EAAQiC,OAASQ,IACjFJ,EAAWjE,EAAQzD,QAAQqF,EAAQkC,UAAYpC,EAAM0C,iBAAiBxC,EAAQkC,UAAYE,IAGvFzC,MAAMyC,GAAV,CAIA,IAAIM,EAAY1I,EAAc0I,UAG9BZ,EAAMa,KAAO,CACZC,GAAIF,EAAUG,KACdC,GAAIJ,EAAUK,MACdC,GAAIN,EAAUO,IACdC,GAAIR,EAAUS,QAGXpB,KAAK/B,QAAQoD,MAAQ5B,GACxBM,EAAMc,GAAKF,EAAUG,KACrBf,EAAMgB,GAAKJ,EAAUK,MACrBjB,EAAMkB,GAAKZ,EACXN,EAAMoB,GAAKb,IAEXP,EAAMkB,GAAKN,EAAUO,IACrBnB,EAAMoB,GAAKR,EAAUS,OACrBrB,EAAMc,GAAKR,EACXN,EAAMgB,GAAKT,GAGZP,EAAMuB,KAAO,IAAIC,EAAaxB,GAC9BA,EAAMsB,KAAOpD,EAAQoD,KAGrBtB,EAAMyB,qBAAuBvD,EAAQpB,MAAM4E,gBAC3C1B,EAAM2B,gBAAkBzD,EAAQpB,MAAM8E,WACtC5B,EAAM6B,cAAgB3D,EAAQpB,MAAMgF,SACpC9B,EAAM+B,eAAiB7D,EAAQpB,MAAMkF,UACrChC,EAAMiC,eAAiB/D,EAAQpB,MAAMoF,UACrClC,EAAMmC,cAAgBjE,EAAQpB,MAAMsF,SACpCpC,EAAMqC,cAAgBnE,EAAQpB,MAAMwF,SACpCtC,EAAMuC,kBAAoBrE,EAAQpB,MAAM0F,aACxCxC,EAAMyC,cAAgBvE,EAAQpB,MAAM0B,SACpCwB,EAAM0C,aAAexE,EAAQpB,MAAM6F,QACnC3C,EAAM4C,aAAe1E,EAAQpB,MAAM+F,QACnC7C,EAAM8C,aAAe5E,EAAQpB,MAAMiG,QACnC/C,EAAMgD,aAAe9E,EAAQpB,MAAMmG,QAEnCzC,EAAI0C,KAAO7G,EAAa8G,WAAWnD,EAAM6B,cAAe7B,EAAM+B,eAAgB/B,EAAM2B,iBACpF,IAAIyB,EAAY5C,EAAI6C,YAAYrD,EAAMgD,cAAcM,MAChDC,EAAa/C,EAAI6C,YAAY,KAAKC,MAClCb,EAAgBe,EAAuBxD,EAAOoD,EAAWG,EAAYvD,EAAMmC,cAAenC,EAAMqC,eACpGrC,EAAMyD,OAAShB,EAAc5D,EAAImB,EAAMmC,cACvCnC,EAAM0D,OAASjB,EAAc3D,EAAIkB,EAAMqC,cACvCrC,EAAM2D,WAAaP,EAAa,EAAIpD,EAAMmC,cAC1CnC,EAAM4D,YAAcL,EAAc,EAAIvD,EAAMqC,cAE5CrC,EAAM6D,YAAc3F,EAAQ2F,YAC5B7D,EAAM8D,YAAc5F,EAAQ4F,YAC5B9D,EAAM+D,WAAa7F,EAAQ6F,YAAc,GACzC/D,EAAMgE,iBAAmB9F,EAAQ8F,kBAAoB,CAtDrD,CAuDD,EACApF,QAAS,SAASqF,EAAQC,GACzB,IAAIlE,EAAQC,KAAK3C,OAEjB,OAEC0C,EAAMuB,MACNvB,EAAMuB,KAAK4C,WAAWF,EAAQC,EAAQjE,KAAKmE,cAG3CpE,EAAM8C,cACN9C,EAAMgD,cACNiB,GAAUjE,EAAMyD,QAChBQ,GAAUjE,EAAMyD,OAASzD,EAAM2D,YAC/BO,GAAUlE,EAAM0D,QAChBQ,GAAUlE,EAAM0D,OAAS1D,EAAM4D,WAEjC,EACA3E,eAAgB,WACf,MAAO,CACNJ,GAAIoB,KAAK3C,OAAO0D,GAAKf,KAAK3C,OAAOwD,IAAM,EACvChC,GAAImB,KAAK3C,OAAO8D,GAAKnB,KAAK3C,OAAO4D,IAAM,EAEzC,EACAmD,SAAU,WACT,OAAO5L,KAAK6L,IAAIrE,KAAK3C,OAAO2D,MAAQhB,KAAK3C,OAAOyD,KACjD,EACAqD,UAAW,WACV,OAAOnE,KAAK3C,OAAOwG,aAAe,CACnC,EACAvE,QAAS,WACR,OAAO9G,KAAK8L,KAAK9L,KAAK+L,IAAIvE,KAAKoE,WAAY,GAAK5L,KAAK+L,IAAIvE,KAAKmE,YAAa,GAC5E,EACAK,KAAM,WACL,IAAItJ,EAAO8E,KAAKyE,MACZlE,EAAMP,KAAK/H,cAAc+F,MAAMuC,IAE9BrF,EAAK0F,OAIVL,EAAImE,OAGJnE,EAAIoE,YACJpE,EAAIqE,KAAK1J,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKK,GAAI/F,EAAK0F,KAAKG,GAAK7F,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKO,GAAKjG,EAAK0F,KAAKK,IAC3FV,EAAIK,OAEJL,EAAIsE,UAAY3J,EAAK2I,YACrBtD,EAAIuE,YAAc5J,EAAK0I,YAEnBrD,EAAIwE,aACPxE,EAAIwE,YAAY7J,EAAK4I,YAEtBvD,EAAIyE,eAAiB9J,EAAK6I,iBAG1BxD,EAAIoE,YACJpE,EAAI0E,OAAO/J,EAAK2F,GAAI3F,EAAK+F,IACzBV,EAAI2E,OAAOhK,EAAK6F,GAAI7F,EAAKiG,IACzBZ,EAAI4E,SAEAjK,EAAK2H,cAAgB3H,EAAK6H,eAC7BxC,EAAIoE,YACJpE,EAAIqE,KAAK1J,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKK,GAAI/F,EAAK0F,KAAKG,GAAK7F,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKO,GAAKjG,EAAK0F,KAAKK,IAC3FV,EAAIK,OAEJL,EAAI6E,UAAYlK,EAAKsG,qBAErBpF,EAAaiJ,qBACZ9E,EACArF,EAAKsI,OACLtI,EAAKuI,OACLvI,EAAKwI,WACLxI,EAAKyI,YACLzI,EAAKoH,mBAEN/B,EAAI+E,OAGJ/E,EAAI0C,KAAO7G,EAAa8G,WACvBhI,EAAK0G,cACL1G,EAAK4G,eACL5G,EAAKwG,iBAENnB,EAAI6E,UAAYlK,EAAK8G,eACrBzB,EAAIgF,UAAY,SAChBhF,EAAIiF,aAAe,SACnBjF,EAAIkF,SACHvK,EAAK6H,aACL7H,EAAKsI,OAAUtI,EAAKwI,WAAa,EACjCxI,EAAKuI,OAAUvI,EAAKyI,YAAc,IAIpCpD,EAAImF,UACL,IAGD,SAASnE,EAAarG,GAIrB,IAAIN,GAAKM,EAAK6F,GAAK7F,EAAK2F,KAAO3F,EAAKiG,GAAKjG,EAAK+F,IAC1CtD,EAAIzC,EAAK2F,IAAM,EAEnBb,KAAKpF,EAAIA,EACToF,KAAKrC,EAAIA,EAETqC,KAAK2F,KAAO,SAAS9G,GAEpB,OAAOjE,GAAKiE,EAAI3D,EAAK+F,IAAMtD,CAC5B,EAEAqC,KAAK4F,KAAO,SAAShH,GACpB,OAASA,EAAIjB,GAAK/C,EAAKM,EAAK+F,EAC7B,EAEAjB,KAAKkE,WAAa,SAAStF,EAAGC,EAAGgH,GAChCA,EAAUA,GAAW,KACrB,IAAIC,EAAK9F,KAAK4F,KAAKhH,GAClBmH,EAAK/F,KAAK2F,KAAK9G,GAChB,QACG/F,SAASgN,IAAOtN,KAAK6L,IAAIxF,EAAIiH,GAAMD,MACnC/M,SAASiN,IAAOvN,KAAK6L,IAAIzF,EAAImH,GAAMF,EAEvC,CACD,CAEA,SAAStC,EAAuBrI,EAAMmI,EAAO2C,EAAQC,EAAUC,GAC9D,IAAI5E,EAAOpG,EAAKoG,KACZ6E,EAAM,CAAC,EAAGC,EAAK,EAAGC,EAAK,EAE3B,QAAQ,GAEP,KAAKnL,EAAKmG,MAAQ3B,GAAyC,OAAtBxE,EAAKsH,cACzC6D,EAAKH,EAAYhL,EAAKyH,aACtByD,EAAM/C,EAAQ,EAAKnI,EAAKuH,aACxB0D,EAAItH,EAAI3D,EAAK+F,GAAKoF,EAClBF,EAAIvH,GAAK9F,SAASwI,EAAK1G,GAAK0G,EAAKqE,KAAKQ,EAAItH,GAAK3D,EAAK2F,IAAMuF,EAC3D,MAGA,KAAKlL,EAAKmG,MAAQ3B,GAAyC,UAAtBxE,EAAKsH,cACzC6D,EAAKL,EAASE,EAAYhL,EAAKyH,aAC/ByD,EAAM/C,EAAQ,EAAKnI,EAAKuH,aACxB0D,EAAItH,EAAI3D,EAAKiG,GAAKkF,EAClBF,EAAIvH,GAAK9F,SAASwI,EAAK1G,GAAK0G,EAAKqE,KAAKQ,EAAItH,GAAK3D,EAAK2F,IAAMuF,EAC3D,MAGA,KAAKlL,EAAKmG,MAAQ5B,GAA2C,QAAtBvE,EAAKsH,cAC3C4D,EAAKH,EAAW/K,EAAKuH,aACrB4D,GAAOL,EAAS,EAAK9K,EAAKyH,aAC1BwD,EAAIvH,EAAI1D,EAAK2F,GAAKuF,EAClBD,EAAItH,EAAIyC,EAAKsE,KAAKO,EAAIvH,GAAKyH,EAC5B,MAGA,KAAKnL,EAAKmG,MAAQ5B,GAA2C,SAAtBvE,EAAKsH,cAC3C4D,EAAK/C,EAAQ4C,EAAW/K,EAAKuH,aAC7B4D,GAAOL,EAAS,EAAK9K,EAAKyH,aAC1BwD,EAAIvH,EAAI1D,EAAK6F,GAAKqF,EAClBD,EAAItH,EAAIyC,EAAKsE,KAAKO,EAAIvH,GAAKyH,EAC5B,MAGA,QACCF,EAAIvH,GAAM1D,EAAK2F,GAAK3F,EAAK6F,GAAKsC,GAAS,EAAKnI,EAAKuH,aACjD0D,EAAItH,GAAM3D,EAAK+F,GAAK/F,EAAKiG,GAAK6E,GAAU,EAAK9K,EAAKyH,aAGpD,OAAOwD,CACR,CAEA,OAAOxG,CACR,C,wBCzQA,IAAIxD,EAAQ,EAAQ,OACpBA,EAA0B,oBAAZ,EAAyBA,EAAQmK,OAAOnK,MAGtDA,EAAMM,WAAaN,EAAMM,YAAc,CAAC,EAExCN,EAAMM,WAAW8J,gBAAkB,CAClCC,UAAW,YACXC,kBAAmB,oBACnBC,mBAAoB,sBAGrBvK,EAAMM,WAAWC,SAAW,CAC3BiK,SAAU,oBACVC,cAAe,IACfC,OAAQ,GACRjK,YAAa,IAGdT,EAAMM,WAAWK,cAAgB,CAChC2E,gBAAiB,kBACjBE,WAAYxF,EAAMO,SAASoK,OAAOC,kBAClClF,SAAU1F,EAAMO,SAASoK,OAAOE,gBAChCjF,UAAW,OACXE,UAAW,OACXE,SAAU,EACVE,SAAU,EACVE,aAAc,EACdhE,SAAU,SACVmE,QAAS,EACTE,QAAS,EACTE,SAAS,EACTE,QAAS,MAGV7G,EAAMM,WAAWmD,QAAU,EAAQ,MAAR,CAAwBzD,GAEnDA,EAAMM,WAAWwK,MAAQ,CACxB3F,KAAM,EAAQ,MAAR,CAA2BnF,GACjC+K,IAAK,EAAQ,MAAR,CAA0B/K,IAGhC,IAAIgL,EAAmB,EAAQ,MAAR,CAA2BhL,GAElDF,EAAOC,QAAUiL,EACjBhL,EAAMiL,cAAcC,SAASF,E,wBC9C7BlL,EAAOC,QAAU,SAASC,GACzB,IAAIC,EAAeD,EAAME,QACrBA,EAAU,EAAQ,MAAR,CAAwBF,GAEtC,SAASmL,EAAoBT,GAC5B,IAAIU,GAAQ,EACRC,EAAiBX,EAAOzJ,QAAO,SAAShD,GAC3C,OAAQA,GACP,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aAEJ,OADAmN,GAAQ,GACD,EAER,QACC,OAAO,EAEV,IAIA,OAHIA,IAAkD,IAAzCC,EAAeC,QAAQ,cACnCD,EAAerI,KAAK,aAEdqI,CACR,CAEA,SAASE,EAAW3L,GACnB,IAAI4L,EAAK3H,KAAK9H,WACVF,EAAWqE,EAAQrE,SAASgI,MAC5BzB,EAAWnC,EAAawL,oBAAoB7L,EAAGiE,KAAKhC,OACpDU,EAAUrC,EAAQiC,gBAAgBtG,EAAUuG,GAC5CsI,EAASS,EAAoBK,EAAG1J,QAAQ4I,QACxCD,EAAgBe,EAAG1J,QAAQ2I,cAC3BiB,EAAgB,GAChBC,EAAmBzL,EAAQlC,oBAAoB4B,EAAEvB,MACjDyD,GAAWS,GAAW,CAAC,GAAGT,QAsC9B,GAnCe,cAAXlC,EAAEvB,OACDkE,IAAYA,EAAQqJ,SAEvB,CAAC,aAAc,aAAa9N,SAAQ,SAASG,GAC5C,IAAI0N,EAAmBzL,EAAQlC,oBAAoBC,GAC/C4N,EAAa3L,EAAQ9B,iBAAiBH,EAAW2B,GACrD2C,EAAQqJ,UAAW,EACsB,oBAA9B9J,EAAQ6J,IAClBD,EAAc1I,KAAK,CAAElB,EAAQ6J,GAAmBE,EAAYtJ,GAE9D,IACWA,GAEX1G,EAASiC,SAAQ,SAASyE,GACzB,GAAIA,EAAQqJ,SAAU,CACrBrJ,EAAQqJ,UAAW,EACnB,IAAI9J,EAAUS,EAAQT,QACtB,CAAC,WAAY,cAAchE,SAAQ,SAASG,GAC3C,IAAI0N,EAAmBzL,EAAQlC,oBAAoBC,GAC/C4N,EAAa3L,EAAQ9B,iBAAiBH,EAAW2B,GACZ,oBAA9BkC,EAAQ6J,IAClBD,EAAc1I,KAAK,CAAElB,EAAQ6J,GAAmBE,EAAYtJ,GAE9D,GACD,CACD,KAUEA,GAAWmI,EAAOY,QAAQ,aAAe,GAAmC,oBAAvBxJ,EAAQgK,WAA2B,CAC3F,GAAe,UAAXlM,EAAEvB,MAA+C,oBAApByD,EAAQiK,QAQxC,OAPAC,aAAazJ,EAAQ0J,cACrB1J,EAAQ0J,aAAeC,YAAW,kBAC1B3J,EAAQ0J,aACfnK,EAAQiK,QAAQxO,KAAKgF,EAAS3C,EAC/B,GAAG6K,GACH7K,EAAEuM,gCACFvM,EAAEwM,iBAEmB,aAAXxM,EAAEvB,MAAuBkE,EAAQ0J,eAC3CD,aAAazJ,EAAQ0J,qBACd1J,EAAQ0J,aAEjB,CAGI1J,GAAgD,oBAA9BT,EAAQ6J,IAA6D,IAAzBD,EAAcW,QAC/EX,EAAc1I,KAAK,CAAElB,EAAQ6J,GAAmB/L,EAAG2C,IAGhDmJ,EAAcW,OAAS,IAC1BzM,EAAEuM,2BACFvM,EAAEwM,iBACFV,EAAc5N,SAAQ,SAASwO,GAE9BA,EAAa,GAAG/O,KAAK+O,EAAa,GAAIA,EAAa,GACpD,IAEF,CAEA,MAAO,CACNf,WAAYA,EACZJ,oBAAqBA,EAEvB,C,wBC3GArL,EAAOC,QAAU,SAASC,GACzB,IAAIC,EAAeD,EAAME,QAErBA,EAAU,EAAQ,MAAR,CAAwBF,GAClC0K,EAAS,EAAQ,MAAR,CAAuB1K,GAEhCuM,EAAkBvM,EAAMM,WAAWwK,MAEvC,SAAS0B,EAAuBC,GAC/BvM,EAAQtD,SAAS6P,EAAa,mBAAmB,SAASC,EAAU9K,GAC/D8K,GAAUA,EAAS9K,GACvB1B,EAAQyB,iBAAiBC,EAC1B,GACD,CAEA,SAASyG,EAAKmC,GACb,OAAO,SAAS1O,EAAe6Q,GAC9B,IAAIC,EAAkB9Q,EAAcC,WAAW+F,QAAQ0I,SAEvDtK,EAAQrE,SAASC,GACfmF,QAAO,SAASsB,GAChB,OAAOiI,KAAcjI,EAAQT,QAAQ0I,UAAYoC,EAClD,IACC9O,SAAQ,SAASyE,GACjBA,EAAQsK,WAAWF,GAAetE,MACnC,GACF,CACD,CAEA,MAAO,CACNyE,WAAY,SAAShR,GACpB,IAAIiR,EAAejR,EAAcgG,QAG7B0J,EAAK1P,EAAcC,WAAa,CACnCF,SAAU,CAAC,EACXiG,QAAS5B,EAAQC,WAAW4M,EAAahR,YAAc,CAAC,GACxDiR,UAAW,GACXC,UAAU,EACVC,WAAW,GAIZpR,EAAcqR,sBACVJ,EAAa1I,SAChBmH,EAAG0B,WAAY,EACfjN,EAAamN,KAAKL,EAAa1I,OAAOgJ,MAAOb,GAC7CvM,EAAamN,KAAKL,EAAa1I,OAAOiJ,MAAOd,GAE/C,EACAe,aAAc,SAASzR,GACtB,IAAI0P,EAAK1P,EAAcC,WAEvB,GAAKyP,EAAG0B,UAAR,CAIK1B,EAAGyB,SAGPzB,EAAGyB,UAAW,EAFdzB,EAAG1J,QAAU5B,EAAQC,WAAWrE,EAAcgG,QAAQ/F,YAAc,CAAC,GAKtE,IAAIyR,EAAa,GAGjBhC,EAAG1J,QAAQrB,YAAY3C,SAAQ,SAAS/B,GACvC,IAAII,EAAKJ,EAAWI,IAAM+D,EAAQ9D,WAGlC,IAAKoP,EAAG3P,SAASM,IAAOoQ,EAAgBxQ,EAAWsC,MAAO,CACzD,IAAIoP,EAAMlB,EAAgBxQ,EAAWsC,MACjCkE,EAAU,IAAIkL,EAAI,CACrBtR,GAAIA,EACJ2F,QAAS/F,EACTD,cAAeA,IAEhByG,EAAQmL,aACRlC,EAAG3P,SAASM,GAAMoG,EAClBxG,EAAWI,GAAKA,EAChBqR,EAAWxK,KAAK7G,EACjB,MAAWqP,EAAG3P,SAASM,IAGtBqR,EAAWxK,KAAK7G,EAElB,IAGAH,OAAOC,KAAKuP,EAAG3P,UAAUiC,SAAQ,SAAS3B,IACT,IAA5BqR,EAAWlC,QAAQnP,KACtBqP,EAAG3P,SAASM,GAAIwR,iBACTnC,EAAG3P,SAASM,GAErB,GAvCA,CAwCD,EACAyR,iBAAkB,SAAS9R,GAC1BoE,EAAQrE,SAASC,GAAegC,SAAQ,SAASyE,GAChDA,EAAQ0B,WACT,GACD,EACAsG,mBAAoBlC,EAAK,sBACzBiC,kBAAmBjC,EAAK,qBACxBgC,UAAWhC,EAAK,aAChBwF,UAAW,SAAS/R,GAEnB,IAAIgS,EAAWhS,EAAcC,WAAW+F,QAAQ4I,OAChD,GAAIzK,EAAaO,QAAQsN,IAAaA,EAASzB,OAAS,EAAG,CAC1D,IAAI0B,EAASjS,EAAc+F,MAAMkM,OAC7BzB,EAAe5B,EAAOa,WAAWtO,KAAKnB,GAC1C4O,EAAOS,oBAAoB2C,GAAUhQ,SAAQ,SAASG,GACrDgC,EAAa+N,SAASD,EAAQ9P,EAAWqO,GACzCxQ,EAAcC,WAAWiR,UAAUhK,MAAK,WACvC/C,EAAagO,YAAYF,EAAQ9P,EAAWqO,EAC7C,GACD,GACD,CACD,EACAqB,QAAS,SAAS7R,GACjB,IAAIoS,EAAgBpS,EAAcC,WAAWiR,UAC7C,MAAOkB,EAAc7B,OAAS,EAC7B6B,EAAcC,KAAdD,EAEF,EAEF,C,wBC5HApO,EAAOC,QAAU,SAASC,GACzB,IAAIE,EAAU,EAAQ,MAAR,CAAyBF,GAEnCoO,EAAgBpO,EAAMM,WAAWmD,QAAQC,OAAO,CACnDC,cAAe,WACd,IAAIC,EAAQC,KAAK3C,OACbY,EAAU+B,KAAK/B,QACfhG,EAAgB+H,KAAK/H,cAErBuS,EAASvS,EAAcuI,OAAOvC,EAAQwM,UACtCC,EAASzS,EAAcuI,OAAOvC,EAAQ0M,UACtChK,EAAY1I,EAAc0I,UAK9B,GAFAZ,EAAM5C,OAAS,CAAC,EAEXwD,EAAL,CAIA,IAAIrD,EAAM,EACNO,EAAM,EAEN2M,IACHlN,EAAMjB,EAAQzD,QAAQqF,EAAQ2M,MAAQ3M,EAAQ2M,KAAOJ,EAAO/J,iBAAiBE,EAAUG,MACvFjD,EAAMxB,EAAQzD,QAAQqF,EAAQ4M,MAAQ5M,EAAQ4M,KAAOL,EAAO/J,iBAAiBE,EAAUK,OAEvFjB,EAAM5C,OAAOc,EAAQwM,UAAY,CAChCnN,IAAK9E,KAAK8E,IAAIA,EAAKO,GACnBA,IAAKrF,KAAKqF,IAAIP,EAAKO,KAIjB6M,IACHpN,EAAMjB,EAAQzD,QAAQqF,EAAQ6M,MAAQ7M,EAAQ6M,KAAOJ,EAAOjK,iBAAiBE,EAAUS,QACvFvD,EAAMxB,EAAQzD,QAAQqF,EAAQ8M,MAAQ9M,EAAQ8M,KAAOL,EAAOjK,iBAAiBE,EAAUO,KAEvFnB,EAAM5C,OAAOc,EAAQ0M,UAAY,CAChCrN,IAAK9E,KAAK8E,IAAIA,EAAKO,GACnBA,IAAKrF,KAAKqF,IAAIP,EAAKO,IArBrB,CAwBD,EACAuC,UAAW,WACV,IAAIL,EAAQC,KAAK3C,OACbY,EAAU+B,KAAK/B,QACfhG,EAAgB+H,KAAK/H,cAErBuS,EAASvS,EAAcuI,OAAOvC,EAAQwM,UACtCC,EAASzS,EAAcuI,OAAOvC,EAAQ0M,UACtChK,EAAY1I,EAAc0I,UAG9BZ,EAAMa,KAAO,CACZC,GAAIF,EAAUG,KACdC,GAAIJ,EAAUK,MACdC,GAAIN,EAAUO,IACdC,GAAIR,EAAUS,QAGf,IAKI9D,EAAKO,EALLiD,EAAOH,EAAUG,KACpBI,EAAMP,EAAUO,IAChBF,EAAQL,EAAUK,MAClBI,EAAST,EAAUS,OAIhBoJ,IACHlN,EAAMjB,EAAQzD,QAAQqF,EAAQ2M,MAAQJ,EAAO/J,iBAAiBxC,EAAQ2M,MAAQjK,EAAUG,KACxFjD,EAAMxB,EAAQzD,QAAQqF,EAAQ4M,MAAQL,EAAO/J,iBAAiBxC,EAAQ4M,MAAQlK,EAAUK,MACxFF,EAAOtI,KAAK8E,IAAIA,EAAKO,GACrBmD,EAAQxI,KAAKqF,IAAIP,EAAKO,IAGnB6M,IACHpN,EAAMjB,EAAQzD,QAAQqF,EAAQ6M,MAAQJ,EAAOjK,iBAAiBxC,EAAQ6M,MAAQnK,EAAUS,OACxFvD,EAAMxB,EAAQzD,QAAQqF,EAAQ8M,MAAQL,EAAOjK,iBAAiBxC,EAAQ8M,MAAQpK,EAAUO,IACxFA,EAAM1I,KAAK8E,IAAIA,EAAKO,GACpBuD,EAAS5I,KAAKqF,IAAIP,EAAKO,IAIxBkC,EAAMe,KAAOA,EACbf,EAAMmB,IAAMA,EACZnB,EAAMiB,MAAQA,EACdjB,EAAMqB,OAASA,EAGfrB,EAAM6D,YAAc3F,EAAQ2F,YAC5B7D,EAAM8D,YAAc5F,EAAQ4F,YAC5B9D,EAAM0B,gBAAkBxD,EAAQwD,eACjC,EACA9C,QAAS,SAASqF,EAAQC,GACzB,IAAIlE,EAAQC,KAAK3C,OACjB,OAAO0C,GACNiE,GAAUjE,EAAMe,MAChBkD,GAAUjE,EAAMiB,OAChBiD,GAAUlE,EAAMmB,KAChB+C,GAAUlE,EAAMqB,MAClB,EACApC,eAAgB,WACf,IAAIe,EAAQC,KAAK3C,OACjB,MAAO,CACNuB,GAAImB,EAAMiB,MAAQjB,EAAMe,MAAQ,EAChCjC,GAAIkB,EAAMqB,OAASrB,EAAMmB,KAAO,EAElC,EACAkD,SAAU,WACT,IAAIrE,EAAQC,KAAK3C,OACjB,OAAO7E,KAAK6L,IAAItE,EAAMiB,MAAQjB,EAAMe,KACrC,EACAqD,UAAW,WACV,IAAIpE,EAAQC,KAAK3C,OACjB,OAAO7E,KAAK6L,IAAItE,EAAMqB,OAASrB,EAAMmB,IACtC,EACA5B,QAAS,WACR,OAAOU,KAAKoE,WAAapE,KAAKmE,WAC/B,EACAK,KAAM,WACL,IAAItJ,EAAO8E,KAAKyE,MACZlE,EAAMP,KAAK/H,cAAc+F,MAAMuC,IAEnCA,EAAImE,OAGJnE,EAAIoE,YACJpE,EAAIqE,KAAK1J,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKK,GAAI/F,EAAK0F,KAAKG,GAAK7F,EAAK0F,KAAKC,GAAI3F,EAAK0F,KAAKO,GAAKjG,EAAK0F,KAAKK,IAC3FV,EAAIK,OAEJL,EAAIsE,UAAY3J,EAAK2I,YACrBtD,EAAIuE,YAAc5J,EAAK0I,YACvBrD,EAAI6E,UAAYlK,EAAKuG,gBAGrB,IAAI4B,EAAQnI,EAAK8F,MAAQ9F,EAAK4F,KAC7BkF,EAAS9K,EAAKkG,OAASlG,EAAKgG,IAC7BX,EAAIyK,SAAS9P,EAAK4F,KAAM5F,EAAKgG,IAAKmC,EAAO2C,GACzCzF,EAAI0K,WAAW/P,EAAK4F,KAAM5F,EAAKgG,IAAKmC,EAAO2C,GAE3CzF,EAAImF,SACL,IAGD,OAAO6E,CACR,C,oBCjJAtO,EAAOC,QAAU,SAASC,GACzB,IAAIC,EAAeD,EAAME,QAErB6O,EAAoB/O,EAAMyD,QAAQC,OAAO,CAC5CgK,WAAY,WACX7J,KAAKmL,QAAS,EACdnL,KAAK+H,UAAW,EAChB/H,KAAK3C,OAASjB,EAAagP,MAAMpL,KAAK3C,SAAW,CAAC,EAClD2C,KAAKF,eACN,EACAgK,QAAS,WAAY,EACrBhK,cAAe,WAAY,EAC3BM,UAAW,WAAY,EACvBzB,QAAS,WAAY,EACrBK,eAAgB,WAAY,EAC5BoF,SAAU,WAAY,EACtBD,UAAW,WAAY,EACvB7E,QAAS,WAAY,EACrBkF,KAAM,WAAY,IAGnB,OAAO0G,CACR,C","sources":["webpack://app/./node_modules/chartjs-plugin-annotation/src/helpers.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/types/line.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/index.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/events.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/annotation.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/types/box.js","webpack://app/./node_modules/chartjs-plugin-annotation/src/element.js"],"sourcesContent":["function noop() {}\n\nfunction elements(chartInstance) {\n\t// Turn the elements object into an array of elements\n\tvar elements = chartInstance.annotation.elements;\n\treturn Object.keys(elements).map(function(id) {\n\t\treturn elements[id];\n\t});\n}\n\nfunction objectId() {\n\treturn Math.random().toString(36).substr(2, 6);\n}\n\nfunction isValid(rawValue) {\n\tif (rawValue === null || typeof rawValue === 'undefined') {\n\t\treturn false;\n\t} else if (typeof rawValue === 'number') {\n\t\treturn isFinite(rawValue);\n\t} else {\n\t\treturn !!rawValue;\n\t}\n}\n\nfunction decorate(obj, prop, func) {\n\tvar prefix = '$';\n\tif (!obj[prefix + prop]) {\n\t\tif (obj[prop]) {\n\t\t\tobj[prefix + prop] = obj[prop].bind(obj);\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ obj[prefix + prop] ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t} else {\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ undefined ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction callEach(fns, method) {\n\tfns.forEach(function(fn) {\n\t\t(method ? fn[method] : fn)();\n\t});\n}\n\nfunction getEventHandlerName(eventName) {\n\treturn 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n}\n\nfunction createMouseEvent(type, previousEvent) {\n\ttry {\n\t\treturn new MouseEvent(type, previousEvent);\n\t} catch (exception) {\n\t\ttry {\n\t\t\tvar m = document.createEvent('MouseEvent');\n\t\t\tm.initMouseEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable,\n\t\t\t\tpreviousEvent.view,\n\t\t\t\tpreviousEvent.detail,\n\t\t\t\tpreviousEvent.screenX,\n\t\t\t\tpreviousEvent.screenY,\n\t\t\t\tpreviousEvent.clientX,\n\t\t\t\tpreviousEvent.clientY,\n\t\t\t\tpreviousEvent.ctrlKey,\n\t\t\t\tpreviousEvent.altKey,\n\t\t\t\tpreviousEvent.shiftKey,\n\t\t\t\tpreviousEvent.metaKey,\n\t\t\t\tpreviousEvent.button,\n\t\t\t\tpreviousEvent.relatedTarget\n\t\t\t);\n\t\t\treturn m;\n\t\t} catch (exception2) {\n\t\t\tvar e = document.createEvent('Event');\n\t\t\te.initEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable\n\t\t\t);\n\t\t\treturn e;\n\t\t}\n\t}\n}\n\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tfunction initConfig(config) {\n\t\tconfig = chartHelpers.configMerge(Chart.Annotation.defaults, config);\n\t\tif (chartHelpers.isArray(config.annotations)) {\n\t\t\tconfig.annotations.forEach(function(annotation) {\n\t\t\t\tannotation.label = chartHelpers.configMerge(Chart.Annotation.labelDefaults, annotation.label);\n\t\t\t});\n\t\t}\n\t\treturn config;\n\t}\n\n\tfunction getScaleLimits(scaleId, annotations, scaleMin, scaleMax) {\n\t\tvar ranges = annotations.filter(function(annotation) {\n\t\t\treturn !!annotation._model.ranges[scaleId];\n\t\t}).map(function(annotation) {\n\t\t\treturn annotation._model.ranges[scaleId];\n\t\t});\n\n\t\tvar min = ranges.map(function(range) {\n\t\t\treturn Number(range.min);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b < a ? b : a;\n\t\t}, scaleMin);\n\n\t\tvar max = ranges.map(function(range) {\n\t\t\treturn Number(range.max);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b > a ? b : a;\n\t\t}, scaleMax);\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tmax: max\n\t\t};\n\t}\n\n\tfunction adjustScaleRange(scale) {\n\t\t// Adjust the scale range to include annotation values\n\t\tvar range = getScaleLimits(scale.id, elements(scale.chart), scale.min, scale.max);\n\t\tif (typeof scale.options.ticks.min === 'undefined' && typeof scale.options.ticks.suggestedMin === 'undefined') {\n\t\t\tscale.min = range.min;\n\t\t}\n\t\tif (typeof scale.options.ticks.max === 'undefined' && typeof scale.options.ticks.suggestedMax === 'undefined') {\n\t\t\tscale.max = range.max;\n\t\t}\n\t\tif (scale.handleTickRangeOptions) {\n\t\t\tscale.handleTickRangeOptions();\n\t\t}\n\t}\n\n\tfunction getNearestItems(annotations, position) {\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\n\t\treturn annotations\n\t\t\t.filter(function(element) {\n\t\t\t\treturn element.inRange(position.x, position.y);\n\t\t\t})\n\t\t\t.reduce(function(nearestItems, element) {\n\t\t\t\tvar center = element.getCenterPoint();\n\t\t\t\tvar distance = chartHelpers.distanceBetweenPoints(position, center);\n\n\t\t\t\tif (distance < minDistance) {\n\t\t\t\t\tnearestItems = [element];\n\t\t\t\t\tminDistance = distance;\n\t\t\t\t} else if (distance === minDistance) {\n\t\t\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\t\t\tnearestItems.push(element);\n\t\t\t\t}\n\n\t\t\t\treturn nearestItems;\n\t\t\t}, [])\n\t\t\t.sort(function(a, b) {\n\t\t\t\t// If there are multiple elements equally close,\n\t\t\t\t// sort them by size, then by index\n\t\t\t\tvar sizeA = a.getArea(), sizeB = b.getArea();\n\t\t\t\treturn (sizeA > sizeB || sizeA < sizeB) ? sizeA - sizeB : a._index - b._index;\n\t\t\t})\n\t\t\t.slice(0, 1)[0]; // return only the top item\n\t}\n\n\treturn {\n\t\tinitConfig: initConfig,\n\t\telements: elements,\n\t\tcallEach: callEach,\n\t\tnoop: noop,\n\t\tobjectId: objectId,\n\t\tisValid: isValid,\n\t\tdecorate: decorate,\n\t\tadjustScaleRange: adjustScaleRange,\n\t\tgetNearestItems: getNearestItems,\n\t\tgetEventHandlerName: getEventHandlerName,\n\t\tcreateMouseEvent: createMouseEvent\n\t};\n};\n\n","// Line Annotation implementation\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('../helpers.js')(Chart);\n\n\tvar horizontalKeyword = 'horizontal';\n\tvar verticalKeyword = 'vertical';\n\n\tvar LineAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\tmodel.ranges[options.scaleID] = {\n\t\t\t\tmin: options.value,\n\t\t\t\tmax: options.endValue || options.value\n\t\t\t};\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\t\t\tvar ctx = chartInstance.chart.ctx;\n\n\t\t\tvar scale = chartInstance.scales[options.scaleID];\n\t\t\tvar pixel, endPixel;\n\t\t\tif (scale) {\n\t\t\t\tpixel = helpers.isValid(options.value) ? scale.getPixelForValue(options.value) : NaN;\n\t\t\t\tendPixel = helpers.isValid(options.endValue) ? scale.getPixelForValue(options.endValue) : pixel;\n\t\t\t}\n\n\t\t\tif (isNaN(pixel)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tif (this.options.mode == horizontalKeyword) {\n\t\t\t\tmodel.x1 = chartArea.left;\n\t\t\t\tmodel.x2 = chartArea.right;\n\t\t\t\tmodel.y1 = pixel;\n\t\t\t\tmodel.y2 = endPixel;\n\t\t\t} else {\n\t\t\t\tmodel.y1 = chartArea.top;\n\t\t\t\tmodel.y2 = chartArea.bottom;\n\t\t\t\tmodel.x1 = pixel;\n\t\t\t\tmodel.x2 = endPixel;\n\t\t\t}\n\n\t\t\tmodel.line = new LineFunction(model);\n\t\t\tmodel.mode = options.mode;\n\n\t\t\t// Figure out the label:\n\t\t\tmodel.labelBackgroundColor = options.label.backgroundColor;\n\t\t\tmodel.labelFontFamily = options.label.fontFamily;\n\t\t\tmodel.labelFontSize = options.label.fontSize;\n\t\t\tmodel.labelFontStyle = options.label.fontStyle;\n\t\t\tmodel.labelFontColor = options.label.fontColor;\n\t\t\tmodel.labelXPadding = options.label.xPadding;\n\t\t\tmodel.labelYPadding = options.label.yPadding;\n\t\t\tmodel.labelCornerRadius = options.label.cornerRadius;\n\t\t\tmodel.labelPosition = options.label.position;\n\t\t\tmodel.labelXAdjust = options.label.xAdjust;\n\t\t\tmodel.labelYAdjust = options.label.yAdjust;\n\t\t\tmodel.labelEnabled = options.label.enabled;\n\t\t\tmodel.labelContent = options.label.content;\n\n\t\t\tctx.font = chartHelpers.fontString(model.labelFontSize, model.labelFontStyle, model.labelFontFamily);\n\t\t\tvar textWidth = ctx.measureText(model.labelContent).width;\n\t\t\tvar textHeight = ctx.measureText('M').width;\n\t\t\tvar labelPosition = calculateLabelPosition(model, textWidth, textHeight, model.labelXPadding, model.labelYPadding);\n\t\t\tmodel.labelX = labelPosition.x - model.labelXPadding;\n\t\t\tmodel.labelY = labelPosition.y - model.labelYPadding;\n\t\t\tmodel.labelWidth = textWidth + (2 * model.labelXPadding);\n\t\t\tmodel.labelHeight = textHeight + (2 * model.labelYPadding);\n\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.borderDash = options.borderDash || [];\n\t\t\tmodel.borderDashOffset = options.borderDashOffset || 0;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\t\n\t\t\treturn (\n\t\t\t\t// On the line\n\t\t\t\tmodel.line &&\n\t\t\t\tmodel.line.intersects(mouseX, mouseY, this.getHeight())\n\t\t\t) || (\n\t\t\t\t// On the label\n\t\t\t\tmodel.labelEnabled &&\n\t\t\t\tmodel.labelContent &&\n\t\t\t\tmouseX >= model.labelX && \n\t\t\t\tmouseX <= model.labelX + model.labelWidth && \n\t\t\t\tmouseY >= model.labelY && \n\t\t\t\tmouseY <= model.labelY + model.labelHeight\n\t\t\t);\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\treturn {\n\t\t\t\tx: (this._model.x2 + this._model.x1) / 2,\n\t\t\t\ty: (this._model.y2 + this._model.y1) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\treturn Math.abs(this._model.right - this._model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\treturn this._model.borderWidth || 1;\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn Math.sqrt(Math.pow(this.getWidth(), 2) + Math.pow(this.getHeight(), 2));\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tif (!view.clip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(view.borderDash);\n\t\t\t}\n\t\t\tctx.lineDashOffset = view.borderDashOffset;\n\n\t\t\t// Draw\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(view.x1, view.y1);\n\t\t\tctx.lineTo(view.x2, view.y2);\n\t\t\tctx.stroke();\n\n\t\t\tif (view.labelEnabled && view.labelContent) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\t\tctx.clip();\n\n\t\t\t\tctx.fillStyle = view.labelBackgroundColor;\n\t\t\t\t// Draw the tooltip\n\t\t\t\tchartHelpers.drawRoundedRectangle(\n\t\t\t\t\tctx,\n\t\t\t\t\tview.labelX, // x\n\t\t\t\t\tview.labelY, // y\n\t\t\t\t\tview.labelWidth, // width\n\t\t\t\t\tview.labelHeight, // height\n\t\t\t\t\tview.labelCornerRadius // radius\n\t\t\t\t);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw the text\n\t\t\t\tctx.font = chartHelpers.fontString(\n\t\t\t\t\tview.labelFontSize,\n\t\t\t\t\tview.labelFontStyle,\n\t\t\t\t\tview.labelFontFamily\n\t\t\t\t);\n\t\t\t\tctx.fillStyle = view.labelFontColor;\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.fillText(\n\t\t\t\t\tview.labelContent,\n\t\t\t\t\tview.labelX + (view.labelWidth / 2),\n\t\t\t\t\tview.labelY + (view.labelHeight / 2)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\tfunction LineFunction(view) {\n\t\t// Describe the line in slope-intercept form (y = mx + b).\n\t\t// Note that the axes are rotated 90° CCW, which causes the\n\t\t// x- and y-axes to be swapped.\n\t\tvar m = (view.x2 - view.x1) / (view.y2 - view.y1);\n\t\tvar b = view.x1 || 0;\n\n\t\tthis.m = m;\n\t\tthis.b = b;\n\n\t\tthis.getX = function(y) {\n\t\t\t// Coordinates are relative to the origin of the canvas\n\t\t\treturn m * (y - view.y1) + b;\n\t\t};\n\n\t\tthis.getY = function(x) {\n\t\t\treturn ((x - b) / m) + view.y1;\n\t\t};\n\n\t\tthis.intersects = function(x, y, epsilon) {\n\t\t\tepsilon = epsilon || 0.001;\n\t\t\tvar dy = this.getY(x),\n\t\t\t\tdx = this.getX(y);\n\t\t\treturn (\n\t\t\t\t(!isFinite(dy) || Math.abs(y - dy) < epsilon) &&\n\t\t\t\t(!isFinite(dx) || Math.abs(x - dx) < epsilon)\n\t\t\t);\n\t\t};\n\t}\n\n\tfunction calculateLabelPosition(view, width, height, padWidth, padHeight) {\n\t\tvar line = view.line;\n\t\tvar ret = {}, xa = 0, ya = 0;\n\n\t\tswitch (true) {\n\t\t\t// top align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"top\":\n\t\t\t\tya = padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y1 + ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// bottom align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"bottom\":\n\t\t\t\tya = height + padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y2 - ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// left align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"left\":\n\t\t\t\txa = padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x1 + xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// right align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"right\":\n\t\t\t\txa = width + padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x2 - xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// center align\n\t\t\tdefault:\n\t\t\t\tret.x = ((view.x1 + view.x2 - width) / 2) + view.labelXAdjust;\n\t\t\t\tret.y = ((view.y1 + view.y2 - height) / 2) + view.labelYAdjust;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\treturn LineAnnotation;\n};\n","// Get the chart variable\nvar Chart = require('chart.js');\nChart = typeof(Chart) === 'function' ? Chart : window.Chart;\n\n// Configure plugin namespace\nChart.Annotation = Chart.Annotation || {};\n\nChart.Annotation.drawTimeOptions = {\n\tafterDraw: 'afterDraw',\n\tafterDatasetsDraw: 'afterDatasetsDraw',\n\tbeforeDatasetsDraw: 'beforeDatasetsDraw'\n};\n\nChart.Annotation.defaults = {\n\tdrawTime: 'afterDatasetsDraw',\n\tdblClickSpeed: 350, // ms\n\tevents: [],\n\tannotations: []\n};\n\nChart.Annotation.labelDefaults = {\n\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\tfontFamily: Chart.defaults.global.defaultFontFamily,\n\tfontSize: Chart.defaults.global.defaultFontSize,\n\tfontStyle: 'bold',\n\tfontColor: '#fff',\n\txPadding: 6,\n\tyPadding: 6,\n\tcornerRadius: 6,\n\tposition: 'center',\n\txAdjust: 0,\n\tyAdjust: 0,\n\tenabled: false,\n\tcontent: null\n};\n\nChart.Annotation.Element = require('./element.js')(Chart);\n\nChart.Annotation.types = {\n\tline: require('./types/line.js')(Chart),\n\tbox: require('./types/box.js')(Chart)\n};\n\nvar annotationPlugin = require('./annotation.js')(Chart);\n\nmodule.exports = annotationPlugin;\nChart.pluginService.register(annotationPlugin);\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('./helpers.js')(Chart);\n\n\tfunction collapseHoverEvents(events) {\n\t\tvar hover = false;\n\t\tvar filteredEvents = events.filter(function(eventName) {\n\t\t\tswitch (eventName) {\n\t\t\t\tcase 'mouseenter':\n\t\t\t\tcase 'mouseover':\n\t\t\t\tcase 'mouseout':\n\t\t\t\tcase 'mouseleave':\n\t\t\t\t\thover = true;\n\t\t\t\t\treturn false;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\tif (hover && filteredEvents.indexOf('mousemove') === -1) {\n\t\t\tfilteredEvents.push('mousemove');\n\t\t}\n\t\treturn filteredEvents;\n\t}\n\n\tfunction dispatcher(e) {\n\t\tvar ns = this.annotation;\n\t\tvar elements = helpers.elements(this);\n\t\tvar position = chartHelpers.getRelativePosition(e, this.chart);\n\t\tvar element = helpers.getNearestItems(elements, position);\n\t\tvar events = collapseHoverEvents(ns.options.events);\n\t\tvar dblClickSpeed = ns.options.dblClickSpeed;\n\t\tvar eventHandlers = [];\n\t\tvar eventHandlerName = helpers.getEventHandlerName(e.type);\n\t\tvar options = (element || {}).options;\n\n\t\t// Detect hover events\n\t\tif (e.type === 'mousemove') {\n\t\t\tif (element && !element.hovering) {\n\t\t\t\t// hover started\n\t\t\t\t['mouseenter', 'mouseover'].forEach(function(eventName) {\n\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\telement.hovering = true;\n\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (!element) {\n\t\t\t\t// hover ended\n\t\t\t\telements.forEach(function(element) {\n\t\t\t\t\tif (element.hovering) {\n\t\t\t\t\t\telement.hovering = false;\n\t\t\t\t\t\tvar options = element.options;\n\t\t\t\t\t\t['mouseout', 'mouseleave'].forEach(function(eventName) {\n\t\t\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Suppress duplicate click events during a double click\n\t\t// 1. click -> 2. click -> 3. dblclick\n\t\t//\n\t\t// 1: wait dblClickSpeed ms, then fire click\n\t\t// 2: cancel (1) if it is waiting then wait dblClickSpeed ms then fire click, else fire click immediately\n\t\t// 3: cancel (1) or (2) if waiting, then fire dblclick \n\t\tif (element && events.indexOf('dblclick') > -1 && typeof options.onDblclick === 'function') {\n\t\t\tif (e.type === 'click' && typeof options.onClick === 'function') {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\telement.clickTimeout = setTimeout(function() {\n\t\t\t\t\tdelete element.clickTimeout;\n\t\t\t\t\toptions.onClick.call(element, e);\n\t\t\t\t}, dblClickSpeed);\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t} else if (e.type === 'dblclick' && element.clickTimeout) {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\tdelete element.clickTimeout;\n\t\t\t}\n\t\t}\n\n\t\t// Dispatch the event to the usual handler, but only if we haven't substituted it\n\t\tif (element && typeof options[eventHandlerName] === 'function' && eventHandlers.length === 0) {\n\t\t\teventHandlers.push([ options[eventHandlerName], e, element ]);\n\t\t}\n\n\t\tif (eventHandlers.length > 0) {\n\t\t\te.stopImmediatePropagation();\n\t\t\te.preventDefault();\n\t\t\teventHandlers.forEach(function(eventHandler) {\n\t\t\t\t// [handler, event, element]\n\t\t\t\teventHandler[0].call(eventHandler[2], eventHandler[1]);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\tdispatcher: dispatcher,\n\t\tcollapseHoverEvents: collapseHoverEvents\n\t};\n};\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tvar helpers = require('./helpers.js')(Chart);\n\tvar events = require('./events.js')(Chart);\n\n\tvar annotationTypes = Chart.Annotation.types;\n\n\tfunction setAfterDataLimitsHook(axisOptions) {\n\t\thelpers.decorate(axisOptions, 'afterDataLimits', function(previous, scale) {\n\t\t\tif (previous) previous(scale);\n\t\t\thelpers.adjustScaleRange(scale);\n\t\t});\n\t}\n\n\tfunction draw(drawTime) {\n\t\treturn function(chartInstance, easingDecimal) {\n\t\t\tvar defaultDrawTime = chartInstance.annotation.options.drawTime;\n\n\t\t\thelpers.elements(chartInstance)\n\t\t\t\t.filter(function(element) {\n\t\t\t\t\treturn drawTime === (element.options.drawTime || defaultDrawTime);\n\t\t\t\t})\n\t\t\t\t.forEach(function(element) {\n\t\t\t\t\telement.transition(easingDecimal).draw();\n\t\t\t\t});\n\t\t};\n\t}\n\n\treturn {\n\t\tbeforeInit: function(chartInstance) {\n\t\t\tvar chartOptions = chartInstance.options;\n\n\t\t\t// Initialize chart instance plugin namespace\n\t\t\tvar ns = chartInstance.annotation = {\n\t\t\t\telements: {},\n\t\t\t\toptions: helpers.initConfig(chartOptions.annotation || {}),\n\t\t\t\tonDestroy: [],\n\t\t\t\tfirstRun: true,\n\t\t\t\tsupported: false\n\t\t\t};\n\n\t\t\t// Add the annotation scale adjuster to each scale's afterDataLimits hook\n\t\t\tchartInstance.ensureScalesHaveIDs();\n\t\t\tif (chartOptions.scales) {\n\t\t\t\tns.supported = true;\n\t\t\t\tchartHelpers.each(chartOptions.scales.xAxes, setAfterDataLimitsHook);\n\t\t\t\tchartHelpers.each(chartOptions.scales.yAxes, setAfterDataLimitsHook);\n\t\t\t}\n\t\t},\n\t\tbeforeUpdate: function(chartInstance) {\n\t\t\tvar ns = chartInstance.annotation;\n\n\t\t\tif (!ns.supported) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!ns.firstRun) {\n\t\t\t\tns.options = helpers.initConfig(chartInstance.options.annotation || {});\n\t\t\t} else {\n\t\t\t\tns.firstRun = false;\n\t\t\t}\n\n\t\t\tvar elementIds = [];\n\n\t\t\t// Add new elements, or update existing ones\n\t\t\tns.options.annotations.forEach(function(annotation) {\n\t\t\t\tvar id = annotation.id || helpers.objectId();\n\t\t\t\t\n\t\t\t\t// No element with that ID exists, and it's a valid annotation type\n\t\t\t\tif (!ns.elements[id] && annotationTypes[annotation.type]) {\n\t\t\t\t\tvar cls = annotationTypes[annotation.type];\n\t\t\t\t\tvar element = new cls({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\toptions: annotation,\n\t\t\t\t\t\tchartInstance: chartInstance,\n\t\t\t\t\t});\n\t\t\t\t\telement.initialize();\n\t\t\t\t\tns.elements[id] = element;\n\t\t\t\t\tannotation.id = id;\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t} else if (ns.elements[id]) {\n\t\t\t\t\t// Nothing to do for update, since the element config references\n\t\t\t\t\t// the same object that exists in the chart annotation config\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Delete removed elements\n\t\t\tObject.keys(ns.elements).forEach(function(id) {\n\t\t\t\tif (elementIds.indexOf(id) === -1) {\n\t\t\t\t\tns.elements[id].destroy();\n\t\t\t\t\tdelete ns.elements[id];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tafterScaleUpdate: function(chartInstance) {\n\t\t\thelpers.elements(chartInstance).forEach(function(element) {\n\t\t\t\telement.configure();\n\t\t\t});\n\t\t},\n\t\tbeforeDatasetsDraw: draw('beforeDatasetsDraw'),\n\t\tafterDatasetsDraw: draw('afterDatasetsDraw'),\n\t\tafterDraw: draw('afterDraw'),\n\t\tafterInit: function(chartInstance) {\n\t\t\t// Detect and intercept events that happen on an annotation element\n\t\t\tvar watchFor = chartInstance.annotation.options.events;\n\t\t\tif (chartHelpers.isArray(watchFor) && watchFor.length > 0) {\n\t\t\t\tvar canvas = chartInstance.chart.canvas;\n\t\t\t\tvar eventHandler = events.dispatcher.bind(chartInstance);\n\t\t\t\tevents.collapseHoverEvents(watchFor).forEach(function(eventName) {\n\t\t\t\t\tchartHelpers.addEvent(canvas, eventName, eventHandler);\n\t\t\t\t\tchartInstance.annotation.onDestroy.push(function() {\n\t\t\t\t\t\tchartHelpers.removeEvent(canvas, eventName, eventHandler);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdestroy: function(chartInstance) {\n\t\t\tvar deregisterers = chartInstance.annotation.onDestroy;\n\t\t\twhile (deregisterers.length > 0) {\n\t\t\t\tderegisterers.pop()();\n\t\t\t}\n\t\t}\n\t};\n};\n","// Box Annotation implementation\nmodule.exports = function(Chart) {\n\tvar helpers = require('../helpers.js')(Chart);\n\t\n\tvar BoxAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\t\n\t\t\tif (!chartArea) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar min = 0;\n\t\t\tvar max = 0;\n\t\t\t\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? options.xMin : xScale.getPixelForValue(chartArea.left);\n\t\t\t\tmax = helpers.isValid(options.xMax) ? options.xMax : xScale.getPixelForValue(chartArea.right);\n\n\t\t\t\tmodel.ranges[options.xScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? options.yMin : yScale.getPixelForValue(chartArea.bottom);\n\t\t\t\tmax = helpers.isValid(options.yMax) ? options.yMax : yScale.getPixelForValue(chartArea.top);\n\n\t\t\t\tmodel.ranges[options.yScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tvar left = chartArea.left, \n\t\t\t\ttop = chartArea.top, \n\t\t\t\tright = chartArea.right, \n\t\t\t\tbottom = chartArea.bottom;\n\n\t\t\tvar min, max;\n\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? xScale.getPixelForValue(options.xMin) : chartArea.left;\n\t\t\t\tmax = helpers.isValid(options.xMax) ? xScale.getPixelForValue(options.xMax) : chartArea.right;\n\t\t\t\tleft = Math.min(min, max);\n\t\t\t\tright = Math.max(min, max);\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? yScale.getPixelForValue(options.yMin) : chartArea.bottom;\n\t\t\t\tmax = helpers.isValid(options.yMax) ? yScale.getPixelForValue(options.yMax) : chartArea.top;\n\t\t\t\ttop = Math.min(min, max);\n\t\t\t\tbottom = Math.max(min, max);\n\t\t\t}\n\n\t\t\t// Ensure model has rect coordinates\n\t\t\tmodel.left = left;\n\t\t\tmodel.top = top;\n\t\t\tmodel.right = right;\n\t\t\tmodel.bottom = bottom;\n\n\t\t\t// Stylistic options\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.backgroundColor = options.backgroundColor;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\treturn model &&\n\t\t\t\tmouseX >= model.left && \n\t\t\t\tmouseX <= model.right && \n\t\t\t\tmouseY >= model.top && \n\t\t\t\tmouseY <= model.bottom;\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn {\n\t\t\t\tx: (model.right + model.left) / 2,\n\t\t\t\ty: (model.bottom + model.top) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.right - model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.bottom - model.top);\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn this.getWidth() * this.getHeight();\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\t\t\tctx.fillStyle = view.backgroundColor;\n\n\t\t\t// Draw\n\t\t\tvar width = view.right - view.left,\n\t\t\t\theight = view.bottom - view.top;\n\t\t\tctx.fillRect(view.left, view.top, width, height);\n\t\t\tctx.strokeRect(view.left, view.top, width, height);\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\treturn BoxAnnotation;\n};\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\t\n\tvar AnnotationElement = Chart.Element.extend({\n\t\tinitialize: function() {\n\t\t\tthis.hidden = false;\n\t\t\tthis.hovering = false;\n\t\t\tthis._model = chartHelpers.clone(this._model) || {};\n\t\t\tthis.setDataLimits();\n\t\t},\n\t\tdestroy: function() {},\n\t\tsetDataLimits: function() {},\n\t\tconfigure: function() {},\n\t\tinRange: function() {},\n\t\tgetCenterPoint: function() {},\n\t\tgetWidth: function() {},\n\t\tgetHeight: function() {},\n\t\tgetArea: function() {},\n\t\tdraw: function() {}\n\t});\n\n\treturn AnnotationElement;\n};\n"],"names":["noop","elements","chartInstance","annotation","Object","keys","map","id","objectId","Math","random","toString","substr","isValid","rawValue","isFinite","decorate","obj","prop","func","prefix","bind","args","concat","Array","prototype","slice","call","arguments","apply","undefined","callEach","fns","method","forEach","fn","getEventHandlerName","eventName","toUpperCase","substring","createMouseEvent","type","previousEvent","MouseEvent","exception","m","document","createEvent","initMouseEvent","canBubble","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","exception2","e","initEvent","module","exports","Chart","chartHelpers","helpers","initConfig","config","configMerge","Annotation","defaults","isArray","annotations","label","labelDefaults","getScaleLimits","scaleId","scaleMin","scaleMax","ranges","filter","_model","min","range","Number","reduce","a","b","isNaN","max","adjustScaleRange","scale","chart","options","ticks","suggestedMin","suggestedMax","handleTickRangeOptions","getNearestItems","position","minDistance","POSITIVE_INFINITY","element","inRange","x","y","nearestItems","center","getCenterPoint","distance","distanceBetweenPoints","push","sort","sizeA","getArea","sizeB","_index","horizontalKeyword","verticalKeyword","LineAnnotation","Element","extend","setDataLimits","model","this","scaleID","value","endValue","configure","pixel","endPixel","ctx","scales","getPixelForValue","NaN","chartArea","clip","x1","left","x2","right","y1","top","y2","bottom","mode","line","LineFunction","labelBackgroundColor","backgroundColor","labelFontFamily","fontFamily","labelFontSize","fontSize","labelFontStyle","fontStyle","labelFontColor","fontColor","labelXPadding","xPadding","labelYPadding","yPadding","labelCornerRadius","cornerRadius","labelPosition","labelXAdjust","xAdjust","labelYAdjust","yAdjust","labelEnabled","enabled","labelContent","content","font","fontString","textWidth","measureText","width","textHeight","calculateLabelPosition","labelX","labelY","labelWidth","labelHeight","borderColor","borderWidth","borderDash","borderDashOffset","mouseX","mouseY","intersects","getHeight","getWidth","abs","sqrt","pow","draw","_view","save","beginPath","rect","lineWidth","strokeStyle","setLineDash","lineDashOffset","moveTo","lineTo","stroke","fillStyle","drawRoundedRectangle","fill","textAlign","textBaseline","fillText","restore","getX","getY","epsilon","dy","dx","height","padWidth","padHeight","ret","xa","ya","window","drawTimeOptions","afterDraw","afterDatasetsDraw","beforeDatasetsDraw","drawTime","dblClickSpeed","events","global","defaultFontFamily","defaultFontSize","types","box","annotationPlugin","pluginService","register","collapseHoverEvents","hover","filteredEvents","indexOf","dispatcher","ns","getRelativePosition","eventHandlers","eventHandlerName","hovering","hoverEvent","onDblclick","onClick","clearTimeout","clickTimeout","setTimeout","stopImmediatePropagation","preventDefault","length","eventHandler","annotationTypes","setAfterDataLimitsHook","axisOptions","previous","easingDecimal","defaultDrawTime","transition","beforeInit","chartOptions","onDestroy","firstRun","supported","ensureScalesHaveIDs","each","xAxes","yAxes","beforeUpdate","elementIds","cls","initialize","destroy","afterScaleUpdate","afterInit","watchFor","canvas","addEvent","removeEvent","deregisterers","pop","BoxAnnotation","xScale","xScaleID","yScale","yScaleID","xMin","xMax","yMin","yMax","fillRect","strokeRect","AnnotationElement","hidden","clone"],"sourceRoot":""}