{"version":3,"file":"crypto.e2c3d9c8.js","mappings":";mtCAMIA,EAAe,WAEjB,MAAO,kCADSC,EAAAA,EAAUC,cAE5B,EAEA,IAAIC,EAA8C,KAElD,MAiDA,EAjDgB,CACdC,SAAAA,CAAUC,GACRC,EAAAA,EAAcC,iBAAiB,CAC7BC,KAAMC,EAAAA,EAAYC,WAClBL,SAEJ,EAEA,YAAMM,CAAOC,GAAW,IAAAC,EAAAC,EACtB,GAAIF,EAKF,YAJAN,EAAAA,EAAcC,iBAAiB,CAC7BC,KAAMC,EAAAA,EAAYM,YAClBV,MAAOO,IAKC,QAAZC,EAAAV,SAAY,IAAAU,GAAQ,QAARC,EAAZD,EAAcG,cAAM,IAAAF,GAApBA,EAAAG,KAAAJ,GACAV,GAAee,EAAAA,EAAAA,IAAWlB,KAC1B,MAAMK,QAAcF,EAChBE,GACFC,EAAAA,EAAca,mBAAmB,CAC/BX,KAAMC,EAAAA,EAAYM,YAClBV,SAGN,EAEA,qBAAMe,CAAgBC,GAAmB,IAAAC,EAAAC,EACvCjB,EAAAA,EAAcC,iBAAiB,CAC7BC,KAAMC,EAAAA,EAAYe,yBAClBC,OAAQJ,IAGE,QAAZC,EAAAnB,SAAY,IAAAmB,GAAQ,QAARC,EAAZD,EAAcN,cAAM,IAAAO,GAApBA,EAAAN,KAAAK,GACAnB,GAAee,EAAAA,EAAAA,IAAWlB,KAC1B,MAAMY,QAAaT,EACfS,IACFN,EAAAA,EAAca,mBAAmB,CAC/BX,KAAMC,EAAAA,EAAYM,YAClBV,MAAOO,IAETN,EAAAA,EAAca,mBAAmB,CAC/BX,KAAMC,EAAAA,EAAYiB,6BAGxB,sHClDF,MAAMC,EAAc,CAClB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAGF,SAASC,EAAgBvB,GACvB,OAAOsB,EAAYE,KAAKC,GAAQzB,EAAMyB,IACxC,CAWe,SAASC,EAASC,GAOd,IAPe,WAChCC,EAAU,gBACVC,EAAe,YACfC,EAAW,KACX3B,EAAI,kBACJ4B,EAAiB,kBACjBC,GACeL,EACf,MAAMM,EAA+B,MAAT9B,GACrBH,EAAOkC,GAAYC,EAAAA,SAAeZ,EAAgBa,EAAAA,EAAWC,aAEpEF,EAAAA,WAAgB,KACd,MAAMG,EAAgBA,IAAMJ,EAASX,EAAgBa,EAAAA,EAAWC,aAIhE,OAFAD,EAAAA,EAAWG,kBAAkBD,GAEtB,IAAMF,EAAAA,EAAWI,qBAAqBF,EAAc,GAC1D,IAEH,MAAMG,EAAiBC,eAAeC,eAAc,uBAAAC,QACzBC,EAAAA,EAAAA,GAAkB,CACvCC,EAAGlB,EACHmB,EAAGlB,EACHmB,GAAI,KACJ,eAAAJ,QACaC,EAAAA,EAAAA,GAAkB,CAC/BI,WAAY,SACZC,WAAY,SACZC,aAAc,8BAWpB,OACEC,EAAAA,EAAAA,MAAA,OAAKC,UAAU,aAAYC,SAAA,CACxBvB,IACCqB,EAAAA,EAAAA,MAAA,MAAIC,UAAU,kBAAiBC,SAAA,EAC7BC,EAAAA,EAAAA,KAAA,MAAIF,UAAWG,IAAW,YAAa,CAAE,aAAcvB,IAAuBqB,UAC5EC,EAAAA,EAAAA,KAAA,KACEE,KAAI,uBAAAb,QAAyBC,EAAAA,EAAAA,GAAkB,CAC7CC,EAAGlB,EACHmB,EAAGlB,EACHmB,QAAIU,EACJC,EAAG7B,KAEL,cAAY,gBAAewB,SAC5B,cAIHF,EAAAA,EAAAA,MAAA,MACEC,UAAWG,IAAW,mDAAoD,CACxE,YAAavB,IACZqB,SAAA,EAEHC,EAAAA,EAAAA,KAAA,KAAGF,UAAU,OAAOI,KAAMhB,EAAgB,cAAY,qBAAoBa,SAAC,gBAG1ErB,IAAuBsB,EAAAA,EAAAA,KAACK,EAAAA,EAA0B,CAACC,UAAWnB,eAAeC,wBAIpFY,EAAAA,EAAAA,KAAA,OAAKF,UAAWG,IAAW,oBAAqB,CAAE,eAAgBxB,IAAqBsB,SACpFtD,EAAMwB,KAAKsC,IACVV,SAAAA,EAAAA,MAAA,KAEEC,UAAWG,IAAW,2BAA4B,CAAE,YAAaM,EAAKC,SAAWnC,IACjF6B,MA1CWM,EA0COD,EAAKC,OA1CE,uBAAAnB,QACVC,EAAAA,EAAAA,GAAkB,CACvCC,EAAGiB,EACHhB,EAAGlB,EACHmB,GAAIhB,GAAqBC,OAAsByB,EAAYvD,EAC3DwD,EAAG7B,MAqCkCwB,SAAA,EAE/BC,EAAAA,EAAAA,KAAA,QAAAD,SAAOQ,EAAKE,SACZT,EAAAA,EAAAA,KAACU,EAAAA,EAAS,CAACC,MAAO,GAAIC,OAAQ,GAAI5D,KAAMuD,EAAKM,cALxCN,EAAKC,QAxCCA,KA+Cd,OAEHR,EAAAA,EAAAA,KAAA,OAAKF,UAAU,eAGrB,qCCvGO,IAAKgB,EAAQ,SAARA,GAAQ,OAARA,EAAQ,gBAARA,EAAQ,0BAARA,EAAQ,gBAARA,CAAQ,MCXpB,SAASC,EAAoBC,GAC3B,OAAQA,EAASC,eACf,IAAK,MACH,MAAO,UACT,IAAK,MACH,MAAO,WACT,IAAK,MACH,MAAO,WACT,IAAK,MACH,MAAO,SACT,IAAK,MACH,MAAO,eACT,IAAK,MACH,MAAO,SACT,IAAK,MACH,MAAO,OAEX,OAAOD,CACT,CAWe,SAASE,EAAI9C,GAOT,IAP8B,aAC/C+C,EAAY,WACZC,EAAU,WACVC,EAAU,QACVC,EAAO,kBACPC,EAAiB,kBACjBC,GACepD,EACf,OACEyB,EAAAA,EAAAA,MAAA,OAAKC,UAAU,gDAA+CC,SAAA,EAC5DF,EAAAA,EAAAA,MAAA,OAAKC,UAAU,4BAA2BC,SAAA,EACxCC,EAAAA,EAAAA,KAACyB,EAAAA,GAAM,CAACC,GAAG,IAAIxB,KAAK,eAAeyB,OAAQP,IAAeN,EAASc,OAAQC,MAAM,kBAAiB9B,SAAC,YAGnGC,EAAAA,EAAAA,KAACyB,EAAAA,GAAM,CACLC,GAAG,IACHxB,KAAK,2BACL2B,MAAM,kBACNF,OAAQP,IAAeN,EAASgB,YAAY/B,SAC7C,iBAGDC,EAAAA,EAAAA,KAACyB,EAAAA,GAAM,CAACC,GAAG,IAAIxB,KAAK,sBAAsB2B,MAAM,kBAAkBF,OAAQP,IAAeN,EAASiB,OAAOhC,SAAC,eAI5GC,EAAAA,EAAAA,KAAA,OAAKF,UAAU,qDAAoDC,SAChEqB,IAAeN,EAASiB,QACvB/B,EAAAA,EAAAA,KAACgC,EAAAA,EAA8B,CAC7BC,SAAUd,EACVe,MAAM,SACNC,MAAOb,EAAU,GAAHjC,OAAMiC,aAAO,EAAPA,EAASc,MAAM,KAAKnE,IAAI8C,GAAqBsB,KAAK,OAAM,KAAAhD,OAAIiC,QAAYnB,EAC5FoB,kBAAmBA,EACnBC,kBAAmBA,EACnBc,2BAA4BC,EAAAA,GAA2BC,WACvDC,WAAYC,EAAAA,GAAWC,SAGzBtB,EAAWA,WAAWpD,KAAKR,IAAS,IAAAmF,EAAA,OAClC5C,EAAAA,EAAAA,KAACyB,EAAAA,GAAM,CAELC,GAAG,IACGxB,KAAqB,QAAjB0C,EAAEvB,EAAWwB,YAAI,IAAAD,OAAA,EAAfA,EAAAvF,KAAAgE,EAAkB5D,EAAUS,KACxC2D,MAAM,kBACNiB,QAAQ,QACRnB,OAAQN,EAAWM,SAAWlE,EAAUS,IACxC6E,QAAUC,IAAuC,IAAAC,EAAA,OAAuB,QAAvBA,EAAK5B,EAAW0B,eAAO,IAAAE,OAAA,EAAlBA,EAAA5F,KAAAgE,EAAqB5D,EAAUS,IAAY8E,EAAG,EACpGd,MAAOzE,EAAUyE,MAAMnC,SAEtBtC,EAAUyF,OATNzF,EAAUS,IAUR,QAMrB,CClFA,MAAMgD,UAAiCiC,EAAAA,UACrCC,MAAAA,GACE,IAAI,WAAEhC,GAAeiC,KAAKC,MACtBC,EAAiBF,KAAKC,MAAMjC,WAEhC,OACExB,EAAAA,EAAAA,MAAA,OAAKC,UAAU,OAAMC,SAAA,EACnBF,EAAAA,EAAAA,MAAA,MAAIC,UAAU,aAAYC,SAAA,EACxBC,EAAAA,EAAAA,KAAA,MAAIF,UAA0B,WAAfsB,EAA0B,YAAc,GAAGrB,UACxDC,EAAAA,EAAAA,KAAA,KAAGE,KAAK,eAAcH,SAAC,cAEzBC,EAAAA,EAAAA,KAAA,MAAIF,UAA0B,gBAAfsB,EAA+B,YAAc,GAAGrB,UAC7DC,EAAAA,EAAAA,KAAA,KAAGE,KAAK,2BAA0BH,SAAC,mBAErCC,EAAAA,EAAAA,KAAA,MAAIF,UAA0B,WAAfsB,EAA0B,YAAc,GAAGrB,UACxDC,EAAAA,EAAAA,KAAA,KAAGE,KAAK,sBAAqBH,SAAC,iBAIlCC,EAAAA,EAAAA,KAAA,MAAIF,UAAU,kBAAiBC,SAC5BwD,EAAelC,WAAWpD,KAAKR,IAC9BuC,EAAAA,EAAAA,KAAA,MAAIF,UAAWyD,EAAe5B,SAAWlE,EAAUS,IAAM,YAAc,GAAG6B,UACxEC,EAAAA,EAAAA,KAAA,KACEE,KAAMqD,EAAeV,KAAKpF,EAAUS,KACpC6E,QAASQ,EAAeR,QAAQS,KAAKH,KAAM5F,EAAUS,KACrDgE,MAAOzE,EAAUyE,MAAMnC,SAEtBtC,EAAUyF,SANiEzF,EAAUS,WAapG,EAGF,ucCzBA,SAASuF,IAAoD,IAArCC,EAA8BC,UAAAC,OAAA,QAAAzD,IAAAwD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACxD,IAAIE,GAAcC,EAAAA,EAAAA,KACdrG,EAAYoG,EAAe,EAC1BE,OAAOC,OAAOC,EAAAA,IAAWC,SAASzG,KACrCA,EAAYwG,EAAAA,GAAUE,GAExB,IAAI3D,GAAUqD,EAAe,GAAK,OAAOO,cACrCxH,EAAOiH,EAAgB,GAE3B,MAAO,CACLpG,YACA4G,UAAWR,EAAe,EAC1BrD,SACA5D,UACG8G,EAEP,CAEA,MAAMY,UAAqBnB,EAAAA,UAAUoB,WAAAA,GAAA,SAAAZ,WAAAa,EAAA,aAC3Bf,KAAgBe,EAAA,2BAEHC,UACnBC,EAAqBlH,gBAAgBC,GACrC4F,KAAKsB,SAASlB,EAAe,CAAEhG,cAAa,GAC7C,CAED2F,MAAAA,GAAS,IAAAwB,EACP,MAAM,UAAEnH,EAAS,OAAE+C,EAAM,KAAE5D,EAAI,UAAEyH,GAAchB,KAAKwB,MAC9C1D,EAA0B,QAAXX,EAErB,IAAIa,EAAa,CACfwB,KAAO3E,GAAW,uBAAAmB,QAA4BC,EAAAA,EAAAA,GAAkB,CAAEC,EAAWC,EAAGtB,EAAKuB,GAAI7C,EAAMwD,EAAGiE,KAClGtB,QAASA,OACTpB,OAAQlE,EACR4D,WAAY,CACV,CAAEnD,IAAK4G,EAAAA,GAAiBC,QAAS7B,MAAO,MACxC,CAAEhF,IAAK4G,EAAAA,GAAiBE,OAAQ9B,MAAO,KACvC,CAAEhF,IAAK4G,EAAAA,GAAiBG,MAAO/B,MAAO,KACtC,CAAEhF,IAAK4G,EAAAA,GAAiBI,OAAQhC,MAAO,KACvC,CAAEhF,IAAK4G,EAAAA,GAAiBK,QAASjC,MAAO,OAG5C,MAAMzE,EAAoBU,eAAeiG,mBACnCC,EAAgB5G,EAAoB6G,EAAUpE,EAEpD,OACErB,EAAAA,EAAAA,MAAA,OACEC,UAAWG,IAAW,iBAAkB,CACtCsF,SAAU9G,EACV,OAAQ0C,GAAgB1C,IACvBsB,SAAA,EAEHC,EAAAA,EAAAA,KAAA,OACEF,UAAW0F,IAAW,CACpB,0EACE/G,GAAgC,QAAX+B,IACtBT,UAEHC,EAAAA,EAAAA,KAAA,OACEF,UAAWG,IACT,UACAxB,GAAqB,CACnB,iBAAkB0C,EAClB,uBAAwBA,IAE1BpB,UAEFC,EAAAA,EAAAA,KAACqF,EAAa,CACZjE,WAAYN,EAASiB,OACrBV,WAAYA,EACZF,aAAcA,EACdG,QAAmC,QAA5BsD,EAAE/F,EAAAA,EAAW4G,QAAQjF,UAAO,IAAAoE,OAAA,EAA1BA,EAA4BnE,MACrCc,kBAAmB8B,KAAKqC,mBACxBlE,kBAAoB6C,GAAchB,KAAKsB,SAASlB,EAAe,CAAEY,qBAItElD,IACCnB,EAAAA,EAAAA,KAAC7B,EAAS,CACRM,kBAAmBA,EACnBJ,WAAYmC,EACZlC,gBAAiBb,EACjBc,YAAa8F,EACbzH,KAAMA,EACN4B,mBAAoBC,MAK9B,EAGF,qfC3GA,IAAIkH,EAAqBC,EAAAA,GAAIpC,KAAK,KAAMqC,EAAAA,IACxC,MAAMC,IAAoB3G,eAAeiG,mBAEzC,IAAIW,EAAYA,CAACC,EAAeC,KAC9B,IAAIC,EAAS,4CAA4CC,KAAKH,GAC5D5F,EAAIgG,SAASF,EAAO,GAAI,IACxBG,EAAID,SAASF,EAAO,GAAI,IACxBI,EAAIF,SAASF,EAAO,GAAI,IAC1B,MAAO,QAAP7G,OAAee,EAAC,MAAAf,OAAKgH,EAAC,MAAAhH,OAAKiH,EAAC,MAAAjH,OAAK4G,EAAO,MAiB1C,MAAMM,UAAiBpD,EAAAA,UAAyBoB,WAAAA,GAAA,SAAAZ,WAAAa,EAAA,iBA2InC,CAACgC,EAAUC,KACpBA,EAAEC,iBACFrD,KAAKC,MAAMP,SAAWM,KAAKC,MAAMP,QAAQyD,EAAI,GAC9C,CA7IDpD,MAAAA,GACE,IAAIuD,EAAOtD,KAAKC,MAAMtG,KAClB4J,EAASD,EAAK1I,KAAI,SAAUkG,GAC9B,OAAOA,EAAE1D,KACX,IAKEE,EAAQ,GAAuBgG,EAAK/C,OAEpCiD,EAAa,IAEXC,EAAIC,EAAAA,MAELC,OAAO,CAAC,EAAGC,KAAKC,KAAKH,EAAAA,IAAOJ,GAAOxC,GAAW8C,KAAKE,IAAIhD,EAAEjB,YACzDkE,MAAM,CAAC,EAAGP,IACVQ,KAAK,GAEJC,EAAaR,EAAES,MAAM,GAAGC,QAAQC,GAAcA,EAAO,IAErDC,EAAIX,EAAAA,KAELC,OAAOJ,GACPQ,MAAM,CAAC,EAAG,GAAuBT,EAAK/C,SAErC+D,EAAahC,EAAmBtC,KAAKC,MAAMzF,OAAQwF,KAAKC,MAAMsE,UAGlEjB,EAAOA,EAAKkB,QAAQC,MAAK,SAAUC,EAAQzB,GACzC,OAAIyB,EAAEtH,MAAQ6F,EAAE7F,OACN,EAENsH,EAAEtH,MAAQ6F,EAAE7F,MACP,EAEF,CACT,IAEA,IAAIuH,EACF,CACE7D,EAAG,QACH8D,EAAG,SACHC,EAAG,UACHC,IAAK,gBACLC,EAAG,UACHC,GAAI,YACJvB,EAAG,SACHwB,IAAK,gBACLjF,KAAKC,MAAMzF,QAAU,wBAEzB,OACEgC,EAAAA,EAAAA,MAAA,OACEC,UAAU,2CACVyI,MAAO,CAAEC,OAAQ1C,OAAkB3F,EAAY,SAAUQ,SAAQZ,SAAA,EAEjEF,EAAAA,EAAAA,MAAA,MAAIC,UAAU,oBAAmBC,SAAA,CAAEiI,EAAO,cAC1CnI,EAAAA,EAAAA,MAAA,OAAK0I,MAAO,CAAEE,SAAU,WAAY7H,OAAQA,KAAab,SAAA,CACtDuH,EAAWrJ,KAAKwJ,IACfzH,EAAAA,EAAAA,KAAA,OACEF,UAAU,iBACVyI,MAAO,CAAEE,SAAU,WAAYC,KAAM,EAAGC,IAAK9B,EAAaI,KAAK2B,MAAM9B,EAAEW,KAAS1H,UAGhFF,EAAAA,EAAAA,MAAA,OAAAE,SAAA,CAAM0H,EAAKoB,QAAQ,GAAG,QAFjBpB,KAMRH,EAAWrJ,KAAKwJ,IACfzH,EAAAA,EAAAA,KAAA,OACEF,UAAU,iBACVyI,MAAO,CAAEE,SAAU,WAAYC,KAAM,EAAGC,IAAK9B,IAA2BI,KAAK2B,MAAM9B,EAAEW,KAAS1H,UAG9FF,EAAAA,EAAAA,MAAA,OAAAE,SAAA,CAAK,IAAE0H,EAAKoB,QAAQ,GAAG,QAFlBpB,KAMRd,EAAK1I,KAAK6K,IACT,IAAIlI,EAASqG,KAAK2B,MAAM9B,EAAEG,KAAKE,IAAI2B,EAAI5F,SACnC8C,EAAQ2B,EAAWmB,EAAI5F,OACvBqF,EAAuB,CACzBE,SAAU,WACVE,IAAKG,EAAI5F,OAAS,EAAI2D,EAAajG,EAASiG,IAC5C6B,KAAMhB,EAAEoB,EAAIrI,OACZG,OAAQA,EACRD,MAhFK,GAiFLoI,WAAYhD,EAAUC,EAAO,OACzBF,GAAmB,CACrBkD,qBAAsBF,EAAI5F,OAAS,EAAI,EAAI,EAC3C+F,oBAAqBH,EAAI5F,OAAS,EAAI,EAAI,EAC1CgG,wBAAyBJ,EAAI5F,OAAS,EAAI,EAAI,EAC9CiG,uBAAwBL,EAAI5F,OAAS,EAAI,EAAI,IAG7CkG,EAAa,CACfT,IAAKG,EAAI5F,MAAQ,GAAK,GAAK,OAC3BmG,OAAQP,EAAI5F,MAAQ,GAAK,GAAK,WACzB4C,GAAmB,CACtBE,UAGAsD,EAAa,CACfP,WAAY/C,EACZqD,OAAQP,EAAI5F,OAAS,GAjGf,GAiGkCtC,KACpCkF,GAAmB,CACrBkD,qBAAsBF,EAAI5F,OAAS,EAAI,EAAI,EAC3C+F,oBAAqBH,EAAI5F,OAAS,EAAI,EAAI,EAC1CgG,wBAAyBJ,EAAI5F,OAAS,EAAI,EAAI,EAC9CiG,uBAAwBL,EAAI5F,OAAS,EAAI,EAAI,KAC3B,IAAd4F,EAAI5F,OAAe,CACrBqG,aAAc,KAIpB,OACE1J,EAAAA,EAAAA,MAAA,OACEC,UAAW,SAAWgJ,EAAIjG,KAAO,eAAiB,IAElD0F,MAAOA,EACPxF,QAASM,KAAKmG,SAAShG,KAAKH,KAAMyF,GAAK/I,SAAA,EAEvCF,EAAAA,EAAAA,MAAA,OAAKC,UAAW,QAASyI,MAAOa,EAAWrJ,SAAA,CACxC+I,EAAI5F,MAAM2F,QAAQ,GAAG,QAExB7I,EAAAA,EAAAA,KAAA,OAAKF,UAAU,QAAQyI,MAAOe,EAAWvJ,SACtC+I,EAAIrI,UARFqI,EAAIrI,MAUL,QAIZT,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,WAGN,EAQF,ucCpKA,MAAMyJ,UAA0BtG,EAAAA,UAAkCoB,WAAAA,GAAA,SAAAZ,WAAAa,EAAA,aAGxD,CACNkF,KAAMrG,KAAKC,MAAMoG,MAClB,CAEDC,iBAAAA,GACEtG,KAAKuG,gBAAkBC,OAAOC,aAAYrF,UACxC,MAAMzH,QAAaM,EAAAA,EAAAA,IAAW,wBAAD+B,OAAyBwK,OAAOE,SAASC,SAClEhN,GACFqG,KAAKsB,SAAS,CAAE+E,KAAM1M,GACxB,GACC,IACL,CAEAiN,oBAAAA,GACEC,cAAc7G,KAAKuG,gBACrB,CAEAxG,MAAAA,GACE,IAAI+G,GAAOrG,EAAAA,EAAAA,KAAuB,GAAK,IACnCsG,EAAK,CAAEjG,EAAG,EAAG8D,EAAG,EAAGC,EAAG,EAAGC,IAAK,EAAGC,EAAG,EAAGC,GAAI,EAAGvB,EAAG,EAAGwB,IAAK,GACzD+B,EAAsC,CAAC,EAC3CtG,OAAOuG,KAAKF,GAAIG,SAASrM,IACvBmM,EAAGD,EAAGlM,GAAwBsM,YAActM,CAAG,IAGjD,IAAImD,EAA0C,CAC5CwB,KAAO3E,GAAQ,8BAAgCkM,EAAGlM,GAClD6E,QAASA,OACTpB,OAAQ0I,EAAGF,GACX9I,WAAY,CACV,CAAEnD,IAAK,IAAKgF,MAAO,IAAKhB,MAAO,OAC/B,CAAEhE,IAAK,IAAKgF,MAAO,IAAKhB,MAAO,QAC/B,CAAEhE,IAAK,IAAKgF,MAAO,IAAKhB,MAAO,SAC/B,CAAEhE,IAAK,MAAOgF,MAAO,MAAOhB,MAAO,iBACnC,CAAEhE,IAAK,IAAKgF,MAAO,IAAKhB,MAAO,WAC/B,CAAEhE,IAAK,KAAMgF,MAAO,KAAMhB,MAAO,aACjC,CAAEhE,IAAK,IAAKgF,MAAO,IAAKhB,MAAO,QAC/B,CAAEhE,IAAK,MAAOgF,MAAO,MAAOhB,MAAO,kBAInCwH,EAAO3F,OAAOuG,KAAKjH,KAAKwB,MAAM6E,MAC/BzL,KAAKC,IAAG,CACPuC,MAAOvC,EACPgF,MAAOG,KAAKwB,MAAM6E,KAAKxL,OAExB4J,MAAK,CAACC,EAAGzB,IAAMA,EAAEpD,MAAQ6E,EAAE7E,QAE9B,MAAMzE,EAAoBU,eAAeiG,mBACnCC,EAAgB5G,EAAoB6G,EAAUpE,EACpD,OACErB,EAAAA,EAAAA,MAAA,OAAKC,UAAU,8BAA6BC,SAAA,EAC1CC,EAAAA,EAAAA,KAACqF,EAAa,CAACjE,WAAYN,EAASgB,YAAaT,WAAYA,KAC7DrB,EAAAA,EAAAA,KAAA,OAAKF,UAAU,uBAAsBC,UACnCC,EAAAA,EAAAA,KAAA,OAAKF,UAAU,oBAAmBC,UAChCC,EAAAA,EAAAA,KAACuG,EAAQ,CACP5F,MAAO,IACP3D,KAAM0M,EACN3G,QAASA,OACTlF,OAAQwM,EAAGF,MACN1L,GAAqB,CAAEmJ,SAAU6C,EAAAA,YAMlD,EAGF,0fCvEA,MAAMC,GAAgBlK,IAGb,IAFI3B,EAAAA,EAAW4G,QAAQjF,KAO1BmH,IAAahC,EAAAA,EAAAA,IAAmBgF,EAAAA,GAAe,IAAKF,EAAAA,IAE3C,MAAMG,WAAahM,EAAAA,UAA2B2F,WAAAA,GAAA,SAAAZ,WAAAa,GAAA,aACnDkG,GAAarH,KAAKC,MAAM9C,SAAOgE,GAAA,kBAU3B,KACVnB,KAAKsB,SAAS+F,GAAarH,KAAKC,MAAM9C,QAAQ,GAC/C,CAVDmJ,iBAAAA,GACE9K,EAAAA,EAAWG,kBAAkBqE,KAAKwH,UACpC,CAEAZ,oBAAAA,GACEpL,EAAAA,EAAWI,qBAAqBoE,KAAKwH,UACvC,CAMAzH,MAAAA,GAAS,IAAA0H,EAAAC,EAAAC,EAAAC,GACH,MAAExK,EAAK,KAAEyK,EAAI,UAAEC,EAAS,OAAEC,EAAM,KAAEC,EAAI,IAAEC,EAAG,UAAEzK,EAAS,qBAAE0K,GAAyBlI,KAAKwB,OACtF,OAAErE,EAAM,aAAEgL,EAAY,aAAEC,GAAiBpI,KAAKC,MAG9CoI,EAASR,EAAO,EAAI,EAAI,EACxBA,EAAO,MAASA,EAAO,IACzBQ,EAAS,GAEX,IAAI9C,EAAS+C,MAAiB1E,KAAK2B,MAAMgD,OAAOD,EAAI,KAAOD,IAAW,KAAOA,IAAS7C,QAAQ6C,GAE1FtE,EAAuB,IAAdiE,EAAOC,GAChBO,EAAgBX,EAAOG,EAAOjE,EAC9B0E,EAAeZ,EAAOI,EAAMlE,EAEhC,IAAI2E,EAAanD,EAAMsC,EAAOC,GACf,WAAX3K,IACFuL,GAAcb,EAAOC,GAAWtC,QAAQ6C,IAG1C,MACM7I,GADwB,WAAXrC,EAAsBkC,EAAAA,GAAWsJ,MAAQtJ,EAAAA,GAAWC,UAEtDD,EAAAA,GAAWC,OAAS,8BAAgCnC,EAAS,6BAA+BA,EACvGyL,EAAaC,GAAAA,GACjB,IAAM1L,EAAOS,eACb,EACAyB,EAAAA,GAAWC,OAAmC,QAA7BmI,EAAG3L,eAAegN,mBAAW,IAAArB,GAAQ,QAARA,EAA1BA,EAA4BsB,cAAM,IAAAtB,OAAA,EAAlCA,EAAoCrN,UAAsC,QAA7BsN,EAAG5L,eAAegN,mBAAW,IAAApB,GAAO,QAAPA,EAA1BA,EAA4BsB,aAAK,IAAAtB,OAAA,EAAjCA,EAAmCtN,UACvGiF,EAAAA,GAAWC,OAAmC,QAA7BqI,EAAG7L,eAAegN,mBAAW,IAAAnB,GAAQ,QAARA,EAA1BA,EAA4BoB,cAAM,IAAApB,OAAA,EAAlCA,EAAoC3G,UAAsC,QAA7B4G,EAAG9L,eAAegN,mBAAW,IAAAlB,GAAO,QAAPA,EAA1BA,EAA4BoB,aAAK,IAAApB,OAAA,EAAjCA,EAAmC5G,WAGnGiI,EAAU,qDAAHjN,OAAwD4M,EAAWM,IAAG,eAAAlN,OAAcmM,EAAY,eAAAnM,OAAcoM,EAAY,iBAEvI,OACEzL,EAAAA,EAAAA,KAACwM,GAAAA,EAAe,CACdF,QAASA,EACTzJ,KAAMA,EACNqI,KAAMtC,EAAMsC,GACZG,KAAMzC,EAAMyC,GACZC,IAAK1C,EAAM0C,GACX7K,MAAOA,EACPI,UAAWA,EACX0K,qBAAsBA,EACtBH,QAtCUO,EAsCKP,GAtCUO,GAAK,EAAI,IAAM,IAAMA,EAAE9C,QAAQ,GAAK,KAuC7D4D,gBAAiBrB,EACjBW,WAAYA,EACZW,gBAAiB/E,GAAWyD,GAC5BS,cAAeA,EACfC,aAAcA,IA3CJH,KA8ChB,ECxFF,MAAMgB,GAAS,CACb,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,WAG5B,SAASC,KACtB,OACE5M,EAAAA,EAAAA,KAAA,OAAKF,UAAU,gEAA+DC,SAC3E4M,GAAO1O,KAAI,CAACuI,EAAKqG,KAChB7M,EAAAA,EAAAA,KAAA,OAAcF,UAAU,qBAAoBC,SACzCyG,EAAIvI,KAAKuC,IACRR,EAAAA,EAAAA,KAAC4K,GAAI,CAACpK,OAAQA,EAAQgL,aAAc,EAAGC,aAAc,QAF/CoB,MAQlB,+bCFA,IAAIlF,IAAahC,EAAAA,EAAAA,IAAmBgF,EAAAA,GAAe,KAEnD,MAAMiC,WAAezJ,EAAAA,UACnBC,MAAAA,GACE,IAAI0J,EAAS,CACX,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,WAIvCnM,EADY,IACJmM,EAAO,GAAGlJ,OAAqB,GAE3C,OACE5D,EAAAA,EAAAA,KAAA,OAAKuI,MAAO,CAAEC,OAAQ,SAAU7H,SAAQZ,SACrC+M,EAAO7O,KAAI,CAACuI,EAAKqG,KAChBhN,EAAAA,EAAAA,MAAA,OAAAE,SAAA,CACGyG,EAAIvI,KAAKuC,IACRR,EAAAA,EAAAA,KAAC4K,GAAI,CAACpK,OAAQA,EAAqBG,MAR7B,IAQ+C6K,aAAa,IAAIC,aAAa,MAAxDjL,MAE7BR,EAAAA,EAAAA,KAAA,OAAKF,UAAU,eAJP+M,MASlB,EAUF,SAASnC,GAAapH,GACpB,OAAOzE,EAAAA,EAAW4G,QAAQnC,EAAM9C,OAClC,CAEA,MAAMoK,WAAazH,EAAAA,UAAqBoB,WAAAA,GAAA,SAAAZ,WAAAa,GAAA,aAC9BkG,GAAarH,KAAKC,QAAMkB,GAAA,kBAUpB,KACVnB,KAAKsB,SAAS+F,GAAarH,KAAKC,OAAO,GACxC,CAVDqG,iBAAAA,GACE9K,EAAAA,EAAWG,kBAAkBqE,KAAKwH,UACpC,CAEAZ,oBAAAA,GACEpL,EAAAA,EAAWI,qBAAqBoE,KAAKwH,UACvC,CAMAzH,MAAAA,GAAS,IAAA0H,EAAAC,EAAAC,EAAAC,GACH,OAAEzK,EAAM,MAAEC,EAAK,KAAEyK,EAAI,UAAEC,EAAS,OAAEC,EAAM,KAAEC,EAAI,IAAEC,EAAG,UAAEzK,EAAS,qBAAE0K,GAAyBlI,KAAKwB,OAC9F,aAAE2G,EAAY,aAAEC,GAAiBpI,KAAKC,MAEtCb,EAAwB,WAAXjC,EAAsBkC,EAAAA,GAAWsJ,MAAQtJ,EAAAA,GAAWC,OAGjE+I,EAASR,EAAO,EAAI,EAAI,EACxBA,EAAO,MAASA,EAAO,IACzBQ,EAAS,GAEX,IAAI9C,EAAS+C,MAAiB1E,KAAK2B,MAAMgD,OAAOD,EAAI,KAAOD,IAAW,KAAOA,IAAS7C,QAAQ6C,GAE1F7I,EACFJ,IAAeC,EAAAA,GAAWC,OAAS,8BAAgCnC,EAAS,6BAA+BA,EAE7G,MAAMyL,EAAaC,GAAAA,GACjB,IAAM1L,EAAOS,eACb,EACAwB,IAAeC,EAAAA,GAAWC,OACI,QADEmI,EAC5B3L,eAAegN,mBAAW,IAAArB,GAAQ,QAARA,EAA1BA,EAA4BsB,cAAM,IAAAtB,OAAA,EAAlCA,EAAoCrN,UACV,QADmBsN,EAC7C5L,eAAegN,mBAAW,IAAApB,GAAO,QAAPA,EAA1BA,EAA4BsB,aAAK,IAAAtB,OAAA,EAAjCA,EAAmCtN,UACvCgF,IAAeC,EAAAA,GAAWC,OACI,QADEqI,EAC5B7L,eAAegN,mBAAW,IAAAnB,GAAQ,QAARA,EAA1BA,EAA4BoB,cAAM,IAAApB,OAAA,EAAlCA,EAAoC3G,UACV,QADmB4G,EAC7C9L,eAAegN,mBAAW,IAAAlB,GAAO,QAAPA,EAA1BA,EAA4BoB,aAAK,IAAApB,OAAA,EAAjCA,EAAmC5G,WAGnCiI,EAAU,qDAAHjN,OAAwD4M,EAAWM,IAAG,eAAAlN,OAAcmM,EAAY,eAAAnM,OAAcoM,EAAY,iBAEvI,IAvBcE,EAuBV3F,EAAQ2B,GAAWyD,GAEnBhE,EAAuB,IAAdiE,EAAOC,GAChBO,EAAgBX,EAAOG,EAAOjE,EAC9B0E,EAAeZ,EAAOI,EAAMlE,EAC5B2F,EAAiB,CACnBhE,WAAY,UACZ/C,MAAO,WAGLgH,EAAgB/F,KAAKgG,IAAIhG,KAAKE,IAAIiE,GAAS,GAE3C8B,EAAe,CAAElH,MAAO,uBAAF3G,OADR,GAAO,GAAW2N,EAC0B,MAE1DG,EAAiBvE,EAAMsC,EAAOC,GAKlC,MAJe,WAAX3K,IACF2M,GAAkBjC,EAAOC,GAAWtC,QAAQ6C,KAI5C1L,EAAAA,EAAAA,KAAA,KACEF,UAAW,WAAaU,EACxBN,KAAM2C,EACN0F,MAAO,CAAE5H,MAAO0C,KAAKC,MAAM3C,MAAOyM,WAAY,GAC9C,eAAcd,EAAQvM,UAEtBF,EAAAA,EAAAA,MAAA,OAAKC,UAAU,eAAeyI,MAAO,CAAEmE,gBAAiB1G,GAAQjG,SAAA,EAC9DC,EAAAA,EAAAA,KAAA,QAAMF,UAAU,aAAYC,SAAEU,KAC9BT,EAAAA,EAAAA,KAAA,QAAMF,UAAU,kBAAiBC,SAAE6I,EAAMsC,MACzCrL,EAAAA,EAAAA,MAAA,QAAMC,UAAU,cAAaC,SAAA,EApDrB4L,EAqDEP,GArDaO,GAAK,EAAI,IAAM,IAAMA,EAAE9C,QAAQ,GAAK,MAsDzD7I,EAAAA,EAAAA,KAAA,QAAMF,UAAU,WAAUC,SAAC,QAC1BoN,EAAeE,QAAQ,IAAK,QAE/BxN,EAAAA,EAAAA,MAAA,OAAKC,UAAU,gBAAgByI,MAAO2E,EAAanN,SAAA,EACjDF,EAAAA,EAAAA,MAAA,OAAK0I,MAAOsD,EAAgBkB,EAAiB,CAAC,EAAEhN,SAAA,EAC9CC,EAAAA,EAAAA,KAAA,QAAMF,UAAU,kBAAiBC,SAAC,MAAQ,IAAE6I,EAAMyC,OAEpDxL,EAAAA,EAAAA,MAAA,OAAK0I,MAAOuD,EAAeiB,EAAiB,CAAC,EAAEhN,SAAA,EAC7CC,EAAAA,EAAAA,KAAA,QAAMF,UAAU,iBAAgBC,SAAC,MAAQ,IAAE6I,EAAM0C,UAGrDtL,EAAAA,EAAAA,KAACU,GAAAA,EAAS,CACRC,MAAO0C,KAAKC,MAAM3C,MAClBC,OAAQ,GACR5D,KAAM6D,EACNyM,YAAa/B,EACbH,OAAQA,EACRmC,aAAc,QAKxB,EAGF,SAASC,KACP,MAAO,CACL/Q,MAAOoC,EAAAA,EAAWC,WAEtB,CAEA,MAAM2O,WAAqBtK,EAAAA,UAAUoB,WAAAA,GAAA,SAAAZ,WAAAa,GAAA,aAC3BgJ,MAAsBhJ,GAAA,kBAUlB,KACVnB,KAAKsB,SAAS6I,KAAuB,GACtC,CAVD7D,iBAAAA,GACE9K,EAAAA,EAAWG,kBAAkBqE,KAAKwH,UACpC,CAEAZ,oBAAAA,GACEpL,EAAAA,EAAWI,qBAAqBoE,KAAKwH,UACvC,CAMAzH,MAAAA,GACE,IAAI/B,EAAa,CACfwB,KAAMA,IAAM,IACZE,QAASA,CAACtF,EAAmBgJ,KAC3BA,EAAEC,iBACFhC,EAAqBlH,gBAAgBC,EAAU,EAEjDkE,OAAQtF,EAAAA,EAAUC,eAClB+E,WAAY,CACV,CAAEnD,IAAK,KAAMgF,MAAO,MACpB,CAAEhF,IAAK,IAAKgF,MAAO,KACnB,CAAEhF,IAAK,IAAKgF,MAAO,KACnB,CAAEhF,IAAK,IAAKgF,MAAO,KACnB,CAAEhF,IAAK,IAAKgF,MAAO,OAKnBzG,EAAQ4G,KAAKwB,MAAMpI,MAEnBiR,EAAe,CAAEC,IAAK,GAC1B5J,OAAOuG,KAAK7N,GAAO8N,SAAS/J,IAC1B,IAAID,EAAO9D,EAAM+D,GACjB,IAA+B,IAA3BA,EAAOoN,QAAQ,QAA4B,WAAXpN,EAApC,CAGA,IAAIqN,EAAqC,QAA3BrN,EAAOsN,UAAU,EAAG,GAElCJ,EAAalN,EAAO6M,QAAQ,MAAO,KAC6C,KAA7EQ,EAAUtN,EAAK4K,UAAY5K,EAAK2K,KAAO,EAAI3K,EAAK2K,KAAO3K,EAAK4K,UAAY,EAJ3E,CAImF,IAGrF,IAAIzB,EAAO3F,OAAOuG,KAAKoD,GACpBzP,KAAKC,IAAG,CACPuC,MAAOvC,EAEPgF,MAAOwK,EAAaxP,OAErB4J,MAAK,CAACC,EAAGzB,IAAMA,EAAEpD,MAAQ6E,EAAE7E,QAE9B,MAAMzE,EAAoBU,eAAeiG,mBACnCC,EAAgB5G,EAAoB6G,EAAUpE,EAC9C6M,EAAkBtP,EAAoBuP,GAAYpB,GAExD,OACE/M,EAAAA,EAAAA,MAAA,OAAKC,UAAU,8BAA6BC,SAAA,EAC1CC,EAAAA,EAAAA,KAACqF,EAAa,CAACjE,WAAYN,EAASc,OAAQP,WAAYA,KACxDrB,EAAAA,EAAAA,KAAC+N,EAAe,KACdtP,IACAoB,EAAAA,EAAAA,MAAAoO,EAAAA,SAAA,CAAAlO,SAAA,EACEC,EAAAA,EAAAA,KAAA,OAAKF,UAAU,cACfE,EAAAA,EAAAA,KAAA,aAGJA,EAAAA,EAAAA,KAAA,OACEF,UAAWG,IAAW,uBAAwB,CAC5C,OAAQxB,IACPsB,UAEHC,EAAAA,EAAAA,KAAA,OAAKF,UAAU,oBAAmBC,UAChCC,EAAAA,EAAAA,KAACuG,EAAQ,CAAC5F,MAAO,IAAK3D,KAAM0M,EAAM7L,OAAO,OAASY,GAAqB,CAAEmJ,SAAU6C,EAAAA,YAK7F,EAGF,YCrOAZ,OAAyB,iBAAI,SAAUpN,GACrCiI,EAAqBlI,UAAUC,GAC/B,MAAMyR,EAASC,SAASC,eAAe,UAC1BC,EAAAA,WAA0BH,GAClC9K,QAAOpD,EAAAA,EAAAA,KAACyN,GAAY,KAEzB3D,YAAYpF,EAAqB3H,OAAQ,IAC3C,EAEA8M,OAAoC,4BAAI,SAAUH,GAChD,MAAMwE,EAASC,SAASC,eAAe,WAC1BC,EAAAA,WAA0BH,GAClC9K,QAAOpD,EAAAA,EAAAA,KAACyJ,GAAiB,CAACC,KAAMA,IACvC,EAEAG,OAA+B,uBAAI,WACjC,MAAMyE,EAAWH,SAASC,eAAe,UACnCG,EAASJ,SAASC,eAAe,oBACvC,IAAKE,IAAaC,EAAQ,OAE1B,IACE,MAAMC,GAAWC,EAAAA,EAAAA,IAAuB,oBACxC/J,EAAqB3H,OAAOyR,EAC9B,CAAE,MACA,MACF,CAEaH,EAAAA,WAA0BC,GAElClL,QACHpD,EAAAA,EAAAA,KAAC0O,EAAAA,GAAa,CAAA3O,UACZC,EAAAA,EAAAA,KAACsE,EAAY,MAGnB,GAEAqK,EAAAA,EAAAA,IAAM,WACJ,MAAML,EAAWH,SAASC,eAAe,UACnCQ,EAAUT,SAASC,eAAeS,EAAAA,IAClCN,EAASJ,SAASC,eAAe,oBAEvC,KAAKE,GAAaM,GAAYL,GAAW1E,OAAOiF,mBAAmB,OAEnE,IACE,MAAMN,GAAWC,EAAAA,EAAAA,IAAuB,oBACxC/J,EAAqB3H,OAAOyR,EAC9B,CAAE,MACA,MACF,CAEaH,EAAAA,WAA0BO,GAElCxL,QACHpD,EAAAA,EAAAA,KAAC0O,EAAAA,GAAa,CAAA3O,UACZF,EAAAA,EAAAA,MAACkP,EAAAA,GAAmB,CAAAhP,SAAA,CACjBiP,EAAAA,cAAsBhP,EAAAA,EAAAA,KAACsE,EAAY,IAAKgK,IACzCtO,EAAAA,EAAAA,KAACiP,EAAAA,SAAQ,CAACC,SAAU,KAAKnP,UACvBC,EAAAA,EAAAA,KAACmP,EAAAA,EAAmC,CAAC7M,2BAA4BC,EAAAA,GAA2BC,oBAKtG,6jBCzEA,IAAI4M,EAA8B,CAAC,EAgBnC,MAAMC,UAAwBlM,EAAAA,UAAgCoB,WAAAA,GAAA,SAAAZ,WAAAa,EAAA,eAKnD8K,EAAAA,EAAAA,cAA8B9K,EAAA,sBA0BvB,KACd,IAAI,KAAExH,EAAI,YAAEsQ,EAAW,MAAE3M,EAAK,OAAEC,EAAM,cAAE2O,EAAa,OAAEC,EAAM,UAAEC,EAAS,UAAEC,GAAcrM,KAAKC,OAE7FqM,EAAAA,EAAAA,GAAStM,KAAKuM,OAAOC,QAASxM,KAAKyM,cAAezM,KAAKC,MAAM3C,MAAO0C,KAAKC,MAAM1C,QAG/E,IAAImP,EAAYpP,EAAQ,IAAM3D,EAAK4G,OAC/B8D,EAAI0H,EAAOW,GACVrI,IACHA,EAAIX,EAAAA,MAEDK,MAAM,EAAE,EAAGzG,EAAQ,IACnBqG,OAAO,CAAC,EAAGhK,EAAK4G,SACnBwL,EAAOW,GAAarI,GAGtB,IAAIZ,EAAIC,EAAAA,MAELK,MAAM,CAACxG,EAAS,EAAG,IACnBoG,OAAOD,EAAAA,IAAU/J,GAAOmH,GAAMA,KAE7BoJ,EAAelK,KAAKC,MAAMiK,aAC1BP,EAAgB/F,KAAKgG,IAAIhG,KAAKE,IAAI9D,KAAKC,MAAM8H,QAASmC,GACtDyC,EAAcT,GAAiB,GAAO,GAAMhC,EAAgBP,GAAenE,QAAQ,GAAK,EAI5F,GAFAxF,KAAKyM,cAAcG,UAAU,EAAG,EAAGtP,EAAOC,GAEtC4O,EAAQ,CACVnM,KAAKyM,cAAcI,UAAU,GAAK,IAElC7M,KAAKyM,cAAcK,YAAc,wBACjC9M,KAAKyM,cAAcM,YACnB,IAAK,IAAIC,EAAI,EAAGA,EAAIrT,EAAK4G,OAAQyM,IAC/BhN,KAAKyM,cAAcQ,OAAO5I,EAAE2I,GAAIvJ,EAAE9J,EAAKqT,KAEzChN,KAAKyM,cAAcS,SAEnBlN,KAAKyM,cAAcU,UAAY,wBAC/BnN,KAAKyM,cAAcW,UAAY,SAC/BpN,KAAKyM,cAAcY,KAAO,WAC1B3M,OAAOuG,KAAKgD,GAAa/C,SAASrM,IAChC,IAAIyS,EAAOjJ,EAAExJ,GACTyS,EAAO,GAGXtN,KAAKyM,cAAcc,SAAStD,EAAYpP,GAAMyS,EAAM/P,EAAS,EAAE,IAGjEyC,KAAKyM,cAAcI,WAAW,IAAM,GACtC,CAEA7M,KAAKyM,cAAcK,YAAcV,QAAAA,EAAS,uBAAApQ,OAA2B2Q,EAAW,KAChF3M,KAAKyM,cAAcM,YACnB,IAAK,IAAIC,EAAI,EAAGA,EAAIrT,EAAK4G,OAAQyM,IAC/BhN,KAAKyM,cAAcQ,OAAO5I,EAAE2I,GAAIvJ,EAAE9J,EAAKqT,KAEzChN,KAAKyM,cAAcS,SAEnBlN,KAAKyM,cAAcU,UAAYd,QAAAA,EAAS,uBAAArQ,OAA2B2Q,EAAW,KAC9E3M,KAAKyM,cAAcW,UAAY,SAC/BpN,KAAKyM,cAAcY,KAAO,WAC1B3M,OAAOuG,KAAKgD,GAAa/C,SAASrM,IAChC,IAAIyS,EAAOjJ,EAAExJ,GACTyS,EAAO,GAGXtN,KAAKyM,cAAcc,SAAStD,EAAYpP,GAAMyS,EAAM/P,EAAS,EAAE,GAC/D,GACH,CA3FDiQ,qBAAAA,CAAsBC,GAEpB,OAAOA,EAAU9T,MAAQqG,KAAKC,MAAMtG,MAAQ8T,EAAUnQ,QAAU0C,KAAKC,MAAM3C,KAC7E,CAEAgJ,iBAAAA,GACEtG,KAAKyM,cAAgBzM,KAAKuM,OAAOC,QAASkB,WACxC,MACAC,EAAAA,EAAAA,MAAqB,CAAEC,oBAAoB,QAAS9Q,GAEtDkD,KAAK6N,eACP,CAEAC,kBAAAA,GACE9N,KAAK6N,eACP,CAEA9N,MAAAA,GACE,IAAI,MAAEzC,EAAK,OAAEC,GAAWyC,KAAKC,MACzBxD,EAAY,aAAeuD,KAAKC,MAAMxD,UAC1C,OAAOE,EAAAA,EAAAA,KAAA,UAAQF,UAAWA,EAAWa,MAAOA,EAAOC,OAAQA,EAAQwQ,IAAK/N,KAAKuM,QAC/E,EAuEDpL,EApGK6K,EAAe,eACG,CACpBE,eAAe,IAoGnB,yFC1HO,MAAM1S,EAAcwU,IAAU,CACnCC,KAAM,KACNxU,WAAY,KAEZK,YAAa,KAEbS,yBAA0B,KAC1BE,2BAA4B,KAC5ByT,wBAAyB,OAGdC,EAAiBH,IAAU,CACtCI,cAAe,KACfC,YAAa,gFCXf,MAAMhV,UAAsBiV,EAAAA,WAC1BpU,kBAAAA,CAAmBqU,GACjB,IAAIC,EAAU,CACZC,OAAQN,EAAAA,EAAeC,cACvBG,OAAQA,GAGVvO,KAAK0O,SAASF,EAChB,CAEAlV,gBAAAA,CAAiBiV,GACf,IAAIC,EAAU,CACZC,OAAQN,EAAAA,EAAeE,YACvBE,OAAQA,GAGVvO,KAAK0O,SAASF,EAChB,EAGF,MACA,EADmB,IAAInV,sFCnBvB,SAASsV,EAAQvV,GACf,OAAOsH,OAAOC,OAAOvH,GAClBwB,KAAI,SAAUsC,GACb,MAAO,CACLE,MAAOF,EAAKE,MACZyC,MAAO3C,EAAK6K,OAEhB,IACCtD,MAAK,SAAUC,EAAGzB,GACjB,OAAOA,EAAEpD,MAAQ6E,EAAE7E,KACrB,GACJ,CAEA,IAAI+O,EAAa,KACbC,EAAoC,GACxC,MAAM7V,UAAkB8V,EAAAA,EACtB7V,YAAAA,GACE,OAAO2V,CACT,CAEAD,OAAAA,GACE,OAAOE,CACT,EAEF,IAAIE,EAAY,IAAI/V,EAGpB+V,EAAUC,cAAgB3V,EAAAA,EAAc4V,UAAS,SAAUT,GACzD,IAAID,EAASC,EAAQD,OAErB,OAAQA,EAAOhV,MACb,KAAKC,EAAAA,EAAYyU,KACf,IAAIiB,EAAsC,CAAC,EAC3CX,EAAOlI,KAAKa,SAASpI,IACnBA,EAAMqQ,UAAUjI,SAASkI,IACvBF,EAAOE,EAASjS,QAAUiS,CAAQ,GAClC,IAGJP,EAAQF,EAAQO,GACZX,EAAOnU,YACTwU,EAAaL,EAAOnU,WAEtB2U,EAAUM,aACV,MAEF,KAAK7V,EAAAA,EAAYe,yBACfqU,EAAaL,EAAO/T,OACpBuU,EAAUM,aACV,MAEF,KAAK7V,EAAAA,EAAYM,YACf+U,EAAQF,EAAQJ,EAAOnV,OACvB2V,EAAUM,aAGhB,IAEA,uFC7DA,MAAMP,UAAcQ,EAAAA,aAGlBD,UAAAA,GACErP,KAAKuP,KAAKT,EAAMU,aAClB,CAEA7T,iBAAAA,CAAkB8T,GAChBzP,KAAK0P,GAAGZ,EAAMU,aAAcC,EAC9B,CAEA7T,oBAAAA,CAAqB6T,GACnBzP,KAAK2P,eAAeb,EAAMU,aAAcC,EAC1C,IAbIX,IACkB,gVADb,2GAgBX,uGCbIc,EAAuC,CAAC,EACxCV,EAAsC,CAAC,EACvCW,EAAuB,GAC3B,MAAMrU,UAAmBsT,EAAAA,EACvBrT,QAAAA,GACE,OAAOyT,CACT,CAEAY,YAAAA,GACE,OAAOpP,OAAOuG,KAAKiI,GAChBtU,KAAI,SAAUC,GACb,OAAOqU,EAAOrU,EAChB,IACC4J,MAAK,CAACC,EAAGzB,IAAM4M,EAAWtF,QAAQ7F,EAAEvH,QAAU0S,EAAWtF,QAAQtH,EAAE9F,SACxE,CAEAiF,OAAAA,CAAQjF,GACN,OAAO+R,EAAO/R,EAChB,CAEA4S,aAAAA,CAAc5S,GACZ,OAAOyS,EAAazS,EACtB,CAEA6S,eAAAA,CAAgBlR,GACd,IAAIkE,EAAIlE,EAAMiC,cACd,OAAOf,KAAK8P,eAAe3L,QAAQjH,GAAS0S,EAAa1S,EAAKC,UAAY6F,GAC5E,EAEF,IAAIiN,EAAa,IAAIzU,EACrByU,EAAWC,gBAAgB,IAG3BD,EAAWjB,cAAgB3V,EAAAA,EAAc4V,UAAS,SAAUT,GAC1D,IAAID,EAASC,EAAQD,OAErB,OAAQA,EAAOhV,MACb,KAAKC,EAAAA,EAAYyU,KACFM,EAAOlI,KACba,SAASpI,IACdA,EAAMqQ,UAAUjI,SAASkI,IACvBF,EAAOE,EAASjS,QAAUiS,EAC1BQ,EAAaR,EAASjS,QAAU2B,EAAM3B,OACtC0S,EAAWM,KAAKf,EAASjS,OAAO,GAChC,IAEJ8S,EAAWZ,aACX,MAEF,KAAK7V,EAAAA,EAAYC,WACfyV,EAASX,EAAOnV,MAChB6W,EAAWZ,aACX,MAEF,KAAK7V,EAAAA,EAAYM,YACf,IAAIV,EAAQmV,EAAOnV,MACnB8V,EAAS9V,EACT6W,EAAWZ,aAGjB,IAEA,8FC9BO,IAAK5R,EAAQ,SAARA,GAAQ,OAARA,EAAQ,gBAARA,EAAQ,0BAARA,EAAQ,gBAARA,CAAQ,MAMRgE,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,UAAhBA,EAAgB,aAAhBA,EAAgB,WAAhBA,EAAgB,UAAhBA,EAAgB,WAAhBA,EAAgB,YAAhBA,CAAgB,MAShB2O,EAAU,SAAVA,GAAU,OAAVA,EAAU,UAAVA,EAAU,oBAAVA,EAAU,uBAAVA,CAAU,MAMVC,EAAU,SAAVA,GAAU,OAAVA,EAAU,YAAVA,EAAU,cAAVA,EAAU,yBAAVA,EAAU,YAAVA,EAAU,uBAAVA,EAAU,YAAVA,EAAU,gCAAVA,CAAU,MAUVC,EAAS,SAATA,GAAS,OAATA,EAAS,UAATA,EAAS,4BAATA,EAAS,wBAATA,CAAS,6JClEjBlJ,EAAmB,CACrBmJ,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA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HI,SAAU,GACVC,WAAY,CACV,CACErM,KAAMsM,EAAAA,EAAaC,aACnBC,WAAY,GACZnY,SAAUoY,EAAAA,GAASC,OAErB,CACE1M,KAAM2M,EAAAA,EAAaJ,aACnBC,WAAY,GACZnY,SAAUoY,EAAAA,GAASC,UAK3BE,EAAAA,GAAAA,sBAAgCnX,OAAOiF,kBAAmBsR,EAAkBC,EAAO,CAAEA,aAASlgB,EAChG,CAEA,OAAO0J,OAAOiF,iBAChB,4FCjCA,MAoBarE,EAAmB,CAC9BmJ,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAEPoN,EAAmB,CAAErN,OAAQnJ,EAAiBmJ,OAAO/L,QAAQqZ,UAAWrN,UAAWpJ,EAAiBoJ,WACpGsN,EAAc,CAAEvN,OAAQnJ,EAAiBmJ,OAAO/L,MAAM,EAAG,IAAIqZ,UAAWrN,UAAWpJ,EAAiBoJ,WACpGuN,EAAgB,CAAExN,OAAQnJ,EAAiBmJ,OAAO/L,MAAM,IAAKgM,UAAWpJ,EAAiBoJ,WA49DzFwN,EAA0B,CAC9BzN,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAg/BAyN,EAAiD,CAC5D,CAACC,EAAAA,GAAQC,iBAAkB/W,EAC3B,CAAC8W,EAAAA,GAAQE,SAAUhX,EACnBiX,GAAIjX,EACJkX,IAAKlX,EACLmX,IAAKnX,EACLoX,IAAKpX,EACLqX,IAAKrX,EACLsX,QA97HmB,CACnBnO,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAo9FXmO,IAAKf,EACLgB,KAAMhB,EACNiB,KAAMjB,EACNkB,IAAKlB,EACLmB,IAAKnB,EACLoB,KAAMjB,EACNkB,OAAQ7X,EACR8X,OAAQpB,EACRqB,KAAM/X,EACNgY,UA39FuB,CACvB7O,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAi/DX6O,cAAejY,EACfkY,cAAelY,GAGJmY,EAAuD,CAClE,CAACrB,EAAAA,GAAQC,iBAAkBH,EAC3B,CAACE,EAAAA,GAAQE,SAAUJ,EACnBK,GAAIL,EACJM,IAAKN,EACLO,IAAKP,EACLQ,IAAKR,EACLS,IAAKT,EACLU,QA7gC0B,CAC1BnO,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAmCXmO,IAAKX,EACLY,KAAMZ,EACNa,KAAMb,EACNc,IAAKd,EACLe,IAAKf,EACLgB,KAAMhB,EACNiB,OAAQjB,EACRkB,OAAQlB,EACRmB,KAAMnB,EACNoB,UAAWpB,EACXqB,cAAerB,EACfsB,cAAetB,GAGJwB,EAziIiB,CAC5BjP,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEF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","sources":["webpack://@finviz/website/./js/app/crypto/actions/cryptoActionCreators.ts","webpack://@finviz/website/./js/app/crypto/components/ChartMenu.tsx","webpack://@finviz/website/./js/app/crypto/types.ts","webpack://@finviz/website/./js/app/crypto/components/redesign/Menu.tsx","webpack://@finviz/website/./js/app/crypto/menu.tsx","webpack://@finviz/website/./js/app/crypto/charts.tsx","webpack://@finviz/website/./js/app/crypto/barChart.tsx","webpack://@finviz/website/./js/app/crypto/performance.tsx","webpack://@finviz/website/./js/app/crypto/components/redesign/Tile.tsx","webpack://@finviz/website/./js/app/crypto/components/redesign/Layout.tsx","webpack://@finviz/website/./js/app/crypto/quotes.tsx","webpack://@finviz/website/./js/app/crypto/index.tsx","webpack://@finviz/website/./js/app/futures/components/CanvasSparkline.tsx","webpack://@finviz/website/./js/app/futures/constants/constants.ts","webpack://@finviz/website/./js/app/futures/dispatcher/appDispatcher.ts","webpack://@finviz/website/./js/app/futures/stores/rowsStore.ts","webpack://@finviz/website/./js/app/futures/stores/store.ts","webpack://@finviz/website/./js/app/futures/stores/tilesStore.ts","webpack://@finviz/website/./js/app/futures/types.ts","webpack://@finviz/website/./js/app/futures/utils.tsx","webpack://@finviz/website/./js/app/quote/use-chart-layout-width-watch.ts","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/./js/app/shared/components/ForexCryptoTile.tsx","webpack://@finviz/website/./js/app/shared/components/ForexFuturesCryptoSettings.tsx","webpack://@finviz/website/./js/app/shared/components/FuturesForexCryptoTimeframeBar.tsx","webpack://@finviz/website/./js/app/shared/components/ResizableChartLayoutWithGlobalState.tsx","webpack://@finviz/website/./js/app/shared/components/Sparkline.tsx","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/app/shared/hover-chart.ts","webpack://@finviz/website/./js/app/shared/retinafy.ts","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/../node_modules/flux/index.js","webpack://@finviz/website/../node_modules/flux/lib/Dispatcher.js","webpack://@finviz/website/../node_modules/flux/lib/invariant.js","webpack://@finviz/website/../node_modules/keymirror/index.js","webpack://@finviz/website/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://@finviz/website/../node_modules/prop-types/index.js","webpack://@finviz/website/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["import { CancelablePromise, apiRequest } from '../../../main/services/api'\r\nimport { ActionTypes } from '../../futures/constants/constants'\r\nimport AppDispatcher from '../../futures/dispatcher/appDispatcher'\r\nimport RowsStore from '../../futures/stores/rowsStore'\r\nimport { TileMap } from '../types'\r\n\r\nvar getCryptoUrl = function () {\r\n var timeframe = RowsStore.getTimeframe()\r\n return '/api/crypto_all.ashx?timeframe=' + timeframe\r\n}\r\n\r\nlet _lastRequest: CancelablePromise | null = null\r\n\r\nconst actions = {\r\n initTiles(tiles: TileMap) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.INIT_TILES,\r\n tiles,\r\n })\r\n },\r\n\r\n async update(data: any) {\r\n if (data) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n return\r\n }\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getCryptoUrl())\r\n const tiles = await _lastRequest\r\n if (tiles) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles,\r\n })\r\n }\r\n },\r\n\r\n async changeTimeframe(timeframe: string) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_STARTED,\r\n period: timeframe,\r\n })\r\n\r\n _lastRequest?.cancel?.()\r\n _lastRequest = apiRequest(getCryptoUrl())\r\n const data = await _lastRequest\r\n if (data) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.UPDATE_DATA,\r\n tiles: data,\r\n })\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.CHANGE_TIMEFRAME_COMPLETED,\r\n })\r\n }\r\n },\r\n}\r\n\r\nexport default actions\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport TilesStore from '../../futures/stores/tilesStore'\r\nimport { encodeQueryString } from '../../queryString'\r\nimport { ForexFuturesCryptoSettings } from '../../shared/components/ForexFuturesCryptoSettings'\r\nimport Sparkline from '../../shared/components/Sparkline'\r\nimport { CryptoTile } from '../types'\r\n\r\nconst TILES_ORDER = [\r\n 'BTCUSD',\r\n 'LTCUSD',\r\n 'ETHUSD',\r\n 'XRPUSD',\r\n 'BCHUSD',\r\n 'BTCEUR',\r\n 'LTCEUR',\r\n 'ETHEUR',\r\n 'XRPEUR',\r\n 'BCHEUR',\r\n 'LTCBTC',\r\n 'ETHBTC',\r\n 'XRPBTC',\r\n 'BCHBTC',\r\n]\r\n\r\nfunction getTilesInOrder(tiles: Record) {\r\n return TILES_ORDER.map((key) => tiles[key])\r\n}\r\n\r\ninterface ChartMenuProps {\r\n activeTile: string\r\n activeTimeframe: string\r\n activeRange: string\r\n type: string\r\n showChartControls?: boolean\r\n isRedesignEnabled?: boolean\r\n}\r\n\r\nexport default function ChartMenu({\r\n activeTile,\r\n activeTimeframe,\r\n activeRange,\r\n type,\r\n showChartControls,\r\n isRedesignEnabled,\r\n}: ChartMenuProps) {\r\n const isInteractiveActive = type === '1'\r\n const [tiles, setTiles] = React.useState(getTilesInOrder(TilesStore.getTiles()))\r\n\r\n React.useEffect(() => {\r\n const onStoreChange = () => setTiles(getTilesInOrder(TilesStore.getTiles()))\r\n\r\n TilesStore.addChangeListener(onStoreChange)\r\n\r\n return () => TilesStore.removeChangeListener(onStoreChange)\r\n }, [])\r\n\r\n const interactiveUrl = FinvizSettings.hasUserPremium\r\n ? `/crypto_charts.ashx?${encodeQueryString({\r\n t: activeTile,\r\n p: activeTimeframe,\r\n ty: 1,\r\n })}`\r\n : `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'crypto-interactive-chart',\r\n })}`\r\n\r\n const getTileHref = (ticker: string) =>\r\n `/crypto_charts.ashx?${encodeQueryString({\r\n t: ticker,\r\n p: activeTimeframe,\r\n ty: isRedesignEnabled && isInteractiveActive ? undefined : type,\r\n r: activeRange,\r\n })}`\r\n\r\n return (\r\n
\r\n {showChartControls && (\r\n \r\n )}\r\n
\r\n {tiles.map((tile) => (\r\n \r\n {tile.label}\r\n \r\n \r\n ))}\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { MouseEvent } from 'react'\r\n\r\nexport type CryptoTileTicker =\r\n | 'BCHBTC'\r\n | 'BCHEUR'\r\n | 'BCHUSD'\r\n | 'BTCEUR'\r\n | 'BTCUSD'\r\n | 'ETHBTC'\r\n | 'ETHEUR'\r\n | 'ETHUSD'\r\n | 'LTCBTC'\r\n | 'LTCEUR'\r\n | 'LTCUSD'\r\n | 'XRPBTC'\r\n | 'XRPEUR'\r\n | 'XRPUSD'\r\n | 'EURUSD'\r\n\r\nexport enum PageType {\r\n Quotes = 'quotes',\r\n Performance = 'performance',\r\n Charts = 'charts',\r\n}\r\n\r\nexport interface CryptoTile {\r\n label: string\r\n ticker: string\r\n last: number\r\n change: number\r\n prevClose: number\r\n high: number\r\n low: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n}\r\n\r\nexport type TileMap = Record\r\n\r\nexport interface TimeFrame {\r\n key: string\r\n value: string\r\n title?: string\r\n}\r\n\r\nexport interface TimeFrames {\r\n active: string\r\n link: (timeFrame: Key) => string\r\n onClick: (timeFrame: Key, e: MouseEvent) => void\r\n timeframes: TimeFrame[]\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Button } from '../../../../main/components/button'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../../main/constants'\r\nimport { Instrument } from '../../../../main/types'\r\nimport { FuturesForexCryptoTimeframeBar } from '../../../shared/components/FuturesForexCryptoTimeframeBar'\r\nimport { PageType, TimeFrames } from '../../types'\r\n\r\nfunction getCurrencyLongName(currency: string) {\r\n switch (currency.toLowerCase()) {\r\n case 'btc':\r\n return 'Bitcoin'\r\n case 'ltc':\r\n return 'Litecoin'\r\n case 'eth':\r\n return 'Ethereum'\r\n case 'xrp':\r\n return 'Ripple'\r\n case 'bch':\r\n return 'Bitcoin Cash'\r\n case 'usd':\r\n return 'Dollar'\r\n case 'eur':\r\n return 'Euro'\r\n }\r\n return currency\r\n}\r\n\r\ninterface MenuProps {\r\n isDetailOpen?: boolean\r\n activePage: PageType\r\n timeframes: TimeFrames\r\n company?: string\r\n onTimeframeChange?: (timeframe: TIMEFRAME) => void\r\n onDateRangeChange?: (dateRange: string | undefined) => void\r\n}\r\n\r\nexport default function Menu({\r\n isDetailOpen,\r\n activePage,\r\n timeframes,\r\n company,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n}: MenuProps) {\r\n return (\r\n
\r\n
\r\n \r\n \r\n Performance\r\n \r\n \r\n
\r\n
\r\n {activePage === PageType.Charts ? (\r\n \r\n ) : (\r\n timeframes.timeframes.map((timeframe) => (\r\n ) => timeframes.onClick?.(timeframe.key as Key, ev)}\r\n title={timeframe.title}\r\n >\r\n {timeframe.value}\r\n \r\n ))\r\n )}\r\n
\r\n
\r\n )\r\n}\r\n","import { Component } from 'react'\r\n\r\nimport { TimeFrames } from './types'\r\n\r\ninterface MenuProps {\r\n isDetailOpen?: boolean\r\n activePage: string\r\n timeframes: TimeFrames\r\n company?: string\r\n}\r\n\r\nclass Menu extends Component> {\r\n render() {\r\n var { activePage } = this.props\r\n var timeframesMenu = this.props.timeframes\r\n\r\n return (\r\n
\r\n \r\n\r\n
    \r\n {timeframesMenu.timeframes.map((timeframe) => (\r\n
  • \r\n \r\n {timeframe.value}\r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default Menu\r\n","import classnames from 'classnames'\r\nimport classNames from 'classnames'\r\nimport { Component } from 'react'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport TilesStore from '../futures/stores/tilesStore'\r\nimport { FuturesTimeframe } from '../futures/types'\r\nimport { decodeQueryString, encodeQueryString } from '../queryString'\r\nimport CryptoActionCreators from './actions/cryptoActionCreators'\r\nimport ChartMenu from './components/ChartMenu'\r\nimport MenuNew from './components/redesign/Menu'\r\nimport Menu from './menu'\r\nimport { PageType } from './types'\r\n\r\ninterface ChartsState {\r\n timeframe: TIMEFRAME\r\n dateRange: string\r\n ticker: string\r\n type: string\r\n isGroupOpen: boolean\r\n activeGroup: string\r\n}\r\n\r\nfunction getChartsState(override: Partial = {}) {\r\n var queryString = decodeQueryString()\r\n var timeframe = queryString['p'] as TIMEFRAME\r\n if (!Object.values(TIMEFRAME).includes(timeframe)) {\r\n timeframe = TIMEFRAME.d\r\n }\r\n var ticker = (queryString['t'] || 'ALL').toUpperCase()\r\n var type = queryString['ty']\r\n\r\n return {\r\n timeframe,\r\n dateRange: queryString['r'],\r\n ticker,\r\n type,\r\n ...override,\r\n }\r\n}\r\n\r\nclass CryptoCharts extends Component {\r\n state = getChartsState()\r\n\r\n _onTimeframeChange = async (timeframe: TIMEFRAME) => {\r\n CryptoActionCreators.changeTimeframe(timeframe)\r\n this.setState(getChartsState({ timeframe }))\r\n }\r\n\r\n render() {\r\n const { timeframe, ticker, type, dateRange } = this.state\r\n const isDetailOpen = ticker !== 'ALL'\r\n\r\n var timeframes = {\r\n link: (key: string) => `/crypto_charts.ashx?${encodeQueryString({ t: ticker, p: key, ty: type, r: dateRange })}`,\r\n onClick: () => {},\r\n active: timeframe,\r\n timeframes: [\r\n { key: FuturesTimeframe.Minute5, value: '5M' },\r\n { key: FuturesTimeframe.Hourly, value: 'H' },\r\n { key: FuturesTimeframe.Daily, value: 'D' },\r\n { key: FuturesTimeframe.Weekly, value: 'W' },\r\n { key: FuturesTimeframe.Monthly, value: 'M' },\r\n ],\r\n }\r\n const isRedesignEnabled = FinvizSettings.hasRedesignEnabled\r\n const MenuComponent = isRedesignEnabled ? MenuNew : Menu\r\n\r\n return (\r\n \r\n \r\n \r\n this.setState(getChartsState({ dateRange }))}\r\n />\r\n \r\n \r\n {isDetailOpen && (\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default CryptoCharts\r\n","// TODO use one from forex\r\nimport * as d3 from 'd3'\r\nimport { CSSProperties, Component, MouseEvent } from 'react'\r\n\r\nimport { forexDomains } from '../futures/utils'\r\nimport { generateColorScale as gcs } from '../futures/utils'\r\nimport { GradientDefinition } from '../shared/gradients'\r\n\r\nvar generateColorScale = gcs.bind(null, forexDomains)\r\nconst redesignEnabled = !!FinvizSettings.hasRedesignEnabled\r\n\r\nvar hexToRgba = (color: string, opacity: number) => {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(color) as string[],\r\n r = parseInt(result[1], 16),\r\n g = parseInt(result[2], 16),\r\n b = parseInt(result[3], 16)\r\n return `rgba(${r}, ${g}, ${b}, ${opacity})`\r\n}\r\n\r\ninterface Bar {\r\n label: string\r\n value: number\r\n link?: string\r\n}\r\n\r\ninterface BarChartProps {\r\n width: number\r\n period: 'd' | 'w' | 'm' | 'mtd' | 'q' | 'hy' | 'y' | 'ytd'\r\n data: Bar[]\r\n onClick?: (bar: Bar) => void\r\n gradient?: GradientDefinition\r\n}\r\n\r\nclass BarChart extends Component {\r\n render() {\r\n var bars = this.props.data\r\n var labels = bars.map(function (d) {\r\n return d.label\r\n })\r\n\r\n var barWidth = 65,\r\n labelHeight = 20,\r\n gap = 1,\r\n width = (barWidth + gap * 2) * bars.length,\r\n height = 220,\r\n halfHeight = (220 - labelHeight) / 2\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .domain([0, Math.ceil(d3.max(bars, (d: any) => Math.abs(d.value))!)])\r\n .range([0, halfHeight])\r\n .nice(6)\r\n\r\n var yAxisTicks = y.ticks(6).filter((tick: any) => tick > 0)\r\n\r\n var x = d3\r\n .scaleBand()\r\n .domain(labels)\r\n .range([0, (barWidth + 2 * gap) * bars.length])\r\n\r\n var colorScale = generateColorScale(this.props.period, this.props.gradient)\r\n\r\n // so React won't reorder our elements\r\n bars = bars.slice().sort(function (a: Bar, b: Bar) {\r\n if (a.label < b.label) {\r\n return -1\r\n }\r\n if (a.label > b.label) {\r\n return 1\r\n }\r\n return 0\r\n })\r\n\r\n var header =\r\n {\r\n d: '1 Day',\r\n w: '1 Week',\r\n m: '1 Month',\r\n mtd: 'Month to date',\r\n q: '3 Month',\r\n hy: 'Half year',\r\n y: '1 Year',\r\n ytd: 'Year to Date',\r\n }[this.props.period] + ' Relative Performance'\r\n\r\n return (\r\n \r\n

{header}  [USD]

\r\n
\r\n {yAxisTicks.map((tick: any) => (\r\n \r\n
{tick.toFixed(2)}%
\r\n
\r\n ))}\r\n\r\n {yAxisTicks.map((tick: any) => (\r\n \r\n
-{tick.toFixed(2)}%
\r\n \r\n ))}\r\n\r\n {bars.map((bar) => {\r\n var height = Math.round(y(Math.abs(bar.value)))\r\n var color = colorScale(bar.value)\r\n var style: CSSProperties = {\r\n position: 'absolute',\r\n top: bar.value >= 0 ? halfHeight - height : halfHeight + labelHeight,\r\n left: x(bar.label),\r\n height: height,\r\n width: barWidth,\r\n background: hexToRgba(color, 0.2),\r\n ...(redesignEnabled && {\r\n borderTopRightRadius: bar.value >= 0 ? 2 : 0,\r\n borderTopLeftRadius: bar.value >= 0 ? 2 : 0,\r\n borderBottomRightRadius: bar.value >= 0 ? 0 : 2,\r\n borderBottomLeftRadius: bar.value >= 0 ? 0 : 2,\r\n }),\r\n }\r\n var valueStyle = {\r\n top: bar.value > 0 ? -14 : 'auto',\r\n bottom: bar.value < 0 ? -14 : 'auto',\r\n ...(!redesignEnabled && {\r\n color,\r\n }),\r\n }\r\n var labelStyle = {\r\n background: color,\r\n bottom: bar.value >= 0 ? -labelHeight : height,\r\n ...(redesignEnabled && {\r\n borderTopRightRadius: bar.value >= 0 ? 0 : 2,\r\n borderTopLeftRadius: bar.value >= 0 ? 0 : 2,\r\n borderBottomRightRadius: bar.value >= 0 ? 2 : 0,\r\n borderBottomLeftRadius: bar.value >= 0 ? 2 : 0,\r\n ...(bar.value === 0 && {\r\n borderRadius: 2,\r\n }),\r\n }),\r\n }\r\n return (\r\n \r\n
\r\n {bar.value.toFixed(2)}%\r\n
\r\n
\r\n {bar.label}\r\n
\r\n \r\n )\r\n })}\r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n\r\n _onClick = (row: Bar, e: MouseEvent) => {\r\n e.preventDefault()\r\n this.props.onClick && this.props.onClick(row)\r\n }\r\n}\r\n\r\nexport default BarChart\r\n","import { Component } from 'react'\r\n\r\nimport { apiRequest } from '../../main/services/api'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { redGreenGradient } from '../shared/gradients'\r\nimport BarChart from './barChart'\r\nimport MenuNew from './components/redesign/Menu'\r\nimport Menu from './menu'\r\nimport { CryptoTileTicker, PageType, TimeFrames } from './types'\r\n\r\ninterface CryptoPerformanceProps {\r\n rows: Record\r\n}\r\n\r\nclass CryptoPerformance extends Component {\r\n declare refreshInterval: number\r\n\r\n state = {\r\n rows: this.props.rows,\r\n }\r\n\r\n componentDidMount() {\r\n this.refreshInterval = window.setInterval(async () => {\r\n const data = await apiRequest(`/api/crypto_perf.ashx${window.location.search}`)\r\n if (data) {\r\n this.setState({ rows: data })\r\n }\r\n }, 30 * 1000)\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.refreshInterval)\r\n }\r\n\r\n render() {\r\n var view = decodeQueryString()['v'] || '1'\r\n var kv = { d: 1, w: 2, m: 3, mtd: 8, q: 4, hy: 5, y: 6, ytd: 7 }\r\n var vk: Record = {}\r\n Object.keys(kv).forEach((key: any) => {\r\n vk[kv[key as keyof typeof kv].toString()] = key\r\n })\r\n\r\n var timeframes: TimeFrames = {\r\n link: (key) => '/crypto_performance.ashx?v=' + kv[key],\r\n onClick: () => {},\r\n active: vk[view],\r\n timeframes: [\r\n { key: 'd', value: 'D', title: 'Day' },\r\n { key: 'w', value: 'W', title: 'Week' },\r\n { key: 'm', value: 'M', title: 'Month' },\r\n { key: 'mtd', value: 'MTD', title: 'Month to Date' },\r\n { key: 'q', value: 'Q', title: 'Quarter' },\r\n { key: 'hy', value: 'HY', title: 'Half Year' },\r\n { key: 'y', value: 'Y', title: 'Year' },\r\n { key: 'ytd', value: 'YTD', title: 'Year To Date' },\r\n ],\r\n }\r\n\r\n var rows = Object.keys(this.state.rows)\r\n .map((key) => ({\r\n label: key,\r\n value: this.state.rows[key as CryptoTileTicker],\r\n }))\r\n .sort((a, b) => b.value - a.value)\r\n\r\n const isRedesignEnabled = FinvizSettings.hasRedesignEnabled\r\n const MenuComponent = isRedesignEnabled ? MenuNew : Menu\r\n return (\r\n
\r\n \r\n
\r\n
\r\n {}}\r\n period={vk[view]}\r\n {...(isRedesignEnabled && { gradient: redGreenGradient })}\r\n />\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default CryptoPerformance\r\n","import * as React from 'react'\r\n\r\nimport { Instrument } from '../../../../main/types'\r\nimport TilesStore from '../../../futures/stores/tilesStore'\r\nimport { cryptoDomains, generateColorScale } from '../../../futures/utils'\r\nimport ForexCryptoTile from '../../../shared/components/ForexCryptoTile'\r\nimport { redGreenGradient } from '../../../shared/gradients'\r\nimport * as hoverChart from '../../../shared/hover-chart'\r\n\r\ninterface TileProps {\r\n ticker: string\r\n hoverOffsetX: number\r\n hoverOffsetY: number\r\n}\r\n\r\nconst getTileState = (ticker: string) => {\r\n var tile = TilesStore.getTile(ticker)\r\n\r\n return {\r\n ...tile,\r\n }\r\n}\r\n\r\nconst colorScale = generateColorScale(cryptoDomains, 'd', redGreenGradient)\r\n\r\nexport default class Tile extends React.Component {\r\n state = getTileState(this.props.ticker)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props.ticker))\r\n }\r\n\r\n render() {\r\n var { label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n var { ticker, hoverOffsetX, hoverOffsetY } = this.props\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n if (last < 0.001 && last > 0) {\r\n places = 7\r\n }\r\n var round = (n: number) => (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n\r\n let lastChange = round(last - prevClose)\r\n if (ticker === 'XRPBTC') {\r\n lastChange = (last - prevClose).toFixed(places)\r\n }\r\n\r\n const instrument = ticker === 'EURUSD' ? Instrument.Forex : Instrument.Crypto\r\n const link =\r\n instrument === Instrument.Crypto ? '/crypto_charts.ashx?p=d1&t=' + ticker : '/forex_charts.ashx?p=d1&t=' + ticker\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n Instrument.Crypto ? FinvizSettings.hoverCharts?.crypto?.timeframe : FinvizSettings.hoverCharts?.forex?.timeframe,\r\n Instrument.Crypto ? FinvizSettings.hoverCharts?.crypto?.dateRange : FinvizSettings.hoverCharts?.forex?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import Tile from './Tile'\r\n\r\nconst LAYOUT = [\r\n ['BTCUSD', 'LTCUSD', 'ETHUSD', 'XRPUSD', 'BCHUSD'],\r\n ['BTCEUR', 'LTCEUR', 'ETHEUR', 'XRPEUR', 'BCHEUR'],\r\n ['EURUSD', 'LTCBTC', 'ETHBTC', 'XRPBTC', 'BCHBTC'],\r\n]\r\n\r\nexport default function Layout() {\r\n return (\r\n
\r\n {LAYOUT.map((row, ri) => (\r\n
\r\n {row.map((ticker) => (\r\n \r\n ))}\r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { Component, MouseEvent } from 'react'\r\n\r\nimport { Instrument } from '../../main/types'\r\nimport Sparkline from '../futures/components/CanvasSparkline'\r\nimport RowsStore from '../futures/stores/rowsStore'\r\nimport TilesStore from '../futures/stores/tilesStore'\r\nimport { cryptoDomains } from '../futures/utils'\r\nimport { generateColorScale } from '../futures/utils'\r\nimport { redGreenGradient } from '../shared/gradients'\r\nimport * as hoverChart from '../shared/hover-chart'\r\nimport CryptoActionCreators from './actions/cryptoActionCreators'\r\nimport BarChart from './barChart'\r\nimport LayoutNew from './components/redesign/Layout'\r\nimport MenuNew from './components/redesign/Menu'\r\nimport Menu from './menu'\r\nimport { CryptoTileTicker, PageType, TileMap } from './types'\r\n\r\nvar colorScale = generateColorScale(cryptoDomains, 'd')\r\n\r\nclass Layout extends Component {\r\n render() {\r\n var layout = [\r\n ['BTCUSD', 'LTCUSD', 'ETHUSD', 'XRPUSD', 'BCHUSD'],\r\n ['BTCEUR', 'LTCEUR', 'ETHEUR', 'XRPEUR', 'BCHEUR'],\r\n ['EURUSD', 'LTCBTC', 'ETHBTC', 'XRPBTC', 'BCHBTC'],\r\n ]\r\n\r\n var tileWidth = 240\r\n var width = layout[0].length * tileWidth + 16\r\n\r\n return (\r\n
\r\n {layout.map((row, ri) => (\r\n
\r\n {row.map((ticker) => (\r\n \r\n ))}\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n }\r\n}\r\n\r\ninterface TileProps {\r\n ticker: string\r\n hoverOffsetX: string\r\n hoverOffsetY: string\r\n width: number\r\n}\r\n\r\nfunction getTileState(props: TileProps) {\r\n return TilesStore.getTile(props.ticker)\r\n}\r\n\r\nclass Tile extends Component {\r\n state = getTileState(this.props)\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getTileState(this.props))\r\n }\r\n\r\n render() {\r\n var { ticker, label, last, prevClose, change, high, low, sparkline, sparklineDateChanges } = this.state\r\n var { hoverOffsetX, hoverOffsetY } = this.props\r\n\r\n var instrument = ticker === 'EURUSD' ? Instrument.Forex : Instrument.Crypto\r\n\r\n var format = (n: number) => (n >= 0 ? '+' : '') + n.toFixed(2) + '%'\r\n var places = last > 6 ? 2 : 4\r\n if (last < 0.001 && last > 0) {\r\n places = 7\r\n }\r\n var round = (n: number) => (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n\r\n var link =\r\n instrument === Instrument.Crypto ? '/crypto_charts.ashx?p=d1&t=' + ticker : '/forex_charts.ashx?p=d1&t=' + ticker\r\n\r\n const chartImage = hoverChart.getHoverChartImg(\r\n '@' + ticker.toLowerCase(),\r\n false,\r\n instrument === Instrument.Crypto\r\n ? FinvizSettings.hoverCharts?.crypto?.timeframe\r\n : FinvizSettings.hoverCharts?.forex?.timeframe,\r\n instrument === Instrument.Crypto\r\n ? FinvizSettings.hoverCharts?.crypto?.dateRange\r\n : FinvizSettings.hoverCharts?.forex?.dateRange\r\n )\r\n\r\n const boxover = `cssbody=[hoverchart] cssheader=[tabchrthdr] body=[${chartImage.img}] offsetx=[${hoverOffsetX}] offsety=[${hoverOffsetY}] delay=[100]`\r\n\r\n var color = colorScale(change)\r\n\r\n var range = (high - low) * 0.1\r\n var highlightHigh = last > high - range\r\n var highlightLow = last < low + range\r\n var highlightStyle = {\r\n background: '#fbdb19',\r\n color: '#3e424f',\r\n }\r\n\r\n var opacityChange = Math.min(Math.abs(change), 1)\r\n var textOpacity = 0.5 + (0.2 / 1) * opacityChange\r\n var highLowStyle = { color: `rgba(255, 255, 255, ${textOpacity})` }\r\n\r\n var changeAbsolute = round(last - prevClose)\r\n if (ticker === 'XRPBTC') {\r\n changeAbsolute = (last - prevClose).toFixed(places)\r\n }\r\n\r\n return (\r\n \r\n
\r\n {label}\r\n {round(last)}\r\n \r\n {format(change)}\r\n \r\n {changeAbsolute.replace('-', '')}\r\n \r\n
\r\n
\r\n H {round(high)}\r\n
\r\n
\r\n L {round(low)}\r\n
\r\n
\r\n \r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction getCryptoQuotesState() {\r\n return {\r\n tiles: TilesStore.getTiles(),\r\n }\r\n}\r\n\r\nclass CryptoQuotes extends Component {\r\n state = getCryptoQuotesState()\r\n\r\n componentDidMount() {\r\n TilesStore.addChangeListener(this._onChange)\r\n }\r\n\r\n componentWillUnmount() {\r\n TilesStore.removeChangeListener(this._onChange)\r\n }\r\n\r\n _onChange = () => {\r\n this.setState(getCryptoQuotesState())\r\n }\r\n\r\n render() {\r\n var timeframes = {\r\n link: () => '#',\r\n onClick: (timeframe: string, e: MouseEvent) => {\r\n e.preventDefault()\r\n CryptoActionCreators.changeTimeframe(timeframe)\r\n },\r\n active: RowsStore.getTimeframe(),\r\n timeframes: [\r\n { key: 'i5', value: '5M' },\r\n { key: 'h', value: 'H' },\r\n { key: 'd', value: 'D' },\r\n { key: 'w', value: 'W' },\r\n { key: 'm', value: 'M' },\r\n ],\r\n }\r\n\r\n // TODO bud spravit special API alebo preratavat\r\n var tiles = this.state.tiles as TileMap\r\n\r\n var relativePerf = { USD: 0 }\r\n Object.keys(tiles).forEach((ticker) => {\r\n var tile = tiles[ticker as CryptoTileTicker]\r\n if (ticker.indexOf('USD') === -1 || ticker === 'EURUSD') {\r\n return\r\n }\r\n var inverse = ticker.substring(0, 3) === 'USD'\r\n // @ts-ignore\r\n relativePerf[ticker.replace('USD', '')] =\r\n (inverse ? tile.prevClose / tile.last - 1 : tile.last / tile.prevClose - 1) * 100 // todo round\r\n })\r\n\r\n var rows = Object.keys(relativePerf)\r\n .map((key) => ({\r\n label: key,\r\n // @ts-ignore\r\n value: relativePerf[key],\r\n }))\r\n .sort((a, b) => b.value - a.value)\r\n\r\n const isRedesignEnabled = FinvizSettings.hasRedesignEnabled\r\n const MenuComponent = isRedesignEnabled ? MenuNew : Menu\r\n const LayoutComponent = isRedesignEnabled ? LayoutNew : Layout\r\n //\r\n return (\r\n
\r\n \r\n \r\n {!isRedesignEnabled && (\r\n <>\r\n
\r\n
\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default CryptoQuotes\r\n","import { CHART_ELEMENT_ID } from 'finviz-charts/app/constants/common'\r\nimport { Suspense } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport ReactDOMClient from 'react-dom/client'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ResizableChartLayoutWithGlobalState } from '../shared/components/ResizableChartLayoutWithGlobalState'\r\nimport { ready } from '../shared/ready'\r\nimport { parseInitData } from '../shared/utils'\r\nimport CryptoActionCreators from './actions/cryptoActionCreators'\r\nimport CryptoCharts from './charts'\r\nimport CryptoPerformance from './performance'\r\nimport CryptoQuotes from './quotes'\r\nimport { CryptoTileTicker, TileMap } from './types'\r\n\r\nwindow['FinvizInitCrypto'] = function (tiles: TileMap) {\r\n CryptoActionCreators.initTiles(tiles)\r\n const rootEl = document.getElementById('crypto')\r\n const root = ReactDOMClient.createRoot(rootEl!)\r\n root.render()\r\n\r\n setInterval(CryptoActionCreators.update, 30 * 1000)\r\n}\r\n\r\nwindow['FinvizInitCryptoPerformance'] = function (rows: Record) {\r\n const rootEl = document.getElementById('futures')\r\n const root = ReactDOMClient.createRoot(rootEl!)\r\n root.render()\r\n}\r\n\r\nwindow['FinvizInitCryptoCharts'] = function () {\r\n const cryptoEl = document.getElementById('crypto')\r\n const dataEl = document.getElementById('crypto-init-data')\r\n if (!cryptoEl || !dataEl) return\r\n\r\n try {\r\n const initData = parseInitData('crypto-init-data')\r\n CryptoActionCreators.update(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n const root = ReactDOMClient.createRoot(cryptoEl)\r\n\r\n root.render(\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nready(function () {\r\n const cryptoEl = document.getElementById('crypto')\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const dataEl = document.getElementById('crypto-init-data')\r\n\r\n if (!cryptoEl || !chartEl || !dataEl || !window.globalChartConfig) return\r\n\r\n try {\r\n const initData = parseInitData('crypto-init-data')\r\n CryptoActionCreators.update(initData)\r\n } catch {\r\n return\r\n }\r\n\r\n const root = ReactDOMClient.createRoot(chartEl)\r\n\r\n root.render(\r\n \r\n \r\n {ReactDOM.createPortal(, cryptoEl)}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n})\r\n","import * as d3 from 'd3'\r\nimport { Component, createRef } from 'react'\r\n\r\nimport { isFirefoxDesktop } from '../../shared/isMobile'\r\nimport { retinafy } from '../../shared/retinafy'\r\n\r\nvar xCache: Record = {}\r\n\r\ninterface CanvasSparklineProps {\r\n className?: string\r\n data: number[]\r\n dateChanges: any\r\n width: number\r\n height: number\r\n changeDomain: number\r\n change: number\r\n changeOpacity?: boolean\r\n shadow?: boolean\r\n lineColor?: string\r\n textColor?: string\r\n}\r\n\r\nclass CanvasSparkline extends Component {\r\n static defaultProps = {\r\n changeOpacity: true,\r\n }\r\n\r\n canvas = createRef()\r\n declare canvasContext: CanvasRenderingContext2D\r\n\r\n shouldComponentUpdate(nextProps: CanvasSparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data || nextProps.width !== this.props.width\r\n }\r\n\r\n componentDidMount() {\r\n this.canvasContext = this.canvas.current!.getContext(\r\n '2d',\r\n isFirefoxDesktop() ? { willReadFrequently: true } : undefined\r\n )!\r\n this._renderCanvas()\r\n }\r\n\r\n componentDidUpdate() {\r\n this._renderCanvas()\r\n }\r\n\r\n render() {\r\n var { width, height } = this.props\r\n var className = 'sparkline ' + this.props.className\r\n return \r\n }\r\n\r\n _renderCanvas = () => {\r\n var { data, dateChanges, width, height, changeOpacity, shadow, lineColor, textColor } = this.props\r\n\r\n retinafy(this.canvas.current, this.canvasContext, this.props.width, this.props.height)\r\n\r\n // TODO check ci sa zobrazuje posledny den\r\n var xCacheKey = width + '|' + data.length\r\n var x = xCache[xCacheKey]\r\n if (!x) {\r\n x = d3\r\n .scaleLinear()\r\n .range([-1, width + 1])\r\n .domain([0, data.length])\r\n xCache[xCacheKey] = x\r\n }\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([height - 8, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var changeDomain = this.props.changeDomain\r\n var opacityChange = Math.min(Math.abs(this.props.change), changeDomain)\r\n var textOpacity = changeOpacity ? (0.5 + (0.2 / changeDomain) * opacityChange).toFixed(3) : 1\r\n\r\n this.canvasContext.clearRect(0, 0, width, height)\r\n\r\n if (shadow) {\r\n this.canvasContext.translate(0.5, 0.5)\r\n\r\n this.canvasContext.strokeStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = 'rgba(34, 38, 47, 0.8)'\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n\r\n this.canvasContext.translate(-0.5, -0.5)\r\n }\r\n\r\n this.canvasContext.strokeStyle = lineColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.beginPath()\r\n for (let i = 0; i < data.length; i++) {\r\n this.canvasContext.lineTo(x(i), y(data[i]))\r\n }\r\n this.canvasContext.stroke()\r\n\r\n this.canvasContext.fillStyle = textColor ?? `rgba(255, 255, 255, ${textOpacity})`\r\n this.canvasContext.textAlign = 'center'\r\n this.canvasContext.font = '7px Lato'\r\n Object.keys(dateChanges).forEach((key) => {\r\n var xPos = x(key)\r\n if (xPos < 8) {\r\n return\r\n }\r\n this.canvasContext.fillText(dateChanges[key], xPos, height - 1)\r\n })\r\n }\r\n}\r\n\r\nexport default CanvasSparkline\r\n","import keyMirror from 'keymirror'\r\n\r\nexport const ActionTypes = keyMirror({\r\n INIT: null,\r\n INIT_TILES: null,\r\n\r\n UPDATE_DATA: null,\r\n\r\n CHANGE_TIMEFRAME_STARTED: null,\r\n CHANGE_TIMEFRAME_COMPLETED: null,\r\n CHANGE_TIMEFRAME_FAILED: null,\r\n})\r\n\r\nexport const PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from '../constants/constants'\r\n\r\nclass AppDispatcher extends Dispatcher {\r\n handleServerAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.SERVER_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n\r\n handleViewAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.VIEW_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n}\r\n\r\nconst dispatcher = new AppDispatcher()\r\nexport default dispatcher\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nfunction getRows(tiles: Record) {\r\n return Object.values(tiles)\r\n .map(function (tile) {\r\n return {\r\n label: tile.label,\r\n value: tile.change,\r\n }\r\n })\r\n .sort(function (a, b) {\r\n return b.value - a.value\r\n })\r\n}\r\n\r\nvar _timeframe = 'i5'\r\nvar _rows: ReturnType = []\r\nclass RowsStore extends Store {\r\n getTimeframe() {\r\n return _timeframe\r\n }\r\n\r\n getRows() {\r\n return _rows\r\n }\r\n}\r\nvar rowsStore = new RowsStore()\r\n\r\n// @ts-ignore\r\nrowsStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var _tiles: Record = {}\r\n action.rows.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n })\r\n })\r\n\r\n _rows = getRows(_tiles)\r\n if (action.timeframe) {\r\n _timeframe = action.timeframe\r\n }\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.CHANGE_TIMEFRAME_STARTED:\r\n _timeframe = action.period\r\n rowsStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n _rows = getRows(action.tiles)\r\n rowsStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default rowsStore\r\n","import { EventEmitter } from 'events'\r\n\r\nclass Store extends EventEmitter {\r\n static CHANGE_EVENT = 'change'\r\n\r\n emitChange() {\r\n this.emit(Store.CHANGE_EVENT)\r\n }\r\n\r\n addChangeListener(callback: (...args: any[]) => void) {\r\n this.on(Store.CHANGE_EVENT, callback)\r\n }\r\n\r\n removeChangeListener(callback: (...args: any[]) => void) {\r\n this.removeListener(Store.CHANGE_EVENT, callback)\r\n }\r\n}\r\n\r\nexport default Store\r\n","import { ActionTypes } from '../constants/constants'\r\nimport AppDispatcher from '../dispatcher/appDispatcher'\r\nimport { Contract, FuturesDatum, FuturesTile } from '../types'\r\nimport Store from './store'\r\n\r\nvar _tilesGroups: Record = {}\r\nvar _tiles: Record = {}\r\nvar _tileOrder: string[] = []\r\nclass TilesStore extends Store {\r\n getTiles() {\r\n return _tiles\r\n }\r\n\r\n getTilesList() {\r\n return Object.keys(_tiles)\r\n .map(function (key) {\r\n return _tiles[key]\r\n })\r\n .sort((a, b) => _tileOrder.indexOf(a.ticker) - _tileOrder.indexOf(b.ticker))\r\n }\r\n\r\n getTile(ticker: string) {\r\n return _tiles[ticker]\r\n }\r\n\r\n getTilesGroup(ticker: string) {\r\n return _tilesGroups[ticker]\r\n }\r\n\r\n getTilesInGroup(group: string) {\r\n var g = group.toUpperCase()\r\n return this.getTilesList().filter((tile) => _tilesGroups[tile.ticker] === g)\r\n }\r\n}\r\nvar tilesStore = new TilesStore()\r\ntilesStore.setMaxListeners(50)\r\n\r\n// @ts-ignore\r\ntilesStore.dispatchToken = AppDispatcher.register(function (payload) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.INIT:\r\n var groups = action.rows\r\n groups.forEach((group: FuturesDatum) => {\r\n group.contracts.forEach((contract: Contract) => {\r\n _tiles[contract.ticker] = contract\r\n _tilesGroups[contract.ticker] = group.ticker\r\n _tileOrder.push(contract.ticker)\r\n })\r\n })\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.INIT_TILES:\r\n _tiles = action.tiles\r\n tilesStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n var tiles = action.tiles\r\n _tiles = tiles\r\n tilesStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default tilesStore\r\n","export interface Contract {\r\n label: string\r\n ticker: string\r\n last: number\r\n change: number\r\n prevClose: number\r\n high: number\r\n low: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n}\r\n\r\nexport interface FuturesDatum {\r\n ticker: string\r\n label: string\r\n contracts: Contract[]\r\n}\r\n\r\nexport interface FuturesTile {\r\n change: number\r\n high: number\r\n label: string\r\n last: number\r\n low: number\r\n prevClose: number\r\n sparkline: number[]\r\n sparklineDateChanges: Record\r\n ticker: string\r\n}\r\n\r\nexport interface FuturesRow {\r\n ticker: string\r\n label: string\r\n group: string\r\n perf: number\r\n}\r\n\r\nexport enum PageType {\r\n Quotes = 'quotes',\r\n Performance = 'performance',\r\n Charts = 'charts',\r\n}\r\n\r\nexport enum FuturesTimeframe {\r\n None = 'NO',\r\n Minute5 = 'i5',\r\n Hourly = 'h',\r\n Daily = 'd',\r\n Weekly = 'w',\r\n Monthly = 'm',\r\n}\r\n\r\nexport enum LayoutType {\r\n Old = 'old',\r\n NewHorizontal = 'new',\r\n NewGroups = 'new_groups',\r\n}\r\n\r\nexport enum LabelStyle {\r\n None = 'none',\r\n Plain = 'plain',\r\n PlainColor = 'plain_color',\r\n Side = 'side',\r\n SideColor = 'side_color',\r\n Line = 'line',\r\n LineWithEnding = 'lineWithEnding',\r\n}\r\n\r\nexport enum TileStyle {\r\n Map = 'map',\r\n MapCondensed = 'mapCondensed',\r\n BorderTile = 'borderTile',\r\n}\r\n","import * as d3 from 'd3'\r\n\r\nvar redGreenGradient = {\r\n colors: [\r\n '#fd0001',\r\n '#fd0101',\r\n '#fc0101',\r\n '#fa0101',\r\n '#f90103',\r\n '#f70203',\r\n '#f60203',\r\n '#f40204',\r\n '#f20304',\r\n '#f10304',\r\n '#ef0404',\r\n '#ee0405',\r\n '#ec0405',\r\n '#ea0505',\r\n '#e80505',\r\n '#e70506',\r\n '#e50606',\r\n '#e30706',\r\n '#e20706',\r\n '#e00807',\r\n '#df0708',\r\n '#dd0808',\r\n '#db0808',\r\n '#d90809',\r\n '#d80909',\r\n '#d60909',\r\n '#d40a09',\r\n '#d30a0a',\r\n '#d10a0a',\r\n '#cf0a0a',\r\n '#ce0b0b',\r\n '#cc0b0b',\r\n '#cb0c0b',\r\n '#c90b0c',\r\n '#c70c0c',\r\n '#c60c0c',\r\n '#c40c0d',\r\n '#c20d0d',\r\n '#c10e0e',\r\n '#bf0e0e',\r\n '#be0e0e',\r\n '#bc0f0f',\r\n '#ba0f0f',\r\n '#b90f10',\r\n '#b71010',\r\n '#b51010',\r\n '#b41010',\r\n '#b21111',\r\n '#b11111',\r\n '#af1111',\r\n '#ad1112',\r\n '#ab1212',\r\n '#aa1212',\r\n '#a81313',\r\n '#a61313',\r\n '#a51313',\r\n '#a31413',\r\n '#a21414',\r\n '#a01514',\r\n '#9e1414',\r\n '#9d1515',\r\n '#9b1616',\r\n '#9a1616',\r\n '#981616',\r\n '#961716',\r\n '#951717',\r\n '#931717',\r\n '#911818',\r\n '#8f1818',\r\n '#8e1818',\r\n '#8d1919',\r\n '#8b1919',\r\n '#8a1a1a',\r\n '#881a19',\r\n '#861b1a',\r\n '#841b1b',\r\n '#831b1b',\r\n '#811c1b',\r\n '#801c1b',\r\n '#7e1c1c',\r\n '#7c1d1c',\r\n '#7a1d1d',\r\n '#791d1d',\r\n '#781d1e',\r\n '#761e1e',\r\n '#741f1e',\r\n '#721f1e',\r\n '#711f1f',\r\n '#6f1f1f',\r\n '#6e1f20',\r\n '#6c1f20',\r\n '#6a2020',\r\n '#682020',\r\n '#682221',\r\n '#662222',\r\n '#652222',\r\n '#622323',\r\n '#612223',\r\n '#602323',\r\n '#5e2323',\r\n '#5c2424',\r\n '#5a2425',\r\n '#582424',\r\n '#572525',\r\n '#552525',\r\n '#542626',\r\n '#522627',\r\n '#502626',\r\n '#4e2627',\r\n '#4d2727',\r\n '#4b2728',\r\n '#4a2828',\r\n '#482828',\r\n '#462929',\r\n '#452929',\r\n '#432929',\r\n '#422a29',\r\n '#40292a',\r\n '#3f2a2a',\r\n '#3d2b2b',\r\n '#3b2b2b',\r\n '#3a2b2c',\r\n '#372c2c',\r\n '#362c2c',\r\n '#352d2c',\r\n '#332d2d',\r\n '#312d2e',\r\n '#302e2e',\r\n '#2f2f2f',\r\n '#2e312f',\r\n '#2f322e',\r\n '#2e332e',\r\n '#2e342d',\r\n '#2d372d',\r\n '#2c372c',\r\n '#2d392c',\r\n '#2c3a2b',\r\n '#2b3b2c',\r\n '#2b3d2c',\r\n '#2b3e2b',\r\n '#2a3f2a',\r\n '#2a412a',\r\n '#29432a',\r\n '#294429',\r\n '#294529',\r\n '#284728',\r\n '#284828',\r\n '#284a27',\r\n '#284b27',\r\n '#274d27',\r\n '#264e27',\r\n '#265026',\r\n '#265126',\r\n '#265326',\r\n '#255425',\r\n '#245625',\r\n '#245725',\r\n '#245825',\r\n '#245a24',\r\n '#245b24',\r\n '#245d24',\r\n '#235e23',\r\n '#236023',\r\n '#226123',\r\n '#226322',\r\n '#226421',\r\n '#216621',\r\n '#216721',\r\n '#216821',\r\n '#206920',\r\n '#1f6b20',\r\n '#1f6d1f',\r\n '#1f6f1f',\r\n '#1e701f',\r\n '#1e711e',\r\n '#1d721e',\r\n '#1d741e',\r\n '#1e751e',\r\n '#1d771e',\r\n '#1d781d',\r\n '#1d7a1d',\r\n '#1c7c1c',\r\n '#1c7d1c',\r\n '#1b7e1c',\r\n '#1b801b',\r\n '#1a811b',\r\n '#1a821b',\r\n '#1a841a',\r\n '#1a851b',\r\n '#198719',\r\n '#198819',\r\n '#188919',\r\n '#188b18',\r\n '#188d18',\r\n '#178e18',\r\n '#168f17',\r\n '#169117',\r\n '#179217',\r\n '#169316',\r\n '#159416',\r\n '#159616',\r\n '#159815',\r\n '#159914',\r\n '#149b14',\r\n '#139c14',\r\n '#139e13',\r\n '#129f13',\r\n '#12a013',\r\n '#12a213',\r\n '#12a312',\r\n '#11a411',\r\n '#10a611',\r\n '#10a711',\r\n '#10a911',\r\n '#10ab11',\r\n '#0fac11',\r\n '#0fae10',\r\n '#0faf10',\r\n '#0fb00f',\r\n '#0eb20f',\r\n '#0eb30e',\r\n '#0eb40e',\r\n '#0db60e',\r\n '#0cb70d',\r\n '#0cb90d',\r\n '#0cbb0c',\r\n '#0bbc0d',\r\n '#0bbe0c',\r\n '#0bbf0c',\r\n '#0ac00b',\r\n '#0ac10b',\r\n '#0ac30a',\r\n '#0ac40a',\r\n '#09c609',\r\n '#09c709',\r\n '#09c809',\r\n '#08ca08',\r\n '#07cb08',\r\n '#07cd08',\r\n '#07cf08',\r\n '#06d008',\r\n '#06d107',\r\n '#06d306',\r\n '#05d406',\r\n '#04d505',\r\n '#04d605',\r\n '#04d805',\r\n '#04d904',\r\n '#03da04',\r\n '#03dc03',\r\n '#03dd04',\r\n '#02df03',\r\n '#02e002',\r\n '#01e202',\r\n '#01e302',\r\n '#00e402',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\n\r\nvar futuresDomains = {\r\n d: 1.5,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 25,\r\n y: 30,\r\n ytd: 30,\r\n}\r\n\r\nvar forexDomains = {\r\n d: 1,\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar cryptoDomains = {\r\n d: 5, // TODO refine\r\n w: 2.5,\r\n m: 5,\r\n mtd: 5,\r\n q: 10,\r\n hy: 10,\r\n y: 10,\r\n ytd: 10,\r\n}\r\n\r\nvar generateColorScale = function (domains: Record, domainId: string, gradient = redGreenGradient) {\r\n var domain = {\r\n min: -domains[domainId],\r\n max: +domains[domainId],\r\n }\r\n\r\n var linearScale = d3\r\n .scaleLinear()\r\n .domain([domain.min, domain.max])\r\n .range([0, gradient.colors.length - 1])\r\n\r\n return function (value: number) {\r\n if (typeof value === 'undefined' || value === null) {\r\n return gradient.nullColor\r\n }\r\n\r\n if (value > domain.max) value = domain.max\r\n if (value < domain.min) value = domain.min\r\n\r\n var i = Math.round(linearScale(value))\r\n return gradient.colors[i]\r\n }\r\n}\r\n\r\nvar getCookie = function (name: string) {\r\n var re = new RegExp('(?:(?:^|.*;\\\\s*)' + name + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$')\r\n return document.cookie.replace(re, '$1')\r\n}\r\n\r\nexport const layout = [\r\n ['YM', 'ES', 'NQ', 'ER2', 'NKD', 'EX', 'DY', 'VX'],\r\n ['CL', 'QA', 'RB', 'HO', 'NG', 'ZK'],\r\n ['ZB', 'ZN'],\r\n ['CC', 'CT', 'JO', 'KC', 'LB', 'SB'],\r\n ['ZF', 'ZT'],\r\n ['GC', 'SI', 'PL', 'HG', 'PA'],\r\n ['LC', 'FC', 'LH'],\r\n ['ZS', 'ZM', 'ZL', 'ZC', 'ZW', 'ZR', 'ZO', 'RS'],\r\n ['DX', '6E', '6J', '6B', '6C', '6S', '6A', '6N'],\r\n]\r\n\r\nexport const groups = ['Indices', 'Energy', 'Bonds', 'Softs', 'Metals', 'Meats', 'Grains', 'Currencies'] as const\r\n\r\nexport { generateColorScale, futuresDomains, forexDomains, cryptoDomains, getCookie }\r\n","import { isForexFuturesCryptoPage } from 'finviz-charts/app/utils/chart'\r\nimport * as React from 'react'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport { useWindowSize } from '../../main/hooks/use-window-size'\r\nimport { getIntradayChartConfig, useChartLayoutGlobalModelAsync, useModelState } from '../charts-lib'\r\n\r\nexport function getChartLayoutSizeConfig(\r\n layoutConfig: Pick<\r\n typeof window.globalChartConfig,\r\n 'idea' | 'barWidth' | 'barMargin' | 'charts' | 'specificChartFunctionality'\r\n >,\r\n p = TIMEFRAME.d\r\n) {\r\n const { clientWidth } = document.body\r\n const { premarket, aftermarket, dateRange } = layoutConfig.charts[0]\r\n const maxChartWidth = clientWidth - 40 // 40px left right chart padding = (19px * 2 for margin left/right) + (1px * 2 for border)\r\n let width = 990\r\n let barWidth = 3\r\n let barMargin = 1\r\n let timeframeMinutes = 0\r\n const isForexFuturesCrypto =\r\n layoutConfig.specificChartFunctionality && isForexFuturesCryptoPage(layoutConfig.specificChartFunctionality)\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n timeframeMinutes = 1\r\n barWidth = 1\r\n if (premarket || aftermarket || clientWidth < 1650) {\r\n barMargin = 0\r\n }\r\n break\r\n case TIMEFRAME.i2:\r\n timeframeMinutes = 2\r\n break\r\n case TIMEFRAME.i3:\r\n timeframeMinutes = 3\r\n if (premarket && aftermarket && clientWidth <= 1505) {\r\n barWidth = 2\r\n }\r\n break\r\n case TIMEFRAME.i5:\r\n timeframeMinutes = 5\r\n barWidth = 5\r\n barMargin = clientWidth >= 1100 ? 2 : 1\r\n break\r\n case TIMEFRAME.i10:\r\n width = 1058 // 39bars per day * 5days * 5px per bar + 35px left offset + 48px right offset\r\n barMargin = 0\r\n break\r\n case TIMEFRAME.i15:\r\n case TIMEFRAME.i30:\r\n width = 1019\r\n break\r\n case TIMEFRAME.h:\r\n width = 1008\r\n break\r\n case TIMEFRAME.h2:\r\n case TIMEFRAME.h4:\r\n width = 1020\r\n break\r\n case TIMEFRAME.d:\r\n width = 1282\r\n break\r\n case TIMEFRAME.w:\r\n case TIMEFRAME.m:\r\n width = 994\r\n break\r\n }\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n case TIMEFRAME.i2:\r\n case TIMEFRAME.i3:\r\n case TIMEFRAME.i5:\r\n const commonProps = {\r\n timeframeMinutes,\r\n barWidthWithMargin: barWidth + 2 + barMargin,\r\n hasAftermarket: aftermarket,\r\n hasPremarket: premarket,\r\n }\r\n width = getIntradayChartConfig({\r\n ...commonProps,\r\n maxWidth: maxChartWidth,\r\n canCropChart: !dateRange,\r\n }).chartWidthWithOffset\r\n break\r\n }\r\n\r\n // If FFC chart use DAILY type width\r\n if (isForexFuturesCrypto) width = 1282\r\n\r\n // If chart is wider than available space in vieport override width\r\n if (maxChartWidth <= width) {\r\n width = Math.max(994, maxChartWidth)\r\n if (p === TIMEFRAME.d) {\r\n barWidth = 2\r\n barMargin = 0\r\n width = 991\r\n }\r\n }\r\n\r\n // If idea chart or FFC chart use bar configs from layout\r\n if (layoutConfig.idea || isForexFuturesCrypto) {\r\n barWidth = layoutConfig.barWidth\r\n barMargin = layoutConfig.barMargin\r\n }\r\n\r\n return {\r\n width,\r\n barWidth,\r\n barMargin,\r\n }\r\n}\r\n\r\nexport function useChartLayoutWidthWatch() {\r\n const { innerWidth } = useWindowSize()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const unwatchedFirstChart = React.useMemo(() => chartLayoutModel?.charts().all()[0] ?? null, [chartLayoutModel])\r\n const chartModel = useModelState(unwatchedFirstChart, { watchProperties: ['quote'] })\r\n const quote = useModelState(chartModel?.quote() ?? null, { watchProperties: ['ticker', 'timeframe', 'isFetching'] })\r\n const ideaId = chartLayoutModel?.idea?.id\r\n\r\n React.useEffect(() => {\r\n const settings = !ideaId ? chartLayoutModel?.settings : null\r\n const timeframe = quote?.timeframe\r\n if (chartLayoutModel && timeframe && settings) {\r\n const { width, barWidth, barMargin } = getChartLayoutSizeConfig(chartLayoutModel.toConfig(), timeframe)\r\n const newSettings = JSON.parse(JSON.stringify(settings))\r\n newSettings.ChartSettings.center.barWidth = barWidth\r\n newSettings.IndicatorSettings.center.barWidth = barWidth\r\n newSettings.ChartSettings.center.barMargin = barMargin\r\n newSettings.IndicatorSettings.center.barMargin = barMargin\r\n chartLayoutModel.updateAttributes({ width, settings: newSettings })\r\n }\r\n // We don't want to trigger this effect on any chartLayoutModel change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [quote?.premarket, quote?.aftermarket, quote?.timeframe, ideaId, innerWidth])\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n throttleWaitInMs?: number\r\n isWatching?: boolean\r\n}\r\n\r\nexport function useWindowSize({ throttleWaitInMs = 300, isWatching = true }: Props = {}) {\r\n const [size, setSize] = React.useState({\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!isWatching) return\r\n\r\n const handleResize = throttle(() => {\r\n setSize({\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n }, throttleWaitInMs)\r\n\r\n window.addEventListener('resize', handleResize)\r\n\r\n return () => {\r\n handleResize.cancel()\r\n window.removeEventListener('resize', handleResize)\r\n }\r\n }, [throttleWaitInMs, isWatching])\r\n\r\n return size\r\n}\r\n","import classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nimport { useResizeObserver } from '../../../main/hooks/use-resize-observer'\r\nimport Sparkline from '../../futures/components/CanvasSparkline'\r\n\r\ninterface TileProps {\r\n sparklineDateChanges: Record\r\n sparkline: number[]\r\n label: string\r\n link: string\r\n boxover: string\r\n backgroundColor: string\r\n last: string\r\n high: string\r\n low: string\r\n change: string\r\n sparklineChange: number\r\n lastChange: string\r\n highlightHigh: boolean\r\n highlightLow: boolean\r\n extraMargin?: boolean\r\n}\r\n\r\nexport default function ForexCryptoTile({\r\n link,\r\n boxover,\r\n extraMargin,\r\n change,\r\n lastChange,\r\n label,\r\n highlightLow,\r\n highlightHigh,\r\n last,\r\n high,\r\n low,\r\n sparkline,\r\n sparklineChange,\r\n sparklineDateChanges,\r\n backgroundColor,\r\n}: TileProps) {\r\n const [width, setWidth] = React.useState(0)\r\n const containerRef = React.useRef(null)\r\n const ResizeObserver = useResizeObserver()\r\n const observerRef = React.useRef()\r\n\r\n React.useEffect(() => {\r\n const container = containerRef.current\r\n if (container && ResizeObserver) {\r\n setWidth(container.getBoundingClientRect().width)\r\n observerRef.current = new ResizeObserver(\r\n throttle(([entry]: ResizeObserverEntry[]) => {\r\n setWidth(entry.contentRect.width)\r\n }, 100)\r\n )\r\n observerRef.current.observe(container)\r\n }\r\n\r\n return () => {\r\n observerRef.current?.disconnect()\r\n }\r\n }, [ResizeObserver])\r\n\r\n return (\r\n \r\n
\r\n
\r\n
{label}
\r\n
\r\n {change}\r\n \r\n {lastChange}\r\n
\r\n
\r\n\r\n
\r\n
{last}
\r\n
\r\n \r\n \r\n H\r\n \r\n {high}\r\n
\r\n \r\n \r\n L\r\n \r\n {low}\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n )\r\n}\r\n","import { ChartSettingsButton } from 'finviz-charts/app/controllers/chart-controls/settings-button'\r\n\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { withSuspense } from '../../../main/services/async-modules-utils'\r\nimport { useChartLayoutGlobalModelAsync } from '../../charts-lib'\r\n\r\ninterface Props {\r\n isPremium: boolean\r\n}\r\n\r\nfunction ForexFuturesCryptoSettingsRaw({ isPremium }: Props) {\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n\r\n if (!chartLayoutModel) return null\r\n\r\n return (\r\n }\r\n model={chartLayoutModel}\r\n />\r\n )\r\n}\r\n\r\n// charts bundle may not be fetched and therefore withSuspense is undefined but on those pages components in this file are not used at all\r\nexport const ForexFuturesCryptoSettings = withSuspense?.(ForexFuturesCryptoSettingsRaw)\r\n","import * as React from 'react'\r\nimport { useLocation, useNavigate, useSearchParams } from 'react-router-dom'\r\n\r\nimport {\r\n CUSTOM_DATE_RANGE,\r\n CustomDateRange,\r\n TimeframeBar,\r\n daterangeUtm,\r\n generatePathForTimeframeDateRange,\r\n getDateRangeGroupsWithHref,\r\n getDefaultDateRangeAnchorDate,\r\n getTimeframeFromDateRange,\r\n timeframeUtm,\r\n useCustomDateRangeDialog,\r\n useFavoriteTimeframes,\r\n} from '../../../main/components/timeframe-bar'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../../main/constants'\r\nimport { useTrackPageView } from '../../../main/hooks/use-track-pageview'\r\nimport { Instrument } from '../../../main/types'\r\nimport { StockDetailTimeframeBar, getTimeframeGroupsWithHref } from '../../charts-lib'\r\nimport { encodeQueryString } from '../../queryString'\r\n\r\nconst IMAGE_SELECTOR = '.charts-gal'\r\n\r\nfunction updateUrlString(urlString: string, query: Record) {\r\n const url = new URL(urlString)\r\n\r\n Object.keys(query).forEach((key: keyof typeof query) => {\r\n const value = query[key]\r\n if (value === undefined) {\r\n url.searchParams.delete(key)\r\n } else {\r\n url.searchParams.set(key, value)\r\n }\r\n })\r\n\r\n return url.toString()\r\n}\r\n\r\nfunction updateImageSrc(image: HTMLImageElement, query: Record) {\r\n image.src = updateUrlString(image.src, query)\r\n\r\n if (image.srcset) {\r\n image.srcset = image.srcset\r\n .split(', ')\r\n .map((dyna) => {\r\n const [url, rule] = dyna.trim().split(' ')\r\n return `${updateUrlString(url.trim(), query)} ${rule}`\r\n })\r\n .join(', ')\r\n }\r\n}\r\n\r\nfunction updateLinkhref(linkElement: HTMLAnchorElement | null, query: Record) {\r\n if (!linkElement) return\r\n\r\n linkElement.href = updateUrlString(linkElement.href, query)\r\n}\r\n\r\nfunction getPageTitle(isDetail?: boolean, pageType?: string, ticker?: string, timeframe?: string) {\r\n return [pageType, ticker, isDetail ? 'Chart' : 'Charts', timeframe].filter(Boolean).join(' ')\r\n}\r\n\r\nexport function FuturesForexCryptoTimeframeBar({\r\n isDetail = false,\r\n title,\r\n group,\r\n specificChartFunctionality,\r\n instrument,\r\n onTimeframeChange,\r\n onDateRangeChange,\r\n}: {\r\n isDetail?: boolean\r\n title: string\r\n group?: string\r\n instrument: Instrument\r\n specificChartFunctionality: SpecificChartFunctionality\r\n onTimeframeChange?: (value: TIMEFRAME) => void\r\n onDateRangeChange?: (value: string | undefined) => void\r\n}) {\r\n useTrackPageView({ trackAutomatically: !isDetail })\r\n const isPremium = true // Force show all timeframes for all users\r\n const navigate = useNavigate()\r\n const location = useLocation()\r\n const [searchParams] = useSearchParams()\r\n const query = React.useMemo(() => Object.fromEntries(searchParams) as { p: string; r?: string }, [searchParams])\r\n const { favoriteTimeframes, toggleFavoriteTimeframe } = useFavoriteTimeframes()\r\n const dateRange = query.r ?? undefined\r\n const { timeFrameGroups, dateRangeGroupsWithHref } = React.useMemo(() => {\r\n const timeFrameGroups = getTimeframeGroupsWithHref({\r\n isPremium,\r\n generatePath: (timeFrame) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: location.pathname,\r\n timeframe: timeFrame.value,\r\n dateRange: null,\r\n utmCampaign: timeframeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n const dateRangeGroupsWithHref = getDateRangeGroupsWithHref({\r\n isPremium,\r\n customRange: dateRange,\r\n isCustomAvailable: true,\r\n instrument,\r\n generatePath: (dateRange) =>\r\n generatePathForTimeframeDateRange({\r\n isPremium,\r\n pathname: window.location.pathname,\r\n timeframe: dateRange.timeframe!,\r\n dateRange: dateRange.value,\r\n utmCampaign: daterangeUtm[specificChartFunctionality],\r\n }),\r\n })\r\n\r\n return { timeFrameGroups, dateRangeGroupsWithHref }\r\n }, [isPremium, location.pathname, dateRange, instrument, specificChartFunctionality])\r\n\r\n const { onDialogSubmit, customDateRangeDialogState, handleDateRangeSelect } = useCustomDateRangeDialog({\r\n instrument,\r\n anchorDate: getDefaultDateRangeAnchorDate(),\r\n shouldReloadOnNavigate: false,\r\n pathGenerator: ({ dateRange, timeframe }) => ({\r\n pathname: window.location.pathname,\r\n search: new URLSearchParams({ ...query, p: timeframe, r: dateRange ?? '' }).toString(),\r\n }),\r\n })\r\n\r\n const handleTimeframeDateRangeChange = ({\r\n timeframe,\r\n dateRange,\r\n }: {\r\n timeframe: TIMEFRAME\r\n dateRange: string | undefined\r\n }) => {\r\n document.querySelectorAll(IMAGE_SELECTOR).forEach((image) => {\r\n updateImageSrc(image, { tf: timeframe, r: dateRange })\r\n updateLinkhref(image.closest('a'), { p: timeframe, r: dateRange })\r\n })\r\n onTimeframeChange?.(timeframe)\r\n onDateRangeChange?.(dateRange)\r\n }\r\n\r\n if (isDetail) {\r\n return (\r\n {\r\n document.title = getPageTitle(isDetail, title, group, timeframe.labelPageTitle ?? timeframe.label)\r\n onTimeframeChange?.(timeframe.value)\r\n }}\r\n onDateRangeSelect={(option) => {\r\n if (option && option.value !== CUSTOM_DATE_RANGE) {\r\n document.title = getPageTitle(isDetail, title, group, 'custom date range')\r\n }\r\n onDateRangeChange?.(option.value)\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n toggleFavoriteTimeframe(timeframe.value)}\r\n selectedTimeframe={query.p ?? TIMEFRAME.d}\r\n timeFrameGroups={timeFrameGroups}\r\n onTimeframeSelect={(option) => {\r\n if (option.value === 'intraday') {\r\n // intraday option is only available for free users, and it redirects them to elite page\r\n return\r\n }\r\n document.title = getPageTitle(isDetail, title, group, option.labelPageTitle ?? option.label)\r\n navigate(`${location.pathname}?${encodeQueryString({ ...query, p: option.value })}`)\r\n handleTimeframeDateRangeChange({ timeframe: option.value, dateRange: undefined })\r\n }}\r\n selectedDateRange={query['r'] ?? null}\r\n dateRangeGroups={dateRangeGroupsWithHref}\r\n onDateRangeSelect={(option) => {\r\n handleDateRangeSelect(option, ({ timeframe, value: dateRange }) => {\r\n document.title = getPageTitle(isDetail, title, group, option.label)\r\n handleTimeframeDateRangeChange({ timeframe, dateRange })\r\n })\r\n }}\r\n onCustomDateRangeClick={() => {\r\n if (isPremium) customDateRangeDialogState.show()\r\n }}\r\n />\r\n {\r\n const value = dateRange ?? ''\r\n const timeframe = getTimeframeFromDateRange({\r\n dateRange: value,\r\n instrument: Instrument.Stock,\r\n anchorDate: getDefaultDateRangeAnchorDate(),\r\n isPremium: isPremium,\r\n })\r\n handleDateRangeSelect({ value, timeframe }, ({ timeframe, value }) => {\r\n document.title = getPageTitle(isDetail, title, group, 'custom date range')\r\n handleTimeframeDateRangeChange({ timeframe, dateRange: value || undefined })\r\n onDialogSubmit({ value, timeframe })\r\n })\r\n }}\r\n />\r\n \r\n )\r\n}\r\n","import { CHART_ELEMENT_ID, SpecificChartFunctionality } from 'finviz-charts/app/constants/common'\r\nimport { ChartLayoutWithGlobalState } from 'finviz-charts/app/lib-export'\r\n\r\nimport { getChartLayoutSizeConfig, useChartLayoutWidthWatch } from '../../quote/use-chart-layout-width-watch'\r\nimport { getInitChartConfig } from '../getInitChartConfig'\r\n\r\ninterface ResizableChartLayoutWithGlobalStateProps {\r\n specificChartFunctionality: SpecificChartFunctionality\r\n}\r\n\r\nexport const ResizableChartLayoutWithGlobalState = ({\r\n specificChartFunctionality,\r\n}: ResizableChartLayoutWithGlobalStateProps) => {\r\n useChartLayoutWidthWatch()\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const chartConfig = getInitChartConfig()\r\n\r\n if (!chartConfig.specificChartFunctionality) {\r\n chartConfig.specificChartFunctionality = specificChartFunctionality\r\n }\r\n\r\n return (\r\n chartEl && (\r\n \r\n )\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport PropTypes from 'prop-types'\r\nimport { Component } from 'react'\r\n\r\ninterface SparklineProps {\r\n className?: string\r\n data: number[]\r\n width: number\r\n height: number\r\n}\r\n\r\nclass Sparkline extends Component {\r\n static propTypes = {\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n data: PropTypes.arrayOf(PropTypes.number).isRequired,\r\n }\r\n\r\n shouldComponentUpdate(nextProps: SparklineProps) {\r\n // eslint-disable-next-line eqeqeq\r\n return nextProps.data != this.props.data\r\n }\r\n\r\n render() {\r\n var data = this.props.data\r\n var x = d3.scaleLinear().range([0, this.props.width]).domain([0, data.length])\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .range([this.props.height - 4, 0])\r\n .domain(d3.extent(data, (d) => d) as [number, number])\r\n\r\n var line = d3\r\n .line()\r\n .curve(d3.curveBasis)\r\n .x((d, i) => x(i))\r\n .y((d) => y(d))\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Sparkline\r\n","import { ShrtflConfig } from 'finviz-charts/app/indicators/configs/shrtfl'\r\nimport { ShrtraConfig } from 'finviz-charts/app/indicators/configs/shrtra'\r\nimport { Position } from 'finviz-charts/types/shared'\r\n\r\nimport { QuoteRoutes } from '../../main/constants'\r\nimport { Utils, convertTa } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nexport function getInitChartConfig() {\r\n const { ty } = decodeQueryString<{ ty?: string }>()\r\n window.globalChartConfig.scrollable = false\r\n if (FinvizSettings.hasUserPremium) {\r\n window.globalChartConfig.scrollable = window.globalChartConfig.editable || !Utils.isMobile()\r\n }\r\n\r\n if (FinvizSettings.TA) {\r\n let finvizSettingsTa = FinvizSettings.TA\r\n const COTs = FinvizSettings.COTs\r\n if (ty === QuoteRoutes.ShortInterest) {\r\n finvizSettingsTa = {\r\n ...finvizSettingsTa,\r\n overlays: [],\r\n indicators: [\r\n {\r\n name: ShrtflConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n {\r\n name: ShrtraConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n ],\r\n }\r\n }\r\n convertTa.mergeChartAndTAConfig(window.globalChartConfig, finvizSettingsTa, COTs ? { COTs } : undefined)\r\n }\r\n\r\n return window.globalChartConfig\r\n}\r\n","import { ScaleId } from '../maps/types'\r\n\r\nexport interface GradientDefinition {\r\n colors: string[]\r\n nullColor: string\r\n}\r\n\r\nconst redGreenGradientSmall = {\r\n colors: [\r\n '#e01427',\r\n '#ce252b',\r\n '#bb2f30',\r\n '#aa3534',\r\n '#993938',\r\n '#853c3c',\r\n '#743d3f',\r\n '#414554',\r\n '#3e5f50',\r\n '#3f704f',\r\n '#3f814d',\r\n '#3c924a',\r\n '#36a446',\r\n '#2bb642',\r\n '#12c93b',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nexport const redGreenGradient = {\r\n colors: [\r\n '#f63538',\r\n '#ee373a',\r\n '#e6393b',\r\n '#df3a3d',\r\n '#d73c3f',\r\n '#ce3d41',\r\n '#c73e43',\r\n '#bf4045',\r\n '#b64146',\r\n '#ae4248',\r\n '#a5424a',\r\n '#9d434b',\r\n '#94444d',\r\n '#8b444e',\r\n '#824450',\r\n '#784551',\r\n '#6f4552',\r\n '#644553',\r\n '#5a4554',\r\n '#4f4554',\r\n '#414554',\r\n '#3f4c53',\r\n '#3d5451',\r\n '#3b5a50',\r\n '#3a614f',\r\n '#38694f',\r\n '#366f4e',\r\n '#35764e',\r\n '#347d4e',\r\n '#32844e',\r\n '#31894e',\r\n '#31904e',\r\n '#30974f',\r\n '#2f9e4f',\r\n '#2fa450',\r\n '#2faa51',\r\n '#2fb152',\r\n '#2fb854',\r\n '#30be56',\r\n '#30c558',\r\n '#30cc5a',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst greenRedGradient = { colors: redGreenGradient.colors.slice().reverse(), nullColor: redGreenGradient.nullColor }\r\nconst redGradient = { colors: redGreenGradient.colors.slice(0, 22).reverse(), nullColor: redGreenGradient.nullColor }\r\nconst greenGradient = { colors: redGreenGradient.colors.slice(21), nullColor: redGreenGradient.nullColor }\r\nconst blueGradient = {\r\n colors: [\r\n '#3d4251',\r\n '#3d4250',\r\n '#3d4250',\r\n '#3e4251',\r\n '#3e4251',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3e4351',\r\n '#3e4350',\r\n '#3d4351',\r\n '#3d4352',\r\n '#3f4353',\r\n '#3f4353',\r\n '#3f4453',\r\n '#3f4554',\r\n '#3e4354',\r\n '#3e4354',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4555',\r\n '#3f4556',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4557',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4557',\r\n '#3e4557',\r\n '#3e4558',\r\n '#3f465a',\r\n '#3f4659',\r\n '#3f4759',\r\n '#3f4759',\r\n '#3f475a',\r\n '#3f4759',\r\n '#3f465a',\r\n '#3f465a',\r\n '#3f4759',\r\n '#3f475b',\r\n '#40475b',\r\n '#40475b',\r\n '#40465b',\r\n '#40465c',\r\n '#40465d',\r\n '#40485d',\r\n '#40485c',\r\n '#40475c',\r\n '#40465c',\r\n '#40465c',\r\n '#40465c',\r\n '#40485d',\r\n '#40485d',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#404960',\r\n '#404960',\r\n '#404860',\r\n '#404861',\r\n '#404a62',\r\n '#404962',\r\n '#404962',\r\n '#404a62',\r\n '#404a62',\r\n '#404861',\r\n '#404961',\r\n '#404a63',\r\n '#404a64',\r\n '#404a65',\r\n '#404b64',\r\n '#404b64',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404b65',\r\n '#404b65',\r\n '#414c65',\r\n '#424c65',\r\n '#424b65',\r\n '#414b66',\r\n '#414b67',\r\n '#414b67',\r\n '#414c67',\r\n '#424b67',\r\n '#424c67',\r\n '#414c67',\r\n '#414b67',\r\n '#414c67',\r\n '#414c67',\r\n '#414c69',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414d6a',\r\n '#424e6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6b',\r\n '#414d6c',\r\n '#414e6c',\r\n '#414f6c',\r\n '#414e6c',\r\n '#414d6c',\r\n '#414d6c',\r\n '#414e6c',\r\n '#424e6d',\r\n '#424e6d',\r\n '#414f6d',\r\n '#424f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#424f70',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f71',\r\n '#414f72',\r\n '#425073',\r\n '#425173',\r\n '#415072',\r\n '#425173',\r\n '#425173',\r\n '#425173',\r\n '#415072',\r\n '#415072',\r\n '#415172',\r\n '#415173',\r\n '#415174',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415074',\r\n '#415175',\r\n '#415275',\r\n '#425276',\r\n '#425277',\r\n '#415177',\r\n '#415177',\r\n '#425278',\r\n '#425378',\r\n '#415277',\r\n '#415378',\r\n '#415378',\r\n '#415277',\r\n '#415378',\r\n '#42537a',\r\n '#42537c',\r\n '#42537b',\r\n '#41537a',\r\n '#41527a',\r\n '#41537a',\r\n '#41547a',\r\n '#42547b',\r\n '#41547a',\r\n '#41547a',\r\n '#41547c',\r\n '#41547c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557d',\r\n '#41547d',\r\n '#41547c',\r\n '#42557d',\r\n '#41557d',\r\n '#41557d',\r\n '#41557f',\r\n '#415580',\r\n '#41567f',\r\n '#41567f',\r\n '#415580',\r\n '#41567f',\r\n '#415580',\r\n '#415580',\r\n '#41557f',\r\n '#415680',\r\n '#415680',\r\n '#415680',\r\n '#415681',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415781',\r\n '#415782',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415885',\r\n '#415885',\r\n '#425987',\r\n '#415887',\r\n '#415887',\r\n '#415987',\r\n '#415887',\r\n '#425988',\r\n '#425988',\r\n '#415887',\r\n '#415987',\r\n '#415988',\r\n '#415988',\r\n '#415988',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#41598a',\r\n '#405a8b',\r\n '#405a8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405b8c',\r\n '#415c8d',\r\n '#415c8e',\r\n '#405b8e',\r\n '#415c90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#415d90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c8f',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c90',\r\n '#405c91',\r\n '#405c91',\r\n '#405c91',\r\n '#405d91',\r\n '#405e91',\r\n '#405d91',\r\n '#415e91',\r\n '#405e91',\r\n '#415e91',\r\n '#415e92',\r\n '#3f5d94',\r\n '#3f5d93',\r\n '#3f5d93',\r\n '#3f5e94',\r\n '#405e94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5e94',\r\n '#3f5e95',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#405f97',\r\n '#405f97',\r\n '#3f5e96',\r\n '#3f5e97',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f98',\r\n '#3f5f99',\r\n '#3e5f99',\r\n '#3e6199',\r\n '#3e6099',\r\n '#3e5f99',\r\n '#3e5f99',\r\n '#3e5f98',\r\n '#3e6099',\r\n '#3d609a',\r\n '#3d6099',\r\n '#3e609b',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e609b',\r\n '#3e609c',\r\n '#3e609c',\r\n '#3e619b',\r\n '#3e629c',\r\n '#3e629c',\r\n '#3e619c',\r\n '#3d619d',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3d629f',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3c619e',\r\n '#3c619e',\r\n '#3d629f',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d63a0',\r\n '#3d62a0',\r\n '#3d63a1',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d64a1',\r\n '#3d63a0',\r\n '#3c63a0',\r\n '#3b63a2',\r\n '#3c64a3',\r\n '#3c65a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3c63a3',\r\n '#3c65a3',\r\n '#3c65a3',\r\n '#3b64a4',\r\n '#3a65a5',\r\n '#3b66a6',\r\n '#3c65a6',\r\n '#3a65a5',\r\n '#3a64a5',\r\n '#3a64a5',\r\n '#3b65a5',\r\n '#3a65a5',\r\n '#3a66a6',\r\n '#3b66a6',\r\n '#3b66a6',\r\n '#3a66a8',\r\n '#3a67a8',\r\n '#3b67a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b67a8',\r\n '#3a66a8',\r\n '#3966a9',\r\n '#3967a9',\r\n '#3a67aa',\r\n '#3a67ab',\r\n '#3967ab',\r\n '#3a68ab',\r\n '#3a68ab',\r\n '#3968ab',\r\n '#3966aa',\r\n '#3966aa',\r\n '#3968ab',\r\n '#3968ab',\r\n '#3867ac',\r\n '#3867ac',\r\n '#3868ac',\r\n '#3869ad',\r\n '#3969ad',\r\n '#3968ad',\r\n '#3868ac',\r\n '#3868ac',\r\n '#3869ae',\r\n '#3868ad',\r\n '#3868ad',\r\n '#3769af',\r\n '#3869b0',\r\n '#3769af',\r\n '#3769af',\r\n '#386ab0',\r\n '#386ab0',\r\n '#376aaf',\r\n '#376aaf',\r\n '#376ab0',\r\n '#366ab1',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab3',\r\n '#366bb3',\r\n '#366ab2',\r\n '#3669b2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#356bb3',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb4',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb5',\r\n '#356cb5',\r\n '#356cb5',\r\n '#346cb5',\r\n '#346cb5',\r\n '#346cb6',\r\n '#336db7',\r\n '#326cb7',\r\n '#326db7',\r\n '#336db7',\r\n '#336cb7',\r\n '#326bb6',\r\n '#326cb6',\r\n '#326db7',\r\n '#326db8',\r\n '#316dba',\r\n '#316eb9',\r\n '#316eb9',\r\n '#326eba',\r\n '#316eba',\r\n '#316db9',\r\n '#316db9',\r\n '#316eb9',\r\n '#306eba',\r\n '#306dba',\r\n '#306dba',\r\n '#306ebb',\r\n '#306dbb',\r\n '#306dbc',\r\n '#306fbc',\r\n '#306fbc',\r\n '#306ebb',\r\n '#306eba',\r\n '#306fbc',\r\n '#2f6fbd',\r\n '#2d6ebe',\r\n '#2d6ebe',\r\n '#2d6fbe',\r\n '#2e70be',\r\n '#2e70be',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2c6fc0',\r\n '#2d70c0',\r\n '#2d70c0',\r\n '#2b70c1',\r\n '#2b70c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2b71c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2c71c1',\r\n '#2c71c1',\r\n '#2a72c3',\r\n '#2971c3',\r\n '#2a71c2',\r\n '#2972c3',\r\n '#2a71c3',\r\n '#2a71c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2872c5',\r\n '#2872c6',\r\n '#2872c5',\r\n '#2773c6',\r\n '#2773c6',\r\n '#2772c6',\r\n '#2772c5',\r\n '#2672c5',\r\n '#2673c5',\r\n '#2673c5',\r\n '#2673c7',\r\n '#2472c8',\r\n '#2473c8',\r\n '#2474c8',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2474c8',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2375c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2475c9',\r\n '#2575ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2575cb',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2576ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2677ca',\r\n '#2678ca',\r\n '#2678cb',\r\n '#2778cb',\r\n '#2778cb',\r\n '#2679cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287acb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287bcb',\r\n '#287acb',\r\n '#287acb',\r\n '#287bcc',\r\n '#287bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297ccc',\r\n '#297ccc',\r\n '#297dcc',\r\n '#297dcc',\r\n '#2a7dcc',\r\n '#2a7dcc',\r\n '#2a7ecd',\r\n '#2a7ecd',\r\n '#2a7ecc',\r\n '#2a7ecc',\r\n '#2b7ecd',\r\n '#2c7ecd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7ecc',\r\n '#2b7ecc',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7fcd',\r\n '#2b80cd',\r\n '#2c80ce',\r\n '#2d80ce',\r\n '#2d80ce',\r\n '#2c81cd',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d81ce',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d82cd',\r\n '#2e82cd',\r\n '#2e83ce',\r\n '#2e82ce',\r\n '#2d82cd',\r\n '#2d83cd',\r\n '#2e83cf',\r\n '#2e84cf',\r\n '#2e84cf',\r\n '#2e83ce',\r\n '#2e83ce',\r\n '#3084cf',\r\n '#3085cf',\r\n '#2f85ce',\r\n '#3085cf',\r\n '#2f86ce',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f85cf',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f86cf',\r\n '#2f87cf',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#3087cf',\r\n '#3088d0',\r\n '#3088d0',\r\n '#3087cf',\r\n '#3088cf',\r\n '#3188d0',\r\n '#3188d1',\r\n '#3088d0',\r\n '#3089d0',\r\n '#3089d0',\r\n '#3088d0',\r\n '#3188d0',\r\n '#3189d0',\r\n '#3289d0',\r\n '#3289d0',\r\n '#328ad1',\r\n '#328ad1',\r\n '#318ad0',\r\n '#318ad0',\r\n '#318ad0',\r\n '#328bd1',\r\n '#328ad1',\r\n '#328ad1',\r\n '#338bd2',\r\n '#338bd2',\r\n '#338cd1',\r\n '#338cd1',\r\n '#338cd2',\r\n '#338cd2',\r\n '#338dd1',\r\n '#338dd1',\r\n '#338dd2',\r\n '#338dd1',\r\n '#338ed2',\r\n '#338ed2',\r\n '#338ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#3390d2',\r\n '#3391d2',\r\n '#3491d3',\r\n '#3490d3',\r\n '#3491d3',\r\n '#3491d3',\r\n '#3591d3',\r\n '#3591d3',\r\n '#3691d4',\r\n '#3690d4',\r\n '#3590d3',\r\n '#3592d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d3',\r\n '#3593d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3593d4',\r\n '#3694d4',\r\n '#3695d4',\r\n '#3694d4',\r\n '#3693d4',\r\n '#3693d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3796d4',\r\n '#3796d4',\r\n '#3695d4',\r\n '#3695d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3695d4',\r\n '#3696d4',\r\n '#3797d5',\r\n '#3796d5',\r\n '#3797d5',\r\n '#3898d5',\r\n '#3898d5',\r\n '#3797d5',\r\n '#3798d5',\r\n '#3899d5',\r\n '#3899d5',\r\n '#3899d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#389ad6',\r\n '#389ad6',\r\n '#3799d5',\r\n '#3799d5',\r\n '#3799d6',\r\n '#379ad6',\r\n '#379ad6',\r\n '#399ad6',\r\n '#399ad6',\r\n '#389bd5',\r\n '#389bd5',\r\n '#389bd6',\r\n '#389bd6',\r\n '#399cd7',\r\n '#399bd7',\r\n '#399cd7',\r\n '#399dd7',\r\n '#389cd7',\r\n '#389cd6',\r\n '#389dd6',\r\n '#399ed7',\r\n '#389dd6',\r\n '#389dd6',\r\n '#389fd6',\r\n '#399fd7',\r\n '#399ed6',\r\n '#399ed6',\r\n '#399fd7',\r\n '#399fd7',\r\n '#399fd7',\r\n '#3aa0d8',\r\n '#3aa0d8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3aa0d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa2d9',\r\n '#3aa1d9',\r\n '#3aa1d8',\r\n '#39a2d8',\r\n '#3aa2d9',\r\n '#3aa3d9',\r\n '#3ba3d9',\r\n '#3ba3d9',\r\n '#3ba2d8',\r\n '#3aa2d8',\r\n '#3aa4d8',\r\n '#3ba4d9',\r\n '#3aa3d8',\r\n '#3aa3d9',\r\n '#3ba5da',\r\n '#3ba5d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3aa5d9',\r\n '#3ba5da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6d9',\r\n '#3ba6d9',\r\n '#3ba6da',\r\n '#3aa5da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca7da',\r\n '#3ba7da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9da',\r\n '#3ca8db',\r\n '#3ba8db',\r\n '#3baadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3caadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3cabdb',\r\n '#3cabdc',\r\n '#3caadb',\r\n '#3cabdb',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caedc',\r\n '#3caddd',\r\n '#3caddd',\r\n '#3caedc',\r\n '#3eaedd',\r\n '#3eaddd',\r\n '#3daddc',\r\n '#3daedc',\r\n '#3daedc',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3daedd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db0dc',\r\n '#3db0dc',\r\n '#3db1dd',\r\n '#3db1dd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db1dd',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db2de',\r\n '#3db2de',\r\n '#3db2dd',\r\n '#3db2dd',\r\n '#3db3dd',\r\n '#3db2de',\r\n '#3db3de',\r\n '#3db4de',\r\n '#3db3dd',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db5df',\r\n '#3db5df',\r\n '#3db4df',\r\n '#3db4df',\r\n '#3db5df',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db6df',\r\n '#3db6df',\r\n '#3db6de',\r\n '#3db6de',\r\n '#3db7df',\r\n '#3db7e0',\r\n '#3db8e0',\r\n '#3db8e0',\r\n '#3db7e0',\r\n '#3db7df',\r\n '#3db7df',\r\n '#3eb7df',\r\n '#3eb8df',\r\n '#3eb8df',\r\n '#3eb9e0',\r\n '#3eb9e0',\r\n '#3eb8df',\r\n '#3eb9df',\r\n '#3fb9df',\r\n '#3fb9e0',\r\n '#3ebae1',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3eb9e0',\r\n '#3fbae1',\r\n '#3fbbe1',\r\n '#3ebae0',\r\n '#3ebbe1',\r\n '#3ebae0',\r\n '#3ebbe0',\r\n '#3ebce1',\r\n '#3fbce1',\r\n '#3ebce0',\r\n '#3ebce2',\r\n '#3ebce2',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebde1',\r\n '#3ebee1',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebee1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3fbfe2',\r\n '#3ebfe1',\r\n '#3ebee1',\r\n '#3ebee2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3fc0e3',\r\n '#3fc0e3',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec2e3',\r\n '#3ec2e3',\r\n '#3fc3e3',\r\n '#3fc4e3',\r\n '#3ec4e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec5e4',\r\n '#3fc5e4',\r\n '#3fc5e3',\r\n '#3fc4e4',\r\n '#3fc5e4',\r\n '#3ec6e4',\r\n '#3ec5e4',\r\n '#3ec4e4',\r\n '#3ec5e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc7e5',\r\n '#3dc7e5',\r\n '#3dc8e5',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e4',\r\n '#3dc9e5',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3ecce6',\r\n '#3ecce6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce5',\r\n '#3dcce5',\r\n '#3dcce6',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcee7',\r\n '#3dcee6',\r\n '#3dcee6',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe6',\r\n '#3dcfe6',\r\n '#3dd0e8',\r\n '#3ed1e8',\r\n '#3ed1e7',\r\n '#3dd0e7',\r\n '#3dd0e8',\r\n '#3dd0e7',\r\n '#3dd1e7',\r\n '#3dd1e7',\r\n '#3dd0e7',\r\n '#3cd1e8',\r\n '#3cd2e8',\r\n '#3cd1e8',\r\n '#3cd1e7',\r\n '#3cd1e7',\r\n '#3cd2e8',\r\n '#3cd3e9',\r\n '#3cd2e8',\r\n '#3cd2e9',\r\n '#3cd2e9',\r\n '#3cd3e8',\r\n '#3cd4e8',\r\n '#3cd3e8',\r\n '#3cd3e8',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst earningsGradient = {\r\n colors: [\r\n '#592d48',\r\n '#592d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2e49',\r\n '#5b2e49',\r\n '#5b2e4a',\r\n '#5c2e4a',\r\n '#5d2f4b',\r\n '#5c2f4b',\r\n '#5c2e4b',\r\n '#5f2f4c',\r\n '#5f2f4c',\r\n '#5e2e4c',\r\n '#5e2e4c',\r\n '#60304d',\r\n '#60304d',\r\n '#5f2f4d',\r\n '#5f2f4d',\r\n '#62304f',\r\n '#62304f',\r\n '#61304f',\r\n '#62314f',\r\n '#62314f',\r\n '#633150',\r\n '#633150',\r\n '#63314f',\r\n '#63304f',\r\n '#643150',\r\n '#643151',\r\n '#643151',\r\n '#653152',\r\n '#653051',\r\n '#653051',\r\n '#663152',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#683254',\r\n '#683254',\r\n '#683254',\r\n '#693254',\r\n '#693354',\r\n '#6a3354',\r\n '#6a3354',\r\n '#6a3355',\r\n '#6a3356',\r\n '#6a3456',\r\n '#6c3456',\r\n '#6c3356',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6d3458',\r\n '#6e3559',\r\n '#6f3559',\r\n '#6f3459',\r\n '#6f345a',\r\n '#70355b',\r\n '#70365b',\r\n '#6f355a',\r\n '#70365b',\r\n '#71355a',\r\n '#71355a',\r\n '#71365b',\r\n '#72355b',\r\n '#72365c',\r\n '#72365d',\r\n '#72355c',\r\n '#73355c',\r\n '#73355d',\r\n '#73375d',\r\n '#73375d',\r\n '#76375e',\r\n '#76375f',\r\n '#76375f',\r\n '#76375f',\r\n '#76365e',\r\n '#76365e',\r\n '#76375f',\r\n '#763860',\r\n '#773861',\r\n '#783860',\r\n '#783860',\r\n '#783861',\r\n '#793861',\r\n '#793862',\r\n '#793762',\r\n '#793761',\r\n '#7b3962',\r\n '#7b3962',\r\n '#7a3962',\r\n '#7a3962',\r\n '#7b3963',\r\n '#7c3964',\r\n '#7d3a64',\r\n '#7d3b64',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7e3b65',\r\n '#803b66',\r\n '#7f3a66',\r\n '#7e3a66',\r\n '#7f3a67',\r\n '#7f3b67',\r\n '#803c67',\r\n '#803c67',\r\n '#7f3b67',\r\n '#813c68',\r\n '#823b69',\r\n '#823b69',\r\n '#813b69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843c6b',\r\n '#863c6c',\r\n '#853c6c',\r\n '#853d6c',\r\n '#863e6c',\r\n '#863d6c',\r\n '#873d6c',\r\n '#873d6c',\r\n '#873d6d',\r\n '#893e6e',\r\n '#8a3e6f',\r\n '#8a3e6f',\r\n '#893e6e',\r\n '#893d6e',\r\n '#893e6e',\r\n '#8a3f6f',\r\n '#8b3f70',\r\n '#8b3f71',\r\n '#8b3e70',\r\n '#8b3e70',\r\n '#8c3f70',\r\n '#8c4071',\r\n '#8c4070',\r\n '#8c4070',\r\n '#8d4071',\r\n '#8d4072',\r\n '#8d4072',\r\n '#8f4073',\r\n '#8f4074',\r\n '#8f4073',\r\n '#8f4173',\r\n '#8f4173',\r\n '#904173',\r\n '#904174',\r\n '#904175',\r\n '#904175',\r\n '#914175',\r\n '#924175',\r\n '#924275',\r\n '#924275',\r\n '#914175',\r\n '#924277',\r\n '#934277',\r\n '#934277',\r\n '#944278',\r\n '#954277',\r\n '#954278',\r\n '#954278',\r\n '#954278',\r\n '#954378',\r\n '#964378',\r\n '#964379',\r\n '#96447a',\r\n '#96437a',\r\n '#96437a',\r\n '#98437a',\r\n '#98447b',\r\n '#98457b',\r\n '#98457b',\r\n '#98457b',\r\n '#99447b',\r\n '#9a457d',\r\n '#9b457d',\r\n '#9b457d',\r\n '#9a447c',\r\n '#9a457c',\r\n '#9b457c',\r\n '#9b457e',\r\n '#9b467e',\r\n '#9c467e',\r\n '#9d467f',\r\n '#9e467f',\r\n '#9d467f',\r\n '#9e467e',\r\n '#9e477f',\r\n '#9e4780',\r\n '#9e477f',\r\n '#9f4680',\r\n '#a04680',\r\n '#a04880',\r\n '#a04881',\r\n '#a04881',\r\n '#a04881',\r\n '#a24883',\r\n '#a24883',\r\n '#a24882',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a34983',\r\n '#a34983',\r\n '#a34984',\r\n '#a44985',\r\n '#a54986',\r\n '#a54986',\r\n '#a54986',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a64a86',\r\n '#a74a87',\r\n '#a84a88',\r\n '#a84a88',\r\n '#a74a87',\r\n '#a84b87',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a94b89',\r\n '#aa4b89',\r\n '#ab4b89',\r\n '#ab4b89',\r\n '#ab4c8a',\r\n '#aa4c8a',\r\n '#aa4c8a',\r\n '#ab4c8a',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8c',\r\n '#ae4d8d',\r\n '#ae4c8c',\r\n '#ae4d8d',\r\n '#af4e8e',\r\n '#af4e8d',\r\n '#b04e8d',\r\n '#b04e8d',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b14f8f',\r\n '#b14e90',\r\n '#b14e90',\r\n '#b14f90',\r\n '#b25090',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b35091',\r\n '#b44f91',\r\n '#b55092',\r\n '#b55092',\r\n '#b55092',\r\n '#b55192',\r\n '#b55092',\r\n '#b55092',\r\n '#b55093',\r\n '#b65094',\r\n '#b75194',\r\n '#b85193',\r\n '#b75093',\r\n '#b85095',\r\n '#b85095',\r\n '#b85295',\r\n '#b85295',\r\n '#ba5296',\r\n '#b95197',\r\n '#b95197',\r\n '#ba5297',\r\n '#ba5297',\r\n '#ba5296',\r\n '#ba5296',\r\n '#bb5397',\r\n '#bc5297',\r\n '#bd5298',\r\n '#bd5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bd5499',\r\n '#be549a',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0549c',\r\n '#c0549c',\r\n '#c2569c',\r\n '#c2569d',\r\n '#c2569e',\r\n '#c2569e',\r\n '#c4569e',\r\n '#c4569e',\r\n '#c4569f',\r\n '#c3579e',\r\n '#c3579e',\r\n '#c5579e',\r\n '#c658a0',\r\n '#c5579f',\r\n '#c4579f',\r\n '#c557a0',\r\n '#c757a0',\r\n '#c657a0',\r\n '#c658a1',\r\n '#c759a2',\r\n '#c758a2',\r\n '#c758a2',\r\n '#c858a2',\r\n '#c959a3',\r\n '#ca59a3',\r\n '#c958a2',\r\n '#c958a2',\r\n '#c959a3',\r\n '#ca59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb5aa5',\r\n '#cc5ba5',\r\n '#cc5ba5',\r\n '#cc5aa5',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#ce5ba7',\r\n '#ce5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#d05ca8',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d15ca9',\r\n '#d15da9',\r\n '#d15da9',\r\n '#d15ca9',\r\n '#d25caa',\r\n '#d25dab',\r\n '#d25eab',\r\n '#d25eab',\r\n '#d35eab',\r\n '#d35dab',\r\n '#d35dab',\r\n '#d45eac',\r\n '#d45dac',\r\n '#d55ead',\r\n '#d55ead',\r\n '#d55dad',\r\n '#d65eac',\r\n '#d65fad',\r\n '#d65fae',\r\n '#d65fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75faf',\r\n '#d760b0',\r\n '#d960b0',\r\n '#d95fb0',\r\n '#d961b0',\r\n '#d961b1',\r\n '#d961b1',\r\n '#da61b0',\r\n '#dc61b2',\r\n '#dc60b2',\r\n '#db60b2',\r\n '#db61b2',\r\n '#dc61b2',\r\n '#dd61b3',\r\n '#dd61b3',\r\n '#dd62b3',\r\n '#de62b3',\r\n '#de63b4',\r\n '#de63b5',\r\n '#dd62b4',\r\n '#de62b4',\r\n '#df63b5',\r\n '#e063b5',\r\n '#e063b5',\r\n '#e063b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b8',\r\n '#e265b8',\r\n '#e265b8',\r\n '#e365b8',\r\n '#e364b8',\r\n '#e465b9',\r\n '#e565ba',\r\n '#e565ba',\r\n '#e566b9',\r\n '#e566ba',\r\n '#e566bb',\r\n '#e666ba',\r\n '#e766bb',\r\n '#e665bb',\r\n '#e665bb',\r\n '#e666bb',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e968bd',\r\n '#e967be',\r\n '#e968be',\r\n '#e969bd',\r\n '#ea68bf',\r\n '#ea69bf',\r\n '#ea69bf',\r\n '#eb69c0',\r\n '#eb69c0',\r\n '#eb6ac0',\r\n '#eb6ac0',\r\n '#ec6ac1',\r\n '#ed6ac2',\r\n '#ec6bc2',\r\n '#ec6bc2',\r\n '#ed6bc2',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ee6bc2',\r\n '#ef6bc3',\r\n '#ef6cc3',\r\n '#ef6cc3',\r\n '#f06cc4',\r\n '#f06cc5',\r\n '#f16cc4',\r\n '#f16cc4',\r\n '#f16cc5',\r\n '#f16dc6',\r\n '#f16dc6',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc7',\r\n '#f46dc7',\r\n '#f56ec7',\r\n '#f46ec7',\r\n '#f46ec7',\r\n '#f46ec8',\r\n '#f56ec8',\r\n '#f56fc8',\r\n '#f66fc8',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f86fca',\r\n '#f970cb',\r\n '#f971cb',\r\n '#f870cb',\r\n '#f870cb',\r\n '#f870cc',\r\n '#f970cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa72ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fc72cf',\r\n '#fb72ce',\r\n '#fb72ce',\r\n '#fc72cf',\r\n '#fd72d0',\r\n '#fe73d1',\r\n '#ff73d1',\r\n '#ff72d1',\r\n '#fe72d1',\r\n '#ff73d2',\r\n '#ff74d2',\r\n '#fe74d2',\r\n '#02dfce',\r\n '#02dece',\r\n '#02dece',\r\n '#03dfce',\r\n '#03dfce',\r\n '#03dfcd',\r\n '#03ddcd',\r\n '#03ddcd',\r\n '#03ddcc',\r\n '#02dccb',\r\n '#02dccb',\r\n '#03dccc',\r\n '#03dbcb',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03daca',\r\n '#04dbcb',\r\n '#04dacb',\r\n '#03d9ca',\r\n '#03d8c9',\r\n '#04d9c9',\r\n '#04dac9',\r\n '#04d9c9',\r\n '#04d9c8',\r\n '#04d7c7',\r\n '#04d6c7',\r\n '#04d7c8',\r\n '#05d7c7',\r\n '#05d6c7',\r\n '#05d6c7',\r\n '#04d6c7',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c5',\r\n '#06d4c5',\r\n '#05d4c5',\r\n '#05d4c5',\r\n '#06d4c5',\r\n '#06d3c4',\r\n '#06d2c4',\r\n '#06d2c4',\r\n '#06d2c3',\r\n '#06d2c3',\r\n '#07d2c2',\r\n '#07d0c1',\r\n '#07d0c2',\r\n '#07d0c1',\r\n '#07cfc1',\r\n '#07cfc1',\r\n '#07d0c1',\r\n '#09cfc0',\r\n '#08cfc0',\r\n '#09cfc0',\r\n '#0acec1',\r\n '#0acec0',\r\n '#09cdbf',\r\n '#09cdbf',\r\n '#0acebf',\r\n '#0accbe',\r\n '#0bccbf',\r\n '#0bccbf',\r\n '#0bccbe',\r\n '#0bcbbe',\r\n '#0bcbbe',\r\n '#0bcbbd',\r\n '#0ccabc',\r\n '#0ccbbd',\r\n '#0dcbbd',\r\n '#0dcabc',\r\n '#0cc9bb',\r\n '#0dc8ba',\r\n '#0ec9bb',\r\n '#0ec9bb',\r\n '#0dc8ba',\r\n '#0ec8bb',\r\n '#0dc7ba',\r\n '#0ec7ba',\r\n '#0fc7ba',\r\n '#0ec6b9',\r\n '#0fc6b9',\r\n '#0fc6b9',\r\n '#0fc5b8',\r\n '#0fc6b8',\r\n '#0fc6b8',\r\n '#0fc4b8',\r\n '#10c4b7',\r\n '#10c4b7',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#12c2b6',\r\n '#11c2b6',\r\n '#11c2b6',\r\n '#12c3b6',\r\n '#12c2b5',\r\n '#12c1b5',\r\n '#12c0b5',\r\n '#13c0b4',\r\n '#13c1b4',\r\n '#13c0b3',\r\n '#13bfb3',\r\n '#13c0b4',\r\n '#13bfb2',\r\n '#13beb3',\r\n '#13beb3',\r\n '#13bfb2',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14bdb1',\r\n '#14bdb1',\r\n '#15bdb1',\r\n '#16bdb1',\r\n '#15bcb0',\r\n '#16baaf',\r\n '#16bab0',\r\n '#16bbb0',\r\n '#15bbaf',\r\n '#15b9ae',\r\n '#15b9ae',\r\n '#16baae',\r\n '#17baae',\r\n '#17b9ae',\r\n '#17b8ae',\r\n '#17b8ac',\r\n '#17b8ac',\r\n '#18b8ac',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#19b7ac',\r\n '#18b7ac',\r\n '#18b5ac',\r\n '#18b5ab',\r\n '#18b5aa',\r\n '#19b4aa',\r\n '#1ab4aa',\r\n '#1ab5aa',\r\n '#19b3a9',\r\n '#19b3a9',\r\n '#19b4a9',\r\n '#19b4a9',\r\n '#19b2a8',\r\n '#1ab3a8',\r\n '#1ab3a8',\r\n '#1ab2a7',\r\n '#1bb1a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1bb1a6',\r\n '#1bb1a6',\r\n '#1bafa6',\r\n '#1bafa6',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1cada3',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1eaba2',\r\n '#1eaca2',\r\n '#1eaca2',\r\n '#1eaba2',\r\n '#1daaa1',\r\n '#1ea9a1',\r\n '#1ea9a1',\r\n '#1daaa0',\r\n '#1ea89f',\r\n '#1fa9a0',\r\n '#1fa8a0',\r\n '#1ea79f',\r\n '#1fa79e',\r\n '#1fa89f',\r\n '#1fa79e',\r\n '#1ea69d',\r\n '#1ea79d',\r\n '#1ea79c',\r\n '#1ea59c',\r\n '#1ea59c',\r\n '#20a59c',\r\n '#1fa59c',\r\n '#1fa59c',\r\n '#20a49b',\r\n '#20a49c',\r\n '#1fa49c',\r\n '#1fa49a',\r\n '#1fa39a',\r\n '#20a29a',\r\n '#20a39a',\r\n '#20a39a',\r\n '#20a29a',\r\n '#21a199',\r\n '#21a099',\r\n '#21a099',\r\n '#21a198',\r\n '#21a098',\r\n '#219f98',\r\n '#219f98',\r\n '#21a098',\r\n '#219f97',\r\n '#219f97',\r\n '#219e97',\r\n '#219d96',\r\n '#219d97',\r\n '#229d96',\r\n '#229d96',\r\n '#229d96',\r\n '#229c95',\r\n '#239d95',\r\n '#239d95',\r\n '#239c95',\r\n '#229a94',\r\n '#229a93',\r\n '#229a93',\r\n '#239b93',\r\n '#229a93',\r\n '#239892',\r\n '#239892',\r\n '#239992',\r\n '#249991',\r\n '#249991',\r\n '#249791',\r\n '#239791',\r\n '#249791',\r\n '#249791',\r\n '#249791',\r\n '#239690',\r\n '#239590',\r\n '#24968f',\r\n '#24968f',\r\n '#23958f',\r\n '#24958e',\r\n '#24948e',\r\n '#24948e',\r\n '#24958e',\r\n '#25938d',\r\n '#25938d',\r\n '#25938d',\r\n '#24938c',\r\n '#24928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25918c',\r\n '#25908b',\r\n '#25908b',\r\n '#25908b',\r\n '#248f8a',\r\n '#258f8a',\r\n '#258f8a',\r\n '#25908b',\r\n '#258f8a',\r\n '#248e89',\r\n '#258e89',\r\n '#268e89',\r\n '#268e88',\r\n '#268e88',\r\n '#268d88',\r\n '#268c88',\r\n '#268c86',\r\n '#268c86',\r\n '#268c87',\r\n '#268c87',\r\n '#268b86',\r\n '#268a87',\r\n '#268a86',\r\n '#268a85',\r\n '#268a86',\r\n '#268a86',\r\n '#268884',\r\n '#268884',\r\n '#268884',\r\n '#278783',\r\n '#278783',\r\n '#268883',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278681',\r\n '#278681',\r\n '#278581',\r\n '#278480',\r\n '#278580',\r\n '#278480',\r\n '#278381',\r\n '#278481',\r\n '#27837f',\r\n '#288480',\r\n '#288380',\r\n '#27827f',\r\n '#27827f',\r\n '#27817e',\r\n '#27817e',\r\n '#27817e',\r\n '#27807d',\r\n '#27807d',\r\n '#27807d',\r\n '#28807d',\r\n '#27807c',\r\n '#277f7b',\r\n '#277f7b',\r\n '#277f7b',\r\n '#287e7b',\r\n '#287d7a',\r\n '#287d7a',\r\n '#297e7b',\r\n '#297d7b',\r\n '#297c7b',\r\n '#297c7b',\r\n '#297d7b',\r\n '#287b79',\r\n '#287c79',\r\n '#287b79',\r\n '#297a79',\r\n '#297a78',\r\n '#297b78',\r\n '#297b78',\r\n '#287a77',\r\n '#287976',\r\n '#287876',\r\n '#287876',\r\n '#287876',\r\n '#287775',\r\n '#297876',\r\n '#297976',\r\n '#297776',\r\n '#287675',\r\n '#297776',\r\n '#297775',\r\n '#287674',\r\n '#297574',\r\n '#297574',\r\n '#297574',\r\n '#297474',\r\n '#287472',\r\n '#297472',\r\n '#297472',\r\n '#297472',\r\n '#297271',\r\n '#287271',\r\n '#287271',\r\n '#297271',\r\n '#297271',\r\n '#287171',\r\n '#28716f',\r\n '#29716f',\r\n '#28706f',\r\n '#297070',\r\n '#297070',\r\n '#296f6f',\r\n '#296f6f',\r\n '#286e6e',\r\n '#286e6e',\r\n '#286f6e',\r\n '#296e6e',\r\n '#286d6d',\r\n '#286d6d',\r\n '#296d6d',\r\n '#296e6d',\r\n '#296e6d',\r\n '#296c6b',\r\n '#286c6b',\r\n '#286c6b',\r\n '#296c6b',\r\n '#296a6b',\r\n '#286a6a',\r\n '#286a6a',\r\n '#296969',\r\n '#2a6969',\r\n '#296969',\r\n '#296869',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6868',\r\n '#296768',\r\n '#296768',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6567',\r\n '#296566',\r\n '#286666',\r\n '#286565',\r\n '#286565',\r\n '#296565',\r\n '#286465',\r\n '#296464',\r\n '#296464',\r\n '#286364',\r\n '#286263',\r\n '#286263',\r\n '#286263',\r\n '#286163',\r\n '#286062',\r\n '#286062',\r\n '#286162',\r\n '#296163',\r\n '#285f62',\r\n '#296062',\r\n '#296062',\r\n '#295f61',\r\n '#296061',\r\n '#285f60',\r\n '#285d5f',\r\n '#285d5f',\r\n '#285d60',\r\n '#285c5f',\r\n '#285c5e',\r\n '#285c5f',\r\n '#295b5e',\r\n '#285b5d',\r\n '#285b5d',\r\n '#285c5d',\r\n '#295c5d',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285a5d',\r\n '#28595d',\r\n '#28595b',\r\n '#28595b',\r\n '#29585c',\r\n '#28585b',\r\n '#28585a',\r\n '#28575a',\r\n '#29585b',\r\n '#29585b',\r\n '#29575a',\r\n '#295659',\r\n '#285558',\r\n '#285658',\r\n '#285658',\r\n '#295558',\r\n '#295557',\r\n '#285457',\r\n '#285357',\r\n '#285457',\r\n '#285356',\r\n '#295456',\r\n '#295356',\r\n '#285256',\r\n '#295256',\r\n '#285255',\r\n '#285255',\r\n '#295255',\r\n '#295155',\r\n '#284f54',\r\n '#274f54',\r\n '#275054',\r\n '#275054',\r\n '#275054',\r\n '#274e52',\r\n '#274e52',\r\n '#284e52',\r\n '#274d51',\r\n '#274d51',\r\n '#274e52',\r\n '#274c50',\r\n '#274c50',\r\n '#274e51',\r\n '#284e51',\r\n '#274c50',\r\n '#284c50',\r\n '#284b50',\r\n '#274a50',\r\n '#284a50',\r\n '#284a50',\r\n '#28494e',\r\n '#27484e',\r\n '#274a4e',\r\n '#274a4d',\r\n '#27494d',\r\n '#28484e',\r\n '#27474c',\r\n '#26484d',\r\n '#26484d',\r\n '#26484c',\r\n '#25464b',\r\n '#26464b',\r\n '#26474b',\r\n '#26474b',\r\n '#26454a',\r\n '#26454a',\r\n '#26464a',\r\n '#26464a',\r\n '#254349',\r\n '#264349',\r\n '#264349',\r\n '#26444a',\r\n ],\r\n nullColor: '#414554',\r\n}\r\n\r\nconst redGreenGradientBubbles = {\r\n colors: [\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#e93639',\r\n '#e93639',\r\n '#e83538',\r\n '#e83538',\r\n '#e83538',\r\n '#e73538',\r\n '#e73538',\r\n '#e73538',\r\n '#e63538',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e43639',\r\n '#e43639',\r\n '#e43639',\r\n '#e33639',\r\n '#e33639',\r\n '#e33639',\r\n '#e23639',\r\n '#e23639',\r\n '#e23639',\r\n '#e13639',\r\n '#e13639',\r\n '#e13639',\r\n '#e03639',\r\n '#e0363a',\r\n '#e0363a',\r\n '#e0363a',\r\n '#df363a',\r\n '#df363a',\r\n '#df363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#dd363a',\r\n '#dd373b',\r\n '#dd373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#db373b',\r\n '#db373b',\r\n '#db373b',\r\n '#da373b',\r\n '#da373d',\r\n '#da373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d8373e',\r\n '#d8373e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d6383e',\r\n '#d6383e',\r\n '#d5383e',\r\n '#d5383e',\r\n '#d4383e',\r\n '#d4383e',\r\n '#d4383f',\r\n '#d3383f',\r\n '#d3383f',\r\n '#d3393f',\r\n '#d33940',\r\n '#d23940',\r\n '#d23940',\r\n '#d13940',\r\n '#d13941',\r\n '#d03941',\r\n '#d03941',\r\n '#cf3941',\r\n '#cf3942',\r\n '#cf3942',\r\n '#cf3a42',\r\n '#ce3a42',\r\n '#cd3a43',\r\n '#cd3a43',\r\n '#cc3943',\r\n '#cc3943',\r\n '#cb3944',\r\n '#cb3944',\r\n '#ca3944',\r\n '#ca3944',\r\n '#c93a45',\r\n '#c93a45',\r\n '#c83a45',\r\n '#c73a45',\r\n '#c73a45',\r\n '#c53a45',\r\n '#c53a45',\r\n '#c43a45',\r\n '#c43a46',\r\n '#c43a46',\r\n '#c43c46',\r\n '#c33c47',\r\n '#c33c47',\r\n '#c23c47',\r\n '#c23c47',\r\n '#c13c48',\r\n '#c13c48',\r\n '#c03c48',\r\n '#c03c48',\r\n '#bf3c48',\r\n '#bf3d4a',\r\n '#be3d4a',\r\n '#be3d4a',\r\n '#bd3d4a',\r\n '#bd3d4b',\r\n '#bc3d4b',\r\n '#bc3d4b',\r\n '#bb3d4b',\r\n '#bb3d4b',\r\n '#bb3d4c',\r\n '#bb3d4c',\r\n '#ba3d4c',\r\n '#ba3e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b73e4c',\r\n '#b73e4c',\r\n '#b63e4c',\r\n '#b63e4c',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b43e4d',\r\n '#b43e4d',\r\n '#b33e4d',\r\n '#b33f4d',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b13f4e',\r\n '#b13f4e',\r\n '#b03e4e',\r\n '#b03e4e',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#ae3e4f',\r\n '#ae3e4f',\r\n '#ad3e4f',\r\n '#ad3e4f',\r\n '#ac3e4f',\r\n '#ac3f50',\r\n '#ab3f50',\r\n '#ab3f50',\r\n '#aa3f50',\r\n '#aa3f50',\r\n '#a93f50',\r\n '#a93f50',\r\n '#a73f50',\r\n '#a73f50',\r\n '#a63f50',\r\n '#a63f51',\r\n '#a53f51',\r\n '#a53f51',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a24050',\r\n '#a24050',\r\n '#a14050',\r\n '#a04051',\r\n '#a04051',\r\n '#9f4051',\r\n '#9f4051',\r\n '#9e4051',\r\n '#9c4051',\r\n '#9c4051',\r\n '#9b4051',\r\n '#9a4051',\r\n '#9a4053',\r\n '#994053',\r\n '#994153',\r\n '#984153',\r\n '#974153',\r\n '#974153',\r\n '#964153',\r\n '#954153',\r\n '#954153',\r\n '#934054',\r\n '#934054',\r\n '#924054',\r\n '#914054',\r\n '#914054',\r\n '#904053',\r\n '#8e4053',\r\n '#8e4153',\r\n '#8d4153',\r\n '#8d4153',\r\n '#8d4154',\r\n '#8b4154',\r\n '#8b4154',\r\n '#8a4154',\r\n '#894154',\r\n '#894154',\r\n '#884154',\r\n '#884154',\r\n '#864154',\r\n '#864154',\r\n '#854154',\r\n '#844155',\r\n '#844255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#814255',\r\n '#814255',\r\n '#804255',\r\n '#804255',\r\n '#7e4255',\r\n '#7e4255',\r\n '#7d4255',\r\n '#7d4256',\r\n '#7c4256',\r\n '#7c4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#794256',\r\n '#794256',\r\n '#784256',\r\n '#784356',\r\n '#774256',\r\n '#774256',\r\n '#774256',\r\n '#764256',\r\n '#764256',\r\n '#764256',\r\n '#754256',\r\n '#754256',\r\n '#744255',\r\n '#744255',\r\n '#744255',\r\n '#734255',\r\n '#734255',\r\n '#734255',\r\n '#724255',\r\n '#724255',\r\n '#724255',\r\n '#714255',\r\n '#714255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6b4155',\r\n '#6b4155',\r\n '#694155',\r\n '#694155',\r\n '#694155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#674155',\r\n '#674155',\r\n '#674155',\r\n '#664154',\r\n '#664154',\r\n '#654154',\r\n '#654154',\r\n '#654154',\r\n '#634154',\r\n '#634154',\r\n '#624154',\r\n '#624154',\r\n '#614154',\r\n '#614154',\r\n '#614154',\r\n '#604054',\r\n '#604054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5e4054',\r\n '#5e4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5b4053',\r\n '#5b4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#593f53',\r\n '#593f53',\r\n '#593f53',\r\n '#583f53',\r\n '#583f53',\r\n '#583f53',\r\n '#573f53',\r\n '#573e53',\r\n '#573e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#553e52',\r\n '#553e52',\r\n '#553e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503f51',\r\n '#503f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4d3f51',\r\n '#4d3f51',\r\n '#4d4151',\r\n '#4b4151',\r\n '#4b4151',\r\n '#4a4152',\r\n '#494152',\r\n '#484253',\r\n '#484253',\r\n '#474253',\r\n '#474253',\r\n '#464353',\r\n '#454353',\r\n '#454353',\r\n '#444454',\r\n '#444454',\r\n '#434454',\r\n '#434454',\r\n '#424454',\r\n '#424554',\r\n '#424554',\r\n '#424554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#404654',\r\n '#404654',\r\n '#404654',\r\n '#404653',\r\n '#404653',\r\n '#3f4653',\r\n '#3f4753',\r\n '#3f4753',\r\n '#3e4753',\r\n '#3e4753',\r\n '#3e4852',\r\n '#3d4852',\r\n '#3d4852',\r\n '#3c4951',\r\n '#3c4951',\r\n '#3b4951',\r\n '#3b4a51',\r\n '#3b4a50',\r\n '#3b4a50',\r\n '#3a4c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384e50',\r\n '#364e50',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364f4f',\r\n '#364f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#35514f',\r\n '#35514f',\r\n '#35514f',\r\n '#34514f',\r\n '#34514f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#33524e',\r\n '#33534e',\r\n '#33534e',\r\n '#33534e',\r\n '#32534e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#31554e',\r\n '#31554e',\r\n '#31554e',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31574d',\r\n '#30574d',\r\n '#30574d',\r\n '#30584d',\r\n '#30584d',\r\n '#2f584d',\r\n '#2f594d',\r\n '#2f594d',\r\n '#2f594c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5e4b',\r\n '#2a5e4b',\r\n '#2a5e4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29634b',\r\n '#29634b',\r\n '#29634b',\r\n '#29644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28654b',\r\n '#28654a',\r\n '#27654a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26694a',\r\n '#25694a',\r\n '#25694a',\r\n '#25694a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#246a4a',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246c49',\r\n '#246c49',\r\n '#236c49',\r\n '#236c49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236f49',\r\n '#236f49',\r\n '#236f49',\r\n '#226f49',\r\n '#227049',\r\n '#227049',\r\n '#227049',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227349',\r\n '#217349',\r\n '#217349',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217549',\r\n '#217549',\r\n '#217549',\r\n '#207649',\r\n '#207649',\r\n '#207649',\r\n '#207847',\r\n '#207847',\r\n '#207847',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207b47',\r\n '#207b47',\r\n '#207b47',\r\n '#207c47',\r\n '#207c47',\r\n '#207c47',\r\n '#207d47',\r\n '#207d47',\r\n '#207e48',\r\n '#207e48',\r\n '#207e48',\r\n '#208048',\r\n '#208048',\r\n '#208048',\r\n '#208148',\r\n '#208148',\r\n '#208148',\r\n '#208248',\r\n '#1f8247',\r\n '#1f8247',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d9047',\r\n '#1d9047',\r\n '#1e9047',\r\n '#1e9047',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1f9848',\r\n '#1f9848',\r\n '#1f9848',\r\n '#209948',\r\n '#209948',\r\n '#209948',\r\n '#209a48',\r\n '#209a48',\r\n '#209a48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#219c48',\r\n '#219c48',\r\n '#219d48',\r\n '#219d48',\r\n '#219e48',\r\n '#219e48',\r\n '#219e48',\r\n '#219f48',\r\n '#219f48',\r\n '#21a048',\r\n '#21a048',\r\n '#21a048',\r\n '#21a148',\r\n '#21a148',\r\n '#21a348',\r\n '#21a348',\r\n '#22a449',\r\n '#22a449',\r\n '#22a449',\r\n '#22a549',\r\n '#22a549',\r\n '#22a649',\r\n '#22a649',\r\n '#22a64a',\r\n '#23a74a',\r\n '#23a74a',\r\n '#23a84a',\r\n '#23a84a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#25ac4a',\r\n '#25ac4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26af4a',\r\n '#26af4a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b64b',\r\n '#28b64b',\r\n '#28b64d',\r\n '#28b64d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#29b74d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2abb4e',\r\n '#2abb4e',\r\n '#2abb4f',\r\n '#2abb4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2bbc4f',\r\n '#2bbc4f',\r\n '#2bbd4f',\r\n '#2bbd4f',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc052',\r\n '#2cc052',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2ec453',\r\n '#2ec453',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec554',\r\n '#2ec554',\r\n '#2fc554',\r\n '#2fc554',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc755',\r\n '#2fc755',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc858',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#30ca59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n ],\r\n nullColor: 'pink',\r\n}\r\nconst blueGradientBubbles = {\r\n colors: [\r\n '#0c3574',\r\n '#0b3475',\r\n '#0b3475',\r\n '#0c3475',\r\n '#0c3575',\r\n '#0c3475',\r\n '#0c3475',\r\n '#0c3576',\r\n '#0c3677',\r\n '#0c3677',\r\n '#0d3776',\r\n '#0d3676',\r\n '#0e3677',\r\n '#0e3576',\r\n '#0d3576',\r\n '#0d3677',\r\n '#0d3777',\r\n '#0e3778',\r\n '#0e3778',\r\n '#0d3877',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3978',\r\n '#0e3778',\r\n '#0e3779',\r\n '#0e397a',\r\n '#0f3979',\r\n '#0f3a7a',\r\n '#0f3a7b',\r\n '#0f3a7b',\r\n '#0e3a7a',\r\n '#0e3a7a',\r\n '#0f3a7a',\r\n '#0e3a7a',\r\n '#0f3a7c',\r\n '#0f3a7c',\r\n '#0f3a7b',\r\n '#0f3b7b',\r\n '#0f3a7b',\r\n '#0e3a7b',\r\n '#0e3b7c',\r\n '#0f3c7c',\r\n '#0f3c7c',\r\n '#0f3d7d',\r\n '#0f3d7d',\r\n '#0f3c7d',\r\n '#0f3c7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3e7e',\r\n '#0f3d7e',\r\n '#103e7e',\r\n '#113e7f',\r\n '#103e7e',\r\n '#103d7e',\r\n '#103e7f',\r\n '#103e7e',\r\n '#113e80',\r\n '#113f80',\r\n '#103f7f',\r\n '#114080',\r\n '#113f81',\r\n '#114081',\r\n '#113f81',\r\n '#103e80',\r\n '#103f81',\r\n '#104181',\r\n '#104181',\r\n '#103f81',\r\n '#114082',\r\n '#103f82',\r\n '#103f81',\r\n '#114081',\r\n '#114282',\r\n '#114282',\r\n '#114282',\r\n '#124182',\r\n '#114082',\r\n '#114182',\r\n '#114283',\r\n '#124384',\r\n '#114384',\r\n '#114383',\r\n '#124383',\r\n '#124485',\r\n '#114384',\r\n '#114384',\r\n '#114384',\r\n '#114484',\r\n '#124585',\r\n '#124585',\r\n '#124585',\r\n '#134587',\r\n '#134586',\r\n '#134586',\r\n '#134687',\r\n '#134687',\r\n '#134586',\r\n '#134686',\r\n '#134687',\r\n '#134787',\r\n '#134788',\r\n '#134688',\r\n '#134688',\r\n '#134687',\r\n '#124788',\r\n '#124789',\r\n '#134688',\r\n '#134688',\r\n '#134688',\r\n '#134788',\r\n '#134889',\r\n '#13488a',\r\n '#13488a',\r\n '#13488a',\r\n '#134889',\r\n '#134789',\r\n '#13478a',\r\n '#13498a',\r\n '#14498a',\r\n '#15498b',\r\n '#14488b',\r\n '#14498c',\r\n '#15498c',\r\n '#14498b',\r\n '#15498c',\r\n '#15498c',\r\n '#14498c',\r\n '#154a8d',\r\n '#144b8c',\r\n '#144b8c',\r\n '#154b8d',\r\n '#144c8d',\r\n '#154b8d',\r\n '#154b8d',\r\n '#154c8d',\r\n '#144c8d',\r\n '#154c8d',\r\n '#154c8d',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#154d8e',\r\n '#154d8f',\r\n '#164e90',\r\n '#164e90',\r\n '#164e90',\r\n '#154e8f',\r\n '#154d90',\r\n '#154e90',\r\n '#164e90',\r\n '#154e91',\r\n '#154f91',\r\n '#155091',\r\n '#165091',\r\n '#164f91',\r\n '#164f92',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#155192',\r\n '#155192',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175093',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175193',\r\n '#175294',\r\n '#175394',\r\n '#175394',\r\n '#175294',\r\n '#175395',\r\n '#175295',\r\n '#175295',\r\n '#175395',\r\n '#175395',\r\n '#185495',\r\n '#185495',\r\n '#175396',\r\n '#175497',\r\n '#175397',\r\n '#175497',\r\n '#175597',\r\n '#175597',\r\n '#175597',\r\n '#175497',\r\n '#185497',\r\n '#195698',\r\n '#195798',\r\n '#185597',\r\n '#185497',\r\n '#185599',\r\n '#195799',\r\n '#195799',\r\n '#185799',\r\n '#185699',\r\n '#195699',\r\n '#195799',\r\n '#195799',\r\n '#19589a',\r\n '#185899',\r\n '#185899',\r\n '#18589a',\r\n '#18589a',\r\n '#18599a',\r\n '#18589a',\r\n '#18579a',\r\n '#19589b',\r\n '#19599b',\r\n '#19599a',\r\n '#18599a',\r\n '#1a5a9c',\r\n '#1a5a9d',\r\n '#1a5a9c',\r\n '#1a599d',\r\n '#1a5a9d',\r\n '#1a5a9e',\r\n '#1a5a9e',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#1a5a9e',\r\n '#1a5b9f',\r\n '#1a5b9e',\r\n '#1a5b9e',\r\n '#1a5d9e',\r\n '#1a5c9f',\r\n '#195c9f',\r\n '#195c9f',\r\n '#195da0',\r\n '#195d9f',\r\n '#195ca0',\r\n '#1a5ca0',\r\n '#1a5d9f',\r\n '#1a5ea1',\r\n '#1a5ea1',\r\n '#1a5da0',\r\n '#1a5da0',\r\n '#195ea0',\r\n '#195ea0',\r\n '#1a5ea0',\r\n '#1a5ea1',\r\n '#1c5fa3',\r\n '#1c5fa3',\r\n '#1b5fa3',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1b60a3',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1c61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b62a4',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1b62a5',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1d61a6',\r\n '#1d63a6',\r\n '#1c62a6',\r\n '#1d63a6',\r\n '#1d62a6',\r\n '#1c62a6',\r\n '#1c63a7',\r\n '#1d64a8',\r\n '#1c64a7',\r\n '#1c64a7',\r\n '#1d65a8',\r\n '#1c63a8',\r\n '#1d64a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d66a9',\r\n '#1d66a9',\r\n '#1c65a9',\r\n '#1d66aa',\r\n '#1d66aa',\r\n '#1c65aa',\r\n '#1c66aa',\r\n '#1c66aa',\r\n '#1d66aa',\r\n '#1c66ab',\r\n '#1c68ab',\r\n '#1c67ab',\r\n '#1c67ab',\r\n '#1d68ab',\r\n '#1d68ac',\r\n '#1e68ac',\r\n '#1e67ab',\r\n '#1d67ab',\r\n '#1e69ac',\r\n '#1e69ac',\r\n '#1d68ac',\r\n '#1d68ac',\r\n '#1e69ae',\r\n '#1e6aae',\r\n '#1e6aad',\r\n '#1e69ad',\r\n '#1e6aae',\r\n '#1d69ae',\r\n '#1d6aae',\r\n '#1e6bae',\r\n '#1e6aaf',\r\n '#1e6baf',\r\n '#1e6baf',\r\n '#1e6bb0',\r\n '#1e6cb0',\r\n '#1d6baf',\r\n '#1d6baf',\r\n '#1e6bb0',\r\n '#1d6ab0',\r\n '#1d6cb0',\r\n '#1d6db1',\r\n '#1e6cb1',\r\n '#1e6db0',\r\n '#1e6cb1',\r\n '#1d6cb1',\r\n '#1d6cb0',\r\n '#1f6db1',\r\n '#1f6cb1',\r\n '#1f6cb1',\r\n '#1f6db2',\r\n '#1f6cb1',\r\n '#1f6db1',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6eb3',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6fb3',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#2070b5',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f70b5',\r\n '#1f71b5',\r\n '#1f72b6',\r\n '#1f72b6',\r\n '#1f71b6',\r\n '#1f71b6',\r\n '#1f72b5',\r\n '#2072b6',\r\n '#2172b7',\r\n '#2172b7',\r\n '#2172b6',\r\n '#2172b6',\r\n '#2172b7',\r\n '#2072b7',\r\n '#2073b8',\r\n '#2173b9',\r\n '#2173b9',\r\n '#2075b8',\r\n '#2075b8',\r\n '#2174b8',\r\n '#2174b9',\r\n '#2175ba',\r\n '#2174ba',\r\n '#2174ba',\r\n '#2175ba',\r\n '#2175ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076ba',\r\n '#2076ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076bb',\r\n '#2077bb',\r\n '#2177bc',\r\n '#2077bb',\r\n '#2077bb',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2177bd',\r\n '#2078bc',\r\n '#2078bc',\r\n '#2178bd',\r\n '#2279be',\r\n '#2178be',\r\n '#2179be',\r\n '#2179be',\r\n '#2279bf',\r\n '#2278bf',\r\n '#2179bf',\r\n '#217abf',\r\n '#227ac0',\r\n '#2279c0',\r\n '#227ac0',\r\n '#227abf',\r\n '#227ac0',\r\n '#217bc0',\r\n '#227bc0',\r\n '#227bc0',\r\n '#217bc0',\r\n '#217ac0',\r\n '#217bc0',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#227cc2',\r\n '#227cc2',\r\n '#227dc2',\r\n '#217dc1',\r\n '#217dc2',\r\n '#217dc2',\r\n '#217dc3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#227ec4',\r\n '#237fc4',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec4',\r\n '#237ec4',\r\n '#237ec6',\r\n '#237fc6',\r\n '#2380c6',\r\n '#237fc5',\r\n '#237fc5',\r\n '#2380c5',\r\n '#2380c7',\r\n '#2381c6',\r\n '#2381c6',\r\n '#2380c6',\r\n '#2381c7',\r\n '#2380c6',\r\n '#2380c7',\r\n '#2381c8',\r\n '#2382c7',\r\n '#2381c7',\r\n '#2381c7',\r\n '#2382c8',\r\n '#2382c8',\r\n '#2383c8',\r\n '#2384c9',\r\n '#2384c9',\r\n '#2383c8',\r\n '#2383c9',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2383ca',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2484cb',\r\n '#2485cb',\r\n '#2385cb',\r\n '#2384cb',\r\n '#2385cb',\r\n '#2485cb',\r\n '#2585cc',\r\n '#2586cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2486cd',\r\n '#2586cd',\r\n '#2587cd',\r\n '#2487cc',\r\n '#2486cd',\r\n '#2587cd',\r\n '#2587cd',\r\n '#2487ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2488cf',\r\n '#2588cf',\r\n '#2589ce',\r\n '#2589ce',\r\n '#2688cf',\r\n '#2589ce',\r\n '#2789cf',\r\n '#2889d0',\r\n '#2889d0',\r\n '#288ad0',\r\n '#2889d0',\r\n '#298ad0',\r\n '#2b8bd0',\r\n '#2a89cf',\r\n '#2989cf',\r\n '#2b8bcf',\r\n '#2c8cd0',\r\n '#2c8ccf',\r\n '#2d8cd0',\r\n '#2d8cd0',\r\n '#2c8bd0',\r\n '#2e8cd1',\r\n '#2e8cd1',\r\n '#2e8cd0',\r\n '#2e8cd1',\r\n '#2e8dd0',\r\n '#308ed0',\r\n '#318ed1',\r\n '#318dd1',\r\n '#308dd0',\r\n '#308dd0',\r\n '#318fd0',\r\n '#338fd1',\r\n '#328dd1',\r\n '#338ed1',\r\n '#348fd1',\r\n '#348fd2',\r\n '#338ed2',\r\n '#338ed1',\r\n '#348fd1',\r\n '#3590d1',\r\n '#368fd2',\r\n '#3690d1',\r\n '#3690d1',\r\n '#3690d2',\r\n '#3791d3',\r\n '#3791d3',\r\n '#3791d2',\r\n '#3790d2',\r\n '#3790d2',\r\n '#3892d2',\r\n '#3892d2',\r\n '#3992d2',\r\n '#3a92d3',\r\n '#3a93d3',\r\n '#3b92d3',\r\n '#3b92d3',\r\n '#3a93d3',\r\n '#3a93d3',\r\n '#3b93d3',\r\n '#3c94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d93d3',\r\n '#3f93d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#3e95d3',\r\n '#3e96d3',\r\n '#3f96d4',\r\n '#4095d4',\r\n '#4095d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#4096d4',\r\n '#4297d4',\r\n '#4197d4',\r\n '#4096d3',\r\n '#4196d3',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4398d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#459ad5',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad5',\r\n '#459ad6',\r\n '#469bd6',\r\n '#469bd5',\r\n '#469ad5',\r\n '#469ad5',\r\n '#479bd5',\r\n '#499cd6',\r\n '#499cd6',\r\n '#499cd5',\r\n '#499cd5',\r\n '#499cd6',\r\n '#4a9dd6',\r\n '#4a9fd6',\r\n '#4a9ed6',\r\n '#4a9ed5',\r\n '#4a9ed6',\r\n '#4b9ed7',\r\n '#4b9ed7',\r\n '#4b9fd7',\r\n '#4a9ed7',\r\n '#4b9ed7',\r\n '#4ca0d7',\r\n '#4c9ed7',\r\n '#4b9ed7',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4da0d8',\r\n '#4da0d8',\r\n '#4c9fd8',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4ea2d8',\r\n '#4ea2d8',\r\n '#4ea1d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4ea2d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4fa3d9',\r\n '#50a3d9',\r\n '#50a3d8',\r\n '#4fa2d8',\r\n '#4fa3d8',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#51a3d9',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#52a4d9',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#54a5da',\r\n '#54a5da',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#55a8da',\r\n '#55a8da',\r\n '#56a8db',\r\n '#55a7da',\r\n '#56a8db',\r\n '#57a8db',\r\n '#56a7da',\r\n '#57a8db',\r\n '#57a8db',\r\n '#57a8db',\r\n '#58a9da',\r\n '#58aada',\r\n '#57a9da',\r\n '#57a8da',\r\n '#57a9da',\r\n '#58aadb',\r\n '#59aadb',\r\n '#59aadb',\r\n '#59aadc',\r\n '#59abdb',\r\n '#5aacdb',\r\n '#5aabdb',\r\n '#59abdb',\r\n '#5babdb',\r\n '#5babdc',\r\n '#5babdc',\r\n '#5aabdc',\r\n '#5baddc',\r\n '#5bacdc',\r\n '#5cacdc',\r\n '#5bacdc',\r\n '#5caedc',\r\n '#5caddc',\r\n '#5cacdc',\r\n '#5caddc',\r\n '#5dafdc',\r\n '#5dafdc',\r\n '#5caedc',\r\n '#5daedc',\r\n '#5eb0dd',\r\n '#5db0dd',\r\n '#5eafdd',\r\n '#5eafdd',\r\n '#5fb1dd',\r\n '#5fb1dd',\r\n '#5fafdd',\r\n '#5fafdd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b2dd',\r\n '#61b2dd',\r\n '#62b2dd',\r\n '#62b2de',\r\n '#62b2de',\r\n '#62b2de',\r\n '#63b3dd',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b4df',\r\n '#63b3df',\r\n '#63b4de',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b5df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b5de',\r\n '#65b6e0',\r\n '#65b7e0',\r\n '#65b7df',\r\n '#65b6e0',\r\n '#65b6e0',\r\n '#65b6df',\r\n '#66b6df',\r\n '#67b7e0',\r\n '#67b8e0',\r\n '#66b8df',\r\n '#66b8e0',\r\n '#67b8df',\r\n '#67b7df',\r\n '#67b8e0',\r\n '#67b9e0',\r\n '#67b8e0',\r\n '#68b9e1',\r\n '#69bae1',\r\n '#69bae1',\r\n '#68b8e0',\r\n '#69b9e0',\r\n '#69bae0',\r\n '#69bae0',\r\n '#6abbe1',\r\n '#69bbe0',\r\n '#69bbe0',\r\n '#69bbe1',\r\n '#6abce1',\r\n '#6abbe0',\r\n '#6abbe0',\r\n '#6abbe1',\r\n '#6abce1',\r\n '#6abce2',\r\n '#6bbde2',\r\n '#6bbee1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6bbde1',\r\n '#6cbde1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbee2',\r\n '#6cbee2',\r\n '#6dbfe2',\r\n '#6dbfe2',\r\n '#6dbee2',\r\n '#6ebee3',\r\n '#6fbfe3',\r\n '#6fc0e3',\r\n '#6fc0e2',\r\n '#6ebfe3',\r\n '#6ec0e3',\r\n '#6ec1e3',\r\n '#6ec1e3',\r\n '#6ec1e4',\r\n '#6fc0e3',\r\n '#70c1e3',\r\n '#70c2e3',\r\n '#70c2e4',\r\n '#6fc1e3',\r\n '#6fc1e3',\r\n '#70c2e3',\r\n '#71c2e4',\r\n '#70c3e4',\r\n '#70c2e4',\r\n '#70c2e4',\r\n '#72c4e4',\r\n '#72c4e4',\r\n '#71c2e4',\r\n '#71c2e4',\r\n '#73c4e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c4e4',\r\n '#73c5e4',\r\n '#73c5e4',\r\n '#72c5e4',\r\n '#73c6e4',\r\n '#73c5e4',\r\n '#73c6e4',\r\n '#74c7e5',\r\n '#73c6e4',\r\n '#75c8e5',\r\n '#74c7e5',\r\n '#74c7e5',\r\n '#74c6e5',\r\n '#75c6e5',\r\n '#76c7e5',\r\n '#75c7e5',\r\n '#76c8e5',\r\n '#75c8e5',\r\n '#75c8e6',\r\n '#76c8e6',\r\n '#77c8e5',\r\n '#76c9e6',\r\n '#76c9e5',\r\n '#76c9e5',\r\n '#77cae6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#78cae6',\r\n '#77cbe7',\r\n '#77cbe7',\r\n '#78cbe7',\r\n '#78cbe7',\r\n '#79cae6',\r\n '#78cae6',\r\n '#78cbe7',\r\n '#78cae6',\r\n '#79cae6',\r\n '#7acce6',\r\n '#7acde7',\r\n '#7acbe7',\r\n '#79cce6',\r\n '#79cee7',\r\n '#7acee8',\r\n '#7acde8',\r\n '#79cde7',\r\n '#7acde7',\r\n '#7bcee8',\r\n '#7acee7',\r\n '#7acfe7',\r\n '#7acee7',\r\n '#7ccee8',\r\n '#7bcee7',\r\n '#7bcfe7',\r\n '#7bcfe7',\r\n '#7bcfe8',\r\n '#7dd0e9',\r\n '#7dd0e9',\r\n '#7ccfe8',\r\n '#7ccfe8',\r\n '#7cd1e8',\r\n '#7cd1e8',\r\n '#7cd0e8',\r\n '#7cd0e8',\r\n '#7dd1e8',\r\n '#7dd2e9',\r\n '#7dd2e9',\r\n '#7ed2e9',\r\n '#7dd1e8',\r\n '#7dd2e8',\r\n '#7fd3ea',\r\n '#7fd3ea',\r\n '#7ed3e9',\r\n '#7ed2ea',\r\n '#80d2ea',\r\n '#7fd3e9',\r\n '#7fd2e9',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#7fd4e9',\r\n '#7fd4e9',\r\n '#80d4e9',\r\n '#81d6ea',\r\n '#81d6eb',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#80d6ea',\r\n '#80d5ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d6ea',\r\n '#82d7ea',\r\n '#82d8ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d8ea',\r\n '#82d7eb',\r\n '#82d8eb',\r\n '#82d8eb',\r\n '#82d7eb',\r\n '#83d9eb',\r\n '#84d9ec',\r\n '#84d9ec',\r\n '#83d8eb',\r\n '#83d8eb',\r\n '#85d8eb',\r\n '#85d9eb',\r\n '#84daeb',\r\n '#85daeb',\r\n '#85dbec',\r\n '#85dbec',\r\n '#84daec',\r\n '#85dbec',\r\n '#86dbec',\r\n '#86dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dcec',\r\n '#86ddec',\r\n '#86dceb',\r\n '#86dceb',\r\n '#87ddec',\r\n '#86dced',\r\n '#86dcec',\r\n '#86deec',\r\n '#86deed',\r\n '#87ddec',\r\n '#87deed',\r\n '#87dfec',\r\n '#87deec',\r\n '#88deed',\r\n '#89deec',\r\n '#88deec',\r\n '#88dfed',\r\n '#88dfec',\r\n '#89e0ed',\r\n '#89e0ee',\r\n '#88dfee',\r\n '#89e0ee',\r\n '#88dfed',\r\n '#88dfed',\r\n '#8ae1ee',\r\n '#89e1ed',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae1ee',\r\n '#8be3ee',\r\n '#8be3ee',\r\n '#8be2ee',\r\n '#8be2ee',\r\n '#8be2ef',\r\n '#8ce2ef',\r\n '#8ce3ef',\r\n '#8be3ee',\r\n '#8ce4ef',\r\n '#8be3ef',\r\n '#8be3ee',\r\n '#8de5ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de5ef',\r\n '#8ce4ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de4f0',\r\n '#8ee6f0',\r\n '#8ee6f0',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8de7ef',\r\n '#8de6ef',\r\n '#8fe7f0',\r\n '#8fe8f1',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8ee8f1',\r\n '#8fe8f1',\r\n '#8fe7f0',\r\n '#90e8f1',\r\n '#90e8f1',\r\n '#8fe8f0',\r\n '#90eaf1',\r\n '#8fe9f0',\r\n '#8fe9f0',\r\n '#90eaf1',\r\n '#90eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#92ebf2',\r\n '#91eaf1',\r\n ],\r\n nullColor: 'pink',\r\n}\r\n\r\nexport const gradients: Record = {\r\n [ScaleId.IntradayReduced]: redGreenGradient,\r\n [ScaleId.DayPerf]: redGreenGradient,\r\n _5: redGreenGradient,\r\n _10: redGreenGradient,\r\n _15: redGreenGradient,\r\n _20: redGreenGradient,\r\n _25: redGreenGradient,\r\n _relvol: blueGradient,\r\n _pe: greenRedGradient,\r\n _fpe: greenRedGradient,\r\n _peg: greenRedGradient,\r\n _ps: greenRedGradient,\r\n _pb: greenRedGradient,\r\n _div: greenGradient,\r\n _eps5y: redGreenGradient,\r\n _short: redGradient,\r\n _rec: redGreenGradient,\r\n _earndate: earningsGradient,\r\n _portfolioPct: redGreenGradient,\r\n _portfolioUsd: redGreenGradient,\r\n}\r\n\r\nexport const bubbleGradients: Record = {\r\n [ScaleId.IntradayReduced]: redGreenGradientBubbles,\r\n [ScaleId.DayPerf]: redGreenGradientBubbles,\r\n _5: redGreenGradientBubbles,\r\n _10: redGreenGradientBubbles,\r\n _15: redGreenGradientBubbles,\r\n _20: redGreenGradientBubbles,\r\n _25: redGreenGradientBubbles,\r\n _relvol: blueGradientBubbles,\r\n _pe: redGreenGradientBubbles,\r\n _fpe: redGreenGradientBubbles,\r\n _peg: redGreenGradientBubbles,\r\n _ps: redGreenGradientBubbles,\r\n _pb: redGreenGradientBubbles,\r\n _div: redGreenGradientBubbles,\r\n _eps5y: redGreenGradientBubbles,\r\n _short: redGreenGradientBubbles, // TODO red skala\r\n _rec: redGreenGradientBubbles,\r\n _earndate: redGreenGradientBubbles,\r\n _portfolioPct: redGreenGradientBubbles,\r\n _portfolioUsd: redGreenGradientBubbles,\r\n}\r\n\r\nexport const gradientSmall = redGreenGradientSmall\r\n","import { HTMLAttributeReferrerPolicy } from 'react'\r\n\r\nimport { encodeQueryString } from '../queryString'\r\n\r\nconst DEFAULT_OVERLAYS =\r\n '&o[0][ot]=sma&o[0][op]=50&o[0][oc]=FF8F33C6&o[1][ot]=sma&o[1][op]=200&o[1][oc]=DCB3326D&o[2][ot]=patterns&o[2][op]=&o[2][oc]=000'\r\n\r\nexport function getHoverChartUrl(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange = FinvizSettings.hoverCharts?.stock?.dateRange\r\n): string {\r\n const theme = FinvizSettings.hasDarkTheme ? 'd' : undefined\r\n const overlays = FinvizSettings.hasUserPremium && FinvizSettings.hoverCharts?.stock?.patterns ? DEFAULT_OVERLAYS : ''\r\n const query = encodeQueryString({\r\n cs: 'm',\r\n t: ticker,\r\n tf: timeframe ?? 'd',\r\n ct: 'candle_stick',\r\n r: dateRange,\r\n tm: theme,\r\n })\r\n\r\n let imgUrl = `${FinvizSettings.nodeChartsDomain}/chart.ashx?${query}${overlays}`\r\n\r\n if (escaped) {\r\n // \"Escaping\" [ and ] because of how boxover.js works\r\n imgUrl = imgUrl.replace(/\\[/g, '[[').replace(/]/g, ']]')\r\n }\r\n return imgUrl\r\n}\r\n\r\nexport function getHoverChartDimensions() {\r\n switch (FinvizSettings.hoverCharts?.stock?.timeframe) {\r\n case 'i3':\r\n case 'i15':\r\n return { width: 584, height: 180 }\r\n case 'i5':\r\n return { width: 376, height: 180 }\r\n case 'd':\r\n if (FinvizSettings.hoverCharts?.stock?.patterns) return { width: 464, height: 230 }\r\n return { width: 324, height: 180 }\r\n default:\r\n return { width: 324, height: 180 }\r\n }\r\n}\r\n\r\nexport function getReferrerPolicy(): HTMLAttributeReferrerPolicy {\r\n return 'no-referrer-when-downgrade'\r\n}\r\n\r\nexport function getHoverChartImg(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange?: string\r\n) {\r\n const chartSize = getHoverChartDimensions()\r\n const referrerPolicy = getReferrerPolicy()\r\n const url = getHoverChartUrl(ticker, escaped, timeframe, dateRange)\r\n const srcSet = getSrcSet(url)\r\n const srcsetString = srcSet?.length ? ` srcset='${srcSet}'` : ''\r\n\r\n return {\r\n img: ``,\r\n ...chartSize,\r\n }\r\n}\r\n\r\nexport function getSrcSet(url: string) {\r\n // You must keep a space after , for refresh to work\r\n return `${url} 1x, ${url}&sf=2 2x`\r\n}\r\n","export function getScaleRatio() {\r\n return window.devicePixelRatio ?? 1\r\n}\r\n\r\nexport function retinafy(\r\n canvas: HTMLCanvasElement | undefined | null,\r\n context: CanvasRenderingContext2D | undefined,\r\n width: number,\r\n height: number\r\n) {\r\n if (!canvas || !context) return\r\n\r\n const ratio = getScaleRatio()\r\n\r\n canvas.width = width * ratio\r\n canvas.height = height * ratio\r\n canvas.style.width = width + 'px'\r\n canvas.style.height = height + 'px'\r\n context.scale(ratio, ratio)\r\n\r\n return ratio\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * React Router DOM v6.26.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `
`/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a